实在是搞不懂怎么回事。
CS结构中服务器环境下,以下是部分代码,VBS加入以下动作,周期5秒钟
Dim CS_CL,CS_CL_Alarm ‘余氯
Dim CS_NTU,CS_NTU_Alarm
Set CS_NTU=HMIRuntime.Tags("A::CS_NTU")
CS_NTU.read
Set CS_NTU_Alarm=HMIRuntime.Tags.Item ("CS_NTU_ALARM")
CS_NTU_Alarm.Read
If CS_NTU.Value >0.8 Or CS_NTU.Value<0.12 Then
CS_NTU_ALARM.Write 1
Else
CS_NTU_ALARM.Write 0
End If
Set CS_CL=HMIRuntime.Tags("A::CS_CL")
CS_CL.read
Set CS_CL_Alarm=HMIRuntime.Tags.Item ("CS_CL_ALARM")
CS_CL_Alarm.Read
If CS_CL.Value >0.7 Or CS_CL.Value <0.3 Then
CS_CL_ALARM.Write 1
Else
CS_CL_ALARM.Write 0
End If
‘MsgBox CS_CL.Value
CS_CL_Alarm CS_NTU_Alarm变量加入报警记录,然后在HORN里加入相应变量和声音文件(网上方法HORN的做法)。
在测试运行的时候开始可以达到效果的。
但是后来就出问题了,发现一个变量(CS_NTU_Alarm)触发后,报警产生了,声音也有了,但是紧跟着前面一个变量 (CS_CL_Alarm)也触发成了1,报警栏出现报警,即为误报警,但是立刻被我程序里复位了,当我屏蔽掉CS_CL代码时,作相同测试,CS_CL_Alarm就一直置1了。感觉很奇怪。时间比较紧迫,后来只好将报警值写到数据库。
问题补充:
我的意思是发生了误报警,CS_CL其实并没有超出限制值,我是模拟CS_NTU的报警。但是CS_CL也跟着报警了。经过程序判断肯定要被我复位了。我是新建的项目!真是奇怪的。
最佳答案
由此可见就是你的cs_cl的代码造成的。它复位CS_CL_Alarm这个报警了。我一般在你的这种情况下都是cs_cl这段代码置位CS_CL_Alarm,然后在你上面贴出来的这个代码里面发出报警声音,然后来复位CS_CL_Alarm。
提问者对于答案的评价:
没辙,只好自己在服务器中将报警位写入SQL中,每个客户端运行一个报警小程序。解决咯。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc266794.html