文档

Cross-Release代码集成

如果你有一个嵌入式编码器®许可,你可以从以前版本整合生成C代码(R2010a后来)时从当前版本生成的代码生成的源模型是单频和C代码是:

  • 使用那种一次性的顶级模特或子系统构建过程函数代码接口。

  • 单个或多个实例模型参考构建过程,抑制错误状态监控(SuppressErrorStatus)。

如果你可以重用现有代码没有修改,你可以减少批准暂予监外执行的成本。

工作流

考虑这个控制系统模型。

控制器模型块引用一个模型,该模型由三部分组成:

  • P1是一个模型块,引用一个模型一个以前的版本,例如,R2015b。与独立的代码生成的模型代码,界面,在文件夹中P1_ert_rtw

  • C1是一个模型块,引用一个模型,您正在开发的当前版本。

  • P2是一个子系统块开发一个以前的版本,例如,R2016a。子系统生成的代码是在文件夹P2_ert_rtw

  • P3是一个模型块,引用一个模型一个以前的版本,例如,R2016b。生成的模型代码,与模型参考代码界面,在文件夹中slprj / ert / P3

将代码从以前版本与当前版本生成的代码,使用此工作流:

  1. 指定一个现有的共享代码文件夹

  2. 组件导入当前版本

  3. 组件合并到当前版本的模型

限制

cross-release代码集成工作流不支持:金宝app

  • 导出功能模型ERT代码。

  • 金宝app仿真软件的功能函数调用者跨边界的ERT代码块所产生的不同版本。

  • 生成的代码的集成R2010a之前发布。

  • 进口从当前版本生成的代码到一个以前的版本(向前兼容性)。

  • 导出的文件位于MATLAB®先前版本的根文件夹,例如,blockset库文件。

  • 从模型生成代码的导出和导入noninlined S-functions。

  • c api

在模型的构建过程结束时,代码生成的报告显示共享文件,直接使用的集成模型,例如,控制器。这份报告并没有显示模型的共享文件使用的组件,例如,P1P2

如果你的模型有:

  • cross-release SIL或公益诉讼,你不能快速加速器模式运行模拟。

  • 一个模型块,引用一个模型包含cross-release SIL或公益诉讼,你不能运行加速器模式或快速加速器模式模拟。

您可以运行:

  • 顶级模特SIL的模拟模型,包含cross-release SIL或公益诉讼。必须不包含cross-release AUTOSAR的模型模型块。

  • 模型块SIL的模拟模型,引用包含cross-release SIL或公益诉讼。被引用的模型必须不包含cross-release AUTOSAR模型块。

对于其他cross-release AUTOSAR代码信息集成的局限性,明白了进口AUTOSAR从以前版本的代码

金宝appSimulink.Bus金宝app

使用总线对象作为cross-release ERT数据类型代码集成,使用这些方法之一。

方法 代码出口 代码导入
自动

在以前的版本中,在生成代码之前,设置DataScope财产的金宝appSimulink.Bus对象汽车。不赋值吗HeaderFile财产。

代码生成器创建的金宝appSimulink.Bus数据类型定义默认值头文件,这是位于模型的代码生成的文件夹。

在当前版本中,之前运行crossReleaseImport,设置DataScope财产的金宝appSimulink.Bus对象汽车

当你建立的集成模型,构建过程使用金宝appSimulink.Bus数据类型的头文件导入的代码。

出口汽车

在以前的版本中,在生成代码之前,这些属性指定的金宝appSimulink.Bus对象:

  • DataScope——设置为出口

  • HeaderFile——指定一个文件名,例如,prevRelBusType

代码生成器创建prevRelBusType.h在共享公用代码文件夹。这个头文件包含的定义金宝appSimulink.Bus数据类型。使用sharedCodeUpdate添加prevRelBusType.h文件夹的共享代码ExistingSharedCode指定。

R2010a和R2010bDataScope财产是不可用的。不赋值吗HeaderFile财产。代码生成器创建的金宝appSimulink.Bus数据类型定义modelName_types.h,这是位于模型的代码生成的文件夹。

在当前版本中,之前运行crossReleaseImport,设置DataScope财产的金宝appSimulink.Bus对象进口

当你创建集成模型,其中包括进口硅或公益诉讼,构建过程使用金宝appSimulink.Bus数据类型定义prevRelBusType.h

如果导入的代码从R2010a或R2010b,指定这些属性的金宝appSimulink.Bus对象:

  • DataScope——设置为进口

  • HeaderFile——将文件路径modelName_types.h导入的代码文件夹中。

当你建立的集成模型,构建过程使用金宝appSimulink.Bus数据类型定义modelName_types.h

进口汽车

在以前的版本中,在生成代码之前,这些属性指定的金宝appSimulink.Bus对象:

  • DataScope——设置为进口

  • HeaderFile——指定路径的文件,其中包含金宝appSimulink.Bus数据类型定义,例如,aBusType.h

R2010a和R2010bDataScope财产是不可用的。为HeaderFile属性,指定路径的文件,其中包含金宝appSimulink.Bus数据类型定义,例如,aBusType.h

