三菱FX3U利用RS指令实现Modbus RTU通信插图1



在了解了Modbus通信的基本格式后,本期将通过仿真的方式实现Modbus RTU通信协议在三菱FX3U PLC上的应用。

指令介绍

一、软件准备

虚拟串口工具
Modbus Slave
凌一PLC仿真器
GX works2编程软件

二、RS指令

RS指令是在执行串口通信时用来接收和发送数据的指令,使用该指令时需要在PLC上插入FX3U-485-BD通信模块。

1)基本格式

三菱FX3U利用RS指令实现Modbus RTU通信插图3


其中m(发生数据的个数)和n(接收数据的个数)需要根据外部设备的报文格式指令,不能随便设置。

2)示例

三菱FX3U利用RS指令实现Modbus RTU通信插图5



X0:RS指令触发条件,当X0位ON时RS指令进入发送或接收数据的等待状态。
D10:发送数据的起始寄存器。
K8:发送数据的个数,表示每次发送D10~D17范围内八个寄存器的数据。
D20:接收数据的起始寄存器。
K7:接收数据的个数,表示将外部设备返回的数据存入D20~D26范围内的七个寄存器里。

三、特殊辅助继电器

1)M8161 数据处理位数标志继电器
当M8161=OFF时处理16位数据。

三菱FX3U利用RS指令实现Modbus RTU通信插图7


当M8161=ON时处理低8位数据。

三菱FX3U利用RS指令实现Modbus RTU通信插图9



2)M8122 数据发送标志继电器
当RS指令处于发送或接收数据的等待状态时置位M8122,此时RS指令中发送数据寄存器里的数据将会被发送给外部设备。数据发送完成后系统会自动复位M8122,不能使用程序对其进行复位操作。

三菱FX3U利用RS指令实现Modbus RTU通信插图11




3)M8123 数据接收标志继电器
RS指令将数据发送完成后,进入接收数据状态。此时M8123被置位为ON,并对接收到的数据进行处理,数据处理完成后需要将M8123复位为OFF,否则无法接收下一轮的数据。

三菱FX3U利用RS指令实现Modbus RTU通信插图13


四、通信参数设置

通信参数既可以在PLC系统设置中直接设置,也可以通过改变D8120的值进行设置,两种设置方式任选一种即可(本文主要介绍通过D8120进行设置)。

1)直接设置
依次单击参数列表中的“PLC参数”→“PLC系统设置2” →勾选“进行通信设置”,然后根据实际需求设置通信参数,设置完成并检查无误后单击“设置结束”按钮保存设置。

三菱FX3U利用RS指令实现Modbus RTU通信插图15



2)通过D8120设置
根据下表给定的参数并结合实际需求设置b0~b15的值,并转换成十六进制数传送给D8120,实现通信参数设置。

三菱FX3U利用RS指令实现Modbus RTU通信插图17



3)示例
将通信参数设置按如下要求进行设置:数据长度为8位、偶校验、停止位为1位、波特率为9600、无报头报尾,控制线为无协议的RS-485接口。

三菱FX3U利用RS指令实现Modbus RTU通信插图19



编辑程序将参数传入D8120。

三菱FX3U利用RS指令实现Modbus RTU通信插图21


五、CRC指令

CRC指令的作用是计算Modbus RTU通信报文的校验码。

三菱FX3U利用RS指令实现Modbus RTU通信插图23


在低8位模式下(M8161=ON),当X0为ON时CRC指令计算出D10~D15六个寄存器产生的效验码,并将计算结果的高八位存入D16,低八位存入D17。

指令运用

一、项目要求
按下X0按钮读取1号从站保持寄存器40000的值,按下X1将100写入1号从站保持寄存器40002中,通信参数与上文示例中保持一致。

二、编辑程序

1)初始化
在初始化程序中需要将M8161设置为处理低8位数据模式(M8161=ON),将通信参数传入特殊寄存器D8120以及复位程序中用到的寄存器。

三菱FX3U利用RS指令实现Modbus RTU通信插图25



