剑指工控:【坑】如何心平气和地填坑之拿RSViewSE的报表说事​zhuanlan.zhihu.com

前文提过,在RSViewSE里面做报表,有一种高级玩法,完全不依赖RSViewSE软件,而是通过RSLinx软件编写程序将PLC内的数据直接读取回来,按照一定的时间规律记录到数据库内,这个过程是不需要显示出来的,所以这个程序只需要默默的在后台执行就可以了。当然这个程序可以使用VB、C#、C++等高级语言编写。

其实在工控领域,很多软件支持VBA和VBS脚本,这两种语言都跟VB有很大关系,VB也算是一种上了年纪的编程语言了,微软目前也已经停止了对它的更新,但这不妨碍VB在工程领域内的应用。王老湿学习VB还是跟年龄有关系了。当然,市面上目前已经有逼格高的组态软件把脚本支持到了JS和Python了,看到这两种语言好像一下子让我想到了90后00后,算了,先搞VB吧。

本文主要介绍如何在VB内编写程序实现从AB的PLC内读取数据并记录到数据库。

跟前面一样,我们依然使用ADODB这种方式在vb内与数据库建立连接,此次我们使用ODBC的替代者和继承者OLEDB来作为统一的数据库连接工具。在RSLinx软件的帮助文档里,提供了两种直接访问RSLinx内变量的方法,DDE和OPC,我们平时在做OPC通讯的时候都会创建利益Topic名称,这个名称在RSLinx里面称为OPC/DDE Topic,显然,这个名称OPC通讯和DDE通讯都可以用。而且其帮助文档里面也列出了如何去编写程序使用它。根据王老湿的使用经验,初级选手还是从DDE通讯搞起来比较合适。

OK,闲言少叙,直接开干。

场景模拟:跟以前一样,假设有个水厂,要做一些生产报表的数据,数据包括所有泵站的日供水量,耗电量,运行时间,月供水量,耗电量,运行时间等数据。要求每天记录一次。

1、 新建个RSLogix5000的项目,在其内部创建一些模拟报表的数据。

在Logix5000里面新建变量数组,创建泵站编号命名的数组,使用DINT数据类型,我们先创建50个元素的数组,每个数组的具体内容定义在在Logix5000的程序内完成,创建数组的目的也是在编程读取的时候方便做循环语句。

将其下载到PLC内,本文档使用模拟器模拟PLC,下载完之后直接运行项目。

2、 在RSLinx内新建OPC/DDE通讯的Topic名称并关联到PLC。

3、在SQL Server内新建数据库,用于存储报表数据,新建表,自定义字段和字段类型。

本文档中我们使用安装RSViewSE软件时自带的SQL Server,由于其安装时没有数据库管理器,我们需要自行安装一个免费的数据库管理工具,用于新建和管理数据库内的数据。同理,其实也可以用Access、MySQL等其他关系数据库。

在数据管理工具内新建数据库名为Report

在该数据库下创建名为WaterReport的表,用于存储报表数据,同时创建名为WaterPumpName的表,用于存储泵站编号。

对于泵站编号表里面的内容,我们手动添加进去即可,此表只用来存放泵站的编号,注意,该编号必须与PLC内变量前缀完全相同,因为我们在程序里面会根据该表内的泵站编号自动从PLC内读取相应的数据。这么做的好处就是以后如果泵站有增加的,你只需要在PLC按照规定的要求编写好程序,在此表内添加泵站名称,不需要改变我们的数据记录程序就可以自动记录新的泵站数据了。这个表里面的内容可以手动添加进去,DataStartAddr表示通讯开始读取的地址,DataLength字段表示要读取的数据长度。

4、数据库建好后我们开始编写vb程序读取PLC内的数据

打开VB 6.0 新建标准程序,新版本的VB已经升级到了VisualStudio里面,成了http://VB.Net,程序的空间页面也更好看了。你可以自己去安装尝试一下。

此处我们其实不需要窗体,在VB里面添加个模块就可以了

开始编写程序

1)编写子程序,从RSLinx里面通过DDE方式获取PLC变量数据。关于DDE通讯的程序可以参考RSLinx软件的帮助文档,里面有详细的介绍和例子,你可以直接搬过来用,此处我将例子程序稍微做了一些修改。

2)编写子程序,从数据库获取泵站编号及数据起始地址,定义几个全局的数组

3) 编写子程序,利用从数据库读取的数据地址和数据长度,自动从PLC内读取数据

4)主程序调用子函数

5)测试一下,使用msgbox控件显示读取回来的数据

注意:在最后读取回来的二维数组内,行表示泵站编号,列表示对应的数据,如下表所示arrPumpValue(x,y)

6)将读回来的数据写入数据库

看看效果

7)将VB的程序打包成exe文件,使用windows的计划任务功能定时调用就可以了

记录数据时你可以选择在RSViewSE软件里面创建个事件,按一定的时间规律来执行这个exe文件,实现数据记录,也可以创建的windows的任务计划执行该文件。

