主要内容

数据结构在生成的代码中

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

实时模型(rtModel)数据结构是一个顶级的数据结构,其中包含特定于数据,使用的模型可重用的功能。代码生成器使用这个数据结构只多实例代码生成。

标准的数据结构

在一个模型中,root轮廓尺寸和外港块代表主块算法的输入和输出。默认情况下,代码生成器将这些块聚合为标准结构存储输入和输出数据。

信号线路,块参数、状态和其他模型数据出现在生成的代码的标准结构。一般信息,请参阅如何生成的代码存储内部信号、状态和参数数据

表显示了生成的代码中一些常见的数据结构。结构类型的名称,如果适用,结构变量的代码生成模型依赖于模型的设置。无论设置、结构类型的名称在代码中包含的短名称结构类型的短名称表中的列。

数据结构生成的一个模型

结构类型的短名称 数据结构来表示
ExtU

数据从根轮廓尺寸

ExtY

数据从根外港

B

块输出信号

ConstB

块输出常量值

P

块的参数

ConstP

常数参数

DW

离散块的州

XDis

使子系统的状态

InstP

参数的参数

SharedDSM 本地数据存储共享

你可以排除数据出现在这些结构中使用:

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

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

实时模型数据结构

访问字段功能的模拟数据结构(SimStruct),仿真软件的万博1manbetx软件提供了一组函数。代码生成器取代SimStruct以优化的实时模型(rtModel)的数据结构。

代码生成GRT利用ERT系统目标文件使用实时模型的数据结构(rtModel)。这个结构封装模型相关的信息比模拟结构更加紧凑的形式SimStruct。根据模型,模型相关的信息包括内部数据等数据可重用函数和错误状态。

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

生成的代码的效率功能依赖于一代的rtModel而不是SimStruct,包括:

  • 整数绝对和运行时间的服务

  • 独立的计时器为异步任务

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

  • 修剪的数据结构,以减少其大小(仅ERT-derived系统目标文件)

实时模型中定义的数据结构cmain.cpp当你建立你的模型生成文件。导模型,如果你明确的模型配置参数主程序生成一个例子(嵌入式编码),rtmodel.h文件生成。的rtmodel.h文件包含# include指令的要求rt_main.crt_cppclass_main.cpp静态主程序模块。的rt_main.crt_cppclass_main.cpp包括rtmodel.h访问模型相关的数据结构和模块,因为静态主程序入口点并不是在代码生成时创建。

代码生成器提供了一组访问宏rtModel数据结构。类似于这些宏ssSetxxxssGetxxx宏S-functions用来访问SimStruct数据,包括noninlined S-functions编制的代码生成器。

使用宏的设置rtmGetxxxrtmSetxxx访问实时模型的数据结构。使用这些宏在生成的代码中cmain.cpp模块的外部代码。如果你是定制cmain.cpp(静态或生成的文件),使用rtmGetxxxrtmSetxxx而不是ssSetxxxssGetxxx宏。

的使用rtmGetxxxrtmSetxxx宏是一样的ssSetxxxssGetxxx版本,除了你替换SimStruct年代通过实时模型的数据结构rtM。此表列出了rtmGetxxxrtmSetxxx中使用的宏rt_main.crt_main.cpp

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

rtm宏观语法

描述

rtmGetdX (rtm)

块连续状态的衍生品

rtmGetOffsetTimePtr (RT_MDL rtM)

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

rtmGetNumSampleTimes (RT_MDL rtM)

得到样品的数量乘以一个街区

rtmGetPerTaskSampleHitsPtr (RT_MDL)

返回一个指针NumSampleTime×NumSampleTime矩阵

rtmGetRTWExtModeInfo (RT_MDL rtM)

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

rtmGetRTWLogInfo (RT_MDL)

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

rtmGetRTWRTModelMethodsInfo (RT_MDL)

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

rtmGetRTWSolverInfo (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)

rtmGetStepSize (RT_MDL)

回归模型的基本步长

rtmGetT (RT_MDL t)

获取当前的仿真时间

rtmSetT (RT_MDL t)

设置下一个样品的时间

rtmGetTaskTime (RT_MDL tid)

获得当前时间为当前的任务

rtmGetTFinal (RT_MDL)

得到仿真停止时间

rtmSetTFinal (RT_MDL finalT)

设置仿真停止时间

rtmGetTimingData (RT_MDL)

返回一个计时引擎所使用的数据结构模型的(仅使用代码生成器)

rtmGetTPtr (RT_MDL)

返回一个指针指向当前时间

rtmGetTStart (RT_MDL)

得到仿真开始时间

rtmIsContinuousTask (rtm)

确定任务是连续的

rtmIsMajorTimeStep (rtm)

确定模拟的重要一步

rtmIsSampleHit (RT_MDL tid)

确定样品的时间

rtmGetErrorStatus (rtm)

获取当前的错误状态

val rtmSetErrorStatus (rtm)

设置当前的错误状态

rtmGetErrorStatusPointer (rtm)

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

rtmGetStopRequested (rtm)

返回请求是否停止

rtmGetBlockIO (rtm)

块I / O数据结构

val rtmSetBlockIO (rtm)

组块的I / O数据结构

rtmGetContStates (rtm)

得到连续状态的数据结构

val rtmSetContStates (rtm)

设置连续状态的数据结构

rtmGetDefaultParam (rtm)

获得默认参数的数据结构

val rtmSetDefaultParam (rtm)

设置默认参数的数据结构

rtmGetPrevZCSigState (rtm)

前面的讨论二阶导数过零信号状态的数据结构

val rtmSetPrevZCSigState (rtm)

设置之前讨论二阶导数过零信号状态数据结构

rtmGetRootDWork (rtm)

DWork数据结构

val rtmSetRootDWork (rtm)

设置DWork数据结构

rtmGetU (rtm)

得到根输入数据结构(当根输入传递的模型数据结构)

val rtmSetU (rtm)

设置根输入数据结构(当根输入传递的模型数据结构)

rtmGetY (rtm)

得到根输出数据结构(当根输出传递的模型数据结构)

val rtmSetY (rtm)

设置根输出数据结构(当根输出传递的模型数据结构)

有关更多信息,请参见SimStruct上市的宏和函数使用

相关的话题