CAN 总线是德国 Bosch 公司于 20 世纪 80 年代初为解决汽车中众多数据交换而开发的一种串行数据通信协议。由于其具有卓越的特性,CAN 总线成为目前公认的几种最有前途的现场总线之一。CAN 总线的传输介质可以是双绞线、光纤和同轴电缆。目前双绞线 CAN 总线已得到了广泛应用,各项技术已经成熟。双绞线 CAN 网络在技术在容易实现、造价低廉,且对环境电磁辐射有一定抑制能力。但是当工作环境特别复杂时,其抗干扰能力并不十分令人满意。如在电动汽车现场,情况较为复杂,车载电气系统会产生强电磁干扰,将导致双绞线 CAN 网络不能正常工作。与双绞线和同轴电缆相比,光纤的优越性能 -- 强大的抗 EMI 能力引起人们的关注。为进一步提高 CAN 网络的性能,应采用光纤作传输介质。由于车载局域网传送距离短,同时为了降低车载光纤 CAN 网络的成本,可选用塑料光纤(POF)作为传输介质。塑料光纤在高速短距离通信传输中成本低、易连接、可绕性好、重量轻,故组网成本低。德国宝马公司在 2002 年 3 月上市的最高级新款轿车 BMW7 系列中采用于 50m POF 构筑车内局域网。
 
光纤 CAN 网作为一种工业底层控制局域网,其拓扑结构与常用局域网一样,基本拓扑结构有总线形、环形和晕形。在光纤单环 CAN 网络中,由于器件的延时将导致环路信号自激,使环形 CAN 网络堵塞(或称为锁死)。为遵守 CAN 总线控制器在链路层的协议,应设计一种光纤 CAN 单环网专用逻辑控制单元 LCU。该单元的功能是:对 CAN 总线数据实现收发控制,即主节点对接收到的数据不转发,当数据沿光纤环回到原发送节点时,立即被剔除;从节点对接收数据实现转发。同时还可消除环形光纤 CAN 总线网络的自激现象,保证环网不被堵塞。
 
Q 光纤单环网络中,节点或链路的故障可能造成网络的瘫痪。为了提高光纤环网的生存性,应构成具有自愈功能的光纤双环自愈网。
 
1 光纤自愈环 CAN 网总体设计
1.1 光纤自愈环结构
 
光纤自愈环 CAN 网络如图 1 所示。该网络有两条光纤环路 -- 顺时针环和逆时针环,各节点 CAN 控制器 SJAl000 通过接口电路与双环光纤网相连,接口电路由 Altera 公司出产的复杂可编程逻辑器件(CPLD)EPM7128S、两个光发送器 LEDR 和 LEDL、两个光接收器 PINR 和 PINL 组成。
 
1.2 接口电路的功能
光纤自愈环 CAN 网接口电路的功能是:
(1)当光纤双环通信正常时(如图 2(a)所示),各节点右端光发送器 LEDR 传送左端光接收器 PINL 的数据,信号顺时针传送;同理 LEDL 传送 PINR 的数据,信号逆时针传送,即发送器选择对侧数据转发。
(2)当单根光纤故障时(如图 2(b)所示),下游 C 节点接口电路实现环回,由于左侧光接收器 PINL 无信号,右端光发送器 LEDR 选择同侧光接收器 PINR 数据转发。
(3)当任意节点间两根光纤故障时(如图 2(c)所以),如 BC 节点间光纤被切断时,则 B、C 两个节点与光纤切断点相连执行环回功能。此时,从 A 到 C 的信号 AC 则先经顺时针环到 B,再经逆时针环过 A、D 后到达 C。而信号 CA 则仍经顺时针环传输。这种自愈功能保证在故障情况下仍能维持环的连续性。故障排除后,倒换开关自动返回原来位置。
(4)实现节点 CAN 控制器数据选择接收。其原则为:对于各节点接收的顺、逆时针数据,选择 PINL、PINR 中先到达的数据接收。
(5)实现节点数据选择发送。其原则为:当总线空闲时,选择本节点 CAN 控制器发送端 TX 发送数据,可消除环形光纤 CAN 总线网络的自激现象,保证环网不被堵塞;当本节点 CAN 控制器为接收节点时,选择对侧数据发送;当本节点 CAN 控制器为接收节点时,且对侧光纤通道故障,则选择同侧数据发送。
(6)判别各通道帧起始和帧结束,鉴别总线是否空闲,网络是否故障。如判断到左测光接收器 PINL 有数据帧正在传送时,产生左侧发送数据标志 flag_l 和网络通信状态标志 sync_l。
 

 

