最近一直在忙于FCU控制器的模型搭建,空闲之余也想分享一下自己对Simulink建模过程中的一些想法,从接触simulink到应用simulink大约已经两年多了,随着接触时间,慢慢发现simulink在模型搭建方面真的是非常的方面。今天我就和大家分享一下simulink模型搭建完成时如何进行自动代码的生成,如何进行相关的配置。

1.嵌入式代码生成器的要求和限制

1.1 RTW嵌入式代码生成器程序以离散时间运行,用户的模型必须使用如下Solver选项:

Solver type: fixed-step
Algorithm: discrete (no continuous states)

1.2 嵌入式实时目标(ERT)不支持的模块

2.具体操作步骤

2.1 建模过程已经完成,模型符合上述代码生成的要求。

2.2 仿真参数的设置(simulink环境下)

(1)在模型工具栏中,选择Simulation ->> Configuration Parameters;

打开配置参数对话框,点击对话框的Solver面板,设置下面几项参数,如图所示:
① Start time:0.0;
② Stop time:inf;

③ Type:Fixed-step;
④ Solver:discrete(no continuous states);
⑤ Fixed-step size(fundamental sample time):设置为步长time_step(此变量由m 文件赋
值,此处也可直接赋值,如0.01)。

(2) 点击对话框的Optimization 面板,Parameter structure 选择Hierarchical,其他选项如图
所示进行勾选。

(3) 点击对话框的Hardware Implementation面板,可设置硬件属性。 在Device vender选择Infineon,在Device type处选择设备类型C16x,XC16x(此处以Infineon C166 系列为例),其他选项为默认值,如图所示。

(4) 点击对话框的Real-Time Workshop选项面板,在此面板中设置参数:
① 点击Browse按钮打开System target file browser,用户可以在列表中选择目标文件,设置System target file为ert.tlc(用于生成嵌入式代码),默认为grt.tlc,此时可选择后面Browse按键选择ERT文件,如图6所示。当用户选择好系统目标文件,Real-TimeWorkshop会自动设置Template makefile和Make command选项,如图所示。点击Setobjectives…,选中Available objectives中的Execution efficiency(其他选项亦可选,此处用于设置后期模型检测的目标),点击右向箭头使其进入Selected-objectives prioritized中。其它选项如图所示。

 

② 设置Report中的选项,以便在生成代码的同时可自动生成报告,目的是在后面生成代码的过程中同时会生成一个报告。

③ 设置Interface面板,Target function library选择C89/C90(ANSI),Utility functiongeneration选择Auto。

④ 设置Templates面板,选择Generate an example main program 将生成一个应用程序的模板范例。

⑤ 设置Code Placement面板,将File packing format选为Compact(代码文件为紧凑类型),其他为默认选项。

(5) 参数设置完成之后进行检查,回到Real-Time Workshop,单击Check Model。在弹出的对话框中选择想要生成的模块。

检查完成之后会出现对话框,如果Code Generation Objectives中出现红色错误则必须进行修改,出现黄色警告则根据具体情况进行修改。

3.代码生成

参数设置及检测修改完成之后,鼠标右键单击该模块,选择Real-Time Workshop->>Build Subsystem,得到对话框。(需要注意得是如果是针对整个模型进行代码生成则不需要右键单击,而是在Real-Time Workshop中直接单击最下面的Build即可生成整个模型的代码)。

单击Build,生成的同时生成一个html报告,可在此报告中查看相关模块代码及代码变量信息等,并且在matlab的Current Forder窗口下生成了一个同名的文件夹,打开后可以找到生成的.c文件,该文件即为模块所对应的代码。

更多推荐

Matlab/Simulink 自动代码生成详细步骤