首页> 中国专利> 一种传感器网络CAN总线帧格式的标识符分配方法

一种传感器网络CAN总线帧格式的标识符分配方法

摘要

本发明公开了一种传感器网络CAN总线帧格式的标识符分配方法,在若干传感器通过挂载在一根CAN总线上而与传感器网络控制器连接的传感器网络中,将标识符字段分为优先级管理字段和传感器识别字段,当至少两个传感器竞争CAN总线而发送数据至传感器网络控制器时,分别以传感器所请求发送数据的实时性和周期性作为判据而相应地更新优先级管理字段的值Valpriority,并按照优先级管理字段的值Valpriority由小至大的顺序,逐个发送传感器请求发送的数据,直至最后一个传感器将请求发送的数据发送完毕。本发明可避免低优先级的传感器因无法竞争到CAN总线发送数据而造成无法满足实时性的问题,甚至出现“饿死”现象。

著录项

  • 公开/公告号CN105119793A

    专利类型发明专利

  • 公开/公告日2015-12-02

    原文格式PDF

  • 申请/专利权人 电子科技大学;

    申请/专利号CN201510423606.0

  • 发明设计人 顾庆水;陈伟;伍瑞卿;

    申请日2015-07-20

  • 分类号H04L12/40(20060101);H04L29/12(20060101);

  • 代理机构51221 四川力久律师事务所;

  • 代理人林辉轮;王芸

  • 地址 611731 四川省成都市高新(西)区西源大道2006号

  • 入库时间 2023-12-18 12:40:40

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-03-08

    授权

    授权

  • 2015-12-30

    实质审查的生效 IPC(主分类):H04L12/40 申请日:20150720

    实质审查的生效

  • 2015-12-02

    公开

    公开

说明书

技术领域

本发明涉及传感器网络中使用CAN总线的相关领域,特别涉及一种传感器网络CAN 总线帧格式的标识符分配方法。

背景技术

控制器局域网络(ControllerAreaNetwork,简称CAN总线)由德国博世(BOSCH)公 司在20世纪80年代专门为汽车行业开发的一种串行通信总线,属于现场总线范畴,其高性 能、高可靠性以及独特的设计而越来越受到人们的重视。

由于CAN总线本身的特点,其应用范围目前已不再局限于汽车行业,而向自动控制、 航空航天、航海、机器人、数控机床、医疗器械及传感器等领域发展。

CAN总线使用的是串行数据传输方式,能够以1Mbps的速率在40m的双绞线上运 行,也可以使用同轴电缆、光导纤维等其它通信介质,而且在CAN总线上的总线协议支持 多主控制器。

当CAN总线上的一个节点(站)发送数据时,它以报文形式广播给网络中所有节点。因 此对每个节点来说,无论数据是否是发给自己的,都对其进行接收。每组报文开头的11位 字符(标准帧格式)或29位字符(扩展帧格式)为标识符,并用作定义报文的优先级,而 这种报文格式称为面向内容的编址方案,而且在同一系统中标识符是唯一的。

连接CAN总线的每个节点在发送数据帧或远程帧时均作为主机进行发送,并采用无损 仲裁的载波侦听/冲突避免(CarrierSenseMultipleAccess/CollisionAvoidance,CSMA/CA) 通信仲裁机制。当多个节点检测到总线空闲同时发送数据时,会产生竞争,在竞争过程中, 拥有更高优先级的节点占用总线,继续发送数据,其它节点则停止数据发送并退出总线竞 争,等待检测到总线介质空闲后再启动数据的发送进程。基于竞争的无损仲裁机制依赖于标 识符和远程发送请求位,对于两个不同标识符的帧,具有较低二进制数值标识符的帧拥有较 高的优先级。

