一、程序功能
实现电机速度闭环控制
二、完整代码
(* 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