西门子WinCC的C脚本——对象的事件任务

 

1、 全局脚本编辑器;

2、 对象的属性任务;

3、 对象的事件任务。

本文探讨一下用C脚本来实现对象的事件任务。

一、例程说明引文:博途工控人平时在哪里技术交流博途工控人社群

如图1所示,为本例程的运行画面。本例程实现以下功能:

画面主要由两个对象构成,输入/输出域关联一个内部变量(temp1),并实时显示其值。按钮("点击+1")则响应鼠标点击事件,每点击一下按钮,temp1自增1。按钮的实现响应通过C脚本来实现。

图1 事件任务实例

二、配置输入/输出域

图2 输入/输出域

输入/输出域的配置不做过多介绍,如图2所示。将其输出值与内部变量temp1关联,并配置成"有变化时"更新即可。

三、编写C脚本,响应按钮事件

如图3所示,在按钮的"事件"选项卡中,为"鼠标动作"事件配置事件响应,选择"C动作",即为C脚本。点击即可进入C动作脚本编辑窗口,如图4所示。

这即是C脚本的入口之一:事件任务入口。

图3 按钮动作

图4 动作脚本

在图4所示的脚本编辑窗口中,编写合适的C代码。本例程实现的功能比较简单,当按钮被点击后,即触发了按钮的事件响应动作,完成以下任务:

1、 通过函数GetTagDouble读取内部变量"temp1"的当前值,并赋值给变量i(由于"temp1"定义为32为浮点数,因此,这里局部变量i声明为double型);

2、 i自增1;

3、 当i>10时,令i=0。该代码的目的是限制"temp1"的值,不让其无限制的增大;

4、 通过函数SetTagDouble将当前i值赋值给内部变量"temp1",即实现每点击一次按钮,"temp1"自增1的功能。

代码比较简单,不做详细介绍。其中GetTagDouble和SetTagDouble时WinCC的内部函数,其具体用法,留待以后集中讨论。

通过C脚本实现的事件响应动作,编译无误后,其符号为带字母C的绿色闪电,如图5所示。

图5 按钮的C动作

四、小结

我们知道,一个动作要被执行,必须有相应的触发器。本例中的按钮事件动作的触发器即为鼠标的点击动作,鼠标点击按钮一次,动作被触发一次,动作内的代码就会执行一次;再次点击,则再次执行。

引文:博途工控人平时在哪里技术交流博途工控人社群

驼子以为,要想理解脚本动作的执行过程,从事件任务响应开始学起是个不错的选择,它无需我们额外的分配触发器,却能很清晰的捋顺动作的执行过程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/302856.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【MATLAB第89期】基于MATLAB的差分自回归滑动平均模型ARIMA时间序列预测模型含预测未来

