基于CANopen协议的块SDO列车数据传输系统*
2019-02-26鲁猛杨世峰王帅斌朱萍玉
鲁猛 杨世峰 王帅斌 朱萍玉
基于CANopen协议的块SDO列车数据传输系统*
鲁猛1杨世峰2王帅斌2朱萍玉1
(1.广州大学机械与电气工程学院 2.广州南方高速铁路测量技术有限公司)
针对火车、地铁、高铁车厢间组网和数据传输的速度及稳定性问题,提出一种基于CANopen高层协议的块SDO列车数据传输系统。在大容量传输数据系统中,块SDO比加速SDO和分段SDO更高效。本文以PLC为CANopen主设备,STM32单片机为CANopen从设备;主从设备之间采用CANopen协议的块SDO模拟列车高速、大容量数据的传输。借助CAN分析仪对3种SDO的数据进行对比试验,验证了CANopen协议的块SDO列车数据传输系统的高效性,且适合用于列车高速、大容量数据的传输。
CANopen;块SDO;大容量数据
0 引言
CAN总线具有传输距离远、速度快、站点多、可控I/O多和抗干扰能力强等特点,已成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线。CANopen作为CAN总线的高层通讯协议,也是工业控制中较常用的通讯协议。Holger Zeltwanger[1]在现场总线CANopen设计与应用中提出,可将CAN总线作为列车间的通讯总线。杨伟等[2]提出将过程数据对象和服务数据应用于CANopen列车网络的方案,此方案列车间的通讯主要依靠加速SDO和PDO,在高速大容量数据传输时可能出现延迟问题。李丹[3]在CANopen协议SDO分段传输报文的研究中,提出一种传输数据更高效的CAN总线通讯方式。但分段SDO每传输完一段数据都需要进行确认,而块SDO则不需要。为此,本文提出一种基于CANopen协议的块SDO列车数据传输系统,将块SDO应用到CANopen列车数据传输中,提高列车数据传输效率。
1 CANopen协议的块SDO传输流程
块SDO传输流程主要分为写数据和读数据,在读写数据流程中又分为3个阶段:块初始化、块读写(段传输)和块读写结束。
1.1 块SDO传输写数据流程
图1 块SDO传输写数据流程
模拟列车块SDO传输写数据操作报文格式如表1所示。初始化阶段主要包括CS命令符+索引+子索引+数据的方式;通过CS命令符+数据的方式写入个块数据;同样通过CS命令符+数据的方式完成此次写块操作。
表1 块SDO传输写数据操作报文格式
1.2 块SDO传输读数据流程
块SDO传输读数据流程如图2所示。完成初始化操作后,SDO服务器不会立刻发送大量的数据给SDO客户端,当SDO客户端再次向SDO服务器发送读取数据请求报文,且SDO服务器接收到该报文后,才会发送数据给SDO客户端。每一个块发送完毕,SDO客户端确认后会发送下一个块数据,重复以上操作完成个块的发送。
模拟列车块SDO传输读数据操作报文格式如表2所示。初始化阶段主要采用CS命令符+索引+子索引+数据的方式,通过不同的CS命令符+数据确定要读取的数据数目,以此完成初始化结束操作;接着可以获取读到的数据,主要方式也是CS命令符+数据;最后通过CS命令符+数据的方式完成此次读操作。
2 车厢节点CAN控制器电路设计
2.1 CAN从节点控制电路设计
CAN从节点控制电路主要以STM32单片机为主控制电路;K1引脚用于检测和控制列车车门;K2引脚用于检测列车紧急按钮;LD1和LD2引脚用于到站指示灯。通过CAN_TX和CAN_RX引脚传输数据;通过UASRT_TX和UASRT_RX引脚驱动列车点阵屏幕显示相关信息。CAN从节点主控制电路电路如图3所示。
图2 块SDO传输读数据流程
表2 块SDO传输读操作报文格式
图3 CAN从节点单片机最小系统电路
2.2 CAN接口电路设计
CAN接口电路以TJA1050T的收发器芯片为主,该芯片负责将TTL电平转换为CAN总线上的显性和隐性电平,同时在CAN总线输出端加终端电阻,以保证列车车厢传输中总线的稳定性。CAN接口电路如图4所示。
图4 CAN接口电路