PID的控制量和反馈信号的关系

  在PID控制系统中,计算出的控制量(输出)和反馈信号(Process Variable, PV)并不必须是相同的物理量,但两者必须通过合理的转换关系建立联系,以确保控制逻辑的有效性。以下是关键分析:

  (1)核心原则:量纲一致性
  允许不同物理量:PID的输入(误差)和输出可以是不同物理量,但需通过标度变换或传递函数建立关联。
  示例:
    温度控制:反馈是温度(℃),输出是PWM占空比(%)。
    速度控制:反馈是转速(RPM),输出是电压(V)或电流(mA)。
  (2)典型应用场景
  1) 不同物理量的控制

 

  2) 代码实现(温度→PWM占空比)

float PID_Output = PID_Calculate(desired_temp, current_temp); // 输出为无量纲值
TIM1->CCR1 = (uint16_t)(PID_Output * MAX_PWM); // 转换为PWM占空比

  (3)关键处理技术
    1) 归一化(Normalization)
    将不同量纲的信号统一到相同范围(如0~1):

// 温度反馈归一化(假设量程0~100℃)
float normalized_pv = current_temp / 100.0f;
// PID输出反归一化为电压(0~10V)
float output_voltage = PID_Output * 10.0f;

    2) 物理模型转换
    通过数学模型连接不同物理量:

// 电机控制:转速(RPM)→ 电压(V)
float voltage = K * desired_rpm + friction_compensation;

    3) 查表法(LUT)
    复杂非线性关系时使用查表:

// 压力→阀门开度(非线性)
uint8_t valve_open = valve_LUT[(int)(current_pressure * 10)];

  (4)注意事项
  动态响应匹配:
    反馈信号和输出信号的响应速度需协调(如温度变化慢,PWM调节需平滑)。
  单位一致性:
    PID参数(Kp/Ki/Kd)需根据实际物理量调整单位。
    例如:温度误差1℃ → PWM变化5%,则Kp=5.0(%/℃)。
  饱和处理:
    不同物理量可能有不同的输出限幅(如电压不超过12V)。
  (5)特殊案例
  多层级控制(串级PID)
  外层PID输出作为内层PID的目标值:
    速度环(RPM)→ 电流环(A)→ 实际PWM输出

// 外层PID(速度→电流)
float target_current = Outer_PID(desired_rpm, current_rpm);
// 内层PID(电流→PWM)
float pwm_duty = Inner_PID(target_current, sense_current);

  (6)总结
  PID输入/输出可为不同物理量,但需通过标度变换、数学模型或查表建立关联。
  设计要点:
    确保控制链路的物理逻辑合理。
    处理单位转换和限幅。
    匹配动态响应特性。
  优势:灵活适配复杂控制系统(如温度、压力、运动等多物理量耦合场景)。

 

posted @ 2025-05-21 15:30  孤情剑客  阅读(323)  评论(0)    收藏  举报