控制器局域网(CAN)简介--中文翻译


前言

此文章仅为Introduction to the Controller Area Network (CAN)文档中文翻译。


序章

控制器局域网(CAN)非常适合许多采用CAN和ISO-11898:2003作为物理层的高级工业协议。它的成本、性能和可升级性为系统设计提供了巨大的灵活性。本应用报告介绍了CAN基础知识、操作原理以及使用TI的CAN收发器和DSP实现基本CAN总线。讨论了CAN总线的电气层要求以及TI CAN收发器不同功能的重要性

1、介绍

CAN总线是由BOSCH(1)开发的多主机消息广播系统,它规定了每秒1兆比特(bps)的最大信令速率。与USB或以太网等传统网络不同,CAN不会在中央总线主控的监督下从节点A点对点发送大量数据到节点B。在CAN网络中,许多短消息,如温度或每1k的展现收入,被广播到整个网络,这提供了系统每个节点的数据展示一致性。一旦解释了CAN基础知识,如消息格式、消息标识符和按位仲裁——CAN信令方案的一个主要好处,就会检查CAN总线实现,呈现典型波形,并检查收发器功能。

2、CAN标准

CAN是一种国际标准化组织(ISO)定义的串行通信总线,最初是为汽车行业开发的,以用双线总线取代复杂的线束。该规范要求对电气干扰具有高度的免疫力,并具有自我诊断和修复数据错误的能力。这些特性导致了CAN在包括楼宇自动化、医疗和制造在内的各种行业中的普及。CAN通信协议ISO-11898:2003描述了信息如何在网络上的设备之间传递,并符合按层定义的开放系统互连(OSI)模型。由物理介质连接的设备之间的实际通信由模型的物理层定义。ISO 11898架构将七层OSI/ISO模型中最低的两层定义为图1中的数据链路层和物理层。
图1
在图1中,应用层建立了与上层应用特定协议的通信链路,例如独立于供应商的CANopen™协议。该协议得到国际用户和制造商集团CAN in Automation(CiA)的支持。其他CAN信息位于CiA网站,can-cia.de。许多协议专用于工业自动化、柴油发动机或航空等特定应用。其他行业标准的基于CAN的协议示例是KVASER的CAN王国和罗克韦尔自动化的DeviceNet™。

3、标准CAN或扩展CAN

CAN通信协议是一种载波侦听、多址协议,对消息优先级进行冲突检测和仲裁(CSMA/CD+AMP)。CSMA意味着总线上的每个节点在尝试发送消息之前必须等待规定的不活动时间。CD+AMP意味着冲突通过逐位仲裁解决,基于消息标识符字段中每个消息的预编程优先级。更高优先级的标识符总是赢得总线访问。也就是说,标识符中的最后一个逻辑高继续传输,因为它是最高优先级。由于总线上的每个节点都参与写入“正在写入”的每一位,因此仲裁节点知道它是否将逻辑高位放在总线上。ISO-11898:2003标准具有标准的11位标识符,提供从125 kbps到1 Mbps的信令速率。该标准后来被修改为“扩展的”29位标识符。图2中的标准11位标识符字段提供211或2048个不同的消息标识符,而图3中的扩展29位标识符提供229或5.37亿标识符。
在这里插入图片描述

3.1 标准CAN和扩展CAN的位域

3.1.1 标准CAN

图2的位字段的含义是:

  • SOF-帧的单一主导开始(SOF)位标记消息的开始,用于在空闲后同步总线上的节点。
  • Identifier(标识符)- 标准CAN 11位标识符建立消息的优先级。二进制值越低,其优先级越高。
  • RTR-当需要来自另一个节点的信息时,单一远程传输请求(RTR)位占主导地位。所有节点都收到请求,但标识符确定指定的节点。响应数据也被所有节点接收,并被任何感兴趣的节点使用。这样,系统中正在使用的所有数据都是统一的。
  • IDE-占主导地位的单个标识符扩展(IDE)位意味着正在传输一个没有扩展的标准CAN标识符。
  • r0-保留位(供将来的标准修订可能使用)。
  • DLC-4位数据长度码(DLC)包含正在传输的数据的字节数。
  • Data-最多可以传输64位应用程序数据。
  • CRC-16位(15位加分隔符)循环冗余码检测(CRC)包含用于错误检测的前面应用程序数据的校验和(传输的位数)。
  • 确认字符-每个接收到准确消息的节点都会用占主导地位的位覆盖原始消息中的这个隐性位,表示已经发送了无错误消息。如果接收节点检测到错误并使这个位隐性,它会丢弃该消息,发送节点在重新仲裁后重复该消息。通过这种方式,每个节点确认(确认字符)其数据的完整性。确认字符为2位,一个是确认位,第二个是分隔符。
  • EOF-此帧结束(EOF),7位字段标记CAN帧(消息)的结束并禁用位填充,指示占主导地位时的填充错误。当正常操作期间连续出现5位相同逻辑电平时,将相反逻辑电平的一位填充到数据中。
  • IFS-此7位帧间空间(IFS)包含控制器将正确接收的帧移动到其在消息缓冲区中的适当位置所需的时间。