在传感器网络中使用CAN总线作为数据传输总线时,传感器网络控制器通过CAN总 线连接各个类型的传感器,传感器接收传感器网络控制器的命令,并根据要求最终将传感器 采集的数据传送至控制器,控制器接收各个传感器的数据后对数据进行相应处理、存储、显 示等。在实际应用中,挂接的传感器往往是其功能各异,因此每个传感器的数据采集间隔、 每次采集的数据长度、传感器所采集数据的实时性要求各异。对于CAN总线,数据传送的 优先级主要通过数据帧中的标识符来确定。在传感器网络中,根据每个传感器在整个传感器 网络中的要求,分配一个唯一的标识符,此时每个传感器在整个传感器网络中数据传输的优 先级确定下来。根据CAN总线的仲裁机制,在多个节点同时发送数据时,优先级最高的节 点会占用总线,而其它节点则主动退出数据发送,等下一次总线的空闲。

这种机制带来一个不利情况是优先级低的传感器有可能在每次总线竞争中因冲突而退出 数据发送,最终造成优先级低的传感器所采集的数据无法实时送出,特别是在总线传输负载 较重的情况下,此类情况尤为明显,甚至会出现低优先级的数据出现“饿死”现象。

因此,需要一种有效地解决在总线传输负载较重时优先级低的传感器所采集的数据无法 实时送出的通信机制或方法。

发明内容

为解决上述技术问题,本发明提供一种传感器网络CAN总线帧格式的标识符分配方 法。

本发明的技术方案为:在若干传感器通过挂载在一根CAN总线上而与传感器网络控制 器连接的传感器网络中,将标识符字段分为优先级管理字段和传感器识别字段,所述优先级 管理字段的值Valpriority相对越小的数据其优先级越高,所述传感器识别字段分别与所述CAN 总线上的若干所述传感器相对应;其中,

当至少两个所述传感器竞争所述CAN总线而发送数据至所述传感器网络控制器时,分 别以每个所述传感器所请求发送数据的实时性和周期性作为判据而相应地更新每个所述传感 器请求发送数据的所述优先级管理字段的值Valpriority,并按照更新后优先级管理字段的值 Valpriority由小至大的顺序,逐个发送每个所述传感器请求发送的数据,直至最后一个所述传 感器将请求发送的数据发送完毕。

根据一种优选的实施方式,在发送数据前,将所有传感器的数据的第一个CAN帧数据 的所述优先级管理字段的所有位置1;

当检测到CAN总线上至少有两个所述传感器同时请求发送数据,判定由所述传感器请 求发送的数据初始状态的实时性所确定的判据Jinit确定;其中,

所述判据Jinit大于或等于1,所述传感器请求发送的数据不具有实时性,并将所述传感 器请求发送数据的所述优先级管理字段的值Valpriority置为最大值;

所述判据Jinit小于1,所述传感器请求发送的数据具有实时性,则判定由所述传感器的 工作模式所确定的请求发送数据的周期性,其中,

所述传感器请求发送数据为非周期性,将所述传感器请求发送的数据的所述优先级管理 字段的值Valpriority置为最小值;

所述传感器请求发送数据为周期性,则根据由所述传感器请求发送的数据当前状态的实 时性所确定的判据Jpriority,更新所述传感器请求发送的数据的所述优先级管理字段的值 Valpriority

根据一种优选的实施方式,当更新所述传感器请求发送的数据的所述优先级管理字段的 值Valpriority后,且存在所述传感器请求发送的数据的所述优先级管理字段的值Valpriority相等 时,按照所述传感器请求发送数据的所述传感器识别字段的值Valsensor_ID由小至大的顺序, 逐个发送每个所述传感器请求发送的数据。

根据一种优选的实施方式,所述判据Jpriority的计算方法为,

Jpriority=((Lsensor-Lsenteata)/8×tCAN)/(tdeadline-tsent)

其中,Lsensor为所述传感器采集数据的长度,tCAN为传输一帧CAN数据所需要的时间, tdeadline所述传感器开始发送采集数据至结束所需要的时间,Lsentdata为所述传感器已发送采集 数据的长度,tsent为已发送采集数据所用的时间。

根据一种优选的实施方式,当Lsentdata=0,tsent=0时,所述判据Jpriority等于所述判据Jinit

