/install hvac-control-imc-tuning-rules
IMC Tuning Rules for PI/PID Controllers
Overview
Internal Model Control (IMC) is a systematic method for tuning PI/PID controllers based on a process model. Once you've identified system parameters (K and tau), IMC provides controller gains.
Why IMC?
- Model-based: Uses identified process parameters directly
- Single tuning parameter: Just choose the closed-loop speed (lambda)
- Guaranteed stability: For first-order systems, always stable if model is accurate
- Predictable response: Closed-loop time constant equals lambda
IMC Tuning for First-Order Systems
For a first-order process with gain K and time constant tau:
Process: G(s) = K / (tau*s + 1)
The IMC-tuned PI controller gains are:
Kp = tau / (K * lambda)
Ki = Kp / tau = 1 / (K * lambda)
Kd = 0 (derivative not needed for first-order systems)
Where:
Kp= Proportional gainKi= Integral gain (units: 1/time)Kd= Derivative gain (zero for first-order)lambda= Desired closed-loop time constant (tuning parameter)
Choosing Lambda (λ)
Lambda controls the trade-off between speed and robustness:
| Lambda | Behavior |
|---|---|
lambda = 0.1 * tau |
Very aggressive, fast but sensitive to model error |
lambda = 0.5 * tau |
Aggressive, good for accurate models |
lambda = 1.0 * tau |
Moderate, balanced speed and robustness |
lambda = 2.0 * tau |
Conservative, robust to model uncertainty |
Default recommendation: Start with lambda = tau
For noisy systems or uncertain models, use larger lambda. For precise models and fast response needs, use smaller lambda.
Implementation
def calculate_imc_gains(K, tau, lambda_factor=1.0):
"""
Calculate IMC-tuned PI gains for a first-order system.
Args:
K: Process gain
tau: Time constant
lambda_factor: Multiplier for lambda (default 1.0 = lambda equals tau)
Returns:
dict with Kp, Ki, Kd, lambda
"""
lambda_cl = lambda_factor * tau
Kp = tau / (K * lambda_cl)
Ki = Kp / tau
Kd = 0.0
return {
"Kp": Kp,
"Ki": Ki,
"Kd": Kd,
"lambda": lambda_cl
}
PI Controller Implementation
class PIController:
def __init__(self, Kp, Ki, setpoint):
self.Kp = Kp
self.Ki = Ki
self.setpoint = setpoint
self.integral = 0.0
def compute(self, measurement, dt):
"""Compute control output."""
error = self.setpoint - measurement
# Integral term
self.integral += error * dt
# PI control law
output = self.Kp * error + self.Ki * self.integral
# Clamp to valid range
output = max(output_min, min(output_max, output))
return output
Expected Closed-Loop Behavior
With IMC tuning, the closed-loop response is approximately:
y(t) = y_setpoint * (1 - exp(-t / lambda))
Key properties:
- Rise time: ~2.2 * lambda to reach 90% of setpoint
- Settling time: ~4 * lambda to reach 98% of setpoint
- Overshoot: Minimal for first-order systems
- Steady-state error: Zero (integral action eliminates offset)
Tips
- Start conservative: Use
lambda = tauinitially - Decrease lambda carefully: Smaller lambda = larger Kp = faster but riskier
- Watch for oscillation: If output oscillates, increase lambda
- Anti-windup: Prevent integral wind-up when output saturates
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install hvac-control-imc-tuning-rules - 安装完成后,直接呼叫该 Skill 的名称或使用
/hvac-control-imc-tuning-rules触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
imc-tuning-rules 是什么?
Calculate PI/PID controller gains using Internal Model Control (IMC) tuning rules for first-order systems. 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 74 次。
如何安装 imc-tuning-rules?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install hvac-control-imc-tuning-rules」即可一键安装,无需额外配置。
imc-tuning-rules 是免费的吗?
是的,imc-tuning-rules 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
imc-tuning-rules 支持哪些平台?
imc-tuning-rules 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 imc-tuning-rules?
由 wu-uk(@wu-uk)开发并维护,当前版本 v0.1.0。