📄 alarm.lst
字号:
638 5 return;
639 5 }
640 4 else
641 4 {
642 5 AlarmModule.uchAlarmStatus[uchChannel - 1] = 0;
643 5 }
644 4 }
645 3 }
646 2 break;
647 2
648 2 default:
649 2 break;
650 2 }
651 1 }
652
653 //--------------------------------------------------------------------------------------
654 //函数名称:void JudgeBypassAlarmStatus(unsigned char uchChannel)
655 //功 能:判断旁路状态对报警状态的影响
656 //输入参数:通道号
657 //返 回:无
658 //完成日期:4/16/2007
659 //---------------------------------------------------------------------------------------
660 void JudgeBypassAlarmStatus(unsigned char uchChannel)
661 {
662 1 if (AlarmModule.uchSystemBypassStatus[uchChannel - 1] == 0xff)
663 1 {
664 2 return;
665 2 }
666 1 else if (AlarmModule.uchSystemBypassStatus[uchChannel - 1] == 0x00)
667 1 {
668 2 AlarmModule.uchAlarmStatus[uchChannel - 1] &= 0x00;
669 2 }
C51 COMPILER V7.10 ALARM 09/18/2008 14:09:31 PAGE 12
670 1 else if (AlarmModule.uchSystemBypassStatus[uchChannel - 1] == 0x01)
671 1 {
672 2 AlarmModule.uchAlarmStatus[uchChannel - 1] &= 0xf9;
673 2 }
674 1 else if (AlarmModule.uchSystemBypassStatus[uchChannel - 1] == 0x02)
675 1 {
676 2 AlarmModule.uchAlarmStatus[uchChannel - 1] &= 0xf6;
677 2 }
678 1 else
679 1 {
680 2 return;
681 2 }
682 1 }
683
684
685 //--------------------------------------------------------------------------------------------------------
---------
686 //函数名称:void AlarmIOControl(unsigned char uchChannel, unsigned char uchAlarmStatus, unsigned char uchO
-KStatus)
687 //功 能:由各种状态的判断得到报警控制输出供三冗余或43使用
688 //输入参数:通道号,报警状态、 OK状态
689 //返 回:无
690 //完成日期:4/12/2007
691 //--------------------------------------------------------------------------------------------------------
---------
692 void AlarmIOControl(unsigned char uchChannel, unsigned char uchAlarmStatus, unsigned char uchOKStatus)
693 {
694 1 if (uchOKStatus == 1)
695 1 {
696 2 SetNotOKIOControl(uchChannel);
697 2 }
698 1 else if ( uchOKStatus == 0 )
699 1 {
700 2 if (uchAlarmStatus == 0x00)
701 2 {
702 3 SetOKIOControl(uchChannel);
703 3 }
704 2 else if ((uchAlarmStatus == 0x04) || (uchAlarmStatus == 0x02))
705 2 {
706 3 SetAlertIOControl(uchChannel);
707 3 }
708 2 else if ((uchAlarmStatus == 0x0c) || (uchAlarmStatus == 0x03))
709 2 {
710 3 SetDangerIOControl(uchChannel);
711 3 }
712 2 }
713 1 }
714
715 //--------------------------------------------------------------------------------------
716 //函数名称:void SetPercentValueALM(unsigned char uchChannel, int iMeasurePercent)
717 //功 能:设置测量的比例值到报警模块
718 //输入参数:通道号
719 //返 回:无
720 //完成日期:4/16/2007
721 //---------------------------------------------------------------------------------------
722 void SetPercentValueALM(unsigned char uchChannel, int iMeasurePercent)
723 {
724 1 if (iMeasurePercent >= 5940)
725 1 {
726 2 iMeasurePercent = 5940;
727 2 }
728 1 else if (iMeasurePercent <= -1250)
C51 COMPILER V7.10 ALARM 09/18/2008 14:09:31 PAGE 13
729 1 {
730 2 iMeasurePercent = -1250;
731 2 }
732 1 else
733 1 {
734 2 ;
735 2 }
736 1
737 1 AlarmModule.iMeasurePercent[uchChannel - 1] = iMeasurePercent;
738 1
739 1 }
740
741 //--------------------------------------------------------------------------------------
742 //函数名称:void SetAlertTypeStatusALM(unsigned char uchChannel, unsigned char uchAlertType)
743 //功 能:将报警类型的状态设置到报警模块中,以供报警类选择使用
744 //输入参数:通道号,报警类型
745 //返 回:无
746 //完成日期:4/16/2007
747 //作 者:佟文杰
748 //---------------------------------------------------------------------------------------
749 void SetAlertTypeStatusALM(unsigned char uchChannel, unsigned char uchAlertType)
750 {
751 1 AlarmModule.uchAlertTypeStatus[uchChannel - 1] = uchAlertType;
752 1 }
753
754 //--------------------------------------------------------------------------------------
755 //函数名称:void SetAfreshConfigFlagAlarm(unsigned char uchChannel,unsigned char AfreshConfigFlag)
756 //功 能:将重新配置参数的标志设置到报警模块
757 //输入参数:通道号,重新配置参数的标志
758 //返 回:无
759 //完成日期:4/16/2007
760 //作 者:佟文杰
761 //---------------------------------------------------------------------------------------
762 void SetAfreshConfigFlagAlarm(unsigned char uchChannel,unsigned char AfreshConfigFlag)
763 {
764 1 AlarmModule.uchAfreshConfigFlag[uchChannel - 1] = AfreshConfigFlag;
765 1 }
766
767 //--------------------------------------------------------------------------------------
768 //函数名称:void AlarmModuleProcess(void)
769 //功 能:报警模块数据的处理
770 //输入参数:通道号
771 //返 回:无
772 //完成日期:4/16/2007
773 //---------------------------------------------------------------------------------------
774 void AlarmModuleProcess(unsigned char uchChannel)
775 {
776 1 StopHeartBeat();
777 1 SetHeartbeatALM(uiHeartbeatValue);
778 1 StartHeartBeat();
779 1 switch(AlarmModule.uchChannelType[uchChannel - 1])
780 1 {
781 2 case 13: //加速度输入 加速度输出
782 2 case 14: //加速度输入 速度输出
783 2 case 15: //加速度输入 位移输出
784 2 case 16: //速度输入 速度输出
785 2 case 17: //速度输入 位移输出
786 2 case 18: //位移输入 位移输出
787 2 case 21: //涡流+速度 输出复合式振动
788 2 case 22: //LVDT输入 机壳膨胀输出
789 2 case 28: //HHH
790 2 if (AlarmModule.uchEnable[uchChannel - 1] == 0)
C51 COMPILER V7.10 ALARM 09/18/2008 14:09:31 PAGE 14
791 2 {
792 3 OutputCurrentValue(uchChannel, 400);
793 3 AlarmIOControl(uchChannel, 0x00, 0); //通道Disable 通道OK,无报警0x00 输出4mA
794 3 AlarmModule.uchLEDAlarmStatus[uchChannel - 1] = 0x00;
795 3 SetAlarmStatusMain(uchChannel, 0x00);
796 3 SetAlarmStatusCOMM(uchChannel, 0x00);
797 3 }
798 2 else if (AlarmModule.uchOKStatus[uchChannel - 1] != 0)
799 2 {
800 3 JudgeAlarmStatus(uchChannel);
801 3 JudgeBypassAlarmStatus(uchChannel); //20080313
802 3 OutputCurrentValue(uchChannel, 300); //通道不OK,输出3mA
803 3 SetAlarmStatusMain(uchChannel, AlarmModule.uchAlarmStatus[uchChannel - 1]);
804 3 AlarmIOControl(uchChannel, AlarmModule.uchAlarmStatus[uchChannel - 1], 1);
805 3 SetAlarmStatusCOMM(uchChannel, AlarmModule.uchAlarmStatus[uchChannel - 1]);
806 3 AlarmModule.uchLEDAlarmStatus[uchChannel - 1] = AlarmModule.uchAlarmStatus[uchChannel - 1];
807 3 }
808 2 else if (AlarmModule.uchOKStatus[uchChannel - 1] == 0)
809 2 {
810 3 JudgeAlarmStatus(uchChannel);
811 3 JudgeBypassAlarmStatus(uchChannel);
812 3
813 3 if (AlarmModule.uchAfreshConfigFlag[uchChannel - 1] == 0)
814 3 {
815 4 if (AlarmModule.uchChannelNotoktoOkFlag[uchChannel - 1] == 1)
816 4 {
817 5 OutputCurrentValue(uchChannel, (((float)AlarmModule.iMeasurePercent[uchChannel - 1] * 16) / 50 + 400
-));
818 5 }
819 4 }
820 3 else if (AlarmModule.uchAfreshConfigFlag[uchChannel - 1] == 1)
821 3 {
822 4 AlarmModule.uchAfreshConfigStartOutCurrentCount[uchChannel - 1]++;
823 4 if (AlarmModule.uchAfreshConfigStartOutCurrentCount[uchChannel - 1] == 5)
824 4 {
825 5 AlarmModule.uchAfreshConfigFlag[uchChannel - 1] = 0;
826 5 AlarmModule.uchAfreshConfigStartOutCurrentCount[uchChannel - 1] = 0;
827 5 }
828 4 }
829 3 else
830 3 {
831 4 if (AlarmModule.uchChannelNotoktoOkFlag[uchChannel - 1] == 1)
832 4 {
833 5 OutputCurrentValue(uchChannel, (((float)AlarmModule.iMeasurePercent[uchChannel - 1] * 16) / 50 + 400
-));
834 5 }
835 4 }
836 3 //配置参数后的电流抑制
837 3 AlarmModule.uchLEDAlarmStatus[uchChannel - 1] = AlarmModule.uchAlarmStatus[uchChannel - 1];
838 3 AlarmIOControl(uchChannel, AlarmModule.uchAlarmStatus[uchChannel - 1], 0);
839 3 SetAlarmStatusMain(uchChannel, AlarmModule.uchAlarmStatus[uchChannel - 1]);
840 3 SetAlarmStatusCOMM(uchChannel, AlarmModule.uchAlarmStatus[uchChannel - 1]);
841 3 }
842 2 AlarmModule.uchResetStatus[uchChannel - 1] = 0; //清除复位状态
843 2 break;
844 2
845 2 default:
846 2
847 2 break;
848 2 }
849 1 AlarmLEDControl(AlarmModule.uchLEDAlarmStatus[1] || AlarmModule.uchLEDAlarmStatus[0]); //最后根据报警状
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -