CN101167050A - 用于铁路信号网络的控制系统 - Google Patents
用于铁路信号网络的控制系统 Download PDFInfo
- Publication number
- CN101167050A CN101167050A CNA2006800103660A CN200680010366A CN101167050A CN 101167050 A CN101167050 A CN 101167050A CN A2006800103660 A CNA2006800103660 A CN A2006800103660A CN 200680010366 A CN200680010366 A CN 200680010366A CN 101167050 A CN101167050 A CN 101167050A
- Authority
- CN
- China
- Prior art keywords
- language
- application data
- data
- processing unit
- code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B61—RAILWAYS
- B61L—GUIDING RAILWAY TRAFFIC; ENSURING THE SAFETY OF RAILWAY TRAFFIC
- B61L21/00—Station blocking between signal boxes in one yard
- B61L21/04—Electrical locking and release of the route; Electrical repeat locks
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B61—RAILWAYS
- B61L—GUIDING RAILWAY TRAFFIC; ENSURING THE SAFETY OF RAILWAY TRAFFIC
- B61L27/00—Central railway traffic control systems; Trackside control; Communication systems specially adapted therefor
- B61L27/60—Testing or simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44589—Program code verification, e.g. Java bytecode verification, proof-carrying code
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Mechanical Engineering (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
- Programmable Controllers (AREA)
Abstract
用来预备和检查由可编程控制装置或设备执行的、用于执行过程的软件工具的方法,其中:a)提供用于表示软件工具的编程语言,该语言基于抽象语法,特别是基于面向对象的语法;b)从源代码语言和目标代码语言都生成所述编程语言;c)用所述编程语言来表示控制程序;d)通过将用基于抽象语法的语言表示的所述控制程序翻译成抽象语法的源代码格式和/或目标代码格式的语言,来得到控制程序的源代码格式和/或目标代码格式。
Description
技术领域
本发明涉及用于预备和检查要由数据驱动控制系统执行的应用数据的方法,更具体地涉及用于铁路信号网络的固态联锁,并且其中:
所述网络包括至少一个中央联锁处理单元以及一个或多个远程或外围操作单元,这些远程或外围操作单元例如是用于执行机械任务的一个或多个致动器、和/或一个或多个单或多方面信号单元、和/或用于测量物理和/或化学参数的一个或多个传感器;
所述网络进一步包括一个或多个数据通信线,数据通信线将所述一个或多个远程或外围操作单元的每个连接到中央联锁处理单元,用于将所谓的输入数据电文发送到中央联锁处理单元,以及用于接收由中央联锁处理单元生成的输出电文或命令电文;
所述中央处理联锁单元包括通用硬件平台,该通用硬件平台执行所谓的控制解释器或联锁功能程序的通用软件,用于执行系统管理任务,并用于解释表示多个远程或外围操作单元之间的逻辑关系的特定于网络的应用数据,以及用于解释管理控制系统的特定于应用的控制规则也就是所谓的联锁逻辑,从而使得施加到所述应用数据或联锁逻辑的控制解释器可产生特定于控制系统的控制功能;
该方法包括利用具有人类用户友好语法的第一编程语言来表示所述应用数据并利用软件工具即编译器用第二语言来转换所述应用数据的步骤,该第二语言具有可以由中央联锁处理单元处理的机器友好语法,即二进制代码。
背景技术
以上公开的控制系统也就是所谓的已知固态联锁系统(SSI)。这种系统是所谓的数据驱动类型。该系统的体系结构也是已知的,并且该系统包括计算机化的处理单元,该单元由传统通用硬件和通用软件结合而形成,当执行通用软件时,允许通用硬件来执行通用读和写循环或轮询循环。严重依赖于网络配置的形成控制系统的网络的多个远程或外围操作单元之间的逻辑关系,也就是也严重依赖于形成网络配置的管理控制过程的规则,采用所谓的应用数据的形式。概括说来,应用数据表示了这样的规则,由中央处理单元基于这种规则所执行的通用软件操作并定义了系统的特定联锁功能。通用程序和应用数据之间的关系中,前者作为后者的解释器。所以,由中央处理单元执行的通用软件通常被称为中央解释器,而应用数据也被称为联锁逻辑。关于本发明的方法所具体涉及的方法和特定固态联锁系统的更深和更详细的信息,在Cribbens A.H.:Solid State Interlocking(SSI):an IntegratedElectronic Signalling System for Mainline Railways.IEE Proceedings,Part B:Electric Power Applications,Volume 134,Issue 3,pp 148-158.IEE(1987)中进行了公开。
如本领域技术人员已知的,为了提供能够满足更高安全性要求的控制过程的软件工具,已经开发出了固态联锁的体系结构。具体地,铁路信号网络需要高度的故障保护操作。通过从中央联锁处理单元执行的通用软件中,与网络配置和用于管理控制系统的网络的规则相关地分离出特定于网络的应用数据,从安全性要求的观点来说,已经从通用基本软件中明确地分离出高度关键的数据,该通用基本软件涉及管理通用硬件平台的原级(primitive)任务和其他管理任务,例如管理通信线和协议等。
中央联锁处理单元的基本硬件构造包括微处理器,该微处理器与保存通用程序和应用数据的RPROM协作。RAM存储器被用于输入和输出装置。RAM存储器还被用于保存控制系统的状态记录,其被本领域技术人员称为系统的图像或内部状态。固态联锁按如下起作用:对输入的数据电文进行解码,并处理相关联的应用数据。此外,还处理与输出命令电文相关联的数据。
关于固态联锁,数据预备的一个问题是,行为非常像编程。在一些技术领域中,如铁路信号网络,由控制表格给出规范说明,控制表格不严格地指出可以驱动特定操作单元执行特定动作之前必须满足的所有条件,例如在可以将信号灯从红色切换到绿色从而允许火车进入下一轨道段之前要满足的所有条件。这些表格具有定义的语法,这种语法对于技术人员具有清楚的意义,但是也由于联锁特别是铁路联锁所固有的巨大组合复杂性,而非常难以利用这种语法工作。没有方法来描述规范说明的完整性,因此需要验证根据所述规范说明导出的代码满足了特定于应用的安全性能,例如禁止两辆火车同时占用相同的轨道段的可能性。
根据简单的反编译器和语法比较器上,以及在仿真网络上的离线测试和现有网络上的在线测试,传统的验证方法是基于对于控制表格的检查和对于导出的应用数据的检查。
由于高组合复杂性,通常穷尽式仿真是不可能的。此外,应用数据的语法性质也使得目视检查(visualinspection)实际上是不可能的或不可靠的。所以,难以发现说明数据中的深度错误类问题或甚至难以发现微小错误如语法错误,该语法错误例如编码的问题。
如已经公开的,已经通过所谓的高级语言来写应用数据,高级语言的语法是人类用户友好的。源代码被翻译为机器或目标代码的过程,是通过软件翻译工具也就是所谓的编译器来完成的。
预备可执行软件工具以及具体地应用数据的实际方法的主要缺点在于这样的事实,人类用户不能直接查看或编辑目标代码。因此,直接编辑是不可能的,并且不能校正错误,也不能更新软件工具。此外,还不能直接验证源代码到目标代码的编译过程是否正确执行。这通常通过提供反编译工具也就是所谓的反编译器把用目标代码表示的应用数据转换回到用源代码表示的应用数据、以及通过将用源代码表示的最初应用数据和通过所述反编译过程所获得的应用数据进行比较来实现。由于这样的事实,也就是编译不是简单和直接的翻译,而是还提供了源代码翻译(例如宏扩展)步骤,反编译不能完整地或准确地重建源代码语法中的应用数据,所以不能以完全自动的方式来执行比较,而必须由人类操作员验证,比较过程所凸现的差异只是由于反编译过程的所述限制,而不是由于编译器自身的故障。
每次要修改或更新应用数据时,人类用户需要修改或更新源代码,并且再次执行编译过程,用于获得目标代码中的应用数据的修改或更新后的版本,以及如果为了安全的目的而需要验证编译器,则人类用户还需要再次执行上述的反编译和比较过程。
当考虑通过仿真来验证联锁系统的以上情况时,意图实现控制系统的完整安全的操作,并且在两个级别上执行验证,也就是在以源代码语法表示的应用数据的级别(通过代码检查)执行验证,以及在以目标或机器代码表示的应用数据的级别(通过测试)执行验证。
此外,目标代码的测试需要基于测试软件来构造虚拟模型,测试软件自身不能避免上述的问题且涉及故障保护编译过程。这种模型非常复杂,因为源代码是通过从人类用户的实际现象观点开始而基于非常具体的语法,目标代码仅仅通过应用描述控制系统的具体现象结构的语法以及可被压缩到硬件中的语法也就是通常的纯二进制代码来改变观点的。
实际上显然需要减少多种测试的成本和负担,并提高联锁系统的生产率。
已知这样的语言,这些语言被定义为中间语言或代码,它们被用在编译过程中,例如在AHO A等的“Compilers Principles,techniques andTools”,reading Addison-Wesley Publishing CO,US 1986或“Encyclopedia of Computer Science”A.Ralston,E.D.Reilly,D.Hemmendinger,2003 John Wiley & Sons,Chicester UK中进行了公开。
以上文档中公开的传统编译器技术中使用的中间表示,被用来通过在生成目标代码之前将源代码转换为存储器中的中间数据结构,从而协助编译过程。传统编译器中的中间数据表示不能被用来验证编译过程而只能用来协助编译过程。因此依然需要编译验证过程。中间表示不是从源代码和目标代码产生的。数据的传统的中间表示不是按足够严谨的方式定义的,从而不能定义数据的语义。该事实导致传统的中间表示不能帮助克服现有的反编译问题。
发明内容
本发明的目的是提供一种用于预备和检查要由数据驱动控制系统执行的应用数据的方法,更具体地是提供用于开始描述类型的铁路信号网络的固态联锁,使得可按简单且可靠的方式满足上述需求。
根据本发明的原理,通过用于预备和检查要由用于执行程序的可编程控制装置或设备来执行的应用数据的方法,达到了上述的目的,其中:
a)提供用于表示软件工具的编程语言,该语言基于抽象语法,更具体地是面向对象的语法;
b)从源代码语言和目标代码语言二者生成所述编程语言;
c)用所述编程语言来表示控制程序;
d)通过将按基于抽象语法的语言表示的所述控制程序翻译成源代码格式的语言和目标代码格式的语言,来生成控制程序的源代码格式和/或目标代码格式。
被称为中间数据语言的上述编程语言,可以使用与应用数据的具体源代码和目标代码语法相区别但可相比较的语法,以抽象方式来表示联锁系统应用数据;并且,可以以准确方式来表示联锁系统应用数据,从而可以规范地分析应用数据的特性。中间数据语言主要是要用来验证应用数据从源代码到目标代码的编译,但是也可以被用于其他数据预备和验证行为。
如已经指出的,应用数据中间代码不能与传统编译器技术中使用的中间表示相混淆,后者被用来在生成目标代码之前将源代码转换为存储器中的内部数据结构,从而协助编译过程。首先,根据本发明的中间代码可以被用来从源代码和目标代码二者生成中间代码,从而验证编译过程而不是协助编译过程。具体地,中间代码被引入主要是作为用于在安全关键的系统上的应用的不同技术(diverse technique)。其次,使用规范化的规范说明技术来定义应用数据的语义,按照比传统编译器技术中使用的多数中间表示更严格的方式,对应用数据中间代码进行定义。
具体地,本发明的目的是一种用于预备和检查要由数据驱动控制系统执行的应用数据的方法,更具体的目的是用于铁路信号网络的固态联锁,其中:
所述网络包括至少一个中央联锁处理单元和一个或多个远程或外围操作单元,例如用于执行机械任务的一个或多个致动器、和/或一个或多个单或多方面信号单元、和/或用于测量物理和/或化学参数的一个或多个传感器;
所述网络进一步包括一个或多个数据通信线,数据通信线将所述一个或多个远程或外围操作单元的每个连接到所述中央联锁处理单元,用于将所谓的输入数据电文发送到中央联锁处理单元,并且用于接收由中央联锁处理单元生成的输出电文或命令电文;
所述中央处理联锁单元包括通用硬件平台,通用硬件平台执行通用软件,也就是所谓的控制解释器或联锁功能程序,这些程序用于执行系统管理并用于解释特定于网络的应用数据,特定于网络的应用数据表示多个远程或外围操作单元之间的逻辑关系以及管理控制系统的应用特定控制规则也就是所谓的联锁逻辑,从而,施加到所述应用数据或联锁逻辑的控制解释器产生特定于控制系统的控制功能;
该方法包括这些步骤:用第一编程语言来表示所述应用数据,第一编程语言具有人类用户友好的语法,也就是所谓的源代码;并利用软件工具也就是所谓的编译器,用第二语言对所述应用数据进行翻译,第二语言具有机器友好的语法,也就是二进制码,即所谓的目标代码,目标代码可以由中央联锁处理单元进行处理。
其特征在于:
提供具有面向对象语法的第三语言,用于表示所述应用数据;
在所述第一编程语言也就是源代码中的应用数据的语法和/或在所述第二语言也就是目标代码中的应用数据的语法,可以从用具有面向对象语法的所述第三语言生成的所述应用数据的语法导出;
提供自动翻译程序,用于在所述第三语言与所述第一和/或所述第二语言之间翻译所述应用数据。
根据本方法的进一步的特征,还提供翻译装置,用于分别地将用所述第一或所述第二语言表示的所述应用数据从所述第一和/或所述第二语言翻译为所述第三语言。
第一语言是表示控制程序的人类用户友好的语言,也就是所谓的源代码,典型地是高级语言,而第二语言是机器友好的语言,也就是所谓的机器或目标代码,典型地是二进制代码。
根据以上的方法,通过将致动器、信号单元、传感器和联锁逻辑设置为等于基于面向对象语法的语言的对象,可以描述应用数据中包括的控制系统配置和管理控制过程的规则。
本领域技术人员知道,面向对象的语言通常定义这样的对象,当对象具有相同的属性、函数或允许相同操作时,则被划分到(相同)类。利用对象之间的关系或链接,来表示每个对象影响其他对象的方式。在每个类中,可以使用约束项来定义每个对象允许的操作或指令,或关于每个对象的操作或指令。
与典型的源代码语法以及典型的目标代码语法相比,面向对象的语言的语法可以被看作是一种抽象语法。这些语言可以被看作是在源代码的语言和目标代码的语言之间的中间语言,并且通过所述中间语言,可以利用该中间代码语法,以这种抽象形式来表示应用数据。
可以没有任何问题地用源代码和/或目标代码语法来翻译或编译所述中间代码表示的应用数据,所述中间代码基于控制系统的配置的抽象,该控制系统的配置涉及形成控制系统的操作单元并且涉及管理系统的逻辑。相类似地,用源代码语法和/或目标代码语法表示的应用数据可以被翻译成中间代码语法。因为中间代码基于抽象语言,中间代码以完全独立的方式描述了控制系统及其逻辑,所以可以获得中间代码至源和/或目标代码或相反方向的自动和完整翻译,完全独立的方式是指独立于:由人类用户考虑的硬件的具体现象感知和描述;从硬件自身的观点考虑的硬件的具体现象感知和描述。
更具体地,使用结构化和规范化的规范说明方法,通过定义表示各种数据类型及其关系的类和关联(association)来组合UML和VDM++记号,获得作为中间语言的所述第三语言的语法并且其中按面向对象的方式描述所表示的应用数据。
有利地,类定义还包含应用数据的语义的规范说明,该规范说明包括为了正确解释数据所要求的该数据必须满足的约束条件的规范说明,以及如何解释数据也就是定义数据的意义的规范说明。
可以根据VDM++模型来定义语义规范说明,按特定控制装置或设备的配置来表示处理单元的状态。
用中间代码把控制系统或控制网络的特定配置的数据描述为一组对象和所述对象之间的链接,根据该中间语言的语法规定的类和关联来例示这些对象和链接。
UML和VDM++是已知的语言,在文档″The VDM Tool Group,TheIFAD VDM++Language Technical Report″,IFAD,2000年10月中进行更深入的描述。
用基于面向对象的语法的所述第三语言来表示应用数据,能够克服以上公开的缺点并提供多个功能优点。
从以所述第三语言也就是上面定义的中间代码来表示应用数据开始,总是可以按人类用户友好的方式来表示应用数据。通过直接修改表示成中间代码也就是用所述第三语言表示的应用数据,可以容易地执行控制程序的更新,该控制程序的更新是由于控制系统或网络结构的硬件更新所导致的。从以所述第三中间语言来生成所述应用数据开始,可以用源代码和目标代码语法来翻译应用数据。
利用中间代码符号表示的应用数据可以被容易地打印到纸或显示在监视器上,并具有人类可以理解的形式和语法。作为一种抽象,总是可以采用确保人类用户可快速明确理解的方式,利用自动软件工具来容易地转换和表示以第三语言也就是以中间代码语法表示的应用数据。所述转换或表示软件工具可以是能够在写入和/或图形表示中呈现应用数据的类型。
根据本发明的方法的优点在于这样的事实,给出控制系统或网络的特定结构配置,例如具有一定轨道段、信号、点致动器等等的铁路网络,并且给出用于管理所述网络的特定规则,可以按完全独立于在具有相同结构配置的不同联锁系统中使用的特定源代码语法和特定目标代码语法的方式,利用所述中间语言来写应用数据。因此,在相同的但是以源代码和/或目标代码记号表示的应用数据中,通过提供以中间代码语法表示的应用数据的适当翻译器,可以将用中间语言表示的相同应用数据用于所述联锁系统的每个。应用数据的中间代码记号协助提供进一步的功能性或特征。
例如,当考虑编译过程以及编译过程的验证时,用中间代码记号来表示的应用数据帮助避免用源代码语法最初表示的应用数据和根据目标代码记号利用反编译而获得的应用数据之间的不对应所导致的问题。
此外,在用源代码和中间代码记号表示的应用数据上,都可以完成应用数据语法语义的多种检查(如验证其是良好形成的,以及验证其符合控制系统和解释器所施加的容量和处理限制条件以及应用所需要的安全相关的限制条件),其中,一个检查验证源代码中包含的表达符合为具体语法的项而指定的一定文本限制条件,而其他检查则验证以中间代码描述的对象和链接满足为抽象语法的类和关联而指定的语义限制条件。
在这种情况下,因为使用中间代码语法预备应用数据允许在以中间代码记号从源代码记号编译应用数据的同时,执行应用数据有效性(validity)检查,并且以中间代码记号来从目标代码记号反编译应用数据也对应于应用数据检查,所以还执行应用数据编译过程的双验证。
为了验证从以源代码符号表示的应用数据到以目标代码符号表示的应用数据的编译过程,可以根据以下步骤来执行所述多种检查和比较:
提供以第一语言也就是以源代码记号表示的应用数据;
提供编译器,用于检查并且将以所述第一语言也就是以源代码记号表示的应用数据翻译成以第二语言也就是以目标代码记号表示的应用数据;
提供第三语言,用于表示应用数据,所述语言具有面向对象的语法;
提供第二编译器,用于将以所述第一语言表示的应用数据翻译成以所述第三语言表示的应用数据,并且用于多样地检查以所述第三语言表示的应用数据;
提供反编译器,用于利用所述第三语言来翻译以第二语言表示的应用数据,获得所谓的反编译应用数据;
将以所述第三语言编译的应用数据和所述反编译应用数据做比较;
如果在所述比较中没有检测到差异,则将以第二语言表示的应用数据定义为有效;
针对在所述比较中检测到的任何差异,发送出错消息或指示(indication)。
第一语言是表示控制程序的人类用户友好的语言,也就是所谓的源代码,典型地是高级语言,而第二语言是机器友好的语言,也就是所谓的机器或目标代码,典型地为二进制代码。
所述第三语言是上面已经公开的中间代码,并且如上所述,它是基于面向对象语法的编程语言,较之以源代码和以目标代码记号表示的应用数据可以按更抽象的方式来描述控制系统的配置、功能和状态。
与典型的源代码语法和典型的目标代码语法相比,面向对象语言的语法可以被看作一种抽象语法。这些语言可以被看作源代码的语言和目标代码的语言之间的中间语言,并且利用所述中间语言,可以将以这些抽象形式表示的控制系统和控制程序或逻辑表示为中间代码。
通过定义表示多种数据类型和它们之间的关系的类和关联,使用结合UML和VDM++记号的结构化和规范化的规范说明方法,以面向对象的方式描述作为中间语言并且其中表示中间代码的所述第三语言的语法。
有利地,类定义还包含应用数据的语义的规范说明,包括数据为了被正确解释所必须满足的限制条件的规范说明,以及包括如何解释数据也就是定义数据的意义的规范说明。
可以根据VDM++模型来定义语义规范说明,按特定的控制装置或设备的配置表示处理单元的状态。
利用中间代码,将用于控制系统或网络的特定配置的数据描述为一组对象和所述对象之间的链接,这些对象和链接是从由中间语言的语法指定的类和关联进行实例化而得到的。
UML和VDM++是已知的语言,它们在以下的文档中进行更深入的描述:“The VDM Tool Group,The IFAD VDM++Language TechnicalReport”,IFAD,2000年10月。
在上述公开的情况下,需要强调,第一和第二语言也就是源代码和目标代码的语法都是具体的语法,其与控制系统或网络的现象具体硬件结构以及管理控制系统或网络的逻辑是具体相关的。用源代码语法和目标代码语法表示的应用数据是强数据相关的。与之相反,中间代码语法基于控制系统或网络的现象结构以及管理所述控制系统或网络的规则的抽象。
要由该控制系统控制的过程的特定例子是铁路信号联锁系统的情况,其中,需要根据在该领域中传统使用的安全性规则来控制铁路网络上的列车运行。
网络包括:由铁轨段形成的不同铁路路线,称作轨道电路的致动器,用于检测所谓的区间闭塞(block)上的列车的存在,或者还用于停止一个区间闭塞上的列车,致动器用于移位铁路道岔(railroadpoint);用于指示自由通过、警告(caution)或用于停止列车通路的信号(单元);以及还包括典型的交通控制装置、信号单元或传感器。
处理单元也就是所谓的中央联锁处理单元,其能够如前已经讨论来执行应用数据。
在这些联锁系统中,发生错误会造成巨大的和非常危险的后果,所以需要非常高级的安全性和故障保护的操作,并高度重视待由联锁处理单元执行的应用程序的测试和验证。
这些测试和验证过程意图测试和验证作为源代码形式的应用数据的正确性,并且还验证和测试源代码到机器或目标代码的翻译也就是所谓的编译,并且通常还提供仿真工具,该仿真工具使得能够通过软件级的仿真来离线测试应用数据的功能性,而不需要将中央联锁处理器与以上列出的实际铁路网络和实际外围或远程操作单元连接起来。在这样的情况下,通常通过施加致动器、信号单元和传感器的预定操作状态,来给出铁路网络的特定状态,这些预定操作状态由变量的适当值来表示,而变量在控制程序中定义具体的驱动信号、状态信号和测量信号,并且通过读取所述控制程序针对所述变量确定的变化,来分析由联锁处理器执行的控制程序的响应,所述变化可能导致一定致动器或信号单元的驱动,从而改变其功能或操作状态,并由此导致对应变量值的变化。可以测试铁路网络的任何类型的理论上看似合理的操作情况,甚至在严格的情况下,致动器、信号单元或传感器的至少一个或一些未能正确操作。
本发明的目的是提供一种用于预备和检测待由控制系统执行从而执行过程的软件工具的方法,其克服了上述的缺点,不仅确保提供软件工具的更容易的预备,并且还确保按更简单且更可靠的方式执行软件工具的自动检查,该自动检查通过要被控制的过程的仿真来检查软件工具的功能,或者检查源代码到目标代码的翻译也就是编译过程的正确性。
根据所述第三语言的语法而表示为以上述中间代码的控制程序或应用数据的另外应用,包括应用数据也就是控制程序的语义规范说明和验证。
如上所述,所述第三语言也就是所谓的中间语言,已经提供了一种方法,用于定义应用数据也就是生成处理单元模型的控制程序的语义。
在这种情况下,已经使用Rational Rose和IFAD VDM++CASE工具开发了语言规范说明,其提供了一些验证工具,例如语法检查器和类型检查器。IFAD VDM++CASE工具还包括动画模拟工具(animationfacility),该动画模拟工具使得能够相对于处理单元状态的模型来执行处理单元的模型。
验证规范说明的能力提供关于语言是正确的、完整的且符合管理要被控制的过程的原理的置信度等级。还使得能够通过引入新语言特征来进行实验。
所以,本发明提供了一种用于应用数据也就是控制程序的语义的规范说明和验证的方法,该方法包括以下步骤:
a)根据之前公开的用于预备和检查软件工具的方法提供第三语言,该第三语言的语法不同于用户友好语言和机器友好语言的语法;
b)所述第三语言具有面向对象的语法,并包括用于应用数据的语义规范说明的方法;
c)所述规范说明生成处理单元的模型;
d)通过相对于中央联锁处理单元状态的模型来执行中央联锁处理单元的解释器的模型,从而执行语义的验证。
参考以上公开的固态联锁,输入消息和输出消息明确地定义了中央联锁处理单元的所谓内状态。在这种情况下,可以离线仿真控制系统的实际功能。从控制系统中设有的不同外围单元生成输入数据电文,通过读取由中央联锁处理单元生成的输出电文,来测试应用数据的功能。这些输入电文和输出电文明确地定义了中央联锁处理单元的所谓内状态,并且如果正确地参考控制系统的网络中设置的远程或外围操作单元,可以从电文推导出外围或远程操作单元的状态的虚拟图像(virtual image),并且如果已经利用中央联锁处理单元正确地设置了这些操作单元,也可以进行控制。
如上所述,用抽象语法的中间代码语法表示的应用数据,允许定义应用数据的语义,得到了中央联锁处理单元的解释器的模型。这允许通过以所述中间代码语法来表示输入和输出电文,从而执行中央联锁处理单元的功能的离线仿真测试。
将中央联锁处理单元的解释器的模型与中央联锁处理单元状态的模型进行比较,允许验证应用数据中指定的联锁逻辑。
使用Rational Rose和IFAD VDM++CASE工具来开发第三语言规范说明。
作为进一步的应用,用作为中间语言的上述第三语言表示的应用数据或控制程序也被用于仿真工具的验证,其可以被开发以执行控制系统的在线测试。
本发明还涉及用于验证针对过程的控制系统的仿真的方法,该方法包括以下步骤:
a)根据之前公开的用于预备和检查软件工具的方法,来提供第三语言,该第三语言的语法不同于用户友好语言和机器友好语言的语法;
b)所述第三语言具有面向对象的语法,并且包括用于应用数据的语义的规范说明的方法;
c)该规范说明生成中央联锁处理单元的解释器的模型;
d)用机器友好语言,从所述第三语言翻译应用数据,从而获得目标代码;
e)通过基于所述第三语言的模型,生成应用数据解释器和中央联锁处理单元的状态的模型;
f)通过处理单元来离线地执行目标代码;
g)通过基于所述第三语言的模型和目标代码的离线执行的比较,来验证仿真。
附图说明
通过例子和附图,在下面的描述中更详细地公开了本发明和从其得到的优点,在这些附图中:
图1是示出所谓固态联锁类型的通用控制系统的结构的方块图;
图2是示出控制系统和面向对象的语言之间的关系的方块图;
图3是以简化方式示出的铁路网络或设备中的用于控制铁路交通的控制系统的例子;
图4是示出如何从以中间语言表示的应用数据中得到应用数据的不同具体源和目标代码表示的方块图;
图5示出用于通过使用所述中间语言来对编译过程进行故障保护验证的方法,其中,所述中间语言用于利用中间代码记号来表示应用数据;
图6-9示出了多个步骤的方框图,这些步骤用于利用以中间代码记号表示的应用数据,来执行控制系统的离线仿真;
图10示出了UML对象图的例子,该例子示出了许多从名为“RouteMemoryTest“的类派生的类;
图11示出UML对象图,该对象图示出RouteMemoryTest作为名为MemoryTest的类的子类;
图12示出分配给保留用于路由的CIXL存储器的部分中的索引53的路由的状态的图;
图13示出RouteSetTest类的对象的图,已经在中央联锁系统CIXL应用数据中创建了该对象,作为中间代码表示的结果。
具体实施方式
参考图1,利用方块图示意性地示出了所谓固态联锁类型的用于控制过程的通用可编程控制系统。通过包括一个或多个用于执行过程的控制功能的通用致动器1的硬件结构,来形成控制系统。例如,在用于按受控方式将液体馈送到用户装置中的设备中,这些流体可以按特定比率混合,这些致动器可以包括调节阀。可以利用驱动信号或命令101来远程驱动所述阀,配备有驱动单元,并可以具有用于指示它们操作状态201的装置,该操作状态201例如是最大开口位置和关闭位置之间的允许用于阀的不同开口位置。
控制系统的通用设备还可以包括信号装置,该信号装置用于以可见方式指示特定状态。并且,信号单元2具有用于接收和执行驱动命令102的驱动单元,以及还可以具有用于指示这些驱动单元的操作状态202的装置。这些信号可以是例如多方面光或相似的信号单元。
通用设备还可以设有传感器3,例如压力指示器、电流或电压指示器等或其他传感器,这些其他传感器被用于测量控制系统的设备或被自身控制的过程的特性参数。
设备的特征进一步在于这样的硬件结构,该硬件结构表现为致动器的数量和类型、和/或信号单元的数量和类型、和/或传感器的数量和类型的列表。
致动器1和/或信号单元2和/或传感器3通过它们的状态指示装置与可编程中央联锁处理单元4的输入端口104进行通信。此外,可编程中央联锁处理单元4与驱动单元通信,用于利用输出端口204执行致动器1的命令101和信号单元2的命令102。
在控制程序中描述了硬件特别是设备或网络的结构,以及支配设备或网络用于执行控制过程的规则,以及描述了基于致动器1、信号单元2和传感器3的状态数据和由传感器测量的数据来确定它们之间的相互作用的规则,从而可以利用处理单元4来执行应用数据。
在固态联锁系统中,利用通用硬件结合通用软件,形成处理单元4,该通用硬件包括用于输入电文和输出电文的处理器和存储器,而通用软件用于管理读和写循环,并且用于管理和远程外围单元的通信,该远程外围单元例如所述的致动器1、信号单元2和传感器3。
如图2所示,在另外的软件也就是所谓的应用数据中表示出以下:涉及由致动器1的驱动单元和信号单元2所接收的驱动信号的结构和类型的规范说明;以及涉及由致动器1、信号单元2和传感器3生成和传输的状态信号的结构、类型和意义的规范说明;它们之间的逻辑关系以及支配控制过程的规则。
当在中央联锁处理单元4中加载和执行应用数据连同通用管理软件时,处理单元能够根据支配控制过程并且包括在应用数据中的规则,也就是所谓的联锁逻辑,来正确地解释由致动器1、信号单元2和传感器3生成的输入数据电文,以及能够生成输出电文也就是所谓的命令电文至所述单元1、2和3的一个和多个中。
当前,通过使用基于人类用户友好的语法的编程语言,来书写控制程序,该编程语言也就是所谓的高级语言。这种形式的控制程序被称为源代码。高级语言是非常接近人类语言的某种类型的浓缩和简化的语言。为了由处理单元执行,需要利用翻译程序,将控制程序翻译成基于机器友好语法的语言。表示的方式通常是二进制码或类似形式。这种形式的控制程序被称为机器或目标代码。目标代码不能直接被人类用户所理解,所以不能由人类操作员来执行例如编辑、查看或检查目标代码的行为,或者即使执行这些行为例如打印目标代码,结果对于人类用户也是无用的。
图3示出了由所谓的固态联锁处理器控制的简化铁路网络。在该简化的例子中,铁路网络包括每个关联到用10表示区间闭塞(block)的轨道电路。用11表示道岔(switch),并且该道岔11包括道岔驱动装置和道岔状态指示器。具有两个信号单元例如多方面灯12。以上的每个装置通过通信线与联锁系统14连接,该联锁系统14包括执行控制程序或应用数据的联锁处理器。要被控制的过程是铁路交通,而用于控制该过程的规则是在每个铁路网络中传统定义的规则。
用于预备应用数据的语言可以是以上提到的语言,该语言被表示为基于抽象语法的中间语言,而该应用数据要被中央联锁处理单元4执行,或例如被联锁处理器14执行。
这种语言使得可获得多个优点,并且允许定义用于预备和检查应用数据或其中涉及控制程序的其他行为的新方法。
在进入涉及中间代码及其对于不同过程的使用的更多实际细节之前,参考铁路联锁系统的例子,描述和简要地讨论了中间代码的形式的通用例子。
以下的例子示出了中间代码相对于其源代码和目标代码对应部分所采用的形式。
源代码: R103s
目标代码:[0×0620 53 0]
中间代码:data.routeSetTest(“R103”)
该例子示出了用来表示“rout set test”的源代码、目标代码和中间代码语法,这是用来确定是否设置了给定路由的测试,其中,符号“R103”标识该路由。
该测试的源代码形式使用助记符来表示,例如用“s”代表设置。
该测试的目标代码形式被表示为目标代码指令,该目标代码指令由数字代码组成,其中,第一数字(十六进制)代码表示目标代码指令的类型(例如路由设置指令),而其他两个数字(十进制)代码是该指令的参数(例如,“53”是记录有用于路由“R103”的数据的中央联锁系统存储器的索引)。
该测试的中间代码形式被表示为函数调用,从而在中央联锁系统应用数据中创建类“RouteSetTest”的对象(由词语“data”表示),其中,传递该函数作为参数,例如路由的名称。
图4示出方块图,其表示以基于抽象语法的语言即这里定义的中间代码表示的应用数据的可能使用。
应用数据的中间形式,也就是这里所谓的中间代码,是适用于多种工具的开发的表示,这些工具可以在数据预备和检查过程期间使用。例如,为了编辑、查看或检查目的,根据这种表示,可以容易地投影数据的很多不同视图(view)。可以从中间代码产生相同数据的源代码(具体语法)和目标代码(对象代码)。并且,可以为不同的用户应用程序生成可选择的源形式和可选择的目标形式,如不同的方块源形式1和2以及目标形式1和2所示的。以这种方式,只要保留了中间形式的底层语义,可以设计出面向特定系统的具体语法。还可以容易地将应用数据移植到不同的目标平台。最终,新的数据类型可以按它们的中间形式进行引入和验证,并将对应的源和目标形式适当地分配给它们,这些源和目标形式是通过将以所述中间形式也就是以所述中间语言表示的应用数据翻译(编译或反编译)成源形式和目标形式的语言而获得的。
中间语言通过识别由中央联锁处理单元的解释器处理的基本实体(essential entity)和属性,在概念上描述了应用数据。与用于构造离线的控制程序或应用数据的具体源代码语法、以及用于表示在线应用数据的具体目标代码语法相比,应用数据的这种形式被称为语言的抽象语法。
通过定义表示多种类型的应用数据类型和它们之间的关系的类和关联,使用结构化和规范化的规范说明方法结合UML和VDM++记号,以面向对象的方式描述了抽象语法。类定义还包含应用数据的语义的规范说明,包括应用数据为了被正确地解释和处理而必须满足的限制条件的规范说明,以及还包括如何解释数据的规范说明(也就是定义数据的意义的规范说明)。利用VDM++模型定义了语义规范说明,按特定系统如特定铁路运营商的配置来表示处理单元的状态。
利用中间代码将特定模式的应用数据描述为一组对象以及这些对象之间的链接,这些对象和链接是从由抽象语法指定的类和关联的实例(UML和VDM++是已知的语言,它们在以下文献中得到了更深入的描述:“The VDM Tool Group,The IFAD VDM++language TechnicalReport”,IFAD,2000年10月”)。
使用规范说明方法指定中间代码语言的语法(形式)和语义(意义),该规范说明方法结合UML和VDM++记号的使用,UML和VDM++记号是用于软件规范说明的标准记号。UML记号是图解的,因此可以用于按图示的方式描述软件。VDM++是基于数理逻辑的形式记号,以及可用于按精确的方式来对软件进行具体说明。
UML和VDM++语言都包含用于定义对象的类的构造(construct)。因为语言使用相似的机构用于描述类的特性和关联,所以可以在两种记号之间转换。具体地,可以使用VDM++记号来表示类特性的类型(在UML语言中其被称为“属性”,而在VDM++语言中其被称为“实例变量”)。
使用两个商业开发的工具来应用UML/VDM++组合方法,这些工具来自Rational公司且命名为Rose,用于使用来自IFAD的UML和VDM++工具箱来构建模型(软件规范说明),用于使用VDM++语言来构建模型。VDM++工具箱中的工具可以被用来在UML模型和VDM++模型之间进行转换。
在下面,描述了使用中间代码来处理控制程序的一些特别的方法。
语义规范说明和验证
如上所述,根据本发明的新语言或其抽象语法已经提供了一种用于定义应用数据的语义的方法,从而得到中央联锁处理单元的解释器的模型。使用Rational Rose和IFAD VDM++CASE工具来开发语言规范说明,提供了很多验证工具,例如语法检验器和类型检验器。IFADVDM++CASE工具还包括动画模拟工具,该动画模拟工具使得能够与中央联锁处理单元状态的模型相比较地执行(execute)数据解释器的模型。
验证规范说明的能力提供了语言正确、完整且与管理待控制过程的原则相符合的可信度。关于本申请的具体例子,这些原则是控制特定铁路网络中的铁路交通的原则。
作为中间代码如何被用于规范说明数据语言的语义的例子,以下是中央联锁系统应用数据的UML/VDM++规范说明的简化摘录(extract)。
图10的UML对象图示出了从名为“RouteMemoryTest”的类派生出的若干类,使用这些类,通过检查记录有用于给定路由的数据的中央联锁系统(CIXL)存储器,从而测试该路径的各种特性。RouteMemoryTest类的派生类(或子类)之一是之前提到的RouteSetTest类。
如图11的UML对象图所示,RouteMemoryTest类自身是名为“MemoryTest”的类的子类,“MemoryTest”类的子类被用来测试多种类型的给定信号对象的各种特性,例如信号、道岔、路由、轨道段等。
中央联锁系统CIXL存储器被划分为很多区域,其中,具有一个分区用于每个类型的信号对象。表示信号对象的当前状态的数据按索引位置被记录在相关存储分区中。例如,图12示出记录有路由的当前状态的存储器区域,其中,用两个位来表示路由的状态,一个位指示是否设置了该路由,而另一个位则指示是否禁止该路由。图12示出分配给索引53的路由的状态。
在任何给定时间的CIXL中央联锁系统的所有存储器分区中记录的数据的组合值,形成了中央联锁系统的当前状态的部分。
如在用于存储器测试的图11的UML对象图中所见,每个存储器测试与给定的存储器索引(memoryInd)相关联,该索引是相关中央联锁系统(CIXL)存储器分区中的索引,该存储器分区包含数据,要相对于当前中央联锁系统CIXL状态来测试该数据。这在以下的MemoryTest类的VDM++规范说明中被形式化(formalise)。
Class MemoryTest
Instance variables
protected memoryInd:CIXLState` MemoryIndex;
operations
public
memoryIndex:()==>CIXLState` MemoryIndex
memoryIndex()==return memoryInd;
end MemoryTest
为了进行描述,图13描述了RouteSetTest类的对象,在CIXL应用数据中创建了该对象,作为以下中间代码表示的结果:
data.routeSetTest(“R103”)
在此说明中之前已经对其进行了介绍。
在这种情况下,对该对象分配了存储器索引53,该索引是被分配给识别为“R103”的路由的CIXL路由存储器中的索引。
如下示出RouteMemoryTest类的VDM++规范说明:
Class RouteMemoryTest is subclass of MemoryTest
operations
public
consistent:CIXLApplicationData==>bool
consistent(data)==
return
data.objectDeclared(
mk_token(<route>),memoryInd
);
public
evaluate:CIXLState*CIXLApplicationDate==>bool
evaluate(state,data)==
return
evaluateMemory(
state.memory(mk_token(<route>),memoryInd)
)
pre consistent(data);
protected
evaluateMemory:Memory==>bool
evaluateMemory(memory)==is subclass responsibility;
end RouteMemoryTest
该规范说明包含涉及所有类型的路由存储器测试的三个操作。
第一操作关于路由存储器中包含的中央联锁系统(CIXL)应用数据指定了路由存储器测试的条件。该条件规定(state),在中央联锁系统(CIXL)应用数据中必须具有与路由存储器测试的存储器索引相对应的类型<route>的对象的声明。换句话说,必须分配路由存储器测试的存储器索引,作为中央联锁系统(CIXL)路由存储器中的索引。
第二操作定义在当前CIXL状态的情况(context)下如何评估路由存储器测试,以及定义包含测试的中央联锁系统(CIXL)应用数据。该操作规定,评估的结果是关于存储器测试的存储器索引处的路由存储器的数据值来评估路由存储器测试的结果。例如,在以上介绍的路由设置测试对象的情况下,关于索引53处的中央联锁系统的路由存储器的<state>和<prohibited>数据的值来进行评估。
第二操作的前提是,路由存储器测试相对于作为第一操作所规定条件的数据是一致的。这意味着,例如,为了正确地评估路由设置测试,假设在中央联锁系统的路由存储器的索引53处存储数据。
在路由存储器上执行的实际测试依赖于路由存储器测试的类(在VDM++规范说明中利用表达式“is subclass responsibility”来表示)。在路由设置测试的情况下,在路由存储器测试的存储器索引处的中央联锁系统的路由存储器的<set>数据的值必须等于1。在以下给出的RouteSetTest类的操作中对此解释(interpretation)进行了规定。
Class RouteSetTest is subclass of RouteMemoryTest
operations
private
evaluateMemory:Memory==>bool
evaluateMemory(memory)==
return memory.dataEqualTo(mk_token(<set>),1);
end RouteSetTest
因此,给出在索引53处的路由存储器的<set>数据的当前值,实例路由设置测试将被评估为真。
编译过程的验证
使用人类用户友好的语言的控制程序或应用数据的离线预备过程包括:在源代码上执行必需的语法和语义检查以及控制系统的特定数据的任何必要翻译之后,将应用数据源代码转换为目标代码,该目标代码要被在线地安装在处理单元中,而上述必要翻译是将仅仅被离线支持的控制系统的特定数据翻译成被在线处理器支持的等效数据。
编译器通常还执行冗余的操作,以验证源代码到目标代码的正确转换,并且在应用数据上执行另外的安全性和复杂性分析。
所述冗余操作的目的是,验证应用数据上的语义检查,以及验证源代码到目标代码的正确转换。这些操作在以中间格式表示的代码上执行,该以中间格式表示的代码将从源代码和编译目标代码生成。如在VDM++规范说明中规定的,通过“executing it”以及验证得到的目标(object)满足中央联锁系统应用数据的不变性,在中间源代码(从源代码生成)上执行冗余语义检查。通过执行从编译目标代码生成的中间代码与从源代码生成的中间代码的比较,来验证源代码到目标代码的正确转换。
根据本发明,通过使用以新语言表示的控制程序或应用数据的形式,来执行以上操作,该新语言在这里被定义为中间语言,并且已经被更详细地进行公开。
翻译程序例如第二编译器被用来基于所述中间语言,将以源代码格式生成的应用数据转换为中间代码格式。
又一翻译程序例如反编译器被用来基于所述中间语言,将以目标代码格式表示的应用数据转换为中间代码格式。
通过传统的编译器过程,从源代码获得目标代码。
通过翻译获得的中间代码格式形式的控制程序或应用数据,被进行比较从而评估它们之间的一致性(identity),该翻译也就是将源代码编译成所述中间代码以及将目标代码翻译成所述中间代码。图5以方块图示出用于如上所述验证编译器的原理步骤。
基于新语言使用此方法的较大优点在于这样的事实,也就是源代码到中间代码以及目标代码到中间代码的翻译不受编译和反编译的典型效应的影响,这种效应就是不能通过目标代码的反编译进行重建源代码的某些部分,因此引入了在用于验证编译器的比较过程中的固有系统差异。这种技术优点使得可以实际上按完全自动的方式来执行用于验证编译过程的比较。
如上面已经解释的,根据本发明的基于抽象语法的新语言的使用允许根据不同的高级编程语言来生成源代码,高级编程语言具有人类用户友好的语法。
以相同的方式,从应用数据的一种和相同的中间代码格式,根据本发明的基于抽象语法的新语言的使用允许根据不同的机器语言来生成不同的目标代码。
仿真的检验
数据预备和检验还可以包括目标代码的离线仿真。如果与数据解释器和联锁处理单元状态的VDM++模型结合使用,则在编译过程期间生成的中间代码可以被用作检验仿真的工具。
在图6到图9的图中,更详细地公开了该方法的例子。
图6的图描述了用于特定联锁应用程序的结构。在这里,应用程序的存储器被配置为保存关于相关信号对象(铁路的图像)的状态以及关于在中央联锁处理器和轨道旁对象和其他联锁子系统之间的通信的信息,连同保存用于特定铁路模式的编译的应用数据。
离线仿真器工具可以在这种构造的特定表示上操作,该特定表示可以是目标表示。可以根据铁路图像和通信信息的数据库模式、特定应用数据的数据库模式和编译数据的解释器,来描述仿真器工具。当然,该仿真器工具还仿真中央联锁处理单元应用程序的全部性能(也就是中央联锁处理单元事件的排序和时序)。 (图7)
根据数据语言规范说明,中央联锁处理单元应用程序的VDM++模型是基于中央联锁处理单元状态的对象模型(object model)、包括应用数据的中间形式的对象模型、以及指定如何解释数据的规范语义模型的。(图8)
还按可执行方式规范地指定中央联锁处理单元的整体行为,因此能够例如利用VDM++工具结合之前所述的UML工具使得该模型完全动画式模拟。因此然后,仿真的性能可以与VDM++模型的性能相比较。以这种方式,模型可以作为相对于中央联锁处理单元应用程序自身来检验仿真器工具的性能的工具。
模型检查
除了定义数据类型的操作语义,也就是对于中央联锁处理单元应用程序如何处理它们的描述,还可以为了其他检验目的而指定涉及它们的其他特性。通过指定路由释放数据的转换(transition)表示来考虑铁路交通控制系统的特定例子,该转换表示规定何种条件下可以释放路由、何种条件下一组道岔可以自由移动、以及何种条件下使得可以设置路由,可以使用模型检查方法,来自动地验证一组应用数据满足基本安全性能。
如从以上以及从图9可以明显看到的,数据类型的公共中间表示作为基础,用于开发模型检查工具。也就是说,联锁解释器的规范说明之下的数据类型的相同模型,可以与可选择的语义规范说明一起使用,从而在应用数据自身上执行模型检查。
详细公开的以上例子和方法清楚地示出,具有抽象语法并被用来表示要被执行的控制程序和/或由中央联锁处理单元处理的应用数据的新语言是用于数据预备和检查工具的有用的通用格式。
Claims (17)
1.用于预备和检查软件工具的方法,所述软件工具由可编程控制装置或设备执行,用来执行过程,其中:
a)提供编程语言,用于表示所述软件工具,该语言基于抽象语法尤其是面向对象的语法;
b)从源代码语言和目标代码语言都生成所述编程语言;
c)用所述编程语言来表示控制程序;
d)通过把用基于抽象语法的语言表示的所述控制程序翻译成该抽象语法的源代码格式和/或目标代码格式的语言,得到所述控制程序的源代码格式和/或目标代码格式。
2.根据权利要求1所述的方法,其特征在于:所述可编程控制装置是数据驱动控制系统,具体是用于铁路信号网络的固态联锁,并且其中:
所述网络包括:至少一个中央联锁处理单元,和一个或多个远程或外围操作单元,所述操作单元例如是执行机械任务的一个或多个致动器和/或一个或多个单方面或多方面信号单元、和/或用于测量物理和/或化学参数的一个或多个传感器;
所述网络进一步包括一个或多个数据通信线,所述数据通信线将所述一个或多个远程或外围操作单元的每个连接到所述中央联锁处理单元,用于将输入数据电文发送到所述中央联锁处理单元,并且用于接收由所述中央连锁处理单元生成的输出电文或命令电文;
所述中央联锁处理单元包括通用硬件平台,所述通用硬件平台执行通用软件,所述通用软件也就是控制解释器或联锁功能程序,用于执行系统管理任务,并用于解释特定于网络的应用数据和特定于应用的控制规则,所述特定于网络的应用数据表示各种远程或外围操作单元之间的逻辑关系,而所述特定于应用的控制规则用于管理所述控制系统,也称作联锁逻辑,从而,被施加到所述应用数据或联锁逻辑的所述控制解释器产生特定于该控制系统的控制功能;
所述方法包括以下步骤:用第一编程语言来表示所述应用数据,所述第一编程语言具有人类用户友好的语法;并利用称作编译器的软件工具将所述应用数据翻译成具有机器友好语法的第二语言,也就是可以由所述中央联锁处理单元处理的二进制代码;
并且其中,提供进一步的步骤:
提供具有面向对象语法的第三语言,用于表示所述应用数据;
从利用具有面向对象语法的所述第三语言表示的所述应用数据的语法,导出以所述第一编程语言也就是所述源代码表示的应用数据的语法和/或以所述第二编程语言也就是所述目标代码表示的应用数据的语法;
提供自动翻译程序,用于在所述第三语言与所述第一和/或第二语言之间翻译所述应用数据。
3.根据权利要求1或2所述的方法,其特征在于所述应用数据利用基于面向对象语法的编程语言来表示,并且通过定义各对象以及各对象之间的链接来描述有关下述的配置、功能和状态:所述设备的致动器、信号单元和传感器、网络或装置,所述致动器、信号单元和传感器之间的逻辑关系,以及用于管理其应用数据待由中央联锁处理单元执行的过程的规则。
4.根据前述权利要求中的一项或多项所述的方法,其特征在于:所述基于抽象语法的语言,通过利用结构化和规范化的规范说明来使用面向对象的语法,所述规范说明是通过结合UML和VDM++记号以及通过定义类和关联来获得,所述类和关联表示各种数据类型以及它们之间的关系。
5.根据前述权利要求中的一项或多项所述的方法,其特征在于:所述类定义还包含所述应用数据的语义的规范说明,该规范说明包括数据为了被正确解释而必须满足的限制条件的规范说明以及如何解释数据也就是定义所述数据的意义的规范说明。
6.根据权利要求5所述的方法,其特征在于:根据vDM++模型来定义语义规范说明,用于按特定控制装置或设备的配置来表示所述中央联锁处理单元的状态。
7.一种用于执行过程的软件工具,该软件工具由可编程控制装置或设备执行,其特征在于:该软件工具利用基于抽象语法的编程语言来表示,特别是利用根据前述权利要求中的一项或多项所述的面向对象的语法来表示。
8.根据权利要求7所述的软件工具,其特征在于:所述软件工具被保存在固定的或可移除的存储器装置上,所述存储器装置可以设置在处理单元中,或可以连接到该处理单元并可由该处理单元读取,用于执行所述软件工具。
9.一种用于执行控制过程的系统,其包括硬件装置和软件工具的组合,利用根据前述权利要求中的一项或多项所述的方法来预备和/或检查所述软件工具。
10.根据权利要求9所述的系统,其特征在于:该系统是用于控制铁路网络上铁路交通的铁路信号联锁系统。
11.根据前述权利要求1到6中的一项或多项所述的方法,其特征在于:该方法是软件工具检查方法,包括以下步骤:
a)提供第一编程语言,具有人类友好或机器友好的语法;
b)提供具有抽象语法的第二编程语言;
c)用所述第一编程语言来表示所述软件工具;
d)用所述第二编程语言来表示所述软件工具;
f)提供可执行仿真程序,用于执行用所述第一编程语言表示的所述软件工具的仿真;
e)所述第二编程语言具有根据前述权利要求1到6中的一项或多项所述的抽象语法;
f)基于用所述第二编程语言表示的软件工具来构建可执行模型;
g)把用所述第一编程语言表示的软件工具的仿真得到的模型的状态与基于用所述第二编程语言表示的软件工具的可执行模型的状态进行比较。
12.一种用于对中央联锁处理单元中执行的应用数据进行故障保护编译的方法,包括以下步骤:
a)提供用户编写应用数据,也就是所谓的用人类用户友好的语言编写的最初源代码;
b)提供中央联锁处理单元,其可以通过解释所谓的目标或机器代码来执行任务,而所述目标或机器代码是用具有可以由装置解释的语法的装置友好语言来编写的;
c)提供检查器和称作编译器的翻译程序,检查以所述源代码语法表示的应用数据,并将其翻译为以所述目标或机器代码语法表示的应用数据;
以及所述方法进一步的特征在于以下步骤:
d)提供根据前述权利要求1到6的方法所述的第三语言,所述第三语言的语法不同于所述用户友好语言和所述机器友好语言的语法;
e)提供第二编译器,用应用数据的所谓中间代码记号来翻译最初用所述源代码语法表示的应用数据,其中,利用所述第三语言来表示应用数据,并且所述第二编译器执行用所述第三语言表示的应用数据的冗余检查;
f)反编译器包括翻译程序,该翻译程序将用所述目标代码语法表示的应用数据翻译成应用数据的中间形式,在所述中间形式中,用所述第三语言语法来表示所述应用数据;
g)通过比较利用所述第二编译器从最初用所述源代码语法表示的应用数据生成的用所述第三语言语法表示的应用数据和利用所述反编译器从用所述目标代码语法表示的应用数据生成的用所述第三语言语法表示的应用数据,来执行最初用所述源代码语法表示的应用数据和反编译的应用数据的比较。
13.根据权利要求12所述的方法,其特征在于:
所述软件工具是待由控制系统的所述中央联锁处理单元执行的控制程序或应用数据,所述控制系统是所谓的数据驱动类型,并且特别是固态联锁系统。
14.根据权利要求12或13所述的方法,其特征在于:所述第三编程语言或工具基于面向对象的语法,并且通过定义各对象和各对象之间的链接来描述有关下述的配置、功能和状态:设备或装置的致动器、信号单元和传感器,所述致动器、信号单元和传感器之间的关系以及管理控制过程的规则。
15.根据前述权利要求12到14的一项或多项所述的方法,其特征在于:所述基于抽象语法的第三语言通过使用结构化和规范化的规范说明来使用面向对象的语法,所述规范说明是通过组合UML和VDM++记号以及通过定义类和关联来获得的,所述类和关联表示各种数据类型以及它们之间的关系。
16.根据前述权利要求12到15的一项或多项所述的方法,其特征在于:所述类定义还包括所述应用数据的语义的规范说明,所述应用数据的语义的规范说明包括数据为了被正确解释而必须满足的限制条件的规范说明以及如何解释数据也就是定义数据意义的规范说明。
17.根据权利要求16所述的方法,其特征在于:根据VDM++模型来定义所述语义规范说明,用于按特定控制装置或设备的配置表示处理单元的解释器的状态。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP05425257 | 2005-04-21 | ||
EP05425257.2 | 2005-04-21 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101167050A true CN101167050A (zh) | 2008-04-23 |
Family
ID=34982109
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2006800103660A Pending CN101167050A (zh) | 2005-04-21 | 2006-04-05 | 用于铁路信号网络的控制系统 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20080189689A1 (zh) |
EP (1) | EP1875342B1 (zh) |
CN (1) | CN101167050A (zh) |
AU (1) | AU2006237274B2 (zh) |
WO (1) | WO2006111469A2 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102495766A (zh) * | 2011-11-30 | 2012-06-13 | 清华大学 | 设备规范与设备行为的一致性检测系统 |
CN102501891A (zh) * | 2011-11-02 | 2012-06-20 | 株洲南车时代电气股份有限公司 | 一种列车运行监控装置管理系统 |
CN113454551A (zh) * | 2019-02-18 | 2021-09-28 | 西门子股份公司 | 用于工业生态系统之间互操作性的自动化代码生成器 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100871563B1 (ko) * | 2007-02-14 | 2008-12-02 | 삼성전자주식회사 | 컴포넌트 기반의 소프트웨어 개발을 위한 장치 및 방법 |
US20090288068A1 (en) * | 2008-05-13 | 2009-11-19 | Facton Gmbh | Domain model concept for developing computer applications |
US20100088671A1 (en) * | 2008-10-07 | 2010-04-08 | Heiko Rentsch | Project scopes for configuration based computer application projects |
US8843908B2 (en) * | 2010-12-23 | 2014-09-23 | Microsoft Corporation | Compiler validation via program verification |
ES2573777T3 (es) * | 2012-02-23 | 2016-06-10 | Siemens Aktiengesellschaft | Procedimiento para controlar, asegurar y/o vigilar el tráfico ferroviario así como sistema de control de operaciones |
US8966441B2 (en) * | 2012-07-12 | 2015-02-24 | Oracle International Corporation | Dynamic scripts to extend static applications |
EP2787435A1 (en) * | 2013-04-05 | 2014-10-08 | 2236008 Ontario Inc. | Compilation validation |
EP2799981A1 (en) * | 2013-04-29 | 2014-11-05 | Siemens Aktiengesellschaft | Method for providing code, code generator and software development environment |
US8738931B1 (en) * | 2013-10-21 | 2014-05-27 | Conley Jack Funk | Method for determining and protecting proprietary source code using mnemonic identifiers |
US9658837B1 (en) * | 2015-11-06 | 2017-05-23 | Sentry Insurance a Mutual Company | Integration of independent platforms |
EP3395643B1 (en) * | 2017-04-28 | 2020-03-11 | ALSTOM Transport Technologies | Method for checking safety requirements of ssi-based data used in an interlocking control system |
CN107985348B (zh) * | 2017-10-20 | 2021-01-26 | 北京全路通信信号研究设计院集团有限公司 | 一种控制方法和列车运行控制系统 |
JP7068941B2 (ja) * | 2018-06-22 | 2022-05-17 | アズビル株式会社 | プログラム比較装置、プログラム比較方法および比較プログラム |
US10795806B2 (en) | 2019-03-08 | 2020-10-06 | Voluntis S.A. | Devices and methods for generating a stream of health-related data |
US11126414B1 (en) * | 2020-03-13 | 2021-09-21 | RedLore | Method and system for changing the behavior of a connected field device |
US11858543B2 (en) * | 2020-12-21 | 2024-01-02 | Progress Rail Services Corporation | System and method for controlling operations of a train using energy management machine learning models |
CN114153740B (zh) * | 2021-12-10 | 2024-10-01 | 北京交通大学 | 一种联锁测试案例自动生成方法及系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2348034A (en) * | 1999-03-17 | 2000-09-20 | Westinghouse Brake & Signal | An interlocking for a railway system |
EP1043660B1 (de) * | 1999-04-09 | 2014-06-25 | Siemens Aktiengesellschaft | Fehlersicheres Automatisierungssystem |
US6629313B1 (en) * | 2000-06-29 | 2003-09-30 | Microsoft Corporation | In-line database access statements without a pre-compiler |
JP4403794B2 (ja) * | 2003-02-28 | 2010-01-27 | 株式会社デンソー | 制御プログラムの検査方法及び検査装置及び検査プログラム |
US7415700B2 (en) * | 2003-10-14 | 2008-08-19 | Hewlett-Packard Development Company, L.P. | Runtime quality verification of execution units |
-
2006
- 2006-04-05 EP EP06725558.8A patent/EP1875342B1/en active Active
- 2006-04-05 AU AU2006237274A patent/AU2006237274B2/en active Active
- 2006-04-05 WO PCT/EP2006/061324 patent/WO2006111469A2/en active Application Filing
- 2006-04-05 US US11/910,527 patent/US20080189689A1/en not_active Abandoned
- 2006-04-05 CN CNA2006800103660A patent/CN101167050A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102501891A (zh) * | 2011-11-02 | 2012-06-20 | 株洲南车时代电气股份有限公司 | 一种列车运行监控装置管理系统 |
CN102501891B (zh) * | 2011-11-02 | 2014-07-09 | 株洲南车时代电气股份有限公司 | 一种列车运行监控装置管理系统 |
CN102495766A (zh) * | 2011-11-30 | 2012-06-13 | 清华大学 | 设备规范与设备行为的一致性检测系统 |
CN113454551A (zh) * | 2019-02-18 | 2021-09-28 | 西门子股份公司 | 用于工业生态系统之间互操作性的自动化代码生成器 |
Also Published As
Publication number | Publication date |
---|---|
EP1875342B1 (en) | 2018-12-19 |
EP1875342A2 (en) | 2008-01-09 |
WO2006111469A3 (en) | 2007-01-11 |
US20080189689A1 (en) | 2008-08-07 |
AU2006237274A1 (en) | 2006-10-26 |
AU2006237274B2 (en) | 2010-05-20 |
WO2006111469A2 (en) | 2006-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101167050A (zh) | 用于铁路信号网络的控制系统 | |
Papadopoulos et al. | Model-based synthesis of fault trees from matlab-simulink models | |
Bowen | Towards verified systems | |
CN112558555A (zh) | 维护和调试 | |
Lochau et al. | Delta-oriented model-based integration testing of large-scale systems | |
US11372625B2 (en) | Tool compiler | |
Grunske et al. | Automatic generation of analyzable failure propagation models from component-level failure annotations | |
Shin et al. | Model-based automatic test case generation for automotive embedded software testing | |
Svendsen et al. | The future of train signaling | |
Uludağ et al. | Integration of systems design and risk management through model‐based systems development | |
Beckers et al. | A structured and systematic model-based development method for automotive systems, considering the OEM/supplier interface | |
Ge et al. | Correct‐by‐construction specification to verified code | |
Badeau et al. | Generating and verifying configuration data with OVADO | |
Berger et al. | Multiple analyses, requirements once: simplifying testing and verification in automotive model-based development | |
Germino et al. | An XSLT-based proposal to ease embedded critical systems tools implementation, verification, validation, testing, and certification efforts | |
Margaria et al. | Leveraging applications of formal methods, verification and validation | |
Berkenkötter | OCL-based validation of a railway domain profile | |
Ponsard et al. | Assessment of emerging standards for safety and security co-design on a railway case study | |
Belli et al. | A case study in formal analysis of system requirements | |
Palshikar | Safety checking in an automatic train operation system | |
Berezowski et al. | Recommendations for Developing Safety-Related Systems with Graphical Languages. | |
Nardone et al. | Automatic generation of formal models for diagnosability of DES | |
da Cruz et al. | Ambers: Improving requirements specification through assertive models and scade/doors integration | |
Khan et al. | Validation of component based software development model using formal b-method | |
Ray | Automated translation of matlab Simulink/Stateflow models to an intermediate format in hyvisual |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20080423 |