故事作者:yuanchunwei99

最近创作

看看TA的故事

【内行说】 WINCC项目中预防人为误操作导致生产事故发生的“特殊措施”

已锁定

yuanchunwei99

  • 帖子

    107
  • 精华

    4
  • 被关注

    7

论坛等级:侠士

注册时间:2015-11-24

普通 普通 如何晋级?

【内行说】 WINCC项目中预防人为误操作导致生产事故发生的“特殊措施”

2444

10

2022-06-26 22:54:02

在WINCC项目中,有两个场景经常会遇到。首先说说第一个场景:“某个关键的设备在运行过程中不能随便停止或者已经停止运行的设备不能随便启动。”这种场景下,特别是在远程HMI操作的时候,必须要考虑到人为的误操作(鼠标误点击)将“启动”或者“停止”的控制按钮或者开关选中而发出“误指令”。第二个场景:“工艺控制过程中的某个关键参数值在正常生产过程中必须设定在合理的范围内,如果参数设定有误将对生产工况或者产品质量造成严重影响。”

针对以上场景,通过WINCC的脚本功能对HMI的指令控件采用“操作授权”和“二次确认”等特殊措施进行处理。

1、设备启动/停止指令的操作授权

1.1在需要增加操作授权的指令控件旁边增加一个复选框控件并命名为操作授权。在复选框事件中添加C脚本动作:

#include "apdefap.h"

void OnPropertyChanged(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName,  long  value)

{

#pragma option(mbcs)

// WINCC:TAGNAME_SECTION_START

// syntax: #define TagNameInAction "DMTagName"

// next TagID : 1

// WINCC:TAGNAME_SECTION_END

switch(value)

{

case 1:

SetTagBit("enable",1); //Return-Type: BOOL

break;

case 0:

SetTagBit("enable",0); //Return-Type: BOOL

break;

}

// WINCC:PICNAME_SECTION_START

// syntax: #define PicNameInAction "PictureName"

// next PicID : 1

// WINCC:PICNAME_SECTION_END

}

1.2修改原指令控件属性,在“允许控制员控制”动态对话框中关联变量“enable”,用于使能控制是否允许操作员控制。

1.3修改原指令控件的鼠标操作事件,增加操作变更警告弹窗脚本代码。

弹窗脚本代码:

#include "apdefap.h"

void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)

{

#pragma option(mbcs)

// WINCC:TAGNAME_SECTION_START

// syntax: #define TagNameInAction "DMTagName"

// next TagID : 1

// WINCC:TAGNAME_SECTION_END

#pragma option(mbcs);

#pragma code("Kernel32.dll");

void Sleep(int  Milliseconds);

#pragma code()

int ZW,i;

ZW= MessageBox(NULL,"你确定启动吗?","警告",MB_YESNO|MB_SETFOREGROUND|MB_SYSTEMMODAL);

if (ZW==IDYES)

{SetTagBit("Pump1",1);    //“Pump1”plc中的BOOL变量

Sleep(5000);      //  确认之后的复位时间5S

SetTagBit("Pump1",0);}

else

{SetTagBit("Pump1",0);

}

// WINCC:PICNAME_SECTION_START

// syntax: #define PicNameInAction "PictureName"

// next PicID : 1

// WINCC:PICNAME_SECTION_END

}

2、工艺参数变更输入的二次确认

2.1在原参数设置输入输出域增加“DisplayValue”和“TempValue”两个数据。

2.2修改参数设置输入输出域的键盘操作事件,增加数值变更二次弹窗脚本代码。

二次确认弹窗脚本代码:
#include "apdefap.h"

void OnKeyUp(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nChar, UINT nRepCnt, UINT nFlags)

{

#pragma option(mbcs)

// WINCC:TAGNAME_SECTION_START

// syntax: #define TagNameInAction "DMTagName"

// next TagID : 1

// WINCC:TAGNAME_SECTION_END

int TempValue=GetTagWord("TempValue");

char szBuffer[20];

sprintf( szBuffer,"Input number:%d",TempValue);

if ( nChar==13 )//if press enter

{

int xRet = MessageBox(NULL,szBuffer," 确认窗口",MB_YESNO|MB_ICONQUESTION|MB_SYSTEMMODAL);//message

if ( xRet == IDYES )//confirm operate

{

SetTagWord("DisplayValue",TempValue);// set data

}

}

// WINCC:PICNAME_SECTION_START

// syntax: #define PicNameInAction "PictureName"

// next PicID : 1

// WINCC:PICNAME_SECTION_END

}

以上是WINCC项目在生产现场实际应用过程中经常遇到的两个非常普遍的应用场景。是实际应用过程中发生过非常多的人为误操作导致生产、设备事故教训后而不得不采取的“特殊措施”。虽然看起来显得非常繁琐,但是对于避免人为因素引发的事故却非常必要!


【内行说】 WINCC项目中预防人为误操作导致生产事故发生的“特殊措施” 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

网友专栏

共有3363条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。