《CANOPEN协议详解-》由会员分享,可在线阅读,更多相关《CANOPEN协议详解-(68页珍藏版)》请在金锄头文库上搜索。
1、一、CAN-BUS介绍1CAN的基本概念、特点 CAN 是 Controller Area Network的缩写(以下称为 CAN),是 ISO*1国际标准化的串行通信协议。CAN 协议如表 3 所示涵盖了 ISO 规定的 OSI 基本参照模型中的传输层、数据链路层及物理层。 CAN 协议中关于 ISO/OSI 基本参照模型中的传输层、数据链路层及物理层,具体有哪些定义如图所示。. ISO/OSI 基本参照模型ISO/OSI 基本参照模型各层定义的主要项目软件控制7 层:应用层由实际应用程序提供可利用的服务。6 层:表示层进行数据表现形式的转换。如:文字设定、数据压缩、加密等的控制5 层:会话
2、层为建立会话式的通信,控制数据正确地接收和发送。4 层:传输层控制数据传输的顺序、传送错误的恢复等,保证通信的品质。如:错误修正、再传输控制。3 层:网络层进行数据传送的路由选择或中继。如:单元间的数据交换、地址管理。硬件控制2 层:数据链路层将物理层收到的信号(位序列)组成有意义的数据,提供传输错误控制等数据传输控制流程。 如:访问的方法、数据的形式。通信方式、连接控制方式、同步方式、检错方式。 应答方式、通信方式、包(帧)的构成。 位的调制方式(包括位时序条件)。1 层:物理层规定了通信时使用的电缆、连接器等的媒体、电气信号规格等,以实现设备间的信号传送。 如:信号电平、收发器、电缆、连接
3、器等的形态。【注】 *1 OSI:Open Systems Interconnection (开放式系统间互联) CAN的特点 CAN 协议具有以下特点。 (1) 多主控制 在总线空闲时,所有的单元都可开始发送消息(多主控制)。 最先访问总线的单元可获得发送权。 (2) 消息的发送 在 CAN 协议中,所有的消息都以固定的格式发送。总线空闲时,所有与总线相连的单元都可以开始发送新消息。两个以上的单元同时开始发送消息时,根据标识符(Identifier 以下称为 ID)决定优先级。ID 并不是表示发送的目的地址,而是表示访问总线的消息的优先级。两个以上的单元同时开始发送消息时,对各消息 ID 的
4、每个位进行逐个仲裁比较。仲裁获胜(被判定为优先级最高)的单元可继续发送消息,仲裁失利的单元则立刻停止发送而进行接收工作。 (3) 系统的柔软性 与总线相连的单元没有类似于“地址”的信息。因此在总线上增加单元时,连接在总线上的其它单元的软硬件及应用层都不需要改变。 (4) 通信速度 根据整个网络的规模,可设定适合的通信速度。 在同一网络中,所有单元必须设定成统一的通信速度。即使有一个单元的通信速度与其它的不一样,此单元也会输出错误信号,妨碍整个网络的通信。不同网络间则可以有不同的通信速度。 (5) 远程数据请求 可通过发送“遥控帧” 请求其他单元发送数据。 (6) 错误检测功能错误通知功能错误恢
5、复功能 所有的单元都可以检测错误(错误检测功能)。 检测出错误的单元会立即同时通知其他所有单元(错误通知功能)。 正在发送消息的单元一旦检测出错误,会强制结束当前的发送。强制结束发送的单元会不断反复地重新发送此消息直到成功发送为止(错误恢复功能)。 (7) 故障封闭 CAN 可以判断出错误的类型是总线上暂时的数据错误(如外部噪声等)还是持续的数据错误(如单元内部故障、驱动器故障、断线等)。由此功能,当总线上发生持续数据错误时,可将引起此故障的单元从总线上隔离出去。 (8) 连接 CAN 总线是可同时连接多个单元的总线。可连接的单元总数理论上是没有限制的。但实际上可连接的单元数受总线上的时间延迟
6、及电气负载的限制。降低通信速度,可连接的单元数增加;提高通信速度,则可连接的单元数减少。2. CAN协议及标准规格 2.1 ISO 标准化的CAN协议 CAN 协议经 ISO 标准化后有 ISO11898 标准和 ISO11519-2 标准两种。ISO11898和 ISO11519-2 标准对于数据链路层的定义相同,但物理层不同。 (1) 关于 ISO11898 ISO11898 是通信速度为 125kbps-1Mbps 的 CAN 高速通信标准。 目前,ISO11898 追加新规约后,成为 ISO11898-1 新标准。 (2) 关于 ISO11519 ISO11519 是通信速度为 125
7、kbps以下的 CAN 低速通信标准。 ISO11519-2 是 ISO11519-1 追加新规约后的版本。【注】 *1 通信速度 通信速度根据系统设定。 *2 总线长度 总线的长度根据系统设定。 通信速度和最大总线长度的关系如下图所示。CAN 收发器根据两根总线(CAN_High 和 CAN_Low)的电位差来判断总线电平。 总线电平分为显性电平和隐性电平两种。 总线必须处于两种电平之一。 总线上执行逻辑上的线“与”时,显性电平为“0”,隐性电平为“1”。物理层的特征如下图所示。ISO11898、ISO11519-2 的物理层特征2.2 CAN和标准规格 不仅是 ISO,SAE(Societ
8、y of Automotive Engineers)等其它的组织、团体、企业也对 CAN 协议进行了标准化。 基于 CAN 的各种标准规格如表 6 所示面向汽车的通信协议以通信速度为准进行了分类。 表 6. CAN 协议和标准规格名称波特率规格适用领域SAE J1939-11250k双线式、屏蔽双绞线卡车、大客车SAE J1939-12250k双线式、屏蔽双绞线、12V供电农用机械SAE J2284500k双线式、双绞线(非屏蔽)汽车(高速:动力、传动系统)SAE J2411133.3k、83.3k单线式汽车(低速:车身系统)NMEA-200062.5k、125k、250k、500k、1M双线
9、式、屏蔽双绞线供电船舶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。 各种帧
10、的用途如表所示。帧的种类及用途帧帧用途数据帧用于发送单元向接收单元传送数据的帧。遥控帧用于接收单元向具有相同 ID 的发送单元请求数据的帧。错误帧用于当检测出错误时向其它单元通知错误的帧。过载帧用于接收单元通知其尚未做好接收准备的帧。帧间隔用于将数据帧及遥控帧与前面的帧分离开来的帧。3.2 数据帧 数据帧由 7 个段构成。 数据帧的构成如图所示。 (1) 帧起始 表示数据帧开始的段。 (2) 仲裁段 表示该帧优先级的段。 (3) 控制段 表示数据的字节数及保留位的段。 (4) 数据段 数据的内容,可发送 08 个字节的数据。 (5) CRC 段 检查帧的传输错误的段。 (6) ACK段 表示确
11、认正常接收的段。 (7) 帧结束 表示数据帧结束的段。 下面对帧的构成进行说明。数据帧的构成(1) 帧起始(标准、扩展格式相同) 表示帧开始的段。1 个位的显性位。数据帧(帧起始)总线上的电平有显性电平和隐性电平两种。 总线上执行逻辑上的线“与”时,显性电平的逻辑值为“0”,隐性电平为“1”。 “显性”具有“优先”的意味,只要有一个单元输出显性电平,总线上即为显性电平。并且,“隐性”具有“包容”的意味,只有所有的单元都输出隐性电平,总线上才为隐性电平。(显性电平比隐性电平更强。)(2) 仲裁段 表示数据的优先级的段。 标准格式和扩展格式在此的构成有所不同。数据帧(仲裁段)【注】 ID 标准格式
12、的 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 数据长
13、度码(DLC) 数据长度码与数据的字节数的对应关系如表 8 所示。 数据的字节数必须为 08 字节。但接收方对 DLC = 915 的情况并不视为错误。数据长度码和字节数的关系(4) 数据段(标准、扩展格式相同) 数据段可包含 08 个字节的数据。从 MSB(最高位)开始输出。(5) CRC 段(标准/扩展格式相同) CRC段是检查帧传输错误的帧。由 15 个位的 CRC 顺序和 1 个位的 CRC界定符(用于分隔的位)构成。【注】 CRC 顺序 CRC 顺序是根据多项式生成的 CRC 值,CRC 的计算范围包括帧起始、仲裁段、控制段、数据段。 接收方以同样的算法计算 CRC 值并进行比较,不
14、一致时会通报错误。(6) ACK段 ACK 段用来确认是否正常接收。由 ACK 槽(ACK Slot)和 ACK 界定符 2 个位构成。【注】 *1 发送单元的 ACK段 发送单元在 ACK段发送 2 个位的隐性位。 *2 接收单元的 ACK段 接收到正确消息的单元在 ACK槽(ACK Slot)发送显性位, 通知发送单元正常接收结束。 这称作“发送 ACK”或者“返回 ACK”。发送 ACK 的是在既不处于总线关闭态也不处于休眠态的所有接收单元中,接收到正常消息的单元发送单元不发送 ACK。所谓正常消息是指不含填充错误、格式错误、CRC错误的消息。3.3 遥控帧 接收单元向发送单元请求发送数据所用的帧。遥控帧由 6 个段组成。遥控帧没有数据帧的数据段。 遥控帧的构成如图所示。 (1) 帧起始(SOF) 表示帧开始的段。 (2) 仲裁段 表示该帧优先级的段。可请求具有相同 ID 的数据帧。 (3) 控制段 表示数据的字节数及保留位的段。 (4) CRC 段 检查帧的传输错误的段。 (5) ACK段 表示确认正常接收的段。 (6) 帧结束 表示遥控帧结束的段。遥控帧的构成 数据帧和遥控帧的不同 遥控帧的 RTR 位为隐性位,没有数据段。 没有数据段的数据帧和