在当前版本中,导入生成的代码后,您不需要更改金宝appSimulink.Bus

当你创建集成模型,其中包括进口硅或公益诉讼,构建过程使用金宝appSimulink.Bus数据类型定义aBusType.h

如果导入的代码从R2010a或R2010b,指定这些属性的金宝appSimulink.Bus对象:

  • DataScope——设置为进口

  • HeaderFile——设置为aBusType.h

当你建立的集成模型,构建过程使用金宝appSimulink.Bus数据类型定义aBusType.h

根级I / O通过全局变量生成的代码

当进口ERT代码从先前版本实现了一个输入或输出端口通过一个全局变量,从集成模型生成的代码依赖于信号的属性连接到端口集成模型。

如果集成模型信号不映射到生成的代码变量有相同的名称作为信号导入代码,生成的代码:

  • 如果声明的变量定义了但在导入的代码未定义。

  • 创建额外的代码生成的变量之间复制数据的集成模型和变量导入的代码。

如果集成模型信号映射到一个变量名称相同的信号在导入的代码中,使用的变量使用的进口代码也从集成模型生成的代码。您必须使用一个兼容的存储类的信号。

存储类属性 属性值支持金宝app
类型 非结构化只有
数据访问

不能连接端口实现为一个指针进口代码中的变量同名的一个信号,通过实现直接存储类的集成模型

不能连接端口实现为一个直接进口代码中的变量的信号实现为一个相同的名称指针在集成模型

数据范围

如果导入的代码声明但没有定义的变量(即从一个信号,使用代码生成进口值),然后需要以下之一:

  • 使用的集成模型出口价值。

  • 外部代码定义了变量。

如果导入的代码定义了变量(即从一个信号,使用代码生成出口值):

  • 信号的集成模型连接到根级I / O端口:

    • 设置EnableDataOwnership配置参数

    • 使用一个自定义存储类这些属性:

      • 类型- - - - - -非结构化

      • 数据访问- - - - - -直接

      • 数据范围- - - - - -出口

      • 老板——非空值不是集成模型的名称。例如,价值可以导入组件的名称。

  • 信号的集成模型不连接到根级I / O端口,使用一个自定义存储类这些属性值:

    • 数据范围- - - - - -进口

    • 数据访问- - - - - -直接

通过全球当前和先前版本组件之间的通信数据存储

当前和先前版本的组件可以通过全球数据存储与沟通金宝appSimulink.Signal对象在仿真软件MATLAB基础工作区或数据字典。金宝app这里描述的工作流程适用于cross-release ERT代码集成。

代码生成配置

生成模型组件代码之前在旧的版本中,配置数据存储内存使用存储类进口外部代码。

如果一个顶级模特或子系统构建过程生成代码,设置存储类财产的金宝appSimulink.Signal对象的类:

  • ImportedExtern

  • ImportedExternPointer

  • ImportFromFile定制的存储类

如果一个模型参考构建过程生成的代码,你也可以使用这些类:

  • ExportedGlobal

  • ExportToFile定制的存储类

导入配置

在当前版本中,在你运行crossReleaseImport,定义一个金宝appSimulink.Signal对象在仿真软件MATLAB基础工作区或数据字典的每个全局数据存储组件,您想要导入:金宝app

  1. 对象名称和数据类型,复杂性,对象属性,指定相应的值相匹配的值对象的组件,您想要导入的文件。

  2. 存储类兼容的属性,指定一个值。如果先前版本值ImportedExtern,指定一个值为当前版本:

    • ImportedExtern

    • ExportedGlobal

    • ImportFromFileExportToFile自定义存储类。

    如果先前版本值ImportedExternPointer,然后指定ImportedExternPointer为当前版本。

  3. 别名属性,指定一个匹配的值只有在对象的属性指定的组件,您想要导入的文件。

  4. 保存金宝appSimulink.Signal对象。每次模拟所需的对象是建立进口硅或公益诉讼。

有关更多信息,请参见数据存储在生成的代码(金宝app仿真软件编码器)。

参数调优

cross-release ERT代码集成工作流支持集成参数优化模型,其中包含组件代码以前版本的金宝app可调参数。

在当前版本中,在你运行crossReleaseImport为每个组件的可调参数,您想要导入:

  1. 定义一个金宝appSimulink.Parameter对象在仿真软件MATLAB基础工作区或数据字典。金宝app

  2. 对象名称和数据类型,复杂性,对象属性,指定值相匹配的先前版本对象值。如果变量在导入源代码没有名称相同的对象,为别名属性,指定一个值相匹配的变量名。

  3. 如果先前版本对象使用GetSet自定义存储类,指定:

    金宝app的支持GetSet自定义存储类从一个以前的版本只适用于R2011a后来版本。

