主要内容

生成的代码中的数据结构

代码生成器组织模型在数据结构中使用的数据。对于每个模型,代码生成器在还称为标准数据结构的全局结构中存储诸如信号和状态的数据。使用这些数据结构来访问生成的代码中的数据。

实时模型(Rtmodel.)数据结构是包含特定于实例数据的顶级数据结构,该数据由模型用于可重用功能。代码生成器仅使用此数据结构仅为多实例代码生成。

标准数据结构

在模型中,根级Inport和Outport块表示块算法的主要输入和输出。默认情况下,代码生成器将这些块聚合到存储输入和输出数据的标准结构中。

信号线,块参数,状态和其他模型数据显示在生成的代码中作为标准结构的字段。有关一般信息,请参阅生成的代码如何存储内部信号,状态和参数数据

该表显示了生成的代码中的一些常见数据结构。从模型生成的代码中的结构类型和结构变量(如果适用)的名称取决于模型设置。不论设置如何,代码中的结构类型的名称都包含来自结构类型的短名称列。

为模型生成的数据结构

结构类型的短名称 结构中表示的数据
extu.

来自rooti的数据inport.

ex

来自rooti的数据外港

B.

块输出信号

ConstB

块输出具有常数值

P.

块参数

const

恒定参数

DW.

离散块状态

XDIS.

启用子系统的状态

参数参数

SharedDSM 共享本地数据存储

您可以使用以下方式排除数据从以下结构中出现

  • 直接应用存储类。例如,您可以使用存储类来表示信号,可调谐参数和状态作为单个全局变量。有关更多信息,请参阅C代码界面元素的生成配置

  • 配置参数,例如那些优化配置参数对话框中的窗格。您可以调整这些配置参数以控制数据的默认表示。有关更多信息,请参阅模型配置参数:代码生成优化

实时模型数据结构

要访问S函数的模拟数据结构的字段(酝酿),Simul金宝appink软件提供了一组功能。代码生成器替换酝酿通过优化的实时模型(Rtmodel.) 数据结构。

使用GRT和ERT系统目标文件的代码生成使用实时模型数据结构(rtModel)。该结构以比仿真结构更紧凑的形式封装了模型特定信息酝酿。根据模型,模型特定信息包括诸如可重用功能和错误状态的内部数据等数据。

当你设置时代码接口包装可重复使用的功能,代码生成器将模型数据(如块I/O、Dwork和参数)打包到实时模型数据结构中。代码生成器通过引用生成的模型入口点函数来传递实时模型结构。如果你设置通过根级I / O作为(嵌入式编码器)模型数据结构的一部分,代码生成器将根级模型输入和输出打包到实时模型数据结构中。

生成代码的高效能力取决于生成Rtmodel.而不是酝酿, 包含:

  • 整数绝对和经过的定时服务

  • 异步任务的独立定时器

  • 生成信号,状态和参数监控的改进的C API代码

  • 修剪数据结构以最大限度地减少其大小(仅限ERT派生的系统目标文件)

实时模型数据结构定义在main.cmain.cpp.构建模型时生成的文件。对于ERT模型,如果清除模型配置参数生成示例主程序(嵌入式编码器)Rtmodel.h.文件是生成的。这Rtmodel.h.文件包含#包括所需的指令RT_MAIN.c.RT_CPPCLASS_MAIN.cpp.静态主程序模块。这RT_MAIN.c.RT_CPPCLASS_MAIN.cpp.包括Rtmodel.h.要访问特定于模型的数据结构和入口点,因为静态主程序模块未在代码生成时间创建。

代码生成器提供了一组用于访问的宏Rtmodel.数据结构。这些宏是类似的sssetxxx.ssgetxxx.S函数用于访问的宏酝酿数据,包括由代码生成器编译的非inlined s函数。

使用宏rtmGetxxxrtmSetxxx访问实时模型数据结构。这些宏用于生成的代码以及在生成的代码中main.cmain.cpp.外部代码的模块。如果您正在自定义main.cmain.cpp.(无论是静态的还是生成的文件),使用rtmGetxxxrtmSetxxx而不是这一点sssetxxx.ssgetxxx.宏。

用法rtmGetxxxrtmSetxxx宏与sssetxxx.ssgetxxx.版本,除了您替换simstruct s.通过实时模型数据结构RTM.。此表列表rtmGetxxxrtmSetxxx用于使用的宏RT_MAIN.c.RT_Main.cpp.

