CN104486187B - 一种动态同步的can通讯设备和方法 - Google Patents
一种动态同步的can通讯设备和方法 Download PDFInfo
- 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
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通讯进行大量数据传输,通讯的频次较高时,由于各个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的帧发送队列会自动从队列中剔除该帧。
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)
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通讯针脚波特率的方法 |
-
2015
- 2015-01-19 CN CN201510025388.5A patent/CN104486187B/zh not_active Expired - Fee Related
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 |