1. 项目概述
这台三边封制袋机采用了松下FP-XH系列PLC和威纶通MT8102iE触摸屏的控制方案,实现了前后双伺服送料、485通讯温控以及中英文界面切换等功能。整套系统设计紧凑,最高运行速度可达200张/分钟,在包装机械领域属于中高速机型。
作为在产线上实际运行多年的设备,其程序最大的特点就是——几乎没有注释。这给后续维护带来了不小挑战。经过两周的逆向分析和调试,我梳理出了几个关键的技术实现点,包括伺服控制逻辑、温度通讯协议、多语言切换机制等。下面就从硬件配置开始,逐步拆解这套系统的技术细节。
2. 硬件架构解析
2.1 核心控制器选型
松下FP-XH系列PLC在这个项目中表现出色:
- 晶体管输出型(C30T型号)满足伺服脉冲控制需求
- 内置3个通讯口(COM1/COM2/COM3)分别用于:
- COM1:连接威纶通触摸屏(默认编程口)
- COM2:预留扩展接口
- COM3:Modbus RTU通讯(需特别配置)
- 高速脉冲输出能力(Y0-Y3)支持4轴伺服控制
实际使用中发现,COM3口默认是编程口,要改为485通讯需要:
- 使用FPWIN GR软件修改系统寄存器No.412
- 设置通讯参数:9600bps,8,N,1
- 下载参数后必须断电重启生效
2.2 人机界面配置
威纶通MT8102iE触摸屏的亮点功能:
- 800×480分辨率IPS屏,阳光下可视性好
- 支持多语言切换(通过寄存器控制)
- 内置Modbus RTU主站功能
- 提供Lua脚本接口实现复杂逻辑
一个实用技巧:离线模拟时务必勾选"强制刷新"选项,否则可能出现寄存器状态不同步的问题。这个坑我踩过三次才记住。
2.3 执行机构设计
双伺服送料系统配置要点:
- 前送料伺服:松下MINAS A6系列,750W
- 后送料伺服:同型号,500W
- 均采用差分脉冲控制(CW/CCW模式)
- 电子齿轮比设置为10000:360(对应1脉冲=0.036度)
温控系统采用常州汇邦HB-TC4模块:
- 4通道PID控制
- Modbus地址映射特殊(温度值需×10)
- 典型响应时间<500ms
3. 伺服控制实现细节
3.1 脉冲控制逻辑
PLC程序中的核心控制段:
ladder复制|- [MOV K2000 D200] -| // 设置脉冲频率
|- [PLSY D200 K500 Y0] -| // 启动脉冲输出
关键参数说明:
- D200:脉冲频率(Hz),直接影响送料速度
- K500:单次脉冲数量,决定送料长度
- Y0:脉冲输出端口
调试中发现的问题及解决方案:
初始上电时伺服会出现5ms抖动,经示波器抓包发现是D200寄存器初始值不稳定导致。解决方法是在程序开头增加初始化指令:
[MOV K0 D200]
3.2 运动曲线优化
高速运行时的稳定性问题主要通过调整S型曲线参数解决:
ladder复制|- [MOV K1500 D210] -| // 加速时间(ms)
|- [MOV K300 D211] -| // 减速缓冲量
优化经验:
- 当速度达到200张/分钟时,将D211从300调整为500
- 加速度不宜超过1500ms,否则会影响节拍
- 实际测试表明,缓冲量增加30%可使错位率降低60%
3.3 双伺服同步策略
前后伺服协调工作的关键点:
- 主从模式:前伺服作为主站,后伺服跟踪运行
- 同步信号:通过M50辅助继电器触发
- 位置补偿:D215寄存器存储偏移量(单位:脉冲)
常见故障排查:
- 出现不同步时首先检查M50触点状态
- 偏移量异常需重新校准原点传感器
- 电子齿轮比不一致会导致累积误差
4. 温度控制系统实现
4.1 Modbus通讯配置
触摸屏与温控模块的通讯参数:
- 波特率:9600bps
- 数据位:8
- 停止位:1
- 无校验
- 站号:1(可拨码开关修改)
关键Lua脚本代码:
lua复制function ON_SET_TEMP()
temp_set = GetData('LW100') -- 从PLC读取设定值
SendModbusCmd(1, 6, 1600, temp_set*10) -- 注意需要×10
end
4.2 温控模块的特殊处理
常州汇邦HB-TC4模块的几个坑:
- 温度值需要乘以10发送(如设定100°C需发送1000)
- 读写地址不是连续的(1600-1603对应通道1-4)
- 状态字需要与数据字分开读取
建议做法:
- 制作Modbus地址速查表贴在设备上
- 在触摸屏脚本中加入数值转换注释
- 添加通讯超时报警功能
4.3 PID参数整定经验
经过多次调试得出的最佳参数:
| 参数 | 加热段 | 保温段 |
|---|---|---|
| P | 35 | 25 |
| I | 120 | 180 |
| D | 5 | 8 |
调试技巧:
- 先设I=0,逐步增加P直到出现小幅振荡
- 然后调整I消除静差
- 最后加D抑制超调
- 温度采样周期建议设为500ms
5. 多语言切换机制
5.1 PLC端实现方案
语言切换核心逻辑:
ladder复制|- [MOV K0 D500] -| // 0=中文,1=英文
触摸屏通过读取D500的值决定显示语言。这个方案的优点是实现简单,但存在明显缺陷:
- 修改文字需要重新编译工程
- 无法动态添加新语言
- 文字与逻辑代码耦合度高
5.2 触摸屏文本管理
威纶通的多语言实现方式:
lua复制if D500 == 0 then
DisplayText("温度设定")
else
DisplayText("Temp Set")
end
更专业的做法应该是:
- 创建独立的语言资源文件
- 使用文本ID代替直接内容
- 开发语言包导入/导出功能
5.3 改进建议
对于新项目,建议采用以下方案:
- PLC只负责切换标志位
- 触摸屏加载外部语言文件
- 使用JSON格式存储多语言文本
- 预留至少10种语言扩展空间
6. 调试与维护经验
6.1 无注释程序逆向技巧
面对"干净"的PLC程序时:
- 首先扫描M100-M200区间的辅助继电器
- 重点关注D200-D300的数据寄存器
- 使用交叉引用查找功能点
- 制作寄存器功能映射表(示例如下)
| 地址 | 功能描述 | 取值范围 |
|---|---|---|
| D200 | 前伺服脉冲频率 | 0-5000 |
| D210 | 加速时间 | 500-2000 |
| D500 | 语言标志 | 0-1 |
6.2 常见故障速查表
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 伺服抖动 | 脉冲干扰 | 检查屏蔽线接地 |
| 温度波动 | PID参数不当 | 重新整定参数 |
| 通讯中断 | 波特率错误 | 核对模块拨码 |
| 文本乱码 | 编码不匹配 | 统一使用UTF-8 |
6.3 系统优化建议
- 增加注释:至少标注关键程序段的功能
- 完善文档:制作IO分配表和参数说明
- 预留接口:考虑未来可能的功能扩展
- 安全防护:添加急停连锁和故障自检
这套系统虽然运行稳定,但程序可维护性较差。建议后续升级时采用结构化编程方式,将功能模块化,并建立完整的文档体系。毕竟,好的程序不仅是能运行的,还应该是容易理解的。
