Verfahren zur Ausführungszeitoptimierung für Umsetzungen von zustande- bzw. ablauforientierten Modellen in reale LösungenProcedure for optimizing execution time for the implementation of state- or process-oriented models in real solutions
Beschreibung der Ausführungszeitoptimierung für Umsetzungen von zustands- bzw. ablauforientierten Modellen in reale LösungenDescription of the execution time optimization for the implementation of condition- or process-oriented models in real solutions
Die Kettenoptimierung (Ko), gemäß Patentanspruch 2, ist anwendbar auf alle Abbildungen eines Modells und kann mit der Elementoptimierung (Eo), gemäß Patentanspruch 3, gleichzeitig angewendet sein, wobei die Strategien gemäß Patentanspruch 5 innerhalb einer Abbildung beliebig wechseln, mehrfach und gleichzeitig anzuwenden sind.The chain optimization (Ko), according to claim 2, is applicable to all images of a model and can be used simultaneously with the element optimization (Eo), according to claim 3, whereby the strategies according to claim 5 change arbitrarily within one image, multiple times and simultaneously are.
Ko geht davon aus, daß zusammenhängende Kausalketten (unverzweigte Folge von Modellelementen) in denen es keinen aktiven (markierten) Zustand gibt, nicht bearbeitet werden müssen. Dies begründet sich damit, daß nur von einem aktiven Zustand ein Zustandswechsel ausgehen kann. Ein aktiver Zustand wird aufgefaßt, als ein Zustand der eine Markierung aufweist, die zu mindestens einem Zustandswechsel (schalten einer Transition) beitragen kann. Demnach müssen nur Kausalketten bearbeitet werden, in denen es eine Markierung (Menge aller aktiven Zustände) gibt. Je mehr Modellelemente sich in einer Kausalkette befinden, desto höher ist der Einsparungseffekt. Zur Koordinierung der Ausführung von Kausalketten wird beispielsweise sobald eine Marke in die Kette eintritt ein oder mehrere Flags (versteckter Zustand) (Abbildung 1 (1)) gesetzt. Anhand des Flags ist zu entscheiden, ob die Kette bearbeitet wird oder nicht. Im Moment des Verlassens der letzten Marke einer Kette wird das Flag wieder zurückgesetzt (vgl. Beispiel 1), wodurch die Bearbeitung danach ausbleibt. Das hier verwandte Flag ist eine Variante der Elementverwaltung gemäß Patentanspruch 4.Ko assumes that coherent causal chains (unbranched sequence of model elements) in which there is no active (marked) state need not be processed. The reason for this is that a change of state can only start from an active state. An active state is understood as a state that has a marker that can contribute to at least one change of state (switching a transition). Accordingly, only causal chains need to be processed in which there is a marking (set of all active states). The more model elements are in a causal chain, the greater the savings effect. To coordinate the execution of causal chains, for example, as soon as a brand enters the chain, one or more flags (hidden state) are set (Figure 1 (1)). The flag is used to decide whether the chain is processed or not. As soon as the last mark of a chain is left, the flag is reset (see example 1), which means that the processing does not take place. The flag used here is a variant of element management according to claim 4.
Können in einer Kausalkette mehrere Zustände markiert sein, kann das Flag auch ein FIFO, ein Zähler oder ein anderer Mechanismus sein. Das Flag wird hier nur beispielhaft verwendet. Elemente des Steuerungsnetzes können zusätzlich auch als Flag fungieren.If several states can be marked in a causal chain, the flag can also be a FIFO, a counter or another mechanism. The flag is used here only as an example. Control network elements can also function as a flag.
Eine Erweiterung dieses Prinzips führt zu einem Optimierungsnetz, das die Ausführungsverwaltung des eigentlichen Steuerungsnetz übernimmt.An extension of this principle leads to an optimization network, which takes over the execution management of the actual control network.
Sehr lange Kausalketten können unter dem Gesichtspunkt der gesteigerten Performance über mehrere Ko- Flags (Abbildung 1 (1)) verfügen, die jeweils einen Teil der gesamten Kette kontrollieren, somit wird auch noch ein Einsparungseffekt erzielt, wenn ein aktiver Zustand sich in einem Teil einer Kette befindet. Da der Grad der Optimierung im wesentlichen von der Länge der Kausalketten abhängt und ggf. von der Zeit, die eine Kausalkette markenfrei ist, und der Eigenschaften, die die Zielsprache (z.B. Sprünge mit dynamischen Zielen) bietet, kann eine Berechnung (ggf. empirisch) erfolgen, deren Ergebnis eine Auskunft gibt, ob eine Ko einer Kette lohnt oder nicht. Damit kann die Abbildung eines Modells Ketten mit und ohne Ko enthalten. l.d.R. werden Ko- Flags, auch wenn sie durch Modellelemente dargestellt werden können, nicht im Modell explizit mit angegeben, da sie lediglich die Funktion der Codeoptimierung übernehmen. Ggf. kann die explizite Darstellung jn Software- Werkzeugen (Tools) als eine Betriebsart dieser Tools hilfreich sein. Eine effiziente Variante, sofern die Programmiersprache und/oder das Betriebssystem und / oder die Entwicklungsumgebung dies unterstützt, ist, daß ein Vorgänger- Element (beim Schalten) alle Nachfolger- Elemente, die anschließend aufgrund des Modellzustandes einen Zustandswechsel herbeiführen können, in eine dynamische Liste einträgt und sich selbst und ggf. weitere aus dieser Liste entfernt. Die Liste enthält alle Modellelemente, die Aufgrund des Modellzustandes bearbeitet werden müssen, oder nicht bearbeitet werden müssen, je nach dem was nutzbringender ist. Oft ist der Verwaltungsaufwand der Listen sehr hoch, so daß der Nutzen erst ab einer bestimmten Netzgröße gegeben ist. In diesem Fall können die Flags einen Pointer oder ähnliche Mechanismen darstellen.From the point of view of increased performance, very long causal chains can have several co-flags (Figure 1 (1)), each of which controls part of the entire chain, so that a saving effect is also achieved if an active state is in part of one Chain is located. Since the degree of optimization essentially depends on the length of the causal chains and, if applicable, on the time that a causal chain is brand-free and the properties that the target language offers (e.g. jumps with dynamic goals), a calculation (possibly empirically) the result of which provides information as to whether a knockout from a chain is worthwhile or not. This means that the illustration of a model can contain chains with and without knockout. l.d.R. co-flags, even if they can be represented by model elements, are not explicitly specified in the model, since they only take on the function of code optimization. Possibly. Explicit representation in software tools as an operating mode of these tools can be helpful. An efficient variant, provided that the programming language and / or the operating system and / or the development environment supports this, is that a predecessor element (when switching) all the successor elements, which can then cause a change of state due to the model state, in a dynamic list entries and removes himself and possibly others from this list. The list contains all model elements that have to be edited due to the model state, or do not have to be edited, depending on which is more useful. Often the administrative effort of the lists is very high, so that the benefits are only available from a certain network size. In this case, the flags can represent a pointer or similar mechanisms.
Der obere Programmcode (Beispiel 1 ) zeigt, daß nur die Programmzeilen bis zum Befehl RET der ständigen Bearbeitung unterliegen, während der Teil von T2 bis zur letzten Zeile nur bearbeitet wird, wenn das Ko- Flag es gestattet. Der untere Programmcode unterliegt vollständig (jede Zeile) der Bearbeitung.The upper program code (example 1) shows that only the program lines up to the RET command are subject to constant processing, while the part from T2 to the last line is only processed if the co-flag allows it. The lower program code is completely (every line) subject to processing.
Die Elementoptimierung (Eo), gemäß Patentanspruch 3, ist im wesentlichen für SPS und SPS- ähnliche Bearbeitungsmechanismen geeignet. Läßt sich neben den Modellelementen die für die Zustandsüber- gänge zuständig sind auch für Zustände (Lupen) und Aktionen (IEC61131) und andere Modellelemente anwenden. Dabei erfolgt die Abbildung der einzelnen Modellelemente strukturiert (Abbildung 2).
D.h., die Schaltbedingung (oder ähnliche Mechanismen) wird von der Schalthandlung (oder ähnlicheThe element optimization (Eo), according to claim 3, is essentially suitable for PLC and PLC-like processing mechanisms. In addition to the model elements responsible for the state transitions, it can also be used for states (magnifying glasses) and actions (IEC61131) and other model elements. The individual model elements are structured (Figure 2). That is, the switching condition (or similar mechanisms) is determined by the switching action (or similar
Mechanismer i) getrennt.Mechanism i) separately.
T1 :T1:
LD P1LD P1
R P1R P1
S FlagS flag
S P2S P2
S P3S P3
Ko Abfrage: ("Bearbeitung der*)Ko query: ("Processing the *)
LD Flag ("Kausaikette, nur wenn *)LD Flag ("causal chain, only if *)
JMPC T2 (*Flag gesetzt ist*)JMPC T2 (* flag is set *)
Tn:Tn:
LD P2LD P2
AND PnAND Pn
AND Flag (*Nicht unbedingt erforderlich*)AND Flag (* not essential *)
R P2R P2
R PnR Pn
R FlagR flag
S P1S P1
RET ("Logisches Bausteinende*)RET ("Logical module end *)
T2:T2:
LD P3LD P3
R P3R P3
S P4S P4
.... weitere Modellelemente.... further model elements
JMP TnJMP Tn
T1 :T1:
LD P1LD P1
R P1R P1
S P2S P2
S P3S P3
T2:T2:
LD P3LD P3
R P3R P3
S P4S P4
.... weitere Modellelemente.... further model elements
Tn:Tn:
LD P2LD P2
AND PnAND Pn
R P2R P2
R PnR Pn
S P1S P1
Beispiel 1 Abbildung des Modells aus Abbildung 1 mit der SPS- Programmiersprache AWL genormt mit DIN EN 61131-3. oben mit Ko und unten ohne Ko (Auf die notwendige Variablendeklaration wurde verzichtet).Example 1 Illustration of the model from Figure 1 with the PLC programming language AWL standardized with DIN EN 61131-3. above with Ko and below without Ko (the necessary variable declaration has been dispensed with).
Letztere wird nur bearbeitet, wenn die Bedingung der Schalthandlung erfüllt ist und das sogenannte Schalten (oder ähnliches) stattfindet. Dies könnte beispielsweise mit einem Sprungverteiler, einer Liste oder Tabelle erfolgen.The latter is only processed if the condition of the switching action is fulfilled and the so-called switching (or similar) takes place. This could be done, for example, with a jump distributor, a list or a table.
In diesem Beispiel ist die durch Ko kontrollierte Kausalkette (kurz Ko- Kette) zwar immer markiert, wenn auch P2 markiert ist, so daß der Einsparungseffekt nur bei einer Markierung von P1 eintritt, aber zur Erläuterung der Wirkungsweise ist es hinreichend. Ferner wurde auf komplexere Schaltbedingungen der Einfachheit halber verzichtet.
T1 :In this example the causal chain controlled by Ko (Ko chain for short) is always marked, even if P2 is marked, so that the saving effect only occurs when P1 is marked, but it is sufficient to explain the mode of action. Furthermore, more complex switching conditions have been omitted for the sake of simplicity. T1:
LD P1LD P1
AND P2AND P2
JMPC VerzweigungJMPC branching
T2:T2:
RET (*Logisches Programmende*)RET (* Logical program end *)
Verzweigung:Branch:
R P1R P1
R P2R P2
S P3S P3
S P4S P4
S P5S P5
S P6S P6
S P7S P7
JMP T2JMP T2
T1 :T1:
LD P1LD P1
AND P2AND P2
R P1R P1
R P2R P2
S P3S P3
S P4S P4
S P5S P5
S P6S P6
S P7S P7
T2:T2:
Beispiel 2 Realisierte Umsetzung des Modellelementes T1 aus Abbildung 3 (oben mit Eo und unten ohne Eo) mit der SPS- Programmiersprache AWL, genormt mit DIN EN 61131-3Example 2 Realized implementation of the model element T1 from Figure 3 (above with Eo and below without Eo) with the PLC programming language STL, standardized with DIN EN 61131-3
Da die Einführung eines Programmsprungs (Programmverzweigung) hin zur Schalthandlung und wieder zurück zum Sprungverteiler zusätzlich Rechenzeit kostet, kann eine plattformabhängige Berechnung einer möglichen Optimierung erfolgen. Diese ermittelt, ob das Modellelement besser linear oder strukturiert abgebildet wird. Ausschlaggebende Faktoren einer solchen Berechnung sind die Anzahl der Kanten (Kante: (Baumgarten, B.: Petri- Netze: Grundlagen und Anwendungen. Mannheim, Wien, Zürich: Wissenschaftsverlag 1990. ISBN 3-411-14291 : Seite 17) bzw. deren benötigte Rechenzeit, die benötigte Rechenzeit der Programmverzweigung (Sprünge). In ungünstigen Fällen kann es auch zu einer Verschlechterung der benötigten Rechenzeit kommen.Since the introduction of a program jump (program branching) to switching operations and back to the jump distributor also requires additional computing time, a platform-dependent calculation of a possible optimization can be carried out. This determines whether the model element is better mapped linearly or structured. Decisive factors of such a calculation are the number of edges (edge: (Baumgarten, B .: Petri-Netze: basics and applications. Mannheim, Vienna, Zurich: Wissenschaftsverlag 1990. ISBN 3-411-14291: page 17) or their required Computing time, the required computing time of the program branch (jumps). In unfavorable cases, the required computing time can also deteriorate.
Somit kann die Abbildung der Elemente ein und desselben Modells, je nach dem ob die lineare oder die strukturierte Abbildung schneller ist, beide Abbildungsvarianten beinhalten.Thus, the mapping of the elements of the same model, depending on whether the linear or the structured mapping is faster, can include both mapping variants.
Die gesamte Netzoptimierung (Ko und Eo) läßt sich auch als Baumstruktur abbilden, in der Elemente tieferer Ebenen über mehr Kontrollstrukturen verwaltet (ausgeführt) werden als Elemente in höherer Ebenen. Elemente der höchsten Ebene werden immer bearbeite.The entire network optimization (Ko and Eo) can also be represented as a tree structure, in which elements of lower levels are managed (executed) via more control structures than elements in higher levels. Elements of the highest level are always processed.
7.7 Anwendungsgebiete7.7 Areas of application
Anwendungsgebiete der Ausführungszeitoptimierung für Umsetzungen von zustands- bzw. ablauforientierten Modellen in reale Lösungen, gemäß Anspruch 1 , sind alle Automaten (Begriff der Automaten- bzw. Grafentheorie) und Petrinetze (petrinetzähnlichen), die typischerweise genannt werden, deren Arbeitsweise zustands- bzw. ablauforientiert ist, dazu gehören auch die Modelle der IEC 61131 , IEC 61499 und Grafcet. Diese werden in diesem Patentanspruch kurz Modell genannt. Dabei ist es unbedeutend, ob eine Realisierung (Umsetzung in eine realisierte Lösung) in Software oder Hardware, beidem oder anderen Umsetzungen erfolgt. Es ist jedoch insbesondere geeignet zur Lösung von softwarebasierten Steuerungsaufgaben, die mittels Programmgenerator und/oder Compiler bzw. Assembler, Interpreter, durch ein spezielles Betriebssystem bzw. Laufzeitbibliotheken (Runtime) wie beispielsweise bei einer SPS (Speicherprogrammierbare Steuerung) und/oder prozessornahen Sprachen, realisiert werden. Zu den Steuerungsaufgaben zählen auch betriebswirtschaftliche Steuerungs-, Organisations- oder andere Steuerungsaufgaben. Ein mit dieser Erfindung erzeugter Quellcode (Lösungen) ist demnach insbesondere die
Basis für ein Programm, dessen Bearbeitungszeit (Zeit die ein Prozessor benötigt um es auszuführen) sich deutlich verkürzt. Dies ist insbesondere für die Echtzeitfähigkeit von Steuerungslösungen (Automatisierungstechnik) von großem Interesse. Die tatsächlich erreichte Geschwindigkeitszunahme ist abhängig von der Topologie des Modells und letztendlich von der gewählten Plattform (Compiler Werkzeug, Hardware, auf der die Steuerungslösung implementiert wird, der gewählten Programmiersprache, wie C, C++, Pascal, Assembler, Programmiersprachen der DIN EN 61131-3, wie AWL, ST und ggf. weiterem).Areas of application of the execution time optimization for the implementation of state- or process-oriented models in real solutions, according to claim 1, are all automatons (term of the automaton or graph theory) and Petri nets (petri-net-like), which are typically called, whose mode of operation is state- or process-oriented the models of IEC 61131, IEC 61499 and Grafcet. These are briefly called models in this claim. It is irrelevant whether a realization (implementation in a realized solution) takes place in software or hardware, both or other implementations. However, it is particularly suitable for solving software-based control tasks that are implemented by means of a program generator and / or compiler or assembler, interpreter, by a special operating system or runtime libraries (runtime), such as in the case of a PLC (programmable logic controller) and / or languages close to the processor become. The control tasks also include business management, organizational or other control tasks. A source code (solutions) generated with this invention is therefore in particular Basis for a program, the processing time (time it takes a processor to execute it) is significantly reduced. This is of particular interest for the real-time capability of control solutions (automation technology). The actual speed increase depends on the topology of the model and ultimately on the selected platform (compiler tool, hardware on which the control solution is implemented, the chosen programming language, such as C, C ++, Pascal, assembler, programming languages of DIN EN 61131-3 , such as STL, ST and possibly more).
1.2 Stand der Technik und deren Probleme1.2 State of the art and its problems
Petrinetze (kurz: Netz oder Petrinetz (PN)) sind bereits seit 1962 (Automatentheorie besteht bereits länger) als typische Vertreter von zustands- bzw. ablauforientierten Modellen für diskrete Abläufe bekannt. Es gibt div. Varianten und Klassen der Theorien, die ausführlich in div. Veröffentlichungen diskutiert sind. Die Theorie findet nur in Ausnahmefällen praktische, industrielle Anwendung, obwohl die Zahl der Anwendungen in den letzten Jahren zunimmt. In der Steuerungstechnik können diese Modelle jedoch effektiv plattformunabhängig eingesetzt werden. Eine mit der DIN EN 61131-3 stark abgewandelte Form der Petrinetze ist seit 1995 bzw.1993 (International) als Ablaufsprache (AS) bzw. Sequential Function Chart (SFC) genormt.Petri nets (short: Netz or Petri net (PN)) have been known since 1962 (automata theory has been around for a long time) as a typical representative of state- or process-oriented models for discrete processes. There are various variants and classes of theories, which are discussed in detail in various publications. The theory finds practical, industrial use only in exceptional cases, although the number of applications has increased in recent years. In control technology, however, these models can be used effectively regardless of the platform. A form of Petri nets that has been heavily modified in accordance with DIN EN 61131-3 has been standardized since 1995 and 1993 (International) as the sequence language (AS) or Sequential Function Chart (SFC).
Die Abbildung bzw. Umsetzung eines Modells auf eine Programmiersprache erfolgt bisher in linearer Form (vgl. Abbildung 2). Lineare Form meint hier nicht einen Verzicht auf Unterprogrammtechniken. Vielmehr ist die Abbildung nach bestimmtem Schema, das die Modellelemente oder das Modell weitgehend zusammenhängend abbildet und keine Strukturierung bietet, die eine verbesserte Performance ergibt. Es sind zwei lineare Formen zur Modellelementabbildung bekannt, eine arbeitet vorwiegend mit speichernden und speicherlöschenden Befehlen ([vA93]: v. Aspern, J.: SPS- Softwareentwicklung mit Petrinetzen. Heidelberg: Hüthig (1993). ISBN 3-7785-2197-7, [vA94]: v. Aspern, J.: SPS- Softwareentwicklung: Petrinetze und Wortverarbeitung. Heidelberg: Hüthig (1994). ISBN 3-7785-2279-5 und [F94]: Friedrich, A.: Mit SPS erfolgreich Automatisieren. Poing: Franzis- Verlag (1994). ISBN 3-7723-6813-1) die andere mit Befehlen, die im wesentlichen die boolesche Algebra nutzt und weitgehend auf speichernde und speicherlöschende Befehle verzichtet ([A94]: Auer, A.: Steuerungstechnik und Synthese von SPS- Programmen. Hüthig (1994). ISBN 3-7785-2215-9 beispielsweise Seiten 135- 137). Wohl dem Stand der Technik zuzurechnen, obwohl kein veröffentlichter Nachweis bekannt ist, ist die Abbildung der Modellelemente mittels sogenannter Hochsprachen (C, Pascal), die über Wenn-Dann-Anweisungen verfügen. Hier ist bereits eine Strukturierung der Modellelemente durch die Plattform gegeben, diese unterliegt nicht dem Anspruch gemäß Patentanspruch 3, insofern das dies eine (die einzige) Methode der Programmiersprache ist. Jedoch unterliegt eine weitere Strukturierung der Bedingung Aufteilung in mehrere Teilbedingungen dem Patentanspruch.To date, a model has been mapped or implemented in a programming language in a linear form (see Figure 2). Linear form here does not mean that subroutine techniques are not used. Rather, the mapping is based on a certain scheme, which depicts the model elements or the model largely coherently and does not offer any structuring that results in improved performance. Two linear forms for model element mapping are known, one works predominantly with storing and memory-clearing commands ([vA93]: v. Aspern, J .: PLC software development with Petri nets. Heidelberg: Hüthig (1993). ISBN 3-7785-2197-7 , [vA94]: v. Aspern, J .: PLC software development: Petri nets and word processing, Heidelberg: Hüthig (1994), ISBN 3-7785-2279-5 and [F94]: Friedrich, A .: Successful automation with PLC. Poing: Franzis Verlag (1994), ISBN 3-7723-6813-1) the other with commands, which essentially uses Boolean algebra and largely dispenses with storing and memory-clearing commands ([A94]: Auer, A .: control technology and Synthesis of PLC programs, Hüthig (1994), ISBN 3-7785-2215-9, for example pages 135-137). The mapping of the model elements using so-called high-level languages (C, Pascal), which have if-then instructions, is probably attributable to the state of the art, although no published evidence is known. There is already a structuring of the model elements by the platform, this is not subject to the claim according to claim 3, insofar as this is a (the only) method of the programming language. However, a further structuring of the condition division into several sub-conditions is subject to the patent claim.
Ferner ist bekannt, daß die Abbildung von Kausalketten ([vA93], [vA94], [A94] und [F94]) durch Aneinanderreihung des Programmcodes der Ketten, ohne zusätzliche Überprüfung der Notwendigkeit einer generellen Bearbeitung durchzuführen, erfolgt. Hier unterliegt daher die Abbildung auf Hochsprachen gemäß Patentanspruch 2 dem Patentanspruch.It is also known that causal chains ([vA93], [vA94], [A94] and [F94]) are mapped by stringing together the program code of the chains without additional checking of the need for general processing. The mapping to high-level languages according to claim 2 is therefore subject to the claim here.
Hardwarebasierte Lösungen sind in König, R.; Quäck, L.: Petri- Netze in der Steuerungs- und Digitaltechnik. München und Wien: R. Oldenburg Verlag (1988). ISBN 3-486-20735-0 zu finden.Hardware-based solutions are in König, R .; Quäck, L .: Petri networks in control and digital technology. Munich and Vienna: R. Oldenburg Verlag (1988). Find ISBN 3-486-20735-0.
Zur überflüssigen Verlängerung der Bearbeitungszeit durch Prozessoren bei linearer Codeerzeugung führen zwei Aspekte bzw. Probleme, die je nach Plattform gemeinsam oder einzeln wirken.Two aspects or problems lead to the unnecessary extension of the processing time by processors with linear code generation, which work together or individually depending on the platform.
1. Linear abgebildete Modelle werden meist vom Prozessorsystem komplett (gesamtes Modell) abgearbeitet, womit die Kausalstruktur der Modell- Topologie unberücksichtigt bleibt. Ein Zustandswechsel in einem Modell kann nur an aktiven Zuständen (markierte Zustände) erfolgen. Gerade längere Kausalketten oder Teile einer solchen Kausalkette, die keinen aktiven Zustand zur Zeit der aktuellen Programmausführung besitzen, müssen demnach nicht bearbeitet werden, was die lineare Abbildung des Modells nicht berücksichtigt.1. Linear models are usually processed completely by the processor system (entire model), so that the causal structure of the model topology is not taken into account. A change of state in a model can only take place on active states (marked states). Longer causal chains or parts of such a causal chain that do not have an active state at the time of the current program execution therefore do not have to be processed, which the linear representation of the model does not take into account.
2. SPS- Plattformen (z.B. AWL der DIN EN 61131-3 oder die SPS- Sprache Step 5® (AWL) der Firma Siemens®) oder ähnliche bearbeiten meist den Code Zeile für Zeile. D.h., daß abgebildete Modellelemente ([vA93], [vA94], [A94] und [F94]), die häufig über eine Ausführungsbedingung (hier verallgemeinert Schaltbedingung genannt) verfügen, und einem von ihr abhängigen bedingt auszuführenden Teil (hier verallgemeinert Schalthandlung genannt), komplett bearbeitet werden, obwohl dies für die Schalthandlung nur im Falle der erfüllten Schaltbedingung nötig wäre.
1.3 Optimierung für ablauf- und zustandsorientierte Modelle2. PLC platforms (eg STL of DIN EN 61131-3 or the PLC language Step 5 ® (STL) from Siemens ® ) or similar usually process the code line by line. This means that the model elements shown ([vA93], [vA94], [A94] and [F94]), which often have an execution condition (here generalized called switching condition), and a dependent part to be executed conditionally (here called generalized switching action) , can be processed completely, although this would only be necessary for the switching action if the switching condition is fulfilled. 1.3 Optimization for process and condition-based models
Gerade durch die Topologie der Netze (Petrinetze, SFC, Grafcet, Zustandsmaschinen, Automaten, IEC 61499), die bestimmte (Markierung) Zustände einnehmen, ergeben sich eine Reihe von Möglichkeiten zur Minimierung beanspruchter Rechenzeit. Allen gemeinsam ist, daß sich die Netzelemente (hier im wesentlichen Transitionen, aber auch Aktionen bzw. Schrittlupen) abhängig von der Markierung selbstständig zur Bearbeitung an- bzw. abmelden, oder von anderen Netzelementen oder Verwaltern ab- oder angemeldet werden. Ferner kann ein Netzelement selbst bzw. dessen Bearbeitungszeit, insbesondere, wenn es in AWL realisiert ist, im einen oder anderen Fall deutlich verkürzt werden. Es tritt dabei eine Verkleinerung der logischen Programmlänge ein.The topology of the networks (Petri networks, SFC, Grafcet, state machines, automatons, IEC 61499), which assume certain (marking) states, gives rise to a number of options for minimizing the computing time required. Common to all is that the network elements (here essentially transitions, but also actions or step-by-step magnifiers) independently register or log off for processing, depending on the marking, or log off or log on from other network elements or administrators. Furthermore, a network element itself or its processing time, in particular if it is implemented in STL, can be significantly shortened in one case or another. The logical program length is reduced.
Welche Strategie der Minimierung anzuwenden ist, und damit auch der Grad der Minimierung, hängt von vielen Faktoren ab.Which strategy of minimization is to be used, and with it the degree of minimization, depends on many factors.
Die wichtigsten Faktoren sind:The main factors are:
Befehlsausführungszeiten der Plattform (Prozessoren und Runtime- Umgebung) Features, die die Zielsprache der Codierung bietet (z. B. dynamische Sprungziele) Häufigkeit der Bearbeitung (Aktionen 2 mal, Transitionen 1 mal) Häufigkeit des Schaltens bzw. des Nicht- Schaltens von Transitionen Anzahl der Standard- Prekanten, sonstiger Prekanten, Postkanten, Umfang sonstiger Schaltbedingungen, Umfang des AnweisungsblocksCommand execution times of the platform (processors and runtime environment) Features that the target language of the coding offers (e.g. dynamic jump targets) Frequency of processing (actions twice, transitions once) Frequency of switching or non-switching of transitions Number the standard pre-edges, other pre-edges, post edges, scope of other switching conditions, scope of the instruction block
Zeitdauer, die eine Teilbedingung der Schaltbedingung erfüllt bzw. nicht erfüllt (Stark unterschiedlich, nahezu gleich) (Zeitlicher Abstand zwischen Erfüllung einer Teilbedingung und der Erfüllung der ganzen Bedingung) Anzahl der Marken (Ein- Marken- Netz) VermaschungPeriod of time that fulfills or does not meet a partial condition of the switching condition (very different, almost the same) (time interval between the fulfillment of a partial condition and the fulfillment of the entire condition) Number of marks (one-mark network) meshing
Länge unverzweigter KettenLength of unbranched chains
Aufenthaltswahrscheinlichkeit der Marken in (Teil-)Netzen und Ketten Anzahl der Marken in einer unverzweigten KetteProbability of residence of the marks in (sub) networks and chains Number of marks in an unbranched chain
Stellung der Transition (vorn, mittig oder hinten) in einer unverzweigten Kette oder in einem Ein- Marken- NetzPosition of the transition (front, middle or back) in an unbranched chain or in a one-brand network
Zeit, die für das Schalten bzw. Nicht- Schalten benötigt wirdTime required for switching or not switching
Anzahl der nebenläufig schaltenden Transitionen während einer Bearbeitung zur Gesamtzahl der Transitionen KausalitätsgradNumber of concurrent switching transitions during processing to the total number of transitions degree of causality
Tote Netze bzw. tote Teilnetze (BK z.B. initialisiert oder Netzhierarchien) Konfliktgrad möglichst klein Konfliktanzahl möglichst kleinDead networks or dead subnetworks (BK e.g. initialized or network hierarchies) Degree of conflict as small as possible Number of conflicts as small as possible
1.3.1 Grundsätzliche Optimierungsprinzipien1.3.1 Basic optimization principles
Steuerungssysteme (SPS) bearbeiten ihre Programme derart schnell, daß im Prozeß das Verhältnis gleichzeitig auftretender Ereignisse zur Summe der möglichen Prozeßereignisse häufig deutlich kleiner ist, als das Verhältnis der SPS- Zyklen ohne Zustandsänderung zur Summe der SPS- Zyklen mit Zu- standsänderung. Mit anderen Worten: Die meiste Zeit liegt eine Transition faul in der Bearbeitungsschleife des Programms herum. Sie arbeitet nur selten, nämlich während des Schaltens. Natürlich gibt es auch hier Ausnahmen, einige Transitionen schalten häufiger.Control systems (PLC) process their programs so quickly that in the process the ratio of simultaneous events to the sum of the possible process events is often significantly smaller than the ratio of the PLC cycles without status change to the sum of the PLC cycles with status change. In other words, most of the time there is a lazy transition in the program's processing loop. It rarely works, namely while shifting. Of course there are exceptions, some transitions switch more often.
Naheliegend ist es daher, die untätigen Transitionen aus der Bearbeitungsschleife herauszunehmen, bzw. eine Beschränkung ihre Bearbeitung auf ein notwendiges Maß zu reduzieren (nur Schaltbereitschaft prüfen).It therefore makes sense to remove the idle transitions from the processing loop or to limit their processing to a necessary level (only check readiness for switching).
Für dieses Vorhaben sind weitere Befehle einzufügen, damit wächst die Anzahl der Programmzeilen und ggf. ist auch etwas mehr Datenspeicher erforderlich. Die Gesamtheit der Programmbearbeitung verkürzt sich jedoch deutlich, da entweder schaltende oder nicht schaltende Transitionen in der Überzahl sind. Eine Verkürzung der logischen Programmlänge tritt ein. Eine weitere Überlegung geht dahin, daß der Source der Schalthandlung und ggf. Teile der Schaltbedingung übersprungen werden, sobald sich beim Prüfen eines Teils der Schaltbedingung herausstellt, daß die Transition nicht schaltet. So ist beispielsweise im allgemeinen in Transitionsbedingungen eine Verriegelung erfüllt. Nicht erfüllt ist sie hingegen häufig in Fehlersituationen. Somit kann die Verriegelung als letztes geprüft werden. Daraus ergibt sich für das Nichtschalten eine verkürzte und für das Schalten eine geringfügig verlängerte Bearbeitungszeit. Genau dies ist gewünscht, da das Nichtschalten von Transitionen im allgemeinen deutlich häufiger vorkommt als das Schalten. Stichwort: „faule Transition".
Drei grundsätzliche Strategien sind zuunterscheiden:Additional commands must be added for this project, so that the number of program lines increases and a little more data memory may be required. However, the entire program processing is significantly shortened, since either switching or non-switching transitions are in the majority. The logical program length is shortened. Another consideration is that the source of the switching action and possibly parts of the switching condition are skipped as soon as a part of the switching condition is checked that the transition does not switch. For example, a lock is generally fulfilled in transition conditions. However, it is often not fulfilled in error situations. The lock can thus be checked last. This results in a shorter processing time for non-switching and a slightly longer processing time for switching. This is exactly what is desired, since the non-switching of transitions generally occurs much more frequently than the switching. Keyword: "lazy transition". There are three basic strategies:
• Elementabhängig: Ausschlaggebend ist der Umfang (Anzahl Pre-, Postkanten und der Programmzeilen für zusätzliche Bedingung), sowie die daraus resultierende Rechenzeit des Systems• Depending on the element: The decisive factor is the scope (number of leading and post edges and the program lines for additional conditions) and the resulting computing time of the system
• Prozeßabhängig: Ausschlaggebend ist die Kürze der zeitlichen Dauer, die einzelne Signale vor dem Schalten erfüllt sind (letztes Signal)• Process-dependent: The decisive factor is the shortness of the time duration that individual signals are fulfilled before switching (last signal)
• Topologieabhängig: Unverzweigte Ketten, Einmarken Netze oder Teilnetze, Tote Netze oder Teilnetze, usw.• Depending on topology: unbranched chains, single-brand networks or subnetworks, dead networks or subnetworks, etc.
Zur Nutzung aller Potentiale sind Kombinationen aller Strategien, die gleichzeitig, einzeln und mehrfach zur Abbildung (Codierung) eines Netzes auf einem Zielsystem, unter Verwendung aller System- bzw. Spracheigenschaften anwendbar.To use all potentials, combinations of all strategies can be used simultaneously, individually and repeatedly to map (code) a network on a target system, using all system and language properties.
1.3.2 Transition und ihre erweiterte Begriffswelt1.3.2 Transition and its extended conceptual world
Soweit notwendig, sind die Elemente einem Begriff in Tabelle 0.1 zugeordnet. Tabelle 0.1 Begriffe und ihre NetzelementIf necessary, the elements are assigned to a term in Table 0.1. Table 0.1 Terms and their network element
Schaltbedingungswitching condition
Prüfen der SchaltbedingungCheck the switching condition
Prüfen der Standard- Prekanten (Aktivierung der Transition). Erfüllt: Entspricht der SchaltbereitschaftChecking the standard pre-edges (activation of the transition). Fulfilled: Corresponds to the readiness to switch
Prüfen sonstiger Prekanten (Freigabe der Transition durch sonstige Prekanten). Erfüllt: Entspricht der erweiterten SchaltbereitschaftChecking other pre-edges (release of the transition by other pre-edges). Fulfilled: Corresponds to the extended switching readiness
Prüfen sonstiger Bedingungen (Bedingte Freigabe der Transition durch sonstige Bedingungen).Check other conditions (conditional release of the transition through other conditions).
Erfüllt: Entspricht der bedingten Schaltbereitschaft Schalthandlung Schalten wenn:Fulfilled: Corresponds to the conditional switching readiness Switching action when:
Schalten = Schaltbereitschaft & erweiterte Schaltbedingung & bedingten Schaltbereitschaft dannSwitching = switching readiness & extended switching condition & conditional switching readiness then
Anweisungsblock spezialisierter Transition (Lösch, Anweisung..) bearbeitenEdit instruction block of specialized transition (delete, instruction ..)
Ausführungsverwaltung (Verwaltung der Variablen zu Optimierung)Execution management (management of variables for optimization)
Räumen der Vorgängerplätze (Input- oder Eingangs- Plätze)Clear the previous places (input or entrance places)
Belegen der Nachfolgerplätze (Output- oder Ausgangs- Plätze)Occupying the successor places (output or exit places)
Angemerkt sei noch, daß der Anweisungsblock und / oder die Schalthandlung oder sogar sie gesamte Transition (SpV- codiert) auch in eigenen Programmbausteinen untergebracht sein können. Geeignet ist die Realisierung der Schalthandlung bzw. der zugehörige Anweisungsblock mittels Unterprogrammtechniken, wie dies einige Umgebungen unterstützen.It should also be noted that the instruction block and / or the switching operation or even the entire transition (SpV-coded) can also be accommodated in separate program modules. It is suitable to implement the switching operation or the associated instruction block using subroutine techniques, as is supported by some environments.
Für die Codierung von Transitionen erfolgt zur vereinfachten Diskussion die folgende PN- orientierte Benennung von Codeteilen.
Die Schaltbedingung besteht aus Codes für die UmsetzungFor the coding of transitions, the following PN-oriented naming of code parts is given for simplified discussion. The switching condition consists of codes for the implementation
• der Prekanten, die ausschließlich Plätze mit Transitionen verbinden (Eigentliche Bedingung der klassischen Schaltbereitschaft (ggf. inkl. der Sonderkante)),• the pre-edges, which only connect places with transitions (actual condition of the classic switching readiness (possibly including the special edge)),
• der Prekanten (Signalprekanten), die Repräsentanten von SPS- und POE- Eingängen und gesonderte Abfragen von Plätzen darstellen und• the pre-edges (signal pre-edges), which represent representatives of PLC and POE inputs and separate queries for places and
• einer oder mehreren zusätzlichen Bedingungen.• one or more additional conditions.
In den folgenden Abbildungen werden die 3 Sourceteile der Schaltbedingung mit Bedingung 1 bis 3 bezeichnet. Eine weitere Aufteilung im gegebenen Einzelfall ist möglich und ggf. sinnvoll. Die Schalthandlung besteht aus Code für die UmsetzungIn the following figures, the 3 source parts of the switching condition are designated with conditions 1 to 3. A further division in the given individual case is possible and may make sense. The switching operation consists of code for the implementation
• der Postkanten,• the postal edges,
• der Prekanten, die ausschließlich Plätze mit Transitionen verbinden und• the precursors that only connect places with transitions and
• der Anweisungsblöcke von den speziellen Transitionsarten, wie Löschtransition, Anweisungstransition, Bedingungstransition• The instruction blocks of the special transition types, such as deletion transition, instruction transition, condition transition
In den folgenden Abbildungen ist der Sourceteil der Schalthandlung durch den Kasten, betitelt mit „Schalthandlung", repräsentiert.In the following figures, the source part of the switching operation is represented by the box, titled "switching operation".
Je nach Netzklasse und Transitionsart können Teile entfallen ggf. können auch weitere Sourceteile hinzukommen.Depending on the network class and type of transition, parts can be omitted and additional source parts can also be added.
Für die Codierung sind viele Varianten denkbar, die in dem einen oder anderen Fall nützlich sind. Daher zeigen die folgenden Flußdiagramme jeweils die Variante, die standardmäßig gute Ergebnisse liefert. Varianten könnten beispielsweise die erste, zweite oder alle Bedingungen (1- 3) zu einer zusammenzufassen, oder die letzte Programmverzweigung (letzte Bedingung) unmittelbar vor der Schalthandlung weg lassen, usw.Many variants are conceivable for the coding, which are useful in one case or the other. Therefore, the following flow charts each show the variant that delivers good results by default. Variants could, for example, combine the first, second or all conditions (1-3), or omit the last program branch (last condition) immediately before the switching operation, etc.
1.3.3 Geeignete Strategien für Steuerungssysteme1.3.3 Appropriate strategies for control systems
Oben genannte Eigenschaften des Netzes, des Prozesses und der Plattform sind zur Wahl der geeigneten Optimierungsstrategie von Bedeutung. Einige Strategien erfordern gewisse Eigenschaften der Zielsprache. Diese werden von der AWL weitgehend unterstützt. Ferner stellt AWL eine effiziente Sprache dar, zumindest was den optimierten Code betrifft. Daher beziehen sich im Weiteren die meisten Beispiele und Betrachtungen auf AWL- Code. Wenige Ausnahmen legen Hochsprachenkonstrukte, wie If- Then, Case und andere, zugrunde.The above-mentioned properties of the network, the process and the platform are important for choosing the appropriate optimization strategy. Some strategies require certain properties of the target language. These are largely supported by the STL. AWL is also an efficient language, at least as far as the optimized code is concerned. Therefore, most of the examples and considerations below refer to STL code. Few exceptions are based on high-level language constructs such as If-Then, Case and others.
Transformation der Codierungsvorschläge von AWL hin zu ST oder anderen Sprachen folgen einfachen Regeln. Sprünge sind durch IF- Anweisungen zur ersetzen, usw.Transformation of coding suggestions from STL to ST or other languages follow simple rules. Jumps are to be replaced by IF instructions, etc.
1.3.3.1 Strategien zur Optimierung von Netzelementen1.3.3.1 Strategies for optimizing network elements
Netzelemente sind alle elementaren Elemente, aus denen ein Netz bestehen kann, wie Knoten (Platz und Transition), Kanten, Task, Aktion, Schrittlupen, usw.Network elements are all elementary elements from which a network can consist, such as nodes (space and transition), edges, task, action, step magnifiers, etc.
1.3.3.1.1 Optimierung boolescher Gleichungen1.3.3.1.1 Optimizing Boolean equations
Elementare Operationen sind die UND- und ODER- Verknüpfung, die im wesentlichen für die Bildung von Transitionsbedingungen eingesetzt werden.Elementary operations are the AND and OR operations, which are mainly used to create transition conditions.
Optimierte Codierung einer UND- VerknüpfungOptimized coding of an AND operation
Wesentliches Merkmal einer UND- Verknüpfung ist, daß für eine WAHRE- Aussage (TRUE) am Ausgang für alle Eingänge ebenfalls WAHR erforderlich ist. Umgekehrt bedeutet dies: Führt auch nur ein Eingang FALSCH (FALSE), muß auch das Ergebnis entsprechend sein. Damit ist die Entscheidung bereits ursächlich durch ein Signal bestimmt und eine Umsetzung mit je einem Sprung je Eingang gegeben. Die folgende Transitionsbedingung mit 4 Variablen wird mit Sprüngen realisiert. Bedingung: E1 UND E2 UND E3 UND E4
Tabelle 0.2 Transitionsbedingung und UND- Verknüpfung nach dem wired- and- Prinzip codiertAn essential feature of an AND operation is that a TRUE statement at the output also requires TRUE for all inputs. Conversely, this means that if only one input is FALSE, the result must also be corresponding. This means that the decision is already determined by a signal and implemented with one jump per input. The following transition condition with 4 variables is implemented with jumps. Condition: E1 AND E2 AND E3 AND E4 Table 0.2 Transition condition and AND operation coded according to the wired and principle
Optimierte Codierung einer ODER- VerknüpfungOptimized coding of an OR operation
Wesentliches Merkmal einer ODER- Verknüpfung ist, daß für eine WAHR- Aussage (TRUE) am Ausgang nur ein Eingang WAHR erforderlich ist. Umgekehrt bedeutet dies, führt auch nur ein Eingang WAHR (TRUE), muß auch das Ergebnis entsprechend WAHR sein. Damit ist die Entscheidung bereits ursächlich durch ein Signal bestimmt und eine Umsetzung mit je einem Sprung je Eingang gegeben. Die folgende Transitionsbedingung mit 4 Variablen wird mit Sprüngen realisiert. Bedingung: E1 ODER E2 ODER E3 ODER E4An essential feature of an OR operation is that only one input TRUE is required for a TRUE statement at the output. Conversely, this means that if only one input is TRUE, the result must also be TRUE. This means that the decision is already determined by a signal and implemented with one jump per input. The following transition condition with 4 variables is implemented with jumps. Condition: E1 OR E2 OR E3 OR E4
Tabelle 0.3 Transitionsbedingung und ODER- Verknüpfung nach dem wired- or- Prinzip codiertTable 0.3 Transition condition and OR operation coded according to the wired-or principle
Auflösung komplexer boolescher GleichungenSolving complex Boolean equations
Komplexe boolesche Gleichungen lassen sich in die sogenannte Konjunktive bzw. Disjunktive Normalform (KNF bzw. DNF) überführen. Es entstehen Therme, die entweder UND- bzw. ODER verknüpft sind. Somit sind die oben erwähnten Prinzipien im Sinne der wired- and bzw. wired- or- Verknüpfungen auf die Therme anwendbar.Complex Boolean equations can be converted into the so-called conjunctive or disjunctive normal form (KNF or DNF). Therme arise, which are either AND or OR linked. The principles mentioned above can therefore be applied to the thermal bath in the sense of wired and or wired or connections.
1.3.3.1.2 Lineare Codierung1.3.3.1.2 Linear coding
Lineare Codierung ist die Standardcodierung. Besonderes Kennzeichen ist, die Zeit, die für das Schalten benötigt wird, ist genauso lang wie die für das Nichtschalten.Linear coding is the standard coding. A special feature is that the time required for switching is just as long as that for not switching.
[siehe Abbildung 1.1 Flußdiagramm zur linearen Codierung von Transitionen][see Figure 1.1 Flow diagram for linear coding of transitions]
1.3.3.1.3 Getrennte Codierung (Splitting)1.3.3.1.3 Separate coding (splitting)
Das Splitting zerlegt die komplette Schaltbedingung in Teilbedingungen. Bei der Codierung wirkt das Verknüpfungsergebnis jeder Teilbedingung auf einen Sprung, der bei nicht erfüllter Transitionsbedingung die Bearbeitung beendet.
Das Nichtschalten einer Transition Tn verkürzt sich dadurch erheblich, daß hinter einer Teilbedingung eine Programmverzweigung (bedingter Sprung) entscheidet, ob die nächste Transition Tn+1 oder weitere Programmzeilen der Transition Tn der Bearbeitung unterliegen.The splitting breaks down the complete switching condition into partial conditions. When coding, the link result of each subcondition acts on a jump that ends the processing if the transition condition is not met. The non-switching of a transition T n is considerably shortened in that a program branch (conditional jump) decides after a partial condition whether the next transition T n + 1 or further program lines of the transition T n are subject to processing.
Das Splitting könnte annähernd als eine Zerlegung einer Transition in Teiltransitionen aufgefaßt werden. Wobei jede Teiltransition eigentlich nur eine Teilbedingung darstellt.The splitting could almost be interpreted as a decomposition of a transition into partial transitions. Each sub-transition actually only represents a sub-condition.
[siehe Abbildung 1.2 Schematische Darstellung des Splittings][see Figure 1.2 Schematic representation of the splitting]
In einigen Fällen kann die Reihenfolge, in der die einzelnen Bedingungen der Schaltbedingung im Source plaziert sind von Bedeutung sein. Automatisch erzeugter Code sollte eine Reihenfolge wählen, bei der die Teilbedingung von der zeitlich kürzesten Bearbeitungszeit zur längsten verläuft.In some cases, the order in which the individual conditions of the switching condition are placed in the source can be important. Automatically generated code should choose an order in which the partial condition runs from the shortest processing time to the longest.
[siehe Abbildung 1.3 Flußdiagramm zur getrennten Codierung von Transitionen][see Figure 1.3 Flowchart for separate coding of transitions]
1.3.3.1.4 Sprungverteilercodierung1.3.3.1.4 Jump distributor coding
Der Sprungverteiler (SpV) führt zunächst je Transition einen virtuellen Platz (Transitionsflag) ein. Der Einsparungseffekt wird dadurch erzielt, daß grundsätzlich nur der übergeordneten Sprungverteiler bearbeitet wird (d.h. 2 Anweisungen je Transition; Flag- Abfrage und Sprung). Nur diejenige Transition, deren Flag gesetzt ist, unterliegt der weiteren Prüfung der Schaltbedingung. Grundsätzlich kann dann zusätzlich die getrennte Codierung implementiert sein.The jump distributor (SpV) first introduces a virtual place (transition flag) for each transition. The saving effect is achieved by processing only the higher-level branch distributor (i.e. 2 instructions per transition; flag query and branch). Only the transition whose flag is set is subject to further testing of the switching condition. In principle, the separate coding can then additionally be implemented.
Ist die Transition nicht schaltfähig, erfolgt der Rücksprung zum Sprungverteiler. Für den Fall, daß sie schaltfähig ist gibt es 2 Varianten, a) nach dem Schalten wieder zum SpV zu verzweigen und b) die Schaltbedingung der Nachfolgetransition zu prüfen. Letzteres ist jedoch nur sinnvoll, wenn die Nachfolgetransition möglicherweise durch das Schalten ihrer Vorgängertransition schaltfähig wird. Die Schalthandlung einer Transition im Sprungverteiler muß ihr Flag zurücksetzen und die Flags der Nachfolgertransitionen setzen, die durch das Schalten gemäß Netztopologie schaltfähig werden könnten. Das sind alle Transitionen, die einen Nachfolgerplatz der geschalteten Transition als Vorgängerplatz besitzen.If the transition is not switchable, there is a return to the jump distributor. In the event that it is switchable, there are 2 variants, a) to switch back to the SPV after switching and b) to check the switching condition of the subsequent transition. However, the latter only makes sense if the successor transition may become switchable by switching its predecessor transition. The switching action of a transition in the jump distributor must reset its flag and set the flags of the successor transitions that could become switchable by switching according to the network topology. These are all transitions that have a successor position to the switched transition as a predecessor position.
[siehe Abbildung 1.4 Flußdiagramm zur Sprungverteiler Codierung von Transitionen]
Tabelle 0.5 Codierung Sp ngverteiler[see Figure 1.4 Flow diagram for jump distributor coding of transitions] Table 0.5 Coding of the voltage distributor
Sprungverteiler CodierungJump distributor coding
Transition 1 SpVT1 :Transition 1 SpVT1:
LD TIFIag JMPC T1LD TIFIag JMPC T1
Transition 2 SpVT2:Transition 2 SpVT2:
LD T2Flag JMPC T2LD T2 flag JMPC T2
Transition n SpVTn:Transition n SpVTn:
LD TnFlag JMPC TnLD TnFlag JMPC Tn
Tabelle 0.6 Codierung der Transition für den Sprungverteiler2 Table 0.6 Coding of the transition for the jump distributor 2
1.3.3.1.5 EinmarkenSprungverteiler ESpV1.3.3.1.5 Single-brand jump distributor ESpV
Eine besondere Form des SpV kann für die Codierung spezieller Netzklassen oder bestimmter Netztopo- logien nützlich sein.A special form of SpV can be useful for coding special network classes or certain network topologies.
Netze, die als sogenannte Ein- Marken- Netze bezeichnet sind, verfügen über nur eine Marke im gesamten Netz.Networks that are referred to as so-called one-brand networks have only one brand in the entire network.
Kann die Transition, deren Vorgängerplatz die Marke besitzt nicht schalten, so kann auch keine andere Transition in diesem Netz schalten. Für die Codierung bedeutet dies, das beim Nichtschalten einer Transition der Rest des Codes auch nicht bearbeitet werden muß. Es entsteht keine neue Markierung, die ein Schalten ermöglicht.If the transition whose predecessor location is owned by the brand cannot switch, then no other transition can switch in this network. For coding, this means that if a transition is not switched, the rest of the code does not have to be processed either. There is no new marking that enables switching.
Dieses Verfahren läßt sich auch auf Teilnetze oder Netzteile anwenden, sofern sich nur eine Marke innerhalb des Betrachteten befindet. Als Beispiel soll ein IEC 61131- SFC- Netzwerk die Diskussion untermauern. Es verfügt über eine Kette (10 Schritte), gefolgt von einer Simultanverzweigung (insgesamt 40 Schritte). Die Kette (10 Schritte) ist ein typischer Vertreter für einen Einmarken- Bereich, er kann also ESpV- codiert3 sein. Ketten sind als eigenständige ESpV interpretiert. Hier erfolgt der Sprung nicht ans Ende des Netzes sondern an den Beginn der Simultanverzweigung. Die Codierung der Simultanverzweigung, ebenfalls bestehend aus zwei Ketten, nutzt ebenfalls jeweils einen Sprungverteiler.This method can also be applied to subnetworks or power supply units if there is only one brand within the subject. As an example, an IEC 61131 SFC network is to underpin the discussion. It has a chain (10 steps) followed by a simultaneous branching (40 steps in total). The chain (10 steps) is a typical representative for a single-brand area, so it can be ESpV-coded 3 . Chains are interpreted as independent ESpV. Here the jump does not take place at the end of the network but at the beginning of the simultaneous branching. The coding of the simultaneous branch, also consisting of two chains, also uses a jump distributor.
Nur der Sprungverteiler unterliegt der regulären, zyklischen Bearbeitung. Die Bearbeitung des Transitionscode steht vollständig unter seiner Kontrolle. Der Begriff Einmarken meint, daß es nur eine Transition gibt, die schalten könnte.
Eine besondere Codierungsvariante, stützt die per Definition spezifizierte Verfügbarkeit nur einer Marke im gesamten Netz. Die Nutzung des Return- Befehl innerhalb der Codierung beendet die POE- Ausführung jeweils durch Registrierung des Nichtschaltens der Transition.Only the jump distributor is subject to regular, cyclical processing. The processing of the transition code is completely under his control. The term branding means that there is only one transition that could switch. A special coding variant supports the availability, specified by definition, of only one brand in the entire network. The use of the return command within the coding ends the POU execution by registering the non-switching of the transition.
[siehe Abbildung 1.5 Flußdiagramm zur Sprungverteiler Codierung im Einmarkenbereich von Transitionen][see Figure 1.5 Flowchart for jump distributor coding in the single-mark area of transitions]
Tabelle 0.7 Codierung Sprungverteiler für EinmarkenbereichTable 0.7 Coding of jump distributors for single-brand areas
Tabelle 0.8 Codierung der Transition für den Sprungverteiler im EinmakenbereichTable 0.8 Coding of the transition for the jump distributor in the one-hook area
1.3.3.1.6 Feinoptimierung Signaldauer1.3.3.1.6 Fine optimization of signal duration
Diese Strategie begründet sich darauf, das es immer ein Signal gibt, daß das letzte ist, das zur Erfüllung der Schaltbedingung beiträgt. Häufig ist es immer das gleiche Signal. Als Signal wird jede Kante und ggf. auch die Zusatzbedingung (z.B. Vergleich) betrachtet, die zu einer Schaltbedingung gehören. Beispielsweise existiert eine Transition mit einem Vorgängerplatz (Motor dreht) und einem Eingang (Endschalter erreicht). Hier ist es meist der Eingang, der letztendlich das Schalten auslöst.This strategy is based on the fact that there is always a signal that the last one contributes to the fulfillment of the switching condition. It is often the same signal. Each edge and possibly also the additional condition (e.g. comparison) that belong to a switching condition are considered as signals. For example, there is a transition with a predecessor position (engine turns) and an input (limit switch reached). Here it is usually the input that ultimately triggers the switching.
Für den ECC (Execution Control Chart) der IEC 61499, der ein Petrinetz darstellt, eignet sich das Ereignissignal einer Transition als erstes abzufragen. Da es nur kurzzeitig auftritt und es das letzte Signal ist das zur Erfüllung der Schaltbedingung zum Schalten noch fehlt.For the ECC (Execution Control Chart) of IEC 61499, which represents a Petri network, the event signal of a transition is the first to be queried. Since it only occurs for a short time and it is the last signal that is still missing to fulfill the switching condition for switching.
Angewandt auf die getrennte-, Sprungverteiler- und Einmarken- Sprungverteiler- Codierung wird das Signal (maximal sollten nicht mehr als 2 Signale), das letztendlich das Schalten auslöst, als erste Bedin-Applied to the separate, jump distributor and single-mark jump distributor coding, the signal (which should not exceed 2 signals), which ultimately triggers the switching, is the first condition
Nur der Sprungverteiler unterliegt der regulären, zyklischen Bearbeitung. Die Bearbeitung des Transitionscode steht vollständig unter seiner Kontrolle.
gung geschrieben. Wobei auch hier mindestens zwei Varianten denkbar sind. A) Der Rest der Bedingung, aus der das Signal herausgelöst wurde, bleibt ggf. als eigenständige Teilbedingung mit Programmverzweigung bestehen, oder b) der Rest wird mit einer anderen Teilbedingung zu einer neuen verbunden. Es findet also eine teilweise oder totale Neuordnung der bisher als Einheit aufgefaßten Bedingungsgruppen (Prekanten, Signalprekanten, Zusatzbedingung) statt. Diese zerfallen in der Analyse hinsichtlich der Signaldauer um anschließend neue Gruppen zu schaffen. Bei den Sprungverteilern steht das Signal anstelle des Flags und das Flag kann ganz entfallen. Das verringert zusätzlich die Zeit, die für die Realisierung des Schaltens benötigt wird, da die Flagverwaltung entfällt. In der Feinoptimierung erfolgt eine Neuordnung der Signale zu Teilbedingungen. Die Letzte Bedingung enthält häufig die aufwendigsten Bedingungen (z.B. Vergleicher) und/oder Signale, die eigentlich immer im Sinne der Schaltbedingung erfüllt sind. Anzahl der Bedingungen ist beliebig.Only the jump distributor is subject to regular, cyclical processing. The processing of the transition code is completely under his control. written. At least two variants are also conceivable here. A) The rest of the condition from which the signal was extracted may remain as an independent sub-condition with a program branch, or b) the rest is connected to another sub-condition to form a new one. There is therefore a partial or total reorganization of the condition groups (precants, signal precursors, additional condition) that were previously understood as a unit. These decay in the analysis with regard to the signal duration in order to subsequently create new groups. In the case of the jump distributors, the signal is in place of the flag and the flag can be omitted entirely. This also reduces the time required to implement switching, since flag management is no longer necessary. In fine tuning, the signals are reorganized to subconditions. The last condition often contains the most complex conditions (eg comparators) and / or signals that are actually always met in terms of the switching condition. The number of conditions is arbitrary.
[Abbildung 1.6 Feinoptimierte Splittingcodierung][Figure 1.6 Fine-optimized splitting coding]
Tabelle 0.9 Codierung des feinoptimierten SprungverteilersTable 0.9 Coding of the finely optimized jump distributor
Tabelle 0.10 Codierung der Transition des feinoptimierten SprungverteilersTable 0.10 Coding the transition of the finely optimized jump distributor
1.3.3.2 Strategien der Netzoptimierung1.3.3.2 Strategies for network optimization
Basis der Strategien zur Netzoptimierung ist die Erkenntnis, daß nur Netzteile bearbeitet werden müssen, in denen es auch eine Marke gibt, denn die Marke ist die Grundvoraussetzung des Schaltens. Die erste und einfachste Konsequenz hieraus ist: Tote Netze bzw. Teilnetze werden nicht bearbeitet. Als typisches Beispiel sei hier eine Fehlerüberwachung (Maximale Belegungszeit überschritten) eines Platzes angeführt. Diese muß nur bei markiertem Platz bearbeitet werden.The basis of the strategies for network optimization is the realization that only power supplies that have a brand have to be processed, because the brand is the basic requirement for switching. The first and simplest consequence of this is that dead networks or subnetworks are not processed. A typical example is error monitoring (maximum occupancy time exceeded) of a place. This only needs to be edited if the space is marked.
Nur der Sprungverteiler unterliegt der regulären, zyklischen Bearbeitung. Die Bearbeitung des Transitionscode steht vollständig unter seiner Kontrolle.
Die Eigenschaft, unterschiedliche Bearbeitungszeiten des Netzes allein durch die Positionsabhängigkeit einer Transition (Anfang, Mitte, Ende) innerhalb des SpV- Codes und der Markierung zu erzeugen ist einOnly the jump distributor is subject to regular, cyclical processing. The processing of the transition code is completely under his control. The property of generating different processing times of the network solely through the position dependency of a transition (beginning, middle, end) within the SpV code and the marking is one
Nachteil.Disadvantage.
Sprünge mit dynamischen Sprungzielen zeigen eine Verbesserung.Jumps with dynamic jump targets show an improvement.
1.3.3.2.1 Kettenflag1.3.3.2.1 Chain flag
Eine unverzweigte Kette wird nur bearbeitet, wenn sich mindestens eine Marke in der Kette befindet. Effiziente Lokalisierung vorhandener Marken innerhalb einer Kette bedient sich spezieller Transitionen, die Ketteneintritts- und Kettenaustrittstransition.An unbranched chain is only processed if there is at least one mark in the chain. Efficient localization of existing brands within a chain uses special transitions, the chain entry and exit exits.
Die Eintrittstransition sorgt durch ihr Schalten für eine Marke in dieser Kette und setzt gleichzeitig ein Kettenflag. Können mehrere Marken eintreten, wird ein Zähler als Flag benutzt. Die Kettenbearbeitung ist nur durchzuführen bei gesetztem Kettenflag bzw. bei Kettenflag größer null. Verläßt eine Marke die Kette, setzt die Austrittstransition das Kettenflag zurück bzw. dekrementiert den Zähler.By switching, the entry transition creates a brand in this chain and at the same time sets a chain flag. If several brands can occur, a counter is used as a flag. Chain processing is only to be carried out if the chain flag is set or if the chain flag is greater than zero. If a mark leaves the chain, the exit transition resets the chain flag or decrements the counter.
Letztendlich läßt sich die Gesamtheit aller Kettenflags, die die Ausführung eines Steuerungsnetzes verwalten, auch wieder als Verwaltungsnetzwerk auffassen, welches eng an das Steuerungsnetz gekoppelt ist.Ultimately, the entirety of all chain flags that manage the execution of a control network can also be understood as an administration network that is closely linked to the control network.
Als Eintrittstransitionen eignen sich solche, deren Schaltbedingung entsprechend selten erfüllt ist. Als Beispiel seien hier Transitionen genannt, deren Schaltbedingung ein Datum, eine Uhrzeit, eine große Verzögerungszeit oder ein eher seltenes Prozeßsignal beinhaltet.Suitable entry transitions are those whose switching conditions are rarely met. Transitions whose switching condition contains a date, a time, a large delay time or a rather rare process signal may be mentioned here as an example.
Oder es sei der Fall eines Motorstop besonders zeitkritisch. Der Übergang vom Zustand „Laufender Motor" zum Zustand „Motor steht" ist in einer langen unverzweigten Kette modelliert. Die Kette wird in 3 Bereiche eingeteilt. Die Transitionen vor und nach der zeitkritischen Transition sind durch Flags kontrolliert, während die zeitkritische Transition immer bearbeitet wird, um immer in kürzester Zeit schalten zu können.Or it is the case of an engine stop that is particularly time-critical. The transition from the "running engine" state to the "engine stopped" state is modeled in a long, unbranched chain. The chain is divided into 3 areas. The transitions before and after the time-critical transition are controlled by flags, while the time-critical transition is always processed in order to always be able to switch in the shortest possible time.
[Abbildung 1.7 Flußdiagramm zur Kettenflag Codierung von Netzen oder Teilnetzen][Figure 1.7 Flowchart for chain flag coding of networks or subnetworks]
1.3.3.2.2 Segmentierung1.3.3.2.2 Segmentation
Das Mittel der Segmentierung erweitert das Kettenflag zum strukturierten Kettenflag- Mechanismus und eignet sich für sehr lange Ketten. Dazu erfolgt eine Aufteilung langer Ketten in Bereiche, die Segmente. Jedes Segment verfügt über ein eigenes Segmentflag. Das Prinzip der Segmentverwaltung ist dem des Kettenflags gleich. Es gibt je Segment eigene Ein- und Austrittstransitionen. Ein Extremfall der Segmentierung führt zur Sprungverteilercodierung der Transitionen.The segmentation means extends the chain flag to a structured chain flag mechanism and is suitable for very long chains. For this purpose, long chains are divided into areas, the segments. Each segment has its own segment flag. The principle of segment management is the same as that of the chain flag. There are separate entry and exit transitions for each segment. An extreme case of segmentation leads to jump distributor coding of the transitions.
Ggf. erfolgt eine Kombination aus Kettenflag und Segmentierung, wobei weitere Ebenen der Segmentierung durchaus zulässig sind. Somit entsteht eine Struktur. Auf oberster Ebene steht das Kettenflag, darunter die erste Ebene der Segmente. Eine weitere Segmentierung führt dazu, daß ein Segment die Segmente seiner unteren Ebene kontrolliert. Es wirkt dann wie das Kettenflag, das die nächste Segmentebene kontrolliert.Possibly. there is a combination of chain flag and segmentation, whereby further levels of segmentation are quite permissible. This creates a structure. The chain flag is on the top level, including the first level of the segments. Another segmentation means that a segment controls the segments of its lower level. It then acts like the chain flag that controls the next segment level.
[siehe Abbildung 1.8 Flußdiagramm zur segmentierten Codierung von Netzen oder Teilnetzen][see Figure 1.8 Flowchart for segmented coding of networks or subnetworks]
Optimierte Ketten bearbeitungOptimized chain processing
Naheliegend ist eine Optimierung eines Ablaufmodells auch mit den Mitteln des Modells zu implementieren. Die Abbildung 1.9 zeigt, wie das Verhalten einer Kettenoptimierung (mittels Petrinetzen dünn) mit einfachen Mitteln gestaltet werden kann. Dazu wird, sobald die Aktivierung des ersten Schritts einer Kette oder eines Segmentes durch die Transition erfolgt, zusätzlich ein oder mehrere Ketten- Flag gesetzt. Das Flag wird wieder zurückgesetzt, sobald der letzte Schritt der Kette oder des Segmentes wieder deaktiviert wird.It is obvious that an optimization of a process model should also be implemented with the means of the model. Figure 1.9 shows how the behavior of chain optimization (thin using Petri nets) can be designed with simple means. As soon as the first step of a chain or segment is activated by the transition, one or more chain flags are also set. The flag is reset as soon as the last step of the chain or segment is deactivated.
Hier wird mit einem Flag (LeerFlag) gearbeitet, das angibt, ob die Schritte der gesamten Kette deaktiviert sind und jeweils einem Flag, das angibt, ob ein Segment (SgFlag1...n) über einen aktiven Zustand verfügt. Auf das LeerFlag kann ggf. verzichtet werden, es dient dazu, daß nur eine Abfrage im Falle einer deaktivierten Kette, anstatt 3 (SgFlagl ...n) erfolgen muß. In diesem Fall wird fast die gesamte Bearbeitungszeit der Kette eingespart. Die Bearbeitungszeit verkürzt sich nahezu auf ein drittel bei Vorhandensein eines aktiven Schrittes innerhalb der Kette unter der Annahme, daß alle Segmente gleiche Bearbeitungszeit in Anspruch nehmen.Here a flag (LeerFlag) is used, which indicates whether the steps of the entire chain are deactivated and a flag, which indicates whether a segment (SgFlag1 ... n) has an active state. If necessary, the empty flag can be dispensed with; it serves to ensure that only one query in the case of a deactivated chain, instead of 3 (SgFlagl ... n). In this case, almost the entire processing time of the chain is saved. The processing time is reduced to almost a third if there is an active step within the chain, assuming that all segments take the same processing time.
Eine Erweiterung dieses Prinzips führt zu einem Optimierungsnetz, das die Ausführungsverwaltung des eigentlichen Steuerungsnetz übernimmt.
FeinabstimmungAn extension of this principle leads to an optimization network, which takes over the execution management of the actual control network. fine tune
Unter Ausnutzung dynamischer Effekte ist eine zusätzliche Performanceverbesserung zu erwirken. Jeder Platz verfügt über spezifische, prozeßabhängig Verweildauern der Marken. Eine Segmentierung, deren Segmente die Aufteilung der Zonen gemäß der Verweildauer widerspiegelt bringt zusätzlichen Nutzen. Es sind Bereiche in denen sich Marken bevorzugt aufhalten (am längsten) zu bilden und Zonen mit geringerer Aufenthaltswahrscheinlichkeit.An additional performance improvement has to be achieved by using dynamic effects. Each place has specific, process-dependent retention times of the brands. A segmentation whose segments reflect the division of the zones according to the length of stay brings additional benefits. There are areas where brands prefer to stay (longest) and areas with a lower probability of staying.
[siehe Abbildung 1.9 Ausschnitt einer unverzeigten AS-Kette deren Bearbeitung durch Kettenflags koordiniert wird][see Figure 1.9 section of an undisplayed AS chain whose processing is coordinated by chain flags]
1.3.3.2.3 Einmarkendispatcher1.3.3.2.3 Single brand dispatcher
Befindet sich nur eine Marke in einem (Teil-) Netz kann auch eine CASE- Anweisung genutzt werden. Jede Transition stellt dann einen CASE- Fall dar. Daraus ergibt sich, daß von allen Transitionen einer CASE- Anweisung immer nur eine schalten darf. Beim Schalten einer Transition trägt sie ihre Nachfolgertransition in den CASE- Selektor ein.If there is only one label in a (sub) network, a CASE instruction can also be used. Each transition then represents a CASE case. This means that only one of all transitions of a CASE statement can switch. When switching a transition, it enters its successor transition in the CASE selector.
1.3.3.2.4 Dispatcher1.3.3.2.4 Dispatcher
Der Dispatcher ist sehr aufwendig. Er eignet sich insbesondere für solche Netze, deren Anzahl von Transitionen, die aufgrund der Netzmarkierung schalten könnten sehr viel kleiner sind als die der nicht schaltbereiten.The dispatcher is very complex. It is particularly suitable for networks whose number of transitions that could switch due to the network marking are very much smaller than those of those that are not ready to switch.
Das Grundprinzip ist recht einfach. Es gibt eine Liste (z.B. Array) der Transitionen die aufgrund der Netzmarkierung schalten könnten. Transitionen, die schalten, löschen sich aus dieser Liste und tragen alle Transitionen in die Liste ein, die einen ihrer Nachfolgerplätze als Vorgängerplatz besitzen. Die Liste kann aus Sprungzielen bestehen oder aus Zeigern (Pointer).The basic principle is quite simple. There is a list (e.g. array) of transitions that could switch due to the network marking. Transitions that switch are deleted from this list and enter all transitions in the list that have one of their successor positions as the previous position. The list can consist of jump destinations or pointers.
Gerade der Dispatcher eignet sich für eine Implementierung direkt in der SPS- Runtime, kann aber durchaus auch im lEC- Code realisiert sein.The dispatcher is particularly suitable for implementation directly in the PLC runtime, but can also be implemented in the IEC code.
1.3.3.2.5 Dynamischer Sprungverteiler1.3.3.2.5 Dynamic jump distributor
Der dynamische Sprungverteiler (DSpV) kann als Alternative den einfachen Sprungverteiler oder auch den Dispatcher ersetzten oder zum Teil ergänzen. Ersetzt man den gesamten Sprungverteiler durch eine Variable und einen Sprungbefehl mit dynamischem Sprungziel, muß jede Transition, in ihrer Schalthandlung, anstatt der Verwaltung der Transitionsflags, die Folgetransition in die Variable ein tragen. Eine Segnemtierung kann entfallen. Die Verwaltung paralleler schaltfähiger Transitionen darf nicht ohne weitere Maßnahmen auf diese Weise erfolgen. Aufwendiger ist die Verwendung dynamischer Sprungverteiler für parallel schaltfähige Transitionen. Entweder sind Listen oder Schleifen zu verwalten oder für jede mögliche parallel stattfindende Schaltung muß ein Sprungverteiler stehen.As an alternative, the dynamic jump distributor (DSpV) can replace the simple jump distributor or the dispatcher or supplement it in part. If you replace the entire jump distributor with a variable and a jump command with a dynamic jump destination, each transition, in its switching action, must enter the subsequent transition in the variable instead of managing the transition flags. A segregation can be omitted. The management of parallel switchable transitions must not take place in this way without further measures. The use of dynamic jump distributors for parallel switchable transitions is more complex. Either lists or loops have to be managed or a jump distributor must be available for every possible parallel connection.
[siehe Abbildung 1.10 Dynamischer Sprungverteiler][see Figure 1.10 Dynamic jump distributor]
Tabelle 0.11 Mögliche Codierung des dynamischen SprungverteilersTable 0.11 Possible coding of the dynamic jump distributor
Tabelle 0.12 Codierung der Transition des dynamischen Sprungverteilers
Table 0.12 Coding of the transition of the dynamic jump distributor
1.3.3.3 SFC- Systeme1.3.3.3 SFC systems
Transitionentransitions
Von Bedeutung für die automatische Codeerzeugung sind das Splitting, der Sprungverteiler, und die Einmarkenbetrachtungen, sowie das Kettenflag, die Segmentierung, ggf. der Dispatcher und der DSpV. Ebenso kann die halbautomatische Feinoptimierung zur Verfügung stehen.The splitting, the jump distributor, and the single-mark considerations, as well as the chain flag, the segmentation, possibly the dispatcher and the DSpV are important for the automatic code generation. Semi-automatic fine tuning can also be available.
Bestimmung der AktionsausführungDetermination of the execution of the action
Zur Bestimmung der Ausführung kann grundsätzlich die Verwendung der Mechanismen zur Optimierung von Transitionen (s.o) Anwendung finden. Splitting, Feinoptimierung über die Signaldauer und ggf. der Dispatcher kommen insbesondere zum tragen.In principle, the mechanisms for optimizing transitions (see above) can be used to determine the execution. Splitting, fine-tuning over the signal duration and possibly the dispatcher are particularly important.
1.3.4 Petrinetz- Codeoptimierung durch Faltung1.3.4 Petri net code optimization by folding
Ganz oder teilweise identische Petrinetze (SFC- Norm läßt dies nicht zu) lassen sich zu einer kompakten Darstellungsform falten. Die ursprünglichen binären Netze (Platz ist durch boolesche Variable abgebildet) werden mittels Faltung zu Bitfolgenetzen (8 Plätze sind durch eine Byte- Variable abgebildet). So lassen sich bis zu 8, 16, 32 oder 64 binäre Netze durch einen Source abarbeiten, der sich nur hinsichtlich der Datentypen (Byte, Word, Doppelwort, Langwort) unterscheidet.Completely or partially identical Petri nets (SFC standard does not allow this) can be folded into a compact form of presentation. The original binary networks (space is represented by a Boolean variable) are folded into bit string networks (8 spaces are represented by a byte variable). This means that up to 8, 16, 32 or 64 binary networks can be processed by a source that only differs in terms of data types (byte, word, double word, long word).
[siehe Abbildung 1.11 Gefaltetes Netz]
[see Figure 1.11 folded network]