
在了解了ModbusCommunication的基本format后,本期将通过仿真的方式实现Modbus RTUCommunicationProtocol在三菱FX3U PLC上的应用。
指令介绍
一、软件准备
●虚拟串口Tools
●Modbus Slave
●凌一PLC仿真器
●GX works2编程软件
二、RS指令
RS指令是在执行串口Communication时用来receive和senddata的指令,使用该指令时需要在PLC上插入FX3U-485-BDCommunication模块。
1)基本format

其中m(发生data的个数)和n(receivedata的个数)需要根据外部设备的messageformat指令,不能随便设置。
2)示例

X0:RS指令触发条件,当X0位ON时RS指令进入send或receivedata的等待状态。
D10:senddata的startregister。
K8:senddata的个数,表示每次sendD10~D17范围内八个register的data。
D20:receivedata的startregister。
K7:receivedata的个数,表示将外部设备返回的data存入D20~D26范围内的七个register里。
三、特殊辅助Relay
1)M8161 data处理位数标志Relay
当M8161=OFF时处理16位data。

当M8161=ON时处理低8位data。

2)M8122 datasend标志Relay
当RS指令处于send或receivedata的等待状态时置位M8122,此时RS指令中senddataregister里的data将会被send给外部设备。datasendComplete后system会自动复位M8122,不能使用程序对其进行复位Operation。

3)M8123 datareceive标志Relay
RS指令将datasendComplete后,进入receivedata状态。此时M8123被置位为ON,并对receive到的data进行处理,data处理Complete后需要将M8123复位为OFF,否则无法receive下一轮的data。

四、Communication parameters设置
Communication parameters既可以在PLCsystem设置中直接设置,也可以通过改变D8120的值进行设置,两种设置方式任选一种即可(本文主要介绍通过D8120进行设置)。
1)直接设置
依次单击参数列表中的“PLC参数”→“PLCsystem设置2” →勾选“进行Communication设置”,然后根据实际需求设置Communication parameters,设置Complete并检查无误后单击“设置End”button保存设置。

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

3)示例
将Communication parameters设置按如下要求进行设置:dataLength为8位、even parity、stop bit为1位、Baud rate为9600、无报头报尾,控制线为无Protocol的RS-485Interface。

Edit程序将参数传入D8120。

五、CRC指令
CRC指令的作用是计算Modbus RTUCommunicationmessage的校验码。

在低8位模式下(M8161=ON),当X0为ON时CRC指令计算出D10~D15六个register产生的效验码,并将Computation result的高八位存入D16,低八位存入D17。
指令运用
一、项目要求
按下X0button读取1号从站保持register40000的值,按下X1将100写入1号从站保持register40002中,Communication parameters与上文示例中保持一致。
二、Edit程序
1)初始化
在初始化程序中需要将M8161设置为处理低8位data模式(M8161=ON),将Communication parameters传入特殊registerD8120以及复位程序中用到的register。

2)添加RS指令
如果每次处理的dataLength一致,那么只需添加一次RS指,并且让RS指令一直处于等待send或receivedata状。
send或receive的dataLength需要根据外部设备的要求进行设置,此处外部设备为Modbus Slave,其messageformat与标准messageformat一致,所以此处send和receive的dataLength分别为K8和K7。

3)Edit读取程序
a)计算读取程序message
可以借助Serial Port DebuggingAssistant自动生成message,其中84 0A为CRC check码。

b)Editmessage传送程序
当检测到X0的上升沿时将生成的message传入用来senddata的registerD10~D15中。
message需要用hexadecimal表示。

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

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

d)senddata
当检测到X0的下降沿时置位M8122Completedata的send。

e)receive并处理读取回来的data
从站返回的data如同所示,通过分析message可得从站返回的data高八位和低八位分别储existenceD23和D24中。


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

4)Edit写入程序
a)Editmessage传送程序
参照读取程序的Edit方式。



b)senddata

c)receivedata
由于不需要receive从站返回的data所以直接复位M8123。

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

二、配置凌一仿真器
配置Complete后需要打开Download口和Open扩展Communication,并让PLC处于运行状态。

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

四、配置Modbus Slave
1) 配置Modbus Slaveconnect
connect参数需要与D8120中的Communication parameters保持一致。

2)配置Modbus Slave从站Function
如图所示设置从站Function,并修改register40000的值。

五、仿真演示
配置好仿真环境后,将程序Download到仿真器中,并进入监视状态。
1)读取演示
单击仿真器中的X0button,观察D31的值是否与Modbus Slave中保持register40000设置的值一致。

2)写入演示
单击仿真器中的X1button,观察100是否被写入到从站的保持register40002中。

六、程序整体浏览

若有收获,就点个赞吧
2026年补充:FX5U与R系列PLC的ModbusCommunication方案对比
随着三菱FX3U逐步向FX5U和R系列换代,Modbus RTUCommunication的实现方式也有了变化:
| PLC型号 | Modbus实现方式 | 优势 |
|---|---|---|
| FX3U + 485-BD | RS指令(手动编程) | 灵活,适合定制化项目 |
| FX5U 内置485 | MODBUS RTU专用指令 | 编程简化50%,debug效率高 |
| R系列 | C24串口模块 | 支持双通道独立Communication |
如果您正在做PLC型号迁移,modbus.cn提供三菱全系列ModbusCommunicationTechnical Docs,包括详细接线图和示例程序,欢迎查阅。
Related文章:PLCTechnology专栏 | 西门子PLC RS485Communication | 西门子1200 S7通讯
ADPRW 指令