此示例显示如何使用Control Systembox™设计用于磁盘驱动器读/写头的数字伺服控制器。
关于系统和模型的详细信息,请参见Franklin, Powell, and Workman的“动态系统的数字控制”第14章。
下面是要建模的系统的图片。
头部盘组件(HDA)和致动器由包括两个刚体模式和前四个共振的10阶传递函数建模。
模型输入是驱动音圈电机的电流ic,输出是位置误差信号(PES,以轨道宽度的%为单位)。该模型还包括一个小的延迟。
磁盘驱动器型号:
下面列出了主要灵活模式的耦合系数,阻尼和自然频率(以Hz为单位)。
模型数据:
根据这些数据,构建一个头部组件的标称模型:
负载diskdemo.gr = tf(1e6,[1 12.5 0],“outputdelay”,1E-5);GF1 = TF(W1 * [A1 B1 * W1],[1 2 * Z1 * W1 W1 ^ 2]);%首先共鸣Gf2 = tf(w2*[a2 b2*w2],[1 2*z2*w2 *w2 ^2]);%第二共振GF3 = TF(W3 * [A3 B3 * W3],[1 2 * Z3 * W3 W3 ^ 2]);%第三谐振g4 = tf(w4*[a4 b4*w4],[1 2*z4*w4 w4^2]);%第四谐振G = GR *(SS(GF1)+ GF2 + GF3 + GF4);%转换为州空间以获得准确性
绘制头部装配模型的BODE响应:
班重启G.InputName =“集成电路”;g.outputname =.'pes';h = bodeplot (G);标题('头组装模型的Bode图');setoption (h,“Frequnits”,'赫兹',“XLimMode”,“手动”,'xlim',{[1 1e5]});
伺服控制用于将读/写头“保持在轨道上。伺服控制器C(Z)是数字的,旨在将PES维持(从轨道中心偏移)接近零。
这里考虑的干扰是输入电流IC中的步骤变化D.您的任务是设计具有足够干扰抑制性能的数字补偿器C(Z)。
数字伺服的采样时间为Ts = 7e-5秒(14.2 kHz)。
下面列出了现实的设计规格。
设计规范:
开环增益> 20dB为100 Hz
带宽> 800 Hz
收益率> 10 dB
相裕度> 45度
峰闭环增益<4 dB
由于伺服控制器是数字的,因此您可以在离散域中执行设计。为此效果,使用C2D和零阶保持(ZOH)方法离散化HDA模型:
班重启Ts = 7 e-5;Gd =汇集(G, Ts);h = bodeplot (G,“b”,gd,“r”);%与连续时间模型进行比较标题('连续(蓝色)和离散(红色)HDA模型');setoption (h,“Frequnits”,'赫兹',“XLimMode”,“手动”,'xlim',{[1 1e5]});
现在到了补偿器设计。从纯集成器1 /(Z-1)开始以确保零稳态误差,绘制开环模型GD * C的根轨迹,并在“工具”菜单下使用“放大”选项缩小Z = 1。
C = TF(1,[1 -1],TS);h = rlocusplot(gd * c);setoption (h,“网格”,“上”,“XLimMode”,“手动”,'xlim'{[-1.5, 1.5]},...'ylimmode',“手动”,“YLim”, {[1]});
由于z = 1的两个极点,伺服环路对于所有正收益不稳定。为了稳定反馈回路,首先在Z = 1附近添加一对零。
C = C * ZPK([。963,.963], - 0.706,1,TS);h = rlocusplot(gd * c);setoption (h,“网格”,“上”,“XLimMode”,“手动”,'xlim',{[ - 1.25,1.25]},...'ylimmode',“手动”,“YLim”,{[ - 1.2,1.2]});
接下来通过单击轨迹来调整环路增益并在单位圆圈内拖动黑色正方形。循环增益显示在数据标记中。大约50的增益稳定循环(设置C1 = 50℃)。
C1 = 50 * c;
现在模拟对电流中的阶跃扰动的闭环响应。干扰被平滑地拒绝了,但PES太大(头偏离轨道中心的45%的轨道宽度)。
cl_step =反馈(Gd, C1);h = stepplot (cl_step);标题(阶跃干扰抑制(PES =位置误差)) setoption (h,“Xlimmode”,“汽车”,'ylimmode',“汽车”,“网格”,'离开');
接下来看看开环波德响应和稳定性边界。100hz的增益只有15 dB(相对于规格20 dB),增益裕度只有7dB,所以增加环路增益不是一个选项。
保证金(Gd * C1) diskdemo_aux1 (1);
为了给更高的低频增益腾出空间,在4000赫兹共振附近添加陷波滤波器。
W0 = 4e3 * 2*pi;缺口频率百分比,单位为rad/secNOTCH = TF([1 2 * 0.06 * W0 W0 ^ 2],[1 2 * W0 W0 ^ 2]);%连续时间缺口notchd = c2d(缺口,ts,“匹配”);%离散时间缺口C2 = C1 * notchd;h = bodeplot (notchd);标题('离散时间陷波过滤器');setoption (h,“FreqUnits”,'赫兹',“网格”,“上”);
您现在可以安全地加倍循环增益。由此产生的稳定性边缘和100Hz的增益在规格中。
C2 = 2 * C2;margin(Gd * C2) diskdemo_aux1(2);
阶跃干扰抑制也有了很大的改善。PES现在保持在赛道宽度的20%以下。
CL_STEP1 =反馈(GD,C1);CL_STEP2 =反馈(GD,C2);Stepplot(cl_step1,'r--',cl_step2,“b”) 标题(“二阶补偿C1(红色)vs.四阶补偿C2(蓝色)”)
检查T = GD * C /(1 + GD * C)(闭环灵敏度)上的3DB峰值增益规格是否:
Gd =汇集(G, Ts);Ts = 7 e-5;T =反馈(Gd * C2, 1);h = bodeplot (T);标题('闭环灵敏度T(s)'的峰值响应) setoption (h,'暂停','离开',“FreqUnits”,'赫兹',“网格”,“上”,...“XLimMode”,“手动”,'xlim',{[1E2 1E4]});
要查看峰值值,请右键单击轴并选择峰值响应选择下的选项特征菜单,然后将鼠标置于蓝色标记,或单击它。
最后,让我们分析的鲁棒性变化的阻尼和固有频率的第二和第三挠性模态。
参数变化:
生成16个型号的阵列,对应于Z2,W2,Z3,W3的极值值的所有组合:
(z2 w2、z3 w3) = ndgrid (5 * z2, 1.5 * z2,[。9 * w2, 1.1 * w2], [5 * z3、1.5 * z3],[。8 * w3, 1.2 * w3]);为j = 1:16, Gf21 (:,:, j) = .特遣部队(w2 (j) * [a2b2 * w2 (j)], [1 2 * z2 (j) * w2 (j) w2 (j) ^ 2]);休息(:,:,j) =特遣部队(w3 (j) * (a3 b3 * w3 (j)], [1 2 * z3 (j) * w3 (j) w3 (j) ^ 2]);结束G1 = GR *(SS(GF1)+ GF21 + GF31 + GF4);
将这16个模型同时离散,看看参数变化如何影响开环响应。注意:您可以单击任何曲线来识别底层模型。
Gd =汇集(G1, Ts);h = bodeplot (Gd * C2);标题('开环响应 - 蒙特卡罗分析') setoption (h,“XLimMode”,“手动”,'xlim'{(8 e2 8 e3)},'ylimmode',“汽车”,...“FreqUnits”,'赫兹','魔法师',“数据库”,“PhaseUnits”,'DEG',“网格”,“上”);
绘制这16个模型的阶跃抗扰性能图:
Stepplot(反馈(GD,C2))标题(“阶跃干扰抑制-蒙特卡罗分析”)
所有16个反应几乎相同:我们的伺服设计是稳健的!