根据一种优选的实施方式,所述传感器具有多种采集数据工作模式,以所有采集数据工 作模式中最大的判据Jinit与其他所述传感器的判据Jinit作比较。

根据一种优选的实施方式,根据由所述传感器请求发送的数据的当前状态的实时性所确 定的判据Jpriority,更新所述传感器请求发送的数据的所述优先级管理字段的值Valpriority的步 骤为,

所述判据Jpriority小于或等于判决门限Jth并且当前所述优先级管理字段的值Valpriority小于 所述优先级管理字段的值Valpriority的最大值,当前所述优先级管理字段的值Valpriority加一;

所述判据Jpriority大于所述判决门限Jth并且当前所述优先级管理字段的值Valpriority大于所 述优先级管理字段的值Valpriority的最小值,当前所述优先级管理字段的值Valpriority减一。

根据一种优选的实施方式,所述判决门限Jth的计算方法为,

Jth(i)=Jinit(i)Σk=1NJinit(k)

其中,N为所述传感器网络中所述传感器的总数量,Jth(i)、Jinit(i)分别表示第i个传感器 的所述判决门限和第i个传感器请求发送的数据的初始状态所确定的判据Jinit,1≤i≤N。

根据一种优选的实施方式,所述优先级管理字段的值Valpriority的计算方法为,

Valpriority=Σi=0Lpriority-1PR(i)×2i

其中,PR(i)为优先级管理字段从低为到高位对应的位值。

根据一种优选的实施方式,所述优先级管理字段位于CAN总线帧格式中的所述标识符 字段的高位,所述传感器识别字段位于CAN总线帧格式中的所述标识符字段的低位,并且 所述传感器网络中所述传感器的数量,所述优先级管理字段的位长 Lpriority至少为1;其中,Lsensor_ID为所述传感器识别字段的位长。

本发明的有益效果在于:在本发明应用的传感器网络中,当至少两个传感器竞争CAN 总线发送数据时,分别以传感器所请求发送的数据的实时性和周期性作为判据,而相应地更 新优先级管理字段的值Valpriority,并按照更新后优先级管理字段的值Valpriority由小至大的顺 序,逐个发送每个传感器请求发送的数据,直到最后一个传感器将请求发送的数据发送完 毕,其中,当存在的传感器的优先级管理字段的值Valpriority相等时,按照的传感器的的传感 器识别字段的值由小至大的顺序逐个发送每个传感器请求发送的数据。本发明将在同一个时 刻竞争CAN总线的多个传感器所请求发送的数据全部发送完毕之后,才重新检测CAN总 线上是否有传感器请求发送数据。可避免低优先级的传感器因无法竞争到CAN总线发送数 据而造成无法满足实时性的问题,甚至出现“饿死”现象。

附图说明

图1是本发明应用的传感器网络结构图;

图2是本发明CAN帧数据的组成示意图;

图3是本发明发送CAN帧数据的流程图;

图4是本发明优先级管理字段动态变化的流程图;

图5是本发明优先级管理字段的值Valpriority更新流程图。

附图标记列表

100:CAN总线101:传感器网络控制器

具体实施方式

下面结合附图进行详细说明。

结合图1所示的本发明应用的传感器网络结构图;其中,传感器网络中包括有N个传 感器和传感器网络控制器101,N个传感器通过挂载在CAN总线100上而与传感器网络控 制器连接。

传感器网络控制器101通过CAN总线100下发各种命令控制传感器1、传感器 2、····传感器N,各个传感器根据命令要求将采集的数据通过CAN总线100送至传感器网 络控制器101,并且各个传感器之间不进行数据或命令的传递。

在整个传感器网络中,只有一个主控器件即传感器网络控制器101。在该传感器网络的 CAN总线上所传送的数据特征包括周期性数据和非周期性数据,其中,周期性数据为传感 器采集的数据,对一个特定的传感器而言,传感器一上电启动正常工作后,在较长的时间段 内,会持续的、稳定的、周期性的产生采集数据,并且这些数据是等长的、等时间间隔的, 这类数据一般要求有一定的实时性;非周期性的数据分两类,一类是非周期性实时数据,一 类是非周期性非实时数据,非周期性实时数据如传感器出现故障的消息需要尽快发送至传感 器网络控制器101,而非周期性非实时数据如传感器的当前运行状态信息,并不会影响传感 器工作,则可最后发送。

