Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHOD FOR CONTROLLING AN AUTOMATION SYSTEM WITH VISUALISATION OF PROGRAM OBJECTS OF A CONTROL PROGRAM OF THE AUTOMATION SYSTEM, AND AUTOMATION SYSTEM
Document Type and Number:
WIPO Patent Application WO/2022/023338
Kind Code:
A1
Abstract:
The invention relates to a method (100) for controlling an automation system (200) with visualisation of program objects of a control program of an automation system (200), the method comprising: • ascertaining a pointer address (ZA) of the pointer element in a pointer address determination step (103); • determining a first address offset (A01) of the pointer address (ZA) of the pointer element; • identifying a program object (PO), which, in accordance with the arrangement structure of the program state (PZ), is distanced by the first address offset (A01) to the first memory point of the program state (PZ), as a first program object (P01), the memory address of which in the first memory region (SP1) corresponds to the pointer address (ZA) of the pointer element; • identifying the first program object with the pointer object (ZO) referenced by the pointer element; • determining a fully qualified name of the identified pointer element; and • displaying the fully qualified name of the pointer object (ZO) referenced by the pointer element on a display element connected to the controller. The invention furthermore relates to an automation system (200) for carrying out the method (100).

Inventors:
DREESEN RALF (DE)
Application Number:
PCT/EP2021/070993
Publication Date:
February 03, 2022
Filing Date:
July 27, 2021
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
BECKHOFF AUTOMATION GMBH (DE)
International Classes:
G05B19/042; G06F11/30; G06F11/36; G06F12/10; G06F16/22
Foreign References:
US20130275908A12013-10-17
US20190052563A12019-02-14
DE102020119853A2020-07-28
Other References:
ANONYMOUS ET AL: "The Stack Frame", 22 June 2020 (2020-06-22), pages 1 - 6, XP055844126, Retrieved from the Internet [retrieved on 20210923]
Attorney, Agent or Firm:
PATENTANWALTSKANZLEI WILHELM & BECK (DE)
Download PDF:
Claims:
Ansprüche

1. Verfahren (100) zum Steuern eines Automatisierungssystems (200) mit Visuali sierung von Programmobjekten eines Steuerprogramms eines Automatisierungs systems (200), wobei eine Steuerung (201) des Automatisierungssystems (200) ein Steuerprogramm umfasst, wobei in einem ersten Speicherbereich (SP1) der Steuerung ein Programmzustand (PZ) des Steuerprogramms gespeichert ist, wo bei der Programmzustand (PZ) eine Mehrzahl von Programmobjekten des Steu erprogramms umfasst, wobei die Programmobjekte (PO) in einer vorbestimmten Anordnungsstruktur des Programmzustands (PZ) relativ zueinander angeordnet sind, wobei über die Anordnungsstruktur jedem Programmobjekt (PO) eine Spei cherposition (P) und eine Speichergröße (SG) zugeordnet sind, wobei eine Spei cherposition (P) eines Programmobjekts (PO) eine Anzahl von Speicherstellen definiert, um die ein Programmobjekt (PO) in einem Speicherbereich zu einer ers ten Speicherstelle des Programmzustands (PZ) beabstandet gespeichert ist, wo bei eine Speichergröße (SG) eines Programmobjekts (PO) eine Anzahl von Spei cherstellen definiert, die ein Speicherobjekt in einem Speicherbereich belegt, wo bei der Programmzustand (PZ) wenigstens ein Zeigerelement umfasst, wobei durch das Zeigerelement ein Zeigerobjekt (ZO) referenziert, wobei das Zeigerob jekt (ZO) ein Programmobjekt (PO) des Steuerprogramms ist, wobei in einem zweiten Speicherbereich (SP2) der Steuerung ein Stack des Steuerprogramms eingerichtet ist, und wobei im Stack während einer Laufzeit des Steuerprogramms Programmobjekte (PO) speicherbar sind, umfassend:

Ausführen des Steuerprogramms in einem Ausführschritt (101);

Ermitteln einer Zeigeradresse (ZA) des Zeigerelements in einem Zeigeradres senermittlungsschritt (103), wobei die Zeigeradresse (ZA) einer durch das Zei gerelement referenziellen Speicheradresse entspricht;

Überprüfen, ob die Zeigeradresse (ZA) des Zeigerelements im ersten Speicherbe reich (SP1) des Programmzustands (PZ) oder im zweiten Speicherbereich (SP2) des Stacks angeordnet ist, in einem Überprüfungsschritt (105);

Falls die Zeigeradresse (ZA) des Zeigerelements im ersten Speicherbereich (SP1) des Programmzustands (PZ) angeordnet ist, Bestimmen eines ersten Ad ressenoffsets (A01) der Zeigeradresse (ZA) des Zeigerelements in einem ersten Adressenoffsetbestimmungsschritt (107), wobei der erste Adressenoffset (A01) eine Anzahl von Speicherstellen definiert, um die die Zeigeradresse (ZA) des Zei gerelements zu einer ersten Speicheradresse des Programmzustands (PZ) im ersten Speicherbereich (SP1) beabstandet ist; Identifizieren eines Programmobjekts (PO), das gemäß der Anordnungsstruktur des Programmzustands (PZ) um den ersten Adressenoffset (A01) zu der ersten Speicherstelle des Programmzustands (PZ) beabstandet ist, als ein erstes Pro grammobjekt (P01), dessen Speicheradresse im ersten Speicherbereich (SP1) der Zeigeradresse (ZA) des Zeigerelements entspricht, in einem ersten Program mobjektidentifizierungsschritt (109);

Identifizieren des ersten Programmobjekts mit dem durch das Zeigerelement refe renziellen Zeigerobjekt (ZO) in einem Zeigerobjektidentifizierungsschritt (111); Bestimmen einer vollqualifizierten Bezeichnung des identifizierten Zeigerelements in einem Vollbezeichnungsbestimmungsschritt (113); und Anzeigen der vollqualifizierten Bezeichnung des durch das Zeigerelement refe renziellen Zeigerobjekts (ZO) auf einem mit der Steuerung verbundenen Display element in einem Anzeigeschritt (115).

2. Verfahren (100) nach Anspruch 1, wobei ein Programmobjekt (PO) des Pro grammzustands (PZ) als ein übergeordnetes zweites Programmobjekt (P02) aus gebildet ist, wobei das übergeordnete zweite Programmobjekte (P02) wenigstens ein untergeordnetes Teilprogrammobjekt (TPO) umfasst, wobei das erste Pro grammobjekt (P01) als ein untergeordnetes Teilprogrammobjekt (TPO) vom übergeordneten zweiten Programmobjekt (P02) umfasst ist, und wobei der erste Programmobjektidentifizierungsschritt (109) umfasst:

Identifizieren eines Programmobjekts (PO) des Programmzustands (PZ), für das gemäß der jeweiligen Speicherposition (P) und Speichergröße (SG) ein Speicherbereich definiert ist, der eine Speicherstelle umfasst, die um den ersten Adressenoffset (A01) zur ersten Speicherstelle des Programm zustands (PZ) beabstandet ist, als das übergeordnete zweite Programmob jekt (P02) und Identifizieren des übergeordneten zweiten Programmobjekts (P02) als das Programmobjekt (PO), das im ersten Speicherbereich (SP1) des Programmzustands (PZ) einen Speicherbereich belegt, der die Zeige radresse (ZA) des Zeigerelements umfasst, in einem zweiten Programmob jektidentifizierungsschritt (117);

Bestimmen eines zweiten Adressenoffsets (A02) in einem zweiten Ad ressenoffsetbestimmungsschritt (119), wobei der zweite Adressenoffset (A02) durch eine Differenz zwischen dem ersten Adressenoffset (A01) und der ersten relativen Speicheradresse (SP02) des zweiten Programmob jekts (P02) bestimmt ist; Bestimmen eines Datentyps des übergeordneten zweiten Programmobjekts (P02) in einem zweiten Datentypbestimmungsschritt (121), wobei der Da tentyp eine Datenstruktur des übergeordneten zweiten Programmobjekts (P02) bestimmt, in der eine Anzahl von untergeordneten Teilprogrammob jekten (TPO) des übergeordneten zweiten Programmobjekts (P02) definiert ist und für jedes untergeordnete Teilprogrammobjekt (TPO) eine Speicher größe (SG) und eine Speicherposition (P) innerhalb der Datenstruktur des übergeordneten zweiten Programmobjekts (P02) bestimmt sind; Identifizieren eines untergeordneten Teilprogrammobjekts (TPO) des über geordneten zweiten Programmobjekts (P02), das gemäß der Datenstruktur des übergeordneten zweiten Programmobjekts (P02) um den zweiten Ad ressenoffset (A02) zu einer ersten Speicherstelle des übergeordneten zweiten Programmobjekts (P02) beabstandet ist, und Identifizieren des un tergeordneten Teilprogrammobjekts (TPO) des übergeordneten zweiten Programmobjekts (P02) als das erste Programmobjekt (P01), dessen Speicheradresse der Zeigeradresse (ZA) des Zeigerelements entspricht.

3. Verfahren (100) nach Anspruch 2, wobei ein Programmobjekt (PO) des Pro grammzustands (PZ) als ein übergeordnetes drittes Programmobjekt (P03) aus gebildet ist, wobei das übergeordnete dritte Programmobjekt (P03) wenigstens ein untergeordnetes Teilprogrammobjekt (TPO) umfasst, wobei das übergeord nete zweite Programmobjekt (P02) als ein untergeordnetes Teilprogrammobjekt (TPO) vom übergeordneten dritten Programmobjekt (P03) umfasst ist, wobei der zweite Programmobjektidentifizierungsschritt (117) umfasst:

Identifizieren eines Programmobjekts (PO) des Programmzustands (PZ), für das gemäß der jeweiligen Speicherposition (P) und Speichergröße (SG) ein Speicherbereich definiert ist, der eine Speicherstelle umfasst, die um den ersten Adressenoffset (A01) zur ersten Speicherstelle des Programm zustands (PZ) beabstandet ist, als das übergeordnete dritte Programmob jekt (P03) und Identifizieren des übergeordneten dritten Programmobjekts (P03) als das Programmobjekt (PO), das im ersten Speicherbereich (SP1) des Programmzustands (PZ) einen Speicherbereich belegt, der die Zeige radresse (ZA) des Zeigerelements umfasst, in einem dritten Programmob jektidentifizierungsschritt (123);

Bestimmen eines dritten Adressenoffsets (A03) in einem dritten Adressen offsetbestimmungsschritt (125), wobei der dritte Adressenoffset (A03) durch eine Differenz zwischen dem ersten Adressenoffset (A01) und einer ersten relativen Speicheradresse (SP03) des dritten Programmobjekts (P03) bestimmt ist;

Bestimmen eines Datentyps des übergeordneten dritten Programmobjekts (P03) in einem dritten Datentypbestimmungsschritt (127), wobei der Daten typ eine Datenstruktur des übergeordneten dritten Programmobjekts (P03) bestimmt, in der eine Anzahl von untergeordneten Teilprogrammobjekten (TPO) des übergeordneten dritten Programmobjekts (P03) definiert ist und für jedes untergeordnete Teilprogrammobjekt (TPO) eine Speichergröße (SG) und eine Speicherposition (P) innerhalb der Datenstruktur des über geordneten zweiten Programmobjekts (P03) bestimmt sind;

Identifizieren eines untergeordneten Teilprogrammobjekts (TPO) des über geordneten dritten Programmobjekts (P03), das gemäß der Datenstruktur des übergeordneten dritten Programmobjekts (P03) um den dritten Ad ressenoffset (A03) zu einer ersten Speicherstelle des übergeordneten drit ten Programmobjekts (P03) beabstandet ist, und Identifizieren des unter geordneten Teilprogrammobjekts (TPO) des übergeordneten dritten Pro grammobjekts (P03) als das übergeordnete zweite Programmobjekt (P02), das im ersten Speicherbereich (SP1) des Programmzustands (PZ) einen Speicherbereich belegt, der die Zeigeradresse (ZA) des Zeigerelements umfasst; und wobei der zweite Adressenoffset (A02) durch eine Differenz zwischen dem ersten Adressenoffset (A01) und einer Summe aus der ersten relati ven Speicheradresse (SP03) des dritten Programmobjekts (P03) und der ersten relativen Speicheradresse (SP02) des zweiten Programmobjekts (P02) bestimmt ist.

4. Verfahren (100) nach Anspruch 2, wobei ein Programmobjekt (PO) des Pro grammzustands (PZ) als ein übergeordnetes n-tes Programmobjekt ausgebildet ist, wobei das übergeordnete n-te Programmobjekt in n-1-facher Schachtelungs tiefe einander umfassende untergeordnete Teilprogrammobjekte (TPO) umfasst, wobei das übergeordnete zweite Programmobjekt (P02) als ein untergeordnetes Teilprogrammobjekt (TPO) in n-2-ter Schachtelungstiefe vom übergeordneten n- ten Programmobjekt umfasst ist, wobei das erste Programmobjekt (P01) als ein untergeordnetes Teilprogrammobjekt (TPO) in n-1-ter Schachtelungstiefe vom übergeordneten n-ten Programmobjekt umfasst ist, wobei n eine natürlich Zahl und größer oder gleich 4 ist, und wobei der erste Programmobjektidentifizierungs schritt (109) umfasst: Identifizieren eines Programmobjekts (PO) des Programmzustands (PZ), für das gemäß der jeweiligen Speicherposition (P) und Speichergröße (SG) ein Speicherbereich definiert ist, der eine Speicherstelle umfasst, die um den ersten Adressenoffset (A01) zur ersten Speicherstelle des Programm zustands (PZ) beabstandet ist, als das übergeordnete n-te Programmobjekt und Identifizieren des übergeordneten n-ten Programmobjekts als das Pro grammobjekt (PO), das im ersten Speicherbereich (SP1) des Programmzu stands (PZ) einen Speicherbereich belegt, der die Zeigeradresse (ZA) des Zeigerelements umfasst, in einem n-ten Programmobjektidentifizierungs schritt (129);

Bestimmen eines n-ten Adressenoffsets in einem n-ten Adressenoffsetbe stimmungsschritt (131), wobei der n-te Adressenoffset durch eine Differenz zwischen dem ersten Adressenoffset (A01) und einer ersten relativen Spei cheradresse des n-ten Programmobjekts bestimmt ist;

Bestimmen eines Datentyps des übergeordneten n-ten Programmobjekts in einem n-ten Datentypbestimmungsschritt (133), wobei der Datentyp eine Datenstruktur des übergeordneten n-ten Programmobjekts bestimmt, in der eine Anzahl von untergeordneten Teilprogrammobjekten des übergeordne ten n-ten Programmobjekts definiert ist und für jedes untergeordnete Teil programmobjekt eine Speichergröße (SG) und eine Speicherposition (P) innerhalb der Datenstruktur des übergeordneten n-ten Programmobjekts bestimmt sind;

Identifizieren eines untergeordneten Teilprogrammobjekts (TPO) des über geordneten n-ten Programmobjekts, das gemäß der Datenstruktur des übergeordneten n-ten Programmobjekts um den n-ten Adressenoffset zu einer ersten Speicherstelle des übergeordneten n-ten Programmobjekts be abstandet ist, und Identifizieren des untergeordneten Teilprogrammobjekts (TPO) des übergeordneten n-ten Programmobjekts als ein übergeordnetes n-1-tes Programmobjekt, das im ersten Speicherbereich (SP1) des Pro grammzustands (PZ) einen Speicherbereich belegt, der die Zeigeradresse (ZA) des Zeigerelements umfasst in einem n-1-ten Programmobjektidentifi zierungsschritt (135);

Wobei der n-1-te Programmobjektidentifizierungsschritt (135) umfasst: Bestimmen eines n-1-ten Adressenoffsets in einem n-1-ten Adressenoffset bestimmungsschritt (137), wobei der n-1-te Adressenoffset durch eine Dif ferenz zwischen dem ersten Adressenoffset (A01) und einer Summe aus der ersten relativen Speicheradresse des n-ten Programmobjekts und einer ersten relativen Adresse des n-1-ten Programmobjekts bestimmt ist; Bestimmen eines Datentyps des übergeordneten n-1-ten Programmobjekts in einem n-1-ten Datentypbestimmungsschritt (139), wobei der Datentyp eine Datenstruktur des übergeordneten n-1-ten Programmobjekts be stimmt, in der eine Anzahl von untergeordneten Teilprogrammobjekten des übergeordneten n-1-ten Programmobjekts definiert ist und für jedes unter geordnete Teilprogrammobjekt eine Speichergröße (SG) und eine Spei cherposition (P) innerhalb der Datenstruktur des übergeordneten n-1-ten Programmobjekts bestimmt sind;

Identifizieren eines untergeordneten Teilprogrammobjekts (TPO) des über geordneten n-1-ten Programmobjekts, das gemäß der Datenstruktur des übergeordneten n-1-ten Programmobjekts um den n-1-ten Adressenoffset zu einer ersten Speicherstelle des übergeordneten n-1-ten Programmob jekts beabstandet ist, und Identifizieren des untergeordneten Teilprogram mobjekts (TPO) des übergeordneten n-1-ten Programmobjekts als ein übergeordnetes n-2-tes Programmobjekt, das im ersten Speicherbereich (SP1) des Programmzustands (PZ) einen Speicherbereich belegt, der die Zeigeradresse (ZA) des Zeigerelements umfasst in einem n-2-ten Program mobjektidentifizierungsschritt (141);

Falls gilt, n-2>2, Rekursives Ausführen des n-1-ten Adressenoffsetbestim mungsschritt (137), des n-1-ten Datentypbestimmungsschritt (139) und des n-2-ten Programmobjektidentifizierungsschritt (141) in einem Rekursions schritt (143);

Bestimmen des zweiten Adressenoffsets (A02) im zweiten Adressenoffset bestimmungsschritt (119), wobei der zweite Adressenoffset (A02) durch eine Differenz zwischen dem ersten Adressenoffset (A01) und einer Summe aus ersten relativen Speicheradressen des n-ten Programmobjekts bis zweiten Programmobjekts (P02) bestimmt ist;

Bestimmen eines Datentyps des übergeordneten 2-ten Programmobjekts (P02) im zweiten Datentypbestimmungsschritt (121), wobei der Datentyp eine Datenstruktur des übergeordneten zweiten Programmobjekts (P02) bestimmt, in der eine Anzahl von untergeordneten Teilprogrammobjekten des übergeordneten 2-ten Programmobjekts (P02) definiert ist und für je des untergeordnete Teilprogrammobjekt (TPO) eine Speichergröße (SG) und eine Speicherposition (P) innerhalb der Datenstruktur des übergeord neten zweiten Programmobjekts bestimmt sind; Identifizieren des untergeordneten Teilprogrammobjekts (TPO) des überge ordneten zweiten Programmobjekts (P02), das gemäß der Datenstruktur des übergeordneten n-1-ten Programmobjekts um den zweiten Adressenof fset (A02) zu einer ersten Speicherstelle des übergeordneten zweiten Pro grammobjekts (P02) beabstandet ist, und Identifizieren des untergeordne ten Teilprogrammobjekts (TPO) des übergeordneten zweiten Programmob jekts (P02) als das erste Programmobjekt (P01), dessen Speicheradresse der Zeigeradresse (ZA) des Zeigerelements entspricht.

5. Verfahren (100) nach einem der voranstehenden Ansprüche, ferner umfassend: Falls die Zeigeradresse (ZA) des Zeigerelements im zweiten Speicherbereich (SP2) des Stacks (ST) angeordnet ist, Bestimmen einer Struktur des Stacks (ST) in einem Stack-Strukturbestimmungsschritt (145), wobei über die Struktur des Stacks jedem im Stack (ST) gespeicherten Stack-Programmobjekt eine Speicher position (P) und eine Speichergröße (SG) zugeordnet sind, wobei eine Speicher position (P) eines Stack- Programmobjekts eine Anzahl von Speicherstellen defi niert, um die ein Stack- Programmobjekt in einem Speicherbereich zu einer ersten Speicherstelle des Stacks (ST) beabstandet gespeichert ist;

Bestimmen eines ersten Stack-Adressenoffsets der Zeigeradresse (ZA) des Zei gerelements in einem ersten Stack-Adressenoffsetbestimmungsschritt (147), wo bei der erste Stack-Adressenoffset eine Anzahl von Speicherstellen definiert, um die die Zeigeradresse (ZA) des Zeigerelements zu einer ersten Speicheradresse des Stacks (ST) im zweiten Speicherbereich (SP2) beabstandet ist;

Identifizieren eines Stack-Programmobjekts, das gemäß einer Anordnungsstruk tur des Stacks (ST), in der jedem Stack- Programmobjekt eine Speicherposition (P) und eine Speichergröße (SG) zugewiesen ist, um den ersten Stack-Adressen- offset zu der ersten Speicherstelle des Stacks (ST) beabstandet ist, als ein erstes Stack-Programmobjekt, dessen Speicheradresse im zweiten Speicherbereich (SP2) der Zeigeradresse (ZA) des Zeigerelements entspricht, in einem ersten Stack-Programmobjektidentifizierungsschritt (149); und Identifizieren des ersten Stack-Programmobjekts mit dem durch das Zeigerele ment referenziellen Zeigerobjekt (ZO) im Zeigerobjektidentifizierungsschritt (111).

6. Verfahren (100) nach Anspruch 5, wobei der erste Stack-Programmobjektidentifi- zierungsschritt (149) umfasst:

Identifizieren unter Berücksichtigung des ersten Stack-Adressenoffsets der Zeige radresse (ZA) des Zeigerelements und der Anordnungsstruktur des Stacks (ST) eines Frames des Stacks (ST), der im zweiten Speicherbereich (SP2) des Stacks (ST) einen Speicherbereich belegt, der die Speicheradresse der Zeigeradresse (ZA) des Zeigerelements umfasst, in einem Frameidentifizierungsschritt (151); Identifizieren einer Funktion des identifizierten Frames des Stacks (ST) in einem Funktionsidentifikationsschritt (153); und

Identifizieren einer lokalen Variable der identifizierten Funktion, dessen Speicher adresse der Zeigeradresse (ZA) des Zeigerelements entspricht, als erstes Stack- Programmobjekt des Stacks (ST), dessen Speicheradresse der Zeigeradresse (ZA) des Zeigerelements entspricht.

7. Verfahren (100) nach Anspruch 5 oder 6, wobei ein Stack-Programmobjekt des Stacks (ST) als ein übergeordnetes zweites Stack-Programmobjekt ausgebildet ist, wobei das übergeordnete zweite Stack-Programmobjekt wenigstens ein unter geordnetes Stack-Teilprogrammobjekt umfasst, wobei das erste Stack-Program mobjekt als ein untergeordnetes Stack-Teilprogrammobjekt vom übergeordneten zweiten Stack-Programmobjekt umfasst ist, und wobei der erste Stack-Program- mobjektidentifizierungsschritt (149) umfasst:

