WO2015010912A1 - Prognosis of the operating behavior of a control unit - Google Patents

Prognosis of the operating behavior of a control unit Download PDF

Info

Publication number
WO2015010912A1
WO2015010912A1 PCT/EP2014/064782 EP2014064782W WO2015010912A1 WO 2015010912 A1 WO2015010912 A1 WO 2015010912A1 EP 2014064782 W EP2014064782 W EP 2014064782W WO 2015010912 A1 WO2015010912 A1 WO 2015010912A1
Authority
WO
WIPO (PCT)
Prior art keywords
program
control
unit
location
point
Prior art date
Application number
PCT/EP2014/064782
Other languages
German (de)
French (fr)
Inventor
Tim Lange
Martin Richard NEUHÄUSSER
Thomas Noll
Original Assignee
Siemens Aktiengesellschaft
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 Aktiengesellschaft filed Critical Siemens Aktiengesellschaft
Publication of WO2015010912A1 publication Critical patent/WO2015010912A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/49Nc machine tool, till multiple
    • G05B2219/49139Alarm if outside zone

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

The invention relates to a verification device (10) for checking a control unit (14) in order to determine whether during the execution of a control program (P), the control unit (14) only assumes operating states that are valid according to a state preset (20, 22) defined by program variables of the control program (P). The problem addressed by the invention is that of efficiently testing the operating behavior of the control unit (14). The problem is solved in that the verification device comprises an input unit (26) for receiving a user input of the state preset (20, 22), and a solver unit (30) for checking a capability of the state preset (20, 22) to be achieved by the control program (P). A compression unit (50) is configured to compress the control program (P) in a semantically true manner prior to verification by the solver (30) such that a number of program points with value assignments is reduced.

Description

