m一级倒立摆的动态模拟和零极点配置控制器matlab仿真

简介: m一级倒立摆的动态模拟和零极点配置控制器matlab仿真

1.算法仿真效果
matlab2022a仿真结果如下:

49171640f78a7503e0500c31c400582a_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

2.算法涉及理论知识概要
倒立摆是一个开环不稳定的强非线性系统,其控制策略与杂技运动员顶杆平衡表演的技巧有异曲同工之处,目的在于使得摆杆处于临界稳定状态,是进行控制理论研究的典型实验平台。20世纪50年代,麻省理工学院的控制论专家根据火箭助推器原理设计出了第一套倒立摆实验设备,开启了最初的相关研究工作。倒立摆的种类丰富多样,按照其结构可将其分为:直线倒立摆、环形倒立摆以及平面倒立摆等,按照摆杆级数又可将其分为:一级、二级甚至三级等。

   倒立摆系统是是一个具有高阶次、不稳定、多变量、非线性和强藕合特性的不稳定系统。在控制过程中,为了简化直线一级倒立摆系统分析,在建立实际数学模型过程中,忽略了空气阻力和各种摩擦之后,将直线一级倒立摆系统直接抽象成小车和匀质杆组成的系统,如图1所示。

a92a66f35853b9de889fbae5eeac5eab_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

M 小车质量

m 摆杆质量

b 小车摩擦系数

l 摆杆转动轴心到杆质心的长度

I 摆杆惯量

F 加在小车上的力

x 小车位置

摆杆与垂直向上方向的夹角

摆杆与垂直向下方向的夹角(考虑到摆杆初始位置为竖直向下)

其中,N——小车与摆杆相互作用力的水平方向的分量,

P——小车与摆杆相互作用力的垂直方向的分量。

以下是应用牛顿法建立直线一级倒立摆系统的动力学方程过程:

通过受力分析可知,由小车水平方向所受的合力,可得如下方程:

Md2x/dt2=F –bdx/dt- N (1)    

由摆杆水平方向所受的合力,可得如下方程:

N=m*d2/dt2(x+lsin)

即:N=md2x/dt2+mld2/ dt2cos- m l d2/ dt2*sin (2)

把式(2)带入式(1)中,则得到系统的第一个运动方程:

(M+m)d2x/dt2+bdx/dt + mld2/ dt2cos- m l d2/ dt2sin=F (3)

对摆杆垂直方向上的合力进行分析,可得如下方程:

P-mg=m*d2 (l cos)/dt2

即:P-mg=- ml(d/ dt)2 cos- m l d2/ dt2sin (4)

系统力矩平衡方程如下:

-Pl sin-Nl cos=I* d2/ dt2 (5)

合并式(4)和式(5),消去 P 和 N,则得到系统的第二个运动方程:

(I+ml2)d2/ dt2+mgl sin=-ml d2x/dt2 cos (6)

由于=π+,cos=- cos,sin=- sin, 所以由式(3)和式(6)可得

系统的数学模型为如下方程组:

(M+m)d2x/dt2+bdx/dt- mld2/ dt2cos+ m l d2/ dt2*sin=F (7)

(I+ml2)d2/ dt2+mgl sin=-ml d2x/dt2 cos

由方程组(7)知该系统是明显的非线性系统。为便于控制器的设计,需要将系统在工作点(= 0)进行线性化处理。当摆杆与垂直向上方向之间的夹角与 1(单位为弧度)之比很小时,则可以进行近似处理:

cos=-1,sin=-,(d/ dt)2=0。用 u 表示被控对象的输入力 F,经线性化处理后系统的数学模型成为如下微分方程表达式:

(I+ml2)d2/ dt2+mgl sin=-ml d2x/dt2 (8)

(M+m)d2x/dt2+bdx/dt- ml mld2/ dt2=u (8)

1.系统传递函数模型:
4da0c96d538e9ee2be9942a608210a7a_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

3.MATLAB核心程序

