CN104486187B - 一种动态同步的can通讯设备和方法 - Google Patents

一种动态同步的can通讯设备和方法 Download PDF

Info

Publication number
CN104486187B
CN104486187B CN201510025388.5A CN201510025388A CN104486187B CN 104486187 B CN104486187 B CN 104486187B CN 201510025388 A CN201510025388 A CN 201510025388A CN 104486187 B CN104486187 B CN 104486187B
Authority
CN
China
Prior art keywords
frame
cpu
queue
communication
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.)
Expired - Fee Related
Application number
CN201510025388.5A
Other languages
English (en)
Other versions
CN104486187A (zh
Inventor
王建群
曹宁
薛晓卿
滕飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Institute of Technology BIT
Original Assignee
Beijing Institute of Technology BIT
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Institute of Technology BIT filed Critical Beijing Institute of Technology BIT
Priority to CN201510025388.5A priority Critical patent/CN104486187B/zh
Publication of CN104486187A publication Critical patent/CN104486187A/zh
Application granted granted Critical
Publication of CN104486187B publication Critical patent/CN104486187B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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通讯的实时性对车辆的安全性非常重要,采用本方案对提高车辆的安全性有很好的作用,因此应用前景广泛。
当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网络为例进行说明。
图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 (6)

1.一种动态同步的CAN通讯系统,其特征在于,该系统包括多个CPU,同一个CAN网络中的各个CPU之间没有主从关系,通讯顺序按照帧ID优先级进行动态排序,最先发送的是最高优先级的帧,然后依次发送较低优先级的帧,每个参与通讯的CPU始终接收全部的CAN帧,并把接收到的帧按照帧ID的优先级从高到低进行排队,然后将本CPU的帧ID在这个队列中按照从小到大自动定位,当轮到本帧ID发送时刻后,立即启动发送。
2.一种动态同步的CAN通讯方法,其特征在于,同一个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的帧发送队列会自动从队列中剔除该帧。
CN201510025388.5A 2015-01-19 2015-01-19 一种动态同步的can通讯设备和方法 Expired - Fee Related CN104486187B (zh)

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 CN104486187A (zh) 2015-04-01
CN104486187B true 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)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105539196B (zh) * 2015-12-08 2017-10-10 北京理工大学 电动汽车的反馈式变优先级组合传输网络化控制装置
CN106157588B (zh) * 2016-08-15 2022-04-29 扬州恒隆软件有限公司 快速高精度光电直读式智能水表系统
US20200136965A1 (en) * 2018-10-29 2020-04-30 Ten-D Energies, Inc. Robustness enhancing router for controller area networks
CN109471425A (zh) * 2018-12-14 2019-03-15 上海星融汽车科技有限公司 一种识别商用车obd口can通讯针脚波特率的方法

Also Published As

Publication number Publication date
CN104486187A (zh) 2015-04-01

Similar Documents

Publication Publication Date Title
CN104486187B (zh) 一种动态同步的can通讯设备和方法
EP3352431A1 (en) Network load balance processing system, method, and apparatus
CN101984573B (zh) 分布式实现lacp标准状态机的方法及系统
CN101039310B (zh) 链路共享服务装置以及通信方法
CN105245271B (zh) 卫星通信网络加速装置以及方法
CN104170353A (zh) Tcp链路配置方法、装置及设备
CN103795632A (zh) 一种数据报文传输方法及相关设备、系统
CN105262836A (zh) 服务器推送信息的方法及客户端接收推送信息的方法
CN102811152B (zh) 一种多主总线网络通讯实时交易数据交换实现方法
CN102098113A (zh) 基于aloha和tdma的水声传感器网络mac层协议的实现方法
CN107567107A (zh) 一种传输数据的方法及装置
CN103607302A (zh) 故障信息上报方法、监控设备及管理设备
CN108770065A (zh) 一种控制空口资源的方法、设备及系统
CN108551679A (zh) 基于局域网Mesh技术的无线设备通信方法及系统
CN109889312A (zh) 多链路数据传输方法、装置及计算机可读存储介质
CN101453751A (zh) 窄带网络环境下传输大文件数据的方法
CN103338158A (zh) 一种goose报文传输时延抖动抑制方法
CN106060955A (zh) 基于三类服务的无线传感器网络mac协议轮询控制方法及系统
CN104753749A (zh) 一种多主机通信方法及通信系统
CN107659456A (zh) 一种基于rs485通信的数据冲突传输方法
CN102624620B (zh) 一种基于令牌帧的以太网传输方法的传输系统
CN104753813B (zh) Dma传送报文的方法
CN104184729A (zh) 一种报文处理方法和装置
CN107454208A (zh) 一种为从节点设备分配网络地址的方法
CN103746842A (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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20181002

Termination date: 20200119