下载PPT文档

Download Report

Transcript 下载PPT文档

2011-2012学年第二学期第一讲
系统辨识
王国利
信息科学与技术学院
中山大学
课程安排
时间和学时安排
- 课时: 18 X 3 学时
- 讲课: 2 X 15周(周五4-5节, C104)
- 实践: 2 X 7周(双周二8-9节双, 实验教学中心B201)
- 课件: http://human-robot.sysu.edu.cn/course/sysid12.htm
- 答疑: [email protected]
成绩评定
- 参与教学: 10%
- 课程实践: 30%
- 课程考试: 60%
系统辨识是什么?
任务和目的
借助
实验数据
建立动态系统的
数学模型
系统的知识
信号与系统
以飞机为例
副翼/
升降舵
强风/
涡流
姿态/
位置
SISO系统
连续系统离散化
采样周期:h
动态系统模型
差分方程
动态: 变量过去和当前的值影响到未来的值
y(t) – 1.5y(t –T)+ 0.7y(t – 2T)= 0.9u(t – 2T)+ 0.5u(t – 3T)
y(t) = 1.5y(t –T)- 0.7y(t – 2T)+ 0.9u(t – 2T)+ 0.5u(t – 3T)
参数: 1.5, -0.7, 0.9, 0.5
时滞: 输出T, 2T 两项,输入2T, 3T 两项
阶数: 输出和输入的时滞项数
模型性质
脉冲响应形式
y(k) =i=0,k g(i)u(k− i)+v(k)
{g(i)}: 系统的脉冲响应序列
阶跃响应
y(k) =i=0,k g(i)+v(k)
频域响应: 正旋信号输出的幅值增益和相位偏移
分别对应Bode图
线性模型
频域形式
Z-变换:
F(z) = i=0,∞ f(i)z−i
Y(z) =G(z)U(z)+H(z)V(z)
G: 系统传递函数
H: 干扰传递函数
状态方程
x(t+1)=Ax(t)+Bu(t)+Ke(t)
y(t)=Cx(t)+Du(t)+e(t)
若干信号的统计量
均值和方差
{s(k)} = {s(0), s(1), ...s(N)}
均值
协方差
做一个练习
任务:在MATLAB环境下,生成两个随机序列{S(k)}
和{R(k)} ,长度1000
>> S = 3*randn(1000,1)+10;
>> R = 6*randn(1000,1)+20;
>> mS = mean(S)
>> mR = mean(R)
>> covS = cov(S)
>> covR = cov(R)
>> Z = [S R];
>> covZ = cov(Z)
模型与系统
控制设计
预测 (e.g. 天气预报)
信号处理(e.g. 消除回声)
系统仿真 (e.g. 模拟核爆)
故障诊断 (e.g. 危险物质泄漏检测)
辨识的基本思想
基本环节
输入
输入测
量噪声
系统
+
达到要求
+
+
输入测
量噪声
候选模型集
辨识准测
辨识算法
辨识准则
系统模型
更新系统模型
修改模型
调整参数
未达到
要求
辨识结果
辨识的基本步骤
待辨识系统
明确辨识目的
收集先验知识
实验设计
数据采集、存
储、预处理
模型及选择
辨识方法
模型集不合适
实验数据无效
模型检验
符合要求
模型输出
实例
干扰的困扰
G(s)=1/(0.25s2+0.33s + 1)
噪声方差为 0.001
1.6
1.4
1.2
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
5
MATLAB初识
DC Motor Control
R = 2.0;
% Ohms
L = 0.5;
% Henrys
Km = 0.1; Kb = 0.1; % torque and back emf constants
Kf = 0.2;
% Nms
J = 0.02;
% kg.m^2/s^2
基尔霍夫定律
(Ls+R)ia+kb=va
牛顿第二定律
(Js+kf)=kmia,
MATLAB初识(续)
阶跃响应
>> h1 = tf(Km,[L R]);
>> h2 = tf(1,[J Kf]);
% armature
% eqn of motion
>> dcm = ss(h2) * [h1 , 1];
>> dcm = feedback(dcm,Kb,1,1);
% w = h2 * (h1*Va + Td)
% close back emf loop
>>stepplot(dcm(1))
MATLAB初识(续)
前馈控制
>> Kff = 1/dcgain(dcm(1))
>> t= 0:0.1:15;
>> Td = -0.1 * (t>5 & t<10);
>> u = [ones(size(t)) ; Td];
% load disturbance
% w_ref=1 and Td
>> cl_ff = dcm * diag([Kff,1]);
% add feedforward gain
>> set(cl_ff,'InputName',{'w_ref','Td'},'OutputName','w');
>> h = lsimplot(cl_ff,u,t);
>> title('Setpoint tracking and disturbance rejection')
>> legend('cl\_ff')
% Annotate plot
>> line([5,5],[.2,.3]); line([10,10],[.2,.3]);
>> text(7.5,.25,{'disturbance','T_d = -0.1Nm'},...
'vertic','middle','horiz','center','color','r');
MATLAB初识(续)
前馈的控制结果
MATLAB初识(续)
反馈控制
>> h = rlocusplot(tf(1,[1 0]) * dcm(1));
>> setoptions(h,'FreqUnits','rad/sec');
>> set(gca,'Xlim',[-15 5],'Ylim',[-15 15]);
MATLAB初识(续)
>> K = 5;
>> C = tf(K,[1 0]);
>>
>>
>>
>>
>>
% compensator K/s
cl_rloc = feedback(dcm * append(C,1),1,1,1);
h = lsimplot(cl_ff,cl_rloc,u,t);
set(cl_rloc,'InputName',{'w_ref','Td'},'OutputName','w');
title('Setpoint tracking and disturbance rejection')
legend('feedforward','feedback w/
rlocus','Location','NorthWest')
MATLAB初识(续)
反馈的控制结果