快速原型中Simulink模型的代码自动生成(1)
时间:2025-07-13
时间:2025-07-13
仿真的一些应用
研究与设计
电 子 测 量 技 术
ELECTRONICMEASUREMENTTECHNOLOGY
第32卷第2期2009年2月
快速原型中Simulink模型的代码自动生成
李 强 王民钢 杨 尧
(西北工业大学航天学院 西安 710072)
摘 要:快速原型仿真是实时仿真的一种,它处于产品研发的算法设计阶段与具体实现阶段之间,是产品研制过程中的一个重要环节。本文介绍了在快速原型系统中如何利用Matlab/Simulink的代码生成功能将Simulink模型转换成目标语言模型的方法;既避免了Simulink模型在Matlab/Simulink环境下仿真速度低下的问题,又能大大降低用目标语言编程建模的工作强度。实际应用表明,通过使用Simulink模型的C代码自动生成,可以方便快捷地将Simulink模型应用于半实物仿真系统,缩短研制周期,并提高仿真系统的灵活性和可靠性。关键词:Simulink;半实物仿真;代码生成;RTW中图分类号:TP391.9 文献标识码:A
Codegenerationofsimulinkmodelsinthehardware2in2loopsimulation
LiQiang WangMingang YangYao
(SchoolofAstronautics,NorthwesternPolytechnicalUniversity,Xipan710072)
Abstract:Thehardware2in2the2loopsimulationplaysanimportantroleintheresearchanddesignprocessforguided
weapons.Tosatisfythereal2timedesignrequirementofcertainmissilehardware2in2the2loopsimulationsystem,ThewaythathowtousethecapabilityofMatlab/SimulinkincodegenerationtoconvertthemodelsconstructedbySimulinktotargetlanguagemodelsisintroduced,whichnotonlyavoidstheproblemoflowsimulationspeedofthemodelinMatlab/Simulinkcircumstance,butalsomakesitveryeasyinmakingprogramstoconstructtargetlanguagemodels.TheactualapplicationshaveprovedthattheSimulinkmodelcanbeappliedtothehardware2in2the2loopsimulationsystemconvenientlyandrapidlybasedontheauto2generationofcode,thedevelopmentperiodisshorten,andtheflexibilityandreliabilityofthesimulationsystemareenhanced.
Keywords:simulink;hardware2in2the2loopsimulation;auto2generationofcode;RTW
0 引 言
Matlab/Simulink是Mathworks公司推出的一种科学计算仿真软件。在传统的控制理论研究中可以利用其方便地进行控制规律的设计与仿真,但是Simulink仿真大多为非实时仿真,模型中的硬件环节由数学模型所代替。对于一些仿真实时性要求较高的场合,如存在数据采集、串口通信等实时仿真任务时,往往达不到预期的理想控制效果。而且离线仿真不能对内存,接口和通信等实时参量进行评价,从而设计者必须不断对自身的设计做出调整,开发周期相对过长。
为了解决这一矛盾,Mathworks公司推出了Real2TimeWorkshop(RTW)子集,利用它能够实现Matlab/Simulink模型向其他语言模型转换,这样可以满足实时仿真速度的不同要求,有助于缩短开发周期,具有较大的经济价值和时常前景。
本文对RTW的主要功能和特点进行了说明,介绍了
RTW代码自动生成的详细过程,并结合工程实例对代码自动生成结果的正确性进行了验证。应用表明通过使用Simulink模型的C代码自动生成,可以方便快捷地将Simulink模型应用于半实物仿真系统,缩短研制周期,为导弹武器系统的研制提供了有利的条件。
1 RTW的主要功能及特点
RTW是和Matlab、Simulink一起使用的一个工具,它可以直接从Simulink模型生成代码并且自动建立可以在不同环境下运行的程序,这些环境包括实时系统和单机仿真。RTW能够应用的场合十分广泛:
1)实时控制:可以使用Matlab和Simulink设计控制系统,并且从建立的图表模型生成代码,编译并载入它们到目标硬件;
2)实时信号处理:可以使用Matlab和Simulink设计信号处理算法,同样可以从模型生成代码,编译和载入它们到目标硬件;
#28#
仿真的一些应用
李 强等:快速原型中Simulink模型的代码自动生成
3)生成可插入到其他仿真程序的便携C代码:非缺省情况下,根据用户的设置可以生成如下代码:
¹Ada代码:从Simulink模块生成Ada代码,要求用户安装Real2TimeWorkshopAdaCoder。
º实时程序:将代码转换为适合硬件运行的实时程序。对应代码被设置为和一个外部时钟。源相连接,且以用户设定的固定采样速率运行。
»高性能单机仿真程序:将生成的代码和普通实时系统目标文件一起使用,为单机仿真生成可以执行的程序。RTW用户界面可通过Simulink提供的仿真参数框第2期
或DSP板,可以只生成源代码。然后使用特定的开发环境对代码进行交叉编译并将其下载到目标硬件中。
/SimulinkParameters0选项打开,其中Real/TimeWorkshop页只对Real/TimeWorkshop有效,而其他页对Simulink仿真和RealTimeWorkshop都有效。
2 代码自动生成
2.1 RTW程序自动创建过程
RTW程序自动创建过程能在不同主机环境下生成用于实时应用的程序。该创建过程使用高级语言编译器中的联编实用程序来控制所生成源代码的编译和链接过程。
RTW使用一个高级的M文件命令控制程序创建过程,默认命令是make2rtw。该创建过程包含如下4个步骤:
1)分析模型
RTW的程序创建过程首先从对Simulink模块方框图的分析开始,包括如下过程:
¹计算仿真和模块参数;
º递推信号宽度和采样时间;
»确定模型中各模块的执行次序;¼计算工作向量的大小。
在本阶段中,RTW首先读取模型文件(model.mdl)并对其进行编译,形成模型的中间描述文件model.rtw。
2)目标语言编译器(TLC)生成代码:
在程序创建的第二阶段,目标语言编译器将中间描述文件(model.rtw)转换为目标指定代码。
< …… 此处隐藏:3495字,全部文档内容请下载后查看。喜欢就下载吧 ……