直流电机控制器的鲁棒整定
这个例子展示了如何在参数不完全已知的情况下对直流电机的PID控制器进行鲁棒整定。
直流电机建模
以“直流电动机伺服控制器的鲁棒性”为例,推导了直流电动机的不确定性模型。施加电压到角速度的传递函数为
阻力在哪里,电感,电磁场常数,电枢常数,粘性摩擦,惯性载荷是电机的物理参数。这些参数并不是完全已知的,并且容易发生变化,因此我们将它们建模为具有特定范围或百分比不确定性的不确定值。
R = ureal(“R”2,“比例”, 40);L = ureal(“L”, 0.5,“比例”, 40);K = ureal(“K”, 0.015,“范围”[0.012 - 0.019]);Km = K;Kb = K;Kf = ureal(Kf的, 0.2,“比例”, 50);J = ureal(“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 =可调谐pid (“C”,“pid”);AP =分析点(“dLoad”);CL0 =反馈(AP*P*C,1);CL0。InputName =“SpeedRef”;CL0。OutputName =“速度”;
图1:直流电机PID控制
有许多方法可以指定所需的性能。在这里,我们主要关注负载扰动、滚脱和闭环动力学的敏感性。
R1 = TuningGoal。灵敏度(“dLoad”,tf([1.25 0],[1 2]));R2 = TuningGoal。MaxLoopGain (“dLoad”10 (1);R3 = TuningGoal。波兰人(“dLoad”, 0.1, 0.7, 25);
第一个目标R1
为灵敏度函数指定所需的概要文件。为了更好地抑制干扰,在低频时灵敏度应较低。第二个目标R2
超过10 rad/s后,滚转速度为-20 dB/decade。第三个目标R3
指定闭环极点的最小衰减、最小阻尼和最大固有频率。
viewGoal (R1)
viewGoal (R2)
viewGoal (R3)
您现在可以使用systune
稳健性调整PID增益,也就是说,尽量满足的设计目标所有不确定直流电机参数的可能值。因为可能存在局部极小值,所以从三组不同的初始增益值执行三次单独的调优。
opt = systuneOptions(“RandomStart”2);rng(0), [CL,fSoft] = systune(CL0,[R1 R2 R3],opt);
标称调优:设计1:软= 0.838,硬= -Inf设计2:软= 0.838,硬= -Inf设计3:软= 0.914,硬= -Inf设计2:软:[0.838,2.01],硬:[-Inf,-Inf],迭代= 40软:[0.875,1.76],硬:[-Inf,-Inf],迭代= 29软:[0.935,2.77],硬:[-Inf,-Inf],迭代= 27软:[1.35,1.35],硬:[-Inf,-Inf],迭代= 35最终:软= 1.35,硬= -Inf,迭代= 131设计1:软:[0.838,1.99],硬:[-Inf,-Inf],迭代= 65软:[0.875,1.77],硬:[-Inf,-Inf],迭代= 29软:[0.935,2.77],硬:[-Inf,-Inf],迭代= 27软:[1.35,1.35],硬:[-Inf,-Inf],迭代= 35 Final:软=[0.914,2.38],硬:[-Inf,-Inf],迭代= 57软:[0.875,1.76],硬:[-Inf,-Inf],迭代= 80软:[0.935,2.77],硬:[-Inf,-Inf],迭代= 28软:[1.35,1.35],硬:[-Inf,-Inf],迭代= 35 Final: [-Inf,-Inf]软= 1.35,硬= -Inf,迭代= 200
最终值接近于1,因此在整个不确定性范围内几乎实现了调优目标。整定PID控制器为
showTunable (CL)
C = 1 s Kp + Ki *——+ Kd * -------- s Tf*s+1 with Kp = 33.8, Ki = 83.2, Kd = 2.34, Tf = 0.028名称:C并行形式连续时间PIDF控制器。
接下来检查PID如何拒绝30个随机选择的不确定参数值的阶跃负载扰动。
S = getSensitivity(CL,“dLoad”);clf, step(usample(S,30),getNominal(S),3)“负载干扰抑制”)传说(“采样的不确定性”,“名义”)
拒有较大的植物变异,其拒接性能仍保持一致。您还可以验证灵敏度函数稳健地保持在规定的范围内。
viewGoal (R1, CL)
使用systune
是很容易的。只需在可调闭环模型中加入植物不确定性即可尿素的
对象,软件自动尝试实现整个不确定性范围的调优目标。