主要内容

生成代码Nonvirtual公交车

如果你有金宝app®编码器™,无论你使用一个虚拟或nonvirtual总线可以使效率的显著差异,大小和生成的代码的可读性。

  • 虚拟总线没有出现作为一个结构或任何其他相干单位生成的代码。一个单独的副本的任何算法,操纵公共汽车为每个元素存在。一般来说,虚拟公共汽车不影响生成的代码。

  • nonvirtual巴士出现在生成的代码结构,且只有一个复制存在的任何算法,使用公共汽车。使用结构生成的代码时可以帮助跟踪模型和代码之间的对应关系。

例如,假设一个公共汽车通过单位延迟块。为简单起见,总线只包含三个要素:一个,b,c

虚拟公共汽车不需要类型定义。生成的模型。h文件定义一个单位延迟块为每个元素的虚拟总线。

typedef struct {real_T UnitDelay_1_DSTATE;/ * < Root > /单元的延迟* / real_T UnitDelay_2_DSTATE;/ * < Root > /单元的延迟* / real_T UnitDelay_3_DSTATE;/ * < Root > /单元的延迟* /}DW_模型_T;

Nonvirtual巴士需要类型定义。金宝appSimulink.Bus出现在生成的对象模型_types.h文件结构nonvirtual公交车。

typedef struct {real_T;real_T b;real_T c;}BusObject;

生成的模型。h文件定义一个单位延迟块nonvirtual总线的使用BusObject结构。

typedef struct {BusObject UnitDelay_DSTATE;/ * < Root > /单元的延迟* /}DW_模型_T;

组信号结构在生成的代码中,使用nonvirtual公交车。看到组织数据结构生成的代码(金宝app仿真软件编码器)

有效地生成代码模型,使用公交车,看到的为总线信号生成高效的代码(金宝app仿真软件编码器)。生成代码nonvirtual巴士会导致一些公交车的多个副本。

如果您使用一个nonvirtual总线作为输入或从参考模型输出:

  • 你只能配置I / O参数步骤方法风格的c++类接口引用模型在使用nonvirtual总线或当使用默认的风格的c++类接口。

  • 你只能配置函数原型控制参考模型在使用nonvirtual总线。

控制数据类型的字段初始条件结构

您可以使用MATLAB®结构初始化信号元素在一辆公共汽车。看到为总线元素指定初始条件

当你创建一个MATLAB结构初始化一个总线包含以外的使用数值数据类型的元素,你需要设置结构字段的值。您选择的技术设置的值会影响生成的代码的效率和可读性。

  • 为了避免手动匹配的字段数据类型与数据类型信号元素,使用无类型表达式设置字段值。当您开发和快速原型模型,为方便使用这种技术。

  • 生成更高效的生产代码,避免浮点数存储在代码中,匹配结构字段的数据类型和数据类型的元素对应的信号。

为例子,更多信息可调初始条件在生成的代码中,看到的控制信号和状态初始化在生成的代码中(金宝app仿真软件编码器)

内联结构的数值字段生成的代码

如果你设置默认参数的行为配置参数内联默认情况下,初始条件结构的字段值出现在生成的代码内联号码(non-tunable)。对于这些结构,使用无类型的表达式在仿真软件中设置字段值。金宝app字段值不需要数据类型,因为结构不是可调在生成的代码中。

然而,如果你以后默认参数的行为可调或应用存储类通过使用结构金宝appSimulink.Parameter对象,代码可以包含浮点数存储和低效的显式的类型转换和变化。为了避免这些问题,考虑匹配结构字段的数据类型和相应的信号元素的数据类型。

生成可调结构中直接指定一块对话框

假设您指定一个初始条件结构直接在一块对话框,或在一个金宝appSimulink.Signal对象,等一个表达式结构(“signal1”5“signal2”, 7.2)(而不是存储在一个变量或结构金宝appSimulink.Parameter对象)。在这种情况下,代码中生成一个可调结构,设置默认参数的行为可调

用表来决定如何控制字段的数据类型在这些初始条件结构。

目标 技术

使用nonvirtual总线。

使用无类型表达式设置字段值。

使用虚拟总线。

避免手动匹配的字段数据类型与信号元素。

使用无类型表达式设置字段值。

生成更高效的代码,避免浮点数存储。

