交叉发布代码集成
如果你有嵌入式编码器®如果源模型是单速率的,并且生成的C代码来自:
顶层模型或子系统构建过程使用不可重用的函数代码接口。
抑制错误状态监视的单个或多个实例模型引用构建过程(
SuppressErrorStatus
是在
)。
如果可以重用现有代码而不进行修改,就可以降低重新验证的成本。
工作流
考虑这个控制系统模型。
的控制器
模型Block引用一个由三个组件组成的模型:
P1
是一个模型块,它引用了用以前版本开发的模型,例如R2015b。生成的带有独立代码接口的模型代码位于文件夹中P1_ert_rtw
。C1
是一个模型块,它引用您在当前版本中开发的模型。P2
是用以前的版本开发的子系统块,例如R2016a。生成的子系统代码在文件夹中P2_ert_rtw
。P3
是一个模型块,它引用了用以前版本开发的模型,例如R2016b。生成的模型代码,以及模型引用代码接口,都在文件夹中slprj / ert / P3
。
要将以前版本的代码与当前版本生成的代码集成,请使用以下工作流:
限制
交叉发布的代码集成工作流不支持:金宝app
导出功能模型。
AUTOSAR代码生成。
金宝app仿真软件的功能和函数调用者块跨越不同版本生成的代码的边界。
集成R2010a之前版本生成的代码。
将生成的代码从当前版本导入到以前的版本(向前兼容性)。
导出的文件定位在MATLAB中®上一版本的根文件夹,例如blockset库文件。
从具有非内联s函数的模型导出和导入生成的代码。
c api(嵌入式编码)。
在模型构建过程的末尾,代码生成报告显示集成模型直接使用的共享文件,例如,控制器
。该报告不显示模型组件使用的共享文件,例如,P1
和P2
。
如果你的模型有:
交叉释放SIL或PIL块,不能运行快速加速模式模拟。
引用包含交叉释放SIL或PIL块的模型的Model块,不能运行加速模式或快速加速模式模拟。
你可以运行:
包含交叉释放SIL或PIL块的模型的顶级模型SIL模拟。
包含交叉释放SIL或PIL块的参考模型的模型块SIL模拟。
金宝app仿真软件。公共汽车
金宝app
要在交叉发布代码集成中使用总线对象作为数据类型,请使用以下方法之一。
方法 | 代码出口 | 代码导入 |
---|---|---|
自动 | 在以前的版本中,在生成代码之前,设置 代码生成器创建 |
在当前版本中,运行之前 构建集成模型时,构建过程将使用 |
出口汽车 | 类的这些属性在以前的版本中,在生成代码之前指定
代码生成器创建 对于R2010a和R2010b, |
在当前版本中,运行之前 在构建集成模型时,该集成模型集成了导入的SIL或PIL块,构建过程将使用 如果导入的代码来自R2010a或R2010b,请指定
构建集成模型时,构建过程将使用 |
进口汽车 | 类的这些属性在以前的版本中,在生成代码之前指定
对于R2010a和R2010b, |
在当前版本中,导入生成的代码后,不需要更改 在构建集成模型时,该集成模型集成了导入的SIL或PIL块,构建过程将使用 如果导入的代码来自R2010a或R2010b,请指定
构建集成模型时,构建过程将使用 |
通过生成代码中的全局变量实现根级I/O
当从以前版本导入的代码通过全局变量实现输入或输出端口时,从集成模型生成的代码取决于连接到集成模型中端口的信号的属性。
如果集成模型信号没有映射到与导入代码中的信号具有相同名称的生成代码变量,则生成的代码:
如果变量在导入的代码中声明但未定义,则定义该变量。
创建额外的代码,以便在集成模型生成的变量和导入代码中的变量之间复制数据。
如果集成模型信号映射到与导入代码中的信号同名的变量,则从集成模型生成的代码也会使用导入代码使用的变量。必须为信号使用兼容的存储类。
存储类属性 | 物业价值支持金宝app |
---|---|
类型 | 非结构化 只有 |
数据访问 | 不能连接实现为的端口 不能连接实现为的端口 |
数据范围 | 如果导入的代码声明但没有定义变量(即代码是从使用
如果导入的代码定义了变量(即代码是从使用
|
通过全局数据存储在当前和以前版本组件之间通信
当前和以前版本的组件可以通过关联的全局数据存储进行通信金宝app仿真软件。信号
对象在MATLAB基础工作空间或Simulink数据字典。金宝app
出口配置
在旧版本中生成代码之前,对于您想要导出的模型组件,配置数据存储内存以使用导入外部代码的存储类。
如果顶级模型或子系统构建过程生成代码,则设置存储类的属性金宝app仿真软件。信号
对象指向这些类之一:
ImportedExtern
ImportedExternPointer
ImportFromFile
自定义存储类
如果一个模型引用构建过程生成了代码,你也可以使用这些类:
ExportedGlobal
ExportToFile
自定义存储类
当你奔跑crossReleaseExport
时,该函数识别数据存储内存中的codeInfo.mat
文件中归档并放置所需的信息crossReleaseInfo.m
工件。
导入配置
在当前版本中,在运行之前crossReleaseImport
,定义金宝app仿真软件。信号
对象在MATLAB基本工作空间或Simulink数据字典中为您想导入的组件的每个全金宝app局数据存储:
对象名称和数据类型,复杂性,维对象属性时,指定与要导入的组件中相应对象的值相匹配的值。
为存储类属性时,请指定兼容的值。如果之前的发布值为
ImportedExtern
,为当前版本指定以下值之一:ImportedExtern
ExportedGlobal
ImportFromFile
或ExportToFile
自定义存储类。
如果之前的发布值为
ImportedExternPointer
,然后指定ImportedExternPointer
对于当前版本。为别名属性时,仅当为要导入的组件中的对象指定了属性时,才指定匹配的值。
保存
金宝app仿真软件。信号
对象。每次模拟或构建导入的SIL或PIL块时都需要这些对象。
有关更多信息,请参见生成代码中的数据存储。
参数调优
跨版本集成工作流支持在集成模型中进行参数调优,该集成模型包含具有来自以前版本的金宝app可调参数的组件代码。
在当前版本中,在运行之前crossReleaseImport
,对于你想导入的组件的每个可调参数:
定义一个
金宝app仿真软件。参数
对象在MATLAB基础工作空间或Simulink数据字典。金宝app对象名称和数据类型,复杂性,维对象属性时,指定与导出的对象值匹配的值。如果导入源代码中的变量与对象的名称不相同,则别名属性时,指定与变量名匹配的值。
如果导出对象使用
GetSet
自定义存储类,指定:属性的匹配值存储类对象属性。
类的头文件
得到
和集
访问功能。详细信息请参见使用自定义存储类设计器(嵌入式编码器)和通过自定义存储类GetSet的函数访问数据(嵌入式编码)。
金宝app支持
GetSet
以前版本的自定义存储类仅适用于R2011a及以后的版本。
对于先前版本中由顶级模型或子系统构建过程生成的代码,适用以下限制:
属性指定的可调参数
金宝app仿真软件。参数
对象从上一个版本导出,存储类设置为ExportedGlobal
的存储类金宝app仿真软件。参数
对象在当前发行版中的值也是ExportedGlobal
,在构建集成模型时发生错误。在Mac操作系统上,如果控件指定的可调参数
金宝app仿真软件。参数
对象从以前的版本导出,其中存储类设置为ExportedGlobal
类的存储类,则无法构建集成模型金宝app仿真软件。参数
对象(具有相同的名称或别名)ImportedExtern
。要解决这个限制,修改默认设置:从默认工具链中获取构建工具。
tc = code .make. getdefaulttoolchain;cComp = tc.getBuildTool(C编译器的);
提取C编译器标准选项。
stdMaps = cComp.金宝appSupportedStandard.getLangStandardMaps;optionValues = stdMaps.getCompilerOptions(‘*’);
删除
-fno-common
C和c++编译器的标准选项。optionToRemove =“-fno-common”;optionsToKeep = strrep(optionValues, optionToRemove,”);c_standard_opts_id =“(C_STANDARD_OPTS)美元”;custToolChainOpts = get_param(模型,“CustomToolchainOptions”);custToolChainOpts {2} =…strrep(custToolChainOpts{2}, c_standard_opts_id, optionsToKeep);set_param(模型,“CustomToolchainOptions”, custToolChainOpts);
比较当前版本中模型组件的仿真行为和以前版本中生成的代码
在以前的版本中,假设您开发了一个模型组件,为该组件生成代码,并测试和部署生成的代码。现在,在当前的版本中,您希望向模型组件添加特性,并在系统开发和代码生成中使用模型组件。在继续之前,您可以比较模型组件的功能行为和以前版本中生成的代码。
为了测试模型组件和以前版本生成的代码之间的数值等价性,请使用金宝app仿真软件测试™。与测试经理(金宝appSimulink Test),您可以执行背靠背测试和输出比较:
将模型组件作为模型用模拟模式块参数设置为
正常的
。与模型块,创建指定测试输入数据的顶层模型。
将以前版本中生成的代码作为SIL块导入到当前版本中。
使用SIL块,创建另一个顶级模型,该模型指定相同的测试输入数据。
在Test Manager中,创建一个等价测试用例,运行顶级模型的模拟并比较输出。
运行测试用例并检查结果。
有关更多信息,请参见中的测试管理器示例金宝appSimulink测试示例(金宝app仿真软件测试)。
请注意
如果您想比较当前版本和以前版本生成的代码的行为,请在步骤1中指定这些模型块参数:
集模拟模式来
Software-in-the-loop(银)
或Processor-in-the-loop(公益诉讼)
。集代码接口来
顶级模特
。
另请参阅
crossReleaseImport
|crossReleaseExport
|sharedCodeMATLABVersions
|sharedCodeUpdate