PLC论坛-全力打造可编程控制器专业技术论坛

 找回密码
 注册哦

QQ登录

只需一步,快速开始

微信扫码登录

查看: 52462|回复: 0

[西门子] AB PLC | Micro800系列Modbus RTU通信

[复制链接]
发表于 2024-1-7 21:39:17 | 显示全部楼层 |阅读模式


前言:AB微型控制器Micro800系列,性比价非常高,其自身集成的通信端口更是能力强大,比如嵌入式串行端口,支持CIP串口、Modbus RTU,Modbus ASCII通信协议。今天,我们先介绍一下串口端口作为Modbus RTU主站,与第三方支持标准Modbus协议的设备之间是如何交互数据的。

01

测试环境

1. 控制器:2080-LC20-20QWB

2. 传感器:RS485型温湿度仪表

3. 编程软件:CCW V12.00.00 开发版

4. 操作系统:Windows 7 SP1 旗舰版(64位)

02

情景设定

1. 现有RS485型温湿度传感器,支持标准的Modbus RTU通信协议,通过自带软件设置通信协议:节点地址为2,9600bit/s,数据位8位,停止位1位,无校验。其保持寄存器40001,40002分别用于存储监测到的湿度、温度数据.


2. Micro820自身集成串行端口,支持CIP串行、Modbus RTU、Modbus ASCII通信协议,当使用Modbus RTU时,既可作为主站,也可作为从站,与标准的Modbus RTU设备通信交互数据,本案例,作为Modbus主站读取RS485型温湿度传感器的数据。接线图如下.


03

实现方法

1. 打开CCW (Connected Components Workbench) V12.00.00软件,新建一个项目,选择控制器2080-L20-20QWB,对串行端口设置,详见下图.


2. 使用定时器指令创建一个1秒的脉冲,并用其触发MSG_MODBUS通信指令.


3. 在全局变量里创建MSG_MODBUS通信指令各个参数,如下图:



    Cancel,数据类型BOOLLocalCfg,数据类型MODBUSLOCPARATargetCfg,数据类型MODBUSTARPARAmyData,数据类型MODBUSLOCADDR

4. 这里详细介绍一下MSG_MODBUS通信指令各个引脚参数的含义,MSG_MODBUS不仅支持Micro820,还支持Micro830、Micro850、Micro870控制器 。Micro800控制器每个通道在一次扫描中最多可以处理四个MSG_MODBUS指令.


5. 引脚参数LocalCfg数据类型为MODBUSLOCPARA,结构体形式用于定义本地设备(Micro800)的通信方式每个参数解释如下:

6. 根据LocalCfg参数各个元素的含义本案例需如此配置:


    Channel,配置为2,表示使用的是Micro820自身集成的串行端口TrigerType,配置为0,表示使能IN,每当从0变1,就触发一次MSG指令Cmd,配置为3,表示功能码为03,读取保存寄存器(4xxxx)ElementCnt,配置为2,表示读取保存寄存器的数量为2个

7. 引脚参数TargetCfg数据类型为MODBUSTARPARA,结构体形式用于定义目标设备(Modubs从站)的通信方式,其中Addr为寄存器的地址,采用偏移量方式,而非绝对地址,比如本案例要读取40001,40002两个寄存器,那么Addr配置为1,而非40001.


8. 根据TargetCfg参数各个元素的含义,本案例配置如下:


    Addr,配置为1,表示读取从40001开始的寄存器Node,配置为2,表示从站RS485型温湿度传感器的Modbus地址为2

9. 引脚参数LocalAddr,数据类型为MODBUSLOCADDR,为125个Word数组当主站读取从站数据时,该数组用于存储从从站读取过来的数据;当主站往从站写值时,该数组用于存储写入从站的数据。比如,本文案例,MyData,用于存储从温湿度传感器读取过来的数据.




04

效果测试

1. 程序开发好以后,下载到控制器,在线监控指令执行情况,从下图看出MSG_MODBUS指令执行正确,因为Error错误位为False,ErrorID错误代码为0


2. 看看读取到的温湿度数据


    myData[1]=735,当前湿度数值,对应的寄存器为40001myData[2]=284,当前温度数值,对应的寄存器为40002按照温湿度传感器说明,读取到的数据需要除以10,这样就得到实际的湿度73.5%, 实时温度为28.4℃

3. 再看看录制的测试视频,数据成功读取.


video: https://mp.weixin.qq.com/mp/readtemplate?t=pages/video_player_tmpl&action=mpvideo&auto=0&vid=wxv_1920825347059580929

4. 如果,您需要本文程序作为参考.请加工作室【技术客服微信】:oness918


结语:综上所述,本文通过一个小案例分享了Micro820串行端口作为Modbus RTU主站的通信方法,该方法同样适用于Micro830、Micro850、Micro870自身集成的串口,也同样适用于2080-SERIALISOL插件模块。另外,本文虽然只讲了如何读取从站数据,其实,如何往从站写值,方法一样,只是功能码不同而已。



【AB PLC工作室】

微信公众号ID:abseme



   坚持原创  注重实用



如果本文,对您有一点帮助或启示。

请分享给更多的朋友,对小编以示鼓励,谢谢!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册哦

本版积分规则

QQ|小黑屋|手机版|Archiver|PLC技术网-PLC论坛 ( 粤ICP备17165530号 )|网站地图

GMT+8, 2024-5-9 21:45 , Processed in 0.046325 second(s), 27 queries .

快速回复 返回顶部 返回列表