导入自定义代码使用仿真软件代码导入向导金宝app
这个示例使用热泵控制器C代码显示如何使用仿真软件®代码导入向导自定义C / c++代码导入到一个模型库。金宝app示例还展示了如何执行相同的操作使用仿真软件代码进口国在MATLAB®命令行界面。金宝app有关更多信息,请参见导入自定义C / c++代码使用仿真软件代码进口国金宝app。
热泵控制器的自定义代码
这些C代码源和头文件包含的完整代码热泵控制器。
源文件中src
目录:
tempController.c
utils.c
头文件中包括
目录:
tempController.h
utils.h
controllerTypes.h
该文件tempController.c
包含自定义算法C代码热泵单元。的控制器
函数在该文件中使用室温(Troom_in
)和设定温度(Tset
)作为输入。输出是一个pump_control_bus
类型结构与信号控制风机、热泵、热泵的方向(加热或降温)。的pump_control_bus
结构有这些字段:fan_cmd
,pump_cmd
,pump_dir
。的pump_control_bus
结构类型是定义在文件controllerTypes.h
。
这个表总结的输出控制器
算法。
的控制器
函数使用了两个实用函数,absoluteTempDifference
和pumpDirection
中定义的utils.c
文件。的absoluteTempDifference
函数的作用是:返回绝对的区别Tset
和Troom_in
作为双。的pumpDirection
函数返回一个PumpDirection
枚举类型的值。
的PumpDirection
枚举类型
中定义的文件吗controllerTypes.h
。
打开代码导入向导
打开代码导入向导,创建一个空模型库的位置金宝appsrc
和包括
文件夹所在并保存它。对于这个示例,图书馆保存heatpumpController
。
然后,在建模选项卡上,选择设计>代码进口国。
指定模型库金宝app
一旦欢迎页面加载,点击开始开始导入过程。
在设置页面:
的金宝app模型库文件名称填写与保存库名称,在这种情况下,
heatpumpController
。的输出文件夹填写与保存的模型库的位置。金宝app
可选地,选择将生成的库添加到模型库浏览器金宝app创建一个slblocks.m文件。
的slblocks.m
文件用于生成的库添加到模型库浏览器。金宝app有关更多信息,请参见添加库库浏览器。
点击下一个继续。
注意:下面的MATLAB代码等价于这一步。
obj = 金宝appSimulink.CodeImporter (“heatpumpController”);obj。libraryFileName =“heatpumpController”;obj。OutputFolder =“$ pwd $”;%这评估pwd
指定自定义代码导入
在指定自定义代码页面:
为语言中,选择
C
。为界面标题,指定所需的头文件。对于这个示例,指定
tempController.h
。为源文件,指定所需的源文件。对于这个示例,指定
tempController.c
和utils.c
文件位置src文件夹,\ src \ tempController.c;\ src \ utils.c
。为包括目录,指定所需的包括目录。对于这个示例,指定
\。
。
然后,单击下一个。
点击下一个在分析页面。
注意:以下代码等价于这一步。
% src和包括目录应该位于pwdobj.CustomCode。我nterfaceHeaders =“tempController.h”;obj.CustomCode。语言=“C”;obj.CustomCode。源文件= {“\ src \ tempController.c。”,“\ src \ utils.c。”};obj.CustomCode。IncludePaths =”。\”包括;%分析指定的自定义代码obj.parse ();
指定导入设置
指定函数导入
在进口页面,选择要导入的函数模型库。金宝app对于这个示例,选择控制器
。然后,单击下一个。
组块端口规范
在前一页,每个函数选择向导生成一个函数端口规范。所选择的端口是用于生成的C调用者。
在这个例子中,端口规范表列出了正式的参数Tset
,Troom_in
,出
为控制器
函数。
改变的标签出
参数control_out
。点击下一个。
注意:以下代码等价于这一步。
%需要一个成功的obj.parse()函数对象fcnObj = obj.ParseInfo.getFunctions ();% fcnObj =%%的功能与性质:%%的名字:“控制器”% CPrototype:“pump_control_bus控制器(real_T Tset, real_T Troom_in);“% PortSpecification (1×1 S金宝appimulink.CodeImporter.SimulinkPortSpecification):% IsEntry: 1% IsDefined: 1% IsStub: 0% ArrayLayout: NotSpecified% IsDeterministic: 0fcnObj.PortSpecification.ReturnArgument。标签=“control_out”;
指定类型的进口
接下来,选择导入模型的类型。金宝app如果一个类型是您选择导入所需的功能,它是选择和暗了下来。对于这个示例,pump_control_bus
是必需的。向导创建了一个模型数据字典包含这种类型和字金宝app典生成的库的链接。
点击下一个。
指定库更新设置
因为这个例子使用保存的模型库,这个页面允许您确认要执行的更新操作金宝app在图书馆。
选择覆盖删除任何现有的阻塞和创建新的C调用者所选自定义代码的功能。
选择更新保留现有的阻塞和添加新的C调用者所选自定义代码的功能。
对于这个示例,选择更新,然后单击下一个。
创建测试工具
该选项只有如果你有一个仿真软件测试™许可证。金宝app
测试导入自定义代码函数使用仿真软件测试管理器,选择金宝app自动创建测试工具对所有进口的功能。创建库中的每个块将被附加到一个内部测试工具。
对于这个示例,选择跳过。点击下一个生成模型库。金宝app
进口代码后,向导创建一个库连接到仿真软件数据字典定义金宝apppump_control_bus
作为一个金宝appSimulink.Bus
对象。
注意:以下代码等价于这一步。
%需要仿真软件测试生成金宝app测试工具的许可证obj.Options。CreateTestHarness = true; obj.import(“功能”,“控制器”,…“类型”,“pump_control_bus”,…“覆盖”,“关闭”);
如果你有一个现有的项目文件(撮合下文件),您可以选择添加,选择所需的项目文件,并将生成的文件添加到项目。
点击完成关闭向导。
当你点击完成,选择是否保存当前导入设置一个JSON文件。您可以使用该文件来加载代码导入向导与当前进口设置。