generated from hulk/gd32f4xx_template_cmake_vscode
Heater: PID v0.1.14 - banded controller + sensor glitch guards
Rebuild PID as three-zone banded controller: far field P/D full power,
This commit is contained in:
+32
-6
@@ -152,12 +152,38 @@ void usart1_irq_handler(void);
|
||||
#define HEATER_PWM_PERIOD_MS 2000U /* PWM 载波周期(2s,载波 0.5Hz) */
|
||||
#define HEATER_PWM_STEP_PCT 5U /* 占空比步进(每档脉宽 = 100ms,维持最小开关频率约束) */
|
||||
#define HEATER_PID_PERIOD_MS 500U /* PID 计算周期 */
|
||||
#define HEATER_PID_KP 10.0f /* PID 参数:超温前退功率更快(配合超温强制关断) */
|
||||
#define HEATER_PID_KI 0.05f
|
||||
#define HEATER_PID_KD 30.0f /* 微分阻尼:按误差变化率提前刹车(抑制爬升惯性) */
|
||||
#define HEATER_SLOWBAND_C 7.0f /* 温和带宽度:距目标小于此值时占空上限受限
|
||||
(低速爬完最后一段,减少蓄热惯性过冲) */
|
||||
#define HEATER_SLOWBAND_DUTY 25U /* 温和带内占空上限(%) */
|
||||
#define HEATER_PID_KP 8.0f /* PID 参数:带外下方 P 拉回增益(带内 P 退出) */
|
||||
#define HEATER_PID_KI 0.15f /* 输出映射:u 贡献 = KI*I;I 全区域对称慢速学习 */
|
||||
#define HEATER_PID_KD 30.0f /* 微分(仅带外下方起作用):爬升段提前退功率 */
|
||||
#define HEATER_PID_BAND_C 0.3f /* 作用分区带宽:带内恒功率(Ki*I),带外
|
||||
开关+P 修正——波动幅度被物理限制在
|
||||
带宽+滑行量 */
|
||||
#define HEATER_PID_INTEG_GAIN_IN 0.30f /* 带内/带外下方积分学习增益(对称):
|
||||
I += err*GAIN;0.15 时 I 充满需 ~400s,
|
||||
判定窗内驻留点偏低 0.5C(ASSIST 补缺口
|
||||
但驻留偏欠温),加倍后 ~200s 到位 */
|
||||
#define HEATER_PID_INTEG_BLEED 0.30f /* 带外上方每拍固定回退(=GAIN,对称) */
|
||||
#define HEATER_NTC_SLEW_C 0.5f /* NTC 读数斜率限幅(C/PID 拍):单拍变化超过
|
||||
此值判为读数毛刺(真实热速率 <=0.2C/拍),
|
||||
沿限幅值过渡、连续 2 拍超限放行真实值 */
|
||||
#define HEATER_NTC_JUMP_C 1.5f /* 秒级坏值冻结阈值:斜率超限持续且累计偏差超过
|
||||
此值时冻结滤波值(真机焊接点接触不良会产出
|
||||
-2.5C/4.5s 塌陷与顶格卡死,中值滤波挡不住) */
|
||||
#define HEATER_PID_I_MAX 400.0f /* 积分钳位上限:KI*I_MAX = 60% 占空(120C 模具
|
||||
维持功率余量);下限恒为 0 */
|
||||
#define HEATER_FAULT_RESTORE_MAX_S 3.0f /* NTC 短故障(去抖确认后恢复)无扰还原积分的
|
||||
时长上限;超过则从零重建(安全优先) */
|
||||
#define HEATER_RAMP_CPS 2.0f /* 内部设定值斜坡速率(℃/s):实测 0.25 时斜坡
|
||||
本身就是瓶颈(9C 走 36s,加热器只是"追"设定点);
|
||||
2.0 基本不设障,到达速度由加热功率与温和带
|
||||
上限决定。分区控制器爬升段不积分,快斜坡
|
||||
不会像旧连续 PID 那样预充积分导致过冲 */
|
||||
#define HEATER_SLOWBAND_C 3.0f /* 温和带宽度:缓爬段(原 7C 太宽,25% 上限下
|
||||
净升温仅 0.08C/s,爬升 234s 的主瓶颈) */
|
||||
#define HEATER_SLOWBAND_DUTY 35U /* 近场缓爬辅助满档(%):err=+SLOWBAND_C 处
|
||||
的推力,随 err 线性退闸(提供与积分成熟度
|
||||
无关的确定爬升推力,修复最后 2C 爬 141s) */
|
||||
#define HEATER_NEAR_MAX_DUTY 50U /* 近场扩展区推力上限(%):快而不过冲 */
|
||||
#define HEATER_OVERTEMP_C 150.0f /* 过温强制关断阈值(滞回保护) */
|
||||
#define HEATER_OVERTEMP_HYST 5.0f /* 过温恢复滞回 */
|
||||
|
||||
|
||||
+4
-3
@@ -12,9 +12,10 @@ void heat_init(void);
|
||||
|
||||
/**
|
||||
* @brief 加热控制任务(在主循环中周期调用,主循环周期 10ms)。
|
||||
* @details 内部包含:慢 PWM 载波(1s 周期、10% 步进,脉宽恒 >=100ms)、
|
||||
* PID 计算(500ms 周期,输出量化到占空档位)、安全保护
|
||||
* (传感器故障强制关断 / 过温滞回保护 / 未使能强制关断)。
|
||||
* @details 内部包含:慢 PWM 载波(2s 周期、5% 步进,脉宽恒 >=100ms)、
|
||||
* 目标斜坡 + 连续 PID(500ms 周期,全误差区间连续输出、微分基于
|
||||
* 温度变化率、积分窄带吸收+钳位)、安全保护(传感器故障去抖确认后
|
||||
* 强制关断 / 过温滞回保护 / 未使能强制关断)。
|
||||
*/
|
||||
void heat_task(void);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user