Identifizieren eines Programmobjekts des Stacks (ST), für das gemäß der jeweiligen Speicherposition (P) und Speichergröße (SG) ein Speicherbe reich definiert ist, der eine Speicherstelle umfasst, die um den ersten Stack- Adressenoffset zur ersten Speicherstelle des Stacks (ST) beabstandet ist, als das übergeordnete zweite Stack-Programmobjekt und Identifizieren des übergeordneten zweiten Stack-Programmobjekts als das Programmobjekt, das im zweiten Speicherbereich (SP2) des Stacks (ST) einen Speicherbe reich belegt, der die Zeigeradresse (ZA) des Zeigerelements umfasst, in ei nem zweiten Stack-Programmobjektidentifizierungsschritt (155);

Bestimmen eines zweiten Stack-Adressenoffsets in einem zweiten Stack- Adressenoffsetbestimmungsschritt (157), wobei der zweite Stack-Ad- ressenoffset durch eine Differenz zwischen dem ersten Stack-Adressenoff- set und einer ersten relativen Speicheradresse des zweiten Stack-Pro grammobjekts bestimmt;

Bestimmen eines Datentyps des übergeordneten zweiten Stack-Programm objekts in einem zweiten Stack-Datentypbestimmungsschritt (159), wobei der Datentyp eine Datenstruktur des übergeordneten zweiten Stack-Pro grammobjekts bestimmt, in der eine Anzahl von untergeordneten Stack- Teilprogrammobjekten des übergeordneten zweiten Stack-Programmob jekts definiert ist und für jedes untergeordnete Stack-Teilprogrammobjekt eine Speichergröße (SG) und eine Speicherposition (P) innerhalb der Da tenstruktur des übergeordneten zweiten Programmobjekts bestimmt sind; Identifizieren eines untergeordneten Stack-Teilprogrammobjekts des über geordneten zweiten Stack-Programmobjekts, das gemäß der Datenstruktur des übergeordneten zweiten Stack-Programmobjekts um den zweiten Ad ressenoffset zu einer ersten Speicherstelle des übergeordneten zweiten Stack-Programmobjekts beabstandet ist, und Identifizieren des untergeord neten Stack-Teilprogrammobjekts des übergeordneten zweiten Stack-Pro grammobjekts als das erste Stack-Programmobjekt, dessen Speicherad resse der Zeigeradresse (ZA) des Zeigerelements entspricht.

8. Verfahren (100) nach Anspruch 7, wobei ein Stack-Programmobjekt des Stacks (ST) als ein übergeordnetes drittes Stack-Programmobjekt ausgebildet ist, wobei das übergeordnete dritte Stack-Programmobjekt wenigstens ein untergeordnetes Stack-Teilprogrammobjekt umfasst, wobei das übergeordnete zweite Stack-Pro grammobjekt als ein untergeordnetes Stack-Teilprogrammobjekt vom übergeord neten dritten Stack-Programmobjekt umfasst ist, und wobei der zweite Stack-Pro- grammobjektidentifizierungsschritt (155) umfasst:

Identifizieren eines Programmobjekts des Stacks (ST), für das gemäß der jeweiligen Speicherposition (P) und Speichergröße (SG) ein Speicherbe reich definiert ist, der eine Speicherstelle umfasst, die um den ersten Stack- Adressenoffset zur ersten Speicherstelle des Stacks (ST) beabstandet ist, als das übergeordnete dritte Stack- Programmobjekt und Identifizieren des übergeordneten dritten Stack- Programmobjekts als das Programmobjekt, das im zweiten Speicherbereich (SP2) des Stacks (ST) einen Speicherbe reich belegt, der die Zeigeradresse (ZA) des Zeigerelements umfasst, in ei nem dritten Stack-Programmobjektidentifizierungsschritt (161);

Bestimmen eines dritten Stack-Adressenoffsets in einem dritten Stack-Ad- ressenoffsetbestimmungsschritt (163), wobei der dritte Stack-Adressenoff- set durch eine Differenz zwischen dem ersten Stack-Adressenoffset und einer ersten relativen Speicherdresse des dritten Stack-Programmobjekts bestimmt ist;

Bestimmen eines Datentyps des übergeordneten dritten Stack-Programm objekts in einem dritten Stack-Datentypbestimmungsschritt (165), wobei der Datentyp eine Datenstruktur des übergeordneten dritten Stack-Pro grammobjekts bestimmt, in der eine Anzahl von untergeordneten Stack- Teilprogrammobjekten des übergeordneten dritten Stack-Programmobjekts definiert ist und für jedes untergeordnete Stack-Teilprogrammobjekt eine Speichergröße (SG) und eine Speicherposition (P) innerhalb der Daten struktur des übergeordneten dritten Stack-Programmobjekts bestimmt sind; Identifizieren eines untergeordneten Stack-Teilprogrammobjekts des über geordneten dritten Stack-Programmobjekts, das gemäß der Datenstruktur des übergeordneten dritten Stack-Programmobjekts um den dritten Stack- Adressenoffset zu einer ersten Speicherstelle des übergeordneten dritten Stack-Programmobjekts beabstandet ist, und Identifizieren des untergeord neten Stack-Teilprogrammobjekts des übergeordneten dritten Stack-Pro grammobjekts als das übergeordnete zweite Stack-Programmobjekt, das im zweiten Speicherbereich (SP2) des Stacks einen Speicherbereich be legt, der die Zeigeradresse (ZA) des Zeigerelements umfasst; und wobei der zweite Stack-Adressenoffset durch eine Differenz zwischen dem ersten Stack-Adressenoffset und einer Summe aus der ersten relativen Speicherdresse des dritten Stack-Programmobjekts und der ersten relati ven Speicheradresse des zweiten Stack-Programmobjekts bestimmt ist.

9. Verfahren (100) nach Anspruch 7 oder 8, wobei ein Stack-Programmobjekt des Stacks (ST) als ein übergeordnetes n-tes Stack-Programmobjekt ausgebildet ist, wobei das übergeordnete n-te Stack-Programmobjekt in n-1-facher Schachte lungstiefe einander umfassende untergeordnete Stack-Teilprogrammobjekte um fasst, wobei das übergeordnete zweite Stack-Programmobjekt als ein untergeord netes Stack-Teilprogrammobjekt in n-2-ter Schachtelungstiefe vom übergeordne ten n-ten Stack-Programmobjekt umfasst ist, wobei das erste Stack-Programmob jekt als ein untergeordnetes Stack-Teilprogrammobjekt in n-1-ter Schachtelungs tiefe vom übergeordneten n-ten Stack-Programmobjekt umfasst ist, wobei n eine natürlich Zahl und größer oder gleich 4 ist, und wobei der erste Stack-Programm- objektidentifizierungsschritt (149) umfasst:

Identifizieren eines Programmobjekts des Stacks (ST), für das gemäß der jeweiligen Speicherposition (P) und Speichergröße (SG) ein Speicherbe reich definiert ist, der eine Speicherstelle umfasst, die um den ersten Stack- Adressenoffset zur ersten Speicherstelle des Stacks (ST) beabstandet ist, als das übergeordnete n-te Stack-Programmobjekt und Identifizieren des übergeordneten n-ten Stack-Programmobjekts als das Programmobjekt, das im zweiten Speicherbereich (SP2) des Stacks (ST) einen Speicherbe reich belegt, der die Zeigeradresse (ZA) des Zeigerelements umfasst, in ei nem n-ten Stack-Programmobjektidentifizierungsschritt (167); Bestimmen eines n-ten Stack-Adressenoffsets in einem n-ten Stack-Ad- ressenoffsetbestimmungsschritt (169), wobei der n-te Stack-Adressenoffset durch eine Differenz zwischen dem ersten Stack-Adressenoffset und einer ersten relativen Speicherdresse des n-ten Stack-Programmobjekts be stimmt ist;

Bestimmen eines Datentyps des übergeordneten n-tten Stack-Programm objekts in einem n-ten Stack-Datentypbestimmungsschritt (171), wobei der Datentyp eine Datenstruktur des übergeordneten n-ten Stack-Programmob jekts bestimmt, in der eine Anzahl von untergeordneten Stack-Teilprogram- mobjekten des übergeordneten n-ten Stack-Programmobjekts definiert ist und für jedes untergeordnete Stack-Teilprogrammobjekt eine Speicher größe (SG) und eine Speicherposition (P) innerhalb der Datenstruktur des übergeordneten n-ten Stack-Programmobjekts bestimmt sind;

Identifizieren eines untergeordneten Stack-Teilprogrammobjekts des über geordneten n-ten Stack- Programmobjekts, das gemäß der Datenstruktur des übergeordneten n-ten Stack-Programmobjekts um den n-ten Stack-Ad- ressenoffset zu einer ersten Speicherstelle des übergeordneten n-ten Stack-Programmobjekts beabstandet ist, und Identifizieren des untergeord neten Stack-Teilprogrammobjekts des übergeordneten n-ten Stack-Pro grammobjekts als ein übergeordnetes n-1-tes Stack-Programmobjekt, das im zweiten Speicherbereich (SP2) des Stacks (ST) einen Speicherbereich belegt, der die Zeigeradresse (ZA) des Zeigerelements umfasst in einem n- 1-ten Stack-Programmobjektidentifizierungsschritt (173); wobei der n-1-ten Stack-Programmobjektidentifizierungsschritt (173) um fasst:

Bestimmen eines n-1-ten Stack-Adressenoffsets in einem n-1-ten Stack- Adressenoffsetbestimmungsschritt (175), wobei der n-1-te Stack-Adressen- offset durch eine Differenz zwischen dem ersten Stack-Adressenoffset und einer Summe aus der ersten relativen Speicherdresse des n-ten Stack-Pro grammobjekts und einer ersten relativen Speicheradresse des n-1-ten Stack-Programmobjekts bestimmt ist;

Bestimmen eines Datentyps des übergeordneten n-ten Stack-Programmob jekts in einem n-1-ten Stack-Datentypbestimmungsschritt (177), wobei der Datentyp eine Datenstruktur des übergeordneten n-1-ten Stack-Programm objekts bestimmt, in der eine Anzahl von untergeordneten Stack-Teilpro- grammobjekten des übergeordneten n-1-ten Stack-Programmobjekts defi niert ist und für jedes untergeordnete Stack-Teilprogrammobjekt eine Speichergröße (SG) und eine Speicherposition (P) innerhalb der Daten struktur des übergeordneten n-1-ten Stack- Programmobjekts bestimmt sind;

Identifizieren eines untergeordneten Stack-Teilprogrammobjekts des über geordneten n-1-ten Stack-Programmobjekts, das gemäß der Datenstruktur des übergeordneten n-1-ten Stack-Programmobjekts um den n-1-ten Stack-Adressenoffset zu einer ersten Speicherstelle des übergeordneten n- 1-ten Stack-Programmobjekts beabstandet ist, und Identifizieren des unter geordneten Stack-Teilprogrammobjekts des übergeordneten n-1-ten Stack- Programmobjekts als ein übergeordnetes n-2-tes Stack-Programmobjekt, das im zweiten Speicherbereich (SP2) des Programmzustands (PZ) einen Speicherbereich belegt, der die Zeigeradresse (ZA) des Zeigerelements umfasst in einem n-2-ten Stack-Programmobjektidentifizierungsschritt (179);

Wobei der n-2-te Stack-Programmobjektidentifizierungsschritt (179) um- fassst:

Falls gilt, n-2>2, Rekursives Ausführen des n-1-ten Stack-Adressenoffset- bestimmungsschritt (175) und des n-2-ten Stack-Programmobjektidentifizie- rungsschritt (179) in einem weiteren Rekursionsschritt (181);

Bestimmen eines zweiten Stack-Adressenoffsets im zweiten Stack-Ad- ressenoffsetbestimmungsschritt (157), wobei der zweite Stack-Adressenoff- set durch eine Differenz zwischen dem ersten Stack-Adressenoffset und einer Summe aus ersten relativen Speicherdressen des n-ten Stack-Pro grammobjekts bis zum zweiten Stack-Programmobjekts bestimmt ist; Bestimmen eines Datentyps des übergeordneten zweiten Stack-Programm objekts in einem zweiten Stack-Datentypbestimmungsschritt (159), wobei der Datentyp eine Datenstruktur des übergeordneten zweiten Stack-Pro grammobjekts bestimmt, in der eine Anzahl von untergeordneten Stack- Teilprogrammobjekten des übergeordneten zweiten Stack-Programmob jekts definiert ist und für jedes untergeordnete Stack-Teilprogrammobjekt eine Speichergröße (SG) und eine Speicherposition (P) innerhalb der Da tenstruktur des übergeordneten zweiten Stack-Programmobjekts bestimmt sind;

Identifizieren eines untergeordneten Stack-Teilprogrammobjekts des über geordneten zweiten Stack- Programmobjekts, das gemäß der Datenstruktur des übergeordneten zweiten Stack-Programmobjekts um den zweiten Ad ressenoffset zu einer ersten Speicherstelle des übergeordneten zweiten Stack-Programmobjekts beabstandet ist, und Identifizieren des untergeord neten Stack-Teilprogrammobjekts des übergeordneten zweiten Stack-Pro grammobjekts als das erste Stack-Programmobjekt, dessen Speicherad resse der Zeigeradresse (ZA) des Zeigerelements entspricht.

10. Verfahren (100) nach einem der voranstehenden Ansprüche, ferner umfassend:

Bestimmen eines Datentyps des ersten Programmobjekts (P01) in einem ersten Datentypbestimmungsschritt (183), wobei der Datentyp des ersten Programmobjekts eine Datenstruktur des ersten Programmobjekts (P01) bestimmt; und/oder

Bestimmen eines Datentyps des ersten Stack-Programmobjekts in einem ersten Stack-Datentypbestimmungsschritt (185), wobei der Datentyp des ersten Programmobjekts eine Datenstruktur des ersten Programmobjekts (P01) bestimmt.

11. Verfahren (100) nach einem der voranstehenden Ansprüche, wobei die vollqualifi zierte Bezeichnung des durch das Zeigerelement referenziellen Zeigerobjekts (ZO) die Bezeichnungen ersten Programmobjekts und/oder der übergeordneten Programmobjekte oder die Bezeichnungen des ersten Stack-Programmobjekts und/oder der übergeordneten Stack-Programmobjekte und/oder des identifizierten Frames und/oder einen Namen der identifizierten Funktion umfasst.

12. Verfahren (100) nach einem der voranstehenden Ansprüche, wobei ein überge ordnetes Programmobjekt oder ein übergeordnetes Stack- Programmobjekt von einem Verbundtyp, einem Feldtyp oder einem Zeichenkettentyp ist.

13. Verfahren (100) nach einem der voranstehenden Ansprüche, ferner umfassend: Auswählen einer Mehrzahl von Programmobjekten des Programmzustands (PZ) in einem Auswahlschritt (187), wobei ein ausgewähltes Programmobjekt das Zei gerelement ist;

Bestimmen von vollqualifizierten Bezeichnungen der ausgewählten Programmob jekte im Vollbezeichnungsbestimmungsschritt (113); und Anzeigen der vollqualifizierten Bezeichnungen der ausgewählten Programmob jekte auf dem mit der Steuerung verbundenen Displayelement im Anzeigeschritt (115).

14. Verfahren (100) nach einem der voranstehenden Ansprüche, wobei im Anzeige schritt (115) zusätzlich zu der vollqualifizierten Bezeichnung ein Wert des jeweili gen Programmobjekts (PO) angezeigt wird, und wobei das Verfahren (100) ferner umfasst: Anpassen wenigstens eines Werts eines Programmobjekts (PO) in einem

Anpassungsschritt (189); und

Steuern eines Automatisierungsprozesses durch das Steuerprogramm un ter Berücksichtigung des wenigstens einen geänderten Werts des wenigs tens einen Programmobjekts (PO) in einem Steuerschritt (191).

15. Verfahren (100) nach einem der voranstehenden Ansprüche, wobei das Verfah ren (100) in einem Debuggingprozess ausführbar ist und/oder in eine Steuerungs- pozess des Automatisierungssystems (200) ausgeführt wird. 16. Verfahren (100) nach einem der voranstehenden Ansprüche, wobei das Display element als eine Mensch-Maschinen-Schnittstelle ausgebildet ist und in die Steu erung integriert ist.

17. Automatisierungssystem (200) mit einer Steuerung und einem mit der Steuerung (201) verbundenen Displayelement (207), wobei die Steuerung (201) ausgebildet ist, das Verfahren (100) nach einem de voranstehenden Ansprüche 1 bis 16 aus zuführen.

Description:
Beschreibung

Verfahren zum Steuern eines Automatisierungssystems mit Visualisierung von Program mobjekten eines Steuerprogramms des Automatisierungssystems und Automatisierungs system

Die Erfindung betrifft ein Verfahren zum Steuern eines Automatisierungssystems, das eine Visualisierung von Programmobjekten eines Steuerprogramms des Automatisie rungssystems ermöglicht. Die Erfindung betrifft ferner ein Automatisierungssystem zum Ausführen des Verfahrens.

Diese Patentanmeldung beansprucht die Priorität der deutschen Patentanmeldung DE 10 2020 119853.1, deren Offenbarungsgehalt hiermit durch Rückbezug aufgenommen wird.

In der Automatisierungstechnik werden Teilnehmer eines Automatisierungssystems für gewöhnlich durch eine Steuerung des Automatisierungssystems mittels zyklischen Aus führens eines entsprechenden Steuerprogramms angesteuert. Für jeden Zyklus, in dem die jeweiligen Teilnehmer den jeweiligen Steueranweisungen des Steuerprogramms ent sprechend gesteuert werden, werden von der Steuerung Informationen aufgenommen und gespeichert, die den Zustand des Automatisierungssystems und des Steuerpro gramms beschreiben. Ein sogenannter Programmzustand umfasst die vollständige Infor mation, die notwendig ist, den Zustand des Automatisierungssystems und des Steuerpro gramms wiederzugeben. Ein Programmzustand kann beispielsweise die im Steuerpro gramm verwendeten Variablen, Funktionen, Datenbanken oder sonstige Objekte umfas sen. Ferner kann der Programmzustand Informationen bezüglich der Teilnehmer des Au tomatisierungssystems oder bezüglich im Automatisierungssystem ablaufender Prozesse umfassen.

Ein derartiger Programmzustand kann nach Abschluss jedes Steuerzyklus neu erstellt werden, sodass jederzeit der aktuelle Zustand des Automatisierungssystems und des Steuerprogramms wiedergegeben werden kann.

Bei erneutem Ausführen des Steuerprogramms in einem folgenden Steuerzyklus kann das Steuerprogramm auf die im globalen Zustand gespeicherten Daten zurückgreifen und somit die Steuerung des Automatisierungssystems in dem folgenden Zyklus auf Basis des Zustands des Automatisierungssystems des vorherigen Steuerzyklus fortsetzen. Im laufenden Betrieb eines Automatisierungssystems ergeben sich häufig Situationen, in denen verschiedene Parameter nachgeregelt oder Abläufe verändert oder angepasst wer den müssen, um einen optimalen beziehungsweise optimierten Ablauf des Automatisie rungssystems erreichen oder gewährleisten zu können. Um dem Nutzer zu ermöglichen, bestimmte Parameter des durch das Steuerprogramm gesteuerten Automatisierungspro zesses zu verfolgen, um so den Verlauf des Automatisierungsprozesses beobachten zu können, ergibt sich das Problem, dem Nutzer entsprechende im Programmzustand ge speicherte Parameter oder Objekte des Steuerprogramms inklusive der jeweiligen Werte anzuzeigen. Um dem Nutzer eine aussagekräftige Anzeige bereitstellen zu können, die eine unmittelbar selbsterklärende Information bezüglich des Zustands des Automatisie rungsprozesses beziehungsweise des ausgeführten Steuerprogramms bereitstellen zu können, bedarf es einer Anzeige von vollqualifizierten Bezeichnungen der anzuzeigenden Parameter oder Objekte. Vollqualifizierte Bezeichnungen können hierbei den vollständi gen Namen des jeweiligen Parameters oder Objektes umfassen.

Problematisch ist die Darstellung der vollqualifizierten Bezeichnungen insbesondere bei Zeigervariablen. Hier stellt sich das Problem, dass der Wert einer Zeigervariable eine Speicheradresse des durch die Zeigervariable referenzierten Objekts ist. Das Anzeigen der referenzierten Adresse als Wert der Zeigervariablen ermöglicht jedoch keine Bereit stellung unmittelbar selbsterklärender Information für den Nutzer, da anhand der referen zierten Adresse nicht unmittelbar bestimmbar ist, welches Objekt durch die Zeigervariable referenziert wird.

Es besteht daher die Notwendigkeit, die Information von Objekten des Programmzustands und gegebenenfalls des Stacks, in dem lokale Objekte des Steuerprogramms gespeichert sind, inklusive von Zeigervariablen beziehungsweise von Zeigerelementen des Steuerpro gramms in unmittelbar verständlicher Weise darzustellen. Dies ist insbesondere während der Ausführung des Steuerprogramms zum Steuern eines Automatisierungsprozesses und während des Ausführens eines Debugging-Prozesses eines Steuerprogramms von Interesse.

Es ist daher eine Aufgabe der Erfindung, ein verbessertes Verfahren zum Steuern eines Automatisierungssystems mit Visualisierung von Programmobjekten eines Steuerpro gramms des Automatisierungssystems und ein Automatisierungssystem zum Ausführen des Verfahrens bereitzustellen. Die Aufgabe wird durch ein Verfahren und ein Automatisierungssystem gemäß den unab hängigen Ansprüchen gelöst. Bevorzugte Ausführungsformen sind Gegenstand der ab hängigen Ansprüche.

Nach einem Aspekt der Erfindung wird ein Verfahren zum Steuern eines Automatisie rungssystems mit Visualisierung von Programmobjekten eines Steuerprogramms des Au tomatisierungssystems bereitgestellt, wobei eine Steuerung des Automatisierungssystems ein Steuerprogramm umfasst, wobei in einem ersten Speicherbereich der Steuerung ein Programmzustand des Steuerprogramms gespeichert ist, wobei der Programmzustand eine Mehrzahl von Programmobjekten des Steuerprogramms umfasst, wobei die Pro grammobjekte in einer vorbestimmten Anordnungsstruktur des Programmzustands relativ zueinander angeordnet sind, wobei über die Anordnungsstruktur jedem Programmobjekt eine Speicherposition und eine Speichergröße zugeordnet sind, wobei eine Speicherposi tion eines Programmobjekts eine Anzahl von Speicherstellen definiert, um die ein Pro grammobjekt in einem Speicherbereich zu einer ersten Speicherstelle des Programmzu stands beabstandet gespeichert ist, wobei eine Speichergröße eines Programmobjekts eine Anzahl von Speicherstellen definiert, die ein Speicherobjekt in einem Speicherbe reich belegt, wobei der Programmzustand wenigstens ein Zeigerelement umfasst, wobei durch das Zeigerelement ein Zeigerobjekt referenziert ist, wobei das Zeigerobjekt ein Pro grammobjekt des Steuerprogramms ist, wobei in einem zweiten Speicherbereich der Steuerung ein Stack des Steuerprogramms eingerichtet ist, und wobei im Stack während einer Laufzeit des Steuerprogramms Programmobjekte speicherbar sind, umfassend: Ausführen des Steuerprogramms in einem Ausführschritt;