2 接口电路设计
光纤 CAN 自愈网的自愈功能及收发控制功能由可编程逻辑器件(ALTERA EPM7128SLC84 一 15)实现,编程采用 VHDL 语言。下面进行具体介绍。
 
2.1 输入输出口设置
图 3 为接口电路 CPLD 的 I/O 口示意图。其中,输入输出 pin_l、led_l、1ed_r、pin_r 分别与光 / 电转换模块 PINL、LEDL、LEDR、PINR 相连:txd、rxd 分别与 CAN 痉制器的数据发送端 TX、接收端 RX 相连;flag_txd=1 代表本节点 CAN 控制器 TX0 正在发送数据帧;flag_l=1 代表左侧通道正在发送数据帧;flag__r=1 代表右侧通道正在发送单据帧。sync_l 为左侧网络通信状态标志,sync_r 为右侧网络通信状态标志。当左通道正常时,输出 sync_1=l,驱动网络状态发光二极管 D_sl 亮;当右通道正常时,输出 sync_r=1,驱动网络状态发光二极管 D_sr 亮;若网络状态发光二极管 D_sr 或 D_sl 灭,表示网络对应光纤通道出了故障。当本节点 CAN 控制器选择左通道数据接收时,输出端 rx_l/r 为高电平;当本节点 CAN 控制器选择右通道数据接收时,输出端 rx_l/r 为低电平。输入端 reset 为复位端,低电平有效;clk0 为时钟输入端,输入时钟的频率为 20MHz。
 
2.2 CPLD 功能结构
CPLD 为控制环网自愈接口单元,控制电路由分频器、中心状态机、发送数据选择器、接收数据选择器组成,如图 4 所示。
 
2.3 分频器
通讯接口 CPLD 时钟频率为 20MHz。在光纤 CAN 自愈环网中,各节点 CAN 控制器 SJAl000 和 CPLD 接口采用独立的工作时钟。为使状态机产生的 flag 的信号与 CAN 控制器数据传送同步,以保证两个数据选择器的切换和数据传送同步,应正确选择状态机的时钟。本文中 CAN 网数据传送波特率是 125kbit/s,状态 . 机时钟 rxclk 的速率设计为数据传送波特率的 8 倍,即 1Mbit/s,保证在一个 CAN 数据位周期中可对数据读取多次,提高抗干扰能力。所以分频器的功能为产生 1MHz 的时钟频率。
 
2.4 中心状态机
依据 CAN 2.0B 协议,CAN 网络数据帧由 7 个不同的位场组成,即帧起始、仲裁场、控制场、数据场、CRC 场、应答场、帧结束。数据场长度可为 0~8 个字节。帧起始位是一个显性位低电?quot;0;帧结束是由 7 个隐性位 1 组成的序列;在数据帧传送中,使用位添充技术编码,保证数据帧位流中不会出现 5 个连续的 1 或 0。
 
中心控制状态机是本设计的核心单元。中心状态机的功能是:
(1),检测 CAN 数据帧的帧起始和帧结束,产生相应的发送数据标志信号 flag_txd、flag_r 和 flag_l。
(2)产生网络通信状态标志 sync_r 和 sync_l。中心状态机由:三个状态机组成:本节点 CAN 控制器状态机、左通道状态机和右通道状态机。
它们分别判别各通道(TX、PIN_L 和 PIN_R)是否有数据传送。下面对各处状态机的解释均以本节点 CAN 控制器状态机为例。