匹配的结构与信号元素类型字段的数据类型。存储中的数据类型信息结构体通过使用输入表达式设置字段值。

产生可调的结构存储在一个变量或参数对象

假设您存储在一个变量或一个初始条件结构金宝appSimulink.Parameter基本工作空间中创建的对象或数据字典。例如,你用这种技术来分享多个块之间的结构,或当你设定来生成一个可调结构默认参数的行为内联。在这种情况下,使用的表来决定如何控制字段的数据类型的初始条件结构。

目标 技术

避免手动匹配的字段数据类型与信号元素。

使用无类型表达式设置字段值。在生成的代码中,使用数据类型结构字段。生成的调和算法使用显式类型转换数据类型不匹配。

生成更高效的代码,避免浮点数存储。

匹配的结构与信号元素类型字段的数据类型。数据类型信息存储在字段或使用一个结构金宝appSimulink.Bus控制字段的数据类型和对象同时信号元素。

检查你的模型使用模型顾问可能昂贵的数据类型不匹配,明白了检查结构参数与总线信号使用

初始化一个数组的公交车在参考模型中通过使用一个结构数组。通过一系列结构参考模型的模型参数的值模型块。

匹配的结构与信号元素类型字段的数据类型。数据类型信息存储在字段或使用一个结构金宝appSimulink.Bus对象来控制结构字段的数据类型和信号同时元素。

如果你不通过结构参考模型作为模型参数,按照其他指南nonvirtual公交车来决定如何控制数据类型。

使用无类型的表达式来设置字段值

您可以使用无类型的表达式来设置结构字段值。隐式地使用数据类型的字段。设置字段值代表理想,现实世界的初始化值。

你避免手动匹配字段的数据类型和数据类型的元素对应的信号。然而,根据总线的虚拟世界,您所使用的方法,应用初始条件,和其他因素,可以引入浮点存储和生成的代码中潜在的效率低下的类型转换。

假设您创建一个公共汽车myBusSig这些信号元素。每个元素使用一个特定的数据类型。

myBusSig signalElement1 (int32) signalElement2(布尔)signalElement3(单一)

创建一个初始条件结构initStruct。使用无类型表达式指定字段值。可选地,增强可读性的布尔字段signalElement2,使用价值而不是0

initStruct。signalElement1 = 3;initStruct。signalElement2 = false;initStruct。signalElement3 = 17.35;

如果你使用这个函数金宝appSimulink.Bus.createMATLABStruct创建结构,结构中的函数存储数据类型信息字段。创建结构之后,您可以选择使用无类型的表达式来改变字段值。看到使用Si金宝appmulink.Bus。createMATLABStruct to Create Structure

存储数据结构领域的类型信息

存储数据类型信息在结构领域,使用输入表达式来设置字段值,或使用功能金宝appSimulink.Bus.createMATLABStruct创建结构。使用这些技术来生成高效的代码通过消除浮点数存储和潜在的低效的显式的类型转换。

为了避免手动应用新数据类型结构字段当你改变相应的信号元素的数据类型,考虑使用金宝appSimulink.Bus对象来控制结构和总线的数据类型。

使用类型的表达式来设置字段值。假设您创建一个公共汽车myBusSig这些元素,使用特定的数据类型。

  • signalElement1 (int32)

  • signalElement2(布尔)

  • signalElement3(单一)

创建一个初始条件结构initStruct通过使用输入表达式设置字段值。匹配字段的数据类型和数据类型的元素对应的信号。

initStruct。signalElement1 = int32 (3);initStruct。signalElement2 = false;initStruct。signalElement3 =单(17.35);

结构字段存储数据类型信息。如果你以后改变信号的数据类型元素,手动应用新的数据类型对应的结构。

匹配一个定点数据类型,设置字段值使用fi(定点设计师)对象。

更改保存字段值的数据类型信息。假设您改变字段的值在一个现有的初始条件结构。保存的数据类型信息的字段可以使用下标赋值,与语法(:)

initStruct.signalElement3 (,) = 16.93;

如果你不使用下标赋值,你必须记得要保存的数据类型使用类型的表达式。

initStruct。signalElement3 =单(16.93);

如果你不使用这两种技术,这个领域失去了数据类型信息。

initStruct。signalElement3 = 16.93;现在%字段数据类型是“双”。

