通讯启、停变量,最好不要用双稳态来交换数据。
因为很难保证通讯一直正常的。如果通讯不正常,卡住了PLC的启、停、运行标识位,那不是麻烦大了?
我一般是就是直接用一个位实现单按钮启停。
直接用通讯位的上升沿来并到启停按钮的常开接点上,然后在后面又用通讯位的常开来复位通讯位。这样,上位机每置位一次通讯启停位,PLC开机后又立刻自动复位了通讯位,上位机再置位一次通讯位,PLC停机后又立刻再次复位通讯位,这就达到了上位机控制时,只需置位通讯启停位,而不用考虑什么乱七八糟的当前机组的运行abc状态了。
WinCC只需在按钮的事件-按钮-鼠标-按左键键入对变量写1的脚本即可:
Sub OnLButtonDown(Byval Item, Byval Flags, Byval x, Byval y)
Dim objTag
Dim Ctrl
Set objTag = HMIRuntime.Tags (".Ctl")
Ctrl = objTag.Read
Ctrl = Ctrl Or 1.0
objTag.Write Ctrl
End Sub
因为用的是结构变量和子画面,所以只用".Ctl"对应VW4030。低位的V4031.0写1直接用当前VW4030或1就可以了。因为其他有些位必须用双稳态,所以不能直接给VW4030写16#0001。
希望这种方法对你有帮助。