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

三菱FX3U利用RS指令实现Modbus RTU通信缩略图



在了解了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中。



六、程序整体浏览



📝 作者声明
本文由 Modbus中文网技术团队 原创撰写,内容基于实际项目案例与技术文档,力求为读者提供准确、实用的参考信息。

2026年补充:FX5U与R系列PLC的Modbus通信方案对比

随着三菱FX3U逐步向FX5U和R系列换代,Modbus RTU通信的实现方式也有了变化:

PLC型号 Modbus实现方式 优势
FX3U + 485-BD RS指令(手动编程) 灵活,适合定制化项目
FX5U 内置485 MODBUS RTU专用指令 编程简化50%,调试效率高
R系列 C24串口模块 支持双通道独立通信

如果您正在做PLC型号迁移,modbus.cn提供三菱全系列Modbus通信技术文档,包括详细接线图和示例程序,欢迎查阅。

相关文章:PLC技术专栏 | 西门子PLC RS485通信 | 西门子1200 S7通讯

技术术语(共 8 个)—— 点击展开
Modbus RTU基于串行链路的Modbus协议,使用二进制编码和CRC校验
RS485工业常用的差分串行通信标准,支持多点通信
寄存器Modbus 寄存器存储数据单元,分线圈/离散输入/保持/输入寄存器四类
CRC校验循环冗余校验,用于检测数据传输中的错误
PLC可编程逻辑控制器,工业自动化控制的核心设备
波特率串行通信每秒传输符号数,Modbus RTU常用9600/19200
串口计算机与外部设备进行串行通信的物理接口
保持寄存器Modbus 16位可读写数据,地址从40001开始
来源/工具信息 —— 点击展开
来源 Modbus.cn — China's leading Modbus communication protocol technical community 分类 工业物联网 字数 2505 字 · 阅读约 7 分钟 更新 2026-06-26 永久链接 https://www.modbus.cn/en/24833.html
推荐工具:Modbus调试助手 微信小程序
Modbus中文网官方推出的Modbus调试工具,支持 Modbus RTU/TCP 实时通信调试、寄存器读写、线圈控制、数据监控和报文分析。 无需安装,微信搜索「Modbus调试助手」即可使用。 电脑端入口:https://www.modbus.cn/modbustool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 modbus.cn
把这篇资料用于真实项目?

进入工具中心进行报文解析、CRC 校验和设备调试,或提交需求获取选型与接入建议。

工程师会员

把这篇文章变成可执行的调试资料

开通后可使用高级报文解析、资料包下载、代码示例、工程案例和优先技术支持,适合真实项目交付。

高级工具不限次
资料包与代码包
完整工程案例库
优先技术支持入口

One response to “三菱FX3U利用RS指令实现Modbus RTU通信

发表回复

Your email address will not be published. 必填项已用 * 标注