一、CAN-BUS介绍1.CAN的基本概念、特点CAN是ControllerAreaNetwork的缩写(以下称为CAN),是ISO*1国际标准化的串行通信协议。CAN协议如表3所示涵盖了ISO规定的OSI基本参照模型中的传输层、数据链路层及物理层。CAN协议中关于ISO/OSI基本参照模型中的传输层、数据链路层及物理层,具体有哪些定义如图所示。.ISO/OSI基本参照模型ISO/OSI基本参照模型各层定义的主要项目软件控制7层:应用层由实际应用程序提供可利用的服务。6层:表示层进行数据表现形式的转换。如:文字设定、数据压缩、加密等的控制5层:会话层为建立会话式的通信,控制数据正确地接收和发送。4层:传输层控制数据传输的顺序、传送错误的恢复等,保证通信的品质。如:错误修正、再传输控制。3层:网络层进行数据传送的路由选择或中继。如:单元间的数据交换、地址管理。硬件控制2层:数据链路层将物理层收到的信号(位序列)组成有意义的数据,提供传输错误控制等数据传输控制流程。如:访问的方法、数据的形式。通信方式、连接控制方式、同步方式、检错方式。应答方式、通信方式、包(帧)的构成。位的调制方式(包括位时序条件)。1层:物理层规定了通信时使用的电缆、连接器等的媒体、电气信号规格等,以实现设备间的信号传送。如:信号电平、收发器、电缆、连接器等的形态。【注】*1OSI:OpenSystemsInterconnection(开放式系统间互联)CAN的特点CAN协议具有以下特点。(1)多主控制在总线空闲时,所有的单元都可开始发送消息(多主控制)。最先访问总线的单元可获得发送权。(2)消息的发送在CAN协议中,所有的消息都以固定的格式发送。总线空闲时,所有与总线相连的单元都可以开始发送新消息。两个以上的单元同时开始发送消息时,根据标识符(Identifier以下称为ID)决定优先级。ID并不是表示发送的目的地址,而是表示访问总线的消息的优先级。两个以上的单元同时开始发送消息时,对各消息ID的每个位进行逐个仲裁比较。仲裁获胜(被判定为优先级最高)的单元可继续发送消息,仲裁失利的单元则立刻停止发送而进行接收工作。(3)系统的柔软性与总线相连的单元没有类似于“地址”的信息。因此在总线上增加单元时,连接在总线上的其它单元的软硬件及应用层都不需要改变。(4)通信速度根据整个网络的规模,可设定适合的通信速度。在同一网络中,所有单元必须设定成统一的通信速度。即使有一个单元的通信速度与其它的不一样,此单元也会输出错误信号,妨碍整个网络的通信。不同网络间则可以有不同的通信速度。(5)远程数据请求可通过发送“遥控帧”请求其他单元发送数据。(6)错误检测功能·错误通知功能·错误恢复功能所有的单元都可以检测错误(错误检测功能)。检测出错误的单元会立即同时通知其他所有单元(错误通知功能)。正在发送消息的单元一旦检测出错误,会强制结束当前的发送。强制结束发送的单元会不断反复地重新发送此消息直到成功发送为止(错误恢复功能)。(7)故障封闭CAN可以判断出错误的类型是总线上暂时的数据错误(如外部噪声等)还是持续的数据错误(如单元内部故障、驱动器故障、断线等)。由此功能,当总线上发生持续数据错误时,可将引起此故障的单元从总线上隔离出去。(8)连接CAN总线是可同时连接多个单元的总线。可连接的单元总数理论上是没有限制的。但实际上可连接的单元数受总线上的时间延迟及电气负载的限制。降低通信速度,可连接的单元数增加;提高通信速度,则可连接的单元数减少。2.CAN协议及标准规格2.1ISO标准化的CAN协议CAN协议经ISO标准化后有ISO11898标准和ISO11519-2标准两种。ISO11898和ISO11519-2标准对于数据链路层的定义相同,但物理层不同。(1)关于ISO11898ISO11898是通信速度为125kbps-1Mbps的CAN高速通信标准。目前,ISO11898追加新规约后,成为ISO11898-1新标准。(2)关于ISO11519ISO11519是通信速度为125kbps以下的CAN低速通信标准。ISO11519-2是ISO11519-1追加新规约后的版本。【注】*1通信速度通信速度根据系统设定。*2总线长度总线的长度根据系统设定。通信速度和最大总线长度的关系如下图所示。CAN收发器根据两根总线(CAN_High和CAN_Low)的电位差来判断总线电平。总线电平分为显性电平和隐性电平两种。总线必须处于两种电平之一。总线上执行逻辑上的线“与”时,显性电平为“0”,隐性电平为“1”。物理层的特征如下图所示。ISO11898、ISO11519-2的物理层特征2.2CAN和标准规格不仅是ISO,SAE(SocietyofAutomotiveEngineers)等其它的组织、团体、企业也对CAN协议进行了标准化。基于CAN的各种标准规格如表6所示面向汽车的通信协议以通信速度为准进行了分类。表6.CAN协议和标准规格名称波特率规格适用领域SAEJ1939-11250k双线式、屏蔽双绞线卡车、大客车SAEJ1939-12250k双线式、屏蔽双绞线、12V供电农用机械SAEJ2284500k双线式、双绞线(非屏蔽)汽车(高速:动力、传动系统)SAEJ2411133.3k、83.3k单线式汽车(低速:车身系统)NMEA-200062.5k、125k、250k、500k、1M双线式、屏蔽双绞线供电船舶DeviceNet125k、250k、500k双线式、屏蔽双绞线24V供电工业设备CANopen10k、20k、50k、125k、250k、500k、800k、1M双线式、双绞线可选(屏蔽、供电)工业设备SDS125k、250k、500k、1M双线式、屏蔽双绞线可选(供电)工业设备3.CAN协议帧发送细节3.1帧的种类通信是通过以下5种类型的帧进行的。•数据帧•遥控帧•错误帧•过载帧•帧间隔另外,数据帧和遥控帧有标准格式和扩展格式两种格式。标准格式有11个位的标识符(Identifier:以下称ID),扩展格式有29个位的ID。各种帧的用途如表所示。帧的种类及用途帧帧用途数据帧用于发送单元向接收单元传送数据的帧。遥控帧用于接收单元向具有相同ID的发送单元请求数据的帧。错误帧用于当检测出错误时向其它单元通知错误的帧。过载帧用于接收单元通知其尚未做好接收准备的帧。帧间隔用于将数据帧及遥控帧与前面的帧分离开来的帧。3.2数据帧数据帧由7个段构成。数据帧的构成如图所示。(1)帧起始表示数据帧开始的段。(2)仲裁段表示该帧优先级的段。(3)控制段表示数据的字节数及保留位的段。(4)数据段数据的内容,可发送0~8个字节的数据。(5)CRC段检查帧的传输错误的段。(6)ACK段表示确认正常接收的段。(7)帧结束表示数据帧结束的段。下面对帧的构成进行说明。数据帧的构成(1)帧起始(标准、扩展格式相同)表示帧开始的段。1个位的显性位。数据帧(帧起始)总线上的电平有显性电平和隐性电平两种。总线上执行逻辑上的线“与”时,显性电平的逻辑值为“0”,隐性电平为“1”。“显性”具有“优先”的意味,只要有一个单元输出显性电平,总线上即为显性电平。并且,“隐性”具有“包容”的意味,只有所有的单元都输出隐性电平,总线上才为隐性电平。(显性电平比隐性电平更强。)(2)仲裁段表示数据的优先级的段。标准格式和扩展格式在此的构成有所不同。数据帧(仲裁段)【注】ID标准格式的ID有11个位。从ID28到ID18被依次发送。禁止高7位都为隐性。(禁止设定:ID=1111111XXXX)扩展格式的ID有29个位。基本ID从ID28到ID18,扩展ID由ID17到ID0表示。基本ID和标准格式的ID相同。禁止高7位都为隐性。(禁止设定:基本ID=1111111XXXX)(3)控制段控制段由6个位构成,表示数据段的字节数。标准格式和扩展格式的构成有所不同。数据帧(控制段)【注】*1保留位(r0、r1)保留位必须全部以显性电平发送。但接收方可以接收显性、隐性及其任意组合的电平。*2数据长度码(DLC)数据长度码与数据的字节数的对应关系如表8所示。数据的字节数必须为0~8字节。但接收方对DLC=9~15的情况并不视为错误。数据长度码和字节数的关系(4)数据段(标准、扩展格式相同)数据段可包含0~8个字节的数据。从MSB(最高位)开始输出。(5)CRC段(标准/扩展格式相同)CRC段是检查帧传输错误的帧。由15个位的CRC顺序和1个位的CRC界定符(用于分隔的位)构成。【注】CRC顺序CRC顺序是根据多项式生成的CRC值,CRC的计算范围包括帧起始、仲裁段、控制段、数据段。接收方以同样的算法计算CRC值并进行比较,不一致时会通报错误。(6)ACK段ACK段用来确认是否正常接收。由ACK槽(ACKSlot)和ACK界定符2个位构成。【注】*1发送单元的ACK段发送单元在ACK段发送2个位的隐性位。*2接收单元的ACK段接收到正确消息的单元在ACK槽(ACKSlot)发送显性位,通知发送单元正常接收结束。这称作“发送ACK”或者“返回ACK”。发送ACK的是在既不处于总线关闭态也不处于休眠态的所有接收单元中,接收到正常消息的单元发送单元不发送ACK。所谓正常消息是指不含填充错误、格式错误、CRC错误的消息。3.3遥控帧接收单元向发送单元请求发送数据所用的帧。遥控帧由6个段组成。遥控帧没有数据帧的数据段。遥控帧的构成如图所示。(1)帧起始(SOF)表示帧开始的段。(2)仲裁段表示该帧优先级的段。可请求具有相同ID的数据帧。(3)控制段表示数据的字节数及保留位的段。(4)CRC段检查帧的传输错误的段。(5)ACK段表示确认正常接收的段。(6)帧结束表示遥控帧结束的段。遥控帧的构成•数据帧和遥控帧的不同遥控帧的RTR位为隐性位,没有数据段。没有数据段的数据帧和遥控帧可通过RTR位区别开来。•遥控帧没有数据段,数据长度码该如何表示?遥控帧的数据长度码以所请求数据帧的数据长度码表示。•没有数据段的数据帧有何用途?例如,可用于各单元的定期连接确认/应答、或仲裁段本身带有实质性信息的情况下。3.4错误帧用于在接收和发送消息时检测出错误通知错误的帧。错误帧由错误标志和错误界定符构成。错误帧的构成如图所示。(1)错误标志错误标志包括主动错误标志和被动错误标志两种。主动错误标志:6个位的显性位。被动错误标志:6个位的隐性位。(2)错误界定符错误界定符由8个位的隐性位构成。3.5过载帧过载帧是用于接收单元通知其尚未完成接收准备的帧。过载帧由过载标志和过载界定符构成。过载帧的构成如图所示。(1)过载标志6个位的显性位。过载标志的构成与主动错误标志的构成相同。(2)过载界定符8个位的隐性位。过载界定符的构成与错误界定符的构成相同。3.6帧间隔帧间隔是用于分隔数据帧和遥控帧的帧。数据帧和遥控帧可通过插入帧间隔将本帧与前面的任何帧(数据帧、遥控帧、错误帧、过载帧)分开。过载帧和错误帧前不能插入帧间隔。帧间隔的构成如图所示。3.7优先级的决定在总线空闲态,最先开始发送消息的单元获得发送权。多个单元同时开始发送时,各发送单元从仲裁段的第一位开始进行仲裁。连续输出显性电平最多的单元可继续发送。仲裁的过程如图28所示。3.8位填充位填充是为防止突发错误而设定的功能。当同样的电平持续5位时则添加一个位的反型数据。位填充的构成如图所示。3.9错误的种类错误共有5种。多种错误可能同时发生。3.11位时序由发送单元在非同步的情况下发送的每秒钟的位数称为位速率。一个位可分为4段。•同步段(SS)•传播时间段(PTS)•相位缓冲段1(PBS1)•相位缓冲段2(PBS2)这些段又由可称为TimeQuantum(以下称为Tq)的最小时间单位构成。1位分为4个段,每个段又由若干个Tq构成,这称为位时序。1位由多少个Tq构成、每个段又由多少个Tq构成等,可以任意设定位时序。通过设定位时序,多个单元可同时采样,也可任意设定采样点。各段的作用和Tq数如表11所示。1个位的构成如图所示。3.12硬