文本显示变量_几千个IO状态显示.十几分钟搞定实例

工程上常会在一个或者数个界面中对所有IO点监控,很多小伙伴用一一映射的传统方法来实现,在超小型项目中实用性较强,在稍微大一点的项目中实现起来效率低还经常出错。本文旨在分享有价值的实际经验,供小伙伴们参考。

在实现监控前要新建一个模板,每个项目都可以重复使用,熟悉编程的老铁可以在半个小时到就可以建立好模板。

如果不考虑建模板的时间,在西门子博图中操作三到五分钟内就可以建立对数千点IO的监控,效率和准确率比普通一一映射的方法提高几十倍甚至上百倍。

本模板关键要理解多路复用变量、文本列表,和变量的数值更改事件中线性缩放,虽然很常用用法,所以把这一方法的思路建立起来更重要。本文通过西门子精简面板实现这一功能,其他型号的触摸屏也可以用类似思路实现,能支持脚本语言的触摸屏,通过优化后实现效率会更高。

模板建立思路:建立一个下拉列表,可以根据下拉列表选择要监控的IW/QW地址,得到一个中间变量IQ_Address,再通过IW[IQ_Addres]和 QW[IQ_Addres]来获取指定IO地址的状态字,同时根据IQ_Adress变量变化后设置每个显示文本(符号IO域)对应的过程变量。

先来看一下效果,选择不同监控地址:

6a41096add76a7a8352b4a07bc36e1e4.png

监控画面“第一页”

df337f90a0c2d6864fb143c6c152ad1b.png

监控画面“第二页”

话不多说如何建立模板?

一: 需要建立三种关键变量,分别是:

①要监控的IW/QW地址的变量:IQ_Address,并建立“更改数值”的“事件”,分别对变量文本0-文本15进行线性缩放:Y=aX+b,即文本0-15变量的值Y=8*IQ_Address+文本变量编号,按下图方法;

②输入输出状态字:输入状态,输出状态;

③符号IO域的过程变量:文本0-文本15。

9a55f65b6ab5819024e0fea1ce662a37.png

创建IQ_Address变量事件

fa1f767dfd4d492fcd0795070e1f73b9.png

HMI变量

输入输出状态是一个Word型变量,Word可以一次监控16点,当然也可以是DWord型,文本过程变量要设置成32个就可以,以后在大屏上方便使用。

二:需要建立三个文本列表,分别是:

选择:选择要监控对应的IQAddress名称列表

输入:PLC输入的符号地址列表

输出:PLC输出的符号地址列表

94bf9bc31eed67c090878b15dee2a9d2.png

选择-文本列表

三:界面设置:

①复制输入输出各16个圆形,按照下图改变外观属性,第一个圆形的单个位设置为0,第二个圆形的单个位为1,依次类推。

3a61e6f5e819026b79c2406c5ff2aabb.png

图形设置

②复制输入输出各16个符号IO域,按照下图改变外观属性,第一个IO域过程变量设置为0,第二个IO域过程变量设置为1,依次类推。输入的符号IO域的内容文本列表全部选择输入,输出的符号IO域的内容文本列表全部选择输出。

4d6a7349aae9af4b706ae3b5e91f17ac.png

符号IO域设置一

③ 按下图设置符号IO域选择下拉列表。

bde49550b91ac7302e99a5a37064afed.png

符号IO域设置二

至此模板大公告成。后面只需要将PLC中IO变量列表复制到触摸屏的输入/输出文本列表中,前提是注意复制方法,连续的地址一起复制,如I0.0-I3.0,这样在文本列表中对应的值是连续的, I8.0-I11.0也可以一起复制,在粘贴之前将第一个值设置成64,关系要满足文本列表的值=8*字节数+位数,其他品牌的触摸屏操作可能没有这么方便,效率会低一些。如果EXCEL玩得溜的老铁可以先在EXCEL中将文本列表整理出来,再复制到列表中,效率还会大大提高。

c7860b7f06d349472f1c532b7a336bee.png

输入输出-文本列表

有网友按步骤测试过,在仿真后圆形显示前八位与后八位反了,解决思路是将高低字节转换,实现方法是将圆形的外观显示对应变量单个位0-7与8-15交换一下;还有刚进入页面时所有文本显示一样,本质上是没有触发线性缩放事件,解决方式是把变量更改中的所有线性缩放拷贝到监控页面的加载事件中,让所有线性线性缩放事件在进入监控页面时执行一次。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

贷款购房 房贷 每月还款额是如何计算出来的? 每月还款额计算步骤/方法

http://jingyan.baidu.com/m/article/0eb457e55f23fc03f1a905e5.html购房和贷款是每个普通百姓都关心的事情。贷款购房最基本的问题当然是琢磨贷款、还贷以及还贷年限与自己每月的那点“杯水车薪”收入之间的关系,怎样让它们门当户对起来,如何对着一张载…

wordl流程图怎么写字_DLG的制作流程图

1)影像自适应预处理及几何成像模型参数计算 对原始影像进行增强处理。 根据卫星影像的各种资料构建其几何成像模型。2)像控点及加密点量测 像控点的像方量测。将外业提供的控制点进行量测,点位的量测精度应尽量达到子像素级。 在卫星影像重叠和覆盖范围内量测一定数…

TabBarController创建及使用方法简介

TabBarController创建及使用方法简介 大致讲解一下TabBarController的创建过程: 首先,我们需要一些视图,如创建UIControllerView类型的view1,view2,view3. 然后,我们需要创建 一个UITabBarController类型的…

python操作sqlite3 导入csv文件_[转载]SQLite 3导入导出成txt或csv操作

