汽车can线是哪根怎么找 can总线是什么

CAN总线汽车
CAN概念CAN是控制器局域网(Controller Area Network , CAN)的缩写 。由以研究和生产汽车电子产品闻名的德国博世公司开发 , 最终成为国际标准(ISO11898) 。它是ISO国际标准化的串行通信协议 。它是世界上使用最广泛的现场总线之一 。在北美和西欧 , CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线 , 它有J1939协议 , 是为大型卡车和重型机械车辆设计的 , 以CAN为底层协议 。近年来 , 其高可靠性和良好的检错能力受到人们的重视 , 广泛应用于汽车计算机控制系统和环境温度恶劣、电磁辐射强、振动大的工业环境中 。
CAN的两个ISO国际标准:
1)ISO11898:定义了通信速率为125 kbps~1Mbps的高速CAN通信标准 , 属于传输速率为1Mbps , 总线长度≤ 40米的闭环总线 。
2)ISO11519:定义了一种低速CAN通信标准 , 通信速率为10 ~ 125 kbps , 属于开环总线 。当传输速率为40kbps时 , 总线长度可达1000米 。
罐头类型1)高速CAN:
A.根据电缆的长度 , 提供5Kbit/s到1Mbit/s的波特率 。
B.高速CAN网络在每个网络端点端接一个120欧姆的电阻 。
C.电平静音为2.5V , 上下限为3.5V和1.5V 。
2)容错CAN:
A.提供5k比特/秒至125k比特/秒的波特率 。
B.主导时1V和4V 。
3)单线CAN:
A.提供5k比特/秒至125k比特/秒的波特率 。
B.单线CAN的波特率一般为33.3KHz 。
CAN网络CAN网络
CAN总线
罐头成分CAN总线的一帧主要由帧信息、帧ID和帧数据组成 。
1)帧信息:有四类:标准数据帧(汽油车和电机)、标准远程帧(稀有)、扩展数据帧(柴油车和部分汽油车)、扩展远程帧(稀有) 。
2)帧ID:是CAN的一种“地址” 。竞争机制是CAN的特征 。帧ID越小 , 就越有权利占用总线资源 , 越会先发送 。
CAN ID
DBC文件:在车辆行业 , 如果车辆CAN总线上的每一帧ID和每一帧数据都以标准方式解释 , 那么形成的文件就是DBC文件 。
3)帧数据:与串口相比 , CAN的帧数据只有8个字节 , 即64位 , 所以不会多 。但是CAN FD作为一种新的总线 , 解决了只有8个字节的问题 。
4)终端电阻:CAN和RS485一样 , 要减少差分信号在终端的反射 。如果两端不加电阻 , 信号会反弹 , 影响通信 。CAN总线上应该有两个端子 , 电阻为120欧姆 , 并联连接 , 最远端子的两侧各有一个 。如果有多个节点 , 应适当增加终端电阻 。
5)波特率:常见的车载波特率有500K、250K、125K、100K 。
CAN总线标准国际标准组织
CAN标准可以分为两类:底层标准(物理层和数据链路层)和上层标准(应用层) 。
ISO 11898-1 – CAN协议ISO 11898-2 – CAN高速物理层ISO 11898-3 – CAN低速可容错物理层ISO 11898-4 – 时间触发CANISO 11898-5 – “低功率模式高速介质存取单元” – 目前处于起草阶段ISO 11519-2 – 已过时 , 被11898-3取代 。ISO 14230 – “关键字协议2000” – 定义非CAN串行线路诊断的若干部分 。ISO 15765 – CAN总线上定义诊断的标准 – 本质上是CAN总线上的关键字协议2000 。J1939 – 卡车和客车领域应用最广泛的基于CAN的高层协议 , 由SAE定义 。J1939分成几个部分 , 描述物理层、数据链路层、网络管理和大量预定义的报文 。ISO 11783 – 与J1939相似 , 但用于农业领域(诸如拖拉机)ISO 11992 – 定义卡车和拖车之间的接口NMEA 2000 – 基于J1939的协议 , 用于海事领域 。由NMEA委员会定义 。
如果没有详细说明讨论中使用的标准 , 默认情况下通常指ISO 11898-1定义的数据链路层协议和ISO 11898-2定义的物理层 。
最低标准:
CAN的底层标准基本一致 , 涵盖了OSI模型中的物理层和数据链路层 , 与ISO/OSI模型的对应关系如下图所示:
一致
ISO 11898-1:数据链路层协议 , 描述CAN总线的基本架构 , 定义不同CAN总线设备在数据链路层通信方式ISO 11898-2:高速CAN总线物理层协议 , 最高数据传输速率 1Mbps , 应用为两线平衡式信号(CAN_H, CAN_L)ISO 11898-3:定义低速CAN总线(LS-CAN, Fault-Tolerant CAN)物理层标准 , 数据传输速率在 5Kbps ~ 125Kbps。Fault-Tolerant是指总线上一根传输信号失效时 , 依靠另外的单根信号也可以通信ISO 11898-4:定义CAN总线中的时间触发机制(Time-Triggered CAN, TTCAN) , 定义与ISO 11898-1 配合的帧同步实体 , 实现汽车ECU之间基于时间触发的通信方式 。
上限标准:
不同的应用领域或厂商做法不同 , 没有统一的国际标准 。
上层协议比较
CAN框架类型(四种框架类型)1)数据帧
发送单元用来向接收单元传输数据的帧 。
数据的帧结构图:
数据帧
SOF:表示数据帧的开始;(1位) , 发出一个支配位边缘 , 网络节点开始与之同步 。
ID:标准格式11位 , 扩展格式29位包括基本ID(11位)和扩展IDr(18位) 。该部分确定了数据帧的优先级 。值越小 , 优先级越高 。
RTR:远程传输请求位 , 0表示数据帧 , 1表示远程帧 , 也就是说 , 当RTR=1时 , 报文帧的数据字段为空;(1位)
IDE: (1 bit)标识符扩展位 , 0表示标准格式 , 1表示扩展格式;扩展帧的格式与标准帧不同 , 因此不能存在于同一个can网络中 。
DLC:数据长度码 , 0-8表示数据长度为0-8字节;(4位)
数据字段:数据字段;(0~8字节)
CRC (15位):
校验域 , 从sof到数据场的所有数据进行encode由发送方填校验算法G(x) = x15 x14 x10 x8 x7 x4 x3 1;(15 bit)
DEL:检查字段和响应字段的隐式定义者;(1位)
ACK:(1位)
应答域 , 确认数据是否正常接收 , 所谓正常接收是指不含填充错误、格式错误、 CRC 错误 。发送节点将此位为1 , 由接收方进行确认 , 收到消息给出一个显性位0如果一个节点都没有确认收到消息 , 发送方监听此位为隐形位就会报错
SRR:替换远程请求位 , 在扩展格式中用作占位符 , 必须为1;(1位)
EOF: 7个连续的隐性位(1)表示帧的结束;(7位)
ITM(3位):
帧间空间 , Intermission (ITM) , 又称Interframe Space (IFS) , 连续3个隐性位 , 但它不属于数据帧 。帧间空间是用于将数据帧和远程帧与前面的帧分离开来的帧 。数据帧和远程帧可通过插入帧间空间将本帧与前面的任何帧(数据帧、遥控帧、错误帧、过载帧)分开 。过载帧和错误帧前不能插入帧间空间 。
2)远程框架
一种帧 , 用于接收单元向具有相同标识符的发送单元请求数据 。
远程帧的帧结构类似于数据帧 , 但区别在于:
1、数据帧的 RTR 值为“0” , 远程帧的 RTR 值为“1” 。2、远程帧没有数据块 。3、远程帧的 DLC 块表示请求发送单元发送的数据长度 。
格式化图表
远程框架
当总线上同时发送具有相同标识符的数据帧和远程帧时 , 数据帧将在仲裁中赢得总线控制权 , 因为数据帧的RTR位是显式的 。
3)错误框架
当检测到错误时 , 用来通知其它单元有错误的一种帧 。
错误帧的帧结构由错误标志和错误限定符组成 。
错误标志:6位 , 
错误标记
错误限定符:由8-8位隐藏位组成 。
4)过载框架
接收单元通知发送单元它还没有完成接收准备 。
发送过载帧的两种情况:
1.接收单元的状况要求发送节点延迟下一个数据帧或远程帧的传输 。
2.在帧间空间隔的3位内检测到主导位 。
每个节点最多连续发送两个过载帧 , 由过载标志和过载限定符(8个隐藏位)组成 。
过载框架
数据帧和远程帧的比较:
比较
CAN总线仲裁仲裁优先级:标识符值越小 , 消息的优先级越高 。
与逻辑:只有节点发出的所有信号都是隐性的 , 总线电平才是隐性的 。
所有发送节点在发送数据时 , 也会检测总线上的电平状态 , 将总线上的电平与自己发送的电平逐位进行比较 。
1)发 0 出现 1 :报错 。2)发 0 出现 0 :继续 。3)发 1 出现 1: 继续 。4)发 1 出现 0: 竞争失败 , 转为接收方 。
发送自测
如下图所示 , 竞争失败的C节点在检测到bus 空空闲时 , 会自动尝试再次发送 。
节点A和C同时发送数据帧 , CAN总线按优先级仲裁 , C掉电 。
CAN条件接收在CAN总线上 , 消息被广播 。节点可以通过在控制器中设置过滤器代码和掩码 , 然后检查总线上消息的标识符来确定是否接收该消息 。对于掩码 , “1”表示该位与节点相关 , “0”表示该位与节点无关 。
CAN总线数据流
可以过滤STM32的代码
位填充CAN总线采用NRZ编码 , 没有单独的时钟线 , 优点是效率高 , 但是不容易区分位从哪里开始 , 位从哪里结束 。因此 , 为了保证同步通信时有足够的电平跳变 , 规范应用了比特填充机制 , 即每连续5个相同电平后插入一个反转电平 , 接收节点收到消息后自动删除填充比特 。
数据位填充对比图
在帧中 , 除了CRC定界符、ACK字段和EOF , 其余部分都用比特填充 。在填充位的字段中 , 六个连续的显性位或隐性位的检测被视为错误 。
CAN错误检查【汽车can线是哪根怎么找 can总线是什么】错误CRC
1)发送报文时 , 发送节点会根据特定的多项式计算数据帧的SOF位到数据域最后一位的校验和值 , 并将该值放入数据帧的CRC域 , 随数据帧一起广播到总线上 。
2)在接收到数据之后 , 接收节点应用相同的多项式来计算校验和值 , 并将其与接收到的校验和值进行比较 。如果两者一致 , 正常接收;如果不是 , 则丢弃该消息并发送一个错误帧来请求发送节点重新发送该消息 。
确认错误(确认错误)
接收方在收到消息后 , 将在ack响应位中给出一个明确的级别 。如果发送器检测到该位是隐性的 , 它将报告一个错误 。
格式错误(表单错误)
检测与固定格式的位段相反的格式时检测到的错误 , 如检测crc定界符和ack定界符以及eof区是否出现支配位 。
比特误差(比特误差)
将输出电平与总线电平(不包括填充位)进行比较 , 当两个电平不同时检测到错误 。如果发送了显性位 , 但总线是隐性位 , 则会报告错误 。
填充错误(填充器错误)
在需要进行位填充的段中 , 连续检测到6位相同电平时检测到的错误 。
CAN总线错误检测机制CAN总线上的每个节点控制器将检测消息是否出错 。如果节点发现消息有错 , 就会发送一个错误标志 , 从而中断总线上正常的数据传输 。总线上未发现原始消息错误的其他节点在收到错误标志后将采取必要的措施 , 如丢弃当前总线上的消息 。
CAN节点内有两种错误状态计数器:
1)TEC /Transmit Error Counter , 发送错误状态计数器 , 出现一次错误该计数器值 82)REC /Receive Error Counter , 接收错误状态计数器 , 出现一次错误该计数器值 13)消息成功发送或接收一次 , 对应的 TEC 或 REC 值相应 -1
算错
CAN规范定义了节点的三种错误状态:
1) 主动错误:正常状态 , 在此状态下 , 节点可以发送所有类型的帧 , 包括错误帧;发现错误后会很积极主动地上报错误 。2)被动错误:节点可以发送除错误帧以外的所有帧;TEC or REC 计数超过127就进入此状态;此时 , 该节点发现错误后只会发送6个隐性位 , 不会把错误广播出去 。并且 , 发送连续帧时 , 中间必须间隔8bit的延缓时间 。3)总线关闭:节点被控制器从总线上隔离;或者TEC大于255 , 就会进入这个状态 , 需要重启 , 或者等待128个11位隐性位电平 。
CAN总线错误检测机制

    推荐阅读