简单烤箱:位式(Bang-Bang),继电器 / 固态继电器直接通断
精度要求高(±1~3℃):PID + PWM 占空比输出控制 SSR 固态继电器
传感器常用:PT100 热电阻、K 型热电偶;信号接入:PT 模块 / 4-20mA 变送模块。 执行件:SSR 固态继电器(适合 PWM 调功率,不建议接触器频繁通断)
一、硬件架构
PT100/K热电偶 → 热电阻/热电偶模拟量模块 → MCi200
MCi200 数字输出 → SSR固态继电器 → 加热管
触摸屏(可选):设定温度、实时温度、参数、报警
采集:AI 通道读到原始 AD 值 → 工程换算成 ActualTemp(REAL,℃)
给定:SetTemp(REAL,触摸屏或配方给定)
输出:PID 输出 0~100% → PWM 周期发生器,驱动 SSR
二、两种控制方案程序思路(Machine Control Studio ST)
方案 A:位式控制
逻辑:带回差,防止继电器频繁抖动(烤箱最容易踩的坑:无回差→触点狂跳)
VAR
SetTemp:REAL := 180.0; //设定温度
ActualTemp:REAL; //采集回来的实际温度
Hysteresis:REAL := 2.0; //回差2℃
HeatOut:BOOL; //加热输出
END_VAR
IF ActualTemp < (SetTemp - Hysteresis) THEN
HeatOut := TRUE;
ELSIF ActualTemp > SetTemp THEN
HeatOut := FALSE;
END_IF
优点:简单; 缺点:温度波动大,不适合精密烘烤
方案 B:PID+PWM
MCi200 用标准 FB_PID(Codesys 标准 PID 功能块),烤箱是反作用(REVERSE):温度越高,PID 输出越小。
重要:烤箱滞后很大,PID 采样周期不要太短,建议 500ms~1000ms,不要几十毫秒。
1. PID 变量定义
VAR
FB_OvenPID : FB_PID;
SetTemp : REAL := 200.0;
ActualTemp : REAL;
PID_Out : REAL; //0.0 ~ 100.0
KP : REAL := 8.0;
TI : REAL := 120.0; //积分时间 s,烤箱I要偏大
TD : REAL := 15.0; //微分,抑制超调;很多烤箱甚至TD=0
PID_SampleT : TIME := T#1S;
END_VAR
2. PID 调用(ST)
FB_OvenPID(
SP := SetTemp,
PV := ActualTemp,
Kp := KP,
Ti := TI,
Td := TD,
Cycle := PID_SampleT,
Reverse := TRUE, //加热:反作用(重点!)
OutputMin := 0.0,
OutputMax := 100.0,
Out => PID_Out
);
3. PWM 生成
烤箱 PWM 周期建议 10s~20s(加热惯性大,周期太短对加热无意义,还加速 SSR 老化) 示例周期 10 秒:
VAR
T_PWM_Cycle : TIME := T#10S;
T_PWM_Timer : TON;
PWM_Out : BOOL;
END_VAR
T_PWM_Timer(IN:=TRUE, PT:=T_PWM_Cycle);
IF T_PWM_Timer.Q THEN
T_PWM_Timer(IN:=FALSE);
T_PWM_Timer(IN:=TRUE);
END_IF
//占空比判断
IF TIME_TO_REAL(T_PWM_Timer.ET) < (REAL_TO_TIME(T_PWM_Cycle) * PID_Out / 100.0) THEN
PWM_Out := TRUE;
ELSE
PWM_Out := FALSE;
END_IF
PWM_Out 直接驱动 DO 点接 SSR。
三、配套必须写的保护、联锁、SFC 流程
烤箱是高温设备,联锁、报警、安全逻辑优先级高于 PID,推荐用 SFC 步进做工艺流程(升温→恒温→保温计时→降温),和你前面台达 / 士林 / AB 的步进体系保持一致:
传感器断线检测:AI 模块故障、温度超限(比如 > 450℃),立刻切断加热,锁死报警
超温保护(独立硬限位 + 软件双重):软件超温阈值(比如设定 + 20℃)直接切断加热,报警锁存,需要复位
门联锁:烤箱门打开,禁止加热
手动 / 自动切换:手动模式下 PID 关闭,单独点动加热;自动模式才启用 PID
保温计时:恒温到达后,启动保温定时器,时间到结束工序
SFC 思路:
Step0:待机
Step1:升温(PID 自动控温),到达设定温度 + 稳定后,进入 Step2 保温
Step2:保温计时,计时到进入 Step3 停止
注意:SFC 里面的边沿规则,和前面讲的一致,不要在步内直接 LDP 检测 S,避免休眠导致沿异常。
四、PID 调参
口诀:先 P、再加 I、D 谨慎加,宁小勿大
TD 微分优先先设 0,很多烤箱不加微分反而更稳,微分容易抖动
只调 Kp:慢慢加大 Kp,直到温度出现小幅震荡,再把 Kp 降到 70%
再加 Ti 积分:Ti 越大积分越弱;烤箱滞后大,Ti 一般 60~200s,用来消除静差
最后微调 Td:只有升温冲温超调严重时少量加 Td(5~30s)
禁忌:Kp 很大、Ti 很小 → 持续震荡、来回冲温
五、规避
Reverse 正反搞反:Forward = 制冷;Reverse = 加热,这个写错直接温度飞涨失控
采样周期太短:比如 100ms 采样,PID 疯狂抖动,输出乱跳
PWM 周期太短:1~2s,SSR 频繁开关,容易烧毁;烤箱热惯性大,10~20s 周期完全够用
温度采集没滤波:热电偶干扰大,PV 跳变 → PID 输出乱跳;增加一阶滤波
ActualTemp := ActualTemp * 0.95 + RawTemp * 0.05; //简单一阶滤波
步进 SFC 切换工序时,PID 没有Hold 冻结输出:从升温切保温瞬间,PID 积分饱和、严重超调 → 工艺步切换时,给 PID 加 Hold 引脚,冻结积分,防止积分饱和(非常关键)
MCi200 任务周期:实时任务 16ms,后台任务最高 256ms,PID 建议放在慢速后台任务,不要放高速实时任务
六、横向对比
三菱 Q:需要模拟量模块 + PID 功能块,或者温控模块
台达 / 士林 FX:自带 PID 指令,逻辑思路一致
尼得科 MCi200:标准 Codesys FB_PID,自由度高,ST/FBD 编程,适合复杂 SFC 烘烤曲线(多段升温斜率烘烤)。


