程序员开发实例大全宝库

网站首页 > 编程文章 正文

MCGS触摸屏如何实现批量读取modbus数据的方法?

zazugpt 2024-10-16 18:24:32 编程文章 255 ℃ 0 评论

前两天,在一个QQ群里,有同行的朋友问,在MCGS中如何实现批量读取数据,因为他当时面临设备,通讯协议才是MODBUS RTU,同时厂家说地址不能分开读,必须是连续的。鉴于他提供的消息是能够设置的地方都试过了。为此,我直接告诉通过脚本,批量读取的方案。那么这个方案究竟如何实现?且看我下面慢慢道来。

一、工具

1.modsim:仿真PLC或者第三方设备。

2.MCGS组态软件

3.串口软件:在电脑中生成两不同名称,但互联的串口,COM1和COM2;

二、指令介绍

1.设备函数

!SetDevice(DevName,DevOp,CmdStr)

函数意义: 按照设备名字对设备进行操作

返 回 值: 数值型

= 0,调用正常

= -1,失败

= -2,超时

= 1,设备启动状态

= 3,设备停止状态

参 数: DevName,字符型,设备名

DevOp,数值型,设备操作码

CmdStr,字符串,设备命令,只有当DevOp=6时CmdStr才有意义

DevOp取值范围及相应含义:

= 1,启动设备开始工作

= 2,停止设备的工作

= 3,测试设备的工作状态

= 4,启动设备工作一次

= 5,改变设备的工作周期,CmdStr包含新的工作周期,单位ms

= 6,执行指定的设备命令,CmdStr中包含指定命令的格式

实 例: !SetDevice(OmronPLC,1,"" ),启动设备构件“OmronPLC”开始工作

2.批评读取指令

ReadPV( 寄存器名称, 起始地址,数据类型,数据个数n,数据1 [,返回状态])

3.使用实例

!SetDevice( 设备0,6,"ReadPV(4,10,WUB,5,Data00, 返回值)")表示读取4 区寄存器从地址10 开始的5 个16 位无符号数值,放入MCGS 变量Data00 为起始,连续5 个变量( 即:Data00,Data01,Data02,Data03,Data04) 中,结果存入变量“返回值”中。

三、批量读取modbus数据的实现方法

1、使用串口软件创建两个互联的串口COM1和COM2,如图所示

2、启动仿真PLC工具Modsim,并通过COM1(POTR1)连接,寄存器区域:保持寄存器区,设备地址:1,起始地址:40001,长度:10,将部分寄存器设置为随机数。如图所示

3、MCGS组态软件组态

(1)、在设备窗口中,组态设备及其端口,如图所示

(2)、设置通用串口父设备端口为COM2口,波特率与仿真PLC的端口一直,如图所示

(3)、父设备下的子设备设置,本实例中名称为“设备1”,并设置好设备1的相关参数,如设备地址,采样周期等,详细如下图所示

(4)、在运行策略中创建一个循环策略,并设置循环策略循环时间为1s,如图所示

(5)创建数据标签:Data10~Data14,如图所示

(6)、在循环策略中用脚本编写批量读取指令!SetDevice( 设备1,6,"ReadPV(4,2,WB,5,Data10, )")各参数见前面指令介绍,本函数实现的是将40002寄存器开始5个符号整型数据存放在Data10~Data14中。如图所示

(7)、在用户窗口中创建标签值动态显示画面,并下装运行,效果如图所示

综上所述:MCGS实现批量读取modbus数据的方法就介绍到这里了。

知识分享是一种态度!欢迎读者阅读,并指正!

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表