1. 项目背景与核心功能
去年接手的一个工业自动化改造项目让我对西门子S7-1200PLC的结构化编程有了全新认识。这个5轴伺服控制系统不仅实现了三轴机械手的精准定位,还创新性地将台达伺服的两种工作模式整合在同一系统中。最让我自豪的是,整个项目采用完全模块化的程序设计,所有功能块都支持重复调用,就像搭积木一样灵活。
项目核心功能可以概括为三个层面:
- 运动控制:X/Y/Z三轴机械手通过PTO脉冲实现毫米级定位精度,配合台达B2伺服驱动器
- 工艺控制:收放卷环节创新使用速度模式+扭矩模式自动切换策略
- 系统架构:从PLC程序到HMI界面全部采用结构化设计,各功能模块可独立测试和复用
2. 硬件架构设计要点
2.1 电气控制系统组成
项目硬件配置经过多次优化最终定型:
-
主控制器:西门子S7-1214C DC/DC/DC
- 选型理由:4路高速脉冲输出(100kHz)满足三轴联动需求
- 扩展模块:SM1223 DI16/DQ16用于气缸控制
-
驱动系统:
- 机械手轴:台达B2系列伺服电机(400W) ×3
- 收放卷轴:台达B2系列伺服电机(750W) ×2
-
人机界面:威纶通MT8071iE
- 7寸触摸屏通过PROFINET与PLC通信
- 开发环境:EB Pro V5.07
2.2 关键电气设计细节
在电气图纸设计中特别注意了几个要点:
- 脉冲信号线全部采用双绞屏蔽线(ZR-IS-KVVP 2×1.0)
- 伺服使能信号增加中间继电器隔离
- 急停回路采用双回路硬线设计
- 所有IO点预留20%余量
重要提示:伺服电机动力电缆与信号电缆必须分开走线,实测平行布线会导致脉冲丢失率增加3-5倍
3. 软件架构设计解析
3.1 结构化编程框架
整个TIA Portal项目采用分层架构设计:
code复制Project
├── PLC_1 [S7-1200]
│ ├── Program Blocks
│ │ ├── OB1 (主循环)
│ │ ├── OB35 (100ms定时中断)
│ │ ├── FB500-FB599 (工艺功能块)
│ │ └── DB100-DB199 (全局数据块)
│ └── Technology Objects
│ ├── Axis_1 (X轴)
│ ├── Axis_2 (Y轴)
│ └── Axis_3 (Z轴)
└── HMI_1 [威纶通]
├── 工艺参数画面
└── 报警监控画面
3.2 核心功能块实现
3.2.1 三轴联动定位控制
在FB501中实现的运动控制逻辑:
ST复制// 三轴直线插补算法实现
IF #Start THEN
// 计算各轴运动参数
#Ratio_X := (#Target_X - #Current_X) / #PathLength;
#Ratio_Y := (#Target_Y - #Current_Y) / #PathLength;
#Ratio_Z := (#Target_Z - #Current_Z) / #PathLength;
// 调用运动控制指令
"MC_MoveRelative"(Axis:=#Axis_X, Distance:=#MoveDist*#Ratio_X, ...);
"MC_MoveRelative"(Axis:=#Axis_Y, Distance:=#MoveDist*#Ratio_Y, ...);
"MC_MoveRelative"(Axis:=#Axis_Z, Distance:=#MoveDist*#Ratio_Z, ...);
END_IF;
关键参数设置:
| 参数名称 | X轴值 | Y轴值 | Z轴值 |
|---|---|---|---|
| 最大速度 | 500mm/s | 500mm/s | 300mm/s |
| 加速度 | 0.5m/s² | 0.5m/s² | 0.3m/s² |
| 回零速度 | 100mm/s | 100mm/s | 50mm/s |
| 脉冲当量 | 0.01mm | 0.01mm | 0.005mm |
3.2.2 伺服工作模式切换
收放卷轴的模式切换逻辑:
ST复制CASE #WorkMode OF
1: // 速度模式
"MC_SetVelocity"(Axis:=#Axis_4,
Velocity:=#LineSpeed,
Acceleration:=0.2);
2: // 扭矩模式
"MC_TorqueControl"(Axis:=#Axis_4,
Torque:=#SetTorque,
VelocityLimit:=#MaxSpeed);
END_CASE;
4. 关键技术创新点
4.1 断电位置保持方案
采用三重保护机制确保断电后位置不丢失:
- PLC内部断电保持区存储各轴坐标
- 伺服驱动器编码器多圈记忆功能
- 威纶通触摸屏定期记录工艺数据
实现代码片段:
ST复制// 在OB35中周期保存位置数据
IF NOT #FirstScan THEN
#RetainData.X_Pos := "MC_ReadActualPosition"(Axis:=#Axis_X);
#RetainData.Y_Pos := "MC_ReadActualPosition"(Axis:=#Axis_Y);
#RetainData.Z_Pos := "MC_ReadActualPosition"(Axis:=#Axis_Z);
END_IF;
4.2 模块化报警管理系统
创新设计的报警处理架构:
- 设备级报警(轴超程、过热等)
- 工艺级报警(超差、超时等)
- 系统级报警(通信中断、急停等)
每个报警包含4个属性:
- 报警编号(WORD)
- 报警等级(BYTE)
- 时间戳(DTL)
- 确认状态(BOOL)
5. 调试经验与问题解决
5.1 典型问题排查表
| 现象描述 | 可能原因 | 解决方案 |
|---|---|---|
| 机械手定位偏差大 | 1. 脉冲当量设置错误 | 检查伺服电子齿轮比设置 |
| 2. 机械传动背隙 | 加装编码器或调整机械结构 | |
| 收放卷张力不稳定 | 1. 扭矩环PID参数不适配 | 重新自整定伺服驱动器参数 |
| 2. 材料特性变化 | 增加张力传感器闭环控制 | |
| HMI画面响应迟缓 | 1. 通信负载过高 | 优化PROFINET通信周期 |
| 2. 画面元素过多 | 使用画面分页加载技术 |
5.2 伺服参数调试心得
通过实测总结出台达B2伺服最优参数组:
-
速度模式下的关键参数:
- P11-00=3(控制模式选择)
- P11-04=150(速度环比例增益)
- P11-05=20(速度环积分时间)
-
扭矩模式下的关键参数:
- P11-00=5(控制模式选择)
- P11-10=80(扭矩环比例增益)
- P11-11=50(扭矩环积分时间)
调试技巧:先设置P11-15=1开启在线自整定功能,待电机运行稳定后再微调参数
6. 项目交付与标准化
最终交付物包含三个核心组成部分:
-
PLC程序:采用TIA Portal V15.1开发,兼容V14SP1-V16版本
- 包含完整的注释和变量说明
- 所有功能块都有输入输出说明
-
HMI程序:威纶通EB Pro工程文件
- 标准化画面模板
- 多语言支持框架
-
电气图纸:AutoCAD 2018格式
- 1:1比例的柜体布置图
- 带线号的完整接线图
项目开发过程中形成的标准化资源:
- FB500机械手控制功能块库
- DB200报警数据标准模板
- HMI画面组态规范文档
这套架构已经成功复用在3个类似项目上,平均节省开发时间40%以上。特别是在最近一个六轴项目中,通过复用现有功能块库,仅用两周就完成了核心控制程序的开发。