默认情况下,生成的代码使用数据类型别名,例如real_t.
和INT32_T.
.该代码使用这些别名来定义全局和局部变量。如果您的编码标准要求您使用其他数据类型别名,包括现有代码定义的别名,则可以:
为整个模型配置数据类型替换。
配置单个数据项(例如信号、参数和状态)以使用特定的数据类型别名。
有关控制模型中数据类型的信息,请参见控制信号数据类型.
将此C代码保存到名为my_types.h.
在当前文件夹中。此文件表示现有代码中的头文件,该头文件通过使用类型定义
声明。
#includetypedef double my_dblecrecision;typedef短my_int16;typedef bool my_bool;
打开示例模型ex_数据类型_替换.
open_system(fullfile(docroot,'工具箱','ecoder',“例子”,......“ex_data_type_replacement”))
在这一点造型选项卡,单击模型数据编辑器.
在模型数据编辑器中,检查信号标签。
设定改变视图下拉列表到代码
.在数据表中,存储类列显示命名的信号线,例如临时
使用存储类ExportedGlobal.
.使用此设置,信号线显示在生成的代码中作为单独的全局变量。
设定改变视图下拉列表到设计
.
更新方框图。
金宝appSimulink为每个使用继承数据类型设置的信号分配一个特定的数据类型,例如继承:通过内部规则继承
.
在数据表中,展开数据类型专栏。该列显示模型中的信号混合使用数据类型int16
,双倍的
, 和布尔
. 您还可以在模型中看到这些数据类型。
从模型生成代码。
在代码生成报告中,检查共享实用程序文件RTWTYPES.H.
.代码使用类型定义
使用标准重命名原始C数据类型的语句金宝app®编码员™别名。例如,代码重命名原语类型双倍的
通过使用别名real_t.
.
typedef双重real_t;
检查文件ex_data_type_replacement.c.
. 代码使用默认数据类型别名来声明和定义变量。例如,代码使用数据类型real_t.
,int16_t.
, 和boolean_T
定义全局变量的步骤flow
,临时
, 和intlk
.
实际流入;/*'<根目录>/In3'*/int16\u T temp;/*'/Add2'*/boolean\u T intlk;/*' /Compare'*/
该模型步
函数使用相同的数据类型别名定义局部变量。
real_T rtb_Add;real_T rtb_FilterCoefficient;
使用中定义的自定义数据类型配置生成的代码以定义变量my_types.h.
而不是默认类型名。
在命令提示下,创建一个金宝appsimulink.aliaStype.
对您的外部代码定义的每个数据类型别名的对象。
金宝appsimulink.importexternalctypes(“我的类型。h”);
在基础工作区中,金宝appSimulink.ImportTexternalTypes
函数创建对象我的精确度
,my_int16
, 和我的兄弟
.
对于每个对象,函数设置datascope.
财产'进口'
和头饰
财产“我的类型。h”
. 使用这些设置,代码生成器不会创建类型定义
语句,但生成的代码将重用来自的语句my_types.h.
通过包括(#包括
)档案。
在模型中,在“配置参数”对话框中代码生成>数据类型更换窗格,选择替换生成代码中的数据类型名称.
的选项替换名按表列。
金宝appSimulink名称 | 替换名 |
---|---|
双倍的 |
我的精确度 |
int16 |
my_int16 |
布尔 |
我的兄弟 |
从模型生成代码。
在“代码生成”报告中,检查该文件RTWTYPES.H.
.现在,代码使用#包括
用于导入外部头文件内容的指令my_types.h.
,其中包含自定义数据类型别名。
#include“my_types.h”/ *用户定义替换数据类型for int16_t real_t boolean_t * /
检查文件ex_data_type_replacement.c.
. 代码使用自定义数据类型别名我的精确度
,my_int16
, 和我的兄弟
定义全局变量,如flow
,临时
, 和intlk
.
我的\u dblPrecision流入;/*'<根目录>/In3'*/my\u int16 temp;/*'/Add2'*/my\u bool intlk;/*' /Compare'*/
该模型步
函数通过使用自定义数据类型别名定义本地变量。
my_dblPrecision rtb_Add;我的DBL精度rtb过滤器效率;
假设您的编码标准要求重要数据项使用一种数据类型,其名称表示实际意义。你可以创造更多金宝appsimulink.aliaStype.
对象来表示这些自定义数据类型别名。使用对象设置模型中数据项的数据类型。
在模型数据编辑器中数据类型列,使用金宝appsimulink.aliaStype.
对象设置这些块输出的数据类型。您可以在模型中选择一个信号线,该信号线在模型数据编辑器中突出显示相应的行,或者通过使用通过使用模型数据编辑器中的信号过滤器件盒子。
块 | 输出数据类型 |
---|---|
流量设定点 | flow_t. |
Add2(这给了相比块) | difftemp_t. |
使用模型数据编辑器Inports / Outports.标签设置第三个数据类型inport.块到flow_t.
.
在这一点造型选项卡,在下面设计,点击属性查看器.
选择标有“流量控制器”的块。在属性检查器中,单击打开打开区块对话框。
在这一点数据类型选项卡,设置总和输出到控制
. 点击好的.
通过这些数据类型设置,一些命名信号,例如临时
和flow
,使用唤起现实世界数量的数据类型,例如液体流速和温度。
在命令提示下,创建金宝appsimulink.aliaStype.
对象表示这些新的自定义数据类型别名。
flow\u T=金宝appSimulink.AliasType(“双人”);difftemp_t = 金宝appsimulink.aliaStype(“int16”);ctrl_T =仿金宝app真软件。AliasType (“双人”);
在模型中,信号flow
和流量设定
使用基本数据类型双倍的
,所以数据类型别名flow_t.
映射到双倍的
.
更新方框图。
由于数据类型继承,其他信号也使用自定义数据类型别名。例如,的输出数据类型添加由第三次喂食inport.块设置为继承:通过内部规则继承
. 内部规则选择块输入使用的相同数据类型,flow_t.
.
从模型生成代码。
文件ex_data_type_replacement_types.h
定义新的数据类型flow_t.
,difftemp_t.
, 和控制
作为的别名我的精确度
和my_int16
.
typedef my_dblrecision flow_t;typedef my_int16 difftemp_t;typedef my_dblrecision ctrl_t;
在文件中ex_data_type_replacement.c.
,代码使用新的类型名称定义全局变量。
流量\u T流量;/*'<根>/In3'*/flow\u T flowsett;/*'<根>/Flow Setpoint'*/ctrl\u T flowCtrl;/*'<根>/Interlock'*/diffTemp\u T temp;/*'/Add2'*/
对于不使用新数据类型的块,相应的生成代码继续使用前面指定的替换类型。例如,在文件中ex_data_type_replacement.h.
,块的输出三机一体和In2显示为使用替换类型的结构字段my_int16
.
/*外部输入(带自动存储的根输入端口信号)*/typedef struct{my_int16 In1;/*'<根>/In1'*/my\u int16 In2;/*'/In2'*/}ExtU\u ex\u data\u type\u replacement;
自定义数据类型别名flow_t.
和控制
映射到原始数据类型双倍的
.如果要从中更改此基础数据类型双倍的
到单身的
(浮动
),你必须记得修改基型
两者的属性金宝appsimulink.aliaStype.
物体。
为了更容易地进行此更改,您可以创建金宝appsimulink.numerictype.
对象并配置两者金宝appsimulink.aliaStype.
对象引用它。然后,您需要仅修改金宝appsimulink.numerictype.
目的。一种金宝appsimulink.numerictype.
对象使您可以在不创建数据类型别名的情况下共享数据类型。
在命令提示下,创建一个金宝appsimulink.numerictype.
对象表示原始数据类型单身的
.
sharedType=Si金宝appmulink.NumericType;sharedType.DataTypeMode='单身的';
配置金宝appsimulink.aliaStype.
物体flow_t.
和控制
从这个新对象获取基础数据类型。
flow_T。基类型=“sharedType”;ctrl_t.baseType =.“sharedType”;
在这一点调试选项卡,选择信息覆盖>基本数据类型信息覆盖>别名数据类型及(见端口数据类型).更新方框图。
模型中的数据类型指示符显示别名flow_t.
和控制
映射到原始类型单身的
.要更改此基础基元类型,可以修改数据类型模式
财产的金宝appsimulink.numerictype.
目的,共享类型
.
默认情况下,金宝appsimulink.numerictype.
对象不会引起另一个对象类型定义
语句以显示在生成的代码中。
如果从模型生成代码,而金宝appsimulink.numerictype.
对象表示数据类型单身的
,生成的代码映射flow_t.
和控制
默认金宝appSimulink编码器数据类型别名real32_t.
,它映射到C数据类型浮动
.你可以换real32_t.
以与您更换的方式相同real_t.
,int16_t.
, 和boolean_T
(配置参数>代码生成>数据类型更换).
这个金宝appsimulink.numerictype.
和金宝appsimulink.aliaStype.
如果结束当前工作空间,则基本工作空间中的对象不会持久存在®会议。要永久存储这些对象,请考虑将模型迁移到数据字典中。看迁移模型以使用Simulink数据字典金宝app.
类型定义
声明创建金宝appsimulink.aliaStype.
对象,用于大量类型定义
外部C代码中的陈述,考虑使用金宝appSimulink.ImportTexternalTypes
功能。