在三菱 FX5U PLC 中,要将主站(FX5U)的 M 继电器状态通过 MODBUSMODBUS 通信发送到从站,核心是利用 FX5U 的MODBUS 通信功能(需搭配 FX5U 本体集成的 MODBUS-RTU/ASCII 模块或扩展通信模块),通过编程实现 M 状态的读取、数据格式转换及 MODBUSMODBUS 协议帧发送。以下是具体实现步骤,包含硬件配置、软件设置和程序编写:
硬件要求
主站:FX5U PLC(需支持 MODBUS 通信,如本体集成 RS485 端口的型号(如 FX5U-32MR/ES),或扩展 FX5-485-BD 通信板、FX5-232-BD 等);
从站:支持 MODBUS-RTU/ASCII 协议的设备(如另一台 PLC、变频器、传感器等,需确认从站的从站地址、通信波特率、数据位、停止位、校验位,需与主站一致);
通信线路:RS485 双绞线(建议使用屏蔽线,减少干扰),主站与从站的 A/B 端子对应连接(主站 A→从站 A,主站 B→从站 B,GND 可选接)。
先在 GX Works3 中完成 FX5U 的通信参数设置,确保主站与从站的 MODBUS 通信参数匹配:
FX5U 作为 MODBUS 主站,需通过专用指令(如MODRW
) 主动向从站发送数据。核心逻辑:
读取主站需发送的 M 继电器状态(如 M0~M15,共 16 个 bit,对应 2 个字节);
将 M 状态转换为 MODBUS 协议支持的 “寄存器数据”(MODBUS 从站通常通过 “保持寄存器” 或 “离散输出寄存器” 接收 bit 数据);
调用MODRW
指令,将数据通过 MODBUS 协议发送到从站指定地址。
MODBUS 协议中,bit 数据需打包为 “字节” 或 “字”(16bit)传输。例如:
若需发送 M0~M15(16 个 bit),可将其状态存入 FX5U 的 “数据寄存器 D”(如 D0,D0 的 bit0 对应 M0,bit1 对应 M1,…,bit15 对应 M15)。
转换程序(梯形图):
ladder
// 示例:将M0~M15的状态写入D0(每1个扫描周期更新1次)
MOV K0 D0 // 先清空D0,避免残留数据
ORB M0 D0, #0001 // M0状态写入D0的bit0
ORB M1 D0, #0002 // M1状态写入D0的bit1
ORB M2 D0, #0004 // M2状态写入D0的bit2
// ... 以此类推,直到M15写入D0的bit15(ORB M15 D0, #8000)
FX5U 的MODRW
指令用于实现 MODBUS 主站的 “读 / 写操作”,这里需用 “写操作”(将 D0 的数据发送到从站)。
指令 | 操作模式 | 从站地址 | 寄存器类型 | 起始地址 | 数据长度 | 源 / 目标 D | 通信端口 | 完成标志 | 错误标志 |
---|
MODRW | K1 | Kx | Ky | Kz | Kn | Ds | Kp | Mf | Me |
各参数说明:
若从站用 “保持寄存器”(常用,地址 4xxxx),则 Ky=K4;
若从站用 “离散输出寄存器”(地址 0xxxx),则 Ky=K0;
操作模式(K1):K1 = 写操作(发送数据到从站),K0 = 读操作;
从站地址(Kx):从站的 MODBUS 地址(如从站设为 1,则 K1,范围 1~247);
寄存器类型(Ky):根据从站接收数据的寄存器类型选择:
起始地址(Kz):从站接收数据的起始寄存器地址(如从站用保持寄存器 40001,则 Kz=K0,注意:MODBUS 地址 40001 对应指令中的起始地址 0);
数据长度(Kn):发送的寄存器个数(如发送 D0(1 个 16bit 寄存器),则 Kn=K1);
源 D(Ds):FX5U 中存储 M 状态的寄存器(如 D0);
通信端口(Kp):FX5U 的通信端口号(如本体 RS485 端口为 K1,扩展模块端口需查手册);
完成标志(Mf):通信成功后置 1(如 M100,需手动复位);
错误标志(Me):通信失败后置 1(如 M101,需手动复位,可通过 “错误代码寄存器” 查看失败原因)。
ladder
// 触发条件:M000(启动信号,可设为常ON或手动按钮)
LD M000
// MODRW指令:写1个寄存器到从站1的保持寄存器40001,源数据D0,端口1,完成M100,错误M101
MODRW K1 K1 K4 K0 K1 D0 K1 M100 M101
// 通信完成后复位标志(避免重复触发)
LD M100
RST M100 // 复位完成标志
LD M101
RST M101 // 复位错误标志
从站需配置为 “MODBUS 从站模式”,并确认以下参数与主站一致:
从站地址:与主站MODRW
指令中的 “从站地址(Kx)” 一致(如 K1);
通信参数:波特率、数据位、停止位、校验位,与主站 Step1 中的设置完全一致;
接收寄存器地址:与主站MODRW
指令中的 “寄存器类型(Ky)” 和 “起始地址(Kz)” 一致:
通信链路检查
程序调试
若 M100(完成标志)置 1:通信成功,从站已接收数据;
若 M101(错误标志)置 1:查看 “错误代码寄存器”(如 D8120,不同端口对应不同寄存器,查 FX5U 手册),常见错误原因:
错误代码 01:从站无响应(检查从站地址、电源、通信线);
错误代码 03:从站不支持该寄存器类型(确认 Ky 参数是否正确);
错误代码 06:从站拒绝写入(检查从站是否允许写入该寄存器)。
监控 FX5U 的 D0 值:通过 GX Works3 的 “在线监控” 查看 D0 的 bit0~bit15 是否与 M0~M15 状态一致(确保数据转换正确);
监控MODRW
指令的标志位:
从站数据验证
数据更新周期
多从站扩展
干扰防护
通过以上步骤,即可实现 FX5U 主站 M 继电器状态到 MODBUS 从站的稳定通信,适用于设备间的状态同步、远程监控等场景。