专利名称:将以自动化语言表示的控制程序翻译为中间语言的方法
技术领域:
本发明涉及一种用于将以自动化语言表示的控制程序自动地翻译为中间语言的方法以及一种按照这种方法运行的计算机程序,特别是一种所谓的用于创建和维护作为用于待控制和/或待监控技术流程的自动化解决方案的控制程序的开发环境,并且此后涉及一种以编程装置为形式或者编程装置类型的设备,在该设备上执行或者能够执行这样的计算机程序/这样的开发环境。
背景技术:
对于创建用于控制和/或监控技术流程的控制程序(自动化解决方案)已知的是,程序员在所谓的编辑器上创建其各种控制程序,该编辑器例如是开发环境的组成部分。此外程序员还使用由各种自动化语言(编程语言)提供的基本操作。当控制程序的创建结束时,即将该控制程序翻译为可执行的代码。在将所创建的控制程序翻译为可执行的代码的范畴中时常设计为,即所创建的控制程序在第一个步骤中被转换成简单的中间语言,也就是在专业术语中也被称为中间表述的表达。这就易于为例如存储程序控制器、分散的现场设备、驱动控制装置等各种自动化设备的不同的处理器生成可执行的代码,在这些自动化设备上执行用于控制各个技术流程的控制程序。另外,控制程序中所包含的基本操作必须以中间语言在一序列指令中进行描述,也就是说,一个基本操作被转换成分别至少一个以中间语言表示的指令。在将程序翻译为中间语言时,为此所设的功能、例如所谓的编译器会对基本操作进行识别并且将该基本操作转换成相应的以中间语言表示的指令序列。这种转换所基于的转换规则被集成在编译器中。这种做法的不足在于,只有当对编译器被这样进行扩展,使得编译器识别并相应地处理新的基本操作时,才能以编程语言定义和使用这些新的基本操作。
发明内容
据此,本发明的目的相应地在于,提出一种用于将以自动化语言表示的控制程序自动地翻译为中间语言的方法,该方法在上述方面的优点在于额外的灵活性,并且特别是允许为自动化语言添加新的基本操作并且允许添加相应的转换规则以用于将该自动化语言转换为中间语言。根据本发明,上述目的通过权利要求1所述的特征得以实现。为此,在开头所述类型的方法中,控制程序包括多个基本操作,并且其中对每个基本操作自动地以中间语言在一序列指令中进行描述,在该方法中设计为:为了将控制程序自动地翻译为中间语言,访问规格数据库,该规格数据库包括各自的转换规则,用于至少多个能在控制程序中使用的以自动化语言表示的基本操作,该转换规则允许对输入参数列表进行处理,并且在连同具有在转换规则中并未限定的多个输入参数的输入参数列表调用转换规则的情况下,该转换规则定义另一个转换规则的包含(Einbeziehung),其中,另一个转换规则相应于多个输入参数定义另一个转换规则的递归包含(rekursive Einbeziehung)。本发明的优点首先就在于,由于使用了规格数据库,就不再需要转换规则作为编译器的组成部分。实际上,规格数据库在个别情况下可被设计为分布式的规格数据库,其中,规格数据库的第一部分作为编译器的部分,并且规格数据库的第二部分则不包括在编译器内,而是被用于使得编译器能够随时访问这一部分规格数据库。下面对其整体并未包含在编译器内的规格数据库做进一步说明。只要是下述说明所涉及到的,在两种实施变型之间就不存在任何系统性的差别,因为重点是至少有一部分规格数据库并不包含在编译器内,并且因此可独立于编译器改变,因而能够随时添加或修改规格数据库或者该规格数据库的并未包含在编译器内的那一部分。本发明的另一个优点在于,转换规则允许对输入参数列表、并且特别是这些包括并未限定的多个输入参数的输入参数列表进行处理。包括并未限定的多个输入参数的转换规则在规格数据库中设计为用于转换基本操作的基础,这种转换同样可能包括并未限定的多个参数。这样的基本操作例如用于逻辑与-运算,其已知地允许基本上不受限制的数量的参数的运算。在这种情况下设计为,为了实现包括多个参数的基本操作的转换,使用将在该基本操作中所设定的所有参数汇总在其内的输入参数列表来调用各个转换规则。为了实现这一点、即为了能够将数量事先未知的参数传输给各个转换规则,设计为:在转换规则中并不限定输入参数的各个数量。此外,用于处理所传输的参数的转换规则还定义另一个转换规则的包含,并且该另一个转换规则相应于多个作为基础的基本操作的参数的自身又定义相同的另一个转换规则的包含。另外首先调用的转换规则能被理解为外部转换规则,在该外部转换规则中所包含的另一个转换规则则相应地能被理解为内部转换规则。因此,从外部转换规则出发,将与通过并未限定的输入参数列表传输给外部转换规则的输入参数的数量相对应的内部转换规则包含在其中。然后,在另一个内部转换规则中实现作为基础的基本操作的功能的实际的转换。本发明的有利的设计方案是从属权利要求的主题。所使用的引用内容指出了通过各个从属权利要求的特征对独立权利要求的主题进行改进的方案;而不应理解为放弃为所引用的从属权利要求的特点之间的组合提供独立、实质的保护。此外,在权利要求的布局方面,在详细地具体化从属权利要求中的特征方面由此出发,即在各个之前的权利要求中不存在这种限制。在所述方法的一种实施方式中设计为,具有在转换规则中并未限定的多个输入参数的转换规则在为包含而设置的另一个内部转换规则中包括至少一个第一执行块和一个第二执行块,其中,至少一个第一执行块为输入参数的数量固定的情况定义作为基础的基本操作的翻译,并且其中,第二执行块为多个输入参数的情况定义基础作为的基本操作的翻译。在这里至少该第二执行块包括其自身的另一个内部转换规则的递归包含。因此,例如第一执行块能被设计为用于处理正好是一个输入参数的情况,另一个第一执行块被设计为用于处理例如正好是两个输入参数的情况,再另一个第一执行块则被设计为用于处理例如正好是三个输入参数的情况等等。在本发明的一种特殊的实施方式中设计为,具有在转换规则中并未限定的多个输入参数的转换规则在为包含而设置的另一个内部转换规则中包括至少一个第一执行块和一个第二执行块,其中,第一执行块为正好是一个输入参数的情况定义作为基础的基本操作的翻译,并且其中第二执行块为多个输入参数的情况定义作为基础的基本操作的翻译并且包括其自身的另一个内部转换规则的递归包含。为便于理解,在参数数量并未预先设定的基本操作的转换中所涉及到的转换规则称作转换规则和另一个转换规则或者是外部转换规则和内部转换规则。实际上,将首先涉及到的转换规则称为外部转换规则非常合理,因为将基本操作转换为中间代码首先就要用到这个外部转换规则。对于访问规格数据库的编译器而言,使用外部转换规则也能被理解为调用规格数据库中的外部转换规则。外部转换规则自身也定义了用于作为基础的基本操作的实际转换所需要的另一个转换规则、即内部转换规则。称作内部转换规则就意味着,该内部转换规则不需要像子程序或是类似的那样被包含在外部转换规则中,而仅仅应定义两个转换规则之间的层级关系。因此,内部转换规则从来都不会由编译器直接调用,而是只有当外部转换规则定义了需要调用一个这样的内部转换规则时,才需要这样。内部转换规则设计用于进行递归的调用,并且根据原有的作为基础的基本操作的参数的数量以及由此被传输给外部转换规则的输入参数的数量所要求的频繁程度来进行这种递归的调用。为了实现内部转换规则而设计为,该内部转换规则包括第一执行块和第二执行块,以及第一执行块为正好是一个输入参数的情况定义作为基础的基本操作的翻译。那么,第二执行块就被设计为用于为多个输入参数的情况实现作为基础的基本操作的翻译,并且包括各个内部转换规则的递归包含,即按照参数的各个数量多次自身地调用内部转换规则。在本发明的一种特殊的实施方式中设计为,在规格数据库中以机器可读取的代码、尤其是XML代码来定义每个转换规则。这种在规格数据库中可由机器读取的代码具有这样的优点,即编译器可直接对该规格数据库以及存储在其中的转换规则的定义进行处理。当使用XML代码作为机器可读取的代码时,就具有这种优点,即这种XML代码一方面可由机器读取,另一方面资深程序员也可以理解,因而能够对规格数据库中的转换规则的定义进行手动修改。前述目的还通过一种用于创建和维护作为用于待控制技术流程的自动化解决方案的控制程序的开发环境由此得以实现,即这种开发环境包括如这里和后面所述的方法的执行以及访问规格数据库的可能性,其中,规格数据库包括各自的转换规则,用于至少多个能在控制程序中使用的以自动化语言表示的基本操作。本发明就这方面而言以软件实现并且因而还涉及一种具有程序编码工具的计算机程序,用于当计算机程序、即例如前述类型的开发环境或者这种开发环境的部分功能在编程装置上被执行用于创建和维护作为用于待控制技术流程的自动化解决方案的控制程序时,执行根据权利要求1至4中任一项所述的全部步骤,能够执行用于实现前述方法和必要时实现各种单独的设计方案的全部步骤。因此,本发明最后还涉及一种用于创建和维护作为用于待控制技术流程的自动化解决方案的控制程序的编程装置,其中,该编程装置以公知的方式和方法具有以微处理器为形式的或微处理器类型的处理单元和存储器,其中,在该存储器中载入如上面简述且在后面将更加详细地予以说明的计算机程序,在编程装置工作时通过该处理单元来执行该计算机程序。
下面借助附图详细阐述本发明的一种实施例。相互对应的要素或元件在所有附图中均以同样的参考标号标示。实施例或每一个实施例不应被理解为对本发明的限制。更确切地说,可在当前的公开的范畴中进行修改和变化,对于专业人员例如根据具体任务的解决方案通过将单个的特征结合普通的特征或特别说明部分所述的特征以及在权利要求和/或附图中所包含的特征或方法步骤进行组合或变换从而能推断出这些修改和变化,并且由于特征之间可相互组合,从而形成新的主题或形成新的方法步骤或者说方法步骤顺序。图中示出:图1示出一种根据利用为此设置的开发环境而创建的控制程序来控制技术流程的自动化系统;图2示出包括多个各自所用的自动化语言的基本操作、以源代码表示的控制程序,然后是包括以中间语言表示的分别描述基本操作的一序列指令的、以中间代码表示的控制程序以及最后以机器语言表示的控制程序;图3示出借助转换规则对基本操作以中间语言在一序列指令中进行描述的图解;图4示出包括编辑器和编译器的开发环境的图解的说明,其中,开发环境、特别是开发环境的编译器能够访问包括多个转换规则的规格数据库;图5示出一个参数数量基本不限的基本操作的示例;图6示出包含多个单个操作形式的参数的基本操作的层级图;图7示出用于处理基本操作的特例的转换规则,该基本操作包括参数数量事先未知以及相应的在转换规则中并未限定的多个输入参数;以及图8示出在如图7的转换规则中所包含的另一个转换规则递归调用的结果的图解的说明。
具体实施例方式图1非常简单地示意性地示出了完整的以10标示的、用于控制和/或监控未详细示出和基本上任意的技术流程12的自动化系统。自动化系统10能够正好包括一个自动化设备14或多个自动化设备14。在多个自动化设备14的情况下,这些自动化设备通常以公知的方式例如通过总线16相互通信地连接。这个或每个自动化设备14均被设计为用于执行控制程序18,并且各个控制程序18的功能在于通过自动化系统10来确定影响技术流程12的方式和方法。通常使用编程装置20或用作编程装置的标准计算机来创建、管理并维护这种控制程序18。另外为了创建控制程序18,在编程装置20上设置开发环境22,该开发环境如公知的方式包括例如用于创建每个控制程序18的编辑器并且然后包括用于将控制程序18转为尤其是可执行代码的功能。为了要说明能通过编程装置20以及尤其是该编程装置的开发环境22来创建每个控制程序18,还在编程装置20的范围中示出了控制程序18。实际上,对于控制程序18而言,必须在编程装置20方面有着细微的不同。一方面,由于在编程装置20上要保持控制程序18的基础、即在各种自动化语言中用于定义控制程序18的规则的顺序,因此,控制程序18存在于设计装置20上。另一方面,控制程序18也可能至少暂时地以一种能由自动化设备14执行的形式存在于编程装置20上,如果通过开发环境22编译了控制程序18的这种基础并且编译的结果至少暂时保存或者继续保存在编程装置20上。在这里和后面的说明中,控制程序18的每个区块也被称作控制程序,并且其上下文则分别用于说明,这是否涉及以源代码、以中间代码或以可执行代码表示的控制程序。图2对此示出了更多的细节,更确切地说是针对其中基于源代码的控制程序18并不是直接被转换为可执行代码、而是首先转为中间代码的情况。在这里和后面的说明中,将“以源代码表示的控制程序”和“源代码”以及“以中间代码表示的控制程序”和“中间代码”用作同义词。对于“以可执行代码表示的控制程序”和“可执行代码”而言,同样是这种情况。以源代码表示的控制程序即以各种自动化语言表示的控制程序。以中间代码表示的控制程序即相同的包含一序列以各种中间语言表示的、映射的基本操作的指令的控制程序。图2在第一区块中示出了以自动化语言表示的控制程序18的图例,并且由此同时示出了以源代码表示的控制程序18。布置在上述区块旁边的第二区块为以中间语言表示的控制程序18的图例,并且由此同时示出了以中间代码表示的控制程序18的图例。而布置在该第二区块旁边的第三区块则示出了以可执行代码表示的控制程序18的图例。为了表示这三个分别相应于控制程序18不同的状态形式的区块,下面简化地使用自动化语言30、中间语言32和机器语言34这三个概念。图2表明,首先,基于以自动化语言30表示的控制程序18,实现向中间语言32的编译或转换,然后,基于以中间语言32表示的控制程序18,实现向能通过每个自动化设备14的处理器执行的机器语言34的翻译或者转换。通过编程装置20的开发环境22,创建以自动化语言30表示的控制程序18,并且然后至少实现向中间语言32的翻译或者转换。向机器语言34的编译或转换能借助同样的开发环境22实现,然而也能在另一台设备上和通过另一个为此所设的软件功能实现。在创建各个以自动化语言30表示的控制程序18时,程序员会使用多个每种自动化语言30 (以该语言创建源代码)中所提供的基本操作36。在中间语言32中,会由每个基本操作36生成一序列38以中间语言32表示的指令,其中,指令的序列38分别包括至少一个以中间语言32表示的指令或者多个以中间语言32表示的指令。接着或者在一个给定的时间点上,将以中间语言32表示的指令序列38编译或转换为以机器语言34表示的可执行代码。图3为此简单地示意性地示出了将以自动化语言30表示的基本操作36转换为以中间语言32表示的指令序列38的图示。描述的是,为了将以一序列以各种自动化语言30表示的基本操作36为形式的控制程序18翻译为中间语言32,访问规格数据库40,该规格数据库包括分别至少多个以自动化语言30表示的能在控制程序18中使用的基本操作36的转换规则42。为便于简单明了,在图3中仅示出了转换规则42。以机器可读取的代码、即XML代码来定义所示的转换规则42。为了能够更好地读取,下面再次插入转换规则42:
权利要求
1.一种用于将以自动化语言(30)表示的控制程序(18)自动地翻译为中间语言(32)的方法,其中,所述控制程序(18)包括多个基本操作(36),并且其中对每个基本操作(36)自动地以所述中间语言(32)在一序列(38)指令中进行描述,其特征在于,为了将所述控制程序(18)翻译为所述中间语言(32),访问规格数据库(40),所述规格数据库包括各自的转换规则(42),用于至少多个能在所述控制程序(18)中使用的以所述自动化语言(30)表示的基本操作(36 ),所述转换规则(42 )允许对输入参数列表(46 )进行处理,并且在连同具有在所述转换规则(42)中并未限定的多个输入参数(50)的所述输入参数列表(46)调用所述转换规则(42)的情况下,所述转换规则(42)定义另一个转换规则(48)的包含,其中,所述另一个转换规则(48 )相应于多个所述输入参数(50 )定义所述另一个转换规则(48 )的递归包含。
2.根据权利要求1所述的方法,其中,具有在所述转换规则(42)中并未限定的多个输入参数(50)的转换规则(42)在为包含而设置的所述另一个转换规则(48)中包括至少一个第一执行块和一个第二执行块(60,62),其中,至少一个第一执行块(60)为输入参数(50)的数量固定的情况定义作为基础的基本操作(36)的翻译,其中,所述第二执行块(62)为输入参数(50)的数量可变的情况定义所述作为基础的基本操作(36)的翻译,并且其中,至少所述第二执行块(62)包括所述另一个转换规则(48)的递归包含。
3.根据权利要求1或2所述的方法,其中,具有在所述转换规则(42)中并未限定的多个输入参数(50 )的转换规则(42 )在为包含而设置的所述另一个转换规则(48 )中包括至少一个第一执行块和一个第二执行块(60,62),其中,所述第一执行块(60)为正好是一个输入参数(50)的情况定义所述作为基础的基本操作(36)的翻译,并且其中所述第二执行块(62)为多个输入参数(50)的情况定义所述作为基础的基本操作(36)的翻译并且包括所述另一个转换规则(48)的递归包含。
4.根据权利要求1,2或3所述的方法,其中,在所述规格数据库(40)中定义每个以机器可读取的代码、尤其是XML代码表示的转换规则(42,48)。
5.一种用于创建和维护作为用于待控制技术流程(12)的自动化解决方案的控制程序(18)的开发环境(22),所述开发环境包括权利要求1,2,3或4中所述的方法的执行以及访问规格数据库(40)的可能性,所述规格数据库包括各自的转换规则(42,48),用于至少多个能在控制程序(18 )中使用的以自动化语言(30 )表示的基本操作(36 )。
6.一种具有程序编码工具的计算机程序,用于当所述计算机程序在编程装置(20)上被执行用于创建和维护作为用于待控制技术流程(12)的自动化解决方案的控制程序(18)时,执行根据权利要求1至4中任一项所述的全部步骤。
7.一种用于创建和维护作为用于待控制技术流程(12)的自动化解决方案的控制程序(18)的编程装置(20),所述编程装置具有处理单元和存储器,在所述存储器中载入根据权利要求6所述的计算机程序,所述计算机程序在所述编程装置(20)运行时通过所述编程装置的处理单元来执行。
全文摘要
本发明涉及一种用于将以自动化语言(30)表示的控制程序(18)翻译为中间语言(32)的方法,控制程序(18)包括多个基本操作(36),对每个基本操作以中间语言在一序列(38)指令中进行描述,该方法特征在于,为了将控制程序(18)翻译为中间语言,访问规格数据库(40),规格数据库包括各自的转换规则(42),用于至少多个能在控制程序(18)中使用的以自动化语言(30)表示的基本操作,该转换规则允许对输入参数列表(46)进行处理,并且在连同具有在转换规则中并未限定的多个输入参数(50)的输入参数列表调用转换规则的情况下,该转换规则定义另一个转换规则(48)的包含,另一个转换规则相应于多个输入参数定义另一个转换规则的递归包含。
文档编号G06F9/45GK103150195SQ20121052639
公开日2013年6月12日 申请日期2012年12月7日 优先权日2011年12月7日
发明者阿克塞尔·施马克 申请人:西门子公司