CN106201670B - 一种基于Labview的CAN总线数据处理方法 - Google Patents
一种基于Labview的CAN总线数据处理方法 Download PDFInfo
- Publication number
- CN106201670B CN106201670B CN201610577002.6A CN201610577002A CN106201670B CN 106201670 B CN106201670 B CN 106201670B CN 201610577002 A CN201610577002 A CN 201610577002A CN 106201670 B CN106201670 B CN 106201670B
- Authority
- CN
- China
- Prior art keywords
- data
- thread
- bus
- labview
- established
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
一种基于Labview的CAN总线数据处理方法,解决上位机的数据处理过程不能与双CAN总线实时通讯有效匹配的技术问题。包括:通过Labview建立CAN总线数据处理进程的程序;在CAN总线数据处理程序中通过Labview建立并发的任务处理线程;建立显示界面,通过显示控件形成事件驱动‑响应反馈模式。
Description
技术领域
本发明涉及一种数据处理方法,特别是涉及一种多线程并发的处理方法。
背景技术
现有技术中,为保证控制的实时可靠性,车载机动发射平台多采用双CAN总线实时通讯控制结构,运行于上位机的人机交互软件需要实现针对双CAN总线的数据接收、数据存储、数据处理和数据显示,以及交互操作等处理过程。另一方面,出于系统可靠性优先的考虑,上位机不宜利用最先进的硬件部件,硬件配置需采用成熟部件,因此配置较低,导致部署的传统人机交互软件满足任务数据处理要求时,上位机系统资源占用较多(双CAN总线负载率小于10%时,CPU占用率超过30%),长时间运行将导致上位机发热量较大,影响上位机的可靠性和寿命。这种现象往往是由于数据处理过程缺乏优化带来的软硬件问题引起的。
发明内容
本发明的目的是提供一种基于Labview的CAN总线数据处理方法,解决上位机的数据处理过程不能与双CAN总线实时通讯有效匹配的技术问题。
本发明的基于Labview的CAN总线数据处理方法,包括:
通过Labview建立CAN总线数据处理进程的程序;
在CAN总线数据处理进程的程序中通过Labview建立并发的任务处理线程;
建立显示界面,通过显示控件形成事件驱动-响应反馈模式。
所述建立并发的任务处理线程包括:
建立CAN总线数据接收线程,与数据分类处理线程间形成的数据通道中建立总线数据接收队列,建立循环周期接收总线数据;
建立数据分类处理线程,与数据解析显示更新线程间形成的数据通道中建立显示数据队列,与数据存储线程间形成的数据通道中建立存储数据队列,对总线数据进行分类处理;
建立数据解析显示更新线程,建立与人机界面的数据通道,对现实数据进行解析以适配Labview界面控件的自动更新;
建立界面操作处理线程,与人机界面间形成输入数据通道,与数据发送线程间形成的数据通道中建立输入数据队列,对人机界面的输入数据进行封装处理;
建立数据发送线程,与数据存储线程间形成数据通道,发送封装的输入数据;
建立数据存储线程,对接受的数据进行周期存储,形成TDMS数据。
所述CAN总线数据接收线程的处理步骤包括:
步骤61:判断线程状态,如停止CAN总线数据接收线程结束,如正常开始接受数据帧;
步骤62:判断接收的数据帧数,达到设置帧数(100帧),执行步骤65,未达到执行步骤63;
步骤63:读取CAN缓冲区数据;
步骤64:判断读取是否成功,成功执行步骤66,不成功执行步骤65;
步骤65:重置10ms循环周期,执行步骤61;
步骤66:封装接收数据包括:CAN_ID、数据长度、数据、接收时间、CAN通道号等;
步骤67:将封装数据顺序传入接收队列;重复步骤62。
所述CAN总线数据分类处理线程的处理步骤包括:
步骤71:判断线程状态,如停止CAN总线数据分类处理线程结束,如正常开始接受数据帧;
步骤72:判断是否达到周期数据的周期长度(100ms),是则执行步骤73,否则执行步骤74;
步骤73:重置10ms循环周期,执行步骤71;
步骤74:将周期数据存入存储数据队列;
步骤75:根据节点CAN_ID判断数据与上一帧是否相同,否则执行步骤73,是则执行步骤76;
步骤76:周期数据入对应缓冲区,非周期数据入显示队列;
步骤77:判断不同计时周期(100ms、1s、2s)的缓冲区中是否有新数据,有则执行步骤78,否则执行步骤73;
步骤78:将相应周期数据传入显示数据队列;重复步骤71。
所述建立并发的任务处理线程包括:按需建立两个CAN总线数据接收线程,适配双CAN总线数据接收。
所述建立CAN总线数据处理进程的步骤包括:
CAN接口初始化、由Labview完成线程初始化、界面控件属性初始化、数据通道形成、队列创建、变量初始化。
所述事件驱动-响应反馈模式的处理步骤还包括:
完成can总线数据接收任务,终止各线程关闭CAN接口、各数据队列释放。
所述数据解析显示更新线程中界面更新周期小于100ms。
所述数据存储线程中周期100ms,100ms写一次存储缓冲,1s执行一次写入存储空间。
所述CAN总线数据接收线程中,线程循环时间10ms,利用队列缓冲可实现10ms内不间断接收100帧数据。
本发明的基于Labview的CAN总线数据处理方法,实现了CAN总线高负载率时不丢帧,同时CPU资源占用较少(双CAN总线负载率为10%左右时,CPU占用率小于20%),提高了人机交互软件运行的可靠性。
附图说明
图1为本发明基于Labview的CAN总线数据处理方法实施例中上位机数据处理过程的流程图。
图2为本发明基于Labview的CAN总线数据处理方法实施例中CAN总线数据接收处理过程的流程图。
图3为本发明基于Labview的CAN总线数据处理方法实施例中CAN总线数据分类处理过程的流程图。
图4为本发明基于Labview的CAN总线数据处理方法实施例中上位机对双CAN总线数据处理的流程图。
图5为本发明基于Labview的CAN总线数据处理方法实施例形成的数据处理过程中的数据流向示意图。
具体实施方式
下面结合附图对本发明的具体实施方式进行详细说明。
其中步骤编号用作附图标记,不代表步骤执行顺序。
如图1所述,本实施例的基于Labview的CAN总线数据处理方法包括:
步骤01:通过Labview建立CAN总线数据处理进程的程序;
步骤02:在CAN总线数据处理进程的程序中通过Labview建立并发的任务处理线程;
步骤03:建立显示界面,通过显示控件形成事件驱动-响应反馈模式。
本实施例的基于Labview的CAN总线数据处理方法,利用Labview形成优化的数据处理过程,形成合理的并发线程处理调度过程,降低对上位机硬件的配置要求,降低系统资源占用。
如图1所述,本实施例的基于Labview的CAN总线数据处理方法中,步骤02并发任务处理线程的建立包括:
步骤21:建立CAN总线数据接收线程,与数据分类处理线程间形成的数据通道中建立总线数据接收队列,建立循环周期接收总线数据;
步骤22:建立数据分类处理线程,与数据解析显示更新线程间形成的数据通道中建立显示数据队列,与数据存储线程间形成的数据通道中建立存储数据队列,对总线数据进行分类处理;
步骤23:建立数据解析显示更新线程,建立与人机界面的数据通道,对现实数据进行解析以适配Labview界面控件的自动更新;
步骤24:建立界面操作处理线程,与人机界面间形成输入数据通道,与数据发送线程间形成的数据通道中建立输入数据队列,对人机界面的输入数据进行封装处理;
步骤25:建立数据发送线程,与数据存储线程间形成数据通道,发送封装的输入数据;
步骤26:建立数据存储线程,对接受的数据进行周期存储,形成TDMS数据。
本实施例的基于Labview的CAN总线数据处理方法,将数据处理过程形成六个存在完成处理逻辑的独立线程,形成优化线程间中间数据的缓冲,有效提高系统资源利用率,降低并发冲突。
如图2所示,步骤21建立的CAN总线数据接收线程的处理步骤包括:
CAN总线数据接收线程开始;
步骤61:判断线程状态,如停止CAN总线数据接收线程结束,如正常开始接受数据帧;
步骤62:判断接收的数据帧数,达到设置帧数(100帧),执行步骤65,未达到执行步骤63;
步骤63:读取CAN缓冲区数据;
步骤64:判断读取是否成功,成功执行步骤66,不成功执行步骤65;
步骤65:重置10ms循环周期,执行步骤61;
步骤66:封装接收数据包括:CAN_ID、数据长度、数据、接收时间、CAN通道号等;
步骤67:将封装数据顺序传入接收队列;重复步骤62;
直至CAN总线数据接收线程结束。
本实施例的CAN总线数据接收线程,线程循环时间10ms;按单条CAN总线250kbps、负载100%计算,10ms内共计约20帧数据量,可实现10ms内不间断接收100帧数据,接收1帧用时由系统硬件、操作系统和Labview平台决定,用时小于0.5ms时可满足CAN总线负载率100%的数据接收。
如图3所示,步骤22建立的CAN总线数据分类处理线程的处理步骤包括:
步骤71:判断线程状态,如停止CAN总线数据分类处理线程结束,如正常开始接受数据帧;
步骤72:判断是否达到周期数据的周期长度(100ms),是则执行步骤73,否则执行步骤74;
步骤73:重置10ms循环周期,执行步骤71;
步骤74:将周期数据存入存储数据队列;
步骤75:根据节点CAN_ID判断数据与上一帧是否相同,否则执行步骤73,是则执行步骤76;
步骤76:周期数据入对应缓冲区,非周期数据入显示队列;
步骤77:判断不同计时周期(100ms、1s、2s)的缓冲区中是否有新数据,有则执行步骤78,否则执行步骤73;
步骤78:将相应周期数据传入显示数据队列;重复步骤71。
本实施例的CAN总线数据接收线程,对数据进行针对处理,对接收数据差异性过滤,只处理与上一帧数据不同的数据。对于周期数据的处理,周期数据包括100ms、1s、2s等,接收的不同的周期数据采用覆盖的方式放入数据缓存区,按100ms、1s、2s等周期统一进行周期数据处理。事件驱动型数据,如报警信息等非周期数据对每一帧不同的数据直接进行处理。按存储格式封装每一帧数据进行存储。
如图4所示,本实施例得基于Labview的CAN总线数据处理方法,形成双CAN总线数据处理方法,步骤02中包括:
按需建立、启动两个CAN总线数据接收线程,适配双CAN总线数据接收。
本实施例的基于Labview的CAN总线数据处理方法,步骤01中包括:
步骤51:CAN总线数据处理进程初始化,包括CAN接口初始化、由Labview完成线程初始化、界面控件属性初始化、数据通道形成、队列创建、变量初始化。
步骤03中驱动-响应反馈模式的处理步骤,还包括:
步骤53:完成can总线数据接收任务,终止各线程关闭CAN接口、各数据队列释放。
如图5所示,本实施例的基于Labview的CAN总线数据处理方法,在形成的CAN总线数据接收线程、数据分类处理线程,数据解析显示更新线程、界面操作处理线程、数据发送线程和数据存储线程间,采用队列的方式进行线程间通讯,队列长度根据CAN总线的数据量和线程间的数据量设置合理值,可以防止出现丢帧现象。
实际应用中,线程循环时间10ms;按单条CAN总线250kbps、负载100%计算,10ms内共计约40帧数据量,利用队列缓冲可实现10ms内不间断接收100帧数据,接收1帧用时由系统硬件、操作系统和Labview平台决定,用时小于0.5ms时可满足CAN总线负载率100%的数据接收。
线程执行一次循环的用时由系统硬件、操作系统和Labview平台决定,当最大用时小于0.5ms时可满足CAN总线负载100%的数据处理,同时,数据队列长度设置较大,对于短时的突发数据量起到缓冲作用。
数据存储采用Labview的TDMS数据存储方案,100ms写一次存储缓冲,1s执行一次写入存储空间。数据存储线程周期100ms。
数据接收显示线程,采用100ms阻塞的方式读取显示队列的数据,等待100ms队列中无数据则执行下一个循环,因此,数据接收线程的周期最大为100ms,最小为Labview分配的最短时间间隔。
界面操作采用Labview事件驱动模式,每一个界面操作(如点击界面按钮、按下快捷键等)产生一个用户事件,用户时间驱动界面操作处理线程执行对应处理。当没有用户操作时,界面操作处理线程处于等待状态,释放CPU资源。
数据解析后写入显示控件,控件属性为“异步显示”(启用异步显示,控件更新数据改动的频率稍低,把更多的时间分配给执行后台程序)。因此,界面更新周期的最快为100ms。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。
Claims (9)
1.一种基于Labview的CAN总线数据处理方法,包括:
通过Labview建立CAN总线数据处理进程的程序;
在CAN总线数据处理进程的程序中通过Labview建立并发的任务处理线程;
建立显示界面,通过显示控件形成事件驱动-响应反馈模式;
所述建立并发的任务处理线程包括:
建立CAN总线数据接收线程,与数据分类处理线程间形成的数据通道中建立总线数据接收队列,建立循环周期接收总线数据;
建立数据分类处理线程,与数据解析显示更新线程间形成的数据通道中建立显示数据队列,与数据存储线程间形成的数据通道中建立存储数据队列,对总线数据进行分类处理;
建立数据解析显示更新线程,建立与人机界面的数据通道,对现实数据进行解析以适配Labview界面控件的自动更新;
建立界面操作处理线程,与人机界面间形成输入数据通道,与数据发送线程间形成的数据通道中建立输入数据队列,对人机界面的输入数据进行封装处理;
建立数据发送线程,与数据存储线程间形成数据通道,发送封装的输入数据;
建立数据存储线程,对接受的数据进行周期存储,形成TDMS数据。
2.如权利要求1所述的基于Labview的CAN总线数据处理方法,所述CAN总线数据接收线程的处理步骤包括:
步骤61:判断线程状态,如停止CAN总线数据接收线程结束,如正常开始接受数据帧;
步骤62:判断接收的数据帧数,达到设置帧数,执行步骤65,未达到执行步骤63;
步骤63:读取CAN缓冲区数据;
步骤64:判断读取是否成功,成功执行步骤66,不成功执行步骤65;
步骤65:重置10ms循环周期,执行步骤61;
步骤66:封装接收数据包括:CAN_ID、数据长度、数据、接收时间、CAN通道号;
步骤67:将封装数据顺序传入接收队列;重复步骤62。
3.如权利要求1所述的基于Labview的CAN总线数据处理方法,所述数据分类处理线程的处理步骤包括:
步骤71:判断线程状态,如停止数据分类处理线程结束,如正常开始接受数据帧;
步骤72:判断是否达到周期数据的周期长度,是则执行步骤73,否则执行步骤74;
步骤73:重置10ms循环周期,执行步骤71;
步骤74:将周期数据存入存储数据队列;
步骤75:根据节点CAN_ID判断数据与上一帧是否相同,否则执行步骤73,是则执行步骤76;
步骤76:周期数据入对应缓冲区,非周期数据入显示队列;
步骤77:判断不同计时周期的缓冲区中是否有新数据,有则执行步骤78,否则执行步骤73;
步骤78:将相应周期数据传入显示数据队列;重复步骤71。
4.如权利要求1所述的基于Labview的CAN总线数据处理方法,所述建立并发的任务处理线程包括:按需建立两个CAN总线数据接收线程,适配双CAN总线数据接收。
5.如权利要求1所述的基于Labview的CAN总线数据处理方法,所述建立CAN总线数据处理进程的步骤包括:
CAN接口初始化、由Labview完成线程初始化、界面控件属性初始化、数据通道形成、队列创建、变量初始化。
6.如权利要求1所述的基于Labview的CAN总线数据处理方法,所述事件驱动-响应反馈模式的处理步骤还包括:
完成can总线数据接收任务,终止各线程关闭CAN接口、各数据队列释放。
7.如权利要求1所述的基于Labview的CAN总线数据处理方法,所述数据解析显示更新线程中界面更新周期小于100ms。
8.如权利要求1所述的基于Labview的CAN总线数据处理方法,所述数据存储线程中周期100ms,100ms写一次存储缓冲,1s执行一次写入存储空间。
9.如权利要求1所述的基于Labview的CAN总线数据处理方法,所述CAN总线数据接收线程中,线程循环时间10ms,利用队列缓冲可实现10ms内不间断接收100帧数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610577002.6A CN106201670B (zh) | 2016-07-20 | 2016-07-20 | 一种基于Labview的CAN总线数据处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610577002.6A CN106201670B (zh) | 2016-07-20 | 2016-07-20 | 一种基于Labview的CAN总线数据处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106201670A CN106201670A (zh) | 2016-12-07 |
CN106201670B true CN106201670B (zh) | 2019-08-02 |
Family
ID=57491230
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610577002.6A Active CN106201670B (zh) | 2016-07-20 | 2016-07-20 | 一种基于Labview的CAN总线数据处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106201670B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107645564B (zh) * | 2017-10-24 | 2021-03-23 | 厦门市福工动力技术有限公司 | 一种基于数据缓存的can报文解析方法及其系统 |
CN108255618B (zh) * | 2017-12-27 | 2021-05-18 | 一诺仪器(中国)有限公司 | 测量仪器的数据交互处理方法及系统 |
CN110808892A (zh) * | 2019-10-24 | 2020-02-18 | 北京航天发射技术研究所 | 车辆控制数据判读方法和装置 |
CN111614729B (zh) * | 2020-04-28 | 2023-06-02 | 北京金山云网络技术有限公司 | 对kubernetes容器集群的控制方法、装置及电子设备 |
CN113986546A (zh) * | 2021-10-29 | 2022-01-28 | 苏州易德龙科技股份有限公司 | 一种指定软硬件资源的集中式LabVIEW处理方法 |
CN115587058B (zh) * | 2022-12-05 | 2023-05-26 | 苏州浪潮智能科技有限公司 | 一种数据处理系统、方法、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104063216A (zh) * | 2014-06-12 | 2014-09-24 | 北京航天发射技术研究所 | 一种基于Labview的高速数据处理显示方法 |
CN104506376A (zh) * | 2014-11-23 | 2015-04-08 | 北京航空航天大学 | 一种具有帧起始敏感同步触发功能的多通道冗余式can总线测试系统 |
CN205376672U (zh) * | 2015-12-31 | 2016-07-06 | 清华大学苏州汽车研究院(吴江) | 基于can总线的电动汽车电池管理系统通信架构 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9444737B2 (en) * | 2009-04-27 | 2016-09-13 | Intel Corporation | Packet data processor in a communications processor architecture |
-
2016
- 2016-07-20 CN CN201610577002.6A patent/CN106201670B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104063216A (zh) * | 2014-06-12 | 2014-09-24 | 北京航天发射技术研究所 | 一种基于Labview的高速数据处理显示方法 |
CN104506376A (zh) * | 2014-11-23 | 2015-04-08 | 北京航空航天大学 | 一种具有帧起始敏感同步触发功能的多通道冗余式can总线测试系统 |
CN205376672U (zh) * | 2015-12-31 | 2016-07-06 | 清华大学苏州汽车研究院(吴江) | 基于can总线的电动汽车电池管理系统通信架构 |
Non-Patent Citations (2)
Title |
---|
基于LabVIEW的菜单设计及其响应方法研究;刘红娟,等;《仪器仪表用户》;20080923;第15卷(第4期);全文 |
现场总线CAN通信中多线程的应用;郑勇芸等;《东华理工学院学报》;20040630;第27卷(第2期);第196-198页第1-3节、第4.1节 |
Also Published As
Publication number | Publication date |
---|---|
CN106201670A (zh) | 2016-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106201670B (zh) | 一种基于Labview的CAN总线数据处理方法 | |
US10452605B2 (en) | Method and apparatus for task scheduling on heterogeneous multi-core reconfigurable computing platform | |
CN106201349B (zh) | 一种在物理主机中处理读/写请求的方法和装置 | |
CN104615488B (zh) | 异构多核可重构计算平台上任务调度的方法和装置 | |
CN103778013B (zh) | 一种多通道Nand Flash控制器及其控制方法 | |
CN104486255B (zh) | 业务资源调度方法和装置 | |
CN104380256B (zh) | 用于虚拟化与计算机系统关联的硬件资源的方法、系统和执行代码段 | |
CN108537543A (zh) | 区块链数据的并行处理方法、装置、设备和存储介质 | |
CN110532076A (zh) | 一种云资源创建的方法、系统、设备及可读存储介质 | |
CN105550040B (zh) | 基于kvm平台的虚拟机cpu资源预留算法 | |
CN110300328B (zh) | 一种视频播放控制方法、装置及可读存储介质 | |
CN112131164B (zh) | 应用于加速板卡的数据调度方法、装置及加速板卡和介质 | |
CN108139931A (zh) | 通过重映射同步来加速任务子图 | |
CN111694675B (zh) | 任务调度方法及装置、存储介质 | |
CN109906437A (zh) | 基于线程重要性的处理器核停止和频率选择 | |
CN109313478A (zh) | 出于能效在移动装置上进行的唤醒锁感知系统宽作业调度 | |
CN112445725A (zh) | 预读取文件页的方法、装置和终端设备 | |
CN109102361A (zh) | 一种基于智能电子秤的物品订单确认方法及系统 | |
CN114564435A (zh) | 异构多核芯片的核间通信方法、装置及介质 | |
WO2019047125A1 (zh) | 界面处理方法、装置、计算机存储介质及电子设备 | |
CN112905314A (zh) | 异步处理方法、装置、电子设备、存储介质、及路侧设备 | |
CN114253683B (zh) | 任务处理方法、装置、电子设备及存储介质 | |
CN107657434A (zh) | 游戏充值支付结果的通知方法、装置和网关设备 | |
CN106095417B (zh) | 一种前景应用程序界面刷新同步方法及系统 | |
WO2024119930A1 (zh) | 调度方法、装置、计算机设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |