Wincc中C脚本实现对某变量置位+复位+二次确认功能


前言

Wincc在某些应用场景中,需要单击按钮,实现对某变量置位复位,且单击按钮后要求弹出二次确认窗口。本文基于C脚本给出一种解决方法。


一、添加按钮控件

以某项目为例,添加一个Bool类型变量"E-FlushStp",并在画面中添加一个按钮控件,如图1、图2所示。
在这里插入图片描述
图1
在这里插入图片描述
图2

二、添加C脚本

如图2所示,依次选择按钮事件-鼠标-单击鼠标-右键添加C动作。
代码如下:

#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
#pragma option(mbcs)
int i;
if(GetTagBit("E-FlushStp")==0)//读取变量当前状态
{i=MessageBox(NULL,"Confirm to proceed with the operation","Prompt",MB_OKCANCEL|MB_ICONEXCLAMATION|MB_SETFOREGROUND|MB_SYSTEMMODAL);//二次确认窗口
if(i==1)
SetTagBit("E-FlushStp",1);//若变量为0,且按下确认键,则将变量置位
}
else if (GetTagBit("E-FlushStp")==1)
SetTagBit("E-FlushStp",0);//若变量为1,则将变量复位
}

编译,无故障无警告。此时,单击按钮后,会弹出二次确认窗口,如图3所示,当按确认键后,变量置位,再次单击按钮,变量复位。
在这里插入图片描述
图3

总结

本文给出一种基于C脚本的变量置位复位方法,并具有二次确认功能。

WinCC中设按钮按下为1、松开为0的功能,通常是在创建人机界面(HMI)项目时完成的。这种功能一般涉及到脚本编写或者利用内的函数块来控制变量值的变化。 下面是一个简单的例子,它演示了如何通过VBS(Visual Basic Script)实现这个效果: ### 使用 VBS 脚本来配 假设您已经有一个名为 `btn_OK` 的按钮,并且想要将其状态绑定到一个整型变量 `TagButtonState` 上,在触摸屏上点击该按钮时将此标签(设为1),而当手指离开即释放后复位(设回0)。 #### 步骤一: 创建 PLC 数据类型 Tag 首先需要确保您的PLC中有对应的布尔或整形数据点可用作为目标存储;比如这里我们选择了一个INT类型的全局内存区中的地址作为示例 (`M100`),并且已经在WinCC里面映射成了一个叫做 `TagButtonState` 标签。 #### 步骤二: 编辑按钮属性并添加事件触发器 选中 `btn_OK` 按钮组件,在其“属性”面板下找到"事件",然后分别为 "On Pressed"(鼠标左键按压动作) 和 “On Released” (按键抬起后的响应操作) 添加新的VBScript代码片段: 对于 **Pressed** 事件: ```vbscript ' 当用户按下按钮时运行这段代码 ActiveWindow.ProcessValue("TagButtonState") = 1 ' 将指定的数据对象赋值为 1 表示已按下 ``` 而对于 **Released** 事件,则输入类似如下的指令: ```vbscript ' 用户放开按钮之后会立即执行这行命令 ActiveWindow.ProcessValue("TagButtonState") = 0 ' 设为零代表恢复未激活的状态 ``` 以上步骤完成后保存更改即可看到实际的效果啦! 请注意,上述说明基于较为基础的应用场景以及早期版本的操作习惯所描述。如果你使用的是较新版本软件或者其他特定需求的话,请查阅官方文档获取更详细的指导信息。 另外值得注意的一点是,由于HMI系统与PLC之间的通讯可能存在延迟现象,因此为了保证信号传递准确无误建议结合适当的防抖动措施或是采用硬件自带去抖机制来进行优化处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值