EP1525530A2 - UMSETZEINRICHTUNG, AUTOMATISIERUNGSGERäT MIT EINER UMSETZEINRICHTUNG UND ENTWICKLUNGSUMGEBUNG MIT EINEM AUTOMATISIERUNGSGERäT MIT UMSETZEINRICHTUNG - Google Patents

UMSETZEINRICHTUNG, AUTOMATISIERUNGSGERäT MIT EINER UMSETZEINRICHTUNG UND ENTWICKLUNGSUMGEBUNG MIT EINEM AUTOMATISIERUNGSGERäT MIT UMSETZEINRICHTUNG

Info

Publication number
EP1525530A2
EP1525530A2 EP03783948A EP03783948A EP1525530A2 EP 1525530 A2 EP1525530 A2 EP 1525530A2 EP 03783948 A EP03783948 A EP 03783948A EP 03783948 A EP03783948 A EP 03783948A EP 1525530 A2 EP1525530 A2 EP 1525530A2
Authority
EP
European Patent Office
Prior art keywords
instruction
source code
control program
code
parameters
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
EP03783948A
Other languages
English (en)
French (fr)
Inventor
Armin Amrhein
Klaus Göbel
Ulrich Göddemeier
Bernhard Jany
Werner Kuske
Thilo Opatherny
Manfred Prechtl
Georg Rupprecht
Dietmar Schulz
Lothar Trapp
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Siemens AG
Original Assignee
Siemens AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Siemens AG filed Critical Siemens AG
Publication of EP1525530A2 publication Critical patent/EP1525530A2/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary

