控制系统CAD案例

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

控制系统CAD 案例2

【例1】 已知单位反馈系统的被控对象的开环单位阶跃响应数据(存在随机扰动)在文件SourseData.mat 中,tout 是采样时间点,yout 是对应于采样时间点处的单位阶跃响应数据。

试设计串联补偿器,使得:① 在单位斜坡信号t t r )(的作用下,系统的速度误差系数K v ≥30sec -1;② 系统校正后的截止频率ωc ≥2.3sec -1;③ 系统校正后的相位稳定裕度P m ≥40°。

设计步骤:

1 根据原始数据得到被控对象的单位阶跃响应 被控对象的开环单位阶跃响应数据在文件SourseData.mat 中。

在MATLAB 指令窗中键入:

>> load SourseData

>> plot(tout,yout)

>> xlabel('tout')

>> ylabel('yout')

>> title('原始响应曲线')

由所给数据可看出,仿真步长为0.05s,仿真时间为10s。以时间tout为横坐标,输出yout为纵坐标,得到单位阶跃响应随时间的变化曲线如图1所示。

图1 被控对象的单位阶跃响应

2系统模型的辨识

由于被控对象模型结构未知,题中仅给出了被控对象的单位阶跃响应。因此需要根据原始的数据分析得出原系统的基本结构。至于结构以及参数的最终确定,将使用MATLAB 的系统辨识工具箱来实现。

(1) 预处理

由图1可以看出被控对象模型中含积分环节,因此,对响应输出求导后进行辨识,即去积分。再对辨识出的模型积分,即得被控对象模型。

对给定输出进行求导处理:

t

t y t t y t y ∆-∆+≈)()(d d 在MATLAB 指令窗中键入:

>> dy=(yout(2:end,:)-yout(1:end-1,:))/0.05;

% 差分代替导数

>> t=tout(1:end-1,:);

>> plot(t,dy)

>> xlabel('t')

>> ylabel('dy/dt')

>> title('原始响应的导数曲线')

以时间t 为横坐标,输出dy 为纵坐标,得到单位阶跃响应的导数随时间的变化曲线如图2所示。

图2被控对象的单位阶跃响应的导数

(2)系统模型结构的估计

系统辨识工具箱提供的模型结构选择函数有struc、arxstruc和selstruc。

函数struc 生成arx结构参数,调用格式为:

nn=struc (Na, Nb, Nk)

其中,Na、Nb 分别为arx模型多项式A(q)、B(q) 的阶次范围;Nk为arx模型纯滞后的大小范围;nn为模型结构参数集构成的矩阵。

函数arxstruc用来计算arx模型结构的损失函数,即归一化的输出预测误差平方和,调用格式为:

v=arxstruc (ze, zv, nn)

其中,ze=[y u]为模型辨识的I/O数据向量或矩阵。zv=[yr ur]为模型验证的I/O数据向量或矩阵。nn为多个模型结构参数构成的矩阵,nn的每行都具有格式:nn=[na nb nk]。v的第一行为各个模型结构损失函数值,后面的各行为模型结构参数。

函数selstruc 用来在损失函数的基础上进行模型结构选择,调用格式为:

[nn, vmod]=selstruc (v, c)

其中v 由函数arxstruc获得的输出矩阵,为各个模型结构的损失函数。c为可选参数,用于指定模型结构选择的方式。

根据图2所示曲线的形状初步估测被控对象的模型应该为二阶系统或者更高阶系统。并且可以看出,纯滞后为0,故Nk恒为零。

在MATLAB指令窗中键入:

>> u=ones(size(dy));

>> Z=[dy,u];

>> v2=arxstruc(Z,Z,struc(2,0:2,0));

>> nn2=selstruc(v2,0);

>> v3=arxstruc(Z,Z,struc(3,0:3,0));

>> nn3=selstruc(v3,0);

>> v4=arxstruc(Z,Z,struc(4,0:4,0));

>> nn4=selstruc(v4,0);

得到如下结果:

nn2 = 2 1 0

nn3 = 3 2 0

nn4 = 4 1 0

于是,去除积分环节后的模型阶数为:二阶系统[2 1 0]、三阶模型[3 2 0]和四阶模型[4 1 0]。

(3)系统模型结构的确定

为了确定模型结构以及参数,使用MATLAB的系统辨识工具箱中已有的辨识函数arx()。辨识函数arx()的使用方法是:如果一直输入信号的列向量u,输出信号的列向量y,并选定了系统的分子多项式阶次m-1,分母多项式阶次n及系统的纯滞后d,则可以通过下面的指令辨识出系统的数学模型:

T=arx([y,u],[ n,m,d])

该函数将直接显示辨识的结果,且所得的T为一个结构体,其中T.A和T.B分别表示辨识得到的分子和分母多项式。由给定的观测数据建立系统数学模型后,还需要进行检验,看模

型是否适用,如果不适用,则要修改模型结构,重新进行参数估计等。MATLAB的系统辨识工具箱中用于模型验证和仿真的函数主要有compare、resid、pe、predict 和idsim。此次实验主要用的是函数compare对模型进行验证。函数compare可将模型的预测输出与对象实际输出进行比较。验证过程与结果如下所示。

①对二阶系统的验证

在MATLAB指令窗中键入:

>>Z=iddata(dy,u,0.05);

>> M=arx(Z,[2,2,0]);

>> compare(M,Z)

得到图3所示结果。

相关文档
最新文档