1、使网络内的节点个数在理论上不受限制CAN 协议的一个最大特点是废除了传统的站地址编码,而代之以对通信数据块进行编码。采用这种方法的优点可使网络内的节点个数在理论上不受限制,数据块的标识符可由 11 位或 29 位二进制数组成,因此可以定义 2 或 2 个以上不同的数据块,这种按数据块编码的方式,还可使不同的节点同时接收到相同的数据,这一点在分布式控制系统中非常有用。数据段长度最多为 8 个字节,可满足通常工业领域中控制命令、工作状态及测试数据的一般要求。同时,8 个字节不会占用总线时间过长,从而保证了通信的实时性。CAN 协议采用 CRC 检验并可提供相应的错误处理功能,保证了数据通信的可靠性
2、。CAN 卓越的特性、极高的可靠性和独特的设计,特别适合工业过程监控设备的互连,因此,越来越受到工业界的重视,并已公认为最有前途的现场总线之一。可在各节点之间实现自由通信CAN 总线采用了多主竞争式总线结构,具有多主站运行和分散仲裁的串行总线以及广播通信的特点。CAN 总线上任意节点可在任意时刻主动地向网络上其它节点发送信息而不分主次,因此可在各节点之间实现自由通信。CAN 总线协议已被国际标准化组织认证,技术比较成熟,控制的芯片已经商品化,性价比高,特别适用于分布式测控系统之间的数通讯。CAN 总线插卡可以任意插在 PC AT XT 兼容机上,方便地构成分布式监控系统。结构简单只有 2 根线
3、与外部相连,并且内部集成了错误探测和管理模块。传输距离和速率CAN 总线特点:(1) 数据通信没有主从之分,任意一个节点可以向任何其他(一个或多个)节点发起数据通信,靠各个节点信息优先级先后顺序来决定通信次序,高优先级节点信息在 134s 通信; (2) 多个节点同时发起通信时,优先级低的避让优先级高的,不会对通信线路造成拥塞; (3) 通信距离最远可达10KM(速率低于 5Kbps)速率可达到 1Mbps(通信距离小于 40M);(4) CAN 总线传输介质可以是双绞线,同轴电缆。CAN 总线适用于大数据量短距离通信或者长距离小数据量,实时性要求比较高,多主多从或者各个节点平等的现场中使用。
4、编辑本段技术介绍位仲裁要对数据进行实时处理,就必须将数据快速传送,这就要求数据的物理传输通路有较高的速度。在几个站同时需要发送数据时,要求快速地进行总线分配。实时处理通过网络交换的紧急数据有较大的不同。一个快速变化的物理量,如汽车引擎负载,将比类似汽车引擎温度这样相对变化较慢的物理量更频繁地传送数据并要求更短的延时。CAN 总线以报文为单位进行数据传送,报文的优先级结合在 11 位标识符中,具有最低二进制数的标识符有最高的优先级。这种优先级一旦在系统设计时被确立后就不能再被更改。总线读取中的冲突可通过位仲裁解决。如图 2 所示,当几个站同时发送报文时,站 1 的报文标识符为 011111;站
5、2 的报文标识符为0100110;站 3 的报文标识符为 0100111。所有标识符都有相同的两位 01,直到第 3 位进行比较时,站 1 的报文被丢掉,因为它的第 3 位为高,而其它两个站的报文第 3 位为低。站 2 和站 3 报文的 4、5、6 位相同,直到第 7 位时,站 3的报文才被丢失。注意,总线中的信号持续跟踪最后获得总线读取权的站的报文。在此例中,站 2 的报文被跟踪。这种非破坏性位仲裁方法的优点在于,在网络最终确定哪一个站的报文被传送以前,报文的起始部分已经在网络上传送了。所有未获得总线读取权的站都成为具有最高优先权报文的接收站,并且不会在总线再次空闲前发送报文。CAN 具有较
6、高的效率是因为总线仅仅被那些请求总线悬而未决的站利用,这些请求是根据报文在整个系统中的重要性按顺序处理的。这种方法在网络负载较重时有很多优点,因为总线读取的优先级已被按顺序放在每个报文中了,这可以保证在实时系统中较低的个体隐伏时间。对于主站的可靠性,由于 CAN 协议执行非集中化总线控制,所有主要通信,包括总线读取 (许可)控制,在系统中分几次完成。这是实现有较高可靠性的通信系统的唯一方法。CAN 与其它通信方案的比较在实践中,有两种重要的总线分配方法:按时间表分配和按需要分配。在第一种方法中,不管每个节点是否申请总线,都对每个节点按最大期间分配。由此,总线可被分配给每个站并且是唯一的站,而不
7、论其是立即进行总线存取或在一特定时间进行总线存取。这将保证在总线存取时有明确的总线分配。在第二种方法中,总线按传送数据的基本要求分配给一个站,总线系统按站希望的传送分配(如:EthernetCSMA/CD)。因此,当多个站同时请求总线存取时,总线将终止所有站的请求,这时将不会有任何一个站获得总线分配。为了分配总线,多于一个总线存取是必要的。CAN 实现总线分配的方法,可保证当不同的站申请总线存取时,明确地进行总线分配。这种位仲裁的方法可以解决当两个站同时发送数据时产生的碰撞问题。不同于 Ethernet 网络的消息仲裁,CAN 的非破坏性解决总线存取冲突的方法,确保在不传送有用消息时总线不被占
8、用。甚至当总线在重负载情况下,以消息内容为优先的总线存取也被证明是一种有效的系统。虽然总线的传输能力不足,所有未解决的传输请求都按重要性顺序来处理。在 CSMA/CD 这样的网络中,如Ethernet,系统往往由于过载而崩溃,而这种情况在 CAN 中不会发生。CAN 的报文格式在总线中传送的报文,每帧由 7 部分组成。CAN 协议支持两种报文格式,其唯一的不同是标识符(ID)长度不同,标准格式为 11 位,扩展格式为 29 位。在标准格式中,报文的起始位称为帧起始(SOF),然后是由 11 位标识符和远程发送请求位 (RTR)组成的仲裁场。RTR 位标明是数据帧还是请求帧,在请求帧中没有数据字
9、节。控制场包括标识符扩展位(IDE),指出是标准格式还是扩展格式。它还包括一个保留位 (ro),为将来扩展使用。它的最后四个位用来指明数据场中数据的长度(DLC)。数据场范围为 08 个字节,其后有一个检测数据错误的循环冗余检查(CRC)。应答场(ACK)包括应答位和应答分隔符。发送站发送的这两位均为隐性电平(逻辑 1),这时正确接收报文的接收站发送主控电平(逻辑 0)覆盖它。用这种方法,发送站可以保证网络中至少有一个站能正确接收到报文。报文的尾部由帧结束标出。在相邻的两条报文间有一很短的间隔位,如果这时没有站进行总线存取,总线将处于空闲状态。CAN 数据帧的组成远程帧远程帧由 6 个场组成:
10、帧起始、仲裁场、控制场、CRC 场、应答场和帧结束。远程帧不存在数据场。远程帧的 RTR 位必须是隐位。DLC 的数据值是独立的,它可以是 08 中的任何数值,为对应数据帧的数据长度。错误帧错误帧由两个不同场组成,第一个场由来自各站的错误标志叠加得到,第二个场是错误界定符错误标志具有两种形式:活动错误标志(Active error flag),由 6 个连续的显位组成认可错误标志(Passive error flag),由 6 个连续的隐位组成错误界定符包括 8 个隐位超载帧超载帧包括两个位场:超载标志和超载界定符发送超载帧的超载条件:要求延迟下一个数据帧或远程帧在间歇场检测到显位超载标志由
11、6 个显位组成超载界定符由 8 个隐位组成数据错误检测不同于其它总线,CAN 协议不能使用应答信息。事实上,它可以将发生的任何错误用信号发出。CAN 协议可使用五种检查错误的方法,其中前三种为基于报文内容检查。3.4.1 循环冗余检查(CRC)在一帧报文中加入冗余检查位可保证报文正确。接收站通过 CRC 可判断报文是否有错。3.4.2 帧检查这种方法通过位场检查帧的格式和大小来确定报文的正确性,用于检查格式上的错误。3.4.3.应答错误如前所述,被接收到的帧由接收站通过明确的应答来确认。如果发送站未收到应答,那么表明接收站发现帧中有错误,也就是说,ACK 场已损坏或网络中的报文无站接收。CAN
12、 协议也可通过位检查的方法探测错误。3.4.4 总线检测有时,CAN 中的一个节点可监测自己发出的信号。因此,发送报文的站可以观测总线电平并探测发送位和接收位的差异。3.4.5 位填充一帧报文中的每一位都由不归零码表示,可保证位编码的最大效率。然而,如果在一帧报文中有太多相同电平的位,就有可能失去同步。为保证同步,同步沿用位填充产生。在五个连续相等位后,发送站自动插入一个与之互补的补码位;接收时,这个填充位被自动丢掉。例如,五个连续的低电平位后,CAN 自动插入一个高电平位。CAN 通过这种编码规则检查错误,如果在一帧报文中有6 个相同位,CAN 就知道发生了错误。如果至少有一个站通过以上方法
13、探测到 一个或多个错误,它将发送出错标志终止当前的发送。这可以阻止其它站接收错误的报文,并保证网络上报文的一致性。当大量发送数据被终止后,发送站会自动地重新发送数据。作为规则,在探测到错误后 23 个位周期内重新开始发送。在特殊场合,系统的恢复时间为31 个位周期。但这种方法存在一个问题,即一个发生错误的站将导致所有数据被终止,其中也包括正确的数据。因此,如果不采取自监测措施,总线系统应采用模块化设计。为此,CAN 协议提供一种将偶然错误从永久错误和局部站失败中区别出来的办法。这种方法可以通过对出错站统计评估来确定一个站本身的错误并进入一种不会对其它站产生不良影响的运行方法来实现,即站可以通过
14、关闭自己来阻止正常数据因被错误地当成不正确的数据而被终止。硬同步和重同步硬同步只有在总线空闲状态条件下隐形位到显性位的跳变沿发生时才进行,表明报文传输开始。在硬同步之后,位时间计数器随同步段重新开始计数。硬同步强行将已发生的跳变沿置于重新开始的位时间同步段内。根据同步规则,如果某一位时间内已有一个硬同步出现,该位时间内将不会发生再同步。再同步可能导致相位缓冲段 1 被延长或相位缓冲段 2 被短。这两个相位缓冲段的延长时间或缩短时间上限由再同步跳转宽度(SJW)给定。编辑本段可靠性为防止汽车在使用寿命期内由于数据交换错误而对司机造成危险,汽车的安全系统要求数据传输具有较高的安全性。如果数据传输的
15、可靠性足够高,或者残留下来的数据错误足够低的话,这一目标不难实现。从总线系统数据的角度看,可靠性可以理解为,对传输过程产生的数据错误的识别能力。残余数据错误的概率可以通过对数据传输可靠性的统计测量获得。它描述了传送数据被破坏和这种破坏不能被探测出来的概率。残余数据错误概率必须非常小,使其在系统整个寿命周期内,按平均统计时几乎检测不到。计算残余错误概率要求能够对数据错误进行分类,并且数据传输路径可由一模型描述。如果要确定 CAN 的残余错误概率,我们可将残留错误的概率作为具有 8090 位的报文传送时位错误概率的函数,并假定这个系统中有 510 个站,并且错误率为1/1000,那么最大位错误概率
16、为 1013 数量级。例如,CAN 网络的数据传输率最大为 1Mbps,如果数据传输能力仅使用 50%,那么对于一个工作寿命 4000 小时、平均报文长度为 80 位的系统,所传送的数据总量为 91010。在系统运行寿命期内,不可检测的传输错误的统计平均小于 102 量级。换句话说,一个系统按每年 365 天,每天工作 8 小时,每秒错误率为 0. 7 计算,那么按统计平均,每 1000 年才会发生一个不可检测的错误。编辑本段应用举例CAN 总线在工控领域主要使用低速-容错 CAN 即 ISO11898-3 标准,在汽车领域常使用 500Kbps 的高速 CAN。某进口车型拥有,车身、舒适、多
17、媒体等多个控制网络,其中车身控制使用CAN 网络,舒适使用 LIN 网络,多媒体使用 MOST 网络,以 CAN 网为主网,控制发动机、变速箱、ABS 等车身安全模块,并将转速、车速、油温等共享至全车,实现汽车智能化控制,如高速时自动锁闭车门,安全气囊弹出时,自动开启车门等功能。CAN 系统又分为高速和低速,高速 CAN 系统采用硬线是动力型,速度:500kbps,控制 ECU、ABS 等;低速 CAN 是舒适型,速度:125Kbps,主要控制仪表、防盗等。某医院现有 5 台 16T/H 德国菲斯曼燃气锅炉,向洗衣房、制剂室、供应室、生活用水、暖气等设施提供 5kg/cm2 的蒸汽,全年耗用天
18、然气 1200 万 m3,耗用20 万吨自来水。医院采用接力式方式供热,对热网进行地域性管理,分四大供热区。其中冬季暖气的用气量很大,据此设计了基于 CAN 现场总线的分布式锅炉蒸汽热网智能监控系统。现场应用表明:该楼宇自动化系统具有抗干扰能力强,现场组态容易,网络化程度高,人机界面友好等特点。编辑本段优点废除传统的站地址编码,代之以对通信数据块进行编码,可以多主方式工作;采用非破坏性仲裁技术,当两个节点同时向网络上传送数据时,优先级低的节点主动停止数据发送,而优先级高的节点可不受影响继续传输数据,有效避免了总线冲突;采用短帧结构,每一帧的有效字节数为 8 个,数据传输时间短,受干扰的概率低,
19、重新发送的时间短;每帧数据都有 CRC 校验及其他检错措施,保证了数据传输的高可靠性,适于在高干扰环境下使用;节点在错误严重的情况下,具有自动关闭总线的功能,切断它与总线的联系,以使总线上其他操作不受影响;可以点对点,一对多及广播集中方式传送和接受数据。具有实时性强、传输距离较远、抗电磁干扰能力强、成本低等优点;采用双线串行通信方式,检错能力强,可在高噪声干扰环境中工作;具有优先权和仲裁功能,多个控制模块通过 CAN 控制器挂到 CAN-Bus 上,形成多主机局部网络;可根据报文的 ID 决定接收或屏蔽该报文;可靠的错误处理和检错机制;发送的信息遭到破坏后,可自动重发;节点在错误严重的情况下具
20、有自动退出总线的功能;报文不包含源地址或目标地址,仅用标志符来指示功能信息、优先级信息。编辑本段测试工具CAN 总线多用于工控和汽车领域,在 CAN 总线的开发测试阶段,需要对其拓扑结构,节点功能,网路整合等进行开发测试,需要虚拟、半虚拟、全实物仿真测试平台,并且必须测试各节点是否符合 ISO11898 中规定的错误响应机制等,所以 CAN 总线的开发需要专业的开发测试工具,并且在生产阶段也需要一批简单易用的生产线测试工具。CAN 总线开发测试工具的主要供应商有ZLG、Passion IXXAT、IHR、Vector、Intrepidcs、Passion Warwick 等。常用的开发测试工具
21、如 CANScope、CANalyst-II、Passiontech DiagRA、canAnalyser、X-Analyser、AutoCAN、CANspider 等。编辑本段错误处理在 CAN 总线中存在 5 种错误类型,它们互相并不排斥,下面简单介绍一下它们的区别、产生的原因及处理方法。位错误:向总线送出一位的某个节点同时也在监视总线,当监视到总线位的电平和送出的电平不同时 9 则在该位时刻检测到一个位错误。但是在仲裁区的填充位流期间或应答间隙送出隐性位而检测到显性位时,不认为是错误位。送出认可错误标注的发送器,在检测到显性位时也不认为是错误位。填充错误:在使用位填充方法进行编码的报文中
22、,出现了第 6 个连续相同的位电平时,将检 测出一个填充错误。CRC 错误:CRC 序列是由发送器 CRC 计算的结果组成的。接收器以和发送器相同的方法计算 CRC。如果计算的结果和接收到的 CRC 序列不同,则检测出一个 CRC错误。形式错误: 当固定形式的位区中出现一个或多个非法位时,则检测到一个形式错误。应答错误:在应答间隙,发送器未检测到显性位时,则由它检测出一个应答错误。检测到出错条件的节点通过发送错误标志进行标定。当任何节点检测出位错误、填充错误、形式错误或应答错误时,由该节点在下一位开始发送出错误标志。当检测到 CRC 错误时。出错标志在应答界定符后面那一位开始发送除非其他出错条
23、件的错误标志已经开始发送。在 CAN 总线中,任何一个单元可能处于下列 3 种故障状态之一:错误激活状态(ErrorActive)、错误认可状态(Error Passitive)和总线关闭状态(Bus off)。错误激活单元可以照常参和总线通信,并且当检测到错误时,送出一个活动错误标志。错误 认可节点可参和总线通信,但是不允许送出活动错误标志。当其检测到错误时,只能送出认可错 误标志,并且发送后仍为错误认可状态,直到下一次发送初始化。总线关闭状态不允许单元对总 线有任何影响。为了界定故障,在每个总线单元中都设有 2 个计数:发送出错计数和接收出错计数。这些 计数按照下列规则进行。(1)接收器检
24、查出错误时,接收器错误计数器加 1,除非所有检测错误是发送活动错误标志或超载标志期间的位错误。(2)接收器在送出错误标志后的第一位检查出显性位时,错误计数器加 8。(3)发送器送出一个错误标志时,发送器错误计数器加 8。有两种情况例外:其一是如果发 送器为错误认可,由于未检测到显性位应答或检测到应答错误,并且在送出其认可错误标志时,未检测到显性位;另外一种情况是如果仲裁器件产生填充错误,发送器送出一个隐性位错误标志,而检测到的是显性位。除以上两种情况外,发送器错误计数器计数不改变。(4)发送器送出一个活动错误标志或超载标志时,检测到位错误,则发送器错误计数器加 8。(5)在送出活动镨误标志、认
25、可错误标志或超载错误标志后,任何节点都最多允许连续 7 个显性位。在检测到第 11 个连续显性位后,或紧随认可错误标志检测到第 8 个连续的显性位,以及附加的 8 个连续的显性位的每个序列后,每个发送器的发送错误计数都加 8,并且每个接收器的接收错误计数也加 8。(6)报文成功发送后,发送错误计数减 1,除非计数值已经为 0。(7)报文成功发送后,如果接收错误计数处于 1197 之间,则其值减 1;如果接收错误计数为 0,则仍保持为 0;如果大于 127,则将其值记为 119127之间的某个数值。(8)当发送错误计数等于或大于 128,或接收错误汁数等于或大于 128 时,节点进人错误认,可状态,节点送出一个活动错误标志。(9)当发送错误计数器大于或等于 256 时,节点进人总线关闭状态。(1O)当发送错误计数和接收错误计数均小于或等于 127 时,错误认可节点再次变为错误激活节点。(11)在检测到总线上 11 个连续的隐性位发送 128 次后,总线关闭节点将变为2 个错误计数器均为 0 的错误激活节点。(12)当错误计数器数值大于 96 时,说明总线被严重干扰。如果系统启动期间仅有 1 个节点挂在总线上,此节点发出报文后,将得不到应答,检查出错误并重复该报文,此时该节点可以变为错误认可节点,但不会因此关闭总线。 1