系统辨识.docx
- 文档编号:15217924
- 上传时间:2023-07-02
- 格式:DOCX
- 页数:18
- 大小:110.24KB
系统辨识.docx
《系统辨识.docx》由会员分享,可在线阅读,更多相关《系统辨识.docx(18页珍藏版)》请在冰点文库上搜索。
系统辨识
研究生课程实验封面
课程名称:
报告题目:
学生学号:
学生姓名:
任课教师:
学位类别:
评分标准及分值
选题与参阅资料
(分值10)
报告内容
(分值60)
报告表述
(分值20)
创新性
(分值10)
评分
报告评语:
总评分
评阅教师:
评阅时间
年月日
注:
此表为每个学生的报告封面,请任课教师填写分项分值
1系统辨识部分
1.1题目
直流电动机的辨识与自适应系统设计与仿真
1.1.1工作原理
图1是一台最简单的直流电动机的模型,N和S是一对固定的磁极(一般是电磁铁,也可以是永久磁铁)。
磁极之间有一个可以转动的铁质圆柱体,称为电枢铁芯。
铁芯表面固定一个用绝缘导体构成的电枢线圈abcd,线圈的两端分别接到相互绝缘的两个弧形铜片上,弧形铜片称为换向片,它们的组合体称为换向器。
在换向器上放置固定不动而与换向片滑动接触的电刷A和B,线圈abcd通过换向器和电刷接通外电路。
电刷铁芯、电刷线圈和换向器构成的整体称为电枢。
此模型作为电动机运行时,将直流电源加于电刷A和B,例如将电源正极加于电刷A,将电源负极加于电刷B,则线圈abcd中流过电流。
在导体ab中,电流由a流向b,在导体cd中,电流由c流向d。
载流导体ab和cd均处于N和S极之间的磁场中,受到电磁力的作用。
电磁力的方向由左手定则确定,可知这一对电磁力形成一个转矩,称为电磁转矩,转矩的方向为逆时针方向,使整个电刷逆时针方向旋转。
当电刷旋转180度,导体cd和ab交换位置,如图1所示。
由于电流仍从电刷A流入,使cd中的电流变为由d流向c,而ab中的电流由b流向a,从电刷B流出,用左手定则判别可知,电磁转矩的方向仍是逆时针方向。
由此可见,加于直流电动机的直流电流,借助换向器和电刷的作用,变为电枢线圈中的交变电流。
这种将直流电流变为交变电流的过程称为逆变。
由于电刷线圈所处的磁极也是同时交变的,这使电刷产生的电磁转矩的方向恒定不变,从而确保直流电动机朝确定的方向连续旋转。
这就是直流电动机的基本工作原理。
图1直流电机工作的基本工作原理
1.2辨识目的
对于一个系统,为什么要对它进行辨识?
辨识的意义又在哪里?
这些问题在很久以前就有人提出过,也进行过深入的研究,并总结出一套成熟的方法:
最小二乘辨识方法、最大似然辨识方法、梯度法辨识等等。
然而,这些方法在线性问题上容易解决,而在非线性问题上却相对较复杂,且方法并非唯一,而且找不到统一的设计模式,只能是针对具体问题分析其分线性的问题所在,抓住其影响系统动、静态品质的要害,研究辨识非线性系统模型及控制的理论和方法,进而对系统进行辨识、补偿或控制。
所以,若能够通过辨识得到其精确的模型,则是控制问题的关键。
而本设计中,涉及到的也是相同的问题,对于直流电机,我们给定输入,由输出与输入的相应关系,我们便可以通过辨识得到直流电机的模型参数,进行可以进行模型精确的控制,而避免了对模型的不确定控制。
1.3直流电机的数学模型
直流电机电枢回路的电路方程是:
(1.1)
式(1.1)中,
是加到电机两端的电压;
是电机反电势;
是电枢电流;
是电枢回路总电阻;
是电枢回路总电感;
称为电枢回路电磁时间常数。
并且反电动势
与电机角速度
成正比:
(1.2)
式(1.2)中,
称为反电势系数;
为电机轴的转角。
对于电机而言,其转动轴上的力矩方程为:
(1.3)
式(1.3)中,
是电机的力矩系数;
是负载力矩;
是电机电枢的转动惯量。
对式(1.1)、(1.2)、(1.3)进行拉氏变换得到:
(1.4)
由式(1.4),可得从电枢电压
到转速
的传递函数:
(1.5)
很明显的看出,这是个典型的二阶系统的传递函数。
1.4系统的输入与输出
由式(1.4)的方程组可以得到相应的电动机数学模型的结构框图:
图2直流电动机数学模型结构框图
根据图2所示的直流电动机数学模型结构图,我们定义系统的输入与输出分别为:
系统的输入:
给定电压
系统的输出:
电机转速
1.5系统的数据采集
图3数据采集
直流电动机的输入给定电压
通过A/D转换给于Mcu,同时直流电动机的输出转速
经编码器测量得到,将脉冲数送于Mcu,Mcu再经串口将数据发送给电脑。
此时,电动机系统的输入与输出也得知,便可通过电脑分析求解出电机的系统模型。
其中,A/D转换采用16位精度,输入电压范围7~11V,100Hz采样频率的芯片;编码器采用500线精度,表示电机每转一圈,输出500个脉冲。
1.6输入信号的选择
输入采用幅值为7V的方波信号,如图4所示。
图4方波信号
1.7系统的仿真
由于前面所述的传递函数是连续函数,所以必须将其离散化,取采样时间为0.9s。
式(1.4)为
,现取电机的传递函数为:
(1.6)
对上式做z变换,得到离散化的传递函数为:
(1.7)
将其转换为差分方程为:
当然,一个系统并不都是理想的系统,还包括各种系统干扰,以
表示方差为零的系统干扰,于是差分方程就变为:
则,其中的参数有
=-0.7859,
=0.3679,
=59.96,
=42.59。
本系统利用最小二乘递推算法(RecursiveLeastSquares,RLS)进行辨识,将辨识的结果与理论精确值进行比较,从而分析RLS算法的优劣。
辨识模型选择
观测数据长度
,则经最小二乘递推程序仿真后得到
图5估计的参数
表1数据对比
实际数据
-0.7859
0.3679
59.9600
42.5900
估计数据
-0.7849
0.3885
59.7899
42.7652
图6最小二乘递推算法辨识曲线
附加代码如下:
clc;clear;
%对象参数
a=[1-0.78590.3679];
b=[59.9642.59];
d=1;
na=length(a)-1;nb=length(b)-1;%na、nb为A、B阶次
L=480;%仿真长度
uk=zeros(d+nb,1);%输入初值:
uk(i)表示u(k-i)
yk=zeros(na,1);%输出初值
u=7*rand(L,1);%输入采用0-7v之间的随机数
%u=7*[ones(L/4,1);-ones(L/4,1);ones(L/4,1);-ones(L/4,1)];%输入幅值为7V的方波信号
v=sqrt(100)*(rand(L,1)-0.5);%产生-0.5—0.5之间的随机数,方差为100
theta=[a
(2)a(3)b
(1)b
(2)];%对象参数真值
thetae_1=zeros(na+nb+1,1);%thetae初值
P=10^6*eye(na+nb+1);
fork=1:
L
phi=[-yk;uk(d:
d+nb)];%′此处phi为列向量
y(k)=-a(2:
na+1)*yk+b*uk(d:
d+nb)+xi(k);%采集输出数据y(k)
%递推最小二乘法
K=P*phi/(1+phi'*P*phi);
thetae(:
k)=thetae_1+K*(y(k)-phi'*thetae_1);
P=(eye(na+nb+1)-K*phi')*P;
%更新数据
thetae_1=thetae(:
k);
fori=d+nb:
-1:
2
uk(i)=uk(i-1);
end
uk
(1)=u(k);
fori=na:
-1:
2
yk(i)=yk(i-1);
end
yk
(1)=y(k);
end
plot([1:
L],thetae);%line([1,L],[theta,theta]);
xlabel('k');
legend('a1','a2','b1','b2');
title('最小二乘递推算法辨识曲线');
2自适应控制部分
2.1提出控制问题
直流电机在生活中、工业生产中等用的特别多,而电机的转动容易受输入电压的影响,电压小小的波动就会带动电机转速的波动、超调等,针对这种情况,文中在总结和分析前人的工作的基础上,提出将带有在线辨识的自适应算法应用于电机控制系统中,旨在打破传统的控制策略,寻求更有效的控制方案。
将在线辨识自适应控制算法应用于该系统,利用系统的输入、输出信息,为了实现自适应控制和跟踪时变参数,采用递推最小二乘算法不断的循环调整PID参数值,使系统运行中保持合适的瞬态参数,以克服传统PID控制器参数不可改变的缺点,提高系统的控制品质,使直流电机系统具有更好的鲁棒性和自适应能力。
2.2自适应控制硬件
直流电机控制系统硬件框图如图2.1所示,其工作原理大致如下:
Mcu作为自适应控制的核心器件,得到经A/D转换来的输入模拟信号,再结合编码器反馈回来的直流电机的转速n(k),经MCU的自适应控制算法计算,输出信号u(k)给电子调速器,电子调速器可以将直流电压转换为三相电压信号送予直流电机,其中,编码器是将电机的转速转换为脉冲信号反馈给Mcu。
图2.1直流电机控制系统硬件框图
2.2算法推导及Matlab仿真
系统采用自适应极点配置PID控制算法对直流电机的转速进行自适应控制,控制算法结构框图如图2.2所示,控制系统由被控对象、控制器、辨识器构成,辨识器根据最小二乘递推算法,在线地计算被控对象的未知参数,控制器根据辨识参数调整PID参数,经过不断的辨识和调整,使被控系统的性能指标渐近一致地趋于最优。
图2.2具有在线辨识的直流电机自适应控制系统
被控对象为:
式中
为白噪声。
下面首先首先实现极点配置PID算法,即离线控制,然后再这个基础之上,实现在线系统辨识的自适应极点配置PID控制算法。
设被控对象为
式中,
和
表示系统的输入和输出,
为外部扰动,
为纯延时,且
对于本文的直流电机,d=1,
。
令期望闭环特征多项式为:
式中,
和
可以根据连续系统的特征多项式
离散化得到,即
其中,
,
,
为采样周期。
根据期望系统模型参数计算期望闭环系统特征多项式,本系统中,令无阻尼自然震荡角频率
rad/s,系统阻尼比
=0.707。
由
所以期望的闭环特征多项式为
下面求自适应PID控制器:
考虑如下反馈控制率
式中,
是被控过程参考输入信号。
且有,
当采用增量式PID控制器时,有如下公式成立,
式中,
考虑上一时刻控制增量
的影响,使控制量更加平稳的增量式PID控制器,
而且,
在直流电机自适应PID控制系统中,期望电机转速为
,输出电压限幅
。
实现的算法如下:
已知:
模型阶次
,
及d,期望闭环特征多项式;
Step1设置初值P(0)、
及遗忘因子
,输入初始数据和扰动;
Step2采样当前输出
和期望输出
;
Step3利用遗忘因子递推增广最小二乘法在线实时估计
,即
、
;
Step4求解单步Diophantine方程,得到多项式F,G,R的系数;
Step5代入上式计算最小方差控制率
;
Step6返回Step2,继续循环。
根据以上步骤,首先给出对象参数已知时的极点配置PID控制算法结果,如图2.3所示。
图2.3对象参数已知时的仿真结果
从图2.3可以看出,通过极点配置PID控制算法后的直流电机的转速可以很好的跟踪给定信号,而控制器的输出也会迅速根据给定信号来调节相应的参数,图中,因为加入了白噪声,所以有少许的波动。
为了更好的调节直流电机,下面通过在线辨识系统参数,再使用自适应PID控制算法,其仿真结果如图2.4。
图2.4对象参数未知时的仿真结果
观察图2.4,可以明显的观察到在前面几步控制中电机的输出转速n变动非常大,控制效果非常差,但是当这几步通过之后,RLS算法辨识出直流电机的系统参数后,经由PID控制算法,可以较好地控制电机的行为。
比较图2.3和图2.4,在线辨识与离线辨识的效果明显不同,前者除了前几步控制效果不太好之外,后期其优势明显强于后者,即在对象参数未知的情况下可以在线辨识系统并根据期望的闭环极点,配置PID参数进行控制,系统适应性非常强。
附加代码:
%PID极点配置控制(二阶系统,对象参数已知)
clc
a=[1-0.78590.3679];b=[59.9642.59];d=1;
Am=[1-0.0103exp(-5)];%对象参数及期望闭环特征多项式
na=length(a)-1;
nb=length(b)-1;
nam=length(Am)-1;%na、nb、nam为多项式A、B、Am阶次
nf1=nb+d+2-(na+1)+1;ng=2;%nf1=nf+1
%求解Diophantine方程,得到F、G、R
[F,G]=diophantine(conv(a,[1-1]),b,d,1,Am);%A0=1
F1=conv(F,[1-1]);R=sum(G);
L=500;%控制步数
uk=zeros(d+nb,1);%输入初值:
uk(i)表示u(k-i)
yk=zeros(na,1);%输出初值
yr=1000*[ones(L/4,1);-ones(L/4,1);ones(L/4,1);-ones(L/4,1)];%期望输出,方波信号
%e=2*ones(L,1);%常值干扰
%加入白噪声告干扰
%e2=2*ones(L,1);
%labda=random('Normal',0,1,L,1)*20;
%fori=1:
L
%e(i)=e2(i)*labda(i);
%end
%e=sqrt(1000)*randn(L,1);%白噪声序列
e=sqrt(0.1)*(rand(L,1)-0.5);%产生-0.5—0.5之间的随机数,方差为100
fork=1:
L
time(k)=k;
y(k)=-a(2:
na+1)*yk+b*uk(d:
d+nb)+e(k);%采集输出数据
u(k)=(-F1(2:
nf1+1)*uk(1:
nf1)+R*yr(k)-G*[y(k);yk(1:
ng)])/F1
(1);%求控制量
%输出电压限幅
ifu(k)>=15
u(k)=15;
elseifu(k)<=-15
u(k)=-15;
end
end
%更新数据
fori=d+nb:
-1:
2
uk(i)=uk(i-1);
end
uk
(1)=u(k);
fori=na:
-1:
2
yk(i)=yk(i-1);
end
yk
(1)=y(k);
end
subplot(2,1,1);
plot(time,yr(1:
L),'r:
',time,y);
xlabel('步数');ylabel('转速');
legend('期望转速','实际转速');
gridon
subplot(2,1,2);
plot(time,u);
xlabel('步数');ylabel('控制器输出(电压)');
gridon
%自校正PID控制(二阶系统,对象参数未知)
clc
a=[1-0.78590.3679];b=[59.9642.59];d=1;
Am=[1-1.32050.4966];%对象参数及期望闭环特征多项式
na=length(a)-1;nb=length(b)-1;nam=length(Am)-1;%na、nb、nc、nam为多项式A、B、C、Am阶次
nf1=nb+d+2-(na+1)+1;ng=2;%nf1=nf+1
L=500;%控制步数
uk=zeros(d+nb,1);%输入初值:
uk(i)表示u(k-i)
yk=zeros(na,1);%输出初值
yr=1000*[ones(L/4,1);-ones(L/4,1);ones(L/4,1);-ones(L/4,1)];%期望输出
%加入白噪声告干扰
%e2=2*ones(L,1);
%labda=random('Normal',0,1,L,1)*20;
%fori=1:
L
%e(i)=e2(i)*labda(i);
%end
%e=sqrt(1000)*randn(L,1);%白噪声序列
e=sqrt(0.1)*(rand(L,1)-0.5);%产生-0.5—0.5之间的随机数,方差为100
%RLS初值
thetae_1=0.001*ones(na+nb+1,1);%初始化
P=10^6*eye(na+nb+1);
fork=1:
L
time(k)=k;
y(k)=-a(2:
na+1)*yk+b*uk(d:
d+nb)+e(k);%采集输出数据
%递推最小二乘法
phie=[-yk(1:
na);uk(d:
d+nb)];
K=P*phie/(1+phie'*P*phie);
thetae(:
k)=thetae_1+K*(y(k)-phie'*thetae_1);
P=(eye(na+nb+1)-K*phie')*P;
%提取辨识参数
ae=[1thetae(1:
na,k)'];be=thetae(na+1:
na+nb+1,k)';
%计算Diophantine方程,得到F、G、R
[F,G]=diophantine(conv(ae,[1-1]),be,d,1,Am);%A0=1
F1=conv(F,[1-1]);R=sum(G);
u(k)=(-F1(2:
nf1+1)*uk(1:
nf1)+R*yr(k)-G*[y(k);yk(1:
ng)])/F1
(1);%求控制量
%输出电压限幅
ifu(k)>=15
u(k)=15;
elseifu(k)<=-15
u(k)=-15;
end
end
%更新数据
thetae_1=thetae(:
k);
fori=d+nb:
-1:
2
uk(i)=uk(i-1);
end
uk
(1)=u(k);
fori=na:
-1:
2
yk(i)=yk(i-1);
end
yk
(1)=y(k);
end
figure
(1)
subplot(2,1,1);
plot(time,yr(1:
L),'r:
',time,y);
xlabel('步数');ylabel('转速');
legend('期望转速','实际转速');
gridon
subplot(2,1,2);
plot(time,u);
xlabel('步数');ylabel('控制器输出(电压)');
gridon
figure
(2)
subplot(211)
plot([1:
L],thetae(1:
na,:
));
xlabel('k');ylabel('参数估计a');
legend('a1','a2');gridon
subplot(212)
plot([1:
L],thetae(na+1:
na+nb+1,:
));
xlabel('k');ylabel('参数估计b');
legend('b1','b2');gridon
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 系统 辨识