Jack Huang's Blog


  • 首页

  • 标签

  • 归档

  • 搜索

Simulink中S函数的使用方法

发表于 2020-04-06 | 更新于 2021-05-19

Simulink是The MathWorks公司开发的用于动态系统和嵌入式系统的多领域模拟和基于模型的设计工具,常集成于MathWorks公司的另一产品MATLAB中与之配合使用。

S-函数是系统函数(System Function)的简称,在Simulink中用非图形化的方式来描述一个模块。一个完整的S-函数结构体系包含了描述一个动态系统所需要的全部能力。使用S-函数用户可以向Simulink模型中添加自己的模块,可以自由选择使用MATLAB、C、C++等语言来创建自己的模块。

编写S函数

编写S函数,可以从 Matlab 给的模板S函数文件开始,用户可以在 Matlab 命令窗口中键入:

1
edit sfuntmpl

该模板S函数文件包含了所有的S函数的例程, 包含1个主函数和6个子函数。 在主函数程序使用一个多分支语句 (Switch-case)根据标志将执行流程转移到相应的例程函数。主函数的参数 Flag 标志值是由系统(Simulink 引擎)调用时给出的。

问题处理

参考链接

  1. Simulink之——S函数,by 只是学电的.
  2. 使用level2 M S函数时,设置了0输入就会报错,测试程序见贴,by yfspring.
  3. MATLAB / SIMULINK通信系统建模与仿真实例分析,by 邵玉斌.
  4. Level2-S-function,by auto6329.

飞行仿真中气动参数的生成和计算方法

发表于 2020-04-03 | 更新于 2020-07-26

飞行器仿真一个难点是气动力和力矩系数的生成和计算方法。通常获得气动力和力矩系统的方法主要有:

  • 风洞实验。能够获得精准的气动力和力矩系数,但投资巨大。
  • Fluent类似软件进行仿真计算。
  • Datcom生成。Datacom软件本质是在大量风洞实验数据基础上,通过数值计算粗略生成气动力和力矩系数。

气动力模型是表征气动力和力矩系数与飞行状态、控制输入之间关系的函数。可表示为:

$$C_i=f(H, Ma, α, β, \omega_x, \omega_y,\omega_z, \delta_e,\delta_r,\delta_a)$$

其中,H、Ma、α、β分别为高度、马赫数、攻角、侧滑角;$\omega_x, \omega_y,\omega_z$ 分别为滚转、偏航和俯仰角速度;$\delta_e,\delta_r,\delta_a$ 分别为升降舵、方向舵和副翼舵偏角。

Datcom+使用帮助

Datcom+是Digital Datcom程序的一个扩展,它包含了一些工具,使使用Digital Datcom程序更加容易。这一计划的起源始于1996年,并由Holy Cows,Inc.支持到2010年。

Datcom+Pro是Datcom+的下一代,它已经变得更加用户友好。可视化工具允许您立即看到您的飞机,由数字数据通信程序生成的系数数据绘制在X-Y图上,以便于解释和包含在报告中。此外,您的Datcom+模型现在可以在JSBSim中运行,它是一个完整的6自由度运动方程模型,并提供了执行标准飞行试验机动的飞行试验脚本示例。可惜无法网上无法获得该版本。

下面重点介绍Datcom+的使用方法。

Datcom+输入

Datcom+输入是以“.dcm”为扩展名的文件,具体数据输入格式可参考示例文件“citation.dcm”。该示例文件的设计目的是允许您读取它,并可能理解它,即使Datcom符号可能很难读取和理解。它由以“*”开头的注释行和Datcom命令组成,其中一些命令必须以列1开头,另一些命令以$开头,后跟公共块名,如FLTCON。如果以$开头,则必须以$结尾。常用的名字列表如下:

  • FLTCON-定义飞行条件

  • SYNTHS-定位cg、机翼、水平尾翼和垂直尾翼相对于参考线

  • BODY-定义机体几何体

  • WGPLNF-定义机翼平面形状几何图形

  • HTPLNF-定义水平尾翼几何结构

  • VTPLNF-定义垂直尾翼几何结构

