1. 项目概述:基于S7-200 SMART的电子凸轮速度控制方案
在工业自动化领域,运动控制一直是核心难点之一。最近完成了一个采用西门子S7-200 SMART PLC和威纶通触摸屏联动的电子凸轮控制系统,特别针对定速控制场景进行了优化。这个Ver1.3版本最大的突破是实现了运动中变速功能,同时保持了梯形加减速的平滑特性。整个方案没有使用现成的库函数,而是基于PLS指令手写脉冲输出逻辑,在资源有限的200 SMART上实现了媲美高端控制器的性能。
这个项目的诞生源于实际产线需求——某包装机械需要在运行过程中根据产品规格动态调整输送带速度,而传统PLC程序在速度切换时会产生明显机械振动。Ver1.3方案通过独创的动态加速度算法,将速度切换时的位置偏差控制在±0.02mm以内,完全满足精密加工的要求。
2. 硬件架构与核心功能设计
2.1 硬件组成与选型考量
系统硬件架构采用经典的三层结构:
- 控制层:西门子S7-200 SMART CPU ST30
- 选择理由:性价比高,支持4路高速脉冲输出(最大100kHz)
- 关键特性:内置24V电源,集成RS485接口
- 人机界面:威纶通MT8071iE触摸屏
- 选择理由:与S7-200 SMART原生兼容,支持多语言宏指令
- 执行机构:台达ASD-A2系列伺服驱动器
- 配套电机:400W 3000rpm伺服电机
- 编码器分辨率:17bit(131072脉冲/转)
硬件选型时特别注意了脉冲兼容性:200 SMART的PLS指令输出为5V差分信号,而台达驱动器支持5-24V宽电压输入,省去了额外的信号转换模块。
2.2 核心功能特性解析
Ver1.3版本实现了六大核心功能:
- 原生PLS指令脉冲生成(非库函数调用)
- 梯形加减速曲线控制
- 带加速的启动和带减速的停止
- 正向/反向运动控制
- 运动中变速功能(Ver1.3新增)
- 触摸屏参数动态调整
其中运动中变速功能的实现最为复杂,需要解决三个技术难点:
- 速度指令的动态接收与滤波
- 加减速过程的实时重计算
- 脉冲输出的无缝切换
3. 软件实现细节剖析
3.1 脉冲生成核心逻辑
脉冲输出采用定时中断+PLS指令的组合方案,关键部分在OB35中断组织块中实现。中断周期设置为5ms,与PLC扫描周期解耦,确保脉冲输出的时序精度。
stl复制// 中断服务程序示例
LD SM0.0 // 常通触点
PLS 0, Q0.0 // 通道0脉冲输出
MOVW VW100, SMD72 // 动态写入脉冲频率
这段代码的精妙之处在于:
- 直接操作SMD72特殊存储器实现频率动态调整
- 每个中断周期都会重新加载频率值
- PLS指令的Q0.0输出与方向信号Q0.1形成互补输出
3.2 梯形加减速算法实现
加减速控制采用离散化算法,将连续的加速度曲线转化为扫描周期内的速度增量:
stl复制// 加速处理段
LD SM0.0 // 常通
MOVW VW100, AC0 // 当前速度→累加器
+I VW102, AC0 // 加上加速度系数
MOVW AC0, VW100 // 更新当前速度
CMPW AC0 >= VW104 // 对比目标速度
JMP NC // 未达目标继续加速
MOVW VW104, VW100 // 达到后锁定目标速度
加速度系数VW102的计算方法:
code复制加速度系数 = (目标频率 × 扫描周期) / 加速时间(ms)
例如:10kHz目标频率,500ms加速时间,5ms扫描周期:
code复制(10000 × 5)/500 = 100
3.3 运动中变速关键技术
Ver1.3版本的核心创新在于运动中变速功能,其算法流程如下:
- 接收新速度指令(HMI→VW200)
- 计算速度差值:ΔV = V新 - V当前
- 根据剩余运动距离计算允许的变速时间T
- 重新计算加速度系数:A = ΔV / T
- 动态更新加速度寄存器VW102
stl复制// 变速处理程序段
LD M0.1 // 运动中变速标志
AW> VW100, 0 // 当前速度>0?
JMP Pos_Spd // 正向变速处理
// 反向变速处理类似...
Pos_Spd:
SUBW VW104, VW100 // 计算速度差
MOVW AC0, VW106 // 存入速度差寄存器
DIVW VW108, VW106 // 根据剩余时间计算新加速度
4. 关键问题与解决方案
4.1 PLS指令频率切换抖动问题
原始方案在修改频率时需要先停止脉冲输出,导致每次变速都会产生约10ms的停顿。改进方案采用"预加载+相位同步"技术:
- 在中断触发前微调脉冲个数
- 计算新旧频率的相位差
- 插入补偿脉冲保持连续性
- 动态更新SMD72频率寄存器
实测显示,优化后的方案将切换抖动降低到2ms以内,机械振动减少40%。
4.2 方向信号同步问题
反向运动实现时发现方向信号与脉冲存在约1ms的不同步,导致偶尔出现脉冲丢失。解决方案:
- 增加方向信号提前量(提前2个扫描周期)
- 在PLS指令前插入NOP延时
- 采用硬件滤波电路(RC常数=0.1ms)
4.3 触摸屏参数响应延迟
威纶通触摸屏与PLC的通信存在约100ms的延迟,对于快速变速场景不够理想。采用二级缓存策略:
- HMI界面写入V区中间寄存器
- PLC通过定时任务读取并滤波
- 关键参数采用立即写入模式
5. 系统调试与优化记录
5.1 加减速曲线实测数据
通过伺服驱动器的示波器功能捕获的实际运行曲线:
| 参数 | 理论值 | 实测值 | 偏差 |
|---|---|---|---|
| 加速时间(ms) | 500 | 503 | +0.6% |
| 减速时间(ms) | 500 | 497 | -0.6% |
| 最大频率(kHz) | 10.0 | 9.98 | -0.2% |
5.2 位置控制精度测试
在雕刻机上进行网格雕刻测试,测量各轴重复定位精度:
| 测试条件 | X轴偏差(mm) | Y轴偏差(mm) |
|---|---|---|
| 匀速运动 | ±0.005 | ±0.006 |
| 变速运动(3次/s) | ±0.018 | ±0.020 |
| 急停工况 | ±0.030 | ±0.035 |
5.3 系统资源占用情况
监控PLC的CPU使用率和内存占用:
| 功能模块 | 扫描周期(ms) | CPU占用率(%) |
|---|---|---|
| 主程序 | 3.2 | 15 |
| OB35中断 | 0.8 | 25 |
| HMI通信 | 1.5 | 10 |
| 空闲状态 | - | 50 |
6. 实操经验与技巧分享
经过三个月的现场调试,总结出以下宝贵经验:
-
脉冲频率微调技巧
- 当出现轻微不同步时,可以尝试调整SMB67控制字的值
- 推荐设置:16#8D(允许更新,PTO模式,1μs时基)
-
加减速参数整定方法
- 先设定较大的加速度时间(如1000ms)
- 逐步缩短时间直到出现机械振动
- 取临界值的80%作为最终参数
-
伺服参数匹配要点
- 电子齿轮比建议设为脉冲当量的整数倍
- 位置环增益不宜过高(通常20-50%)
- 务必关闭驱动器的加减速功能
-
抗干扰措施
- 脉冲线采用双绞屏蔽线(如BELDEN 8761)
- 接地电阻应小于4Ω
- 在脉冲线两端加磁环(TDK ZCAT系列)
这个项目最让我自豪的是在低成本硬件平台上实现了高端控制器的性能。通过深入理解PLS指令的底层机制,我们绕过了200 SMART的运算限制,用整数运算替代浮点计算,最终将运动控制精度提升了一个数量级。在下一个版本中,我计划加入S曲线加减速算法,进一步降低高速运动时的机械冲击。