楼主可以写一个全局脚本,2s触发循环执行一次!提供一段代码你参考一下:#include"apdefap.h"intgscAction(void){#pragmacode("kernel32.dll")BOOLBeep(DWORDdwFreq,DWORDdwDuration)#pragmacode()//{Beep(500,500)}intaa,bbaa=(GetTagByte("GROUP1.GREL")/32)%2//取这个字节的第5位的状态bb=(GetTagByte("GROUP1.GREL")/64)%2//取这个字节的第6位的状态if(((GetTagByte("GROUP1.GALM")==2)(aa==1))&&(GetTagBit("Horn_enable"))){Beep(2100,1000)}//群组动态
报警;动态报警优先。else{if(((GetTagByte("GROUP1.GALM")==3)(bb==1))&&(GetTagBit("Horn_enable"))){Beep(2100,100)}}//群组静态报警。return(0)}然后你可以在画面上做一个控制声音开关的按钮,来翻转内部
变量"Horn_enable",要声音的时候让其为“1”,消声让其为“0”,这样让他们想用就ON,不想用就OFF。按钮的脚本如下!^_^SetTagBit("Horn_enable",!GetTagBit("Horn_enable"))通过wincc内部变量的Horn变量组,报警记录,报警器,实现触发报警声音
第一步:打开wincc变量管理器,选中内部变量,在Horn变量组新建几个内部变量,本例中新建HORN_ALM,数据格式定无符号的值,8位,16位,32位都可以,本例中定义为32位,新建HORN1,HORN2,HORN3,数据格式为二进制
第二步:打开报警记录,在消息下面可以新建消息,本例中创建了三个消息组,按报警的等级创建了一级报警,二级报警,三级报警,等级的划分看项目上是否有要求,没有就不用划分
第三步:将HORN_ALM变量在添加到三个
消息组中,消息位不能重复,HORN_ALM定位32位值,消息位可以从0-31中任意选择
第四步:打开报警器,在消息分配中将三个报警等级选上,消息类别对应的变量为新建内部变量的HORN1,HORN2,HORN3
第五步:在信号分配中,组态HORN1,HORN2,HORN3,对应报警声音文件
楼上2位都是高手,看到你们写的都头晕,不过我还是要收藏滴。如果LZ和我一样可以用WINCC自带的声音报警器。只是你安装时要把这个插件安上,这样对不太会C语言的像我样的就很有帮助了,就和平时连接变量一样方便。还有一种就是用控件播放。
评论列表(0条)