在了解了Modbus通信的基本格式后,本期将通过仿真的方式实现Modbus RTU通信协议在三菱FX3U PLC上的应用。
指令介绍
一、软件准备
虚拟串口工具
Modbus Slave
凌一PLC仿真器
GX works2编程软件
二、RS指令
RS指令是在执行串口通信时用来接收和发送数据的指令,使用该指令时需要在PLC上插入FX3U-485-BD通信模块。
1)基本格式
其中m(发生数据的个数)和n(接收数据的个数)需要根据外部设备的报文格式指令,不能随便设置。
2)示例
X0: RS指令触发条件,当X0位ON时RS指令进入发送或接收数据的等待状态。
D10: 发送数据的起始寄存器。
K8: 发送数据的个数,表示每次发送D10~D17范围内八个寄存器的数据。
D20: 接收数据的起始寄存器。
K7: 接收数据的个数,表示将外部设备返回的数据存入D20~D26范围内的七个寄存器里。
三、特殊辅助继电器
1)M8161 数据处理位数标志继电器
当M8161=OFF时处理16位数据。
当M8161=ON时处理低8位数据。
2)M8122 数据发送标志继电器
当RS指令处于发送或接收数据的等待状态时置位M8122,此时RS指令中发送数据寄存器里的数据将会被发送给外部设备。数据发送完成后系统会自动复位M8122,不能使用程序对其进行复位操作。
3)M8123 数据接收标志继电器
RS指令将数据发送完成后,进入接收数据状态。此时M8123被置位为ON,并对接收到的数据进行处理,数据处理完成后需要将M8123复位为OFF,否则无法接收下一轮的数据。
四、通信参数设置
通信参数既可以在PLC系统设置中直接设置,也可以通过改变D8120的值进行设置,两种设置方式任选一种即可(本文主要介绍通过D8120进行设置)。
1)直接设置
依次单击参数列表中的“PLC参数”→“PLC系统设置2” →勾选“进行通信设置”,然后根据实际需求设置通信参数,设置完成并检查无误后单击“设置结束”按钮保存设置。
2)通过D8120设置
根据下表给定的参数并结合实际需求设置b0~b15的值,并转换成十六进制数传送给D8120,实现通信参数设置。
3)示例
将通信参数设置按如下要求进行设置:数据长度为8位、偶校验、停止位为1位、波特率为9600、无报头报尾,控制线为无协议的RS-485接口。
编辑程序将参数传入D8120。
五、CRC指令
CRC指令的作用是计算Modbus RTU通信报文的校验码。
在低8位模式下(M8161=ON),当X0为ON时CRC指令计算出D10~D15六个寄存器产生的效验码,并将计算结果的高八位存入D16,低八位存入D17。
指令运用
一、项目要求
按下X0按钮读取1号从站保持寄存器40000的值,按下X1将100写入1号从站保持寄存器40002中,通信参数与上文示例中保持一致。
二、编辑程序
1)初始化
在初始化程序中需要将M8161设置为处理低8位数据模式(M8161=ON),将通信参数传入特殊寄存器D8120以及复位程序中用到的寄存器。
2)添加RS指令
如果每次处理的数据长度一致,那么只需添加一次RS指,并且让RS指令一直处于等待发送或接收数据状。
发送或接收的数据长度需要根据外部设备的要求进行设置,此处外部设备为Modbus Slave,其报文格式与标准报文格式一致,所以此处发送和接收的数据长度分别为K8和K7。
3)编辑读取程序
a)计算读取程序报文
可以借助串口调试助手自动生成报文,其中84 0A为CRC校验码。
b)编辑报文传送程序
当检测到X0的上升沿时将生成的报文传入用来发送数据的寄存器D10~D15中。
报文需要用十六进制表示。
c)添加CRC指令
CRC指令将根据前六个报文计算出校验码,并将结果的高八位存入D16,低八位存入D17。
由于仿真中CRC指令时好时坏,所以本项目不使用CRC指令,而是将校验码直接传入D16和D17。
d)发送数据
当检测到X0的下降沿时置位M8122完成数据的发送。
e)接收并处理读取回来的数据
从站返回的数据如同所示,通过分析报文可得从站返回的数据高八位和低八位分别储存在D23和D24中。
通过计算把D23和D24的数据合并,然后存放到D31中。
4)编辑写入程序
a)编辑报文传送程序
参照读取程序的编辑方式。
b)发送数据
c)接收数据
由于不需要接收从站返回的数据所以直接复位M8123。
仿真环境配置
一、添加虚拟串口
需要添加两对虚拟串口,一对用来实现GX works2和凌一PLC仿真器的连接,另一对用实现凌一PLC仿真器和Modbus Slave的连接
二、配置凌一仿真器
配置完成后需要打开下载口和开启扩展通信,并让PLC处于运行状态。
三、配置GX works2
其配置方式与连接实体PLC时的方式一致,主要选择端口号。设置完成后单击“通信测试”,测试成功后单击“确定”保存设置,并将程序下载到仿真器中。
四、配置Modbus Slave
1) 配置Modbus Slave连接
连接参数需要与D8120中的通信参数保持一致。
2)配置Modbus Slave从站功能
如图所示设置从站功能,并修改寄存器40000的值。
五、仿真演示
配置好仿真环境后,将程序下载到仿真器中,并进入监视状态。
1)读取演示
单击仿真器中的X0按钮,观察D31的值是否与Modbus Slave中保持寄存器40000设置的值一致。
2)写入演示
单击仿真器中的X1按钮,观察100是否被写入到从站的保持寄存器40002中。
六、程序整体浏览