Ermitteln einer Zeigeradresse des Zeigerelements in einem Zeigeradressenermittlungs schritt, wobei die Zeigeradresse einer durch das Zeigerelement referenzierten Speicher adresse entspricht;

Überprüfen, ob die Zeigeradresse des Zeigerelements im ersten Speicherbereich des Programmzustands oder im zweiten Speicherbereich des Stacks angeordnet ist, in einem ersten Überprüfungsschritt;

Falls die Zeigeradresse des Zeigerelements im ersten Speicherbereich des Programmzu stands angeordnet ist, Bestimmen eines ersten Adressenoffsets der Zeigeradresse des Zeigerelements in einem ersten Adressenoffsetbestimmungsschritt, wobei der erste Ad ressenoffset eine Anzahl von Speicherstellen definiert, um die die Zeigeradresse des Zei gerelements zu einer ersten Speicheradresse des Programmzustands im ersten Spei cherbereich beabstandet ist;

Identifizieren eines Programmobjekts, das gemäß der Anordnungsstruktur des Programm zustands um den ersten Adressenoffset zu der ersten Speicherstelle des Programmzustands beabstandet ist, als ein erstes Programmobjekt, dessen Speicherad resse im ersten Speicherbereich der Zeigeradresse des Zeigerelements entspricht, in ei nem ersten Programmobjektidentifizierungsschritt;

Identifizieren des ersten Programmobjekts mit dem durch das Zeigerelement referenzier- ten Zeigerobjekt in einem Zeigerobjektidentifizierungsschritt;

Bestimmen einer vollqualifizierten Bezeichnung des identifizierten Zeigerobjekts in einem Vollbezeichnungsbestimmungsschritt; und

Anzeigen der vollqualifizierten Bezeichnung des durch das Zeigerelement referenziellen Zeigerobjekts auf einem mit der Steuerung verbundenen Displayelement in einem Anzei geschritt.

Hierdurch wird der technische Vorteil erreicht, dass ein Verfahren zum Steuern eines Au tomatisierungssystems mit Visualisierung von Programmobjekten eines Steuerprogramms zum Steuern des Automatisierungssystems bereitgestellt werden kann, bei dem während des Ausführens des Steuerprogramms durch eine Steuerung des Automatisierungssys tems Programmobjekte eines Programmzustands in vollqualifizierten Bezeichnungen der jeweiligen Programmobjekts in einem mit der Steuerung verbundenen Displayelement an gezeigt werden können. Hierdurch kann einem Nutzer des Automatisierungssystems eine unmittelbar verständliche Information des jeweils angezeigten Programmobjekts bereitge stellt werden. Insbesondere ermöglicht das Verfahren eine Darstellung eines durch ein Zeigeelement des Programmzustands des Steuerprogramms referenzierte Programmob jekts in der entsprechenden vollqualifizierten Bezeichnung.

Ein Programmzustand eines Steuerprogramms ist im Sinne der Anmeldung eine umfas sende Menge von Programmobjekten des Steuerprogramms, die in einer vorbestimmten Anordnungsstruktur angeordnet sind. Die Programmobjekte können hierbei beliebige Vari ablen oder Datenobjekte des Steuerprogramms sein und verschiedene Datentypen wie Feldtypen, Verbundtypen, Zeichenkettentypen oder Zahlentypen aufweisen. Innerhalb der fest vorbestimmten Anordnungsstruktur sind die einzelnen Programmobjekte innerhalb des Programmzustands zueinander angeordnet, wobei hierüber Relationen zwischen ein zelnen Programmobjekten, Referenzierungen verschiedener Programmobjekte sowie Ver schachtelungen beziehungsweise Vererbungszuordnungen mehrerer Programmobjekte umfasst ist, bei der eine Mehrzahl von Programmobjekten als übergeordnete und unterge ordnete Programmobjekte ineinander verschachtelt angeordnet sind. Die Anordnungs struktur des Programmzustands bleibt während des Ausführens des Steuerprogramms unverändert, sodass Relationen zwischen Programmobjekten, Referenzierungen von Programmobjekten und Verschachtelungen mehrerer Programmobjekte während des Ausführens des Steuerprogramms unverändert bleiben.

Ein Zeigerelement ist im Sinne der Anmeldung eine Zeigervariable, die ein Zeigerobjekt referenziert. Ein Zeigerobjekt ist im Sinne der Anmeldung ein beliebiges Programmobjekt des Steuerprogramms.

Ein Stack ist im Sinne der Anmelder ein Laufzeitkeller, in dem lokale Variable und Funkti onen während der Laufzeit des Steuerprogramms beziehungsweise während einer Lauf zeit von Unterprogrammen des Steuerprogramms gespeichert sind.

Eine Zeigeradresse ist im Sinne der Anmeldung eine durch das Zeigerelement referen zielle Speicheradresse des Zeigerobjekts.

Eine Speicherstelle ist im Sinne der Anmeldung eine Einheit des Speichers, in der eine Dateneinheit gespeichert werden kann. Eine Speicheradresse ist im Sinne der Anmeldung eine mit einer Adresse versehene Speicherstelle des Speichers, die zur Referenzierung bzw. Adressierung eines in der jeweiligen Speicherstelle des Speichers gespeicherten Datenobjekts verwendbar ist.

Während des Ausführens des Steuerprogramms werden die Programmobjekte des Steu erprogramms mit Werten versehen, die im Programmzustand gespeichert werden und den Zustand des ausgeführten Steuerprogramms beziehungsweise den Zustand eines durch das Steuerprogramm gesteuerten Automatisierungsprozesses wiedergeben. Die Werte der Programmobjekte stellen hierbei einen aktuellen Zustand des zu steuernden Automatisierungsprozesses dar. Hierauf wird eine durch ein Zeigerelement des Pro grammzustands referenzierte Zeigeradresse eines Zeigerobjekts ermittelt und bestimmt, ob diese Zeigeradresse in einem Speicherbereich des Programmzustands angeordnet ist. Hierzu kann einfach der Wert der jeweiligen Zeigervariablen beziehungsweise des jeweili gen Zeigerelements ausgelesen werden.

Falls die Zeigeradresse im Speicherbereich des Programmzustands angeordnet ist, wird ein erster Adressenoffset der Zeigeradresse zu einer ersten Speicheradresse des Pro grammzustands bestimmt. Der erste Adressenoffset beschreibt hierbei eine Differenz zwi schen der Zeigeradresse und der ersten Speicheradresse des Programmzustands. Der Programmzustand mit der während des Ausführens des Steuerprogramms unveränderba ren Anordnungsstruktur der Mehrzahl von Programmobjekten kann als ein umfassendes Datenobjekt beispielsweise eines Verbundtyps interpretiert werden, das in einem hierfür vorgesehenen ersten Speicherbereich des Speichers gespeichert ist. Innerhalb der Adres senstruktur des Speichers umfasst der erste Speicherbereich des Programmzustands so mit eine bekannte absolute erste Speicherstelle, die der ersten Speicheradresse des für die Speicherung des Programmzustands reservierten Speicherbereichs innerhalb des Speichers entspricht.

Auf Basis des bestimmten ersten Adressenoffsets und der Anordnungsstruktur des Pro grammzustands, in der jedem Programmobjekt eine Speicherposition und eine Speicher größe innerhalb des Programmzustands zugeordnet ist, wird im Folgenden ein erstes Pro grammobjekt identifiziert, dessen Speicheradresse im Speicherbereich des Programmzu stands der Zeigeradresse entspricht. Hierzu wird für jedes Programmobjekt des Pro grammzustands auf Basis der jeweiligen Speicherposition und Speichergröße eine Anzahl von Speicherstellen bestimmt, um die das jeweilige Programmobjekt zur ersten Speicher adresse des Programmzustands beabstandet ist. Das Programmobjekt, das zur ersten Speicheradresse des Programmzustands um die Anzahl von Speicherstellen beabstandet ist, die durch den ersten Adressenoffset bestimmt wurde, wird als erstes Programmobjekt identifiziert, dessen Speicheradresse im Speicherbereich des Programmzustands der Zei geradresse entspricht.

Da die absoluten Speicheradressen der einzelnen Datenobjekte des Programmzustands unbekannt sind, werden über die bekannte Anordnungsstruktur des Programmzustands, die jedem Programmobjekte eine Speicherposition innerhalb des Programmzustand zu ordnet, und der bekannten absoluten ersten Speicheradresse des Programmzustands je dem Programmobjekt des Programmzustands somit über den Abstand zur ersten Spei cheradresse eine relative Adresse relativ zur absoluten ersten Speicheradresse des Pro grammzustands zugeordnet. Über den ersten Adressenoffset wird die Zeigeradresse in eine relative Adresse relativ zur ersten Speicheradresse des Programmzustands umge wandelt, sodass das Programmobjekt, das innerhalb des Programmzustands eine relative Adresse aufweist, die der relativen Adresse der Zeigeradresse, sprich dem ersten Ad ressenoffset, entspricht als das Programmobjekt des Programmzustands identifizierbar ist, das eine absolute Adresse aufweist, die der Zeigeradresse entspricht.

Darauf folgend wird das erste Programmobjekt mit dem durch das Zeigerelement referen ziellen Zeigerobjekt identifiziert. Hierauf folgend wird eine vollqualifizierte Bezeichnung des referenzierten Zeigerobjekts in einem Displayelement angezeigt.

Eine vollqualifizierte Bezeichnung eines Programmobjekts ist im Sinne der Anmeldung eine Bezeichnung, die eine eindeutige Identifizierung des jeweiligen Programmobjekts er möglicht. Eine vollqualifizierte Bezeichnung kann beispielsweise einen Namen bzw. eine sprechende Bezeichnung sein und eine vollständige Auflistung von Referenzen bzw. Ver schachtelungen des Programmobjekts umfassen.

Hierdurch kann ein Verfahren bereitgestellt werden, das für beliebige Zeigerelemente ei nes Programmzustands eines Steuerprogramms eines Automatisierungssystems eine vollqualifizierte Bezeichnung der jeweils referenzierten Zeigerobjekte angeben und somit eine unmittelbar verständliche Information der Inhalte der jeweiligen Zeigerelemente be reitstellen kann.

Nach einer Ausführungsform ist ein Programmobjekt des Programmzustands als ein über geordnetes zweites Programmobjekt ausgebildet, wobei das übergeordnete zweite Pro grammobjekte wenigstens ein untergeordnetes Teilprogrammobjekt umfasst, wobei das erste Programmobjekt als ein untergeordnetes Teilprogrammobjekt vom übergeordneten zweiten Programmobjekt umfasst ist, und wobei der erste Programmobjektidentifizie rungsschritt umfasst:

Identifizieren eines Programmobjekts des Programmzustands, für das gemäß der jeweili gen Speicherposition und Speichergröße ein Speicherbereich definiert ist, der eine Spei cherstelle umfasst, die um den ersten Adressenoffset zur ersten Speicherstelle des Pro grammzustands beabstandet ist, als das übergeordnete zweite Programmobjekt und Iden tifizieren des übergeordneten zweiten Programmobjekts als das Programmobjekt, das im ersten Speicherbereich des Programmzustands einen Speicherbereich belegt, der die Zeigeradresse des Zeigerelements umfasst, in einem zweiten Programmobjektidentifizie rungsschritt;

Bestimmen eines zweiten Adressenoffsets in einem zweiten Adressenoffsetbestimmungs schritt, wobei der zweite Adressenoffset durch eine Differenz zwischen dem ersten Ad ressenoffset und der ersten relativen Speicheradresse des zweiten Programmobjekts be stimmt ist;

Bestimmen eines Datentyps des übergeordneten zweiten Programmobjekts in einem zweiten Datentypbestimmungsschritt, wobei der Datentyp eine Datenstruktur des überge ordneten zweiten Programmobjekts bestimmt, in der eine Anzahl von untergeordneten Teilprogrammobjekten des übergeordneten zweiten Programmobjekts definiert ist und für jedes untergeordnete Teilprogrammobjekt eine Speichergröße und eine Speicherposition innerhalb der Datenstruktur des übergeordneten zweiten Programmobjekts bestimmt sind; Identifizieren eines untergeordneten Teilprogrammobjekts des übergeordneten zweiten Programmobjekts, das gemäß der Datenstruktur des zweiten Programmobjekts um den zweiten Adressenoffset zu einer ersten Speicherstelle des übergeordneten zweiten Pro grammobjekts beabstandet ist, und Identifizieren des untergeordneten Teilprogrammob jekts des übergeordneten zweiten Programmobjekts als das erste Programmobjekt, des sen Speicheradresse der Zeigeradresse des Zeigerelements entspricht.

Hierdurch wird der technische Vorteil erreicht, dass eine vollqualifizierte Bezeichnung ei nes Zeigerobjekts bereitgestellt werden kann, das eine erste Schachtelungstiefe aufweist und ein untergeordnetes Programmobjekt eines übergeordneten Programmobjekts ist.

Hierzu wird zunächst auf Basis des ersten Adressenoffsets und der Anordnungsstruktur des Programmzustands ein übergeordnetes zweites Programmobjekt identifiziert, das im Speicherbereich des Programmzustands einen Bereich belegt, der die durch das Zei gerelement referenzierte Zeigeradresse umfasst. Hierzu wird wiederum für jedes Pro grammobjekt des Programmzustands eine Anzahl von Speicherstellen bestimmt, die das jeweilige Programmobjekt von einer ersten Speicheradresse des Programmzustands be abstandet ist. Hierzu werden die Speicherpositionen und die Speichergrößen der einzel nen Programmobjekte gemäß der Anordnungsstruktur berücksichtigt und für im Speicher bereich des Programmzustands nacheinander angeordnete Programmobjekte ein ent sprechender Abstand zur ersten Speicheradresse des Programmzustands bestimmt.

Darauffolgend wird ein zweiter Adressenoffset bestimmt, der sich aus einer Differenz zwi schen dem ersten Adressenoffset und der ersten relativen Speicheradresse zweiten Pro grammobjekts ergibt, und eine Anzahl von Speicherstellen definiert, um die die Zeigerad resse des Zeigerelements zu einer ersten relativen Speicheradresse des übergeordneten zweiten Programmobjekts beabstandet ist.

Eine erste relative Speicheradresse eines Programmobjekts ist im Sinne der Anmeldung eine erste Speicheradresse, die von dem jeweiligen Programmobjekt im Speicher belegt wird, die jedoch keine absolute Adresse des Speichers ist, sondern relativ zu dem jeweils übergeordneten Objekt bestimmt wird. Das übergeordnete Objekt kann der Programmzu stand, der Stack oder ein übergeordnetes Programmobjekt sein, von dem das jeweilige Programmobjekt umfasst ist. Die erste relative Speicheradresse wird damit relativ zu der jeweiligen Struktur des übergeordneten Objekts bestimmt und gibt einen Abstand des jeweiligen Programmobjekts zu der ersten Speicheradresse des jeweils übergeordneten Objekts an. Falls das übergeordnete Objekt ein übergeordnetes Programmobjekt ist, gibt die erste relative Speicheradresse des vom übergeordneten Programmobjekte umfassten Programmobjekts einen Abstand des umfassten Programmobjekts zur ersten relativen Speicheradresse des jeweils übergeordneten Programmobjekts an. Die erste relative Speicheradresse eines Programmobjekts beschreibt somit eine Anzahl von Speicherstel len, um die eine erste Speicherstelle des jeweiligen Programmobjekts, zu einer ersten Speicherstelle eines jeweils übergeordneten Programmobjekts beabstandet ist. Erste rela tive Speicherstellen und Adrssenoffsets können somit addiert und subtrahiert werden, da beide Größen Anzahlen von Speicherstellen beschreiben.

Darauffolgend wird ein Datentyp des identifizierten übergeordneten zweiten Programmob jekts bestimmt. Der Datentyp des übergeordneten zweiten Programmobjekts kann bei spielsweise ein Feldtyp, ein Verbundtyp oder ein Zeichenkettentyp sein, der wiederum eine Mehrzahl untergeordneter Programmobjekte umfasst. Durch die Bestimmung des Datentyps wird ferner eine Datenstruktur des übergeordneten zweiten Programmobjekts ermittelt, die eine Anzahl der untergeordneten Programmobjekte umfasst und jedem un tergeordneten Programmobjekt eine Speicherposition und Speichergröße innerhalb des übergeordneten zweiten Programmobjekts zuordnet.

Unter Berücksichtigung der Datenstruktur des übergeordneten zweiten Programmobjekts wird im Folgenden ein untergeordnetes Programmobjekt des übergeordneten zweiten Programmobjekts identifiziert, das innerhalb der Datenstruktur des übergeordneten zwei ten Programmobjekts um die Anzahl von Speicherstellen des zweiten Adressenoffsets zu einer ersten relativen Speicheradresse des übergeordneten zweiten Programmobjekts be abstandet ist. Das identifizierte untergeordnete Programmobjekt des übergeordneten zweiten Programmobjekts wird somit als erstes Programmobjekt identifiziert, das im Spei cherbereich des Programmzustands eine Speicheradresse aufweist, die der Zeigerad resse des Zeigerelements entspricht.

Hierdurch kann eine vollqualifizierte Bezeichnung eines Zeigerobjekts bereitgestellt wer den, das ein Unterobjekt eines Programmobjekts des Programmzustands ist. Hierdurch kann beispielsweise eine vollqualifizierte Bezeichnung eines durch das Zeigerelement re ferenziellen Elements eines Feldtyps bzw. eine Komponente eines Verbundtyps bzw. ein Element eines Zeichenkettentyps bereitgestellt werden. Die vollqualifizierte Bezeichnung kann hierbei die Bezeichnung des übergeordneten zweiten Programmobjekts, sprich des Feldtyps, des Verbundtyps oder des Zeichenkettentyps, sowie die Bezeichnung des ersten Programmobjekts, sprich des Elements des Feldtyps, der Komponente des Ver bundtyps bzw. des Elements des Zeichenkettentyps umfassen.

Ein übergeordnetes Programmobjekt ist im Sinne der Anmeldung ein Datenobjekt des Programmzustands, das wiederum untergeordnete Programmobjekte umfasst. Ein über geordnetes Programmobjekt kann daher ein Datenobjekt eines Verbundtyps, eines Feld typs oder eines Zeichenkettentyps sein, dass wiederum Elemente oder Komponenten um fasst. Untergeordnete Programmobjekte sind im Sinne der Anmeldung Programmobjekte des Programmzustands die von einem übergeordneten Programmobjekt umfasst sind. Diese können somit beispielsweise Elemente oder Komponenten eines Datenobjekts ei nes Verbundtyps, eines Feldtyps oder eines Zeichenkettentyps sein. Untergeordnete Pro grammobjekte können wiederum untergeordnete Programmobjekte umfassen und somit relativ zu den umfassten untergeordneten Programmobjekte als übergeordnete Program mobjekte fungieren. Beispielsweise kann eine Datenobjekt eines Verbundtyps Komponen ten umfassen, die wiederum von einem Verbundtyp sind und selbst weitere Komponenten umfassen.

Über die Datenstruktur des übergeordneten Programmobjekts, die jedem untergeordneten Programmobjekt innerhalb der Datenstruktur eine Speicherposition und Speichergröße zuordnet, und durch die Bestimmung des zweiten Adressenoffsets, der den relativen Ab stand der Zeigeradresse zur ersten relativen Speicheradresse des übergeordneten Pro grammobjekts bestimmt und sich aus der Differenz aus dem ersten Adressenoffset und der ersten relativen Speicheradresse des zweiten Programmobjekts ergibt, wird die Zeige radresse des Zeigerelements in eine relative Adresse relativ zur ersten relativen Speicher adresse des übergeordneten Programmobjekts umgewandelt.

Die erste relative Speicheradresse des übergeordneten Programmobjekts ist über die Speicherstruktur und die erste Speicheradresse des Programmzustands bestimmbar. In nerhalb der Datenstruktur des übergeordneten Programmobjekts lassen sich somit jedem untergeordneten Programmobjekt des übergeordneten Programmobjekts eine relative Ad resse zuordnen, die einer Anzahl von Speicherstellen entspricht, die das jeweilige unter geordnete Programmobjekt von der ersten relativen Speicheradresse des übergeordneten Programmobjekts beabstandet ist. Dasjenige untergeordnete Programmobjekt, das inner halb der Datenstruktur des übergeordneten Programmobjekts um eine Anzahl an Spei cherstellen zu der ersten relativen Speicheradresse des übergeordneten Programmob jekts beabstandet ist, die dem zweiten Adressenoffset entspricht, wird als das untergeord nete Programmobjekt identifiziert, dessen Speicheradresse der Zeigeradresse entspricht. Nach einer Ausführungsform ist ein Programmobjekt des Programmzustands als ein über geordnetes drittes Programmobjekt ausgebildet, wobei das übergeordnete dritte Program mobjekt wenigstens ein untergeordnetes Teilprogrammobjekt umfasst, wobei das überge ordnete zweite Programmobjekt als ein untergeordnetes Teilprogrammobjekt vom überge ordneten dritten Programmobjekt umfasst ist, und wobei der zweite Programmobjektiden tifizierungsschritt umfasst:

Identifizieren eines Programmobjekts des Programmzustands, für das gemäß der jeweili gen Speicherposition und Speichergröße ein Speicherbereich definiert ist, der eine Spei cherstelle umfasst, die um den ersten Adressenoffset zur ersten Speicherstelle des Pro grammzustands beabstandet ist, als das übergeordnete dritte Programmobjekt und Identi fizieren des übergeordneten dritten Programmobjekts als das Programmobjekt, das im ersten Speicherbereich des Programmzustands einen Speicherbereich belegt, der die Zeigeradresse des Zeigerelements umfasst, in einem dritten Programmobjektidentifizie rungsschritt;

Bestimmen eines dritten Adressenoffsets in einem dritten Adressenoffsetbestimmungs schritt, wobei der dritte Adressenoffset durch eine Differenz zwischen dem ersten Ad ressenoffset und einer ersten relativen Speicheradresse des dritten Programmobjekts be stimmt ist;

