ASAM MCD-2 MC标准,也称为ASAP2,是由自动化和测量系统标准化协会(ASAM)提出的数据定义标准。ASAP2是非面向对象的数据描述,用于测量、校准和诊断系统。有关ASAM和ASAM MCD-2 MC (ASAP2)标准的更多信息,请参见ASAM网站https://www.asam.net
。
代码生成器允许您在代码生成过程中导出包含关于您的模型的信息的ASAP2文件。
你可以运行一个交互式的例如ASAP2文件生成的。要打开在MATLAB的例子®命令提示,输入以下命令:
rtwdemo_asap2
万博1manbetx®编码器™万博1manbetx为ASAP2文件生成的支持版本无关。默认情况下,该软件生成ASAP2 1.31版格式,但生成的模型信息一般是与其他ASAP2版本兼容。ASAP2文件生成也是中性相对于ASAP2测量和标定工具的特定需求。该软件提供定制的API,你可以使用自定义ASAP2文件生成生成ASAP2版本,以满足您的ASAP2工具的特定需求。
要使用ASAP2文件生成,您应该熟悉以下主题:
ASAM和ASAP2标准和术语。参见ASAM网站https://www.asam.net
。
万博1manbetxSimulink的数据对象。数据对象用于不包含在模型中的供应信息。有关概述,请参阅数据对象(万博1manbetx模型)。
存储和信号表示和在生成的代码参数。看到为原型设计和调试数据访问。
如果你是嵌入式编码器的许可®,请参阅嵌入式编码器主题数据表示和存取(嵌入式编码)。
您可以使用ASAP2文件生成改变系统目标文件配置。例如,
通用实时目标
(grt.tlc
)允许您生成ASAP2文件,作为代码生成和构建过程的一部分。
嵌入式编码器
(ert.tlc
系统目标文件的选择还允许您生成ASAP2文件,作为代码生成和构建过程的一部分。
ASAM-ASAP2数据定义目标
(asap2.tlc
)使您只生成ASAP2文件,而不构建可执行程序。
中给出了使用这些目标配置生成ASAP2文件的过程产生ASAP2文件。
ASAP2文件生成过程需要模型中有关参数和信号的信息。其中一些信息包含在模型本身中。您必须通过在工作区或数据字典中使用Simulink数据对象来提供其余万博1manbetx部分。在某些情况下,工作区对象的使用是可选的。
使用模型数据编辑器和内置的Simulink数据对象来提供信息。万博1manbetx例如,您可以使用万博1manbetxSimulink.Signal
对象提供测量信息和万博1manbetxSimulink.Parameter
对象提供特征信息。此外,还可以使用派生的数据类中的数据对象万博1manbetxSimulink.Signal
和万博1manbetxSimulink.Parameter
提供的信息。有关数据对象的信息,请参阅数据对象(万博1manbetx模型)。有关模型数据编辑器的信息,请参阅使用模型数据编辑器配置数据属性(万博1manbetx模型)。
下表包含ASAP2文件生成所需的最小数据属性集。模型中定义了一些数据属性;其他元素在对象的属性中提供。中定义的属性万博1manbetxSimulink.Signal
要么万博1manbetxSimulink.Parameter
对象,下表给出了相关的属性名称。
数据属性 |
中定义的 |
物业名称 |
---|---|---|
名称(符号) |
模型和数据对象 |
从参数名或信号名解析到的数据对象句柄继承 |
描述 |
数据对象 |
|
数据类型 |
模型或数据对象 |
|
缩放 |
模型或数据对象 |
数据类型 |
最低允许值 |
模型或数据对象 |
|
最大允许值 |
模型或数据对象 |
|
单位 |
模型或数据对象 |
|
存储器地址(可选) |
模型或数据对象 |
|
如果在代码生成之前内存地址属性是未知的,则代码生成器插入ECU地址
在生成ASAP2文件占位符的文本。您可以通过后处理生成的文件占位符代替实际地址。查看文件
的一个例子。matlabroot
/工具箱/ RTW /目标/ ASAP2 / ASAP2 /asap2post.masap2post.m
通过链接器映射文件,您提供并替换解析ECU地址
带有实际内存地址的ASAP2文件中的占位符。由于链接器映射文件因编译器的不同而不同,因此可能需要修改中的正则表达式代码asap2post.m
配合使用连接器图的格式。
如果嵌入式编码许可并安装在系统上,并且如果要生成可执行和链接格式(ELF)或程序数据库(PDB)文件为您的嵌入式目标,你可以使用rtw.asap2SetAddress
功能自动更换ECU地址。有关更多信息,请参见全自动ECU地址替换为ASAP2文件(嵌入式编码)。
如果内存地址属性在代码生成之前是已知的,则可以在数据项或数据对象中定义它。默认情况下,MemoryAddress_ASAP2
属性不存在的万博1manbetxSimulink.Signal
要么万博1manbetxSimulink.Parameter
数据对象类。如果您要添加的属性,添加一个名为属性MemoryAddress_ASAP2
一个自定义的类,它是的一个子类万博1manbetx
要么ASAP2
类。有关对Simulink数据类子类化的信息,请参见万博1manbetx定义数据类(万博1manbetx模型)。
下表显示了替换了之前版本ASAP2对象属性的Simulink对象属性万博1manbetx:
ASAP2和差异万博1manbetx参数和信号对象属性
ASAP2对象的属性(上) |
万博1manbetxSimulink的对象属性(当前) |
---|---|
LONGID_ASAP2 |
描述 |
PhysicalMin_ASAP2 |
敏 |
PhysicalMax_ASAP2 |
马克斯 |
Units_ASAP2 |
单位 |
如果嵌入式编码许可并安装在系统上,并且如果要生成可执行和链接格式(ELF)或程序数据库(PDB)文件为您的嵌入式目标,你可以使用rtw.asap2SetAddress
功能自动替换ECU地址
占位符的内存地址值与生成的ASAP2文件实际地址。
如果在代码生成之前内存地址属性是未知的,则代码生成器插入ECU地址
生成的ASAP2文件中的占位符文本,如下面的示例所示。
/开始特性/ *名字* /文/ *长*标识符/ “”/ *类型* /价值/ * ECU地址* /为0x0000/ * @ECU_Address@Ki@ * /
为了代替实际地址ECU地址
中的占位符处理生成的ASAP2文件rtw.asap2SetAddress
功能。一般的语法如下:
rtw.asap2SetAddress (ASAP2File,InfoFile)
参数是字符向量,指定生成的ASAP2文件的名称和生成的可执行ELF文件、来自Microsoft工具链的PDB文件或模型的DWARF调试信息文件的名称。当它被调用时,rtw.asap2SetAddress
从指定的ELF、PDB或DWARF文件中提取实际的ECU地址,并用实际地址替换ASAP2文件中的占位符,例如:
/开始特性/ *名字* /文/ *长*标识符/ “”/ *类型* /价值/ * ECU地址* /0x40009E60
万博1manbetxSimulink的编码器软件生成的查找表的数据和断点ASAP2描述。该软件表示1-d表的数据作为曲线
信息,2- d表的数据作为地图
信息,断点作为AXIS_DESCR
和AXIS_PTS
信息。您可以使用下面的Simulink的查找表块的一个模型查找表:万博1manbetx
直接查找表(n-D) - 1维和2维
插值使用预查找- 1维和2维
一维查找表
二维查找表
n-D查找表- 1维和2维
该软件支持以下类型的查找表万博1manbetx断点(轴点):
断点的类型 | 生成 |
---|---|
可调和多个表轴之间共享(共同的轴线) |
|
固定和不可调(固定轴) | 的其中一个变种
|
可调的,但不能在多个表之间共享(标准轴) |
|
当您配置ASAP2代码生成块:
对于表数据,使用万博1manbetxSimulink.Parameter
与非数据对象汽车
存储类。
对于在多个表轴之间共享的可调断点数据(COM_AXIS
),用万博1manbetxSimulink.Parameter
与非数据对象汽车
存储类。
对于固定的、不可调优的断点数据(FIX_AXIS
),使用的工作区的变量或在块参数对话框中指定阵列。断点应存储在代码整数,所以数据类型应该是一个内置的整数类型(INT8
,INT16
,INT32
,UINT8
,UINT16
, 要么UINT32
)、定点数据类型或等效别名类型。
对于没有多个表(STD_AXIS)之间共享的可调谐断点数据:
创建一个万博1manbetxSimulink.Bus
对象来定义结构体
打包(字段的名称和顺序)。参数结构的字段必须对应于查找表数据和查找表块的每个轴。例如,在正d查找表块具有2维,结构必须只包含3个字段。此总线对象描述查找特征的记录布局。
创建一个万博1manbetxSimulink.Parameter
对象来表示一个可调参数。
创建表和轴值。
可以选择指定单位,最低,最大值用于该参数的对象属性。的属性将被应用到仅表数据。
这里有一个例子正d查找表以标准Axis格式生成ASAP2文件的记录:
/开始特性/ *姓名* /STDAxisParam... / *记录格式* /Lookup1D_X_WORD_Y_FLOAT32_IEEE…开始AXIS_DESCR /* x轴点描述*// *轴类型* / STD_AXIS…/end AXIS_DESCR /end CHARACTERISTIC /begin RECORD_LAYOUT Lookup1D_X_WORD_Y_FLOAT32_IEEE AXIS_PTS_X 1 WORD INDEX_INCR DIRECT FNC_VALUES 2 FLOAT32_IEEE COLUMN_DIR DIRECT /end RECORD_LAYOUT
这个例子模型rtwdemo_asap2
示出了用于查找表的块,包括可调谐(COM_AXIS)和固定(FIX_AXIS)查找表断点ASAP2文件的生成。
您可以通过下列方式之一从您的模型生成ASAP2文件:
使用通用的实时目标或嵌入式编码目标生成ASAP2文件的代码生成和构建过程的一部分。
使用ASAM-ASAP2数据定义目标只生成ASAP2文件,而不构建可执行文件。
本节讨论如何通过使用已经内置支持ASAP2目标生成ASAP2文件。万博1manbetx举一个例子,看到ASAP2示例模型rtwdemo_asap2
。
使用通用实时目标或嵌入式编码器系统目标文件为模型生成ASAP2数据定义的过程如下:
如中所述,使用模型数据编辑器将存储类应用于信号、块状态和块参数将存储类应用于单个信号、状态和参数数据元素。用信号和状态名称表示对应的测量记录,用参数对象名称表示特征记录。
使用不同的存储类汽车
,FileScope
或者,如果设置默认存储类对应的数据类型来默认的
在代码映射编辑器(默认设置)中,默认模式
。例如,使用ExportedGlobal
在生成的代码中将数据项配置为非结构化全局变量。
参数未在ASAP2文件表示如果一个或多个的存在以下条件:
应用存储类汽车
,FileScope
, 要么默认的
(通过默认模式
)。
您应用导致代码生成器产生宏或非寻址变量的存储类。
使用模型数据编辑器根据需要配置每个数据项的其余属性。
在代码生成窗格中,单击浏览打开系统目标文件浏览器。在浏览器中,选择grt.tlc
或基于ERT的目标文件,并点击好。
选择型号配置参数ASAP2接口。
选择参数只生成代码。
请点击应用。
生成代码。
代码生成器将ASAP2文件写入构建文件夹。默认情况下,文件被命名
,其中模型
.a2l
是模型的名称。ASAP2设置文件控制ASAP2文件名。有关详细信息,请参见自定义生成ASAP2文件。模型
使用ASAM-ASAP2数据定义目标是如下生成ASAP2数据定义为模型的步骤:
如中所述,使用模型数据编辑器将存储类应用于信号、块状态和块参数将存储类应用于单个信号、状态和参数数据元素。用信号和状态名称表示对应的测量记录,用参数对象名称表示特征记录。
使用其他存储类或自定义存储类汽车
,FileScope
或者,如果设置默认存储类对应的数据类型来默认的
在代码映射编辑器(默认设置),默认模式
。例如,使用ExportedGlobal
在生成的代码中将数据项配置为非结构化全局变量。
该数据项未在ASAP2文件表示如果一个或多个的存在以下条件:
您应用的存储类之一汽车
,FileScope
, 要么默认的
(通过默认模式
)。
应用自定义存储类,使代码生成器生成宏或不可寻址变量。
使用模型数据编辑器根据需要配置每个数据项的其余属性。
在代码生成窗格中,单击浏览打开系统目标文件浏览器。在浏览器中,选择asap2.tlc
并点击好。
选择型号配置参数只生成代码。
请点击应用。
生成代码。
代码生成器将ASAP2文件写入构建文件夹。默认情况下,文件被命名
,其中模型
.a2l
是模型的名称。ASAP2设置文件控制ASAP2文件名。有关详细信息,请参见自定义生成ASAP2文件。模型
构建过程可以生成用于在模型参考层级中的每个参考模型的ASAP2文件。在所生成的文件ASAP2,测量记录表示所引用的模型内部信号和状态。
要生成ASAP2文件参考模型,选择顶级车型,并在参考各层次参考模型ASAP2文件生成。例如,如果您使用的是通用的实时目标或嵌入式编码的目标,遵循中描述的步骤使用GRT或ERT系统目标文件用于顶部模型和每个引用的模型。
使用功能rtw.asap2MergeMdlRefs
合并为顶部模型和引用模型生成的ASAP2文件。该函数有以下语法:
(地位、信息)= rtw.asap2MergeMdlRefs (topModelName,asap2FileName)
topModelName
是包含一个或多个参考模型的模型的名称。
asap2FileName
是您指定合并ASAP2文件的名称。
可选::状态
如果合并完成,返回false(逻辑0),否则返回true(逻辑1)。
可选::信息
返回关于合并失败的附加信息状态
是真的。否则,它返回一个空字符向量。
请看下面的例子。
(地位、信息)= rtw.asap2MergeMdlRefs(“myTopMdl”、“merged.a2l”)
myTopMdl
及其在文件中引用的模型merged.a2l
。
这个例子模型rtwdemo_asap2
包括一个合并ASAP2文件的示例。
下表概述了ASAP2文件的基本结构并描述了用于创建文件的每个部分的目标语言编译器(TLC)功能和文件:
中显示了ASAP2文件的静态部分胆大。
函数调用由指示() % < FunctionName >
。
文件第 |
asap2main.tlc内容 |
包含函数定义的TLC文件 |
---|---|---|
文件头 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
依赖于模式的 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
文件脚注/尾 |
|
|
该模型显示ASAP2数据导出。ASAP2是由协会自动化及测量系统标准(ASAM)提出了一个数据定义标准。
开放范例模型
打开示例模型rtwdemo_asap2
。
open_system(“rtwdemo_asap2”);
ASAP2是用于测量,校准数据,和诊断系统的非面向对象的描述。有关ASAM和ASAP2标准的详细信息,请参见ASAM网站:https://www.asam.net。
ASAP2数据定义是通过Simulink®数据对象和测试点信号实现的。万博1manbetx使用目标语言编译器(TLC),您可以为您的应用程序创建高度定制的解决方案。万博 尤文图斯有关ASAP2文万博1manbetx件生成的详细信息,请参阅Simulink Coder®文档。
您可以通过选择来配置ASAP2文件生成ASAP2接口在代码生成>接口“配置参数”对话框的窗格。