3.1.2 扩展CAN

在这里插入图片描述
如图3所示,扩展CAN消息与标准消息相同,增加了:

  • SRR-替代远程请求(SRR)位替换标准消息位置中的RTR位作为扩展格式中的占位符。
  • IDE–A 标识符扩展(IDE)中的隐性位表示后面有更多标识符位。18位扩展遵循IDE。
  • r1-在RTR和r0位之后,在DLC位之前包含了一个额外的保留位。

4、CAN消息

图4所示的基本CAN特性是总线、驱动器输入和接收器输出之间的逻辑状态相反。通常,逻辑高电平与1相关联,逻辑低电平与零相关联——但在CAN总线上并非如此。这就是为什么TI CAN收发器内部将驱动器输入和接收器输出引脚被动拉高,因此在没有任何输入的情况下,设备会自动默认为所有输入和输出引脚上的隐性总线状态。

在这里插入图片描述
总线访问是事件驱动的,随机发生。如果两个节点试图同时占用总线,则访问是通过无损的逐位仲裁来实现的。无损意味着赢得仲裁的节点只是继续处理消息,而消息不会被另一个节点破坏或损坏。

在标识符中为消息分配优先级是CAN的一个特性,这使得它在实时控制环境中特别有吸引力。二进制信息识别码越低,其优先级就越高。完全由零组成的标识符是网络上最高优先级的消息,因为它使总线占主导地位的时间最长。因此,如果两个节点同时开始传输,发送最后一个标识符位为零(占主导地位)而其他节点发送1(隐性)的节点保留对CAN总线的控制权,并继续完成其消息。CAN总线上的显性位总是覆盖隐性位。

请注意,传输节点会持续监控其自身传输的每个位。这就是图4的收发器配置的原因,其中驱动器的CANH和CANL输出引脚在内部绑定到接收器的输入。信号在内部环路中从驱动器输入到接收器输出的传播延迟通常用作CAN收发器的定性度量。这种传播延迟称为环路时间(TI数据表中的tLOOP),但不同供应商采用不同的命名。图5显示了由CAN控制器自动处理的CAN仲裁过程。因为每个节点持续监控其自身的传输,因为节点B的隐性位被节点C的更高优先级主导位覆盖,所以B检测到总线状态与其传输的位不匹配。因此,节点B停止传输,而节点C继续其消息。一旦节点C释放总线,节点B就会进行另一次传输消息的尝试。该功能是ISO 11898物理信令层的一部分,这意味着它完全包含在CAN控制器内,并且对CAN用户完全透明。

图5。CAN总线上的仲裁消息优先级的分配取决于系统设计者,但行业团体相互同意某些消息的重要性。例如,电机驱动器制造商可能会指定消息0010是来自CAN网络上电机的绕组电流反馈信号,而0011是转速表速度。由于0010具有最低的二进制标识符,因此与电流值相关的消息在总线上的优先级总是高于与转速表读数相关的消息。在DeviceNet™的情况下,来自接近开关和温度传感器等许多制造商的设备可以合并到同一个系统中。因为DeviceNet传感器生成的消息已经由其专业协会开放DeviceNet供应商协会(ODVA)预定义,某个消息总是与温度等特定类型的传感器相关,而与实际制造商无关。

在这里插入图片描述

4.2 消息类型

可以在CAN总线上传输的四种不同的消息类型或帧(见图2和图3)是数据帧、远程帧、错误帧和过载帧。

4.2.1 数据帧

数据帧是最常见的消息类型,包括仲裁字段、数据字段、CRC字段和确认字段。仲裁字段包含图2中的11位标识符和RTR位,RTR位在数据帧中占主导地位。在图3中,它包含29位标识符和RTR位。接下来是数据字段,它包含0到8个字节的数据,CRC字段包含用于错误检测的16位校验和。最后是确认字段。

4.2.2 远程帧

远程帧的预期目的是请求来自另一个节点的数据传输。远程帧与数据帧相似,有两个重要区别。首先,这种类型的消息在仲裁字段中被隐性RTR位显式标记为远程帧,其次,没有数据。

4.2.3 错误帧

错误帧是一种特殊的消息,它违反了CAN消息的格式规则。当一个节点检测到消息中的错误时,它就会被发送,并导致网络中的所有其他节点也发送错误帧。然后,原始发送器会自动重新发送消息。CAN控制器中的错误计数器系统确保节点不能通过重复发送错误帧来绑定总线。

4.2.4 过载帧

提到过载帧是为了完整性。就格式而言,它类似于错误帧,它是由一个变得太忙的节点发送的。它主要用于提供消息之间的额外延迟。

4.3 有效帧

当消息的结束EOF字段的最后一位以无错误隐性状态接收时,消息被认为是无错误的。EOF字段中的主导位导致发送器重复传输。

4.4 错误检查和故障限制

