打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
如何提高PLC编程能力

今天做电力仪表的通讯,走的Modbus协议,采用Prosoft公司的MVI56E-MCMR模块(与ABPLC配套的模块,有些公司不做特殊模块,而委托第三方提供完全兼容的模块,ProSoft Technology就是为AB、施耐德提供这样产品的公司),通过MVI56E-MCMR模块我将电流表的数值读到模块自带的AOI数组中,读到的数据都是存储在这个整型的数组中,我需要将这些数据送入建立的变量中,既然这些仪表要读取的数据都是一样的,我就建个AOI程序块,同时建立一个自定义数据类型,AOI程序的功能是实现将MCMR数组中的数转换成我需要的数据,比如数组中都是整数,有些我需要转存成浮点数,有些需要做一下触发运算,自定义数据类型是为了放转换后的结果。

以上是转换程序,后面有问号的是自定义数据类型中的成员。

以上是自定义数据类型。

本来的程序准备只读数据,只要输入要读仪表在数组中的起始地址,和仪表要存储数据的自定义数据类型的变量名就行了,后来想了想还是把通讯状态字也加进去吧,通讯状态字与仪表数据不在一个连续的区域内,这就要有两个地址,一个仪表数据起始地址,一个通讯状态的地址。

完成上述工作之后,开始建立变量,批量建立变量的方法我曾经在论坛里讲过,http://bbs.gongkong.com/d/201706/718138_1.shtml

变量建完就开始调用程序,填写变量,调用程序的时候,发现一个站点仪表数量太多,有56台,这样要调用56次,觉得太傻,还是想想别的办法。AB1756的PLC与西门子的不同,间接寻址是通过数组实现的,就建立了两个数组,一个是AOI变量的数组,一个是仪表数据存储的数组。为之前建立的变量分配别名,AOI变量的别名是刚才建立的AOI变量数组的元素,数据变量的别名是数据数组的元素。如下图所示,

别名在高级语言中常用,就相当于一个变量两个名字,我刚才做的工作就相当于将变量放在一个数组中,接下来的工作就是使用FOR循环指令了,先建立一个Routine子程序,如下图所示

这三行程序中唯一的变量就是PZ_E4_Com_Index,循环的次数,第一行用这个变量获取仪表数据的起始地址,第二行用来获取通讯状态的起始地址。第三行就是进行循环读取仪表数据,通过PZ_E4_Com_Index不断加一,循环读取每块仪表的数据,接下来的工作就是在FOR指令中执行循环程序,调用FOR指令如下图所示,

在FOR指令中输入Routine的名称,循环次数存储变量,循环初始值,结束值,循环的步间隔。好了万事大吉,上机测试没有问题。

跟大家说一下,我是第一次在AB软件中用循环指令,当看到它时我就知道怎么用了,PLC编程都是相通的,只是开发环境换了,深入弄懂一类PLC在学其它的就不难了。

我这也是用AB的PLC做的头一个项目,项目中5台冗余1756,接近四十台1769,电力仪表数据采集也就是一天就干完的活,这类重复性的工作没什么挑战性,难点还是在工艺和逻辑控制方面。



本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
S7-1500数据块-数据块的类型
PLC变量的数据类型总结
【分享】PLC变量数据类型大全
软传感器技术的实现
西门子PLC学习笔记五-(编程语言、数据类型)
C语言知识复习资料
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服