缘起则聚

写这篇文章的时候让王老湿想起了当初刚开始学习VB的情景,捂着脸说,王老湿大学选修了VB,挂了,必修了C,也挂了,还选修了数据结构和数据库,大概老师觉得对我们电气的人来说要求有点高,开卷了。好尴尬。一直到王老师参加工作的时候,其实对VB和C还是懵逼的状态。但是架不住王老湿参加工作以后有个好领导呀,正好要做个水厂的项目,正好要做报表,正好用的是RSViewSE,正好以前有人用VB写过,这一切的正好似乎都预示着正好需要我的参与。是的,需要我参与了,就做上位和报表,意外不、刺激不?于是,王老湿找到了以前的学霸同学,要来了VB的课件,开始了启蒙,RSViewSE软件也成了王老湿的启蒙软件,据说还有个启蒙软件叫快播,后来开发这个软件的人被抓了,可见,开发有风险,工作须谨慎呀。后来,后来王老湿就学会了VB、VBA、VBS,愉快又顺利的完成了工作。畅想一下,如果你搞定了如何通过DDE的方式读写RSLinx软件里面的变量,那么你面前是不是打开了一扇通向光明的大门?通过DDE,你不止可以记录数据到数据库用来做报表,大胆联想一下,如果我们把DDE通讯的频率提高一下,每秒读取一次,再找个简单的数据显示的软件,比如Excel,写几个VBA脚本,拉几个窗体,做几个曲线,我的天呢,,一个简单的SCADA界面是不是出来了。如果你觉得自己已经可以了,敢玩高级语言了,我的天呢,拿C#稍微发挥一下,一个稍微上档次的SCADA软件是不是出来了。如果你觉得DDE不够大众化,再稍微学习一下用脚本搭一个OPC Client,从此不止是AB的PLC,你和西门子、施耐德、欧姆龙等PLC的距离是不是就只差一个Kepware软件了。

所以,王老湿写这些文章的本意从来都是抛砖引玉,只要你学会了其中一个,其他的都可以触类旁通,甚至你可以吹牛逼了:组态软件有什么牛逼的呢,还不是从读取PLC的数据开始的。只要你坚持把这个牛逼吹下去,最终会如愿以偿地称为自动化玩家里面IT最牛逼的人。

当然话说回来,该用组态软件还是得用,毕竟人家开发的数据通讯驱动、画面显示、数据处理、web连接、B/S架构、手机连接等功能比自己开发的强多了,最主要的是稳定呀。咱们工控出生的程序草民知道这个功能就已经很了不起了。

免责申明:本机构号所载文章为本号原创或根据网络搜索编辑整理,文章版权归原作者所有。因转载众多,无法找到真正来源,如标错来源,或对于文中所使用的图片,资料,下载链接中所包含的软件,资料等,如有侵权,请跟我们联系协商或删除,谢谢!

本文为剑指工控原创技术类文章,2020年3月31日首次发表于《剑指工控》公众号。

本账号为《剑指工控》官方知乎账号。剑指工控由一群带有工控情结的技术青年组织在一起,他们都是在工控一线的技术达人,如果你是工控一线的工程师,如果你在日常工控工作当中会遇到种种的技术问题,如果你热爱工控技术和工控生活,欢迎加入我们,随手提出你的技术问题会有技术达人第一时间为你解答。可以分享你的工控喜怒哀乐,会有兄弟们跟你产生共鸣。可以获得最新的工控资讯,指明技术和行业路线,做到未雨绸缪。

欢迎大家关注我们的公众号剑指工控(JZGKCHINA),更多的了解我们。

Ps. 进入公众号,“群&社区”菜单中有各个”技术交流学习群“的入口链接,获取小编微信号,添加小编微信并备注“行业+微信名+城市”(格式不对能通过好友验证,但一律不加群)

高校在校生请告知小编,进入“高校自动化专业交流群”~

高校自动化专业群,旨在专业课程学习,专业方向选择,课程设计,毕业设计,就业方向,考研方向,高校杯自动化竞赛等方面进行交流和经验分享~

期待你的加入~

