一种基于LabVIEW的多通道多采样率CAN总线数据解析方法[发明专利]
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(19)中华人民共和国国家知识产权局
(12)发明专利申请
(10)申请公布号 (43)申请公布日 (21)申请号 201711458903.4
(22)申请日 2017.12.28
(71)申请人 北京理工大学
地址 100081 北京市海淀区中关村南大街5
号
(72)发明人 宋萍 彭文家 李方兴
(74)专利代理机构 北京理工大学专利中心
11120
代理人 高燕燕
(51)Int.Cl.
H04L 1/00(2006.01)
H04L 12/40(2006.01)
(54)发明名称一种基于LabVIEW的多通道多采样率CAN总线数据解析方法(57)摘要本发明提出一种基于LabVIEW的多通道多采样率CAN总线数据解析方法,有效解决多CAN总线、多通道、多ID、多采样率CAN总线数据实时传输与解析问题。
步骤一:根据不同ID解析数据块,取出相应字节的数据作为对应通道数据,将本ID 内所有通道数据组成一个二维数组,放入对应寄存器内;步骤二:读出所有寄存器内的二维数组,将所有二维数组拼接为一个总二维数组,其行数即对应通道数,列数对应采样点数;步骤三:将步骤一得到的每通道的采样点个数,存为一列数组,拼接到步骤二得到的二维数组的最前面,作为总二维数组的帧头,得到的拼接后的二维数组的第一列即对应本通道采样点数;步骤四:将步骤三中得到的二维数组传输给显示模块显示以
及存储模块缓存。
权利要求书1页 说明书3页CN 108183769 A 2018.06.19
C N 108183769
A
1.一种基于LabVIEW的多通道多采样率CAN总线数据解析方法,其特征在于,包括以下步骤:
步骤一:根据不同ID解析数据块,取出相应字节的数据作为对应通道数据,将本ID内所有通道数据组成一个二维数组,放入对应寄存器内,每个二维数组的行数代表本ID数据帧所包含的通道数,二维数组的列数是数据块所包含的本通道的采样点个数;
步骤二:读出所有寄存器内的二维数组,将所有二维数组拼接为一个总二维数组,其行数即对应通道数,列数对应采样点数;
步骤三:将步骤一得到的每通道的采样点个数,存为一列数组,拼接到步骤二得到的二维数组的最前面,作为总二维数组的帧头,得到的拼接后的二维数组的第一列即对应本通道采样点数;
步骤四:将步骤三中得到的二维数组传输给显示模块显示以及存储模块缓存。
2.如权利要求1所述的一种基于LabVIEW的多通道多采样率CAN总线数据解析方法,其特征在于,所述显示模块按照第一列每行数据值截取本通道后续数值,剔除补充的0值进行显示。
3.如权利要求1或2所述的一种基于LabVIEW的多通道多采样率CAN总线数据解析方法,其特征在于,所述存储模块预先设定写入次数阈值,当写入次数达到阈值时将缓存数据写入TDMS文件。
权 利 要 求 书1/1页CN 108183769 A
一种基于LabVIEW的多通道多采样率CAN总线数据解析方法
技术领域
[0001]本发明属于CAN总线传输技术领域,涉及一种基于LabVIEW的多通道多采样率CAN 总线数据解析方法。
背景技术
[0002]CAN总线一个主要优点是可以实时传输多个节点的数据。
但是,使用CAN总线传输采集数据时,不同节点采样率各异使得不同通道采样数据量不同,这就对上位机灵活可靠稳定接收不同通道的数据,并解析、存储、显示数据提出了挑战,目前基于LabVIEW的CAN总线数据接收处理尚未有较好的处理方法。
[0003]《一种基于LabVIEW的CAN总线数据处理方法》专利中提出一种针对双CAN总线实时通讯的技术,但是其接收的每个CAN总线只能有一个CAN节点发送数据,无法解决多个节点同时发送数据的问题,亦无法解决不同采样速率节点不同采样率的问题,由于CAN总线为串行通讯方式,数据解析错误会导致各通道间数据互串的问题。
以上问题成为LabVIEW应用CAN总线通讯的一个难点问题,限制了CAN总线在以LabVIEW为基础的测试控制领域的应用。
发明内容
[0004]针对目前对CAN总线数据解析的缺陷,本发明提出一种基于LabVIEW的多通道多采样率CAN总线数据解析方法,有效解决多CAN总线、多通道、多ID、多采样率CAN总线数据实时传输与解析问题。
[0005]本发明的目的是通过以下技术方案来实现的:
[0006]一种基于LabVIEW的多通道多采样率CAN总线数据解析方法,包括以下步骤:[0007]步骤一:根据不同ID解析数据块,取出相应字节的数据作为对应通道数据,将本ID 内所有通道数据组成一个二维数组,放入对应寄存器内,每个二维数组的行数代表本ID数据帧所包含的通道数,二维数组的列数是数据块所包含的本通道的采样点个数;
[0008]步骤二:读出所有寄存器内的二维数组,将所有二维数组拼接为一个总二维数组,其行数即对应通道数,列数对应采样点数;
[0009]步骤三:将步骤一得到的每通道的采样点个数,存为一列数组,拼接到步骤二得到的二维数组的最前面,作为总二维数组的帧头,得到的拼接后的二维数组的第一列即对应本通道采样点数;
[0010]步骤四:将步骤三中得到的二维数组传输给显示模块显示以及存储模块缓存。
[0011]进一步地,所述显示模块按照第一列每行数据值截取本通道后续数值,剔除补充的0值进行显示。
[0012]进一步的,所述存储模块预先设定写入次数阈值,当写入次数达到阈值时将缓存数据写入TDMS文件。
[0013]本发明的有益效果:
[0014]1、本发明对不同采样率采样通道分配CAN总线数据帧的数据域和仲裁域ID,根据
ID解析不同通道数据,数据根据通道号存储在二维数组中,根据不同通道采样点个数对二维数组添加帧头,用于显示数据以及存储数据时提取采样数值,并且设定存储间隔,有效降低系统开销,提高数据解析稳定性。
[0015]2、本发明将所有二维数组拼接为一个总二维数组后,再拼接帧头,这样避免了解析错误导致的各通道数据的互串,并且通过添加的帧头可以灵活的接收解析不同采样率的数据。
具体实施方式
[0016]下面举实施例对本发明进行详细描述。
[0017]如表1所示,为CAN总线数据帧定义格式,根据测试需要制定不同CAN总线数据的仲裁域ID,为区别不同类型数据帧,CAN总线网络内,每种数据帧对应唯一ID,不同类型数据帧ID不能重复。
[0018]表1
[0019]
[0020]CAN总线数据帧的数据域进行填充,CAN总线数据域包含8个字节,本实施例选用每两个字节填充一个通道数据,一个数据帧可以填充四个通道数据,同一ID的数据帧内填充相同采样率数据,数据域未使用字节可以闲置。
[0021]本具体实施例包含35种ID数据帧,包含140个通道数据,采样率包含100Hz、50Hz和20Hz,CAN总线为3条。
[0022]CAN总线数据分块上传到上位机,块大小预先设定为2000,即每次处理2000帧CAN 总线数据,上传数据块内包含本时间段内CAN线内所有不同采样速率数据帧,其中采样率高的数据帧数多,采样率低的数据帧数少,其采样率不影响后续数据处理。
[0023]数据解析过程具体为:
[0024]步骤一:根据不同ID解析本数据块数据,取出相应字节的数据作为对应通道数据,将本ID内所有通道数据组成一个二维数组,放入对应寄存器内,每个二维数组的行数代表本ID数据帧所包含的通道数,对应表1的数据帧解析得到一个4行二维数组,第一行为第一通道,依次为第二、三、四通道,二维数组的列数是本数据块所包含的本通道的采样点个数,比如处理的块数据,2000个数据帧中包含15个如表1的ID数据帧,则解析完本块2000个数据帧后,应得到15个本通道采样数据。
依照本方法解析所有ID数据帧,并存入不同寄存器。
[0025]步骤二:待本块2000个数据帧数据处理完毕后,判断每个寄存器内二维数组的每行的列数,得到每个通道的采样点个数。
[0026]步骤三:读出所有寄存器内的单独的二维数组,将所有二维数组拼接为一个总二维数组,本二维数组行数即对应通道数,列数对应采样点数,不同采样率通道对应的数组的列数不同,本实施例得到的二维数组为140行,对应140个采集通道。
但是在拼接为二维数组过程中,二维数组以采样率最大的数组的列数拓展二维数组,采样率低的不足的会自动用0
补齐。
如采样率为100Hz的通道的每行都为真实数据,但是50Hz和20Hz采样通道由于采样数少,会在采集数据后出现无效数据0。
由于本问题的出现,在数据显示和存储的过程中,必须剔除自动补充的0值,否则会使通道数据显示和存储错误。
[0027]步骤四:将步骤二中得到的每通道的采样点个数,存为一维数组,对于本实施例一共有140个通道,所以得到一个长度为140的数组,数组的值对应每个通道的采样点个数,将本数组拼接到步骤三中得到采样点的二维数组的最前一列,作为二维数组帧头,得到的拼接后的二维数组的第一列即对应本通道采样点数。
[0028]步骤五:将步骤四中得到的二维数组传输给显示模块和存储模块缓存。
[0029]步骤六:显示模块按照第一列每行数据值截取本通道后续数值,剔除步骤三中补充的0值,进行显示。
[0030]进一步的,如果数据存储每次处理完数据后进行存储,由于磁盘读写速度较慢,频繁调用写入操作,磁盘写入会占用较大系统开销,所以在存储模块缓存写入预先设定次数时,再进行一次存储写入。
本实施例设定为150次,即缓存150次处理后的收据,在调用一次数据写入操作。
[0031]步骤七:处理完本块数据后等待处理下一块采集数据,或等待停止接收数据命令。