在很多 ASW 项目中,系统并不是“启动—结束”式的一次性动作,
而是长时间运行、持续调节、状态不断变化。
在这类系统里,Delay 的角色反而更加关键——
它不再服务于“瞬间判断”,
而是承担起系统自我修正、自我约束的核心反馈通道。
下面我们通过一个完全不同的工程场景来展开。
一、工程背景:电子节气门的“平顺跟随”问题
假设我们在做一个电子节气门执行器 ASW:
-
上层控制会给出一个目标开度
TargetPos -
实际节气门位置为
ActualPos -
执行器由 PWM 驱动
-
目标不是“快”,而是:
-
不抖
-
不过冲
-
不来回修正
-
这类问题的关键词是:
平顺性
而平顺性,本质上是一个时间相关的问题。
二、第一个现实问题:为什么“直接算误差”不行?
最直觉的做法是:
Error = TargetPos - ActualPos
然后:
PWM = Kp * Error
模型很简单,代码也能跑,
但一上台架,问题马上出现:
-
小目标变化 → PWM 抖动
-
机械回差 → 来回修正
-
目标不变时,PWM 仍在细微摆动
这不是参数问题,而是模型缺少“时间维度”。
三、Delay 第一次登场:系统开始“记住上一拍自己”
为了让系统知道:
“我是越来越接近目标,还是在原地打摆?”
我们引入 Delay,构造一个变化趋势:
Error_now ───────────┐
├─ Subtract ──> dError
Error_prev ─ UnitDelay┘
也就是:
dError = Error(k) - Error(k-1)
这一刻,系统第一次具备了**“趋势感”**。
四、现实马上告诉你:dError 比 Error 更难用
在实车上你会发现:
-
Error 本身还算平稳
-
dError 却在正负之间来回跳
原因并不神秘:
-
传感器噪声
-
齿隙
-
ADC 抖动
如果你直接用 dError 参与控制,系统会变得更躁。
这时,Delay 的第二种用法出现了。
五、Delay + 反馈:构造“对变化的耐心”
工程上一个非常常见的做法是:
让系统对“微小变化”不那么敏感。
我们不是去判断瞬时 dError,而是构造一个变化的积累感:
dError_acc(k) = dError_acc(k-1) + dError(k)
Simulink 中的结构非常直观:
dError ─────┐
├─ Add ──> dError_acc
dError_acc_z1┘
你会发现:
-
又是 Delay
-
又是反馈
-
但这一次,它表达的是:
“我最近一段时间是在收敛,还是在发散?”
六、Delay 参与决策:什么时候该“收手”?
在电子节气门这类系统中,一个非常重要的工程策略是:
当系统已经明显趋稳时,不要再强行调节
于是我们可以引入这样一个判断:
if abs(dError_acc) < StableThreshold:
ConsiderStable
这意味着:
-
即使 Error 还没到 0
-
只要变化已经很小
-
系统就进入“轻控制”甚至“保持”
这一判断完全依赖 Delay 提供的历史信息。
七、Delay 的第三个角色:抑制“来回修正”
另一个非常常见的问题是:
目标位置在两个采样点之间微小波动
→ PWM 正反切换
→ 执行器抖动
工程上的解法并不是“再调 PID”,
而是让控制指令本身具备惯性。
实现方式非常朴素:
PWM_out(k) = PWM_out(k-1) + Limit(PWM_cmd - PWM_out(k-1))
在 Simulink 中:
-
PWM_out(k-1)来自 Unit Delay -
Limit控制最大变化量
这本质上是一个带速率限制的反馈系统。
八、你会发现:Delay 已经无处不在了
在这个场景里,Delay 并没有被称为:
-
“状态机”
-
“控制算法”
但它默默承担了:
-
趋势判断
-
稳定性识别
-
指令惯性
-
抖动抑制
而且所有这些,都是:
-
常数阶运算
-
无数组
-
无复杂逻辑
九、为什么这类 Delay 用法特别适合低性能 MCU?
因为:
-
每一个 Delay 只占一个变量
-
每一拍只做一次加减
-
不依赖历史缓存
-
执行路径完全确定
从代码生成角度看:
Delay = 一个静态变量 + 一次赋值
这是 MCU 最喜欢的结构。
结语:Delay,让系统“像一个有记忆的人”
如果你回看整个控制过程,会发现一个变化:
-
没有 Delay 时,系统像是:
“每一拍都失忆”
-
有了 Delay 之后,系统开始:
“记得我刚才做过什么”
而所有平顺、稳定、克制的控制行为,
本质上都来自这种“记忆”。
这也是为什么在成熟 ASW 模型中,
Delay 模块往往并不起眼,
却几乎从不缺席。
54



被折叠的 条评论
为什么被折叠?



