主要内容

可以在MDF-Files数据解码和写作

这个例子向您展示了如何导入和解码数据可以从一个在MATLAB®MDF-file分析,和写回同一个文件的解码数据。

这个示例中使用的MDF-file从矢量生成独木舟™使用“可以,一般的系统配置(可以)”样本。这个示例还使用了数据库文件,PowerTrain.dbc,提供的向量示例配置。

视图MDF-File的细节

视图MDF-file使用的元数据mdfInfo函数。

mdfInfo (“Logging_MDF.mf4”)
ans = MDFInfo属性:文件细节名称:“Logging_MDF。mf4”路径:“/ tmp / Bdoc23a_2213998_1547508 / tpbdc9ff2c vnt-ex42187575 / Logging_MDF。mf4”作者:”“部门:“”项目:“”主题:“”评论:““版本:“4.10”InitialTimestamp: 2020-06-25 20:41:13.133000000创造者ProgramIdentifier细节:“MDF4Lib”CreatorVendorName:“矢量Informatik GmbH“CreatorToolName:“独木舟”CreatorToolVersion:“13.0.118”CreatorUserName:“michellw”CreatorComment:“使用MdfLog创建版本1.5.4.0和MDF4Lib 1.7.0.5 X64 (2019-10-22)”File Contents Attachment: [5x7 table] ChannelGroupCount: 62

确定可以数据帧

根据ASAM MDF相关标准总线日志、事件类型为CAN总线系统可以定义“CAN_DataFrame”、“CAN_RemoteFrame”、“CAN_ErrorFrame”或“CAN_OverloadFrame”。这个例子着重于提取数据帧,所以公车日志标准将讨论使用“CAN_DataFrame”事件类型为例。另外,请注意,一个标准的数据帧可以有8个字节的有效载荷和用于传输信号值。

标准的指定事件结构的通道名称应由事件类型前缀的名称,例如,“CAN_DataFrame”。通常一个点作为分隔符来指定渠道成员,例如,“CAN_DataFrame。ID”或“CAN_DataFrame.DataLength”。

使用mdfChannelInfo功能定位通道名称匹配的“CAN_DataFrame。*”。返回一个表与匹配的信息渠道。

mdfChannelInfo (“Logging_MDF.mf4”频道=“CAN_DataFrame *”。)
ans =24×13表单位名称GroupNumber GroupNumSamples GroupAcquisitionName GroupComment GroupSourceName GroupSourcePath DisplayName评论ExtendedNamePrefix SourceName路径_____________________________ ___________售予____________________ _______售予售予售予___________ __________________________________________________________ _____________ CAN_DataFrame ___________ __________”。BitCount“17 8889 CAN1 <定义> <定义> CAN_DataFrame”BitCount”<定义>在比特帧长度。CAN1 <定义> CAN_DataFrame CAN1”。BitCount”29日7648 CAN2 <定义> <定义> CAN_DataFrame”BitCount”<定义>在比特帧长度。CAN2 <定义> CAN_DataFrame CAN2”。BusChannel“17 8889 CAN1 <定义> <定义> CAN_DataFrame”BusChannel”<定义>逻辑总线通道号帧被发送或接收。CAN1 <定义> CAN_DataFrame CAN1”。BusChannel”29日7648 CAN2 <定义> <定义> CAN_DataFrame”BusChannel”<定义>逻辑总线通道号帧被发送或接收。CAN2 <定义> CAN_DataFrame CAN2”。DLC“17 8889 CAN1 <定义> <定义> CAN_DataFrame”DLC“<定义>数据长度的代码。CAN1 <定义> CAN_DataFrame CAN1”。DLC" 29 7648 CAN2   CAN_DataFrame "DLC"  Data length code. CAN2  CAN2 "CAN_DataFrame.DataBytes" 17 8889 CAN1   CAN_DataFrame "DataBytes"  Payload data bytes containing the signal values. CAN1  CAN1 "CAN_DataFrame.DataBytes" 29 7648 CAN2   CAN_DataFrame "DataBytes"  Payload data bytes containing the signal values. CAN2  CAN2 "CAN_DataFrame.DataLength" 17 8889 CAN1   CAN_DataFrame "DataLength"  Length of stored payload in bytes. CAN1  CAN1 "CAN_DataFrame.DataLength" 29 7648 CAN2   CAN_DataFrame "DataLength"  Length of stored payload in bytes. CAN2  CAN2 "CAN_DataFrame.Dir" 17 8889 CAN1   CAN_DataFrame "Dir"  Bit signal indicating the direction (Rx, Tx). CAN1  CAN1 "CAN_DataFrame.Dir" 29 7648 CAN2   CAN_DataFrame "Dir"  Bit signal indicating the direction (Rx, Tx). CAN2  CAN2 "CAN_DataFrame.Flags" 17 8889 CAN1   CAN_DataFrame "Flags"  Combination of bit flags for the message. CAN1  CAN1 "CAN_DataFrame.Flags" 29 7648 CAN2   CAN_DataFrame "Flags"  Combination of bit flags for the message. CAN2  CAN2 "CAN_DataFrame.FrameDuration" 17 8889 CAN1   CAN_DataFrame "FrameDuration" ns Duration for transmission of the frame in nanoseconds. CAN1  CAN1 "CAN_DataFrame.FrameDuration" 29 7648 CAN2   CAN_DataFrame "FrameDuration" ns Duration for transmission of the frame in nanoseconds. CAN2  CAN2 ⋮

