 ISaGRAF-Simulator benutzen

Der ISaGRAF-Kernelsimulator wird mit dem Debugger gestartet, wenn der Befehl "Simulieren" im Menü "Debuggen", im Fenster des Programmanagers, eingeleitet wird. Der Kernelsimulator ist ein komplettes ISaGRAF-Zielsystem, das die ISaGRAF-Standardfunktionalitäten und sämtliche "C"-Funktionen und -Funktionsbausteine der von CJ International gelieferten Standardbibliothek unterstützt. Die E/A-Karten werden grafisch in einem Fenster simuliert. Alle E/A-Kartentypen können simuliert werden. Karten, welche bei der E/A-Verdrahtung als "Virtuelle Karten" definiert wurden, erscheinen ebenfalls im Simulatorfenster.

Verknüpfungen mit dem Debugger

E/A-Simulation

Bibliothekskomponenten

Optionen

Zusätzlich verfügt der ISaGRAF-Simulator über leistungsfähige Tools für die Simulation und Diagnose von Anwendungen:

Sicherung und Wiederherstellung von Eingangszuständen

Der Zyklusprofilierer

Simulationsskript


Verknüpfungen mit dem Debugger

Der Kernelsimulator unterstützt die uneingeschränkte Kommunikation mit dem ISaGRAF-Debugger, so daß sämtliche Debugging-Funktionen bei der Simulation benutzt werden können. Der Kernelsimulator arbeitet stets mit der aktuellen ISaGRAF-Anwendung. In der Simulationsphase sind die Debugger-Befehle "Starten", "Stoppen", "Übertragen" und "Aktualisieren" nicht mehr verfügbar. Der Simulator kann nur benutzt werden, wenn die Compiler-Option "SIMULATE" vor der Entwicklung des Zielcodes ausgewählt wurde. Wenn Sie das Simulatorfenster schließen, schließt sich auch das Debugger-Fenster (und alle anderen während der Debugging-Sitzung geöffneten Fenster).


E/A-Simulation

Die E/A-Karten erscheinen im Simulatorfenster mit ihren Namen und Steckplatznummern. Sämtliche ISaGRAF E/A-Standardtypen (boolesch, analog und Zeichenkette) können simuliert werden. Die Kanäle der Eingangskarten werden durch spezielle Schaltflächen und Felder, die Kanäle der Ausgangskarten durch grafische Lichtanzeigen und Datenfelder dargestellt.

 	Boolesche Eingänge: Ein boolescher Eingang wird durch eine rechteckige, grüne Schaltfläche dargestellt. Die Kanalnummer erscheint neben der E/A-Schaltfläche. Der Eingangswert ist TRUE, wenn die Schaltfläche "gedrückt" ist. Klicken auf die Schaltfläche invertiert den Zustand des entsprechenden Eingangs. Wenn die Schaltfläche gedrückt ist, benutzen Sie die rechte Maustaste, um den Eingang zu forcieren.

 	Boolesche Ausgänge: Ein boolescher Ausgang wird durch einen kleinen Kreis dargestellt. Die Kanalnummer erscheint neben der E/A-Schaltfläche. Der Ausgangswert ist TRUE, wenn sich das grafische Symbol farblich abhebt.

 	Analoge Eingänge: Ein analoger Eingangskanal ist ein einfaches, numerisches Feld, in dem der Wert des entsprechenden Eingangs eingegeben werden kann. Klicken auf das Feld aktiviert den Eingabecursor. Jetzt kann der neue Wert für den Kanal eingegeben werden. Bestätigen mit der EINGABE-Taste ist überflüssig. Analoge Eingänge können als Dezimal- oder Hexadezimalwerte eingegeben werden. Benutzen Sie die Schaltflächen "Nach oben/unten", um den aktuellen Wert zu vergrößern oder zu verkleinern.

 	Analoge Ausgänge: Ein analoger Ausgangskanal wird als numerisches Ausgangsfeld dargestellt. Der Ausgangswert kann als Dezimal- oder Hexadezimalzahl angezeigt werden. Ausgangskanäle können nicht vom Anwender geändert werden.

 	Zeichenketten-Eingang: Ein Eingangskanal vom Typ Zeichenkette ist ein einfaches Textfeld, in dem der Wert des entsprechenden Eingangs eingegeben wird. Klicken auf das Feld aktiviert den Eingabecursor. Jetzt kann der neue Wert für den Kanal eingegeben werden. Bestätigen mit der EINGABE-Taste ist überflüssig.

 	Zeichenketten-Ausgang: Ein Ausgangskanal vom Typ Zeichenkette ist ein Textfeld. Ausgangskanäle können nicht vom Anwender geändert werden.


