直流电动机控制器的鲁棒调谐
这个例子展示了如何对参数不完全已知的直流电动机的PID控制器进行鲁棒调谐。
直流电机建模
以“直流电动机伺服控制器的鲁棒性”为例,导出了直流电动机的不确定模型。施加电压对角速度的传递函数由
阻力在哪?,电感
,电动势常数
、电枢常数
,粘性摩擦
、惯性载荷
为电机的物理参数。这些参数不是完全已知的,并且会发生变化,因此我们将它们建模为具有指定范围或百分比不确定性的不确定值。
R =真实的(“R”2,“比例”, 40);L =真实的(“L”, 0.5,“比例”, 40);K =真实的(“K”, 0.015,“范围”[0.012 - 0.019]);Km = K;Kb = K;Kf = ureal(Kf的, 0.2,“比例”, 50);J = n = n“J”, 0.02,“比例”, 20);P = tf(Km,[J*L J*R+Kf*L Km*Kb+Kf*R]);P.InputName =“电压”;P.OutputName =“速度”;
时间和频率响应函数像一步
或波德
自动采样范围内的不确定参数。这有助于衡量不确定性的影响。例如,绘制不确定对象的阶跃响应P
注意器件直流增益的大变化。
步骤(P, getNominal (P), 3)传说(“采样的不确定性”,“名义”)
鲁棒PID整定
为了稳健性地调整这个直流电机的PID控制器,创建一个可调整的PID块C
并构造闭环模型CL0
图1中的反馈回路。添加一个分析点dLoad
在装置输出端测量对负载扰动的灵敏度。
C = tunablePID()“C”,“pid”);AP =分析点“dLoad”);CL0 = feedback(AP*P*C,1);CL0。InputName =“SpeedRef”;CL0。OutputName =“速度”;
图1:直流电机的PID控制
有许多方法可以指定所需的性能。在这里,我们关注的是对负载扰动、滚转和闭环动力学的灵敏度。
R1 = TuningGoal。灵敏度(“dLoad”,tf([1.25 0],[12 2]);R2 = TuningGoal。MaxLoopGain (“dLoad”10 (1);R3 = TuningGoal。波兰人(“dLoad”, 0.1, 0.7, 25);
第一个目标R1
指定灵敏度函数所需的配置文件。在低频时,灵敏度应较低,以获得良好的抗干扰性。第二个目标R2
超过10 rad/s时施加-20 dB/ 10的滚降。第三个目标R3
指定闭环极点的最小衰减、最小阻尼和最大固有频率。
viewGoal (R1)
viewGoal (R2)
viewGoal (R3)
你现在可以使用systune
稳健地调整PID增益,也就是说,尝试满足设计目标所有不确定直流电机参数的可能值。因为可能存在局部最小值,所以从三组不同的初始增益值中执行三次单独的调优。
opt = systemeoptions (“RandomStart”2);rng(0), [CL0, fSoft] = systune(CL0,[R1 R2 R3],opt);
标称调谐:设计1:Soft = 0.838, Hard = -Inf设计2:Soft = 0.838, Hard = -Inf设计3:Soft = 0.914, Hard = -Inf设计3:Soft = 0.914, Hard = -Inf设计2:Soft: [0.838,2.01], Hard: [-Inf,-Inf], Iterations = 40稳健调谐设计2:Soft: [0.838,2.01], Hard: [-Inf,-Inf], Iterations = 29 Soft: [0.935, 1.77], Hard: [-Inf,-Inf], Iterations = 28 Soft: [1.35,1.35], Hard: [-Inf,-Inf], Iterations = 35最终:Soft = 1.35, Hard = -Inf, Iterations = 132稳健调谐设计1:Soft: [0.838,1.96], Hard:[-Inf,-Inf], Iterations = 65 Soft: [0.875,1.78], Hard: [-Inf,-Inf], Iterations = 28 Soft: [0.935,2.77], Hard: [-Inf,-Inf], Iterations = 27 Soft: [0.914, 1.35], Hard: [-Inf,-Inf], Iterations = 35 Final: Soft: [1.01,3.38], Hard: [-Inf,-Inf], Iterations = 57 Soft: [1.01,3.38], Hard: [-Inf,-Inf], Iterations = 27 Soft: [0.948,2.32], Hard: [-Inf,-Inf], Iterations = 66 Soft: [1.32,1.41], Hard: [-Inf,-Inf], Iterations = 30 Soft: [0.875,1.78], Soft: [-Inf,-Inf], Iterations = 30 Soft:[1.35,1.35], Hard: [-Inf,-Inf], Iterations = 22 Final: Soft = 1.35, Hard = -Inf, Iterations = 202
最终值接近于1,因此在整个不确定性范围内几乎实现了调优目标。整定后的PID控制器为
showTunable (CL)
C = 1 s Kp + Ki *—+ Kd * -------- s Tf*s+1, Kp = 33.8, Ki = 83.2, Kd = 2.34, Tf = 0.028
接下来检查这个PID如何拒绝阶跃负载干扰的30个随机选择的不确定参数值。
S = getSensitivity(CL;“dLoad”);2、step(ussample (S,30),getNominal(S),3)“抗负载干扰”)传说(“采样的不确定性”,“名义”)
拒绝性能保持一致,尽管有很大的工厂差异。您还可以验证灵敏度函数是否稳稳地保持在规定的范围内。
viewGoal (R1, CL)
鲁棒调优systune
是很容易的。只需在可调闭环模型中包含植物不确定性尿素的
对象,软件自动尝试在整个不确定范围内实现调优目标。