Definitions

  • Transfer device automation device with a transfer device and development environment with an automation device with transfer device
  • the present invention relates to the technical field of monitoring control programs, in particular such control programs as are used for the control and / or monitoring of technical processes.
  • the invention relates to a conversion device, an automation device with such a conversion device and a
  • debuggers are generally known, for example for their commissioning or maintenance.
  • a debugger it is e.g. B. possible to run a control program step by step, so that one instruction after the other is always executed from the large number of individual instructions from which a control program is composed. The effect of the execution of each individual instruction can be observed.
  • the observation option relates not only to the changes in the screen contents possibly caused by the respective instruction or to changes in the status of the technical process, but also to the contents of registers, such as B. processor registers, the respective target hardware on which the ' control program runs.
  • Such a debugger is usually used on the same target hardware as the control program itself. If the debugger is limited due to limited resources of the target hardware, such as As storage space, computing power, etc., can not be executed on the target hardware, the debugger is executed on a programming or monitoring device communicatively connected to the target hardware. The de- bugger then accesses data provided for the purpose of monitoring the control program.
  • the performance of a debugger extends from simple monitoring functions. B. only the effects of the individual instructions can be represented up to complex possibilities of influence, in which the execution of the control program z. B. can be influenced by changing individual memory or register contents.
  • a computer such as a personal computer, a programming device or the like, is used to execute the debugger.
  • a monitoring device is provided for displaying the respective data, that is to say a computer with reduced performance, for example a computer.
  • programming or monitoring devices are collectively referred to as programming devices.
  • a method for operating an automation system with a programming device and target hardware in the form of an automation device is known from EP 0 990 964 AI.
  • the target hardware provided for the control and / or monitoring of a technical process can be monitored by means of the programming device provided for operating and monitoring the automation device.
  • one or more data addresses of the control program and a code address for each data address selected for monitoring are selected on the programming device. These addresses are transmitted from the programming device to the target hardware by means of a request telegram.
  • the code address is reached, the content of the data address (es) assigned is recorded on the target hardware and transmitted to the programming device as part of a result message.
  • Such monitoring of a control program is also referred to as "remote debugging".
  • a disadvantage of known monitoring methods and / or known debuggers is that on the one hand not all information is always accessible because, for. B. the storage space of any intermediate results is not known. Furthermore, individual information - for example in the case of indirectly referenced parameters - can only be accessed with considerable effort because, with a conventional addition command of the form "add to the content of the accumulator, the content of the memory address FF03", the display of the respective memory area must be selected manually Information is not accessible at all during remote debugging, or only with significantly more effort, because remote processor debugging does not stop the processor of the target hardware executing the control program to be monitored and therefore it is not possible to "look up" the contents of individual memory addresses.
  • the invention is therefore based on the object of avoiding the disadvantages mentioned above and of specifying a possibility with which it is also possible to monitor the execution of a control program on target hardware which was not previously known.
  • the conversion device is provided for obtaining a control program which is executable or executable on a target hardware and which is based on an original code with a number of instructions.
  • the conversion device has access to a database in which a transformation rule is stored for each permitted instruction of the source code.
  • the conversion device supplements each instruction in such a way that the or each parameter which is used and / or influenced by the instruction or can be used and / or influenced can be logged.
  • the transformation regulation includes information for supplementing the instruction with regard to the logging of the respective parameters and is evaluated accordingly by the conversion device.
  • the parameters influenced by an instruction are understood in particular to be the individual operands of the respective instruction - in the case of an addition, that is, the two summands - but also register and memory contents and so-called flags, insofar as they are used or influenced in the execution of the instruction .
  • the invention is based on the knowledge that when the executable control program is obtained from the source code, which is in each case the underlying code, a source code or intermediate code obtained therefrom, all the information is available which is necessary for a later, complete monitoring of the execution of the control program.
  • the register mentioned is e.g. B. the so-called accumulator, which is often used in operations such as additions and the like.
  • the further indented passages of the pseudo code contain its additions with regard to the logging of the parameters used.
  • the transformation instruction includes the conversion of the addition command into two separate instructions.
  • the information associated with the transformation rule or contained in the transformation rule for logging the respective parameters is, for example, B.
  • B the information associated with the transformation rule or contained in the transformation rule for logging the respective parameters.
  • addition command can be executed differently on another target hardware if, for. B. Operations with three operands are permitted.
  • the addition command in a pseudo code is something like this:
  • the invention is therefore also particularly suitable for those use cases in which a source code is first transformed into an intermediate language. Based on this intermediate language as the source code, it can then be converted into a control program that can run on a specific target hardware. This ensures independence from the respective target hardware. When exchanging or upgrading a first target hardware for or to a second target hardware, only a conversion of the intermediate language into the machine code that can be executed by the respective target hardware is required. This implementation can even be carried out by the target hardware itself. After the control software has been created in a suitable programming language, the existing source code is transformed into the intermediate language. The control program in the intermediate language can be executed on the target hardware after it has been implemented.
  • the advantage of the invention thus consists, on the one hand, in the expanded monitoring options with regard to information previously not or only with considerable effort, as described above, and, on the other hand, in that, despite the most varied or previously unknown target hardware, the monitoring option of the control program running on this target hardware is retained remains.
  • automation device summarizes the hardware used to control and / or monitor the respective technical process, the target hardware.
  • the term automation device can just as a single device, such as. B. a programmable controller or the like, as well as a combination of several such devices, for. B. communicatively with each other and connected to a host computer programmable controllers with connected peripheral devices.
  • control program is the executable - z. B. in a machine code - present version of the control program.
  • this basically refers to all versions of the control program, namely the control program in source or source code, as created by a programmer in the respective programming language, the control program in an intermediate language - intermediate code - as a result of Transformation of the source code and the control program in the form suitable for execution on the target hardware as a result of a corresponding implementation of the control program in the intermediate language or as a result of a direct implementation of the source code.
  • FIG. 1 shows a development environment with an automation device as target hardware and a programming device
  • FIG. 2 shows schematically the creation of a control program
  • 3 shows a section of a source code on which the control program is based
  • Automation device 11 and programming device 12 are communicatively connected to one another via separate interfaces 13, 14 and a data transmission path 15.
  • the automation device 11 is provided in a manner known per se for controlling and / or monitoring a technical process 16 which is only shown schematically.
  • the control and / or monitoring of the technical process 16 takes place in accordance with a control program 17 executed by the automation device 11.
  • Any electrically conductive connection between the automation and programming device 11, 12 can be considered as the data transmission link 15.
  • a connection by means of optical or electromagnetic signals can also be considered as the data transmission path 15.
  • the automation device 11 is, for. B. a programmable logic controller, a process computer or otherwise Influencing the technical process 16 suitably designed standard computers.
  • the programming device 12 is usually suitable and provided for creating or modifying a source code 18 on which the control program 17 is based.
  • a separate programming device 12 is usually provided because peripherals in the form of at least one input and output device, such as a keyboard or a screen (not shown), are required to create or modify the source code 18.
  • Such periphery is usually not present on the automation device 11, since it is only required temporarily - during the creation or modification of the source code 18 - and is often also unsuitable for permanent use in harsh industrial environments. Nevertheless, there are automation devices 11 in which a programming device 12 is already integrated. The following description applies accordingly to such devices.
  • FIG. 2 schematically shows the creation of the control program 17.
  • An intermediate code 19 and the control program 17 are obtained from the source code 18.
  • the intermediate code 19 is generated by transforming the source code 18 into a meta or intermediate language.
  • the control program 17 is generated by converting 21 the intermediate code 19 into a form that can be executed on the respective target hardware, the automation device 11.
  • the source code 18 has a number of successive source code instructions 22, 23, 24, 25, the respective source code instructions 22 -25 themselves and their sequence determining the functionality of the later control program 17.
  • the source code instructions 22-25 include e.g. B. loading and transfer commands known per se, commands for executing arithmetic or logic operations, same commands, jump commands, etc. and, if necessary, compound commands.
  • the source code instruction 22 comprises a number of parameters, namely the source code parameters "a" 26, "b” 27, "c” 28 and "d" 29.
  • a multiplication part of the source code instruction 22 relates to the multiplication of the source code parameters "c "28 and” d "29.
  • An addition part of the source code instruction 22 relates to the addition of the source code parameter" b "27 and the intermediate result of the multiplication part.
  • an assignment part of the source code instruction 22 relates to the assignment of the result of the aforementioned addition to the source code parameter "a" 26.
  • a source code reference number 30 is assigned to the source code instruction 22 for the unique identification and referencing of each source code instruction 22-26.
  • the source code reference number 30 corresponds to a numbering of the source code instructions 22-26, so that each source code instruction 22-26 receives a unique source code reference number 30.
  • the intermediate code instruction 31 corresponds to the implemented functionality of the source code instruction 22 (FIG. 4).
  • the intermediate code instruction 31 is divided into two parts 32, 33, the first part 32 covering the addition part and the second part 33 covering the multiplication part of the source code instruction 22.
  • the intermediate code instruction 31 also includes an intermediate code reference number 34.
  • Source and intermediate code reference numbers 30, 34 do not necessarily have to have the same numerical value - here, for example, "117" have, however, it must be guaranteed that each source code reference number 30 is assigned exactly one intermediate code reference number 34 and vice versa. This can be done particularly easily using the same numerical value, but otherwise z. B. also achieve via a so-called look-up table. In the case of a multi-part intermediate code instruction 31, a sub-referencing 35 may also be useful. B. includes the intermediate code reference number 34 and the status of a counter incremented for each part 32, 33 of the intermediate code instruction 31. In the same way, it can be provided that for each part 32, 33 of the intermediate code instruction 31, a separate intermediate code reference number 34 is assigned and which intermediate code reference number 34 and which source code reference number 30 belong together are stored.
  • an intermediate code parameter 36, 37, 38, 39 corresponds to the corresponding source code parameter 26-28. To distinguish it from the source code parameters 26-28, the intermediate code parameters 36-39 are shown with capital letters - "A” 36, "B” 37, “C” 38, "D” 39 -.
  • any intermediate results are referred to as indirect parameters 40. These are designated with the Greek letter “ ⁇ " - and as the only interim result with the index "1".
  • the indirect parameters include 40 z. B. also so-called flags (not shown). This saves additional information that is generated when individual instructions are executed. Such additional information relates e.g. B. on one
  • the logging of the parameters to be monitored is shown in FIG. 5 by two logging instructions 41, 42.
  • Each part 32, 33 of the intermediate code instruction 31 is supplemented by a logging instruction 41, 42.
  • the intermediate code instruction 31 itself is thus also supplemented by the logging instructions 41, 42.
  • the logging instructions 41, 42 are not part of the intermediate code 19 but already part of the executable control program 17, because the logging instructions are generated with or after the implementation of the intermediate code instruction 31 into an executable form.
  • the logging comprises, as character string 43, the intermediate code reference number 34 in order to enable the assignment of the logged parameters to the respective intermediate code instruction 31 in which the parameters were influenced or could be influenced, as well as the intermediate code parameters 36-39 used and the intermediate result 40 used.
  • the possibly. required logging of flags is not taken into account in the description above. However, their logging is carried out analogously to the logging of the parameters used in each case.
  • the solution contained in solution 31 in advance stipulates which flags, if necessary, to be influenced . When each operation is implemented, all flags that can be influenced are logged accordingly.
  • FIG 6 shows a memory 50 of the automation device 11 representing the target hardware.
  • the control program 17 and at least sections of the intermediate code 19 on which the control program 17 is based are stored in the memory 50.
  • the executable control program 17 is obtained by means of a conversion device 51 implemented as software and therefore also stored in the memory 50.
  • the functionality of the conversion device 51 can alternatively also be implemented as hardware, in which case the corresponding.
  • Automation device 11 z. B. a corresponding ASIC (not shown) is provided.
  • the control program 17 is based on an original code - according to the exemplary description of the intermediate code 19 based on the source code 18 5.
  • the source code 18 comprises a number of instructions 22-25 (FIG. 3), wherein at least one instruction 31 (FIG. 5) intermediate code 19 belongs to each instruction 22 -25 in the source code 18.
  • control program 17 can be monitored in the manner described above, logging of the parameters used and / or influenced or usable and / or influenceable is provided.
  • the logging is carried out by means of the logging instructions 41, 42 (FIG. 5) that are inserted into the control program and generated when the or each intermediate code instruction 31 is implemented.
  • the conversion device 51 has access to a database 52.
  • a transformation rule 53 (only shown schematically) is stored in this for each permissible intermediate code instruction 31.
  • the database 52 thus includes a transformation rule 53 for the transformation of assignment commands, a transformation rule 53 for the transformation of addition commands, a transformation rule 53 for the transformation of multiplication commands, etc. , Etc .
  • the conversion device 51 has means 54, 55, 56 for supplementing each intermediate code instruction 31 with one or more logging instructions 41, 42, so that the or each parameter 36 -40 is used and / or influenced by the intermediate code instruction 31 or can be used and / or influenced, can be logged.
  • the means 54, 55, 56 mentioned are implemented as software functionality and correspondingly represented as function blocks, but in individual cases can also be implemented as hardware - in the form of an ASIC (not shown).
  • the means 54, 55, 56 comprise a first means 54 for retrieving and analyzing in each case an instruction of the source code. des, the respective intermediate code instruction 31.
  • To analyze the or each instruction z. B. uses the functionality of a so-called parser. After analyzing the respective intermediate code instruction 31, it is clear whether, for. B. there is an instruction with an assignment command or an instruction with an addition command, so that the corresponding transformation rule 53 is then called up from the database 52 with a second means 55 and the intermediate code instruction 31 is transformed.
  • This second means 55 also supplements the respective intermediate code instruction 31 in such a way that the or each parameter 36-40, which is used and / or influenced by the intermediate code instruction 31 or can be used and / or influenced, can be logged. I.e.
  • the second means 55 supplements the respective intermediate code instruction 31 with the logging instructions 41, 42 (FIG. 5).
  • the logging instructions 41, 42 can be inserted in the control program 17 before or after the executable counterpart of the respective instruction, depending on when a parameter 36-40 is used.
  • For instructions of the form "A A + B" it is also z.
  • a third means 56 is provided in order to integrate the transformed - ie executable form - of the instruction together with the logging instructions 41, 42 into the control program 17.
  • the added logging instructions 41, 42 are executed before or after each instruction.
  • the parameters 36-40 logged in this way are transmitted to the programming device 12 via the interfaces 13, 14 and the data transmission path 15 and can be displayed there together with the underlying source code 18 for monitoring and diagnostic purposes.
  • the assignment of the logged parameters 36-40 to the original source code instructions 22-25 takes place by means of the source code reference number 30 and the character string 43 logged by each logging instruction 41, 42, which corresponds to the intermediate code reference number 34.
  • the first logged value represents the value of the indirect parameter 40 and thus the intermediate result of the multiplication part of the underlying source code instruction 22.
  • the second and third logged values represent the value of the intermediate code parameters "C" 38 and "D” 39 and thus correspondingly the value of the corresponding source code parameters "c" 28 and "d” 29, etc.
  • the result is a character string (string) in which "117” again represents the intermediate code reference number 34 as character string 43.
  • the characters (chains) "oci”, “C”, and “D” as declarative identifiers allow the assignment of the logged values to the parameters to be monitored.
  • the logged parameters 36-40 are transmitted to the interface 14 of the automation device 11 and from there to the programming device 12. If no programming device 12 is connected to the automation device 11, the transmission of the logged parameters is omitted
  • the transmission of the logged parameters 36-40 begins when a prerable source or intermediate code reference number 30, 34 is reached and when another one is reached specifiable source or intermediate code reference number 30, 34 ends.
  • selectable sections of the control program 17 can be specifically examined.
  • means are not shown that z. B. Are part of the interface 14 or the associated interface interface and filter the logged parameters 36-40 such that only those parameters 36-40 are transmitted to the programming device 12 via the interface 14 that were logged for such instructions that are in the range of the given source or intermediate code reference numbers 30, 34.
  • each instruction of the source code is supplemented by logging instructions 41, 42 when the control program is generated from an original code - a source code or an intermediate code based on the source code.
  • the logging instructions 41, 42 effect the logging of all parameters 36-40 which can be used and / or influenced by the respective instruction.
  • the logging instructions 41, 42 are supplemented on the basis of information which is part of a transformation rule 53 for transforming the respective instruction into an executable form.
  • a transformation rule 53 for transforming the respective instruction into an executable form.
  • These parameters 3 6 -40 and the information required to access them are part of the logging instructions 41, 42. This makes it possible to monitor the execution of a control program 17 on the basis of the logged parameters 36-40, regardless of the respective target hardware, since the respective value of the parameters 36-40 is logged at any time and no access, for example by means of a programming device 12, to register contents of the target hardware is required is.

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Programmable Controllers (AREA)
  • Testing And Monitoring For Control Systems (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Zum Gewinnen eines auf einer Zielhardware ablaufenden oder ablauffähigen Steuerungsprogramms (17), dem ein Ursprungscode mit einer Anzahl von Anweisungen (22, 31) zugrunde liegt, vorgesehene Umsetzeinrichtung (51) sowie Automatisierungsgerät (11) mit einer solchen Umsetzeinrichtung (51) und Entwicklungsumgebung mit einem solchen Automatisierungsgerät (11) mit einem Zugriff auf eine Datenbasis (52) in der für jede Anweisung (22, 31) eine Transformationsvorschrift (53) hinterlegt ist, mit Mitteln (54, 55, 56) zum Ergänzen jeder Anweisung (22, 31) derart, dass der oder jeder Parameter (36-40), der von der Anweisung (22, 31) verwendet und/oder beeinflusst wird oder verwendbar und/oder beeinflussbar ist, protokollierbar ist, wobei die Transformationsvorschrift (53) Informationen zum Ergänzen der Anweisung (22, 31) im Hinblick auf die Protokollierung der jeweiligen Parameter (36-40) umfasst.

Description

Beschreibung
Umsetzeinrichtung, Automatisierungsgerät mit einer Umsetzeinrichtung und Entwicklungsumcjebung mit einem Automatisierungsgerät mit Umsetzeinrichtung
Die vorliegende Erfindung betrifft das technische Gebiet der Überwachung von Steuerungspr"ogrammen, insbesondere solchen Steuerungsprogrammen, wie sie zur Steuerung und/oder Überwachung technischer Prozesse eingesetzt werden. Dabei bezieht sich die Erfindung auf eine Umsetzeinrichtung, ein Automati- sierungsgerät mit einer solchen Umsetzeinrichtung und eine
Entwicklungsumgebung mit einem solchen Automatisierungsgerät.
Zur Überwachung von Steuerungsprogrammen, z. B. zu deren Inbetriebnahme oder Wartung, sind so genannte Debugger all- gemein bekannt. Mit einem Debugger ist es z. B. möglich, ein Steuerungsprogramm Schritt für Schritt ablaufen zu lassen, so dass aus der Vielzahl von einzelnen Anweisungen, aus der ein Steuerungsprogramm zusammengestellt ist, immer eine Anweisung nach der anderen ausgeführt wird. Dabei kann die Auswirkung der Ausführung jeder einzelnen Anweisung beobachtet werden.
Die Beobachtungsmöglichkeit bezieht sich dabei nicht nur auf die evtl. von der jeweiligen Anweisung verursachten Änderungen des Bildschirminhaltes oder auf Zustandsänderungen im technischen Prozess sondern auch auf die Inhalte von Regis- tern, wie z. B. Prozessorregistern, der jeweiligen Zielhardware, auf der das ' Steuerungsprogramm zum Ablauf kommt.
Ein solcher Debugger wird üblicherweise auf der gleichen Zielhardware wie das Steuerungsprogramm selbst eingesetzt. Wenn der Debugger aufgrund begrenzter Ressourcen der Ziel- hardware, wie z. B. Speicherplatz, Rechenleistung, etc., nicht auf der Zielhardware ausgeführt werden kann, wird der Debugger auf einem mit der Zielhardware kommunikativ verbundenen Programmier- oder Überwachungsgerät ausgeführt. Der De- bugger greift dann auf zum Zwecke der Überwachung des Steuerungsprogramms bereit gestellte Daten zu.
Die Leistungsfähigkeit eines Debuggers erstreckt sich von einfachen Überwachungsfunktionen, bei der z. B. nur die Auswirkungen der einzelnen Anweisungen darstellbar sind, bis hin zu komplexen Einflussmöglichkeiten, bei denen der Ablauf des Steuerungsprogramms z. B. durch Änderung einzelner Speicheroder Registerinhalte beeinflusst werden kann. Für solche kom- plexen Funktionen wird zum Ausführen des Debuggers ein Computer, wie ein Personal Computer, ein Programmiergerät oder dergleichen verwendet. Für einfache Überwachungsfunktionen ist dagegen eine zum Anzeigen der jeweiligen Daten vorgesehene Überwachungseinrichtung, also ein Computer mit reduzier- ter Leistungsfähigkeit, z. B. ohne Speichermedien und Eingabemöglichkeiten, und mindestens einem Ausgabegerät, wie einem Bildschirm oder Drucker, ausreichend. Im Folgenden werden solche Programmier- oder Überwachungsgeräte zusammenfassend als Programmiergerät bezeichnet.
Aus der EP 0 990 964 AI ist ein Verfahren zum Betrieb eines Automatisierungssystems mit einem Programmiergerät und einer Zielhardware in Form eines Automatisierungsgerätes bekannt . Durch das Verfahren ist die zur Steuerung und/oder Überwa- chung eines technischen Prozesses vorgesehene Zielhardware mittels des zum Bedienen und Beobachten des Automat isierungs- gerätes vorgesehenen Programmiergerätes überwachbar . Dazu ist vorgesehen, dass am Programmiergerät eine oder mehrere Datenadressen des Steuerungsprogramms und für j ede zur Überwachung ausgewählte Datenadresse eine Codeadresse ausgewählt werden. Diese Adressen werden mittels eines Anforderungstelegramms vom Programmiergerät an die Zielhardware übermittelt . Auf der Zielhardware wird bei Erreichen der Codeadresse der Inhalt der j eweils zugeordneten Datenadresse (n) aufgezeichnet und im Rahmen eines Ergebni stelegra ms an das Programmiergerät übermittelt . Bei einer solchen Überwachung eines Steuerungsprogramms spricht man auch vom so genannten „Remote-Debugging" . Nachteilig bei bekannten Überwachungsverfahren und/oder bekannten Debuggern ist j edoch, dass zum einen nicht immer sämtliche Informationen zugänglich sind, weil z . B . der Speicherplatz eventueller Zwischenergebnisse nicht bekannt ist . Des Weiteren sind einzelne Informationen - etwa bei indirekt ref erenzierten Parametern - nur mit erheblichem Aufwand zugänglich, weil bei einem üblichen Additionsbefehl der Form „addiere zum Inhalt des Akkumulators den Inhalt der Speicheradresse FF03 " die Anzeige des j eweiligen Speicherbeireiches manuell ausgewählt werden muss . Solche Informationen sind beim Remote-Debugging gar nicht oder nur mit nochmal s deutlich erhöhtem Aufwand zugänglich, weil beim Remote-Debugging der das zu überwachende Steuerungsprogramm ausführende Prozes sor der Zielhardware nicht angehalten wird und damit ein "Nachschlagen" des Inhalts einzelner Speicheradressen nicht möglich ist .
Schließlich ist beim Einsatz von Steuerungsprogrammen, die zum Einsatz auf unterschiedlicher Zielhardware vorge sehen sind, die Struktur und das Leistungsvermögen der tat sächli chen Zielhardware nicht bekannt . Ein und dasselbe St euerungsprogramm kann also auf einer Zielhardware mit einem Standard- mi -troprozessor mit z . B . acht Prozessorregistern oder auf einer Zielhardware mit einem speziellen ASIC anstelle des Mik- rop-trozessors mit einer Vielzahl von Spezialregistern ausgeführt werden . Naturgemäß werden bei einer Ausführung z . B . eines Additionsbefehls des Steuerungsprogramms auf der Ziel- hard are mit dem Mikroprozessor andere Register beeinflusst als auf der Zielhardware mit dem ASIC . Auf Seiten de s Über- wachungs- oder Programmiergerätes zum Überwachen der- Ausführung des Steuerungsprogramm.es ist damit nicht bekannt , welche Register der Zielhardware beim Ausführen des Additionsbefehls verwendet oder beeinflusst werden . Tatsächlich ist nicht einmal bekannt , wie die j eweilige Zielhardware den Additionsbe- fehl überhaupt ausführt . Unterschiede können sich ergeben, wenn z . B . der Mikroprozessor maximal zur direkten Ausführung von Additionen der Inhalte von Registern mit einer Breite von zweiunddreißig Bit , der: ASIC aber zur direkten Ausführung von Additionen der Inhalte -von Registern mit einer Breite von vierundsechzig Bit in der Lage ist . Bei der Ausführung des Additionsbefehls muss e ine Addition von Parametern entsprechender Größe in zwei Teiladditionen zerlegt werden, während der ASIC die Addition direkt ausführen kann .
Der Erfindung liegt daher die Aufgabe zugrunde , die oben ge- nannten Nachteile zu vermeiden und eine Möglichkeit anzugeben, mit der auch die Überwachung der Ausführung eines Steue- rungsprogramms auf einer vorher nicht bekannten Zielhardware durchführbar ist .
Diese Aufgabe wird erf i ndungsgemäß mit einer Umsetzeinrichtung mit den Merkmalen des Anspruchs 1 gelöst . Die Umsetzeinrichtung ist zum Gewinnen eines auf einer Zielhardware ablaufenden oder ablauf fähigen Steuerungsprogramms , dem ein Ursprungscode mit einer Anzahl von Anweisungen zugrunde l iegt , vorgesehen . Die Umsetze inrichtung hat zum Gewinnen des Steuerungsprogramms Zugriff auf eine Datenbasis in der für j ede zulässige Anweisung des Ursprungscodes eine Transformat ions- vorschrift hinterlegt i st . Die Umsetzeinrichtung ergänzt j ede Anweisung derart , dass der oder j eder Parameter , der von der Anweisung verwendet und/oder beeinflusst wird oder verwendbar und/oder beeinflussbar ist , protokollierbar ist . Die Trans formationsvorschrift umfasst dazu Informationen zum Ergänzen der Anweisung im Hinbl ick auf die Protokollierung der j ewei ligen Parameter und wird von der Umsetzeinrichtung entspre- chend ausgewertet . Als von einer Anweisung beeinflusste Parameter werden insbesondere die einzelnen Operanden der j ewei- ligen Anweisung - bei einer Addition also die beiden Summanden - aber auch Register- und Speicherinhalte sowie so genannte Flags , soweit sie bei der Ausführung der Anweisung verwendet oder beeinflusst werden, verstanden . Die Erfindung geht von der Erkenntnis aus , dass beim Gewinnen des ausführbaren Steuerungsprogramms aus dem j eweils zugrunde liegenden Ursprungscode , einem Quellcode oder daraus gewonnenen Zwischencode , sämtliche Informationen vorliegen, die für eine spätere , vollständige Überwachung der Ausführung des Steuerungsprogramms notwendig sin .
Wenn sich eine Addition zweier Parameter auf zwei im Speicher hinterlegte ganzzahlige Werte bezieht , lautet der Additions- bef hl " a+b" in einem Pseudocode etwa wie folgt :
Lade den Inhalt der Speicherstelle an der der Parameter " a" gespeichert ist , in ein Register .
Addiere zum Inhalt dieses Registers den Inhalt der Speicherste lle an der der Parameter "b" gespeichert ist .
Nach der Ausführung dieser beiden Befehle steht die Summe der Parameter " a " und "b " in dem genannten Register . Das genannte Register ist z . B . der so genannte Akkumulator , der bei Operat ionen wie Additionen und dergleichen häufig verwendet wird .
Anhand des oben exemplarisch dargestellten Pseudocodes wird deutlich, dass z . B . der Parameter "b" nicht direkt überwachbar ist . Nach der Ausführung der ersten Zeile des Pseudocodes steht der Wert des Parameters "a" im Register . Der Inhalt des Registers könnte zu Überwachungszwecken angezeigt werden. Nach der Ausführung der zweiten Zeile des Pseudocodes steht aber bereits die Summe der beiden Parameter "a" und "b" im
Register . Der Parameter "b" ist damit nicht direkt überwaσh- bar . Ein Zugriff auf dessen Wert i st nur möglich, wenn der Inhalt der Speicherstelle, an der der Parameter "b" gespeichert ist , nachgeschlagen wird. Dies ist mit erheblichem Auf- wand verbunden, wobei sich der Aufwand nochmals merklich er- höht, wenn z. B. eine indirekte Adressierung der jeweiligen Speicherstellen verwendet wird.
Da jedoch beim Gewinnen des Steuerungsprogramms sämtliche zu dessen späterer Überwachung benötigte Informationen vorliegen, ist vorgesehen, dass der oder jeder Parameter, der von der Anweisung verwendet und/oder beeinflusst wird oder verwendbar und/oder beeinflussbar ist, protokollierbar ist. Dazu erfolgt eine entsprechende Ergänzung der einzelnen Anweisun- gen des dem Steuerungsprogramm zugrundeliegenden Ursprungs- codes. Dies soll für den oben verwendeten Pseudocode als Ursprungscode exemplarisch fortgeführt werden:
Lade den Inhalt der Speicherstelle an der der Parameter "a" gespeichert ist, in ein Register und protokolliere den Inhalt des Registers.
Addiere zum Inhalt des Registers den Inhalt der Speicherstelle an der der Parameter "b" gespeichert ist und protokolliere den Inhalt der Speicherstelle an der der Parameter "b" gespeichert ist und protokolliere den Inhalt des Registers.
Die weiter eingerückten Passagen des Pseudocodes enthalten dessen Ergänzungen im Hinblick auf die Protokollierung der verwendeten Parameter.
Aufgrund der Transformationsvorschrift zur Umsetzung der jeweiligen Anweisung des Ursprungscodes ist bekannt, wie die Daten der einzelnen von der Anweisung beeinflussten Parameter erreichbar sind. Im vorstehenden Beispiel umfasst die Trans - formationsvorschrift die Umsetzung des Additionsbefehls in zwei getrennte Anweisungen. Den der Transformationsvorschrift zugeordneten oder in der Transformationsvorschrift enthalte- nen Informationen zur Protokollierung der jeweiligen Parameter ist z. B. entnehmbar, dass bei einer Addition der Wert des ersten Summanden, des Parameters "a", nicht erneut im Speicher nachgeschlagen werden muss, sondern dass direkt der Inhalt des Registers protokolliert werden kann, weil in das Register der Wert des Parameters "a" kopiert wurde. Hinsichtlich des eigentlichen Additionsteils ist den ergänzenden Informationen entnehmbar, dass der Wert des Parameters " b" zu keinem Zeitpunkt erreichbar in einem Register steht. Die Protokollierung bezieht sich entsprechend auf die Speicherstelle, an der der Parameter "b" gespeichert ist.
L O
Auf einer anderen Zielhardware kann derselbe Additionsbefehl anders ausgeführt werden, wenn z. B. Operationen mit drei Operanden zugelassen sind. Für diese Zielhardware lautet der Additionsbefehl in einem Pseudocode etwa wie folgt:
15
Addiere die Inhalte der Speicherstellen an der der Parameter "a" und der Parameter "b" gespeichert sind und lade das Ergebnis in ein Register.
0 Bei dieser Variante ist zu keinem Zeitpunkt einer der Parameter "a", "b" in einem Register gespeichert. Die Protokollierung bezieht sich daher in jedem Fall auf die jeweiligen Speicherstellen. Die ergänzte Anweisung lautet damit z. B. wie folgt: 5
Addiere die Inhalte der Speicherstellen an der der Parameter "a" und der Parameter "b" gespeichert sind und lade das Ergebnis in ein Register und protokolliere den Inhalt der Speicherstellen an der die 0 Parameter "a" und "b" gespeichert sind und protokolliere den Inhalt des Registers.
Damit ist ersichtlich, dass die Möglichkeit der Überwachung des Steuerungsprogramms vollkommen unabhängig davon wird, wie 5 die jeweils beeinflussten oder beeinflussbaren Parameter verwendet werden. Um die Überwachung des Steuerungsprogramms zu ermöglichen, ist damit eine Kenntnis der Funktionalität der Zielhardware und sogar eine Kenntnis der Zielhardware selbst nicht erforderlich.
Daher eignet sich die Erfindung auch besonders für solche Anwendungsfälle, bei denen ein Quellcode zunächst in eine Zwischensprache transformiert wird. Ausgehend von dieser Zwischensprache als Ursprungscode ist dann eine Umsetzung in ein auf einer bestimmten Zielhardware ablauffähiges Steue- rungsprogramm möglich. Damit wird eine Unabhängigkeit von der jeweiligen Zielhardware erreicht. Bei einem Austausch oder bei einer Aufrüstung einer ersten Zielhardware gegen oder auf eine zweite Zielhardware ist nur noch eine Umsetzung der Zwischensprache in den durch die jeweilige Zielhardware ausführ- baren Maschinencode er orderlich. Diese Umsetzung kann ggf. sogar durch die jeweilige Zielhardware selbst vorgenommen werden. Nach der Erstellung der Steuerungssoftware in einer geeigneten Programmiersprache wird der damit vorliegende Quellcode in die Zwischensprache transformiert. Das Steue- rungsprogramm in der Zwischensprache kann nach einer auf die jeweilige Zielhardware abgestellten Umsetzung auf dieser zur Ausführung gebracht werden.
Der Vorteil der Erfindung besteht damit einerseits in den erweiterten Überwachungsmöglichkeiten im Hinblick auf bisher nicht oder nur mit erheblichem Aufwand zugängliche Informationen wie oben beschrieben und andererseits darin, dass trotz unterschiedlichster oder im voraus nicht bekannter Zielhardware die Überwachungsmöglichkeit des auf dieser Ziel- hardware ablaufenden Steuerungsprogramms erhalten bleibt.
Im Zusammenhang mit der Erfindung bzw. bevorzugten Ausführungsformen der Erfindung werden nachfolgende Begriffe wie folgt verwendet. Unter dem Begriff "Automatisierungsgerät" wird die zur Steuerung und/oder Überwachung des jeweiligen technischen Prozesses verwendete Hardware, die Zielhardware, zusammengefasst . Der Begriff Automatisierungsgerät kann dabei genauso ein einzelnes Gerät, wie z. B. eine speicherprogrammierbare Steuerung oder dergleichen, wie auch einen Verbund mehrerer solcher Geräte, z. B. kommunikativ miteinander und mit einem Leitrechner verbundene speicherprogrammierbare Steuerungen mit daran jeweils angeschlossenen dezentralen Peripheriegeräten, bezeichnen.
Mit dem Begriff "Steuerungsprogramm" wird zunächst die ausführbare - also z. B. in einem Maschinencode - vorliegende Version des Steuerungsprogramms bezeichnet. Bei einer allgemeineren Verwendung des Begriffes Steuerungsprogramms bezieht sich dieser jedoch grundsätzlich auf alle Ausprägungen des Steuerungsprogramms, namentlich das Steuerungsprogramm im Quell- oder Sourcecode, wie es von einem Programmierer in der jeweiligen Programmiersprache erstellt wird, das Steuerungsprogramm in einer Zwischensprache - Zwischencode - als Ergebnis der Transformation des Sourcecodes und das Steuerungsprogramm in der zum Ablauf auf der Zielhardware geeigneten Form als Ergebnis einer entsprechenden Umsetzung des Steue- rungsprogramms in der Zwischensprache oder als Ergebnis einer direkten Umsetzung des Quellcodes.
Vorteilhafte Ausgestaltungen der Erfindung sind Gegenstand der Unteransprüche.
Nachfolgend wird ein Ausführungsbeispiel der Erfindung anhand der Zei chnung näher erläutert . Einander entsprechende Gegenstände oder Elemente sind in allen Figuren mit den gleichen Bezugs zeichen versehen .
Darin zeigen
FIG 1 eine Entwicklungsumgebung mit einem Automatisierungs- gerät als Zielhardware und einem Programmiergerät,
FIG 2 schematisch die Erstellung eines Steuerungsprogramms, FIG 3 einen Ausschnitt aus einem dem Steuerungsprogramm zugrunde liegenden Quellcode,
FIG 4 einen kombinierten Additions- und Zuweisungsbefehl als Beispiel für eine Anweisung im Quellcode,
FIG 5 eine auf dem kombinierten Additions- und Zuweisungsbefehl basierende Zwischencodeanweisung und
FIG 6 eine Umsetzeinrichtung zur Umsetzung der oder jeder
Zwischencodeanweisung in eine ausführbare Form und zu deren Ergänzung derart, dass der oder jeder Parameter, der von der Anweisung verwendet und/oder beeinflusst wird oder verwendbar und/oder beeinflussbar ist, protokollierbar ist.
FIG 1 zeigt eine Entwicklungsumgebung 10 mit einem Automatisierungsgerät 11 als Zielhardware und einem Programmiergerät 12. Automatisierungsgerät 11 und Programmiergerät 12 sind über jeweils eigene Schnittstellen 13, 14 und eine Datenübertragungsstrecke 15 kommunikativ miteinander verbunden. Das Automatisierungsgerät 11 ist in an sich bekannter Weise zur Steuerung und/oder Überwachung eines nur schematisch dargestellten technischen Prozesses 16 vorgesehen. Die Steuerung und/oder Überwachung des technischen Prozesses 16 erfolgt gemäß einem durch das Automatisierungsgerät 11 ausgeführten Steuerungsprogramm 17. Als Datenübertragungsstrecke 15 kommt jede elektrisch leitende Verbindung zwischen Automatisie- rungs- und Programmiergerät 11, 12 in Betracht, also z. B. eine serielle Verbindung oder ein Bus (- segment) , insbesondere ein Feldbus (-segment) . Daneben kommt als Datenübertragungs- strecke 15 ebenso eine Verbindung mittels optischer oder elektromagnetischer Signale in Betracht, also z. B. ein Glasfaserkabel oder dergleichen bzw. eine (Rieht-) Funkstrecke .
Das Automatisierungsgerät 11 ist z. B. eine speicherprogrammierbare Steuerung, ein Prozessrechner oder ein sonst zur Beeinflussung des technischen Prozesses 16 geeignet ausgestalteter Standardcomputer . Das Programmiergerät 12 ist üblicherweise zum Erstellen oder Modifizieren eines dem Steuerungsprogramm 17 zugrundeliegenden Quellcodes 18 geeignet und vorgesehen . Ein separates Programmiergerät 12 ist üblicherweise deswegen vorgesehen, weil zum Erstellen oder Modifizieren des Quellcodes 18 Peripherie in Form j eweils mindestens eines Ein- und Ausgabegeräte s , wie einer Tastatur oder eines Bildschirms (nicht dargestel lt ) , erforderlich sind . Solche Peripherie ist am Automatisi erungsgerät 11 üblicherweise nicht vorhanden, da sie nur zeitweise - während des Erstel- lens oder Modif izierens des Quellcodes 18 - benötigt wird und häufig auch nicht für den dauerhaften Verbleib in rauhen Industrieumgebungen geeignet i st . Trotzdem gibt es Automatisie- rungsgeräte 11 , in die ein Programmiergerät 12 bereits integriert ist . Für solche Geräte gilt die nachfolgende Beschreibung entsprechend .
FIG 2 zeigt schematisch die Erstellung des Steuerungspro- gramms 17 . Aus dem Quellcode 18 wird ein Zwischencode 19 und aus diesem das Steuerungsprogramm 17 gewonnen . Die Erzeugung des Zwischencodes 19 erfolgt durch Transformation 20 des Quellcodes 18 in eine Meta- oder Zwischensprache . Die Erzeugung des Steuerungsprogramms 17 erfolgt durch Umsetzung 21 des Zwischencodes 19 in eine auf der j eweiligen Zielhardware, dem Automatisierungsgerät 11 , ausführbare Form.
FIG 3 zeigt schematisch einen Ausschnitt aus dem dem Steuerungsprogramm 17 zugrunde liegenden Quellcode 18 . Der Quell- code 18 weist in an sich bekannter Weise eine Anzahl aufeinander folgender Quell Codeanweisungen 22 , 23 , 24 , 25 auf , wobei die j eweiligen Quellcodeanweisungen 22 -25 selbst und deren Abfolge die Funktional ität des späteren Steuerungsprogramms 17 festlegen . Die Quell Codeanweisungen 22 -25 umfassen z . B . an sich bekannte Lade - und Transferbefehle , Befehle zur Ausführung arithmetischer oder logischer Verknüpfungen, Ver- gleichsbefehle, Sprungbefehle, etc. sowie daraus ggf . zusammengesetzte Befehle .
FIG 4 zeigt als Beispiel für eine Quellcodeanweisung 22-25 eine Quellcodeanweisung 22 mit einem kombinierten Additions-, Multiplikations- und Zuweisungsbefehl "a=b+cxd". Die Quell - Codeanweisung 22 umf asst eine Anzahl von Parametern, nämlich die Quellcodeparameter "a" 26, "b" 27, "c" 28 und "d" 29. Ein Multiplikationsteil der Quellcodeanweisung 22 bezieht sich auf die Multiplika ion der Quellcodeparameter "c" 28 und "d" 29. Ein Additionsteil der Quellcodeanweisung 22 bezieht sich auf die Addition des Quellcodeparameters "b" 27 und des Zwischenergebnisses des Multiplikationsteils. Schließlich bezieht sich ein Zuweisungsteil der Quellcodeanweisung 22 auf die Zuweisung des Ergebnisses der zuvor genannten Addition an den Quell codeparameter "a" 26.
Zur eindeutigen Identifizierung und Referenzierung j eder Quell Codeanweisung 22-26 ist der Quellcodeanweisung 22 eine Quellcoderef renznummer 30 zugeordnet. Die Quellcodereferenznummer 30 entspricht im einfachsten Fall einer Numerierung der Quellcodeanweisungen 22-26, so dass jede Quellcodeanweisung 22-26 eine eindeutige Quellcodereferenznummer 30 erhält.
FIG 5 zeigt als Teil des Zwischencodes 19 eine Zwischencodeanweisung 31 in der Zwischensprache. Die Zwischencodeanweisung 31 entspricht hinsichtlich der realisierten Funktionalität der Quell cod anweisung 22 (FIG 4) . Die Zwischencodeanweisung 31 zerfällt in zwei Teile 32, 33, wobei der erste Teil 32 den Additionsteil und der zweite Teil 33 den Multiplikationsteil der Quellcodeanweisung 22 abdeckt. Zur Zuordnung der Zwischencodeanweisung 31 zur korrespondierenden Quellcodeanweisung 22 umfasst auch die Zwischencodeanweisung 31 eine Zwischencoderef erenznummer 34.
Quell- und Zwischencoderef erenznummer 30, 34 müssen nicht notwendig den gleichen Zahlenwert - hier beispielhaft "117" haben, es muss allerdings gewährleistet sein, das jeder Quellcodereferenznummer 30 genau eine Zwischencodereferenznummer 34 zugeordnet ist und umgekehrt . Dies lässt sich besonders einfach über einen jeweils gleiche Zahlenwert, an- sonsten aber z. B. auch über eine so genannte Look-Up Tabelle erreichen. Bei einer mehrteiligen Zwischencodeanweisung 31 kann darüber hinaus eine Unterreferenzierung 35 sinnvoll sein, die z. B. die Zwischencodereferenznummer 34 und den Stand eines für jeden Teil 32, 33 der Zwischencodeanweisung 31 inkrementierten Zählers umfasst. Genauso kann vorgesehen sein, dass für jeden Teil 32, 33 der Zwischencodeanweisung 31 eine eigene Zwischencodereferenznummer 34 vergeben wird und jeweils gespeichert wird, welche Zwischencodereferenznummern 34 und welche Quellcodereferenznummer 30 zusammen gehören.
In der Zwischencodeanweisung 31 entspricht jeweils ein Zwi- schencodeparameter 36, 37, 38, 39 dem korrespondierenden Quellcodeparameter 26-28. Zur Unterscheidung von den Quellcodeparametern 26-28 werden die Zwischencodeparameter 36-39 mit Großbuchstaben - "A" 36, "B" 37, "C" 38, "D" 39 - dargestellt .
Zu vollständigen Überwachung der Ausführung der exemplarisch dargestellten Zwischencodeanweisung 31 ist eine Protokollie- rung sämtlicher durch die Zwischencodeanweisung 31 beein- flusster Parameter erforderlich. Zur Unterscheidung werden dabei neben den Zwischencodeparametern "A" 36, "B" 37, "C" 38, "D" 39 eventuelle Zwischenergebnisse als indirekte Parameter 40 bezeichnet. Diese sind mit dem griechischen Buchsta- ben "α" - und als einziges Zwischenergebnis mit dem Index "1" - bezeichnet. Darüber hinaus gehören zu den indirekten Parametern 40 z. B. auch so genannte Flags (nicht dargestellt) . Damit werden Zusatzinformationen, die bei der Ausführung einzelner Anweisungen erzeugt werden, gespeichert. Solche Zusatzinformationen beziehen sich z. B. auf einen
Registerüberlauf, oder auf ein nicht definiertes Ergebnis - wie etwa beim Ziehen der Quadratwurzel aus einer negativen Zahl . Beide Arten von Parametern müssen für die Überwachung zugänglich sein und werden daher entsprechend protokolliert. Im Folgenden werden die Zwischencodeparameter 36-^39 und evtl. indirekte Parameter 40 zusammenfassend kurz als Parameter bezeichnet.
Wenn von der "Ausführung" einer Quellcodeanweisung 22 oder der "Ausführung" einer Zwischencodeanweisung 31 die Rede ist, ist damit selbstverständlich stets die Ausführung der ent- sprechenden Anweisung im Steuerungsprogramm 17 gemeint, denn nur das Steuerungsprogramm 17 umfasst tatsächlich ausführbaren Code. Da jeder ausführbaren Anweisung aber eine entsprechende Anweisung im Ursprungscode, nämlich die jeweilige Quell- oder Zwischencodeanweisung 22, 31 zugrunde liegt, wird verkürzt auch von der "Ausführung" dieser Anweisungen gesprochen.
Die Protokollierung der zu überwachenden Parameter ist in FIG 5 durch zwei Protokollierungsanweisungen 41, 42 darge- stellt. Jeder Teil 32, 33 der Zwischencodeanweisung 31 ist durch jeweils eine Protokollierungsanweisung 41, 42 ergänzt. Damit ist auch die Zwischencodeanweisung 31 selbst durch die Protokollierungsanweisungen 41, 42 ergänzt. Die Protokollierungsanweisungen 41, 42 sind dabei aber nicht Teil des Zwi- schencodes 19 sondern bereits Teil des ausführbaren Steuerungsprogramms 17, denn die Protokollierungsanweisungen werden mit oder nach der Umsetzung der Zwischencodeanweisung 31 in eine ausführbare Form erzeugt .
Die Protokollierung umfasst als Zeichenkette 43 die Zwischencodereferenznummer 34 um die Zuordnung der protokollierten Parameter zu der jeweiligen Zwischencodeanweisung 31, in der die Parameter beeinflusst wurden oder beeinflussbar waren, zu ermöglichen, sowie die verwendeten Zwischencodeparameter 36- 39 und das verwendete Zwischenergebnis 40. Die ggf . erforderliche Protokollierung von Flags ist in der vorangehenden Beschreibung nicht berücksichtigt . Deren Protokollierung erfolgt j edoch analog zur Protokoll ierung der j eweils verwendeten Parameter . Bei der Umsetzung einer Zwi - 5 schencodeanweisung 31 ist bekannt , welche Flags bei deren Ausführung beeinflussbar sind . Bei einer Addition besteht stets die Ge fahr eines Registerüberlaufes , wenn die Summe größer ist , als die Breite des Registers , in dem diese gespeichert werden soll , erlaubt . Entsprechend wird das Flag
.0 für Registerüberlauf protokolliert . Bei einer Division kommt auch ein nicht definiertes Ergebnis , nämlich bei einer Division durch Null , in Betracht . Entsprechend wird bei Divi sionen das Flag für nicht definierte Ergebnisse protokol liert . Insgesamt liegt für j ede in einer Zwischencodeanwei -
L5 sung 31 enthaltene Operation im vorhinein fest , welche Flags bei deren Ausführung ggf . beeinflusst werden . Bei der Umsetzung j eder Operation werden also entsprechend sämtli che beeinflussbaren Flags protokolliert .
- 0 FIG 6 zeigt einen Speicher 50 des die Zielhardware darstellenden Automatisierungsgerätes 11 . Im Speicher 5 0 ist das Steuerungsprogramm 17 sowie zumindest Abschnitte des dem Steuerungsprogramm 17 zugrunde liegenden Zwischencodes 19 abgelegt . Di e Umsetzung 21 (FIG 2 ) des Zwischencodes 19 zur
25 Gewinnung des ablauf fähigen Steuerungsprogramms 17 erfolgt mittels einer als Software realisierten und damit gl eichfalls im Speicher 50 abgelegten Umsetzeinrichtung 51 . Die Funktionalität der Umsetzeinrichtung 51 kann alternativ auch als Hardware realisiert sein, wobei dann entsprechend im. Automa- 0 tisierungsgerat 11 z . B . ein entsprechender ASIC (ni cht dargestellt) vorgesehen ist .
Dem Steuerungsprogramms 17 liegt ein Ursprungscode — gemäß der exemplarischen Beschreibung der auf dem Quellcode 18 5 basierende Zwischencode 19 - zugrunde . Der Quellcode 18 umfasst dabei eine Anzahl von Anweisungen 22-25 (FIG 3 ) , wobei zu jeder Anweisung 22 -25 im Quellcode 18 zumindest eine Anweisung 31 (FIG 5) Zwischencode 19 gehört .
Damit das Steuerungsprogramm 17 in der oben beschriebenen Weise überwachbar ist , ist eine Protokollierung der j eweils verwendeten und/oder beeinf lussten oder verwendbaren und/oder beeinflussbaren Parameter vorgesehen . Die Protokollierung erfolgt dabei mittels der in das Steuerungsprogramm eingefügten , bei der Umsetzung der oder j eder Zwischencodeanwei- sung 31 generierten Protokollierungsanweisungen 41 , 42 (FIG 5 ) .
Zur Umsetzung j eder Zwischencodeanweisung 31 in eine ausführbare Form hat die Umsetzeinrichtung 51 Zugriff auf eine Da- tenbasi s 52 . In dieser ist für jede zulässige Zwischencodeanweisung 31 eine Transformationsvorschrift 53 (nur schematisch dargestellt) hinterlegt . So umfasst die Datenbasis 52 eine Transformationsvorschrift 53 zur Transformation von Zuweisungsbefehlen, eine Transformationsvorschrift 53 zur Transformation von Additionsbefehlen, eine Trans formations- vorschrift 53 zur Transformation von Multiplikationsbefehlen, etc . , etc .
Ferner weist die Umsetzeinrichtung 51 Mittel 54 , 55 , 56 zum Ergänzen j eder Zwischencodeanweisung 31 um ein oder mehrere Protokollierungsanweisungen 41 , 42 auf , so dass der oder j eder Parameter 36 -40 der von der Zwi schencodeanweisung 31 verwendet und/oder beeinflusst wird oder verwendbar und/oder beeinf lussbar ist , protokollierbar ist .
Die genannten Mittel 54 , 55 , 56 sind als Softwarefunktionalität realisiert und entsprechend als Funktionsblöcke dargestellt , können j edoch im Einzelfall auch als Hardware - in Form e ines ASICs (nicht dargestellt ) - realisiert sein .
Die Mittel 54 , 55 , 56 umfassen ein erstes Mittel 54 zum Abrufen und Analysieren j eweils einer Anweisung des Ursprungsco- des, der jeweiligen Zwischencodeanweisung 31. Zum Analysieren der oder jeder Anweisung wird z. B. die Funktionalität eines so genannten Parsers genutzt. Nach dem Analysieren der jeweiligen Zwischencodeanweisung 31 steht fest, ob z. B. eine An- Weisung mit einem Zuweisungsbefehl oder eine Anweisung mit einem Additionsbefehl vorliegt, so dass danach mit einem zweiten Mittel 55 die entsprechende Transformationsvorschrift 53 aus der Datenbasis 52 abgerufen und die Zwischencodeanweisung 31 transformiert wird. Dieses zweite Mittel 55 ergänzt die jeweilige Zwischencodeanweisung 31 auch derart, dass der oder jeder Parameter 36-40, der von der Zwischencodeanweisung 31 verwendet und/oder beeinflusst wird oder verwendbar und/- oder beeinflussbar ist, protokollierbar ist. D. h. das zweite Mittel 55 ergänzt die jeweilige Zwischencodeanweisung 31 um die Protokollierungsanweisungen 41, 42 (FIG 5) . Die Protokollierungsanweisungen 41, 42 können im Steuerungsprogramm 17 vor oder nach dem ausführbaren Pendant der jeweiligen Anweisung eingefügt werden, je nachdem, wann ein Parameter 36-40 verwendet wird. Bei Anweisungen der Form "A=A+B" ist es zudem z. B. sinnvoll, den Parameter "A" sowohl vor der Ausführung der Anweisung als auch nach der Ausführung der Anweisung zu protokollieren. Schließlich ist ein drittes Mittel 56 vorgesehen, um die transformierte - d. h. ausführbare Form - der Anweisung zusammen mit den Protokollierungsanweisungen 41, 42 in das Steuerungsprogramm 17 zu integrieren.
Beim Ablauf des Steuerungsprogramms 17 auf dem Automatisierungsgerät 11 - der Zielhardware - werden damit vor oder nach jeweils einer Anweisung die hinzugefügten Protokollierungsan- Weisungen 41, 42 ausgeführt. Die auf diese Weise protokollierten Parameter 36-40 werden über die Schnittstellen 13, 14 und die Datenübertragungsstrecke 15 an das Programmiergerät 12 übertragen und können dort zu Überwachungs- und Diagnose- zwecken zusammen mit dem zugrundeliegenden Quellcode 18 zur Anzeige gebracht werden. Die Zuordnung der protokollierten Parameter 36-40 zu den ursprünglichen Quellcodeanweisungen 22-25 erfolgt dabei mittels der Quellcodereferenznummer 30 und der durch jede Protokollierungsanweisung 41, 42 protokollierten Zeichenkette 43, die der Zwischencodereferenznummer 34 entspricht.
Zur Identifizierung der einzelnen protokollierten Parameter 36-40 ist entweder eine feste, bevorzugt durch die in der verwendeten Transformationsvorschrift 53 enthaltene Information festgelegte Reihenfolge der Parameter 36-40 vorgesehen. D. h. es ist im vorhinein z. B. für den Fall des ersten Teils 32 der Zwischencodeanweisung 31 bekannt, dass der erste protokollierte Wert den Wert des indirekten Parameters 40 und damit das Zwischenergebnis des Multiplikations- teils der zugrundeliegenden Quellcodeanweisung 22 darstellt. Entsprechend wäre weiter im vorhinein bekannt, dass der zwei- te und dritte protokollierte Wert den Wert der Zwischencodeparameter "C" 38 und "D" 39 und damit entsprechend den Wert der korrespondierenden Quellcodeparameter "c" 28 und "d" 29 darstellt, usw. Ist eine solche im vorhinein bekannte feste Reihenfolge bei der Protokollierung der Parameter 36-40 nicht vorgebbar oder nicht sinnvoll, werden die protokollierten Daten um deklarative Bezeichner, z. B. "117: αι=12 , C=2 , D=6", ergänzt. Es ergibt sich dann eine Zeichenfolge (string) , in der "117" wieder als Zeichenkette 43 die Zwischencoderefe- renznummer 34 darstellt. Die Zeichen (ketten) "oci", "C", und "D" ermöglichen als deklarative Bezeichner die Zuordnung der protokollierten Werte zu den zu überwachenden Parametern. Weitere spezielle Zeichen, wie ":", "=" und "," sind zur Formatierung der Zeichenfolge und damit zur erleichterten Extraktion der darin enthaltenen Daten vorgesehen.
Die protokollierten Parameter 36-40 werden an die Schnittstelle 14 des Automatisierungsgerätes 11 übermittelt und gelangen von dort zum Programmiergerät 12. Wenn mit dem Automatisierungsgerät 11 kein Programmiergerät 12 verbunden ist, unterbleibt die Übermittlung der protokollierten Parameter
36-40. Diese werden dann gleichsam "ins Leere" protokolliert. Um bei angeschlossenem Programmiergerät das über die Datenübertragungsstrecke 15 zu übermittelnde Datenvolumen zu regulieren oder zu begrenzen, ist bevorzugt vorgesehen, dass die Übermittlung der protokollieren Parameter 36 -40 ab Erreichen einer vorgel baren Quell - oder Zwischencoderef erenznummer 30 , 34 beginnt und mit Erreichen einer weiteren vorgebbaren Quell - oder Zwischencoderef erenznummer 30 , 34 endet . Auf diese Weise lassen sich auswählbare Abschnitte des Steuerungsprogramms 17 gezielt untersuchen . Dazu sind nicht darge- stellte Mittel vorgesehen, die z . B . Bestandteil der Schnitt stelle 14 oder der zugehörigen Schnittstel lenanschaltung sind und eine Fi lterung der protokollierten Parameter 36 -40 derart bewirken, dass nur solche Parameter 36-40 über die Schnittstelle 14 an das Programmiergerät 12 übermittelt werden, die zu solchen Anweisungen protokolliert wurden, die im Bereich der vorgegebenen Quell - oder Zwischencoderef erenznummern 30 , 34 liegen.
Damit lässt sich die Erfindung kurz wie folgt darstellen :
Zum Überwachen der Ausführung eines Steuerungsprogramms 17 auf einer Z ielhardware ist vorgesehen, das s beim Erzeugen des Steuerungsprogramms aus einem Ursprungscode - einem Quellcode oder einem auf dem Quellcode basierenden Zwischencode - j ede Anweisung des Ursprungscodes um Protokollierungsanweisungen 41 , 42 ergänzt wird . Die Protokollierungsanweisungen 41 , 42 bewirken di e Protokollierung sämtlicher Parameter 36 -40 die von der j eweiligen Anweisung verwendbar und/oder beeinf luss - bar sind. Die Protokollierungsanweisungen 41 , 42 werden dabei anhand von Informationen, die Bestandteil einer Transforma- tionsvorschrif t 53 zur Transformation der j eweiligen Anwei sung in eine ausführbare Form sind, ergänzt . Bei der Transformation der j eweiligen Anweisung in eine Ausführbare Form ist bekannt , welche Parameter - und ggf . Register, Flags und Speicherinhalte - 36-40 die Anweisung beeinflusst . Diese Parameter 3 6 -40 und die notwendigen Informationen zum Zugriff darauf sind Bestandteil der Protokollierungsanweisungen 41 , 42. Damit wird eine Überwachung des Ablaufs eines Steuerungsprogramms 17 anhand der protokollierten Parameter 36-40 unabhängig von der jeweiligen Zielhardware möglich, da jederzeit der jeweilige Wert der Parameter 36-40 protokolliert wird und kein Zugriff etwa mittels eines Programmiergerätes 12 auf Registerinhalte der Zielhardware erforderlich ist.

Claims

Patentansprüche
1. Zum Gewinnen eines auf einer Zielhardware ablaufenden oder ablauffähigen Steuerungsprogramms (17) , dem ein Ursprungscode mit einer Anzahl von Anweisungen (22, 31) zugrunde liegt, vorgesehene Umsetzeinrichtung (51) mit einem Zugriff auf eine Datenbasis (52) in der für jede Anweisung (22, 31) eine Transformationsvorschrift (53) hinterlegt ist, geke nn z e i c hne t du r ch Mittel (54, 55, 56) zum Ergänzen jeder Anweisung (22, 31) derart, dass der oder jeder Parame- ter (36-40), der von der Anweisung (22, 31) verwendet und/oder beeinflusst wird oder verwendbar und/oder beeinflussbar ist, protokollierbar ist, wobei die Transformations- vorschrift (53) Informationen zum Ergänzen der Anweisung (22, 31) im Hinblick auf die Protokollierung der jeweiligen Para- meter (36-40) umfasst.
2. Umsetzeinrichtung nach Anspruch 1, wobei der oder jeder Parameter (36-40) vor und/oder nach der Ausführung der Anweisung (22, 31) protokollierbar ist.
3. Umsetzeinrichtung nach Anspruch 1 oder 2, wobei der Ursprungscode ein dem Steuerungsprogramm (17) zugrunde liegender Quellcode (18) mit einer Anzahl von QuellCodeanweisungen (22-25) ist und wobei die ergänzte oder zu ergänzende Anweisung die oder jede Quellcodeanweisung (22-25) ist.
4. Umsetzeinrichtung nach Anspruch 1 oder 2, wobei dem Steuerungsprogramm (17) ein auf einem Quellcode (18) mit einer Anzahl von Quellcodeanweisungen (22-25) basierender Zwi- schencode (19) mit korrespondierenden Zwischencodeanweisungen (31) zugrunde liegt und wobei der Ursprungscode der Zwischencode (19) und die ergänzte oder zu ergänzende Anweisung die oder jede Zwischencodeanweisung (31) ist.
5. Umsetzeinrichtung nach einem der obigen Ansprüche, wobei neben dem oder jedem Parameter (36-40) eine der jeweiligen Anweisung eindeutig zugeordnete Referenz protokollierbar ist.
6. Automatisierungsgerät mit einer Umsetzeinrichtung (51) nach einem oder mehreren der vorangehenden Ansprüche .
7. Automatisierungsgerät nach Anspruch 6 mit Mitteln zum Aktivieren und Deaktivieren der Protokollierung.
8. Entwicklungsumgebung mit einem Automatisierungsgerät (11) nach Anspruch 6 oder 7 und einem Programmier- oder Überwa- chungsgerät (12) mit jeweils einer Schnittstelle (13, 14) und einer sich dazwischen erstreckenden Datenübertragungsstrecke (15) , über welche die protokollierten Parameter (36-40) an das Programmier- oder Überwachungsgerät (12) zu deren Darstellung übermittelbar sind.
9. Entwicklungsumgebung nach Anspruch 8, wobei die Mittel zum Aktivieren und Deaktivieren der Protokollierung durch das Programmier- oder Überwachungsgerät (12) ansteuerbar sind.
EP03783948A 2002-08-02 2003-08-01 UMSETZEINRICHTUNG, AUTOMATISIERUNGSGERäT MIT EINER UMSETZEINRICHTUNG UND ENTWICKLUNGSUMGEBUNG MIT EINEM AUTOMATISIERUNGSGERäT MIT UMSETZEINRICHTUNG Ceased EP1525530A2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE2002135504 DE10235504A1 (de) 2002-08-02 2002-08-02 Umsetzeinrichtung, Automatisierungsgerät mit einer Umsetzeinrichtung und Entwicklungsumgebung mit einem Automatisierungsgerät mit Umsetzeinrichtung
DE10235504 2002-08-02
PCT/DE2003/002594 WO2004015564A2 (de) 2002-08-02 2003-08-01 Umsetzeinrichtung, automatisierungsgerät mit einer umsetzeinrichtung und entwicklungsumgebung mit einem automatisierungsgerät mit umsetzeinrichtung

Publications (1)

Publication Number Publication Date
EP1525530A2 true EP1525530A2 (de) 2005-04-27

Family

ID=30128686

Family Applications (1)

Application Number Title Priority Date Filing Date
EP03783948A Ceased EP1525530A2 (de) 2002-08-02 2003-08-01 UMSETZEINRICHTUNG, AUTOMATISIERUNGSGERäT MIT EINER UMSETZEINRICHTUNG UND ENTWICKLUNGSUMGEBUNG MIT EINEM AUTOMATISIERUNGSGERäT MIT UMSETZEINRICHTUNG

Country Status (3)

Country Link
EP (1) EP1525530A2 (de)
DE (1) DE10235504A1 (de)
WO (1) WO2004015564A2 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1870787B1 (de) * 2006-06-20 2010-04-14 Siemens Aktiengesellschaft Verfahren zur Überwachung eines zyklischen Steuerungsprogramms
EP2602678B1 (de) * 2011-12-07 2014-08-13 Siemens Aktiengesellschaft Verfahren zum Übersetzen eines in einer Automatisierungssprache vorliegenden Steuerungsprogramms in eine Zwischensprache

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5812850A (en) * 1995-11-13 1998-09-22 Object Technology Licensing Corp. Object-oriented symbolic debugger using a compiler driven database and state modeling to control program execution
US6826749B2 (en) * 1998-12-08 2004-11-30 Nazomi Communications, Inc. Java hardware accelerator using thread manager
US6553565B2 (en) * 1999-04-23 2003-04-22 Sun Microsystems, Inc Method and apparatus for debugging optimized code

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
DASSEN J.H.M.; SPRINKHUIZEN-KUYPER I.G.: "Debugging C and C++ code in a Unix environment", 1999, LEIDEN UNIVERSITY, NETHERLAND, pages 1 - 2, Retrieved from the Internet <URL:http://www.oopweb.com/CPP/Documents/DebugCPP/Volume/debug.html> [retrieved on 20070626] *
DASSEN J.H.M.; SPRINKHUIZEN-KUYPER I.G.: "Debugging techniques", 1999, LEIDEN UNIVERSITY, NETHERLAND, pages 1 - 4, Retrieved from the Internet <URL:http://www.oopweb.com/CPP/Documents/DebugCPP/Volume/techniques.html#PRINTF> [retrieved on 20070626] *
See also references of WO2004015564A3 *
SPRINKHUIZEN-KUYPER IDA: "Ida Sprinkhuizen-Kuyper: Publications in Computer Science and Artificial Intelligence", LEIDEN UNIVERSITY, NETHERLAND, pages 1 - 9, Retrieved from the Internet <URL:http://www.nici.ru.nl/~idak/publications/AllPubsCS.html> [retrieved on 20070616] *
ZELLER A.: "Debugging with DDD User?s Guide and Reference Manual", 4 June 2001 (2001-06-04), Retrieved from the Internet <URL:http://web.archive.org/web/20010604233322/http://www.gnu.org/manual/ddd/pdf/ddd.pdf> [retrieved on 20060801] *

Also Published As

Publication number Publication date
DE10235504A1 (de) 2004-02-12
WO2004015564A3 (de) 2004-07-15
WO2004015564A2 (de) 2004-02-19

Similar Documents

Publication Publication Date Title
DE19781804B4 (de) Vorrichtung zur Simulation einer Echtzeit-Prozesssteuerung
EP1904903B1 (de) Verfahren zum bedienen und beobachten eines steuergeräts, hiermit korrespondierendes bedien-/beobachtungsgerät, steuergerät sowie maschine mit einem solchen steuergerät und verwendungen des verfahrens sowie datenspeichermedien
DE112016003949T5 (de) Webbasierte programmierumgebung für eingebettete geräte
EP1034475B1 (de) Verfahren zum testen von systemkomponenten eines objektorientierten programms
DE102005028943A1 (de) Numerische Steuerung, die ein in einer Schriftsprache geschriebenes Programm aufrufen kann
EP1215589A2 (de) Bereitstellung von Projektdaten in einem durch eine standardisierte Meta-Sprache definiertem Format
DE1499722B1 (de) Einrichtung zur modifizierung von informationswoertern
DE2648229A1 (de) Einschaltkreis als urlader fuer digitalrechner
EP0097725A1 (de) Einrichtung im Befehlswerk eines mikroprogrammgesteuerten Prozessors zur direkten hardwaregesteuerten Ausführung bestimmter Instruktionen
EP3568757B1 (de) Verfahren zur erzeugung von quellcode
EP3451202B1 (de) Verfahren zum erzeugen eines auf einem testgerät ausführbaren modells eines technischen systems und testgerät
EP3629151A1 (de) Verfahren zum ändern von modellen für die erzeugung von quellcode
DE10324594A1 (de) Verfahren zum Bereitstellen einer verbesserten Simulationsfähigkeit eines dynamischen Systems außerhalb der ursprünglichen Modellierungsumgebung
DE2702722A1 (de) Instruktionsinterpretation in elektronischen datenverarbeitungsanlagen
DE10057575A1 (de) Verfahren zur automatischen Softwaregenerierung
WO2004015564A2 (de) Umsetzeinrichtung, automatisierungsgerät mit einer umsetzeinrichtung und entwicklungsumgebung mit einem automatisierungsgerät mit umsetzeinrichtung
EP2329374A1 (de) Testmodul und verfahren zum testen einer o/r-abbildungs-middleware
DE10138533A1 (de) Bereitstellung von Projekt- und/oder Projektierungsdaten eines Automatisierungsprojekts in einem durch eine standardisierte Meta-Sprache, insbesondere XML, definiertem Format
EP0708941B1 (de) Verfahren zum test eines objektorientierten programms
DE2622140B2 (de) Einrichtung zur Steuerung manueller Operationen
AT522186B1 (de) Computerimplementiertes Verfahren zur rechnergestützten Erzeugung eines ausführbaren Steuerungsprogramms zur Steuerung und/oder Regelung eines technischen Prozesses
EP1621945B1 (de) Konsistenzsicherung in einem Automatisierungssystem
EP0273070A1 (de) Einrichtung und Verfahren zur Erweiterung des Befehlssatzes und der Funktionen eines Rechners
EP2144159A1 (de) Verfahren und Programm-Netzwerk zur Ausnahmebehandlung
EP1149353B1 (de) Verfahren zur übertragung von simulationsmodellen zwischen simulatoren

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20041217

AK Designated contracting states

Kind code of ref document: A2

Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LI LU MC NL PT RO SE SI SK TR

RBV Designated contracting states (corrected)

Designated state(s): DE FR GB IT

17Q First examination report despatched

Effective date: 20051026

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION HAS BEEN REFUSED

18R Application refused

Effective date: 20081020