CN108063687B - 一种can总线网络中故障节点判定方法 - Google Patents
一种can总线网络中故障节点判定方法 Download PDFInfo
- Publication number
- CN108063687B CN108063687B CN201711320926.9A CN201711320926A CN108063687B CN 108063687 B CN108063687 B CN 108063687B CN 201711320926 A CN201711320926 A CN 201711320926A CN 108063687 B CN108063687 B CN 108063687B
- Authority
- CN
- China
- Prior art keywords
- node
- bus
- receiving
- state
- fault
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0677—Localisation of faults
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L2012/40208—Bus networks characterized by the use of a particular bus standard
- H04L2012/40215—Controller Area Network CAN
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明提供了一种CAN总线网络中故障节点判定方法,当接收错误计数器大于等于错误阈值时,开始计时,如果超过时间阈值,认为该节点的接收能力有问题,极有可能是故障节点;当该节点进入总线关闭状态时,令统计总线关闭状态次数的计数器加1,如果超过次数阈值,认为该节点的发送能力有问题,极有可能是故障节点。如果该节点的接收和发送都存在问题,那么可以判定该节点是故障节点,需要将该控制器关闭。该方法可以准确的找出网络中存在故障的节点,使其不至于一直占据总线、提高通信的效率,同时又监测了该节点处于发送和接收两种状态下的正确度,不至于误判,提高了精确性。
Description
技术领域
本发明涉及一种CAN总线网络中故障节点判定方法,属于CAN总线通信领域。
背景技术
控制器局域网Controller Area Network,简称CAN,是一种国际标准化的异步的、串行的、多主机的通信协议,CAN总线是一种现场总线,它具有多主机、非破坏性仲裁、报文滤波等的优良特性,被广泛应用到汽车、机械、纺织、医疗器械、食品等领域。
虽然CAN总线有很多优点,但是由于其自身的一些限制因素以及由于断路、接地等的一些意外情况,经常会出现某个节点在发送或接收过程中一直出错,然后不断发送错误帧的情况。
如果该节点作为发送节点,当在发送过程中检测到错误时,根据错误的种类的不同,发送节点的发送错误计数器的值会或加8,或加0;如果期间发送正确一次,则发送错误计数器的值减1;假设该发送节点连续出错32次,发送错误计数器的值会增加到32*8=256,根据CAN协议的要求:当发送错误计数器值大于等于256时,会导致该节点进入总线关闭状态。这里需要特别注意的一点是:节点是否进入总线关闭状态,只是根据发送计数器的值是否大于等于 256来判断。
如果该节点作为接收节点,当在接收过程中检测到错误时,根据错误的种类的不同,接收错误计数器的值会或加8,或加1,或加0;如果期间接收正确一次,当目前接收错误计数器的值小于128时,接收错误计数器会减1;当目前接收错误计数器的值大于等于128时,接收错误计数器的值减为119~127 中的某个数,本项目中设为127。
如果在CAN总线网络中,某个节点总是出错,不停的发送错误帧,就会导致总线上一直在传输错误帧,从而阻碍了其他节点的正常的数据帧的发送,使得总线的通信效率大大降低,浪费总线资源,对整个CAN总线系统间的通信造成了极大的干扰。
另外,虽然协议规定:当发送错误计数器的数值大于等于256时,会令该节点进入总线关闭状态,暂时的退出通信,进入bus idle状态,但是这只是针对该节点处于发送状态时,在发送过程中经常出错的情况。发送过程中检测到错误,不一定是该发送节点的原因,也有可能是该节点对应的接收节点产生了故障,从而导致发送节点在发送过程中检测到了错误的数据帧。所以,仅仅根据某个节点是否进入总线关闭状态,来判断该节点是否为故障节点,是不严谨不精确的,容易造成误判。
所以,需要一种方法来准确的找出CAN总线中的故障节点,提高通信的效率,提高网络的可靠性。
发明内容
本发明的技术解决的问题是:克服现有技术的不足,提供了一种CAN总线网络中故障节点判定方法,该方法可以准确的找出网络中存在故障的节点,使其不至于一直占据总线、浪费资源,改善通信的效率,提高网络可靠性,同时又兼顾监测了该节点处于发送和接收两种状态下的正确性,不至于误判,提高了判断的精确度。
本发明的技术方案如下:
提供一种CAN总线网络中故障节点判定方法,包括如下的步骤:
(1)清零周期计时器,并开始计时,将K值置1;
(2)判断第K个节点处于发送状态还是接收状态,如果处于接收状态进入步骤(3),如果处于发送状态则进入步骤(4);
(3)查看该节点的接收错误计数器的数值大小,判断接收错误计数器的数值是否大于等于错误阈值,如果大于等于错误阈值,则将该节点的计时器增加时间T1,如果该节点的计时器的计时时间大于时间阈值时,输出疑似接收故障节点信号,然后查看是否存在疑似发送故障节点信号,如果存在,则输出该节点为故障节点信号;进入步骤(5);
(4)获取该节点进入总线关闭的次数,判断该次数是否超过次数阈值,如果超过次数阈值,则输出疑似发送故障节点信号,查看是否存在疑似接收故障节点信号,如果存在,则输出该节点为故障节点信号;进入步骤(5);
(5)判断是否为最后一个节点,如果为最后一个节点,则等待周期计时器计时至时间T2,返回步骤(1);如果不是最后一个节点则将K的值加1,返回步骤(2)。
优选的,步骤(2)中判断第K个节点处于发送状态还是接收状态的方法为:查看该节点的状态寄存器的第四位RS,第五位为TS,如果第四位RS置 1表明该节点正处于接收状态,如果第五位为TS置1表明该节点正处于发送状态。
优选的,错误阈值设为127。
优选的,时间阈值为3T1~5T1。
优选的,次数阈值2~4。
优选的,步骤(4)中获取该节点进入总线关闭的次数的方法为:查看该节点的状态寄存器第7位BS,如果第7位BS为1,表明该节点处于总线关闭状态,为该节点设置总线关闭计数器,每查询到该节点进入总线关闭状态,则计数器的数值加1。
优选的,设置T1为5ms,时间阈值为15ms,次数阈值为3次。
优选的,当接收到某一节点为故障节点信号后,将该节点从CAN总线网络中移除。
本发明与现有技术相比有益效果为:
(1)本发明的方法既考虑了CAN总线中节点处于发送状态时出错的情况,也考虑了节点处于接收状态时出错的情况。避免了由于其他节点接收错误造成总线关闭状态位置位,而误判将非故障节点从网络中移除。
(2)本发明的故障判定方法可以更精确的找出网络中的故障节点,提高效率,不至于误判,导致经常性的人工干预检查网络,浪费时间和人力。
(3)本发明通过多个周期对一个节点的接收能力和发送能力进行累积判断,能够更加客观和准确地判断节点故障。
(4)本发明将故障节点从总线网络中移除,避免了故障节点发送错误的数据帧及错误帧占用总线资源。
附图说明
图1是多个CAN节点组网的系统图;
图2是CAN节点的3种状态转换图;
图3是故障节点判断的流程图。
具体实施方式
如图1所示,是多个CAN节点的组网的系统图,在keil软件里写c语言程序配置单片机,单片机跟CAN控制器的接口互相连接,CAN控制器的输出引脚TX和输入引脚RX通过CAN收发器,进行电平转换,然后连接到CAN总线上。
在信息传输过程中,很可能出现下面的情况:某个节点在发送或接收的过程中老是出错,导致该节点不停的发送错误帧,阻碍了总线上正常的数据帧的传输。
如果节点处于发送状态,当发送过程中检测到错误时,根据错误的种类的不同,发送节点的发送错误计数器的值会或加8,或加0;如果期间发送正确一次,则发送错误计数器的值减1。当发送错误计数器值超过256时,会使这个发送节点进入总线关闭状态,如果进入总线关闭状态的次数超过了一定的阈值限制,这说明该节点在发送过程中经常出错,极有可能是故障节点。但是这种错误可能是由该发送节点的错误导致的,也可能是该发送节点对应的接收节点的错误导致的,所以只根据节点在发送过程中进入总线关闭状态的次数这个条件不能断定这个节点是故障节点。
如果该节点作为接收节点,当在接收过程中检测到错误时,接收错误计数器累加,根据错误的种类的不同,接收错误计数器的值会或加8,或加1,或加0;如果期间接收正确一次,当目前接收错误计数器的值小于128时,接收错误计数器会减1;当目前接收错误计数器的值大于等于128时,接收错误计数器的值减为119~127中的某个数,本项目中设为127。但是即使接收错误计数器累加到256,这并不会导致节点进入总线关闭状态。当接收错误计数器的数值达到127时,统计接收错误计数器大于等于127的时间,如果超过了一定的时间阈值,说明该节点在接收过程中经常出错,极有可能是故障节点。但是这种错误可能是由该接收节点的错误导致的,也可能是该接收节点对应的发送节点的错误导致的,所以只根据节点在接收过程中接收错误计数器数值长时间大于等于127这个条件不能断定这个节点是故障节点。
根据发送错误计数器和接收错误计数器的值的不同,将CAN节点分成了三种状态,如图2所示,是CAN节点的3种状态转换图,当接收错误计数器和发送错误计数器的值都小于128时,节点处于错误主动状态,此时节点可以正常的收发数据帧;当接收错误计数器和发送错误计数器的值中的任何一个大于等于128且发送错误计数器的值小于256时,节点处于错误被动状态,此时节点也可以正常的收发数据帧;当发送错误计数器的值大于等于256时,节点进入总线关闭状态,此时节点暂停收发数据。Tx_err_cnt表示发送错误计数器内的数值,rx_err_cnt表示接收错误寄存器内的数值。
通过在keil软件里写程序监控每个CAN控制器,查询网络中每个节点的接收错误计数器的数值大小以及该节点是否进入总线关闭状态;
可以设置检测的时间周期为5ms,时间阈值是15ms,次数阈值是3次,该数值的大小跟每一位的时间长短和计划传输的数据帧中的数据字节的大小有关。
结合图2,每隔一定的时间周期T2 依次检测网络中所有节点,判定CAN 总线网络中是否存在故障节点,判定方法,包括下列步骤:
(1)清零周期计时器,并开始计时;K值置1;
(2)判断第K个节点处于发送状态还是接收状态,如果处于接收状态进入步骤(3),如果处于发送状态则进入步骤(4);
查看该节点的状态寄存器的第四位RS,第五位为TS,如果第四位RS置1 表明该节点正处于接收状态,如果第五位为TS置1表明该节点正处于发送状态。
(3)查看该节点的接收错误计数器的数值大小,判断接收错误计数器的数值是否大于等于错误阈值,当大于等于错误阈值时,将该节点的计时器增加时间T1 ,如果该节点的计时器大于时间阈值时,停止计时,并输出疑似接收故障节点信号,查看是否存在疑似发送故障节点信号,如果存在则输出该节点为故障节点信号,将故障节点从网络中移除;进入步骤(5);如果不存在,则完成该节点查看,进入步骤(5);如果小于错误阈值,则不进行计时器累加,完成该节点查看,进入步骤(5)。
时间阈值小于发送一帧的配置时间,例如可以选择3T1 。
(4)获取该节点进入总线关闭状态的次数,判断该节点总线关闭状态的次数是否超过次数阈值,如果超过次数阈值,则输出疑似发送故障节点信号,查看是否存在疑似接收故障节点信号,如果存在则输出该节点为故障节点信号,将故障节点从网络中移除;进入步骤(5);如果不存在,则完成该节点查看,进入步骤(5);如果没有超过次数阈值,则不进行计数器累加,完成该节点查看,进入步骤(5)。
查看该节点的状态寄存器第7位BS,如果第7位BS为1,表明该节点处于总线关闭状态,为该节点设置总线关闭计数器,每查询到该节点进入总线关闭状态,则计数器加1,由此获得该节点进入总线关闭状态的次数。
(5)判断是否为最后一个节点,如果为最后一个节点,则等待周期计时器计时至时间T2 ,返回步骤(1);如果不是最后一个节点则将K的值加一,返回步骤(2)。
本发明既考虑了CAN总线中节点处于发送状态时出错的情况,也考虑了节点处于接收状态时出错的情况,因为进入总线关闭状态只跟发送错误计数器的数值有关,即只关注节点处于发送状态时是否经常出错的情况,所以仅根据节点进入总线关闭状态的次数来判定这个节点是否是故障节点是不准确的。本发明同时考虑CAN节点分别处于发送和接收状态时出错的情况,可以更精确的找出网络中的故障节点,提高效率,不至于误判,导致经常性的人工干预检查网络,浪费时间和人力。本发明的故障节点判定方法,可以应用于在使用CAN 总线组网通信的如汽车电子制造、医疗器械食品生产等的场景中。
本发明未详细说明部分属本领域技术人员公知常识。
Claims (8)
1.一种CAN总线网络中故障节点判定方法,其特征在于,包括如下的步骤:
(1)清零周期计时器,并开始计时,将K值置1;
(2)判断第K个节点处于发送状态还是接收状态,如果处于接收状态进入步骤(3),如果处于发送状态则进入步骤(4);
(3)查看该节点的接收错误计数器的数值大小,判断接收错误计数器的数值是否大于等于错误阈值,如果大于等于错误阈值,则将该节点的计时器增加时间T1,如果该节点的计时器的计时时间大于时间阈值时,输出疑似接收故障节点信号,然后查看是否存在疑似发送故障节点信号,如果存在,则输出该节点为故障节点信号;进入步骤(5);
(4)获取该节点进入总线关闭的次数,判断该次数是否超过次数阈值,如果超过次数阈值,则输出疑似发送故障节点信号,查看是否存在疑似接收故障节点信号,如果存在,则输出该节点为故障节点信号;进入步骤(5);
(5)判断是否为最后一个节点,如果为最后一个节点,则等待周期计时器计时至时间T2,返回步骤(1);如果不是最后一个节点则将K的值加1,返回步骤(2)。
2.如权利要求1所述的CAN总线网络中故障节点判定方法,其特征在于,步骤(2)中判断第K个节点处于发送状态还是接收状态的方法为:查看该节点的状态寄存器的第四位RS,第五位为TS,如果第四位RS置1表明该节点正处于接收状态,如果第五位为TS置1表明该节点正处于发送状态。
3.如权利要求1或2所述的CAN总线网络中故障节点判定方法,其特征在于,错误阈值设为127。
4.如权利要求1或2所述的CAN总线网络中故障节点判定方法,其特征在于,时间阈值为3T1~5T1。
5.如权利要求1或2所述的CAN总线网络中故障节点判定方法,其特征在于,次数阈值2~4。
6.如权利要求1或2所述的CAN总线网络中故障节点判定方法,其特征在于,步骤(4)中获取该节点进入总线关闭的次数的方法为:查看该节点的状态寄存器第7位BS,如果第7位BS为1,表明该节点处于总线关闭状态,为该节点设置总线关闭计数器,每查询到该节点进入总线关闭状态,则计数器的数值加1。
7.如权利要求1或2所述的CAN总线网络中故障节点判定方法,其特征在于,设置T1为5ms,时间阈值为15ms,次数阈值为3次。
8.如权利要求1或2所述的CAN总线网络中故障节点判定方法,其特征在于,当接收到某一节点为故障节点信号后,将该节点从CAN总线网络中移除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711320926.9A CN108063687B (zh) | 2017-12-12 | 2017-12-12 | 一种can总线网络中故障节点判定方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711320926.9A CN108063687B (zh) | 2017-12-12 | 2017-12-12 | 一种can总线网络中故障节点判定方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108063687A CN108063687A (zh) | 2018-05-22 |
CN108063687B true CN108063687B (zh) | 2021-01-08 |
Family
ID=62138480
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711320926.9A Active CN108063687B (zh) | 2017-12-12 | 2017-12-12 | 一种can总线网络中故障节点判定方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108063687B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111948469B (zh) * | 2019-05-17 | 2021-06-08 | 中国科学院声学研究所 | 一种can总线电磁兼容性检测方法及系统 |
CN111224838A (zh) * | 2019-12-10 | 2020-06-02 | 中国航空工业集团公司西安航空计算技术研究所 | 一种时间触发总线中节点状态的确认方法和节点 |
CN112083710B (zh) * | 2020-09-04 | 2024-01-19 | 南京信息工程大学 | 一种车载网络can总线节点监测系统及方法 |
CN112859713B (zh) * | 2021-02-08 | 2022-04-19 | 航天科工空间工程发展有限公司 | 一种空间飞行器can总线自主纠错管理方法 |
CN113033752B (zh) * | 2021-03-22 | 2023-06-02 | 深圳市英威腾电气股份有限公司 | 通信故障检测方法、主机、从机 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6442708B1 (en) * | 1999-12-14 | 2002-08-27 | Honeywell International Inc. | Fault localization and health indication for a controller area network |
US8213321B2 (en) * | 2007-02-01 | 2012-07-03 | Deere & Company | Controller area network condition monitoring and bus health on in-vehicle communications networks |
DE102008002738B4 (de) * | 2008-06-27 | 2010-03-11 | Airbus Deutschland Gmbh | Verfahren zum Erkennen eines fehlerhaften Knotens |
CN105634895A (zh) * | 2016-01-26 | 2016-06-01 | 深圳市沃特玛电池有限公司 | 一种can总线错误处理方法及其系统 |
-
2017
- 2017-12-12 CN CN201711320926.9A patent/CN108063687B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108063687A (zh) | 2018-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108063687B (zh) | 一种can总线网络中故障节点判定方法 | |
US8015445B2 (en) | Fault location device, communication device, and fault location method | |
US9009523B2 (en) | Method and apparatus for isolating a fault in a controller area network | |
US9524222B2 (en) | Method and apparatus for fault detection in a controller area network | |
US20110035180A1 (en) | Diagnostic apparatus and system adapted to diagnose occurrence of communication error | |
US8432814B2 (en) | Node of a distributed communication system, node and monitoring device coupled to such communication system | |
US20150312123A1 (en) | Method and apparatus for isolating a fault in a controller area network | |
US9645898B2 (en) | Storage control device and control device for detecting abnormality of signal line | |
US20070230364A1 (en) | Signal degrade detecting method, signal restoration detecting method, devices for those methods, and traffic transmission system | |
US11095475B2 (en) | Communication failure detection device | |
US9499174B2 (en) | Method and apparatus for isolating a fault-active controller in a controller area network | |
US10986556B2 (en) | Circuit for monitoring a data processing system | |
JP6384332B2 (ja) | 電子制御装置 | |
CN101286900B (zh) | 一种端口故障的检测方法、装置及接入设备 | |
CN113630187B (zh) | 一种phy初始化方法、系统、设备以及介质 | |
JP2009111911A (ja) | 通信装置及び通信システム並びに通信方法 | |
US20210014080A1 (en) | Subscriber station for a serial bus system, and method for data transmission in a serial bus system | |
JP2013236184A (ja) | 車載通信システム、車載通信システムの通信異常監視方法、及び車載通信システムの通信異常監視プログラム | |
US11050648B2 (en) | Communication system | |
US20110264974A1 (en) | Method for operating a communication system having a plurality of nodes, and a communication system therefor | |
EP3507944B1 (en) | Improved voting for profibus line redundancy | |
Sathish et al. | A New Approach for Fault Confinement in CAN-Network | |
CN116405153A (zh) | 用于控制器局域网的设备 | |
JPH04160834A (ja) | Lanにおけるチャネル異常検出方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |