冲床核心矛盾:转速越高,同样电磁阀 / 气路 / 制动器机械滞后时间,对应的曲轴滑行角度越大。西门子主流:S7‑1200 / S7‑1500;编码器用高速计数工艺对象,禁止普通 DI 做脉冲计数;离合器制动器电磁阀必须晶体管输出或 SSR,严禁继电器 DO。控制目标:滑块每次停止角度离散度变小,高速冲次下位置不飘。
硬件前提:
曲轴增量编码器接入 PLC 高速计数通道;S7‑1200 用工艺对象
High‑speed counter;S7‑1500 可以用 TM 计数模块。离合器、制动器电磁阀:晶体管输出,电磁阀线圈增加 RC 吸收或续流二极管,抑制浪涌干扰编码器。
安全门、急停走安全回路 / F‑PLC,不能完全依赖普通 PLC 程序停机。
一、OB 组织块架构优化
❌错误:把曲轴角度判停、离合制动输出放在 OB1 主循环。OB1 循环周期抖动,高速时一次 OB1 抖动,曲轴就转过很大角度,停止位置离散。
✅推荐架构
使用循环中断 OB(Cyclic Interrupt),周期 0.5ms~1ms
将:高速计数值读取、角度换算、实时转速计算、制动判停逻辑、离合器 / 制动器输出刷新全部放在这个固定周期 OB。
中断优先级调高;循环 OB 内部禁止 HMI 读写、日志、字符串处理、大运算,防止中断本身被拉长抖动。
OB1 主循环:只处理模式选择、报警、HMI 交互、设备逻辑,不做角度判停和制动输出。
安全逻辑:急停、安全门优先使用安全 OB/F‑CPU,不要依赖普通循环中断。
注意:高速计数工艺对象本身硬件计数;循环 OB 只读取已经硬件计数好的计数值,不要软件数脉冲。
二、信号处理:角度、转速计算与信号容错
高速计数器脉冲换算成曲轴角度(0‑360° 环形),做环形边界处理,防止 0/360 度溢出。
在 1ms 循环中断内计算实时曲轴转速,转速是动态补偿的基础。
编码器故障诊断(放在循环 OB)
转速突变异常跳变、角度不跟随,判定编码器故障,立刻切断离合器,安全停机。
脉冲丢失、信号抖动直接报警停机。
变量示例:
rCrankAngle:曲轴角度 Real 0~360.0rCrankSpeedRPM:实时转速 RealnHSC_Pulse:高速计数器计数值 DINT
三、离合制动器时序与动态提前制动补偿(核心软件算法)
物理现象:PLC 输出 DO → 电磁阀动作 → 气路充放气 → 制动器摩擦片建立制动力,存在固定系统滞后(几十 ms,由现场实测标定)。
同样 40ms 滞后:低速转过很小角度;高冲次下会转过十几度,只写固定制动提前角,高速必然过冲。
动态提前触发角度公式(STL/SCL)
scl
//系统总滞后时间:PLC输出到制动器有效扭矩,现场实测标定,单位ms SystemLag_ms := 40.0; //计算滞后时间内曲轴会转过多少角度 Lag_Angle := rCrankSpeedRPM * SystemLag_ms / 60000.0 * 360.0; //限制补偿上下限,低速防止补偿过大 Lag_Angle := LIMIT(0.0, Lag_Angle,30.0); //实际触发制动角度 Trigger_Angle := TargetStop_Angle - Lag_Angle;
在 1ms 循环中断中判断:
scl
IF (rCrankAngle >= Trigger_Angle) AND (StopTriggered = FALSE) THEN Clutch_Out := FALSE; //断开离合器 StopTriggered := TRUE; END_IF; //离合器断开后,等待泄压延时,再上制动器,避免同时动作 IF StopTriggered THEN IF TON_Brake.DONE THEN Brake_Out := TRUE; END_IF; END_IF;
⚠关键点:离合器先断开,等待气路泄压延时(5‑20ms 现场标定),再投入制动器。不能离合断开和抱闸同时输出,否则摩擦片强行对撞,磨损大,停止位置离散。
注意:不要用普通 TON 做毫秒级延时放在 OB1;毫秒级计时放在循环中断内,做软件计时,避免 OB1 周期带来计时误差。
制动器释放逻辑:滑块完全静止后,延时再松开制动器,防止滑块重力漂移,不要角度一到达就松闸。
四、控制逻辑使用状态机,替代大量 S/R 置位复位
冲床模式:待机、离合器吸合运行、制动触发、停止完成。用 SCL 编写状态机,nStPressState作为状态变量:
0:IDLE 待机
1:离合器吸合运行
2:制动触发
3:已经停止完成
✅好处:
避免多处网络同时置位复位离合器输出,条件竞争;
单次冲压、连续冲压、点动模式逻辑清晰;
故障时状态机统一跳转至安全停机状态。
点动模式转速低,动态补偿角度可以做系数衰减,防止提前刹车。
五、报警与数据快照,方便排查精度问题
在循环中断里,制动触发瞬间保存快照变量,上传 HMI:
触发制动时刻:曲轴角度、实时转速、计算得到的补偿角度
滑块最终实际停止角度
HMI 显示:目标停止角度 VS 实际停止角度。
每次偏差是固定偏移:系统滞后时间参数需要微调;
每次停止忽大忽小离散波动:属于硬件层面(电磁阀响应离散、气压波动、摩擦片不稳定、编码器干扰),程序补偿无法完全消除。
报警条件:
发出制动信号后曲轴滑行角度超过阈值 → 报警:制动器制动力不足、气路异常;
连续多次停止误差超限 → 提醒摩擦片磨损维护;
编码器转速 / 角度异常跳变 → 编码器故障,安全停机。
六、输出侧优化
离合器、制动器 DO 输出做输出反馈比对:把过程映像输出和模块通道反馈回读做比较,输出指令和实际通道不一致,报输出故障。
离合器、制动器输出标签只在 1ms 循环中断内刷新,OB1、其他 FC/FB 禁止改写这两个输出,防止多地方改写造成输出抖动。
电磁阀线圈必须增加浪涌吸收,避免干扰编码器脉冲。
七、现场标定调试步骤
低速试冲,记录:PLC 输出制动信号到滑块停止,曲轴实际滑行角度,得到初始
SystemLag_ms。逐步提高冲次转速,观察停止位置:
总是过冲:增大
SystemLag_ms,更早触发制动;总是提前停下没到目标位置:减小
SystemLag_ms。将系统滞后时间参数放到 HMI 可调整,不用下载程序。
如果高速下停止位置随机离散,不是固定偏移:优先排查机械、气源压力、电磁阀、制动器间隙,程序补偿解决不了硬件离散。
八、常见错误汇总
角度判停放在 OB1 主循环,OB1 周期抖动,高速位置飘。✅移到 1ms 循环中断 OB。
使用固定提前制动角度,不随转速变化。✅引入转速动态补偿。
离合器、制动器同时输出,没有泄压间隔。✅增加离合器断开到制动器上闸的时间差。
毫秒级延时使用普通 TON,TON 受 OB1 周期影响计时不准。✅循环中断内软件计时。
多处网络 S/R 置位离合器,条件竞争。✅改用状态机。
使用普通 DI 做脉冲计数,丢脉冲。✅使用 PLC 高速计数工艺对象。
重要提醒:软件补偿只能弥补系统固定滞后;摩擦片磨损、气压波动、电磁阀响应离散这类硬件波动,程序不能无限补偿,设备两端必须保留硬件限位保护。





