通俗易懂的CAN网络解读

开通VIP,畅享免费电子书等14项超值服

首页

好书

留言交流

下载APP

联系客服

2022.10.30广东

CAN,全称为“ControllerAreaNetwork”,CAN总线是控制器局域网总网,由德国博世公司研发出来的IOS国际标准化串行通信协议总线,是一种分布式实时控制的串行网络,用于在不同的ECU下传输数据,是国际应用最广的现场总线之一。

CAN总线标准规定数据链路层和物理层,应用层需要用户定义,不同场景使用的不同的应用层标准,例如物理层和数据链路层使用ISO11898协议。

遵循IOS\OSIwnagl标准模型,can规定了数据链路层和物理层,数据链路层又分逻辑链路控制子层LLC和媒介访问控制子层MAC,不同的can标准仅物理层不同。

CAN有两个ISO国际通信协议:

ISO11519:定义了通信速率10~125kbps的低速can通信标准,属于开环总线,传输速度为40kbps时,总线长度可达1000米。低速can用于车身控制系统等要求高的场景,低速can在断掉任一线路时还可以继续接收数据。

ISO11898:定义了通信速率为125kbps~1mbps的高速can通信标准,属于闭环总线,最高可达1mbps,总线长度<40米。高速can用于发动机变速箱等要求实时性传输效率高场景。

CAN总线只提供可靠的传输服务,所以节点接收报文时,要通过应用层协议来判断是谁发送的数据,数据代表什么含义。

CAN应用层协议驱动是运行在主控制器上的程序,它按照应用层协议对CAN报文进行定义,完成报文的解析和拼装,例如:将帧ID当作节点地址,当接收到的帧ID与自身节点ID不通过时,就直接丢弃或交给上层处理。

CAN总线上通过CAN_H和CAN_L两条线的电位差来表示can信号,can总线上两种电位差分别为显性电平逻辑0和隐性电平逻辑1,显性电平优先级高于隐性电平,can控制器将cpu传来的信号转为逻辑电平,can发射器将接收到的逻辑电平转化成差分电发送到can总线上。

9.开环总网络/闭环总网络

来自CSDN

传输速度:传输最高速度可达1mbps,最远1000米,无损位仲裁机制,多主结构

低成本:ECUs通过单个CAN接口通信,布线成本低

高集成:CAN总线系统允许在所有ECUs上进行集中诊断和配置

可靠性:该系统对子系统故障和电磁干扰有很强的鲁棒性,是汽车控制系统的理想选择

高效率:可以对信息ID进行优先排序,以便最高等级的的信息不被中断

灵活性:每个ECU包含一个用于can信号收发芯片,随意添加can节点

多主控制:总线空闲时ECU都可以发送信号,两个以上单位同时发送信号时以标识符(ID)决定优先级。

系统柔软性:连接总线的单元没有“地址”信息,所以添加新的单元时,其他的已连接的单元软硬件和应用层都不需要做出改变具有错误检测,错误通知,错误恢复功能:所有单元都可以检测错误(错误检测功能),检测出错误的单元会立即同时通知其他所有单元(错误通知功能),正在发送消息的单元一旦检测出错误,会强制结束当前的发送。强制结束发送的单元会不断反复地重新发送此消息直到成功发送为止(错误恢复功能)。

故障封闭功能:CAN可以判断出错误的类型是总线上暂时的数据错误(如外部噪声等)还是持续的数据错误(如单元内部故障、驱动器故障、断线等)。由此功能,当总线上发生持续数据错误时,可将引起此故障的单元从总线上隔离出去。

~~~CAN通讯详解~~~

CAN通讯是一种基于信号的通信,信号的发送一般是基于事件和周期的属性,CAN信号发送可以一对一,也可以一对多,采用广播形式,也就一条总线上一个节点发送的信号会被其他节点接收到,所以一条can总线上不允许多个ECU发送相同的CANID,避免总线冲突。

实际上,CAN总线网络底层只采用了OSI基本参照模型中的数据链路层、传输层。

常见CAN总线是由带屏蔽层的双绞线、收发器、控制器和终端电阻组成的。

