一文讲清汽车CAN网络
帧起始(SOF):由一位显性电平0组成,标志着数据帧和远程帧的起始。在CAN的同步规则中,当总线空闲时(处于隐性状态),才允许站点开始发送(信号)。 仲裁段:由ID标识符和RTR位组成,表示数据优先级。标准帧格式与扩展帧格式的仲裁段格式不同,标准格式里,仲裁域由11位标识符和RTR位组成。扩展帧格式里,仲裁域包括29位标识符、SRR位、IDE(Identifier Extension,标志符扩展)位、RTR位。IDE位为显性0,表示数据帧为标准格式;IDE位为隐性1,表示数据帧为扩展帧格式。在扩展帧中,替代远程请求(Substitute Remote Request,SRR)位为隐性。仲裁域传输顺序为从最高位到最低位,其中最高7位不能全为零。RTR的全称为“远程发送请求(Remote TransmissionRequest)”。RTR位在数据帧里必须为“显性”0,而在远程帧里必须为“隐性”1,它是区别数据帧和远程帧的标志。
控制段:控制段表征数据长度,由6位组成,包括2个保留位(r0、r1同于CAN总线协议扩展)及4位数据长度码,允许的数据长度值为0~8字节。
数据段:发送缓冲区中的数据按照长度代码指示长度发送。对于接收的数据,同样如此。它可为0~8字节,每个字节包含8位,首先发送的是MSB(最高位)。
CRC校验码段:检查帧传输错误,由CRC段(15位)及CRC边界符(一个隐性位)组成。CRC计算中,被除的多项式包括帧的起始段、仲裁段、控制段、数据段及15位为0的解除填充的位流给定。此多项式被下列多项式X15+X14+X10+X8+X7+X4+X3+1除(系数按模2计算),相除的余数即为发至总线的CRC序列。发送时,CRC序列的最高有效位被首先发送/接收。之所以选用这种帧校验方式,是由于这种CRC校验码对于少于127位的帧是最佳的。
应答段:应答段用于确定数据是否正常接收,由发送方发出的两个(应答间隙及应答界定)隐性位组成,所有接收到正确的CRC序列的节点将在发送节点的应答间隙上将发送的这一隐性位改写为显性位。因此,发送节点将一直监视总线信号已确认网络中至少一个节点正确地接收到所发信息。应答界定符是应答段中第二个隐性位,由此可见,应答间隙两边有两个隐性位:CRC段和应答界定位。 帧结尾:每一个数据帧或远程帧均由一串七个隐性位的帧结束域结尾。这样,接收节点可以正确检测到一个帧的传输结束。
3.2 远程帧
远程帧:用于接收单元向具有相同ID的发送单元请求数据的帧。
远程帧也有标准格式和扩展格式,而且都由6个不同的位域组成:帧起始、仲裁域、控制域、CRC域、应答域、帧结尾。与数据帧相比,远程帧的RTR位为隐性,没有数据域,数据长度编码域可以是0~8个字节的任何值,这个值是远程帧请求发送的数据帧的数据域长度。当具有相同仲裁域的数据帧和远程帧同时发送时,由于数据帧的RTR位为显性,所以数据帧获得优先。发送远程帧的节点可以直接接收数据。
3.3 错误帧
错误帧:用于当检测出错误时向其他单元通知错误的帧。
错误帧由两个不同的域组成:第一个域是来自控制器的错误标志;第二个域为错误定界符。
错误标志:有两种形式的错误标志。
①激活(Active)错误标志。它由6个连续显性位组成。 ②认可(Passive)错误标志。它由6个连续隐性位组成。
它可由其他CAN总线协议控制器的显性位改写。
错误界定:错误界定符由8个隐性位组成。传送了错误标志以后,每一站就发送一个隐性位,并一直监视总线直到检测出1个隐性位为止,然后就开始发送其余7个隐性位。
3.4 过载帧
过载帧:用于接收单元通知其尚未做好接收准备的帧。
过载帧由两个区域组成:过载标识域及过载界定符域。
下述三种状态将导致过载帧发送:
1)接收方在接收一帧之前需要过多的时间处理当前的数据(接收尚未准备好);
2)在帧空隙域检测到显性位信号; 3)如果CAN节点在错误界定符或过载界定符的第8位采样到一个显性位节点会发送一个过载帧。
3.5 帧间隔
帧间隔:用于将数据帧及远程帧与前面的帧分离开来的帧。
数据帧和遥控帧可通过插入帧间隔将本帧与前面的任何帧(数据帧、遥控帧、错误帧、过载帧)分开,过载帧和错误帧前不能插入帧间隔。
4.常见CAN总线故障及解决方案
4.1 总线分支过多、过长的问题
当总线支线过长,上升沿和下降沿产生台阶现象,当台阶正好处于0.5V逻辑识别阈值附近时,容易导致位宽度失调,从而使接收节点接收错误。
解决方案:
a)使用标准的“手牵手”的接口与布线规则,让分支长度最小,为了保证阻抗连续,收发器应靠近接口摆放,以减少分支残段的长度,收发器到接口距离控制在10cm以内。
b)根据不同波特率,制定最长分支距离的规范。 ISO11898-1/2中对高速CAN的分支长度规定值是1Mbps下最长0.3米。其他波特率的最长分支一般由应用厂商自定义。原则是:分支长度总和+主干长度<总线传输极限长度(注意极限长度一般要*0.7使用);分支总和一般不超过总长度的30%。
c)采用收发器前置、TTL分支的方法,彻底解决分支问题与节点扩展问题。
4.2 总线电容过大问题
CAN节点的电容会影响整个网络的电容,电容越大边沿越缓,导致位采样错误。
CAN收发器为了实现CAN的仲裁与错误处理,只能采用单向驱动的结构,导致CAN波形的上升沿有驱动,而下降沿是通过整条总线与终端电阻放电产生的,所以总线的终端电阻的第一作用是“放电”。
解决方案:
a)减小终端电阻值,总线加快放电速度,以“牺牲幅值”的方法改善下降沿。注意,总并联的终端电阻不得小于24欧,在线缆较细(导线衰减较大)时,总并联电阻要适当提高,才能保证差分幅值不小于0.9V的最低限度。
b)更换低电容、低直流电阻的导线。CAN的90%电容过大问题,都是导线引起的,所以控制导线的电容是最重要的,保证导线电容在40-70PF/m的范围内,为性价比比较高的方案。
c)使用CANBridge等中继器,进行波形整形。
-
汽车测试网V课堂
-
微信公众号
-
汽车测试网手机站
编辑推荐
最新资讯
-
242小时!潍柴2000kW高压发电机组连续运行
2024-11-01 10:44
-
带载温度循环耐久(PTCE)的深度解读
2024-11-01 10:41
-
西门子106亿美元收购Altair
2024-11-01 08:21
-
国际氢能燃料电池协会氢能安全与装备分会在
2024-11-01 08:15
-
国家智能制造专家委员会主任苏波调研中国汽
2024-11-01 08:13