当前位置: 主页 > PLC控制

三问“sleep(500)”

wincc中启动按钮组态程序如下:
#include"apdetap.h"
voidOnLButtonDown(char*lpszPictureName,char*lpszObjectName,char*lpszPropeRTyName,UintnFlays,intx,inty)
{

#pragmacode("keme132.dll")
VOIDSleep(time);

SetTagBit("H_BC1A_MSTart",1);
Sleep(500);
SetTagBit("H_BC1A_MStart",0);

}

操作人员按动启动按钮,WinCC将"H_BC1A_MStart"信号传给Step7项目,从而启动设备。但是,当操作人员连击或者多次击启动按钮后,"H_BC1A_MStart"信号就保持长导通,在后一级设备一启动,本级设备也跟着动起来,多次险些酿成事故。我在Step7中增加下面的程序以求解决问题:
AM103.0
=L0.0
AL0.0
ANT103
=M104.0
AL0.0
BLD102
LS5T#500MS
SDT103

用M104.0代替M103.0(M103.0就是WinCC里的"H_BC1A_MStart"),安全问题不会发生了,但是,根本性的"H_BC1A_MStart"问题还是存在,操作人员如果不对启动按钮进行再击的话,设备无法启动,请问大侠们,如果只是改动WinCC而不改动Step7项目,怎么改为好?谢谢!

最佳答案

同楼上,用MESsageBox函数确认就可以取消掉长时间点住按钮或者多次点击按钮,让你不能连点鼠标..

另外时间要求不严格的话还可以把SetTagBit("H_BC1A_MStart",1)写到点击鼠标左键事件,把SetTagBit("H_BC1A_MStart",0)写到释放鼠标左键事件去.这样的话点击鼠标左键发出动作信号,释放左键的时候切断动作信号,不管点多少次鼠标都能执行SetTagBit("H_BC1A_MStart",0).

提问者对于答案的评价:
谢谢!两种方案都可以,都能达到目的。为安全起见,在点击启动按钮后报警器响,要延时15S才能启动设备,操作工没等设备动起来就乱点而造成问题。再次谢谢指导。

  • 关注微信

猜你喜欢

微信公众号