CN102087610A - 利用Simulink对定制硬件进行模型仿真及代码生成的方法 - Google Patents
利用Simulink对定制硬件进行模型仿真及代码生成的方法 Download PDFInfo
- Publication number
- CN102087610A CN102087610A CN2009102018969A CN200910201896A CN102087610A CN 102087610 A CN102087610 A CN 102087610A CN 2009102018969 A CN2009102018969 A CN 2009102018969A CN 200910201896 A CN200910201896 A CN 200910201896A CN 102087610 A CN102087610 A CN 102087610A
- Authority
- CN
- China
- Prior art keywords
- model
- file
- custom hardware
- function module
- simulink
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种利用Simulink对定制硬件进行模型仿真的方法,编写定制硬件C MEX S文件,在MATLAB命令窗口中通过mex命令,生成一个C MEX S文件名.mexw32文件;在simulink中新建一包括定制硬件S-function模块的模型文件,并对定制硬件S-function模块进行封装,从而使C MEX S文件与C MEX S文件名.mexw32文件建立链接,并生成定制硬件S-function模块面板及其对话框,对该模型文件进行编辑编译,得到一模型文件MODEL.RTW,在Matlab/simulink仿真时,弹出所述定制硬件S-function模块的对话框,在该对话框上输入相应的参数后提交,运行Start Simulation命令输出仿真图形。本发明还公开了一种利用Simulink对定制硬件进行模型代码生成的方法。本发明能利用Simulink对定制硬件进行模型仿真及代码生成,节省系统开发的时间。
Description
技术领域
本发明涉及在汽车工程领域基于模型开发的方法,特别涉及一种利用Simulink对定制硬件进行模型仿真及代码生成的方法。
背景技术
目前基于模型开发(MBD)的设计方法已经在汽车、航天等工程领域中越来越被熟知和应用。采用基于模型的V型开发方式可以实现对控制器模型的快速原型仿真、硬件在环仿真,以及基于模型的自动代码生成。如今普遍采用的开发环境为Matlab/Simulink建模环境,利用Matlab中的RTW(RealTime Workshop)软件包,可以实现基于模型的自动代码生成。RTW提供了多个目标配置适用于不同的应用开发环境。但Simulink中设置的硬件模型是有限的,无法利用Simulink进行定制硬件的模型在环仿真,这样当对Simulink中未设置硬件模型的硬件在环仿真时,系统人员每次更改硬件参数配置,就需要软件人员修改硬件设备驱动程序的源代码,会耗费大量系统开发的时间。
发明内容
本发明要解决的技术问题是提供一种利用Simulink对定制硬件进行模型仿真及代码生成的方法,能利用Simulink对定制硬件进行模型仿真及代码生成,节省系统开发的时间。
为解决上述技术问题,本发明的利用Simulink对定制硬件进行模型仿真的方法,其特征在于,包括以下步骤:
一.编写定制硬件C MEX S文件,所述C MEX S文件包括描述定制硬件特有的输入、输出、模型采样时间参数以及输出同输入之间的变换关系,将所述C MEX S文件保存在一特定文件夹中,所述C MEX S文件扩展名为“c”;
二.将所述特定文件夹作为当前路径,在MATLAB命令窗口中输入mexC MEX S文件名,在所述特定文件夹中生成一个C MEX S文件名.mexw32文件;
三.将所述特定文件夹作为当前路径,在simulink中新建一模型文件MODEL,在所述新建一模型文件MODEL下进行定制硬件S-function模块封装,在simulink Browser界面中拖入一S-function模块,弹出所述S-function模块对话框,在所述S-function模块对话框中输入同所述CMEX S文件名一致的文件名,并输入C MEX S文件中描述定制硬件特有的包括输入、输出、模型采样时间在内的参数后确认提交,从而使C MEX S文件与C MEX S文件名.mexw32文件建立链接;然后弹出所述S-function模块的菜单栏,在其中选择Mask S-Function,编辑对话框Mask Editor:S_function,完成定制硬件S-function模块封装;完成定制硬件S-function模块封装后,该模型文件MODEL中就存在了封装后的定制硬件S-function模块;
四.在simulink环境界面中对包括定制硬件S-function模块的所述模型文件MODEL进行编辑,编辑完成后,在simulink模型文件菜单栏界面上运行Build命令对所述包括定制硬件S-function模块的模型文件MODEL进行编译,得到一模型文件MODEL.RTW,保存在所述特定文件夹中;
五.在simulink Browser界面中,弹出所述模型文件MODEL中的封装后的定制硬件S-function模块的对话框,在弹出的定制硬件S-function模块的对话框上输入相应的参数后提交;
六.对所述包括定制硬件S-function模块的模型文件MODEL进行仿真,在simulink模型仿真界面中,运行Start Simulation命令,对所述包括定制硬件S-function模块的模型文件MODEL进行仿真,输出仿真图形。
为解决上述技术问题,本发明的利用Simulink对定制硬件进行模型代码生成的方法,其特征在于,包括以下步骤:
一.编写定制硬件特有的设备驱动代码;编写定制硬件C MEX S文件,所述C MEX S文件包括描述定制硬件特有的输入、输出、模型采样时间等的参数以及输出同输入之间的变换关系,扩展名为“c”;编写TLC文件,所述TLC文件同所述C MEX S文件的文件名相同,扩展名为“TLC”;将所述三个文件保存在一特定文件夹中;
二.将所述特定文件夹作为当前路径,在MATLAB命令窗口中输入mexC MEX S文件名,在所述特定文件夹中生成一个C MEX S文件名.mexw32文件;
三.将所述特定文件夹作为当前路径,在simulink中新建一模型文件MODEL,在所述新建一模型文件MODEL下进行定制硬件S-function模块封装,在simulink Browser界面中拖入一S-function模块,弹出所述S-function模块对话框,在所述S-function模块对话框中输入同所述CMEX S文件名一致的文件名,并输入C MEX S文件中描述定制硬件特有的包括输入、输出、模型采样时间在内的参数后确认提交,从而使C MEX S文件与C MEX S文件名.mexw32文件建立链接;然后弹出所述S-function模块的菜单栏,在其中选择Mask S-Function,编辑对话框Mask Editor:S function,配置完Mask Editor对话框后,保存该模型文件MODEL,完成定制硬件S-function模块封装,该模型文件MODEL中就存在了封装后的定制硬件S-function模块;
四.在simulink环境界面中对包括定制硬件S-function模块的所述模型文件MODEL进行编辑,编辑完成后,在simulink模型文件菜单栏界面上运行Build命令对所述包括定制硬件S-function模块的模型文件MODEL进行编译,得到一模型文件MODEL.RTW,保存在所述特定文件夹中;
五.在simulink Browser界面中,弹出所述模型文件MODEL中的封装后的定制硬件S-function模块的对话框,在弹出的定制硬件S-function模块的对话框上输入相应的参数后提交;
六.对包括定制硬件S-function模块的所述模型文件MODEL生成目标代码;在所述包括定制硬件S-function模块的模型文件下,在simulink-function模型界面中,运行生成代码命令,运行生成代码命令会调用所述特定文件夹中的所述TLC文件,根据在定制硬件S-function模块的对话框上输入的相应参数、在所述特定文件夹中的模型文件MODEL.RTW中的包括定制硬件的各硬件的数据结构以及定制硬件特有的设备驱动代码,对包括定制硬件S-function模块的所述模型文件MODEL生成目标代码。
在步骤五之后,可以对所述包括定制硬件S-function模块的模型文件MODEL进行仿真,在simulink模型仿真界面中,运行Start Simulation命令,对所述包括定制硬件S-function模块的模型文件MODEL进行仿真,输出仿真图形;然后进行步骤六,在所述包括定制硬件S-function模块的模型文件下,在simulink-function模型界面中,运行生成代码命令,运行生成代码命令会调用特定文件夹中的所述TLC文件,根据在定制硬件S-function模块的对话框上输入的相应参数、在所述特定文件夹中的模型文件MODEL.RTW中的包括定制硬件的各硬件的数据结构以及定制硬件特有的设备驱动代码,输出目标代码,以对定制硬件进行读写。
所述设备驱动代码包括定制硬件的头文件、宏定义、I/O设备代码库。
本发明的利用Simulink对定制硬件进行模型仿真及代码生成的方法,编写硬件特有的设备驱动代码、编写C MEX S文件、编写TLC(目标语言编译器语言)文件并保存在一特定文件夹中;通过MATLAB的mex命令在所述特定文件夹中生成所述C MEX S文件的mexw32文件;在simulink中新建一模型文件MODEL并在其中进行定制硬件S-function模块封装,使C MEX S文件与其mexw32文件建立链接,并生成定制硬件S-function模块面板及定制硬件S-function模块的对话框;对包括定制硬件S-function模块的模型文件MODEL进行编辑,然后进行编译得到一模型文件MODEL.RTW,保存在所述特定文件夹中,模型文件MODEL.RTW中会包含有定制的数据结构;在Matlab/simulink仿真时,由于S-function模块可以动态连接到所述C MEX S文件的mexw32,所以能够对所述包括定制硬件S-function模块的模型文件MODEL进行仿真,输出仿真图形;如果要对包括定制硬件S-function模块的模型文件MODEL生成目标代码,则可以在simulink-function模型界面中运行生成代码命令,运行生成代码命令会调用特定文件夹中的所述TLC文件,根据在定制硬件S-function模块的对话框上输入的相应参数、在所述特定文件夹中的模型文件MODEL.RTW中的包括定制硬件在内的各硬件的数据结构以及定制硬件特有的设备驱动代码,对包括定制硬件S-function模块的模型文件MODEL生成目标代码,输出目标代码以对定制硬件进行读写。在模型硬件在环过程中,当需要对包括定制硬件S-function模块的模型文件进行仿真或生成目标代码时,对于不同参数配置的定制硬件,只需要弹出所述模型文件MODEL中的封装后的定制硬件S-function模块的对话框,在该对话框上输入相应的参数后提交即可,不需要软件人员修改定制硬件设备驱动程序的源代码,免去了在模型硬件在环过程中,系统人员每次更改硬件配置就需要软件人员修改驱动代码的步骤,减少了系统开发的时间,也完善了对RTW不支持的目标板的工具链。
附图说明
下面结合附图和具体实施方式对本发明作进一步的详细说明。
图1是MPC5634芯片S-function模块面板示意图;
图2是封装后的定制硬件S-function模块对话框;
图3是simulink中的S-function对话框;
图4是编辑后的simulink中的S-function对话框;
图5是S函数封装采用的Mask Editor参数(Parameter)选项编辑对话框;
图6是S函数封装采用的Mask Editor图标(Icon)选项编辑对话框;
图7是本发明的利用Simulink对定制硬件进行模型仿真及代码生成的方法一实施方式流程图。
具体实施方式
本发明的利用Simulink对定制硬件进行模型仿真及代码生成的方法一实施方式如图7所示,包括以下步骤:
一.编写定制硬件特有的设备驱动代码,即针对某定制硬件的头文件、宏定义、I/O设备代码库;编写定制硬件C MEX S文件,所述C MEXS文件包括描述定制硬件特有的输入、输出、模型采样时间等的参数以及输出同输入之间的变换关系,扩展名为“c”;编写TLC文件,所述TLC文件同所述C MEX S文件的文件名相同,扩展名“TLC”;将所述三个文件保存在一特定文件夹中;
二.将所述特定文件夹作为当前路径,在MATLAB命令窗口中输入mexC MEX S文件名,这时mex命令可以在所述特定文件夹中生成一个C MEX S文件名.mexw32文件,在Matlab/simulink仿真时,S-function可以动态连接到C MEX S文件名.mexw32;
三.将所述特定文件夹作为当前路径,在simulink中新建一模型文件MODEL,在所述新建一模型文件MODEL下进行定制硬件S-function模块封装,在simulink Browser界面中拖入一S-function模块,双击该S-function模块弹出S-function模块对话框,如图3所示,在所述S-function模块对话框中输入同所述C MEX S文件名一致的文件名,并输入C MEX S文件中描述定制硬件特有的输入、输出、模型采样时间等的参数,如图4所示,然后确认提交,由于当S函数模块在Simulink环境下进行仿真时,S函数模块会动态链接到当前路径下同名的.Mexw32文件,从而使C MEX S文件与C MEX S文件名.mexw32文件建立链接;然后在S函数模块上单击鼠标右键,弹出所述S-function模块的的菜单栏,在其中选择Mask S-Function,编辑对话框Mask Editor:S_function,如图5所示,在Parameters选项栏中,输入需要在定制硬件S-function模块对话框中显示的内容后提交,在Prompt栏中输入的文字,将会在定制硬件S-function模块对话框中显示,在Variable栏中输入的变量要和定制硬件S-function模块对话框输入的参数相对应,在Type栏选择各个字段表现的形式,在Icon选项栏中,输入要在定制硬件S-function模块面板上显示的内容后提交,参见图6,port_label(‘input’,1,‘period’)、port_label(‘input’,2,‘duty’)是在输入端口处的显示标签,模块的输入端口数是在C MEX S文件中设置的,配置完Mask Editor对话框后,保存该模型文件MODEL,完成定制硬件S-function模块封装,这样该模型文件MODEL中就存在了封装后的定制硬件S-function模块;
四.在simulink环境界面中对包括定制硬件S-function模块的所述模型文件MODEL进行编辑,编辑完成后,在simulink模型文件菜单栏界面上运行Build命令对所述包括定制硬件S-function模块的模型文件MODEL进行编译,得到一模型文件MODEL.RTW,保存在所述特定文件夹中,模型文件MODEL.RTW中包含有定制硬件的数据结构;
五.在simulink Browser界面中,双击所述模型文件MODEL中的封装后的定制硬件S-function模块,会弹出定制硬件S-function模块的对话框,如图2所示,在弹出的定制硬件S-function模块的对话框上输入相应的参数后提交;
六.对所述包括定制硬件S-function模块的模型文件MODEL进行仿真,在simulink模型仿真界面中,运行Start Simulation命令,对所述包括定制硬件S-function模块的模型文件MODEL进行仿真,输出仿真图形;
七.对包括定制硬件S-function模块的所述模型文件MODEL生成目标代码;在所述包括定制硬件S-function模块的模型文件下,在simulink-function模型界面中,运行生成代码命令,运行生成代码命令会调用特定文件夹中的所述TLC文件,根据在定制硬件S-function模块的对话框上输入的相应参数、在所述特定文件夹中的模型文件MODEL.RTW中的包括定制硬件的各硬件的数据结构以及定制硬件特有的设备驱动代码,对包括定制硬件S-function模块的所述模型文件MODEL生成目标代码,输出目标代码以对定制硬件进行读写。
以MPC5634芯片作为定制硬件为例,对本发明进行进一步说明如下。
第一步.编写MPC5634芯片特有的设备驱动代码,编写一TLC(目标语言编译器)文件:PWM.TLC,编写MPC5634芯片C MEX S文件:pwm.c,将所述三个文件保存在一特定文件夹中。
MPC5634芯片特有的设备驱动代码即针对MPC5634的头文件、宏定义、PWM设备代码库,包括:mpc5634.h,EMIOS.h、PWM_HAL.h;
MPC5634的TLC文件PWM.TLC用于根据S-function模块的对话框上输入的相应参数、模型文件MODEL.RTW中的包括MPC5634在内的各硬件数据结构以及MPC5634芯片的设备驱动代码输出目标代码。
TLC文件PWM.TLC中包含有三个TLC函数:
1.BlockTypeSetup函数,用于在Model.h中包含用到的头文件。
例如我们生成的目标代码中要引用到芯片mpc5634.h,在TLC文件中编写代码如下:
%function BlockTypeSetup(block,system)void
%openfile buffer
#include″mpc5634.h″
#include″EMIOS.h″
#include″PWM_HAL.h″
%closefile buffer
%<LibCacheExtern(buffer)>
%endfunction
2.Start函数,用于生成Model.c中的MdlStar函数。在Start函数中,可以调用SfcnParamSettings中的参数值,达到对硬件模块初始化的目的。例如
%assign modul=SFcnParameSettings.Modul
%assign period=SFcnParameSettings.Period
%assign duty=SFcnParameSettings.Duty
PWMSetPeriod(%<modul>,%<period>);
PWMSetDuty(%<modul>,%<duty>)
上面的TLC代码将生成文件Model.c函数MdlStar中的语句:
PWMSetPeriod(1,10);PWMSetDuty(1,30);
其中PWMSetPeriod,PWMSetDuty函数用于扩展底层硬件的调用程序。
3.Output函数,用于生成Model.c中的MdlOutputs函数。
MPC5634芯片C MEX S文件,即pwm.c文件,对于这些pwm.c文件只需要在Simulink仿真下使用,而不会对硬件使用的内存区域进行读写。
MPC5634芯片C MEX S文件必须以如下顺序从下列语句起始:
1)#define S_FUNCTION_NAME PWM
该语句定义了S函数代码入口点的名称,Name必须与C Mex S文件名字相同。
2)#define S_FUNCTION_LEVEL 2
本语句将该C MEX S文件定义成级别为2的S函数。这可以使用户利用S函数提供的全部特性。
3)所需函数。
●mdlInitializeSizes函数:该函数首先校验从定制硬件S-function模块的对话框上输入参数的个数与对话框中的参数数目是否相等,然后从对话框中获得Number of channel参数。
ssSetNumInputPorts(S,2),将输入端口定为2个,然后依次为其定义类型,数据宽度;
ssSetNumOutputPorts(S,1),定义输出端口为1个,然后定义其类型;
ssSetNumSampleTimes(S,1),将采样时间的个数定为1,即该模块中所有PWM通道使用相同的采样时间。
●mdlInitializeSampleTimes采样时间设定函数
S-function模块是离散时间模块。需要自行设定采样时间。在本例中,采样时间是在Mask Editor S-function的Parameters参数对话框中的Simple time传递进入的,参见图5。
ssSetSampleTime(S,0,SAMPLETIME(S));
●mdlStart函数用于在Matlab命令窗口中显示一条信息。
static void mdlStart(SimStruct*S)
{
/*During simulation,just print a message*/
if(ssGetSimMode(S)==SS_SIMMODE_NORMAL){
mexPrintf(″\n PWM_examp driver:Simulatinginitialization\n″);
}
}/*end mdlStart*/
●mdlOutputs函数在此例中可以使一个空程序体。
●为了确保文件被编译为C MEX文件,需要加入如下代码
#ifdef MATLAB_MEX_FILE/*Is this file being compiled as aMEX-file?*/
#include″simulink.c″/*MEX-file interface mechanism*/
#else/*Prevent usage by RTW if TLC file is not found*/
#error″Attempted use non-inlined S-function PWM_examp.c″
#endif
如图2,被封装定制硬件S-function模块需要一个图形用户对话框,使用户在该对话框输入的参数能被C MEX S文件调用。被封装的定制硬件S-function模块使用Simulink API定义的宏和函数从对话框中获得参数。
具体方法如下:在C MEX S文件中所调用的函数如下:
1)使用宏ssGetSFcnParam访问对话框中的参数指针:
const mxArray*ssGetSFcnParam(SimStruct*S,int_T index),该函数的目的就是从对话框中获得参数,其参数分别为SimStruct的结构指针,和参数对应的索引值(从0开始);
例如:在源程序中代码如下:就是获得参数Siganal polarity的指针。
enum{MODULE_NUM=0,CHANNELARRAY_ARGC,SIGNAL_POLARITY_AGE,PERIOD_ARGC,DUTY_ARGC,SAMPLETIME_ARGC};
ssGetSFcnParam(S,PERIOD_AGE);
2)使用mxGetPr从参数数组mxArray中,获得参数的值。
#define POLARITY(S)
(mxGetScalar(ssGetSFcnParam(S,PERIOD_AGE)))
uint8_T period=(uint8_T)period(S);
以上代码中,period中的值即为用户在对话框PWM periods中输入的值。
3)在PWM.C中,使用mdlRTW函数,完成在代码生成过程中对这些参数数据进行赋值和格式化。
mdlRTW和代码生成过程。函数mdlRTW是一种机制,S函数可以用该机制生成数据结构,并将其写入model.rtw文件中。目标语言编译器(TLC),在生成代码时使用这些数据结构。
mdlRTW函数。在本例中调用了函数ssWriteRTWParamSettings来生成一个数据结构。该结构包含了在图4对话框中输入的参数。
enum{MODULE_NUM=0,CHANNELARRAY_ARGC,SIGNAL_POLARITY_AGE,PERIOD_ARGC,DUTY_ARGC,SAMPLETIME_ARGC};
#define MODULE(S)(mxGetScalar(ssGetSFcnParam(S,MODULE_NUM)))
#define CHANNELARRAY_ARG(S)
(ssGetSFcnParam(S,CHANNELARRAY_ARGC))
#define POLARITY(S)
(mxGetScalar(ssGetSFcnParam(S,SIGNAL_POLARITY_AGE)))
#define PERIOD(S)(mxGetScalar(ssGetSFcnParam(S,PERIOD_ARGC)))
#define DUTY(S) (mxGetScalar(ssGetSFcnParam(S,DUTY_ARGC)))
#define SAMPLETIME(S)
(mxGetScalar(ssGetSFcnParam(S,SAMPLETIME_ARGC)))
static void mdlRTW(SimStruct*S)
{
uint8_T period_value;
uint8_T module=(uint8_T)MODULE(S);
uint16_T*channels=(uint16_T*);
mxGetData(CHANNELARRAY_ARG(S));
uint8_T polarity=(uint8_T)POLARITY(S);
uint8_T period=(uint8_T)PERIOD(S);
/*Write out parameters for this block.*/
if(!ssWriteRTWParamSettings(S,5,
SSWRITE_VALUE_DTYPE_NUM,″Module″,
&module,DTINFO(SS_UINT8,COMPLEX_NO),
SSWRITE_VALUE_DTYPE_VECT,″Channels″,
channels,
mxGetNumberOfElements(CHANNELARRAY_ARG(S)),
DTINFO(SS_UINT16,COMPLEX_NO),
SSWRITE_VALUE_DTYPE_NUM,″SignalPolarity″,
&polarity,DTINFO(SS_UINT8,COMPLEX_NO),
SSWRITE_VALUE_DTYPE_NUM,″Period″,
&period,DTINFO(SS_UINT8,COMPLEX_NO),
SSWRITE_VALUE_DTYPE_NUM,″Duty″,
&duty,DTINFO(SS_UINT8,COMPLEX_NO)
)){
return;/*An error occurred which will be reported by SL*/
}
}/*end of mdlRTW
二.将所述特定文件夹作为当前路径,在MATLAB命令窗口中输入mexPWM,这时mex命令可以在所述特定文件夹中生成一个PWM.mexw32文件,在Matlab/simulink仿真时,S-function可以动态连接到PWM.mexw32;
三.将所述特定文件夹作为当前路径,在simulink中新建一模型文件MODEL,在所述新建一模型文件MODEL下进行MPC5634芯片S-function模块封装,在simulink Browser界面中拖入一S-function模块,双击该S-function模块弹出S-function模块对话框,如图3所示,在所述S-function模块对话框中的S-function name栏中输入PWM,并输入pwm.c文件中描述定制硬件特有的输入、输出、模型采样时间等的参数,如图4所示,然后确认提交,由于当S函数模块在Simulink环境下进行仿真时,S函数模块会动态链接到当前路径下同名的.Mexw32文件,从而使pwm.c文件与PWM.mexw32文件建立链接;然后在S函数模块上单击鼠标右键,弹出所述S-function模块的的菜单栏,在其中选择Mask S-Function,编辑对话框Mask Editor:S_function,如图5所示,在Parameters选项栏中,输入需要在MPC5634芯片S-function模块对话框中显示的内容后提交,在Prompt栏中输入的文字,将会在MPC5634芯片S-function模块对话框中显示,在Variable栏中输入的变量要和定制硬件S-function模块对话框输入的参数相对应,在Type栏选择各个字段表现的形式,在Icon选项栏中,输入要在MPC5634芯片S-function模块面板上显示的内容后提交,参见图6,port_label(‘input’,1,‘period’)、port_label(‘input’,2,‘duty’)是在输入端口处的显示标签,模块的输入端口数是在pwm.c文件中设置的,配置完Mask Editor对话框后,MPC5634芯片S-function模块面板如图1所示。配置完Mask Editor对话框后,保存该模型文件MODEL,完成MPC5634芯片S-function模块封装,这样该模型文件MODEL中就存在了封装后的MPC5634芯片S-function模块;
四.在simulink环境界面中对包括MPC5634芯片S-function模块的所述模型文件MODEL进行编辑,编辑完成后,在simulink模型文件菜单栏界面上运行Build命令对所述包括MPC5634芯片S-function模块的模型文件MODEL进行编译,得到一模型文件MODEL.RTW,保存在所述特定文件夹中,模型文件MODEL.RTW中包含有MPC5634芯片的数据结构;在PWM.rtw中的数据结构为:
SFcnParamSettings{
Module 1U
Channels [1U]
SignalPolarity 2U
Period 10U
Duty 30U
}
}
这样存储在PWM.rtw中的数值在文件PWM.tlc可以被引用。
例如在PWM.tlc中的语句:
%assign module=CAST(″Number″,SFcnParamSettings.Module)
PWM%<module>CTL2=0x80;
在最后生成的.c文件中翻译成的代码为:
PWM1CTL2=0x80;
五.在simulink Browser界面中,双击所述模型文件MODEL中的封装后的MPC5634芯片S-function模块,会弹出MPC5634芯片S-function模块的对话框,如图2所示,在弹出的MPC5634芯片S-function模块的对话框上输入相应的参数后提交;
六.对所述包括MPC5634芯片S-function模块的模型文件MODEL进行仿真,在simulink模型仿真界面中,运行Start Simulation命令,对所述包括MPC5634芯片S-function模块的模型文件MODEL进行仿真,输出仿真图形;
七.对包括MPC5634芯片S-function模块的所述模型文件MODEL生成目标代码;在所述包括MPC5634芯片S-function模块的模型文件下,在simulink-function模型界面中,运行生成代码命令,运行生成代码命令会调用特定文件夹中的所述PWM.TLC文件,根据在MPC5634芯片S-function模块的对话框上输入的相应参数、在所述特定文件夹中的模型文件MODEL.RTW中的包括MPC5634芯片在内的各硬件的数据结构以及MPC5634芯片特有的设备驱动代码,对包括MPC5634芯片S-function模块的所述模型文件MODEL生成目标代码,输出目标代码以对MPC5634芯片进行读写。
本发明的利用Simulink对定制硬件进行模型仿真及代码生成的方法,编写硬件特有的设备驱动代码、编写C MEX S文件、编写TLC(目标语言编译器语言)文件并保存在一特定文件夹中;通过MATLAB的mex命令在所述特定文件夹中生成所述C MEX S文件的mexw32文件;在simulink中新建一模型文件MODEL并在其中进行定制硬件S-function模块封装,使C MEX S文件与其mexw32文件建立链接,并生成定制硬件S-function模块面板及定制硬件S-function模块的对话框;对包括定制硬件S-function模块的模型文件MODEL进行编辑,然后进行编译得到一模型文件MODEL.RTW,保存在所述特定文件夹中,模型文件MODEL.RTW中会包含有定制的数据结构;在Matlab/simulink仿真时,由于S-function模块可以动态连接到所述C MEX S文件的mexw32,所以能够对所述包括定制硬件S-function模块的模型文件MODEL进行仿真,输出仿真图形;如果要对包括定制硬件S-function模块的模型文件MODEL生成目标代码,则可以在simulink-function模型界面中运行生成代码命令,运行生成代码命令会调用特定文件夹中的所述TLC文件,根据在定制硬件S-function模块的对话框上输入的相应参数、在所述特定文件夹中的模型文件MODEL.RTW中的包括定制硬件在内的各硬件的数据结构以及定制硬件特有的设备驱动代码,对包括定制硬件S-function模块的模型文件MODEL生成目标代码,输出目标代码以对定制硬件进行读写。在模型硬件在环过程中,当需要对包括定制硬件S-function模块的模型文件进行仿真或生成目标代码时,对于不同参数配置的定制硬件,只需要弹出所述模型文件MODEL中的封装后的定制硬件S-function模块的对话框,在该对话框上输入相应的参数后提交即可,不需要软件人员修改定制硬件设备驱动程序的源代码,免去了在模型硬件在环过程中,系统人员每次更改硬件配置就需要软件人员修改驱动代码的步骤,减少了系统开发的时间,也完善了对RTW不支持的目标板的工具链。
所述C MEX S文件,只需要在Simulink仿真下使用,不访问I/O板和其它目标硬件,在模型文件中起到“虚拟”模块的作用而不会对硬件使用的内存区域进行读写,而且C MEX S函数不会分配任何的SimStruct结构,可以减少内存的使用量;所述TLC文件,实现S-function同应用程序接口,编写的TLC文件是为包括定制硬件S-function模块的模型文件生成实际工作代码,是要对硬件进行访问的。
Claims (6)
1.一种利用Simulink对定制硬件进行模型仿真的方法,其特征在于,包括以下步骤:
一.编写定制硬件C MEX S文件,所述C MEX S文件包括描述定制硬件特有的输入、输出、模型采样时间参数以及输出同输入之间的变换关系,将所述C MEX S文件保存在一特定文件夹中,所述C MEX S文件扩展名为“c”;
二.将所述特定文件夹作为当前路径,在MATLAB命令窗口中输入mexC MEX S文件名,在所述特定文件夹中生成一个C MEX S文件名.mexw32文件;
三.将所述特定文件夹作为当前路径,在simulink中新建一模型文件MODEL,在所述新建一模型文件MODEL下进行定制硬件S-function模块封装,在simulink Browser界面中拖入一S-function模块,弹出所述S-function模块对话框,在所述S-function模块对话框中输入同所述CMEX S文件名一致的文件名,并输入C MEX S文件中描述定制硬件特有的包括输入、输出、模型采样时间在内的参数后确认提交,从而使C MEX S文件与C MEX S文件名.mexw32文件建立链接;然后弹出所述S-function模块的菜单栏,在其中选择Mask S-Function,编辑对话框Mask Editor:S_function,完成定制硬件S-function模块封装;完成定制硬件S-function模块封装后,该模型文件MODEL中就存在了封装后的定制硬件S-function模块;
四.在simulink环境界面中对包括定制硬件S-function模块的所述模型文件MODEL进行编辑,编辑完成后,在simulink模型文件菜单栏界面上运行Build命令对所述包括定制硬件S-function模块的模型文件MODEL进行编译,得到一模型文件MODEL.RTW,保存在所述特定文件夹中;
五.在simulink Browser界面中,弹出所述模型文件MODEL中的封装后的定制硬件S-function模块的对话框,在弹出的定制硬件S-function模块的对话框上输入相应的参数后提交;
六.对所述包括定制硬件S-function模块的模型文件MODEL进行仿真,在simul ink模型仿真界面中,运行Start Simulation命令,对所述包括定制硬件S-function模块的模型文件MODEL进行仿真,输出仿真图形。
2.根据权利要求1所述的利用Simulink对定制硬件进行模型仿真的方法,其特征在于,步骤三中,编辑对话框Mask Editor:S_function,包括,在Parameters选项栏中,输入需要在定制硬件S-function模块对话框中显示的内容后提交,在Prompt栏中输入文字,以在定制硬件S-function模块对话框中显示,在Variable栏中输入变量以和定制硬件S-function模块对话框输入的参数相对应,在Type栏选择各个字段表现的形式;在Icon选项栏中,输入要在定制硬件S-function模块面板上显示的内容后提交。
3.一种利用Simulink对定制硬件进行模型代码生成的方法,其特征在于,包括以下步骤:
一.编写定制硬件特有的设备驱动代码;编写定制硬件C MEX S文件,所述C MEX S文件包括描述定制硬件特有的输入、输出、模型采样时间等的参数以及输出同输入之间的变换关系,扩展名为“c”;编写TLC文件,所述TLC文件同所述C MEX S文件的文件名相同,扩展名为“TLC”;将所述三个文件保存在一特定文件夹中;
二.将所述特定文件夹作为当前路径,在MATLAB命令窗口中输入mexC MEX S文件名,在所述特定文件夹中生成一个C MEX S文件名.mexw32文件;
三.将所述特定文件夹作为当前路径,在simulink中新建一模型文件MODEL,在所述新建一模型文件MODEL下进行定制硬件S-function模块封装,在simulink Browser界面中拖入一S-function模块,弹出所述S-function模块对话框,在所述S-function模块对话框中输入同所述CMEX S文件名一致的文件名,并输入C MEX S文件中描述定制硬件特有的包括输入、输出、模型采样时间在内的参数后确认提交,从而使C MEX S文件与C MEX S文件名.mexw32文件建立链接;然后弹出所述S-function模块的菜单栏,在其中选择Mask S-Function,编辑对话框Mask Editor:S_function,配置完Mask Editor对话框后,保存该模型文件MODEL,完成定制硬件S-function模块封装,该模型文件MODEL中就存在了封装后的定制硬件S-function模块;
四.在simulink环境界面中对包括定制硬件S-function模块的所述模型文件MODEL进行编辑,编辑完成后,在simulink模型文件菜单栏界面上运行Build命令对所述包括定制硬件S-function模块的模型文件MODEL进行编译,得到一模型文件MODEL.RTW,保存在所述特定文件夹中;
五.在simulink Browser界面中,弹出所述模型文件MODEL中的封装后的定制硬件S-function模块的对话框,在弹出的定制硬件S-function模块的对话框上输入相应的参数后提交;
六.对包括定制硬件S-function模块的所述模型文件MODEL生成目标代码;在所述包括定制硬件S-function模块的模型文件下,在simulink-function模型界面中,运行生成代码命令,运行生成代码命令会调用所述特定文件夹中的所述TLC文件,根据在定制硬件S-function模块的对话框上输入的相应参数、在所述特定文件夹中的模型文件MODEL.RTW中的包括定制硬件的各硬件的数据结构以及定制硬件特有的设备驱动代码,对包括定制硬件S-function模块的所述模型文件MODEL生成目标代码。
4.根据权利要求3所述的利用Simulink对定制硬件进行模型代码生成的方法,其特征在于,在步骤五之后,对所述包括定制硬件S-function模块的模型文件MODEL进行仿真,在simulink模型仿真界面中,运行Start Simulation命令,对所述包括定制硬件S-function模块的模型文件MODEL进行仿真,输出仿真图形;然后进行步骤六,在所述包括定制硬件S-function模块的模型文件下,在simulink-function模型界面中,运行生成代码命令,运行生成代码命令会调用特定文件夹中的所述TLC文件,根据在定制硬件S-function模块的对话框上输入的相应参数、在所述特定文件夹中的模型文件MODEL.RTW中的包括定制硬件的各硬件的数据结构以及定制硬件特有的设备驱动代码,输出目标代码,以对定制硬件进行读写。
5.根据权利要求3或4所述的利用Simulink对定制硬件进行模型代码生成的方法,其特征在于,所述设备驱动代码包括定制硬件的头文件、宏定义、I/O设备代码库。
6.根据权利要求3所述的利用Simulink对定制硬件进行模型代码生成的方法,其特征在于,步骤三中,编辑对话框Mask Editor:S_function,包括,在Parameters选项栏中,输入需要在定制硬件S-function模块对话框中显示的内容后提交,在Prompt栏中输入文字,以在定制硬件S-function模块对话框中显示,在Variable栏中输入变量以和定制硬件S-function模块对话框输入的参数相对应,在Type栏选择各个字段表现的形式;在Icon选项栏中,输入要在定制硬件S-function模块面板上显示的内容后提交。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009102018969A CN102087610A (zh) | 2009-12-08 | 2009-12-08 | 利用Simulink对定制硬件进行模型仿真及代码生成的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009102018969A CN102087610A (zh) | 2009-12-08 | 2009-12-08 | 利用Simulink对定制硬件进行模型仿真及代码生成的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102087610A true CN102087610A (zh) | 2011-06-08 |
Family
ID=44099429
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009102018969A Pending CN102087610A (zh) | 2009-12-08 | 2009-12-08 | 利用Simulink对定制硬件进行模型仿真及代码生成的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102087610A (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103150445A (zh) * | 2013-03-21 | 2013-06-12 | 北京经纬恒润科技有限公司 | 一种matlab模型变量的剖析方法及装置 |
CN103677835A (zh) * | 2013-12-16 | 2014-03-26 | 北京经纬恒润科技有限公司 | 软件集成方法及系统 |
CN104090812A (zh) * | 2014-06-28 | 2014-10-08 | 中国北方发动机研究所(天津) | Simulink模型中参数储存方式的管理平台及管理方法 |
CN104391709A (zh) * | 2014-12-12 | 2015-03-04 | 北京润科通用技术有限公司 | 一种文件生成方法及装置 |
CN105629960A (zh) * | 2016-02-26 | 2016-06-01 | 北京长城华冠汽车科技股份有限公司 | 一种电动汽车整车控制器模型在环测试系统及方法 |
CN106933582A (zh) * | 2017-03-03 | 2017-07-07 | 浙江仕善汽车科技股份有限公司 | 一种提高汽车控制器开发软件代码执行效率的方法 |
CN106970787A (zh) * | 2017-03-03 | 2017-07-21 | 浙江仕善汽车科技股份有限公司 | 一种汽车控制器快速原型实现方法 |
CN107797805A (zh) * | 2017-10-31 | 2018-03-13 | 北京新能源汽车股份有限公司 | 一种代码封装方法、装置及计算机可读存储介质 |
CN108469778A (zh) * | 2017-10-23 | 2018-08-31 | 北京灵思创奇科技有限公司 | 一种伺服控制mbd开发平台 |
CN109884923A (zh) * | 2019-02-21 | 2019-06-14 | 苏州天准科技股份有限公司 | 一种自动化设备控制模块化可配置系统 |
CN113283119A (zh) * | 2021-06-21 | 2021-08-20 | 中国铁道科学研究院集团有限公司 | ePWM模块的仿真模型建立方法、装置及仿真模型 |
CN114201165A (zh) * | 2021-12-17 | 2022-03-18 | 北京世冠金洋科技发展有限公司 | 一种构建仿真模型的方法及装置 |
CN115185539A (zh) * | 2022-09-06 | 2022-10-14 | 西安羚控电子科技有限公司 | 一种生成可执行动态链接库文件方法、装置及存储介质 |
-
2009
- 2009-12-08 CN CN2009102018969A patent/CN102087610A/zh active Pending
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103150445A (zh) * | 2013-03-21 | 2013-06-12 | 北京经纬恒润科技有限公司 | 一种matlab模型变量的剖析方法及装置 |
CN103677835A (zh) * | 2013-12-16 | 2014-03-26 | 北京经纬恒润科技有限公司 | 软件集成方法及系统 |
CN104090812A (zh) * | 2014-06-28 | 2014-10-08 | 中国北方发动机研究所(天津) | Simulink模型中参数储存方式的管理平台及管理方法 |
CN104391709A (zh) * | 2014-12-12 | 2015-03-04 | 北京润科通用技术有限公司 | 一种文件生成方法及装置 |
CN105629960A (zh) * | 2016-02-26 | 2016-06-01 | 北京长城华冠汽车科技股份有限公司 | 一种电动汽车整车控制器模型在环测试系统及方法 |
CN105629960B (zh) * | 2016-02-26 | 2019-02-05 | 北京长城华冠汽车科技股份有限公司 | 一种电动汽车整车控制器模型在环测试系统及方法 |
CN106933582A (zh) * | 2017-03-03 | 2017-07-07 | 浙江仕善汽车科技股份有限公司 | 一种提高汽车控制器开发软件代码执行效率的方法 |
CN106970787A (zh) * | 2017-03-03 | 2017-07-21 | 浙江仕善汽车科技股份有限公司 | 一种汽车控制器快速原型实现方法 |
CN108469778A (zh) * | 2017-10-23 | 2018-08-31 | 北京灵思创奇科技有限公司 | 一种伺服控制mbd开发平台 |
CN107797805A (zh) * | 2017-10-31 | 2018-03-13 | 北京新能源汽车股份有限公司 | 一种代码封装方法、装置及计算机可读存储介质 |
CN107797805B (zh) * | 2017-10-31 | 2020-11-13 | 北京新能源汽车股份有限公司 | 一种代码封装方法、装置及计算机可读存储介质 |
CN109884923A (zh) * | 2019-02-21 | 2019-06-14 | 苏州天准科技股份有限公司 | 一种自动化设备控制模块化可配置系统 |
CN113283119A (zh) * | 2021-06-21 | 2021-08-20 | 中国铁道科学研究院集团有限公司 | ePWM模块的仿真模型建立方法、装置及仿真模型 |
CN113283119B (zh) * | 2021-06-21 | 2024-03-12 | 中国铁道科学研究院集团有限公司 | ePWM模块的仿真模型建立方法、装置及仿真模型 |
CN114201165A (zh) * | 2021-12-17 | 2022-03-18 | 北京世冠金洋科技发展有限公司 | 一种构建仿真模型的方法及装置 |
CN115185539A (zh) * | 2022-09-06 | 2022-10-14 | 西安羚控电子科技有限公司 | 一种生成可执行动态链接库文件方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102087610A (zh) | 利用Simulink对定制硬件进行模型仿真及代码生成的方法 | |
US6021266A (en) | Method of designing an integrated circuit using scheduling and allocation with parallelism and handshaking communication, and an integrated circuit designed by such method | |
Gajski et al. | SpecC: Specification language and methodology | |
US8347245B2 (en) | Hardware definition language generation for frame-based processing | |
CN108038294B (zh) | Uvm环境搭建方法和系统 | |
CN101253478A (zh) | 类型推理和类型导向的后期绑定 | |
US20080244541A1 (en) | Code translator and method of automatically translating modeling language code to hardware language code | |
Muller-Glaser et al. | Multiparadigm modeling in embedded systems design | |
US20030023950A1 (en) | Methods and apparatus for deep embedded software development | |
Pree et al. | Modeling with the timing definition language (TDL) | |
De Man et al. | Co-design of DSP systems | |
CN113687814A (zh) | 基于autosar架构的模型框架和接口文件的自动化实现方法 | |
CN104063231A (zh) | 一种基于hit-tena的试验资源快速接入方法 | |
CN105335161A (zh) | 一种从tasm时间抽象状态机到扩展nta自动机的转换方法 | |
Kandé et al. | Bridging the gap between IEEE 1471, an architecture description language, and UML | |
Sjöstedt et al. | Mapping Simulink to UML in the design of embedded systems: Investigating scenarios and transformations | |
CN103049602A (zh) | 基于模型驱动工程的将aadl组件转换到接口自动机模型方法 | |
CN115421940A (zh) | 一种基于共享内存技术的多源异构模型白盒集成方法 | |
Klaus et al. | Automatic generation of scheduled SystemC models of embedded systems from extended task graphs | |
CN113448571A (zh) | 一种基于matlab的数字信号处理器代码快速生成方法 | |
CN116362060B (zh) | 一种系统仿真模型自动生成方法、装置及设备 | |
Öberg et al. | Grammar-based design of embedded systems | |
Marwedel | Code generation for embedded processors: An introduction | |
Willink et al. | Programming specifications in CAL | |
Törngren et al. | Lessons learned from model based development of a distributed embedded automotive control system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20110608 |