基于Matlab/Simulink的模型开发(连载一)

时间:2019-10-17
本文章向大家介绍基于Matlab/Simulink的模型开发(连载一),主要包括基于Matlab/Simulink的模型开发(连载一)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

概述

基于模型的开发将省去繁琐的代码编写步骤,只需要拖动几个模块,就像搭积木一般,轻松搭建您自己的飞控算法。飞控开发人员可以将更多的精力放在算法本身,而不需要过多关注代码实现的细节,这样将大大加快开发的效率,减少在代码编写过程中产生的错误。同时,基于模型的开发具有优秀的代码复用性。也就是说,已经设计好的功能模块,只需要简单的复制粘贴,就能轻松地应用到其它任何地方,免去了代码移植过程的繁琐。

基于模型的开发另外一个强大的优势即在于“一次试验,多次仿真”的目的。结合Simulink强大的开环和闭环仿真系统,只需采集一次数据,便可通过仿真再现在真实世界中的实际表现。通过修改模型算法或参数,可以进行在线的数据仿真和调试,大大简化调试的难度。

系统接口与总线设计

在我们设计控制系统之前,首先要做的就是定义系统的输入/输出接口。在Simulink中,接口一般都是以总线的方式进行定义。可以将总线理解为C语言中的结构体,当把Simulink模型自动生成C代码后,也可以看到总线最终是用结构体来进行实现的。

对于内环的姿态环控制器来说,输入总线设计如下:

Command_Bus

ElementTypeUnitMeaning
resetuint8[0,1]为1复位控制器
modeuint8[0,1]0:角度控制,1:角速度控制
base_thint160~1000姿态环基础油门

Reference_Bus

ElementTypeUnitMeaning
phi_ref_radsinglerad目标roll
theta_ref_radsinglerad目标pitch
psi_ref_radsinglerad目标yaw
p_ref_radDssinglerad/s目标roll角速度
q_ref_radDssinglerad/s目标pitch角速度
r_ref_radDssinglerad/s目标yaw角速度

States_Bus

ElementTypeUnitMeaning
phi_radsingleradroll当前值
theta_radsingleradpitch当前值
psi_radsingleradyaw当前值
p_radDssinglerad/sroll角速度当前值
q_radDssinglerad/spitch角速度当前值
r_radDssinglerad/syaw角速度当前值

输入接口总共有三个总线,分别是Command_BusReference_BusStates_Bus。其中Command_Bus是控制总线,用来对控制系统进行一些设置,如模式设置,复位等。Reference_Bus和States_Bus是目标信号总线和状态信号总线,可以理解为控制器的目标值和当前值。控制器的目的就是通过控制来使得当前值尽可能收敛到目标值。

输入接口设计完了,接下来是输出接口。输出接口相比输入要简单很多,无非就是多路pwm指令输出。这里我们预留6个pwm输出接口,即最多可以支持6轴的控制,当面,也可以根据自己的需要,来进行修改。

Control_Out_Bus

ElementTypeUnitMeaning
pwm1uin161000~2000电机1 pwm信号
pwm2uin161000~2000电机2 pwm信号
pwm3uin161000~2000电机3 pwm信号
pwm4uin161000~2000电机4 pwm信号
pwm5uin161000~2000电机5 pwm信号
pwm6uin161000~2000电机6 pwm信号

好了,现在接口都定义好了,那么下一步的问题就是如何在Simulink里面来实现这些接口定义了。

其实,在Simulink中实现这些接口定义很简单。Simulink提供了一个Bus Editor的工具,只需要进行简单配置就可以定义任何你需要的接口或者总线了。

下面一步一步地讲解一下总线的定义方法:

  • 首先打开控制模型,点击Edit->Bus Editor

  • 这里我之前已经配置过了,所以能看到我已经定义过的总线。但是如果是自己第一次进行设计的话,这里应该是空的。可以点击如红色圈圈所示的add bus来添加Bus信号,这里我们总共需要添加4个Bus。三个输入总线和一个输出总线。Bus添加好后,在最右边的Property,修改Bus的名称。添加好Bus之后,我们下面就需要往Bus里面添加Element,即总线的元素。首先选定一个Bus,然后点击蓝色圈圈圈出的add element选项,即可添加元素。

  • 
    
  • 然后需要对Element进行配置。如图所示,我们一般只需要对Name,Data Type和Dimension三个选项进行配置即可。Dimension为变量的维度,如果我们的element需要配置为向量或者矩阵,那么就需要对Dimension进行配置。

  • 配置完成后,需要点击File->Export to File来将Bus的配置保存成.m还活着.mat文件。因为Bus的定义都是保存在工作空间的。当你下次打开matlab的时候,工作空间都是会被清除的,所以我们需要将我们的Bus定义保存成文件,这样,当下次打开matlab的时候,只需要load一下我们的.mat/.m文件,就能将我们定义的Bus再load进工作空间。

微信公众号关注《阿木实验室》获取更多无人机开发测评信息,关注《阿木社区》获取更多学习课程信息。
社区论坛地址:bbs.amovauto.com 参与讨论。

原文地址:https://www.cnblogs.com/amovlab/p/11692531.html