MiG-17 Datcom+ 输入示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
CASEID ----- MIKOYAN-GUREVICH MiG-17 ----- 
$FLTCON NMACH=1.0,MACH(1)=0.6,NALPHA=10.0,ALSCHD(1)=-4.0,-2.0,
0.0,2.0,4.0,6.0,8.0,10.0,12.0,14.0,NALT=1.0,ALT(1)=5000.0,
WT=13395.0,LOOP=1.$
$SYNTHS XCG=11.17,ZCG=0.0,XW=3.63,ZW=0.42,ALIW=1.0,XH=28.73,
ZH=5.24,ALIH=0.0,XV=18.3,ZV=0.0$
$OPTINS SREF=243.0$
$BODY NX=8.0,
X(1)=0.0,0.74,8.35,13.14,19.35,24.41,28.41,30.77,
S(1)=5.19,9.32,16.89,16.89,15.94,11.12,5.85,2.5$
NACA-W-6-66-012
$WGPLNF CHRDTP=7.02,SSPNOP=11.32,SSPNE=13.41,SSPN=15.71,
CHRDBP=8.4,CHRDR=14.0,SAVSI=45.0,SAVSO=45.0,CHSTAT=0.25,
TWISTA=0.0,DHDADI=-3.0,DHDADO=-3.0,TYPE=1.0$
NACA-H-6-66-009
$HTPLNF CHRDTP=1.86,SSPNE=5.42,SSPN=5.43,CHRDR=4.69,SAVSI=45.0,
CHSTAT=0.25,TYPE=1.0$
NACA-V-6-66-009
$VTPLNF CHRDTP=3.76,SSPNE=6.05,SSPN=8.18,CHRDR=12.47,SAVSI=55.0,
CHSTAT=0.25,TYPE=1.0$
DIM FT
BUILD
PLOT
NEXT CASE

F16输入示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
DIM FT
DAMP
DERIV DEG
PART

$FLTCON NMACH=1.0,MACH(1)=0.6,
NALPHA=10.0,ALSCHD(1)=-4.0,-2.0,0.0,2.0,4.0,6.0,8.0,10.0,12.0,14.0,
NALT=1.0,ALT(1)=5000.0,
WT=17400.0,LOOP=2.$
$OPTINS SREF=300.0,BLREF=30.0$
$SYNTHS XCG=27.60,ZCG=0.0,
XW=19.63,ZW=0.69,ALIW=0.0,
XH=35.10,ZH=0.69,ALIH=0.0,
XV=33.86,ZV=0.0$
$BODY NX=7.0,
X(1)= 0.00, 2.52,15.51,16.76,24.95,41.83,42.75,
R(1)= 0.07, 0.13, 3.19, 3.15, 2.54, 1.80, 1.64,
ITYPE=1.0, METHOD=1.0$
NACA-W-6-4A-204
$WGPLNF CHRDR=15.30, CHRDTP=3.6,
SSPNE=12.69, SSPN=14.79,
SAVSI=45.0,
CHSTAT=0.0, TWISTA=0.0,
DHDADI=-1.5,
TYPE=1.0$

NACA-F-4-0012
$SYMFLP FTYPE=2.0, NDELTA=9.0,
DELTA(1)=0.0,5.0,10.0,15.0,20.0,25.0,30.0,35.0,40.0,
PHETE=0.0522, PHETEP=0.0391,
CHRDFI=2.40, CHRDFO=1.30,
SPANFI=3.50, SPANFO=12.00,
NTYPE=1.0$
CASEID FLAPS: ----- General Dynamics F-16A Block 15(+) -----
SAVE
NEXT CASE

$ASYFLP STYPE=4.0, NDELTA=9.0,
DELTAL(1)=-32.0,-20.0,-10.0,-5.0, 0.0, 5.0, 10.0, 20.0, 32.0,
DELTAR(1)= 32.0, 20.0, 10.0, 5.0, 0.0,-5.0,-10.0,-20.0,-32.0,
SPANFI=12.05, SPANFO=14.79,
PHETE=0.05228,
CHRDFI=1.35, CHRDFO=0.74$
CASEID AILERONS: ----- General Dynamics F-16A Block 15(+) -----
SAVE
NEXT CASE

NACA-H-4-0010
$HTPLNF CHRDR=9.91, CHRDTP=2.62,
SSPNE=5.77, SSPN=9.25,
SAVSI=40.0,
CHSTAT=0.0,
DHDADI=-15.0,
TYPE=1.0$
$SYMFLP FTYPE=5.0, NDELTA=9.0,
DELTA(1)=-32.0,-20.0,-10.0,-5.0, 0.0, 5.0, 10.0, 20.0, 32.0,
PHETE=0.0522, PHETEP=0.0391,
CHRDFI=7.42, CHRDFO=2.62,
SPANFI=3.65, SPANFO=9.25,
NTYPE=1.0$

