之间交换数据和外部C / c++代码金宝app模型或生成的代码
你是否外部代码导入仿真软件金宝app®模型(例如,通过使用遗留代码的工具)或导出生成的代码到外部环境中,模型或生成的代码通常交换数据(信号、状态和参数)与代码。
在C或c++代码功能,包括您的外部功能,可以与调用者或交换数据调用函数:
函数参数(正式的参数)。当一个函数通过交换数据参数,应用程序可以多次调用该函数。调用函数的每个实例可以操纵自己的独立集数据的实例不相互干扰。
直接访问全局变量。全局变量可以:
使不同的算法(功能)和相同的算法的实例共享数据,如校准参数和错误状态。
使不同的利率(函数)的多任务系统交换数据。
使不同的算法异步交换数据。
在仿真金宝app软件中,可以组织和配置数据,以便使用这些交换机制来提供模型,提取、共享数据和代码。
在你尝试匹配数据接口,选择一个整体集成方法,明白了选择一个外部代码集成工作流。
外部代码导入模型
之间交换数据模型和外部函数,选择一个交流机制根据您选择的技术整合功能。
通过您的外部函数的参数来交换数据,构建和配置您的模型创建和包的数据根据数据类型参数。然后,您连接和配置块调用或代表你接受函数,产生,或参考的数据模型。
例如,如果您使用遗留代码工具生成一个功能块调用你的函数,的港口和参数块对应函数的参数。你连接上游块的输出信号的输入端口和设置参数值块面具。然后,您可以创建信号线路输出端口的块和将这些信号连接到下游的块。
交换数据通过全局变量,外部代码已经定义了一个最佳实践是使用Stateflow®表调用你的函数和变量的访问。你写算法图表中的C代码,这样在模拟或生成的代码的执行,该模型变量的读和写。
等一个全局变量使用一个项目的参数数据(而不是信号或状态数据)在一个模型,您可以创建一个数字MATLAB®变量或
金宝appSimulink.Parameter
对象代表了变量。如果你改变c代码变量的值在模拟运行时,您必须手动同步模型变量或对象的价值。金宝app如果你的算法代码(函数)在模拟c代码变量的值变化,相应的模型变量或对象不改变。金宝app如果您选择创建一个c代码的模型表示变量,您可以配置模金宝app型表示,这样生成的代码读取和写入变量但不复制变量定义。应用仿真软件的存储类表示。金宝app
技术集成外部函数 | 机制与模型交换数据 | 例子和更多的信息 |
---|---|---|
功能块 | 函数参数 |
通过一个函数调用你的函数创建使用遗留代码的工具,明白了C函数集成到仿真软件模型与遗留代码的工具金宝app。 |
Stateflow图表 | 函数参数和直接访问全局变量 |
调用你的函数和访问全局变量Stateflow图表,看看访问Stateflow图表中的自定义代码变量和函数(Stateflow)。信息在表中创建数据项(可以作为参数传递给函数),看到的添加Stateflow数据(Stateflow)。 |
coder.ceval 在MATLAB函数块 |
函数参数 |
在一个调用你的函数MATLAB函数块用 |
生成的代码导出到外部环境
导出生成的代码到你的外部代码,看看外部调用代码和生成的代码之间交换数据。
金宝app表示C数据类型和结构
模型和重用您的自定义C等数据结构、枚举类型定义
别名,使用这些表中的信息。
在外部C代码建模模式匹配的数据
C数据类型或结构 | 示例C代码 | 金宝app等效模型 | 更多的信息 |
---|---|---|---|
原始类型别名( |
typedef mySinglePrec_T浮动; |
创建一个
生成代码,使用别名数据类型需要嵌入式编码器®。 |
为模型定义自定义数据类型的信息,明白了 为例,展示了如何导出生成的代码到你的外部代码,看看取代和重命名数据类型符合编码标准(嵌入式编码)。 |
数组 |
int myArray [6]; |
指定信号和参数维度中描述确定信号的维度。 生成的代码定义和访问多维数据,包括矩阵列为主的序列化的向量。如果你的外部代码使用不同的格式,可以考虑使用替代技术生成的代码集成。看到代码生成的矩阵和数组。 |
信息是如何生成的代码存储nonscalar数据(包括限制),看到的代码生成的矩阵和数组。 为例,展示了如何导出生成的代码到你的外部代码,看看重用参数数据从外部代码生成的代码(嵌入式编码)。 模型查找表,请参阅 |
枚举 |
typedef enum myColorsType{红= 0,黄、蓝}myColorsType; |
定义一个模型枚举,金宝app对应于您的枚举定义。使用仿真软件枚举金宝app来设置数据类型在一个模型。 |
使用枚举数据在仿真软件模型中,看到的金宝app使用枚举数据在仿真软件模型金宝app。 为例,展示了如何生成枚举参数数据,看看枚举(嵌入式编码)。 为例,展示了如何导出生成的代码到你的外部代码通过交换枚举数据,看看之间交换结构化和枚举数据生成和外部代码(嵌入式编码)。 |
结构 |
typedef struct myStructType {int数;双多项式系数;}myStructType; |
创建一个 创建结构化的信号或状态数据、包中的多个信号线路模型到一个nonvirtual总线信号。 创建结构化参数数据,创建一个参数对象(如 查找表的数据打包成一个结构,使用 |
总线信号的信息,请参阅组信号线路到虚拟的公共汽车。信息结构的参数,请参阅组织相关块参数定义的结构。 为例,展示了如何将外部代码导入到一个模型通过使用遗留代码的工具,明白了集成C函数的参数是指向结构的指针。 的例子展示了如何导出生成的代码到你的外部代码,看看之间交换结构化和枚举数据生成和外部代码(嵌入式编码)和通过外部代码定义一个指针访问结构化数据(嵌入式编码)。 包查找表数据结构, 有关创建结构的一般信息在生成的代码中,看到的组织数据结构生成的代码。 |
额外的建模模式代码生成(嵌入式编码器)
C数据类型或结构 | 示例C代码 | 金宝app等效模型 | 更多的信息 |
---|---|---|---|
宏 |
#定义myParam 9.8 |
应用存储类 这种技术需要嵌入式编码器。 |
宏定义(#定义)(嵌入式编码) |
存储类型限定符等常量 和挥发性 |
const myParam = 9.8; |
应用存储类 |
保护全球数据使用const关键字和不稳定 |
位域 |
typedef struct myBitField{无符号短整型模式:1;无符号短整型失败:1;无符号短整型好:1;}myBitField |
这些技术要求嵌入的编码器。 |
本(嵌入式编码) 优化生成的代码通过包装布尔数据为本(嵌入式编码) |
调用自定义外部函数,读取或写入数据 |
外部代码: / *调用这个函数获得的值的信号。* /双get_inSig (void){返回myBigGlobalStruct.inSig;} 生成的算法代码: algorithmInput = get_inSig (); |
应用存储类 这种技术需要嵌入式编码器。 |
通过与存储类GetSet函数访问数据(嵌入式编码) |
考虑其他建模的目标
目标 | 注意事项和更多的信息 |
---|---|
使用仿真金宝app软件运行生成的代码并与之交互 | 您可以使用硅,公益诉讼,和外部模式模拟连接您的模型为仿真生成相应的应用程序。当你从外部导入参数数据代码:
关于硅和公益诉讼的信息,请参阅选择银或公益诉讼的方法(嵌入式编码)。外部模式模拟的信息,请参阅外部模式模拟参数调优和信号监测。 |
导出的数据的生成代码注释描述属性包括物理单位,现实世界的初始值和数据类型 | 生成这些评论可以帮你匹配数据接口而笔迹集成代码。看到在生成的代码中添加自定义注释变量(嵌入式编码)。 |