CAN总线主动错误被动错误最详细解释分析
entered error passive state 终端电阻-概述说明以及解释
entered error passive state 终端电阻-概述说明以及解释1.引言1.1 概述在现代的工业控制系统中,终端设备的电阻是一个非常重要的因素。
终端电阻的作用是在通信线路中提供终结阻抗,以确保信号传输的稳定性和可靠性。
然而,在实际的应用中,终端电阻也可能出现各种问题,其中最常见的就是“entered error passive state”(进入错误被动状态)。
终端设备进入错误被动状态是指当设备接收到错误的信号时,无法正确地进行数据传输,进而导致通信系统无法正常工作。
这种状态下,终端设备会自动将自己设置为“被动”状态,无法主动发送数据,只能等待其他设备发送正确的信号。
造成终端设备进入错误被动状态的原因可能有很多,最常见的包括通信线路中存在干扰、终端设备的硬件故障或者软件错误等等。
当终端设备检测到错误时,它会尝试纠正错误的信号,如果无法纠正,则会进入错误被动状态。
进入错误被动状态对于工业控制系统来说是非常危险的,因为它可能导致控制系统无法正常运行。
在生产过程中,如果某些重要的数据无法被及时传输,就会产生严重的后果,甚至可能导致事故发生。
因此,及时发现并解决终端设备进入错误被动状态的问题至关重要。
为了解决终端设备进入错误被动状态的问题,可以通过几种方法来进行。
首先,我们需要对通信线路进行检测和维护,确保线路的质量和稳定性。
此外,也可以采用一些技术手段来检测和纠正错误的信号,如使用冗余校验码、重新发送数据等。
另外,在终端设备的设计和制造过程中,也需要注重硬件和软件的质量,提高其抗干扰能力和稳定性。
总之,终端设备进入错误被动状态是工业控制系统中常见的问题之一。
通过对通信线路进行维护和检测,以及采用合适的技术手段和高质量的设备,我们可以有效地解决这个问题,确保控制系统的正常运行。
然而,对于工程师和技术人员来说,更重要的是要不断学习和研究,保持对工业控制系统的更新和进步的认识,以便更好地应对各种可能出现的问题。
CAN总线错误总结
SJA1000的错误中断处理推荐SJA1000的错误处理好似还是比较复杂的的啦,下面是我自己的一些理解,有不对之处还请各位大虾多多指点啊!SJA1000的错误有:仲裁丢失;数据溢出;总线错误;错误状态有:错误主动(Error Active)错误被动(Error Passive)总线关闭;错误中断:总线错误中断;仲裁丢失中断;错误消极中断;数据溢出中断;错误报警中断;涉及到的寄存器:状态寄存器(SR);中断寄存器(IR);中断使能寄存器(EIR);仲裁丢失捕捉寄存器(ALC);错误代码捕捉寄存器(ECC);错误报警限制寄存器(EWLR);TX错误计数寄存器(TXERR);RX错误计数寄存器(RXERR);处理中断当然是从中断寄存器说起了;中断寄存器:只说和错误有关的位啦;IR.7:BEI总线错误中断;当CAN控制器检测到总线错误且中断使能寄存器(EIR)中的BEIE被置位时此位被置位当前的错误代码可以通过错误代码捕捉寄存器(ECC)获得;其中可以分为:位错误;格式错误;填充错误;其它错误;IR.6:ALI仲裁丢失中断;当CAN控制器丢失仲裁,变为接收器和中断使能寄存器的ALIE为被置位时,此位被置位当前仲裁丢失的位置可以通过读仲裁丢失捕捉寄存器(ALC)获得;IR.5:EPI 错误消极中断;当CAN控制器到达错误消极状态(Error Passive)(至少一个错误计数器超过协议规定的值127)或从错误消极状态(Error Passive)又进入错误活动状态(Error Active)以及中断寄存器的EPIE位被置位时此位被置1IR.3:DOI 数据溢出中断;数据溢出状态位(状态寄存器的SR.1位 DOS)有0-1 跳变且中断寄存器的DOIE位被置位时此位被置1IR.2 EI 错误报警中断;错误状态位(状态寄存器的SR.6位 ES)和总线状态位(状态寄存器的SR.7位 BS)的改变和中断寄存器的EIE位被置位时此位被置1影响错误状态位的有:1,错误计数器至少有一个错误计数器满2,超过错误报警限制寄存器(EWLR)设置的值时错误状态位被置位;报警中断。
汽车CAN总线技术及故障分析
汽车CAN总线技术及故障分析随着汽车电子技术的飞速发展,汽车CAN总线技术的应用越来越广泛。
CAN总线技术是一种用于控制汽车电子系统的通讯协议,它可以让各个汽车电子模块之间进行数据交换,从而实现汽车各种功能的协调与控制。
由于汽车CAN总线系统复杂,故障问题也较为常见。
本文将就汽车CAN总线技术及故障分析进行详细介绍。
一、汽车CAN总线技术概述CAN总线是Controller Area Network的缩写,即控制器局域网络。
它是一种用于控制设备之间通讯的串行总线标准。
CAN总线技术最早由德国的Bosch公司在1986年提出,从此以后就迅速发展并得到广泛应用,成为了现代汽车电子系统的核心通讯技术之一。
CAN总线技术的优势主要体现在以下几个方面:1. 高可靠性:CAN总线系统采用了差分信号传输以及位优先和消息权限等机制,保证了通讯的可靠性和稳定性。
2. 高速传输:CAN总线系统可实现高速数据传输,满足了现代汽车电子系统对于大数据处理和快速响应的需求。
3. 灵活性:CAN总线系统采用多主机通讯结构,可以实现多个设备之间的并行通讯,从而提高了系统的灵活性和通讯效率。
4. 简化布线:CAN总线系统可以通过一根双绞线连接各个控制器,减少了布线的复杂性和成本。
在现代汽车中,CAN总线系统主要分为两种类型:CAN高速总线和CAN低速总线。
CAN高速总线主要用于发动机控制、变速器控制、刹车系统等对实时性要求较高的控制模块之间的通讯;而CAN低速总线主要用于车门控制、座椅控制、仪表盘等对实时性要求不高的控制模块之间的通讯。
1. CAN总线通讯中断故障CAN总线通讯中断可能是由于CAN控制器硬件故障、CAN总线信号线路断路、接触不良引起的。
当汽车CAN总线通讯中断时,会导致汽车各个控制模块之间无法正常通讯,从而出现各种各样的故障表现,例如ABS系统故障、发动机无法启动等。
解决方法:使用诊断仪对CAN总线进行检测,查找故障的具体位置。
一文读懂CAN通讯错误帧
一文读懂CAN通讯错误帧当前CAN总线通讯技术已经运用于各行各业之中,基本是每个总线设计工程师必学的一个通讯网络。
但什么是CAN通讯中的错误帧,很多人还是处于只知其名,不知其所以然的状态,也因此造成许多工程师在明知总线通讯出现问题却束手无策的困扰。
1.1.1 错误标定检测到错误条件的站通过发送错误标志指示错误。
对于“错误主动”的节点,错误信息为“主动错误标志”,对于“错误被动”的节点,错误信息为“被动错误标志”。
站检测到无论是位错误、填充错误、形式错误,还是应答错误,这个站会在下一位时发出错误标志信息。
只要检测到的错误的条件是CRC错误,错误标志的发送开始于ACK界定符之后的位(其他的错误条件除外)。
1.2 故障界定至于故障界定,单元的状态可能为以下三种之一:●‘错误主动’●‘错误被动’●‘总线关闭’“错误主动”的单元可以正常地参与总线通讯并在错误被检测到时发出主动错误标志。
“错误被动”的单元不允许发送主动错误标志。
“错误被动”的单元参与总线通讯,在错误被检测到时只发出被动错误标志。
而且,发送以后,“错误被动”单元将在初始化下一个发送之前处于等待状态。
(见“挂起发送”)“总线关闭”的单元不允许在总线上有任何的影响(比如,关闭输出驱动器)。
在每一总线单元里使用两种计数以便故障界定:●发送错误计数●接收错误计数这些计数按以下规则改变(注意,在给定的报文发送期间,可能要用到的规则不只一个):●当接收器检测到一个错误,接收错误计数就加1。
在发送主动错误标志或过载标志期间所检测到的错误为位错误时,接收错误计数器值不加1。
●当错误标志发送以后,接收器检测到的第一个位为“显性”时,接收错误计数值加8。
●当发送器发送一错误标志时,发送错误计数器值加8⏹例外情况1:发送器为“错误被动”,并检测到一应答错误(注:此应答错误由检测不到一“显性”ACK 以及当发送被动错误标志时检测不到一“显性”位而引起)。
⏹例外情况2:发送器因为填充错误而发送错误标志(注:此填充错误发生于仲裁期间。
STM32之CAN---错误管理分析
1 几个重要概念根据ISO11898有如下几个重要的与CAN相关的定义:Fault confinement(错误界定)CAN nodes shall be able to distinguish short disturbances from permanent failures. Defective transmitting nodes shall be switched off. Switched off means a node is logically disconnected from the bus, so that it can neither send nor receive any frames.CAN节点可以区分常规错误和永久故障。
有故障的发送节点将切换到离线状态。
离线意味着在逻辑上与总线断开,既不能发送也不能接收。
Error-active(主动错误)An error-active node shall normally take part in bus communication and send an active error flag when an error has been detected. The active error flag shall consist of six (6) consecutive dominant bits and shall violate the rule of bit stuffing and all fixed formats appearing in a regular frame .处于主动错误状态的节点能正常参与总线通信的收发和当检测到错误时将发送错误标志,错误标志由6个连续的显示位组成(这种连续的6个显示位与常规的填充位和其它帧固定格式不相同,正因为如此,硬件才容易区别)。
Error-passive(被动错误)An error-passive node shall not send an active error flag. It takes part in bus communication, but when an error has been detected a passive error flag shall be sent. The passive error flag shall consist of six (6) consecutive recessive bits. After transmission, an error-passive node shall wait some additional time before initiating a further transmission .处于被动错误状态的节点不能发送主动错误标志。
CAN总线详解
汽车CAN总线详解概述CAN(Controller Area Network)总线协议是由 BOSCH 发明的一种基于消息广播模式的串行通信总线,它起初用于实现汽车内ECU之间可靠的通信,后因其简单实用可靠等特点,而广泛应用于工业自动化、船舶、医疗等其它领域。
相比于其它网络类型,如局域网(LAN, Local Area Network)、广域网(WAN, Wide Area Network)和个人网(PAN, Personal Area Network)等,CAN 更加适合应用于现场控制领域,因此得名。
CAN总线是一种多主控(Multi-Master)的总线系统,它不同于USB或以太网等传统总线系统是在总线控制器的协调下,实现A节点到B节点大量数据的传输,CAN网络的消息是广播式的,亦即在同一时刻网络上所有节点侦测的数据是一致的,因此比较适合传输诸如控制、温度、转速等短消息。
CAN起初由BOSCH提出,后经ISO组织确认为国际标准,根据特性差异又分不同子标准。
CAN国际标准只涉及到 OSI(开放式通信系统参考模型)的物理层和数据链路层。
上层协议是在CAN标准基础上定义的应用层,市场上有不同的应用层标准。
发展历史1983年,BOSCH开始着手开发CAN总线;1986年,在SAE会议上,CAN总线正式发布;1987年,Intel和Philips推出第一款CAN控制器芯片;1991年,奔驰500E 是世界上第一款基于CAN总线系统的量产车型;1991年,Bosch发布CAN 2.0标准,分 CAN 2.0A (11位标识符)和 CAN 2.0B (29位标识符);1993年,ISO发布CAN总线标准(ISO 11898),随后该标准主要有三部分:ISO 11898-1:数据链路层协议ISO 11898-2:高速CAN总线物理层协议ISO 11898-3:低速CAN总线物理层协议注意:ISO 11898-2和ISO 11898-3物理层协议不属于BOSCH CAN 2.0标准。
CAN总线的原理及故障诊断概述
CAN总线的原理及故障诊断概述我国当前多数轿车的控制系统之间的通信,还是采用模拟信号,相互间的通信需要一对一的导线连接。
随着新技术的发展,车上的控制系统越来越多,连接的导线大量增加,占用了轿车内有限的空间,消耗大量可贵的金属铜,而且系统的运算速度和精确度都很低,抗干扰能力也差,出现故障后在线束中查找非常困难,这些问题都严重的制约着车用计算机系统的发展。
有了数字信号和数字控制技术,CAN总线网络通信技术使计算机系统间的通信成为现实,可靠性得到进一步提高,它仅用一条双绞线,即能连接全车所有控制系统,达到信息共享,减少布线,降低成本,提高总体可靠性的目的,它是电控自动化过程控制网络通信的新技术。
在国外汽车产业发达国家CAN总线已处于比较成熟阶段,早些年,主要用于奔驰、宝马、凌志LS430等高档车。
在我国起步较晚,引进车型用于奥迪、宝来等中级轿车,近年由于成本降低,已用于经济型轿车,如菲亚特派朗、奇瑞A5等。
CAN总线网络通信技术必成为我们汽车行业电控维修技师学习的新技术,但是在专业的汽车局域网技术书丛中用了大量的网络与计算机的专业语言,一般汽车维修专业人员未学过这类知识,跨行业读书有一定的困难。
本文用通俗的语言,简单介绍它的一般工作原理及检修的基本方法,使读者学到CAN总线的入门知识。
一、CAN总线网络技术的构造和工作原理(一)CAN总线简介CAN总线是一种新兴的现场总线,CAN(ControllerAreaNetwork)即控制器局域网络,在汽车行业中又称汽车局域网技术,它属于总线串行通信网络,通讯介质可以选用双绞线,同轴电缆和光纤。
在汽车网络中,许多汽车制造商都使用专用双绞线,由于该系统采用了许多新技术和独特的设计,使得基于CAN总线构建的系统具有优良的特点:如良好的故障隔离能力,可靠性高,实时响应性能好,通信速率高,还有较好的检错措施,使数据传输的出错率降至极低。
由于具有这些特点,非常适合在多个独立的计算机管理系统中作通信。
CAN总线错误及故障处理
致远电子
传递价值 成就你我
http://www.embedcontrol.
com
错误中断处理(SJA1000)
总线错误入口
inline void KSJA1000T::INT_BusError(void)
{
错误帧的组成
错误帧结构(续)
6 Error Flag
8
Error Delimiter
0 0 0 0 0 0 0 0 0 0 0 01 1 11 1 1 1 1
1
6-12 bits
Superposition of Error Flags
致远电子
传递价值 成就你我
超载帧
http://www.embedcontrol. com
wwwembedcontrolcom致远电子总线关闭模式任意一个错误计数器超越255导致控制器进入总线关闭模式在总线故障清除控制器检测到总线上连续的11位隐性位发生128次后总线关闭的节点将返回到错误激活状态错传递价值 成就你我
http://www.embedcontrol.
com
基于信息帧级别的错误检测
帧格式错误检测,当接收端在以下位置检 测到非法的位时格式错误标记
1. CRC认可位
2. ACK认可位
3. 帧结束位
致远电子
传递价值 成就你我
http://www.embedcontrol.
com
基于信息帧级别的错误检测
m_rCommand=(UCHAR)CMD_CLR_DATA_OVER;
}
m_TraceCode |= INT_DATA_OVERFLOW; }
通过ECANTools软件的总线状态显示功能判断总线故障
通过ECAN Tools软件的总线状态诊断功能判断总线故障工程师在使用USBCAN分析仪连接其他CAN设备时,调试过程中可能会遇到通讯不成功的情况,利用我公司的ECAN Tools软件的总线诊断功能可以帮助工程师快速诊断出总线上存在的错误,帮助工程师快速调通CAN总线的底层。
总线诊断功能区在软件显示界面的右下方,如图1所示。
(此时软件已成功连接上设备,左下角状态按钮为绿色状态,设备SYS灯为闪烁状态)。
图1 软件显示界面以下介绍几种常见的错误类型及对应的解决方法。
一、被动错误显示红色总线诊断功能区显示被动错误、错误报警、总线数据错误时,如图2所示。
图2 被动错误报警状态图此时USBCAN设备接收到错误的CAN总线数据,可能出现的问题有:USBCAN设备接入的不是CAN总线(电压不对)、总线上有故障设备发送错误帧、USBCAN设备波特率与总线中其他设备不匹配,没加电阻,线接反(确定CAN的情况下扭过来),有强干扰等。
解决方法:1、查看接线是否有误,检查分析仪和被测设备的和分析仪的接线,检查接线是否是CAN_L接CAN_L,CAN_H接CAN_H,其余端口不用接。
如图3所示。
图3 正确接线图示范2、查看CAN总线上的终端电阻,CAN总线规定通讯需要两个120Ω的终端电阻,在确认好接线并连接好设备后(设备不上电),用万用表检查CAN总线上的CAN_L和CAN_H之间的电阻阻值是否是60欧姆左右。
若不是,请添加或减少总线上的120欧姆电阻数量来保证通讯阻值在正常范围内。
注:分析仪拨码开关可增减对应通道接入CAN 总线的终端电阻数量(ON为接入总线,OFF为不接入总线),如图4所示。
图4 终端电阻拨码开关示意图3、被测设备为已知波特率的设备,此时需要检查两个设备的波特率是否一致,重新打开ECANTools软件,选择正确的波特率即可。
如图5所示。
图5 ECANTools软件选择波特率界面4、被测设备为未知波特率(或已知的波特率收不到数据时),可以利用我们ECANTools软件的自动识别波特率功能。
CAN总线错误处理机制及Bus off问题现象分析
处理结果:由于该策略在控制器开发初期已同我厂检讨,我厂同意保持该策略,故后续车型 量产中维持该策略不变。
Bus off问题现象分析
此处以相似的Ford Bus off策略解析:
前10次Bus off恢复时间40ms,如持 续进入Bus off状态则后续Bus off恢 复时间为1s,直至Bus off条件被排 除
CAN节点可以区分常规错误和永久故障。有故障的发送节点将切换到离线状态。离线意味着 在逻辑上与总线断开,既不能发送也不能接收。
Error-active(主动错误) An error-active node shall normally take part in bus communication and send an active error flag when an error has been detected. The active error flag shall consist of six (6) consecutive dominant bits and shall violate the rule of bit stuffing and all fixed formats appearing in a regular frame .
CAN总线错误处理机制——错误通知
■
错误管理的重要概念(ISO11898)
节点的三种状态
CAN总线错误处理机制——错误通知
■
错误通知
总线通信错误以向总线上发送错误帧作为标志。
CANoe Trace窗口中的5种类型 的错误帧
CAN总线错误处理机制——错误通知
经典CAN总线错误分析与解决方案
经典CAN总线错误分析与解决方案1、(CAN)总线的常见故障CAN总线错误分析与解决当CAN总线出现故障或数据传输异常时,往往会出现多种奇怪的故障现象,如仪表板显示异常,车辆无法启动,启动后无法熄灭,车辆动力性能下降,某些电控系统功能失等。
这是因为相关数据或(信息)是通过CAN总线传输的,如果传输失败,那么会产生多种连带故障,甚至造成整个(网络)系统瘫痪。
最为常见的故障症状是仪表板的显示异常,如下图所示。
在检修过程中,首先应查看具体的故障症状,根据故障症状和网络结构图来初步分析有可能是哪些原因造成的,然后使用相关的诊断仪器进行诊断,根据诊断结果制定相关检修方案,做到心中有数,目标明确。
接着查找具体的故障部位和原因,同时结合相应的(检测)方法和测量结果找到故障点,从而彻底排除故障。
由于CAN网络采用多种协议,每个控制模块的(端口)在正常的情况下都有标准电压,因此电压测量法可用于判断线路是否有对地或(电源)短路、相线间短路等问题。
为了确定CAN H 或CAN L 导线是否损坏或(信号)是否正常,可以测量其对地电压(平均电压)。
测量点通常在OBD 诊断(接口)处,如下图所示。
诊断接口的6号针脚连接CAN H 导线,14号针脚连接CAN L 导线。
如果诊断接口上连接有两组CAN总线,那么动力CAN总线使用6号和14号针脚,舒适总线使用3号和11号针脚。
诊断接口的针脚含义如下图所示。
正常情况下,当CAN总线唤醒后,CAN H 对地电压约为2.656V,CAN L 对地电压约为2.319V,而且两者相加为4.975V▼正常的CAN H 电压正常的CAN L 电压CAN故障通常的原因有CAN线短路、对电源短路、对地短路、相互接反。
2、CAN H与CAN L短路当CAN H 与CAN L 短路时,CAN网络会关闭,无法再进行(通信)。
会有相应的网络故障码。
CAN H 与CAN L 短路的总线波形如下图所示。
当两者相互短路之后,CAN电压电位置于隐性电压值(约2.5V)。
浅析CAN总线错误分析与解决
浅析CAN总线错误分析与解决CAN节点数据收发过程了解CAN节点在总线上数据上的收发过程很重要,之前的一篇文章讲解了一些CAN总线的错误处理机制,但是那些都是理论上的东西,如果不深入了解CAN总线上的数据收发过程,理解那些理论的东西难免有些晦涩。
我们知道CAN总线上的每个节点往总线上发送数据的同时会同时读取总线上的数据,并与自己发送的数据作对比。
CAN信息发送成功后,在这个间隙内,接收节点可以准备要回复的信息,也就是把应答场填充为显性0,在发送时其为隐性1应答过程可能如下:当信息传输到ACK前的Del 时,可以认为信息已经传输完毕,接收节点也接收到了足够的信息来检测接收的信息是否正确,所以这时接收节点就会检测信号是否正确,如果正确,就将ACK置位为显性0,注意这时,发送节点因为还在发送而接收节点又将ACK信息置位为1,所以它就会在回读时检测到ACK为0,判断接收成功。
注意:这其中有个接收节点用显性覆盖隐性---覆盖ACK位的过程,覆盖+回读。
ACK前后各加一个Del,就是为了考虑到时间误差,让接收节点有足够的时间对ACK确认。
这个过程说明,CAN发送是个双向互动的过程,发送节点一边发送,一边对节点进行回收确认数据正确,而接收节点也时刻接收,并在正确的时间将ACK设置为1。
CAN总线错误CAN总线错误分别有发送和接收错误计数,计数达到一定的累计以后就会产生CAN BUS OFF,这说明CAN总线上出现了严重的错误。
如下图CAN总线产生错误后的状态转换机制:如果出现了BUS OFF,总线上的节点需要做一些动作,例如重启CAN控制器或是重新上电,但是这些都只是一些补救措施,最根本的还是需要找到引起BUS OFF的根源。
CAN总线分析的一些工具和文档:CAN分析仪或者逻辑分析仪数字示波器相关的软件debug工具CAN控制器芯片数据手。
详解常用的CAN总线(下):错误帧
详解常用的CAN总线(下):错误帧错误帧种类错误帧种类分为5种,分别是:位发送错误、AC K错误、位填充错误、CRC错误、格式错误。
位发送错误节点将自己发送到总线上的电平与同时从总线上回读到的电平进行比较,如果发现二者不一致,那么这个节点就会检测出一个位错误。
实际上所谓“发出的电平与从总线上回读的电平不一致”,指的就是节点向总线发出隐性位,却从总线上回读到显性位或者节点向总线发出显性位,却从总线上回读到隐性位这两种情况。
ACK错误ACK在ACK段中讲解过,按照CAN协议的规定,发送节点Node_A在一帧报文(数据帧或者遥控帧)发出之后,如果接收节点Node_B成功接收了该帧报文,那么接收节点Node_B就要在该帧报文ACK槽对应的时间段内向总线上发送一个显性位来应答发送节点Node_A。
这样发送节点Node_A就会在ACK槽时间段内从总线上回读到一个显性位。
因此:当发送节点Node_A在ACK槽时间段内没有回读到显性位,那么发送节点Node_A就会检测到一个ACK应答错误。
这表示没有一个节点成功接收该帧报文,此时CAN总线认为是ACK应答错误。
位填充错误帧起始到CRC校验之前的物理上电平不允许有6个连续的相同电平,发送器只要检测到位流中有5个连续相同逻辑的位,便会自动在下一位插入一个相反的电平。
从帧起始到CRC之间,接收节点检测到有6个连续相同的位电平时,也就是违反5位相同位插入1位相反位的“位填充”原则;因为ACK域和帧结束域电平固定,也无需填充;帧起始、仲裁域、控制域、数据域以及CRC校验和域,均通过位填充方法编码。
位填充是指:无论何时,发送器只要检测到位流中有5个连续相同逻辑的位,便会自动在位流中插入一个补码位。
举例来说,如果连续5个显性位,则在5个显性位之后自动插入1个隐性位,接收器会自动删除这个插入的填充位。
数据帧或远程帧的剩余位域(CRC界定符、应答域和帧结尾域)形式固定,不填充;错误帧和过载帧也不填充。
什么是CAN总线通讯错误帧
什么是CAN总线通讯错误帧CAN-bus的可靠性很高,但是在某些情况下还是发生错误,为了使数据能够在总线上可靠传输,CAN-bus规范对各类帧的格式、用途及发送时机都进行了详细的规定。
并实现在CAN 控制器中自动完成帧格式处理及校验等工作,一旦错误被检测,正在传送的数据帧将会立即停止而待总线空闲时再次重发直至发送成功,该过程并不需要CPU的干涉除非错误累计该发送器退隐(Bus off)。
CAN-bus的可靠性很高,但是在某些情况下还是发生错误,为了使数据能够在总线上可靠传输,CAN-bus规范对各类帧的格式、用途及发送时机都进行了详细的规定。
下面我们来总结下在CAN通讯中会出现哪些错误。
图一●位错误:发送节点在发送数据的同时也会对发出的比特流采样回收,如果监测到总线电平与正在发送的电平不符,将会发生位错误(Bit Check Error);●位填充错误:为解决异步串行通讯中共有的缺点——各节点通讯时钟不同步,CAN-bus采用了一种同步的方式,规定每隔5个位的时间长度进行一次同步,当传输信号连续5个位是相同的,就要插入一个点评相反的位(称为“填充位”),如果电缆上传输的信号不满足这一规则,则会出现填充位错误(Bit Stuff Error);●CRC错误:发送端发送的CRC值由发送器计算得出,接收器采用同样的CRC算法,计算出接收端CRC值,若接收器计算的CRC值与接收到的CRC值不符,将会产生该类错误(CRC Error);●格式错误:当传输的数据帧格式与任何一种合法的帧格式不符时会发生该类格式错误(Frame Check Error);●应答错误:如果在ACK段发送节点没有接收到接收节点发出的应答(显性位),将发生应答错误(Acknowledgment Error),所以当单个节点发送数据帧时会发生该类错误。
错误帧在总线信号传输中起着信号灯的作用,接收和发送过程中如果检测到通信出错,便会发送错误帧,错误帧由错误标识符以及错误界定符构成。
汽车CAN总线技术及故障分析
汽车CAN总线技术及故障分析CAN总线是一种用于传输数据的通信协议,它广泛地运用于汽车的电子控制系统中。
CAN总线技术的引入,使得汽车的控制系统可以更好地进行互联互通,从而使得整个系统具有更高的可靠性、更高的安全性和更高的性能。
CAN总线技术的优势在于,它具有多节点、高速、抗干扰等特点。
多节点意味着在一个系统中可以连接多个节点,这些节点可以是传感器、执行器或者其他控制器。
高速则能够确保系统的实时性,从而让整个系统能够及时地响应外部事件并做出相应的控制。
而抗干扰则是通过协议本身的设计,能够降低传输过程中被电磁干扰的影响,从而保证系统的稳定性和可靠性。
当然,CAN总线技术也存在一些不足之处,其中最常见的就是故障的发生。
CAN总线技术故障的主要表现包括:1.数据通信故障:例如,数据传输过程中发生的错误、数据损坏、数据丢失等情况,导致外部控制系统无法正常地与控制器进行通信。
2.控制器故障:此类故障主要是指控制器的硬件或软件出现了故障,使得控制器无法完成其正常的任务。
例如,控制器芯片出现损坏、程序出现异常、硬件部件出现故障等。
3.供电故障:由于供电系统的问题,使控制器无法正常工作或者处于低功率模式。
在进行CAN总线技术故障分析时,可以通过以下方法解决:1.使用故障诊断工具。
例如,OBD诊断仪等,通过该设备可以直接检测车辆电子控制系统中的故障状态,从而快速地找到故障。
2.对CAN总线上的控制器进行排查。
例如,对控制器的芯片进行检查,熟悉芯片功能,有助于发现控制器是否出现了故障以及故障的原因。
3.检查外部环境条件。
例如,环境温度过高或过低都有可能影响控制器的正常工作。
因此,定期检查车辆的环境条件,保证环境的合适性也是需要考虑的。
总之,CAN总线技术的应用推动了汽车电子控制系统的发展和完善,但是也存在一些故障问题。
针对这些故障,需要运用相关的工具和技术,能够更加快速地找到故障,并迅速进行处理。
CAN总线技术CAN总线错误类型
所谓重同步,就是节点根据沿相位误差的大小 调整其内部位时间。重同步的结果是,节点内 部位时间与来自总线的报文位流的位时间接近 或相等,从而使节点能够正确地接收报文。重 同步一般用于报文位流发送期间,以补偿各个 节点振荡器频率的不一致。
沿相位误差由来自总线的沿相对于节点内部位 时间同步段的位置给定,以时间份额量度。
CAN总线技术CAN总线错误类型
位时序逻辑BTL:位时序逻辑监视串口的CAN 总 线,并处理与总线有关的位时序。它在信息开头, 由隐性到显性的变换同步CAN 总线位流(硬同 步),接收信息时再次同步下一次传送(软同 步)。BTL 还提供了可编程的时间段来补偿传播 延迟时间、相位转换(例如,由于振荡漂移)和 定义采样点和每一位的采样次数。
(3)确定重同步跳转宽度以用于重同步。
CAN总线技术CAN总线错误类型
位定时与同步
一个节点应既能在位时间的采样点正确地 读取总线电平,也能检测来自总线的沿以 进行硬同步或重同步。
在CAN技术规范的时间份额的表达式中, 对于常用的独立CAN控制器SJA1000和 P8xC591中的CAN控制器,时间份额tq 为系统时钟周期tscl;预引比例因子m为 可编程的,其值取决于总线定时寄存器0 (BTR0)的内容;最小时间份额为振荡 器周期tCLK的2倍,即2tCLK。
CAN总线技术CAN总线错误类型
形式错误(Form Error)
当固定形式的位场中出现一个或更多非法位 时,则检出一个形式错误。
CAN总线技术CAN总线错误类型
应答错误(Acknowledgement Error)
在应答间隙期间,发送器未检测到“显性”位, 则由它检出一个应答错误。
CAN总线技术CAN总线错误类型
CAN总线错误处理
CAN总线错误处理CAN怎样处理错误错误处理内建在CAN协议中,对CAN系统的运行十分重要。
错误处理的目标是检测CAN总线上出现的报文中的错误,从而传送器可以重传出错的报文。
总线上的每个CAN控制器都会尝试检测报文中的错误。
如果发现错误,发现节点将传送一个错误标志,从而中断总线通信。
其它节点将检测错误标志导致的错误(如果它们尚未检测到初始错误)并采取合适的措施(例如丢弃当前报文)。
每个节点维护两个错误计数器:传送错误计数器和接收错误计数器。
有几个规则规定这些计数器怎样增加和/或减少计数。
总的来讲,检测到故障的传送器增加其传送错误计数器比侦听节点增加其接收错误计数器要快。
这是因为,很有可能是传送器发生了故障!当任何错误计数器增加到超过某个值时,节点将首先进入“错误被动”,也就是说,它在检测到错误时不会积极地阻止总线通信,然后“离开总线”,这意味着节点根本不参与总线通信。
使用错误计数器,CAN节点不但可以检测故障,而且可以执行错误限制。
错误检测机制CAN协议定义了五种以上不同的方法来检测错误。
其中两种工作在位层次,另外三种工作在报文层次。
位监视位填充帧检查应答检查循环冗余检查1. 位监视CAN总线上的每个传送器都会监视(也就是回读)传送的信号电平。
如果真正读到的位电平与传送的位电平不同,会发出信号指示位错误(仲裁过程中不会发出位错误)。
2. 位填充节点连续发送五个具有相同电平的位后,将在发送出去的位流中加上第六个相反电平的位。
接收方将删除这个额外的位。
这样做是为了避免总线上出现过度的直流电成分,但它同时也给予了接收方检测错误的额外机会:如果总线上出现五个以上相同电平的连续位,会发出信号指示填充错误。
3. 帧检查CAN报文的一些部分具有固定的格式,也就是说,标准明确定义了何种电平和何时出现这种电平(CRC定界符、ACK定界符、帧结束以及间歇,但是间歇还有一些另外的特殊错误检查规则)。
如果一个CAN控制器在这些固定字段中的一个中检测到无效值,将发出组成错误。