NACA-V-4-0012
$VTPLNF CHRDR=9.64, CHRDTP=3.80,
SSPNE=8.59, SSPN=10.53,
SAVSI=45.0,
CHSTAT=0.0,
TYPE=1.0$

SAVE
CASEID TOTAL: ----- General Dynamics F-16A Block 15(+) -----

AIM-9输入示例

在Missile Datcom的for005.dat文件中输入如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
$FLTCON 
NALPHA=5.00000,
ALPHA=-8.0000,-4.0000,0.0000,4.0000,8.0000,
NMACH=4.00000,
MACH=0.5000,1.5000,2.5000,3.5000,
ALT=5000.0000,$
$REFQ
XCG=1.5000,$
$AXIBOD
TNOSE=CONICAL,
LNOSE=0.28000,
DNOSE=0.13000,
LCENTR=2.69000,
DCENTR=0.13000,$
$FINSET1
SECTYP=NACA,
SSPAN=0.0650,0.2900,
CHORD=0.3000,0.0000,
CFOC=0.2000,0.0000,
XLE=0.2800,0.5700,
NPANEL=4.00000,
PHIF=45.0000,135.0000,225.0000,315.0000,$
$FINSET2
SECTYP=NACA,
SSPAN=0.0650,0.2900,
CHORD=0.6600,0.4600,
XLE=2.2200,2.8800,
NPANEL=4.00000,
PHIF=45.0000,135.0000,225.0000,315.0000,$
NACA-1-6-64-005
NACA-2-4-2204-04
DAMP
PART
PLOT
PRESSURES
SAVE
DIM M
DERIV DEG
CASEID AIM-9
NEXT CASE
CASEID PANEL DEFLECTION
$DEFLCT DELTA1=-5.0,5.0,5.0,-5.0$
SAVE
NEXT CASE
$DEFLCT DELTA1=5.0,-5.0,-5.0,5.0$
SAVE
NEXT CASE
$DEFLCT DELTA1=-10.0,10.0,10.0,-10.0$
SAVE
NEXT CASE
$DEFLCT DELTA1=10.0,-10.0,-10.0,10.0$
SAVE
NEXT CASE

Matlab导入Datcom输出文件

Matlab使用datcomimport函数导入Datcom输出文件数据到工作空间,有可能会出现如下所示警告:

1
2
3
4
> In usafdatcom
In usafdatcom
In datcomimport (line 88)
警告: DATCOM file reader state inconsistent

然后会发现导入的启动系数值无法使用。出现该问题的原因主要有:

  • 计算多迎角多高度飞机气动系数时,应设置LOOP为2.0,而非默认的1.0。

参考链接

  1. Missile Datcom,by beihang.
  2. Datcom,by holycows.
  3. DATCOM使用介绍,by wenku.
  4. United States Air Force Stability and Control Digital DATCOM,by wikipedia.
  5. Missile Datcom,by wikipedia.
  6. 操稳特性快速评估及其在飞机设计中的应用,by 张帅.
  7. MISSILE DATCOM使用教程_LIppt课件,by 雅芳.
  8. datcom 计算导弹气动参数,by 一路向北884.

设计模式之状态模式

发表于 2020-03-28 | 更新于 2021-11-20

最近研究红外探测器建模仿真时,了解到它有多种工作状态,在不同工作状态下有不同的探测能力,很适合用设计模式中的状态模式进行建模仿真。因此,学习一下设计模式中行为型模式之状态模式。

定义

在很多情况下,一个对象的行为取决于一个或多个动态变化的属性,这样的属性叫做状态,这样的对象叫做有状态的(stateful)对象,这样的对象状态是从事先定义好的一系列值中取出的。当一个这样的对象与外部事件产生互动时,其内部状态就会改变,从而使得系统的行为也随之发生变化。

在UML中可以使用状态图来描述对象状态的变化。

状态模式(State Pattern) :允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。其别名为状态对象(Objects for States),状态模式是一种对象行为型模式。