的动力系统数据感兴趣的记录可以2网络。上面的输出显示,可以2网络的数据被存储在通道组MDF-file 29。查看详细信息通道组29使用mdfChannelGroupInfo通过指定函数GroupNumber选择。

mdfChannelGroupInfo (“Logging_MDF.mf4”GroupNumber = 29)
ans =表1×13GroupNumber AcquisitionName评论NumSamples DataSize排序SourceName路径SourceComment SourceType SourceBusType SourceBusChannelNumber SourceSimulated ___________售予___________ __________ ________ ________ ___________ _________________ _________________ __________ _________________ ______________________售予29 CAN2 <定义> 7648 206496真正的<定义> CAN_DataFrame <定义>总线可以2假

查看详细信息通道组中的所有渠道29使用mdfChannelInfo

mdfChannelInfo (“Logging_MDF.mf4”GroupNumber = 29)
ans =13×13表单位名称GroupNumber GroupNumSamples GroupAcquisitionName GroupComment GroupSourceName GroupSourcePath DisplayName评论ExtendedNamePrefix SourceName路径_____________________________ ___________售予____________________ _______售予售予售予___________ __________________________________________________________ _____________ ___________ CAN_DataFrame ___________”。BitCount”29日7648 CAN2 <定义> <定义> CAN_DataFrame”BitCount”<定义>在比特帧长度。CAN2 <定义> CAN_DataFrame CAN2”。BusChannel”29日7648 CAN2 <定义> <定义> CAN_DataFrame”BusChannel”<定义>逻辑总线通道号帧被发送或接收。CAN2 <定义> CAN_DataFrame CAN2”。DLC”29日7648 CAN2 <定义> <定义> CAN_DataFrame”DLC“<定义>数据长度的代码。CAN2 <定义> CAN_DataFrame CAN2”。DataBytes”29日7648 CAN2 <定义> <定义> CAN_DataFrame”DataBytes“<定义>有效数据字节包含信号值。CAN2 <定义> CAN_DataFrame CAN2”。DataLength”29日7648 CAN2 <定义> <定义> CAN_DataFrame”DataLength”<定义>存储负载的长度字节。CAN2 <定义> CAN_DataFrame CAN2”。Dir" 29 7648 CAN2   CAN_DataFrame "Dir"  Bit signal indicating the direction (Rx, Tx). CAN2  CAN2 "CAN_DataFrame.Flags" 29 7648 CAN2   CAN_DataFrame "Flags"  Combination of bit flags for the message. CAN2  CAN2 "CAN_DataFrame.FrameDuration" 29 7648 CAN2   CAN_DataFrame "FrameDuration" ns Duration for transmission of the frame in nanoseconds. CAN2  CAN2 "CAN_DataFrame.ID" 29 7648 CAN2   CAN_DataFrame "ID"  ID of the CAN message. CAN2  CAN2 "CAN_DataFrame.IDE" 29 7648 CAN2   CAN_DataFrame "IDE"  Identifier Extension bit. CAN2  CAN2 "CAN_DataFrame.SingleWire" 29 7648 CAN2   CAN_DataFrame "SingleWire"  Bit flag indicating a single wire operation. CAN2  CAN2 "CAN_DataFrame.WakeUp" 29 7648 CAN2   CAN_DataFrame "WakeUp"  Bit flag indicating a wake-up message (high voltage). CAN2  CAN2 "t" 29 7648 CAN2   CAN_DataFrame "" s  CAN2  