【MATLAB第89期】基于MATLAB的差分自回归滑动平均模型ARIMA时间序列预测模型含预测未来 往期文章 【MATLAB第82期】基于MATLAB的季节性差分自回归滑动平均模型SARIMA时间序列预测模型含预测未来 一、模型介绍 1、模型简介 差分自回归移动平均模型(Autoregressiv…

外包做了1个月,技术退步一大半了。。。

先说一下自己的情况,本科生,20年通过校招进入深圳某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

【mysql】—— 事务

目录 (一)前言 (二)事务的理解 1、为什么会出现事务 2、什么是事务? 3、事务的版本支持 4、事务提交方式 (三)事务常见操作方式 1、正常演示 - 证明事务的开始与回滚 2、非正常演示…

CSAPP cache lab - Optimizing Matrix Transpose

CSAPP cache lab part B 矩阵转置 矩阵转置是一种操作,它将矩阵的行和列互换位置,即将原始矩阵的行变为转置矩阵的列,将原始矩阵的列变为转置矩阵的行。转置操作可以通过改变矩阵的布局来方便地进行某些计算和分析。 假设有一个mn的矩阵A&…

Qt读取文件对比:每次获取自定义的长度和使用系统的API,耗时对比

0. 前言 在编程过程中,经常遇到文件读写操作,太频繁了。每次也都写的不一样。 突发奇想,想测试下几种不同的读取文件的效率。 测试以下三种方式读取文件效率: 自定义读取文件耗时使用QFile类API读取文件耗时使用QTextStream类AP…

【BIAI】Lecture 5 - Auditory system

Lecture 5 - Auditory system 专业术语 auditory system 听觉系统 pinna 耳廓 auditory canal 耳道 tympanic membrane 鼓膜 cochlea 耳蜗 ossicles 听骨 auditory-vestibular nerve 前庭神经 oval window 椭圆窗 attenuation reflex 衰减反射 tensor tympani muscle 鼓膜张肌…

那些年听烂了的名词之“高可用“

那些年听烂了的名词之"高可用" 引言什么是可用性 ?哪些风险会影响系统的可用性 ?如何应对这些风险,从而确保系统的可用性 ?Phase: 设计做好容灾和多活处理做好容错设计做好资源隔离做好扩展性设计做好数据一致性处理 Phase: 预防做…

适配器Adapters

1.适配器作用 主要是对底层的东西进行改造 2.适配器种类:容器适配器,迭代器适配器,仿函数适配器 2.1容器适配器: stack,queue他们两的底层结构都为deque,deque有好多功能,而stack&#x…

如何将支持标准可观测性协议的中间件快速接入观测

前言 作为一名云原生工程师,如何将支持标准可观测性协议的中间件快速接入观测云呢?答案是只需要三步。 首先,需要确定您要观测的中间件类型。支持标准可观测性协议中间件可通过观测云的 DataKit 采集到中间件的关键指标。有些中间件自带可观…

文件系统与日志分析

一,文件系统 (一)inode 和block概述 1,文件数据包括元信息与实际数据 2,文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储512字节 3,block (块) 连续的八个扇区组成一…

Java常用类---包装类

包装类 包装类简介 Java语言是典型的面向对象编程语言,但是其中的8种基本数据类型并不支持面向对象编程,基本类型数据不具备"对象"的特性,即:没有携带属性以及没有方法可以调用。 为了解决上述问题,java为…

【Dubbo3高级特性】「微服务云原生架构」带你从零基础认识搭建公司内部服务用户中心体系(实战指南-01)

基础服务-用户中心 什么是用户中心? 用户中心,在我们的概念里面范围比较的广泛,包含了用户信息、账号信息以及租户信息的管理控制,在我们的总体设计里面,如果设计的边界较为紧密,也可以将权限的部分功能R…

poium测试库介绍

poium测试库前身为selenium-page-objects测试库,我在以前的文章中也有介绍过:这可能是最简单的Page Object库,项目的核心是基于Page Objects实现元素定位的封装。该项目由我个人在维护,目前在公司项目中已经得到的应用。 ### poium的优势 Pa…

Unity中URP下使用屏幕坐标采样深度图

文章目录 前言一、Unity使用了ComputeScreenPos函数得到屏幕坐标1、 我们来看一下这个函数干了什么2、我们看一下该函数实现该结果的意义 二、在Shader中使用(法一)1、在Varying结构体中2、在顶点着色器中3、在片元着色器中 三、在Shader中使用&#xff…

微信小程序实战-01翻页时钟-1

文章目录 前言需求分析功能设计界面设计界面结构设计界面样式设计 逻辑设计 单页功能实现运行结果 前言 我经常在手机上用的一款app有一个功能是翻页时钟,基于之前学习的小程序相关的基础内容,我打算在微信小程序中也设计一个翻页时钟功能,J…

高校教务系统登录页面JS分析——河北农业大学教务系统

高校教务系统密码加密逻辑及JS逆向 本文将介绍高校教务系统的密码加密逻辑以及使用JavaScript进行逆向分析的过程。通过本文,你将了解到密码加密的基本概念、常用加密算法以及如何通过逆向分析来破解密码。 本文仅供交流学习,勿用于非法用途。 一、密码加…

如何创建容器搭建节点

1.注册Discord账号 https://discord.com/这是登录网址: https://discord.com/ 2.点击startnow注册,用discord注册或者邮箱注册都可,然后登录tickhosting Tick Hosting这是登录网址:Tick Hosting 3.创建servers 4.点击你创建的servers,按照图中步骤进行

J2EE实验二

实验二 Struts2核心组件的应用 一、目的与任务 目的:学习Action中的动态方法调用和Action对Servlet API的三种访问方法,学习OGNL表达式和Struts2标签的使用 任务:实现基于Struts2的登录和注册系统,系统中练习使用Action、OGNL表…

SpringBoot项目处理 多数据源问题(把本地库数据 推送 到另外一个平台的库)

一、需求梳理 把我方数据库的表中数据 ----------> 推送到第三方的数据库 相当于库对库的数据插入, 但是需要的是用代码的方式实现; 二、解决思维 (1) 首先,平台与平台之间的数据库对接; 处理点1: 字段转换 (库表之间的数据字段不一致问题) 解决方式: 挨个字段的对应,如…