2)添加RS指令
如果每次处理的数据长度一致,那么只需添加一次RS指,并且让RS指令一直处于等待发送或接收数据状。
发送或接收的数据长度需要根据外部设备的要求进行设置,此处外部设备为Modbus Slave,其报文格式与标准报文格式一致,所以此处发送和接收的数据长度分别为K8和K7。

三菱FX3U利用RS指令实现Modbus RTU通信插图27



3)编辑读取程序

a)计算读取程序报文
可以借助串口调试助手自动生成报文,其中84 0A为CRC校验码。

三菱FX3U利用RS指令实现Modbus RTU通信插图29



b)编辑报文传送程序
当检测到X0的上升沿时将生成的报文传入用来发送数据的寄存器D10~D15中。
报文需要用十六进制表示。

三菱FX3U利用RS指令实现Modbus RTU通信插图31



c)添加CRC指令
CRC指令将根据前六个报文计算出校验码,并将结果的高八位存入D16,低八位存入D17。

三菱FX3U利用RS指令实现Modbus RTU通信插图33


由于仿真中CRC指令时好时坏,所以本项目不使用CRC指令,而是将校验码直接传入D16和D17。

三菱FX3U利用RS指令实现Modbus RTU通信插图35



d)发送数据
当检测到X0的下降沿时置位M8122完成数据的发送。

三菱FX3U利用RS指令实现Modbus RTU通信插图37



e)接收并处理读取回来的数据
从站返回的数据如同所示,通过分析报文可得从站返回的数据高八位和低八位分别储存在D23和D24中。

三菱FX3U利用RS指令实现Modbus RTU通信插图39


三菱FX3U利用RS指令实现Modbus RTU通信插图41


通过计算把D23和D24的数据合并,然后存放到D31中。

三菱FX3U利用RS指令实现Modbus RTU通信插图43



4)编辑写入程序

a)编辑报文传送程序
参照读取程序的编辑方式。

三菱FX3U利用RS指令实现Modbus RTU通信插图45


三菱FX3U利用RS指令实现Modbus RTU通信插图47


三菱FX3U利用RS指令实现Modbus RTU通信插图49



b)发送数据

三菱FX3U利用RS指令实现Modbus RTU通信插图51



c)接收数据
由于不需要接收从站返回的数据所以直接复位M8123。

三菱FX3U利用RS指令实现Modbus RTU通信插图53




仿真环境配置

一、添加虚拟串口
需要添加两对虚拟串口,一对用来实现GX works2和凌一PLC仿真器的连接,另一对用实现凌一PLC仿真器和Modbus Slave的连接

三菱FX3U利用RS指令实现Modbus RTU通信插图55



二、配置凌一仿真器
配置完成后需要打开下载口和开启扩展通信,并让PLC处于运行状态。

三菱FX3U利用RS指令实现Modbus RTU通信插图57



三、配置GX works2
其配置方式与连接实体PLC时的方式一致,主要选择端口号。设置完成后单击“通信测试”,测试成功后单击“确定”保存设置,并将程序下载到仿真器中。

三菱FX3U利用RS指令实现Modbus RTU通信插图59



四、配置Modbus Slave

1) 配置Modbus Slave连接
连接参数需要与D8120中的通信参数保持一致。

三菱FX3U利用RS指令实现Modbus RTU通信插图61



2)配置Modbus Slave从站功能
如图所示设置从站功能,并修改寄存器40000的值。

三菱FX3U利用RS指令实现Modbus RTU通信插图63



五、仿真演示

配置好仿真环境后,将程序下载到仿真器中,并进入监视状态。

1)读取演示
单击仿真器中的X0按钮,观察D31的值是否与Modbus Slave中保持寄存器40000设置的值一致。

三菱FX3U利用RS指令实现Modbus RTU通信插图65



2)写入演示
单击仿真器中的X1按钮,观察100是否被写入到从站的保持寄存器40002中。

三菱FX3U利用RS指令实现Modbus RTU通信插图67



六、程序整体浏览

三菱FX3U利用RS指令实现Modbus RTU通信插图69



相关新闻

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

邮箱

cloud@modbus.cn

QQ
QQ
微信
微信
SHARE
TOP