主要内容

读取数据从MDF-Files应用转换规则

这个例子向您展示了如何读取通道数据应用转换规则从一个MDF-file在MATLAB和配置不同的阅读选项。

介绍ASAM MDF转换规则

根据ASAM MDF标准,MDF通道的数据值编码表示为原始值。它可以被转换成一个物理,工程单位使用转换规则,描述了数据的价值。在渠道级别转换规则定义的方法将原始值转换成物理值。

ASAM MDF V4.2.0支金宝app持以下转换规则:

没有转换

  • CC_Type 0:身份(1:1)转换

数字,数字转换

  • CC_Type 1:线性转换

  • CC_Type 2:理性的转换公式

  • CC_Type 3:代数转换

  • CC_Type 4:价值值查表和插值

  • CC_Type 5:价值值查表插值

  • CC_Type 6:值范围值表格查找

数字文本的转换

  • CC_Type 7: text /价值尺度转换表格查找

  • CC_Type 8:文本/尺度转换表格查找值范围

文本数字转换

  • CC_Type 9:表格查找文本值

文本,文本转换

  • CC_Type 10:文本,文本表格查找

其他的转换

  • CC_Type 11:设置文本表

车辆网络工具箱™提供的功能从MDF-file读取所需的数据不同转换选项。允许的选项是:

  • 数字——仅适用于数字数字转换(CC_Type 1 - 6)。数据与其他转换规则解读为原始值。

  • 没有一个——不适用任何转换。读取所有数据作为原始值。

  • 所有——应用所有数字和文本转换(CC_Type 1 - 10)。读取所有数据作为物理值。

注意,如果有一个身份转换(CC_Type 0),或没有转换(转换规则)的通道,数据读取无论作为原始值转换选项指定。

打开MDF-File

开放一个MDF-file使用mdf函数。的对象mdfObj有财产转换的默认值数字

mdfObj = mdf (“MDF_Conversion_Example.mf4”)
mdfObj = MDF的属性:文件名称:细节MDF_Conversion_Example。mf4的路径:/ tmp / Bdoc21b_1757077_201157 / tpc1faaadf vnt-ex96016136 / MDF_Conversion_Example。mf4”作者:部门:“项目:“主题:”评论:“版本:185年“4.10”DataSize: InitialTimestamp: 1980-01-01 05:00:00.000000000创造者细节ProgramIdentifier:“amdf5206”创造者:[1 x1 struct]文件内容附件:[0 x1 struct] ChannelNames: {{6 x1电池}}ChannelGroup: [1 x1 struct]选择转换:数字

使用channelList函数来查看可用的频道列表mdfObj

channelList (mdfObj)
ans =6×9表ChannelName ChannelGroupNumber ChannelGroupNumSamples ChannelGroupAcquisitionName ChannelGroupComment ChannelDisplayName ChannelUnit ChannelComment ChannelDescription ______________________________ _____________ ______________________ ___________________________ ___________________ _____________ _____________……* * *“环境温度”1 5信号转换<定义>”“°F <定义>”“”引擎温度”1 5信号转换<定义>”“°C <定义>”“错误代码“1 5信号转换<定义> " <定义> <定义>”““齿轮位置”1 5信号转换<定义> " <定义> <定义>”“时间”1 5信号转换<定义>”“s <定义>”““雨刷速度水平”1 5信号转换<定义> " <定义> <定义> "

转换财产和转换名称-值对

你可以选择一个转换选择适用于读取数据时从一个MDF-file MATLAB。您指定的选项下面的方式:

  • 设置转换MDF对象的属性和调用函数。

  • 指定一个转换当调用名称-值对函数。

查看详细信息通道发动机温度在通道组1。输出显示线性转换(CC_Type 1)。

.Channel mdfObj.ChannelGroup (1) (2)
ans =结构体字段:名称:“发动机温度”DisplayName:“ExtendedNamePrefix:“描述:“评论:“单位:°C的类型:FixedLength数据类型:IntegerSignedLittleEndian NumBits: 32组件类型:没有CompositionType:没有ConversionType:线性的

你可以设置转换财产的mdfObj数字并从通道读取数据发动机温度在通道组1。

mdfObj.Conversion=“数字”
mdfObj = MDF的属性:文件名称:细节MDF_Conversion_Example。mf4的路径:/ tmp / Bdoc21b_1757077_201157 / tpc1faaadf vnt-ex96016136 / MDF_Conversion_Example。mf4”作者:部门:“项目:“主题:”评论:“版本:185年“4.10”DataSize: InitialTimestamp: 1980-01-01 05:00:00.000000000创造者细节ProgramIdentifier:“amdf5206”创造者:[1 x1 struct]文件内容附件:[0 x1 struct] ChannelNames: {{6 x1电池}}ChannelGroup: [1 x1 struct]选择转换:数字
dataPropNum =阅读(mdfObj 1“发动机温度”)
dataPropNum =5×1的时间表时间EngineTemperature ________ _________________ 0秒35 0.25秒35.556 0.5秒36.111 0.75秒36.667 37.222 1秒

你也可以读取数据名称-值对转换,没有一个。请注意,转换名称-值对,比拥有更高的优先级转换属性,这意味着当值是不同的应用名称-值对。

dataNameValueNone =阅读(mdfObj 1“发动机温度”,“转换”,“没有”)
dataNameValueNone =5×1的时间表时间EngineTemperature ________ _________________ 0秒0.75 95 0.25秒96 0.5秒97秒98 1秒99

使用转换不改变名称-值对转换的属性mdfObj。的转换属性值的mdfObj在阅读数据与一个名称-值对数字

mdfObj.Conversion
ans =枚举转换数字