Bibliothekskomponenten

Der ISaGRAF-Simulator unterstützt die von CJ International gelieferten Standardumrechnungen, -funktionen und -funktionsbausteine. Die folgenden Objekte werden unterstützt:

 Umrechnungsfunktionen:

bcd, scale

 Funktionen:

abs, acos, ArCreate, ArRead, ArWrite, ascii, asin, atan, char, cos, delete, expt, find, insert, left, limit, log, max, mid, min, mlen, mod, mux4, mux8, odd, rand, replace, right, rol, ror, sel, shl, shr, sin, sqrt, tan, trunc

 Funktionsbausteine:

average, blink, cmp, ctd, ctu, ctud, derivate, f_trig, hyster, integral, lim_alrm, r_trig, rs, sema, sr, stackint, tof, ton, tp

Benutzerdefinierte Umrechnungen, "C"-Funktionen und -Funktionsbausteine werden gewöhnlich nicht vom ISaGRAF-Simulator integriert. Solche Objekte werden entwickelt, um Software- und Harwareressourcen des Zielsystems zu nutzen. Ressourcen dieser Art sind generell nicht im Windows-System verfügbar. Der ISaGRAF-Simulator bewirkt das folgende Standardverhalten bei allen benutzerdefinierten Umrechnungen, Funktionen und Funktionsbausteinen:

•	Wenn eine neue Umrechnung vom Simulator verarbeitet wird, wird sie durch eine "Null"-Umrechnung ersetzt. Dies bedeutet, daß der physikalische Wert analoger Variablen immer gleich dem elektrischen Wert ist (wie in der Simulatortafel eingegeben oder angezeigt).

•	Wenn neue "C"-Funktionen oder -Funktionsbausteine vom Simulator verarbeitet werden, erfolgt keine Operation. Der Rückgabewert ist gleich null.


Optionen

Mit den Befehlen im Menü "Optionen" kann die Bildschirmanzeige der E/A-Elemente in der Simulatortafel variiert werden. Diese Optionen können vom Benutzer während der Debugging-Sitzung jederzeit aktiviert oder deaktiviert werden.

 Wenn die Option "Farbanzeige" aktiviert wird, erscheinen die E/A-Kanäle als farbige Bitmaps. Falls sich die Farben auf LCD-Bildschirmen nicht deutlich genug abheben, sollte man diese Option deaktivieren. Die Ein- und Ausgänge der E/A-Kanäle erscheinen dann in schwarz/weiß.

 Wenn die Option "Variablennamen" aktiviert wird, erscheint ein Etikett mit dem Namen der angeschlossenen E/A-Variablen neben dem entsprechenden E/A-Kanal. Durch Deaktivieren dieser Option kann die Simulatortafel verkleinert werden.

 Wenn die Option "Hexadezimalwerte" aktiviert wird, erfolgt die Eingabe und Anzeige aller analogen Ein- und Ausgangskanäle im Hexadezimalformat.

 Wenn die Option "Immer sichtbar" aktiviert wird, bleibt das Simulatorfenster immer sichtbar, selbst wenn Eingaben in anderen Fenstern erfolgen.


Der Zyklusprofilierer

Der ISaGRAF-Zyklusprofilierer ist ein leistungsfähiges Diagnosewerkzeug, das errechnet, wieviel Zykluszeit die einzelnen Programme, Funktionen und Funktionsbausteine einer Anwendung in Anspruch nehmen. Dieses Werkzeug bietet sich an, wenn eine schnelle Diagnose der Leistungen einer Anwendung erforderlich ist und gibt dem Programmierer die Möglichkeit, auf Codeabschnitte zuzugreifen, die eventuell optimiert werden könnten.

Der Zyklusprofilierer wird mit dem Befehl "Werkzeuge / Zyklusprofilierer" in den Menüs des ISaGRAF-Simulatorfensters eingeleitet. Er zeigt für jedes Programm, jede Funktion und jeden Funktionsbaustein an, wieviel Zykluszeit (in Prozent) deren Ausführung in Anspruch nimmt:

