在工业自动化领域,PLC与称重设备的通讯一直是产线集成的关键环节。这次我们要解决的是西门子S7-200 SMART系列PLC与托利多(METTLER TOLEDO)电子秤通过自由口协议实现稳定通讯的实际问题。
典型的应用场景包括:
传统方案采用模拟量信号传输存在抗干扰差、精度损失等问题,而基于RS232/485的数字通讯能实现全量程高精度数据采集。但不同厂商设备的协议差异导致开发复杂度陡增,这正是本实战项目的价值所在。
关键细节:当通讯距离超过15米时,必须使用RS485接口并添加终端电阻(120Ω)。实测中发现,未接终端电阻会导致通讯丢包率上升30%以上。
plaintext复制PLC(RS485) 电子秤(RS485)
3(A+) ----------- A(+)
8(B-) ----------- B(-)
GND ----------- GND
常见错误排查:
电子秤默认输出ASCII字符串,典型数据帧示例:
python复制ST,GS 23.45 kg\r\n
通过S7-200 SMART编程软件进行以下关键设置:
端口配置:
接收指令参数:
ladder复制RCV VB100, 0
ladder复制Network 1: 初始化
SM0.1
|----[MOV_B 16#09, SMB30] // 自由口模式设置
|----[MOV_W +100, SMW90] // 接收超时100ms
|----[MOV_B 16#B0, SMB87] // 启用接收|结束符检测
Network 2: 数据接收
SM0.0
|----[RCV VB100, 0]
Network 3: 数据处理
SM0.0
|----[LD SM86.6] // 接收完成标志
|----[MOV_DW &VB101, VD200] // 数据转存
重量值提取需要处理ASCII到实数的转换:
ladder复制// 示例:将"23.45"转换为实数
LD VB101 // '2'
ITD // 转换为双整数
DTR // 转换为实数
MOVR VD110, VD200 // 临时存储
LD VB102 // '3'
ITD
DTR
MOVR VD114, VD204
DIVR 10.0, VD204
+R VD200, VD204 // 累加部分和
RCV VB100, 0| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 接收数据乱码 | 波特率不匹配 | 检查双方通讯参数一致性 |
| 间歇性通讯中断 | 线路干扰/终端电阻缺失 | 添加磁环/终端电阻 |
| 数据接收不完整 | 接收超时设置过短 | 调整SMW90为更大值(如500ms) |
ladder复制MOV_B 16#B1, SMB87 // 启用起始符检测
MOV_B 16#53, SMB88 // 起始符'S'的ASCII码
增加异或校验算法:
ladder复制// 计算VB101-VB105的异或校验
LD 0
XORB VB101, AC0
XORB VB102, AC0
XORB VB103, AC0
XORB VB104, AC0
XORB VB105, AC0
MOVB AC0, VB106 // 校验位存储
某饲料厂配料系统实施数据:
实际接线注意事项:
这套方案经过三年现场验证,在粉尘、潮湿等恶劣环境下仍保持稳定运行。关键点在于严格遵循本文的硬件配置规范和程序容错设计。对于需要更高实时性的场景,可考虑改用PROFIBUS-DP通讯(需增加EM277模块),但成本会上升约40%。