组态王与串口继电器的通信控制,核心是硬件匹配 + Modbus RTU 协议配置 + 变量映射 + 界面联动,最常用且稳定的是 RS-232/RS-485+Modbus RTU 方案,以下是可直接落地的步骤与要点。
硬件与协议确认
RS-232:PC 串口(或 USB 转 232)→ 继电器模块 232 口,GND 必须共地。
RS-485:PC 的 USB 转 485 模块 → 继电器 A/B 线,多模块时手牵手拓扑,末端加 120Ω 终端电阻。
串口继电器模块需支持Modbus RTU(主流工业模块标配),明确其从站地址、线圈地址(如 10001 对应 CH1)、通信参数(常见 9600-8-N-1)。
接口选择:短距(≤5m)用 RS-232;长距 / 多设备用 RS-485,需注意 A/B 线极性与终端电阻。
硬件连接:
工具准备
打开组态王,新建工程并命名。
左侧 “工程浏览器→设备→COMx(实际串口号)”,右键 “新建”,选择 “通用串口父设备”,设置波特率、数据位、停止位、校验位与继电器一致(如 9600,8,1,N),流控设为无。
右键 “通用串口父设备”→“添加子设备”,选择 “莫迪康→Modbus RTU→串口”。
填写逻辑名称(如 Relay_8CH),选择对应串口号,输入继电器的从站地址(如默认 1),其余默认完成配置。
左侧 “数据库→数据词典”,新建 IO 离散变量(控制用)与 IO 离散变量(状态反馈用)。
| 变量用途 | 变量名 | 数据类型 | 连接设备 | 寄存器地址 | 读写属性 |
|---|
| 控制 CH1 | Relay_CH1 | IO 离散 | Relay_8CH | 10001(线圈) | 读写 |
| 反馈 CH1 | Relay_CH1_ST | IO 离散 | Relay_8CH | 00001(输入) | 只读 |
地址规则:线圈(控制)用 1xxxx,离散输入(反馈)用 0xxxx,严格匹配模块说明书。
打开 “画面开发系统”,添加按钮、指示灯等控件。
按钮动作:双击按钮→“弹起时”→“命令语言”,写入控制脚本:Relay_CH1=1;(闭合)或Relay_CH1=0;(断开)。
指示灯绑定:双击指示灯→“填充颜色”→表达式设为Relay_CH1_ST,用颜色区分通断状态。
批量控制(可选):用 “写入多个线圈” 功能码 0F,变量地址设为 10001,数量为通道数,实现多继电器同步控制。
用串口助手模拟主站,发送 05 功能码指令(如 01 05 03 E8 FF 00 8C 3A),验证继电器动作与反馈,排除硬件与协议问题。
组态王中启动运行系统,点击按钮观察变量值与指示灯状态,用 Modbus Poll 监听串口指令,确认收发正常。
若通信失败,按下列优先级排查:
| 故障现象 | 可能原因 | 处理方案 |
|---|
| 无通信响应 | 地址 / 波特率 / 校验位不匹配 | 核对参数,用串口助手读模块 ID |
| 控制无效 | 线圈地址错误 | 查说明书,如 10001 对应 CH1 |
| 485 通信不稳 | A/B 线接反 / 无终端电阻 | 交换 A/B,末端加 120Ω 电阻 |
| 变量值不变 | 读写属性错误 | 控制变量设为 “读写”,反馈设为 “只读” |
ASCII 指令方案(非 Modbus 模块)
关键注意事项
共地与屏蔽:RS-232/485 必须共 GND,485 线用双绞屏蔽线,屏蔽层单端接地。
地址唯一性:多模块时从站地址(1-247)不可重复,避免指令冲突。
超时与重试:在组态王设备属性中设置通信超时(如 1000ms)与重试次数(如 3 次),提升稳定性。
确认继电器模块 Modbus 地址表与通信参数。
按 RS-232/485 规范接线,共 GND,485 加终端电阻。
组态王配置串口父设备→添加 Modbus RTU 子设备→创建控制 / 反馈变量。
界面控件绑定变量与脚本,用串口助手先验证硬件,再联调组态王。