can通讯节点是由一个can控制器和can收发器组成,控制器与收发器之间通过can-Tx和can-Rx信号相连接,收发器与can总线之间用can-low和can-high信号线相连,其中can-tx和can-rx使用的普通类似ttl巡逻信号,而can-high和can-low是一对差分信号线,使用比较特别差分信号。

TTL:晶体管_晶体管逻辑电平,TTL信号电平规定,5V等价于逻辑1,0V等价于逻辑0,这样的数据通信及电平规定方式,被称为TTL。

CAN收发器是实现CAN控制器逻辑电平和CAN总线差分电平的互换,实现CAN收发器的方案有两种:

一是使用CAN收发IC(需要加电源隔离和电气隔离)

二是使用CAN隔离收发模块

CAN控制器是CAN的核心元件,它实现了CAN协议中数据链路层的全部功能,能够自动完成CAN协议的解析,CAN控制器一般有两种一是控制器IC(SJA1000)二是集成CAN控制器的MCU(LPC11C00)。

MCU负责实现对功能电路和CAN控制器的控制,在节点启动时初始化CAN控制器参数;通过CAN控制器读取和发送CAN帧;在CAN控制器发生中断时,处理CAN控制器的中断异常;根据接收到的数据输出控制信号。

构建节点,实现相应控制,由下而上分为4部分,:

CAN节点电路

CAN控制器驱动

CAN应用层协议

CAN节点应用程序

虽然不同节点完成的功能不同,但是都有相同的硬件和软件架构。

CAN的收发器和控制器分别对应CAN的物理层和数据链路层,完成CAN报文的收发功能电路完成特定的功能,如信号采集或控制外设等主控制器与应用程序按照CAN报文格式解析报文,完成相应控制CAN硬件驱动是运行在主控制器上的序,它主要完成以下工作:

基于寄存器的操作、初始化

CAN控制器、发送CAN报文、接收CAN报文

如果直接使用CAN硬件驱动,当更换控制器时,需要修改上层应用程序,移植性差,在应用层和硬件驱动层加入虚拟驱动层,能够屏蔽不同CAN控制器的差异。

一个CAN节点除了完成通信功能,还包括一些特定的硬件功能电路,功能电路驱动向下直接控制功能电路,向上为应用层提供控制功能电路的函数接口,特定功能包括数据采集、人机显示等。

接口管理逻辑解释MCU指令,寻址CAN控制器中各功能模块的寄存器单元,向主控制器提供中断信息和状态信息。

发送缓冲区和接收缓冲区都可以储存CAN总线网络的完整信息验收滤波是将储存的验证码与CAN报文的识别码比较,跟验证码符合的CAN帧才会储存到接收缓冲区CAN内核实现数据链路的全部协议。

节点发送要检测到总线空闲状态(连续11位隐性)。

只有总线空闲时节点才能发送报文在发送过程中进行回读,判断发出的位和回读的位是否一致。

线与机制通过ID进行制裁显性位能够覆盖隐性位,报文ID值越小,优先等级越高。

报文同时发送时才启动仲裁机制

非破坏性仲裁退出仲裁后进入接收状态。

总线空闲时重新发送

通过滤波器对接收的报文进行过滤。

~~~CAN帧解析~~~

数据帧:用于发送单元向接收单元传送数据的桢

遥控帧:用于接收单元向相同ID单元发送请求的桢

错误帧:用于当检测出错误时向其他单元通知错误的桢

过载帧:用于接收单元通知其尚未做好准备的桢

帧间隔:用于将数据桢和远程桢与前面桢隔开的桢

桢最开始就是起始帧,也叫(SOF)。

SOF恒定为显性(1bit)。

NRZ(非归零)编码

确保报文紧凑,相同宽带下信息量更大。

不能保证足够的跳变沿同步,带来节点间计时器误差的累积。

由于can属于异步通信,没有时钟信号线,连接在同一个总线网络中的各个节点会像串口异步通讯那样,节点间使用约定好的波特率进行通讯,特别的CAN还会使用“位同步”的方式来抗干扰、吸收误差,实现对总线电平信号进行正确的采样,确保通讯正常。

接收单元在总线空闲时检测出帧起始时进行的同步调整。

在检测出边沿的地方不考虑SJW值,而认为SS段。

