[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

EP1525530A2 - Converter, automation device with a converter and a development environment comprising an automation device with converter - Google Patents

Converter, automation device with a converter and a development environment comprising an automation device with converter

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
German (de)
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/en
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)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Testing And Monitoring For Control Systems (AREA)

Abstract

The invention relates to a converter (51), provided for generation of a control programme (17), running or capable of running on target hardware based on a source code with a number of instructions (22, 31), automation devices with such a converter (51) and development environment with such an automation device (11) with access to a database (52) in which a transformation process (53) is stored for each instruction (22, 31), with means (54, 55, 56) for the completion of each instruction (22, 31) such that the or each parameter (36-40), which is or may be used and/or influenced by the instruction (22, 31) can be logged, whereby the transformation process (53) comprises information for the completion of the instruction (22, 31) with respect to the logging of each parameter (36-40).

Description

Beschreibungdescription
Umsetzeinrichtung, Automatisierungsgerät mit einer Umsetzeinrichtung und Entwicklungsumcjebung mit einem Automatisierungsgerät mit UmsetzeinrichtungTransfer device, automation device with a transfer device and development environment with an automation device with transfer device
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 eineThe 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
Entwicklungsumgebung mit einem solchen Automatisierungsgerät.Development environment with such an automation device.
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.To monitor control programs, e.g. So-called debuggers are generally known, for example for their commissioning or maintenance. With 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.
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.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.
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.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.
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.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. For such complex functions, a computer, such as a personal computer, a programming device or the like, is used to execute the debugger. For simple monitoring functions, on the other hand, a monitoring device is provided for displaying the respective data, that is to say a computer with reduced performance, for example a computer. B. without storage media and input options, and at least one output device, such as a screen or printer, sufficient. In the following, such programming or monitoring devices are collectively referred to as programming devices.
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 .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. By means of the method, 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. For this purpose, it is provided that 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. When 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, however, 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.
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 .After all, when using control programs that are intended to be used on different target hardware, the structure and performance of the actual target hardware is not known. One and the same control program can therefore on a target hardware with a standard mi -troprocessor with z. B. eight processor registers or on target hardware with a special ASIC instead of the microprocessor with a large number of special registers. Naturally, in an execution such. B. of an addition command of the control program on the target hardware are influenced with the microprocessor different registers than on the target hardware with the ASIC. On the part of the monitoring or programming device for monitoring the execution of the control program, it is therefore not known which registers of the target hardware are used or influenced when the addition command is executed. In fact, it is not even known how the respective target hardware actually executes the addition command. Differences can arise if e.g. B. the microprocessor maximum for direct execution additions of the contents of registers with a width of thirty-two bits, which: ASIC is, however, able to directly carry out additions of the contents of registers with a width of sixty-four bits. When the addition command is executed, an addition of parameters of corresponding size must be broken down into two partial additions, while the ASIC can carry out the addition directly.
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 .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.
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 .This object is achieved according to the invention with a conversion device with the features of claim 1. 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. In order to win the control program, 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. For this purpose, 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.
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 :If an addition of two parameters relates to two integer values stored in the memory, the addition command "a + b" in a pseudo code is approximately as follows:
Lade den Inhalt der Speicherstelle an der der Parameter " a" gespeichert ist , in ein Register .Load the contents of the memory location where the parameter "a" is stored into a register.
Addiere zum Inhalt dieses Registers den Inhalt der Speicherste lle an der der Parameter "b" gespeichert ist .Add to the content of this register the content of the memory location where the parameter "b" is stored.
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 .After executing these two commands, the sum of parameters "a" and "b" is in the register mentioned. The register mentioned is e.g. B. the so-called accumulator, which is often used in operations such as additions and the like.
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" imOn the basis of the pseudo code shown above as an example, it is clear that e.g. B. the parameter "b" cannot be monitored directly. After executing the first line of the pseudo code, the value of parameter "a" is in the register. The contents of the register could be displayed for monitoring purposes. After executing the second line of the pseudo code, the sum of the two parameters "a" and "b" is already in the
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.Register. The parameter "b" cannot therefore be monitored directly. Access to its value is only possible if the content of the storage location at which the parameter "b" is stored is looked up. This is associated with considerable effort, the effort again being noticeably increases if z. B. an indirect addressing of the respective memory locations is used.
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:However, since all the information required for its later monitoring is available when the control program is obtained, it is provided that the or each parameter which is used and / or influenced by the instruction or can be used and / or influenced can be logged. For this purpose, the individual instructions of the original code on which the control program is based are supplemented accordingly. This should be continued as an example for the pseudo code used above as the original code:
Lade den Inhalt der Speicherstelle an der der Parameter "a" gespeichert ist, in ein Register und protokolliere den Inhalt des Registers.Load the contents of the memory location where the parameter "a" is stored in a register and log the contents of the register.
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.Add to the content of the register the content of the storage location at which the parameter "b" is stored and log the content of the storage location at which the parameter "b" is stored and log the content of the register.
Die weiter eingerückten Passagen des Pseudocodes enthalten dessen Ergänzungen im Hinblick auf die Protokollierung der verwendeten Parameter.The further indented passages of the pseudo code contain its additions with regard to the logging of the parameters used.
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.Because of the transformation rule for implementing the respective instruction of the source code, it is known how the data of the individual parameters influenced by the instruction can be reached. In the example above, 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. can be seen that when adding the value of the first summand, parameter "a", does not have to be looked up again in the memory, but that the contents of the register can be logged directly because the value of parameter "a" has been copied into the register. With regard to the actual addition part, it can be seen from the supplementary information that the value of the parameter "b" is never accessible in a register. The logging accordingly relates to the storage location at which the parameter "b" is stored.
L OL 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:The same addition command can be executed differently on another target hardware if, for. B. Operations with three operands are permitted. For this target hardware, the addition command in a pseudo code is something like this:
1515
Addiere die Inhalte der Speicherstellen an der der Parameter "a" und der Parameter "b" gespeichert sind und lade das Ergebnis in ein Register.Add the contents of the memory locations where parameter "a" and parameter "b" are stored and load the result into a 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: 50 With this variant, at no time is one of the parameters "a", "b" stored in a register. The logging therefore always refers to the respective storage locations. The supplementary instruction is z. B. as follows: 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.Add the contents of the storage locations at which the parameters "a" and the parameter "b" are stored and load the result into a register and log the contents of the storage locations at which the 0 parameters "a" and "b" are stored and log the Contents of the register.
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.It can thus be seen that the possibility of monitoring the control program becomes completely independent of how the parameters that are influenced or can be influenced are used. To monitor the control program too knowledge of the functionality of the target hardware and even knowledge of the target hardware itself is not necessary.
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.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.
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.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.
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.In connection with the invention or preferred embodiments of the invention, the following terms are used as follows. The term "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.
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.With the term "control program" is the executable - z. B. in a machine code - present version of the control program. In a more general use of the term control program, however, 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.
Vorteilhafte Ausgestaltungen der Erfindung sind Gegenstand der Unteransprüche.Advantageous embodiments of the invention are the subject of the dependent claims.
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 .An embodiment of the invention is explained in more detail with reference to the drawing. Corresponding objects or elements are provided with the same reference characters in all figures.
Darin zeigenShow in it
FIG 1 eine Entwicklungsumgebung mit einem Automatisierungs- gerät als Zielhardware und einem Programmiergerät,1 shows a development environment with an automation device as target hardware and a programming device,
FIG 2 schematisch die Erstellung eines Steuerungsprogramms, FIG 3 einen Ausschnitt aus einem dem Steuerungsprogramm zugrunde liegenden Quellcode,2 shows schematically the creation of a control program, 3 shows a section of a source code on which the control program is based,
FIG 4 einen kombinierten Additions- und Zuweisungsbefehl als Beispiel für eine Anweisung im Quellcode,4 shows a combined addition and assignment command as an example of an instruction in the source code,
FIG 5 eine auf dem kombinierten Additions- und Zuweisungsbefehl basierende Zwischencodeanweisung und5 shows an intermediate code instruction based on the combined addition and assignment instruction and
FIG 6 eine Umsetzeinrichtung zur Umsetzung der oder jeder6 shows a conversion device for implementing the or each
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.Intermediate code instruction in an executable form and to supplement it 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.
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 .1 shows a development environment 10 with an automation device 11 as target hardware and a programming device 12. 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. B. a serial connection or a bus (segment), in particular a fieldbus (segment). In addition, a connection by means of optical or electromagnetic signals can also be considered as the data transmission path 15. B. a fiber optic cable or the like or a (directional) radio link.
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 .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 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.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.
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 .3 schematically shows a section of the source code 18 on which the control program 17 is based. In a manner known per se, 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.
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.4 shows an example of a source code instruction 22-25, a source code instruction 22 with a combined addition, multiplication and assignment instruction "a = b + cxd". 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. Finally, 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.
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.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. In the simplest case, 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.
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.5 shows, as part of the intermediate code 19, an intermediate code instruction 31 in the intermediate language. 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. In order to assign the intermediate code instruction 31 to the corresponding source code instruction 22, the intermediate code instruction 31 also includes an intermediate code reference number 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.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.
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 .In the intermediate code instruction 31, 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 -.
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 einenTo completely monitor the execution of the intermediate code instruction 31 shown as an example, it is necessary to log all parameters influenced by the intermediate code instruction 31. To distinguish between intermediate code parameters "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". In addition, 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
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.Register overflow, or to an undefined result - such as when taking the square root from a negative Number . Both types of parameters must be accessible for monitoring and are therefore logged accordingly. In the following, the intermediate code parameters 36-39 and possibly indirect parameters 40 are briefly referred to as parameters.
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.When the "execution" of a source code instruction 22 or the "execution" of an intermediate code instruction 31 is mentioned, this naturally always means the execution of the corresponding instruction in the control program 17, because only the control program 17 actually comprises executable code. However, since each executable instruction is based on a corresponding instruction in the original code, namely the respective source or intermediate code instruction 22, 31, the term "execution" of these instructions is also used.
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 .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. However, 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.
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 FlagThe 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. When implementing an intermediate code instruction 31, it is known which flags can be influenced when they are executed. With an addition, there is always the risk of register overflow if the sum is greater than the width of the register in which it is to be stored. The 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 -.0 logged for register overflow. In the case of a division, an undefined result, namely a division by zero, can also be considered. Accordingly, the flag for undefined results is logged for divisions. All in all, an intermediate code instruction
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 .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.
- 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 zur6 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 implementation 21 (FIG 2) of the intermediate code 19 for
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 .25 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.
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 .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.
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 ) .So that the 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.
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 .In order to convert each intermediate code instruction 31 into an executable form, 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 .
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 .Furthermore, 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.
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 .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).
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.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. For example, it makes sense to log parameter "A" both before the instruction is executed and after the instruction is executed. Finally, 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.
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.When the control program 17 runs on the automation device 11 - the target hardware - 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.
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.To identify the individual logged parameters 36-40, either a fixed sequence of parameters 36-40, preferably determined by the information contained in the transformation rule 53 used, is provided. I.e. it is z. For example, in the case of the first part 32 of the intermediate code instruction 31, it is known that 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. Accordingly, it would also be known in advance that 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. If such a fixed sequence known in advance when logging parameters 36-40 cannot be specified or does not make sense, the logged data is given declarative identifiers, e.g. B. "117: α ι = 12, C = 2, D = 6", added. 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. Other special characters, such as ":", "=" and "," are provided for formatting the character string and thus for easier extraction of the data contained therein.
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 ParameterThe 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
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.36-40. These are then logged, as it were, "into the void". In order to regulate or limit the data volume to be transmitted via the data transmission path 15 when the programming device is connected, it is preferably provided that 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. In this way, selectable sections of the control program 17 can be specifically examined. For this purpose, 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.
Damit lässt sich die Erfindung kurz wie folgt darstellen :The invention can thus be briefly represented as follows:
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. To monitor the execution of a control program 17 on target hardware, it is provided that 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. When transforming the respective instruction into an executable form, it is known which parameters - and if necessary. Registers, flags, and memory contents - 36-40 affects the instruction. 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.