Bestimmen eines Datentyps des übergeordneten dritten Programmobjekts in einem drit ten Datentypbestimmungsschritt, wobei der Datentyp eine Datenstruktur des übergeord neten dritten Programmobjekts bestimmt, in der eine Anzahl von untergeordneten Teilpro grammobjekten des übergeordneten dritten Programmobjekts definiert ist und für jedes untergeordnete Teilprogrammobjekt eine Speichergröße und eine Speicherposition inner halb der Datenstruktur des übergeordneten zweiten Programmobjekts bestimmt sind; Identifizieren eines untergeordneten Teilprogrammobjekts des übergeordneten dritten Programmobjekts, das gemäß der Datenstruktur des übergeordneten dritten Programm objekts um den dritten Adressenoffset zu einer ersten Speicherstelle des übergeordneten dritten Programmobjekts beabstandet ist, und Identifizieren des untergeordneten Teilpro grammobjekts des übergeordneten dritten Programmobjekts als das übergeordnete zweite Programmobjekt, das im ersten Speicherbereich des Programmzustands einen Speicherbereich belegt, der die Zeigeradresse des Zeigerelements umfasst, wobei der zweite Adressenoffset durch eine Differenz zwischen dem ersten Adressenoff set und einer Summe aus der ersten relativen Speicheradresse des dritten Programmob jekts und einer ersten relativen Speicheradresse des zweiten Programmobjekts bestimmt ist. Hierdurch wird ein technischer Vorteil erreicht, dass eine vollqualifizierte Bezeichnung ei nes durch das Zeigerelement referenziellen Zeigerobjekts bereitgestellt werden kann, das ein untergeordnetes Programmobjekt eines Programmobjekts des Programmzustands mit dreifacher Schachtelungstiefe ist.

Hierzu wird zunächst auf Basis der Anordnungsstruktur des Programmzustands und des ersten Adressenoffsets ein übergeordnetes drittes Programmobjekt identifiziert, das im Speicherbereich des Programmzustands einen Bereich belegt, der die Zeigeradresse des Zeigerelements umfasst.

Darauffolgend wird ein dritter Adressenoffset bestimmt, der sich aus einer Differenz zwi schen dem ersten Adressenoffset und der ersten relativen Speicheradresse des dritten Programmobjekts ergibt, und eine Anzahl von Speicherstellen definiert, um die die Zeige radresse zu einer ersten relativen Speicheradresse des identifizierten übergeordneten dritten Programmobjekts beabstandet ist.

Hierauf folgend wird ein Datentyp des übergeordneten dritten Programmobjekts bestimmt, der eine Datenstruktur des übergeordneten dritten Programmobjekts definiert und eine Anzahl von untergeordneten Teilprogrammobjekten des übergeordneten dritten Program mobjekts definiert und jedem untergeordneten Teilprogrammobjekt eine Speichergröße und eine Speicherposition innerhalb der Datenstruktur zuordnet.

Auf Basis der Datenstruktur des Datentyps des übergeordneten dritten Programmobjekts und auf Basis des dritten Adressenoffsets wird im Folgenden das zweite übergeordnete Programmobjekt als ein untergeordnetes Teilprogrammobjekt des übergeordneten dritten Programmobjekts als das untergeordnete Teilprogrammobjekt identifiziert, das in der Da tenstruktur des übergeordneten dritten Programmobjekts um den dritten Adressenoffset zur ersten relativen Speicheradresse des übergeordneten dritten Programmobjekts beab standet ist und somit im Speicherbereich des Programmzustands einen Bereich belegt, der die Zeigeradresse umfasst.

Darauf folgend wird gemäß dem oben Beschriebenen der zweite Adressenoffset und der Datentyp des identifizierten und übergeordneten zweiten Programmobjekts bestimmt und auf Basis des zweiten Adressenoffsets und der Datenstruktur des übergeordneten zwei ten Programmobjekts das erste Programmobjekt als das Zeigerobjekt identifiziert. Der zweite Adressenoffset ergibt sich hierbei aus einer Differenz zwischen dem ersten Adressenoffset und einer Summe aus den ersten relativen Speicheradressen der dritten und zweiten Programmobjekte.

Die vollqualifizierte Bezeichnung des Zeigerobjekts kann hierbei den Namen des ersten Programmobjekts, den Namen des übergeordneten zweiten Programmobjekts und den Namen des übergeordneten dritten Programmobjekts sowie eine Verschachtelungshierar chie umfassen. Hierdurch können somit für Zeigerelemente, die beispielsweise Elemente eines Feldtyps, der wiederum ein Element eines Feldtyps ist, vollqualifizierte Bezeichnun gen angegeben werden.

Die Vorgehensweise ist analog zu der oben beschriebenen Vorgehensweise für die Aus führungsform im Fall des übergeordneten zweiten Programmobjekts, in der jeweils rela tive Adressen der umfassten untergeordneten Programmobjekte als Abstande der Spei cherpositionen der jeweiligen untergeordneten Programmobjekte relativ zu einer ersten relativen Speicheradresse des jeweils übergeordneten Programmobjekts bestimmt wer den. Dasjenige untergeordnete Programmobjekt, dessen relative Adresse dem jeweiligen Adressenoffset entspricht, beziehungsweise einen Speicherbereich belegt, von dem eine Speicheradresse umfasst ist, die zur ersten Speicheradresse um den jeweiligen Ad ressenoffset beabstandet ist, wird als Programmobjekt identifiziert, dass dessen Speicher adresse der Zeigeradresse entspricht, beziehungsweise dessen Speicherbereich die Zei geradresse umfasst. Dieser Vorgang wird für die jeweiligen Schachtelungstiefen fortge setzt, bis das Zeigerobjekt als dasjenige untergeordnete Programmobjekt identifiziert wird, dessen Speicheradresse der Zeigeradresse entspricht.

Nach einer Ausführungsform ist ein Programmobjekt des Programmzustands als ein über geordnetes n-tes Programmobjekt ausgebildet, wobei das übergeordnete n-te Programm objekt in n-1-facher Schachtelungstiefe einander umfassende untergeordnete Teilpro grammobjekte umfasst, wobei das übergeordnete zweite Programmobjekt als ein unterge ordnetes Teilprogrammobjekt in n-2-ter Schachtelungstiefe vom übergeordneten n-ten Programmobjekt umfasst ist, wobei das erste Programmobjekt als ein untergeordnetes Teilprogrammobjekt in n-1-ter Schachtelungstiefe vom übergeordneten n-ten Programm objekt umfasst ist, wobei n eine natürlich Zahl und größer oder gleich 4 ist, und wobei der erste Programmobjektidentifizierungsschritt umfasst:

Identifizieren eines Programmobjekts des Programmzustands, für das gemäß der jeweili gen Speicherposition und Speichergröße ein Speicherbereich definiert ist, der eine Spei cherstelle umfasst, die um den ersten Adressenoffset zur ersten Speicherstelle des Pro grammzustands beabstandet ist, als das übergeordnete n-te Programmobjekt und Identifizieren des übergeordneten n-ten Programmobjekts als das Programmobjekt, das im ersten Speicherbereich des Programmzustands einen Speicherbereich belegt, der die Zeigeradresse des Zeigerelements umfasst, in einem n-ten Programmobjektidentifizie rungsschritt;

Bestimmen eines n-ten Adressenoffsets in einem n-ten Adressenoffsetbestimmungs schritt, wobei der n-te Adressenoffset durch eine Differenz zwischen dem ersten Ad ressenoffset und einer ersten relativen Speicheradresse des n-ten Programmobjekts be stimmt ist;

Bestimmen eines Datentyps des übergeordneten n-ten Programmobjekts in einem n-ten Datentypbestimmungsschritt, wobei der Datentyp eine Datenstruktur des übergeordneten n-ten Programmobjekts bestimmt, in der eine Anzahl von untergeordneten Teilprogramm objekten des übergeordneten n-ten Programmobjekts definiert ist und für jedes unterge ordnete Teilprogrammobjekt eine Speichergröße und eine Speicherposition innerhalb der Datenstruktur des übergeordneten n-ten Programmobjekts bestimmt sind;

Identifizieren eines untergeordneten Teilprogrammobjekts des übergeordneten n-ten Pro grammobjekts, das gemäß der Datenstruktur des übergeordneten n-ten Programmobjekts um den n-ten Adressenoffset zu einer ersten Speicherstelle des übergeordneten n-ten Programmobjekts beabstandet ist, und Identifizieren des untergeordneten Teilprogramm objekts des übergeordneten n-ten Programmobjekts als ein übergeordnetes n-1-tes Pro grammobjekt, das im ersten Speicherbereich des Programmzustands einen Speicherbe reich belegt, der die Zeigeradresse des Zeigerelements umfasst in einem n-1-ten Pro grammobjektidentifizierungsschritt;

Bestimmen eines n-1-ten Adressenoffsets in einem n-1-ten Adressenoffsetbestimmungs schritt, wobei der n-1-te Adressenoffset durch eine Differenz zwischen dem ersten Ad ressenoffset und einer Summe aus der ersten relativen Speicheradresse des n-ten Pro grammobjekts und einer ersten Speicheradresse des n-1-ten Programmobjekts bestimmt ist;

Bestimmen eines Datentyps des übergeordneten n-1-ten Programmobjekts in einem n-1- ten Datentypbestimmungsschritt, wobei der Datentyp eine Datenstruktur des übergeord neten n-1-ten Programmobjekts bestimmt, in der eine Anzahl von untergeordneten Teil programmobjekten des übergeordneten n-1-ten Programmobjekts definiert ist und für je des untergeordnete Teilprogrammobjekt eine Speichergröße und eine Speicherposition innerhalb der Datenstruktur des übergeordneten n-1-ten Programmobjekts bestimmt sind; Identifizieren eines untergeordneten Teilprogrammobjekts des übergeordneten n-1-ten Programmobjekts, das gemäß der Datenstruktur des übergeordneten n-1-ten Programm objekts um den n-1-ten Adressenoffset zu einer ersten Speicherstelle des übergeordneten n-1-ten Programmobjekts beabstandet ist, und Identifizieren des untergeordneten Teilprogrammobjekts des übergeordneten n-1-ten Programmobjekts als ein übergeordne tes n-2-tes Programmobjekt, das im ersten Speicherbereich des Programmzustands ei nen Speicherbereich belegt, der die Zeigeradresse des Zeigerelements umfasst in einem n-2-ten Programmobjektidentifizierungsschritt (141);

Falls gilt, n-2>2, rekursives Ausführen des n-1-ten Adressenoffsetbestimmungsschritt, des n-1-ten Datentypbestimmungsschritts und des n-2-ten Programmobjektidentifizierungs schritt in einem Rekursionsschritt;

Bestimmen des zweiten Adressenoffsets im zweiten Adressenoffsetbestimmungsschritt, wobei der zweite Adressenoffset durch eine Differenz zwischen dem ersten Adressenoff set und einer Summe aus ersten relativen Speicheradressen des n-ten Programmobjekts bis zweiten Programmobjekts bestimmt ist;

Bestimmen eines Datentyps des übergeordneten zweiten Programmobjekts in einem zweiten Datentypbestimmungsschritt, wobei der Datentyp eine Datenstruktur des überge ordneten zweiten Programmobjekts bestimmt, in der eine Anzahl von untergeordneten Teilprogrammobjekten des übergeordneten n-1-ten Programmobjekts definiert ist und für jedes untergeordnete Teilprogrammobjekt eine Speichergröße und eine Speicherposition innerhalb der Datenstruktur des übergeordneten zweiten Programmobjekts bestimmt sind; Identifizieren des untergeordneten Teilprogrammobjekts des übergeordneten zweiten Pro grammobjekts, das gemäß der Datenstruktur es übergeordneten zweiten Programmob jekts um den zweiten Adressenoffset zu einer ersten Speicherstelle des übergeordneten zweiten Programmobjekts beabstandet ist, und Identifizieren des untergeordneten Teilpro grammobjekts des übergeordneten zweiten Programmobjekts als das erste Programmob jekt, dessen Speicheradresse der Zeigeradresse des Zeigerelements entspricht.

Hierdurch wird der technische Vorteil erreicht, dass eine vollqualifizierte Bezeichnung für Programmobjekte bereitgestellt werden kann, die untergeordnete Programmobjekte über geordneter Programmobjekte in beliebiger Schachtelungstiefe sind.

Hierzu werden die oben beschriebenen Schritte zum Identifizieren der einzelnen Program mobjekte in n-facher Rekursion ausgeführt.

Durch das rekursive Ausführen der genannten Schritte wird durch Ausführung der Schritte eine weitere Schachtelungstiefe des übergeordneten n-ten Programmobjekts abgearbei tet, bis nach mehrfachem Ausführen der genannten Schritt das zweite Programmobjekt identifiziert wird. Das zweite Programmobjekt ist hierbei das Programmobjekt, das als di rekt übergeordnetes Programmobjekt das erste Programmobjekt, sprich das durch das Zeigerelement referenzierte Zeigerobjekt, umfasst. Zunächst wird auf Basis der Anordnungsstruktur des Programmzustands und des ersten Adressenoffsets ein n-tes übergeordnetes Programmobjekt identifiziert. Für dieses n-te Programmobjekt wird ein n-ter Adressenoffset bestimmt, der eine Differenz der Zeigerad resse und einer ersten relativen Speicheradresse des übergeordneten n-ten Programm objekts bestimmt. Hierauf folgend wird ein Datentyp des übergeordneten n-ten Programm objekts bestimmt, der eine Datenstruktur der vom übergeordneten n-ten Programmobjekt umfassten untergeordneten Teilprogrammobjekten definiert. Auf Basis des n-ten Ad ressenoffsets und der Datenstruktur des übergeordneten n-ten Programmobjekts wird ein untergeordnetes Teilprogrammobjekt des übergeordneten n-ten Programmobjekts identifi ziert, das einen Speicherbereich belegt, der die Zeigeradresse umfasst.

Dieses identifizierte untergeordnete Teilprogrammobjekt wird als ein n-1-tes übergeordne tes Programmobjekt identifiziert. Darauf folgend wird ein n-1-ter Adressenoffset und ein Datentyp des übergeordneten n-1-ten Programmobjekts bestimmt, wobei der n-1-te Ad ressenoffset sich aus einer Differenz zwischen dem ersten Adressenoffset und einer Summe aus den ersten relativen Speicheradressen der n-ten und n-1-ten Programmob jekte ergibt. Auf Basis des n-1-ten Adressenoffsets und des Datentyps des übergeordne ten n-1-ten Programmobjekts wird ein untergeordnetes Teilprogrammobjekt des überge ordneten n-1-ten Programmobjekts identifiziert, das von einer ersten relativen Speicherad resse des übergeordneten n-1-ten Programmobjekts um die Anzahl von Speicherstellen des n-1-ten Adressenoffsets beabstandet ist und somit einen Speicherbereich belegt, der die Zeigeradresse umfasst.

Dieses identifizierte untergeordnete Teilprogrammobjekt wird als übergeordnetes n-2-tes Programmobjekt identifiziert. Darauf folgend werden die oben genannten Schritte rekursiv durchgeführt, bis das erste Programmobjekt identifiziert wird, das im Speicherbereich des Programmzustands eine Speicheradresse belegt, die der Zeigeradresse des Zeigerele ments entspricht.

Hierdurch kann eine vollqualifizierte Bezeichnung für Zeigerobjekte bereitgestellt werden, die untergeordnete Teilprogrammobjekte übergeordneter Programmobjekte in n-facher Schachtelungstiefe sind. Die jeweilige vollqualifizierte Bezeichnung kann hierbei die Na men und Bezeichnungen aller übergeordneten Programmobjekte des identifizierten Zei gerobjekts sowie die jeweiligen Relationen und Schachtelungen umfassen.

Nach einer Ausführungsform umfasst das Verfahren ferner: Falls die Zeigeradresse des Zeigerelements im zweiten Speicherbereich des Stacks an geordnet ist, Bestimmen einer Struktur des Stacks in einem Stack-Strukturbestimmungs- schritt , wobei über die Struktur des Stacks jedem im Stack gespeicherten Stack-Program mobjekt eine Speicherposition und eine Speichergröße zugeordnet sind, wobei eine Spei cherposition eines Stack-Programmobjekts eine Anzahl von Speicherstellen definiert, um die ein Stack-Programmobjekt in einem Speicherbereich zu einer ersten Speicherstelle des Stacks beabstandet gespeichert ist;

Bestimmen eines ersten Stack-Adressenoffsets der Zeigeradresse des Zeigerelements in einem ersten Stack-Adressenoffsetbestimmungsschritt, wobei der erste Stack-Adressen- offset eine Anzahl von Speicherstellen definiert, um die die Zeigeradresse des Zeigerele ments zu einer ersten Speicheradresse des Stacks im zweiten Speicherbereich beab standet ist;

Identifizieren eines Stack-Programmobjekts, das gemäß der Struktur des Stacks, in der jedem Stack-Programmobjekt eine Speicherposition und eine Speichergröße zugewiesen ist, um den ersten Stack-Adressenoffset zu der ersten Speicherstelle des Stacks beab standet ist, als ein erstes Stack-Programmobjekt, dessen Speicheradresse im zweiten Speicherbereich der Zeigeradresse des Zeigerelements entspricht, in einem ersten Stack- Programmobjektidentifizierungsschritt; und

Identifizieren des ersten Stack- Programmobjekts mit dem durch das Zeigerelement refe renziellen Zeigerobjekt im Zeigerobjektidentifizierungsschritt.

Hierdurch wird der technische Vorteil erreicht, dass eine vollqualifizierte Bezeichnung für Zeigerobjekte eines Zeigerelements bereitgestellt werden kann, die im Stack der Steue rung des Automatisierungssystems gespeichert sind. Während das Zeigerelement weiter hin ein Programmobjekt des Programmzustands des Steuerprogramms ist, sind die vom Zeigerelement referenziellen Zeigerobjekte Objekte des Stacks bzw. des Laufzeitkellers und somit keine Programmobjekte des Programmzustands.

Zunächst wird eine Struktur des Stacks bestimmt, in der jedem Programmobjekt des Stacks eine Speicherposition und eine Speichergröße zugewiesen ist. Ähnlich der Anord nungsstruktur des Programmzustands ermöglicht eine Struktur des Stacks eine eindeu tige Positionierung der Stack-Programmobjekte.

Stack-Programmobjekte sind im Folgenden Datenobjekte, die während der Ausführung des Steuerprogramms oder eines Unterprogramms des Steuerprogramms oder einer Funktion des Steuerprogramms als lokale Variablen im Stack gespeichert sind. Nach Bestimmung der Struktur des Stacks wird ein erster Stack-Adressenoffset der Zei geradresse bestimmt, der eine Anzahl von Speicherstellen definiert, die die Zeigeradresse zu einer ersten Speicheradresse des Stacks beabstandet ist. Hierdurch wird ein Abstand im Speicherbereich angegeben, den das vom Zeigerelement referenzierte und im Stack gespeicherte Zeigerobjekt zum Anfang des Stacks innerhalb des Speicherbereichs des Stacks aufweist.

Auf Basis der Struktur des Stacks und des ersten Stack-Adressenoffsets wird ein erstes Stack-Programmobjekt identifiziert, das innerhalb der Anordnung des Stacks um die An zahl der Speicherstellen des ersten Stack-Adressenoffsets zu der ersten Speicheradresse des Stacks beabstandet ist. Dieses erste Stack-Programmobjekt wird im Folgenden als das Stack-Programmobjekt identifiziert, das im zweiten Speicherbereich des Stacks eine Speicheradresse aufweist, die der Zeigeradresse des Zeigerelements entspricht.

Darauffolgend wird eine vollqualifizierte Bezeichnung des identifizierten Stack-Programm objekts als Zeigerobjekt bereitgestellt. Hierdurch kann ein durch das Zeigerelement refe renzielles Zeigerobjekt, das im Stack gespeichert ist, mit einer vollqualifizierten Bezeich nung, die wenigstens den Namen der lokalen Variable bzw. des Stack-Programmobjekts umfasst, versehen werden.

Nach einer Ausführungsform umfasst der erste Stack-Programmobjektidentifizierungs- schritt:

Identifizieren unter Berücksichtigung des ersten Stack-Adressenoffsets der Zeigeradresse des Zeigerelements und der Anordnungsstruktur des Stacks eines Frames des Stacks, der im zweiten Speicherbereich des Stacks einen Speicherbereich belegt, der die Spei cheradresse der Zeigeradresse des Zeigerelements umfasst, in einem Frameidentifizie rungsschritt;

Identifizieren einer Funktion des identifizierten Frames des Stacks in einem Funktionsi dentifikationsschritt; und

Identifizieren einer lokalen Variable der identifizierten Funktion, dessen Speicheradresse der Zeigeradresse des Zeigerelements entspricht, als erstes Stack- Programmobjekt des Stacks, dessen Speicheradresse der Zeigeradresse des Zeigerelements entspricht.

Hierdurch wird der technische Vorteil erreicht, dass die vollqualifizierte Bezeichnung des im Stack gespeicherten und durch das Zeigerelement referenziellen Zeigerobjekts um die Bezeichnung einer Funktion und eines Frames erweitert werden kann. Hierzu wird zu nächst unter Berücksichtigung des ersten Stack-Adressenoffsets und der Struktur des Stacks ein Frame identifiziert, der im Speicherbereich des Stacks das identifizierte erste Stack-Programmobjekt und damit die Zeigeradresse umfasst. Darauf folgend wird eine im identifizierten Frame gespeicherte Funktion des identifizierten ersten Stack-Programmob jekts identifiziert. Sowohl die Bezeichnung des Frames als auch die Bezeichnung der Funktion des ersten Stack-Programmobjekts können in die vollqualifizierte Bezeichnung des durch das erste Stack-Programmobjekt dargestellten Zeigerobjekts aufgenommen werden.

Nach einer Ausführungsform ist ein Stack-Programmobjekt des Stacks als ein übergeord netes zweites Stack-Programmobjekt ausgebildet, wobei das übergeordnete zweite Stack-Programmobjekt wenigstens ein untergeordnetes Stack-Teilprogrammobjekt um fasst, wobei das erste Stack-Programmobjekt als ein untergeordnetes Stack-Teilprogram- mobjekt vom übergeordneten zweiten Stack-Programmobjekt umfasst ist, und wobei der erste Stack-Programmobjektidentifizierungsschritt umfasst:

Identifizieren eines Programmobjekts des Stacks, für das gemäß der jeweiligen Speicher position und Speichergröße ein Speicherbereich definiert ist, der eine Speicherstelle um fasst, die um den ersten Stack-Adressenoffset zur ersten Speicherstelle des Stacks beab- standet ist, als das übergeordnete zweite Stack-Programmobjekt und Identifizieren des übergeordneten zweiten Stack-Programmobjekts als das Programmobjekt, das im zweiten Speicherbereich des Stacks einen Speicherbereich belegt, der die Zeigeradresse des Zei gerelements umfasst, in einem zweiten Stack-Programmobjektidentifizierungsschritt; Bestimmen eines zweiten Stack-Adressenoffsets in einem zweiten Stack-Adressenoffset- bestimmungsschritt, wobei der zweite Stack-Adressenoffset durch eine Differenz zwi schen dem ersten Stack-Adressenoffset und einer ersten relativen Speicheradresse des zweiten Stack-Programmobjekts bestimmt ist;

Bestimmen eines Datentyps des übergeordneten zweiten Stack-Programmobjekts in ei nem zweiten Stack-Datentypbestimmungsschritt, wobei der Datentyp eine Datenstruktur des übergeordneten zweiten Stack-Programmobjekts bestimmt, in der eine Anzahl von untergeordneten Stack-Teilprogrammobjekten des übergeordneten zweiten Stack-Pro grammobjekts definiert ist und für jedes untergeordnete Stack-Teilprogrammobjekt eine Speichergröße und eine Speicherposition innerhalb der Datenstruktur des übergeordne ten zweiten Programmobjekts bestimmt sind;

