DE10335989A1 - Online-Änderungen von CIL-Code-Programmen für die Industrieautomatisierung - Google Patents

Online-Änderungen von CIL-Code-Programmen für die Industrieautomatisierung Download PDF

Info

Publication number
DE10335989A1
DE10335989A1 DE10335989A DE10335989A DE10335989A1 DE 10335989 A1 DE10335989 A1 DE 10335989A1 DE 10335989 A DE10335989 A DE 10335989A DE 10335989 A DE10335989 A DE 10335989A DE 10335989 A1 DE10335989 A1 DE 10335989A1
Authority
DE
Germany
Prior art keywords
program
intermediate code
runtime system
changes
memory area
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.)
Granted
Application number
DE10335989A
Other languages
English (en)
Other versions
DE10335989B4 (de
Inventor
Michael Petig
Hanno Lewandowski
Steffen Schlette
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
KW-SOFTWARE GmbH
KW Software GmbH
Original Assignee
KW-SOFTWARE GmbH
KW Software GmbH
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority to DE10335989.3A priority Critical patent/DE10335989B4/de
Application filed by KW-SOFTWARE GmbH, KW Software GmbH filed Critical KW-SOFTWARE GmbH
Priority to US10/903,863 priority patent/US8108852B2/en
Priority to JP2004222850A priority patent/JP4836419B2/ja
Priority to CNB2004100588255A priority patent/CN100388193C/zh
Priority to FR0408467A priority patent/FR2858436B1/fr
Priority to IT001557A priority patent/ITMI20041557A1/it
Publication of DE10335989A1 publication Critical patent/DE10335989A1/de
Priority to JP2007336097A priority patent/JP2008135049A/ja
Application granted granted Critical
Publication of DE10335989B4 publication Critical patent/DE10335989B4/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • G05B19/0426Programming the control sequence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/23Pc programming
    • G05B2219/23255Object oriented programming, OOP
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/23Pc programming
    • G05B2219/23327Modification of program in real time

Abstract

Zur Durchführung von Änderungen an einem in Ausführung befindlichen objektorientierten Programm, insbesondere einem Programm zur Steuerung einer Automatisierungseinrichtung, sieht die Erfindung ein Verfahren vor, bei dem das Programm in Form eines Zwischencodes, der in Laufzeit in einen ausführbaren Maschinencode umgewandelt werden kann, in einem Speicher vorgehalten wird, umfassend das Bereitstellen eines geänderten Programms oder eines geänderten Programm-Moduls ebenfalls in Form eines Zwischencodes, das Vergleichen des Zwischencodes des geänderten Programms beziehungsweise des geänderten Programm-Moduls und des Zwischencodes des in Ausführung befindlichen Programms zur Bestimmung der Änderungen sowie das Durchführen der Änderungen in dem in Ausführung befindlichen Programm. DOLLAR A Weiterhin sieht die Erfindung ein entsprechend angepasstes Laufzeitsystem vor, das zur Durchführung des Verfahrens geeignet ist, sowie die Integration dieses Laufzeitsystems in eine Automatisierungseinrichtung.

Description

  • Die Erfindung betrifft allgemein Automatisierungssysteme in der Industrie, und insbesondere Verfahren zur Änderung eines in Ausführung befindlichen objektorientierten Programms, insbesondere eines Programms zur Steuerung einer Automatisierungseinrichtung, sowie Laufzeitsysteme zur Ausführung von Steuerprogrammen in einer Steuereinheit einer Automatisierungseinrichtung.
  • Steuerungseinrichtungen werden zunehmend eingesetzt, um insbesondere großtechnische Prozesse oder Abläufe, etwa bei industrieller Herstellung oder Endmontage, zu steuern oder zu regeln. Ebenso werden sie zur Überwachung solcher weitestgehend automatisiert betriebenen Vorgänge wie auch zur Veranschaulichung des momentanen Prozeßstadiums benutzt.
  • Entsprechende Automatisierungseinrichtungen oder automatisierte Anlagen haben aufgrund des damit möglichen hohen Produktivitätsgrades eine herausragende Stellung in der industriellen Fertigung erlangt.
  • Um Produktivitätsausfälle zu vermeiden, muß das Steuerungsprogramm einer Automatisierungseinrichtung änderbar sein, ohne die Automatisierungseinrichtung anhalten oder in einen bestimmten Zustand bringen zu müssen.
  • Andernfalls müsste beispielsweise bei einer Verpackungsmaschine das gesamte Verpackungsmaterial sowie das zu verpackende Gut ausgeräumt werden, wenn der Bezug zwischen Steuerungsprogramm und dem aktuellen Inhalt der darin benutzten Variablen durch eine Programmänderung verloren geht und damit die Informationen über den aktuellen Prozeßzustand. der Maschine nicht mehr verfügbar sind.
  • Damit ein geändertes Programm in jedem Zustand der Automatisierungseinrichtung übernommen werden kann, sind bestimmte Anforderungen zu erfüllen. Zum einen muß der Programmwechsel in Echtzeit erfolgen. Dies bedeutet, daß die festgelegten Reaktionszeiten beziehungsweise Ausführungsintervalle des Steuerungsprogramms nicht überschritten werden dürfen. Außerdem muß der aktuelle Zustand des Programms, insbesondere Daten, die beispielsweise Informationen über den aktuellen Prozesszustand der Automatisierungseinrichtung beinhalten, erhalten bleiben und von dem modifizierten Programm weiter verwendet werden.
  • Bei SPS-Steuerungen, wie sie in der Industrie-Automatisierung eingesetzt werden, sind heute schon verschiedene Programmiersysteme in der Lage, Programmänderungen durchzuführen, ohne daß die Programmausführung unterbrochen werden muß. Diese Funktionalität wird häufig als "Online- Programmierung" bezeichnet. Bei diesen Systemen werden jedoch Verfahren angewendet, die eine enge Abstimmung von Programmiersystem und Laufzeitsystem der Steuerung verlangen. Das Programmiersystem verwaltet hierbei die Informationen über den Zustand des Programms vor der Änderung und leitet daraus die erforderlichen Maßnahmen ab, die zur Durchführung der Programmänderungen notwendig sind.
  • Derzeitige Programmiersysteme sind häufig durch zahlreiche Einschränkungen der Funktionalität gekennzeichnet. So wird beispielsweise der Echtzeitaspekt heute allgemein wenig berücksichtigt. Es wird vielmehr davon ausgegangen, das die Unterbrechungsdauer der Programmausführung unkritisch ist. Dies ist bei solchen Programmiersystemen gegeben, die nur Änderungen bezüglich der Programmbefehle zulassen, aber nicht Veränderungen an Variablenobjekten beziehungsweise an der Objektstruktur (Instanzierung) unterstützen. Bei anderen Systemen werden globale Datenobjekte verwendet, wobei der Anwender die Programmvariablen manuell adressiert. Hier ist der Anwender dafür verantwortlich, dass die Variablen nach den durchgeführten Programmänderungen ihren alten Inhalt behalten. Hauptnachteil solcher einfachen Programmiermodelle ist, das sie nicht objektorientiert sind und keine Datenkapselung ermöglichen.
  • Die Anforderungen an das verwendete Programmiersystem führen dazu, dass nur Programmierwerkzeuge verwendet werden können, die speziell für den Einsatz im Bereich industrieller Steuerungstechnik entwickelt wurden.
  • Der Erfindung liegt daher die Aufgabe zugrunde, einen konstruktiven Lösungsansatz anzugeben, wie bei einer weitgehenden oder sogar im wesentlichen vollständigen Reduzierung der bisherigen Einschränkungen der Funktionalität eines verwendeten Programmiersystems Änderungen an einem Steuerungsprogramm einer Automatisierungseinrichtung bei laufendem Prozess durchgeführt werden können. Insbesondere soll zur Änderung des Programms ein Programmierwerkzeug eingesetzt werden können, das nicht speziell für diesen Zweck angepasst ist.
  • Weitere Aufgabe der Erfindung ist es, einen Weg anzugeben, wie bei der Änderung eines in Ausführung befindlichen Steuerungsprogramms die Echtzeitanforderungen einer Automatisierungseinrichtung eingehalten werden können.
  • Die Aufgabe wird in überraschend einfacher Weise durch einen Gegenstand gemäß einem der anhängenden unabhängigen Ansprüche gelöst. Vorteilhafte Ausführungsformen und Weiterbildungen sind in den Unteransprüchen umschrieben.
  • Zunächst werden einige Begriffe definiert oder klargestellt, die für die gesamte Beschreibung und die Patentansprüche gültig sind.
  • In der objekt-orientierten Programmierung bezeichnet eine Klasse ein abstraktes Gebilde, das ein Objekt nachbildet. Ein Objekt ist eine Instanz einer Klasse, das heißt eine Abbildung im Speicher eines Rechnersystems, die nach der Vorlage der Klasse erzeugt wurde.
  • Eine Klasse kann verschiedene sogenannte Mitglieder haben. Hierzu gehören unter anderem Methoden und Felder der Klasse. Auch kann eine Unter-Klasse Mitglied einer Klasse sein.
  • Ein Stack bezeichnet einen reservierten Speicherbereich, in dem ein Programm Zustandsdaten zwischenspeichert. Als Heap wird ein für ein Programm reservierter Teil des Speichers bezeichnet, der zur temporären Aufnahme von Datenstrukturen dient, deren Existenz oder Größe sich vor dem Programmstart noch nicht festlegen läßt.
  • Das erfindungsgemäße Verfahren zur Änderung eines in Ausführung befindlichen objektorientierten Programms, insbesondere eines Programms zur Steuerung einer Automatisierungseinrichtung, wobei das Programm in Form eines Zwischencodes, der in Laufzeit in einen ausführbaren Maschinencode umgewandelt werden kann, in einem Speicher vorgehalten wird, umfasst das Bereitstellen eines geänderten Programms oder eines geänderten Programm-Moduls ebenfalls in Form eines Zwischencodes, das Vergleichen des Zwischencodes des geänderten Programms beziehungsweise des geänderten Programm-Moduls und des Zwischencodes des in Ausführung befindlichen Programms zur Bestimmung der Änderungen, sowie das Durchführen der Änderungen in dem in Ausführung befindlichen Programm.
  • Der große Vorteil dieses Verfahrens liegt darin, dass ein Programmierwerkzeug, das aus einem Quellcode einen Zwischencode generiert, keine zusätzlichen Informationen über die durchgeführten Programmänderungen erzeugen muss. Das Programmierwerkzeug benötigt daher keine zusätzlichen Funktionen zur Durchführung von Programmänderungen bei laufendem Prozeß, diese Aufgabe wird vom Laufzeitsystem, insbesondere einem eCLR-Laufzeitsystem (Embedded Common Language Runtime), übernommen. Hierdurch können, Programmänderungen bei laufendem Prozeß auch von Programmierwerkzeugen unterstützt werden, die nicht speziell auf eine Anwendung im Bereich industrieller Steuerungstechnik hin entwickelt wurden.
  • Vorteilhaft wird als Zwischencode ein CIL-(Common Intermediate Language) beziehungsweise MSIL-(Microsoft Intermediate Language) Zwischencode verwendet. CIL und MSIL sind unterschiedliche Bezeichnungen des gleichen Zwischencodes. Der CIL-Zwischencode ist Bestandteil der .NET-Plattform von Microsoft®. Der Vorteil des CIL-Zwischencodes liegt darin, dass dieser eine komplette Beschreibung für den Aufbau von Klassen enthält.
  • Bevorzugt erfolgt die Umwandlung eines Zwischencodes in ausführbaren Maschinencode mittels eines JIT-(Just in Time) Compilers, der ebenfalls Bestandteil der .NET-Plattform ist.
  • Besonders vorteilhaft umfasst das Durchführen der Änderungen des in Ausführung befindlichen Programms das Erzeugen zumindest eines ersten Programmobjekts, das Kopieren von Daten, die in zumindest einem zweiten Programmobjekt enthalten sind, in das zumindest eine erste Programmobjekt, wobei das zumindest eine zweite Programmobjekt Bestandteil des in Ausführung befindlichen Programms ist, sowie das Umschalten von dem zumindest einen zweiten Programmobjekt auf das zumindest eine erste Programmobjekt als Bestandteil des in Ausführung befindlichen Programms.
  • Dies bietet den Vorteil, dass durch das Ausführen bestimmter Schritte des Verfahrens im Hintergrund die Programmänderung vorbereitet werden kann.
  • Weiterhin wird vorteilhaft zum Durchführen der Änderungen ein Änderungsprogramm generiert. Dies erfolgt in der Regel durch das Laufzeitsystem und dient einem organisierten automatischen Ablauf der für die Programmänderung erforderlichen Schritte. Zu diesem Zweck wird beispielsweise durch das Laufzeitsystem Zwischencode generiert, dieser mittels des JIT-Compilers in ausführbaren Maschinencode umgewandelt und automatisch ausgeführt.
  • Vorteilhaft wird nach Durchführen der Änderungen der von den nicht mehr verwendeten Programmobjekten reservierte Speicher freigegeben. Hierzu kann die als „Garbage Collection" bezeichnete Funktionalität eines CLR-Laufzeitsystems eingesetzt werden.
  • Prozesse, die auf Automatisierungseinrichtungen ablaufen, sind in der Regel bestimmten Echtzeit-Anforderungen unterworfen. Auf Grundlage der einzuhaltenden Echtzeitkriterien kann in Abhängigkeit zumindest einer Reaktionszeit einer durch das Programm gesteuerten Automatisierungseinrichtung und/oder in Abhängigkeit zumindest eines Ausführungsintervalls des Programms eine maximale Zeitdauer festgelegt werden, die bei Durchführen der Änderungen nicht überschritten werden darf.
  • Zu diesem Zweck kann das Verfahren vorteilhaft umfassen, dass die für das Durchführender Änderungen erforderliche Zeitdauer durch Simulation ermittelt wird.
  • Besonders vorteilhaft erfolgt das Durchführen der Änderungen in zumindest zwei Teilschritten, wobei im ersten Teilschritt vorbereitende Maßnahmen durchgeführt werden, beispielsweise das Erzeugen von Programmobjekten und das Kopieren von Daten, und im zweiten Teilschritt beispielsweise das Umschalten auf die neu erzeugten Programmobjekte erfolgt. Wenn während des ersten Teilschritts ein Ereignis im Ablauf des in Ausführung befindlichen, Programms eintritt, durch das beispielsweise bereits kopierte Daten geändert werden könnten, kann der erste Teilschritt zu einem späteren Zeitpunkt wiederholt werden.
  • Wechselt das in Ausführung befindliche Programm zyklisch zwischen einem aktiven Zustand und einem Ruhezustand, was für Steuerungsprogramme die Regel ist, so kann das Verfahren vorteilhaft den Schritt des Berechnens zumindest eines Zeitpunktes umfassen, zu dem das Programm in den aktiven Zustand wechselt.
  • Ist auch die für das Durchführen der Änderungen erforderliche Zeitdauer bekannt, kann so für einen gegebenen Zeitpunkt ermittelt werden, ob die Änderungen unter Einhaltung festgelegter Echtzeitbedingungen einer Automatisierungseinrichtung durchgeführt werden können.
  • Die Erfindung umfasst weiterhin ein Laufzeitsystem zur Ausführung von Steuerprogrammen in einer Steuereinheit einer Automatisierungseinrichtung, insbesondere zur Durchführung des beschriebenen Verfahrens, umfassend Mittel zum Lesen und Schreiben von Speicherinhalten, wobei die Steuereinheit einen adressierbaren Speicher aufweist, und ein Steuerprogramm in Form eines ersten Zwischencodes in einem ersten Speicherbereich abrufbar abgelegt ist, und zumindest Teile des ersten Zwischencodes während des in der Automatisierungseinrichtung ablaufenden Prozesses in ausführbare Steuerbefehle umgewandelt werden, die in einem zweiten Speicherbereich abgelegt werden, und das Laufzeitsystem auf das Bereitstellen eines zweiten Zwischencodes in einem dritten Speicherbereich anspricht und eine Änderung im Prozessablauf in der Automatisierungseinrichtung bewirkt.
  • Vorteilhaft wird die Änderung im Prozessablauf in der Automatisierungseinrichtung bewirkt durch das Selektieren zumindest eines Teilbereiches des dritten Speicherbereiches und zumindest einer Speichereinheit des zweiten Speicherbereiches, in dem die Startadresse eines Teilbereichs des zweiten Speicherbereiches gespeichert ist, durch einen Vergleich des im ersten Speicherbereich gespeicherten ersten Zwischencodes und des im dritten Speicherbereich gespeicherten zweiten Zwischencodes, das Umwandeln des in dem Teilbereich des dritten Speicherbereiches gespeicherten Zwischencodes in ausführbare Steuerbefehle, die in einem vierten Speicherbereich abgelegt werden, das Kopieren von Daten aus dem Teilbereich des zweiten Speicherbereiches in den Teilbereich des dritten Speicherbereiches, sowie das Speichern der Startadresse des vierten Speicherbereiches in der Speichereinheit des zweiten Speicherbereiches.
  • Bei dem Laufzeitsystem handelt es sich vorteilhaft um ein CLR-Laufzeitsystem, insbesondere ein eCLR-Laufzeitsystem, da ein solches Laufzeitsystem Funktionalitäten aufweist, die besonders geeignet sind, um die beschriebene Wirkungsweise zu erzielen.
  • Wie bereits bei der Beschreibung des erfindungsgemäßen Verfahrens erwähnt, wird als Zwischencode bevorzugt ein CIL-Zwischencode verwendet. Weiterhin umfasst das Laufzeitsystem zur Umwandlung eines Zwischencodes in ausführbare Steuerbefehle bevorzugt einen JIT-Compiler.
  • Um die Programmänderungen organisiert auszuführen, weist das Laufzeitsystem vorteilhaft Mittel zum Generieren, Speichern und Ausführen von Steuerbefehlen auf.
  • Bei Einsatz des Laufzeitsystems in Echtzeitumgebungen kann eine Änderung im Prozessablauf innerhalb einer vorgegebenen Zeitdauer bewirkt werden, wobei das Laufzeitsystem hierzu vorteilhaft ein Mittel zur Berechnung der zum Bewirken einer Änderung im Prozessablauf einer Automatisierungseinrichtung benötigten Zeitdauer umfasst.
  • Zur Einhaltung von Echtzeitbedingungen können außerdem die zum Bewirken einer Änderung im Prozessablauf einer Automatisierungseinrichtung ablaufenden Schritte ganz oder teilweise wiederholt werden.
  • Es liegt auch im Rahmen der Erfindung, ein Automatisierungssystem anzugeben, in dem das beschriebene Laufzeitsystem integriert ist und das zur Ausführung des beschriebenen Verfahrens geeignet ist.
  • Die Erfindung wird nachfolgend beispielhaft anhand bevorzugter Ausführungsformen und unter Bezugnahme auf die beigefügten Zeichnungen genauer beschrieben. Dabei bezeichnen gleiche Bezugszeichen in den Zeichnungen gleiche oder ähnliche Teile.
  • Es zeigen:
  • 1: eine schematische Darstellung der Metadaten und der Code-Repräsentaion einer Assembly,
  • 2: schematisch die Modifizierung von Feldern einer Klasse, und
  • 3: ein Prioritäts-Zeit-Diagramm mehrerer Tasks eines laufenden Programms, sowie eines Tasks zur Durchführung von Änderungen an diesem Programm.
  • Im folgenden Ausführungsbeispiel des erfindungsgemäßen Verfahrens kommt ein eCLR-Laufzeitsystem zum Einsatz, das zur Ausführung von Programmen auf Basis des im ECMA-Standard (European Computer Manufacturers Association) spezifizierten CIL-Zwischencodes dient. Ein eCLR-Laufzeitsystem verwendet Spezifikationen der Common Language Infrastructure (CLI) der .NET-Plattform von Microsoft®.
  • Durch das betrachtete eCLR-Laufzeitsystem wird das Ändern eines Steuerprogramms einer Automatisierungseinrichtung bei laufendem Prozess ermöglicht. Ein Steuerprogramm, das in Form von CIL-Zwischencode vorliegt, setzt sich in der Regel aus einzelnen Modulen (Assemblies) zusammen, die ebenfalls jeweils CIL-Zwischencode enthalten. Das Ändern des Steuerprogramms erfolgt daher im wesentlichen durch Übernehmen und Aktivieren einer oder mehrerer geänderter Assemblies.
  • Zunächst werden die Änderungen im Quellcode des Programms beziehungsweise der zu ändernden Assemblies durchgeführt. Der Quellcode kann in unterschiedlichen Programmiersprachen vorliegen, beispielsweise in C# oder in einer der IEC61131-Spezifikation entsprechenden Programmiersprache. Aus dem geänderten Quellcode wird mittels eines Programmierwerkzeuges ein CIL-Zwischencode generiert. Hierzu kann jedes Programmierwerkzeug geeignet sein, das CIL-Zwischencode erzeugen kann.
  • Der CIL-Zwischencode aller geänderten Assemblies wird nun in das eCLR-Laufzeitsystem geladen.
  • Im nächsten Schritt analysiert das eCLR-Laufzeitsystem die neu geladenen CIL Zwischencode-Module und vergleicht diese mit dem sich aktuell in Ausführung befindlichen Programm. Hierbei werden alle vorhandenen Unterschiede detektiert. Ermöglicht wird dies dadurch, dass der CIL-Zwischencode eine komplette Beschreibung für den Aufbau von Klassen enthält. Hierzu gehören die Methoden sowie die Felder einer Klasse.
  • Es wird, dann die Aktualisierung des Programms vorbereitet. Hierbei wird vom eCLR-Laufzeitsystem selbst Programmcode generiert, der die einzelnen Maßnahmen zur Übernahme organisiert. Hierzu gehört insbesondere das Übernehmen aller vorhandenen Daten, die auch in dem geänderten Programm verwendet werden. Des weiteren werden neue Daten initialisiert. Teil des generierten Programmcodes sind sogenannte Kopier-Konstruktoren und Delta-Konstruktoren.
  • Für jede geänderte Klasse wird ein Kopier-Konstruktor und ein Delta-Konstruktor erzeugt. In einem weiteren Schritt werden die Objekte der geänderten Klasse mittels des New-Operators erzeugt. Dann wird der Delta-Konstruktor ausgeführt. In diesem Schritt werden alle zusätzlichen neuen Mitglieder der Klasse erzeugt und/oder initialisiert. Im nächsten Schritt kopiert der Kopier-Konstruktor die aktuellen Werte der Objekte der alten Klasse. Schließlich werden alle Referenzen von den alten Objekten auf die neuen Objekte umgeschaltet. Für diesen Schritt der Ausführung wird das Steuerprogramm für eine kurze Zeitdauer blockiert.
  • Das eCLR-Laufzeitsystem hat die Kontrolle über die Referenzen eines Programms, auch als verwaltete Daten bezeichnet. Eine Referenz wird auf dem Heap gespeichert, auf dem Stack gibt es einen Verweis auf die Speicheradresse im Heap. Die Erstellung und Freigabe, die Speicherbeschaffung und der Zugriff auf Mitglieder einer Klasse wird über Zeiger organisiert.
  • Jede Assembly umfasst sogenannte Metadaten, auf die in Laufzeit zugegriffen werden kann.
  • 1 zeigt die Abhängigkeiten 41 zwischen Metadaten 21 bis 24, 31 und 32 und Code-Repräsentation 11 bis 14 einer Assembly. Jede Assembly enthält Informationen über Klassen, in 1 beispielhaft mit X und Y bezeichnet, sowie deren Felder 31, 32 und Methoden 21 bis 24. Diese Informationen sind Bestandteil der Metadaten einer Assembly. Die Methoden und Felder einer Klasse weisen ebenfalls Abhängigkeiten 42 auf. Wenn eine Assembly in das eCLR-System geladen wird, wird der entsprechende Zwischencode mittels des JIT-Compilers in ausführbaren Maschinencode umgewandelt. Jede Methode einer Klasse wird repräsentiert durch einen kontinuierlichen Code-Block 11 bis 14 im verwalteten Code-Heap des Speichers. Alle erforderlichen Informationen über die Klassen und Methoden, beispielsweise welche Methode zu welcher Klasse gehört oder die Signaturen der Methoden, sind in einem statischen Datenbereich, dem Metadaten-Workspace, gespeichert. Bei Ausführung des Code-Blocks 12, der eine Methode 22 der Klasse X repräsentiert kann beispielsweise auch ein Zugriff 43 auf eine Methode 24 der Klasse Y erfolgen.
  • Jede Assembly besteht aus einer oder mehreren Klassen. Wenn nun eine Assembly geändert beziehungsweise ausgetauscht werden soll, werden zunächst die Unterschiede zwischen korrespondierenden Klassen der in Ausführung befindlichen und der geänderten Assembly bewertet. Hierbei werden verschiedene Fälle berücksichtigt.
  • Der erste Fall ist der, dass beide Klassen die gleichen Methoden und Felder beinhalten und auch der Zwischencode identisch ist. Dies kann beispielsweise mittels einer CRC-Prüfung des Codes geprüft werden. Da keine Änderungen des Zwischencodes vorliegen, sind in diesem Fall keine weiteren Schritte durchzuführen.
  • Im zweiten Fall beinhalten beide Klassen die gleichen Methoden und Felder, wobei eine oder mehrere Methoden der Klasse der geänderten Assembly einen im Vergleich zu der entsprechenden Klasse der in Ausführung befindlichen Assembly geänderten Zwischencode aufweisen. In diesem Fall wird für eine geänderte Methode eine Kompilierung durchgeführt und der Zeiger auf den so erzeugten Code dem Deskriptor der ursprünglichen Methode zugewiesen. Das Umschalten erfolgt in diesem Fall sehr schnell, da nur ein Zeigerelement zugewiesen wird.
  • Im dritten Fall beinhalten beide Klassen nicht die gleichen Methoden. Dies kann der Fall sein, wenn die geänderte Klasse eine zusätzliche Methode aufweist, eine in der ursprünglichen Klasse vorhandene Methode nicht mehr aufweist oder die beiden Klassen Methoden unterschiedlicher Signatur aufweisen. In diesem Fall kann es erforderlich sein, eine Methode zu löschen. Es wird dann eine Prüfung durchgeführt, um festzustellen, ob die zu löschende Methode nach Ausführen aller Änderungen einen Verweis in den aktiven Code beinhaltet. Folgendes Beispiel soll dies veranschaulichen. Betrachtet werden zwei Assemblies A und B, wobei Assembly A die Klasse X beinhaltet und Assembly B die Klasse Y. Die Methode X::process() ruft die Methode Y::process() auf. Wird nun die Methode process() der Klasse Y gelöscht, so werden zusätzlich entsprechende Änderungen in der Methode X::process() durchgeführt. In diesem Zusammenhang kann es auch notwendig sein, mehr als eine Assembly gleichzeitig zu ändern.
  • Im vierten Fall unterscheidet sich zumindest ein Feld der beiden Klassen. In diesem Fall werden Änderungen an den Objekten durchgeführt. Hier wird zunächst eine Prüfung bezüglich gelöschter Felder durchgeführt, die entsprechend der im dritten Fall beschriebenen Prüfung erfolgt. Wenn alle Änderungen zulässig sind, wird ein Kopier-Konstruktor generiert.
  • Im folgenden wird prinzipiell erklärt, wie eine geänderte Klasse die Mitglieder des ursprünglichen Klassentyps übernimmt. In der Regel erfolgt dies mit Kopier-Konstruktoren. Ein Kopier-Konstruktor ist eine spezielle Funktion, die alle Klassen-Mitglieder kopiert, die sowohl in dem alten als auch in dem neuen Klassentyp enthalten sind.
  • Um zu entscheiden, ob ein Klassenmitglied in beiden Klassen enthalten ist, lassen sich drei Fälle unterscheiden.
  • Sind die Namen und Datentypen der Klassenmitglieder identisch, so sind die Klassenmitglieder identisch. Dieser erste Fall beschreibt eine starke Beziehung zwischen den Klassenmitgliedern. Alle Klassenmitglieder, auf die dieser Fall zutrifft, werden vom Kopier-Konstruktor 1 zu 1 kopiert.
  • Sind nur die Namen der Klassenmitglieder identisch und der Datentyp ist ein elementarer Datentyp, so besteht eine schwache Beziehung zwischen den Klassenmitgliedern. Alle Klassenmitglieder, auf die dieser Fall zutrifft, werden kopiert und transformiert, beispielsweise vom Datentyp byte zum Datentyp int.
  • Trifft weder der erste noch der zweite Fall zu, werden die Klassenmitglieder als nicht identisch und damit ohne Beziehung zueinander angenommen. Diese Klassenmitglieder werden vom Kopier-Konstruktor nicht behandelt.
  • In 2 ist dies nochmals beispielhaft dargestellt. Die Klassenmitglieder a, b und d einer ersten Klasse 51 sind mit den Klassenmtgliedern a, b und d einer geänderten Klasse 52 identisch und werden vom Kopier-Konstruktor kopiert, in X durch Pfeile mit Bezugszeichen 61 bis 63 dargestellt. Das Klassenmitglied c der Klasse 51 hat den identischen Namen wie das Klassenmitglied c der Klasse 52, weist aber einen anderen Datentyp auf. Zwischen den beiden mit c bezeichneten Klassenmitgliedern besteht eine schwache Beziehung. Bei Kopieren des Klassenmitglieds c wird daher auch eine Transformation ausgeführt 64. Die Klassenmitglieder e, f und g haben keine Beziehung zueinander und werden daher vom Kopier-Konstruktor nicht behandelt.
  • Der Kopier-Konstruktor berücksichtigt nur nicht-statische Klassenmitglieder, da statische Klassenmitglieder nur eine Repräsentierung pro Klassentyp und nicht pro Instanz aufweisen.
  • Der Zugriff auf die Metadaten des ursprünglichen und eines geänderten Klassentyps ermöglicht es dem eCLR- Laufzeitsystems, Unterschiede zwischen Klassentypen zu analysieren und einen dem Klassentyp entsprechenden Kopier-Konstruktor zu generieren. Ein Beispiel für einen Kopier-Konstruktor in Form von Zwischencode ist nachfolgend angegeben.
  • Figure 00160001
  • Primär umfasst ein Kopier-Konstruktor die zwei Zwischencode-Befehle ldfld (load field) und stfld (store field). Dieses Befehlspaar wird verwendet für Felder, die sich in ihren Datentypen nicht unterscheiden. Eine schwache Beziehung zwischen den Feldern wird angenommen, wenn sich die Datentypen unterscheiden, aber den folgenden elementaren Datentypen angehören: bool, int8, uint8, int16, uintl6, int32, uint32, int64, uint64, real32, real64. In diesen Fällen kann es erforderlich, Operatoren wie beispielsweise conv.i4 (int32) oder conv.r4 (real32) zu verwenden, um Klassenmitglieder mit schwacher Beziehung zu transformieren. Das folgende in Form von Zwischencode angegebene Beispiel konvertiert das Feld X1 einer Klasse von Datentyp int zu
  • Datentyp real:
    Figure 00170001
  • Das eCLR-Laufzeitsystem wandelt den Kopier-Konstruktor mittels des JIT-Compilers in ausführbaren Maschinencode um. Der nachfolgend angegebene Intel-basierte Assembler-Code könnte zum Beispiel das Ergebnis der Umwandlung eines Kopier-Konstruktors sein.
  • Figure 00170002
  • Falls ein Feld einen geänderten Datentyp aufweist, der nicht einem elementaren Datentypen angehört, sind zwei Fälle zu unterscheiden.
  • Ist der Basistyp „System.object", so wird das Objekt vom eCLR-Laufzeitsystem selbst aktualisiert. Ist der Basistyp „System.Valuetype", so enthält der Kopier-Konstruktor Code zur Ausführung des Kopier-Konstruktors dieser geänderten Klasse.
  • Das folgende Beispiel demonstriert die hierarchische Struktur eines Kopier-Konstruktors für den Fall, dass Unter-Klassen einer Klasse geändert werden.
  • Figure 00170003
  • Figure 00180001
  • In diesem Fall wird der Zwischencode-Befehl ldflda (load address of field) zum Laden der Adressen der Unter-Klassen verwendet, um den entsprechenden Kopier-Konstruktor dieses Klassentyps aufzurufen.
  • Nach Umwandlung aller Kopier-Konstruktoren in ausführbaren Maschinencode sammelt das eCLR-Laufzeitsystem alle Referenzen zu geänderten Klassen, für die Kopier-Konstruktoren erzeugt wurden. Solche Referenzen können beispielsweise für statische Referenzen im globalen Datenraum lokalisiert sein oder für Unter-Klassen im lokalen Call-Stack oder in anderen Objekten. Wenn eine Liste aller Objekt-Referenzen generiert wurde, werden die geänderten Objekte vom eCLR-Laufzeitsystem unter Verwendung des New-Operators neu erzeugt. Nach Erzeugen und Initialisieren der Objekte erfolgt das Kopieren. Jetzt erhalten alle neuen Objekte durch den Kopier-Konstruktor den aktuellen Inhalt der alten Objekte.
  • Bis zu diesem Zeitpunkt kann der Vorgang des Sammelns der Referenzen und des Erzeugens und Kopieren von Objekten wiederholt werden, falls das eCLR-Laufzeitsystem detektiert, dass ein dem zu ändernden Programm zugeordneter Thread während des Vorgangs aktiv geworden ist.
  • Danach erfolgt die kritische Phase des Änderns aller Referenzen, die nicht unterbrochen werden kann. In dieser Phase ist das zu ändernde Programm blockiert. Die für diesen Vorgang erforderlichen Zeigerzuweisungen und damit die erforderliche Zeitdauer hängt von der Anzahl der Objekt-Instanzen und deren Referenzen, sowie vom Umfang der Änderungen ab.
  • Nach erfolgtem Umschalten durch Ändern der Objekt-Referenzen kann das nunmehr geänderte Programm weiter ausgeführt werden. Die Blockierung der Threads wird aufgehoben. Eine weitere Funktion des eCLR-Laufzeitsystems ist es, die nicht mehr benötigten Speicherreservierungen freizugeben.
  • Weiterer Bestandteil der Erfindung ist ein Verfahren, welches die Einhaltung der für den Steuerungsprozess festgelegten Echtzeitkriterien bei der Durchführung von Programmänderungen sicherstellt. Steuerungsprogramme werden in der Regel zyklisch ausgeführt. Die Echtzeitkriterien sind durch die Ausführungsintervalle der Programme definiert, in denen die Eingänge gelesen, die Steuerungprogramme ausgeführt und die Ausgänge geschrieben werden.
  • Erreicht wird die Einhaltung der Echtzeitkriterien durch eine Unterteilung der Durchführung der Programmänderungen in eine Vorbereitungsphase und eine kritische Phase, wie bereits oben angedeutet. Um die Programmänderung erfolgreich durchzuführen, dürfen in beiden Phasen keine Programmbefehle des Steuerungsprogramm ausgeführt werden.
  • Die Vorbereitungsphase, die nahezu alle erforderlichen Maßnahmen zur Durchführung einer Programmänderung beinhaltet (ca. 99%), ist unterbrechbar und beliebig oft wiederholbar.
  • In dem Fall, dass die Vorbereitungsphase durch die Ausführung eines Programmbefehls unterbrochen wird, kann diese zu einem beliebigen Zeitpunkt erneut von vorne begonnen werden.
  • Die kritische Phase beinhaltet die Aktivierung des neuen Programms. Die Aktivierung muß aus Konsistenzgründen für alle Programmobjekte gemeinsam erfolgen. Daher ist dieser Vorgang nicht unterbrechbar.
  • Die benötigte Zeitdauer für beide Phasen läßt sich erfindungsgemäß exakt ermitteln. Die Ausführungsdauer für die Durchführung einer Programmänderung muß auf jeden Fall kleiner sein als das kürzeste Ausführungsintervall eines Anwendungsprogramms. Typische Echtzeitanforderungen erfordern Zykluszeiten im Bereich von etwa 10 ms.
  • Die Zeitpunkte bis zur nächsten Aktivierung eines Programmzyklus lassen sich im voraus kalkulieren. Daher läßt sich für zyklisch ausgeführte Programme im Ruhezustand auch vorhersagen, wann die nächste Ausführung erfolgen wird.
  • Für ereignisgesteuerte Programme kann keine Vorhersage getroffen werden. Hier wirkt sich die Dauer der kritischen Phase auf den sogenannten Jitter aus. Tritt also in der kritischen Phase ein Ereignis ein, kann es erst frühestens nach Beendigung der kritischen Phase durch das entsprechend zugeordnete Programm bearbeitet werden. Ist der maximal tolerierte Jitter kleiner als die Ausführungsdauer für die kritische Phase einer Programmänderung, ist eine Programmänderung unter Einhaltung der so definierten Echtzeitkriterien nicht zu jedem Zeitpunkt möglich.
  • Der Ablauf ist in 3 beispielhaft in einem Prioritäts-Zeit-Diagramm dargestellt. Es ist die Aktivität verschiedener Tasks mit unterschiedlichen Prioritäten in Abhängigkeit der Zeit dargestellt. Wechselt ein Task in einen aktiven Zustand, so werden alle aktiven Tasks mit niedrigerer Priorität unterbrochen.
  • Der Task 73 ist der Haupt-Task des in Ausführung befindlichen Programms mit dem zugeordneten Programm-Modul P3. Die Ausführung dieses Tasks erfolgt periodisch mit einem Zeitintervall von 15 ms. Weitere Tasks des in Ausführung befindlichen Programms sind in diesem Beispiel ein weiterer periodischer Task 71 mit einem Zeitintervall von 10 ms und zugeordnetem Programm-Modul P1, sowie ein ereignisorientierter Task 72 mit zugeordnetem Programm-Modul P2. Aufgrund von Echtzeitanforderungen weisen die dem in Ausführung befindlichen Programm zugeordneten Tasks die höchsten Prioritäten auf.
  • Die in 3 als Änderungs-Manager bezeichnet Komponente des eCLR-Laufzeitsystems organisiert die Programmänderungen. Der dem Änderungs-Manager zugeordnete Task 81 beziehungsweise 82 führt die Änderungen aus. In diesem Beispiel wird dieser Task 81 ein erstes Mal gestartet, nachdem der Haupt-Task 73 in einen Ruhezustand gewechselt ist. Während der Ausführung der Änderungen wird jedoch der Task 81 durch den aktiv werdenden Task 71 unterbrochen. Der Task 82 zur Durchführung der Änderungen wird daraufhin erneut gestartet, in diesem Beispiel zum nächsten Zeitpunkt, zu dem der Haupt-Task 73 wiederum in einen Ruhezustand wechselt. Der Task 82 wird durch keinen anderen Task unterbrochen, die Änderungen wurden daher erfolgreich durchgeführt. In diesem Beispiel wurde das Programm-Modul P3 geändert. Nach erfolgreicher Durchführung der Änderung wird das geänderte Programm-Modul P3* ausgeführt. Der Task 74 ist ein weiterer Task des eCLR-Systems, beispielsweise zur Kommunikation oder zum Debuggen.

Claims (21)

  1. Verfahren zur Änderung eines in Ausführung befindlichen objektorientierten Programms, insbesondere eines Programms zur Steuerung einer Automatisierungseinrichtung, wobei das Programm in Form eines Zwischencodes, der in Laufzeit in einen ausführbaren Maschinencode umgewandelt werden kann, in einem Speicher vorgehalten wird, umfassend – Bereitstellen eines geänderten Programms oder eines geänderten Programm-Moduls ebenfalls in Form eines Zwischencodes, – Vergleichen des Zwischencodes des geänderten Programms beziehungsweise des geänderten Programm-Moduls und des Zwischencodes des in Ausführung befindlichen Programms zur Bestimmung der Änderungen, – Durchführen der Änderungen in dem in Ausführung befindlichen Programm.
  2. Verfahren nach Anspruch 1, wobei als Zwischencode ein CIL- oder MSIL-Zwischencode verwendet wird, der eine im wesentlichen komplette Beschreibung für den Aufbau von Klassen enthält.
  3. Verfahren nach einem der vorstehenden Ansprüche, wobei die Umwandlung eines Zwischencodes in ausführbaren Maschinencode mittels eines JIT-Compilers erfolgt.
  4. Verfahren nach einem der vorstehenden Ansprüche, wobei das Durchführen der Änderungen die Schritte umfasst: – Erzeugen zumindest eines ersten Programmobjekts, – Kopieren von Daten, die in zumindest einem zweiten Programmobjekt enthalten sind, in das zumindest eine erste Programmobjekt, wobei das zumindest eine zweite Programmobjekt Bestandteil des in Ausführung befindlichen Programms ist, sowie – Umschalten von dem zumindest einen zweiten Programmobjekt auf das zumindest eine erste Programmobjekt als Bestandteil des in Ausführung befindlichen Programms.
  5. Verfahren nach einem der vorstehenden Ansprüche, wobei für das Durchführen der Änderungen automatisch ein Änderungsprogramm generiert wird.
  6. Verfahren nach einem der vorstehenden Ansprüche, wobei nach Durchführen der Änderungen der von den nicht mehr verwendeten Programmobjekten reservierte Speicher freigegeben wird.
  7. Verfahren nach einem der vorstehenden Ansprüche, wobei das Durchführen der Änderungen innerhalb einer vorgegebenen Zeitdauer erfolgt, wobei die Zeitdauer insbesondere in Abhängigkeit zumindest einer Reaktionszeit einer durch das Programm gesteuerten Automatisierungseinrichtung und/oder in Abhängigkeit zumindest eines Ausführungsintervalls des Programms festgelegt wird.
  8. Verfahren nach einem der vorstehenden Ansprüche, wobei die für das Durchführen der Änderungen erforderliche Zeitdauer durch Simulation ermittelt wird.
  9. Verfahren nach einem der vorstehenden Ansprüche, wobei das Durchführen der Änderungen zumindest zwei Teilschritte umfasst, von denen zumindest ein Teilschritt wenigstens einmal wiederholt wird.
  10. Verfahren nach Anspruch 9, wobei das Wiederholen des zumindest einen Teilschritts in Abhängigkeit vom Eintreten eines festgelegten Ereignisses im Programmablauf erfolgt.
  11. Verfahren nach einem der vorstehenden Ansprüche, wobei das in Ausführung befindliche Programm zyklisch zwischen einem aktiven Zustand und einem Ruhezustand wechselt und das Verfahren den Schritt des Berechnens zumindest eines Zeitpunktes umfasst, zu dem das Programm in den aktiven Zustand wechselt.
  12. Laufzeitsystem zur Ausführung von Steuerprogrammen in einer Steuereinheit einer Automatisierungseinrichtung, insbesondere zur Durchführung eines Verfahrens nach einem der vorstehenden Ansprüche, umfassend Mittel zum Lesen und Schreiben von Speicherinhalten, wobei die Steuereinheit einen adressierbaren Speicher aufweist, und ein Steuerprogramm in Form eines ersten Zwischencodes in einem ersten Speicherbereich abrufbar abgelegt ist, und zumindest Teile des ersten Zwischencodes während des in der Automatisierungseinrichtung ablaufenden Prozesses in ausführbare Steuerbefehle umgewandelt werden, die in einem zweiten Speicherbereich abgelegt werden, und das Laufzeitsystem auf das Bereitstellen eines zweiten Zwischencodes in einem dritten Speicherbereich anspricht und eine Änderung im Prozessablauf in der Automatisierungseinrichtung bewirkt.
  13. Laufzeitsystem nach Anspruch 12, ferner dadurch gekennzeichnet, dass die Änderung im Prozessablauf in der Automatisierungseinrichtung bewirkt wird durch – Selektieren zumindest eines Teilbereiches des dritten Speicherbereiches und zumindest einer Speichereinheit des zweiten Speicherbereiches, in dem die Startadresse eines Teilbereichs des zweiten Speicherbereiches gespeichert ist, durch einen Vergleich des im ersten Speicherbereich gespeicherten ersten Zwischencodes und des im dritten Speicherbereich gespeicherten zweiten Zwischencodes, – Umwandeln des in dem Teilbereich des dritten Speicherbereiches gespeicherten Zwischencodes in ausführbare Steuerbefehle, die in einem vierten Speicherbereich abgelegt werden, – Kopieren von Daten aus dem Teilbereich des zweiten Speicherbereiches in den Teilbereich des dritten Speicherbereiches, – Speichern der Startadresse des vierten Speicherbereiches in der Speichereinheit des zweiten Speicherbereiches.
  14. Laufzeitsystem nach Anspruch 12, wobei das Laufzeitsystem ein CLR-System, insbesondere ein eCLR-System ist.
  15. Laufzeitsystem nach einem der vorstehenden Ansprüche, wobei der Zwischencode ein CIL- oder MSIL-Zwischencode ist, der eine komplette Beschreibung für den Aufbau von Klassen enthält.
  16. Laufzeitsystem nach einem der vorstehenden Ansprüche, wobei das Laufzeitsystem zur Umwandlung eines Zwischencodes in ausführbare Steuerbefehle einen JIT-Compiler umfasst.
  17. Laufzeitsystem nach einem der vorstehenden Ansprüche, umfassend ein Mittel zum Generieren, Speichern und Ausführen von Steuerbefehlen.
  18. Laufzeitsystem nach einem der vorstehenden Ansprüche, das eine Änderung im Prozessablauf einer Automatisierungseinrichtung innerhalb einer vorgegebenen Zeitdauer bewirkt.
  19. Laufzeitsystem nach einem der vorstehenden Ansprüche, umfassend ein Mittel zur Berechnung der zum Bewirken einer Änderung im Prozessablauf einer Automatisierungseinrichtung benötigten Zeitdauer.
  20. Laufzeitsystem nach einem der vorstehenden Ansprüche, wobei die zum Bewirken einer Änderung im Prozessablauf einer Automatisierungseinrichtung ablaufenden Schritte ganz oder teilweise wiederholt werden.
  21. Automatisierungssystem, umfassend ein Laufzeitsystem nach einem der vorstehenden Ansprüche, geeignet zur Ausführung eines der vorstehenden Verfahren.
DE10335989.3A 2003-08-01 2003-08-01 Online-Änderungen von CIL-Code-Programmen für die Industrieautomatisierung Expired - Lifetime DE10335989B4 (de)

Priority Applications (7)

Application Number Priority Date Filing Date Title
DE10335989.3A DE10335989B4 (de) 2003-08-01 2003-08-01 Online-Änderungen von CIL-Code-Programmen für die Industrieautomatisierung
JP2004222850A JP4836419B2 (ja) 2003-08-01 2004-07-30 産業オートメーション用のcilコード・プログラムのオンライン修正
CNB2004100588255A CN100388193C (zh) 2003-08-01 2004-07-30 修改面向对象的程序的方法、运行时系统和自动化系统
FR0408467A FR2858436B1 (fr) 2003-08-01 2004-07-30 Procede et systeme pour modifier un programme oriente objet en cours d'execution
US10/903,863 US8108852B2 (en) 2003-08-01 2004-07-30 Online modification of CIL code programs for industrial automation
IT001557A ITMI20041557A1 (it) 2003-08-01 2004-07-30 Variazioni on-line di programmi in codice cil per l'automatizzazione industriale
JP2007336097A JP2008135049A (ja) 2003-08-01 2007-12-27 産業オートメーション用のcilコード・プログラムのオンライン修正

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE10335989.3A DE10335989B4 (de) 2003-08-01 2003-08-01 Online-Änderungen von CIL-Code-Programmen für die Industrieautomatisierung

Publications (2)

Publication Number Publication Date
DE10335989A1 true DE10335989A1 (de) 2005-03-17
DE10335989B4 DE10335989B4 (de) 2019-07-11

Family

ID=34042155

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10335989.3A Expired - Lifetime DE10335989B4 (de) 2003-08-01 2003-08-01 Online-Änderungen von CIL-Code-Programmen für die Industrieautomatisierung

Country Status (6)

Country Link
US (1) US8108852B2 (de)
JP (2) JP4836419B2 (de)
CN (1) CN100388193C (de)
DE (1) DE10335989B4 (de)
FR (1) FR2858436B1 (de)
IT (1) ITMI20041557A1 (de)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102010027906A1 (de) * 2010-04-19 2011-10-20 Beckhoff Automation Gmbh Datenverwaltungsverfahren und speicherprogrammierbare Steuerung
DE102013005542A1 (de) * 2013-04-03 2014-10-09 Phoenix Contact Gmbh & Co. Kg Verfahren und Steuerungsvorrichtung zur Ausgabe von Daten auf einen Lokalbus
EP2869145A1 (de) * 2013-10-29 2015-05-06 dSPACE digital signal processing and control engineering GmbH Verfahren zur Beeinflussung eines Steuerprogramms eines Steuergerätes

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7027880B2 (en) * 2003-09-30 2006-04-11 Rockwell Automation Technologies, Inc. Safety controller providing rapid recovery of safety program data
US8942834B2 (en) * 2005-06-27 2015-01-27 Rockwell Automation Technologies, Inc. Method and apparatus for communicating transactions between an industrial controller and a programming interface
TWI263908B (en) * 2005-07-12 2006-10-11 Inventec Corp Update system and method
US7743363B2 (en) * 2005-10-13 2010-06-22 Microsoft Corporation Extensible meta-data
EP1916583A1 (de) * 2006-10-26 2008-04-30 Siemens Aktiengesellschaft Verfahren zur Durchführung von Online-Programmänderungen an einem Automatisierungssystem
US20080127142A1 (en) * 2006-11-28 2008-05-29 Microsoft Corporation Compiling executable code into a less-trusted address space
US20090193392A1 (en) * 2008-01-29 2009-07-30 Michael David Downen Dynamic intermediate language modification and replacement
US20100146481A1 (en) * 2008-12-09 2010-06-10 Microsoft Corporation Developing applications at runtime
EP2214101A1 (de) 2009-01-29 2010-08-04 Siemens Aktiengesellschaft Verändern von Objekten einer Anwendung
EP2249217B1 (de) * 2009-05-08 2013-04-24 Siemens Aktiengesellschaft Automatisierungsgerät und Automatisierungssystem
US20110047687A1 (en) * 2009-09-02 2011-03-03 Lee Jeong-Hee Apparatus and Method for Providing a Hygienic Toilet Seat
CN103198240B (zh) * 2012-09-29 2016-03-16 网易(杭州)网络有限公司 一种用于保护代码安全的方法和装置
US9523969B2 (en) 2013-02-20 2016-12-20 General Electric Company Systems and methods for tracking the quality and efficiency of machine instructions for operating an associated controller
US9958848B2 (en) 2015-02-19 2018-05-01 Rockwell Automation Technologies, Inc. Techniques for improving industrial control systems
CN105005486B (zh) * 2015-06-25 2018-11-09 许继集团有限公司 一种智能变电站设备程序在线升级方法
JP6927089B2 (ja) * 2018-03-05 2021-08-25 オムロン株式会社 制御装置、システムプログラム、制御方法
IT201800005542A1 (it) * 2018-05-21 2019-11-21 Sistema per la progettazione e/o l’aggiornamento di programmi per l’interfaccia operatore e la gestione di macchinari e/o impianti di automazione
JP6950665B2 (ja) 2018-11-02 2021-10-13 横河電機株式会社 エンジニアリング装置、エンジニアリング装置の制御方法及びプログラム
JP6954256B2 (ja) * 2018-11-02 2021-10-27 横河電機株式会社 エンジニアリング装置、エンジニアリング装置の制御方法及びプログラム
CN113009873A (zh) * 2021-02-03 2021-06-22 深圳市显控科技股份有限公司 Plc梯形图在线编译和下载的方法、plc及存储介质

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07200279A (ja) 1993-12-28 1995-08-04 Toshiba Corp オブジェクト管理システム及びネットワーク管理システム
JPH0895807A (ja) 1994-09-21 1996-04-12 Toyota Motor Corp タスク実行制御方法
US5970243A (en) * 1996-08-27 1999-10-19 Steeplechase Software, Inc. Online programming changes for industrial logic controllers
US6092079A (en) * 1998-01-29 2000-07-18 International Business Machines Corporation Apparatus and method for updating an object without affecting the unique identity of the object
US6282698B1 (en) * 1998-02-09 2001-08-28 Lucent Technologies Inc. Detecting similarities in Java sources from bytecodes
US6092076A (en) 1998-03-24 2000-07-18 Navigation Technologies Corporation Method and system for map display in a navigation application
JPH11306008A (ja) 1998-04-20 1999-11-05 Mitsubishi Electric Corp プログラム制御装置及びプログラム制御方法
US6260187B1 (en) * 1998-08-20 2001-07-10 Wily Technology, Inc. System for modifying object oriented code
US6272677B1 (en) 1998-08-28 2001-08-07 International Business Machines Corporation Method and system for automatic detection and distribution of code version updates
GB2341462B (en) 1998-09-12 2003-06-11 Ibm Method for deployment of incremental versions of applications
US6202208B1 (en) 1998-09-29 2001-03-13 Nortel Networks Limited Patching environment for modifying a Java virtual machine and method
US6298353B1 (en) 1998-11-19 2001-10-02 International Business Machines Corporation Checking serialization compatibility between versions of java classes
JP2000276381A (ja) 1999-03-23 2000-10-06 Toshiba Corp タスク実行時間の見積もり方法
JP3751466B2 (ja) * 1999-03-26 2006-03-01 沖電気工業株式会社 プログラム応答時間予測装置
GB2357168A (en) * 1999-12-10 2001-06-13 Inventec Corp Dynamically maintaining the functional module of an application program
JP3986721B2 (ja) 2000-01-20 2007-10-03 三菱電機株式会社 ソフトウェア・モジュール動的交換方法及びソフトウェア・モジュール動的交換プログラム記録媒体
US6973646B1 (en) * 2000-07-21 2005-12-06 International Business Machines Corporation Method for compiling program components in a mixed static and dynamic environment
US20030182414A1 (en) * 2003-05-13 2003-09-25 O'neill Patrick J. System and method for updating and distributing information
JP2002318703A (ja) 2001-04-20 2002-10-31 Seiko Epson Corp 制御システム
US8205193B2 (en) * 2001-06-11 2012-06-19 Hewlett-Packard Development Company, L.P. Runtime updating of virtual machine class files
JP2003122409A (ja) * 2001-10-11 2003-04-25 Fuji Electric Co Ltd プログラムチェック方法、シーケンスプログラム編集装置、記録媒体、及びプログラム
US7603662B2 (en) * 2002-10-09 2009-10-13 Microsoft Corporation System and method for sensing types of local variables
US7784044B2 (en) 2002-12-02 2010-08-24 Microsoft Corporation Patching of in-use functions on a running computer system
US7461373B2 (en) * 2002-12-05 2008-12-02 Samsung Electronics Co., Ltd. Apparatus and method for upgrading software of a wireless mobile station
US7536678B2 (en) * 2003-12-04 2009-05-19 International Business Machines Corporation System and method for determining the possibility of adverse effect arising from a code change in a computer program
US20050257205A1 (en) * 2004-05-13 2005-11-17 Microsoft Corporation Method and system for dynamic software updates
JP4870915B2 (ja) * 2004-07-15 2012-02-08 株式会社日立製作所 ストレージ装置
US7698702B2 (en) * 2005-04-18 2010-04-13 Research In Motion Limited System and method for implementing data-compatibility-based version scheme

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102010027906A1 (de) * 2010-04-19 2011-10-20 Beckhoff Automation Gmbh Datenverwaltungsverfahren und speicherprogrammierbare Steuerung
DE102013005542A1 (de) * 2013-04-03 2014-10-09 Phoenix Contact Gmbh & Co. Kg Verfahren und Steuerungsvorrichtung zur Ausgabe von Daten auf einen Lokalbus
EP2869145A1 (de) * 2013-10-29 2015-05-06 dSPACE digital signal processing and control engineering GmbH Verfahren zur Beeinflussung eines Steuerprogramms eines Steuergerätes
US9791844B2 (en) 2013-10-29 2017-10-17 Dspace Digital Signal Processing And Control Engineering Gmbh Method for influencing a control program of a control device

Also Published As

Publication number Publication date
JP2008135049A (ja) 2008-06-12
FR2858436B1 (fr) 2007-09-28
CN1580994A (zh) 2005-02-16
CN100388193C (zh) 2008-05-14
ITMI20041557A1 (it) 2004-10-30
FR2858436A1 (fr) 2005-02-04
US8108852B2 (en) 2012-01-31
JP2005056415A (ja) 2005-03-03
DE10335989B4 (de) 2019-07-11
JP4836419B2 (ja) 2011-12-14
US20050066320A1 (en) 2005-03-24

Similar Documents

Publication Publication Date Title
DE10335989A1 (de) Online-Änderungen von CIL-Code-Programmen für die Industrieautomatisierung
DE10116809A1 (de) Programmierbare Steuereinrichtung und Vorrichtung zur Unterstützung einer Steuerprogrammentwicklung
EP1034475B1 (de) Verfahren zum testen von systemkomponenten eines objektorientierten programms
EP2194432A1 (de) Scheduling-Verfahren
EP3538960B1 (de) Ablaufsteuerung von programmmodulen
EP1634130B1 (de) Vorrichtung und verfahren zur programmierung und/oder ausführung von programmen für industrielle automatisierungssysteme
WO2011063869A1 (de) Verfahren zum ermöglichen einer sequentiellen, nicht blockierenden abarbeitung von anweisungen in nebenläufigen tasks in einer steuereinrichtung
EP2324399A1 (de) Automatisierungssystem mit frameworkbasierter steuerung
EP0838054A1 (de) Verfahren und steuereinrichtung für eine graphische steuerung von abläufen in einem netzwerkmanagementsystem
EP2482148B1 (de) Verfahren für die Projektierung und/oder Programmierung einer multifunktionalen Komponente einer industriellen Automatisierungsanordnung
EP2126643B1 (de) Verfahren zum austausch von strukturkomponenten für ein automatisierungssystem
EP1215571A2 (de) Verfahren zur automatischen Softwaregenerierung
EP2930624A1 (de) Verfahren und vorrichtung zum erzeugen und abarbeiten von testfällen
WO2010034548A1 (de) Testmodul und verfahren zum testen einer o/r-abbildungs-middleware
DE102006061796A1 (de) Verfahren und Vorrichtung zur dynamischen Behandlung von Objekten
EP1947536B1 (de) Verfahren zur Konfigurationsänderung eines laufenden Automatisierungsgerätes
EP3629107A1 (de) Verfahren und einrichtung zur wiederherstellung einer entwicklungsumgebung für eine industrielle anwendung
WO2001075535A2 (de) Zustandssteuerung von technischen systemen
WO2019101345A1 (de) Verfahren und vorrichtung zur projektierung einer spezifi-schen verfahrenstechnischen anlage
EP2093663A1 (de) Engineering-System für die Entwicklung eines Projektes und Verfahren
EP1184760B1 (de) Verfahren zur Steuerung und/oder Regelung eines technischen Prozesses
DE19828611C2 (de) Datenverarbeitungsvorrichtung und zugehöriges Verfahren
DE102014206607B3 (de) Verfahren zum Betrieb eines Automatisierungsgeräts, Prozessor zur Verwendung im Rahmen des Verfahrens und nach dem Verfahren arbeitendes Automatisierungsgerät und System
DE102016121542A1 (de) Ablaufsteuerung von Programmmodulen
DE10234050A1 (de) System und Verfahren zum Erzeugen eines Steuerprogramms

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R009 Remittal by federal patent court to dpma for new decision or registration
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R071 Expiry of right