代码生成器组织模型在数据结构中使用的数据。对于每个模型,代码生成器在还称为标准数据结构的全局结构中存储诸如信号和状态的数据。使用这些数据结构来访问生成的代码中的数据。
实时模型(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代码
修剪数据结构以最大限度地减少其大小(仅限派生系统目标文件)
实时模型数据结构定义在main.c
或main.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函数。
使用宏rtmGetxxx
和rtmSetxxx
访问实时模型数据结构。这些宏用于生成的代码以及在生成的代码中main.c
或main.cpp.
外部代码的模块。如果您正在自定义main.c
或main.cpp.
(静态文件或生成文件),使用rtmGetxxx
和rtmSetxxx
而不是这一点sssetxxx.
和ssgetxxx.
宏。
使用rtmGetxxx
和rtmSetxxx
宏与sssetxxx.
和ssgetxxx.
版本,除了你替换simstruct s.
通过实时模型数据结构rtm.
。此表列表rtmGetxxx
和rtmSetxxx
用于使用的宏grt_main.c.
和grt_main.cpp.
。
用于访问实时模型数据结构的宏
RTM宏语法 |
描述 |
---|---|
|
获取块连续状态的衍生品 |
|
返回指向向量的指针,该向量存储与rtM相关联的模型的样本时间偏移量 |
|
获取块的样本时间数 |
|
返回指向 |
|
返回模型的外部模式信息数据结构(仅由代码生成器用于外部模式) |
|
返回代码生成器日志记录使用的数据结构(仅由代码生成器使用) |
|
返回实时模型方法信息的数据结构(仅由代码生成器使用) |
|
返回包含模型求解器信息的数据结构(仅由代码生成器使用) |
|
返回一个指针以样本命中标志矢量 |
|
获取任务样本时间 |
|
获取指向任务采样时间的指针 |
|
获取指向任务ID的指针 |
|
返回仿真步骤类型ID( |
|
返回模型的基本步长 |
|
获取当前的模拟时间 |
|
设置下一个样本命中的时间 |
|
获取当前任务的当前时间 |
|
获得模拟停止时间 |
|
设置模拟停止时间 |
|
返回模型的定时引擎使用的数据结构(仅由代码生成器使用) |
|
返回当前时间的指针 |
|
获取模拟开始时间 |
|
确定任务是连续的 |
|
确定模拟是否处于重大步骤 |
|
确定采样时间是否被击中 |
rtmGetErrorStatus (rtm) |
获取当前的错误状态 |
RTMSERTERRORSTATUS(RTM,VAL) |
设置当前错误状态 |
RTMGeterRorStatusPointer(RTM) |
返回指向当前错误状态的指针 |
RTMGetStoprequested(RTM) |
返回是否请求停止 |
RTMFTERBLOCKIO(RTM) |
获取块I / O数据结构 |
RTMSetBlockio(RTM,Val) |
设置块I/O数据结构 |
RTMFTCONTSTATE(RTM) |
获取连续状态数据结构 |
RTMsetContstates(RTM,Val) |
设置连续状态数据结构 |
RTMFETDEFAULTPARAM(RTM) |
获取默认参数数据结构 |
RTMSetDefaultParam(RTM,Val) |
设置默认参数数据结构 |
RTMGETPREVZCSIGSTATE(RTM) |
获取以前的过零信号状态数据结构 |
RTMSetPrevzcsigstate(RTM,Val) |
设置以前的过零信号状态数据结构 |
rtmGetRootDWork (rtm) |
获取dwork数据结构 |
RTMSetrootdwork(RTM,Val) |
设置DWORK数据结构 |
RTMFTU(RTM) |
获取根输入数据结构(当根部输入作为模型数据结构的一部分传递时) |
Rtmsetu(RTM,Val) |
设置根输入数据结构(当根输入作为模型数据结构的一部分传递) |
RTMFRY(RTM) |
获取根输出数据结构(当根部输出作为模型数据结构的一部分传递时) |
RTMsety(RTM,Val) |
设置根输出数据结构(当根部输出作为模型数据结构的一部分传递时) |
有关更多信息,请参阅用法中列出的Simstruct宏和函数。