耿进龙 赵希发 李 鹏
安全计算机平台是轨道交通中信号控制系统的通用安全平台,广泛应用于铁路和地铁的轨旁IO设备系统和车载IO 设备系统,是轨道交通信号系统的重要组成部分。随着我国铁路列车运行速度越来越快,维护周期要求越来越短,对用于传输IO控制命令以及检测维护信息的系统总线,在安全性、实时性以及可靠性方面提出了更高的要求。
CAN 总线具有突出的可靠性、实时性和灵活性,在工业自动化、汽车、船舶等领域得到广泛应用。基于CAN 应用层的CANopen 协议具有实时高效、组网灵活等特点,通过CANopen 协议传输的数据可以根据其不同的紧急程度要求,设置为不同优先级的CANopen 通信对象。底层CAN 总线采用非破坏性仲裁机制,既可以保证高优先级的CANopen 通信对象优先传输,又可以保证低优先级的CANopen 通信对象不会丢失。
基于CANopen协议的安全计算机平台,采用双网冗余的CAN 总线连接系统内各个模块。同时,对实时性要求最高的IO 控制命令采用PDO 进行传输,数据量比较大的监测维护信息采用SDO 进行传输,并使用NMT 报文对网络中的每个节点进行同步控制。通过实验室测试试验,验证了CANopen 协议作为安全计算机平台总线上层通信协议的可行性。
在轨道交通信号系统中,典型的故障-安全系统有1oolD、1oo2D、2oo2D、2oo3D、2×2oo2D 等几种架构,不同的架构具有不同的可靠性和安全性。本文描述的安全计算机平台采用2×2oo2D 作为安全平台的核心架构,其基本功能结构、接口及边界如图1 所示。安全计算机平台主要由逻辑处理单元和IO 执行单元2 部分组成,两者之间通过冗余的CAN总线进行数据交互,每个逻辑处理模块和IO 执行模块都采用2oo2设计,满足EN 50128的SIL4级要求。
图1 安全计算机平台系统架构
在安全计算机平台中,逻辑处理单元主要负责接收外部安全设备的数据,并进行安全处理,生成IO 驱动命令并发送给IO 执行单元;同时,对IO 执行单元采集的数据进行安全处理,将处理后的数据发送给外部安全设备。IO 执行单元分为IO 采集模块和IO 驱动模块,IO 采集模块主要负责采集IO 控制设备的数据,并进行安全处理,处理后的数据通过CAN 总线发送给逻辑处理单元;IO 驱动模块主要负责通过CAN 总线接收逻辑处理单元的数据,并进行安全处理,利用处理后的数据控制IO 设备。
为了提高安全计算机平台的通用性,系统中IO 执行单元的数量可配置。应用可以根据现场IO控制设备的数量灵活地调整IO 执行单元的数量,最多支持配置42 个IO 执行单元。
CANopen 协议是CAN 总线的上层应用协议,每个CANopen 设备由3 部分组成,分别是通信接口、对象字典和应用层,其模型如图2 所示。通信接口连接到CAN 总线,根据CANopen 协议的要求在总线上收发CAN 报文;对象字典是通信接口和应用层之间的接口,对象字典中的对象由上层应用进行定义;应用层与相关的IO 设备相连,控制IO设备的驱采操作。
图2 CANopen 设备模型
对象字典是CANopen 协议中最核心的部分,每个设备都有一个独立的对象字典,用于描述设备自身的各种数据对象和参数,是一个有序的对象集合。对象字典的对象可以通过使用索引(Index)和子索引(Sub-index)进行访问。
通信接口定义了4 种类型的通信对象:网络管理报文NMT、过程数据对象SDO、服务数据对象PDO,以及特殊功能对象。NMT 采用主从通信模式,主要用于统一管理网络节点的状态;SDO 采用客户端/服务器通信模式,主要用于传输实时性要求不高的数据,如对象字典中节点配置参数等;PDO 采用生产者/消费者通信模式,主要用于传输实时数据,如控制数据等;特殊功能对象包括同步帧报文、时间戳报文以及紧急报文。同步帧报文用于实现整个网络的同步传输;时间戳报文用于为网络中所有设备提供统一的时间基准;紧急报文用于在站节点内部发生错误时通知网络中其他设备。
CANopen 通信过程中使用COB-ID 区分不同设备发出的数据内容,并且要求通信对象的接收者与报文的发送者必须具有相同的COB-ID。同时,COB-ID 用于表示报文的优先级,COB-ID 值越小,报文优先级越高。CANopen 中各个通信对象的COB-ID 分配见表1。
表1 CANopen 协议通信对象的COB-ID 分配
安全计算机平台最大支持60 个CAN 通信节点,它们共同构成一个CAN 通信网络。其中,逻辑处理单元的主系配置为整个网络的主节点,其他处理单元配置为从节点。主节点负责协调系统中各个分节点的动作。网络中所有的CAN 节点(逻辑处理单元或IO 执行单元)都采用相同的硬件设计,MCF54418 的CPU 外 连 一 个SN65HVD230D 的CAN 接口芯片,具有集成度高、不占用布板面积、体积小、功耗低等优点。
CAN 控制器采用了NXP 公司生产的MCF54418芯片内部集成的FlexCan 总线控制器,该控制器支持CAN2.0B 协议,支持基本型CAN 模式和增强型CAN 模式,具有满足高性能CAN 通信协议所要求的全部必要特性。CAN 总线驱动器SN65HVD230D是CAN 控制器和物理总线之间的接口,可以提供对总线的差动发送和接收功能,而且CAN 控制器和CAN 总线驱动器SN65HVD230D 之间直接相连,最大限度地减少了时延,提高了信号质量。
3.2.1 CANopen 节点对象字典的创建
安全计算机平台中每个CAN 节点都有一个独立的对象字典,包含通信协议对象和厂家指定协议对象。通信协议对象(Index 0x1000~0x1AFF)除了定义CANopen 协议强制要求的设备类型、错误寄存器和产品识别参数3 个对象外,还定义了每个节点的软件版本、硬件版本、时间戳COB-ID、紧急报文COB-ID、同步报文COB-ID 等对象,如表2 所示。
表2 通信协议对象
厂家指定协议对象定义了本节点的设备启动次数、设备运行时间、CPU 最大利用率、CPU 平均利用率、故障码,以及PDO 的通信参数和映射参数等对象,如表3 所示。
表3 厂家指定协议对象
3.2.2 CANopen 网络初始化流程
CAN 节点状态分为初始化状态、预操作状态、操作状态和停止状态。每个节点在上电和内部初始化后自动进入预操作状态,并向CAN 总线发送启动(boot-up)报文,处于该状态中的从节点可以进行SDO 通信,但不允许进行PDO 通信。主节点初始化完成后,通过NMT 报文通知各个从节点进入操作状态。在操作状态下的节点既可以进行SDO 通信,也可进行PDO 通信。系统运行过程中,若主节点检测到某个从节点发生故障,则通过发送NMT 报文通知故障的从节点进入停止状态,停止状态下的节点既不允许进行SDO 通信,也不允许进行PDO 通信。
3.2.3 IO 控制命令传输
安全计算机平台在正常运行过程中,逻辑处理单元和IO 执行单元之间需要进行周期性的IO 控制命令数据交互。IO 控制命令具备数据量小,实时性和安全性要求高等特点。本文采用优先级更高的PDO 对象进行IO 控制命令的传输。PDO 通信有3 种触发机制:事件触发、远程请求帧和同步触发。为了保证IO 执行单元之间的操作同步,本文采用同步触发机制。主节点周期性地向CAN 总线广播同步报文(SYNC),节点在收到同步报文后发送PDO 报文。为了保证PDO 消息的时效性,所有的节点都必须在同步窗口内发送PDO 报文,同步窗口外的报文属于无效报文;同时为了保证数据传输的完整性,安全计算机平台把PDO 报文的8 个字节数据区划分为2 个4 字节的区段,前一个区段用于存放IO 控制命令,后一个区段用于存放IO 控制命令的安全校验码,只有通过安全校验的IO 控制命令才可以被使用。
3.2.4 监控维护数据传输
安全计算机平台在正常运行过程中,IO 执行单元将实时地监控IO 设备的工作状态,并把监控信息记录在本地的对象字典中,主节点定期通过SDO 对象获取每个IO 执行单元的监控信息以及维护信息(如系统运行时间、软件版本号等),并发送给外部的维护台。
SDO 传输分为快速传输、段传输和块传输3种。为了加快传输速度,提高CAN 总线的利用率,在安全计算机平台中,针对不同类型的监控维护信息采用不同的传输方法。对于数据长度小于等于4 个字节的监控维护信息,采用快速传输的方式进行传输;对于大于4 个字节而小于0xA8 个字节的监控维护信息,采用段传输的方式进行传输;对于更大数据量的监控维护信息,则采用块传输方式进行传输。
为了验证CANopen协议在安全计算机平台通信中的可用性,实验室搭建了最大配置的运行环境进行测试,包含2 个逻辑处理单元和42 个IO 执行单元。其中,主逻辑处理单元作为CANopen 网络的主节点,每50ms 发送一次同步帧,用于同步PDO 传输;每1s 发送一次时间戳报文,为所有网络节点提供统一的时间基准;IO 执行单元每150ms 发送一次心跳报文,每500ms 发送一次检测维护消息的SDO报文,报文大小为200 字节。系统持续运行72h,实验过程中没有出现延时、数据被破坏、丢包等错误,CAN 总线的平均利用率为41.8%,最大利用率为64%,性能上完全能够满足系统要求的CAN 总线的平均利用率不超过70%的要求。
基于CANopen 协议的轨道交通安全计算机平台已在我国多个铁路车站中应用,在正式运行过程中没有出现故障,这充分说明CANopen 协议可以应用于轨道交通的信号系统中。同时,采用CANopen 协议的安全计算机平台不仅可以解决系统中各个模块之间的通信互联问题,提高整个系统通信的可靠性和实时性,还可以提高整个系统的兼容性,为系统的进一步扩展提供了更加便捷的方式。