CAN即控制器局域网(Controller Area Network)属于现场总线范畴,它是一种有效支持分布式控制或实时控制的串行通信网络。它的应用范围遍及高速网络和低成本的多线路网络。控制器局域网CAN是由ISO定义的串行通信总线。它的基本设计规范要求有高的位速率、高抗电磁干扰性,而且能够检测出产生的任何错误。由于CAN串行通信总线具有这些特性,因此在汽车控制领域中得到广泛应用,并且在其他领域也得到越来越多的重视。
CAN总线的特点是其他现场总线系统所不具备的,CAN可以依据优先级进行总线访问,采用无破坏的依据优先级的仲裁,借助接收滤波实现多地址帧传送,可以实现远程请求,整个系统数据兼容且系统灵活,有严格的错误检测和界定,通信介质多样,组合方式灵活。
1.技术特点
(1)用非破坏性基于优先权的总线仲裁技术 当两个节点同时向网络上传送信息时,优先级低的节点主动停止数据发送,优先级高的节点不受影响,可继续传输数据,因而可有效地避免总线冲突。
当许多节点同时向总线发送报文时,必然引起冲突,必须通过仲裁避免总线瘫痪。CAN总线利用优先权解决总线仲裁问题,其机理是基于竞争的仲裁。当节点开始传送它们各自的报文时,标识符的每一个位都被写到总线里,而且能被每一个节点读回。如果一个节点写进了隐性位而读回显性位,它会知道另一个较低标识符号码的节点(高优先权)正在访问总线。它会停止传送报文并继续接收更重要的报文,这种技术叫做“非破坏性逐位”仲裁。它保证了如果发送一个高优先权报文,它将会赢得仲裁,并能够在一个保证的时间限度里达到它的目的节点,这些都由系统设计者来控制。
如果两个节点用同样的标识符发出数据,两个都会得到总线的仲裁并开始传输数据。在某一点,数据都不会产生错误。两个节点都会后退并且重新开始整个传输过程,在最坏的情况下,它会锁死网络。CAN协议有五种错误检测方法,三个报文级的,两个位级的。如果一个报文出错,那么错误检测的任何一个方法使节点不接收这个报文且产生一个出错帧,使所有的帧都忽略它,并使发送节点重新发送这个报文。
(2)信号传输用短帧结构(八位),实时性和抗干扰性好 不用关闭总线即可以任意挂接或拆除节点,这使系统的灵活性和扩展性得到很大的增强。CAN总线报文传送有四种不同类型的帧:数据帧、远程帧、出错帧、超载帧。最常用的是数据帧。数据帧携带数据从发送器至接收器,它由7个不同的位场组成:帧起始、仲裁场、控制场、数据场、CRC场、应答场,帧结尾。
CAN协议支持两种报文格式,其唯一的区别在于标识符(ID)长度的差异,标准格式为11位,扩展格式为29位。在标准格式中,报文的仲裁场由11位标识符和远程发送请求位(RTR)组成。RTR位标明该帧是数据帧还是请求帧,在请求帧中没有数据字节。数据场的长度可以为0~8个字节。在CAN总线进行数据传送时,发出报文的单元称为报文的发送器,该单元在总线空闲或丢失仲裁前恒为发送器。如果一个单元不是报文发送器,并且总线不处于空闲状态,则该单元为接收器,尽管该单元不一定真正接收此报文。
CAN总线上的数据报文传送主要有三种方式:请求数据、发送数据和中断服务处理。当CAN上的节点接收一个报文时,与所使用的CAN结构相关的标识符就会与验收滤波器或者用户在CAN控制器定义的标识符列表进行比较。如果标识符匹配,它就会被节点接收并产生CPU中断,因而相同的报文能够被设计者要求的节点所接收。
网络管理对象包括节点保护对象和NMT对象。节点保护对象是由NMT主站节点远程请求的CAN帧,它具有1个字节。数据字节主要包含节点的状态。NMT对象映射到一个单一的带有两个字节数据长度的CAN帧,它的标识符为0。第一个字节包含命令说明符,第二个字节包含必须执行此命令的设备的节点标识符,当节点标识符为0时,所有的节点必须执行此命令。由NMT主站发送的NMT对象强制节点转换成另一个状态。CANopen状态机规定了初始化状态、子程序操作状态和停止状态。系统加电后,每个CANopen都处于初始化状态,然后自动转换到预操作状态。在此状态下提供了同步对象和节点保护,还允许传送SDO数据。在停止状态,除NMT对象外,不允许其他通信。
(3)采用通信数据块编码,优点是可使网络内的节点个数在理论上不受限制 可实现多主机工作方式。网络上任意一个节点均可以在任意时刻向网络上的其他节点发送信息,而不分主从。数据收发方式灵活,可实现点对点、一点对多点及全局广播等多种传输方式。CAN将总线中的通信设备(如控制器)定义为节点。当CAN总线上的一个节点(站)发送数据时,它以报文形式广播给网络中所有节点。对每个节点来说,无论数据是否是发给自己的,都对其进行接收。每组报文开头的1l位字符为标识符,定义了报文的优先级,这种报文格式称为面向内容的编址方案。在同一系统中标识符是唯一的,不可能有两个站发送具有相同标识符的报文。当几个站同时竞争总线读取时,这种配置十分重要。当一个站要向其他站发送数据时,该站的CPU将要发送的数据和自己的标识符传送给本站的CAN芯片,并处于准备状态;当它收到总线分配时,转为发送报文状态。CAN芯片将数据根据协议组织成一定的报文格式发出,这时网上的其他站处于接收状态。每个处于接收状态的站对接收到的报文进行检测,判断这些报文是否是发给自己的,以确定是否接收它。
SDO用于传送组态数据。组态数据有时多于8字节,而SDO则可以传送任意长度的数据对象。第一段内的第一个字节包含必需的数据流控制信息,它包括为克服双重接收CAN帧的问题而设置的一个触发位。第一段内的第2~4字节包含要读出或写入的对象字典登入项的索引和子索引。第一段内的最后四个字节可用于组态数据。第二段以及其后继段用来包含控制字节和多达7个字节的组态数据。接收者确认每个字节,以便于点对点通信。
时间标记对象是一个应用设备通用的参考时间帧,它包含一个时间和日期的数据。(www.daowen.com)
(4)系统通用性好 具有统一的标准和规范,使各设备之间具有较好的互操作性和互换性。CAN总线本身并非一个完整的协议,只包括物理层和数据链路层两个底层协议,要进行高效率的通信还需要进一步开发高层协议。CANopen是基于CAN串行通信的网络系统协议,它假定硬件设备的收发器和控制器完全遵循ISO 1198标准,CANo-pen规范覆盖了应用层和通信协议子集、程序设备的构造、推荐的电缆和接头形式、SI单元和前缀解释等,保证了不同厂家CAN控制器在通信、连接和具体控制开发软件方面的一致性,给系统的使用和维护带来了极大方便。而CANopen协议应用于汽车、装载机械、楼宇自动化等多种领域,已被广泛接受为CAN高层协议的标准之一。
在CANopen应用层中,设备通信和应用程序对象得到交换,所有这些对象通过16位索引和8位子索引进行访问,而这些对象被映射到一个或更多的已经预定义和配置好的帧。通过对象索引,数据对象在应用层进行处理和访问将更加方便和直接。
CANopen协议将总线上的物理设备称为节点,并有主从之分。每一个CANopen系统必须有且仅有一个主节点,同时可以存在多个从节点。主节点的主要功能包括启动网络、中止网络、节点监视和网络引导。
CANopen协议指定有四类数据通信对象:过程数据对象(PDO)、服务数据对象(SDO)、网络管理对象、时间标记对象(TSO)。
PDO对象具有单一的标识并且可以仅通过一个节点发送,但是其接收者可以有多个。CANopen用八个字节的数据字段把PDO映射到一个单一的CAN帧上来传输应用对象。发送PDO对象有多种方式,比如由内部时间驱动、由内部定时器驱动、由远程请求驱动以及由接收来自某指定节点的同步信息驱动。为了保证PDO具有良好的实时性能,其标识符具有高优先级。
CAN的高可靠性完全可以满足工业现场的应用。CAN总线对数据传输的可靠性可以从下面的数据得到证实:从传输数据的角度看,可靠性可以理解为对传输过程中产生的数据错误的识别能力。残余数据错误的概率可以通过对数据传输可靠性的统计测量获得,它描述了传送数据被破坏和这种破坏不能被探测出来的概率。残余数据错误概率必须非常小,使其在系统整个寿命周期内,按平均统计时几乎检测不到。计算残余错误概率要求能够对数据错误进行分类,并且数据传输路径可由一模型描述。如果要确定CAN的残余错误概率,可将残余错误的概率作为具有80~90位的报文传送时位错误概率的函数,并假定这个系统中有5~10个节点,并且错误率为1/1000,那么最大位错误概率为10-13数量级。例如,CAN网络的数据传输率最大为1Mbit/s,如果数据传输能力仅使用50%,那么对于一个工作寿命4000h、平均报文长度为80位的系统,所传送的数据总量为9×1010。在系统运行寿命期内,不可检测的传输错误的统计平均小于10-2数量级。换句话说,一个系统按每年365天、每天工作8h、每秒错误率以0.7计算,那么按统计平均,每1000年才会发生一个不可检测的错误。
(5)成本较低 CAN能够使用多种通信介质,可采用双绞线、光纤等。最常用的就是廉价的双绞线,两端都接上一个120Ω的电阻。信号使用差分电压传送,现场布线和安装简单,易于维护。两条信号线被称为CAN_H和CAN_L。静态时均是2.5V左右,此时状态表示为逻辑1;用CAN_H比CAN_L高表示逻辑0,此时通常电压值为CAN_H=3.5V和CAN_L=1.5V。这样的设计使总线硬件平台的搭建较为简单,通过双绞线和终端电阻就可以实现,节约了成本和工作量。同时,物理连接错误导致的通信中断及其他问题容易排查,维护简单。
2.工作原理
当CAN总线上的一个节点(站)发送数据时,它以报文形式广播给网络中所有节点。对每个节点来说,无论数据是不是发给自己的,都要对其进行接收。每组报文开头的第一位字符为标识符,它定义了报文的优先级,这种报文格式称为面向内容的编址方案。在同一系统中,标识符是唯一的,不可能有两个站发送具有相同标识符的报文。当几个站同时竞争总线读取时,这种配置十分重要。CAN总线的报文发送和接收过程是,当一个站要向其他站发送数据时,该站的CPIJ将要发送的数据和自己的标识符传送给本站的CAN芯片,并处于准备状态;当它收到总线分配时,转为发送报文状态。CAN芯片将数据组织成一定的报文格式发出,这时网上的其他站处于接收状态。每个处于接收状态的站都要对接收到的报文进行检测,判断这些报文是否是发给自己的,以确定是否接收它。
由于CAN总线是一种面向内容的编址方案,因此很容易建立高水准的控制系统,并灵活地进行配置。可以很容易地在CAN总线中加进一些新站而无需在硬件或软件上进行修改。当所提供的新站是纯数据接收设备时,数据传输协议不要求独立的部分有物理目的地址。它允许分布过程同步化,即当总线上的控制器需要测量数据时,可从网内获得,因而不要求每个控制器都有自己独立的传感器。
CAN总线可以取代传统的汽车线束,基本不用改动原来系统的硬件和软件,就可以使得扩展后的各个CAN节点的数据在总线内实现共享。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。