CN104486187A - 一种动态同步的can通讯设备和方法 - Google Patents
一种动态同步的can通讯设备和方法 Download PDFInfo
- Publication number
- CN104486187A CN104486187A CN201510025388.5A CN201510025388A CN104486187A CN 104486187 A CN104486187 A CN 104486187A CN 201510025388 A CN201510025388 A CN 201510025388A CN 104486187 A CN104486187 A CN 104486187A
- Authority
- CN
- China
- Prior art keywords
- frame
- communication
- queue
- cpu
- priority
- 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.)
- Granted
Links
Landscapes
- Small-Scale Networks (AREA)
Abstract
本发明涉及一种基于帧队列的动态自同步CAN通讯设备和方法,***包括若干个CPU,每个CPU都有独立的1个或多个帧ID,帧ID小的CAN帧具有比较高的优先级,帧ID大的CAN帧优先级较低。当多个CPU通过CAN通讯时,所有的CPU始终接收CAN总线上的数据,并在各自的内存中建立优先级从高到低的帧ID队列,并把自己的帧ID也排列在该队列中,当本帧ID前面的数据都接收到后,立即发送本帧ID信息,如果遇到没有发送成功,就立即将本帧ID后移一个帧间隔单元,在下一个单元时间启动发送。通过不断地监控CAN总线上的信息,动态调整帧队列,重新确定本帧数据发送的时间位置,实现自动同步的功能。
Description
技术领域
本发明涉及CAN(控制器局域网)通讯方法,尤其涉及一种动态同步的CAN通讯设备和方法,通过动态同步的方式,实现准同步的通讯结果。
背景技术
目前,CAN通讯在车辆电控、工业现场等场合应用日益普遍,CAN通讯解决了多主通讯握手和仲裁等问题。
CAN通讯一般在车辆电控中广泛应用,CAN通讯的实时性对车辆的安全性非常重要,采用本方案对提高车辆的安全性有很好的作用,因此应用前景广泛。
当CAN通讯进行大量数据传输,通讯的频次较高时,由于各个CPU发送数据是随机的,有的是多帧连发,这样必然导致帧碰撞加剧,从而引起很多帧会丧失发送,通讯失败,造成通讯的实时性变差,如何解决多主通讯方式下,提高通讯的实时性的同时,减少帧冲突非常重要。
为了解决CAN总线的总线冲突问题,已经有大量的研究成果用于解决这个问题,例如采用网络总线负载均散就是一种比较有效的方法,但是,对于***总线节点变化和容错性方面问题,这些方法很难克服。
随着微电子技术的突飞猛进,CPU的速度越来越快,内存越来越大,特别是中断处理能力越来越强大,通过软件实现避免总线冲突完全可以实现。
发明内容
本发明的目的是通过建立准同步原则,让各个独立的CPU按照一个统一的顺序发送,从而减少冲突发生的可能性,避免各个CPU无序发送的局面,避免了帧的碰撞,大大提高通讯的有效数据流量和网络数据的实时性,从而解决CAN通讯效率低下和实时性不好的问题。
本发明涉及一种动态同步的CAN通讯设备及其方法,各个CPU之间没有主从关系,通讯顺序按照帧ID进行动态分配,最先发送的是最高优先级的帧,然后依次发送较低优先级的帧。每个参与通讯的CPU始终接收全部的CAN帧,并把接收到的帧按照帧ID的优先级进行排队,然后将本CPU的帧ID在这个队列的中自动定位,当轮到本帧ID发送时刻后,立即启动发送。
本发明的动态同步CAN通讯方法,参与通讯的CPU接收全部的CAN信息,并且根据接收到的CAN帧,在内存中动态建立一个帧发送队列,该队列按照接收帧ID的优先级从高到低排列,并且把本CPU要求发送的帧ID也定位在这个队列中,当到本帧ID时刻,就启动发送功能。
上电启动后,各个CPU都有一个缺省的帧队列,该队列是进行***设计时已经规划好的队列,作为起始发送数据顺序队列。
各个帧发送的时间间隔都有固定的时间长度。
当有一个新的帧ID参与通讯时,会自动在各个CPU的帧队列中自动分配一个位置,下一个通讯周期会自动把总线让给该帧,同时避免数据冲突。
当一个高级的帧ID或低级的帧ID由于某种原因不发送数据时,各个CPU的帧发送队列会自动从队列中剔除该帧,从而最大限度提高通讯效率。
同一个CPU有不同的CAN帧ID,可以实现不同的通讯速率,满足高效的通讯要求。
本发明可有效减少CAN通讯的帧碰撞次数,提高CAN通讯的数据流量,提高CAN通讯的实时性,且不必变更现有CAN***的硬件就可以实现,因此可以大量应用。
附图说明
图1为动态同步CAN通讯的工作原理图。图中上部是CAN总线的硬件说明和数据的流向,CAN总线的数据首先与各个节点的总线驱动器相连,驱动器把总线差分信号变为单端信号与CAN控制器相连,CPU通过查询或中断标志判断数据接收是否完成和发送是否完成,并读取或写入CAN数据帧。
图1中的下面的框内是CAN信息发送和接收软件,一般情况下,这部分软件在CAN接受中断中完成,也可以在查询软件中完成。本发明的核心内容就是在该部分的软件中实现的。
图2是动态帧ID实现的一种方法,在帧ID队列中增加帧ID的方法是,主要在接收程序中接收到一个新的帧ID,就自动添加到队列中;删除帧ID的方法是检测一定时间内目标帧ID没有到达就自动从队列中删除,删除帧ID的软件一般可以在最短服务程序中完成,也可以在查询查询的完成。
具体实施方式
为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
为了克服现有的CAN通讯中帧冲突问题,本发明提出基于帧ID队列方法实现准同步功能。
图1下面框中的程序是实现本发明的帧ID工作原理。图2说明的是帧ID增加和删除的方法。
CPU在完成对***CAN的初始化后,就用查询方式或接收中断方式进入图1所示的方框软件中。只要CAN总线上有CAN数据传输,CPU就会接收该帧的帧ID并存储在一个数组中(称该数组为帧ID队列)。按照帧ID的数据大小对帧队列进行排序,数据小的排列在前,数据大的排列在后,并且把本身需要发送的CAN帧的帧ID也按照大小顺序***在这个队列中,现成一个完整的帧队列;然后判断在这个队列中,本帧ID以前的帧是否已经全部接收完成,如果接收完成,就发送本帧CAN数据;如果本帧ID以前的帧没有全部接收,就等待一定时间,超过该时间仍然没有收到有效的帧ID数据,就把该帧的帧ID自动从队列中剔除,如果接收到其它的帧ID,就把该帧ID添加到帧ID队列中,其原理如图2所示。
图2中相邻两帧的时间间隔Tth的含义是:正常通讯时,完成一个最大帧数据传输所需要的时间间隔。Tth的最小值=帧数据位数*位时间,例如,CAN通讯的波特率是250kbps,最大的数据帧是8个字节,采用CAN2.0B模式,Tth=(32+64)*4=384us,其中32是帧ID需要的位数,64是8个字节需要的位数,4是为位时间。实际应用时,考虑到CPU的相应时间、发送和接收延迟等影响,该值可以适当增大,如设定为500us。Tth用于判断是否删除某个帧ID的时间长度,当某个帧ID在其应该到大的时间段没有发出数据帧,并且时间超过Tth时间长度,就认为该节点不存在。
对于一个已经删除的帧ID,可以随时再自动***到帧队列中,这个帧ID队列重新排列。
采用帧ID队列方式实现CAN多主通讯,每个CAN节点都明确知道网络中有哪些节点在通讯,并且各自的优先级有明确规定,各自CPU的帧ID都可以找到自己发送数据的时刻,只要全部的节点都严格按照这个方式通讯,就不会发生帧碰撞,大大减少帧冲突,提高CAN通讯的数据量。本发明在车辆电控***中,对提高CAN通讯效率的实时性非常有效。
在实际的CAN网络中,一般都是约定了各个节点的帧ID、帧数据、帧频率等参数,采用本发明后,不影响原来的通讯方式,但可以防止帧碰撞的发生。
本发明可以动态增加节点,也没有主从CPU要求。
本发明一个缺点是就是要求CPU接收全部的CAN信息,增加了CPU的负担。但是,随着微电子技术的发展,大多数情况下,对于最高速度只有1MHz的CAN通讯,CPU的速度可以满足要求。特别是在车辆实时网络领域,目前的CPU处理能力完全可以胜任这个要求。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (7)
1.一种动态同步的CAN通讯设备,其特征在于,各个CPU之间没有主从关系,通讯顺序按照帧ID优先级进行动态排序,最先发送的是最高优先级的帧,然后依次发送较低优先级的帧。每个参与通讯的CPU始终接收全部的CAN帧,并把接收到的帧按照帧ID的优先级进行排队,然后将本CPU的帧ID在这个队列的中自动定位,当轮到本帧ID发送时刻后,立即启动发送。
2.一种动态同步的CAN通讯方法,其特征在于,参与通讯的CPU接收全部的CAN信息,并且根据接收到的CAN帧,在内存中动态建立一个帧发送队列,该队列按照接收帧ID的优先级从高到低排列,并且把本CPU要求发送的帧ID也定位在这个队列中,当到本帧ID时刻,就启动发送功能。
3.如权利要求2所述的CAN通讯方法,其特征在于,上电启动后,各个CPU都有一个缺省的帧队列,该队列是进行***设计时已经规划好的队列,作为起始发送数据顺序队列。
4.如权利要求2所述的CAN通讯方法,其特征在于,每个帧发送都是按照帧ID的优先级顺序发送。
5.如权利要求2所述的CAN通讯方法,其特征在于,当有一个新的帧ID参与通讯时,会自动在各个CPU的帧队列中自动***,下次通讯周期会自动把总线让给该帧,从而避免避免数据冲突。
6.如权利要求2所述的CAN通讯方法,其特征在于,当一个高级的帧ID或低级的帧ID由于某种原因不发送数据时,各个CPU的帧发送队列会自动从队列中剔除该帧,从而最大限度提高通讯效率。
7.如权利要求2所述的CAN通讯方法,其特征在于,同一个CPU有不同的CAN帧ID,可以实现不同的通讯速率,满足高效的通讯要求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510025388.5A CN104486187B (zh) | 2015-01-19 | 2015-01-19 | 一种动态同步的can通讯设备和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510025388.5A CN104486187B (zh) | 2015-01-19 | 2015-01-19 | 一种动态同步的can通讯设备和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104486187A true CN104486187A (zh) | 2015-04-01 |
CN104486187B CN104486187B (zh) | 2018-10-02 |
Family
ID=52760693
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510025388.5A Expired - Fee Related CN104486187B (zh) | 2015-01-19 | 2015-01-19 | 一种动态同步的can通讯设备和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104486187B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105539196A (zh) * | 2015-12-08 | 2016-05-04 | 北京理工大学 | 电动汽车的反馈式变优先级组合传输网络化控制装置 |
CN106157588A (zh) * | 2016-08-15 | 2016-11-23 | 扬州恒隆软件有限公司 | 快速高精度光电直读式智能水表*** |
CN109471425A (zh) * | 2018-12-14 | 2019-03-15 | 上海星融汽车科技有限公司 | 一种识别商用车obd口can通讯针脚波特率的方法 |
CN111106986A (zh) * | 2018-10-29 | 2020-05-05 | 什维新能源有限公司 | 用于控制器局域网络的鲁棒性增强的路由器 |
-
2015
- 2015-01-19 CN CN201510025388.5A patent/CN104486187B/zh not_active Expired - Fee Related
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105539196A (zh) * | 2015-12-08 | 2016-05-04 | 北京理工大学 | 电动汽车的反馈式变优先级组合传输网络化控制装置 |
CN106157588A (zh) * | 2016-08-15 | 2016-11-23 | 扬州恒隆软件有限公司 | 快速高精度光电直读式智能水表*** |
CN111106986A (zh) * | 2018-10-29 | 2020-05-05 | 什维新能源有限公司 | 用于控制器局域网络的鲁棒性增强的路由器 |
CN109471425A (zh) * | 2018-12-14 | 2019-03-15 | 上海星融汽车科技有限公司 | 一种识别商用车obd口can通讯针脚波特率的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104486187B (zh) | 2018-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105512081B (zh) | 用于以可转换的数据速率进行串行数据传输的方法和装置 | |
CN104317765B (zh) | 一种基于串口通讯的一对多通讯***和实现方法 | |
CN105354159A (zh) | 一种基于rs485分布式总线***的控制方法 | |
CN104486187A (zh) | 一种动态同步的can通讯设备和方法 | |
CN106411740A (zh) | 基于以太网控制器的网络端口扩展方法 | |
CN102098113B (zh) | 基于aloha和tdma的水声传感器网络mac层协议的实现方法 | |
CN102857397A (zh) | 一种多主异步双工差分总线及通讯方法 | |
CN106155014A (zh) | 一种工业互联网现场层宽带总线实时性实现方法 | |
CN102811152B (zh) | 一种多主总线网络通讯实时交易数据交换实现方法 | |
US20180109398A1 (en) | Master communication device for a token network | |
CN104426758A (zh) | 传输控制***、装置及方法 | |
CN104247354A (zh) | 接口装置以及总线*** | |
CN104035901A (zh) | 一种ttcan总线对时及发送数据的方法 | |
CN202617155U (zh) | 多主机rs485通信装置 | |
CN109889312A (zh) | 多链路数据传输方法、装置及计算机可读存储介质 | |
CN105991481A (zh) | 一种报文转发方法及装置 | |
CN113904762B (zh) | 一种带环形缓冲区的全双工485总线通信***及方法 | |
CN103441914B (zh) | As5643总线中包含等时数据包的传输方法 | |
CN107483308A (zh) | 一种基于时间片令牌机制的以太网通讯方法 | |
CN103618681A (zh) | 一种弹性的网络带宽控制方法及其*** | |
CN104243189B (zh) | 一种基于同一信道的多设备通信方法及其通信*** | |
CN107357756A (zh) | 多设备在主模式下进行iic通信的*** | |
CN105141483A (zh) | 基于can总线的多节点网络最小通信间隔测定方法 | |
CN102681969A (zh) | 基于can总线的长帧数据传输卡和长帧数据传输方法 | |
CN103023738B (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20181002 Termination date: 20200119 |
|
CF01 | Termination of patent right due to non-payment of annual fee |