Wenn die Option "Anzeige / Durchschnitt" aktiviert wird, erscheint der Durchschnitt der errechneten Prozente seit dem Start der Anwendung (oder seit dem letzten Befehl "Anzeige / Rücksetzen").

Wenn die Option "Anzeige / Durchschnitt" nicht aktiviert wird, erscheinen die Messungen, die während der Ausführung des letzten Zyklus erfolgt sind. Diese Funktion kann auch benutzt werden, wenn sich die Anwendung im "Schrittmodus" befindet, um Messungen im Zusammenhang mit dem Anwendungskontext zu erhalten.

Der Befehl "Anzeige / Kopieren" wird benutzt, um die Programmnamen mit den errechneten Prozenten im ASCII-Format in die Windows-Zwischenablage zu kopieren. Diese Daten können dann in Textdokumente oder herkömmliche SpreadSheets eingefügt werden.

Wichtige Hinweise:

Diese Messungen sind nicht exakt. Die Prozentsätze werden durch Zählen der TIC-Anweisungen berechnet, wobei die verschiedenen Ausführungszeiten der Anweisungen berücksichtigt werden. Die Berechnungen beinhalten nicht die Zeit, die in "C"-Funktionen und -Funktionsbausteinen verbraucht wird.

Der für eine Funktion oder einen Funktionsbaustein angezeigte Wert ist die Summe aller "Aufrufzeiten" der Anwendungsprogramme im selben Zyklus.

Die Zeitberechnung stützt sich auf TIC-Code und liefert keine zuverlässigen Daten, wenn der aktuelle Anwendungscode in der Hochsprache "C" generiert und mit einem "C"-Compiler kompiliert wurde.


Simulationskript
Simulationsskript

Der ISaGRAF-Simulator verfügt über ein Werkzeug, mit dem Simulationsskript erstellt und ausgeführt werden kann. Das Skript wird in einer einfachen, ST-ähnlichen Textsprache geschrieben und dient der Automatisierung von ISaGRAF-Simulatortests.

Skript erstellen

Skript ausführen

Skriptsprache

Der Simulatiosskripteditor wird mit dem Befehl "Werkzeuge / Simulationsskript" im Simulatorfenster gestartet. Es folgt das Fenster des Skripteditors:

Das obere Fenster ist ein Texteditor, in dem Skriptanweisungen eingegeben werden. Er wird wie die anderen ISaGRAF-Texteditoren benutzt und verfügt über hochgradige Funktionen, wie die Auswahl von Variablensymbolen mit der Maus. Die Befehle des Menüs "Optionen" werden benutzt, um Tabulationen zu setzen und eine Schriftart auszuwählen.

Im unteren Fenster erscheinen die entsprechenden Ausgabemeldungen, wenn das Skript läuft. Die Trennlinie zwischen den beiden Fenstern kann beliebig verschoben werden. Das Ausgabefenster kann bei der Skripbearbeitung geschlossen werden, öffnet sich aber jedesmal automatisch, wenn ein Skript ausgeführt wird.


Skript bearbeiten

Benutzen Sie die Befehle des "Datei"-Menüs, um die Skriptdateien zu manipulieren:

Neu	erstellt ein neues, unbenanntes Skript

Öffnen	lädt ein bestehendes Skript aus der Datei

Sichern	sichert Skripttext und Inhalt des Ausgabefensters auf der Festplatte (im Projektverzeichnis)

Sichern unter	sichert das Skript unter einem anderen Namen

Für jedes Skript werden im ISaGRAF-Projektverzeichnis zwei Dateien erstellt:

<skriptname>.SCC	Text des Skripts (Anweisungen)

<skriptname>.SCO	Inhalt des Ausgabefensters

wobei <skriptname> der Name des Skripts ist. Beide Dateien sind Standardtextdateien und können mit einem beliebigen Texteditor geöffnet werden.

Bei der Bearbeitung eines Skripts wird der Befehl "Bearbeiten / Symbol einfügen" benutzt, um einen deklarierten Variablennamen auszuwählen und am Standort des Eingabecursors einzufügen.


Skript ausführen

