有个项目有4台水泵,想每30分钟把他们排一次对列,要求是启动的水泵不参与排队,排队的依据是水泵的累计运行时间(PLC里有计时),运行时间少的排前面。排玩对还要设置水泵投入运行。我懵逼了,完全不知道怎么下手,求大侠们帮帮忙。
问题补充:
我是用Wincc脚本来做的,可以提供脚本参考一下就更好了。
最佳答案
1、给水泵编号1~4,
2、全局脚本编程:
vbs,周期30min:
dim run(4),pump(4),runtime(4),max
run(0)=hmiruntime.tags("pump1.run").read
run(1)=hmiruntime.tags("pump2.run").read
run(2)=hmiruntime.tags("pump3.run").read
run(3)=hmiruntime.tags("pump4.run").read
pump(0)=1
pump(1)=2
pump(2)=3
pump(3)=4
if (run(0)) then
runtime(0)=无穷大
else
runtime(0)=hmiruntime.tags("pump1.runtime").read
end if
if (run(1)) then
runtime(1)=无穷大
else
runtime(1)=hmiruntime.tags("pump2.runtime").read
end if
if (run(2)) then
runtime(2)=无穷大
else
runtime(2)=hmiruntime.tags("pump3.runtime").read
end if
if (run(3)) then
runtime(3)=无穷大
else
runtime(3)=hmiruntime.tags("pump4.runtime").read
end if
''以上如果当前泵在运行,则runtime赋值无穷大,否则就是当前实际运行时间
for i=0 to 3
for j=i to 3
if runtime(i)>runtime(j) then
max=runtime(i)
runtime(i)=runitme(j)
runtime(j)=max’运行时间交换
max=pump(i)
pump(i)=pump(j)
pump(j)=max''泵需要交换
end if
next
next
交换完成后pump()数组保存的就是应该启动泵的顺序,所以只要启动pump(0)的数值对应的泵就行了。
提问者对于答案的评价:
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc167303.html