S7-200 与台达温控表(如 DTA/DTB/DTC/DTK 系列)通讯不上,90% 是接线、通讯参数、Modbus 协议格式、程序或地址问题。按以下步骤逐项排查,基本都能解决。
一、先确认硬件接线
S7-200 本体 Port0/Port1 为 RS485 接口:
PLC 端口:3 脚 = A(+) / RS485+;8 脚 = B(-) / RS485-
台达温控表:通常标注 S+ / DATA+、S- / DATA-
正确接法:
PLC 3 ↔ 温控 S+
PLC 8 ↔ 温控 S-
常见错误:
A/B 接反(直接不通)
用普通线而非 屏蔽双绞线
总线两端未加 120Ω 终端电阻(长距离 / 干扰大时必加)
多台设备时地址重复
二、通讯参数必须完全一致(一字不差)
台达温控表与 S7-200 Modbus RTU 要求:
协议:Modbus RTU(不是 ASCII)
波特率:9600 / 19200 / 38400(常用 9600)
数据位:8 位
停止位:1 位
校验位:无校验 / 偶校验 / 奇校验(两边必须一样)
从站地址:1~247(不能重复、不能 0)
台达温控表设置(面板)进入参数组:Comm / Communication
Addr:站号(如 1)
Baud:9600
Len:8
Stop:1
Parity:None / Even / Odd
Protocol:RTU(关键!很多默认是 ASCII)
Write En:ON(允许写)
三、S7-200 程序与库设置(必须用 Modbus 主站库)
加载库
Micro/WIN 中:指令库 → Modbus Master(v1.2 以上)
必须 分配库内存区(Library Memory)
初始化 MBUS_CTRL(SM0.0 一直调用)
Mode:1(启用)
Baud:9600
Parity:0=None / 1 = 奇 / 2 = 偶(和温控一致)
Port:0(Port0)/ 1(Port1)
Done:M0.0
Error:VB100(看错误码)
读写 MBUS_MSG(轮询结构,不能同时多条)
当前温度 PV:40003(或 418177)
设定值 SV:40001
注意:S7-200 库直接填 4xxxx 号(不用减 1)
En:上升沿触发
Slave:温控地址(如 1)
RW:0 = 读 / 1 = 写
Addr:Modbus 地址(重点)
Count:寄存器个数
DataPtr:&VB100(数据区)
Done:M0.1
Error:VB101
台达常用地址
四、常见错误代码与原因
Error=1:校验 / 波特率 / 格式不匹配
Error=2:从站无响应(接线 / 地址 / 协议错)
Error=3:CRC 错误(接线干扰 / 接反)
Error=5:从站返回异常码(地址 / 功能码错)
Error=6/8:库内存未分配 / 同时多条 MSG
Error=10:参数非法
五、快速排查步骤(建议顺序)
断电 → 互换 A/B 线 → 上电重试(最有效)
两边都设:9600,8,N,1,RTU,地址 1
程序只保留 1 条 MBUS_MSG(读 PV),简化测试
监控
MBUS_MSG.Error:一直 = 2 → 接线 / 地址 / 协议
偶发 = 3 → 干扰 / 终端电阻
出现 = 5 → 寄存器地址错
用串口调试助手(如 Modbus Poll)直接读温控表:
能读到 → PLC 程序 / 库问题
读不到 → 温控设置 / 接线问题
六、典型坑点
台达默认 ASCII:一定要改成 RTU
校验不匹配:台达常默认偶校验,S7-200 常默认无校验
地址写法:台达手册 4700H = 40281(16 进制转 10 进制 + 40001)
多站轮询:必须用 完成位 Done 触发下一条,不能并行
干扰:通讯线远离动力线,屏蔽层单端接地
七、最简测试程序
plaintext
// Network1 初始化 LD SM0.1 MOVB 1, SMB30 // Port0: 9600,8,N,1 CALL MBUS_CTRL 1, // Mode 9600, // Baud 0, // Parity=0无/1奇/2偶 0, // Port0 M0.0, // Done VB100 // Error // Network2 读当前温度 PV LD M0.0 EU CALL MBUS_MSG 1, // Enable 1, // Slave地址 0, // 读 40003, // PV地址 1, // 1字 &VB100, // 读到VW100 M0.1, VB101
按上面步骤逐项核对,基本都能恢复通讯。





