控制器局域网通信协议(CAN通信协议或CAN协议)具有以下特点。
(1)多主发送信息。多主发送信息即当总线空闲时,所有节点都可发送信息。CAN通信协议规定:所有信息应以规定的格式发出。在总线空闲时,与总线相连的所有节点都可以发出新的信息。
(2)总线仲裁决定发送信息的优先级(优先顺序)。在两个以上节点试图同时发出信息的情况下,利用标志符(以下简称ID)决定优先级,以Byte(比特)为单位对各信息的ID进行仲裁,仲裁获胜(被判断为优先级最高)的节点继续发送信息,仲裁失败的节点立即停止发送并转为接收状态。
CAN总线采用非归零(Non-Return Zero,NRZ)编码,所有节点以“与”逻辑方式连接至总线,即若有一个节点向总线传输逻辑“0”,此时无论有多少个节点在发送逻辑“1”,总线都将呈现逻辑“0”状态。CAN网络的所有节点可能试图同时发送信息,但其简单的仲裁规则能确保仅有一个节点控制总线并发送信息。CAN收发器如同一个漏极开路结构,能够监测自身的输出。逻辑高状态由上拉电阻驱动,因此低有效输出状态(0)对总线仲裁起着决定性的作用。
为了近似于实时处理,CAN总线必须快速传输数据,这就不仅需要高达1 Mb/s的数据传输物理总线,而且需要快速的总线分配能力,以满足多个节点试图同时传输信息的要求。通过网络交换信息而采取实时处理的紧急状况是有差别的:快速变化的变量(如发动机转速、负荷等)与变化相对缓慢的变量(如发动机温度)相比,必然要求频繁、快速地发送数据。信息标志符可以规定优先级,最紧急的信息优先级高,可以优先传输。在系统设计期间,设定信息的优先级以二进制数表示,但不允许动态更改。二进制数较小的标志符具有较高的优先级,使信息可近似于实时传输。
解决总线访问冲突是通过仲裁每个标识位,即每个节点都逐位监测总线电平。按照“线与”机制,即显性状态(逻辑“0”)能够改写隐性状态(逻辑“1”)。当某个节点失去总线分配竞争时,其表现为隐性发送和显性观测状态。所有退出竞争的节点都成为那些最高优先级信息的接收器,并且不再试图发送自己的信息,直至总线再次空闲。
(3)系统扩展灵活。由于与总线相连的节点没有节点地址信息,在向总线追加节点时,无须更改与总线相连的其他节点的软件与硬件,为网络系统的扩展提供了条件。CAN总线可以同时连接许多单元。理论上,CAN总线可以连接的节点数是无限的,但实际可以连接的单元数将受总线延迟时间与电负荷的限制。当降低通信速率时,CAN总线可以连接较多的单元;反之,当提高通信速率时,CAN总线可连接的单元数量将减少。(www.daowen.com)
(4)不同网络可以采用不同的通信速率。CAN协议可以根据网络规模的大小来设定通信速率。但在一个局域网内部,所有节点必须设定相同的通信速率。否则,通信速率不同的节点连到一起时,节点就会出错而阻碍通信。不同的局域网可以采用不同的通信速率。
(5)具有错误检测、通告和还原功能。所有的节点都可以检测出错误(错误检测功能);当检测出错误时,该节点立即向其他节点发送出错误的通知(错误通告功能);当发送信息的节点检测出错误时,其发送状态将被强制结束。发送状态被强制结束的节点会再反复传送信息,直至其信息可以正常传送为止(错误还原功能)。
(6)错误的界定与处理。CAN总线上出现的错误分为:总线上的数据临时产生的错误(来自外部的干扰等)与总线上的数据连续产生的错误(节点内部错误、驱动产生故障以及总线断路、搭铁等引起的故障等),CAN控制器具备判别错误种类的功能。当CAN总线上的数据连续产生错误时,产生错误的节点会被从总线上切除。
CAN控制器内设有出错计数器,根据网络是否出错、出错是本地的还是全局的,计数器决定减1、加1,还是加8。每当收到信息时,出错计数器就会加数或减数。如果每次收到的信息都正确,则计数器减1;如果信息出现本地错误,则计数器加8;如果信息出现整个网络错误,则计数器加1。因此,我们通过查询出错计数器值,就可知道网络通信质量。
出错计数器这种计数方式能够确保单个故障节点不会阻塞整个网络。如果某个节点出现本地错误,其计数值将很快达到96、127或255。当计数值达到96时,计数器将向控制器发出“中断”信号指令,提示当前通信质量较差。当计数值达到127时,该节点假定其处于“被动出错状态”,即继续接收信息,且停止要求对方重发信息。当计数值达到255时,该节点脱离总线,不再工作,而且只有在硬件复位后,才能恢复工作状态。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。