主要内容

配置自定义数据类型

C函数中的自定义数据类型

C S函数可以使用用户定义的数据类型进行通信。这些数据类型有两种广泛的类别:

  • 金宝app®可识别的自定义数据类型 - 这些是来自a的自定义数据类型金宝appsimulink.aliaStype.金宝appsimulink.bus.金宝appsimulink.numerictype.或者也可以与其他Simulink块交互的枚举数据类型。金宝app

  • 不透明的数据类型 - 这些是仅用于编程的S函数块以了解它们的数据类型。您可以在其他Simulink块不需要使用数据类型的情况下定义不透明数据类型。金宝app

使用C S函金宝app数中的Simulink识别数据类型

要通过Simulink识别的自定义数据类型,S函数金宝appmdlinitializatize例程必须注册数据类型,使用ssregistertypefromnamedObject.

例如,以下代码在开始时放置mdlinitializatize定义自定义数据类型金宝appsimulink.aliaStype.对象命名U8.在MATLAB®工作区。然后,该示例将自定义数据类型分配给第一个输出端口。

int id1;ssregistertypefromnamedObject(s,“U8”,&ID1);sssetoutportportypatype(s,0,ID1);

此外,您可以使用标识符ID1.将此数据类型分配给S函数参数,dwork矢量和输入端口。

在C S函数中使用不透明数据类型

对于S函数需要使用通过Simulink的数据类型进行传送的情况,S函数金宝appmdlinitializatize例程必须:

  1. 注册数据类型,使用ssregisterdatatype.

  2. 使用备份使用sssetDatatypesize.

  3. 指定表示数据类型的零的值,使用sssetdatatypezero.

在外部标题文件中定义用户定义的数据类型以包括在2级C S函数中。

/ *定义用户定义的数据类型* / typedef结构的结构{int8_t a;uint16_t b;MyStruct;

在开始时放置以下代码mdlinitializatize设置自定义数据类型的大小和0表示形式mystruct.

/ *定义变量* / int_t状态;dtypeid身份证;mystruct tmp;/ *注册用户定义的数据类型* / id = ssregisterdatatype(s,“mystruct”);if(id == invalid_dtype_id)返回;/ *设置用户定义的数据类型* / status = sssetDatatypesize(s,id,sizeof(tmp))的大小;如果(status == 0)返回;/ *设置零表示* / tmp.a = 0;tmp.b = 1;status = sssetdatatypezero(s,id和tmp);

笔记

如果你有金宝appSimulink Coder™,您无法使用该软件生成包含宏来定义自定义数据类型的S函数的代码。您必须使用内联的S函数,该函数访问目标语言编译器函数以生成具有自定义数据类型的代码。有关更多信息,请参阅内联的S函数(金宝appSimulink编码器)

也可以看看

|||

相关的话题