1. 项目概述与硬件配置
在工业自动化项目中,西门子S7-1200 PLC与TP900触摸屏的组合堪称经典配置。这套系统我用了5年多,处理过20+个类似项目,今天要分享的是控制3轴伺服系统的完整方案。不同于普通的IO控制,伺服系统对实时性和精确度要求极高,PTO(脉冲串输出)方式能提供最高1MHz的脉冲频率,定位精度可达±1个脉冲。
1.1 核心硬件选型
PLC模块:
- CPU 1214C DC/DC/DC(6ES7 214-1AG40-0XB0)
- 信号板SB1223(6ES7 221-3BD30-0XB0)用于扩展数字量输入
- 务必选择支持PTO输出的型号,1214C最多支持4路高速脉冲输出
触摸屏:
- TP900 Comfort(6AV2124-0GC01-0AX0)
- 建议安装WinCC Runtime Advanced V16以上版本
伺服系统:
- 推荐三菱MR-JE-40A或西门子V90 PN
- 接线方式:PTO脉冲(PLC Q0.0-Q0.2)+方向信号(PLC Q0.3-Q0.5)
- 注意:伺服驱动器需设置为脉冲+方向控制模式
1.2 电气连接要点
我在去年一个包装线项目上踩过坑,这里特别提醒:
- 脉冲线必须用双绞屏蔽线(如Belden 8761)
- 屏蔽层单端接地(接PLC侧)
- 方向信号建议加中间继电器隔离
- 伺服使能信号要加硬件互锁
重要提示:伺服电机动力线必须与信号线分开走线,平行距离保持30cm以上,否则会导致脉冲丢失!
2. 软件架构设计
2.1 编程环境配置
使用TIA Portal V17(最低要求V15):
- 新建项目时勾选"SCL语言支持"
- 在PLC属性中启用PTO功能:
- 导航到"设备配置"→"CPU属性"→"脉冲发生器"
- 配置PTO1-PTO3为脉冲+方向模式
- 设置基准频率为100kHz(根据伺服规格调整)
2.2 程序结构规划
我参考德国汽车行业的标准,采用分层架构:
code复制Project
├── PLC_MAIN (OB1)
├── HMI_Interface (FB100)
├── Servo_Control (FB200)
│ ├── Axis1 (Instance DB)
│ ├── Axis2 (Instance DB)
│ └── Axis3 (Instance DB)
├── Alarm_Handling (FB300)
└── IO_Mapping (FB400)
关键技巧:
- 每个FB最大不超过300行代码
- 使用UDT统一接口:
scl复制TYPE Axis_Para :
STRUCT
// 输入参数
Enable : BOOL;
Position : INT;
// 输出参数
ActualPos : INT;
Status : WORD;
END_STRUCT
3. 核心功能实现
3.1 PTO控制程序
在FB200中实现伺服控制算法:
scl复制FUNCTION_BLOCK Servo_Control
VAR_INPUT
Command : Axis_Para;
END_VAR
VAR_OUTPUT
Feedback : Axis_Para;
END_VAR
VAR
// 静态变量
PTO_Ctrl : CTRL_PTO;
PulseDone : BOOL;
END_VAR
// 主逻辑
IF Command.Enable THEN
PTO_Ctrl(
ENABLE := TRUE,
PROFILE := 1,
START_POS := 0,
TARGET_POS := Command.Position,
START := TRUE,
BUSY => #Busy,
DONE => PulseDone);
// 方向控制
"Axis_Direction" := Command.Position > 0;
END_IF
3.2 触摸屏交互设计
TP900的HMI开发要点:
- 建立连接变量时使用优化块访问
- 报警界面采用异步触发方式
- 关键参数设置密码保护层级
xml复制<Screen Name="Manual_Control">
<Text Name="Axis1_Pos" Text="X轴位置:%d" Var="DB200.ActualPos"/>
<IOField Name="SetPos" Var="DB200.CommandPos" Format="Decimal"/>
<Button Name="Jog+" Event="Press" Var="HMI_JogPlus"/>
</Screen>
4. 调试与优化
4.1 伺服参数整定
通过TIA Portal的Trace功能抓取实际位置曲线:
- 先调速度环(参数PA5/PA6)
- 再调位置环(参数PA7/PA8)
- 最后加前馈补偿(参数PA9)
典型参数(三菱MR-JE):
| 参数 | 描述 | 推荐值 |
|---|---|---|
| PA5 | 速度增益 | 35-50 |
| PA6 | 速度积分 | 20-30 |
| PA7 | 位置增益 | 25-40 |
| PA8 | 位置滤波 | 15-25 |
4.2 常见故障处理
去年在汽车焊装线遇到的典型问题:
-
脉冲丢失:
- 检查电缆长度(不超过15米)
- 添加终端电阻(100Ω)
-
伺服抖动:
- 降低PTO加速度(建议500-1000 rpm/s²)
- 检查机械传动间隙
-
HMI响应慢:
- 优化通信周期(最小100ms)
- 减少同时刷新的变量数量
5. 高级功能扩展
5.1 多轴同步控制
使用S7-1200的MC_MoveRelative指令实现电子齿轮:
scl复制// 主轴编码器输入
"Encoder_Input"(CLK := "I0.0",
DATA := "I0.1",
COUNT => MasterCount);
// 从轴跟随
IF MasterCount MOD 100 = 0 THEN
MC_MoveRelative(
Axis := "Slave_Axis",
Distance := MasterCount/100,
Velocity := 500);
END_IF
5.2 安全集成
通过PROFIsafe实现STO安全功能:
- 配置F-DI模块接收急停信号
- 在安全程序中处理安全扭矩关断
- 安全响应时间需<20ms
经验:安全回路必须独立于PLC程序,采用硬线连接继电器控制伺服使能
6. 工程管理技巧
6.1 版本控制
推荐使用TIA Portal自代的版本管理:
- 每次修改前创建恢复点
- 重要版本导出为.zap16文件
- 注释规范示例:
code复制// [2023-08-15][Wang] #BugFix
// 修正轴2回零超时问题
6.2 文档规范
我的项目文档模板包含:
- 电气图纸(EPLAN格式)
- IO清单(Excel)
- 参数备份(XML)
- 操作手册(PDF)
最后分享一个实用技巧:在DB块中添加维护日志区:
scl复制TYPE Maintenance_Log :
STRUCT
Last_Service : DATE;
Run_Hours : UDINT;
Error_Count : WORD;
END_STRUCT