pythonplc曲线_启蒙篇-立志做PLC圈子里的IT大拿 | 利用VB编写程序读取PLC数据相关推荐

  1. 0基础用android做一个excel表查询器(2):编写程序

    0基础用android做一个Excel表查询器(2):编写程序 编完页面下面就该开始写程序了,首先确定一下思路,很简单,将Excel表写入一个List(或数组)里,然后获取Plain Text中写入的 ...

  2. python一个图画两条曲线_烦恼如何用python同一图里画多数据曲线吗?教你6种解法...

    概要: python的matplotlib作图很强大,本文教你用6种不同方式解决将多种数据曲线画到一起. 问题: 今天,老板又要一个数据报表,小明选择用 python来实现."用matplo ...

  3. word怎么根据点画曲线_用word怎么画曲线图 word里如何绘制曲线图

    Word中绘制曲线图的方法如下: 1.通过桌面快捷方式或搜索来打开Word文档. 2.在随后打开的界面左侧点击你想绘制曲线图的文档. 3.在界面上方点击"插入"按钮,在随后打开的界 ...

  4. python爬取微博数据词云_爬虫篇:使用Python动态爬取某大V微博,再用词云分析...

    这是我用大V冯大辉老师最近5000多条微博内容做的词云,大家可以围观一下. 之前也写了一篇用python 来爬取朋友的QQ说说,大家也可以围观一下 好了,开始进入正题:#coding:utf-8 &q ...

  5. 不做etl sql 怎么直接取_不管茄子怎么做,直接下锅是大错!多加1步,茄子更入味,不变色...

    不管茄子怎么做,万不可直接下锅!多加1步,茄子不发黑,更入味 ​哈喽大家好,这里简食记!这一到夏天,就是茄子的天下了!昨天收到大量粉丝的私信,很多人问我茄子怎么做才好吃!不得不说,夏天吃茄子是真的很好 ...

  6. macbook不能进系统 备份数据_外卖骑手,困在系统里;绩效考核与奖惩激励,不能困在数据里...

    近日,一篇<外卖骑手,困在系统里>的文章刷爆网络,讲述了外卖骑手在平台算法支配下的生存困境. 外卖平台之间的竞争非常激烈,为了优化效率.体验和成本,黏住更多的用户.获取更大的市场份额,作为 ...

  7. 下载 线代 薛威_考研数学:选择了深巷子里的数学大神老师,我放心

    对于不打算报班考研的学生最头疼的估计就是数学了,没打算考研的时候就听说宇哥,汤神,而我义无反顾的选择了新东方老师薛威.在大二下学期听了薛老师的高数选修课(蹭的学长的班)就深深喜欢上了这个老师.三遍,已 ...

  8. java 绘画心电图_用java程序读取心电图数据并绘制成图片

    首先了解一下心电图纸的构成,首先背景是由1mm*1mm的小方格填充的.然后每5个小方格组成 一个大方格,像下面图所示就是心电图的一部分展示效果.心电图在上面绘制的时候 ,横向代表时间(s),纵向代表电 ...

  9. python写手机脚本脱离电脑_让Python在Android系统上飞一会儿:第三节 在电脑上编写程序在手机上运行...

    本节目录 1. 一些传统的方法2. 将程序的代码生成二维码图片3. 使用手机扫描生成的二维码,并将其转化为py脚本 前言 最手机上写脚本是一件每场辛苦的事情,虽然SL4A人性化的为我们提供了API快速 ...

  10. Redis总结_实战篇

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 实战篇Redis 开篇导读 1.短信登录 1.1.导入黑马点评项目 1.1.1 .导入SQL 1.1.2.有关当前模型 1. ...

最新文章

  1. 2021-03-31 Matlab simulink 模糊PID在无刷直流电机中的应用
  2. hdu5455(2015沈阳网络赛F题)
  3. neo4j CQL语句
  4. 位,字,字节之间关系及关联知识普及
  5. API函数MessageBox的参数与返回值
  6. vivo NEX 3探索5G手机极致新形态:99.6%瀑布屏让左右无界 未来无限
  7. mongodb的数据怎么导入到hdfs上_如何成为一名合格的数据架构师?
  8. 990. 等式方程的可满足性
  9. [转帖]ESXi 网卡绑定 增加吞吐量的方法
  10. 高三计算机教学计划,高三教学计划三篇
  11. 浅谈数据标准体系建设
  12. 【Windows账户名修改】win10家庭版更改中文账户名
  13. 企业盈利能力五大指标之:净利率
  14. 超微服务器只显示raid0,超微主板怎么创建RAID磁盘阵列 服务器组建RAID0、RAID1图文教程...
  15. 从GitHub火到了CSDN,共计1658页的《Java岗面试核心MCA版》
  16. ICLR 2022论文双盲通过却被爆抄袭:数据算法全部照搬,第二页几乎空白
  17. Java 快速排序,递归排序算法
  18. adobe reader java_请问,如何用JAVA读PDF文件在浏览器中显示,不需要在本地系统中安装Adobe Reader。求java代码...
  19. 明星也有被「老赖」羁绊的困扰?
  20. 西软服务器linux,FOXHIS前台西软服务器端和客户端安装教程.pdf

热门文章

  1. python3 解压7z文件
  2. 小趴菜学习c语音记录第六天
  3. npm list vue显示empty解决办法
  4. 连接mysql超时_数据库连接超时的原因及其解决方法
  5. 前端 | 表格(table)的合并
  6. 雷达波形样式_系统工程与电子技术专栏征稿丨雷达抗干扰技术
  7. ThreadPoolExecutor线程池 —————— 开开开山怪
  8. 医院挂号系统代码_智慧医院中心是怎样做的?分诊叫号系统如何正确使用!
  9. dubbo admin安装中易踩坑点及解决方法
  10. java表白_java实现七夕表白神器