利用Simulink对定制硬件进行模型仿真及代码生成的方法

文档序号:6582297阅读:1800来源:国知局
专利名称:利用Simulink对定制硬件进行模型仿真及代码生成的方法
技术领域
本发明涉及在汽车工程领域基于模型开发的方法,特别涉及一种利用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-fimction模块的菜单栏,在其中选择Mask S-Function,编辑对话框Mask Editor :S_function,完成定制硬件S-function模块封装; 完成定制硬件S-fimction模块封装后,该模型文件MODEL中就存在了封装后的定制硬件 S-function 模块;四.在simulink环境界面中对包括定制硬件S-function模块的所述模型文件MODEL进行编辑,编辑完成后,在simulink模型文件菜单栏界面上运行BuiId命令对所述包 括定制硬件S-function模块的模型文件MODEL进行编译,得到一模型文件MODEL. RTff,保存 在所述特定文件夹中;五·在simulink Browser界面中,弹出所述模型文件MODEL中的封装后的定制硬 件S-fimction模块的对话框,在弹出的定制硬件S-fimction模块的对话框上输入相应的 参数后提交;六.对所述包括定制硬件s-function模块的模型文件MODEL进行仿真,在 simulink模型仿真界面中,运行Mart 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-fimction模块的菜单栏,在其中选择Mask S-Function,编辑对话框Mask Editor :S function,配置完Mask Editor对话框后,保存该 模型文件MODEL,完成定制硬件S-fimction模块封装,该模型文件MODEL中就存在了封装后 的定制硬件S-fimction模块;四.在simulink环境界面中对包括定制硬件S-function模块的所述模型文件 MODEL进行编辑,编辑完成后,在simul ink模型文件菜单栏界面上运行Bui Id命令对所述包 括定制硬件S-function模块的模型文件MODEL进行编译,得到一模型文件MODEL. RTff,保存 在所述特定文件夹中;五·在simulink Browser界面中,弹出所述模型文件MODEL中的封装后的定制硬 件S-fimction模块的对话框,在弹出的定制硬件S-fimction模块的对话框上输入相应的 参数后提交;六.对包括定制硬件S-function模块的所述模型文件MODEL生成目标代码;在 所述包括定制硬件S-function模块的模型文件下,在simulink-function模型界面中, 运行生成代码命令,运行生成代码命令会调用所述特定文件夹中的所述TLC文件,根据在 定制硬件S-fimction模块的对话框上输入的相应参数、在所述特定文件夹中的模型文件 MODEL. RTW中的包括定制硬件的各硬件的数据结构以及定制硬件特有的设备驱动代码,对 包括定制硬件S-function模块的所述模型文件MODEL生成目标代码。
在步骤五之后,可以对所述包括定制硬件S-function模块的模型文件MODEL进 行仿真,在simulink模型仿真界面中,运行Mart Simulation命令,对所述包括定制硬 件S-fimction模块的模型文件MODEL进行仿真,输出仿真图形;然后进行步骤六,在所述 包括定制硬件S-function模块的模型文件下,在simulink-function模型界面中,运行 生成代码命令,运行生成代码命令会调用特定文件夹中的所述TLC文件,根据在定制硬件 S-function模块的对话框上输入的相应参数、在所述特定文件夹中的模型文件MODEL. RTff 中的包括定制硬件的各硬件的数据结构以及定制硬件特有的设备驱动代码,输出目标代 码,以对定制硬件进行读写。所述设备驱动代码包括定制硬件的头文件、宏定义、1/0设备代码库。本发明的利用Simulink对定制硬件进行模型仿真及代码生成的方法,编写硬件 特有的设备驱动代码、编写C MEX S文件、编写TLC(目标语言编译器语言)文件并保存在 一特定文件夹中;通过MATLAB的mex命令在所述特定文件夹中生成所述C MEX S文件的 mexw32文件;在simulink中新建一模型文件MODEL并在其中进行定制硬件S-function 模块封装,使C MEX S文件与其meXW32文件建立链接,并生成定制硬件S-function模 块面板及定制硬件S-fimction模块的对话框;对包括定制硬件S-fimction模块的模型 文件MODEL进行编辑,然后进行编译得到一模型文件MODEL. RTff,保存在所述特定文件夹 中,模型文件MODEL. RTff中会包含有定制的数据结构;在Matlab/simulink仿真时,由于 S-function模块可以动态连接到所述C MEX S文件的meXW32,所以能够对所述包括定制 硬件S-fimction模块的模型文件MODEL进行仿真,输出仿真图形;如果要对包括定制硬件 S-function模块的模型文件MODEL生成目标代码,则可以在simulink-function模型界 面中运行生成代码命令,运行生成代码命令会调用特定文件夹中的所述TLC文件,根据在 定制硬件S-fimction模块的对话框上输入的相应参数、在所述特定文件夹中的模型文件 MODEL. RTW中的包括定制硬件在内的各硬件的数据结构以及定制硬件特有的设备驱动代 码,对包括定制硬件S-fimction模块的模型文件MODEL生成目标代码,输出目标代码以对 定制硬件进行读写。在模型硬件在环过程中,当需要对包括定制硬件S-fimction模块的模 型文件进行仿真或生成目标代码时,对于不同参数配置的定制硬件,只需要弹出所述模型 文件MODEL中的封装后的定制硬件S-fimction模块的对话框,在该对话框上输入相应的参 数后提交即可,不需要软件人员修改定制硬件设备驱动程序的源代码,免去了在模型硬件 在环过程中,系统人员每次更改硬件配置就需要软件人员修改驱动代码的步骤,减少了系 统开发的时间,也完善了对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/ 0设备代码库;编写定制硬件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-fimction模块对话框中输入同所述C MEX S文件名一致的文件名,并输入C MEX S文件中描述定制硬件特有的输入、输出、模型采样时间等的参数,如图4所示,然后确 认提交,由于当S函数模块在Simulink环境下进行仿真时,S函数模块会动态链接到当前 路径下同名的.Mexw32文件,从而使C MEX S文件与C MEX S文件名.mexw32文件建立链 接;然后在S函数模块上单击鼠标右键,弹出所述S-fimction模块的的菜单栏,在其中选择 Mask S-Function,编辑对话框 Mask Editor :S_function,如图 5 所示,在 Parameters 选项 栏中,输入需要在定制硬件S-fimction模块对话框中显示的内容后提交,在Prompt栏中输 入的文字,将会在定制硬件S-fimction模块对话框中显示,在Variable栏中输入的变量要 和定制硬件S-fimction模块对话框输入的参数相对应,在Type栏选择各个字段表现的形 式,在Icon选项栏中,输入要在定制硬件S-fimction模块面板上显示的内容后提交,参见 图 6,port_label( ‘input,,1,‘period,)、port_label ( ‘input,,2,‘duty,)是在输入端 口处的显示标签,模块的输入端口数是在C MEX S文件中设置的,配置完Mask Editor对话 框后,保存该模型文件MODEL,完成定制硬件S-fimction模块封装,这样该模型文件MODEL 中就存在了封装后的定制硬件S-fimction模块;四.在simulink环境界面中对包括定制硬件S-function模块的所述模型文件 MODEL进行编辑,编辑完成后,在simulink模型文件菜单栏界面上运行BuiId命令对所述包 括定制硬件S-function模块的模型文件MODEL进行编译,得到一模型文件MODEL. RTff,保存 在所述特定文件夹中,模型文件MODEL. RTff中包含有定制硬件的数据结构;五.在simulink Browser界面中,双击所述模型文件MODEL中的封装后的定制硬 件S-fimction模块,会弹出定制硬件S-fimction模块的对话框,如图2所示,在弹出的定 制硬件S-fimction模块的对话框上输入相应的参数后提交;六.对所述包括定制硬件S-function模块的模型文件MODEL进行仿真,在simulink模型仿真界面中,运行Mart Simulation命令,对所述包括定制硬件S-function 模块的模型文件MODEL进行仿真,输出仿真图形;七.对包括定制硬件S-fimction模块的所述模型文件MODEL生成目标代码;在所 述包括定制硬件S-function模块的模型文件下,在simulink-function模型界面中,运行 生成代码命令,运行生成代码命令会调用特定文件夹中的所述TLC文件,根据在定制硬件 S-function模块的对话框上输入的相应参数、在所述特定文件夹中的模型文件MODEL. RTff 中的包括定制硬件的各硬件的数据结构以及定制硬件特有的设备驱动代码,对包括定制硬 件S-fimction模块的所述模型文件MODEL生成目标代码,输出目标代码以对定制硬件进行 读写。以MPC5634芯片作为定制硬件为例,对本发明进行进一步说明如下。第一步.编写MPC5634芯片特有的设备驱动代码,编写一 TLC(目标语言编译器) 文件PWM. TLC,编写MPC5634芯片C MEX S文件pwm. c,将所述三个文件保存在一特定文件夹中。MPC5634芯片特有的设备驱动代码即针对MPC5634的头文件、宏定义、PWM设备代 码库,包括mpc5634. h, EMI0S. 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)>% endfunction2. Mart函数,用于生成Model, c中的MdlMar函数。在Mart函数中,可以调用 SfcnParamSettings中的参数值,达到对硬件模块初始化的目的。例如% assign modul = SFcnParameSettings. Modul% assign period = SFcnParameSettings.Period% assign duty = SFcnParameSettings. DutyPWMSetPeriod(% <modul>, %〈period ;PWMSetDuty (% <modul>, % <duty>)上面的TLC代码将生成文件Model, c函数MdlMar中的语句PWMSetPeriod (1,10) ;PWMSetDuty(1,30);
其中PWMktPeriod,PWMSetDuty函数用于扩展底层硬件的调用程序。3. Output 函数,用于生成 Model, c 中的 MdlOutputs 函数。MPC5634芯片C MEX S文件,即pwm. c文件,对于这些pwm. c文件只需要在 Simulink仿真下使用,而不会对硬件使用的内存区域进行读写。MPC5634芯片C MEX S文件必须以如下顺序从下列语句起始l)#define S_FUNCTION_NAME PWM该语句定义了 S函数代码入口点的名称,Name必须与C Mex S文件名字相同。2)#define S_FUNCTION_LEVEL 2本语句将该C MEX S文件定义成级别为2的S函数。这可以使用户利用S函数提 供的全部特性。3)所需函数。· mdllnitializeSizes函数该函数首先校验从定制硬件S-function模块的对 话框上输入参数的个数与对话框中的参数数目是否相等,然后从对话框中获得Number of channel 参数。ssSetNurnhputPortMS,〗),将输入端口定为2个,然后依次为其定义类型,数据 宽度;SsSetNumOutputPorts(S,l),定义输出端口为1个,然后定义其类型;ssSetNumSampleTimes(S, 1),将采样时间的个数定为1,即该模块中所有P丽通道 使用相同的采样时间。· mdllnitializeSampleTimes 采样时间设定函数S-fimction模块是离散时间模块。需要自行设定采样时间。在本例中,采样时间 Mask Editor S-function ^ ParametersW 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_SIMM0DE_N0RMAL){mexPrintf(" \n PWM_examp driver SimulatinginitializationXn");}}/*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 RTff if TLC file is not found氺/#error〃 Attempted use non-inlined S-function PWM_examp. c"#endif
如图2,被封装定制硬件S-fimction模块需要一个图形用户对话框,使用户在 该对话框输入的参数能被C MEX S文件调用。被封装的定制硬件S-fimction模块使用 Simulink API定义的宏和函数从对话框中获得参数。具体方法如下在C MEX S文件中所调用的函数如下1)使用宏ssGetSFcnParam访问对话框中的参数指针const mxArray*ssGetSFcnParam(SimStruct*S, int_T index),. 白勺巨白勺 1 是从对话框中获得参数,其参数分别为Sin^truct的结构指针,和参数对应的索引值(从0 开始);例如在源程序中代码如下就是获得参数Siganal polarity的指针。enum{M0DULE_NUM = 0, CHANNELARRAY_ARGC, SIGNAL_POLARITY_AGE, PERI0D_ ARGC, DUTY_ARGC,SAMPLETIME_ARGC};ssGetSFcnParam(S,PERI0D_AGE);2)使用mxGetft·从参数数组mxArray中,获得参数的值。#define POLARITY(S)(mxGetScalar(ssGetSFcnParam(S, PERI0D_AGE)))uint8_T period = (uint8_T) period (S);以上代码中,period中的值即为用户在对话框PWM periods中输入的值。3)在PWM. C中,使用mdlRTW函数,完成在代码生成过程中对这些参数数据进行赋 值和格式化。mdlRTW和代码生成过程。函数mdlRTW是一种机制,S函数可以用该机制生成数据 结构,并将其写入model, rtw文件中。目标语言编译器(TLC),在生成代码时使用这些数据 结构。mdlRTW函数。在本例中调用了函数ssWriteRTWParan^ettings来生成一个数据结 构。该结构包含了在图4对话框中输入的参数。enum{M0DULE_NUM = 0, CHANNELARRAY_ARGC, SIGNAL_P0LARITY_AGE, PERI0D_ ARGC, DUTY_ARGC, SAMPLETIME_ARGC};#define MODULE (S) (mxGetScalar (ssGetSFcnParam(S, M0DULE_NUM)))#define CHANNELARRAY_ARG(S)(ssGetSFcnParam(S, CHANNELARRAY_ARGC))#define POLARITY (S)(mxGetScalar (ssGetSFcnParam(S, SIGNAL_P0LARITY_AGE)))#define PERIOD(S)(mxGetScalar(ssGetSFcnParam(S, PERI0D_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);
uintl6_T*channels = (uintl6_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 ( ! ssffriteRTWParamSettings(S, 5,SSWRITE_VALUE_DTYPE_NUM, “ Module",&module, DTINFO(SS_UINT8, C0MPLEX_N0),SSffRITE_VALUE_DTYPE_VECT, “ Channels",channels,mxGetNumberOfElements(CHANNELARRAY_ARG(S)),DTINFO(SS_UINT16, C0MPLEX_N0),SSWRITE_VALUE_DTYPE_NUM, “ SignalPolarity“,&polarity, DTINFO(SS_UINT8, C0MPLEX_N0),SSWRITE_VALUE_DTYPE_NUM, “ Period",&period,DTINFO(SS_UINT8, C0MPLEX_N0),SSWRITE_VALUE_DTYPE_NUM, “ Duty",&duty,DTINFO (SS_UINT8, C0MPLEX_N0))){return ;/*An error occurred which will be reported by SL*/}}/*end of mdIRTff二.将所述特定文件夹作为当前路径,在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模块对话框中显示的内容后提交,在ftx)mpt栏中输入的文字,将 会在MPC5634芯片S-function模块对话框中显示,在Variable栏中输入的变量要和定制 硬件S-fimction模块对话框输入的参数相对应,在Type栏选择各个字段表现的形式,在 Icon选项栏中,输入要在MPC5634芯片S-function模块面板上显示的内容后提交,参见图 6,port_label( ‘input,,l,‘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{ModuleIUChannels[1U]SignalPolarity 2UPeriod10UDuty30U}}这样存储在PWM. rtw中的数值在文件PWM. tic可以被引用。例如在P丽.tic中的语句% 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模型仿真界面中,运行Mart Simulation命令,对所述包括MPC5634芯片 S-function模块的模型文件MODEL进行仿真,输出仿真图形;七.对包括MPC56;34芯片S-function模块的所述模型文件MODEL生成目标代码; 在所述包括MPC5634芯片S-function模块的模型文件下,在simulink-function模型界面 中,运行生成代码命令,运行生成代码命令会调用特定文件夹中的所述PWM. TLC文件,根据 在MPC5634芯片S-fimction模块的对话框上输入的相应参数、在所述特定文件夹中的模型 文件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-fimction模块的对话框;对包括定制硬件S-fimction模块的模型 文件MODEL进行编辑,然后进行编译得到一模型文件MODEL. RTff,保存在所述特定文件夹 中,模型文件MODEL. RTff中会包含有定制的数据结构;在Matlab/simulink仿真时,由于 S-function模块可以动态连接到所述C MEX S文件的meXW32,所以能够对所述包括定制 硬件S-fimction模块的模型文件MODEL进行仿真,输出仿真图形;如果要对包括定制硬件 S-function模块的模型文件MODEL生成目标代码,则可以在simulink-function模型界 面中运行生成代码命令,运行生成代码命令会调用特定文件夹中的所述TLC文件,根据在 定制硬件S-fimction模块的对话框上输入的相应参数、在所述特定文件夹中的模型文件 MODEL. RTW中的包括定制硬件在内的各硬件的数据结构以及定制硬件特有的设备驱动代 码,对包括定制硬件S-fimction模块的模型文件MODEL生成目标代码,输出目标代码以对 定制硬件进行读写。在模型硬件在环过程中,当需要对包括定制硬件S-fimction模块的模 型文件进行仿真或生成目标代码时,对于不同参数配置的定制硬件,只需要弹出所述模型 文件MODEL中的封装后的定制硬件S-fimction模块的对话框,在该对话框上输入相应的参 数后提交即可,不需要软件人员修改定制硬件设备驱动程序的源代码,免去了在模型硬件 在环过程中,系统人员每次更改硬件配置就需要软件人员修改驱动代码的步骤,减少了系 统开发的时间,也完善了对RTW不支持的目标板的工具链。 所述C MEX S文件,只需要在Simulink仿真下使用,不访问1/0板和其它目标硬 件,在模型文件中起到“虚拟”模块的作用而不会对硬件使用的内存区域进行读写,而且C MEX S函数不会分配任何的Sin^truct结构,可以减少内存的使用量;所述TLC文件,实现 S-function同应用程序接口,编写的TLC文件是为包括定制硬件S-fimction模块的模型文 件生成实际工作代码,是要对硬件进行访问的。
权利要求
1.一种利用Simulink对定制硬件进行模型仿真的方法,其特征在于,包括以下步骤一.编写定制硬件CMEX S文件,所述C MEX S文件包括描述定制硬件特有的输入、输 出、模型采样时间参数以及输出同输入之间的变换关系,将所述C MEX S文件保存在一特定 文件夹中,所述C MEX S文件扩展名为“C”;二.将所述特定文件夹作为当前路径,在MATLAB命令窗口中输入mexCMEX 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-fimction模块的菜单栏,在其中选择Mask S-Function,编辑对话框Mask Editor :S_function,完成定制硬件S-function模块封装; 完成定制硬件S-fimction模块封装后,该模型文件MODEL中就存在了封装后的定制硬件 S-function 模块;四.在simulink环境界面中对包括定制硬件S-function模块的所述模型文件MODEL 进行编辑,编辑完成后,在simulink模型文件菜单栏界面上运行Build命令对所述包括定 制硬件S-function模块的模型文件MODEL进行编译,得到一模型文件MODEL. RTff,保存在所 述特定文件夹中;五·在simulink Browser界面中,弹出所述模型文件MODEL中的封装后的定制硬件 S-function模块的对话框,在弹出的定制硬件S-fimction模块的对话框上输入相应的参 数后提交;六.对所述包括定制硬件S-function模块的模型文件MODEL进行仿真,在simul ink 模型仿真界面中,运行Mart Simulation命令,对所述包括定制硬件S-fimction模块的模 型文件MODEL进行仿真,输出仿真图形。
2.根据权利要求1所述的利用Simulink对定制硬件进行模型仿真的方法,其特征在 于,步骤三中,编辑对话框Mask Editor :S_function,包括,在Parameters选项栏中,输入 需要在定制硬件S-fimction模块对话框中显示的内容后提交,在ftx)mpt栏中输入文字, 以在定制硬件S-function模块对话框中显示,在Variable栏中输入变量以和定制硬件 S-function模块对话框输入的参数相对应,在Type栏选择各个字段表现的形式;在Icon 选项栏中,输入要在定制硬件S-fimction模块面板上显示的内容后提交。
3.一种利用Simulink对定制硬件进行模型代码生成的方法,其特征在于,包括以下步骤一.编写定制硬件特有的设备驱动代码;编写定制硬件CMEX S文件,所述C MEX S文 件包括描述定制硬件特有的输入、输出、模型采样时间等的参数以及输出同输入之间的变 换关系,扩展名为“C”;编写TLC文件,所述TLC文件同所述C MEX S文件的文件名相同,扩 展名为“TLC” ;将所述三个文件保存在一特定文件夹中;二.将所述特定文件夹作为当前路径,在MATLAB命令窗口中输入mexCMEX 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-fimction模块的菜单栏,在其中选择Mask S-Function,编辑对话框Mask Editor :S_function,配置完Mask Editor对话框后,保存该 模型文件MODEL,完成定制硬件S-fimction模块封装,该模型文件MODEL中就存在了封装后 的定制硬件S-fimction模块;四.在simulink环境界面中对包括定制硬件S-function模块的所述模型文件MODEL 进行编辑,编辑完成后,在simulink模型文件菜单栏界面上运行Build命令对所述包括定 制硬件S-function模块的模型文件MODEL进行编译,得到一模型文件MODEL. RTff,保存在所 述特定文件夹中;五·在simulink Browser界面中,弹出所述模型文件MODEL中的封装后的定制硬件 S-function模块的对话框,在弹出的定制硬件S-fimction模块的对话框上输入相应的参 数后提交;六.对包括定制硬件S-function模块的所述模型文件MODEL生成目标代码;在所述包 括定制硬件S-function模块的模型文件下,在simulink-function模型界面中,运行生成 代码命令,运行生成代码命令会调用所述特定文件夹中的所述TLC文件,根据在定制硬件 S-function模块的对话框上输入的相应参数、在所述特定文件夹中的模型文件MODEL. RTff 中的包括定制硬件的各硬件的数据结构以及定制硬件特有的设备驱动代码,对包括定制硬 件S-function模块的所述模型文件MODEL生成目标代码。
4.根据权利要求3所述的利用Simulink对定制硬件进行模型代码生成的方法,其特征 在于,在步骤五之后,对所述包括定制硬件S-fimction模块的模型文件MODEL进行仿真,在 simulink模型仿真界面中,运行Mart Simulation命令,对所述包括定制硬件S-function 模块的模型文件MODEL进行仿真,输出仿真图形;然后进行步骤六,在所述包括定制硬件 S-function模块的模型文件下,在simulink-function模型界面中,运行生成代码命令,运 行生成代码命令会调用特定文件夹中的所述TLC文件,根据在定制硬件S-fimction模块的 对话框上输入的相应参数、在所述特定文件夹中的模型文件MODEL. RTff中的包括定制硬件 的各硬件的数据结构以及定制硬件特有的设备驱动代码,输出目标代码,以对定制硬件进 行读写。
5.根据权利要求3或4所述的利用Simulink对定制硬件进行模型代码生成的方法,其 特征在于,所述设备驱动代码包括定制硬件的头文件、宏定义、I/O设备代码库。
6.根据权利要求3所述的利用Simulink对定制硬件进行模型代码生成的方法,其特 征在于,步骤三中,编辑对话框Mask Editor :S_function,包括,在Parameters选项栏中, 输入需要在定制硬件S-fimction模块对话框中显示的内容后提交,在ftx)mpt栏中输入文 字,以在定制硬件S-function模块对话框中显示,在Variable栏中输入变量以和定制硬件 S-function模块对话框输入的参数相对应,在Type栏选择各个字段表现的形式;在Icon 选项栏中,输入要在定制硬件S-fimction模块面板上显示的内容后提交。
全文摘要
本发明公开了一种利用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对定制硬件进行模型仿真及代码生成,节省系统开发的时间。
文档编号G06F9/455GK102087610SQ20091020189
公开日2011年6月8日 申请日期2009年12月8日 优先权日2009年12月8日
发明者罗来军, 陈意瑶, 黄东亚 申请人:联创汽车电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1