《电子技术应用》
您所在的位置:首页 > 其他 > 业界动态 > CANopen协议之CAN总线简介

CANopen协议之CAN总线简介

2009-07-21
作者:致远电子

1 引言
  随着汽车工业的发展,20世纪80年代中期,率先由Bosch公司研发出新一代的汽车总线即控制器局域网CAN(Controller Area Network)总线,CAN总线具有布线简单、典型的总线型结构、可最大限度地节约布线与维护成本、稳定可靠、实时、抗干扰能力强、传输距离远等特点,这些都决定了CAN总线必定是一种成功的总线。CAN总线一经推出,不仅在汽车行业得到广泛的推广与应用,在诸如航天、电力、石化、冶金、纺织、造纸等领域也得到广泛应用。在自动化仪表、工业生产现场和数控机床等系统中也越来越多地使用了CAN总线,CAN总线的未来发展依然充满活力,有着巨大的发展空间。
  由于CAN总线本身只定义ISO/OSI模型中的第一层(物理层)和第二层(数据链路层),通常情况下CAN总线网络都是独立的网络,所以没有网络层。在实际使用中,用户还需要自己定义应用层的协议,因此在CAN总线的发展过程中出现了各种版本的CAN应用层协议,现阶段最流行的CAN应用层协议主要有CANopen、DeviceNet和J1939等协议。
  本系列文章主要介绍CAN总线、基于CAN总线的应用层协议——CANopen,以及CANopen设备的应用及组网方式。本文主要介绍CAN总线相关的概念及网络结构。
2 CAN总线特点
  CAN总线采用差分信号传输,通常情况下只需要两根信号线(CAN-H和CAN-L)就可以进行正常的通信。在干扰比较强的场合,还需要用到屏蔽地即CAN-G(主要功能是屏蔽干扰信号),CAN协议推荐用户使用屏蔽双绞线作为CAN总线的传输线。在隐性状态下,CAN-H与CAN-L的输入差分电压为0 V(最大不超过0.5 V),共模输入电压为2.5 V。在显性状态下,CAN-H与CAN-L的输入差分电压为2 V(最小不小于0.9 V),如图 1所示。

 


  其物理传输层详细和高效的定义,使得CAN总线具有其他总线无法达到的优势,注定其在工业现场总线中占有不可动摇的地位,CAN总线通信主要具有如下优势和特点。
  (1)CAN总线上任意节点均可在任意时刻主动地向其他节点发起通信,节点没有主从之分,但在同一时刻优先级高的节点能获得总线的使用权,在高优先级的节点释放总线后,任意节点都可使用总线。
  (2)CAN总线传输波特率为5 kb/s~1 Mb/s,在5 kb/s的通信波特率下最远传输距离可以达到10 km,即使在1 Mb/s的波特率下也能传输40 m的距离。在1 Mb/s波特率下节点发送一帧数据最多需要134 μs。
  (3)CAN总线采用载波监听多路访问、逐位仲裁的非破坏性总线仲裁技术。在节点需要发送信息时,节点先监听总线是否空闲,只有节点监听到总线空闲时才能够发送数据,即载波监听多路访问方式。在总线出现两个以上的节点同时发送数据时,CAN协议规定,按位进行仲裁,按照显性位优先级大于隐性位优先级的规则进行仲裁,最后高优先级的节点数据毫无破坏地被发送,其他节点停止发送数据(即逐位仲裁无破坏的传输技术)。这样能大大地提高总线的使用效率及实时性。
  (4)CAN总线所挂接的节点数量主要取决于CAN总线收发器或驱动器,目前的驱动器一般都可以使同一网络容量达到110个节点。CAN报文分为两个标准即CAN2.0A标准帧和CAN2.0B扩展帧,两个标准最大的区别在于CAN2.0A只有11位标识符,CAN2.0B具有29位标识符。
  (5)CAN总线定义使用了硬件报文滤波,可实现点对点及点对多点的通信方式,不需要软件来控制。数据采用短帧发送方式,每帧数据不超过8 B,抗干扰能力强,每帧接收的数据都进行CRC校验,使得数据出错机率极大限度地降低。CAN节点在错误严重的情况下具有自动关闭功能,避免了对总线上其他节点的干扰。
  (6)CAN总线通信介质可采用双绞线、同轴电缆或光纤,选择极为灵活,可大大节约组网成本。
