1 CANbus简述
CAN现场总线技术是德国BOSCH公司于80年代初为解决现代汽车业中众多的控制与测试仪器之间的数据交换而开发,目前已逐步应用到其它领域的一种符合国际标准的串行数据通信协议。CAN的主要技术特点有:
(1)对等网络结构,网络上任意节点可在任意时刻向网络其它节点发送信息,不分主从,通信方式灵活。
(2)采用非破坏性总线仲裁技术,网络中的节点可以分成不同的优先级,当多个节点同时向网络上传送信息时,优先级低的节点主动暂停数据发送,而优先级高的节点可不受影响地继续传送数据。之后,按优先级高低,其它节点在总线空闲时依次进行被暂停的数据传送,有效地避免了总线冲突。
(3)每一帧的有效字节数最多为8个,帧传送时间短,受干扰概率小,重发时间短。每一帧信息都有CRC校验及其它检错措施,通信误码率低。
(4)网络节点在错误严重的情况下,具有自动关闭总线接口的功能,避免影响总线上的其它节点的正常操作。
(5)通信距离最远达10km(5kB/s),通信速率最高可达到1MB/s(40M),节点数目实际可达110个。通信介质采用双绞线,也可用光纤。
2 实现方法
CAN现场总线与RS-485总线的主要区别是:CAN总线是以帧为单位进行数据通信的,且每帧均携带对应的ID标示符,而RS-485是以字节为单位进行数据通信,不带任何其它附属信息。如果不考虑帧中的ID标示符,那么这二种总线传输的信息就可以认为完全相同。考虑到绝大多数应用CAN总线的场合都不可能分配完系统中的ID标示符资源,因而在系统中可以另分配一至多个ID标示符给RS-485总线数据,即给总线透明转换电路所用,收、发数据的ID标识符可以不相同。CAN总线系统中的公用主控设备一般被设置成直通状态,它可通过发送、接收具有不同ID标示符的不同数据帧,方便地对网络中的各种设备进行管理和控制。对那些纯粹靠帧数据本身而忽略ID标示符的系统来说,这种不同总线之间的转换更加简单。
实现二种总线之间的透明转换的基本过程是这样的:电路加电进入正常状态后,首先以电路中保存的参数(如未初始化则以缺省参数)对二个总线通信端口分别进行初始化,并将所有通讯端口设置成中断接收工作方式,在启动内部看门狗(Watchdog)后,电路等待外来数据的中断。一旦某一总线端口有有效数据进入,电路首先将这些数据读入内部数据缓冲区,置相关内部标志,关闭其它端口的中断,以使接收端数据能及时被接收到。在下一数据到来之前,电路将及时通过另一端口将缓冲区中的数据转发出去,直到缓冲区空。在这种转换过程中,如果数据是自CANBUS一端流入,则电路只将帧内数据读入到缓冲区。相反,则电路在转发数据之前自动按设置将设定ID标示符加到发送信息中,一旦转换过程结束,所有端口又被允许中断接收。电路中缓冲区一般可配置8k~32K字节的静态RAM。