基于matlab的全阶观测器三自由度运动系统状态反馈控制系统的仿真
原创
©著作权归作者所有:来自51CTO博客作者fpga和matlab的原创作品,请联系作者获取转载授权,否则将追究法律责任
目录
一、理论基础
二、核心程序
三、仿真测试结果
作者ID :fpga和matlab
擅长技术:
1.无线基带,无线图传,编解码
2.机器视觉,图像处理,三维重建
3.人工智能,深度学习
4.智能控制,智能优化
5.其他
一、理论基础
运动系统中的状态反馈控制是保障系统稳定运行、提高系统运动性能的重要组成部分。基于全阶观测器能够以运动物体本身作为参考模型,模拟运动物体的实际运动情况,构建状态方程对运动系统进行全面观测。由于运动系统存在多个自由度,而且任何一个自由度均对运动系统的性能存在重要影响,因此涉及到多输入、多输出、多回路的复杂系统设计。
三自由度运动控制系统被广泛应用于各行各业,尤其是随着电力行业和工业自动化的快速发展,其得到了快速发展。通常情况下,三自由度运动控制系统由三个运动链组成,每个运动链都有其特定输入和输出,然后同时并联到运动控制系统中。在运动过程中,控制系统给出Xr、Yr和Ɵ的运动位置,需要对运动物体进行坐标变化,转化为X和Y两个直接位置,才能实现三自由度运动的控制。运动位置坐标转化公式如下:
根据公式
多输入多输出系统的状态反馈结构
对多数实际被控系统,由于输入和输出之间总存在惯性,所以传递矩阵D=0。对应的状态空间表达式为
在图1中构成闭环系统以改善原被控系统的性能,其反馈控制律由状态变量乘以相应的反馈增益值,与参考输入v组成。从图2-1可以看出,反馈控制律为状态变量的线性函数,即
输出反馈是用被控系统输出向量的线性反馈构成闭环系统。图2-2是多输入多输出系统输出反馈的基本结构。
二、核心程序
clc;
clear;
close all;
warning off;
addpath 'func0\'
%%
%STEP1:车辆的数学建模
Car_3DOF = func_car_3DOF_model();
%%
%STEP2:转换为空间状态方程
[A0,B0,C0,D0] = func_ABCD_State(Car_3DOF);
%%
%STEP2:根据参数将数据进行例化
[A,B,C,D] = func_ABCD_State_example(A0,B0,C0,D0);
%%
[num,den] = ss2tf(A,B,C,D,1);
figure;
bode(num,den,'k-*');
grid on;
figure;
rlocus(num,den);
grid on;
[Z,P,K]=tf2zp(num,den);
fprintf('零极点:\n\n');
Z
P
K
[Y,T,X] = step(num,den,30);
figure;
%闭环阶跃响应
plot(X,Y,'linewidth',2);
title('阶跃响应');
grid on;
function Car_3DOF = func_car_3DOF_model();
%定义参量
syms_parameter;
%侧偏角
%前轮
Fx1 = Jd_a1 + Jd_de - Jd_bi - Coffa*Wr/Uer ;
%后轮
Fx2 = Jd_a2 + Coffb*Wr/Uer - Jd_bi;
%加速度
Fa1 = Ay - Uer*side_addspeed - Uer*Wr;
%地面对前后轮作用力
Ff1 = Fy1 - Coff1*Jd_a1;
Ff2 = Fy2 - Coff2*Jd_a2;
%力矩平衡
Fm = Jd_kd*Jd_dN - Jd_kd*Jd_de - Fy1*Xin;
%力平衡
Fl = mass*Ay - Fy1 - Fy2;
%力矩平衡
Flj = I*Driver_w - Coffa*Fy1 + Coffb*Fy2;
%汽车数学模型
Car_3DOF = solve(Fx1,Fx2,Fa1,Ff1,Ff2,Fm,Fl,Flj,Driver_w,side_addspeed,Jd_de,Ay,Jd_a1,Jd_a2,Fy1,Fy2);
三、仿真测试结果
波特图是线性非时变系统的传递函数对频率的半对数坐标图,其横轴频率以对数尺度(log scale)表示,利用波特图可以看出系统的频率响应,又称幅频响应和相频响应曲线图。波特图一般是由二张图组合而成,一张幅频图表示频率响应增益的分贝值对频率的变化,另一张相频图则是频率响应的相位对频率的变化。利用波特图可以看出在不同频率下,系统增益的大小及相位,也可以看出大小及相位随频率变化的趋势。波特图的图形和系统的增益,极点、零点的个数及位置有关。
A08-58