Beschreibung description
Prognose des Betriebsverhaltens einer Steuereinheit Forecasting the operating behavior of a control unit
Die Erfindung betrifft eine Überprüfungsvorrichtung und ein Verfahren zum Überprüfen einer Steuereinheit daraufhin, ob die Steuereinheit bei Ausführung eines Steuerprogramms nur Betriebszustände einnimmt, die gemäß einer Zustandsvorgabe als gültig gekennzeichnet sind. The invention relates to a checking device and a method for checking a control unit, according to whether the control unit only assumes operating states when executed a control program, which are marked as valid according to a condition specification.
In der Automatisierungstechnik; liegen die Konsequenzen von logischen Fehlern in Programmen programmierbarer Logikcontroller (PLC) im Bereich von kostspieligen Unterbrechungen in der Produktions- oder Automatisierungsaufgabe bis zu Gefahren für Menschenleben und die Umwelt, wenn sicherheitsbezogene PLC-Programme betroffen sind, z. B. bei der verteilten Sicherheit. Daher müssen solche Fehler sowohl aufgrund von wirtschaftlichen als auch regulatorischen Gründen ausgeschlossen werden. Sicherheitsregelungen wie z. B. IEC 61508-3 empfehlen beispielsweise die Verwendung einer formalen Überprüfung, um das Risiko in Bezug auf logische Fehler in Produktions- und Automatisierungssystemen zu verringern. In automation technology; The consequences of logic errors in programmable logic controller (PLC) programs range from costly disruptions in the production or automation task to hazards to human lives and the environment when safety-related PLC programs are involved, such as: B. in distributed security. Therefore, such errors must be excluded for both economic and regulatory reasons. Safety regulations such. For example, IEC 61508-3 recommends the use of a formal review to reduce the risk of logical errors in production and automation systems.
In der heutigen Praxis werden jedoch nur umfangreiche Tests verwendet, um logische Fehler zu detektieren. Diese Tests werden manuell entworfen und werden sehr häufig von Hand ausgeführt, was fehleranfällig und äußerst zeitraubend ist und hohe finanzielle Kosten verursacht. Allgemein ist für alle bis auf die einfachsten Programme das Testen von Natur aus unvollständig, da es außerstande ist, die Abwesenheit von Fehlern zu beweisen. In today's practice, however, only extensive tests are used to detect logical errors. These tests are designed manually and are very often done by hand, which is error prone and extremely time consuming, and causes high financial costs. Generally, for all but the simplest programs, testing is inherently incomplete, as it is unable to prove the absence of errors.
Im Prinzip werden diese Nachteile durch eine formale Codeüberprüfung vollständig beseitigt. Im Gegensatz zum Testen sind formale Überprüfungstechniken wie z. B. die Modellprüfung (model checking) vollständig, denn sie garantieren es, alle Fehler zu finden, und können die Abwesenheit von Fehlern fest beweisen. Sie können auch vollständig automatisiert sein, denn erfordern nur, dass der Ingenieur die relevanten Eigenschaften des Codes, der überprüft werden muss, als eine Zustandsvorgabe beschreibt. Dann kann mittels eines Lösungsalgorithmus für das sogenannte Erfüllbarkeitsproblem der Aus- sagenlogik (SAT, von englisch satisfiability) überprüft werden, ob das Steuerprogramm stets nur zu solchen Betriebszu- ständen führen kann, die gemäß der Zustandsvorgabe gültig, also z.B. sicher und/oder betriebswirtschaftlich sinnvoll, sind, oder ob das Steuerprogramm auch zu einem ungültigen Be- triebszustand führen kann. In principle, these disadvantages are completely eliminated by a formal code check. In contrast to testing, formal verification techniques such as For example, model checking is complete because it guarantees to find all the errors and can prove the absence of errors. They can also be completely automated be, because only require that the engineer describes the relevant characteristics of the code that needs to be checked as a conditional specification. Then, by means of a solution algorithm for the so-called satisfiability problem of the statement logic (SAT, English satisfiability), it can be checked whether the control program can always only lead to operating states which are valid according to the state specification, ie, safe and / or economically reasonable , are, or whether the control program can also lead to an invalid operating state.
Dieses Entscheidungsproblem ist aber sehr aufwändig in der Berechnung und bereits im reinen Aussagefall (SAT) sogenannt NP-vollständig . Dieses theoretische Ergebnis hat praktische Konsequenzen, da die Laufzeit von Modellprüfern zum Nachweisen von Eigenschaften im Allgemeinen exponentiell wächst und untragbar groß wird, selbst für relativ einfache Problemfälle. Tatsächlich ist dies der eigentliche Grund, warum eine formale Überprüfung für die industrielle Verwendung nicht breit übernommen wurde. However, this decision problem is very complex in the calculation and even in the pure statement (SAT) so-called NP-complete. This theoretical result has practical consequences, since the runtime of model checkers for detecting properties generally grows exponentially and becomes prohibitively large, even for relatively simple problem cases. In fact, this is the real reason why a formal review for industrial use has not been widely adopted.
Der Erfindung liegt die Aufgabe zugrunde, ein Betriebsverhalten einer Steuereinheit effizient zu überprüfen. Die Aufgabe wird durch die Gegenstände der unabhängigen Patentansprüche gelöst. Vorteilhafte Weiterbildungen der Erfindung ergeben sich durch die Merkmale der abhängigen Patentansprüche . Mittels des erfindungsgemäßen Verfahrens wird eine Steuereinheit daraufhin überprüft, ob sie bei Ausführen eines Steuerprogramms nur gemäß einer Zustandsvorgabe gültige Betriebszu- stände einnimmt. Die Erfindung geht dabei von der Erkenntnis aus, dass die Betriebszustände durch die Programmvariablen des Steuerprogramms definiert sind. Ein konkreter Betriebszustand ergibt sich dabei jeweils durch die aktuellen, momentanen Werte jeder Programmvariablen. Die Werte jeder Programmvariablen können also als Zustandsvektor zusammengefasst wer- den, der einen Betriebspunkt im Zustandsraum angibt. Je mehr Programmvariablen es gibt, desto mehr Dimensionen hat der Zustandsraum . The object of the invention is to efficiently check a performance of a control unit. The object is solved by the subject matters of the independent claims. Advantageous developments of the invention will become apparent from the features of the dependent claims. By means of the method according to the invention, a control unit is checked to see whether, when a control program is executed, it only assumes valid operating states in accordance with a status specification. The invention is based on the recognition that the operating states are defined by the program variables of the control program. A concrete operating state results in each case by the current, current values of each program variable. The values of each program variable can therefore be summarized as a state vector. the one indicating an operating point in the state space. The more program variables there are, the more dimensions the state space has.
Das erfindungsgemäße Verfahren geht aus von der beschriebenen Zustandsvorgabe, durch welche all diejenigen Betriebszustände beschrieben sein können, die als gültig angesehen werden, also alle gültigen Betriebspunkte. Alternativ dazu können durch die Zustandsvorgabe auch die ungültigen Betriebszustände definiert sein. Um nun zu überprüfen, ob die Steuereinheit einen unerwünschten oder ungültigen Betriebszustand einnehmen kann, werden bei dem erfindungsgemäßen Verfahren alle Betriebszustände, die möglicherweise eingenommen werden, prognostiziert. Dann kann überprüft werden, ob ein ungültiger Betriebszustand dabei ist. Um nun alle Betriebszustände zu prognostizieren, ist gemäß der beschriebenen Erkenntnis also für alle Programmvariablen zu überprüfen, welche möglichen Werte sie aufweisen können. Hierzu wird bei dem Verfahren durch eine Solvereinheit in dem Steuerprogramm diese Überprüfung durchgeführt. Es werden dann alle durch die Wertzuweisung möglichen Werte z.B. einer Programmvariablen x ermittelt. Hierzu kann die Solvereinheit in an sich bekannter Weise zum Beispiel auf einem der folgenden Ansätze basieren: SAT (Boolean Satisfiability) , SMT (Satisfiability Modulo Theory) oder BDD (Binary Decision Diagram) . The method according to the invention is based on the described state specification, by means of which all those operating states which are regarded as valid, ie all valid operating points, can be described. Alternatively, the invalid operating states can also be defined by the state specification. In order to check whether the control unit can assume an undesired or invalid operating state, in the method according to the invention all operating states that are possibly assumed are predicted. Then it can be checked whether an invalid operating state is included. In order to predict all operating states, according to the described knowledge, it must therefore be checked for all program variables which possible values they can have. For this purpose, in the method by a solver unit in the control program, this review is performed. All values possible by the value assignment are then set, e.g. a program variable x determined. For this purpose, the solver unit can be based, for example, on one of the following approaches in a manner known per se: SAT (Boolean Satisfiability), SMT (Satisfiability Modulo Theory) or BDD (Binary Decision Diagram).
Wie bereits ausgeführt, definiert jede Programmstelle, also beispielsweise jede Programmzeile, an welcher einer Programmvariablen ein Wert zugewiesen wird, eine weitere Dimension im Zustandsraum. Bei dem erfindungsgemäßen Verfahren ist nun vorgesehen, die Dimension des Zustandsraums zu verringern, indem die Anzahl der Programmstellen mit Wertzuweisung reduziert wird. As already stated, each program location, for example each program line, to which a program variable is assigned a value, defines another dimension in the state space. In the method according to the invention, it is now provided to reduce the dimension of the state space by reducing the number of program points with value assignment.
Hierzu wird durch eine Komprimierungseinheit in einer Vorverarbeitung, also bevor die Solvereinheit alle möglichen Werte der Programmvariablen berechnet, überprüft, ob eine erste Programmstelle einen Lesegriff auf eine Programmvariable um- fasst, z.B. die Programmvariable x. Beispielsweise kann die erste Programmstelle die Programmzeile 1 sein: For this purpose, a compression unit checks in preprocessing, ie before the solver unit calculates all possible values of the program variables, whether a first program location converts a read handle to a program variable. holds, eg the program variable x. For example, the first program location may be program line 1:
1 : y = x + 1 ; 1: y = x + 1;
Die Wertzuweisung (x+1) liest hierbei den aktuellen Wert von x durch einen Lesezugriff aus. Ein anderer Ausdruck für Wertzuweisung ist auch Ausdruck oder Expression (exp) . In dem Fall, dass eine solche Wertzuweisung einen Lesezugriff auf die Programmvariable umfasst, wird bei dem erfindungsgemäßen Verfahren durch die Komprimierungseinheit ermittelt, an welcher vorangehenden zweiten Programmstelle durch eine vorangehende Wertzuweisung der Programmvariablen ein Wert rekursiv zugewiesen wird. Unter „vorangehend" ist hierbei gemeint, dass die zweite Programmstelle bei der Ausführung des Steuerprogramms zeitlich vor der ersten Programmstelle ausgeführt wird. Die Wertzuweisung ist eine rekursive Wertzuweisung, das heißt in der Wertzuweisung an die Programmvariable x ist wieder ein Lesezugriff auf die Programmvariable x selbst enthalten, die dann überschrieben werden soll. Beispielsweise kann die zweite Programmstelle die folgende Programmzeile umfassen : The value assignment (x + 1) reads out the current value of x by a read access. Another expression for value assignment is expression or expression (exp). In the event that such a value assignment comprises a read access to the program variable, in the method according to the invention the compression unit determines at which preceding second program location a value is recursively assigned by a preceding value assignment of the program variables. By "preceding", it is meant that the second program location is executed prior to the execution of the control program before the first program location.The value assignment is a recursive value assignment, ie in the value assignment to the program variable x is again a read access to the program variable x itself For example, the second program location may include the following program line:
1 ' : x = x + z ; 1 ': x = x + z;
Falls eine solche zweite Programmstelle gefunden wird, wird bei dem Verfahren an der ersten Programmstelle der Lesezu- griff mit der vorangehenden WertZuweisung ersetzt und die zweite Programmstelle gelöscht. In dem beschriebenen Beispiel wird also die Programmzeile 1' gelöscht und die Programmzeile 1 sieht dann wie folgt aus: If such a second program location is found, the procedure at the first program location replaces the read access with the preceding value assignment and deletes the second program location. In the example described, therefore, the program line 1 'is deleted and the program line 1 then looks like this:
1: y = x + z + l; 1: y = x + z + 1;
Das Steuerprogramm ist hierdurch nun komprimiert, da die Programmzeile 1' oder allgemein die zweite Programmstelle fehlt. Es gibt nun eine Programmstelle mit einer Programmva- riablen weniger, das heißt entsprechend auch eine Dimension weniger im Zustandsraum . The control program is now compressed because the program line 1 'or generally the second program point is missing. There is now a program station with a program less, which means one dimension less in the state space.
Durch die beschriebene Ersetzung ist die Komprimierung auch semantiktreu, das heißt das Steuerprogramm und das komprimierte Steuerprogramm führen bei der Steuereinheit zum selben Betriebsverhalten. Bei dem komprimierten Steuerprogramm ist aber eine Vielzahl von Überprüfungsschritten nicht mehr nötig, da sämtliche Betriebszustände, die sich durch die unterschiedlichen Werte der Programmvariablen x an der zweiten Programmstelle 1 Λ im unveränderten Steuerprogramm ergeben konnten, nun nicht mehr vorhanden sind. Damit fallen beim Betreiben der Solvereinheit Überprüfungsschritte weg, was den Betrieb der Solvereinheit effizient macht. Eine Beschleunigung um den Faktor 100 und sogar 1000 kann möglich sein. The described replacement means that the compression is semantically correct, that is to say the control program and the compressed control program lead to the same operating behavior in the control unit. In the case of the compressed control program, however, a large number of checking steps is no longer necessary since all operating states that could result from the different values of the program variable x at the second program point 1 Λ in the unchanged control program no longer exist. As a result, checking steps are omitted when operating the solar unit, which makes the operation of the solar unit efficient. An acceleration by the factor 100 and even 1000 may be possible.
Eine vorteilhafte Weiterbildung des erfindungsgemäßen Verfahrens sieht vor, dass zusätzlich zu der zweiten Programmstelle noch eine ebenfalls der ersten Programmstelle vorangehende dritte Programmstelle ermittelt wird, an welcher alternativ zur zweiten Programmstelle der Programmvariablen durch eine Wertzuweisung ein Wert zugewiesen wird. Beispielsweise können sich eine zweite Programmstelle und eine dritte Programmstelle der beschriebenen Art bei einer Verzweigung im Programm- fluss, also beispielsweise bei einer bedingten Ausführung von Programmcode, ergeben. Je nach Programmzweig oder Branch, der ausgeführt wird, kann es eine andere Programmstelle geben, an welcher der Programmvariablen über eine Wertzuweisung ein Wert zugewiesen wird. An der ersten Programmstelle wird dann der Lesezugriff nur ersetzt und entsprechend die zweite und die dritte Programmstelle nur gelöscht, falls die Wertzuweisungen an der zweiten und der dritten Programmstelle gleich sind. Bei dieser Ausführungsform ergibt sich der Vorteil, dass die Komprimierung auch möglich ist, falls die erste Programmstelle über zwei unterschiedliche Programmpfade erreicht werden kann. Eine in diesem Zusammenhang besonders vorteilhafte Weiterbildung sieht vor, dass in dem Steuerprogramm jede Programmstelle mit einer individuellen Bezeichnungsinformation, das heißt einem individuellen Label, gekennzeichnet wird. Hierdurch lässt sich in dem Steuerprogramm der Ursprung jeder Wertzuweisung bestimmen. An advantageous development of the method according to the invention provides that, in addition to the second program location, a third program location which also precedes the first program location is determined, to which a value is assigned by a value assignment as an alternative to the second program location of the program variables. For example, a second program location and a third program location of the type described can result in a branch in the program flow, that is, for example, in a conditional execution of program code. Depending on the program branch or branch being executed, there may be another program point at which the program variable is assigned a value via a value assignment. At the first program point, the read access is then only replaced and accordingly the second and the third program point are only deleted if the value assignments at the second and the third program point are the same. In this embodiment, there is the advantage that the compression is also possible if the first program point can be reached via two different program paths. A development which is particularly advantageous in this connection provides that in the control program each program point is identified with an individual designation information, that is to say an individual label. This allows the control program to determine the origin of each value assignment.
Genauso wie es mehrere Programmpfade geben kann, durch welche man entweder über die zweite Programmstelle oder die dritte Programmstelle zur ersten Programmstelle gelangen kann, kann es vorkommen, dass die Wertzuweisung, die sich an der zweiten Programmstelle befindet, nicht nur einmal verwendet wird, nämlich an der ersten Programmstelle, sondern auch noch an mindestens einer weiteren Programmstelle. Eine Ausführungsform des erfindungsgemäßen Verfahrens sieht daher vor, dass sowohl an der ersten Programmstelle als auch an jeder anderen Programmstelle mit einem Lesezugriff auf die Programmvariable der Lesezugriff durch die Wertzuweisung von der zweiten Programmstelle ersetzt wird. Dann ist es möglich, die zweite Programmstelle zu löschen, ohne hierdurch die Semantik des Programms zu verändern . Just as there may be several program paths through which either the second program location or the third program location can access the first program location, it may happen that the value assignment located at the second program location is not used once, namely the first program point, but also at least one other program point. An embodiment of the method according to the invention therefore provides that the read access is replaced by the value assignment from the second program point both at the first program point and at every other program point with a read access to the program variable. Then it is possible to delete the second program location without changing the semantics of the program.
Um für Programmstellen, wie die erste Programmstelle, zuverlässig alle relevanten vorangehenden Programmstellen zu finden, hat es sich als besonders vorteilhaft erwiesen, die zweite Programmstelle mittels einer vorwärts gerichteten Datenflussanalyse zum Ermitteln der verfügbaren Ausdrücke zu ermitteln. Eine solche Datenflussanalyse wird auch als In order to reliably find all the relevant preceding program points for program points, such as the first program point, it has proven to be particularly advantageous to determine the second program point by means of a forward-looking data flow analysis for determining the available expressions. Such a data flow analysis is also called
Available Expression Analysis bezeichnet (Nielson, F., Available Expression Analysis (Nielson, F.,
Nielson, H.R., Hankin, C: „Principles of program analysis, Springer, 1999) . Nielson, H.R., Hankin, C: Principles of program analysis, Springer, 1999).
Wenn gemäß der Datenflussanalyse eine Verfügbarkeit der an der zweiten Stelle befindlichen Wertzuweisung an der ersten Programmstelle fehlt, also z.B. die obige Programmzeile 1' keinen Einfluss auf die Programmzeile 1 haben kann. Dann wird bevorzugt die zweite Programmstelle mit einer das Löschen blockierenden Blockierungsmarke markiert. Hierdurch ergibt sich der Vorteil, dass an der ersten Programmstelle nur dann tatsächlich der Lesezugriff durch die Wertzuweisung der zweiten Programmstelle ersetzt wird, falls die Datenflussanalyse auch tatsächlich die entsprechende Verfügbarkeit anzeigt. If, according to the data flow analysis, an availability of the value assignment at the second position at the first program point is missing, that is, eg the above program line 1 'can have no influence on the program line 1. Then, the second program point is preferably marked with a block blocking the deletion. This results the advantage that at the first program point only the read access is actually replaced by the value assignment of the second program point, if the data flow analysis actually displays the corresponding availability.
Die Komprimierung kann in vorteilhafter Weise beschleunigt werden, wenn die zweite Programmstelle nur unter einer Vorbedingung ermittelt wird. Diese Vorbedingung besagt, dass eine Reaching-Definition-Analyse der ersten Programmstelle eine nicht-leere Lösungsmenge anzeigt. Eine solche Reaching- Definition-Analyse ist an sich aus dem Stand der Technik bekannt. Mit ihr lässt sich ermitteln, ob überhaupt eine Wertzuweisung im Steuerprogramm vorhanden ist. Fehlt diese, ist also die Lösungsmenge dieser Reaching-Definition-Analyse leer, so bedeutet dies, dass es eine direkte Variablenbelegung, beispielsweise durch Einlesen eines Wertes aus einem Steuereingang der Steuereinheit, also z.B. von einem Temperatursensor, gibt. Alternativ dazu kann auch ein System-Flag vorliegen, welches ebenfalls keine Definition aufweisen muss. The compression can advantageously be accelerated if the second program point is determined only under a precondition. This precondition implies that a reaching definition analysis of the first program location indicates a non-empty solution set. Such a reaching-definition analysis is known per se from the prior art. It can be used to determine whether there is any value assignment in the control program at all. If these are missing, ie if the solution quantity of this reaching-definition analysis is empty, this means that there is a direct assignment of variables, for example by reading in a value from a control input of the control unit, e.g. from a temperature sensor, there. Alternatively, there may also be a system flag, which likewise need not have a definition.
Bevorzugt wird das Steuerprogramm mehrmals iterativ durch die Komprimierungseinheit komprimiert. Hierdurch lassen sich mehr Programmstellen löschen, das heißt die Komprimierung des Steuerprogramms ist besonders groß. Preferably, the control program is iteratively compressed several times by the compression unit. This allows you to delete more channels, that is, the compression of the control program is particularly large.
Das iterative Komprimieren wird insbesondere dann beendet, falls bei der zuletzt durchgeführten Iteration das Steuerprogramm unverändert geblieben ist. Dann ist ein sogenannter Fixpunkt erreicht, an welchem die Komprimierung ein Optimum erreicht hat. The iterative compression is terminated, in particular, if the control program remained unchanged in the last iteration performed. Then a so-called fixed point is reached, at which the compression has reached an optimum.
Wie bereits ausgeführt, gehört zu der Erfindung auch eine Überprüfungsvorrichtung zum Überprüfen einer Steuereinheit. Bei der Steuereinheit kann es sich beispielsweise um eine solche für eine Automatisierungsanlage handeln. Die Überprüfungsvorrichtung kann beispielsweise als eine Engineering- Entwicklungsstation zum Konfigurieren der Steuereinheit ausgestaltet sein. Die Überprüfungsvorrichtung weist eine Einga- beemheit zum Empfangen einer Benutzereingabe betreffend die Zustandsvorgabe auf, also beispielsweise einen Computerarbeitsplatz zum Eingeben der Zustandsvorgabe. Zusätzlich weist sie eine Solvereinheit zum Überprüfen einer durch das Steuerprogramm zu erreichenden Erfüllbarkeit der Steuervorgabe auf. Als geeignete Solvereinheit kann auf eine der beschriebenen Solvereinheiten aus dem Stand der Technik zurückgegriffen werden. Die erfindungsgemäße Überprüfungsvorrichtung zeichnet sich durch eine Komprimierungseinheit aus, die dazu ausgelegt ist, eine Ausführungsform des erfindungsgemäßen Verfahrens durchzuführen . As already stated, the invention also includes a checking device for checking a control unit. The control unit may, for example, be one for an automation system. For example, the verification device may be configured as an engineering development station for configuring the control unit. The verification device has an input Entity for receiving a user input regarding the state default on, so for example, a computer workstation for entering the state default. In addition, it has a solver unit for checking a satisfiability of the control specification to be achieved by the control program. As a suitable solver unit can be used on one of the sol units described in the prior art. The checking device according to the invention is characterized by a compression unit which is designed to carry out an embodiment of the method according to the invention.
Im Folgenden ist ein Ausführungsbeispiel der Erfindung beschrieben . Hierzu zeigt : In the following an embodiment of the invention is described. This shows:
FIG 1 eine schematische Darstellung einer Ausführungsform der erfindungsgemäßen Überprüfungsvorrichtung und 1 shows a schematic representation of an embodiment of the inventive verification device and
FIG 2 einen Kontrollflussgraphen zur Veranschaulichung eines Steuerprogramms für einen Motor. 2 shows a control flow graph for illustrating a control program for a motor.
Bei dem im Folgenden erläuterten Ausführungsbeispiel handelt es sich um eine bevorzugte Ausführungsform der Erfindung. Bei dem Ausführungsbeispiel stellen aber die beschriebenen Komponenten der Ausführungsform jeweils einzelne, unabhängig voneinander zu betrachtende Merkmale der Erfindung dar, welche die Erfindung jeweils auch unabhängig voneinander weiterbilden und damit auch einzeln oder in einer anderen als der gezeigten Kombination als Bestandteil der Erfindung anzusehen sind. Des Weiteren ist die beschriebene Ausführungsform auch durch weitere der bereits beschriebenen Merkmale der Erfindung ergänzbar. The exemplary embodiment explained below is a preferred embodiment of the invention. In the exemplary embodiment, however, the described components of the embodiment each represent individual features of the invention, which are to be considered independently of each other, which also develop the invention independently of one another and thus also individually or in a different combination than the one shown as part of the invention. Furthermore, the described embodiment can also be supplemented by further features of the invention already described.
In FIG 1 ist eine Überprüfungsvorrichtung 10 gezeigt, die beispielsweise als Computerarbeitsplatz ausgestaltet sein kann. Mit der Überprüfungseinrichtung 10 kann beispielsweise von einem Fertigungsroboter 12 dessen Steuereinheit 14 überprüft werden. Hierbei soll z.B. sichergestellt sein, dass ein Roboterarm 16 des Roboters 14 beim Ausführen von Schwenkbewegungen 18, die durch Ansteuern einer (nicht dargestellten) Antriebseinheit des Roboters 12 ermöglicht sind, der Roboterarm 16 sich innerhalb eines zugelassenen Verschwenkbereichs 20 aufhält. Insbesondere kann vorgesehen sein, dass der Roboterarm 16 in seiner Bewegungsfreiheit dahingehend begrenzt wird, dass der Roboterarm 16 nicht in einen Sperrbereich 22 verschwenkt wird, in dem sich beispielsweise ein Monteur aufhalten kann. Die Überwachung des Montageroboters 12 ist nur beispielhaft zur Veranschaulichung der Funktionsweise der Überwachungsvorrichtung 10 zu verstehen. Mit der Überwachungsvorrichtung 10 können auch andere Steuereinheiten als die Steuereinheit 14 überwacht werden, beispielsweise Steuereinheiten von Produktionsanlagen, Fertigungsanlagen oder allgemein automatisierten Anlagen. In FIG. 1, an inspection device 10 is shown, which can be designed, for example, as a computer workstation. By means of the checking device 10, its control unit 14 can be checked, for example, by a production robot 12. In this case, for example, it should be ensured that a Robot arm 16 of the robot 14 when executing pivotal movements 18, which are made possible by driving a drive unit (not shown) of the robot 12, the robot arm 16 is within an authorized pivoting range 20. In particular, it may be provided that the robot arm 16 is limited in its freedom of movement to the effect that the robot arm 16 is not pivoted into a blocking region 22, in which, for example, a mechanic may be present. The monitoring of the assembly robot 12 is only to be understood as an example for illustrating the mode of operation of the monitoring device 10. The monitoring device 10 can also be used to monitor control units other than the control unit 14, for example control units of production plants, production plants or generally automated plants.
Ein Betriebsverhalten der Steuereinheit 14 kann durch ein Steuerprogramm P festgelegt sein. Die Überwachungsvorrichtung 10 kann einen Übersetzer 24, eine Bedieneinheit 26, eine zentrale Steuerung 28 und einen Solver 30 aufweisen. An operating behavior of the control unit 14 may be determined by a control program P. The monitoring device 10 may include a translator 24, an operating unit 26, a central controller 28 and a solver 30.
Der Übersetzer 24 kann dazu ausgelegt sein, das Steuerprogramm in einem Schritt S10 zu empfangen und in einem Schritt S12 in an sich bekannter Weise das Steuerprogramm P in ein symbolisches Modell MOD umwandeln. Das Modell MOD kann an die zentrale Steuerung 28 ausgegeben werden, wo es als Modell 40 gespeichert werden kann. The translator 24 may be configured to receive the control program in a step S10 and to convert the control program P into a symbolic model MOD in a manner known per se in a step S12. The model MOD may be output to the central controller 28 where it may be stored as a model 40.
Die Bedieneinheit 26 kann beispielsweise ein Bedienterminal 30 mit einem Monitor und einer Eingabeeinheit 34, beispielsweise einer Tastatur, aufweisen. Mittels der Bedieneinheit 30 kann ein (nicht dargestellter) Benutzer der Überwachungsvorrichtung 10 in einem Schritt S14 den zugelassenen Bereich 20 und/oder den Sperrbereich 22 für den Montageroboter 12 definieren. Der zugelassene Bereich 20 und/oder der Sperrbereich 22 stellt eine Zustandsvorgabe dar. In einem Schritt S16 kann die Bedieneinheit 26 beispielsweise auf der Grundlage der prädikativen Programmierung oder logischen Programmierung aus der in Schritt S14 empfangenen Eingabe in bekannter Weise eine logische Formel φ bilden. Die logische Formel φ kann an die zentrale Steuerung 28 übergeben und dort als logische Formel 38 gespeichert werden. Optional kann vorgesehen sein, dass die logische Formel φ negiert wird, wodurch in dem Beispiel zwischen einer Zustandsvorgabe für den zulässigen Bereich 20 und einer Zustandsvorgabe für den Sperrbereich 22 gewechselt werden kann. The operating unit 26 can have, for example, an operating terminal 30 with a monitor and an input unit 34, for example a keyboard. By means of the operating unit 30, a user (not shown) of the monitoring device 10 can define the approved area 20 and / or the blocking area 22 for the assembly robot 12 in a step S14. The approved area 20 and / or the blocking area 22 represents a condition specification. In a step S16, the operating unit 26 may, for example, based on the predicative programming or logic programming from the input received in step S14 in a known manner form a logical formula φ. The logical formula φ can be transferred to the central controller 28 and stored there as a logical formula 38. Optionally, it may be provided that the logical formula φ is negated, as a result of which it is possible to switch between a state specification for the permissible range 20 and a status specification for the stop band 22 in the example.
Optional kann in der zentralen Steuerung 28 eine Variable 3 für eine Begrenzung k der Analyseschritte vorgesehen sein. Die zentrale Steuerung 28 kann auf der Grundlage der von ih gespeicherten logischen Formel 38 und dem gespeicherten Modell 40 des Steuerprogramms P und optional der Variable 36 den Solver 30 betreiben. Optionally, a variable 3 for a limitation k of the analysis steps may be provided in the central controller 28. The central controller 28 may operate the solver 30 based on the logical formula 38 stored by it and the stored model 40 of the control program P, and optionally the variable 36.
Bei dem Solver 30 kann es sich beispielsweise um einen SAT- Solver oder einen SMT-Solver handeln. Als Ergebnis des Betriebs des Solvers 30 gibt dieser eine Prädiktion 42, 44 an, ob die Steuereinheit 14 auf der Grundlage des Steuerprogramms P die Zustandsvorgabe gemäß der logischen Formel φ einhält (Ausgabe 42) oder die Zustandsvorgabe verletzt (Ausgabe 44) . Falls die Zustandsvorgabe verletzt wird, kann der Programmzustand 46, durch welchen die Zustandsvorgabe verletzt wird, an eine Entwicklungseinheit 48 übertragen werden, welche dazu ausgelegt sein kann, dass der Benutzer den Programmcode P an- passt und hierdurch einen angepassten Programmcode P' erzeugt, welcher wiederum mittels des Übersetzers 24 erneut in Bezug auf die Zustandsvorgabe überprüft und, falls die Zustandsvorgabe durch den Programmcode P' erfüllt wird, in der Steuereinheit gespeichert werden kann, so dass sich der Roboter 12 korrekt verhält. The solver 30 may be, for example, an SAT solver or an SMT solver. As a result of the operation of the solver 30, it indicates a prediction 42, 44 as to whether the control unit 14 complies with the state instruction according to the logical formula φ based on the control program P (output 42) or violates the state instruction (output 44). If the state specification is violated, the program state 46, by which the state specification is violated, can be transmitted to a development unit 48, which can be designed such that the user adjusts the program code P and thereby generates a customized program code P 'which again checked by means of the translator 24 with respect to the state default and, if the state default is satisfied by the program code P ', can be stored in the control unit so that the robot 12 behaves correctly.
Die Überprüfungsvorrichtung kann so eine automatische Überprüfung von PLC-Programmen bereitstellen. Bei der Nutzung des Begrenzung k benötigt das PLC-Programm eine Aussagelogikformel cpk , die die Semantik des Programms darstellt, wenn höchstens k Befehle ausgeführt werden. Hier entspricht jeder Befehl des PLC-Programms einer Unterformel cpi, die k-mal in cpk vorkommt. Daher wächst cpk in O(kn), wobei n die Anzahl von Befehlen im Eingangsprogramm ist. The verification device can thus provide automatic verification of PLC programs. When using the limit k, the PLC program requires a statement logic cpk which represents the semantics of the program when executing at most k instructions. Here every command of the PLC program corresponds to a sub-formula cpi, which occurs k times in cpk. Therefore, cpk grows to O (kn), where n is the number of instructions in the input program.
Bei der begrenzten Modellprüfung (jedoch ebenso auch in anderen symbolischen Modellprüfungsmethoden, bei einer Überprü- fung auf Interpolierendenbasis und in induktiven Überprüfungstechniken) wird die Formel cpk in den Solver 30 eingeführt, der über ihre Erfüllbarkeit entscheidet. In the limited model check (but also in other symbolic model check methods, interpolation based check, and inductive check techniques), the formula cpk is introduced into the solver 30, which determines its satisfiability.
Bei der Überprüfungsvorrichtung 10 ist der Betrieb des In the checking device 10, the operation of the
Solvers 30 besonders effizient. Hierzu ist eine Komprimierungseinheit 50 bereitgestellt, die den übersetzten Programmcode P semantiktreu komprimiert, so dass das Modell 40 durch den Solver 30 mit weniger Prüfschritten in Bezug auf die Verletzung oder Einhaltung der Zustandsvorgabe überprüfen kann. Die Schlüsselidee hierbei ist ein neuer Vorverarbeitungsschritt, der es ermöglicht, das Modell eines PLC-Programms zu minimieren, während seine Semantik bewahrt wird. Es geht über den Stand der Technik der statischen Analyse hinaus, die heute als Vorberechnungen dienen, die konstante Faltung, Schlei- fenabwicklung und Programmtrennung sind. Solvers 30 particularly efficient. For this purpose, a compression unit 50 is provided, which compresses the translated program code P semantically, so that the model 40 can check through the solver 30 with fewer checking steps with respect to the violation or compliance with the condition specification. The key idea here is a new preprocessing step that allows the model of a PLC program to be minimized while preserving its semantics. It goes beyond the state of the art of static analysis, which today serve as pre-calculations, which are constant folding, loop processing and program separation.
Es kann z.B. folgendes Eingangsprogramm beispielhaft verarbeitete werden: 0 : x := x + y; It can e.g. the following input program are processed as examples: 0: x: = x + y;
1 : if (x < y) goto 6 ;  1: if (x <y) goto 6;
2 : x : = z + y;  2: x: = z + y;
3 : y : = y + 1 ;  3: y: = y + 1;
4 : x : = x + y;  4: x: = x + y;
5 : goto 1 ; 5: goto 1;
6 : z : = x; Es soll das einfache Eingangsprogramm betrachtet werden und angenommen werden, dass die Betriebszustände einer Steuereinheit gemäß dem Wert der Variable z beim Abschluss entscheidend sind. Dann kann das Programm unter Verwendung der bekannten Maßnahmen der konstanten Faltung, Schleifenabwicklung oder Programmtrennung nicht weiter minimiert werden . 6: z: = x; Consider the simple input program and assume that the operating states of a control unit are critical according to the value of variable z on completion. Then, the program can not be further minimized using the known constant convolution, loop, or program separation techniques.
Durch die Komprimierungseinheit 50 kann jedoch ein zusätzlicher Befehl entfernt und ein kleineres Modell 40 erhalten werden. Intuitiv können nämlich die Programmstellen 0 und 5 entfernt werden, wenn gleichzeitig ihre rechten Seiten in die Programmstellen 1, 2 und 7 ausgebreitet werden. Das Ergebnis der Kompression kann dann sein: if (x + y < y) goto 4; However, compression unit 50 may remove an additional command and obtain a smaller model 40. Namely, the program positions 0 and 5 can be removed intuitively, if at the same time their right sides are spread out into the program positions 1, 2 and 7. The result of the compression can then be: if (x + y <y) goto 4;
x : = z + y;  x: = z + y;
y := y + l;  y: = y + 1;
goto 0;  goto 0;
z : = x + y;  z: = x + y;
Die Methode der Komprimierungseinheit 50 ermöglicht eine Minimierung der Anzahl von Programmstellen, die nicht durch herkömmliche Techniken wie z. B. konstante Ausbreitung oder Programmtrennung erreicht wird. Sie kann eine Anpassung der Analyse verfügbarer Ausdrücke (available expressions) verwenden. Diese Analyse kann durch Aufnehmen von Informationen über die Programmstelle, von der die verfügbaren Ausdrücke stammen, erweitert werden. Durch Kombinieren dieser Informationen mit dem Ergebnis einer Reaching-Definitions-Analyse können genügend genaue Informationen abgeleitet werden, um das Steuerprogramm P über den Stand der Technik hinaus zu minimieren . The compression unit 50 method allows minimizing the number of program locations that are not overcome by conventional techniques, such as e.g. B. constant spread or program separation is achieved. It can use an adaptation of the analysis of available expressions. This analysis can be extended by including information about the program location from which the available expressions are derived. By combining this information with the result of a reaching definition analysis, sufficiently accurate information can be derived to minimize the control program P beyond the prior art.
Diese Art von Analyse ist kein Standard, da sie wenige Anwendungen in Gebieten außerhalb der Modellprüfung hat: This type of analysis is not a standard, as it has few applications in areas outside of model validation:
1. Sie beruht auf einem speziellen Zwischencode, der komplexe Gebilde auf den rechten Seiten von Zuweisungen ermöglicht, wie im obigen Beispiel an der Programmstelle 0 des komprimierten Steuerprogramms gezeigt ist. Dies steht zum klassischen Code mit drei Adressen im Gegensatz, der in Optimierungskompilierern verwendet wird. Auf der Basis des Codes mit drei Adressen wäre die Methode nicht anwendbar. 1. It is based on a special intermediate code that allows complex entities on the right sides of assignments as shown in the above example at the program point 0 of the compressed control program. This contrasts with the classic three-address code used in optimization compilers. Based on the three-address code, the method would not be applicable.
2. Überdies kann die Komprimierungseinheit 50 unter Verwendung der Ausdrucksausbreitung (expression propagation) die Anzahl von Programmstellen des Eingangsprogramms durch Erhöhen der Komplexität der rechten Seiten von Zuweisungen minimieren. Normalerweise wird in der Kompiliererkonstruktion die Einfachheit der Zuweisungen höher bewertet als die Länge des resultierenden Programms (z. B. weisen beim Code mit drei Adressen Programme üblicherweise eine große Anzahl von Programmstellen auf) . Daher ist dieser Typ von Vorwärtsausbreitung neu . 2. Moreover, the compression unit 50, using expression propagation, can minimize the number of program locations of the input program by increasing the complexity of the right sides of assignments. Normally in the compiler design, the simplicity of the assignments is valued higher than the length of the resulting program (eg, in the code with three-address programs, programs usually have a large number of program locations). Therefore, this type of forward propagation is new.
Die Verwendung der Analysen kann durch Konstruieren eines künstlichen Programms nach dem Schema des obigen, The use of the analyzes can be made by constructing an artificial program according to the scheme of the above,
unkomprimierten Steuerprogramms detektiert werden. Anstelle einer while-Schleife kann man auch verschachtelte if-then- else-Gebilde verwenden, um beliebig lange Programme zu erstellen, die unter Verwendung unserer Technik minimiert werden können. Der Kontrollfluss eines solchen Programms bleibt komplex, wenn die Vorwärtsausbreitung nicht verwendet wird. Dies ist in der Laufzeit eines Modellprüfers widergespiegelt, falls diesem eine Implementierung dieser Analyse fehlt. uncompressed control program are detected. Instead of a while loop, you can also use nested if-then-else formations to create arbitrarily long programs that can be minimized using our technique. The control flow of such a program remains complex if forward propagation is not used. This is reflected in the runtime of a model examiner if it lacks an implementation of this analysis.
Wenn die beschriebene Vorwärtsausbreitung (forward propagati- on) verwendet wird, wird die Zeit für die Modellprüfung dras- tisch verringert. If the described forward propagation is used, the time for the model check is drastically reduced.
Die Optimierungen werden durch die Tatsache motiviert, dass neben einigen Abweichungen, die durch den verwendeten Solver 30 eingeführt werden, die begrenzte Modellprüfung die Tendenz hat, ineffizienter zu werden mit zunehmender Größe des überprüften Programms P in der Form des Modells 40. Wenn man das Steuerprogramm P in einer solchen Weise optimieren kann, dass man ein minimales Programm mit derselben Semantik in Bezug auf die überprüfte Eigenschaft erhält, beschleunigt es folglich sehr wahrscheinlich. The optimizations are motivated by the fact that, in addition to some deviations introduced by the solver 30 used, the limited model check tends to become inefficient with increasing size of the checked program P in the form of the model 40. When considering the control program P can optimize in such a way that Consequently, getting a minimal program with the same semantics in terms of the property being checked will most likely accelerate it.
Da der Zwischencode des Modells 40 Ausdrücke mit beliebiger Länge unterstützt und das Ziel darin besteht, die Anzahl von Codezeilen zu verringern, werden durch die Komprimierungseinheit 50 mehrere Zuweisungen zu einer kombiniert durch Vergrößern des Ausdrucks, was das entgegengesetzte Ziel von Standard-Kompiliereroptimierungen ist, bei welcher die Anzahl von Berechnungen verringert werden soll und statt dessen neue Zuweisungen zu Pufferausdrucksergebnissen eingeführt werden. Da jedoch der Solver 30 effizient solche Ausdrücke berechnen kann, während er sich abmüht, Nachfolgekonfigurationen für Variablen zu berechnen, ist er effizienter mit weniger Zuweisungen und größeren Ausdrücken. Since the intermediate code of the model 40 supports expressions of any length and the goal is to reduce the number of lines of code, the compression unit 50 adds multiple assignments to one combined by enlarging the expression, which is the opposite goal of standard compiler optimizations which is to reduce the number of computations and instead introduce new allocations to buffer expression results. However, because the solver 30 can efficiently compute such expressions as it struggles to compute successor configurations for variables, it is more efficient with fewer allocations and larger expressions.
Um eine solche Übertragung eines Ausdrucks von ihren Zuweisungen zu späteren Lesezugriffen der Variable zu erreichen, wird zuerst eine Standard-Analyse verfügbarer Ausdrücke (kurz AvExp) angewendet, die mit Programmvariablen oder kurz Variablen ausgestattet ist, denen der Ausdruck zugewiesen ist. Das Problem bei dieser Ausbreitung besteht darin, dass die Ergebnisse häufig wie dies aussehen. To achieve such a transfer of an expression from its assignments to later read accesses of the variable, first a standard analysis of available expressions (AvExp for short) is applied, which is provided with program variables or, in short, variables to which the expression is assigned. The problem with this spread is that the results often look like this.
Hier sei ein Beispiel einer Motorsteuerung angeführt, wie sie als das Steuerprogramm P in der Steuereinheit 14 gespeichert sein kann. Die folgende Darstellung ist eine durch den Übersetzer 24 erzeuge symbolische Programmbeschreibung, also ein unkomprimiertes Modell: Here is an example of a motor control, as it may be stored as the control program P in the control unit 14. The following representation is a symbolic program description generated by the translator 24, ie an uncompressed model:
1 counter = counter + 1 1 counter = counter + 1
2 CJump (counter>n) 16  2 CJump (counter> n) 16
3 CJump (state = 1) 13  3 CJump (state = 1) 13
4 CJump (state = 2) 8 4 CJump (state = 2) 8
5 {control speed}  5 {control speed}
6 overpow=overpow V (speed > max)  6 overpow = overpow V (speed> max)
7 Jump 11 8 { speed up} 7 jump 11 8 {speed up}
9 overpow = overpow V (speed > max)  9 overpow = overpow V (speed> max)
10 CJump (speed = target) 15  10 CJump (speed = target) 15
11 warning = overpow V emergency  11 warning = overpow V emergency
12 Jump 16 12 Jump 16
13 {initialize motor}  13 {initialize engine}
14 overpow = overpow V (speed > max)  14 overpow = overpow V (speed> max)
15 warning = overpow  15 warning = overpow
16 stop  16 stop
FIG 2 zeigt den Kontrollflussgraphen zu dem Steuerprogramm P. FIG. 2 shows the control flow graph for the control program P.
Durch die Komprimierung mittels der Komprimierungseinheit 50 kann folgende komprimierte Programmbeschreibung als optimier- tes Modell 40 erhalten werden: By the compression by means of the compression unit 50, the following compressed program description can be obtained as an optimized model 40:
1 CJump (counter+l>n) 10 1 CJump (counter + l> n) 10
2 CJump (state = 1) 6  2 CJump (state = 1) 6
3 CJump (state = 2)  3 CJump (state = 2)
4 {control speed} 4 {control speed}
5 Jump 11  5 Jump 11
6 {speed up}  6 {speed up}
7 CJump (speed = target) 11  7 CJump (speed = target) 11
8 warning=overpow V (speed > max) V emergency  8 warning = overpow V (speed> max) V emergency
9 Jump 12 9 jump 12
10 {initialize motor}  10 {initialize engine}
11 warning = overpow V (speed > max)  11 warning = overpow V (speed> max)
12 stop Das komprimierte Steuerprogramm weist vier Programmzeilen weniger auf. Es wurden die Ausdrücke von Zeile 1 in das Lesen in Zeile 2 übertragen sowie die Ausdrücke der Zeilen 6, 9 und 14 mit den Zuweisungen in den Zeilen 11 und 15 kombiniert. Hierzu wendet die Komprimierungseinheit 50 die folgenden Prinzipien an:  12 stop The compressed control program has four fewer program lines. The expressions of line 1 were transferred to the reading in line 2 and the expressions of lines 6, 9 and 14 were combined with the assignments in lines 11 and 15. For this purpose, the compression unit 50 applies the following principles:
Definition 1 (Rekursive Zuweisung) : In Anbetracht einer Programmstelle a der Form x = exp definieren wir a als rekursiv, wenn x im Satz von Variablen, die in der Wertzuweisung exp vorkommen, enthalten ist, also ein Lesezugriff auf x in exp enthalten ist. Definition 1 (Recursive assignment): Considering a program point a of the form x = exp, we define a as recursive if x is contained in the set of variables that occur in the value assignment exp, ie a read access to x is contained in exp.
Um das gewünschte Ergebnis zu erreichen, benötigen wir zuerst AvExp, um rekursive Zuweisungen zu betrachten. Es ist zu beachten, dass wir manchmal auch den Ausdruck rekursiv nennen, wenn er von einer rekursiven Zuweisung stammt. In der Standardmethode sind diese Ausdrücke aus der gen-Funktion (siehe das obige Dokument von Nielson et al . ) ausgeschlossen, da die berechneten Ausdrücke in anschließenden Zeilen nicht verfügbar sind. Das einfache Erzeugen von rekursiven Ausdrücken in AvExp verhindert jedoch die Beendung der Ausbreitung, da wir uns auf die Tatsache verlassen, dass der ausgebreitete Code zu einem toten Code (dead code) bei der Standardausbreitung wird. Beim Ausbreiten (forward propagation) von rekursiven Ausdrücken werden jedoch keine Codezeilen tot, da das Ausbreiten der Zuweisung x = exp zu einem Ausdruck exp' das Auftreten von x in exp' durch exp ersetzt und folglich x in exp' beibehält. Im nächsten Durchlauf von erforderlichen Variablen wird x als wichtig betrachtet, genau wie die ursprüngliche Zuweisung, die daher nicht getrennt wird. Der nächste Durchlauf von AvExp breitet wieder exp aus, und so weiter. Daher müssen wir raffiniertere Möglichkeiten für die AvExp und die Ausdrucksausbreitung finden. To achieve the desired result, we first need AvExp to look at recursive assignments. It should be noted that sometimes we also call the expression recursive when it comes from a recursive assignment. In the standard method, these expressions are excluded from the gen function (see the above document by Nielson et al.) Because the computed expressions in subsequent lines are not available. However, simply generating recursive expressions in AvExp prevents the propagation from ending because we rely on the fact that the propagated code becomes a dead code in the standard propagation. However, in forward propagation of recursive expressions, no lines of code will be dead, since propagating the assignment x = exp to an expression exp 'will replace the occurrence of x in exp' by exp, and thus retain x in exp '. In the next pass of required variables, x is considered important, as is the original assignment, which is therefore not separated. The next run of AvExp expands exp, and so on. Therefore, we need to find more sophisticated possibilities for AvExp and expression propagation.
Der Schlüssel für eine die Semantik bewahrende, d.h. die sem- antiktrue Ausbreitung von rekursiven Zuweisungen ist die Erkenntnis, dass das Austauschen einer Variable gegen den zugewiesenen rekursiven Ausdruck nur zulässig ist, wenn die Quelle, d. h. die Zuweisung, entfernt werden kann. Um einen rekursiven Ausdruck exp, der x zugewiesen ist, zu entfernen, muss jedes Lesen von x, das von der Zuweisung erreicht werden kann, durch exp ersetzt werden, um die Semantik aufrechtzuerhalten. Für diesen Zweck müssen wir Label oder Bezeichnungsinformationen in AvExp aufnehmen, so dass wir den Ursprung des Ausdrucks bestimmen können. Um das ursprüngliche Verhal- ten von AvExp aufrechtzuerhalten, definieren wir die LUB (least upper bound) durch Anwenden der Standard-LUB von AvExp auf die Projektion auf Variable und Ausdruck. The key to preserving semantics, that is, semantics-critical propagation of recursive assignments, is to recognize that exchanging a variable for the assigned recursive expression is only permissible if the source, ie the assignment, can be removed. In order to remove a recursive expression exp assigned to x, any reading of x that can be reached by the assignment must be replaced by exp to maintain the semantics. For this purpose, we need to include label or label information in AvExp so that we can determine the origin of the expression. To reflect the original behavior To maintain AvExp, we define the LUB (least upper bound) by applying the default LUB of AvExp to the projection on variable and expression.
Definition 2 (Erweiterte Analyse von verfügbaren Ausdrücken) Die erweiterte Analyse von verfügbaren Ausdrücken kann durch das folgende Datenflusssystem formalisiert werden: eine begrenzte Menge von Labels L = Lp Definition 2 (Extended analysis of available expressions) The extended analysis of available expressions can be formalized by the following data flow system: a limited set of labels L = L p
eine Menge von extremalen Labels E = init (p) c L eine Flussverknüpfung F c L x L  a set of extremal labels E = init (p) c L a flux link F c L x L
einen vollständigen Lattice  a complete lattice
(D, C) = (2LxVarp X EXP , _2Var,Exp) (D, C) = (2 LxVarp X EXP , _2 V ar, E xp)
erfüllend die ACC (Accending Chain Condition) mit der LUB U und dem geringsten Element (least element) 1 = D einen extremalen Wert 0 e D und  fulfilling the ACC (Accending Chain Condition) with the LUB U and the least element 1 = D an extreme value 0 e D and
eine Sammlung monotoner Übertragungsfunktionen (transfer functions) { cpi | 1 e L} of type cpi : D -> D . wobei  a collection of monotone transfer functions {cpi | 1 e L} of type cpi: D -> D. in which
cpi (T) = (T\killi) U gen! geni = { (l,x,exp) } falls cmd = Assign (x, exp) cpi (T) = (T \ killi) U gen ! geni = {(l, x, exp)} if cmd = Assign (x, exp)
0 sonst  0 otherwise
killi = { (1' , x' , exp' ) I e Varexp } U {(l',x,exp killi = {(1 ', x', exp ') I e Var exp } U {(l', x, exp
falls cmd1 = Write (x, if cmd 1 = Write (x,
0 sonst  0 otherwise
Für A, B c L x Varp x EXP im Programm P For A, B c L x Var p x EXP in program P
A c B iff V (l,v,e) eB Ξ (l',v,e) eA A c B iff V (l, v, e) eB Ξ (l ', v, e) eA
=> A II B = U{(l,v,e), (l',v,e), (l,v,e) e A, (1 ' , v, e) e B}.  => A II B = U {(l, v, e), (l ', v, e), (l, v, e) e A, (1', v, e) e B}.
0 steht hier für die leere Menge. 0 stands for the empty set.
Für zusätzliche Informationen über Abhängigkeiten zwischen dem Lese- und Schreibzugriff auf Variablen wird eine For additional information about dependencies between read and write access to variables, a
Reaching-Definitions-Analyse verwendet. Gemäß der Reaching- Definitions nennen wir eine WertZuweisung eine „Definition" oder kurz def und einen Lesezugriff der zugewiesenen Variable eine Verwendung oder kurz use. Reaching definition analysis used. According to the Reaching definitions, we call a value assignment a "definition" or short def and read access the assigned variable one use or short use.
Definition 3 (Reaching-Definitions ) : Definition 3 (Reaching Definitions):
AIvdef soll die Information sein, die von der Reaching- Definitions-Analyse für alle Bezeichnungen erhalten wird, und Allrdef soll der Satz von Informationen für die Bezeichnung 1 sein. Wir definieren: Al^ef := { (χ' , 1' ) I x = x' } · AIvdef shall be the information obtained from the Reaching Definition Analysis for all designations, and Allrdef shall be the set of information for designation 1. We define: Al ^ ef = {(χ ', 1) I x = x'} *
Definition 4 (Gefilterte Informationen von verfügbaren Ausdrücken) : Definition 4 (Filtered information of available expressions):
In Anbetracht einer Analyseinformation Alavexp für das Pro- gramm p und Allavexp für die Bezeichnung 1 im Programm p definieren wir
Figure imgf000020_0001
:= {(1', χ', exp') | x = x'}. Modifizierte Vorwärtsausdrucksausbreitung :
Considering an analysis information Alavexp for the program p and Allavexp for the designation 1 in the program p we define
Figure imgf000020_0001
: = {(1 ', χ ', exp ') | x = x '}. Modified forward expression propagation:
Wenn wir nun unsere Ausbreitung starten, prüfen wird für jedes Element in  Now, when we start our propagation, check for each element in
{1 I Vx, exp, l".cmdi = Assign (x exp) V cmdi = CondJump (exp) 1"} und jede Variable χΛ in exp, ob es erreicht wird von ei- ner existierenden Definition def, ob also {1 I Vx, exp, l ".cmdi = Assign (x exp) V cmdi = CondJump (exp) 1"} and every variable χ Λ in exp, whether it is reached by an existing definition def, that is
Al^'rdef (Χ' , ?) .  Al ^ 'rdef (Χ',?).
Wenn dies nicht der Fall ist, wird x' auf keinem Programmpfad oder kurz Pfad geschrieben, der zu 1 führt, d.h. x' ist eine Eingabe oder ein System-Flag. Ansonsten können drei Fälle unterschieden werden: If this is not the case, x 'is not written on any program path or short path leading to 1, i. x 'is an input or a system flag. Otherwise, three cases can be distinguished:
(a) Es existieren keine Analyseinformationen von AvExp für die Variable x', d. h. , i.e. AI1,x, avexp = 0 oder AIl,x'avexp = 0. Wenn eine rekursive Zuweisung zu x' bei 1' mit Verwendung in 1 existiert, d. h. AI1,x, rdef = (χ', 1') oder Al^x^def = (χ', 1') mit emdl, eine rekursive Zuweisung, markiert die Komprimierungseinheit 50 die Programmstelle 1' mit einer Blockierungsmarke als blockiert. (a) There is no analysis information of AvExp for the variable x ', ie, AI 1, x, avexp = 0 or AIl, x'avexp = 0. If a recursive assignment to x' exists at 1 'with use in 1 , ie AI 1, x, rdef = (χ ', 1') or Al ^ x ^ def = (χ ', 1') with emdl, a recursive assignment, marks the Compression unit 50, the program point 1 'with a blocking mark as blocked.
Wenn der Wert, der x' bei 1' zugewiesen ist, 1 erreicht, aber der zugewiesene Ausdruck gemäß AvExp nicht, kann er nicht ausgebreitet werden. Daher können nicht alle Lesungen von x' durch den entsprechenden Ausdruck ersetzt werden und die ursprüngliche Zuweisung an der Bezeichnung 1' kann nicht entfernt werden. Dies kann einen "Domino"-Effekt von blockierenden rekursiven defs durch die entsprechenden def-use-Ketten auslösen . b) Es existiert genau ein Eintrag in AI1,x, avexp, e.g. (1', χ ' , exp'). Falls Ai1,x' rdef Π { (x ' , ?)} = 0 und 1' ist nicht blockiert, dann markieren wir 1' als möglicherweise sicher, ansonsten blockieren wir 1'. If the value assigned to x 'at 1' reaches 1, but the assigned expression does not conform to AvExp, it can not be propagated. Therefore, not all readings of x 'can be replaced by the corresponding expression and the original assignment to label 1' can not be removed. This can trigger a "domino" effect of blocking recursive defs through the corresponding defuse chains. b) There exists exactly one entry in AI 1, x, avexp , eg (1 ', χ', exp '). If Ai 1, x ' rdef Π {(x',?)} = 0 and 1 'is not blocked, then we mark 1' as possibly safe, otherwise we block 1 '.
(c) Es existiert mehr als ein Eintrag in AI1,x' avexp. Dann muss jeder Eintrag denselben Ausdruck exp' zu x' zuweisen, aber von unterschiedlichen Labels, was im Folgenden als L' bezeichnet wird. (c) There is more than one entry in AI 1, x ' avexp . Then each entry must assign the same expression exp 'to x', but from different labels, which is referred to below as L '.
Falls die Wertzuweisung x' = exp' rekursiv ist, AI1,x, rdef Π { (x' , ?) } = 0 und es existiert kein 1' e L' das blockiert ist, dann können wir alle 1' e L' als möglicherweise sicher markieren, ansonsten blockieren wir alle 1' e L'. If the value assignment x '= exp' recursively, AI 1, x, rdef Π {(x ',?)} = 0 and there is no 1' e L 'that is blocked, then we can all 1' e L ' mark as possibly safe, otherwise we will block all 1 'e L'.
Wenn der obige Algorithmus ausgeführt wird, bis ein Fixpunkt erreicht wird, ist das Ergebnis der kleinste Fixpunkt der sicheren rekursiven Zuweisungen. Diese sicheren rekursiven Zuweisungen werden nicht durch irgendeine andere Zuweisung blockiert und können daher ohne Änderung der Semantik ausgebreitet und entfernt werden. Es ist zu beachten, dass, wenn irgendeine Variable in einem Ausdruck bei irgendeiner Bezeichnung 1" durch einen sicheren rekursiven Ausdruck ersetzt wird, wir 1" blockieren müssen, um keine falschen Ausdrücke auszubreiten . Es ergibt sich somit ein Verfahren zum Beschleunigen der formalen Korrektheitsprüfung eines Programmcodes eines programmierbaren Logikcontrollers mit mindestens zwei Befehlen durch Modellminimierungen, gekennzeichnet durch Vorverarbeiten des Programmcodes und Minimieren der Anzahl von Programmstellen durch Entfernen von Befehlen durch Ausdrucksausbreitung. Zudem ergibt sich ein System, das zum Durchführen des Verfahrens ausgelegt ist. If the above algorithm is executed until a fix point is reached, the result is the smallest fixed point of the safe recursive assignments. These secure recursive assignments are not blocked by any other assignment and therefore can be expanded and removed without changing the semantics. It should be noted that if any variable in an expression at any designation 1 "is replaced by a secure recursive expression, we must block 1" so as not to propagate false expressions. Thus, there is provided a method for speeding up the formal correctness testing of a program code of a programmable logic controller having at least two instructions by model minimizations, characterized by preprocessing the program code and minimizing the number of program locations by removing instructions by expression propagation. In addition, there is a system that is designed to carry out the method.
Insgesamt zeigt das Beispiel, wie durch die Erfindung ein Verfahren und ein System zur Beschleunigung eine Verifikation der formalen Korrektheit eines Programms für eine programmierbare Steuerung bereitgestellt werden können. Overall, the example shows how the invention can provide a method and system for acceleration to verify the formal correctness of a program for a programmable controller.
Bezugszeichenliste LIST OF REFERENCE NUMBERS
10 Überprüfungseinrichtung 12 Montageroboter 10 Inspection device 12 Assembly robot
14 Steuereinheit  14 control unit
16 Roboterarm  16 robotic arm
18 Schwenkbewegungen  18 pivoting movements
20 zulässiger Bewegungsbereich 22 Sperrbereich  20 permissible range of motion 22 restricted area
24 Übersetzer  24 translators
26 Bedieneinheit  26 operating unit
28 zentrale Steuerung  28 central control
30 Solver  30 solvers
32 Bildschirm  32 screen
34 Eingabeeinrichtung  34 input device
36 Begrenzung  36 limitation
38 Formel  38 formula
40 Programmbeschreibung  40 Program description
42, 44 Ausgabe  42, 44 issue
46 Programmzustand  46 Program state
48 Entwicklungstool  48 development tool
50 Komprimierungseinheit 50 compression unit
S10 bis S18 Verfahrensschritt S10 to S18 process step
P Steuerprogramm  P control program

Claims

Patentansprüche claims
1. Verfahren zum Überprüfen einer Steuereinheit (14) daraufhin, ob die Steuereinheit (14) bei Ausführung eines Steuerprogramms (P) nur gemäß einer Zustandsvorgabe (20, 22) gültige, durch Programmvariablen des Steuerprogramms (P) definierte Betriebszustände einnimmt, wobei bei dem Verfahren durch eine Solvereinheit (30) die Erfüllbarkeit der Zustandsvorgabe (20, 22) durch das Steuerprogramm (P) dadurch überprüft wird, dass in dem Steuerprogramm (P) alle im Betrieb möglichen Werte der Programmvariablen ermittelt werden, 1. A method for checking a control unit (14) to determine whether the control unit (14) when executing a control program (P) only in accordance with a state default (20, 22) valid, defined by program variables of the control program (P) operating states, wherein the Method by a solver unit (30) the satisfiability of the state specification (20, 22) by the control program (P) is checked by the fact that in the control program (P) all possible values of the program variables are determined in operation,
dadurch gekennzeichnet, dass characterized in that
durch eine Komprimierungseinheit (50) in dem Fall, dass eine erste Programmstelle einen Lesezugriff auf eine der Programmvariablen umfasst, ermittelt wird, an welcher vorangehenden zweiten Programmstelle durch eine vorangehende rekursive Wertzuweisung dieser Programmvariable ein Wert zugewiesen wird, und an der ersten Programmstelle der Lesezugriff mit der vorangehenden Wertzuweisung ersetzt und die zweite Programmstelle gelöscht wird. by a compression unit (50) in the event that a first program location comprises a read access to one of the program variables, at which preceding second program location a value is assigned by a preceding recursive value assignment of this program variable and at the first program location the read access with the previous value assignment is replaced and the second program location is deleted.
2. Verfahren nach Anspruch 1, wobei zusätzlich zu der zweiten Programmstelle noch eine der ersten Programmstelle vorangehende dritte Programmstelle ermittelt wird, an welcher alternativ zur zweiten Programmstelle der Programmvariable durch eine alternative Wertzuweisung ein Wert zugewiesen wird, und an der ersten Programmstelle der Lesezugriff nur ersetzt wird sowie die zweite und die dritte Programmstelle nur gelöscht werden, falls die Wertzuweisungen an der zweiten und der dritten Programmstelle gleich sind. 2. The method of claim 1, wherein in addition to the second program point still one of the first program point preceding third program location is determined to which alternative to the second program location of the program variable by an alternative value assignment is assigned a value, and at the first program point of the read access only replaced and the second and third program locations will only be deleted if the value assignments at the second and third program locations are the same.
3. Verfahren nach einem der vorhergehenden Ansprüche, wobei in dem Steuerprogramm jede Wertzuweisung mit einem individuellen Label gekennzeichnet wird. 3. The method according to any one of the preceding claims, wherein in the control program each value assignment is marked with an individual label.
4. Verfahren nach einem der vorhergehenden Ansprüche, wobei an der ersten Programmstelle und an jeder anderen Programmstelle mit einem Lesezugriff auf die Programmvariable der je- weilige Lesezugriff durch die Wertzuweisung von der zweite Programmstelle ersetzt wird. 4. The method according to any one of the preceding claims, wherein at the first program point and at each other program point with a read access to the program variable of each The read access is replaced by the value assignment from the second program point.
5. Verfahren nach einem der vorhergehenden Ansprüche, wobei die zweite Programmstelle mittels einer vorwärtsgerichteten Datenflussanalyse zum Ermitteln der Verfügbaren-Ausdrücke ermittelt wird. 5. The method according to any one of the preceding claims, wherein the second program point is determined by means of a forward data flow analysis for determining the available expressions.
6. Verfahren nach Anspruch 5, wobei die zweite Programmstelle mit einer das Löschen blockierenden Blockierungsmarke markiert wird, falls gemäß der Datenflussanalyse eine Verfügbarkeit an der ersten Programmstelle fehlt. 6. The method of claim 5, wherein the second program location is marked with an erase blocking blocking mark if, according to the data flow analysis, an availability at the first program location is missing.
7. Verfahren nach einem der vorhergehenden Ansprüche, wobei die zweite Programmstelle nur ermittelt wird, falls eine Reaching-Definition-Analyse der ersten Programmstelle eine nicht-leere Lösungsmenge anzeigt. 7. The method according to any one of the preceding claims, wherein the second program point is only determined if a reaching-definition analysis of the first program point indicates a non-empty solution amount.
8. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Steuerprogramm mehrmals iterativ durch die Komprimierungseinheit komprimiert wird. 8. The method according to any one of the preceding claims, wherein the control program is iteratively compressed several times by the compression unit.
9. Verfahren nach Anspruch 8, wobei das iterative Komprimieren beendet wird, falls bei der zuletzt durchgeführten Iteration das Steuerprogramm unverändert geblieben ist. 9. The method of claim 8, wherein the iterative compression is terminated if the control program has remained unchanged in the last performed iteration.
10. Überprüfungsvorrichtung (10) zum Überprüfen einer Steuereinheit (14) daraufhin, ob die Steuereinheit (14) bei Ausführung eines Steuerprogramms (P) nur gemäß einer Zustandsvorga- be (20, 22) gültige, durch Programmvariablen des Steuerprogramms (P) definierte Betriebszustände einnimmt, aufweisend:10. checking device (10) for checking a control unit (14) then whether the control unit (14) when executing a control program (P) only in accordance with a state Vorga- be (20, 22) valid, defined by program variables of the control program (P) operating states occupies, comprising:
- eine Eingabeeinheit (26) zum Empfangen einer Benutzereingabe der Zustandsvorgabe (20, 22) und - An input unit (26) for receiving a user input of the state default (20, 22) and
- eine Solvereinheit (30) zum Überprüfen einer durch das Steuerprogramm (P) zu erreichenden Erfüllbarkeit der Zustandsvorgabe (20, 22) ,  a solver unit (30) for checking a satisfiability of the condition specification (20, 22) to be achieved by the control program (P),
dadurch gekennzeichnet, dass eine Komprimierungseinheit (50) bereitgestellt ist, die dazu ausgelegt ist, ein Verfahren nach einem der vorhergehenden Ansprüche durchzuführen . characterized in that a compression unit (50) is provided which is adapted to perform a method according to any one of the preceding claims.
PCT/EP2014/064782 2013-07-23 2014-07-10 Prognosis of the operating behavior of a control unit WO2015010912A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP13177588.4 2013-07-23
EP13177588 2013-07-23

Publications (1)

Publication Number Publication Date
WO2015010912A1 true WO2015010912A1 (en) 2015-01-29

Family

ID=48874834

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2014/064782 WO2015010912A1 (en) 2013-07-23 2014-07-10 Prognosis of the operating behavior of a control unit

Country Status (1)

Country Link
WO (1) WO2015010912A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11631902B2 (en) 2014-01-28 2023-04-18 Lithium Werks Technology Bv Cylindrical electrochemical cells and method of manufacture

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060282806A1 (en) * 2005-06-03 2006-12-14 Nec Laboratories America, Inc. Software verification using range analysis
DE102007059480A1 (en) * 2007-12-11 2009-06-18 Kuka Roboter Gmbh Manipulator e.g. articulated-arm robot, position monitoring method, involves determining permissible position of manipulator, and outputting message indicating whether articulation co-ordinates of manipulator lies outside permissible region

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060282806A1 (en) * 2005-06-03 2006-12-14 Nec Laboratories America, Inc. Software verification using range analysis
DE102007059480A1 (en) * 2007-12-11 2009-06-18 Kuka Roboter Gmbh Manipulator e.g. articulated-arm robot, position monitoring method, involves determining permissible position of manipulator, and outputting message indicating whether articulation co-ordinates of manipulator lies outside permissible region

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
YEUNG W L ET AL: "Formal verification of fault-tolerant software design: the CSP approach", MICROPROCESSORS AND MICROSYSTEMS, IPC BUSINESS PRESS LTD. LONDON, GB, vol. 29, no. 5, 1 June 2005 (2005-06-01), pages 197 - 209, XP027766883, ISSN: 0141-9331, [retrieved on 20050601] *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11631902B2 (en) 2014-01-28 2023-04-18 Lithium Werks Technology Bv Cylindrical electrochemical cells and method of manufacture

Similar Documents

Publication Publication Date Title
DE102015207656B4 (en) Method and system for testing control software of a controlled system
DE60017457T2 (en) PROCEDURE FOR ISOLATING AN ERROR IN ERROR MESSAGES
DE69909945T2 (en) Method and arrangement for correlating profile data dynamically generated by an optimized executable program with source code instructions
Benedetti et al. Bounded model checking for past LTL
CN107633155B (en) Method and apparatus for computer-based generation of component fault trees
EP1922613A2 (en) Method and device for automatically evaluating a software source code quality
DE102005055133A1 (en) System for machine-aided design of technical devices
DE102011014830A1 (en) METHOD AND DEVICE FOR ANALYZING SOFTWARE
DE102012100392A1 (en) Efficient source for determining inaccuracy in timed automata tracks
DE102016102945A1 (en) Code analysis to provide privacy in ETL systems
DE102018116911A1 (en) Method for generating source code
DE102010033861A1 (en) On a formal analysis based development of requirements specifications
EP3047341B1 (en) System for the computer-assisted creation of rules for monitoring and/or diagnosing a technical plant
EP2363809B1 (en) Method for optimizing a control program for actuators
EP2433189B1 (en) Method for analyzing message archives and corresponding computer program to generate a finite states machine
DE102009050161A1 (en) A method and apparatus for testing a system having at least a plurality of parallel executable software units
DE102021116315A1 (en) Method for merging architectural information
DE202016008006U1 (en) Generation of integration tests on a small scale
WO2015010912A1 (en) Prognosis of the operating behavior of a control unit
WO2000002162A1 (en) Device and method for constructing a virtual installation model
DE102018204952A1 (en) Test method of a mechatronic system
DE102010047954A1 (en) Formal offline verification of executable models
DE102019008598A1 (en) Identification and visualization of associations between code generated by a model and sources that influence code generation
DE10325513B4 (en) Method and apparatus for creating a behavioral aspect of a formal verification circuit
DE102010047957A1 (en) Formal online verification of executable models

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14739770

Country of ref document: EP

Kind code of ref document: A1

DPE1 Request for preliminary examination filed after expiration of 19th month from priority date (pct application filed from 20040101)
NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14739770

Country of ref document: EP

Kind code of ref document: A1