读取数据不同转换选择数字数字转换

下面的代码展示了如何从一个通道读取所需的数据与一个数字数字转换。英吉利海峡发动机温度线性转换(CC_Type 1),选择代表数字的阅读行为数值转换(CC_Type 1 - 6)。

读取数据的名称-值对转换,数字。在这种情况下,线性当读取数据,因为转换应用数字选择支持数字数金宝app字转换。物理数据和物理数值数据返回的数据类型

dataLinearNum =阅读(mdfObj 1“发动机温度”,“转换”,“数字”)
dataLinearNum =5×1的时间表时间EngineTemperature ________ _________________ 0秒35 0.25秒35.556 0.5秒36.111 0.75秒36.667 37.222 1秒
类(dataLinearNum.EngineTemperature)
ans =“双”

读取数据的名称-值对转换,没有一个。在这种情况下,线性转换不是因为读取数据时应用没有一个选择不适用任何转换。返回原始数据与原数据类型,这是一个int32

dataLinearNone =阅读(mdfObj 1“发动机温度”,“转换”,“没有”)
dataLinearNone =5×1的时间表时间EngineTemperature ________ _________________ 0秒0.75 95 0.25秒96 0.5秒97秒98 1秒99
类(dataLinearNone.EngineTemperature)
ans = ' int32 '

读取数据的名称-值对转换,所有。在这种情况下,线性当读取数据,因为转换应用所有选择支持所有数金宝app字和文本转换。物理数据和物理数值数据返回的数据类型

dataLinearAll =阅读(mdfObj 1“发动机温度”,“转换”,“所有”)
dataLinearAll =5×1的时间表时间EngineTemperature ________ _________________ 0秒35 0.25秒35.556 0.5秒36.111 0.75秒36.667 37.222 1秒
类(dataLinearAll.EngineTemperature)
ans =“双”

读取数据不同转换选择文本转换数字

下面的代码展示了如何从一个通道读取所需的数据和数字文本转换。英吉利海峡齿轮的位置ValueToText转换(CC_Type 7),这是选择代表数字文本的阅读行为转换(CC_Type 7 - 8)。

查看详细信息通道齿轮的位置在通道组1。输出显示ValueToText转换。

mdfObj.ChannelGroup (1) .Channel (3)
ans =结构体字段:名称:“齿轮位置”DisplayName:“ExtendedNamePrefix:“描述:单位:“备注:类型:FixedLength数据类型:IntegerUnsignedLittleEndian NumBits: 8组件类型:没有CompositionType:没有ConversionType: ValueToText

读取数据的名称-值对转换,数字。在这种情况下,ValueToText转换不是因为读取数据时应用数字选择只支持数字金宝app数字转换。返回原始数据与原数据类型,这是一个int8

dataV2TNum =阅读(mdfObj 1“齿轮位置”,“转换”,“数字”)
dataV2TNum =5×1的时间表时间GearPosition ________ _______ 0秒2 0.25秒3 0.5秒0 0.75秒2 1秒1
类(dataV2TNum.GearPosition)
ans = ' uint8 '

读取数据的名称-值对转换,没有一个。在这种情况下,ValueToText转换不是因为读取数据时应用没有一个选择不适用任何转换。返回原始数据与原数据类型,这是一个int8

dataV2TNone =阅读(mdfObj 1“齿轮位置”,“转换”,“没有”)
dataV2TNone =5×1的时间表时间GearPosition ________ _______ 0秒2 0.25秒3 0.5秒0 0.75秒2 1秒1
类(dataV2TNone.GearPosition)
ans = ' uint8 '

读取数据的名称-值对转换,所有。在这种情况下,ValueToText当读取数据,因为转换应用所有选择支持所有数金宝app字和文本转换。物理数据和物理文本数据返回的数据类型字符

dataV2TAll =阅读(mdfObj 1“齿轮位置”,“转换”,“所有”)
dataV2TAll =5×1的时间表时间GearPosition ________ ___________________ 0秒{的齿轮位置2}0.25秒{'齿轮位置3 '}0.5秒{'无效'}0.75秒{的齿轮位置2}1秒{的齿轮位置1}
类(dataV2TAll.GearPosition {1})
ans = '字符'

其他转换的例子

还有一些其他的渠道mdfObj。渠道环境温度,雨刷速度级别,故障代码有转换没有一个,TextToValue,TextToText,分别。你可以试着读这些渠道不同转换选项。

查看详细信息通道环境温度在通道组1。输出显示没有一个转换。

.Channel mdfObj.ChannelGroup (1) (1)
ans =结构体字段:名称:“环境温度”DisplayName:“ExtendedNamePrefix:“描述:“评论:“单位:°F的类型:FixedLength数据类型:RealLittleEndian NumBits: 64组件类型:没有CompositionType:没有ConversionType:没有

查看详细信息通道雨刷速度级别在通道组1。输出显示TextToValue转换。

mdfObj.ChannelGroup (1) .Channel (4)
ans =结构体字段:名称:雨刷速度水平的DisplayName:“ExtendedNamePrefix:“描述:单位:“备注:类型:VariableLength数据类型:StringUTF8 NumBits: 64组件类型:没有CompositionType:没有ConversionType: TextToValue

查看详细信息通道故障代码在通道组1。输出显示TextToText转换。

mdfObj.ChannelGroup (1) .Channel (5)
ans =结构体字段:名称:故障代码的DisplayName:“ExtendedNamePrefix:“描述:单位:“备注:类型:VariableLength数据类型:StringUTF8 NumBits: 64组件类型:没有CompositionType:没有ConversionType: TextToText

关闭文件

关闭访问MDF-file清算工作空间的变量。

清晰的mdfObj