在三菱 FX5U PLC 中配置 MODBUS RTU 从站功能,可实现与其他 MODBUS 主站设备(如 HMI、变频器、传感器)的通信。FX5U 的内置 RS-485 接口(或通过扩展模块)支持 MODBUS RTU 从站模式,以下是详细的配置步骤和程序示例:
一、硬件准备与接线
二、软件配置(GX Works3)
三、程序编写(梯形图)
FX5U 通过专用指令MBUS_SLAVE
实现 MODBUS RTU 从站功能,需定义数据存储区(输入 / 输出寄存器)供主站读写。
FX5U MODBUS RTU从站程序
V1
创建时间:20:37
// MODBUS RTU从站主程序
// 功能:初始化从站并处理主站请求
// 首次扫描初始化
LD SM400 // 常ON
LD SM401 // 首次扫描
AN M100 // 未初始化
= M0 // 触发初始化
// 初始化MODBUS从站
LD M0
CALL "MBUS_SLAVE" // MODBUS从站指令
EN:=1
Mode:=1 // 1=启动从站,0=停止
Addr:=1 // 从站地址(与参数设置一致)
Baud:=3 // 波特率:3=9600bps(1=1200,2=2400,4=19200等)
Parity:=0 // 校验:0=无校验,1=奇校验,2=偶校验
Timeout:=100 // 超时时间(ms)
DBDec:=D100 // 保持寄存器起始地址(主站可读写)
DBSize:=10 // 保持寄存器数量(10个,D100~D109)
XStart:=X0 // 输入点起始地址(主站可读)
XSize:=8 // 输入点数量(X0~X7)
YStart:=Y0 // 输出点起始地址(主站可写)
YSize:=8 // 输出点数量(Y0~Y7)
Error=>D200 // 错误代码存储(0=正常)
Done=>M100 // 初始化完成标志
// 保持寄存器数据更新(示例:将计数器值写入D100)
LD SM400
MOV C0, D100 // 计数器C0的值写入D100,供主站读取
// 处理主站写入的输出点(示例:Y0控制指示灯)
LD Y0
OUT Y10 // 主站写入Y0=1时,Y10(指示灯)亮
四、指令参数说明(MBUS_SLAVE
)
参数 | 含义与设置 |
---|---|
Mode | 1 = 启动从站,0 = 停止(通常设为 1) |
Addr | 从站地址(1~247,需与主站匹配) |
Baud | 波特率代码:1=1200,2=2400,3=9600(默认),4=19200 等 |
Parity | 校验方式:0 = 无校验,1 = 奇校验,2 = 偶校验 |
Timeout | 通信超时时间(ms,建议 100~1000) |
DBDec | 保持寄存器起始地址(如 D100,主站可读写) |
DBSize | 保持寄存器数量(最多 512 个) |
XStart | 输入点起始地址(如 X0,主站可读) |
XSize | 输入点数量(最多 128 点) |
YStart | 输出点起始地址(如 Y0,主站可写) |
YSize | 输出点数量(最多 128 点) |
Error | 错误代码(0 = 正常,非 0 表示故障) |
五、主站读写对应关系
FX5U 从站的地址映射需遵循 MODBUS 协议规范,主站通过以下功能码访问:
主站功能码 | 访问对象 | FX5U 地址范围 | 说明 |
---|---|---|---|
0x01 | 读输出点(Y) | Y0~Y127 | 主站读取 Y 点状态 |
0x02 | 读输入点(X) | X0~X127 | 主站读取 X 点状态(如传感器) |
0x03 | 读保持寄存器 | D100~D611(示例) | 主站读取 D 寄存器数据 |
0x06 | 写单个保持寄存器 | D100~D611(示例) | 主站写入单个 D 寄存器 |
0x10 | 写多个保持寄存器 | D100~D611(示例) | 主站批量写入 D 寄存器 |
六、常见问题与排查
七、总结
FX5U 配置为 MODBUS RTU 从站的核心是:
此方案适用于 FX5U 与 HMI、变频器等设备的低成本通信,实际应用中需根据主站类型调整数据映射关系。