基于协议配置的通用在线诊断系统设计与应用

2021-11-06 08:21王曙光张立鹏张奕男
铁路计算机应用 2021年9期
关键词:诊断系统配置文件通信协议

李 倩,王曙光,张立鹏,张奕男

(卡斯柯信号有限公司,上海 200071)

轨道交通信号系统需要配备在线诊断系统,以对系统中各设备的运行状态进行诊断,对一些运行参数进行收集[1]。当设备出现问题时,在线诊断系统所记录的信息就成为分析或复盘的重要依据。在线诊断系统的开发通常与各个品牌的设备上的下位机软件开发同步进行[2]。而不同品牌的设备通常使用不同的通信协议及解析方法,如果其通信协议更新了,那么与之对应的在线诊断系统需要重新开发,相关的解析方法和实现也需要同步进行修改。而同一品牌的设备在进行迭代更新的过程中,有可能增加或删除通信协议的内容,从而导致在线诊断系统也要进行更新,不断迭代。如此一来,在线诊断系统的开发工作既耗时又费力,而且系统灵活性也被降低。

现有在线诊断系统主要是面向设备本身的解决方案。王琦等人[3]提出一套用于记录和分析轨道交通车辆运行及故障数据的在线诊断系统,该系统通过多功能车辆总线(MVB,Multifunction Vehicle Bus)接口、无线局域网(WLAN,Wireless Local Area Network)等方式获取车辆的运行状态信息。张雯柏等人[4]搭建了快速实现铁路信号集中监测、智能分析与故障诊断的脚本编制系统。孟晓升[5]针对CTCS2-200H 型列控车载设备,提出了采用无线传输及专家智能诊断技术,对设备故障进行定位与分析。

本文结合各诊断系统的共性[6],采用XML 文件协议配置的方法,设计了基于协议配置的通用在线诊断系统,实现对轨道交通信号系统中各设备的诊断。该系统具有较高的灵活性,能够减少故障诊断的迭代次数,节省了人力成本,有效保障轨道交通信号系统的正常运行[7]。

1 系统介绍

1.1 网络结构

在线诊断系统与设备之间的通信一般采用双网冗余通信(红网和蓝网)[8],传输层采用用户数据报协议(UDP,User Datagram Protocol)[9]。在线诊断系统的网络结构如图1 所示。

图1 在线诊断系统网络结构

1.2 系统架构

本文在多个在线诊断系统共性分析的基础上,将不同品牌设备的报文协议进行归纳和总结,同时结合轨道交通系统设备的特点,设计了基于协议配置的通用在线诊断系统(简称:通用在线诊断系统)。

在线诊断系统的架构如图2 所示,分为3 层:数据展现层、数据控制层、数据接收层。(1)数据控制层包括协议配置模块、配置文件处理模块、数据解析模块;(2)数据接收层包括数据接收与存储模块;(3)数据展现层包括个性化显示模块。在线诊断系统的通用性通过数据控制层来实现,以更加灵活地适用于不同产品的设备。因此,数据控制层的设计是通用在线诊断系统的关键技术。

图2 通用在线诊断系统架构

2 系统实现

2.1 协议配置模块

在协议配置模块中,用户可以根据实际需求进行个性化配置。配置时,用户需依据本文系统与设备的下位机之间的通信协议进行配置。配置文件包括帧类型配置文件(Frame.xml)、帧格式配置文件(Format.xml)、枚举文件(Enumerate.xml),具体如下。

(1)帧类型配置文件:配置通信协议中所有帧的帧类型及其属性,定义帧的名称、最大长度等。

(2)帧格式配置文件:配置各个帧类型所包括的字段(可以是全部字段,也可以是部分字段)的属性,在属性中对字段(和下位机的关键变量相对应)的名称、起始字节、长度,在界面中所占页数、行数、列数,以及限制属性等进行定义。

(3)枚举文件:配置某些字段值的宏定义或具体含义。例如,当某字段的值为0 时,表示灯灭;值为1 时,表示灯亮。

