1. 项目概述
这个项目是为海康威视开发的路由器外壳装配设备的PLC控制系统。作为自动化产线的重要组成部分,该系统需要精确控制多个运动轴并实现设备间的数据交互。在实际生产中,路由器外壳装配对定位精度和节拍时间有严格要求,我们的解决方案基于西门子S7-1200 PLC平台,通过自定义功能块实现了稳定可靠的轴控制。
2. 硬件架构设计
2.1 核心控制器选型
选择西门子S7-1215C DC/DC/DC作为主控制器,主要基于以下考虑:
- 内置4路高速脉冲输出(最大100kHz),可直接驱动伺服驱动器
- 支持PROFINET通信,便于与上下游设备组网
- 工作存储器75KB,足够运行复杂的运动控制程序
- 性价比高,在中小型设备中应用广泛
2.2 执行机构配置
系统控制以下执行机构:
-
三台伺服电机:
- 品牌:安川Σ-7系列
- 功率:750W
- 编码器分辨率:17位(131072脉冲/转)
- 通过PTO方式控制,脉冲+方向信号输出
-
一套电动缸:
- 行程:300mm
- 重复定位精度:±0.02mm
- 最大速度:200mm/s
- 内置绝对值编码器,通过模拟量输入反馈位置
2.3 通信网络架构
采用PROFINET工业以太网实现以下通信:
- 与上游PLC(送料机构)通信:周期10ms
- 与下游PLC(检测机构)通信:周期10ms
- HMI连接:西门子KTP700 Basic触摸屏
3. 软件设计实现
3.1 轴控制功能块开发
3.1.1 背景数据块设计
pascal复制// 轴控制参数数据结构
TYPE "Axis_Param" :
STRUCT
// 运动参数
POS_ACT : REAL ; // 实际位置
POS_TARGET : REAL ; // 目标位置
VELOCITY : REAL ; // 运行速度
ACCEL : REAL ; // 加速度
DECEL : REAL ; // 减速度
// 控制信号
ENABLE : BOOL ; // 轴使能
DISABLE : BOOL ; // 轴禁用
POS_MODE : INT ; // 定位模式
JOG_MODE : BOOL ; // 点动模式
// 状态反馈
IN_POSITION : BOOL ; // 到位信号
ERROR : BOOL ; // 错误状态
ERROR_CODE : WORD ; // 错误代码
END_STRUCT ;
3.1.2 绝对定位控制实现
pascal复制// MC_MoveAbsolute功能块调用示例
CALL "MC_MoveAbsolute" , "Axis1_DB"
(
Axis := "Axis1_DB".Axis_Ref,
Execute := "Axis1_DB".Start_Cmd,
Position := "Axis1_DB".POS_TARGET,
Velocity := "Axis1_DB".VELOCITY,
Acceleration := "Axis1_DB".ACCEL,
Deceleration := "Axis1_DB".DECEL,
Done => "Axis1_DB".Move_Done,
Busy => "Axis1_DB".Move_Busy,
Error => "Axis1_DB".Move_Error,
ErrorID => "Axis1_DB".Error_Code
);
关键参数设置原则:
- 加速度/减速度:根据机械负载惯量计算,通常设置为0.2-0.5m/s²
- 速度曲线:采用S曲线加减速,减少机械冲击
- 到位判断:位置偏差<0.1mm且速度<5mm/s时认为到位
3.2 气缸监控功能块
pascal复制FUNCTION_BLOCK "Cylinder_Monitor"
VAR_INPUT
Sensor_Input : BOOL ; // 气缸传感器信号
Timeout : TIME ; // 动作超时时间
END_VAR
VAR_OUTPUT
Alarm : BOOL ; // 报警输出
Status : INT ; // 气缸状态
END_VAR
VAR
Timer : TON ; // 超时计时器
Last_State : BOOL ; // 上次状态
END_VAR
// 状态检测逻辑
IF Sensor_Input <> Last_State THEN
Timer(IN := TRUE, PT := Timeout);
IF Timer.Q THEN
Alarm := TRUE;
Status := 16#8001; // 超时错误代码
END_IF;
END_IF;
Last_State := Sensor_Input;
3.3 设备间通信实现
3.3.1 PUT/GET通信配置
- 建立通信连接表:
| 连接号 | 通信方向 | 数据区 | 长度 | 周期 |
|---|---|---|---|---|
| 1 | PUT | DB20.DBW0 | 20 | 10ms |
| 2 | GET | DB30.DBW0 | 20 | 10ms |
- 通信程序示例:
pascal复制// PUT通信程序
IF NOT "Comm_Busy" THEN
"PUT_DB".REQ := TRUE;
"PUT_DB".ID := W#16#1;
"PUT_DB".ADDR_1 := P#DB20.DBX0.0 BYTE 20;
"PUT_DB".ADDR_2 := P#DB30.DBX0.0 BYTE 20;
CALL "PUT" , "PUT_DB";
"Comm_Busy" := "PUT_DB".BUSY;
END_IF;
4. 关键问题解决方案
4.1 多轴同步控制
采用主从同步控制策略:
- 定义主轴(X轴)为主基准轴
- 从轴(Y/Z轴)通过以下方式同步:
- 位置同步:读取主轴实际位置作为从轴目标位置
- 速度前馈:根据主轴加速度计算从轴补偿量
- 同步精度保证措施:
- 采用硬件中断(OB61)处理同步任务
- 同步周期设置为2ms
- 增加位置滞后补偿算法
4.2 异常处理机制
建立三级异常处理体系:
-
轴级异常:
- 硬件限位触发立即停止
- 跟随误差超差报警
- 驱动器故障信号处理
-
设备级异常:
- 工艺超时监控
- 传感器信号异常检测
- 安全回路断开处理
-
系统级异常:
- 通信中断处理
- 急停信号响应
- 电源故障处理
5. 调试与优化经验
5.1 伺服参数整定步骤
-
基本参数设置:
- 电机型号、编码器类型
- 控制模式选择(位置/速度/转矩)
- 电子齿轮比计算
-
增益调整流程:
- 先调整速度环比例增益(Kv)
- 再调整速度环积分时间(Tv)
- 最后调整位置环增益(Kp)
-
现场调试技巧:
- 使用阶跃响应观察调整效果
- 增益过高会产生振动,需适当降低
- 负载惯量比建议控制在3-5倍
5.2 通信故障排查
常见通信问题处理:
-
通信超时:
- 检查物理连接(网线、交换机)
- 验证IP地址设置
- 测试网络负载情况
-
数据不一致:
- 确认数据区长度匹配
- 检查字节序设置
- 验证数据刷新周期
-
连接中断:
- 监控通信负载率
- 检查PROFINET设备名称
- 验证IO控制器配置
6. 项目应用效果
经过3个月的生产验证,系统达到以下指标:
- 定位精度:±0.05mm
- 重复定位精度:±0.02mm
- 单件装配周期:6.5秒
- 设备综合效率(OEE):92.3%
- 故障间隔时间(MTBF):1500小时
这套控制系统框架已在多个类似项目中使用,包括:
- 网络设备外壳装配线
- 电子元件自动插装设备
- 精密零件检测分选机
在实际应用中,我们持续优化了以下方面:
- 增加振动抑制算法,减少到位抖动
- 完善故障自诊断功能
- 优化通信数据包结构,提高传输效率