```for i=1:TT
z1 =(A-BKs)(z-zf);
z = z + z1*dt;
y(:,i) = z;

%动画
x1 = z(3)-k/2+z(4)*dt*i;x2=z(3)+k/2+z(4)*dt*i;
y1 =-4;
y2 =-2.5;
x4 =(x1+x2)/2+l*sin(z(1));
y4 = y2+l*cos(z(1));

t  = 0:pi/100:2*pi;

%倒立摆上的球体
x3 = x4+r*cos(t);
y3 = y4+r*sin(t);
axes(handles.axes1);
plot(x3,y3,'ro',...
'LineWidth',1,...
'MarkerSize',6,...
'MarkerEdgeColor','r',...
'MarkerFaceColor',[0.9,0.9,0.0]);
hold on
%轨道
plot([-40,40],[-4,-4],'k','linewidth',20);
hold on
%模拟小车
plot([x1,x2],[y1,y1],'b','linewidth',2);
hold on
plot([x2,x2],[y1,y2],'b','linewidth',2);
hold on    
plot([x1,x2],[y2,y2],'b','linewidth',2);
hold on    
plot([x1,x1],[y1,y2],'b','linewidth',2);
hold on    
%倒立摆
plot([(x1+x2)/2,x4],[y2,y4],'g','linewidth',3); 
hold off

xlabel('小车位移');
ylabel('高度');
axis([-30 30 -5 15])
Y = [Y,(x1+x2)/2];
axes(handles.axes2);
plot(Y,'r','linewidth',2);
axis([0,TT,-15,15]);
xlabel('时间');
ylabel('小车位移');
pause(0.001);
if (i==1)
    pause(0.01);
end
if (abs(z(1)-zf(1))<=0.001)&(abs(z(3)-zf(3))<=0.002)
    break;
end

end

% --- Executes on button press in pushbutton8.
function pushbutton8_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton8 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%参数
global R1;
global I1;
global R2;
global I2;
global R3;
global I3;
global R4;
global I4;
global M;
global k;
global V;
global dt;
global l;
global TT;
CC1 = R1 + sqrt(-1)I1;
CC2 = R2 + sqrt(-1)
I2;
CC3 = R3 + sqrt(-1)I3;
CC4 = R4 + sqrt(-1)
I4;

fid = fopen('双质量摆动系统虚拟试验软件测试报告.txt','wt');

fprintf(fid,'试验参数: \n');

fprintf(fid,'01、小车宽度: ');fprintf(fid,'%2.2f\n',k);
fprintf(fid,'02、小车速度: ');fprintf(fid,'%2.2f\n',V);
fprintf(fid,'03、倒立摆长度:');fprintf(fid,'%2.2f\n',l);
fprintf(fid,'04、小球质量: ');fprintf(fid,'%2.2f\n',M);
if I1 > 0
fprintf(fid,'05、零极点配置:');fprintf(fid,'%2.2f',R1); fprintf(fid,'+i'); fprintf(fid,'%2.2f\n',abs(I1));
else
fprintf(fid,'05、零极点配置:');fprintf(fid,'%2.2f',R1); fprintf(fid,'-i
'); fprintf(fid,'%2.2f\n',abs(I1));
end
if I2 > 0
fprintf(fid,' ');fprintf(fid,'%2.2f',R2); fprintf(fid,'+i'); fprintf(fid,'%2.2f\n',abs(I2));
else
fprintf(fid,' ');fprintf(fid,'%2.2f',R2); fprintf(fid,'-i
'); fprintf(fid,'%2.2f\n',abs(I2));
end
if I3 > 0
fprintf(fid,' ');fprintf(fid,'%2.2f',R3); fprintf(fid,'+i'); fprintf(fid,'%2.2f\n',abs(I3));
else
fprintf(fid,' ');fprintf(fid,'%2.2f',R3); fprintf(fid,'-i
'); fprintf(fid,'%2.2f\n',abs(I3));
end
if I4 > 0
fprintf(fid,' ');fprintf(fid,'%2.2f',R4); fprintf(fid,'+i'); fprintf(fid,'%2.2f\n',abs(I4));
else
fprintf(fid,' ');fprintf(fid,'%2.2f',R4); fprintf(fid,'-i
'); fprintf(fid,'%2.2f\n',abs(I4));
end
fprintf(fid,'06、模拟时间: ');fprintf(fid,'%2.2f\n\n',TT);

fprintf(fid,'试验结果: \n');

fclose(fid);
```

相关文章
|
1天前
|
资源调度 监控 算法
基于扩频解扩+LDPC编译码的QPSK图传通信系统matlab误码率仿真,扩频参数可设置
该通信系统主要用于高质量图像传输,如无人机、视频监控等场景。系统采用QPSK调制解调、扩频技术和LDPC译码,确保复杂电磁环境下的稳定性和清晰度。MATLAB仿真(2022a)验证了算法效果,核心程序包括信道编码、调制、扩频及解调等步骤,通过AWGN信道测试不同SNR下的性能表现。
16 6
基于扩频解扩+LDPC编译码的QPSK图传通信系统matlab误码率仿真,扩频参数可设置
|
2天前
|
算法
基于PSO粒子群优化的配电网可靠性指标matlab仿真
本程序基于PSO粒子群优化算法,对配电网的可靠性指标(SAIFI、SAIDI、CAIDI、ENS)进行MATLAB仿真优化。通过调整电网结构和设备配置,最小化停电频率和时长,提高供电连续性和稳定性。程序在MATLAB 2022A版本上运行,展示了优化前后指标的变化。PSO算法模拟鸟群行为,每个粒子代表一个潜在解决方案,通过迭代搜索全局最优解,实现配电网的高效优化设计。
|
2天前
|
机器学习/深度学习 数据采集 算法
基于PSO粒子群优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目展示了基于PSO优化的CNN-GRU-SAM网络在时间序列预测中的应用。算法通过卷积层、GRU层、自注意力机制层提取特征,结合粒子群优化提升预测准确性。完整程序运行效果无水印,提供Matlab2022a版本代码,含详细中文注释和操作视频。适用于金融市场、气象预报等领域,有效处理非线性数据,提高预测稳定性和效率。
|
3天前
|
机器学习/深度学习 算法 索引
单目标问题的烟花优化算法求解matlab仿真,对比PSO和GA
本项目使用FW烟花优化算法求解单目标问题,并在MATLAB2022A中实现仿真,对比PSO和GA的性能。核心代码展示了适应度计算、火花生成及位置约束等关键步骤。最终通过收敛曲线对比三种算法的优化效果。烟花优化算法模拟烟花爆炸过程,探索搜索空间,寻找全局最优解,适用于复杂非线性问题。PSO和GA则分别适合快速收敛和大解空间的问题。参数调整和算法特性分析显示了各自的优势与局限。
|
4月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
236 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
4月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
143 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
4月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
111 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
|
7月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)
|
7月前
|
算法 调度
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)

热门文章

最新文章