在接收过程中检测总线电平发生变化时进行同步调整当检测出边沿时,根据SJW值通过加长PBS1段或缩短PBS2段进行同步,但如果发生超出SJW值的误差时,最大调整量不能超过SJW值。

仲裁段是用来判断一帧报文的优先等级(包含报文源地址和目标地址)。

数据仲裁段RTR恒定为显性,远程帧恒定为隐性(标准帧11位bit,拓展帧29位bit。

仲裁场SSR与标准帧同一位置,故名远程代替请求位SRR为隐性1,确保标准帧收发高于拓展帧优先级。

仲裁场IDE位,标准帧中的IDE对应拓展帧中的IDE,确保前11位ID相同下,数据帧优先于拓展帧区分标准帧和拓展帧。

标准桢为显性0(11位ID)拓展桢为隐性1(29位ID)。

保留位r0,r1发送时必须是显性,接受方可以是显性和隐性任意组合最后4个字节的DLC代表数据长度,指示了数据桢中的数据长度,对于没有数据段的遥控帧,DLC表示该遥控帧对应的数据帧的数据段的字节数。

数据段为数据帧的核心内容,它是节点要发送的原始信息,由0~8个字节组成,MSB先行。

CRC段包含了CRC校验序列(15位)和CRC界定符1(隐性)。

发送节点在ack段发送2个隐性位,即发送方发送报文ack槽为隐性。

接受节点在接收到正确信息后在ack槽发送显性,通知发送节点正常接收。

固定格式,连续7个隐性单位,表示数据桢结束。

固定格式:3个连续的隐性位ITM后进入总线空闲状态,此时节点可以收发报文。

在发送和接收报文时,总线上的节点如果检测出了错误,那么该节点就会发送错误帧错误一共有5种,多种错误可能同时发生:

位错误

填充错误

CRC错误

格式错误

ACK错误。

检测出满足错误条件的单元输出错误标志通报错误。

处于主动错误状态的单元输出的错误标志为主动错误标志;处于被动错误状态的单元输出的错误标志为被动错误标志。

发送单元发送完错误帧后,将再次发送数据帧或遥控帧、

节点始终处于3种状态:

不能收发任何报文

能够进行总线通信

错误产生时发送被动错误标志(6个连续隐性位)

限制(不能连续发送2次报文)

正常进行总线通信,错误产生时发送主动错误标志(6个连续显性位)

帧起始(1bit)、仲裁域(12bit)、控制域(6bit)、数据域(8×8bit)、循环冗余码域(15bit)、应答域(2bit)、1(bit)分隔符和帧结尾(7bit),共108位,但实际发送一帧报文长度应该在111左右。

帧起始(1bit)、仲裁域(29bit)、控制域(6bit)、数据域(8×8bit)、循环冗余码域(15bit)、应答域(2bit)和帧结尾(7bit),共124位,但实际发送一帧报文长度应该在128左右。

THE END
1.CAN网络拓扑汽车CAN总线有 【1】动力总成PCAN, 【2】底盘控制CCAN,【3】整车控制BCAN,【4】娱乐ECAN,【5】诊断DCAN 五种 以下是常见的CAN网络拓扑 动力CAN好像一般都是6、14的。其他的底盘CAN和车身CAN不确定,要看整车厂的定义. 一般OBD口规范中,与排放相关的CAN总线基本在PIN脚上有定义,非排放的就看是否有空闲的PINhttps://www.jianshu.com/p/d72ed22f2b67
2.CAN网关简介百科can总线网关网桥一个CAN网桥可以连接不同的比特率或相互协议的CAN网络。它是基于存储(修改)前瞻性原则CAN报文接收到一个子网,然后传送到其他子网。翻译过滤规则,也可以使用,允许协议进行适应之间的子网络。网桥可以提供简单的网关功能。不同的CAN中继器,CANbridge的最大网络规模的扩大,使子系统的总线仲裁方面完全自给自足。他们的实时http://51lm.cn/p/bk_Can_gateway_bridge/CAN%E7%BD%91%E5%85%B3%E7%AE%80%E4%BB%8B.html
3.CANSwitch(CAN交换机)CAN中继及交换机产品展示CANSW-400T 4端口高速智能CAN交换机 (CAN总线集线器,CANHUB,CANOpen交换机,DeviceNet交换机) 手册下载 产品概述 CANSW-400T 能实现多个CAN 网络的透明连接,可以在总线级别实现复杂结构的多点连接。CANSW-400T 使得主干网络没有支线长度限制,网络中任意两个节点可以到达协议距离。该设备具有4 个通信端口,每个端口都http://www.embedded-soc.com/product/s_75.html
4.车联网安全入门一:了解CAN总线及环境模拟CAN网络上的所有节点都会接收CAN帧,并且根据所发送帧的仲裁ID,网络上的每个CAN节点决定是否接受该帧。如果多个节点同时尝试向 CAN 总线传输消息,则具有最高优先级(最低仲裁 ID)的节点将自动获得总线访问权限。较低优先级的节点必须等到总线变得可用才能再次尝试传输。通过这种方式,您可以实现 CAN 网络,以确保 CAN https://xz.aliyun.com/t/14262
5.CAN转以太网服务器以太网转CANCAN转TCPIPCAN转RJ45CAN 可靠增加通信距离,扩展CAN网络 丰富的数据传输CAN到以太网,到RS485,以太网到RS485 多种接口2 x CAN, 1 x WAN, 1 x RS485 工业设计EMC保护,内置硬件看门狗 描述 参数 知识库 购买 首页产品中心 USR-CANET200是一款基于CAN总线转以太网服务器设备,CAN与网络设备通信的通信设备,实现CAN数据与网络服务器的数https://www.usr.cn/Product/205.html
6.单线CAN转换器●对单线CAN调试分析 ●双线CAN扩展支持单线CAN 单线CAN网络是指只使用一条CAN信号线即可进行CAN通讯的网络(普通告诉CAN网络使用两条差分信号线:CAN_H、CAN_L)。单线CAN技术被广泛应用于机动车辆,由于汽车车身可以作为总线的“地”,因此单线CAN可以使用一条数据线连接车内各个通信模块,从而大量减少了布线的开销。但是http://www.gcanbox.com/fsd/canzxwg/135.html
7.CAN总线在新能源汽车中的通信网络设计及应用分析在汽车通信网络中,抗干扰设计同样至关重要。动力电池内部的高压大电流线束可能会对通信网络造成干扰。为了提高网络的抗干扰能力,我们可以采取一系列措施,如使用双层屏蔽双绞线、缩短BMS单元接入总线主干网的电缆长度、使CAN网络尽量远离动力线等。 五、CAN总线的显著优势 https://www.yoojia.com/ask/17-14183207122356279066.html
8.CAN总线网络传输层CanTP详解AutoSARCAN总线是一种常用于汽车电子系统中的通信协议,它允许不同的控制单元之间进行高效的数据传输和通信。在CAN总线中,网络传输层CanTP(CAN Transport Protocol)起着至关重要的作用,它负责将较大的数据分割为小的传输单元,并确保它们可靠地在CAN网络上传输。本文将详细介绍CanTP的工作原理,并提供相应的源代码示例。 https://download.csdn.net/blog/column/12439360/132926052
9.CAN总线报文丢失故障及其判定方法英飞凌开发者技术社区节点即整车CAN网络中的ECU。节点故障导致报文丢失的原因主要分为软件故障和硬件故障两方面。软件故障即传输协议或软件程序有缺陷或冲突,从而使车载网络系统通讯出现混乱或无法工作。硬件故障一般由于通讯芯片或集成电路故障,造成车载网络系统无法正常工作。[3] https://www.infineon-autoeco.com/BBS/Detail/196
10.HMSAnybus网关无线IXXAT嵌入式网络.CAN中继网络设备1.01.0331.42000 CANbridge NT420–4通道CAN/CANfd路由器坎布里奇斯和网关 1.01.0121.99001 CANbridge-顶帽轨道外壳 带有两个 通过以太网连接多个CAN网络或CAN节点的CAN接口。 设备提供三种操作模式: PC接口,CAN以太网CAN网桥 或CAN以太网网关。 通用CAN以太网网关 https://www.chem17.com/st434794/product_34367525.html