Ein Skript muß geprüft und kompiliert werden, bevor es ausgeführt werden kann. Falls erforderlich, erfolgt die Syntaxprüfung bei einem "Run"-Befehl automatisch. Benutzen Sie die folgenden Befehle des Menüs "Skript":

Prüfen	prüft die Syntax und kompiliert das Skript

Skript ausführen	startet die Ausführung des bearbeiteten Skripts

Bevor ein neues, unbenanntes Skript geprüft werden kann, muß es mit einem Namen gesichert werden. Der Inhalt eines benannten Skripts wird vor der Syntaxprüfung automatisch auf der Festplatte gesichert.

Es ist nicht möglich, den Inhalt eines Skripts während der Ausführung zu modifizieren. Wenn das Ende des Skripts erreicht ist, erscheint eine entsprechende Meldung im Ausgabefenster. Mit dem folgenden Befehl im Menü "Skript" kann die Ausführung eines Skripts abgebrochen werden:

Skript abbrechen	beendet ein in der Ausführung befindliches Skript

Die Skriptausführung erfolgt zwischen den Zielsystemzyklen. Falls eine unendliche Schleife im Zyklus programmiert ist, wird diese vom ISaGRAF-Simulator unterbrochen, so daß die ISaGRAF-Zyklen weiterhin ausgeführt und andere ISaGRAF-Anwendung nicht blockiert werden. Wenn die gleiche Marke mehrmals in einem Zielsystemzyklus angetroffen wird, wird das Skript vom ISaGRAF-Skriptinterpretierer unterbrochen. Die Skriptausführung kann auch auf normalem Weg durch "Cycle"- oder "Wait"-Anweisungen unterbrochen werden.


Skriptsprache

Die Sprache für die Beschreibung von Skript ist eine einfache, ST-ähnliche Textsprache, in der jede Anweisung auf einer separaten Textzeile eingegeben wird, die am Zeilenende kein Semikolon benötigt. Die folgende Schaltfläche in der Toolbox dient der Anzeige der verfügbaren Anweisungen und der Auswahl eines Schlüsselworts, das dann am Standort des Eingabecursors eingefügt wird:

Anweisung einfügen (Schlüsselwort und Hilfe als Kommentar)

Es gibt verschiedene Anweisungstypen. Der erste Typ ist die Zuweisung (Forcierung) einer Variablen:

:=	Assignment

Die folgenden Anweisungen bewirken die Ausgabe von Meldungen im Ausgabefenster:

Print	Augabe einer Zeichenkette oder eines Variablenwerts

PrintTime	Ausgabe von aktuellem Datum und Uhrzeit

Die folgenden Anweisungen werden benutzt, um Skriptanweisungen mit dem ISaGRAF-Zyklus zu synchronisieren:

Cycle	läßt den ISaGRAF-Simulator einen Zyklus ausführen

Wait	wartet auf eine Verzögerung

Weitere Anweisungen steuern den Datenfluß der Anweisungen im Skript:

Labels	können an beliebigen Stellen im Skript plaziert werden

Goto	unbedingter Sprung zu einer Marke (label)

If goto	bedingter Sprung zu einer Marke (label)

End	beendet das Skript

Skript kann wahlweise groß- oder kleingeschrieben werden. Am Ende der Textzeilen können Kommentare eingefügt werden, die entweder gemäß der ST-Konventionen (zwischen "(*" und "*)" Zeichen) geschrieben oder mit dem Vorzeichen ";" behaftet werden.


":=" Assignment

Bedeutung:	Forciert den Wert einer ISaGRAF-Variablen, die eine interne Variable oder ein Ein- oder Ausgangskanal sein kann.

Syntax:	<varname> := <konstanter_ausdruck>

<varname> = <konstanter_ausdruck>

Argumente:	<varname> ist das gültige Symbol einer deklarierten Anwendungsvariablen oder eine direkt (gemäß der "%" Schreibkonventionen) dargestellte E/A-Variable.

<konstanter_ausdruck> ist ein gültiger konstanter Ausdruck, der dem Typ der spezifizierten Variablen entspricht. Bei booleschen Variablen kann "0" und "1" anstatt "FALSE" und "TRUE" benutzt werden. Bei Timern kann das Vorzeichen "T#" oder "TIME#" weggelassen werden.

