博客

  • PLC PID速度控制程序 – ST语言实现

    一、程序功能

    实现电机速度闭环控制

    二、完整代码

    (* PLC PID速度控制程序 - ST语言实现 *)
    PROGRAM PID_Speed_Control
    VAR
    (* 输入变量 *)
    rActualSpeed : REAL; (* 实际速度 - 来自编码器 *)
    rSetSpeed : REAL; (* 设定速度 - 目标值 *)

    (* PID参数 *)
    rKp : REAL := 0.5; (* 比例增益 *)
    rKi : REAL := 0.1; (* 积分增益 *)
    rKd : REAL := 0.05; (* 微分增益 *)

    (* 内部变量 *)
    rError : REAL; (* 误差 = 设定值 - 实际值 *)
    rErrorLast : REAL; (* 上次误差 *)
    rIntegral : REAL; (* 积分项 *)
    rDerivative : REAL; (* 微分项 *)

    (* 输出限幅 *)
    rOutput : REAL; (* PID输出值 *)
    rOutputMax : REAL := 100.0;
    rOutputMin : REAL := -100.0;

    (* 系统参数 *)
    rCycleTime : REAL := 0.01; (* 采样周期10ms *)
    bManualMode : BOOL := FALSE; (* 自动模式 *)
    END_VAR

    (* ===== PID计算 ===== *)
    IF bManualMode THEN
    (* 手动模式 *)
    rOutput := rManualOutput;
    ELSE
    (* 自动模式 *)
    rError := rSetSpeed - rActualSpeed;
    rIntegral := rIntegral + rError * rCycleTime * rKi;
    rDerivative := (rError - rErrorLast) / rCycleTime;
    rOutput := rKp * rError + rIntegral + rKd * rDerivative;

    (* 输出限幅保护 *)
    IF rOutput > rOutputMax THEN
    rOutput := rOutputMax;
    ELSIF rOutput < rOutputMin THEN
    rOutput := rOutputMin;
    END_IF;

    rErrorLast := rError;
    END_IF;

    三、调试步骤

    1. 先调Kp 2. 再加Ki 3. 最后微调Kd