吕向东,姜国华,王怀江
(1.中国铁路郑州局集团有限公司电务部,郑州 450000;2.北京全路通信信号研究设计院集团有限公司,北京 100070;3.北京市高速铁路运行控制系统工程技术研究中心,北京 100070)
CTCS3-300T车载运行记录主要存储于标准JRU及各单元小黑盒中,每个小黑盒内部有1片256 kB EEPROM循环存储记录。列车发生故障回库后,路局电务维护人员使用笔记本通过串口下载记录数据,即使拿到数据,对数据的分析依靠经验,诊断结果具有局限性,维护效率低、成本高。针对以上问题,开发一套基于CTCS3-300T车载设备智能诊断系统。
车载设备智能系统总体结构如图1所示,系统由3部分组成,分别是车载诊断记录单元(DRU)、传输子系统、数据分析子系统。其中,DRU用于车载诊断记录数据的安全采集和加密传输。传输子系统采用列控设备动态监测系统(DMS),实现数据车地无线传输。数据分析子系统对接收数据进行分类存储、智能分析,将分析结果持久化到数据库中。
本文主要针对数据分析子系统的软件架构进行设计,整体架构分为3层:展现层、业务层、持久层,如图2所示。软件由前端、后台、通信模块、AElog分析模块、总线分析模块、应答器数据分析模块、DRU通信模块共计7个模块组成,模块划分如图3所示。
图2 软件整体架构层次Fig.2 Overall architecture layers of the software
图3 系统模块划分图Fig.3 System module division diagram
考虑到C/S架构开发的分布式管理系统安装运行和升级服务比较复杂,不利于系统的普及和推广,本系统采用B/S架构,将服务器划分为Web服务器和数据库服务器,客户端不需要安装应用软件,只需在浏览器输入Web服务器地址即可登录操作。Web服务器可以实现逻辑业务解析,将Web服务处理和数据处理独立分割,提高系统可移植性;系统升级可做到一次部署全部升级,客户端零维护,可扩展性大大提高。
系统支持2 000辆车同时在线,支持多个客户端同时发起分析数据请求,后台通过给每个请求定义一个唯一ID来标识进行,并交由线程池处理。例如当接收到分析AElog数据的请求时,后台先将用户上传的文件根据车号、端号、日期、A/B系等信息创建路径并存储,存储成功后将文件路径发送给AElog解析模块,等待解析模块解析完成并返回解析结果时,后台通过ID来找到对应的请求,并构造JSON对象,返回给前端进行显示。处理流程如图4所示。
当DRU检测到ATP上电后,会自动读取AElog文件,将文件压缩后传输给通信模块,通信模块完成解压并分类存储后,由后台调用AElog分析模块进行分析,同时将分析结果返回给前端进行显示。整个数据处理流程如图5所示。后台分析出故障后,通过WebSocket主动推送给前端,前端对推送结果进行解析,通过AJAX完成局部更新,将对应故障模块高亮显示,并在相应窗口发出故障警告,如图6所示。
图4 并发处理流程Fig.4 Concurrent processing flow
图5 故障数据处理流程Fig.5 Fault data processing flow
本系统后台模块和各个分析模块间各建立一个Socket连接,后台采用Netty框架去维护这个连接。
1)Netty是一款异步的事件驱动的网络应用程序框架,支持快速开发可维护、高性能、面向协议的服务器和客户端,将应用程序逻辑和网络层解耦,避免直接使用底层的API,降低了网络编程的复杂性。
2)当检测到连接中断时,后台能够自动发起重连,保证连接持续性。
图6 WebSocket推送和AJAX局部更新效果Fig.6 WebSocket push and AJAX partial update effects
3)后台模块和分析模块只关注于自身业务逻辑的开发,而不必过多关注通信接口开发,降低了各个模块间的耦合性。
4)通信数据以JSON(JavaScript 对象表示法)表示,JSON是轻量级的文本数据交换格式,独立于语言和平台,对JSON的使用,简化了通信协议的开发,通信接口开发进一步简化。
本系统采用MVC架构设计模式,面向接口编程,业务逻辑层独立,便于后期业务扩展。系统运行稳定,操作使用方便,通过配置文件application.properties和Java自身跨平台的特点,系统可部署于Linux和Windows操作系统上。在功能层面,系统提供对车载ATP记录数据的全面监控和实时分析,针对具体故障根据案例库给出处理措施,是列控车载设备的智能化运行维护“专家”系统。经验证,本系统架构适用于高铁ATP运行记录数据的监控和分析。