存储类适用于单个信号、状态和参数数据元素
一个存储类是一个代码生成设置,您申请数据项(信号、块参数或状态)模型。当你直接把它应用到一个数据项,存储类:
导致数据项出现在生成的代码作为一个全局符号,通常一个全局变量。
防止优化等默认参数的行为和信号存储重用从消除数据项生成的代码。
使用嵌入式编码器®,您可以配置生成的代码的格式存储或定义了数据项。例如,您可以应用存储类型限定符
常量
或挥发性
或配置参数数据项出现宏观(#定义
)。
直接存储类适用于单个数据项:
调整参数和监控信号和状态在执行期间。
通过内存部分配置数据放置在内存中。
交换数据的生成代码(例如,全局变量)与外部代码。
应用存储类类别的数据信息在默认情况下,通过使用映射编辑器的代码,看看配置默认代码生成数据(嵌入式编码)。
应用存储类数据项
这个例子展示了如何应用存储类信号,一块状态,和一块参数模型。
探索模型示例
打开示例模型rtwdemo_roll
。
open_system (“rtwdemo_roll”)
导航到BasicRollMode
子系统。
open_system (“rtwdemo_roll / BasicRollMode”)
子系统包含一个集成块,保持状态数据。
从根级别的模型中,导航到RollAngleReference
子系统。
open_system (“rtwdemo_roll / RollAngleReference”)
标记UpThr子系统包含一个常数的块。
在本例中,您配置状态和集成块的输出信号恒定值固定块的参数出现在生成的代码作为单独的全局变量。
应用存储类
导航到根级别的模型。
打开金宝app仿真软件编码器应用。当出现提示时,改变系统目标文件
grt.tlc
。单击模型数据编辑器选项卡。
在模型数据编辑器中,单击变化范围按钮。这个扩展
名单中包括数据项的数据子系统。
选择信号选项卡。
设置改变观点下拉列表,
代码
。在内容过滤框中,输入
积分器
。可选地,使用的名字列指定一个名称为积分器的输出信号块,等
mySignal
。使用存储类列应用存储类
ExportedGlobal
。选择州选项卡。
可选地,使用的名字状态列指定一个名称,例如
myState
。使用存储类列应用存储类
ExportedGlobal
。选择参数选项卡。你不能直接应用存储类块参数。您必须创建一个参数对象,例如
金宝appSimulink.Parameter
,使用对象设置块参数的值,并应用存储类的对象。设置改变观点下拉列表,
设计
。在内容过滤框中,输入
UpThr
。使用价值改变参数值的列
6
来UpThr
。在编辑的参数值,旁边
UpThr
,点击操作按钮(三个垂直点)和选择创建。在创建新的数据对话框中,设置价值来
金宝appSimulink.Parameter
并点击好吧。一个金宝appSimulink.Parameter
对象命名UpThr
出现在基地工作空间。在
UpThr
属性对话框中,设置价值来6
和存储类来ExportedGlobal
。点击好吧。
或者,您可以使用这些命令在命令提示符处配置信号状态和参数数据。
%配置信号portHandles = get_param (“rtwdemo_roll / BasicRollMode /集成商”,…“PortHandles”);outportHandle = portHandles.Outport;set_param (outportHandle“名字”,“mySignal”)set_param (outportHandle“StorageClass”,“ExportedGlobal”)%配置状态set_param (“rtwdemo_roll / BasicRollMode /集成商”,…“StateName”,“myState”)set_param (“rtwdemo_roll / BasicRollMode /集成商”,…“StateStorageClass”,“ExportedGlobal”)%配置参数set_param (“rtwdemo_roll / RollAngleReference / UpThr”,“价值”,“UpThr”)UpThr = S金宝appimulink.Parameter (6);UpThr。StorageClass =“ExportedGlobal”;
生成和检查代码
从模型中生成代码。
set_param (“rtwdemo_roll”,“SystemTargetFile”,“grt.tlc”)rtwbuild (“rtwdemo_roll”)
# # #开始构建过程模型:rtwdemo_roll # # #成功完成构建过程模型:rtwdemo_roll # # #模型缓存构件“rtwdemo_roll”创建的H: \ \ MATLAB文件\ \ simulinkcoder-ex3778325金宝app8 \ rtwdemo_roll.slxc的例子。
检查文件rtwdemo_roll.c
。该文件定义了全局变量。
文件= fullfile (“rtwdemo_roll_grt_rtw”,“rtwdemo_roll.c”);rtwdemodbtype(文件,“/ *出口阻塞信号* /”,“real32_T myState;”,1,1)
* / / *出口阻塞信号real32_T mySignal;/ * < S1 > /集成商的* * / / / *导出块参数real32_T UpThr f = 6.0;/ *变量:UpThr *引用:“< S3 > / UpThr”* / / *出口阻塞状态* / real32_T myState;/ * * / < S1 > /集成商
该文件rtwdemo_roll.h
声明的变量。要访问这些变量,外部代码可以包括(# include
这个头文件)。
在rtwdemo_roll.c
、搜索变量的名称的文件,如UpThr
。模型的算法rtwdemo_roll_step
函数变量的读和写。
内置存储类你可以选择
一个数据项的默认存储类设置汽车
,这意味着代码生成器决定了项目代码中出现。内置存储类的列表,你可以选择,明白了选择存储类数据表示控制生成的代码。
决定在哪里存储存储类规范
为每个数据项(包括信号或状态数据存储内存块),您可以直接使用存储类,仿真软件金宝app®存储你的存储类规范模型文件或在一个信号数据对象的属性(金宝appSimulink.Signal
),基本工作空间中创建一个模型工作区,或数据字典。申请一块参数的存储类,您必须创建一个数据对象(如参数金宝appSimulink.Parameter
)和指定的存储类对象。
当你申请一个存储类信号或状态的模型,例如,通过使用模型数据编辑器或属性检查器,存储在模型文件存储类规范。
如果你使用这种技术,你无法控制数据项的其他特征,如数据类型,通过使用一个外部信号数据对象。
当您创建一个信号或参数数据对象,应用使用的存储类
CoderInfo
对象的属性。属性的值金宝appSimulink.CoderInfo
的对象,StorageClass
属性用来指定存储类。之后将模型中的数据项与对象,获得的数据项存储类的对象。
信号、状态数据存储内存块,决定是否将存储类规范存储在模型或数据对象,明白了商店设计信号的属性和状态(金宝app模型)。
存储类适用于外港块使用模型数据编辑器
您可以使用模型数据编辑器应用存储类直接root外港块或驱动器的输入信号。
存储的存储类规范外港块,用港口/外港在模型数据编辑器选项卡。当你使用这种技术,规范仍然在你删除驱动块的输入信号。使用这种技术来配置模型接口之前开发的内部算法。
存储规范的输入信号驱动,使用信号在模型数据编辑器选项卡。
技术应用存储类交互
存储类应用于多个数据项列表中,您可以搜索、排序和过滤,使用模型(在数据编辑器建模选项卡上,单击模型数据编辑器)所示应用存储类数据项。
应用存储类,而专注于单一信号,阻塞状态,或参数,使用属性检查器(建模选项卡,在设计,点击属性检查器属性对话框),信号(信号),或阻止对话框(一个状态或参数)。下代码生成应用存储类。
一个参数,第一个参数的值设置为您想要使用的名称所需的参数对象。然后,创建和配置所示的参数对象在生成的代码创建可调校准参数。
为一个信号、状态或数据存储内存块,第一个为信号或状态指定一个名称,代码生成器使用的名称对应的全局符号。然后,可以指定一个存储类使用存储类(在这种情况下,模型文件存储规范)或者创建一个信号数据对象所示使用数据模型中的对象模型金宝app(金宝app模型)和应用对象的存储类。
技术应用存储类以编程方式
一块参数,使用
set_param
设置参数的值。使用其他命令来创建和配置所需的参数对象的属性。例如,看到的在生成的代码创建可调校准参数。对于一个信号,使用
get_param
或find_system
返回一个句柄块港口产生的信号。使用的参数处理信号的名字,然后直接应用存储类(见存储类直接应用于信号线)或配置信号获取设置,包括存储类,从信号对象(见使用数据模型中的对象模型金宝app(金宝app模型))。对于一个轮廓尺寸块,配置信号线出口。对于一个外港块,配置块或进入块的信号线。例如,看到的设计数据接口通过配置尺寸和外港块。
一块状态,使用
set_param
与块进行交互。名称,然后直接应用存储类(见应用存储类直接屏蔽状态)或配置状态获取信号的存储类对象(见使用数据模型中的对象模型金宝app(金宝app模型))。对于一个数据存储内存块,用
set_param
与块进行交互。因为数据存储已经有了一个名字,您不需要指定一个名称。应用存储类直接使用StateStorageClass
参数或配置数据存储从信号获取存储类对象。
与一个信号或参数数据对象存储在模型中工作区或数据字典,使用编程接口的工作区或字典。看到以编程方式与变量(金宝app模型)。
存储类直接应用于信号线
这个例子展示了如何以编程方式存储类直接应用到一个信号。
打开示例模型
rtwdemo_secondOrderSystem
。rtwdemo_secondOrderSystem
得到一个句柄的输出块命名的力量:f (t)。
portHandles =…get_param (“rtwdemo_secondOrderSystem /力:f (t)”,“PortHandles”);outportHandle = portHandles.Outport;
组的名称对应的信号
ForceSignal
。set_param (outportHandle“名字”,“ForceSignal”)
设置信号的存储类
ExportedGlobal
。set_param (outportHandle“StorageClass”,“ExportedGlobal”)
从模型中生成代码。代码声明和定义一个全局变量
ForceSignal
来表示信号。
应用存储类直接屏蔽状态
这个例子展示了如何以编程方式存储类应用到一块的状态。
打开示例模型
rtwdemo_basicsc
。rtwdemo_basicsc
名字的状态延迟块,
myState
。set_param (rtwdemo_basicsc /延迟的,“StateName”,“myState”)
设置存储类的状态
ExportedGlobal
。set_param (rtwdemo_basicsc /延迟的,…“StateStorageClass”,“ExportedGlobal”)
从模型中生成代码。代码声明和定义一个全局变量
myState
代表国家。
参数对象配置快速参考图
这个图表显示了代码生成和存储类选项中的控制参数表示的对象生成的代码。