有限状态机(英语:finite-state machine,缩写:FSM)又称有限状态自动机(英语:finite-state automation,缩写:FSA),简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学计算模型。

状态存储关于过去的信息,就是说:它反映从系统开始到现在时刻的输入变化。转移指示状态变更,并且用必须满足确使转移发生的条件来描述它。动作是在给定时刻要进行的活动的描述。有多种类型的动作:

  • 进入动作(entry action):在进入状态时进行
  • 退出动作(exit action):在退出状态时进行
  • 输入动作:依赖于当前状态和输入条件进行
  • 转移动作:在进行特定转移时进行

Moore状态机:输出仅仅与当前状态有关;

Mealy状态机:输出不仅取决于当前状态,还和输入有关;

结构

状态模式包含如下角色:

  • Context: 环境类
  • State: 抽象状态类
  • ConcreteState: 具体状态类

参考链接

  1. 软件设计模式简介,by jackhuang.
  2. 图说设计模式-状态模式,by me115.
  3. 有限状态机,by wikipedia.
  4. 理解状态机,by 纸上浅谈.
  5. 深入浅出理解有限状态机,by 我是云峰小罗.
  6. JavaScript与有限状态机,by ruanyifeng.
  7. Moore状态机和Mealy状态机的区别,by Reborn Lee.
  8. C++各类设计模式及实现详解,by linux.

自动控制原理笔记

发表于 2020-03-16 | 更新于 2020-10-11

记录自动控制原理的核心概念、方法。

闭环控制

闭环控制系统

图1 闭环控制系统

图1所示闭环反馈控制系统包括了三种类型的输入信号和一个输出信号$Y(s)$,其中输入信号包括参考输入$R(s)$、干扰信号$T_d(s)$和测量误差$N(s)$。定义偏差信号,即跟踪误差信号为

$$E(s)=R(s)-Y(s) \tag{1}$$

令$H(s)=1$,则图1所示闭环系统的输出$Y(s)$为

$$Y(s)=\frac{G_c(s)G(s)}{1+G_c(s)G(s)}R(s)+\frac{G(s)}{1+G_c(s)G(s)}T_d(s)-\frac{G_c(s)G(s)}{1+G_c(s)G(s)}N(s) \tag{2}$$

将式(1)代入式(2),则跟踪误差信号$E(s)$为

$$E(s)=\frac{1}{1+G_c(s)G(s)}R(s)-\frac{G(s)}{1+G_c(s)G(s)}T_d(s)+\frac{G_c(s)G(s)}{1+G_c(s)G(s)}N(s) \tag{3}$$

定义开环增益$L(s)$为

$$L(s)=G_c(s)G(s) \tag{4}$$

定义灵敏度函数$S(s)$为

$$S(s)=\frac{1}{1+L(s)} \tag{5}$$

定义补灵敏度函数$C(s)$为

$$C(s)=\frac{L(s)}{1+L(s)} \tag{6}$$

初值定理

在数学分析中,初值定理是将时间趋于零时的频域表达式与时域行为建立联系的定理。令

$$F(s)=\int _{0}^{\infty }f(t)e^dt$$

为 $ƒ(t)$ 的(单边)拉普拉斯变换。初值定理表明

$$\lim _{t\to 0}f(t)=\lim _{s\to \infty }{sF(s)}$$

终值定理

在数学分析中,终值定理(Final Value Theorem, FVT)是将时间趋于无穷时的时域表达式与频域行为建立联系的许多定理之一。终值定理允许直接对频域表达式取极限来计算时域行为,无需先转换到时域表达式再取极限。

在数学上,如果

$$\lim _{t\to \infty }f(t)$$

有一个有限极限,那么

$$\lim _{t\to \infty }f(t)=\lim _{s\to 0}{sF(s)}$$

其中 $F(s)$ 为 $f(t)$ 的(单边)拉普拉斯变换。

增益裕度

增益裕度(gain margin, GM)是衡量系统稳定程度的一种方法。

相位裕度

相位裕度(phase margin, PM)是另一种衡量系统稳定程度的方法。