CAN的稳健性可能部分归功于其丰富的错误检查程序。CAN协议包含五种错误检查方法:三种在消息级别,两种在位级别。如果消息未能通过这些错误检测方法中的任何一种,则不会被接受,并从接收节点生成错误帧。这迫使发送节点重新发送消息,直到它被正确接收。但是,如果故障节点通过不断重复错误而挂起总线,则在达到错误限制后,其控制器会取消其传输能力。

消息级别的错误检查由CRC和图2和图3中显示的确认字符槽强制执行。16位CRC包含前面用于错误检测的应用程序数据的校验和,具有15位校验和和1位分隔符。确认字符字段为两位长,由确认位和确认分隔符位组成。

在消息级别还有一个形式检查。这种检查查找消息中必须始终是隐性位的字段。如果检测到占主导地位的位,则会产生错误。检查的位是SOF、EOF、确认字符分隔符和CRC分隔符位。

在位级别,每个传输的位都由消息的发送器监控。如果一个数据位(不是仲裁位)被写入总线,而其相反的位被读取,则会产生错误。唯一的例外是用于仲裁的信息识别码字段和要求隐性位被占主导地位的确认槽。

错误检测的最后一种方法是使用位填充规则,在同一逻辑级别的五个连续位之后,如果下一个位不是补码,则会产生错误。填充确保上升沿可用于网络的持续同步。填充还确保比特流不会被误认为错误帧或表示消息结束的7位帧间空间。在数据转发到应用程序之前,接收节点的控制器会删除填充位。

按照这种逻辑,一个活跃的错误帧由六个占主导地位的位组成——违反了位填充规则。这被所有CAN节点解释为错误,然后它们生成自己的错误帧。这意味着错误帧可以从最初的六位到十二位长,所有的回复。然后,在这个错误帧之后是一个由八个隐性位组成的分隔符字段和一个总线空闲期,然后再重新传输损坏的消息。重要的是要注意,重新传输的消息仍然需要在总线上进行仲裁。

5、CAN总线

图1中的数据链路和物理信令层通常对系统运营商透明,包含在任何实现CAN协议的控制器中,例如TI的TMS320LF2812 3.3-V DSP和集成CAN控制器。然后通过线路收发器(如TI的SN65HVD230 3.3-V CAN收发器)实现与物理介质的连接,形成如图6所示的系统节点。
在这里插入图片描述
信令是差分的,这是CAN获得其强大的抗噪性和容错性的地方。平衡差分信令减少了噪声耦合,并允许通过双绞线电缆实现高信令速率。平衡意味着在每条信号线中流动的电流相等但方向相反,从而产生场抵消效应,这是低噪声排放的关键。平衡差分接收器和双绞线电缆的使用增强了CAN总线的共模抑制和高抗噪性。

高速ISO 11898标准规范给出了最大信令速率为1 Mbps,总线长度为40 m,最多30个节点。它还建议最大未端接存根长度为0.3 m。电缆被指定为具有120Ω特征阻抗(Zo)的屏蔽或非屏蔽双绞线。ISO 11898标准将双绞线电缆的单线定义为网络拓扑,如图6所示,两端端接120Ω电阻,与线路的特征阻抗相匹配,以防止信号反射。根据ISO 11898,必须避免将RL放置在节点上,因为如果节点与总线断开连接,总线线路就会失去终止。

总线的两条信号线,CANH和CANL,在静态隐性状态下,被动地偏置到2.5 V。总线上的主导状态将CANH 1 V提高到3.5 V,并将CANL 1 V降低到1.5 V,产生典型的2-V差分信号,如图7所示。
在这里插入图片描述
CAN标准定义了一个通信网络,该网络链接连接到总线的所有节点,并使它们能够相互通信。可能有也可能没有中央控制节点,并且可以随时添加节点,即使在网络运行时(热插拔)。

图8和图9中的节点理论上可以从智能传感技术和电机控制器发送消息。实际应用可能包括温度传感器发送温度更新,用于调整风扇的电机速度。如果压力传感器节点想要同时发送消息,仲裁确保消息被发送。

例如,图8和图9中的节点A完成发送其消息(在图8的左侧),因为节点B和C确认接收到正确的消息。然后节点B和C开始仲裁——节点C赢得仲裁并发送其消息。节点A和B确认C的消息,然后节点B继续其消息。再次注意总线上驱动程序输入和输出的极性相反。

在这里插入图片描述
在这里插入图片描述

6、总结

CAN非常适合在恶劣的操作环境中需要大量高可靠性短消息的应用。由于CAN是基于消息而不是基于地址的,因此当多个位置需要数据并且系统范围的数据展示一致性是强制性的时,它特别适合。

故障限制也是CAN的一个主要优点。故障节点会自动从总线上丢弃,这可以防止任何单个节点导致网络瘫痪,并确保带宽始终可用于关键消息传输。这种错误遏制还允许在系统运行时将节点添加到总线上,也称为热插拔。

TI CAN收发器的许多功能使其非常适合CAN协议正在适应的许多恶劣应用。寻找CAN解决方案的应用包括汽车、卡车、摩托车、雪地摩托、火车、公共汽车、飞机、农业、建筑、采矿和海洋车辆。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值