C S-Functions可以使用用户定义的数据类型进行通信。这些数据类型有两大类:
金宝app®可识别的自定义数据类型——这些都是自定义的数据类型金宝appSimulink.AliasType
,金宝appSimulink.Bus
,金宝appSimulink.NumericType
或枚举数据类型,也可以与其他仿真软件。金宝app
不透明的数据类型,这些数据类型使用只有功能块编程去理解他们。你可能不透明的数据类型定义在其他情况下,仿真软件模块不需要使用的数据类型。金宝app
注册自定义数据类型识别的仿真软件,功能金宝appmdlInitializeSizes
程序必须登记的数据类型,使用ssRegisterTypeFromNamedObject
。
例如,下面的代码的开头mdlInitializeSizes
从定义一个自定义的数据类型金宝appSimulink.AliasType
对象命名与
在MATLAB®工作区。然后分配自定义数据类型的例子第一个输出端口。
int id1;ssRegisterTypeFromNamedObject(年代,“与”,id1);ssSetOutputPortDataType(年代,0,id1);
此外,您可以使用这个标识符id1
分配该数据类型功能参数,DWork向量,输入端口。
在S-Functions需要使用数据类型进行通信,不能理解模型,功能金宝appmdlInitializeSizes
程序必须:
寄存器的数据类型,使用ssRegisterDataType
。
指定所需的内存字节存储数据类型的一个实例,使用ssSetDataTypeSize
。
指定数据类型的值代表零,使用ssSetDataTypeZero
。
在外部定义用户定义的数据类型中包含头文件级别2 C s函数。
/ *定义用户定义的数据类型的结构* / typedef struct {int8_T;uint16_T b;}myStruct;
下面的代码开始的地方mdlInitializeSizes
设置自定义数据类型的大小和零表示myStruct
。
/ *定义变量* / int_T状态;DTypeId id;myStruct tmp;/ *注册用户定义数据类型* / id = ssRegisterDataType(年代,“myStruct”);如果(id = = INVALID_DTYPE_ID)返回;/ *设置用户定义的数据类型的大小* /状态= ssSetDataTypeSize(年代,id, sizeof (tmp));如果(状态= = 0)返回;/ *设置* / tmp零表示。= 0;tmp。b = 1; status = ssSetDataTypeZero(S, id, &tmp);
请注意
如果你有金宝app仿真软件编码器™,你不能使用软件来生成代码S-functions包含宏定义自定义数据类型。您必须使用内联函数访问目标语言编译器功能和自定义数据类型生成代码。有关更多信息,请参见内联S-Functions(金宝app仿真软件编码器)。
ssSetNumInputPorts
|ssSetNumOutputPorts
|ssGetNumInputPorts
|ssGetNumOutputPorts