要实现三菱 FX3U PLC 通过 FX2N-232IF 模块与 RM3544 电阻计的通讯,需通过串口 FX 协议设置、硬件连接和 PLC 程序编写三个关键步骤。以下是详细实现方案:
一、硬件连接与参数匹配
1. 硬件接线(FX2N-232IF ↔ RM3544)
FX2N-232IF 模块的引脚定义(9 针 D-sub)与 RM3544 电阻计的串口接口需按以下方式连接:
FX2N-232IF 引脚 | 功能 | RM3544 引脚 | 功能 |
---|---|---|---|
2(RXD) | 接收数据 | TXD | 发送数据 |
3(TXD) | 发送数据 | RXD | 接收数据 |
5(SG) | 信号地 | GND | 信号地 |
注:需使用交叉线(RXD-TXD 交叉连接),并确保屏蔽层单端接地,减少干扰。
2. 通讯参数统一
RM3544 电阻计与 FX2N-232IF 需设置相同的通讯参数(通过 RM3544 的面板或软件预设):
二、FX2N-232IF 模块参数设置
通过 PLC 程序初始化模块,确保与 RM3544 参数一致。使用FROM/TO
指令写入模块控制寄存器:
初始化程序示例(梯形图指令):
// FX3U与RM3544电阻计通讯程序
// 功能:初始化FX2N-232IF,发送Modbus指令读取电阻值并解析
// 初始化模块(首次上电执行)
LD M8002 // 初始化脉冲
MOV K1 M0 // 触发初始化
// 设置FX2N-232IF参数(模块编号0)
LD M0
TO K0 K0 H0000 K1 // 复位模块
TO K0 K1 H0002 K1 // 波特率9600bps
TO K0 K2 H0000 K1 // 数据格式8N1
RST M0 // 清除初始化标志
// 定时发送读取指令(每1秒读取一次)
LD M8013 // 1秒脉冲
MOV K1 M10 // 触发发送
// 配置Modbus发送帧(读取地址1,寄存器0x0000)
LD M10
MOV K8 D0 // 发送长度8字节
MOV H01 D1 // 从机地址
MOV H03 D2 // 功能码03
MOV H00 D3 // 起始地址高
MOV H00 D4 // 起始地址低
MOV H00 D5 // 长度高
MOV H01 D6 // 长度低
MOV H840A D7 // CRC校验码
// 执行发送接收
RS K0 D1 D0 D11 D10 M11 M12
// K0:模块号; D1:发送首地址; D0:发送长度;
// D11:接收首地址; D10:接收长度; M11:接收完成; M12:错误
// 解析接收数据(成功接收时)
LD M11
MOV D13 D30 // 测量值高8位
MOV D14 D31 // 测量值低8位
MUL D30 K256 D32 // 高8位转换
ADD D32 D31 D33 // 组合16位值(电阻值,单位需转换)
RST M10 // 清除发送标志
RST M11 // 清除接收标志
// 错误处理(通讯失败时)
LD M12
MOV K1 D50 // 错误代码存储
RST M12 // 清除错误标志
三、RM3544 数据读取(Modbus RTU 协议)
RM3544 作为 Modbus 从机,需通过读取保持寄存器指令(0x03) 获取测量值,步骤如下:
1. RM3544 的 Modbus 地址与寄存器定义
2. PLC 发送读取指令(Modbus RTU 帧)
发送帧结构(Hex):[从机地址][功能码][起始寄存器高][起始寄存器低][长度高][长度低][CRC校验高][CRC校验低]
示例:读取地址 1 的寄存器 0x0000,长度 1(1 个寄存器)
3. PLC 程序实现(使用 RS 指令)
通过 FX3U 的RS
指令(串行数据发送接收)完成通讯,需定义发送 / 接收缓冲区:
plaintext
// 寄存器定义 D0: 发送数据长度(字节数) D1-D7: 发送缓冲区(存储Modbus指令帧) D10: 接收数据长度(字节数) D11-D20: 接收缓冲区(存储RM3544返回数据) M10: 发送请求标志(ON时触发发送) M11: 接收完成标志(模块置位) // 发送缓冲区设置 MOV K8 D0 // 发送8字节(Modbus帧长度) MOV H01 D1 // 从机地址=1 MOV H03 D2 // 功能码=03 MOV H00 D3 // 起始寄存器高字节 MOV H00 D4 // 起始寄存器低字节 MOV H00 D5 // 长度高字节 MOV H01 D6 // 长度低字节 MOV H840A D7 // CRC校验码(高低字节) // RS指令配置(端口0,发送缓冲区D1,接收缓冲区D11) M10 ---[RS K0 D1 D0 D11 D10 M11 M12] // K0:模块编号0;D1:发送首地址;D0:发送长度; // D11:接收首地址;D10:接收长度;M11:接收完成;M12:错误标志 // 接收数据解析(当M11=ON时) M11 ---+----[MOV D13 D30] // 接收帧中第3-4字节为测量值(D13=高8位,D14=低8位) | +----[MOV D14 D31] | +----[MUL D30 K256 D32] // 组合为16位数据:(高8位×256)+低8位 | +----[ADD D32 D31 D33] // D33=最终测量值(需根据手册转换单位)
四、关键问题与调试技巧
1. 通讯无响应
2. 数据解析错误
3. 干扰导致通讯不稳定
总结
实现流程为:硬件交叉接线→统一通讯参数→发送 Modbus 读取指令→解析返回数据。核心是确保 Modbus 帧格式正确(尤其是 CRC 校验)和数据解析逻辑匹配 RM3544 的寄存器定义。调试时可先用串口助手验证通讯,再移植到 PLC 程序中,提高效率。