西门子S7-1200 PID温度控制程序,PID参数经过预调节和精确调节之后得出,程序采用博图...
西门子S7-1200 PID温度控制程序,PID参数经过预调节和精确调节之后得出,程序采用博图V15高级版编写,适合用于不带冷却功能的模具加热生产工艺上,项目上运用已稳定工作多时,带详细注释,可进行二次开发和扩展,也可直接使用!! 本程序采用博图V15编写,需要博图版本高于V15,版本低于V15的,请先升级至博图V15
直接说重点——这个S7-1200的温度控制程序是跟产线老师傅蹲现场调出来的。当时模具加热工艺要求±2℃精度,设备还没配冷却功能,硬是靠PID参数硬刚出来的方案。上代码:
// 主循环中断组织块 // 每100ms执行一次PID运算 #Cycle_100ms: CALL "PID_Compact_DB" , PID_Compact // 注意这个死区设置,模具热惯性大设0.5刚好 PID_Compact.Input.PerInput := #ActualTemp PID_Compact.Parameters.DeadBand := 0.5 PID_Compact.Parameters.CtrlOutputHL := 100.0 #OutputPower := PID_Compact.Output.CtrlOutput这里用了西门子自带的PID_Compact块,重点说三个实战经验:
- 采样周期别低于100ms,模具温度变化慢得很,设太快反而震荡
- 输出限幅直接拉满(0-100%),加热棒本来就要全功率怼
- 手动/自动无扰切换是重点,看这段代码:
// 手动模式处理 IF #ManualMode THEN PID_Compact.Mode := 0 // 切手动 #OutputPower := #ManualPower // 关键!把当前输出值灌回PID内部 PID_Compact.Input.CtrlOutput := #ManualPower END_IF调试时翻车最多的就是模式切换时的输出跳变。必须把当前输出值实时写入PID块的CtrlOutput,否则切自动时会从上次输出值开始计算,直接给你来个功率过冲。
西门子S7-1200 PID温度控制程序,PID参数经过预调节和精确调节之后得出,程序采用博图V15高级版编写,适合用于不带冷却功能的模具加热生产工艺上,项目上运用已稳定工作多时,带详细注释,可进行二次开发和扩展,也可直接使用!! 本程序采用博图V15编写,需要博图版本高于V15,版本低于V15的,请先升级至博图V15
参数调节建议走官方自整定,但实测模具加热的滞后时间得手动修正。比如自整定出的微分时间可能偏小,要结合升温曲线微调。我们最终用的是P=3.2,I=480s,D=120s,注意I单位是秒不是毫秒!
想移植到其他设备的话,重点改这几个地方:
- 温度采集模块的量程标定(程序里ANALOG_INPUT那部分)
- 加热执行器的输出类型(固态继电器还是接触器)
- 报警逻辑的触发条件(现在设的是偏差持续5分钟超3℃)
最后提醒:这个程序必须用博图V15及以上版本打开,之前有兄弟用V14移植直接报错,原因是PID_Compact的管脚定义在V15改过。实在要降版本的话,建议把整个PID块重做,但工作量堪比重新开发,不如升级来得实在。