结合图2所示的本发明CAN帧数据的组成示意图;本发明所提供的CAN总线帧格式 中标识符分配方法是标识符分配方法是将标识符字段分为优先级管理字段和传感器识别字 段,优先级管理字段的值Valpriority相对越小的数据其优先级越高,传感器识别字段分别与 CAN总线上的若干传感器相对应,用于区分CAN总线100上的若干传感器。

具体的,优先级管理字段位于CAN总线帧格式中的标识符字段的高位,优先级管理字 段的位长表示为Lpriority,优先级管理字段的位长Lpriority至少为1,即相当于至少CAN总线 100上挂载两个传感器。

传感器识别字段位于CAN总线帧格式中的标识符字段的低位,传感器识别字段的位长 表示为Lsensor_ID,传感器网络中传感器的总数量与传感器识别字段的位长Lsensor_ID的关系 为:

结合图3所示的本发明发送CAN帧数据的流程图;其中,当至少两个传感器竞争CAN 总线100而发送数据至传感器网络控制器101时,分别以每个传感器所请求发送数据的实时 性和周期性作为判据而相应地更新每个传感器请求发送数据的优先级管理字段的值 Valpriority,并按照更新后优先级管理字段的值Valpriority比较各传感器请求发送数据的优先级。

具体的,在发送数据前,将所有传感器的数据的第一个CAN帧数据的优先级管理字段 的所有位置1,当检测到CAN总线100上只有一个传感器请求发送数据时,则该传感器直 接通过CAN总线100发送传感器采集的数据,发送完毕后立即继续检测CAN总线100上 是否有传感器请求发送数据。

检测到CAN总线100上有至少两个传感器同时请求发送数据,以每个传感器所请求发 送数据的实时性和周期性作为判据,并相应地更新每个传感器请求发送数据的优先级管理字 段的值Valpriority后,并按照更新后优先级管理字段的值Valpriority由小至大的顺序,逐个发送 每个传感器请求发送的数据,直至最后一个传感器将请求发送的数据发送完毕。

结合图4所示的本发明优先级管理字段动态变化的流程图;当检测到CAN总线100上 有至少两个传感器同时请求发送数据,以每个传感器所请求发送数据的实时性和周期性作为 判据,其中,判定传感器请求发送数据的实时性的判据为Jpriority,判定传感器请求发送数据 的周期性是以传感器的工作模式为判据。

具体的,判据Jpriority的计算方法为,

Jpriority=((Lsensor-Lsentdata)/8×tACN)/(tdeadline-tsent)

其中,Lsensor为传感器采集数据的长度,tCAN为传输一帧CAN数据所需要的时间, tdeadline传感器开始发送采集数据至结束所需要的时间,Lsentdata为传感器已发送采集数据的长 度,tsent为已发送采集数据所用的时间。

tCAN的计算公式为,

tCAN=(8×Ldata+Lconrol+13+Lpadding)×τbib

τbit为CAN总线的位时间,若CAN总线速率为1Mbps,则τbit为1μs,Ldata为一帧 CAN数据中数据段的字节数,0≤Ldata≤8,Lcontrol为一帧CAN数据中控制段的总位数,对 于标准数据帧格式,Lcontrol=34,对于扩展数据帧格式,Lcontrol=54。Lpadding为一帧中填充位 的总数,通常Lpadding的计算公式为,

其中,表示为向下取整。

由传感器请求发送的数据的初始状态的实时性所确定的判据Jinit是当Lsentdata=0,tsent=0 时,判据Jpriority具有的值,相当于判据Jinit的计算方法为,

Jinit=(Lsensor/8×tCAN)/tdeadline

具体的,以传感器所请求发送数据的实时性和周期性作为判据,而相应地更新每个传感 器请求发送数据的优先级管理字段的值Valpriority的过程为:

