1. 项目背景与核心需求
在工业自动化控制系统中,PLC与温控器的通讯一直是现场实施的关键环节。台达DVP ES2系列作为经济型PLC的代表,与欧姆龙E5CC这类高性价比温控器的组合,在中小型温控系统中应用广泛。但两种设备采用不同的通讯协议(台达常用Modbus RTU,欧姆龙则支持其专属的Omron Host Link协议),这使得数据交互成为项目实施中的技术难点。
这个项目要解决的核心问题是:如何在不增加额外硬件成本(如通讯转换模块)的前提下,通过串行通讯实现DVP ES2 PLC对E5CC温控器的参数读写控制。这涉及到协议转换、数据地址映射、通讯异常处理等关键技术点,也是大多数自动化工程师在现场会遇到的典型问题。
2. 硬件连接与通讯基础
2.1 物理层连接方案
台达DVP ES2的通讯端口采用RS485接口(2W制式),而欧姆龙E5CC标配的是RS485(2W或4W可选)。在硬件连接上需要注意:
- 使用屏蔽双绞线连接,线径建议0.5mm²以上
- 终端电阻设置:在总线最远端的设备上启用120Ω终端电阻
- 接线极性:DA(+)对S+,DB(-)对S-,严禁反接
- 接地处理:屏蔽层单端接地(通常在PLC侧接地)
重要提示:ES2的通讯端口与电源端子间距较近,接线时需特别注意避免短路。曾遇到过因金属屑导致端口短路的案例,会造成PLC通讯模块损坏。
2.2 通讯参数匹配
两种设备的默认通讯参数存在差异,需要统一设置:
| 参数 | 台达DVP ES2默认值 | 欧姆龙E5CC默认值 | 推荐设置值 |
|---|---|---|---|
| 波特率 | 9600 bps | 9600 bps | 9600 bps |
| 数据位 | 8位 | 7位 | 8位 |
| 停止位 | 1位 | 2位 | 1位 |
| 校验方式 | 无校验 | 偶校验 | 无校验 |
这里有个关键矛盾:E5CC默认是7位数据位+偶校验,而台达PLC习惯用8位无校验。实测发现,将E5CC改为8位无校验后通讯更稳定。修改方法是通过温控器面板进入"通信设置"菜单(参数地址1900),将数据长度设为"8",校验位设为"无"。
3. 协议转换实现方案
3.1 Modbus RTU与Host Link协议差异分析
台达PLC原生支持Modbus RTU协议,而欧姆龙设备使用Host Link协议,两种协议的主要区别:
-
帧结构差异:
- Modbus RTU:设备地址 + 功能码 + 数据 + CRC校验
- Host Link:起始符 + 设备号 + 命令码 + 数据 + FCS校验 + 结束符
-
数据表示方式:
- Modbus使用16进制直接表示
- Host Link采用ASCII字符形式传输
-
地址编码规则:
- Modbus有固定的寄存器地址范围(如4xxxx保持寄存器)
- Host Link采用内存区符号+地址偏移的方式
3.2 台达PLC的协议转换实现
在DVP ES2上需要通过梯形图程序实现协议转换,核心步骤:
- 构建Host Link命令帧:
- 使用MOV指令组合帧头"@"
- 通过ASCII转换指令将设备号转为字符
- 拼接命令码(如RR为读取,WR为写入)
st复制MOV K64 D100 // '@'符号
MOV K49 D101 // 设备号'1'
MOV K82 D102 // 'R'
MOV K82 D103 // 'R'
- 添加FCS校验计算:
FCS是Host Link协议的特有校验方式,计算方法是帧中从设备号到数据结尾所有字节的异或值。
st复制LD M0
FCS D100 D110 K10 // 计算D100-D109的FCS校验
- 串口发送处理:
使用RS指令发送数据时,需要注意Host Link要求以回车符(0D)结束。
st复制LD M8000
RS D100 K12 D200 K0
4. 温控器参数地址映射
4.1 E5CC关键参数地址表
欧姆龙E5CC的常用参数在Host Link协议中的内存地址:
| 参数名称 | 内存地址 | 数据类型 | 读写权限 |
|---|---|---|---|
| PV当前值 | 0000 | 16位有符 | 只读 |
| SV设定值 | 0001 | 16位有符 | 读写 |
| 输出功率 | 0002 | 16位无符 | 只读 |
| 报警设定值1 | 0100 | 16位有符 | 读写 |
| PID-P参数 | 0200 | 16位无符 | 读写 |
4.2 地址转换技巧
在Modbus映射时,需要特别注意数据类型的转换:
- 温度值处理:
E5CC的温度值实际存储值=真实值×10。例如SV设为50.0℃,实际读取的寄存器值为500。
st复制LD M0
DIV D200 K10 D210 // 将读取值除以10得到实际温度
- 位状态解析:
报警状态等位信息通常打包在一个寄存器中,需要用位操作指令处理。
st复制LD M0
BON D220 K0 M100 // 检测D220的第0位→M100
5. 通讯异常处理方案
5.1 常见故障代码及对策
| 故障现象 | 可能原因 | 解决方案 |
|---|---|---|
| PLC报错ERR 109 | 通讯超时 | 检查接线,调整通讯超时参数D1120 |
| 温控器无响应 | 设备地址不匹配 | 确认E5CC的通信设备号设置 |
| 数据乱码 | 波特率不一致 | 用示波器检测实际通讯波形 |
| 偶发通讯中断 | 线路干扰 | 增加磁环,缩短通讯距离 |
5.2 程序级容错设计
- 重试机制:
在发送失败时自动重试,但需限制最大重试次数(建议3次)。
st复制LD M0
OUT T0 K50 // 50ms重试间隔
LD T0
INC D300 // 重试计数器
- 心跳检测:
定期读取PV值作为通讯状态检测。
st复制LD M8013 // 1秒时钟
MOV K0 D120 // 心跳计数器清零
- 超时处理:
当超过设定时间无响应时,触发报警输出。
st复制LD M0
OUT T1 K3000 // 3秒超时定时器
LD T1
SET M100 // 通讯故障标志
6. 实际应用案例
6.1 温度控制逻辑实现
以一个简单的加热控制为例,程序流程:
- 读取PV当前温度(地址0000H)
- 比较PV与SV设定值
- 根据差值计算PID输出
- 写入操作量到温控器(地址0002H)
关键程序段:
st复制LD M8000
RS D100 K8 D200 K4 // 读取PV值
LD M10
CMP D200 D210 M20 // 比较PV与SV
LD M21
MOV K500 D220 // 正向输出50.0%
LD M22
MOV K0 D220 // 停止加热
6.2 多段温控实现
通过修改SV值实现多段温度控制:
st复制LD X0
MOV K300 D210 // 第一阶段30.0℃
LD X1
MOV K500 D210 // 第二阶段50.0℃
LD M8000
RS D110 K8 D250 K4 // 写入SV值
7. 调试技巧与心得
-
通讯测试工具推荐:
- 台达PLC可用WPLSoft的"通讯监控"功能
- 欧姆龙侧可用CX-Thermo软件单独测试
-
信号测量要点:
用万用表测量RS485线间电压:- 静态时应为0-0.2V
- 通讯时应有2-5V波动
-
典型问题记录:
- 遇到过因接地不良导致通讯时好时坏的情况,后单独拉接地线解决
- 长距离通讯(超过50米)时,建议降低波特率至4800bps
- 避免将通讯线与动力线平行走线,交叉角度应大于30°
-
参数优化经验:
- 台达PLC的通讯延时参数D1120建议设为50-100ms
- 对于频繁读写的系统,建议采用定时批量读写而非连续读写
- 重要参数应做本地备份,在通讯中断时使用最后有效值
这套方案在某食品烘干设备上稳定运行超过2年,期间经历过生产线改造、设备搬迁等变动,通讯系统始终可靠工作。最关键的是在初期做好线路防护和参数优化,后期维护成本极低。对于需要同时控制多台温控器的场景,可以考虑采用轮询方式,每台设备分配不同的通讯时间片,避免总线冲突。