← 返回
未分类 中文

imc-tuning-rules

Calculate PI/PID controller gains using Internal Model Control (IMC) tuning rules for first-order systems.
使用内部模型控制(IMC)调谐规则为一阶系统计算PI/PID控制器增益
wu-uk wu-uk 来源
未分类 clawhub v0.1.0 1 版本 100000 Key: 无需
★ 0
Stars
📥 330
下载
💾 0
安装
1
版本
#latest

概述

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 gain
  • Ki = 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:

LambdaBehavior
------------------
lambda = 0.1 * tauVery aggressive, fast but sensitive to model error
lambda = 0.5 * tauAggressive, good for accurate models
lambda = 1.0 * tauModerate, balanced speed and robustness
lambda = 2.0 * tauConservative, 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

  1. Start conservative: Use lambda = tau initially
  2. Decrease lambda carefully: Smaller lambda = larger Kp = faster but riskier
  3. Watch for oscillation: If output oscillates, increase lambda
  4. Anti-windup: Prevent integral wind-up when output saturates

版本历史

共 1 个版本

  • v0.1.0 当前
    2026-05-07 20:37 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

office-efficiency

pdf

wu-uk
全面PDF工具,支持文本/表格提取、新PDF创建、合并/拆分文档、表单处理。当Claude需要...
★ 0 📥 712
professional

A股量化 AkShare

mbpz
A股量化数据分析工具,基于AkShare库获取A股行情、财务数据、板块信息等。用于回答关于A股股票查询、行情数据、财务分析、选股等问题。
★ 196 📥 63,732
professional

Stock Market Pro

kys42
Yahoo Finance (yfinance) 驱动的股票分析技能:行情报价、基本面、ASCII 趋势图、高分辨率图表(RSI/MACD/BB/VWAP/ATR),以及可选的网络...
★ 165 📥 40,317