Identifizieren eines untergeordneten Stack-Teilprogrammobjekts des übergeordneten zweiten Stack-Programmobjekts, das gemäß der Datenstruktur des übergeordneten zwei ten Stack-Programmobjekts um den zweiten Adressenoffset zu einer ersten Speicher stelle des übergeordneten zweiten Stack- Programmobjekts beabstandet ist, und Identifi zieren des untergeordneten Stack-Teilprogrammobjekts des übergeordneten zweiten Stack-Programmobjekts als das erste Stack-Programmobjekt, dessen Speicheradresse der Zeigeradresse des Zeigerelements entspricht.

Hierdurch wird der technische Vorteil erreicht, dass eine vollqualifizierte Bezeichnung für ein Zeigerobjekt bereitgestellt werden kann, das ein untergeordnetes Teilobjekt eines im Stack gespeicherten übergeordneten Programmobjekts ist. Beispielsweise kann das durch das Zeigerelement referenzierte Zeigerobjekt ein Element eines im Stack gespei cherten Feldtyps, eine Komponente eines im Stack gespeicherten Verbundtyps oder ein Element eines im Stack gespeicherten Zeichenkettentyps sein. Die vollqualifizierte Be zeichnung des Zeigerobjekts kann hierbei die Bezeichnung des übergeordneten Stack- Programmobjekts und die Bezeichnung des untergeordneten Stack-Teilprogrammobjekts umfassen. Eine Bestimmung der vollqualifizierten Bezeichnung des Zeigerelements er folgt hierbei analog zu dem oben beschriebenen Verfahren zur Bestimmung einer vollqua lifizierten Bezeichnung eines im Programmzustand gespeicherten Zeigerelements mit ein facher Schachtelungstiefe.

Nach einer Ausführungsform ist ein Stack-Programmobjekt des Stacks als ein übergeord netes drittes Stack-Programmobjekt ausgebildet, wobei das übergeordnete dritte Stack- Programmobjekt wenigstens ein untergeordnetes Stack-Teilprogrammobjekt umfasst, wo bei das übergeordnete zweite Stack-Programmobjekt als ein untergeordnetes Stack-Teil- programmobjekt vom übergeordneten dritten Stack- Programmobjekt umfasst ist, und wo bei der zweite Stack-Programmobjektidentifizierungsschritt umfasst:

Identifizieren eines Programmobjekts des Stacks, für das gemäß der jeweiligen Speicher position und Speichergröße ein Speicherbereich definiert ist, der eine Speicherstelle um fasst, die um den ersten Stack-Adressenoffset zur ersten Speicheradresse des Stacks be- abstandet ist, als das übergeordnete dritte Stack- Programmobjekt und Identifizieren des übergeordneten dritten Stack- Programmobjekts als das Programmobjekt, das im zweiten Speicherbereich des Stacks einen Speicherbereich belegt, der die Zeigeradresse des Zei gerelements umfasst, in einem dritten Stack-Programmobjektidentifizierungsschritt; Bestimmen eines dritten Stack-Adressenoffsets in einem dritten Stack-Adressenoffsetbe- stimmungsschritt, wobei der dritte Stack-Adressenoffset durch eine Differenz zwischen dem ersten Stack-Adressenoffset und einer ersten relativen Speicheradresse des dritten Stack-Programmobjekts bestimmt ist;

Bestimmen eines Datentyps des übergeordneten dritten Stack-Programmobjekts in einem dritten Stack-Datentypbestimmungsschritt, wobei der Datentyp eine Datenstruktur des übergeordneten dritten Stack- Programmobjekts bestimmt, in der eine Anzahl von unterge ordneten Stack-Teilprogrammobjekten des übergeordneten dritten Stack- Programmobjekts definiert ist und für jedes untergeordnete Stack-Teilprogrammobjekt eine Speichergröße und eine Speicherposition innerhalb der Datenstruktur des überge ordneten dritten Stack- Programmobjekts bestimmt sind;

Identifizieren eines untergeordneten Stack-Teilprogrammobjekts des übergeordneten drit ten Stack-Programmobjekts, das gemäß der Datenstruktur des übergeordneten dritten Stack-Programmobjekts um den dritten Stack-Adressenoffset zu einer ersten Speicher stelle des übergeordneten dritten Stack- Programmobjekts beabstandet ist, und Identifizie ren des untergeordneten Stack-Teilprogrammobjekts des übergeordneten dritten Stack- Programmobjekts als das übergeordnete zweite Stack- Programmobjekt, das im zweiten Speicherbereich des Stacks einen Speicherbereich belegt, der die Zeigeradresse des Zei gerelements umfasst; und wobei der zweite Stack-Adressenoffset durch eine Differenz zwischen dem ersten Stack- Adressenoffset und einer Summe aus der ersten relativen Speicheradresse des dritten Programmobjekts und der ersten relativen Speicheradresse des zweiten Stack-Program mobjekts bestimmt ist.

Hierdurch wird der technische Vorteil erreicht, dass eine vollqualifizierte Bezeichnung ei nes im Stack gespeicherten Zeigerobjekts bereitgestellt werden kann, das ein Unterobjekt eines im Stack gespeicherten Stack-Programmobjekts mit zweifacher Schachtelungstiefe ist. Die Bestimmung der qualifizierten Bezeichnung erfolgt analog zu dem oben beschrie benen Verfahren zur Bestimmung einer qualifizierten Bezeichnung eines im Programmzu stand gespeicherten und als Unterobjekt eines übergeordneten Programmobjekts zweifa cher Schachtelungstiefe ausgebildeten Zeigerobjekts.

Nach einer Ausführungsform ist ein Stack-Programmobjekt des Stacks als ein übergeord netes n-tes Stack-Programmobjekt ausgebildet, wobei das übergeordnete n-te Stack-Pro grammobjekt in n-1-facher Schachtelungstiefe einander umfassende untergeordnete Stack-Teilprogrammobjekte umfasst, wobei das übergeordnete zweite Stack-Programm objekt als ein untergeordnetes Stack-Teilprogrammobjekt in n-2-ter Schachtelungstiefe vom übergeordneten n-ten Stack- Programmobjekt umfasst ist, wobei das erste Stack-Pro grammobjekt als ein untergeordnetes Stack-Teilprogrammobjekt in n-1-ter Schachtelungs tiefe vom übergeordneten n-ten Stack-Programmobjekt umfasst ist, wobei n eine natürlich Zahl und größer oder gleich 4 ist, und wobei der zweite Stack-Programmobjektidentifizie- rungsschritt umfasst:

Identifizieren eines Programmobjekts des Stacks, für das gemäß der jeweiligen Speicher position und Speichergröße ein Speicherbereich definiert ist, der eine Speicherstelle um fasst, die um den ersten Stack-Adressenoffset zur ersten Speicherstelle des Stacks beabstandet ist, als das übergeordnete n-te Stack-Programmobjekt und Identifizieren des übergeordneten n-ten Stack- Programmobjekts als das Programmobjekt, das im zweiten Speicherbereich des Stack einen Speicherbereich belegt, der die Zeigeradresse des Zei gerelements umfasst, in einem n-ten Stack-Programmobjektidentifizierungsschritt; Bestimmen eines n-ten Stack-Adressenoffsets in einem n-ten Stack-Adressenoffsetbe- stimmungsschritt, wobei der n-te Stack-Adressenoffset durch eine Differenz zwischen dem ersten Stack-Adressenoffset und einer ersten relativen Speicheradresse des n-ten Stack-Programmobjekts bestimmt ist;

Bestimmen eines Datentyps des übergeordneten n-ten Stack-Programmobjekts in einem n-ten Stack-Datentypbestimmungsschritt, wobei der Datentyp eine Datenstruktur des übergeordneten n-ten Stack- Programmobjekts bestimmt, in der eine Anzahl von unterge ordneten Stack-Teilprogrammobjekten des übergeordneten n-ten Stack-Programmobjekts definiert ist und für jedes untergeordnete Stack-Teilprogrammobjekt eine Speichergröße und eine Speicherposition innerhalb der Datenstruktur des übergeordneten n-ten Stack- Programmobjekts bestimmt sind;

Identifizieren eines untergeordneten Stack-Teilprogrammobjekts des übergeordneten n- ten Stack-Programmobjekts, das gemäß der Datenstruktur des übergeordneten n-ten Stack-Programmobjekts um den n-ten Stack-Adressenoffset zu einer ersten Speicher stelle des übergeordneten n-ten Stack- Programmobjekts beabstandet ist, und Identifizie ren des untergeordneten Stack-Teilprogrammobjekts des übergeordneten n-ten Stack- Programmobjekts als ein übergeordnetes n-1-tes Stack-Programmobjekt, das im zweiten Speicherbereich des Stacks einen Speicherbereich belegt, der die Zeigeradresse des Zei gerelements umfasst in einem n-1-ten Stack-Programmobjektidentifizierungsschritt; Bestimmen eines n-1-ten Stack-Adressenoffsets in einem n-1-ten Stack-Adressenoffset- bestimmungsschritt, wobei der n-1-te Stack-Adressenoffset durch eine Differenz zwischen dem ersten Stack-Adressenoffset und einer Summe aus der ersten relativen Speicherad resse des n-ten Stack- Programmobjekts und einer ersten relativen Speicheradresse des n-1-ten Stack-Programmobjekts bestimmt ist;

Bestimmen eines Datentyps des übergeordneten n-1-ten Stack-Programmobjekts in ei nem n-1-ten Stack-Datentypbestimmungsschritt, wobei der Datentyp eine Datenstruktur des übergeordneten n-1-ten Stack- Programmobjekts bestimmt, in der eine Anzahl von un tergeordneten Stack-Teilprogrammobjekten des übergeordneten n-1-ten Stack-Program mobjekts definiert ist und für jedes untergeordnete Stack-Teilprogrammobjekt eine Spei chergröße und eine Speicherposition innerhalb der Datenstruktur des übergeordneten n- 1-ten Stack-Programmobjekts bestimmt sind;

Identifizieren eines untergeordneten Stack-Teilprogrammobjekts des übergeordneten n-1- ten Stack-Programmobjekts, das gemäß der Datenstruktur des übergeordneten n-1-ten Stack-Programmobjekts um den n-1-ten Stack-Adressenoffset zu einer ersten Speicher stelle des übergeordneten n-1-ten Stack- Programmobjekts beabstandet ist, und Identifi zieren des untergeordneten Stack-Teilprogrammobjekts des übergeordneten n-1-ten Stack-Programmobjekts als ein übergeordnetes n-2-tes Stack-Programmobjekt, das im zweiten Speicherbereich des Programmzustands einen Speicherbereich belegt, der die Zeigeradresse des Zeigerelements umfasst in einem n-2-ten Stack-Programmobjektidenti- fizierungsschritt;

Falls gilt, n-2>2, rekursives Ausführen des n-1-ten Stack-Adressenoffsetbestimmungs- schritt und des n-2-ten Stack-Programmobjektidentifizierungsschritt in einem weiteren Re kursionsschritt;

Bestimmen eines zweiten Stack-Adressenoffsets in einem zweiten Stack-Adressenoffset- bestimmungsschritt, wobei der zweite Stack-Adressenoffset durch eine Differenz zwi schen dem ersten Stack-Adressenoffset und einer Summe aus ersten relativen Speicher adressen des n-ten Stack-Programmobjekts bis zweiten Stack-Programmobjekts be stimmt ist;

Bestimmen eines Datentyps des übergeordneten zweiten Stack- Programmobjekts in ei nem zweiten Stack-Datentypbestimmungsschritt, wobei der Datentyp eine Datenstruktur des übergeordneten zweiten Stack-Programmobjekts bestimmt, in der eine Anzahl von untergeordneten Stack-Teilprogrammobjekten des übergeordneten zweiten Stack-Pro grammobjekts definiert ist und für jedes untergeordnete Stack-Teilprogrammobjekt eine Speichergröße und eine Speicherposition innerhalb der Datenstruktur des übergeordne ten zweiten Stack-Programmobjekts bestimmt sind;

Identifizieren eines untergeordneten Stack-Teilprogrammobjekts des übergeordneten zweiten Stack-Programmobjekts, das gemäß der Datenstruktur des übergeordneten zwei ten Stack-Programmobjekts um den zweiten Adressenoffset zu einer ersten Speicher stelle des übergeordneten zweiten Stack- Programmobjekts beabstandet ist, und Identifi zieren des untergeordneten Stack-Teilprogrammobjekts des übergeordneten zweiten Stack-Programmobjekts als das erste Stack- Programmobjekt, dessen Speicheradresse der Zeigeradresse des Zeigerelements entspricht.

Hierdurch wird der technische Vorteil erreicht, dass eine qualifizierte Bezeichnung eines im Stack gespeicherten Zeigerelements bereitgestellt werden kann, das als ein Unterele ment eines im Stack gespeicherten übergeordneten Stack- Programmobjekts n-facher Schachtelungstiefe ist. Die Bestimmung der vollqualifizierten Bezeichnung des im Stack gespeicherten und als Unterobjekt eines übergeordneten Stack-Programmobjekts n-fa- cher Schachtelungstiefe ausgebildeten Zeigerelements erfolgt analog zu dem oben be schriebenen Verfahren zur Bestimmung einer vollqualifizierten Bezeichnung eines im Programmzustand gespeicherten und als Unterobjekt eines übergeordneten Programm objekts n-facher Schachtelungstiefe ausgebildeten Zeigerobjekts.

Nach einer Ausführungsform umfasst das Verfahren ferner:

Bestimmen eines Datentyps des ersten Programmobjekts in einem ersten Datentypbe stimmungsschritt, wobei der Datentyp des ersten Programmobjekts eine Datenstruktur des ersten Programmobjekts bestimmt; und/oder

Bestimmen eines Datentyps des ersten Stack-Programmobjekts in einem ersten Stack- Datentypbestimmungsschritt, wobei der Datentyp des ersten Programmobjekts eine Da tenstruktur des ersten Programmobjekts bestimmt.

Hierdurch wird der technische Vorteil erreicht, dass die vollqualifizierte Bezeichnung des im Programmzustand bzw. im Stack gespeicherten Zeigerobjekts der Datentyp des Zei gerobjekts mit aufgenommen werden kann. Hierdurch kann der durch die vollqualifizierte Bezeichnung des Zeigerobjekts bereitgestellte Informationsgehalt über das Zeigerobjekt erhöht werden.

Nach einer Ausführungsform umfasst die vollqualifizierte Bezeichnung des durch das Zei gerelement referenziellen Zeigerobjekts die Bezeichnungen ersten Programmobjekts und/oder der übergeordneten Programmobjekte oder die Bezeichnungen des ersten Stack-Programmobjekts und/oder der übergeordneten Stack-Programmobjekte und/oder des identifizierten Frames und/oder einen Namen der identifizierten Funktion.

Hierdurch wird der technische Vorteil erreicht, dass eine umfassende vollqualifizierte Be zeichnung des referenziellen Zeigerobjekts bereitgestellt werden kann, die jegliche Infor mation bezüglich des referenziellen Zeigerobjekts insbesondere in Bezug auf gegebenen falls gegebene Relationen zu übergeordneten Programmobjekten des Zeigerobjekts inklu sive einer Schachtelungstiefe und entsprechenden Datentypen bzw. gegebenenfalls Na men von Funktionen der Zeigerobjekte umfasst. Somit kann dem Nutzer eine umfassende Information über das durch das Zeigerelement referenzierte Zeigerobjekt bereitgestellt werden.

Nach einer Ausführungsform ist ein übergeordnetes Programmobjekt oder ein übergeord netes Stack- Programmobjekt von einem Verbundtyp, einem Feldtyp oder einem Zeichen kettentyp. Hierdurch wird der technische Vorteil erreicht, dass eine vollqualifizierte Bezeichnung ei nes Zeigerelements für verschiedene Datentypen bereitgestellt werden kann. Hierdurch ist eine breite Anwendbarkeit des erfindungsgemäßen Verfahrens ermöglicht.

Nach einer Ausführungsform umfasst das Verfahren ferner:

Auswählen einer Mehrzahl von Programmobjekten des Programmzustands in einem Aus wahlschritt, wobei ein ausgewähltes Programmobjekt das Zeigerelement ist;

Bestimmen von vollqualifizierten Bezeichnungen der ausgewählten Programmobjekte im Vollbezeichnungsbestimmungsschritt; und

Anzeigen der vollqualifizierten Bezeichnungen der ausgewählten Programmobjekte auf dem mit der Steuerung verbundenen Displayelement im Anzeigeschritt.

Hierdurch wird der technische Vorteil erreicht, dass eine Auswahlmöglichkeit der Pro grammobjekte des Programmzustands, für die eine vollqualifizierte Bezeichnung bestimmt und im Displayelement angezeigt werden soll, bereitgestellt werden kann. Dem Nutzer ist somit ermöglicht, die Programmobjekte des Programmzustands, die bei der Ausführung des Steuerprogramms von Interesse sind, auszuwählen und eine vollqualifizierte Bezeich nung gemäß den oben beschriebenen Verfahrensschritten für die ausgewählten Program mobjekte zu bestimmen und diese während des Ausführens des Steuerprogramms anzei- gen zu lassen. Der Nutzer ist somit in der Lage, individuell die Programmobjekte auszu wählen und sich eine vollqualifizierte Bezeichnung und entsprechende Werte der Pro grammobjekte anzeigen zu lassen, die für eine Beurteilung des Automatisierungsprozes ses bzw. des ausgeführten Steuerprogramms von Interesse sind.

Nach einer Ausführung wird im Anzeigeschritt zusätzlich zu der vollqualifizierten Bezeich nung ein Wert des jeweiligen Programmobjekts angezeigt, wobei das Verfahren ferner umfasst:

Anpassen wenigstens eines Werts eines Programmobjekts in einem Anpassungsschritt; und

Steuern eines Automatisierungsprozesses durch das Steuerprogramm unter Berücksichti gung des wenigstens einen geänderten Werts des wenigstens einen Programmobjekts in einem Steuerschritt.

Hierdurch wird der technische Vorteil erreicht, dass eine Steuerung eines Automatisie rungsprozesses des Automatisierungssystems auf Basis der angezeigten Informationen der Programmobjekte, insbesondere auf Basis der angezeigten vollqualifizierten Bezeich nungen und der entsprechenden Werte der Programmobjekte, angepasst und modifiziert werden kann. Durch die angezeigten vollqualifizierten Bezeichnungen der Programmob jekte in Zusammenhang mit den entsprechenden Werten der Programmobjekte kann der Nutzer unmittelbar den Zustand des zu steuernden Automatisierungsprozesses beurteilen und gegebenenfalls entsprechenden Anpassungen durchführen, wenn der Nutzer fest stellt, dass Werte von Programmobjekten beziehungsweise von Parametern des Automa tisierungsprozesses nicht den gewünschten Werten entsprechen. Hierdurch ist eine un mittelbare Anpassungsmöglichkeit des Automatisierungsprozesses ermöglicht, wodurch eine verbesserte und präzisere Steuerung des Automatisierungsprozesses beziehungs wiese des Automatisierungssystems erreicht wird. Durch die Angabe der vollqualifizierten Bezeichnungen in Kombination mit den Werten der jeweiligen Programmobjekte kann der Nutzer unmittelbar feststellen, für welche Programmobjekte eine Änderung der Werte vor genommen werden muss, um eine bestimmte Anpassung beziehungsweise Modifikation des Automatisierungsprozesses zu erreichen.

Nach einer Ausführungsform ist das Verfahren in einem Debuggingprozess und/oder in einem Steuerungspozess des Automatisierungssystems ausführbar.

Hierdurch wird der technische Vorteil erreicht, dass eine breite Anwendbarkeit des erfin dungsgemäßen Verfahrens bereitgestellt werden kann. Das erfindungsgemäße Verfahren kann während des Ausführens des Steuerprogramms zum Steuern des Automatisierungs prozesses durchgeführt werden, sodass während des Steuerns des Automatisierungspro zesses dem Nutzer beliebige Programmobjekte und entsprechende Werte der jeweiligen Programmobjekte angezeigt werden können. Hierüber kann eine Verfolgung des gesteu erten Automatisierungsprozesses ermöglicht werden, die eine Überwachung des Automa tisierungsprozesses erlaubt und gegebenenfalls Fehlverläufe des Automatisierungspro zesses ermittelt und behoben werden können.

Alternativ kann das erfindungsgemäße Verfahren während eines Debuggingprozesses durchgeführt werden, bei dem eine Funktionsfähigkeit des Steuerprogramms überprüft wird. Hierzu kann der Nutzer sich verschiedene Programmobjekte des Steuerprogramms anzeigen lassen, um anhand der angezeigten Werte der Programmobjekte eine Funkti onsfähigkeit des ausgeführten Steuerprogramms zu ermitteln.

Nach einer Ausführungsform ist das Displayelement als eine Mensch-Maschinen-Schnitt- stelle ausgebildet und in die Steuerung integriert. Hierdurch wird der technische Vorteil erreicht, dass eine möglichst komfortable Darstel lung der qualifizierten Bezeichnungen der Programmobjekte des Programmzustands des Steuerprogramms ermöglicht ist. Ein Nutzer kann hierbei insbesondere während der Steu erung eines Automatisierungsprozesses durch das Steuerprogramm sich die entspre chenden Programmobjekte mit den dazugehörigen Werten direkt an der Steuerung des Automatisierungssystems anzeigen lassen.

Nach einem zweiten Aspekt der Erfindung wird ein Automatisierungssystem mit einer Steuerung und einem mit der Steuerung verbundenen Displayelement bereitgestellt, wo bei die Steuerung ausgebildet ist, das erfindungsgemäße Verfahren auszuführen.

Hierdurch wird der technische Vorteil erreicht, dass ein Automatisierungssystem bereitge stellt wird, dass eingerichtet ist, das erfindungsgemäße Verfahren mit den oben genann ten technische Vorteilen auszuführen.

Die Erfindung wird anhand der beigefügten Figuren näher erläutert. Hierbei zeigen:

Fig. 1 eine schematische Darstellung eines Automatisierungssystems gemäß einer Ausführungsform;

Fig. 2 ein Flussdiagramm eines Verfahrens zum Steuern eines Automatisierungssys tems mit Visualisierung von Programmobjekten eines Steuerprogramms ge mäß einer Ausführungsform;

Fig. 3 ein weiteres Flussdiagramm des Verfahrens zum Steuern eines Automatisie rungssystems mit Visualisierung von Programmobjekten eines Steuerpro gramms gemäß einer weiteren Ausführungsform;

Fig. 4 eine schematische Darstellung einer Bestimmung eines Zeigerobjekts gemäß einer Ausführungsform des Verfahrens in Fig. 2;

Fig. 5 ein weiteres Flussdiagramm des Verfahrens zum Steuern eines Automatisie rungssystems mit Visualisierung von Programmobjekten eines Steuerpro gramms gemäß einer weiteren Ausführungsform; Fig. 6 ein weiteres Flussdiagramm des Verfahrens zum Steuern eines Automatisie rungssystems mit Visualisierung von Programmobjekten eines Steuerpro gramms gemäß einerweiteren Ausführungsform;