通用在线诊断系统使用XML 文件来定义这3 种配置文件。帧类型和帧格式是一对一的关系,即一种帧类型对应一种帧格式,那么配置n个帧类型就要配置n个帧格式。帧格式和枚举类型是一对多的关系,即1 个帧格式可以对应1 个或m个枚举类型。帧类型、帧格式和枚举类型的对应关系如图3 所示。如果通信协议的内容较简单,通用在线诊断系统支持通过人工配置或界面来修改字段属性。如果通信协议的内容较长,通用在线诊断系统支持通过Excel文件的形式修改字段属性,然后使用转换工具将Excel 文件转换成系统可读取的XML 文件。

图3 帧类型、帧格式和枚举文件的对应关系

2.2 配置文件处理模块

配置文件处理模块读取配置文件Frame.xml、Format.xml、Enumerate.xml,并分别放到3 个类对象创建的实例中。帧类型类对象定义了帧类型的ID、帧名称、帧长度等成员变量。帧格式类对象定义了帧格式的ID、对应的帧名称、字段名称、数据类型、字段的开始字节、字段所占的位数(需要按位显示时)、字段所占字节长度、字段在界面上显示的页号、字段在界面上显示的列号、字段在界面上显示的行号等成员变量。枚举文件类对象定义枚举文件的ID、枚举类型的名称、枚举值等成员变量。3 个类对象相互关联后保存在Analyse Service。通用在线诊断系统所有的报文解析都基于Analyselyse Service进行处理。

2.3 数据解析模块

通用在线诊断系统启动时先获取要接收的报文的帧类型,然后开启相应数量的线程来处理数据。其中,帧类型既可以通过用户交互来获得,也可以从配置文件中得到。当选择某种帧类型时,系统会获取对应的所有帧格式和枚举类型,存放到AnalyseService 创建的类对象。AnalyseService 为每个线程创建一个类对象。

通用在线诊断系统收到下位机发送的报文后,会根据帧类型来自动匹配不同的线程。当前线程对收到的报文进行一致性判断,当且仅当报文的循环冗余校验(CRC,Cyclic Redundancy Check)码、长度、帧类型等一致时,才会将其加入对应的线程消息队列。在加入线程消息队列前,当前线程会将报文的消息头(冗余层、信号层等)、消息尾(CRC码等)过滤,并将过滤后的报文加入线程消息队列。通用在线诊断系统对报文的解析过程如图4 所示。在多线程任务中,为了保证数据的安全性和一致性,消息队列需要进行加锁处理。

图4 通用在线诊断系统对报文的解析过程

通用在线诊断系统从线程消息队列中取出数据,并对AnalyseService的数组FormatArray 进行赋值。FormatArray 定义了帧类型、界面显示的帧名称、字段名称、每个字段的起始字节数、每个字段的格式、每个字段在界面中显示的页、每个字段在界面中显示的行、每个字段在界面中显示的列数,以及当字段为数值时,其值范围的最大值和最小值等。通用在线诊断系统依次读取每个数据包中的数据,并存储至字符串AnalysedReturnResult,同时根据字段类型和字段值范围,对相应的字段值进行判断。如果当前字段值在范围之外,通用在线诊断系统使用Map 类型的变量对该字段进行标记。

2.4 数据接收与存储模块

为了保证数据的正确性与可靠性,数据接收模块采用Select 模式来接收数据。Select 模式采用多路复用的机制,一个进程可以监视一个或多个描述符(SocketID),将这些描述符放到一个表中。当检测到表中的某个描述符读就绪时,就立即返回并告诉内核去读取报文,故可以非阻塞地接收一个或多个系统设备周期性发出的网络报文。

本文系统将数据持久化存储到本地硬盘上,并把压缩后的数据保存到日志文件。因为在线诊断系统需要记录大量的数据,所以通用在线诊断系统解决了以下问题。

(1)在线诊断系统接收网络数据量大。设备中的下位机周期性地(最短周期为100 ms)发送报文,且发送的数据量大,这会引起数据丢失、文件损坏等问题,因此下位机发出每个数据包时,都使用Deflate 算法进行数据压缩[10]。通用在线诊断系统收到下位机发送的报文后,先采用Inflate 算法进行解压,解析完成后再使用Deflate 算法对数据进行压缩,然后保存为日志文件存储到本地。这种处理方式不仅减轻了网络通信的传输压力,提高了传输效率,而且节省了本地硬盘的存储空间。

