基于布尔代数的通用联锁逻辑生成方法
2021-07-08杨平,谢林
杨 平,谢 林
随着计算机联锁的广泛应用,在面临大规模的车站开通时,提供一种通用联锁逻辑的生成方法显得尤为重要。目前,自动生成联锁逻辑的方式多数都采用高级语言来实现,虽然实现了自动化,但是对信号开发人员来说要求很高,不仅要熟悉高级语言编程方法,又要理解联锁信号逻辑,二者缺一不可,否则在开发的过程中就有可能出现潜在的安全隐患。
针对上述问题,本文提供一种自动生成车站通用联锁逻辑的搜索方法,将联锁信号逻辑与软件编程分离开,由信号人员根据站场特点,采用自定义的搜索语言来描述通用联锁逻辑,软件只需按照通用方法的搜索原则来执行搜索,无需考虑信号逻辑,以此来达到联锁逻辑生成的目的。
1 整体架构分析
通用联锁逻辑生成整体架构见图1。本文结合计算机联锁技术条件,从数据通用处理、通用联锁逻辑搜索、参数过滤和通用联锁逻辑生成4个方面展开研究。首先根据站场特点,定义搜索方法库和搜索原则,由信号人员根据定义的搜索方法库编写通用联锁搜索规则,确定通用搜索逻辑;其次,根据实际站场,读取站场数据,分析数据特征,为每个站场设备生成数据模块,形成站场型数据结构;最后,利用由自定义语法编写的、符合所有站场要求的通用联锁逻辑作为具体的搜索顺序,根据该搜索顺序执行搜索程序,得到若干条搜索路径,并过滤掉搜索路径中不符合要求的站场设备,得到最终的搜索结果,利用该结果生成若干条分支,将分支进行组合,生成整个支路的通用联锁逻辑[1−2]。
图1 通用联锁逻辑生成整体架构
2 通用联锁逻辑
2.1 数据通用处理
数据通用处理用于分解由自定义语法编写的符合所有站场的通用联锁逻辑模板,得到符合特定站场的具体搜索方法;结合特定的站场数据,如站场的信号机、道岔、区段等元素的属性,前后连接关系等数据信息,为站场中的信号机、道岔、区段等设备生成对应的数据结构,并将设备拼接成站场形状,生成站场型数据结构。
2.1.1 站场型数据结构
结合项目具体的站型,根据每个站的特点,先完成站场拓扑的描述,形成站场数据,然后为每个站场每个元素生成对应的数据结构,并将其按照站场的形式拼接成站场型数据结构。某站场简化站场型数据结构见图2。为每个道岔设备、信号机设备和区段设备定义一个数据结构,每个结构包含通用数据部分、上行指针场(prev)、下行指针场(next);由于道岔设备可以走反位,道岔数据结构增加定义一个反位指针场(rvs)。
图2 站场型数据结构
2.1.2 通用布尔代数语法解析
通用布尔代数语法文件采用通用搜索方法[<关键字过滤>参数]的形式定义了通用站场形状和逻辑的相关抽象信息,联锁在生成具体的站场布尔代数逻辑时,对通用布尔代数语法文件进行解析,生成每条语法的搜索方式。通用布尔代数语法解析过程见图3。
图3 通用布尔代数语法解析
2.2 通用联锁逻辑搜索方法
根据通用布尔代数语法解析结果,结合具体的站场数据,识别每条规则包含的所有搜索方法,为每一种搜索方法生成若干条搜索路径,例如:以某信号机为始端的进路可能存在多条,最后就会生成多条路径。通用逻辑搜索包含的方法如下[3]。
1)相关进路搜索:用于搜索每条符合要求的进路或者进路上的区段、道岔(包括防护道岔和带动道岔)及信号机设备。
2)相关拓扑搜索:依据生成的站场型数据结构,按照信号设备在拓扑结构上的连接关系进行搜索。
以图4所示站场为例,搜索ⅠAG的相邻设备,可以用拓扑搜索,得到ⅠAG旁边的信号机X或者两旁的区段XJG和1DG。
图4 拓扑方向搜索
由于ⅠAG是没有方向的,搜索时,只能往左或者往右搜索,如果想搜索信号机的外方第一区段,根据图4所示信号X和SⅠ方向不一致,显然采用固定往左或者往右的形式来搜索不通用,不能实现搜索目的。如果信号设备本身带方向,可以定义一种带方向的拓扑搜索,结合设备本身的方向,来判断逻辑搜索方向。图4中,由于信号机X和SⅠ本身带方向,且方向不一致,如果要检查进路X-SⅠ和SⅠ-X的始端信号内方和外方是否被列车占用,以设备的方向为参考,沿着该设备的拓扑连接方向的相同方向或者相反方向搜索,可采用通用的一条语句来表达始端信号内方和外方被列车占用[4−8]。
针对道岔设备,如果是对向道岔,可以沿着道岔的反位方向进行搜索,这样可能会出现多个路径的情况。例如1#道岔,往右搜索时,有2个搜索方向,1#定位和1#反位,生成2条路径。
3)道岔搜索/道岔区段搜索:以当前设备为参考,搜索该设备所在的所有道岔/道岔区段。
4)相关中岔区域搜索:车站包含到发线出岔的场景时,分歧道岔的锁闭方式与进路中的道岔锁闭方式不同,因此采用进路搜索的方式,无法实现到发线出岔的联锁逻辑。
以图5所示站场为例,定义S6至X6之间的区域为中岔区域,建立以X6或者S6为终端的列车进路时,需要将设备X6至S6之间的设备纳入到联锁逻辑中,正常的进路搜索逻辑无法搜索到终端X6后方的设备,定义中岔搜索方式,针对区域S6至X6,可搜索区域中的道岔、无岔区段、调车信号机和左侧或者右侧的出站信号机,实现中岔逻辑。
图5 到发线出岔
通过中岔区域搜索,建立以X6或者S6为终端的列车进路时,检查中岔在规定位置,中岔区段及无岔区段在空闲状态,中岔区域的调车信号机未建立调车进路;进路解锁时,可实现中岔道岔区段按正常走车分段解锁,或者车压入中岔区域,延时3 min解锁。
通过中岔区域搜索,建立以X6或者S6为始端的发车进路时,将中岔道岔防护锁闭在定位,并在信号开放的过程中持续检查,车完全压入发车进路内方,解除锁闭。
5)非进路区域搜索:用于搜索联锁逻辑中涉及到的非进路区域。
为了方便列车的解体和编组,会将集中区联锁的牵出线部分线路作为车列的推送线使用,由调车员指挥车列在推送线上往返调车,这种调车方式称为非进路调车。非进路调车需借用集中区联锁的部分区域来进行,因此必须有单独的搜索方式来搜索非进路区域,实现非进路区域与集中联锁区域中的调车进路和列车进路之间的联锁制约关系。
以图6所示站场为例,定义牵出线D7G至TF1G的区域为非进路区域,此区域未建立非进路调车时,该区域中的道岔和信号机由集中联锁控制,当需要建立非进路调车时,需先采用非进路区域搜索识别该站场中的非进路区域,实现非进路与区域中的调车信号机、道岔、基本调车进路、迎面进路之间的敌对关系检查。图6中,以非进路牵出线边上的第一架调车信号机D7为起始点,通过关键道岔13#和67#的位置,以TF1G为结束条件,搜索出一条非进路区域,并获取区域中相关的信号机、道岔、进路及迎面进路信息[5−7]。
图6 非进路区域
6)溜放区域搜索:用于搜索联锁逻辑中涉及到的溜放区域。
溜放是由牵出线通向某一股道或者某一线路的所有调车进路的组合。由于溜放的随机性和连续性,在溜放进路建立时,必须确保联锁逻辑的正确性,因此需要提供一种溜放的搜索方式,来实现溜放区域的搜索。
以图7所示站场为例,定义牵出线D7G至TF1G和TF2G的区域为溜放区域,从始端信号机D7开始,根据关键道岔13#和69#的位置,搜索到至溜放进路终端D39、D43结束,该条路径上的所有设备都是本条溜放区域上的元素。并从路径中区别以下信息。
图7 溜放区域
前进信号:该条路径中信号机方向与始端方向相同的信号机,包含溜放始端。
后退信号:该条路径中信号机方向与始端方向相反的信号机,包含溜放终端。
2.3 参数过滤
按照上述通用逻辑进行搜索,会生成若干个分支,每个分支上的元素由该条路径中的元素组成,如图4所示,假如进路X-SⅠ是一条搜索到的具体路径,则该路径中包含的元素有X、ⅠAG、1#、SⅠ、ⅠG和进路X-SⅠ,显然不是所有的元素都满足要求,要根据特定的限制条件取满足要求的结果,因此需要对路径中的元素进行过滤,删掉不符合要求的元素,过滤方法包括下列项目。
1)方向参数过滤:只取与设备相同方向或者相反方向的元素。
2)参数类型过滤:只取符合的或与设备类型相同的元素。例如取路径上的信号机、道岔、区段;如果路径是进路,还可以取进路的始端、终端和进路本身。
3)参数个数过滤:只取符合要求的一个或多个元素。
4)关键参数过滤:如果关键参数没有生成,该条分支逻辑可以全部不生成。
5)关键分支过滤:如果关键分支逻辑没有生成,与该条分支逻辑有关系的所有分支逻辑全部不生成。
2.4 通用联锁逻辑生成
每个通用搜索方法按照一定的规律存储每一个分支的结果,并进行分支合并,分支之间连接的数学运算关系由通用语法给出。
以图8所示站场为例,建立X-SⅠ的列车进路时,要检查进路中的区段ⅠBG、3DG和ⅠG空闲,敌对信号D1、SⅠ未开放,迎面敌对进路未建立。
图8 示例站
实现该需求时,定义通用搜索语法:“进路搜索[<分支1>*<分支2>*<分支3>*<分支4>]”,进路X-SⅠ是当前路径,分3个分支搜索。分支1利用区段过滤关键字,搜索进路中的所有区段,检查区段空闲;分支2利用信号过滤关键字,搜索进路中的敌对信号,查敌对信号未开放,即以D1和SⅠ为始端未建立进路;分支3采用参数过滤方式,即搜索与进路终端信号相隔一个股道/无岔区段有列车性质的信号机XⅠ,以XⅠ为终端未建立列车或者调车进路。由于股道信号机类型不确定,需要增加一个分支4,与分支3功能类似,搜索与进路终端信号相隔一个股道/无岔区段仅有调车性质的信号机[9−10]。
3 结论
通用联锁逻辑实现的过程,不仅可以大大减少信号设计人员的工作强度,而且对联锁逻辑的安全性有重要的影响。联锁逻辑的实现,可以有很多方式,但是联锁逻辑和编程能力如果不分开,对人员的要求会很高,本文提供的实现方式,信号逻辑和软件分离,错误率较低,但是该方式对特殊站型的适应性不高,在今后的工作中需要不断积累新的站型,完善和优化通用联锁逻辑。