3 CAN控制器介绍
  随着CAN总线的不断发展壮大,符合CAN2.0A和CAN2.0B协议的独立芯片越来越多。如NXP公司推出的SJA1000及SJA1000F,可以直接与普通单片机组合,使该单片机具有CAN通信的能力。随着CAN需求的日益增大,芯片厂商也把CAN控制器直接集成到芯片内部,例如NXP公司的LPC2119、LPC2294、LPC2378等。以下主要以LPC2378的集成CAN控制器为例,对CAN控制器作一个介绍。
  LPC2378 CAN控制器结构如图2所示。该控制器是一个带有发送和接收缓冲器的串行接口,但它并不含有验收过滤器。验收过滤器是一个独立的模块,能够对所有CAN通道进行CAN标识符过滤。


  LPC2378 CAN控制器工作流程主要分为发送过程和接收过程。
  (1)发送过程
  CAN控制器完全受处理器控制,CPU通过内部总线向CAN控制器的发送寄存器里填写需要发的数据,然后启动CAN控制器的发送使能,发送的数据分别经过位流管理器(变成在总线上发送的二进制码)、错误管理逻辑(负责检测总线状态及发送是否出现错误)及位时序逻辑(管理数据在总线上的发送时序)、CAN收发器(负责把位流数据转换成CAN总线能够传输的差分电平),这样就完成了一帧CAN数据的发送,如图3所示。


  (2)接收过程
  CAN数据的接收与CAN数据的发送是一个相反的过程,如图4所示。当CAN收发器检测到CAN总线上有数据时,CAN收发器把CAN总线上的差分信号转换成位流数据,经过错误管理器及位时序逻辑单元对位数据流和时序进行检查,再经过位流管理器把位流数据转换成字节数据并存放到接收缓冲器中,当一帧数据接收完了之后则由接收缓冲器产生数据接收中断(通知CPU已经接收到一帧新数据),并将产生的各种状态通过改变状态寄存器的值来表示。


  以上主要介绍LPC2378 CAN工作流程,CAN2.0A/B标准协议在CAN控制器中都得以实现,用户只需要操作相关的CAN寄存器就可以控制CAN控制器动作(控制器的具体操作请参考LPC2378数据手册),因此可以大大提高CAN节点的开发时间,提高工作效率。
4 CAN总线网络结构
  作为一个总线型网络,其结构如图5所示,其组网与维护相当方便。CAN总线具有在线增减设备,即总线在不断电的情况下也可以向网络中增加或减少节点。一条总线最多可以容纳110个节点,通信波特率为5 kb/s~1 Mb/s,在通信的过程中要求每个节点的波特率保持一致(误差不能超过5%),否则会引起总线错误,从而导致节点的关闭,出现通信异常。


5 CAN总线应用层协议
  由于CAN总线只定义了ISO/OSI中的物理层和数据链路层,因此对于不同的应用出现了不同的应用层协议,为了使不同厂商的产品能够相互兼容,世界范围内需要通用的CAN应用层通信协议,在过去的20年中涌现出许多的协议,不过到现在为止能够广泛被承认的协议却不多,现在CAN应用层协议主要有以下三种:
  (1)在欧洲等地占有大部分市场份额的CANopen协议,主要应用在汽车、工业控制和自动化仪表等领域,目前由CIA负责管理和维护;
  (2)J1939是CAN总线在商用车领域占有绝大部分市场份额的应用层协议,由美国机动车工程师学会发起,现已在全球范围内得到广泛的应用;
  (3)DeviceNet协议在美国等地占有相当大的市场份额,主要用于工业通信及控制和仪器仪表等领域。
  在以后的文章中将向读者重点介绍CANopen协议的基本概念及CANopen相关设备的使用及组网方法。
  现阶段我国在工业领域与欧洲和美国等其他的发达国家存在较大的差距。CAN总线作为新型现场总线已经漫延到生活生产的各个领域,能够提高生产效率以及降低生产成本,成为工业现场总线的发展趋势。
  广州致远电子有限公司提供各种接口的CAN卡、CAN总线分析仪、CAN网关及网桥、CAN卡的OPC服务器以及CAN相关的测试工具。

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。