(2)在线诊断系统本地存储报文数据量大。由于在线诊断系统需要长期无间断地在地铁现场运行,以记录设备信息。因此,通用在线诊断系统采用定期删除存储数据的策略,根据现场具体情况和设备的需要,设置定期策略,例如每天1:00(24 h 制)删除一个月以前的数据。

2.5 个性化显示模块

当收到下位机设备发送的报文,且经过2.3 节的数据处理后,通用在线诊断系统根据用户选择的页数m_page 和帧类型m_frame 进入显示模块。在这个模块中,通用在线诊断系统调用AnalyseService 类的DoAnalyse 函数。此函数根据当前数据包报文中的数值来设置当前页m_page 各行各列的字段值。与之对应的是数组FormatArray的各个变量值,然后DoAnalyse 返回字符串AnalysedReturnResult。当AnalysedReturnResult 不为空时,个性化显示模块将字符串的内容显示到通用在线诊断系统的界面上。个性化显示模块处理流程如图5 所示。其中,个性化显示模块支持界面的页、行、列等属性的选择和修改,以及对部分字段显示项的设置(配置文件Format.xml 只配置相应位置的字段),以使字段显示到相应的位置。

图5 个性化显示模块处理流程

3 系统应用

3.1 应用场景

通用在线诊断系统应用场景有两大类。

(1)地铁现场。目前,通用在线诊断系统已随列车自动控制系统产品被广泛应用于多个地铁项目中,如上海某地铁线、北京某地铁线等。当通用在线诊断系统运行在工控机时,会随着工控机的启动而自动运行,并根据地铁现场的需要,按所配置的通信协议来接收指定帧类型的报文。通用在线诊断系统的运行界面如图6所示,能够清晰地显示系统中各设备的运行情况。当发生故障时,工作人员只需要拷贝相关运行日志文件,使用通用在线诊断系统来分析问题。其中,通用在线诊断系统的分析方法是根据故障时间段,锁定相关数据文件,根据关键变量进行搜索,查找相关联的关键变量值的变化,协助工作人员查找故障原因。

图6 通用在线诊断系统运行界面

(2)系统研发或测试。该应用场景的主要用户是研发或测试人员。由于下位机软件不方便打印更多的日志,通用在线诊断系统可以使研发或测试人员方便地对系统运行时各字段值(关键变量)进行诊断与分析,以辅助开发或测试,提高了工作效率。

3.2 通信协议模块配置

通用在线诊断系统在运行前需要配置通信协议。帧类型、帧格式、枚举文件这3 种配置文件的配置可以通过系统来进行(配置界面如图7~图9 所示),也可以通过XML 文件进行配置,或者在Excel 中配置好后转换成XML 文件。

图7 帧类型配置界面

图8 帧格式文件配置界面

图9 枚举类型文件配置界面

4 结束语

基于协议配置的通用在线诊断系统实现了对不同设备的在线诊断,节省了开发时间,提高了开发效率,保障了开发质量,减少系统及相关产品的迭代次数,降低了开发成本。同时,通用在线诊断系统也有效地分析与诊断轨道交通信号系统设备的运行状态,为设备故障时的分析与复盘提供了依据,大大提高了维护保障效率与故障处理速度护保障效率与故障处理速度[11]。目前,基于协议配置的通用在线诊断系统已在上海、北京等多个地铁现场稳定运行,不足之处是还未实现批量搜索功能。下一步,将从固定日期的数据文件中根据关键字,批量生成符合用户条件的分析报告等方向进行研究。

猜你喜欢
诊断系统配置文件通信协议
基于Docker的实时数据处理系统配置文件管理软件的设计与实现
从Windows 10中删除所有网络配置文件
用软件处理Windows沙盒配置文件
互不干涉混用Chromium Edge
欧克诊断仪推出行业高配极致双模诊断系统
断路器检测系统与诊断系统研究
数控机床故障诊断系统的设计与实现
奖状训练器飞行管理系统研究
基于R8C的汽车OBD通用故障诊断仪设计
SIP协议系统模型的形式化研究