文本显示变量_几千个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,一经查实,立即删除!

相关文章

TabBarController创建及使用方法简介

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

华为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…

结对开发——求最大值

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

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

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

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

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

win10 python 调用模块_python常识系列14--gt;python通过jpype模块调用jar包

前言能坚持一件事,本身就是一种很了不起的才华。一、jpype模块是什么?能够让 python 代码方便地调用 Java 代码的工具二、jpype模块安装安装和其它模块没区别,但是注意模块名 是 jpype1 ,后面有个1pip install jpype1三、jpype模块…

mysql 载入主体时出错_mysql遇到load data导入文件数据出现1290错误的解决方案

错误出现情景在cmd中使用mysql命令,学生信息表添加数据。使用load data方式简单批量导入数据。准备好文本数据: xueshengxinxi.txt 文件 数据之间以tab键进行分割执行 “load data infile 文本数据路径 into table tab_load_data” 弹出错误。#load d…

【原创】Kakfa utils源代码分析(一)

Kafka.utils,顾名思义,就是一个工具套件包,里面的类封装了很多常见的功能实现——说到这里,笔者有一个感触:当初为了阅读Kafka源代码而学习了Scala语言,本以为Kafka的实现会用到很多函数编程(Functional Pr…

redhad yum 安装mysql_redhat7通过yum安装mysql5.7.17教程

rhel/centos系列linux操作系统自身没有mysql的源,需要自行下载安装。本文介绍如何安装mysql5.7.x数据库。第一步:下载源[rootclient ~]# wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm注意:选择mysql57-community-…

codechef Polo the Penguin and the Tree

一般xor 的题目都是用trie解决。 那这道题是在树上的trie; 首先:从root1,遍历树得到1到所有节点的xor 值。 然后对于每个点我们把其插入二进制树中。 对于每一个点查找其二进值异或值最大的数 依次遍历下来。 注意:边的数量开两倍以上,RE很多…

mysql主从和dump_MySQL主从同步--原理及实现(一)

1、什么是mysql主从同步?当master(主)库的数据发生变化的时候,变化会实时的同步到slave(从)库。2、主从同步有什么好处?水平扩展数据库的负载能力。容错,高可用。Failover(失败切换)/High Availability数据备份。3、主从同步的原理…

解密多媒体封装解封装框架

上一篇文章我们搭好了环境并编译出所需的ffmpeg库,本篇我们讨论如何利用ffmpeg提供的API函数进行多媒体文件的解封装(demux)过程。在讲解之前,我们需要了解一些基本的多媒体文件知识,大虾请飘过。 容器格式&#xff1a…

bzoj 3611

和BZOJ消耗站一样&#xff0c;先将那个询问的简图构建出来&#xff0c;然后就是简单的树形DP。 &#xff08;倍增数组开小了&#xff0c;然后就狂WA&#xff0c;自己生成的极限数据深度又没有那么高&#xff0c;链又奇迹般正确&#xff09; 1 #include <cstdio>2 #includ…

vscode添加源文件_VSCode自制的IDE编译多个源文件

文/EdwardVSCode的预定义变量我们上一篇文章中讲述了如何将MinGW工具嵌入到VSCode文本编辑器中&#xff0c;在这个配置的过程中&#xff0c;我们只需要通过修改VSCode生成的“luanch.json”和“task.json”两个JSON文件中的特定字段&#xff0c;就可以实现开发环境的搭建。那么…

mysql+自动还原备份_Mysql 自动备份与恢复

自动备份MySql 5.0有三个方案&#xff1a;备份方案一&#xff1a; 通过 mysqldump命令,直接生成一个完整的 .sql 文件Step 1: 创建一个批处理(说明&#xff1a;root 是mysql默认用户名, aaaaaa 是mysql密码, bugtracker 是数据库名)------------mySql_backup.bat--------------…

Web Service 学习

1. Web services 平台的元素&#xff1a; SOAP (简易对象访问协议) UDDI (通用描述、发现及整合) WSDL (Web services 描述语言)1.1 什么是 SOAP&#xff1f; 基本的 Web services 平台是 XML HTTP。 SOAP 指简易对象访问协议 SOAP 是一种通信协议 SOAP 用于应用程序之间的通信…

mysql事务所_mysql事务

1.事务的ACID属性事务(Database Transaction) &#xff0c;是指作为单个逻辑工作单元执行的一系列操作。事务处理可以确保除非事务性单元内的所有操作都成功完成&#xff0c;否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元&…

Swift 操作符

这里只记录一些swift特殊的运算符 1.swift里面 仅仅进行赋值操作&#xff0c;不再向右边返回左值 2.模运算的操作数可以是小数了 3.Nil Coalescing Operator nil coalescing operator用来判断一个可选值是否有值&#xff0c;如果没有的话就赋予其一个缺省值 注意这里面“&…

netty java_Netty框架学习及第一个Netty应用

编辑推荐:本文来自于csdn,文章主要介绍了Netty的基础&#xff0c;有什么特点&#xff0c;其构成部分是什么&#xff0c;以及相关的应用。1.什么是Netty&#xff1f;Netty是一个利用Java的高级网络的能力&#xff0c;隐藏其背后的复杂性而提供一个易于使用的API的客户端/服务器框…