Fig. 7 eine schematische Darstellung einer Bestimmung eines Zeigerobjekts gemäß einer Ausführungsform des Verfahrens in Fig. 6;

Fig. 8 ein weiteres Flussdiagramm des Verfahrens zum Steuern eines Automatisie rungssystems mit Visualisierung von Programmobjekten eines Steuerpro gramms gemäß einerweiteren Ausführungsform.

Fig. 1 zeigt eine schematische Darstellung eines Automatisierungssystems 200 gemäß einer Ausführungsform.

In Fig. 1 ist ein Automatisierungssystem 200 dargestellt mit einer Steuerung 201 , die über ein Bussystem 205 mit Automatisierungsgeräten 203 verbunden ist. Die Steuerung 201 umfasst einen Speicher SP, der einen ersten Speicherbereich SP1 und einen zweiten Speicherbereich SP2 umfasst. Im ersten Speicherbereich SP1 ist ein Programmzustand PZ eines Steuerprogramms der Steuerung gespeichert. Im zweiten Speicherbereich SP2 ist ein Stack ST gespeichert. Das Automatisierungssystem 200 umfasst ferner ein Dis playelement 207, das in der Ausführungsform in Fig. 1 mit der Steuerung 201 verbunden ist.

Das dargestellte Automatisierungssystem 200 kann ein beliebiges Automatisierungssys tem sein und die Automatisierungsgeräte 203 können beliebige Sensoren und Aktoren sein, die zur Durchführung eines Automatisierungsprozesse dienen.

Der Automatisierungsprozess kann insbesondere durch ein zyklisches Ausführen eines Steuerprogramms durch die Steuerung 201 gesteuert werden.

Das in Fig. 1 gezeigte Automatisierungssystem 200 ist lediglich beispielhaft und soll keine Beschränkung der vorliegenden Erfindung sein. Zu der in Fig. 1 gezeigten Ausführungs form des Automatisierungssystems 200 können verschiedene Änderungen vorgenommen werden, die ausnahmslos von dem Schutzbereich der vorliegenden Erfindung umfasst sind. Fig. 2 zeigt ein Flussdiagramm eines Verfahrens 100 zum Steuern eines Automatisie rungssystems 200 mit Visualisierung von Programmobjekten eines Steuerprogramms ge mäß einer Ausführungsform.

Die in Fig. 2 gezeigte Ausführungsform des Verfahrens 100 wird mit Bezug auf die Fig. 4 beschrieben.

Die in Fig. 2 dargestellte Ausführungsform des Verfahrens 100 ist auf ein Automatisie rungssystem 200 gemäß der in Fig. 1 gezeigten Ausführungsform anwendbar.

Insbesondere ist das Verfahren 100 auf ein Automatisierungssystem 200 anwendbar, das eine Steuerung 201 mit einem in einem Speicher SP gespeicherten Steuerprogramm um fasst, wobei in einem ersten Speicherbereich SP1 der Steuerung 201 ein Programmzu stand PZ des Steuerprogramms gespeichert ist, wobei der Programmzustand PZ eine Mehrzahl von Programmobjekten des Steuerprogramms umfasst, wobei die Programmob jekte PO in einer vorbestimmten Anordnungsstruktur des Programmzustands PZ relativ zueinander angeordnet sind, wobei über die Anordnungsstruktur jedem Programmobjekt PO eine Speicherposition P und eine Speichergröße SG zugeordnet sind, wobei eine Speicherposition P eines Programmobjekts PO eine Anzahl von Speicherstellen definiert, um die ein Programmobjekt PO in einem Speicherbereich zu einer ersten Speicherstelle des Programmzustands PZ beabstandet gespeichert ist, wobei eine Speichergröße SG eines Programmobjekts PO eine Anzahl von Speicherstellen definiert, die ein Speicherob jekt in einem Speicherbereich belegt, wobei der Programmzustand PZ wenigstens ein Zei gerelement umfasst, wobei durch das Zeigerelement ein Zeigerobjekt ZO referenziert, wo bei das Zeigerobjekt ZO ein Programmobjekt PO des Steuerprogramms ist, wobei in ei nem zweiten Speicherbereich SP2 der Steuerung ein Stack des Steuerprogramms einge richtet ist, und wobei im Stack während einer Laufzeit des Steuerprogramms Programm objekte PO speicherbar sind.

Zur Durchführung des Verfahrens 100 wird zunächst in einem Ausführschritt 101 das Steuerprogramm auf der Steuerung 201 des Automatisierungssystems 200 ausgeführt. Das Steuerprogramm kann im Ausführschritt 101 zum Steuern eines Automatisierungs prozesses des Automatisierungssystems 200 ausgeführt werden. Hierbei wird auf Basis des Steuerprogramms ein Steuerprozess durchgeführt, indem die Automatisierungsgeräte 203 dem Steuerprogramm entsprechend angesteuert werden. Alternativ kann das Steuer programm im Ausführschritt 101 zur Durchführung eines Debuggingprozesses ausgeführt werden, bei dem eine Funktionsfähigkeit des Steuerprogramms nachvollzogen bezie hungsweise überprüft wird.

Durch das Ausführen des Steuerprogramms werden den einzelnen Programmobjekten des Steuerprogramms Werte zugeordnet, die im Programmzustand gespeichert werden und die einen Ausführungszustand des Steuerprogramms wiederspiegeln beziehungs weise Zustand des gesteuerten Automatisierungsprozesses des Automatisierungssys tems 200 wiedergeben. Die Werte der einzelnen Programmobjekten können auf Mess werten von Sensorelementen des Automatisierungssystems 200 basieren.

Zum Steuern des Automatisierungsprozesses werden somit zunächst durch Sensoren des Automatisierungssystems 200 Messwerte aufgenommen. Auf Basis dieser Messwerte werden durch Ausführen des Steuerprogramms entsprechende Steuerwerte bestimmt, die zum Ansteuern von entsprechenden Aktoren des Automatisierungssystems 200 zum Steuern des Automatisierungsprozesses genutzt werden. Die bestimmten Steuerwerte können als Werte entsprechender Programmobjekte des Steuerprogramms im Pro grammzustand gespeichert werden. Zusätzlich können Messwerte der Sensorelemente als Werte entsprechender Programmobjekte im Programmzustand gespeichert sein. Zu sätzlich können Werte, die auf Zwischenergebnissen der Ausführung des Steuerpro gramms basieren und für weitere Ausführung des Steuerprogramms benötigt werden, als entsprechende Werte entsprechender Programmobjekte im Programmzustand gespei chert sein.

In einem Zeigeradressenermittlungsschritt 103 wird eine Zeigeradresse ZA eines Zei gerelements ermittelt. Die Zeigeradresse ZA entspricht hierbei einer durch das Zeigerele ment referenziellen Speicheradresse innerhalb des Speichers SP der Steuerung 201.

Das Zeigerelement kann hierbei ein Programmobjekt des Steuerprogramms und im Pro grammzustand PZ des Steuerprogramms gespeichert sein. Zur Bestimmung der Zeige radresse ZA kann diese als Wert des Zeigerelements ausgelesen werden.

In einem Überprüfungsschritt 105 wird überprüft, ob die Zeigeradresse ZA in einem ersten Speicherbereich SP1 des Programmzustands PZ angeordnet ist. In Abhängigkeit welches Programmobjekt durch das Zeigerelement referenziert wird, kann die Zeigeradresse in verschiedenen Bereichen des Speichers SP angeordnet sein. Die Einteilung des Spei chers SP in die ersten und zweiten Speicherbereiche ist bekannt, sodass eine Zuordnung der Zeigeradresse zu einem der zwei Speicherbereiche ermöglicht ist. Falls die Zeigeradresse ZA im ersten Speicherbereich SP1 des Programmzustands PZ angeordnet ist, wird in einem ersten Adressenoffsetbestimmungsschritt 107 ein erster Ad ressenoffset A01 bestimmt. Der erste Adressenoffset A01 beschreibt hierbei eine Anzahl von Speicherstellen, um die die Zeigeradresse ZA zu einer ersten Speicheradresse SPZ des Programmzustands PZ beabstandet ist.

Dass die Zeigeradresse ZA im ersten Speicherbereich SP1 angeordnet ist, bedeutet, dass durch das Zeigerelement ein Programmobjekt innerhalb des Programmzustands PZ refe renziell ist. Eine Anordnung der Zeigeradresse ZA im zweiten Speicherbereich bedeutet hingegen, dass durch das Zeigerelement ein Programmobjekt PO innerhalb des Stacks referenziert ist.

Der erste Adressenoffset A01 kann somit als eine Differenz der Zeigeradresse ZA des Zeigerelements und der ersten Speicheradresse SPZ des Programmzustands PZ im ers ten Speicherbereich SP1 des Speichers SP gesehen werden. Über den ersten Adressen offset A01 kann die Zeigeradresse ZA, die eine absolute Speicheradresse innerhalb des Speichers SP ist, als eine relative Speicheradresse innerhalb des durch den Programm zustand PZ belegten ersten Speicherbereich SP1 ausgedrückt werden, die eine Adressie rung relativ zu einer ersten Speicheradresse SPZ des Programmzustands PZ beschreibt. Die relative Adresse kann durch einen Abstand zur ersten Speicheradresse SPZ des Pro grammzustands PZ definiert werden.

In einem ersten Programmobjektidentifizierungsschritt 109 wird ein Programmobjekt PO des Programmzustands PZ identifiziert, das zur ersten Speicheradresse SPZ des Pro grammzustands PZ um die durch den ersten Adressenoffset A01 definierte Anzahl von Speicherstellen beabstandet ist. Da die Zeigeradresse ZA ebenfalls um den ersten Ad ressenoffset A01 zu der ersten Speicheradresse SPZ des Programmzustands PZ beab standet ist, wird das identifizierte Programmobjekt PO darüber hinaus als ein erstes Pro grammobjekt P01 identifiziert, das im ersten Speicherbereich SP1 des Programmzu stands PZ eine Speicheradresse aufweist, die identisch zur Zeigeradresse ZA des Zei gerelements ist.

Über die Anordnungsstruktur des Programmzustands PZ ist jedem Programmobjekt PO des Programmzustands PZ eine Speicherposition P und eine Speichergröße SG zugeord net, wobei die Speichergröße SG eine Anzahl von Speicherstellen definiert, die vom je weiligen Programmobjekt PO im jeweiligen Speicherbereich eingenommen wird. Auf Ba sis der jeweiligen Speicherpositionen P und Speichergrößen SG der einzelnen Programmobjekte PO kann für jedes der nacheinander im ersten Speicherbereich SP1 des Programmzustands PZ gespeicherten Programmobjekte PO ein Abstand zur ersten Speicheradresse SPZ des Programmzustands PZ bestimmt werden. Der Abstand be schreibt jeweils eine Anzahl von Speicherstellen, um die einer erste Speicheradresse des jeweiligen Programmobjekts von der ersten Speicheradresse SPZ des Programmzu stands entfernt im Speicher SP angeordnet ist. Dasjenige Programmobjekt PO, dessen Abstand zur ersten Speicheradresse SPZ des Programmzustands PZ dem ersten Ad ressenoffset A01 entspricht, wird als erstes Programmobjekt P01 identifiziert. Da der Ab stand des ersten Programmobjekts P01 zur ersten Speicherstelle SPZ des Programmzu stands PZ dem ersten Adressenoffset A01 entspricht, ist das erste Programmobjekt P01 an einer Speicheradresse gespeichert, die der Zeigeradresse ZA entspricht. Somit wird das identifizierte erste Programmobjekt PO durch das Zeigerelement referenziert.

Somit wird in einem Zeigerobjektidentifizierungsschritt 111 das identifizierte erste Pro grammobjekt P01 als das durch das Zeigerelement referenzierte Zeigerobjekt ZO identifi ziert. Hierdurch ist der Zeigeradresse ZA des Zeigerelements eindeutig ein Programmob jekt PO des Programmzustands PZ zugeordnet.

Darauffolgend wird in einem Vollbezeichnungsbestimmungsschritt 113 dem durch das erste Programmobjekt P01 dargestellten Zeigerobjekt ZO eine vollqualifizierte Bezeich nung zugewiesen. Die vollqualifizierte Bezeichnung des Zeigerobjekts ZO stellt sich hier bei durch wenigstens den Namen bzw. die Bezeichnung des identifizierten ersten Pro grammobjekts P01 des Programmzustands PZ dar. Der Name des identifizierten ersten Programmobjekts P01 kann hierbei ein im Steuerprogramm definierter Name der durch das erste Programmobjekt P01 dargestellten Variable oder des dargestellten Datenob jekts sein.

Hierauf folgend kann die vollqualifizierte Bezeichnung des Zeigerobjekts ZO in einem An zeigeschritt 115 auf einem Displayelement des Automatisierungssystems 200 angezeigt werden. Das Displayelement 207 ist hierzu mit der Steuerung 201 verbunden. Das Dis playelement 207 kann beispielsweise ein Desktopcomputer, ein Laptop oder ein Mobilge rät sein. Alternativ kann das Displayelement 207 in die Steuerung 201 als eine Mensch- Maschine-Schnittsteile integriert sein.

Neben den bestimmten Zeigerobjekten ZO können im Anzeigeschritt vollqualifizierte Be zeichnungen einer Mehrzahl von Programmobjekte PO angezeigt werden. Die jeweiligen Programmobjekte PO müssen keine durch ein Zeigerelement referenzierten Zeigerobjekte ZO sein und können beliebige Variablen des Steuerprogramms oder Parameter des zu steuernden Automatisierungsprozesses sein.

Über die Anzeige der vollqualifizierten Bezeichnungen der Programmobjekte PO des Pro grammzustands PZ kann dem Nutzer unmittelbar auslesbare Information bezüglich der Werte der Programmobjekte PO des Programmzustands PZ bereitgestellt werden. Neben den vollqualifizierten Bezeichnungen der einzelnen Programmobjekte PO kann auf dem Displayelement 207 zu jedem angezeigten Programmobjekt PO der jeweilige Wert des Programmobjekts angezeigt werden, den dieses während der Ausführung des Steuerpro gramms aufweist. Während des Steuerns eines Automatisierungsprozesses des Automa tisierungssystems 200 auf Basis der Ausführung des Steuerprogramms ist anhand der Werte der Programmobjekte somit eine Beurteilung eines Ablaufs des Automatisierungs prozesses ermöglicht.

Somit kann auf Basis der angezeigten vollqualifizierten Bezeichnungen der Programmob jekte PO auf dem Displayelement 207 eine Evaluierung des Steuerprogramms und des durch das Steuerprogramm gesteuerten Automatisierungsprozesses des Automatisie rungssystems 200 vorgenommen werden. Ferner können gemäß den angezeigten voll qualifizierten Bezeichnungen Modifikation des Steuerprogramms vorgenommen und eine Steuerung des Automatisierungssystems 200 auf Basis des modifizierten Steuerpro gramms bewirkt werden.

Alternativ kann auf Basis der angezeigten Werte und der vollqualifizierten Bezeichnungen der Programmobjekte der Automatisierungsprozess über eine Eingabe entsprechend ge änderter Steuerungsparameter angepasst oder modifizierte werden. Steuerungsparame ter sind in diesem Zusammenhang Parameterwerte, auf Basis derer der Automatisie rungsprozess steuerbar ist.

Fig. 3 zeigt ein weiteres Flussdiagramm des Verfahrens 100 zum Steuern eines Automati sierungssystems 200 mit Visualisierung von Programmobjekten eines Steuerprogramms gemäß einer weiteren Ausführungsform.

Die Ausführungsform in Fig. 3 basiert auf der Ausführungsform in Fig. 2 und umfasst alle dort dargestellten Verfahrensschritte. Sofern diese in der Ausführungsform in Fig. 3 unver ändert bleiben, wird von einer erneuten Beschreibung abgesehen. Abweichend von der Ausführungsform in Fig. 2 umfasst das Verfahren 100 in der Ausfüh rungsform in Fig. 3 einen Anpassungsschritt 189 und einen Steuerschritt 191.

Im Anpassungsschritt werden auf Basis der im Anzeigeschritt 115 angezeigten vollqualifi zierten Bezeichnungen von Programmobjekten des Steuerprogramms Anpassungen an den Werten der Programmobjekte vorgenommen. Hierzu werden im Anzeigeschritt 115 zusätzlich zu den vollqualifizierten Bezeichnungen der Programmobjekte Werte der jewei ligen Programmobjekte PO angezeigt. Auf Basis der vollqualifizierten Bezeichnungen und der Werte der Programmobjekte kann eine Beurteilung des durch das Steuerprogramm gesteuerten Automatisierungsprozesses des Automatisierungssystems 200 vorgenom men werden. Auf Basis der Beurteilung können Werte der Programmobjekte PO ange passt beziehungsweise geändert werden, um hierdurch den Automatisierungsprozess neu auszurichten oder an geänderte Bedingungen anzupassen. Die Anpassung der Werte der Programmobjekte PO kann hierbei von der Art des jeweiligen Programmobjekts PO und des jeweiligen zu steuernden Automatisierungsprozesses abhängen. Die Programmob jekte PO, deren vollqualifizierte Bezeichnungen im Anzeigeschritt 115 angezeigt werden, und deren Werte im Anpassungsschritt 189 angepasst werden, können beliebige Pro grammobjekte PO des Steuerprogramms sein, und sind nicht auf durch Zeigerelemente referenzierte Zeigerobjekte ZO beschränkt.

Im Steuerschritt 191 wird darauffolgend auf Basis der angepassten beziehungsweise ge änderten Werte der Programmobjekte PO der Automatisierungsprozess gesteuert. Das Steuern umfasst hierbei das Ansteuern entsprechender Aktoren des Automatisierungs systems 200 durch entsprechende auf dem Steuerprogramm basierenden Steuerbefeh len. Das Steuern umfasst ferner das Aufnehmen von Messwerten der Sensoren des Auto matisierungssystems 200 und das verarbeiten der Sensorwerte als Eingabewerte der Steuerung durch das Ausführen des Steuerprogramms und das entsprechende Generie ren von Steuerbefehlen für die Aktoren in Form von Ausgabewerten der Steurung.

Abweichend von der Ausführungsform in Fig. 2 umfasst das Verfahren 100 in der Ausfüh rungsform in Fig. 3 ferner einen ersten Datentypbestimmungsschritt 183, der nach dem ersten Programmobjektidentifizierungsschritt 109 ausgeführt wird. Im ersten Datentypbe stimmungsschritt 183 wird der Datentyp des identifizierten ersten Programmobjekts P01 bestimmt. Der Datentyp des ersten Programmobjekts P01 kann darauffolgend als zusätz liche Information neben dem Namen beziehungsweise der Bezeichnung des Programm objekts in die vollqualifizierte Bezeichnung des Zeigerobjekts ZO im Vollbezeichnungsbe stimmungsschritt 113 mit aufgenommen werden. Unabhängig davon, ob das erste Programmobjekt P01 im Programmzustand PZ oder im Stack angeordnet ist, kann dieses einen beliebigen Datentyp aufweisen, beispielsweise einen Integer-Typ, eine Float-Typ, einen Boolean-Typ, oder einen anderen Skalartyp. Al ternativ kann das erste Programmobjekt von einem Verbundtyp, einem Feldtyp oder ei nem Zeichenkettentyp sein. Alternativ kann das erste Programmobjekt auch von einem Zeigertyp sein.

Darüber hinaus umfasst die Ausführungsform in Fig. 3 den Fall, dass im Überprüfungs schritt 105 festgestellt wird, dass die Zeigeradresse ZA des Zeigerelements im zweiten Speicherbereich SP2 des Stacks ST gespeichert ist.

In diesem Fall wird in einem Stack-Strukturbestimmungsschritt 145 eine Struktur des Stacks bestimmt. Die Struktur des Stacks beschreibt hierbei analog zur Anordnungsstruk tur des Programmzustands PZ eine Anordnung der einzelnen Stack-Programmobjekte und ordnet jedem Stack- Programmobjekt des Stacks ST eine Speicherposition und eine Speichergröße zu, die das jeweilige Stack-Programmobjekt in der Struktur des Stacks ein nimmt.

In einem ersten Stack-Adressenoffsetbestimmungsschritt 147 wird ein erster Stack-Ad- ressenoffset bestimmt, der eine Anzahl von Speicherstellen definiert, die die Zeigerad resse ZA von einer ersten Speicheradresse des Stacks im zweiten Speicherbereich SP2 beabstandet ist. Dieser Schritt erfolgt analog zu dem ersten Adressenoffsetbestimmungs schritt 107.

Darauf folgend wird in einem ersten Stack-Programmobjektidentifizierungsschritt 149 un ter Berücksichtigung der Struktur des Stacks und dem ersten Stack-Adressenoffset ein erstes Stack-Programmobjekt identifiziert, das zur ersten Speicheradresse des Stacks um die im ersten Stack-Adressenoffset definierte Anzahl von Speicherstellen beabstandet ist.

Analog zu der oben beschriebenen Ausführungsform werden für jedes im Stack gespei cherte Stack-Programmobjekt gemäß der jeweiligen in der Struktur des Stacks bestimm ten Speicherpositionen und Speichergrößen jeweils Abstände zur ersten Speicheradresse des Stacks bestimmt. Das Stack-Programmobjekt, dessen Abstand zur ersten Speicher adresse des Stacks der im ersten Stack-Adressenoffset bestimmten Anzahl an Speicher stellen entspricht, wird als erstes Stack-Programmobjekt identifiziert, das eine Speicheradresse im zweiten Speicherbereich SP2 des Stacks ST aufweist, die der Zeige radresse ZA des Zeigerobjekts entspricht.

In einem ersten Stack-Datentypbestimmungsschritt 185 wird der Datentyp des identifizier ten ersten Stack- Programmobjekts bestimmt.

Im Zeigerobjektidentifizierungsschritt 111 wird das identifizierte erste Stack-Programmob jekt mit dem Zeigerobjekt ZO des Zeigerelements identifiziert.

Die Bestimmung des ersten Stack-Adressenoffsets im ersten Stack-Adressenoffsetbe- stimmungsschritt 147, sowie die Bestimmung des ersten Stack-Programmobjekts im ers ten Stack-Programmobjektidentifizierungsschritt 149 erfolgen analog zu den entsprechen den Verfahrensschritten bezüglich der Bestimmung des ersten Adressenoffsets bzw. der Identifizierung des ersten Programmobjekts des Programmzustands PZ.

Fig. 4 zeigt eine schematische Darstellung einer Bestimmung eines Zeigerobjekts ZO ge mäß einer Ausführungsform des Verfahrens 100 in Fig. 2.

In Fig. 4 ist eine Anordnung von Programmobjekten PO des Programmzustands PZ inner halb des ersten Speicherbereichs SP1 des Speichers SP der Steuerung 201 dargestellt. Die Fig. 4 dient zur Illustration der Identifizierung des ersten Programmobjekts P01 als das durch das Zeigerelement referenzierte Zeigerobjekt ZO, das im ersten Speicherbe reich SP1 des Programmzustands PZ an der Zeigeradresse ZA gespeichert ist.