生成的代码的顶级模特或子系统构建过程在以前的版本中,这些限制适用:

  • 如果一个指定的可调参数金宝appSimulink.Parameter先前版本的对象存储类设置ExportedGlobal的存储类金宝appSimulink.Parameter对象在当前版本ExportedGlobal,出现一个错误当你构建的集成模型。

  • 在Mac操作系统上,如果一个可调参数的指定金宝appSimulink.Parameter先前版本的对象存储类设置ExportedGlobal,你不能构建集成模型的存储类金宝appSimulink.Parameter具有相同名称的对象在当前版本(或别名)ImportedExtern。为了解决这个限制,修改默认设置:

    1. 把默认的工具链的构建工具。

      tc = coder.make.getDefaultToolchain;cComp = tc.getBuildTool (C编译器的);

    2. 提取标准C编译器选项。

      stdMaps = cComp.金宝appSupportedStandard.getLangStandardMaps;用optionvalue = stdMaps.getCompilerOptions (‘*’);

    3. 删除-fno-common从标准C和c++编译器选项。

      optionToRemove =“-fno-common”;optionsToKeep = strrep(用optionvalue 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模型)的每个实例引用模型在父模型。以前生成的代码可重用的引用模型导入到当前版本作为一个参数化cross-release SIL或公益诉讼的块,然后插入块的多个实例集成模型。对于每个块实例,您可以指定唯一的模型参数值。

  1. 更新现有的共享代码文件夹。

    sharedCodeUpdate (sourceFolder,destinationFolder)

  2. 生成的代码可重用的引用模型导入到当前版本作为一个参数化cross-release块,例如,银块。

    handleSILBlock= crossReleaseImport (reusableReferencedModelcodeLocation,……configSetIntegrationModel、“SimulationMode”、“银”);

  3. 在集成模型,代替,例如,两个实例的引用的模型与实例cross-release硅块。

    open_system (integrationModel);blockInstanceName1= 'refModelInstanceName1”;blockinstanceName2= 'refModelInstanceName2”;SILBlockFullName= getfullname (handleSILBlock);replace_block (integrationModel“名称”,blockInstanceName1,……SILBlockFullName、“noprompt”);replace_block (integrationModel“名称”,blockInstanceName2,……SILBlockFullName、“noprompt”);

  4. 假定引用的可重用模型具有模型参数paramAparamB引用的模型实例的值,refModelInstanceName1refModelInstanceName2工作空间变量。在这种情况下,您可以指定参数值的工作区cross-release块实例变量。

    pathToBlockInstanceName1= (integrationModel' / ',blockInstanceName1];pathToBlockInstanceName2= (integrationModel' / ',blockInstanceName2];set_param (pathToBlockInstanceName1”,paramA”、“paramA_instName1”);set_param (pathToBlockInstanceName1”,paramB”、“paramB_instName1”);set_param (pathToBlockInstanceName2”,paramA”、“paramA_instName2”);set_param (pathToBlockInstanceName2”,paramB”、“paramB_instName2”);

  5. 指定唯一的模型参数值在集成块实例模型,到工作空间变量赋值,paramA_instName1,paramB_instName1,paramA_instName2,paramB_instName2

比较仿真模型组件的行为在当前版本,从先前版本生成的代码

在以前的版本中,假设你开发了一个模型组件,组件生成的代码,测试和部署生成的代码。现在,在当前版本,你想添加特性模型组件,并使用模型组件的系统开发和代码生成。在你出发之前,你可以比较模型的功能行为组件和从先前版本生成的代码。

测试数值模型之间的等价组件和从先前版本生成的代码,使用金宝app仿真软件测试™。与测试经理(金宝app仿真软件测试),您可以执行连续测试和输出比较:

  1. 把模型组件为当前版本模型块的模拟模式块参数设置为正常的

  2. 模型块,创建一个顶级模特,指定测试输入数据。

  3. 在以前的版本中生成的代码导入到当前版本作为硅块。

  4. 银块,创建另一个顶级模特,指定相同的测试输入数据。

  5. 测试经理,创建一个等价测试用例运行模拟的模型和比较输出。

  6. 运行测试案例和评审结果。

有关更多信息,请参见测试两个等价的模拟(金宝app仿真软件测试)。

请注意

如果你想要比较的行为从当前和先前版本生成的代码,在第1步中,指定这些模型块参数:

  • 模拟模式Software-in-the-loop(银)Processor-in-the-loop(公益诉讼)

  • 代码接口顶级模特

进口AUTOSAR从以前版本的代码

如果你安装嵌入式编码支持包AUTOSAR标准,您可以导入到当前版本A金宝appUTOSAR组件代码生成的先前版本。

当您运行crossReleaseImport,函数导入AUTOSAR代码cross-release模型块代替硅或公益诉讼。的模拟模式参数的模型块设置为Software-in-the-loop(银)Processor-in-the-loop(公益诉讼)。把模型块到当前版本模型。

这些限制适用:

  • cross-release工作流不支持访问NVRAM每个内存。金宝app

  • 可调参数必须映射到AUTOSAR校准参数或AUTOSAR内部校准参数。

  • 如果原始模型使用变量或符号维度(维变异),导入的模型只能使用相同的变量和符号维度配置使用生成代码时在前面的版本。

另请参阅

||

相关的话题