陈吉余 何红光
(卡斯柯信号有限公司 上海市 200071)
参数追踪功能是利用电务维修机SDM 利用向联锁下位机IPS 发送请求的办法,来获取联锁内部的所有参与运算的变量状态值,并通过可视化的波形在电务维修机上直观的呈现,具备实时监测联锁内部所有参数的功能,同时还可以将参数跟踪过程中的状态记录在特定的日志文件中。在联锁系统软件调试,测试,联锁数据制作发布以及现场故障排查时,具有越来越广泛的应用,并发挥越来越重要的作用。
在联锁数据制作和发布,以及联锁下位机程序开发的过程中,黑盒的联锁状态不利于联锁系统的维护和故障诊断。原因在于,用户无法知道联锁系统内部运行的每个参数状态是否正确。中间发生任何的运算错误,都可能会影响联锁系统的输出。而错误的输出,将导致联锁操作机上形成虚假的表示状态,从而造成操作员错误理解,或者按照错误的规则操作6502 电路设备,均存在一定的可能性导致安全事故的发生或潜在风险,从而对铁路运算造成一定的影响。同时,当设备出现故障时,为了诊断故障的根本原因,每个参数的内部运算状态对于快速定位故障和诊断至关重要。
如何来实现在线的查看联锁系统内部参数状态,从而避免运算时发生的错误,在联锁下位机软件的发布测试过程中,以及在联锁数据的制作发布过程中,成了一个不可或缺的,必须实现的功能,这将很大程度帮助系统软件功能调试,查找并纠正开发过程中的产生的功能错误,甚至在现场故障排查过程中,有时候为了排查为什么会产生错误的输出的时候,也可以利用参数追踪进行抽丝剥茧的一层一层追踪,最后定位到底是输入状态错误,还是运算规则错误。
一套完整的联锁铁路信号联锁系统,有联锁下位机IPS,联锁操作机MMI,电务维修机SDM。联锁下位机IPS作为逻辑运算系统,周期性的采集获取联锁各设备输入的信息,并通过逻辑运算得到输出码位信息发送给联锁操作机和外部电路设备。对于外界,联锁下位机是相对封闭的黑盒系统,内部运算的所有的码位状态,对于用户是无法直接查看的见的,鉴于此,由联锁电务维修机SDM 对联锁下位机IPS(双系)进行查询和访问,保证能对联锁的采集参数、中间变量以及逻辑运算结果准确实时查看和记录。联锁系统结构图见图1。
图1: 联锁系统结构图
联锁机参与运算的输入的信息包括联锁继电器采集码位,联锁操作机的控制命令,联锁和相邻车站联锁系统的通信码位,以及联锁系统和外部设备的传输的设备状态码位等。输出信息则包括联锁系统发送给联锁操作机和电务维修机的站场表示码位,比如道岔的位置信息,以及发送给继电器电路和室外设备的驱动操作信息等,如道岔的扳动方向命令。相关数据信息见图2。
图2: 联锁输入输出参数数据流图
联锁机IPS 和电务维修机交互数据结构定义:
在MSG_STRUCT 中由BMsgType 定义消息类型,BSubMsgType 定义消息子类型。
利用以参数追踪的办法确认联锁下位机IPS 运行状态,可以实时在线的查看联锁系统内部的参数值,通过联锁逻辑的可视化,可以在线查看联锁逻辑的原始表达式,并且可以查看联锁逻辑运算过程中中间变量的逻辑值,从而达到诊断联锁内部状态的功能。具体包括FSFB2 输入参数,VSL 输入变量输入参数,COM 输入变量,系统变量,自保参数,时间参数,一般参数,DI 采集参数,SBO 驱动参数等一切联锁系统内部的参数。
基于参数追踪的联锁联锁下位机运行方法,包括以下步骤。
(1)SDM 发送请求特定参数追踪的消息给IPS, 消息中包括需要校验的参数名称以及参数个数,以及是查询联锁A机还是联锁B 机或双系中某参数信息。如果该参数是通过布尔逻辑运算得到的值,那么运算的中间变量的名称也可以一并下发。
(2)IPS 接收到SDM 发送的参数追踪请求消息,读出需要追踪的参数名称以及参数个数,同时解析出需追踪的参数获取响应运行状态的参数状态值,并将参数值组成定义的数据帧发送给电务维修机SDM。
(3)SDM 需要周期性不间断的下发参数追踪请求命令。IPS 则根据每一包的SDM 的请求包回复一次对应参数的值。
(4)SDM 接收到IPS 的发送的参数值时,将参数值和参数名称动态显示在对应的SDM 界面上。参数状态要能图形化显示其高低电平,达到直观的显示效果。
(5)SDM 接收到IPS 的发送的参数值时,将参数状态量记录在日志文件里,以供日后查看。对于指定追踪的参数值,用动态图形化的办法显示参数值。对于有布尔逻辑运算的参数值,其最终值用动态图形化的办法显示参数值,并且在界面窗口上显示其布尔逻辑运算式。而中间运算过程中的参数值,以及运算的最终值,仅以窗口的形式显示其当前周期的值。
(6)在电务维修机SDM 与联锁机IPS 之间的通信断开或者是SDM 请求包停止发送的时候,IPS 将停止发送对应的参数值。
具体交互过程见图3。
图3: 基于参数追踪的联锁下位机运行状态的程序流程
程序流程在执行的过程中,需要考虑以下因素:
(1)程序容量因素。为了降低联锁下位机的负载,联锁下位机正常状态下,不会发送所有的运算参数状态给电务维修机。因此,在执行参数追踪的时候,为了保证联锁下位机运行正常。必须有容量限制。电务维修机一方面把需要追踪的参数的地址发送给联锁下位机,另一方面,必须明确告诉联锁下位机需要追踪的数量。如超过限制,联锁下位机不发送超出部分的参数值状态给电务维修机。
(2)参数完整性因素。一方面,追踪的联锁参数需要在联锁下位机系统以外的输入和输出参数。另一方面,对于运算过程中作为中间变量的参数状态,也必须要能够追踪。因此,参数追踪的参数范围必须包括但不限于采集码位,驱动码位,站场表示码位,站场控制码位,以及参与中间运算的逻辑变量状态。才能够全方位的反映联锁系统的运行状态。
(3)纠错机制。联锁下位机系统在发送追踪参数状态时,对联锁下位机系统系统,是一种负荷的加大。因此非必要的时候,需要有让联锁下位机具有自动发送追踪参数状态的功能。电务维修机必须不间断的周期性的发送参数追踪请求消息。每一个联锁下位机接收到一包参数追踪的请求消息,才予以回复一次对应的参数状态值。一旦SDM 与IPS 之间的通信断开或者SDM 请求包停止发送时,对应的联锁下位机将停止发送对应的参数状态值。
(4)利用电务维修机SDM 可控因素。电务维修机在与联锁下位机通信状态良好的情况下,可以随时暂停,开始,删除,增加需要追踪的参数。
(5)显示记录方式因素。所有追踪的目标参数的高低电平值,均需要直观的显示最近10 个周期,最大60 个周期的图形化显示的状态值。为了显示其联锁关系,需要将有布尔逻辑运算的参数所对应的布尔逻辑运算式展示在电务维修机界面上。同时,中间运算过程中的参数值以及运算的最终值,以窗口的形式显示其当前周期的值。于此同时,所有追踪的参数,以及显示的中间运算过程中的参数的中间变量状态值在日志记录时,均必须满足,变化时记录全体参数状态值,当参数值没有变化时,每隔10 分钟记录仪器全体参数的状态值的要求,以便后续人员查看。数据交互示意图见图4。
图4: 数据流交互示意图
具体,详细查询消息定义如下:
(1)站号StationNO,具体某个特定车站的编号,2 个字节,取值为0~65535;
针对实验班和控制班的前后测成绩进行配对样本t检验,数据表明:1)两次测试的听力成绩都有显著性差异(p=0.015<0.05 & p=0.029<0.05),实验组两次测试的均值差MD=5.690,控制组两次测试的均值差MD=4.410;2)前后两次测验的口语成绩只有实验组的有显著差异(p=0.008<0.05),实验组前后测的口语成绩均值差MD=8.829,控制组前后测的口语成绩均值差MD=2.526(如表2、表3所示)。
(2)消息类型BMsgType:MSGTYPE_DIAGNOSE,1个字节,诊断信息;
(3)消息子类型BMsgType:SUBMSGTYPE_ENQUIRY,1 个字节,请求参数消息;
(4)数据域长度usDataLen:2 字节,数据域部分长度;
(5)数据域sData:具体消息内容,[HostId] [AorB] [变量地址1] [变量地址2] […];其中HostID 用于标识电务维修机,AorB 标识请求联锁机IPSA 或IPSB 中参数标识,A机=1,B 机=2,AB 机=3;
详细答复消息定义如下:
(1)站号StationNO,具体某个特定车站的编号,2 个字节,取值为0~65535;
(2)消息类型BMsgType:MSGTYPE_DIAGNOSE,1个字节,诊断信息;
(3)消息子类型BMsgType:SUBMSGTYPE_ RESPONSE,1 个字节,答复参数请求;
(4)数据域长度usDataLen:2 字节,数据域部分长度;
(5)数据域sData:具体消息内容:前4 字节为联锁机运行周期号;后续字节按照 [HostId] [变量地址1][参数变量值1][变量地址2][参数变量值2][…];其中,周期号为了便于在维修机界面显示具体运算周期号,HostID 用于标识本机是联锁机IPSA 或IPSB;
程序启动初始化时,维修机需要读取车站数据,即读取车站涉及的所有参数,并且将有逻辑表达式的参数所具备的逻辑表达式也读入程序内部,显示在界面上便于操作者选择具体的参数,并支持模糊搜索关键字功能。而中间运算过程中的参数值,以及运算的最终值,仅以窗口的形式显示其当前周期的值。
如图5 所示,双击列表中任何参数,该参数被加入追踪参数队列中。用图形化的办法在界面上显示所追踪参数的高低电平值。界面上直观显示最近10 个周期,最大60 个周期的参数状态。
图5: 联锁维修机参数追踪显示页面
对有逻辑表达式的参数,点击“表达式”,可以显示该参数的内部变量当前周期的值。
软件界面提供增删,搜索,重置追踪参数等功能,方便用户使用。同时所有的联锁追踪的参数和中间变量的值,均需要在日志文件DBRecord 中予以记录,记录任何一个参数的状态值发生变化,则所有参数的状态值,以及所有参数的追踪的地址,参数名予以记录。所有参数值均未发生变化时,每十分钟需要将所有参数的状态值,以及所有参数的追踪的地址,参数名予以记录:
2020-11-24 15:15:14 Stno=12345,A,Circle = 1 1-7DGGDJJT1 1 [D28A4A1D] [Add]
2020-11-24 15:15:44 Stno = 12345,A,Circle = 23,SYSAONLINE 1 [EFAD730B] [Add]
2020-11-24 15:15:48 Stno = 12345,A,Circle = 38,ONLINESBO 1 [5BE6DE03] [Add]
2020-11-24 15:18:50 Stno = 12345,A,Circle = 1,SYSAONLINE 1 [EFAD730B] [Add]
2020-11-24 15:18:51 Stno = 12345,A,Circle = 7,SYSA-DI 1 [1D1C0023] [Add]
可以看到,日志中记录了世间参数的列表,名称,状态值,参数地址、以及记录本次追踪是来自I 联锁A 机还是联锁B机。因为联锁A 机和联锁B 机采用独立运算后双系同步方式,存在因通信抖动造成双系计算输出不一致,参数状态值存在差异,这就是很多时候造成故障的原因之一,参数追踪的功能有助于定位该类型故障。
基于参数追踪的联锁系统下位机运行状态监测的方法,以既有的联锁系统为基础,没有增加任何硬件的成本,完成了联锁系统内部的参数查询功能。使用人员可以随时全方位的深入了解联锁系统内部的运算状态,有效的克服了以往联锁的黑盒状态下,无法探知联锁系统内部运算状态的缺点。有效的提高了现场工作人员的维护效率,使其能动态的掌握联锁系统内部的运行状态。