Hinweise:	Eingangsvariablen, die von einem Skript forciert werden, brauchen nicht verriegelt zu sein. Die Zeichnung des entsprechenden Eingangskanals wird aktualisiert, wenn eine Eingangsvariable von einem Skript forciert wird.

Warnung: Analoge Ein- oder Ausgangsvariablen, die mit einer Umrechnung verbunden sind, dürfen nicht forciert werden, da die Skriptausführung keine Umrechnungsfunktionen oder -tabellen unterstützt.

Beispiel:	MyBooVar := 1         (* äquivalent zu TRUE *)

MyIntVar := 1234

MyRealVar := 1.2345

MyMsgVar := 'Hello'


Print

Bedeutung:	Schreibt eine Zeichenkette oder einen Variablenwert im Ausgabefenster. Der Text erscheint als neue Zeile am Ende des bereits im Ausgabefenster angezeigten Texts.

Syntax:	Print '<text>'

Print <varname>

Argumente:	<text> ist eine beliebige, in einfachen Anführungszeichen geschriebene Zeichenkette

<varname> ist das gültige Symbol einer deklarierten Anwendungsvariablen oder eine direkt (gemäß der "%" Schreibkonventionen) dargestellte E/A-Variable.

Hinweis:	Das Ausgabeformat von Variablenwerten entspricht stets den IEC-Konventionen.

Beispiel:	Print 'Hello'

Print MyBooVar

Ausgabe:	Hello

MyBoovar = TRUE


PrintTime

Bedeutung:	Schreibt das aktuelle Datum und die Uhrzeit als neue Zeile an das Ende des im Ausgabefenster angezeigten Texts.

Syntax:	PrintTime

Hinweis:	Datum und Uhrzeit erscheinen im aktuellen Format des Windows-Systems.

Beispiel:	Print 'Time now is:'

PrintTime

Ausgabe:	Time now is:

15:45:22


Cycle

Bedeutung:	Hält die Skriptausführung bis zum nächsten ISaGRAF-Zyklus zurück.

Syntax:	Cycle

Hinweis:	Skriptanweisungen werden am Anfang eines ISaGRAF-Zyklus ausgeführt. Wenn sich der Simulator im "Schrittmodus" befindet, folgt ein Zyklus unmittelbar auf die Anweisung "cycle". Die nachfolgenden Skriptanweisungen erfolgen beim nächsten Befehl "Einen Zyklus ausführen" des Debuggers.

Beispiel:	(* ISaGRAF-Programm kopiert A zu B *)

A := 0

Cycle

Print B (* noch kein Zyklus ausgeführt *)

A := 1

Print B (* kein Zyklus ausgeführt / B nicht auf 1 gesetzt *)

Cycle

Print B

Ausgabe:	B = 0

B = 0

B = 1


Wait

Bedeutung:	Hält die Skriptausführung zurück, bis die Verzögerungszeit abgelaufen ist.

Syntax:	Wait <verzögerung>

Argumente:	<verzögerung> wird gemäß der IEC-Konventionen für konstante Zeitausdrücke geschrieben. Die Vorzeichen "T#" oder "TIME#" können weggelassen werden. Die Verzögerung muß zwischen 10 Millisekunden und 1 Stunde liegen.

Hinweis:	Die "Wait"-Anweisung ist mehr oder weniger präzise und abhängig vom Windows-System. Zudem sollte man bei einer Verzögerung plus/minus einen ISaGRAF-Zyklus berücksichtigen.

Beispiel:	PrintTime

Wait 2s

PrintTime

Ausgabe:	15:45:27

15:45:29


Marken (labels)

Bedeutung:	Marken können an beliebigen Stellen im Zyklus eingesetzt werden. Sie werden als Ziel für die "Goto"-Anweisungen benutzt und ermöglichen die Datenflußsteuerung von Skriptanweisungen.

Syntax:	<markenname>:

Argumente:	<markenname> ist ein einmaliger Name, der gemäß der IEC-Konventionen für die Variablenbenennung geschrieben wird: Der Name begrenzt sich auf 16 Zeichen, beginnt mit einem Buchstaben, auf den Buchstaben, Zahlen oder Unterstrichzeichen folgen. Auf den Markennamen sollte ein ":" Zeichen folgen.

Hinweis:	Eine Zeile, auf der eine Marke definiert ist, darf keine Anweisungen enthalten.

Markennamen sollten nicht für deklarierte ISaGRAF-Variablen benutzt werden.

