当前位置: 主页 > PLC控制

怎样利用报警记录或HORN实现报警后输出变量

我用wincc6.0SP3。现在是用一模拟量报警后驱动一继电器工作。是单一变量。。我是新手,麻烦详细一点。谢谢/

问题补充:
报警和继电器输出的点,不是同一个站,用PLC程序做是不是太麻烦了?全局有几十个报警输出,用HORN好像是只要有故障就输出,我只是要把其中一个报警用继电器输出,或音响输出。又没有HORN详细设置或简单点的全局代码?

最佳答案

#pragmacode("Winmm.dll")
voidWINAPIPlaySoundA(char*pszSound,char*hmode,DWORDdwFlag);
#pragmacode()
DWORDA1,A2,A3,A4,A5,A6,A7;
DWORDB1,B2,B3,B4,B5,B6,B7;
A1=GetTagDWord("YQ_ALARM_1");
A2=GetTagDWord("YQ_ALARM_2");
A3=GetTagDWord("YQ_ALARM_3");
A4=GetTagDWord("YQ_ALARM_4");
A5=GetTagDWord("YQ_ALARM_5");
A6=GetTagDWord("YQ_ALARM_6");
A7=GetTagDWord("COMM_ALARM");
B1=GetTagDWord("YQ_ALARM_SAVE_1");
B2=GetTagDWord("YQ_ALARM_SAVE_2");
B3=GetTagDWord("YQ_ALARM_SAVE_3");
B4=GetTagDWord("YQ_ALARM_SAVE_4");
B5=GetTagDWord("YQ_ALARM_SAVE_5");
B6=GetTagDWord("YQ_ALARM_SAVE_6");
B7=GetTagDWord("COMM_ALARM_SAVE");
if(
((A1^B1)&A1)|
((A2^B2)&A2)|
((A3^B3)&A3)|
((A4^B4)&A4)|
((A5^B5)&A5)|
((A6^B6)&A6)|
((A7^B7)&A7)
)
SetTagBit("yq_alarm_out",1);
if(GetTagBit("yq_alarm_out"))
PlaySoundA("c:\\winnt\\Media\\chord.wav",NULL,1);
SetTagDWord("YQ_ALARM_SAVE_1",A1);
SetTagDWord("YQ_ALARM_SAVE_2",A2);
SetTagDWord("YQ_ALARM_SAVE_3",A3);
SetTagDWord("YQ_ALARM_SAVE_4",A4);
SetTagDWord("YQ_ALARM_SAVE_5",A5);
SetTagDWord("YQ_ALARM_SAVE_6",A6);
SetTagDWord("COMM_ALARM_SAVE",A7);
return0;
以上脚本报警第一次来置位yq_alarm_out,你可以手动复位这个变量,如果要驱动q点,则可以定义外部变量yq_alarm_out,连接参数q地址输出。

提问者对于答案的评价:
可以参考

专家置评

请参考《WinCC实现声音报警的方法》:
htTP://www.ad.siemens.com.cn/serviCE/elearning/course/892.html

  • 关注微信

猜你喜欢

微信公众号