该在线学习模块适用于所有希望更好地了解CAN通信技术的人员。
该在线学习模块还适用于所有计划参加Vector培训课程的人员。在对数据通信有一定程度的了解之后,您将更容易接受绝大多数Vector培训课程。
汽车近年来的发展呈现出以电子化为主的特点。电子化的主要原因是由于当前用户对汽车的需求一直在不断增长,以及日益严格的汽车排放法规。另一个因素是全球化,全球化加剧了竞争和成本压力,直接导致创新压力不断增加。
起初,独立运行的ECU足以实现电子功能。但工程师们很快就意识到,ECU彼此协调工作可以极大地增强车辆功能。最初,ECU之间数据交换是以传统方式实现的,即为每一个传输信号分配一个物理通信通道。
然而,大量的布线也只能实现有限的数据交换。唯一可以解决这一难题的方法是通过单个通信通道(总线)进行串行位数据交换。因此,需要设计适合汽车需求的串行通信系统。
上世纪八十年代初,Bosch开发一种新的串行通信系统,即CAN。即使在今天,CAN汽车动力系统、底盘和舒适系统的ECU网络中发挥着重要作用。最重要的是,CAN具有数据传输非常可靠的特点,可以满足应用领域的实时要求。
自引入CAN后,汽车中的复杂线束(通常存在多种变体)已成为过去。CAN不仅可以简化项目规划和实施,还可以降低布线重量和空间要求。
从1994年开始,ISO启动CAN技术标准化工作,并最终形成4份标准规范。其中,ISO11898-1描述了CAN协议。除了数据通信的参考模型,CAN协议仅包括数据链路层(介质访问控制子层MAC-MediumAccessControl和逻辑链路控制子层LLC-LogicalLinkControl)和物理层(物理信号PLS-PhysicalSignaling)。
CAN协议是基于硬件实现的。目前有多种不同的CAN控制器,其唯一区别在于对CAN报文的处理方式,具体体现在对象层中:具有对象存储的CAN控制器(即完整CAN控制器-FullCANController)与不具有对象存储的CAN控制器(即基础CAN控制器-BasicCANController)。
ISO11898-2和ISO11898-3介绍了数据通信参考模型的两个子层:PMA(PhysicalMediumAttachment,物理介质适配层)和PMS(PhysicalMediumSpecification,物理介质规范)。它们描述了两种不同的CAN物理层:高速CAN物理层和低速CAN物理层,主要区别在于对总线电平和数据传输速率(波特率)的定义。
ISO11898-3规定最大的波特率为125kbit/s,主要用于汽车的舒适系统领域。ISO11898-2规定最大波特率为1Mbit/s,主要用于汽车的动力系统和底盘系统领域。ISO11898-3规定最大的波特率为125kbit/s,主要用于汽车的舒适系统领域。ISO11898-2规定最大波特率为1Mbit/s,主要用于汽车的动力系统和底盘系统领域。
图“StandardandImplementation”显示了数据通信的ISO/OSI参考模型、CAN技术规范(CANstandard)及其实现之间的关系。
标准统一的软件可减少开发工作并简化维护工作,还有助于提高重复使用率,并且有助于增强不同车辆平台之间以及OEM和供应商之间的软件组件的互换性。
AUTOSAR(AUTomotiveOpenSystemARchiteture,汽车开放系统架构)为ECU软件提供了参考架构,其核心是AUTOSAR实时运行环境(RTE),负责将网络与应用程序的软件组件完全分离。AUTOSAR以基础软件的形式为软件组件提供统一的服务,从低到高分别为:微控制器抽象层、ECU抽象层、服务层。
ECU需要CAN接口才能参与CAN通信。CAN接口由CAN控制器和CAN收发器组成。CAN控制器执行CAN协议规定的通信功能,从而大大减轻了主机的负担。
不论CAN控制器类型如何,CAN控制器都可集成在微控制器中,也可以作为独立的芯片存在(如图所示)。在这种情况下,微控制器会将CAN控制器视为存储芯片。虽然独立CAN控制器更加灵活,但集成CAN控制器具有所需空间更少的优势,并且微控制器和CAN控制器之间的通信更快、更可靠。
通常,高速CAN收发器和低速CAN收发器的物理电平不同,支持的数据传输速率也不同。高速CAN收发器支持的波特率高达1Mbit/s。低速CAN收发器支持的波特率最高仅为125kbit/s。但低速CAN收发器可确保总线接口的容错布局(例如,两条通信线路之中的某一条故障不会导致总体通信故障)。
“CANTransceiverLayout”图显示了高速CAN收发器的基本布局。两个输出晶体管都处于截止状态时,CANH和CANL均具有相同的电位(0.5*Vcc),且差分电压为零。两个晶体管导通时会在CANH和CANL之间产生一个随负载电阻变化的差分电压。根据ISO11898-2,该差分应为2V。因此,会产生约35mA的电流。
通常,CAN收发器的电磁辐射极低且共模工作范围广,具有较高的抗噪能力。此外,目前的CAN收发器可提供高达8kV的ESD(Electro-Staticdischarge,防静电)保护。尽管CAN收发器在某些应用领域中具有很高的共模抑制,但在输出附近插入共模扼流圈(CMC)仍有助于进一步减少辐射。
在ISO11898-2中,逻辑“1”对应差分电压0V,逻辑“0”对应差分电压2V。高速CAN收发器将超过0.9V的差分电压当做共模工作范围(通常为-12V到12V之间)内的显性(dominant)电平。
低于0.5V的差分电压被当做隐性(recessive)电平。磁滞电路提高了抵抗干扰电压的能力。在ISO11898-3中,逻辑“1”对应差分电压-5V,逻辑“0”对应差分电压2V。
“High-SpeedCANBusLevels”图和“Low-SpeedCANBusLevels”图说明了不同CAN总线上的电压关系。
在CAN网络中实现通信顺畅(尤其是总线访问、故障指示和应答)的基本前提是总线显性电平和总线隐性电平之间存在明显差别。总线显性电平对应于逻辑“0”,总线隐性电平对应于逻辑“1”。
从逻辑上说,上述行为是与逻辑。从物理上讲,与逻辑由集电极开路电路实现。通过“BusLogic”图可以了解CAN网络的线与(wired-AND)逻辑。
安全性关键应用(例如动力系统领域的应用)对通信系统的可用性提出了严格的要求。因此,让单个总线节点承担总线分配责任会造成不利影响。该总线节点易受攻击,且如果出现故障,将导致所有通信失败。最佳解决方案是分散总线访问权限,以便每个总线节点都能够访问总线。
当传输信息时,通信通道才会处于繁忙状态,因此CAN节点可以非常快速地访问总线。理论上,由于可以快速响应异步事件且波特率高达1Mbit/s,因此在CAN网络中完全可以实现毫秒级的实时数据传输。
通过“CANCommunicationPrinciple”动画可以了解如何在CAN网络中进行报文传输,以及如何使用CAN通信矩阵和接收过滤器。请阅读说明,以便充分利用动画中的全部功能。“TypicalCANCommunication”图显示了典型的通信顺序,包括构成CAN网络基础的通信矩阵,以及最终的接收和发送情况。
数据帧是传输用户数据的载体,CAN通信中的主要角色。数据帧由多种不同部分构成,每个部分都会在传输过程中执行一项重要任务。例如:启动并维护ECU节点之间的同步,建立通信矩阵中定义的通信关系,以及传输和保护用户数据。
IDE位用于区分标准格式和扩展格式。标准ID有11位,扩展ID有29位,“PhysicalTransferofaDataFrameinStandardFormat”图展示了这两种格式。
DLC表示数据场中的有效负载的字节数。一个数据帧最多可以传输八个字节。
校验场使用以界定符(delimiter)为结尾的CRC来保护有效负载。接收方在ACK位做出肯定或否定的应答,ACK位后同样有一位界定符。
EOF由7个连续隐性位组成,在此之后,报文传输结束。
为加深对CAN数据帧的理解,可以查看“PhysicalTransferofaDataFrameinStandardFormat”图并通过习题进行练习。该图显示了高速CAN网络中标准格式数据帧的物理传输。您可以尝试在布局练习中以正确顺序排列标准格式数据帧的所有部分。
用户可以选择以下两种报文格式:标准格式和扩展格式。两种格式的标识符长度不同。在标准格式中,ID有11位。在扩展格式中,ID有29位。
与标准格式ID相比,扩展格式ID由两个部分构成:基本ID和扩展ID。连接这两个部分的是IDE(IdentifierExtension,标识符扩展)位和SRR(SubstituteRemoteRequest,替代远程请求)位。
显性IDE位表示CAN报文为标准格式。隐性IDE位表示CAN报文为扩展格式。在扩展格式中,始终以隐性方式传输的SRR位取代了标准格式的RTR位,并且控制场的前两位(r0和r1)没有实际作用,两者都作为显性位传输。
CRC方法根据要传输的位(从SOF到数据场结束)和ISO11898-1定义的生成多项式G(x)计算CRC序列。CRC序列位于数据场之后。接收方会采用同样的方法针对接收到的位(SOF开始到数据场结束)计算CRC并与接收到的报文中的CRC序列进行对比,这样可以非常可靠地检测是否发生了传输错误。(例外情况:当CRC序列本身遭到干扰破坏时)。
根据计算后的结果,每个接收节点都会给出应答,与节点是否会过滤该报文无关。接收方的应答不是肯定就是否定。ACK位中的显性电平表示肯定应答,隐性电平表示否定应答。
您可通过交互式动画了解CAN网络中的应答。该图假设CAN网络中存在一个发送方和两个肯定应答的接收方。
在有节点给出肯定应答的情况下,如果还有其他节点给出否定应答,那么这些否定应答不会被其他节点收到。为确保网络范围内的数据一致性,这些节点会在ACK界定符之后发送错误标志。
如果没有一个肯定应答,则ACK位会保持隐性,发送方将检测到ACK错误,并通过发送错误标志来终止正在进行的报文传输。ACK错误表示由发送方引起的错误或总线上没有接收方引起的错误。
数据传输正确的基本前提是网络中通信节点之间同步。起始位(帧起始-SOF)的隐性至显性的跳变沿用于同步CAN报文。之后,重同步(resynchronization)机制用于保持同步,直到报文传输结束为止。
重同步机制基于对隐性至显性跳变沿的评估。位填充机制保证了传输过程中有足够的跳变沿。ISO11898-1规定,发送方在传输连续5个相同位后必须传输一个相反的位;即使连续5个相同位后本就是一个相反位,也需要添加填充位。
“BitStuffing”图可以帮助您迅速理解位填充机制。
为保持通信系统的实时能力,ISO11898-1规定了用于确保无损数据传输的总线访问,CSMA/CA(CarrierSenseMultipleAccesswithCollisionAvoidance,载波监听多路访问/冲突避免)方法。CSMA/CA方法确保希望发送报文的CAN节点在CAN总线可用时才对其进行访问。
“PrincipleofBusAccess”图可以帮助您更好地理解上述内容。图中假设两个CAN节点希望访问正在传输报文的总线。请阅读说明,以便充分利用图片中的全部功能。
ISO11898-1定义的总线访问方法的关键是逐位总线仲裁。即使多个节点同时访问总线,也可以防止发生冲突。逐位总线仲裁的原理相对简单。
仲裁逻辑决定CAN节点是否可以继续发送,或者停止发送。“BusAccessLogic”图有助于加深了解逐位总线仲裁的机制。
仲裁阶段结束时,ID最小的CAN报文的发送节点获得总线访问权。试图发送较低优先级报文的CAN节点切换为接收状态,等待CAN总线再次可用时对其进行访问,以再次尝试发送。“BusAccessProcedure”图说明了CAN节点在总线访问期间的所有操作。
CAN报文的优先级对于获得CAN网络的总线访问权具有决定性作用。优先级通过标识符进行编码,标识符从最高有效位到最低有效位逐位传输。
线与总线逻辑和仲裁逻辑可确保CAN报文的优先级随着标识符值的减小而增加:标识符值越小,CAN报文的优先级越高。“Prioritization”图说明了这种关系。
由于环境对数据传输有干扰作用,所以环境对评估数据完整性至关重要,同样重要的还有串行总线系统抵御干扰的能力。因此,保证可靠的数据传输从物理系统布局开始,其中EMC往往扮演重要角色。
尽管具有电磁兼容设计和物理数据保护,但仍可能发生传导、电感和电容耦合,从而导致信号衰减和失真。如果再考虑到采样点不同、阈值差异以及节点之间的时钟频率偏差,实现无故障的数据传输是不可能的。
避免故障需要处理噪声辐射和敏感性或抗干扰性。位编码对辐射发射具有重大意义。智能设计的位编码有助于显著减少辐射,但必须经常与所需的输送能力进行协调。
NRZ(NonReturntoZero,不归零)位编码被用于CAN。这意味着二进制信号与物理电平的映射关系:逻辑“1”对应高电平,逻辑“0”对应低电平。NRZ编码的特征在于,相同极性的连续位没有电平变化。
对称信号传输可以有效地避免发动机、点火单元和开关触点等引起的干扰电压的危害。在对称信号传输中,外部噪声对两条线的作用相同。
对于对称信号传输,可以利用导线周围磁场叠加的原理。导线内的电场以及导线周围产生的磁场正好彼此相反。如果导线彼此紧密相邻,则磁场几乎叠加为零,从而消除电磁辐射。绞合两根CAN信号线(双绞线)可确保其紧密相邻。
通过绞合导线,不仅可以确保导线紧密相邻,就局部而言,感应效应的极性相反,每根导线上的感应电流是可以相互抵消的,从而可以进一步减弱感应效应。绞合导线将导线回路转变为单独的导体。理论上,每一段导线的磁场方向相反,从而导致感应电压或感应效应相互抵消。
由两个相同电阻(60欧姆)和一个电容(通常为4.7nF)构成的分离式总线终端类似于低通滤波器。高频信号转移至地,不会影响直流电压。测量结果表明,这可以提高抗噪能力并减少对外界的电磁干扰。
为检测被破坏的报文,CAN协议定义了五种机制:位监控、报文格式监控(格式检查)、位编码监控(填充检查)、应答评估(ACK检查)以及校验场验证(循环冗余校验)。
填充检查用于检查位流。CAN协议规定发送方传输五个相同位后必须传输相反的位,以便实现同步。如果连续接收到五个以上的相同位,则会出现填充错误。
在位监控的框架内,发送方会将发送的位电平与实际的总线电平进行比较。如果发送方检测到两个电平之间存在差异,则会发生位错误。位监控可确保检测到发送方的所有全局错误和所有局部错误。
格式检查用于检查CAN报文的格式。所有CAN报文在某些位置始终呈现相同的位序列,即CRC界定符、ACK界定符和EOF。发送方始终以隐性电平传输这些报文部分。如果接收方在进行格式检查时在其中一个位检测到显性总线电平,则会发生格式错误。
CAN协议中定义的应答机制规定,所有接收方在完成循环冗余校验之后必须立即应答每一个接收的CAN报文。一个肯定应答足以告知发送方,至少一个接收方已正确接收了其发送的CAN报文。如果发送方没有接收到任何肯定应答,则发生了应答错误(ACK错误)。
传输错误标志可确保其他所有CAN节点会因为检测到总线错误而发送错误标志(次要错误标志),从而像主要错误标志的发送方一样终止常规数据传输。根据情况,主要和次要错误标志可能会有所重叠。
错误标志的传输由错误界定符来终止。错误界定符由八个隐性位构成,取代了常规报文传输的ACK界定符和EOF,连同CAN总线上的强制传输暂停(ITM-帧间间隔),合计形成11个隐性位(总线空闲标识符)。