阅读可以从MDF-File数据帧

读取所有数据通道组29日时间表使用mdfRead函数。时间表的结构遵循ASAM MDF标准的日志格式。每一行代表一个原料可以从公共汽车坐标系,而每一列表示一个通道内指定的通道组。渠道,如“CAN_DataFrame。Dir”,命名遵循标准总线日志。

数据= mdfRead (“Logging_MDF.mf4”GroupNumber = 29)
data =1 x1单元阵列{7648}x12的时间表
数据canData = {1}
canData =7648×12时间表t CAN_DataFrame。BusChannel CAN_DataFrame。旗帜CAN_DataFrame。Dir CAN_DataFrame。SingleWire CAN_DataFrame。唤醒CAN_DataFrame。ID CAN_DataFrame。IDE CAN_DataFrame。FrameDuration CAN_DataFrame。BitCount CAN_DataFrame。DLC CAN_DataFrame。DataLength CAN_DataFrame。DataBytes __________ ________________________ ___________________ _________________ ________________________ ____________________ ___________ _________________ ___________________________ ______________________ _________________ ________________________ ______________________________ 2.2601秒2 1“Tx”0 0 0 128000 67 103 2{[1 0]} 2.2801秒2 1“Tx”0 0 0 128000 67 103 2 2{[1 0]} 2.3002秒2 1“Tx”0 0 0 232000 119 100 8 8{25[238 2 1 0 0 238 2]} 2.3005秒2 1“Tx”0 0 0 240000 123 102 8 8{[0 128 59 68 0 0 0 0]} 2.3006秒2 1“Tx”0 0 0 128000 67 103 2{[1 0]} 2.3008秒2 1“Tx”0 0 0 196000 101 201 6 6{[0 0 0 0 172 38]} 2.3009秒2 1“Tx”0 0 1020 0 110000 58 1 1{[1]} 2.3201秒2 1“Tx”0 0 0 128000 67 103 2 2{[1 0]} 2.3401秒2 1“Tx”0 0 0 128000 67 103 2 2{[1 0]} 2.3502秒2 1“Tx”0 0 0 234000 120 100 8 8{[4 0 25 2 119 238 2]} 2.3505秒2 1“Tx”0 0 0 228000 117 102 8 8{[53 127 119 64 0 128 187 67]} 2.3507秒2 1“Tx”0 0 0 198000 102 201 6 6{[0 0 0 0 35 40]} 2.3508秒2 1“Tx”0 0 1020 0 110000 58 1 1{[1]} 2.3601秒2 1“Tx”0 0 0 128000 67 103 2 2{[1 0]} 2.3801秒2 1“Tx”0 0 0 128000 67 103 2 2{[1 0]} 2.4002秒2 1“Tx”0 0 0 234000 120 100 8 8 {[10 0 25 3 119 1 238 2]}⋮

解码可以使用DBC-File消息

打开DBC-file使用canDatabase函数。

canDB = canDatabase (“PowerTrain_MDF.dbc”)
canDB =数据库与属性:名称:“PowerTrain_MDF”路径:/ tmp / Bdoc23a_2213998_1547508 / tpbdc9ff2c vnt-ex42187575 / PowerTrain_MDF。dbc的UTF8_File: / tmp / Bdoc23a_2213998_1547508 / tpbdc9ff2c vnt-ex42187575 / PowerTrain_MDF。dbc的节点:{2 x1细胞}NodeInfo: [2 x1 struct]消息:{12}x1细胞MessageInfo: [12 x1 struct]属性:{11 x1细胞}AttributeInfo: x1 struct[11]用户数据:[]

canMessageTimetable函数使用的数据库名称和信号解码消息。的时间表ASAM标准日志格式数据转换为汽车网络工具箱™可以消息时间表。

