杨 伟 刘婷婷
(中国南车集团南京浦镇车辆有限公司,210031,南京∥第一作者,工程师)
过程数据对象和服务数据对象通信在CANopen列车网络中的应用
杨 伟 刘婷婷
(中国南车集团南京浦镇车辆有限公司,210031,南京∥第一作者,工程师)
CANopen因其实时性高、成本低等优势成为目前列车网络的主流协议。提出了利用PDO(过程数据对象)和SDO(服务数据对象)的特殊通信方式,解决CANopen协议在列车网络应用中局限性的方案。可单独使用PDO或SDO的特殊通信方式以满足需求,也可以两种方式配合使用来满足更复杂的功能需求,这样可以有效提高CANopen列车网络的灵活性和可靠性。
CANopen;列车网络;通信
First-author'saddressCSR Nanjing Puzhen Co.,Ltd.,210031,Nanjing,China
列车网络系统控制(TCMS)是现代化轨道交通列车尤其是电动车组的控制神经中枢,在世界轨道交通行业的应用越来越广泛。
CAN(控制器局域网)是20世纪80年代初,德国BOSCH公司为现代汽车应用推出的一种多主机局部网,具有成本低、可靠性高、实时性和抗干扰能力强等特点,已被应用于工业自动化、交通工具、医疗仪器、环境控制等众多领域[2]。CANopen作为城市轨道交通领域中的主流通信协议,是一种基于CAN,在应用层上定义的通信协议,协议中定义了完备的多种类型的通信方式,如过程数据对象(Process Data Object,简为PDO)、服务数据对象(Service Data Object,简为SDO)、心跳(Heartbeat)、紧急报文(EMCY)等,而在列车网络通信中起主要作用且应用最频繁的就是PDO通信和SDO Expedited(SDO通信的一种主要方式)通信。但在CANopen列车网络的实际应用中,仅使用这些基本通信方式是存在局限性的,不足以满足用户的所有需求,这时就需要利用PDO和SDO的一些特殊用法,如CPU-CPU通信(一种特殊的PDO通信)和SDO Block通信,来满足项目的复杂功能或要求,以完善和提高CANopen列车网络的灵活性和可靠性。
列车通信网络中数据传输的可靠性、实时性、准确性非常重要[3]。而PDO因其实时性强、传输效率高,因此主要用于列车主控制器(CANopen Master,下文中均用VTCU表示)和网络中的牵引、制动等子系统(CANopen Slave)进行过程数据、状态数据及部分控制命令的传输。每个PDO可以传输8个字节的用户数据。
SDO Expedited传输方式主要用来传输服务数据,一般只用于在CANopen网络初始化的时候由CANopen Master设备对网络中的CANopen Slave设备进行通信参数配置,和读取CANopen Slave的软硬件版本号。每次请求或响应只能传输4个字节的有效数据,效率较低,不用于大数据量的传输。
典型的动车编组为6节车辆,由两个单元组成,每单元2节车辆[4],如图1所示。在CANopen列车网络中,通常设置两个互为冗余的主控制器
(VTCU,Vehicle Train Control Unit)。正常情况下只有C1车的VTCU为强主并接收所有子系统的数据和向子系统发送命令,而C6车的VTCU为弱主且只接收子系统的数据而不发送数据给子系统。当C1车VTCU故障时,C6车自动接替C1车成为强主,以保证列车网络的正常运行。VTCU与网络中所有子系统之间通过PDO进行过程数据的通信,通过SDO进行服务数据的通信。
图1 6节编组列车网络架构
然而在CANopen网络的实际应用中,仅使用PDO来传输过程数据而SDO Expedited仅用来传输服务数据并不能满足某些复杂功能的要求,下面将结合具体示例进行说明。
2.1 维护辅助的局限性与CPU-CPU通信的解决方案
目前的业主都希望将尽可能多的列车维护操作集成在列车网络中,因为列车网络的一个重要功能就是维护辅助。比如列车运营过程中的大部分重要参数(列车运行时间、运行里程、门参数等)都要通过TCMS维护软件连接在任意一个VTCU上进行设置,然后转发给相应的子系统。
而对于常用的通信方式存在这样的局限性:弱主VTCU只能接收子系统的数据而不能给子系统发送数据。因此,如果维护人员连接在弱主VTCU上进行相关的维护操作就不能成功,所设置的参数仅是保存在弱主VTCU中而已,却不能发送到需要的子系统中(如司机显示器,门控器等),这就导致列车网络的维护辅助功能大打折扣或者增加了业主的维护成本和难度。因此解决这个问题对于主机厂而言是十分必要和重要的.
为了使维护操作在弱主VTCU上也能正常实现功能,就需要将弱主收到的设置和参数通过某种方式发送给强主VTCU,由强主VTCU向需要的子系统发送。这里就可以用CPU-CPU通信来解决。CPU-CPU通信只存在于两个互为冗余的VTCU之间,是一种特殊的PDO方式,一次最多可以发送512个字节,相当于64个普通PDO。如果维护人员连接的VTCU是弱主,则该VTCU将维护人员设置的参数通过CPU-CPU通信发送给强主VTCU,强主将收到的参数发送给指定的子系统,完美实现列车网络的维护辅助功能。
深圳地铁4号线二期车辆工程项目中CPUCPU通信实现的代码如图2所示,由一个接收模块“CAN_CPU_CPU_RCV”和发送模块“CAN_CPU_ CPU_TRM”控制。其中本地VTCU的数据放在“g Master_t”中通过发送模块发送给远端VTCU,而远端VTCU的数据通过接收模块接收下来后放在“gSlave_t”中,按需使用。
图2 CPU-CPU实现代码
在CANopen列车网络的应用中,CPU-CPU通信除了在维护辅助方面的作用,所有需要在两个VTCU之间进行实时同步(比如列车运行时间、运行里程、功率损耗等)的需求,也可以通过CPU-CPU通信实现,在两个VTCU之间进行数据的实时对比
分析,根据具体要求可选取两者间的大值或小值。
2.2 操作辅助的局限性与SDOBlock通信的解决方案
列车网络的另一个重要功能就是操作辅助,主要通过列车上的司机室显示屏DDU(Driver Display Unit)承担,用于显示列车及重要子系统的运行状态和故障信息等。随着列车网络的发展和用户需求的不断增加,DDU上需要显示的信息越来越多,甚至增加了部分维护辅助的功能,比如信号校对、故障数据记录等功能,这导致VTCU需要发送给DDU的过程数据量非常大。
而常用CANopen数据通信方式存在另一个局限性:一个CANopen子系统能接收的PDO上限为32个。如果VTCU发送给DDU的数据大于32个PDO,就会导致多余的数据无法送达DDU,导致列车操作辅助的功能缺失,对主机厂而言必须解决这个重要的问题。
此时就需要用其他途径来发送额外的数据,前面提到的SDO Expedited传输方式由于传输效率低下,并不适合担当这个重任,而SDO Block通信则可以解决该难题。SDO Block通信是一种特殊的SDO通信。SDO Expedited方式与SDO Block的主要区别在于SDO Expedited一次只能传输4个字节的数据,如图3所示。
图3 SDO Expedited传输
SDO Block一次能传输最多127个数据段,每个数据段里面可以包含7个字节的数据,因此SDO Block通信一次最多可以传输127×7=889个字节的数据,如图4所示。这样在传输很大数量的数据时,SDO Block通信的传输速度远高于SDO Expedited,其效率更高。
图4 SDO Block传输
深圳地铁4号线二期车辆工程项目的SDO Block通信实现的代码如图5所示,将需要通过SDO发送到DDU的数据放在数据集gDDU_SDO_t中,通过L2_CAN2链路发送给节点地址为13的DDU,
这些SDO数据的对象索引为16#2050。因此在CANopen列车网络中,如果某节点所需的数据量大于32个PDO,使用SDO Block通信方式来发送多余的数据是一个切实可行且效率很高的解决方案。
图5 SDO Block实现代码
2.3 SDOBlock和CPU-CPU的结合使用
现在主流的地铁信号系统ATC(列车自动控制)系统与列车网络的接口为RS485,如南京地铁1号线、深圳地铁4号线等,所以对于CANopen列车网络来说就需要一个RS485/CAN的网关在两者之间转发数据。
以深圳地铁4号线二期车辆工程项目为例,供应商只提供不可编程的黑匣子网关。对于网关与VTCU之间的通信,其只提供1个PDO用于发送通知信号,而大量的用户数据通信只能通过开放的SDO通道进行收发。
对于这个局限性,解决方案就是使用前面提到的SDO Block通信。完整的数据传输流程如图6所示,通过仅有的一个通知PDO来告知网关准备好发送串行数据或者告知VTCU有新的串行数据收到,然后所有的串行数据都通过SDO Block通信的方式,由VTCU发送给网关,再由网关转发给串行链路上的ATC;ATC将串行数据发送给网关,由网关转发给VTCU,具体实现方法与2.2节所述一致。
图6 串行数据传输流程
在利用SDO Block通信解决了网关与VTCU之间数据传递的问题后,仍存在另一个问题,就是在CANopen网络中,只有强主VTCU能发起与子系统之间SDO通信的请求,而弱主VTCU始终处于监听状态,不能发送SDO通信请求。这就导致一个问题,只有强主能与ATC系统进行数据收发,而弱主收不到任何ATC的信息。根据实际项目的要求,两个VTCU中记录的数据必须是完全一致的,而由于SDO点对点通信的特殊性,导致弱主VTCU无法获取ATC系统的任何信息,这样就会出现两个VTCU中记录数据不一致的问题,而这是地铁业主不能接受的情况。
解决这个问题的方案就是结合CPU/CPU通信,将强主VTCU接收到的ATC系统的所有信息实时转发给弱主(实现方法参见2.1节所述),使得两个VTCU中的信息一致,完美解决这个问题。
CANopen因其实时性高,成本低等优势成为目前列车网络的主流协议。而在实际项目中,用户的需求日益丰富和复杂,应根据具体的网络架构和用户需求,充分、合理且灵活地应用CANopen网络中PDO和SDO的各种通信方式,为完善和扩充CANopen列车网络的可靠性、可用性提供强有力的保障。
[1] 常振臣,牛得田,王立德,等.列车通信网络研究现状及展望[J].电力机车与城轨车辆,2005(3):5.
[2] 高青松,黄越群,陈旭文,等.基于CAN总线的列车无线同步控制数据采集系统[J].计算机测量与控制,2008,16(3):333.
[3] 王树宾.动车组列车通信网络及其可靠性设计[J].铁道车辆,2007,45(10):20.
[4] 陈美霞,杨吟飞,赵威.CAN总线在列车综合管理系统中的应用[J].数据采集与处理,2008(23):231.
[5] 程宁子,李耀华,张瑞华,等.基于CANopen协议的城市轨道交通直线电机车辆通信网络研究与实现[J].城市轨道交通研究,2012(9):67.
Application of PDO and SDO in CANopen Train Network
Yang Wei,Liu Tingting
CANopen has become the mainstream protocolin train network because of its advantages in real-time application and low cost.A special process data object(PDO)and service data object(SDO)communication scheme is proposed to solve the limitations of CANopen protocol in train network applications.This special communication means of PDO and SDO can be used separately and together to meet complicated demands,thus the flexibility and reliability of CANopen train networkcan be effectively improved.
CANopen;train network;communication
U 285.4+1
2012-10-10)