参考链接

  1. 一阶系统和二阶系统,了解一下!!!,by 软软不软.
  2. 终值定理,by wikipedia.
  3. 初值定理,by wikipedia.
  4. 欧拉公式,by wikipedia.
  5. 分部积分法(integration by parts),by 清雅白鹿记.
  6. 如何设计一个运动控制系统,by J Pan.
  7. 如何入门自动控制理论,by J Pan.
  8. 控制器设计怎么做,by 刘扬扬.
  9. 阻尼,by wikipedia.
  10. 相位裕度,by wikipedia.
  11. 波德图,by wikipedia.
  12. 伯德图中的相角裕量和幅值裕量有什么物理意义?,by zhihu.
  13. 现代控制理论线性系统入门(五)设计状态反馈控制器,by zhihu.
  14. simulink怎么用s函数代替微分模块?,by zhihu.
  15. 飞机的纵向增稳是如何实现的,by J Pan.

Matlab_Stateflow_Chart无法初始化向量或数组的解决方法

发表于 2020-03-14

最近在使用Matlab的Stateflow工具箱时,发现无法初始化类型为向量或矩阵的变量。在网上搜索了很久,终于发现类似问题的解决方法,参考链接Why am I unable to initialize the local vector or matrix data in my Stateflow chart?。

具体解决方法是:

  • 定义一个常量,维度与向量变量或矩阵变量一致,设置常量的数值。
  • 使用定义的常量去初始化变量

参考链接

  1. Why am I unable to initialize the local vector or matrix data in my Stateflow chart?,by mathworks.

云时代原生应用架构的思考

发表于 2020-02-28 | 更新于 2020-05-09

参考链接

  1. 什么是Service Mesh,by Kenshin.
  2. 迁移到云原生应用架构,by Jimmy Song.
  3. Kubernetes中文指南/云原生应用架构实践手册,by Jimmy Song.
  4. Serverless(无服务)基础知识,by 高露.

Windows下LaTeX安装及使用

发表于 2020-02-27 | 更新于 2020-02-29

最近准备写大论文,为避免Word格式编排的麻烦,同时能够对大论文进行版本管理,决定使用LaTex。下面记录在Windows平台下安装LaTex的过程及其使用方法。

Tex Live Vs MiKTex Vs proTeXt

TeX(/tɛx/,常被读作/tɛk/,音译“泰赫”,“泰克”,写作“TEX”),是一个由美国计算机教授高德纳(Donald Ervin Knuth)编写的排版软件。TeX的MIME类型为application/x-tex,是一款自由软件。它在学术界特别是数学、物理学和计算机科学界十分流行。TeX被普遍认为是一个优秀的排版工具,尤其是对于复杂数学公式的处理。利用LaTeX等终端软件,TeX就能够排版出精美的文本以帮助人们辨认和查找。

LaTeX(/ˈlɑːtɛx/,常被读作/ˈlɑːtɛk/或/ˈleɪtɛk/,写作“LATEX”),是一种基于TeX的排版系统,由美国计算机科学家莱斯利·兰伯特在20世纪80年代初期开发,利用这种格式系统的处理,即使用户没有排版和程序设计的知识也可以充分发挥由TeX所提供的强大功能,不必一一亲自去设计或校对,能在几天,甚至几小时内生成很多具有书籍质量的印刷品。对于生成复杂表格和数学公式,这一点表现得尤为突出。因此它非常适用于生成高印刷质量的科技和数学、物理文档。这个系统同样适用于生成从简单的信件到完整书籍的所有其他种类的文档。

LaTex类似于Linux系统,它有多个发行版,例如 MiKTeX 、 proTeXt 和TeX Live,其中proTeXt是基于MiKTeX打包的。因此重点介绍MiKTex与TeX Live的区别。

Texlive包比较全,Miktex占用空间比较小,遇到需要的包需要在线下载。所以,硬盘空间比较充足的,网络不太方便的电脑,可以选择Texlive,反之硬盘空间小,一直保持网络链接的可以选择Miktex。

LaTeX编辑器

LaTex编辑器大概分为两种,一种为WYSIWYG,所见即所得,实时预览,类似于Word,另一种是纯文本编辑器,有语法高亮,没有预览功能,编译成PDF后才能预览。

LaTeX编辑器的选择请参考有哪些好的 LaTeX 编辑器?。本人倾向于使用VSCode+Latex Workshop,具体方法参考编写中文Latex(VSCode+TexLive)。

VScode使用方法

正向和反向定位跳转

