📄 adsample.lst
字号:
677 2 uiRmsCounter[0][uchValue1] = AD.uiRMSCountNumber;
678 2 uchValue1 = (uchValue1 + 1) & 0x03;
679 2 }
680 1 else
681 1 {
682 2 /* AD.uiDataAverageBAK[1][AD.uchCountNumber2] = AD.uiDataAverage[1];
683 2 AD.uchCountNumber2++;
684 2 if (AD.uchCountNumber2 >= 15)
685 2 {
686 2 AD.uchCountNumber2 = 0;
687 2 } */
688 2 uiRmsCounter[1][uchValue2] = AD.uiRMSCountNumber;
689 2 uchValue2 = (uchValue2 + 1) & 0x03;
690 2 }
691 1
692 1 if((uiRmsCounter[uchChannel - 1][0] > 2) && (uiRmsCounter[uchChannel - 1][1] > 2) && (uiRmsCounter[uchCha
-nnel - 1][2] > 2) && (uiRmsCounter[uchChannel - 1][3] > 2))
693 1 {
694 2 bCycleFlag = 1; //有整周期
695 2 }
696 1 else
697 1 {
698 2 bCycleFlag = 0; //没有整周期
699 2 }
700 1
701 1 /* if (bCycleFlag == 1)
702 1 {
703 1 for (j=0; j<15; j++)
704 1 {
705 1 AD.uiDataAverage[uchChannel - 1] += AD.uiDataAverageBAK[uchChannel - 1][j];
706 1 }
707 1
708 1 AD.uiDataAverage[uchChannel - 1] = AD.uiDataAverage[uchChannel - 1]>>4;
709 1 } */
710 1
711 1
712 1 uiAverageValue = AD.uiDataAverage[uchChannel - 1];
713 1
714 1 //----------------------以下程序可能需要打开-----------------------------------------
715 1 /* for (j=0; j<uiTempData; j++)
716 1 {
717 1 lDataCorrect = (long)SrcData[(uiDataOffsetAddress + j) & 0x7FF] - AD.uiDataAverage[uchChannel - 1];
718 1 fDataAverageSum = fDataAverageSum + lDataCorrect * lDataCorrect;
719 1 FeedDog();
720 1 }
721 1
722 1 fDataAverageSum = fDataAverageSum / uiTempData;
723 1
724 1 AD.fDataRMSAverage[uchChannel - 1] = sqrt(fDataAverageSum); */
725 1 //------------------------------------------------------------------------------------------
726 1 // nnnn = 0;
727 1 FeedDog();
728 1 for (j=0; j<uiTempData; j++)
729 1 {
C51 COMPILER V7.10 ADSAMPLE 09/18/2008 14:09:32 PAGE 13
730 2 lDataCorrect = (long)SrcData[(uiDataOffsetAddress + j) & 0x7FF] - uiAverageValue;
731 2 ulDataADSum = ulDataADSum + lDataCorrect * lDataCorrect;
732 2 /* FeedDog();
733 2
734 2 mmmm = (float)SrcData[(uiDataOffsetAddress + j) & 0x7FF] - 2074.18;// uiAverageValue;
735 2 nnnn = nnnn + mmmm * mmmm; */
736 2
737 2
738 2
739 2
740 2 }
741 1 FeedDog();
742 1 ulDataADSum = ulDataADSum / uiTempData;
743 1
744 1
745 1
746 1 fTempValue = sqrt(ulDataADSum);
747 1
748 1
749 1
750 1 if (uchChannel == 1)
751 1 {
752 2 AD.fDataRMSADAverage[0][uchRMSDataStorageNumber1] = fTempValue; //20080708
753 2 uchRMSDataStorageNumber1 = (uchRMSDataStorageNumber1+1) & 0x07; //20080708
754 2 }
755 1 else
756 1 {
757 2 AD.fDataRMSADAverage[1][uchRMSDataStorageNumber2] = fTempValue; //20080708
758 2 uchRMSDataStorageNumber2 = (uchRMSDataStorageNumber2+1) & 0x07; //20080708
759 2 }
760 1
761 1 if (bCycleFlag == 0)
762 1 {
763 2 fADDataSum = 0;
764 2 for (j=0; j<8; j++)
765 2 {
766 3 fADDataSum += AD.fDataRMSADAverage[uchChannel - 1][j];
767 3 }
768 2 fTempValue = fADDataSum / 8;
769 2 }
770 1
771 1 AD.fDataRMSAverage[uchChannel - 1] = fTempValue;
772 1 }
773
774
775
776 /*
777 峰峰值计算的方法:
778
779 1) 采样程序中峰峰值计算函数的算法:
780 2)取15组存储器存储数据最高值,取15组存储器存储数据最低值;
781 3)采集数据256组,新采集值与最高、最低的15组比较,判定是否在其中;
782 4)如果在其中,该采集值与组号将存储,并挤掉不是最高最低值的那一组值,并排序;
783 5)如果不在其中,舍弃;
784 6)采集完毕后,取最高15组数的最低值,取最低15组数的最高值,得到最近的峰峰值;
785 7)以最近峰峰值的3/4与上次峰峰值的1/4作为最终的峰峰值输出;
786 8)初始化1)的内容,重复2)-6)步骤的过程。
787 */
788
789
790 //*************************************************/
791 //* CH0 PKPK Value */
C51 COMPILER V7.10 ADSAMPLE 09/18/2008 14:09:32 PAGE 14
792 //*************************************************/
793 void CalculatePKPKValue0(unsigned int xdata *SrcData,unsigned int uiSampleLocation,unsigned int uiCurGrou
-pIndex,unsigned int uiPassedGroupIndex,unsigned int uiGroupNum)
794 {
795 1 char i;
796 1 unsigned char j,k;
797 1 unsigned int s,m;
798 1 idata unsigned int xdata *PTR;
799 1
800 1 m = SrcData + uiSampleLocation + AD.uiGroupLength;
801 1 for(PTR = SrcData + uiSampleLocation; PTR<m; PTR++)
802 1 {
803 2 FeedDog();
804 2 s = *PTR;
805 2
806 2 if(s>=AD.uiMaxValue0[29]) //29
807 2 {
808 3 if(AD.uchCurMaxCount< 5) //15
809 3 {
810 4 AD.uchCurMaxCount++;
811 4 k=29; //29
812 4 }
813 3 else
814 3 {
815 4 k=0;
816 4 for(i=29;i>=0;i--) //29
817 4 {
818 5 if((AD.uiMaxGroup0[i]==uiCurGroupIndex)&&(s>AD.uiMaxValue0[i]))
819 5 {
820 6 k=i;
821 6 break;
822 6 }
823 5 }
824 4 }
825 3 if(k!=0)
826 3 {
827 4 AD.uiMaxValue0[k] = s;
828 4 AD.uiMaxGroup0[k] = uiCurGroupIndex;
829 4 for(i=k-1;i>=0;i--)
830 4 {
831 5 if(s>=AD.uiMaxValue0[i])
832 5 {
833 6 AD.uiMaxValue0[i+1] = AD.uiMaxValue0[i];
834 6 AD.uiMaxGroup0[i+1] = AD.uiMaxGroup0[i];
835 6 AD.uiMaxValue0[i] = s;
836 6 AD.uiMaxGroup0[i] = uiCurGroupIndex;
837 6 }
838 5 else
839 5 {
840 6 break;
841 6 }
842 5 }
843 4 }
844 3 }
845 2 //-------------------------------minimum value------------------------------
846 2 if(s<=AD.uiMinValue0[29]) //29
847 2 {
848 3 if(AD.uchCurMinCount< 5) //15
849 3 {
850 4 AD.uchCurMinCount++;
851 4 k=29; //29
852 4 }
C51 COMPILER V7.10 ADSAMPLE 09/18/2008 14:09:32 PAGE 15
853 3 else
854 3 {
855 4 k=0;
856 4 for(i=29;i>=0;i--) //29
857 4 {
858 5 if((AD.uiMinGroup0[i]==uiCurGroupIndex)&&(s<AD.uiMinValue0[i]))
859 5 {
860 6 k=i;
861 6 break;
862 6 }
863 5 }
864 4 }
865 3 if(k!=0)
866 3 {
867 4 AD.uiMinValue0[k] = s;
868 4 AD.uiMinGroup0[k] = uiCurGroupIndex;
869 4 for(i=k-1;i>=0;i--)
870 4 {
871 5 if(s<=AD.uiMinValue0[i])
872 5 {
873 6 AD.uiMinValue0[i+1] = AD.uiMinValue0[i];
874 6 AD.uiMinGroup0[i+1] = AD.uiMinGroup0[i];
875 6 AD.uiMinValue0[i] = s;
876 6 AD.uiMinGroup0[i] = uiCurGroupIndex;
877 6 }
878 5 }
879 4 }
880 3 }
881 2 }
882 1 //------------------------Group Replacement-------------------
883 1
884 1 AD.uchCurMinCount=0;
885 1 AD.uchCurMaxCount=0;
886 1 if(AD.uiMaxValue0[4]>AD.uiMinValue0[4]) //9
887 1 {
888 2 AD.uiCurPKPKValue[0]=((AD.uiMaxValue0[4]-AD.uiMinValue0[4])*3+AD.uiLastPKPKValue[0])>>2;
889 2 }
890 1 else
891 1 {
892 2 AD.uiCurPKPKValue[0]=0;
893 2 }
894 1
895 1 AD.uiLastPKPKValue[0]=AD.uiCurPKPKValue[0];
896 1
897 1 i=0;
898 1 for(j=0;j<30;j++) //30
899 1 {
900 2 if((AD.uiMaxGroup0[j]!=uiPassedGroupIndex)&&(AD.uiMaxGroup0[j] < uiGroupNum))
901 2 {
902 3 AD.uiMaxGroup0[i]=AD.uiMaxGroup0[j];
903 3 AD.uiMaxValue0[i]=AD.uiMaxValue0[j];
904 3 i++;
905 3 }
906 2 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -