專利名稱:利用Simulink對定制硬件進行模型仿真及代碼生成的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及在汽車工程領(lǐng)域基于模型開發(fā)的方法,特別涉及一種利用Simulink 對定制硬件進行模型仿真及代碼生成的方法。
背景技術(shù):
目前基于模型開發(fā)(MBD)的設(shè)計方法已經(jīng)在汽車、航天等工程領(lǐng)域中越來越被熟 知和應(yīng)用。采用基于模型的V型開發(fā)方式可以實現(xiàn)對控制器模型的快速原型仿真、硬件在 環(huán)仿真,以及基于模型的自動代碼生成。如今普遍采用的開發(fā)環(huán)境為Matlab/Simulink建 模環(huán)境,利用Matlab中的RTW(RealTime Workshop)軟件包,可以實現(xiàn)基于模型的自動代碼 生成。RTW提供了多個目標配置適用于不同的應(yīng)用開發(fā)環(huán)境。但Simulink中設(shè)置的硬件模 型是有限的,無法利用Simulink進行定制硬件的模型在環(huán)仿真,這樣當對Simulink中未設(shè) 置硬件模型的硬件在環(huán)仿真時,系統(tǒng)人員每次更改硬件參數(shù)配置,就需要軟件人員修改硬 件設(shè)備驅(qū)動程序的源代碼,會耗費大量系統(tǒng)開發(fā)的時間。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種利用Simulink對定制硬件進行模型仿真及 代碼生成的方法,能利用Simulink對定制硬件進行模型仿真及代碼生成,節(jié)省系統(tǒng)開發(fā)的 時間。為解決上述技術(shù)問題,本發(fā)明的利用Simulink對定制硬件進行模型仿真的方法, 其特征在于,包括以下步驟一.編寫定制硬件C MEX S文件,所述C MEX S文件包括描述定制硬件特有的輸 入、輸出、模型采樣時間參數(shù)以及輸出同輸入之間的變換關(guān)系,將所述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文件中描述定制硬件特 有的包括輸入、輸出、模型采樣時間在內(nèi)的參數(shù)后確認提交,從而使C MEX S文件與C MEX S 文件名.meXW32文件建立鏈接;然后彈出所述S-fimction模塊的菜單欄,在其中選擇Mask S-Function,編輯對話框Mask Editor :S_function,完成定制硬件S-function模塊封裝; 完成定制硬件S-fimction模塊封裝后,該模型文件MODEL中就存在了封裝后的定制硬件 S-function 模塊;四.在simulink環(huán)境界面中對包括定制硬件S-function模塊的所述模型文件MODEL進行編輯,編輯完成后,在simulink模型文件菜單欄界面上運行BuiId命令對所述包 括定制硬件S-function模塊的模型文件MODEL進行編譯,得到一模型文件MODEL. RTff,保存 在所述特定文件夾中;五·在simulink Browser界面中,彈出所述模型文件MODEL中的封裝后的定制硬 件S-fimction模塊的對話框,在彈出的定制硬件S-fimction模塊的對話框上輸入相應(yīng)的 參數(shù)后提交;六.對所述包括定制硬件s-function模塊的模型文件MODEL進行仿真,在 simulink模型仿真界面中,運行Mart Simulation命令,對所述包括定制硬件S-function 模塊的模型文件MODEL進行仿真,輸出仿真圖形。為解決上述技術(shù)問題,本發(fā)明的利用Simulink對定制硬件進行模型代碼生成的 方法,其特征在于,包括以下步驟一.編寫定制硬件特有的設(shè)備驅(qū)動代碼;編寫定制硬件C MEX S文件,所述C MEX S文件包括描述定制硬件特有的輸入、輸出、模型采樣時間等的參數(shù)以及輸出同輸入之間的 變換關(guān)系,擴展名為“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文件中描述定制硬件特 有的包括輸入、輸出、模型采樣時間在內(nèi)的參數(shù)后確認提交,從而使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環(huán)境界面中對包括定制硬件S-function模塊的所述模型文件 MODEL進行編輯,編輯完成后,在simul ink模型文件菜單欄界面上運行Bui Id命令對所述包 括定制硬件S-function模塊的模型文件MODEL進行編譯,得到一模型文件MODEL. RTff,保存 在所述特定文件夾中;五·在simulink Browser界面中,彈出所述模型文件MODEL中的封裝后的定制硬 件S-fimction模塊的對話框,在彈出的定制硬件S-fimction模塊的對話框上輸入相應(yīng)的 參數(shù)后提交;六.對包括定制硬件S-function模塊的所述模型文件MODEL生成目標代碼;在 所述包括定制硬件S-function模塊的模型文件下,在simulink-function模型界面中, 運行生成代碼命令,運行生成代碼命令會調(diào)用所述特定文件夾中的所述TLC文件,根據(jù)在 定制硬件S-fimction模塊的對話框上輸入的相應(yīng)參數(shù)、在所述特定文件夾中的模型文件 MODEL. RTW中的包括定制硬件的各硬件的數(shù)據(jù)結(jié)構(gòu)以及定制硬件特有的設(shè)備驅(qū)動代碼,對 包括定制硬件S-function模塊的所述模型文件MODEL生成目標代碼。
在步驟五之后,可以對所述包括定制硬件S-function模塊的模型文件MODEL進 行仿真,在simulink模型仿真界面中,運行Mart Simulation命令,對所述包括定制硬 件S-fimction模塊的模型文件MODEL進行仿真,輸出仿真圖形;然后進行步驟六,在所述 包括定制硬件S-function模塊的模型文件下,在simulink-function模型界面中,運行 生成代碼命令,運行生成代碼命令會調(diào)用特定文件夾中的所述TLC文件,根據(jù)在定制硬件 S-function模塊的對話框上輸入的相應(yīng)參數(shù)、在所述特定文件夾中的模型文件MODEL. RTff 中的包括定制硬件的各硬件的數(shù)據(jù)結(jié)構(gòu)以及定制硬件特有的設(shè)備驅(qū)動代碼,輸出目標代 碼,以對定制硬件進行讀寫。所述設(shè)備驅(qū)動代碼包括定制硬件的頭文件、宏定義、1/0設(shè)備代碼庫。本發(fā)明的利用Simulink對定制硬件進行模型仿真及代碼生成的方法,編寫硬件 特有的設(shè)備驅(qū)動代碼、編寫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中會包含有定制的數(shù)據(jù)結(jié)構(gòu);在Matlab/simulink仿真時,由于 S-function模塊可以動態(tài)連接到所述C MEX S文件的meXW32,所以能夠?qū)λ霭ǘㄖ?硬件S-fimction模塊的模型文件MODEL進行仿真,輸出仿真圖形;如果要對包括定制硬件 S-function模塊的模型文件MODEL生成目標代碼,則可以在simulink-function模型界 面中運行生成代碼命令,運行生成代碼命令會調(diào)用特定文件夾中的所述TLC文件,根據(jù)在 定制硬件S-fimction模塊的對話框上輸入的相應(yīng)參數(shù)、在所述特定文件夾中的模型文件 MODEL. RTW中的包括定制硬件在內(nèi)的各硬件的數(shù)據(jù)結(jié)構(gòu)以及定制硬件特有的設(shè)備驅(qū)動代 碼,對包括定制硬件S-fimction模塊的模型文件MODEL生成目標代碼,輸出目標代碼以對 定制硬件進行讀寫。在模型硬件在環(huán)過程中,當需要對包括定制硬件S-fimction模塊的模 型文件進行仿真或生成目標代碼時,對于不同參數(shù)配置的定制硬件,只需要彈出所述模型 文件MODEL中的封裝后的定制硬件S-fimction模塊的對話框,在該對話框上輸入相應(yīng)的參 數(shù)后提交即可,不需要軟件人員修改定制硬件設(shè)備驅(qū)動程序的源代碼,免去了在模型硬件 在環(huán)過程中,系統(tǒng)人員每次更改硬件配置就需要軟件人員修改驅(qū)動代碼的步驟,減少了系 統(tǒng)開發(fā)的時間,也完善了對RTW不支持的目標板的工具鏈。
下面結(jié)合附圖和具體實施方式
對本發(fā)明作進一步的詳細說明。圖1是MPC5634芯片S-function模塊面板示意圖;圖2是封裝后的定制硬件S-function模塊對話框;圖 3 是 simulink 中的 S-function 對話框;圖4是編輯后的simulink中的S-function對話框;圖5是S函數(shù)封裝采用的Mask Editor參數(shù)(Parameter)選項編輯對話框;圖6是S函數(shù)封裝采用的Mask Editor圖標(Icon)選項編輯對話框;
圖7是本發(fā)明的利用Simulink對定制硬件進行模型仿真及代碼生成的方法一實 施方式流程圖。
具體實施例方式本發(fā)明的利用Simulink對定制硬件進行模型仿真及代碼生成的方法一實施方式 如圖7所示,包括以下步驟一 .編寫定制硬件特有的設(shè)備驅(qū)動代碼,即針對某定制硬件的頭文件、宏定義、I/ 0設(shè)備代碼庫;編寫定制硬件C MEX S文件,所述C MEXS文件包括描述定制硬件特有的輸 入、輸出、模型采樣時間等的參數(shù)以及輸出同輸入之間的變換關(guān)系,擴展名為“C”;編寫TLC 文件,所述TLC文件同所述C MEX S文件的文件名相同,擴展名“TLC”;將所述三個文件保 存在一特定文件夾中;二.將所述特定文件夾作為當前路徑,在MATLAB命令窗口中輸入mexC MEX S文 件名,這時mex命令可以在所述特定文件夾中生成一個C MEX S文件名.meXW32文件,在 Matlab/simulink仿真時,S-function可以動態(tài)連接到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文件中描述定制硬件特有的輸入、輸出、模型采樣時間等的參數(shù),如圖4所示,然后確 認提交,由于當S函數(shù)模塊在Simulink環(huán)境下進行仿真時,S函數(shù)模塊會動態(tài)鏈接到當前 路徑下同名的.Mexw32文件,從而使C MEX S文件與C MEX S文件名.mexw32文件建立鏈 接;然后在S函數(shù)模塊上單擊鼠標右鍵,彈出所述S-fimction模塊的的菜單欄,在其中選擇 Mask S-Function,編輯對話框 Mask Editor :S_function,如圖 5 所示,在 Parameters 選項 欄中,輸入需要在定制硬件S-fimction模塊對話框中顯示的內(nèi)容后提交,在Prompt欄中輸 入的文字,將會在定制硬件S-fimction模塊對話框中顯示,在Variable欄中輸入的變量要 和定制硬件S-fimction模塊對話框輸入的參數(shù)相對應(yīng),在Type欄選擇各個字段表現(xiàn)的形 式,在Icon選項欄中,輸入要在定制硬件S-fimction模塊面板上顯示的內(nèi)容后提交,參見 圖 6,port_label( ‘input,,1,‘period,)、port_label ( ‘input,,2,‘duty,)是在輸入端 口處的顯示標簽,模塊的輸入端口數(shù)是在C MEX S文件中設(shè)置的,配置完Mask Editor對話 框后,保存該模型文件MODEL,完成定制硬件S-fimction模塊封裝,這樣該模型文件MODEL 中就存在了封裝后的定制硬件S-fimction模塊;四.在simulink環(huán)境界面中對包括定制硬件S-function模塊的所述模型文件 MODEL進行編輯,編輯完成后,在simulink模型文件菜單欄界面上運行BuiId命令對所述包 括定制硬件S-function模塊的模型文件MODEL進行編譯,得到一模型文件MODEL. RTff,保存 在所述特定文件夾中,模型文件MODEL. RTff中包含有定制硬件的數(shù)據(jù)結(jié)構(gòu);五.在simulink Browser界面中,雙擊所述模型文件MODEL中的封裝后的定制硬 件S-fimction模塊,會彈出定制硬件S-fimction模塊的對話框,如圖2所示,在彈出的定 制硬件S-fimction模塊的對話框上輸入相應(yīng)的參數(shù)后提交;六.對所述包括定制硬件S-function模塊的模型文件MODEL進行仿真,在simulink模型仿真界面中,運行Mart Simulation命令,對所述包括定制硬件S-function 模塊的模型文件MODEL進行仿真,輸出仿真圖形;七.對包括定制硬件S-fimction模塊的所述模型文件MODEL生成目標代碼;在所 述包括定制硬件S-function模塊的模型文件下,在simulink-function模型界面中,運行 生成代碼命令,運行生成代碼命令會調(diào)用特定文件夾中的所述TLC文件,根據(jù)在定制硬件 S-function模塊的對話框上輸入的相應(yīng)參數(shù)、在所述特定文件夾中的模型文件MODEL. RTff 中的包括定制硬件的各硬件的數(shù)據(jù)結(jié)構(gòu)以及定制硬件特有的設(shè)備驅(qū)動代碼,對包括定制硬 件S-fimction模塊的所述模型文件MODEL生成目標代碼,輸出目標代碼以對定制硬件進行 讀寫。以MPC5634芯片作為定制硬件為例,對本發(fā)明進行進一步說明如下。第一步.編寫MPC5634芯片特有的設(shè)備驅(qū)動代碼,編寫一 TLC(目標語言編譯器) 文件PWM. TLC,編寫MPC5634芯片C MEX S文件pwm. c,將所述三個文件保存在一特定文件夾中。MPC5634芯片特有的設(shè)備驅(qū)動代碼即針對MPC5634的頭文件、宏定義、PWM設(shè)備代 碼庫,包括mpc5634. h, EMI0S. h、PWM_HAL. h ;MPC5634的TLC文件PWM. TLC用于根據(jù)S-function模塊的對話框上輸入的相應(yīng)參 數(shù)、模型文件MODEL. RTW中的包括MPC5634在內(nèi)的各硬件數(shù)據(jù)結(jié)構(gòu)以及MPC5634芯片的設(shè) 備驅(qū)動代碼輸出目標代碼。 TLC文件PWM. TLC中包含有三個TLC函數(shù)1. BlockTypeSetup函數(shù),用于在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函數(shù),用于生成Model, c中的MdlMar函數(shù)。在Mart函數(shù)中,可以調(diào)用 SfcnParamSettings中的參數(shù)值,達到對硬件模塊初始化的目的。例如% assign modul = SFcnParameSettings. Modul% assign period = SFcnParameSettings.Period% assign duty = SFcnParameSettings. DutyPWMSetPeriod(% <modul>, %〈period ;PWMSetDuty (% <modul>, % <duty>)上面的TLC代碼將生成文件Model, c函數(shù)MdlMar中的語句PWMSetPeriod (1,10) ;PWMSetDuty(1,30);
其中PWMktPeriod,PWMSetDuty函數(shù)用于擴展底層硬件的調(diào)用程序。3. Output 函數(shù),用于生成 Model, c 中的 MdlOutputs 函數(shù)。MPC5634芯片C MEX S文件,即pwm. c文件,對于這些pwm. c文件只需要在 Simulink仿真下使用,而不會對硬件使用的內(nèi)存區(qū)域進行讀寫。MPC5634芯片C MEX S文件必須以如下順序從下列語句起始l)#define S_FUNCTION_NAME PWM該語句定義了 S函數(shù)代碼入口點的名稱,Name必須與C Mex S文件名字相同。2)#define S_FUNCTION_LEVEL 2本語句將該C MEX S文件定義成級別為2的S函數(shù)。這可以使用戶利用S函數(shù)提 供的全部特性。3)所需函數(shù)。· mdllnitializeSizes函數(shù)該函數(shù)首先校驗從定制硬件S-function模塊的對 話框上輸入?yún)?shù)的個數(shù)與對話框中的參數(shù)數(shù)目是否相等,然后從對話框中獲得Number of channel 參數(shù)。ssSetNurnhputPortMS,〗),將輸入端口定為2個,然后依次為其定義類型,數(shù)據(jù) 寬度;SsSetNumOutputPorts(S,l),定義輸出端口為1個,然后定義其類型;ssSetNumSampleTimes(S, 1),將采樣時間的個數(shù)定為1,即該模塊中所有P麗通道 使用相同的采樣時間?!?mdllnitializeSampleTimes 采樣時間設(shè)定函數(shù)S-fimction模塊是離散時間模塊。需要自行設(shè)定采樣時間。在本例中,采樣時間 Mask Editor S-function ^ ParametersW Simple time入白勺,
參見圖5。ssSetSampleTime(S,0, SAMPLETIME(S));· mdlStart函數(shù)用于在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函數(shù)在此例中可以使一個空程序體。 為了確保文件被編譯為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模塊需要一個圖形用戶對話框,使用戶在 該對話框輸入的參數(shù)能被C MEX S文件調(diào)用。被封裝的定制硬件S-fimction模塊使用 Simulink API定義的宏和函數(shù)從對話框中獲得參數(shù)。具體方法如下在C MEX S文件中所調(diào)用的函數(shù)如下1)使用宏ssGetSFcnParam訪問對話框中的參數(shù)指針const mxArray*ssGetSFcnParam(SimStruct*S, int_T index),. 白勺巨白勺 1 是從對話框中獲得參數(shù),其參數(shù)分別為Sin^truct的結(jié)構(gòu)指針,和參數(shù)對應(yīng)的索引值(從0 開始);例如在源程序中代碼如下就是獲得參數(shù)Siganal polarity的指針。enum{M0DULE_NUM = 0, CHANNELARRAY_ARGC, SIGNAL_POLARITY_AGE, PERI0D_ ARGC, DUTY_ARGC,SAMPLETIME_ARGC};ssGetSFcnParam(S,PERI0D_AGE);2)使用mxGetft·從參數(shù)數(shù)組mxArray中,獲得參數(shù)的值。#define POLARITY(S)(mxGetScalar(ssGetSFcnParam(S, PERI0D_AGE)))uint8_T period = (uint8_T) period (S);以上代碼中,period中的值即為用戶在對話框PWM periods中輸入的值。3)在PWM. C中,使用mdlRTW函數(shù),完成在代碼生成過程中對這些參數(shù)數(shù)據(jù)進行賦 值和格式化。mdlRTW和代碼生成過程。函數(shù)mdlRTW是一種機制,S函數(shù)可以用該機制生成數(shù)據(jù) 結(jié)構(gòu),并將其寫入model, rtw文件中。目標語言編譯器(TLC),在生成代碼時使用這些數(shù)據(jù) 結(jié)構(gòu)。mdlRTW函數(shù)。在本例中調(diào)用了函數(shù)ssWriteRTWParan^ettings來生成一個數(shù)據(jù)結(jié) 構(gòu)。該結(jié)構(gòu)包含了在圖4對話框中輸入的參數(shù)。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可以動態(tài)連接到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文件中描述定制硬件特有的輸入、輸出、模型采樣時間等的參數(shù),如圖4所示,然后確認提 交,由于當S函數(shù)模塊在Simulink環(huán)境下進行仿真時,S函數(shù)模塊會動態(tài)鏈接到當前路徑 下同名的.Mexw32文件,從而使pwm. c文件與PWM. mexw32文件建立鏈接;然后在S函數(shù)模 塊上單擊鼠標右鍵,彈出所述S-function模塊的的菜單欄,在其中選擇Mask S-Function, 編輯對話框Mask Editor :S_function,如圖5所示,在Parameters選項欄中,輸入需要在 MPC5634芯片S-function模塊對話框中顯示的內(nèi)容后提交,在ftx)mpt欄中輸入的文字,將 會在MPC5634芯片S-function模塊對話框中顯示,在Variable欄中輸入的變量要和定制 硬件S-fimction模塊對話框輸入的參數(shù)相對應(yīng),在Type欄選擇各個字段表現(xiàn)的形式,在 Icon選項欄中,輸入要在MPC5634芯片S-function模塊面板上顯示的內(nèi)容后提交,參見圖 6,port_label( ‘input,,l,‘period,)、port_label ( 'input', 2, ‘duty,)是在輸入端口處的顯示標簽,模塊的輸入端口數(shù)是在pwm. c文件中設(shè)置的,配置完Mask Editor對話框 后,MPC5634芯片S-function模塊面板如圖1所示。配置完Mask Editor對話框后,保存 該模型文件MODEL,完成MPC5634芯片S-function模塊封裝,這樣該模型文件MODEL中就存 在了封裝后的MPC5634芯片S-function模塊;四.在simulink環(huán)境界面中對包括MPC5634芯片S-function模塊的所述模型文 件MODEL進行編輯,編輯完成后,在simulink模型文件菜單欄界面上運行Build命令對所 述包括MPC5634芯片S-function模塊的模型文件MODEL進行編譯,得到一模型文件MODEL. RTW,保存在所述特定文件夾中,模型文件MODEL. RTW中包含有MPC5634芯片的數(shù)據(jù)結(jié)構(gòu);在 PWM. rtw中的數(shù)據(jù)結(jié)構(gòu)為SFcnParamSettings{ModuleIUChannels[1U]SignalPolarity 2UPeriod10UDuty30U}}這樣存儲在PWM. rtw中的數(shù)值在文件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模塊的對話框上輸入相應(yīng)的參數(shù)后提交;六.對所述包括MPC5634芯片S-function模塊的模型文件MODEL進行仿真, 在simulink模型仿真界面中,運行Mart Simulation命令,對所述包括MPC5634芯片 S-function模塊的模型文件MODEL進行仿真,輸出仿真圖形;七.對包括MPC56;34芯片S-function模塊的所述模型文件MODEL生成目標代碼; 在所述包括MPC5634芯片S-function模塊的模型文件下,在simulink-function模型界面 中,運行生成代碼命令,運行生成代碼命令會調(diào)用特定文件夾中的所述PWM. TLC文件,根據(jù) 在MPC5634芯片S-fimction模塊的對話框上輸入的相應(yīng)參數(shù)、在所述特定文件夾中的模型 文件MODEL. RTW中的包括MPC5634芯片在內(nèi)的各硬件的數(shù)據(jù)結(jié)構(gòu)以及MPC5634芯片特有的 設(shè)備驅(qū)動代碼,對包括MPC5634芯片S-function模塊的所述模型文件MODEL生成目標代 碼,輸出目標代碼以對MPC5634芯片進行讀寫。本發(fā)明的利用Simulink對定制硬件進行模型仿真及代碼生成的方法,編寫硬件 特有的設(shè)備驅(qū)動代碼、編寫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中會包含有定制的數(shù)據(jù)結(jié)構(gòu);在Matlab/simulink仿真時,由于 S-function模塊可以動態(tài)連接到所述C MEX S文件的meXW32,所以能夠?qū)λ霭ǘㄖ?硬件S-fimction模塊的模型文件MODEL進行仿真,輸出仿真圖形;如果要對包括定制硬件 S-function模塊的模型文件MODEL生成目標代碼,則可以在simulink-function模型界 面中運行生成代碼命令,運行生成代碼命令會調(diào)用特定文件夾中的所述TLC文件,根據(jù)在 定制硬件S-fimction模塊的對話框上輸入的相應(yīng)參數(shù)、在所述特定文件夾中的模型文件 MODEL. RTW中的包括定制硬件在內(nèi)的各硬件的數(shù)據(jù)結(jié)構(gòu)以及定制硬件特有的設(shè)備驅(qū)動代 碼,對包括定制硬件S-fimction模塊的模型文件MODEL生成目標代碼,輸出目標代碼以對 定制硬件進行讀寫。在模型硬件在環(huán)過程中,當需要對包括定制硬件S-fimction模塊的模 型文件進行仿真或生成目標代碼時,對于不同參數(shù)配置的定制硬件,只需要彈出所述模型 文件MODEL中的封裝后的定制硬件S-fimction模塊的對話框,在該對話框上輸入相應(yīng)的參 數(shù)后提交即可,不需要軟件人員修改定制硬件設(shè)備驅(qū)動程序的源代碼,免去了在模型硬件 在環(huán)過程中,系統(tǒng)人員每次更改硬件配置就需要軟件人員修改驅(qū)動代碼的步驟,減少了系 統(tǒng)開發(fā)的時間,也完善了對RTW不支持的目標板的工具鏈。 所述C MEX S文件,只需要在Simulink仿真下使用,不訪問1/0板和其它目標硬 件,在模型文件中起到“虛擬”模塊的作用而不會對硬件使用的內(nèi)存區(qū)域進行讀寫,而且C MEX S函數(shù)不會分配任何的Sin^truct結(jié)構(gòu),可以減少內(nèi)存的使用量;所述TLC文件,實現(xiàn) S-function同應(yīng)用程序接口,編寫的TLC文件是為包括定制硬件S-fimction模塊的模型文 件生成實際工作代碼,是要對硬件進行訪問的。
權(quán)利要求
1.一種利用Simulink對定制硬件進行模型仿真的方法,其特征在于,包括以下步驟一.編寫定制硬件CMEX S文件,所述C MEX S文件包括描述定制硬件特有的輸入、輸 出、模型采樣時間參數(shù)以及輸出同輸入之間的變換關(guān)系,將所述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文件中描述定制硬件特有 的包括輸入、輸出、模型采樣時間在內(nèi)的參數(shù)后確認提交,從而使C MEX S文件與C MEX S 文件名.meXW32文件建立鏈接;然后彈出所述S-fimction模塊的菜單欄,在其中選擇Mask S-Function,編輯對話框Mask Editor :S_function,完成定制硬件S-function模塊封裝; 完成定制硬件S-fimction模塊封裝后,該模型文件MODEL中就存在了封裝后的定制硬件 S-function 模塊;四.在simulink環(huán)境界面中對包括定制硬件S-function模塊的所述模型文件MODEL 進行編輯,編輯完成后,在simulink模型文件菜單欄界面上運行Build命令對所述包括定 制硬件S-function模塊的模型文件MODEL進行編譯,得到一模型文件MODEL. RTff,保存在所 述特定文件夾中;五·在simulink Browser界面中,彈出所述模型文件MODEL中的封裝后的定制硬件 S-function模塊的對話框,在彈出的定制硬件S-fimction模塊的對話框上輸入相應(yīng)的參 數(shù)后提交;六.對所述包括定制硬件S-function模塊的模型文件MODEL進行仿真,在simul ink 模型仿真界面中,運行Mart Simulation命令,對所述包括定制硬件S-fimction模塊的模 型文件MODEL進行仿真,輸出仿真圖形。
2.根據(jù)權(quán)利要求1所述的利用Simulink對定制硬件進行模型仿真的方法,其特征在 于,步驟三中,編輯對話框Mask Editor :S_function,包括,在Parameters選項欄中,輸入 需要在定制硬件S-fimction模塊對話框中顯示的內(nèi)容后提交,在ftx)mpt欄中輸入文字, 以在定制硬件S-function模塊對話框中顯示,在Variable欄中輸入變量以和定制硬件 S-function模塊對話框輸入的參數(shù)相對應(yīng),在Type欄選擇各個字段表現(xiàn)的形式;在Icon 選項欄中,輸入要在定制硬件S-fimction模塊面板上顯示的內(nèi)容后提交。
3.一種利用Simulink對定制硬件進行模型代碼生成的方法,其特征在于,包括以下步驟一.編寫定制硬件特有的設(shè)備驅(qū)動代碼;編寫定制硬件CMEX S文件,所述C MEX S文 件包括描述定制硬件特有的輸入、輸出、模型采樣時間等的參數(shù)以及輸出同輸入之間的變 換關(guān)系,擴展名為“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文件中描述定制硬件特有 的包括輸入、輸出、模型采樣時間在內(nèi)的參數(shù)后確認提交,從而使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環(huán)境界面中對包括定制硬件S-function模塊的所述模型文件MODEL 進行編輯,編輯完成后,在simulink模型文件菜單欄界面上運行Build命令對所述包括定 制硬件S-function模塊的模型文件MODEL進行編譯,得到一模型文件MODEL. RTff,保存在所 述特定文件夾中;五·在simulink Browser界面中,彈出所述模型文件MODEL中的封裝后的定制硬件 S-function模塊的對話框,在彈出的定制硬件S-fimction模塊的對話框上輸入相應(yīng)的參 數(shù)后提交;六.對包括定制硬件S-function模塊的所述模型文件MODEL生成目標代碼;在所述包 括定制硬件S-function模塊的模型文件下,在simulink-function模型界面中,運行生成 代碼命令,運行生成代碼命令會調(diào)用所述特定文件夾中的所述TLC文件,根據(jù)在定制硬件 S-function模塊的對話框上輸入的相應(yīng)參數(shù)、在所述特定文件夾中的模型文件MODEL. RTff 中的包括定制硬件的各硬件的數(shù)據(jù)結(jié)構(gòu)以及定制硬件特有的設(shè)備驅(qū)動代碼,對包括定制硬 件S-function模塊的所述模型文件MODEL生成目標代碼。
4.根據(jù)權(quán)利要求3所述的利用Simulink對定制硬件進行模型代碼生成的方法,其特征 在于,在步驟五之后,對所述包括定制硬件S-fimction模塊的模型文件MODEL進行仿真,在 simulink模型仿真界面中,運行Mart Simulation命令,對所述包括定制硬件S-function 模塊的模型文件MODEL進行仿真,輸出仿真圖形;然后進行步驟六,在所述包括定制硬件 S-function模塊的模型文件下,在simulink-function模型界面中,運行生成代碼命令,運 行生成代碼命令會調(diào)用特定文件夾中的所述TLC文件,根據(jù)在定制硬件S-fimction模塊的 對話框上輸入的相應(yīng)參數(shù)、在所述特定文件夾中的模型文件MODEL. RTff中的包括定制硬件 的各硬件的數(shù)據(jù)結(jié)構(gòu)以及定制硬件特有的設(shè)備驅(qū)動代碼,輸出目標代碼,以對定制硬件進 行讀寫。
5.根據(jù)權(quán)利要求3或4所述的利用Simulink對定制硬件進行模型代碼生成的方法,其 特征在于,所述設(shè)備驅(qū)動代碼包括定制硬件的頭文件、宏定義、I/O設(shè)備代碼庫。
6.根據(jù)權(quán)利要求3所述的利用Simulink對定制硬件進行模型代碼生成的方法,其特 征在于,步驟三中,編輯對話框Mask Editor :S_function,包括,在Parameters選項欄中, 輸入需要在定制硬件S-fimction模塊對話框中顯示的內(nèi)容后提交,在ftx)mpt欄中輸入文 字,以在定制硬件S-function模塊對話框中顯示,在Variable欄中輸入變量以和定制硬件 S-function模塊對話框輸入的參數(shù)相對應(yīng),在Type欄選擇各個字段表現(xiàn)的形式;在Icon 選項欄中,輸入要在定制硬件S-fimction模塊面板上顯示的內(nèi)容后提交。
全文摘要
本發(fā)明公開了一種利用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模塊的對話框,在該對話框上輸入相應(yīng)的參數(shù)后提交,運行Start Simulation命令輸出仿真圖形。本發(fā)明還公開了一種利用Simulink對定制硬件進行模型代碼生成的方法。本發(fā)明能利用Simulink對定制硬件進行模型仿真及代碼生成,節(jié)省系統(tǒng)開發(fā)的時間。
文檔編號G06F9/455GK102087610SQ20091020189
公開日2011年6月8日 申請日期2009年12月8日 優(yōu)先權(quán)日2009年12月8日
發(fā)明者羅來軍, 陳意瑤, 黃東亞 申請人:聯(lián)創(chuàng)汽車電子有限公司