通用联锁模型的特定领域语言IDL介绍
1. IDL概述
IDL(Interlocking Domain Language)是一种用于通用联锁模型及其属性的特定领域语言。其引入的动机在于联锁系统需要创建许多不同的通用模型,原因主要有两点:
- 不同国家的联锁操作规则往往不同,每一套新的操作规则都会催生新的通用规范。
- 不同的验证目标需要不同的抽象级别,这会产生新的参数、编码和转换关系。
IDL规范具有转换语义,其含义是将每个可接受的配置数据集映射到一个具体的Kripke结构K和相关的具体属性。不同的通用模型应用于相同的配置数据时,可能会产生不同的Kripke模型。
2. 示例说明
为了说明IDL的定义及其实例化规则,我们使用一个简单的示例。该示例考虑具有传统块段逻辑的联锁系统:
- 块段由连接入口信号和出口信号的所有轨道元素指定,同一时间最多只能有一列火车停留在一个块段内。
- 路线总是从块段的入口信号指向出口信号,共享一个或多个轨道元素的块段存在冲突,不能同时分配。
- 路线有一个生命周期,会经历多个模式:初始为FREE,请求时变为DISPATCHED,联锁系统检查无冲突路线后进入ALLOCATING模式,信号和道岔到达指定状态后进入LOCKED模式,火车进入路线后进入OCCUPIED模式,火车离开后回到FREE模式。
在建模火车沿轨道元素移动时,我们采用了非常粗粒度的抽象级别:
- 假设火车要么覆盖元素,要么不覆盖,为每个元素关联一个计数器,指示有多少列火车覆盖该元素,安全操作时计数器只能为0或1。
- 进一步简化假设火车一次只覆盖一个轨道元素,道岔可以直接从正位