msgTimetable = canMessageTimetable (canData canDB)
msgTimetable =7648×8的时间表时间ID扩展名称数据长度误差信号远程__________ ____ ________ _____________ ______________________________ ______ _______专攻2.2601秒103假{‘Ignition_Info} {[1 0]} 2 {1 x1 struct}假假2.2801秒103假{‘Ignition_Info} {[1 0]} 2 {1 x1 struct}假假2.3002秒100假{‘EngineData} {[238 2 25 1 0 0 238 2]} {1 x1 struct} 8假假2.3005秒102假{‘EngineDataIEEE} {[0 128 59 68 0 0 0 0]} {1 x1 struct} 8假假2.3006秒103假{‘Ignition_Info} {[1 0]} 2 {1 x1 struct}假假2.3008秒201假{‘ABSdata} {[0 0 0 0 172 38]} 6 {1 x1 struct}假假2.3009秒1020假{‘GearBoxInfo} {[1]} 1 {1 x1 struct}假假2.3201秒103假{‘Ignition_Info} {[1 0]} 2 {1 x1 struct}假假2.3401秒103假{‘Ignition_Info} {[1 0]} 2 {1 x1 struct}假假2.3502秒100假{‘EngineData} {[4 0 25 2 119 238 2]} {1 x1 struct} 8假假2.3505秒102假{‘EngineDataIEEE} {[53 127 119 64 0 128 187 67]} {1 x1 struct} 8假假2.3507秒201假{‘ABSdata} {[0 0 0 0 35 40]} 6 {1 x1 struct}假假2.3508秒1020假{‘GearBoxInfo} {[1]} 1 {1 x1 struct}假假2.3601秒103假{‘Ignition_Info} {[1 0]} 2 {1 x1 struct}假假2.3801秒103假{‘Ignition_Info} {[1 0]} 2 {1 x1 struct}假假2.4002秒100假{‘EngineData} {[10 0 25 3 119 1 238 2]} {1 x1 struct} 8假假⋮

查看信号存储在“EngineData”消息。

msgTimetable.Signals {3}
ans =结构体字段:PetrolLevel: 1 EngPower: 7.5000 EngForce: 0空转:0 EngTemp: 0 EngSpeed: 750

重新包装和可视化感兴趣的信号值

使用canSignalTimetable函数来重新包装从每一个独特的信号数据总线上的消息到一个信号的时间表。这个示例创建三个个人信号时间表的三个感兴趣的消息,“ABSdata”、“EngineData”和“GearBoxInfo”,从可以消息时间表。

signalTimetable1 = canSignalTimetable (msgTimetable,“ABSdata”)
signalTimetable1 =1147×4时间表时间AccelerationForce诊断GearLock CarSpeed __________ _________________ ___________说2.3008秒-100 0 0 0 2.3507秒275 0 0 0 2.4008秒275 0 0 0 2.4507秒275 0 0 0 2.5008秒275 0 0 0 2.5507秒275 0 0 0 2.6008秒275 0 0 0 2.6507秒275 0 0 0 2.7008秒350 0 0 0 2.7507秒425 0 0 0.5 2.8008秒425 0 0 0.5 2.8507秒500 0 0 0.5 2.9008秒575 0 0 0.5 2.9507秒575 0 0 0.5 3.0008秒650 0 0 0.5 3.0507秒725 0 0 0.5⋮
signalTimetable2 = canSignalTimetable (msgTimetable,“EngineData”)
signalTimetable2 =1147×6时间表时间PetrolLevel EngPower EngForce空转EngTemp EngSpeed __________……说……_________ ________ 2.3002秒1 0 0 0 7.5 2.4002 7.5 750 2.3502秒2 375 0 0 4秒2.4502 7.5 375 0 0 10秒4 7.5 2.5002 375 0 0 17秒5 375 7.5 7.5 2.5502 375 0 0 23秒6 0 0 7.5 2.6002秒7 375 0 0 36 2.6502秒8 7.5 2.7002 375 0 0 43秒9 9 450 0 0 50 2.7502秒10 10.5 10.5 2.8002 525 0 0 59秒525 0 0 69 2.8502秒11 12 600 0 0 80 2.9002秒11 13.5 675 0 0 675 13.5 92 2.9502秒12 0 0 15 750 0 0 121 3.0502 106 3.0002秒13秒13 16.5 825 0 0 136⋮
signalTimetable3 = canSignalTimetable (msgTimetable,“GearBoxInfo”)
signalTimetable3 =1147×3的时间表__ 2.3009秒时间EcoMode ShiftRequest齿轮__________ _________ _______ 0 0 1 2.3508秒0 0 1 2.4009秒0 0 1 2.4508秒0 0 1 2.5009秒0 0 1 2.5508秒0 0 1 2.6009秒0 0 1 2.6508秒0 0 1 2.7009秒0 0 1 2.7508秒0 0 1 2.8009秒0 0 1 2.8508秒0 0 1 2.9009秒0 0 1 2.9508秒0 0 1 3.0009秒0 0 1 0 0 1⋮3.0508秒