Claims

Patentansprüche claims
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.1. To obtain a running or executable on a target hardware control program (17), which is based on an original code with a number of instructions (22, 31), provided conversion device (51) with access to a database (52) in the for each Instruction (22, 31) a transformation rule (53) is stored, it may be that the means (54, 55, 56) for supplementing each instruction (22, 31) such that the or each parameter (36 -40), which is used and / or influenced by the instruction (22, 31) or can be used and / or influenced, can be logged, the transformation rule (53) providing information to supplement the instruction (22, 31) with regard includes the logging of the respective parameters (36-40).
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.2. Implementation device according to claim 1, wherein the or each parameter (36-40) can be logged before and / or after the execution of the instruction (22, 31).
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.3. Implementation device according to claim 1 or 2, wherein the source code is a source code (18) on which the control program (17) is based with a number of source code instructions (22-25) and the supplemented or supplemented instruction is the or each source code instruction (22- 25) is.
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. 4. Implementation device according to claim 1 or 2, wherein the control program (17) is based on a source code (18) with a number of source code instructions (22-25) intermediate code (19) with corresponding intermediate code instructions (31) and wherein The source code is the intermediate code (19) and the supplemented or supplemented instruction is the or each intermediate code instruction (31).
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.5. Implementation device according to one of the above claims, wherein in addition to the or each parameter (36-40), a reference uniquely assigned to the respective instruction can be logged.
6. Automatisierungsgerät mit einer Umsetzeinrichtung (51) nach einem oder mehreren der vorangehenden Ansprüche .6. Automation device with a conversion device (51) according to one or more of the preceding claims.
7. Automatisierungsgerät nach Anspruch 6 mit Mitteln zum Aktivieren und Deaktivieren der Protokollierung.7. Automation device according to claim 6 with means for activating and deactivating the logging.
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.8. Development environment with an automation device (11) according to claim 6 or 7 and a programming or monitoring device (12), each with an interface (13, 14) and a data transmission path (15) extending between them, via which the logged parameters ( 36-40) can be transmitted to the programming or monitoring device (12) for their display.
9. Entwicklungsumgebung nach Anspruch 8, wobei die Mittel zum Aktivieren und Deaktivieren der Protokollierung durch das Programmier- oder Überwachungsgerät (12) ansteuerbar sind. 9. Development environment according to claim 8, wherein the means for activating and deactivating the logging can be controlled by the programming or monitoring device (12).
EP03783948A 2002-08-02 2003-08-01 Converter, automation device with a converter and a development environment comprising an automation device with converter Ceased EP1525530A2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE10235504 2002-08-02
DE2002135504 DE10235504A1 (en) 2002-08-02 2002-08-02 Conversion unit for generating executable code from source code so that it is suitable for running in a given execution environment on given target hardware, especially for use in automation environments
PCT/DE2003/002594 WO2004015564A2 (en) 2002-08-02 2003-08-01 Converter, automation device with a converter and a development environment comprising an automation device with converter