如果传感器请求发送的数据所确定的判据Jinit大于或等于1,则该传感器请求发送的数 据不具有实时性,并将传感器请求发送的数据的优先级管理字段的值Valpriority置为最大值, 即相当于将优先级管理字段的所有位置1。

如果传感器请求发送的数据所确定的判据Jinit小于1,则该传感器请求发送的数据具有 实时性,则判定由传感器的工作模式所确定的请求发送数据的周期性。

如果传感器请求发送数据为非周期性,则将该传感器请求发送的数据的优先级管理字段 的值Valpriority置为最小值,即相当于将优先级管理字段的所有位置0。

如果传感器请求发送数据为周期性,则根据由传感器请求发送的数据当前状态的实时性 所确定的判据Jpriority,更新传感器请求发送的数据的优先级管理字段的值Valpriority

所有同时请求发送数据的传感器所发送数据的优先级管理字段的确定后,发送具有优先 级管理字段的值Valpriority最小的数据。

请求发送的数据未发送完毕,则重新更新未发送完毕的数据的优先级管理字段,并继续 发送具有优先级管理字段的值Valpriority最小的数据,直到所有请求发送的数据发送完毕。

在本发明中,更新传感器请求发送的数据的优先级管理字段的值Valpriority后,按照更新 后优先级管理字段的值Valpriority比较各传感器请求发送数据的优先级时,存在传感器请求发 送的数据的优先级管理字段的值Valpriority相等,则按照传感器请求发送数据的传感器识别字 段的值Valsensor_ID由小至大的顺序,逐个发送每个传感器请求发送的数据。

结合图5所示的本发明周期性实时数据的优先级管理字段的值Valpriority更新流程图;根 据由传感器请求发送的数据的当前状态的实时性所确定的判据Jpriority,更新传感器请求发送 的数据的优先级管理字段的值Valpriority的步骤为:

将各个待发送周期性实时数据的判据Jpriority计算出后,分别与判决门限Jth相比较。

判据Jpriority小于或等于判决门限Jth,当前优先级管理字段的值Valpriority加一,并且当前 优先级管理字段的值Valpriority应小于优先级管理字段的值Valpriority的最大值,否则优先级管 理字段的值将溢出。

判据Jpriority大于判决门限Jth,当前优先级管理字段的值Valpriority减一,并且当前优先级 管理字段的值Valpriority应当大于优先级管理字段的值Valpriority的最小值,若当前优先级管理 字段的值Valpriority为优先级管理字段的值Valpriority的最小值,则与非周期性实施数据相冲 突。

其中,判决门限Jth的计算方法为,

Jth(i)=Jinit(i)Σk=1NJinit(k)

其中,N为传感器网络中传感器的总数量,Jth(i)、Jinit(i)分别表示第i个传感器的判决门 限和第i个传感器请求发送的数据的初始状态所确定的判据Jinit,1≤i≤N。

本发明中的优先级管理字段的值Valpriority的计算方法为,

Valpriority=Σi=0Lpriority-1PR(i)×2i

其中,PR(i)为优先级管理字段从低为到高位对应的位值。

所有同时请求发送的周期性实时数据的优先级管理字段确定后,发送具有优先级管理字 段的值Valpriority最小的周期性实时数据。

请求发送的周期性实时数据未发送完毕,则重新更新未发送完毕的周期性实时数据的优 先级管理字段,并继续发送具有优先级管理字段的值Valpriority最小的周期性实时数据,直到 所有请求发送的周期性实时数据发送完毕。

本发明将在同一个时刻竞争CAN总线的多个传感器的所请求发送的数据全部发送完毕 之后,才重新检测CAN总线上是否有传感器请求发送数据。可避免低优先级的传感器因无 法竞争到CAN总线发送数据而造成无法满足实时性的问题,甚至出现“饿死”现象。

本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件 完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选 地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实 施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本 发明不限制于任何特定形式的硬件和软件的结合。

当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本 领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应 属于本发明的权利要求的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号