LaTeX Workshop 插件提供了正向和反向定位跳转功能:

  • 在 LaTeX 文件中,按 Ctrl + Alt + J 跳转到对应的 PDF 文件位置。
  • 在 PDF 文件中,按下 Ctrl + 同时鼠标单击,跳转到对应的 LaTeX 文件位置。

Tex Live安装

Tex Live安装请参考最新TeXLive 环境的安装与配置。

LaTeX转docx

有时需要将LaTeX转成docx文档,可使用Pandoc,具体使用方法参考
Latex转word。

LaTeX语法

一个LATEX命令(宏)的格式为:

1
2
3
无参数:     \command
有n个参数: \command{arg1}{arg2}...{argn}
有可选参数: \command[arg_opt]{arg1}{arg2}...{argn}

参考链接

  1. Latex编译器推荐(面向初学者或者懒得折腾的朋友,主要针对windows用户),by 郭令举.
  2. LaTeX的各种发行版和编辑器的比较,by 灵魂机器.
  3. TeX,by wikipedia.
  4. LaTeX,by wikipedia.
  5. 最新TeXLive 环境的安装与配置,by cying.
  6. 有哪些好的 LaTeX 编辑器?,by zhihu.
  7. 编写中文Latex(VSCode+TexLive),by 踏歌.
  8. 一份其实很短的 LaTeX 入门文档,by 始终.
  9. 从零开始 LaTeX 快速入门,by liuchengxu.
  10. 在 LaTeX 中进行文学编程,by 始终.
  11. Latex转word,by yj_isee.
  12. LaTeX + VSCode + Git 开发环境搭建,by 李计芃.
  13. BibTeX,by wikipedia.
  14. 我的 LaTeX 方案实现,by 浪里小涛龙.

Dubbo入门简介

发表于 2020-02-24

Apache Dubbo |ˈdʌbəʊ| 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

应用背景

请参考背景.

应用需求

请参考需求.

Dubbo架构

请参考架构.

服务配置

请参考应用.

参考链接

  1. Apache Dubbo,by apache.

Matlab树莓派硬件支持平台的搭建

发表于 2020-02-19 | 更新于 2021-05-19

在今天全球强调科研创新的年代,为何科学的进步与上个世纪相比,却明显进步缓慢呢?也许有人反驳,当今庞大的科研人员,层出不穷的科研成果,极大的物质财富,难道不是科学技术的进步带来的吗?与上个世纪相比,哪里进步缓慢了呢?诚然,当前科技在进步在繁荣,但这种进步繁荣是应用科学的繁荣,而不是基础科学的繁荣。如果将科学比作一棵大树,那么基础科学就是树干,枝干和树叶就是应用科学。树干的粗细决定了树枝和树叶的繁荣,不幸的是,当前基础科学已经很久没有大的进步了。基础科学的进步靠牛顿、麦克斯韦、爱因斯坦这样的天才,而应用科学的进步则靠广大的普通科研人员。那么作为一名普通的从事应用科学研究的科研人员,如何才能有所创新有所进步呢?

作为一名普通的科研人员,可能经常会有一闪而过的灵光。然而要将这一闪而过的灵光变成切实可行的创新是一个痛苦的过程。这一闪而过的灵光可能涉及很多学科知识,而大部分科研人员不是全才,可能仅在某一方面有过人之处,那么如何试验验证这一灵光就成了大难题。幸运的是,有了Matlab及其推广的基于模型的设计思想,未来应用科学方面的科研创新将不再困难。

有人说,Matlab除了不会生孩子,其他都能干。诚然,Matlab就是广大科研人员的神兵利器。Matlab或许比不上某些领域的专业软件,但胜在全面,该有的都有。科研人员只需掌握它,就可解决至少80%的问题,极大地提高科研效率。

最近在研究各种控制算法,需要安装树莓派和PX4的硬件支持包,发现最新的Matlab 2019b安装PX4硬件支持包比较方便,但无法安装树莓派硬件支持包,而Matlab 2018b则没有这样的问题。

Matlab 2019b无法下载树莓派硬件支持包的问题,可通过Matlab官方提供的下载工具解决,下载地址为Download Hardware Support Packages and Optional Features。

参考链接

  1. Simulink与树莓派-HIL(硬件在环)平台搭建,by Tomato.
  2. AUTOSAR架构深度解析,by 末离.
  3. Download Hardware Support Packages and Optional Features,by mathworks.

基于模型的设计思想

