主要内容

导入自定义代码使用仿真软件代码导入向导金宝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

这个表总结的输出控制器算法。

温度 条件 系统 状态 风扇 命令 命令 方向 | Troom _ - - - - - - Tset | < DeltaT _ 风扇 闲置 0 0 D l E DelatT _ 风扇 < = | Troom _ - - - - - - Tset | < DeltaT _ 风扇 只有 1 0 D l E | Troom _ - - - - - - Tset | > = DeltaT _ Tset < Troom _ 冷却 1 1 C O O l N G | Troom _ - - - - - - Tset | > = DeltaT _ Tset > Troom _ 加热 1 1 H E 一个 T N G

控制器函数使用了两个实用函数,absoluteTempDifferencepumpDirection中定义的utils.c文件。的absoluteTempDifference函数的作用是:返回绝对的区别TsetTroom_in作为双。的pumpDirection函数返回一个PumpDirection枚举类型的值。

温度 条件 方向 Tset < Troom _ 冷却 Tset > Troom _ 加热

PumpDirection枚举类型中定义的文件吗controllerTypes.h

打开代码导入向导

打开代码导入向导,创建一个空模型库的位置金宝appsrc包括文件夹所在并保存它。对于这个示例,图书馆保存heatpumpController

然后,在建模选项卡上,选择设计>代码进口国

指定模型库金宝app

一旦欢迎页面加载,点击开始开始导入过程。

设置页面:

  1. 金宝app模型库文件名称填写与保存库名称,在这种情况下,heatpumpController

  2. 输出文件夹填写与保存的模型库的位置。金宝app

可选地,选择将生成的库添加到模型库浏览器金宝app创建一个slblocks.m文件。

slblocks.m文件用于生成的库添加到模型库浏览器。金宝app有关更多信息,请参见添加库库浏览器

ci_wizard_settings.png

点击下一个继续。

注意:下面的MATLAB代码等价于这一步。

obj = 金宝appSimulink.CodeImporter (“heatpumpController”);obj。libraryFileName =“heatpumpController”;obj。OutputFolder =“$ pwd $”;%这评估pwd

指定自定义代码导入

指定自定义代码页面:

  1. 语言中,选择C

  2. 界面标题,指定所需的头文件。对于这个示例,指定tempController.h

  3. 源文件,指定所需的源文件。对于这个示例,指定tempController.cutils.c文件位置src文件夹,\ src \ tempController.c;\ src \ utils.c

  4. 包括目录,指定所需的包括目录。对于这个示例,指定\。

ci_wizard_specify.png

然后,单击下一个

点击下一个分析页面。

注意:以下代码等价于这一步。

% 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在图书馆。

  1. 选择覆盖删除任何现有的阻塞和创建新的C调用者所选自定义代码的功能。

  2. 选择更新保留现有的阻塞和添加新的C调用者所选自定义代码的功能。

对于这个示例,选择更新,然后单击下一个

创建测试工具

该选项只有如果你有一个仿真软件测试™许可证。金宝app

测试导入自定义代码函数使用仿真软件测试管理器,选择金宝app自动创建测试工具对所有进口的功能。创建库中的每个块将被附加到一个内部测试工具。

对于这个示例,选择跳过。点击下一个生成模型库。金宝app

进口代码后,向导创建一个库连接到仿真软件数据字典定义金宝apppump_control_bus作为一个金宝appSimulink.Bus对象。

注意:以下代码等价于这一步。

%需要仿真软件测试生成金宝app测试工具的许可证obj.Options。CreateTestHarness = true; obj.import(“功能”,“控制器”,“类型”,“pump_control_bus”,“覆盖”,“关闭”);

如果你有一个现有的项目文件(撮合下文件),您可以选择添加,选择所需的项目文件,并将生成的文件添加到项目。

点击完成关闭向导。

当你点击完成,选择是否保存当前导入设置一个JSON文件。您可以使用该文件来加载代码导入向导与当前进口设置。

另请参阅

|||