Publications (1)

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

Family

ID=30128686

Family Applications (1)

Application Number Title Priority Date Filing Date
EP03783948A Ceased EP1525530A2 (en) 2002-08-02 2003-08-01 Converter, automation device with a converter and a development environment comprising an automation device with converter

Country Status (3)

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

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE502006006706D1 (en) 2006-06-20 2010-05-27 Siemens Ag Method for monitoring a cyclic control program
EP2602678B1 (en) * 2011-12-07 2014-08-13 Siemens Aktiengesellschaft Method for translating a control program in an automated language to an intermediate language

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
WO2004015564A2 (en) 2004-02-19
DE10235504A1 (en) 2004-02-12
WO2004015564A3 (en) 2004-07-15

Similar Documents

Publication Publication Date Title
DE19781804B4 (en) Device for simulating a real-time process control
DE69525706T2 (en) Apparatus and method for generating the target language code using an object-oriented code generator
EP1034475B1 (en) Method for testing the system components in an object-oriented program
DE112016003949T5 (en) WEB-BASED PROGRAMMING ENVIRONMENT FOR EMBEDDED EQUIPMENT
DE102005028943A1 (en) Numerical control that can call a program written in a written language
EP1215589A2 (en) Providing project data in a standardized meta-language format
DE1499722B1 (en) DEVICE FOR THE MODIFICATION OF INFORMATION WORDS
DE2648229A1 (en) SWITCH-ON CIRCUIT AS LOADER FOR DIGITAL COMPUTER
EP0097725A1 (en) Circuits in the control part of a microprogrammable processor for direct hardware execution of selected instructions
EP3568757B1 (en) Method for producing source code
EP3451202B1 (en) Method for generating a model of a technical system which can be run on a test device and a test device
EP3629151A1 (en) Method for modifying models for generating source code
DE60002577T2 (en) VARIABLE SIZE IN ONE INTERMEDIATE LANGUAGE
DE10324594A1 (en) Method for providing improved simulation capabilities of a dynamic system outside of the original modeling environment
DE2702722A1 (en) INSTRUCTION INTERPRETATION IN ELECTRONIC DATA PROCESSING SYSTEMS
DE69322800T2 (en) Procedure for performance improvement in an automatic test system
DE10057575A1 (en) Method for automatic software regeneration applies an abstract model to the properties of an application made possible by software converting these into software mechanically.
EP1525530A2 (en) Converter, automation device with a converter and a development environment comprising an automation device with converter
DE68905848T2 (en) STORAGE PROGRAMMABLE CONTROL WITH STRUCTURED PROGRAMMING LANGUAGE.
DE3887717T2 (en) PROCESSOR FOR PROGRAMMABLE LOGICAL REGULATOR AND PROGRAMMABLE LOGICAL REGULATOR.
DE10138533A1 (en) Protection of control programs transmitted over the Internet from a developer to a customer using asymmetric encryption of the program code, which is decrypted by the end user after parameter editing
EP2329374A1 (en) Test module and method for testing an o/r imaging middleware
EP0708941B1 (en) Process for testing an object-oriented programme
DE2622140B2 (en) Device for controlling manual operations
AT522186B1 (en) Computer-implemented method for the computer-aided generation of an executable control program for controlling and / or regulating a technical process

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