平时使用官方提供的sqlite3.exe工具来操作 sqlite的数据库,可以在网上下到。进入管理:sqlite3.exe d:\\test.db //假设数据是 d:\\test.db>.databases //显示所有数据库 和 mysql的 showdatabases;>.tables //显示当前数据库的表格 和 mysql 的show tables…

android人脸识别的背景图_Android 图片人脸识别剪切

场景在开发中我们经常需要对图片以人脸为中心进行剪切并显示,这时就需要下面这个工具了。实现效果实现效果项目参考及引用项目使用将下载的jar 和 .so 文件加入到项目中。API 说明在项目中使用如下API即可:CImageView这是一个继承ImageView的图片控件&am…

华为gre隧道全部跑静态路由

最终实现: 1、pc1能用nat上网ping能pc3 2、pc1能通过gre访问pc2 3、全部用静态路由做,没有用ospf,如果要用ospf,那么两边除了路由器上跑ospf,核心交换机也得用ospf r2配置: acl number 3000 rule 5 deny…

数组与串,串的实现,KMP,BF算法

数组是一种常用的数据结构,高级语言头提供了支持数组的基本操作,而且数组也是构成其他数据结构的重要组成。 数组是N个相同元素的构成的占用一块地址连续的内存单元的有限序列。 数组的任一个元素都可以用在数组的位置来表示。 数组与线性表区别&#xf…

libsvm python_LibSVM for Python 使用

经历手写SVM的惨烈教训(还是太年轻)之后,我决定使用工具箱/第三方库PythonLibSVM是开源的SVM实现,支持C, C, Java,Python , R 和 Matlab 等, 这里选择使用Python版本。安装LibSVM将LibSVM仓库的所有内容放入…

结对开发——求最大值

一、题目: 返回一个整数数组中最大子数组的和。 要求: 1.输入一个整形数组,数组里有正数也有负数。 2.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 3.求所有子数组的和的最大值。要求时间复杂度为O(n)。 二…

浏览器获取设备信息_一条命令获取 IE 浏览器保存网站的账号和密码信息

渗透攻击红队一个专注于红队攻击的公众号大家好,这里是 渗透攻击红队 的第 41 篇文章,本公众号会记录一些我学习红队攻击的复现笔记(由浅到深),不出意外每天一更Powershell内网渗透一直以来都是一个热门话题,试想在一个大型的内网…

__bridge,__bridge_retained,__bridge_transfer

最近遇到类型转换需要添加__bridge等开始不是很理解,后面查询资料才知道在CFObject 与 NSObject 之间转换时,ARC是不能管理Core Foundation object的生命周期。 在CFObject 与 NSObject 之间转换时,需要用到__bridge,__bridge_retained,__bri…

thinkphp5 判断数据是否存在_ThinkPHP 5.1 中间件中判断要访问的操作是否存在

ThinkPHP 5.1 中间件中判断要访问的操作是否存在ifu25 • 2021 年 01 月 15 日按惯例还是吐槽 ThinkPHP 官方社区极度不友好,提问基本得不到答案,更很少有官方人员回复。ThinPHP 5.1 中间件判断 action 是否存在中间件public function handle($request, …

NodeJS 学习记录

一、环境 1. 操作系统:win7, 32位 2. nodejs版本:v0.12.0 3. npm版本:2.5.1 二、问题 1. npm安装镜像源问题 国外镜像源很慢,国内出名且公开的有淘宝,也有内部未公开的,比如我所在的公司 示例: …

(转) 一步一步学习ASP.NET 5 (四)- ASP.NET MVC 6四大特性

转发:微软MVP 卢建晖 的文章,希望对大家有帮助。原文:http://blog.csdn.net/kinfey/article/details/44459625 编者语 : 昨晚写好的文章居然csdn不审核,这个也难怪人,但自己比较忙没办法。分享继续&#xf…

mysql sql执行过程_MySQL探秘(二):SQL语句执行过程详解

昔日庖丁解牛,未见全牛,所赖者是其对牛内部骨架结构的了解,对于MySQL亦是如此,只有更加全面地了解SQL语句执行的每个过程,才能更好的进行SQL的设计和优化。 当希望MySQL能够以更高的性能运行查询时,最好的办…

Java——容器(泛型)

【泛型】 起因&#xff1a;JDK1.4之前类型不明确<1>装入集合的类型都被当做Object对待&#xff0c;从而失去自己的实际类型。<2>从集合中取出时往往需要转型&#xff0c;效率低&#xff0c;且很容易出错。解决办法&#xff1a;<1>在定义集合的时候同时定义集…

quartz mysql 初始化_quartz scheduler 从数据库初始化

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航&#xff0c;为用户…

mysql group by 慢_mysql“group by”查询非常慢

我在一个有大约100k记录的表中有这个查询,它运行得很慢(3-4s),当我取出组时它更快(少于0.5s).我很想知道如何解决这个问题&#xff1a;SELECT msg.id,msg.thread_id,msg.senderid,msg.recipientid,from_user.username AS from_name,to_user.username AS to_nameFROM msgtable A…

拦截QT关闭窗口的CloseEvent

QDialog类下有一个虚函数 void QDialog::closeEvent ( QCloseEvent * e ) [virtual protected] 通过实现closeEvent函数&#xff0c;就可以以对关闭窗口消息进行拦截&#xff0c;比如程序还没有完成工作时&#xff0c;可以弹出警告窗口&#xff0c;即使用户确认退出操作…

mysql8.0本机登录要1秒_Mysql8.0的登录大坑……(忘记登录密码也可以这么搞)

关于安装和使用就不说了&#xff0c;属于基本操作了&#xff1b;我来重点记录一下关于使用前&#xff0c;使用navicat登录的时候报错&#xff0c;1130和2059查看安装后随机生成的密码&#xff1a; grep temporary password /var/log/mysqld.log原因&#xff1a;mysql8的密码验证…