Beispiel:	(* Beispiel eines Skripts mit unbegrenzter Schleife *)

loop:

PrintTime

Wait 1s

Goto loop


Goto

Bedeutung:	Unbedingter Sprung zu einer Marke

Syntax:	Goto <markenname>

Argumente:	<markenname> ist der Name einer im Skript definierten Marke.

Hinweis:	Rückwärtssprünge sind erlaubt. Bei unbegrenzten Schleifen wird die Skriptausführung in jeder Schleife automatisch unterbrochen, um die Ausführung der ISaGRAF-Zyklen zu gewährleisten.

Beispiel:	Print 'Before Jump'

Goto MyLabel

Print 'Within Jump' (* nie ausgeführte Anweisung *)

MyLabel:

Print 'After Jump'

Ausgabe:	Before Jump

After Jump


If Goto

Bedeutung:	Bedingter Sprung zu einer Marke. Die Bedingung ist entweder ein Vergleich zwischen zwei ISaGRAF-Variablen oder ein Vergleich zwischen einer Variablen und einem konstanten Ausdruck.

Syntax:	If <var1> test <var2> Goto <markenname>

If <var1> test <konstanter_ausdruck> Goto <markenname>

Verfügbare Vergleichstests sind:

=	true, wenn beide Teile den gleichen Wert haben

<>	true, wenn die Teile unterschiedliche Werte haben

<	true, wenn erster Teil kleiner als zweiter Teil ist

<=	true, wenn erster Teil kleiner oder gleich zweiter Teil ist

>	true, wenn erster Teil größer als zweiter Teil ist

>=	true, wenn erster Teil größer oder gleich zweiter Teil ist

Argumente:	<var1> <var2> sind gültige Symbole von deklarierten Anwendungsvariablen oder direkt, unter Anwendung der "%" Schreibkonventionen, dargestellte E/A-Variablen.

<konstanter_ausdruck> ist ein gültiger konstanter Ausdruck, der dem Typ der spezifizierten Variablen entspricht. Bei booleschen Variablen kann "0" und "1" anstatt "FALSE" und "TRUE" benutzt werden. Bei Timern kann das Vorzeichen "T#" oder "TIME#" weggelassen werden.

<markenname> ist der Name einer im Skript definierten Marke.

Hinweis:	Rückwärtssprünge sind erlaubt. Bei unbegrenzten Schleifen wird die Skriptausführung in jeder Schleife automatisch unterbrochen, um die Ausführung der ISaGRAF-Zyklen zu gewährleisten.

Beispiel:	(* Dieses Skript läuft in Schleife, bis MyVar TRUE ist *)

Loop:

If MyVar = FALSE Goto Continue

Goto TheEnd

Continue:

Print MyVar

Goto Loop

TheEnd:


End

Bedeutung:	Beendet das Skript.

Syntax:	End

Hinweis:	Es ist nicht unbedingt erforderlich, eine "End"-Anweisung auf die letzte Zeile eines Skripts zu setzen.

Beispiel:	(* Dieses Skript läuft in Schleife, bis MyVar TRUE ist *)

Loop:

If MyVar = FALSE Goto Continue

End

Continue:

Print MyVar

Goto Loop


Eingangszustände sichern und wiederherstellen

Unter Anwendung des ISaGRAF-Simulators werden Eingangskanäle manuell forciert (Schaltflächen und Textfelder der Simulatortafel). Die folgenden Befehle des "Werkzeug"-Menüs können jederzeit benutzt werden, um die Zustände aller Eingangskanäle zu sichern und wiederherzustellen:

Eingangsschema laden	Forcieren der Eingangskanäle mit den Werten, die auf der Festplatte in einer Datei durch den Befehl "Eingangsschema sichern" gespeichert wurden.

Eingangsschema sichern	Sichern der Eingangskanäle in einer Datei, so daß sie zu einem späteren Zeitpunkt mit dem Befehl "Eingangsschema laden" wiederhergestellt werden können. Die Datei wird im Projektverzeichnis gespeichert, also zusammen mit den anderen Projektdateien von der ISaGRAF-Archivierungs-Utility gesichert.

Hinweis: Nur benannte Eingangskanäle (d.h. Kanäle, die mit einer Variablen verbunden sind) werden auf Platte gesichert.