修改面向对象的程序的方法、运行时系统和自动化系统技术方案

技术编号:2865698 阅读:191 留言:0更新日期:2012-04-11 18:40
为完成对运行中的面向对象的程序,尤其是用于控制自动化设备的程序的修改,本发明专利技术提供一种过程,其中该程序被以中间代码的形式临时存储于存储器中,中间代码在运行时可以被转换为可执行的机器代码,该过程包括:提供形式也为中间代码的修改程序或修改程序模块;对该修改程序的中间代码或修改程序模块的中间代码和运行程序的中间代码进行比较,以确定所述修改;以及对运行程序完成所述修改。另外,本发明专利技术提供相应改编的运行时系统,该系统适于完成该过程,以及将这个运行时系统合并到自动化设备中。(*该技术在2024年保护过期,可自由使用*)

【技术实现步骤摘要】

一般而言,本专利技术涉及工业自动化系统,尤其是用于修改运行中的面向对象的程序,特别是用于控制自动化设备的程序,的过程,本专利技术还涉及用于执行自动化设备的控制单元中的控制程序的运行时(run-time)系统。
技术介绍
控制系统正得到越来越经常的使用,尤其是用于控制或管制大规模工业进程或操作序列,例如,在工业制造或最终装配中。控制系统被类似地用于监控以最大可能程度自动运行的这样的进程,以及被用于示意当前的进程状态。这样的自动化设备或自动化设施,由于促进了高度的生产力,在工业制造中已取得突出的重要性。为了避免生产中断,必须能够修改自动化设备的控制程序而不必停止自动化设备或使其处于某种状态。否则,比如在包装机的情况下,如果由于程序修改丢失了控制程序与包含在其中的变量的当前内容之间的关系,并且因此关于当前进程状态的信息不再能获得,将必须移走全部包装材料和要包装的货物。为了能使修改程序得到使用而不论自动化设备的各个当前状态,需要满足一定的要求。一方面,程序转换必须实时发生。这意味着控制程序所设定的响应时间或执行间隔一定不能被超出。另外,至关重要的是当前程序状态,尤其是数据,比如,包含关于自动化设备的当前进程状态的信息,应被保留并继续由修改程序使用。在SPS控制系统的情况下,由于它们被用于工业自动化中,目前各种不同的程序设计系统已经能够实现程序修改,而不必中断程序的执行。这种特征常被称作“在线程序设计”。然而,这些系统使用的进程需要控制系统的程序设计系统和运行时系统之间的紧密协调。为此,程序设计系统在修改之前管理关于程序状态的信息,由此从中推导出实现程序修改所需要的必要措施。然而,现代的程序设计系统常常具有在功能方面的局限性的特征。因此,比如,实时方面通常只有很少被考虑到。宁可假定程序执行的中断的持续时间是非关键性的。这实际上是程序设计系统中的情况,程序设计系统仅允许修改程序命令,但是,不支持对变量对象或对象结构(举例)的改变。其它系统利用全局数据对象,其中用户手动对程序变量设定地址。这里,用户负责在完成程序修改之后保证变量保持它们的原来内容。这样的简单程序设计模型的主要缺点是它们不是面向对象的,并且不允许数据封装。对于所用的程序设计系统的需要导致仅可能使用已经专门为在工业控制工程领域中使用而开发的程序设计工具。
技术实现思路
因此,假定迄今强加于所使用的程序设计系统的功能性上的限制被大范围的或者甚至基本上完全减小,本专利技术的目的在于确定关于解决怎样在自动化设备的控制程序运行时完成修改的问题的建设性方法。本专利技术的目的尤其在于使用一种尚未专门为此目的改写的程序设计工具来修改程序。本专利技术的另一任务是一种用于在修改运行中的控制程序时遵循自动化设备的实时需要的方法的指示。使用基于后附的独立权利要求书之一的对象可以轻而易举地完成该任务。有用的实施例和进一步发展在从属权利要求书中进行概述。然而,首先,将定义或阐明几个总的来说可应用到说明书或权利要求书的术语。在面向对象的程序设计中,一个类描述一个复制对象的抽象实体。对象组成类的一个实例,即,基于类模板产生的在计算机系统存储器中的一个图像。类可以有不同的所谓的成员。除了别的以外,这些成员还包括该类的程序(method)和字段。子类也可以是类的一个成员。堆栈是指专用的存储区,程序在该存储区中缓存状态数据。堆(heap)是存储器的一部分,数据结构被临时存储于其中,堆的存在和大小在运行程序之前不能确定。根据本专利技术的用于修改运行中的面向对象的程序,尤其是以中间代码形式被存储在存储器中且能够在运行时被转换为可执行的机器代码的用于控制自动化设备的程序,的方法,包括提供形式上也为中间代码的修改程序或修改程序模块,将修改程序的中间代码和运行程序的中间代码进行比较以确定所述修改,以及在运行程序上完成所述修改。这种过程的最大好处在于从源代码产生中间代码的程序设计工具不必产生关于所完成的程序修改的任何附加信息的事实。因此,程序设计工具不需要用以在运行进程中完成程序修改的任何附加功能。这种任务由运行时系统,尤其是eCLR运行时系统(嵌入式通用语言运行时)承担。这使得在该进程使用尚未专门开发用于工业控制工程领域的程序设计工具运行时能支持程序修改。这里,优选使用CIL(通用中间语言)或MSIL(微软中间语言)中间代码作为中间代码。CIL和MSIL是用于相同中间代码的不同术语。CIL中间代码是微软的NET平台的一个组成部分。使用CIL中间代码的好处在于它包含对于类的构造的完整描述的事实。优选的是使用也作为.NET平台的一部分的JIT(必要时“Just-in-time”)编译器将中间代码转换为可执行的机器代码。优选的是对运行程序完成修改包括产生一个或多个第一程序对象;将包含在一个或多个第二程序对象中的数据复制到上述的一个或多个第一程序对象,第二程序对象是部分运行程序;以及从一个或多个第二程序对象切换到一个或多个第一程序对象,同时第二程序对象是部分运行程序。这样做的好处是通过在幕后执行某些步骤,有可能准备程序修改。另外,生成一个对于完成修改很有用的修改程序。通常,这由运行时系统来完成,并用于提供完成程序修改所需要的步骤的一个组织的自动顺序。为此,比如,运行时系统产生中间代码,中间代码由JIT编译器转换成可执行的机器代码,并被自动执行。优选地,在完成修改之后,被分配给不再被使用的程序对象的存储器被解除分配。CLR运行时系统的所谓的“垃圾收集”功能可用于此目的。在自动化设备上运行的进程通常受一定的实时需求的支配。基于必须遵守的实时准则,受由程序所控制的自动化系统的至少一个响应时间和/或程序的至少一个执行间隔的支配,当完成修改时,设置一定不能被超出的最大时间是可能的。为此,该过程包括能够借助于仿真确定完成修改所需的时间的有用功能。还有一个特别好处在于所述修改在至少两个子阶段完成的事实。这里,在第一子阶段期间完成准备措施,比如,产生程序对象和复制数据,并在第二子阶段中,比如,系统被切换到新近产生的程序对象。如果在第一子阶段期间,比如可能导致已被复制的数据被修改的事件以运行程序的操作序列发生,在较近的时间点处重复第一子阶段是可能的。如果运行程序在激活和空闲状态之间循环切换,在控制程序的情况下这是经常发生的,当程序切换到它的激活状态时,除了其他事情外,该过程可方便地计算一个或多个时间点。如果要完成的修改所需的时间也为已知,则可能对于一个特定时间点确定所述修改是否能完成,同时遵守自动化设备的实时条件。另外,本专利技术还包括一种用于在自动化设备的控制单元中执行控制程序,尤其是用于完成上述过程的运行时系统,该系统包括用于读写存储器内容的装置,其中控制单元具有可设定地址的存储器,控制程序被以第一中间代码的形式可恢复地保存在第一存储区中;当该进程在自动化设备中运行时,至少部分第一中间代码可被转换为可执行控制命令保存在第二存储区中;运行时系统响应于在第三存储区分配的第二中间代码的提供,由此修改自动化设备中的进程顺序。自动化设备中的操作序列可以通过以下步骤进行方便的修改选择第三存储区中的至少一个分区,和第二存储区中的至少一个存储单元,其中存储第二存储区的一个分区的起始地址;比较在第一存储区中存储的第一中间代码和在第三存储区中存储的第本文档来自技高网
...

【技术保护点】
一种用于修改当前正在执行的面向对象的程序,尤其是用于控制自动化设备的程序的方法,其中在运行时能被转换成可执行的机器代码的中间代码的形式的所述程序被临时存储在存储器中,该方法包括:提供也呈中间代码形式的修改程序或修改程序模块; 分别比较所述修改程序、所述修改程序模块的所述中间代码和所述运行程序的所述中间代码,以确定所述修改;在所述运行程序中完成所述修改。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:迈克尔皮蒂格斯蒂芬施莱特汉诺利万多韦斯基
申请(专利权)人:KW软件有限公司
类型:发明
国别省市:DE[德国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1