Pump1_Running表示1#泵运行/停止状态,Pump1_Fault表示1#泵故障
Pump2_Running表示2#泵运行/停止状态,Pump2_Fault表示2#泵故障
Pump3_Running表示3#泵运行/停止状态,Pump3_Fault表示3#泵故障
Pump4_Running表示4#泵运行/停止状态,Pump4_Fault表示4#泵故障
Pump5_Running表示5#泵运行/停止状态,Pump5_Fault表示5#泵故障
Pump6_Running表示6#泵运行/停止状态,Pump6_Fault表示6#泵故障
Pump7_Running表示7#泵运行/停止状态,Pump7_Fault表示7#泵故障
Pump8_Running表示8#泵运行/停止状态,Pump8_Fault表示8#泵故障
Pump9_Running表示9#泵运行/停止状态,Pump9_Fault表示9#泵故障
Pump10_Running表示10#泵运行/停止状态,Pump10_Fault表示10#泵故障
最佳答案建议脚本中使用一维数组,数组有3个元素,分别计算运行、停止、故障设备的台数。写VBS脚本:
dim Status(3),i,Pump_Running(10),Pump_Fault(10)
for i=1 to 10
set Pump_Running(i)=HMIRuntime.tags("Pump" & Cstr(i) & "_Running")
set Pump_Fault(i)=HMIRuntime.tags("Pump" & Cstr(i) & "_Fault")
next
for i=1 to 10
if Pump_Running(i).read then
Status(1)=Status(1)+1
else
Status(2)=Status(2)+1
end if
if Pump_Fault(i).read then
Status(3)=Status(3)+1
end if
next
msgbox "10台泵当中,正在运行的泵数量是" & cstr(Status(1))
msgbox "10台泵当中,停止的泵数量是" & cstr(Status(2))
msgbox "10台泵当中,故障的泵数量是" & cstr(Status(3))
----------- 其实不用脚本,直接用PLC就可以实现你的功能的!你需要建立间隔变量,SUM_RUN、SUM_STOP,SUM_Fault,三个变量分别对应运行、停止、故障的累计值。
然后在PLC里面做设备的控制块,一般的电机控制肯定要做成一个块,块的输入参数要有运行/停止、故障等状态;输出要有上面三个变量。
重点是:在每个周期的第一个网络,将三个累计值清零,然后在每哥调用的程序块里,根据状态将对应的累计值+1。
当最后一个设备块执行完成后,三个变量里的值就是整个系统的设备运行状态。注意的是,这三个累计值将在下一周期执行的时候清零,防止重复累计。因此再设备块执行完成后,要将上面三个数据锁存一下,送到另外三个变量中,用以在上位机显示。
就是这么简单。不需要脚本的哦
--------基于画面而不是基于PLC。
那么解决问题的思路, 要基于图形对象而不是基于变量。
我认为上述答案并不太好。
比如调试过程中, 突然又要把某个设备从这个画面移动到另外一个画面, 你跟我说还必须要改PLC程序?
扯的吧.
我的想法是, 建立一个画面中设备名称的列表, 然后脚本来搜索查询这些设备图标的运行状态,恐怕更直接些。
欢迎光临 工控编程吧 (https://www.gkbc8.com/) | Powered by Discuz! X3.4 |