WinCC中启动按钮的组态程序如下:
#include "apdetap.h"
void OnLButtonDown(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName,UINTnFlays,intx,inty)
{
#pragma code("keme132.dll")
VOID Sleep(time);
SetTagBit("H_BC1A_MStart",1);
Sleep(500);
SetTagBit("H_BC1A_MStart",0);
}
操作人员按动启动按钮,WinCC将"H_BC1A_MStart"信号传给Step7项目,从而启动设备。但是,当操作人员连击或者多次击启动按钮后,"H_BC1A_MStart"信号就保持长导通,在后一级设备一启动,本级设备也跟着动起来,多次险些酿成事故。我在Step7中增加下面的程序以求解决问题:
A M 103.0
= L 0.0
A L 0.0
AN T 103
= M 104.0
A L 0.0
BLD 102
L S5T#500MS
SD T 103
用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才能启动设备,操作工没等设备动起来就乱点而造成问题。再次谢谢指导。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc188123.html