1. 项目背景与核心需求
在工业自动化领域,PLC与称重设备的通讯一直是产线数据采集的关键环节。最近接手的一个食品包装项目,需要实现西门子S7-200 SMART PLC与梅特勒托利多电子天平之间的称重数据实时传输。这种非标通讯的需求在实际项目中很常见,但市面上现成的解决方案往往价格昂贵或者不够灵活。
自由口通讯(Freeport Communication)是西门子PLC特有的一种通讯方式,它允许用户自定义通讯协议,特别适合与第三方设备进行数据交互。相比Modbus等标准协议,自由口通讯的优点是协议完全自主可控,响应速度快,硬件成本低(只需要普通RS485接口)。但缺点也很明显——需要手动处理所有通讯细节,包括报文组装、校验计算、超时重试等机制。
2. 硬件连接与参数配置
2.1 物理接线方案
实际接线时需要注意几个关键点:
- 使用西门子专用的RS485通讯模块(6ES7 288-5CM01-0AA0)
- 天平侧一般提供RS232接口,需要增加RS232转RS485转换器
- 必须采用屏蔽双绞线,屏蔽层单端接地(通常在PLC侧接地)
- 终端电阻根据线路长度决定,超过50米时需要启用
典型的接线示意图:
code复制PLC RS485+ (A) ---- 转换器 ---- 天平 TXD
PLC RS485- (B) ---- 转换器 ---- 天平 RXD
2.2 通讯参数匹配
天平默认通讯参数需要与PLC侧严格一致:
- 波特率:9600(梅特勒天平常用值)
- 数据位:7位
- 停止位:1位
- 校验方式:偶校验
- 流控制:无
在PLC编程软件STEP 7-Micro/WIN SMART中,需要通过SMB30寄存器进行配置:
stl复制MOV_B 16#09, SMB30 // 自由口模式,9600波特,7数据位,偶校验
3. 通讯协议解析与实现
3.1 天平数据格式分析
梅特勒天平的典型数据格式为:
code复制[STX]01[SEP]123.45[SEP]kg[ETX]
其中:
- STX(02H):起始符
- 01:通道号
- SEP(09H):分隔符(Tab键)
- 123.45:重量值
- kg:单位
- ETX(03H):结束符
3.2 PLC接收程序编写
关键程序段采用接收完成中断方式处理:
stl复制// 主程序初始化
MOV_B 16#B0, SMB87 // 启用接收,检测起始结束符
MOV_B 16#02, SMB88 // 起始符STX
MOV_B 16#03, SMB89 // 结束符ETX
MOV_W +20, SMW90 // 接收超时20ms
ATCH INT_0, 23 // 接收完成中断
ENI // 全局中断使能
// 中断程序INT_0
LD SM0.0
MOVB VB100, VB200 // 接收缓冲区转移
RCV VB100, 0 // 重新启用接收
3.3 数据解析算法
重量值提取采用字符串处理指令:
stl复制// 查找第一个分隔符位置
MOV_B 0, VB301
FIND VB100, 16#09, VB301
// 查找第二个分隔符位置
INC_B VB301
FIND VB100, 16#09, VB302
// 提取重量字符串
MID VB100, VB301, VB302-VB301, VB310
// 字符串转实数
STR_R VB310, VD400
4. 异常处理与优化技巧
4.1 常见故障排查
-
无数据接收:
- 检查SMB30配置是否正确
- 用示波器测量RS485信号线
- 确认中断程序是否被触发
-
数据错乱:
- 增加线路滤波器(如磁环)
- 调整SMW90超时时间
- 添加报文CRC校验
-
通讯中断:
- 检查终端电阻阻值(通常120Ω)
- 降低波特率测试
- 增加重试机制
4.2 性能优化方案
- 双缓冲技术:
stl复制// 在中断中切换缓冲区
LD SM0.0
XORB 16#01, VB500 // 缓冲区标志位
MOVB VB500, VB501
JEQ 0, NEXT
MOVB VB100, VB200
JMP CONT
NEXT: MOVB VB100, VB300
CONT: RCV VB100, 0
- 动态超时调整:
stl复制// 根据历史响应时间自动调整
MOVW &VB210, AC0
-I +5, AC0
MOVW AC0, SMW90
- 数据平滑滤波:
stl复制// 移动平均滤波
MOVR VD400, VD410
+R VD420, VD410
/R 2.0, VD410
MOVR VD410, VD420
5. 实际应用案例
在某巧克力包装线上,我们实现了以下增强功能:
- 自动单位转换:
stl复制// 判断单位字段
LPS
AW= VB320, 16#6B67 // "kg"
MOVR VD400, VD408
*R 1000.0, VD408
LPP
LPS
AW= VB320, 16#67 // "g"
MOVR VD400, VD408
LPP
- 稳定检测逻辑:
stl复制// 连续3次读数差<0.1g视为稳定
MOVR VD408, VD500
-R VD502, VD510
ABS VD510
LPS
R<= VD510, 0.1
INCW VW600
LPP
MOVR VD408, VD502
- 生产统计功能:
stl复制// 累计班次产量
LD SM0.5
EU
MOVR VD408, VD600
+R VD602, VD600
MOVR VD600, VD602
这套系统经过半年运行,称重数据准确率达到99.98%,平均响应时间12ms,完全满足产线200包/分钟的高速包装需求。关键点在于严格遵循了以下原则:
- 所有通讯线单独走线槽,与动力线保持30cm以上距离
- PLC程序采用模块化设计,通讯部分独立为子程序
- 重要参数(如超时时间)做成配方可调
- 增加详细的故障日志记录功能
对于需要更高可靠性的场合,建议增加以下改进:
- 采用光纤隔离转换器
- 实现TCP/IP协议网关转发
- 添加称重曲线分析功能
- 与MES系统直接对接