In Fig. 4 ist der erste Speicherbereich SP1 innerhalb des Speichers SP dargestellt. Im ersten Speicherbereich SP1 ist der Programmzustand PZ als ein zusammenhängender Bereich innerhalb des ersten Speicherbereichs SP1 dargestellt. In der Ausführungsform in Fig. 4 umfasst der Programmzustand PZ ein erstes Programmobjekt P01 und ein weite res Programmobjekt PO. Die in Fig. 4 dargestellten Größenverhältnisse sind aus illustrati ven Zwecken verfälscht dargestellt. Darüber hinaus sind die durch den Programmzustand PZ umfassten Programmobjekte PO in einer rein beispielhaften Anzahl dargestellt. Beides dient lediglich zu illustrativen Zwecken.

Das Programmobjekt PO ist innerhalb einer Anordnungsstruktur des Programmzustands PZ an einer ersten Speicherposition P1 angeordnet, während das erste Programmobjekt P01 in einer zweiten Speicherposition P2 angeordnet ist. Beide Programmobjekte weisen eine Speichergröße SG auf, die eine Anzahl von Speicherstellen beschreibt, die die jeweiligen Programmobjekte PO, P01 im ersten Speicherbereich SP1 des Programmzu stands PZ einnehmen. Alternativ können die Speichergrößen des Programmobjekts PO und des ersten Programmobjekts P01 unterschiedlich sein.

In der Ausführungsform in Fig. 4 entspricht das erste Programmobjekt P01 dem Zei gerobjekt ZO und ist in dem ersten Speicherbereich SP1 des Programmzustands PZ an einer Speicheradresse gespeichert, die der Zeigeradresse ZA des Zeigerobjekts ZO ent spricht. Die Zeigeradresse ZA entspricht der absoluten Speicheradresse innerhalb des Adressenraums des Speichers SP.

Darüber hinaus ist in Fig. 4 ein erster Adressenoffset A01 dargestellt, der einen Abstand zwischen der Zeigeradresse ZA und einer ersten Speicheradresse SPZ des Programmzu stands PZ beschreibt. Der erste Adressenoffset A01 beschreibt somit einen Abstand, den die Zeigeradresse ZA relativ zu einer ersten Speicheradresse SPZ des Programmzu stands PZ aufweist.

Die Speicheradresse ZA und insbesondere die Speicheradresse des ersten Programmob jekts P01 lässt sich somit als eine Summe der ersten Speicheradresse SPZ des Pro grammzustands PZ und dem ersten Adressenoffset A01 ausdrücken.

Durch Bestimmen des ersten Adressenoffsets A01 im ersten Adressenoffsetbestim mungsschritt 107, als Differenz der Zeigeradresse ZA zur ersten Speicheradresse SPZ des Programmzustands PZ, und unter Berücksichtigung der Anordnungsstruktur des Pro grammzustands PZ, die jedem Programmobjekt des Programmzustands PZ eine Spei cherposition P01, P02 innerhalb des Programmzustands PZ und eine Speichergröße SG zuordnet, kann durch Abzählen der Speicherstellen von der ersten Speicheradresse SPZ des Programmzustands PZ, die die einzelnen Programmobjekte PO, P01 des Programm zustands PZ innerhalb des ersten Speicherbereichs SP1 des Programmzustands PZ ein nehmen, dasjenige Programmobjekt, in der Ausführungsform in Fig. 4, das erste Pro grammobjekt P01 , identifiziert werden, das von der ersten Speicheradresse SPZ des Pro grammzustands PZ um den ersten Adressenoffset A01 beabstandet ist, und somit eine Speicheradresse innerhalb des ersten Speicherbereichs SP1 des Programmzustands PZ einnimmt, die der Zeigeradresse ZA des Zeigerobjekts ZO entspricht. Hierdurch kann das Zeigerobjekt ZO in Form eines identifizierten ersten Programmobjekts P01 des Pro grammzustands PZ identifiziert werden. Das in Fig. 4 dargestellte Vorgehen kann auf die Identifizierung eines entsprechenden Stack-Programmobjekts des Stacks für den Fall, dass die Zeigeradresse ZA des Zei gerobjekts ZO im Stack angeordnet ist, analog angewendet werden.

Fig. 5 zeigt ein weiteres Flussdiagramm des Verfahrens 100 zum Steuern eines Automati sierungssystems 200 mit Visualisierung von Programmobjekten PO eines Steuerpro gramms gemäß einer weiteren Ausführungsform.

Die Ausführungsform des Verfahrens 100 in Fig. 5 wird mit Bezug auf die Fig. 7 und die hierzu bereitgestellte Beschreibung beschrieben.

Die in Fig. 5 dargestellte Ausführungsform basiert auf der Ausführungsform in Fig. 3 und umfasst alle dort beschriebenen Verfahrensschritte. Sofern diese in der Ausführungsform in Fig. 5 unverändert bleiben, wird von einer erneuten Beschreibung abgesehen.

In der Ausführungsform in Fig. 5 ist der Fall beschrieben, dass das erste Programmobjekt P01 ein untergeordnetes Teilprogrammobjekt eines übergeordneten zweiten Programm objekts P02 ist. Das übergeordnete zweite Programmobjekt P02 kann beispielsweise vom Datentyp eines Verbundtyps, eines Feldtyps oder eines Zeichenkettentyps sein und das untergeordnete erste Programmobjekt P01 kann demnach beispielsweise ein Ele ment des Feldtyps, eine Komponente des Verbundtyps oder ein Element des Zeichenket tentyps sein.

Zur Identifizierung des ersten Programmobjekts P01 umfasst der erste Programmobjekti dentifizierungsschritt 109 somit einen zweiten Programmobjektidentifizierungsschritt 117. Im zweiten Programmobjektidentifizierungsschritt 117 wird unter Berücksichtigung der An ordnungsstruktur des Programmzustands PZ und unter Berücksichtigung des ersten Ad ressenoffsets A01 ein übergeordnetes zweites Programmobjekt P02 identifiziert, das im ersten Speicherbereich SP1 des Programmzustands PZ einen Speicherbereich belegt, der die Zeigeradresse ZA umfasst. Das übergeordnete zweite Programmobjekt P02 wird hierbei dadurch identifiziert, dass gemäß der Anordnungsstruktur des Programmzustands PZ das Programmobjekt PO des Programmzustands PZ identifiziert wird, das einen Spei cherbereich belegt, in dem die um den ersten Adressenoffset A01 zur ersten Speicherad resse SPZ des Programmzustands PZ beabstandete Speicherstelle angeordnet ist.

Die Identifizierung des übergeordneten zweiten Programmobjekts P02 erfolgt vergleich bar zu der oben beschriebenen Identifizierung des ersten Programmobjekts P01 durch Ermitteln der Abstände der einzelnen Programmobjekte PO des Programmzustands PZ zur ersten Speicheradresse SPZ des Programzustands PZ. Der Abstand eines Program mobjekts PO ist hierbei eine Anzahl von Speicherstellen, um die eine erste relative Spei cheradresse des jeweiligen Programmobjekts von der ersten Speicheradresse SPZ des Programmzustands PZ beabstandet im Speicher SP angeordnet ist. Dasjenige Program mobjekt PO, das gemäß der Anordnungsstruktur des Programmzustands PZ innerhalb des Programmzustands PZ einen Bereich belegt, der eine Speicherstelle umfasst, die um den ermittelten ersten Adressenoffset A01 zur ersten Speicheradresse SPZ des Pro grammzustands PZ beabstandet ist, wird als übergeordnetes zweites Programmobjekt P02 identifiziert.

Darauffolgend wird in einem zweiten Adressenoffsetbestimmungsschritt 119 ein zweiter Adressenoffset A02 bestimmt, der sich aus einer Differenz zwischen dem ersten Ad ressenoffset und der ersten relativen Speicheradressen SP02 des zweiten Programmob jekts P02 ergibt, und der eine Anzahl von Speicherstellen definiert, um die die Zeigerad resse ZA von einer ersten relativen Speicheradresse SP02 des übergeordneten zweiten Programmobjekts P02 beabstandet ist.

In einem zweiten Datentypbestimmungsschritt 121 wird der Datentyp des übergeordneten zweiten Programmobjekts P02 bestimmt. Der Datentyp des übergeordneten Programm objekts P02 umfasst hierbei eine Anzahl von untergeordneten Teilprogrammobjekten des übergeordneten zweiten Programmobjekts P02. Darüber hinaus beschreibt der Datentyp eine Struktur, in der die einzelnen untergeordneten Teilprogrammobjekte im übergeordne ten zweiten Programmobjekt P02 angeordnet sind. Hierbei wird jedem untergeordneten Teilprogrammobjekt eine Speicherposition und eine Speichergröße innerhalb des durch das übergeordnete zweite Programmobjekt P02 belegten Speicherbereichs zugeordnet. Die Speicherpositionen sind hierbei jeweils relativ zur ersten Speicherstelle des zweiten Programmobjekts P02 bestimmt.

Darauf folgend wird unter Berücksichtigung des zweiten Adressenoffsets A02 und der Struktur des übergeordneten zweiten Programmobjekts P02 das untergeordnete Teilpro grammobjekt des übergeordneten zweiten Programmobjekts P02 bestimmt, das zur ers ten relativen Speicheradresse SP02 des übergeordneten zweiten Programmobjekts P02 um den zweiten Adressenoffset A02 beabstandet ist. Dieses identifizierte untergeordnete Teilprogrammobjekt wird als erstes Programmobjekt P01 identifiziert, das innerhalb des Programmzustands PZ des ersten Speicherbereichs SP1 an einer Speicheradresse ange ordnet ist, die der Zeigeradresse ZA des Zeigerobjekts ZO entspricht. Die Identifizierung des ersten Programmobjekts P01 erfolgt analog beziehungsweise ver gleichbar zur Identifizierung des übergeordneten zweiten Programmobjekts P02, indem für alle untergeordneten Programmteilobjekte des übergeordneten zweiten Programmob jekts P02 gemäß der jeweiligen Speicherpositionen und Speichergrößen Abstände ermit telt werden, um die die untergeordneten Programmteilobjekte zu einer ersten Speicher stelle des übergeordneten zweiten Programmobjekts P02 beabstandet sind. Dasjenige untergeordnete Programmteilobjekt, dessen Abstand mit dem zweiten Adressenoffset A02 übereinstimmt, wird als erstes Programmobjekt P01 identifiziert, dessen Speicherad resse um den ersten Adressenoffset A01 zur ersten Speicheradresse SPZ des Pro grammzustands PZ beabstandet ist und folglich mit der Zeigeradresse ZA übereinstimmt. Abstände sind wie oben bereits beschrieben, Anzahlen von Speicherstellen, um die die ersten relativen Speicheradressen der jeweiligen Programmobjekte PO zu einer ersten re lativen Speicheradresse des jeweils direkt übergeordneten Programmobjekts PO im Spei cher SP angeordnet sind.

Der erste Adressenoffset A01 lässt sich hierbei als eine Summe aus dem zweiten Ad ressenoffset A02 und der ersten relativen Speicheradresse SP02 des übergeordneten zweiten Programmobjekts P02 innerhalb des Programmzustands PZ ausdrücken.

In der vollqualifizierten Bezeichnung des identifizierten Zeigerobjekts im Vollbezeich nungsbestimmungsschritt 113 können sowohl die Bezeichnung des identifizierten ersten Programmobjekts P01 als auch die Bezeichnung des identifizierten übergeordneten zwei ten Programmobjekts P02 angegeben sein. In einem Fall, in dem somit durch das Zei gerelement ein Element eines Feldtyps bzw. eine Komponente eines Verbundtyps oder ein Element eines Zeichenkettentyps referenziert wird, können somit in der vollqualifizier ten Bezeichnung das referenzierte Element bzw. die referenzierte Komponente und der entsprechende Feldtyp, Verbundtyp oder Zeichenkettentyp angegeben sein.

In Fig. 5 ist ferner der Fall beschrieben, dass die Zeigeradresse ZA im zweiten Speicher bereich SP2 des Stacks ST angeordnet ist und durch das Zeigerelement ein untergeord netes Stack-Teilobjekt eines übergeordneten Stack-Programmobjekts referenziert wird. Analog zu dem oben Beschriebenen wird hiermit der Fall beschrieben, dass durch das Zeigerelement ein Element bzw. eine Komponente eines im Stack gespeicherten Ver bundtyps, eines Feldtyps oder eines Zeichenkettentyps referenziert wird. Hierzu umfasst der erste Stack-Programmobjektidentifizierungsschritt 149 einen Framei dentifizierungsschritt 151. Im Frameidentifizierungsschritt wird ein Frame des Stacks iden tifiziert, der im zweiten Speicherbereich SP2 des Stacks ST Speicheradressen belegt, von denen eine zur ersten Speicheradresse des Stacks um den ersten Stack-Adressenoffset beabstandet ist. Hierzu kann auf Basis einer Struktur des Stacks, in der jedem Programm objekt des Stacks eine Speicherposition und Speichergröße zugeordnet sind, der Frame bestimmt werden, der im Stack einen Speicherbereich belegt, der die Zeigeradresse ZA umfasst.

Die Frames des Stacks sind für gewöhnlich in einer Folge angeordnet. Aus dem Inhalt ei nes Frames kann somit auf den Aufbau eines jeweils folgenden Frames geschlossen wer den. Die Struktur des ersten Frames des Stacks ist für gewöhnlich bekannt. Die Struktur eines Frames kann insbesondere durch die entsprechende Funktion des Frames festge legt sein. Gegebenenfalls kann zur Bestimmung der Struktur des Frames zusätzlich eine Ausführungsposition der Funktion berücksichtigt werden müssen.

In einem Funktionsidentifikationsschritt 153 wird ferner die zugehörige Funktion des iden tifizierten Frames identifiziert.

In einem zweiten Stack-Programmobjektidentifizierungsschritt 155 wird ein übergeordne tes zweites Stack-Programmobjekt identifiziert, das im zuvor bestimmten Frame Speicher adressen belegt, die zur ersten Speicheradresse des Frames um beabstandet sind.

Die Vorgehensweise im zweiten Stack-Programmobjektidentifizierungsschritt 155 ist ver gleichbar zu der im zweiten Programmobjektidentifizierungsschritt 117.

In einem zweiten Stack-Adressenoffsetbestimmungsschritt 157 wird ein zweiter Stack-Ad- ressenoffset bestimmt, der sich aus einer Differenz zwischen dem ersten Stack-Adressen- offset und der ersten relativen Speicheradressen des zweiten Stack-Programmobjekts P02 ergibt, und der eine Anzahl von Speicherstellen definiert, um die Zeigeradresse ZA zu einer ersten relativen Speicheradresse des übergeordneten zweiten Stack-Programm objekts beabstandet ist.

In einem zweiten Stack-Datentypbestimmungsschritt 159 wird ein Datentyp des überge ordneten zweiten Stack- Programmobjekts bestimmt. Auf Basis des zweiten Stack-Adressenoffsets und des Datentyps des übergeordneten zweiten Stack-Programmobjekts, in dem eine Anordnungsstruktur der untergeordneten Stack-Teilprogrammobjekte des übergeordneten zweiten Stack- Programmobjekts definiert ist, wird das erste Stack-Programmobjekt als das untergeordnete Stack-Teilprogrammob- jekt des übergeordneten zweiten Stack- Programmobjekts identifiziert, das um den zweiten Stack-Adressenoffset zur ersten relativen Speicheradresse des übergeordneten zweiten Stack-Programmobjekts beabstandet ist.

Die Identifizierung des übergeordneten zweiten Stack-Programmobjekts, die Bestimmung des zweiten Stack-Adressenoffsets und die Identifizierung des ersten Stack-Programmob jekts erfolgt analog zu dem oben beschriebenen Vorgehen zur Bestimmung des entspre chenden Adressenoffsets und Identifizierung des entsprechenden Programmobjekts des Programmzustands.

In der vollqualifizierten Bezeichnung des Zeigerobjekts ZO kann analog zu dem oben Be schriebenen sowohl die Bezeichnung der referenzierten Komponente bzw. des referen ziellen Elements als auch die Bezeichnung des übergeordneten Feldtyps, Verbundtyps oder Zeichenkettentyps umfassen. Darüber hinaus kann die vollqualifizierte Bezeichnung des Zeigerobjekts ZO eine Bezeichnung des das Zeigerobjekt ZO umfassenden Frames bzw. der zum Frame gehörenden Funktion umfassen.

Fig. 6 zeigt ein weiteres Flussdiagramm des Verfahrens 100 zum Steuern eines Automati sierungssystems 200 mit Visualisierung von Programmobjekten PO eines Steuerpro gramms gemäß einerweiteren Ausführungsform.

Die Ausführungsform des Verfahrens 100 in Fig. 6 wird mit Bezug auf die Fig. 7 und die hierzu bereitgestellte Beschreibung beschrieben.

Die Ausführungsform in Fig. 6 basiert auf der Ausführungsform in Fig. 5 und umfasst alle dort beschriebenen Verfahrensschritte. Sofern diese in der Ausführungsform in Fig. 6 un verändert bleiben, wird von einer erneuten Beschreibung abgesehen.

Die Ausführungsform in Fig. 6 beschreibt den Fall, dass das durch das Zeigerelement re ferenzielle Zeigerobjekt ein untergeordnetes Teilprogrammobjekt eines übergeordneten Programmobjekts in zweifacher Schachtelungstiefe ist. In Fig. 6 wird somit der Fall be schrieben, dass durch das Zeigerelement beispielsweise ein Element eines Objektes ei nes Feldtyps referenziert wird, wobei das Feldtypobjekt wiederum ein Element eines weiteren Objektes eines Feldtyps ist. Analog kann das Zeigerobjekt eine Komponente ei nes Verbundtyps sein, dessen Objekt wiederum eine Komponente eines übergeordneten Verbundtyps ist. Analog können Feldtypen, Verbundtypen und weitere Typen, auch in Kombination, beliebig ineinander verschachtelt sein, wobei die Schachtelungstiefe belie big ist.

Hierzu umfasst in der Ausführungsform in Fig. 6 der zweite Programmobjektidentifizie rungsschritt 117 einen dritten Programmobjektidentifizierungsschritt 123, in dem das über geordnete dritte Programmobjekt P03 als ein Programmobjekt PO des Programmzu stands PZ identifiziert wird, das einen Speicherbereich belegt, in dem die Zeigeradresse ZA angeordnet ist. Das übergeordnete dritte Programmobjekt P03 umfasst mehrere un tergeordnete Teilprogrammobjekte. Eins der untergeordneten Teilprogrammobjekte ist das übergeordnete zweite Programmobjekt, das wiederum das erste Programmobjekt P01 umfasst.

Die Identifizierung des übergeordneten dritten Programmobjekts P03 erfolgt analog zu der zu Fig. 5 beschriebenen Identifizierung des übergeordneten zweiten Programmobjekts P02.

In einem dritten Adressenoffsetbestimmungsschritt 125 wird ein dritter Adressenoffset A03 bestimmt. Der dritte Adressenoffset A03 beschreibt hierbei den Abstand der Zeige radresse ZA, sprich der Adresse, die von der ersten Speicheradresse SPZ des Pro grammzustands PZ um den ersten Adressenoffset A01 beabstandet ist, zu einer ersten relativen Speicheradresse SP03 des übergeordneten dritten Programmobjekts P03. Die Bestimmung erfolgt analog zur zu Fig. 5 beschriebenen Bestimmung des zweiten Ad ressenoffsets A02.

Der dritte Adressenoffset A03 beschreibt hierbei eine Anzahl von Speicherstellen, um die die Zeigeradresse ZA zu einer ersten relativen Speicheradresse SP03 des übergeordne ten zweiten Programmobjekts P03 beabstandet ist.

Der dritte Adressenoffset A03 ergibt sich somit aus einer Differenz zwischen dem ersten Adressenoffset A01 und der ersten relativen Speicheradresse SP03 des dritten Program mobjekts P03.

In einem dritten Datentypbestimmungsschritt 127 wird der Datentyp des übergeordneten dritten Programmobjekts P03 bestimmt. Auf Basis des Datentyps des übergeordneten dritten Programmobjekts P03 und des drit ten Adressenoffsets A03 wird im zweiten Programmobjektidentifizierungsschritt 117 nach Durchführung der Schritte 123,125,127 das übergeordnete zweite Programmobjekt P02 als das untergeordnete Programmteilobjekt des übergeordneten dritten Programmobjekt P03 identifiziert, das die Zeigeradresse ZA umfasst. Die Identifizierung des übergeordne ten zweiten Programmobjekts P02 erfolgt analog zur der zu Fig. 5 beschriebenen Identifi zierung des ersten Programmobjekts P01 im ersten Programmobjektidentifizierungs schritt 109 durch Bestimmen der Abstände der untergeordneten Programmteilobjekte des übergeordneten dritten Programmobjekt P03 zur ersten Speicherstelle des dritten Pro grammobjekts P03 und Ermitteln, desjenigen untergeordneten Programmteilobjekts des übergeordneten dritten Programmobjekts P03, das gemäß dem ermittelten Abstand und der jeweiligen Speichergröße SG im Speicherbereich des übergeordneten dritten Pro grammobjekts P03 einen Bereich einnimmt, der eine Speicheradresse umfasst, die zur ersten relativen Speicheradresse SP03 des dritten Programmobjekts P03 um den dritten Adressenoffset A03 beabstandet ist.

Die Identifizierung des übergeordneten zweiten Programmobjekts P02 erfolgt somit auf Grundlage des dritten Adressenoffsets A03 und dem Wissen über die Struktur des be stimmten Typs des dritten Programmobjekts P03, durch den die Anordnung von unterge ordneten Teilprogrammobjekten des dritten Programmobjekts P03 definiert ist. Demzu folge wird dasjenige untergeordnete Teilprogrammobjekt des dritten Programmobjekts P03 als zweites Programmobjekt P02 bestimmt, dessen Speicherbereich eine Speicher stelle umfasst, die zur ersten relativen Speicherstelle des dritten Programmobjekts P03 um den dritten Adressenoffset A03 beabstandet.

Analog wird zur Bestimmung eines übergeordneten dritten Stack-Programmobjekts im zweiten Stack-Programmidentifizierungsschritt 155 ein dritter Stack-Programmidentifizie- rungsschritt 161 durchgeführt. Darauffolgend wird in einem dritten Stack-Adressenoffset- bestimmungsschritt 163 ein dritter Stack-Adressenoffset bestimmt, indem ein Abstand zwischen der Zeigeradresse ZA und einer ersten relativen Speicheradresse des überge ordneten dritten Stack-Programmobjekts bestimmt ist. Darauffolgend wird in einem dritten Stack-Datentypbestimmungsschritt 165 der Datentyp des übergeordneten dritten Stack- Programmobjekts bestimmt.