可视化感兴趣的信号,从信号列时间表可以随着时间的推移策划进行进一步分析。

次要情节(1,1)情节(signalTimetable1。时间、signalTimetable1.CarSpeed“r”)标题(“从{\ itABSdata} {\ itCarSpeed}信号信息”,“FontWeight”,“大胆”)包含(“时间戳”)ylabel (“汽车速度”次要情节(3、1、2)情节(signalTimetable2。时间、signalTimetable2.EngSpeed“b”)标题(“从{\ itEngineData} {\ itEngSpeed}信号信息”,“FontWeight”,“大胆”)包含(“时间戳”)ylabel (“发动机转速”次要情节(3,1,3)情节(signalTimetable3。时间、signalTimetable3.Gear“y”)标题(“从{\ itGearBoxInfo} {\ itGear}信号信息”,“FontWeight”,“大胆”)包含(“时间戳”)ylabel (“装备”)

图包含3轴对象。坐标轴对象与标题1 C r S p e e d空白S i g n l空白f r o m空白B S d t消息,包含时间戳,ylabel汽车速度包含一个类型的对象。坐标轴对象与标题2 E n g S p E E d空白S i g n l空白f r o m空白E n g i n E d t消息,包含时间戳,ylabel发动机转速包含一个类型的对象。坐标轴对象与标题3 G e r空白S i G n l空白f r o m空白G f e r B o x我n o信息,包含时间戳,ylabel装置包含一个类型的对象。

配置通道组和通道的元数据

这个例子的终极目标是编写的解码信号数据三个感兴趣的消息,“ABSdata”、“EngineData”和“GearBoxInfo”,回到MDF-file分成三个新的频道组相同。这样的原始和解码数据可以存储在一个文件中。

除了数据在每一个时间表,元数据也是一个重要的元素,它可以提供描述性信息测量环境。本节演示了如何配置元数据与数据,作为一个可选的步骤写入文件之前做准备。

使用功能mdfAddChannelGroupMetadata添加到每个信号的时间表默认或推断出特定的元数据通道组及其渠道。

signalTimetable1 = mdfAddChannelGroupMetadata (signalTimetable1);signalTimetable2 = mdfAddChannelGroupMetadata (signalTimetable2);signalTimetable3 = mdfAddChannelGroupMetadata (signalTimetable3);

查看每个通道组的默认元数据及其渠道。

signalTimetable1.Properties.CustomProperties
ans = CustomProperties属性:ChannelGroupAcquisitionName:“ChannelGroupComment:“ChannelGroupSourceName:“ChannelGroupSourcePath:“ChannelGroupSourceComment:“ChannelGroupSourceType:不明ChannelGroupSourceBusType:不明ChannelGroupSourceBusChannelNumber: 0 ChannelDisplayName: [”“”“”“”“] ChannelComment: [”“”“”“”“] ChannelUnit: [”“”“”“”“] ChannelType: [FixedLength FixedLength FixedLength FixedLength] ChannelDataType: [RealLittleEndian RealLittleEndian RealLittleEndian RealLittleEndian] ChannelNumBits: [64 64 64 64] ChannelComponentType:[没有没有没有没有]ChannelCompositionType:[没有没有没有没有]ChannelSourceName: [”“”“”“”“] ChannelSourcePath: [”“”“”“”“] ChannelSourceComment: [”“”“”“”“] ChannelSourceType:[未指明的未指定的未指明的不明]ChannelSourceBusType:[未指明的未指定的未指明的不明]ChannelSourceBusChannelNumber: [0 0 0 0] ChannelReadOption:[失踪的失踪的失踪的失踪]
signalTimetable2.Properties.CustomProperties
ans = CustomProperties属性:ChannelGroupAcquisitionName:“ChannelGroupComment:“ChannelGroupSourceName:“ChannelGroupSourcePath:“ChannelGroupSourceComment:“ChannelGroupSourceType:不明ChannelGroupSourceBusType:不明ChannelGroupSourceBusChannelNumber: 0 ChannelDisplayName: [”“”“”“”“”“”“] ChannelComment: [”“”“”“”“”“”“] ChannelUnit: [”“”“”“”“”“”“] ChannelType: [FixedLength FixedLength FixedLength FixedLength FixedLength FixedLength] ChannelDataType: [RealLittleEndian RealLittleEndian RealLittleEndian RealLittleEndian RealLittleEndian RealLittleEndian] ChannelNumBits: [64 64 64 64 64 64] ChannelComponentType:[没有没有没有没有没有没有]ChannelCompositionType:[没有没有没有没有没有没有]ChannelSourceName: [”“”“”“”“”“”“] ChannelSourcePath: [”“”“”“”“”“”“] ChannelSourceComment: [”“”“”“”“”“”“] ChannelSourceType:[未指明的未指定的未指定的未指明的不明不明]ChannelSourceBusType:[未指明的未指定的未指定的未指明的不明不明]ChannelSourceBusChannelNumber: [0 0 0 0 0 0] ChannelReadOption:[失踪的失踪的失踪的失踪的失踪的失踪]
signalTimetable3.Properties.CustomProperties
ans = CustomProperties属性:ChannelGroupAcquisitionName:“ChannelGroupComment:“ChannelGroupSourceName:“ChannelGroupSourcePath:“ChannelGroupSourceComment:“ChannelGroupSourceType:不明ChannelGroupSourceBusType:不明ChannelGroupSourceBusChannelNumber: 0 ChannelDisplayName: [”“”“”“] ChannelComment: [”“”“”“] ChannelUnit: [”“”“”“] ChannelType: [FixedLength FixedLength FixedLength] ChannelDataType: [RealLittleEndian RealLittleEndian RealLittleEndian] ChannelNumBits: [64 64 64] ChannelComponentType:[没有没有没有]ChannelCompositionType:[没有没有没有]ChannelSourceName: [”“”“”“] ChannelSourcePath: [”“”“”“] ChannelSourceComment: [”“”“”“] ChannelSourceType:[未指定的未指明的不明]ChannelSourceBusType:[未指定的未指明的不明]ChannelSourceBusChannelNumber: [0 0 0] ChannelReadOption:[失踪的失踪的失踪]

创建一个数组来保存三个消息名称和细胞数组来保存三个信号时间表。

msgNames = [“ABSdata”,“EngineData”,“GearBoxInfo”];TTs = {signalTimetable1, signalTimetable2 signalTimetable3};

集属性ChannelGroupComment中每一个时间表TTs显示的名称可以从哪些信号数据解码信息。

2 = 1:元素个数(TTs) TTs {2} .Properties.CustomProperties。ChannelGroupComment = sprintf (“信号数据可以信息”“% s”“。”msgNames (ii));结束

为每个消息,可以每个信号的装置canDB使用辅助函数getSignalUnit这个脚本结束时可用。集属性ChannelUnit对于每一个时间表变量来获得单位。

2 = 1:元素个数(msgNames) sigNames = TTs {2} .Properties.VariableNames;jj = 1:元素个数(sigNames) sigUnit = getSignalUnit (canDB, msgNames (ii), sigNames (jj));TTs {2} .Properties.CustomProperties.ChannelUnit (jj) = sigUnit;结束结束

查看每个通道组的更新元数据及其渠道。注意更新的值属性ChannelGroupCommentChannelUnit

2 = 1:元素个数(TTs) TTs {2} .Properties.CustomProperties结束
ans = CustomProperties属性:ChannelGroupAcquisitionName:“ChannelGroupComment:“信号数据可以消息”ABSdata”。“ChannelGroupSourceName: "" ChannelGroupSourcePath: "" ChannelGroupSourceComment: "" ChannelGroupSourceType: Unspecified ChannelGroupSourceBusType: Unspecified ChannelGroupSourceBusChannelNumber: 0 ChannelDisplayName: ["" "" "" ""] ChannelComment: ["" "" "" ""] ChannelUnit: ["N" "" "" "mph"] ChannelType: [FixedLength FixedLength FixedLength FixedLength] ChannelDataType: [RealLittleEndian RealLittleEndian RealLittleEndian RealLittleEndian] ChannelNumBits: [64 64 64 64] ChannelComponentType: [None None None None] ChannelCompositionType: [None None None None] ChannelSourceName: ["" "" "" ""] ChannelSourcePath: ["" "" "" ""] ChannelSourceComment: ["" "" "" ""] ChannelSourceType: [Unspecified Unspecified Unspecified Unspecified] ChannelSourceBusType: [Unspecified Unspecified Unspecified Unspecified] ChannelSourceBusChannelNumber: [0 0 0 0] ChannelReadOption: [Missing Missing Missing Missing]
ans = CustomProperties属性:ChannelGroupAcquisitionName:“ChannelGroupComment:“信号数据可以消息”EngineData”。“ChannelGroupSourceName: "" ChannelGroupSourcePath: "" ChannelGroupSourceComment: "" ChannelGroupSourceType: Unspecified ChannelGroupSourceBusType: Unspecified ChannelGroupSourceBusChannelNumber: 0 ChannelDisplayName: ["" "" "" "" "" ""] ChannelComment: ["" "" "" "" "" ""] ChannelUnit: ["l" "kW" "N" "" "degC" "rpm"] ChannelType: [FixedLength FixedLength FixedLength FixedLength FixedLength FixedLength] ChannelDataType: [RealLittleEndian RealLittleEndian RealLittleEndian RealLittleEndian RealLittleEndian RealLittleEndian] ChannelNumBits: [64 64 64 64 64 64] ChannelComponentType: [None None None None None None] ChannelCompositionType: [None None None None None None] ChannelSourceName: ["" "" "" "" "" ""] ChannelSourcePath: ["" "" "" "" "" ""] ChannelSourceComment: ["" "" "" "" "" ""] ChannelSourceType: [Unspecified Unspecified Unspecified Unspecified Unspecified Unspecified] ChannelSourceBusType: [Unspecified Unspecified Unspecified Unspecified Unspecified Unspecified] ChannelSourceBusChannelNumber: [0 0 0 0 0 0] ChannelReadOption: [Missing Missing Missing Missing Missing Missing]
ans = CustomProperties属性:ChannelGroupAcquisitionName:“ChannelGroupComment:“信号数据可以消息”GearBoxInfo”。“ChannelGroupSourceName: "" ChannelGroupSourcePath: "" ChannelGroupSourceComment: "" ChannelGroupSourceType: Unspecified ChannelGroupSourceBusType: Unspecified ChannelGroupSourceBusChannelNumber: 0 ChannelDisplayName: ["" "" ""] ChannelComment: ["" "" ""] ChannelUnit: ["" "" ""] ChannelType: [FixedLength FixedLength FixedLength] ChannelDataType: [RealLittleEndian RealLittleEndian RealLittleEndian] ChannelNumBits: [64 64 64] ChannelComponentType: [None None None] ChannelCompositionType: [None None None] ChannelSourceName: ["" "" ""] ChannelSourcePath: ["" "" ""] ChannelSourceComment: ["" "" ""] ChannelSourceType: [Unspecified Unspecified Unspecified] ChannelSourceBusType: [Unspecified Unspecified Unspecified] ChannelSourceBusChannelNumber: [0 0 0] ChannelReadOption: [Missing Missing Missing]

写入数据与定制MDF-File通道组和通道的元数据

使用mdfWrite函数,写三个时间表TTs一次一个Logging_MDF.mf4。因为MDF-file目前有62通道组,TTs {1},TTs {2}TTs {3}被写入到文件的末尾通道组织63年,64年和65年。

2 = 1:元素个数(TTs) mdfWrite (“Logging_MDF.mf4”,TTs {2})结束

添加DBC-File MDF-File作为附件

方便的访问PowerTrain_MDF.dbc如果您需要执行额外的数据解码在未来,你可以添加DBC-file作为嵌入式MDF-file使用附件mdfAddAttachment

mdfAddAttachment (“Logging_MDF.mf4”,“PowerTrain_MDF.dbc”,嵌入式= true)

关闭DBC-File

关闭访问DBC-files通过清算其变量的工作区。

清晰的canDB

Helper函数

函数sigUnit = getSignalUnit (canDB msgName sigName)%查找的单位一个信号在消息从一个数据库中。单位作为字符串返回。msgIdx =找到(strcmp ({canDB.MessageInfo。名称}msgName));sigIdx =找到(strcmp ({canDB.MessageInfo .SignalInfo (msgIdx)。名称}sigName));sigUnit =字符串(canDB.MessageInfo (msgIdx) .SignalInfo (sigIdx) .Units);结束
Baidu
map