韩 建 田博文 王春龙
(1.东北石油大学电子科学学院,黑龙江 大庆 163318;2.大庆油田有限责任公司采油二厂电力维修大队,黑龙江 大庆 163453)
CAN总线通信协议广泛应用于汽车工业、航空工业及工厂自动化等领域,其优势为实现简单、布线方便和成本低[1]。但CAN总线的可靠性仍存在弊端,在通信中如果某个节点产生错误,那么整条总线的通信就会失败。此外,CAN总线在错误产生时,不能为发送方及时找出产生故障的节点。因此,一个单一的CAN总线不能满足嵌入式通信系统的安全需要。笔者提出了一种新型的基于现场可编程门阵列(Field Programmable Gate Array,FPGA)的改进式CAN总线通信方法,它支持传统的CAN接口,对CAN总线出现的各种故障做出正确检测、分析和隔离,可以实现CAN总线网络的安全和可靠。
CAN总线起初并非用于安全领域设备中,其通信弊端可以概括为以下几个方面:
a. CAN总线通信系统具有一个较长且可变的传输延时,每个消息的传输延时取决于此时的网络负载,不考虑全局时间时,这种延时会导致数据时域错误,而且引入了测量误差;
b. CAN总线的仲裁方式限制了其吞吐量,信息的传播延时要小于单位字节长度,因此在40m的传输线上其最大带宽仅为1Mbit/s;
c. CAN总线非智能,在一个节点连续发送最高级别的信息时,会影响其他节点之间的通信;
d. CAN总线协议中不包含同步时钟,如需要全局时钟,则必须在主设备中调用;
e. 在通信出现错误时,系统会将消息重发,从而增加了时间延时;
f. CAN总线的故障恢复机制确保前、后状态完全一致,如果消息的最后一帧的最后一位发生了错误,就会导致内容或排序的不一致。
为了解决CAN总线通信弊端,笔者设计了一种能在高标准、高需求的环境中应用的CAN总线控制单元。控制单元以FPGA为核心,综合了一套多处理系统芯片(Multi Processor System on a Chip,MPSoC)(图1)[2]。
每个CAN接口系统都包含一个CPU处理器、一个本地存储器和一个CAN控制器,所有节点都服从对应的CAN接口系统。CPU处理器采用定时器触发的方式控制消息的单点或多点传输。此外控制单元还包含一个管理区,它负责诊断故障和分配任务。控制单元具体功能如下:
a. 控制信息的传输速率[3]。CAN总线数据包括11位基本标识符和29位扩展标识符,每两个具有相同标识符的信息之间的时间间隔是随机的。为了增强系统的对故障隔离能力,需要限制信息的传输速率。在指定标识符后,时间间隔若是超出范围,消息将被自动丢弃。
图1 基于FPGA的智能电子控制单元结构框图
b. 多点传输。传统的消息在总线上传输成功后,会发送到其他所有节点,为了克服这一局限性,本系统利用带宽支持选择性多点发送。
c. 标识符的验证和翻译。控制器为每个节点配置有效的标识符,使故障节点的消息可以被保留,没有指定标识符的消息,将被控制器自动丢弃。
d. 诊断与管理。该控制系统含有一个专用管理区,它能够收集故障消息的时间、内容、标识和故障时间最大值、最小值。这些信息将被后续使用做进一步分析。在系统运行时,处理器可以随时改变系统的配置,这包括添加或删除有效标识符、时间间隔合法性的修改及控制多点传输等[4]。
本设计采用TJA1040T型号芯片实现CAN节点控制器与总线之间的连接[5],其最高传输速率为1Mbit/s。信号的接收和发送均采用差分方式,符合ISO11898标准。休眠模式的功耗较低,可被远程信号唤醒。
为了提高系统的抗干扰能力,在每路CAN节点信号端加入两片高速光电耦合器HCPL-0600实现物理隔离。它适用于高速信号传输系统,并且驱动能力和抗干扰能力较强,耐压高。CAN总线节点电路如图2所示,图2中CAN控制器信号CAN_Tx、CAN_Rx通过HCPL-0600耦合至TJA1040T芯片中,再转化成总线差分信号。相反的,总线信号也可以通过芯片传入CAN控制器中,形成双向通信。
图2 CAN总线节点电路
CAN总线节点易产生的故障主要有[6]:
a. 若在主要节点或是总线上出现故障,则该故障信号会占主导地位,CAN区域将不会继续通信(如果节点产生故障,那么该节点将不会与其他设备进行通信;如果总线出现故障,则所有节点都不能进行通信)。
b. 由于计数器等错误引起的总线死机/遗漏故障也是CAN总线最常见的故障之一,它会引起消息传输错误或者停止传输。
c. 如果最后一帧的末位出现非对称性翻转,那么总线上的节点会有一部分可以接收,而另一部分则需要进行重发。这样,前一部分可以接收的节点就需要重复接收,导致消息的堵塞、遗漏,最终引起死机故障。
d. 在消息传输过程中标识符也会出现故障,致使该节点冒充其他节点,从而产生信息错误。
图3为CAN接口系统结构,接口控制系统采用了星型拓扑结构,它可将显性故障和隐性故障停滞在CAN区域内,使故障节点中断与其他节点的资源共享,不影响其他通信设备。系统以MPSoC为开发平台,CPU由Nios II的软核提供。整个系统隔离性能好,扩展性高,有更为广的开发空间。本设计采用一个具有3个接口控制器的测试框架,分别连接3条独立CAN总线,并根据预定的结构发送报文。通过对控制器进行设置,使系统收集故障信息、检测每条独立总线和储存测试结果,并进行最后的分析。
图3 CAN接口系统结构示意图
图4描绘了CAN总线数据的输入、输出信息,图4a中设备使用自身的总线协议,在第一阶段CAN3端口发送速率太慢,违反了最大时间间隔规定;第二阶段CAN1、CAN2端口以恒定的速率发送,CAN3不断增加报文的发送速率,在不经过CAN控制器前,数据速率会无限制上升,产生故障。图4b中数据通过CAN总线控制器以后,信号速率被控制在合法范围内,从而实现了故障隔离。
图4 CAN总线控制器输入、输出信号速率分布
CAN接口系统会智能处理节点和总线上的故障,并且保证不影响其他节点设备。控制器将所有CAN接口进行分类:若在某个CAN区域内,节点发送的消息不被接口系统接收,则该节点必须重新发送;若此接口系统并非信息目的地,该接口将数据保持不变或将信息转发给目的地接口;若总线上出现了短暂的故障,控制器将启动重新传输,试图得到最终正确信息。
讨论了标准CAN总线性能的局限性,提出了一种新型的基于现场可编程门阵列多处理系统芯片的智能电子控制单元,该控制单元兼容CAN总线协议,通过对CAN总线网络出现的故障进行实时检测和分析,实现故障隔离,提高CAN总线网络安全性和可靠性。该设计的创新之处在于将FPGA为核心的MPSoC系统应用于通信网络中,使系统的性能大幅度提升,从而拓展了CAN总线的应用范围。