Hierauf basierend wird im zweiten Stack-Programmobjektidentifizierungsschritt 155 das übergeordnete zweite Stack- Programmobjekt identifiziert. Die Identifizierung des übergeordneten dritten Stack-Programmobjekts bzw. die Bestim mung des dritten Stack-Adressenoffsets bzw. des Datentyps des übergeordneten dritten Stack-Programmobjekts wird analog zur Identifizierung des übergeordneten zweiten Stack-Programmobjekts bzw. analog zur Bestimmung des zweiten Stack-Adressenoffsets bzw. des Datentyps des zweiten Stack-Programmobjekts durchgeführt.

Analog zu der oben beschriebenen Identifizierung des übergeordneten zweiten Program mobjekt P02 im zweiten Programmobjektidentifizierungsschritt 117 wird auf Basis des dritten Stack-Adressenoffsets und des Datentyps des übergeordneten dritten Stack-Pro grammobjekts im zweiten Stack-Programmobjektidentifizierungsschritt 155 das zweite Stack-Programmobjekt identifiziert.

Abweichend zu der Ausführungsform in Fig. 5 umfasst das Verfahren 100 in der Ausfüh rungsform in Fig. 6 einen Auswahlschritt 187, in dem Programmobjekte des Programmzu stands PZ bzw. Stack-Programmobjekte des Stacks ausgewählt werden, für die eine Be stimmung einer vollqualifizierten Bezeichnung und eine Anzeige der vollqualifizierten Be zeichnung gemäß dem erfindungsgemäßen Verfahren vorgenommen werden.

Fig. 7 zeigt eine schematische Darstellung einer Bestimmung eines Zeigerobjekts ZO ge mäß einer Ausführungsform des Verfahrens 100 in Fig. 2.

Die schematische Darstellung des Speicherbereichs des Programmzustands PZ in Fig. 7 basiert auf der schematischen Darstellung in Fig. 4 und beschreibt den zu Fig. 6 beschrie benen Fall, dass das vom Zeigerelement referenzierte Zeigerobjekt ZO ein untergeordne tes Teilprogrammobjekt eines übergeordneten Programmobjekts in zweifacher Schachte lungstiefe ist.

Hierzu ist in Fig. 7 im ersten Speicherbereich SP1 des Speichers SP der Programmzu stand PZ angeordnet, der in der Ausführungsform in Fig. 7 ein Programmobjekt PO und ein weiteres Programmobjekt PO umfasst, das als ein übergeordnetes drittes Programm objekt P03 ausgebildet ist, das wiederum weitere untergeordnete Teilprogrammobjekte TPO umfasst. Das übergeordnete dritte Programmobjekt P03 umfasst ferner ein unterge ordnetes Teilprogrammobjekt in Form des übergeordneten zweiten Programmobjekts P02. Das übergeordnete zweite Programmobjekt P02 umfasst wiederum drei untergeord nete Teilprogrammobjekte TPO, von denen ein untergeordnetes Teilprogrammobjekt TPO als das erste Programmobjekt P01 identifiziert ist. Analog zu Fig. 4 ist das erste Programmobjekt P01 als das Zeigerobjekt ZO identifiziert und im ersten Speicherbereich SP1 des Programmzustands PZ an der Zeigeradresse ZA angeordnet.

Ferner ist in Fig. 7 ein erster Adressenoffset A01 dargestellt, der einen Abstand der Zei geradresse ZA zu der ersten Speicheradresse SPZ des Programmzustands PZ be schreibt. Darüber hinaus ist ein zweiter Adressenoffset A02 dargestellt, der sich aus einer Differenz zwischen dem ersten Adressenoffset A01 und der ersten relativen Speicherad resse SP02 des zweiten Programmobjekts P02 und der ersten relativen Speicheradresse SP03 des dritten Programmobjekts P03 ergibt und einen Abstand zwischen der ersten relativen Speicheradresse SP02 des zweiten Programmobjekts P02 und einer Speicher stelle beschreibt, die um den ersten Adressenoffset A01 zur ersten Speicheradresse SPZ des Programmzustands PZ beabstandet ist.

Ferner ist ein dritter Adressenoffset A03 dargestellt, der sich aus einer Differenz zwischen dem ersten Adressenoffset A01 und der ersten relativen Speicheradresse SP03 des drit ten Programmobjekts P03 ergibt und einen Abstand zwischen der ersten relativen Spei cheradresse SP03 des dritten Programmobjekts P03 und einer Speicherstelle be schreibt, die um den ersten Adressenoffset A01 zur ersten Speicheradresse SPZ des Programmzustands PZ beabstandet ist.

Zur Identifizierung eines Programmobjekts PO des Programmzustands PZ als durch das Zeigerelement referenzielles Zeigerobjekt ZO wird zunächst der erste Adressenoffset A01 bestimmt, der den Abstand der Zeigeradresse ZA zur ersten Speicheradresse SPZ des Programmzustands PZ beschreibt. Darauf folgend wird basierend auf dem ersten Ad ressenoffset A01 und einer Anordnungsstruktur des Programmzustands PZ, die jedem Programmobjekt PO des Programmzustands PZ, das selbst kein untergeordnetes Pro grammobjekt eines übergeordneten Programmobjekts ist, eine Speicherposition P und eine Speichergröße SG zuweist, das übergeordnete dritte Programmobjekt P03 als das Programmobjekt PO des Programmzustands PZ identifiziert, das im ersten Speicherbe reich SP1 des Programmzustands PZ einen Speicherbereich belegt, der eine Speicher stelle umfasst, die um den ersten Adressenoffset A01 zur ersten Speicheradresse SPZ des Programmzustands PZ beabstandet ist.

Nach Identifizierung des übergeordneten dritten Programmobjekts P03 wird ein dritter Ad ressenoffset A03 bestimmt, der sich aus der Differenz zwischen dem ersten Adressenoffset A01 und der ersten relativen Speicheradressen SP03 des dritten Pro grammobjekts P03 ergibt, und eine Anzahl von Speicherstellen definiert, um die die Zei geradresse ZA zur ersten relativen Speicheradresse SP03 des übergeordneten dritten Programmobjekts beabstandet ist. Darüber hinaus wird der Datentyp des übergeordneten dritten Programmobjekts bestimmt, der in der Ausführungsform in Fig. 7 besagt, dass das übergeordnete dritte Programmobjekt P03 ein untergeordnetes Teilprogrammobjekt in Form des übergeordneten zweiten Programmobjekts P02 umfasst.

Darauf folgend wird das übergeordnete zweite Programmobjekt P02 als das untergeord nete Teilprogrammobjekt des übergeordneten dritten Programmobjekts P03 identifiziert, das im Speicherbereich des Programmzustands PZ einen Speicherbereich belegt, der Speicherstellen umfasst, die zur ersten relativen Speicherstelle SP03 des übergeordne ten dritten Programmobjekts P03 um den dritten Adressenoffset A03 beabstandet sind.

Darauf folgend wird ein zweiter Adressenoffset A02 bestimmt, der sich aus der Differenz zwischen dem ersten Adressenoffset A01 und einer Summe aus der ersten relativen Speicheradresse SP03 des dritten Programmobjekts P03 und der ersten relativen Spei cheradressen SP02 des zweiten Programmobjekts P02 ergibt, und der eine Anzahl von Speicherstellen beschreibt, um die die Zeigeradresse ZA zur ersten relativen Speicherad resse SP02 des übergeordneten zweiten Programmobjekts P02 beabstandet ist. Ferner wird der Datentyp des übergeordneten zweiten Programmobjekts P02 ermittelt, der in der Ausführungsform in Fig. 7 besagt, dass das übergeordnete zweite Programmobjekt P02 drei untergeordnete Teilprogrammobjekte TPO umfasst, die in einer ersten Speicherposi tion P1, einer zweiten Speicherposition P2 und einer dritten Speicherposition P3 innerhalb des Speicherbereichs, der durch das übergeordnete zweite Programmobjekt P02 belegt wird, angeordnet sind. In Fig. 7 sind lediglich die Speicherpositionen der untergeordneten Teilprogrammobjekte des übergeordneten zweiten Programmobjekts P02 mit Bezugszei chen versehen. Darüber hinaus weisen aber alle weiteren Programmobjekte PO des Pro grammzustands PZ, unter Anderem das übergeordnete dritte Programmobjekt P03 wie auch das übergeordnete zweite Programmobjekt P02 individuell definierte Speicherpositi onen innerhalb des Speicherbereichs des Programmzustands PZ auf.

Auf Basis des zweiten Adressenoffsets A02 und der Datenstruktur des Datentyps des übergeordneten zweiten Programmobjekts P02 wird im Folgenden das erste Programm objekt P01 als das untergeordnete Teilprogrammobjekt TPO des übergeordneten zweiten Programmobjekts P02 identifiziert, das von der ersten relativen Speicheradresse SP02 des übergeordneten zweiten Programmobjekts P02 um den zweiten Adressenoffset A02 beabstandet ist. Darüber hinaus wird das erste Programmobjekt P01 demzufolge als das Programmobjekt PO des Programmzustands PZ identifiziert, das im ersten Speicherbe reich SP1 an einer Speicheradresse gespeichert ist, die der Zeigeradresse ZA des Zei gerobjekts ZO entspricht. Damit wird das identifizierte erste Programmobjekt P01 als das Zeigerobjekt ZO identifiziert.

Die in Fig. 7 illustrierte grafische Darstellung der Identifizierung des Zeigerobjekts dient rein illustrativen Zwecken zur Erläuterung der Vorgehensweise der Identifizierung der ein zelnen ineinander verschachtelten Programmobjekte auf Basis der bestimmten Adressen offsets und der jeweiligen Datenstrukturen bzw. Anordnungsstrukturen der einzelnen Pro grammobjekte bzw. des Programmzustands PZ. Die in Fig. 7 illustrierte Darstellung des Speicherbereichs des Programmzustands PZ ist rein beispielhaft und weder größengetreu dargestellt noch ist ein Programmzustand dargestellt, der in Realität beim Ausführen ei nes Steuerprogramms eines Automatisierungssystems zu erwarten wäre.

Die Länge der die Adressenoffsets und ersten relativen Speicheradressen darstellenden Pfeile repräsentieren eine Anzahl von Speicherstellen, um die eine jeweilige Speicherad resse, auf der der jeweilige Pfeil zeigt, von der ersten Speicheradresse des Programmzu stands oder eine ersten relativen Adresse eines jeweils übergeordneten Programmobjekts PO beabstandet angeordnet ist.

Fig. 8 zeigt ein weiteres Flussdiagramm des Verfahrens 100 zum Steuern eines Automati sierungssystems 200 mit Visualisierung von Programmobjekten PO eines Steuerpro gramms gemäß einer weiteren Ausführungsform.

Die in Fig. 8 dargestellte Ausführungsform des Verfahrens 100 basiert auf der Ausfüh rungsform in Fig. 6 und umfasst alle dort beschriebenen Verfahrensschritte. Sofern diese in der Ausführungsform in Fig. 8 unverändert bleiben, wird von einer weiteren Beschrei bung abgesehen.

In Fig. 8 ist der Fall dargestellt, dass durch das Zeigerelement ein Zeigerobjekt ZO refe renziell wird, das ein untergeordnetes Teilprogrammobjekt eines übergeordneten Pro grammobjekts PO des Programmzustands PZ in n-facher Schachtelungstiefe darstellt. In der Ausführungsform in Fig. 8 wird die rekursive Ausführbarkeit des Verfahrens 100 dar gestellt, indem zur Identifizierung eines Programmobjekts PO, das als untergeordnetes Teilprogrammobjekt eines übergeordneten Programmobjekts PO mit n-facher Schachte lungstiefe ausgebildet ist, das Verfahren 100 n-fach rekursiv anwendbar ist. Hierzu umfasst der erste Programmobjektidentifizierungsschritt 109 einen n-ten Program mobjektidentifizierungsschritt 129, in dem ein übergeordnetes n-tes Programmobjekt iden tifiziert wird. Darauf folgend wird in einem n-ten Adressenoffsetbestimmungsschritt 131 ein n-ter Adressenoffset bestimmt, der sich aus einer Differenz zwischen dem ersten Ad ressenoffset A01 und der ersten relativen Speicheradresse des n-ten Programmobjekts bestimmt. Ferner wird in einem n-ten Datentypbestimmungsschritt 133 der Datentyp des übergeordneten n-ten Programmobjekts bestimmt.

Darauf folgend wird in einem n-1-ten Programmobjektidentifizierungsschritt 135 ein unter geordnetes Teilprogrammobjekt des übergeordneten n-ten Programmobjekts, das eine Adresse umfasst, die zu einer ersten relativen Speicheradresse des übergeordneten n-ten Programmobjekts um den n-ten Adressenoffset beabstandet ist, als ein übergeordnetes n- 1-tes Programmobjekt identifiziert. Darauf folgend wird ein n-1-ter Adressenoffset in ei nem n-1-ten Adressenoffsetbestimmungsschritt 137 bestimmt, der sich aus einer Diffe renz zwischen dem ersten Adressenoffset A01 und einer Summe aus der ersten relativen Speicheradresse des n-ten Programmobjekts und der ersten relativen Speicheradresse des n-1-ten Programmobjekts bestimmt. In einem n-1-ten Datentypbestimmungsschritt 139 wird darauf folgend der Datentyp des übergeordneten n-1-ten Programmobjekts be stimmt.

Hierauf basierend wird in einem n-2-ten Programmobjektidentifizierungsschritt 141 ein un tergeordnetes Teilprogrammobjekt des übergeordneten n-1-ten Programmobjekts als ein übergeordnetes n-2-tes Programmobjekt identifiziert.

Für den Fall, dass gilt, dass n-2 größer 2 ist, wird das Verfahren in rekursiver Form weiter geführt, bis das übergeordnete zweite Programmobjekt P02 identifizierbar ist. Darauf fol gend wird im zweiten Adressenoffsetbestimmungsschritt 119 der zweite Adressenoffset bestimmt und im zweiten Datentypbestimmungsschritt 121 der Datentyp des übergeord neten zweiten Programmobjekts P02 bestimmt. In dieser Ausführungsform ergibt sich der zweite Adressenoffset A02 aus einer Differenz zwischen dem ersten Adressenoffset A01 und einer Summe aus den ersten relativen Speicheradresse der n-ten bis zweiten Pro grammobjekte. Hierauf basierend wird das erste Programmobjekt P01 als das Programm objekt identifiziert, das im ersten Speicherbereich SP1 des Programmzustands PZ an ei ner Speicheradresse gespeichert ist, die der Zeigeradresse ZA entspricht. In der hier beschriebenen Ausführungsform weist das n-te Programmobjekt eine n-1-fa- che Schachtelungstiefe auf und umfasst das n-1-te Programmobjekt. Das n-1-te Program mobjekt umfasst wiederum ein n-2-tes Programmobjekt. Dieses umfasst wiederum ein n- 3-tes Programmobjekt. Die Reihe setzt sich bis zum zweiten Programmobjekt fort, das seinerseits das durch das Zeigerelement referenzierte erste Programmobjekt umfasst.

Alle genannten Programmobjekte können neben den genannten weitere Programmob jekte umfassen.

Durch das rekursive Ausführen der genannten Schritte werden nacheinander die jeweils innerhalb des n-Programmobjekts verschachtelten Programmobjekte entsprechender Schachtelungstiefe identifiziert, bis das zweite Programmobjekt und schließlich das durch das Zeigerelement referenzierte erste Programmobjekt identifiziert werden.

Analoges gilt für das n-te Stack-Programmobjekt, das ebenfalls eine n-1 -fache Schachte lungstiefe aufweist und analog dem oben beschriebenen verschachtelte Stack-Programm objekte umfasst.

Analog wird vorgegangen für den Fall, dass durch das Zeigerelement ein Zeigerobjekt ZO referenziert wird, das ein untergeordnetes Teilprogrammobjekt eines im Stack gespeicher ten übergeordneten Programmobjekts n-facher Schachtelungstiefe ist.

Hierzu umfasst der erste Stack-Programmobjektidentifizierungsschritt 149 einen n-ten Stack-Programmobjektidentifizierungsschritt 167, in dem das übergeordnete n-te Stack- Programmobjekt identifiziert wird. Darauf folgend wird in einem n-ten Stack-Adressenoff- setbestimmungsschritt 169 der n-te Stack-Adressenoffset bestimmt. Darauf folgend wird in einem n-ten Stack-Datentypbestimmungsschritt 171 der Datentyp des übergeordneten n-ten Stack-Programmobjekts identifiziert.

Darauf folgend wird in einem n-1-ten Stack-Programmobjektidentifizierungsschritt 173 ein untergeordnetes Stack-Teilprogrammobjekt des übergeordneten n-ten Stack-Programm objekts als ein übergeordnetes n-1-tes Stack-Programmobjekt identifiziert. Darauf folgend wird ein n-1-ter Stack-Adressenoffset in einem n-1-ten Stack-Adressenoffsetbestim- mungsschritt 175 bestimmt. Darauf folgend wird der Datentyp des übergeordneten n-1-ten Stack-Programmobjekts in einem n-1-ten Stack-Datentypbestimmungsschritt 177 be stimmt. Darauf folgend wird in einem zweiten Stack-Programmobjektidentifizierungsschritt 179 ein untergeordnetes Stack-Teilprogrammobjekt des übergeordneten n-1-ten Stack-Program mobjekts als ein übergeordnetes n-2-tes Stack-Programmobjekt identifiziert.

Für den Fall, dass gilt, dass n-2 größer 2 ist, wird das Verfahren in einem weiteren Re kursionsschritt 181 rekursiv durchgeführt, bis ein untergeordnetes Stack-Teilprogrammob- jekt als das übergeordnete zweite Stack-Teilprogrammobjekt identifiziert wird. Darauf fol gend wird im zweiten Stack-Adressenoffsetbestimmungsschritt 157 der zweite Stack-Ad- ressenoffset bestimmt. Darauf folgend wird in dem zweiten Stack-Datentypbestimmungs- schritt 159 der Datentyp des übergeordneten zweiten Stack-Programmobjekts bestimmt. Hierauf basierend wird abschließend das erste Stack-Programmobjekt als das Stack-Pro grammobjekt identifiziert, das im zweiten Speicherbereich des Stacks an einer Speicher adresse gespeichert ist, die der Zeigeradresse ZA des Zeigerobjekts entspricht.

Im Vollbezeichnungsbestimmungsschritt 113 können darauf folgend alle Bezeichnungen der übergeordneten Programmobjekte bzw. Stack-Programmobjekte und des ersten Pro grammobjekts bzw. des ersten Stack-Programmobjekts angezeigt werden, sodass eine vollständige Verschachtelungshierarchie der einzelnen Programmobjekte bzw. Stack-Pro grammobjekte des referenziellen Zeigerobjekts dargestellt werden.

Die Durchführung der einzelnen Programmobjektidentifizierungsschritte und Stack-Pro- grammobjektidentifizierungsschritte wie auch der Adressenoffsetbestimmungsschritte und Stack-Adressenoffsetbestimmungsschritte und der Datentypbestimmungsschritte und Stack-Datentypbestimmungsschritte werden analog zu den oben beschriebenen Ausfüh rungsformen vorgenommen. Die Ausführungsform in Fig. 8 unterscheidet sich von den oben beschriebenen Ausführungsformen ausschließlich in der durchgeführten Rekursion stiefe des Verfahrens 100.

Das vorliegende erfindungsgemäße Verfahren 100 ist rekursiv anwendbar auf eine belie bige Schachtelungstiefe der jeweiligen Programmobjekte PO des Programmzustands PZ. Darüber hinaus können die Programmobjekte und Stack- Programmobjekte sowohl von einem Verbundtyp, als auch von einem Feldtyp oder einem anderen Typ sein, wobei auch Kombination der genannten Datentypen möglich sind. Bezugszeichenliste

100 Verfahren

101 Ausführschritt

103 Zeigeradressenermittlungsschritt

105 Überprüfungsschritt

107 erster Adressenoffsetbestimmungsschritt

109 erster Programmobjektidentifizierungsschritt

111 Zeigerobjektidentifizierungsschritt

113 Vollbezeichnungsbestimmungsschritt

115 Anzeigeschritt

117 zweiter Programmobjektidentifizierungsschritt

119 zweiter Adressenoffsetbestimmungsschritt

121 zweiter Datentypbestimmungsschritt

123 dritter Programmobjektidentifizierungsschritt

125 dritter Adressenoffsetbestimmungsschritt

127 dritter Datentypbestimmungsschritt

129 n-ter Programmobjektidentifizierungsschritt

131 n-ter Adressenoffsetbestimmungsschritt

133 n-ter Datentypbestimmungsschritt

135 n-1-ter Programmobjektidentifizierungsschritt

137 n-1-ter Adressenoffsetbestimmungsschritt

139 n-1-ter Datentypbestimmungsschritt

141 n-2-ter Programmobjektidentifizierungsschritt

143 Rekursionsschritt

145 Stack-Strukturbestimmungsschritt

147 erster Stack-Adressenoffsetbestimmungsschritt

149 erster Stack-Programmobjektidentifizierungsschritt

151 Frameidentifizierungsschritt

153 Funktionsidentifikationsschritt

155 zweiter Stack-Programmobjektidentifizierungsschritt

157 zweiter Stack-Adressenoffsetbestimmungsschritt

159 zweiter Stack-Datentypbestimmungsschritt

161 dritter Stack-Programmobjektidentifizierungsschritt

163 dritter Stack-Adressenoffsetbestimmungsschritt

165 dritter Stack-Datentypbestimmungsschritt

167 n-ter Stack-Programmobjektidentifizierungsschritt 169 n-ter Stack-Adressenoffsetbestimmungsschritt

171 n-ter Stack-Datentypbestimmungsschritt

173 n-1-ter Stack-Programmobjektidentifizierungsschritt

175 n-1-ter Stack-Adressenoffsetbestimmungsschritt

177 n-1-ter Stack-Datentypbestimmungsschritt

179 n-2-ten Stack-Programmobjektidentifizierungsschritt

181 weiterer Rekursionsschritt

183 erster Datentypbestimmungsschritt

185 erster Stack-Datentypbestimmungsschritt

187 Auswahlschritt

189 Anpassungsschritt

191 Steuerschritt

200 Automatisierungssystem

201 Steuerung

203 Automatisierungsgeräte

205 Bussystem

207 Display

A01 erster Adressenoffset

A02 zweiter Adressenoffset

SP Speicher

SP1 erster Speicherbereich

SP2 zweiter Speicherbereich

PZ Programmzustand

PO Programmobjekt

P01 erstes Programmobjekt

P02 übergeordnetes zweites Programmobjekt

P03 übergeordnetes drittes Programmobjekt

TPO untergeordnetes Teilprogrammobjekt

SP02 erste relative Speicheradresse zweites Programmobjekt

SP03 erste relative Speicheradresse drittes Programmobjekt

SPZ erste Speicheradresse des Programmzustands

P Speicherposition

P1 erste Speicherposition P2 zweite Speicherposition

P3 dritte Speicherposition

SG Speichergröße ST Stack

ZO Zeigerobjekt ZA Zeigeradresse