用于访问实时模型数据结构的宏

RTM宏语法

描述

RTMGEDDX(RTM)

获取块连续状态的衍生品

RTMFREOFFSETTIMEPTR(RT_MDL RTM)

返回指向向量的指针,该向量存储与rtM关联的模型的样本时间偏移量

rtmGetNumSampleTimes (RT_MDL rtM)

获取块的样本时间数

RTMitGETPERSKSAMPLEHITSPTR(RT_MDL)

返回指向numsampletime.×numsampletime.矩阵

RTMFETRTWEXTMODEINFO(RT_MDL RTM)

返回模型的外部模式信息数据结构(仅由代码生成器用于外部模式)

RTMGETRTWLOGINFO(RT_MDL)

返回代码生成器日志记录使用的数据结构(仅由代码生成器使用)

RTMFETRTWRTMODELMETMETHODSINFO(RT_MDL)

返回实时模型方法信息的数据结构(仅由代码生成器使用)

RTMGETRTWSOLVENFO(RT_MDL)

返回包含模型求解器信息的数据结构(仅由代码生成器使用)

RTMGETSAMPLEHITPTR(RT_MDL)

返回一个指针以样本命中标志矢量

RTMGetSampletime(RT_MDL RTM,INT TID)

获取任务样本时间

RTMGETSAMPLETIMEPTR(RT_MDL RTM)

获取指向任务采样时间的指针

RTMGETSAMPLETIMETASKIDPTR(RT_MDL RTM)

获取指向任务ID的指针

RTMGetSimTimestep(RT_MDL)

返回仿真步骤类型ID(minor_time_step.major_time_step.的)

RTMFTStepsize(RT_MDL)

返回模型的基本步长

RTMITET(RT_MDL,T)

获取当前的模拟时间

RTMSETT(RT_MDL,T)

设置下一个样本命中的时间

RTMFTTASKTIME(RT_MDL,TID)

获取当前任务的当前时间

RTMFTTFINT(RT_MDL)

获得模拟停止时间

RTMSETTFINAL(RT_MDL,FINALT)

设置模拟停止时间

RTMFTTIMINGDATA(RT_MDL)

返回模型的定时引擎使用的数据结构(仅由代码生成器使用)

RTMGETTPTR(RT_MDL)

返回当前时间的指针

RTMAFTTSTART(RT_MDL)

获取模拟开始时间

RTMISCONTINOUTSASK(RTM)

确定任务是连续的

Rtmismajortimestep(RTM)

确定模拟是否处于重大步骤中

rtmissamplehit(RT_MDL,TID)

确定采样时间是否被击中

rtmGetErrorStatus (rtm)

获取当前的错误状态

RTMSERTERRORSTATUS(RTM,VAL)

设置当前错误状态

RTMGeterRorStatusPointer(RTM)

返回指向当前错误状态的指针

RTMGetStoprequested(RTM)

返回是否请求停止

RTMFTELBLOCKIO(RTM)

获取块I / O数据结构

RTMsetBlockio(RTM,Val)

设置块I/O数据结构

rtmitebontstates(RTM)

获取连续状态数据结构

RTMsetContstates(RTM,Val)

设置连续状态数据结构

RTMFETDEFAULTPARAM(RTM)

获取默认参数数据结构

RTMSetDefaultParam(RTM,Val)

设置默认参数数据结构

RTMGETPREVZCSIGSTATE(RTM)

获取以前的过零信号状态数据结构

rtmsetprevzcsigstate(RTM,Val)

设置以前的过零信号状态数据结构

rtmGetRootDWork (rtm)

获取dwork数据结构

Rtmsetrootdwork(RTM,Val)

设置dwork数据结构

RTMITEU(RTM)

获取根输入数据结构(当作为模型数据结构的一部分传递根输入时)

Rtmsetu(RTM,Val)

设置根输入数据结构(当作为模型数据结构的一部分传递根输入时)

RTMFATY(RTM)

获取根输出数据结构(当作为模型数据结构的一部分传递根输出时)

RTMsety(RTM,Val)

设置根输出数据结构(当作为模型数据结构的一部分传递根输出时)

有关更多信息,请参阅SIMSTRUCS宏和用法列出的函数

相关的话题