使用金宝appSimulink.Bus.createMATLABStruct创建结构。您可以使用函数金宝appSimulink.Bus.createMATLABStruct创建一个结构的字段都有值,通常0。如果您配置信号元素的数据类型在使用函数之前,例如通过设置块生成信号的输出数据类型元素,输出结构中的每个字段使用相同的数据类型元素对应的信号。字段存储的数据类型的信息如果你使用输入表达式设置值。

您可以初始化信号的一些元素值以外的地面通过部分结构的功能。当您创建这部分结构,将每个字段的数据类型与相应的信号元素的数据类型使用类型的表达式。的更多信息和示例,请参阅金宝appSimulink.Bus.createMATLABStruct

当你以后改变字段的值的结构,选择这些技术来设置新值之一:

  • 无类型的表达式。字段值不再存储数据类型信息。

  • 输入表达式或下标的任务。字段值持续存储的数据类型信息。

使用总线对象作为初始条件结构的数据类型

你是否存储数据类型信息结构字段或使用无类型的表达式来设置字段值,您可以使用一个金宝appSimulink.Bus对象作为整个初始条件结构的数据类型。然后您可以独立管理字段值和数据类型。

如果你使用这种技术,考虑使用无类型表达式设置字段值。然后,你不需要手动匹配字段数据类型当你改变信号的数据类型的元素。控制字段的数据类型和信号元素,使用数据类型中的元素的属性公共汽车对象。

假设您使用总线的创造者块创建一个公共汽车myBusSig与这些元素:

  • signalElement1 (int32)

  • signalElement2(布尔)

  • signalElement3(单一)

  1. 打开类型编辑器。

    typeeditor

  2. 创建一个公共汽车对象,myBus,对应于公共汽车。

    总线类型命名的myBus对象编辑器

  3. 创建一个初始条件结构initStruct。使用无类型的表达式来设置字段值。增强可读性的signalElement2,使用布尔值而不是0

    initStruct。signalElement1 = 3;initStruct。signalElement2 = false;initStruct。signalElement3 = 17.35;

  4. 代表结构,创建一个金宝appSimulink.Parameter对象。

    initStruct = 金宝appSimulink.Parameter (initStruct);

  5. 使用参数对象指定一个初始条件的公共汽车。例如,在一个单位延迟块对话框中,设置初始条件initStruct

  6. 使用公共汽车对象指定的数据类型参数对象。

    initStruct。数据类型=“巴士:myBus”;

  7. 使用公共汽车对象指定数据类型的公共汽车。例如,在总线的创造者块对话框中,设置输出数据类型总线:myBus

在仿真和在生成的代码中,字段结构和信号元素使用你指定的数据类型公共汽车对象。前仿真和代码生成的参数对象投结构字段中指定的数据类型公共汽车对象。

基本信息公共汽车对象,看到指定总线属性模型。金宝app总线对象数据类型

为现有的结构配置数据类型

删除数据类型的所有字段的信息结构,您可以编写一个自定义函数,取代了字段值数字。使用例子函数castStructToDbl作为一个模板。

使用双打的结构转换为一个存储数据类型信息,您可以创建一个引用结构使用功能金宝appSimulink.Bus.createMATLABStruct。您可以编写一个自定义函数将字段值的数据类型参考结构。使用例子函数castStructFromDbl作为一个模板。

检查与模型不匹配的数据类型的顾问

检测当结构字段的数据类型不符合总线相关元素,使用模型的顾问。

  1. 建模选项卡上,单击模型的顾问

  2. 点击好吧

  3. 按照任务>使用公交车信号建模和参数中,选择检查结构参数与总线信号使用

  4. 单击运行这个检查按钮。

代码生成的数组的公交车

当你为一个模型生成代码,包括公共汽车、数组类型定义代表底层总线类型中出现* _types.h文件。

代码生成生产C结构数组,您可以集成遗留C代码,使用数组的结构。必要时,代码为总线变量(数组)中生成以下结构:

  • 阻塞IO

  • 外部输入

  • 外部输出

这是一个简化的例子为数组所生成的代码的公共汽车。

生成的代码数组的巴士

基本信息代码生成nonvirtual巴士,它出现在代码结构,明白了组织数据结构生成的代码(金宝app仿真软件编码器)

相关的话题