发表于 2020-02-13 | 更新于 2020-02-15

基于模型的设计(Model-Based Design,简称MBD)是一种数学及可视化的方法,可以用来处理复杂控制系统、信号处理及通讯系统的设计。基于模型的设计可以用在运动控制、工业设计、航天以及车辆应用中。基于模型的设计也是嵌入式系统设计的方法论。

基于模型的设计类似于基于组件的图形用户界面开发,可极大地提高开发的效率,并保证程序的健壮性。

简介

基于模型的设计是一种较有效率的设计方式,在支援开发过程(V模型)的同时,在设计过程中建立了沟通用的共同框架。若用这种方式设计控制系统,开发会分为以下四步骤:

  • 为受控体建模。
  • 配合受控体,分析及合成适合的控制器。
  • 针对控制器及受控体进行仿真。
  • 整合上述的步骤来布署控制器。

基于模型的设计和传统的设计方法论有很大的不同。设计者在使用基于模型的设计时,不需使用复杂的架构以及繁多的软件代码,只需利用基于模型的设计来定义系统模型,再配合连续及离散的架构方块来产生进阶的机能特性。使用仿真工具建立的模型可以进行快速应用程序开发、软件测试和验证。不但强化了测试以及验证的程序。有些情形下,可以将这个新的设计方法配合硬件在环的仿真,测试系统的动态效应,不但速度更快,也比传统的设计方法论更加有效率。

基于模型设计的步骤

基于模型设计的主要步骤如下:

  1. 受控体建模:受控体建模可以以资料驱动(data-driven)为基础,也可以依照首要原则(first principle)建模。资料驱动的建模会配合系统识别或是类似的技术。系统识别会先取得系统在真实世界中的输入输出资料,并进行处理,再配合数学算法来识别系统的模型。在系统识别后,就可以针对受控体设计适合的控制器。首要原则驱动的建模是先找到受控体的统御方程式,再创建方块图模型来实现上述的统御方程式。实体建模(physical modeling)就是一种首要原则驱动的驱动建模方式,模型中会包括许多互相连结的方块,对应实际受控体中的各个元件。
  2. 控制器分析及合成:会使用步骤1得到的数学模型来确认模型的动态特性,再依这些特性设计符合特性的控制器。
  3. 离线的仿真及实时仿真:会分析动态系统在复杂时变输入下的反应特性。这可以将受授体的简易线性非时变模型和控制器一起进行仿真,也可以用受授体的非线性模型和控制器进行仿真。仿真有助于找到规格、需求以及建模时的错误,而不是在之后实际设计控制器时才发现。实时仿真可以用步骤2的控制器进行代码自动生成(automatically generating code)来达到。代码可以布署在特殊的实时原型电脑中,这个电脑可以执行程式并且控制受控体的运作。假如无法取得受控体的原型,或是配合原型的测试有危险性或是太过昂贵,可以配合受控体模型进行自动代码生成。之后可以将代码布署到另一台电脑上,这台电脑和执行控制体的电脑相连。因此可以实时的测试控制器,不过控制的不是实际的受控体,而是实时仿真的受控体模型。
  4. 布署控制器:理想上让步骤2的控制器进行代码自动生成,即可布署控制器。不过一开始时,控制器在实际系统上的性能会和仿真时的性能不同,此时可以用迭代除错方式,分析实际系统上的结果,依分析结果更新控制器模型。配合基于模型设计的工具,可以在统一化可视环境下,进行上述的迭代除错。

优点

基于模型的设计相较于传统开发方式的优点有:

  • 基于模型的设计提供一个共同的开发环境,有助于不同的开发团队之间的一般性沟通、资料分析以及系统验证。
  • 工程师可以在系统设计早期定位出错误并且修正错误,此时系统修改造成的时间冲击及财务影响都是最小的。
  • 设计可以复用,有助于提升机能及衍生系统的扩充能力。

工具

支持MBD开发的工具主要有:

  • Matlab/Simulink

参考链接

  1. 基于模型的设计,by wikipedia.
  2. Simulink代码生成C/C++,by 小二黑.
  3. 基于模型设计——电力电子的利器,by 陈老四.
上一页1…293031…53下一页

Jack Huang

528 日志
68 标签
© 2025 Jack Huang
由 Hexo 强力驱动
|
主题 — NexT.Muse