Konfigurationsbeispiele für die sichere Querkommunikation
Wichtig
Die hier aufgeführten Beispiele dienen nur zur Demonstration der Konfiguration von CODESYS Safety NetVars in einem verteilten Projekt und haben nicht den Anspruch der vorschriftsmäßigen Verwendung von Safety-Bausteinen in einem sicherheitskritischen Umfeld. Für ein solches Umfeld sind in jedem Fall die Hinweise im CODESYS Safety Anwenderhandbuch zu beachten.
Die folgenden Beispiele bauen aufeinander auf. In Beispiel 1 wird die Querkommunikation zwischen 2 Steuerungen implementiert. In Beispiel 2 wird das Projekt aus Beispiel 1 um eine dritte Steuerung erweitert, die mit den beiden anderen verschaltet wird. Die POU jeder Sicherheitsapplikation enthält einen Baustein SF_EmergencyStop
, der normalerweise als Eingangssignal das Ausgangssignal eines physikalischen Not-Aus-Schalters bekommen würde. Zur Vereinfachung wird dieses Ausgangssignal in den Beispielen durch eine GVL mit einer globalen Variablen simuliert. Durch Verschaltung der jeweiligen Not-Aus-Schalter mit den Safety Netzwerkvariablen als Eingangssignal des SF_EmergencyStop
-Bausteins wird beim Auslösen des Schalters einer Steuerung auch der SF_EmergencyStop
-Baustein bei den mittels Safety Netzwerkvariablen verbundenen Steuerungen ausgelöst.
Allgemeine Hinweise zur Konfiguration der Safety Netzwerkvariablen in diesen Beispielen
Wichtig
Bevor Änderungen an den Objekten Safety Netzwerkvariablenliste (Sender) und Safety Netzwerkvariablenliste (Empfänger) gemacht werden, sollte sowohl aus der Applikation der zugehörigen Standardsteuerung als auch aus der zugehörigen Sicherheitsapplikation ausgeloggt werden, da gegebenenfalls notwendige abhängige Änderungen an diesen sonst nicht korrekt durchgeführt werden können.
Registerkarte SPS Netzwerk:
Listenidentifikatoren: Die Listenidentifikatoren werden vom unterlagerten NetVarUDP Protokoll zum Zuordnen von Telegrammen benötigt und müssen daher innerhalb der Broadcast-Domäne für ein Safety Netzwerkvariablenlisten Sender- Empfänger Paar eindeutig sein. Listenidentifikatoren werden paarweise angegeben, da je ein Wert für die Richtung (Sender -> Empfänger) und ein Wert für die Richtung (Empfänger -> Sender) benötigt werden.
Gruppe der Variablenlisten-Identifikatoren der Hauptsteuerung (Nur bei Safety Netzwerkvariablenlisten (Sender)): Diese Gruppe legt einen eindeutigen Bereich von Listenidentifikatoren fest, der für diese Safety Netzwerkvariablenliste zur Übertragung verwendet werden soll. Die Werte innerhalb einer Gruppe überschneiden sich nicht mit den Werten einer anderen Gruppe.
Zielnetzwerkadresse: Wenn die Broadcast-Option nicht verwendet werden soll, ist für die Zielnetzwerkadresse jeweils die IP-Adresse der Gegenstelle, mit der kommuniziert werden soll, zu verwenden. Die IP-Adresse der Steuerung mit der Safety Netzwerkvariablenliste (Sender) ist damit beim Empfänger einzutragen und die IP-Adresse der Steuerung mit der Safety Netzwerkvariablenliste (Empfänger) beim Sender.
Port: Kann falls benötigt (zum Beispiel wegen Routern oder Firewalls) angepasst werden. Für die Beispiele wird davon ausgegangen, dass keine Anpassung nötig ist und der Standardwert wird beibehalten. Ein Verbindungspaar von Safety Netzwerkvariablenliste Sender-Empfänger muss den gleichen Port verwenden.
Registerkarte Safety Konfiguration (Safety Netzwerkvariablenliste (Sender))
Safety Adresse: Diese Adresse muss einen netzwerkweit eindeutigen Wert haben, da sie mit zur internen Identifikation der Verbindung dient (siehe Safety Anwenderhandbuch). Im Beispiel wird daher darauf geachtet, dass sie projektweit eindeutig gemacht wird. Es wird davon ausgegangen, dass keine weiteren Safety Netzwerkvariablen im gleichen Netzwerk konfiguriert wurden.
Maximalanzahl von Empfängern: Diese Einstellung bleibt in den Beispielen auf dem Standardwert von
4
, um eine Maximalausbaustufe von 4 miteinander kommunizierenden Steuerungen vorzusehen. Eine nachträgliche Änderung dieses Werts führt dazu, dass sowohl die Sicherheitsapplikation, als auch die zugehörigen Applikationen der Standardsteuerung erneut heruntergeladen werden müssen. Eine Erhöhung des Werts erhöht den Ressourcenverbrauch, da der Sender auch für die noch unbenutzten Verbindungen bereits Ressourcen reserviert. Der Wert sollte daher nicht höher als benötigt gesetzt werden.
Registerkarte Safety Konfiguration (Safety Netzwerkvariablenliste (Empfänger))
Connection ID: Diese ID muss einen netzwerkweit eindeutigen Wert haben, da die Connection ID mit zur internen Identifikation der Verbindung dient (siehe Safety Anwenderhandbuch). Im Beispiel wird daher darauf geachtet, dass sie projektweit eindeutig gemacht wird. Es wird davon ausgegangen, dass keine weiteren Safety Netzwerkvariablen im gleichen Netzwerk konfiguriert wurden.
Watchdog-Zeit: Muss für das Beispiel systemspezifisch sinnvoll gesetzt werden. Weitere Anforderungen oder Einschränkungen an den zu verwendenden Wert können sich aus dem Safety Anwenderhandbuch ergeben.
Projektvorbereitung
Tipp
Zum Testen der Netzwerkvariablenfunktion kann der physikalische Not-Aus-Schalter zunächst durch eine GVL mit einer einzelnen SAFEBOOL
-Variablen, deren Initialwert auf TRUE
gesetzt ist, simuliert werden. Statt einen physikalischen Schalter zu betätigen, kann dann mittels des Befehls der Wert dieser Variablen geändert werden, um die Reaktion des verteilten Gesamtsystems zu beobachten.
Legen Sie ein neues Projekt mit dem Template Leeres Safety Projekt mit einer Standardsteuerung und einer darunter hängenden Sicherheitssteuerung an.
Selektieren Sie im Gerätebaum den Knotenpunkt SafetyApp und wählen Sie den Befehl .
Geben Sie im Dialog Safety Extended-POU hinzufügen einen Namen für POU ein und wählen Sie als POU-Typ PROGRAM. Anschließend klicken Sie auf Hinzufügen.
Fügen Sie in die geöffnete POU einen Baustein
SF_EmergencyStop
ein und weisen Sie dem Eingang Activate den WertTRUE
zu.Fügen Sie der SafetyApp mit dem Befehl eine GVL hinzu.
Deklarieren Sie in dieser GVL die globale Variable
Local_EStop
des DatentypsSAFEBOOL
mit dem InitialwertTRUE
, die im Beispiel den physikalischen Not-Aus-Schalter ersetzt.Fügen Sie der Sicherheitsapplikation mittels des Befehls Objekt hinzufügen eine Safety Netzwerkvariablenliste (Empfänger) und eine Safety Netzwerkvariablenliste (Sender) hinzu.
Wenn nötig, passen Sie in der Safety Netzwerkvariablenliste (Empfänger) in der Registerkarte Safety Konfiguration den Wert Watchdog-Zeit so an, dass er zur verwendeten Hardware und zu den Anforderungen an das Zeitverhalten der Applikation passt.
Beispiel 1: Erstellen und Konfigurieren eines Teilnehmers für die sichere Querkommunikation durch Kopieren der Standardsteuerung mit darunter hängender Sicherheitssteuerung
Öffnen Sie die POU von SafetyApp des Projekts und fügen Sie vor dem Baustein
SF_EmergencyStop
einen OperatorAND
so ein, dass der Ausgang des OperatorsAND
mit dem BausteineingangE_StopIn
verbunden ist.Weisen Sie dem ersten Eingang des
AND
-Operators die globale VariableLocal_EStop
zu.Deklarieren Sie in der POU eine lokale Variable
bVar_Reset
des DatentypsBOOL
und verknüpfen Sie diese mit dem EingangReset
des BausteinsSF_EmergencyStop
. Diese wird für das Debuggen benötigt.Um das Signal des Not-Aus-Schalters (die globale Variable
Local_EStop
) mit Hilfe einer Safety Netzwerkvariablenliste (Sender) für die Veröffentlichung vorzubereiten, legen Sie in der Safety Netzwerkvariablenliste (Sender) die VariableSApp1_EStop
des DatentypsSAFEBOOL
an.Fügen Sie in der POU mit dem Befehl Netzwerk einfügen (unterhalb) ein neues Netzwerk hinzu und weisen Sie der Variablen
SApp1_EStop
den Wert der VariablenLocal_EStop
(Signal des Not-Aus-Schalters) zu.Öffnen Sie den Eigenschaftendialog von SafetyApp benennen Sie diese um in SafetyApp1
Legen Sie nun eine zweite Steuerung an, indem Sie die in den bisherigen Schritten konfigurierte Standardsteuerung mit darunter hängender Sicherheitssteuerung in Ihrem Projekt kopieren und wieder einfügen. Für die kopierte Standard- und Sicherheitssteuerung müssen zunächst die folgenden Anpassungen vorgenommen werden.
Anpassungen an der eingefügten Kopie: Nennen Sie das Objekt SafetyApp1 um in SafetyApp2, da der Name eines Safety Applikationsobjekts innerhalb eines Projekts eindeutig sein muss.
Setzen Sie SafetyApp2 als aktive Applikation und wählen Sie den Befehl . Durch das Übersetzen wird unterhalb der neuen Standardsteuerung eine neue Mapping-Applikation SafetyApp2_Mapping erstellt.
Nach dem Übersetzen werden im Meldungsfenster (
) mehrere Fehler bezüglich der sicheren Querkommunikation angezeigt. Diese sollen helfen gängige Konfigurationsfehler aufzuzeigen und sollten als erstes korrigiert werden. Hierfür betrachten Sie die folgenden angezeigten Fehlermeldungen:Fehler P0100 besagt, dass die Gruppe der Listenidentifikatoren im Projekt nicht eindeutig ist (da das Objekt Safety Netzwerkvariablenliste (Sender) kopiert wurde). Zur Beseitigung des Fehlers öffnen Sie das Objekt Safety Netzwerkvariablenliste (Sender) der Applikation SafetyApp2 und geben in der Registerkarte SPS Netzwerk für Gruppe der Variablenlisten-Identifikatoren auf der Hauptsteuerung einen Wert ein, der im Projekt noch nicht vergeben ist, zum Beispiel
2
.Für eine eindeutige Namensgebung im Beispiel muss der Name der veröffentlichten Variablen noch angepasst werden. Hierfür öffnen Sie die Registerkarte Safety Konfiguration der Safety Netzwerkvariablenliste (Sender) der Applikation SafetyApp2 und ändern den Namen der deklarierten Variablen um in
SApp2_EStop
.Für die Verwendung von Safety Netzwerkvariablen ist es gemäß des Safety Anwenderhandbuchs erforderlich, dass die Safety-Adressen aller verwendeten Sender eindeutig sind. Daher tragen Sie nun in der Registerkarte Safety Konfiguration der Safety Netzwerkvariablenliste (Sender) der Applikation SafetyApp2 eine neue Safety-Adresse dieser Variablenliste ein, zum Beispiel
1001
.Fehler P0200 besagt, dass für eine Safety Netzwerkvariablenliste (Empfänger) noch kein zulässiger Sender ausgewählt wurde. Dieser lässt sich folgendermaßen beheben: Öffnen Sie die Safety Netzwerkvariablenliste (Empfänger) von SafetyApp2, zum Beispiel durch Doppelklicken der Fehlermeldung im Meldungsfenster. Wählen Sie nun aus der Auswahlliste Zugeordneter Sender die Sender-Variablenliste aus, die die in Schritt 4 veröffentlichte Variable
SApp1_EStop
enthält. Falls für die Programmierlogik gewünscht, kann der lokale Name der Variablen nun noch umbenannt werden. Im Beispiel ist dieser alsSApp1_EStop_1
vorbelegt, da die VariableSApp1_EStop
durch das Kopieren der Applikation bereits definiert ist. Da die POU im nächsten Schritt aber angepasst wird, ändern Sie den Namen in der geöffneten Safety Netzwerkvariablenliste (Empfänger) aufSApp1_EStop
zurück, damit er wieder mit der veröffentlichten Variablen übereinstimmt.Da die ConnectionIDs aller verwendeten Empfänger innerhalb des Netzwerks eindeutig sein müssen, müssen Sie in der kopierten Safety Netzwerkvariablenliste (Empfänger) in der Registerkarte Safety Konfiguration noch eine andere, eindeutige Connection ID eintragen.
Öffnen Sie die POU von SafetyApp2..
Weisen Sie dem zweiten Eingang des
AND
-Operators die VariableSApp1_EStop
zu.Weisen Sie die lokale Variable
Local_EStop
(Signal des Not-Aus-Schalters von SafetyApp2) der Sender-VariablenSApp2_EStop
zu.Setzen Sie SafetyApp1 wieder aktiv und wählen Sie den Befehl .
Doppelklicken Sie im Meldungsfenster den Fehler P0200.
Die Safety Netzwerkvariablenliste (Empfänger) von SafetyApp1 öffnet sich.
Wählen Sie aus der Auswahlliste Zugeordneter Sender die Sender-Variablenliste von SafetyApp2 aus.
Durch das Verknüpfen mit dem Sender der anderen Steuerung werden die Listenidentifikatoren auf den im Sender definierten Bereich aktualisiert.
Öffnen Sie die POU von SafetyApp1.
Weisen Sie dem zweiten Eingang des
AND
-Operators die verfügbare externe Variable SApp2_EStop zu.Übersetzen Sie erneut SafetyApp1.
Es wird kein Fehler mehr gemeldet.
In den folgenden Schritten führen Sie die Netzwerkkonfiguration mit expliziten Adressen aus.
Zunächst müssen für beide Steuerungen im Projekt die Kommunikationseinstellungen entsprechend gesetzt werden, damit später ein Einloggen auf die Steuerungen möglich ist.
Wenn ein Broadcast auf die Netzwerkadresse
255.255.255.255
nicht erwünscht oder aus technischen Gründen nicht möglich ist, zum Beispiel wegen der Router-Einstellungen, können die Steuerungen, die über SafetyNetvars kommunizieren sollen, auch explizit angegeben werden.Für oben genanntes Beispiel mit zwei beteiligten Steuerungen sind die Netzwerkeinstellungen auf der Registerkarte SPS Netzwerk von Sender und Empfänger Objekten dann wie folgt vorzunehmen:
Zunächst deaktivieren Sie in der Registerkarte SPS Netzwerk aller Safety Netzwerkvariablenlisten des Projekts die Option Standardwerte für Zielnetzwerkadresse und Port verwenden (255.255.255.255, 1202).
Tragen Sie gemäß dieser Abbildung die IP-Adressen der jeweiligen Gegenstelle ein. Die IP-Adressen müssen Sie Ihrem Netzwerk entsprechend anpassen.
Für die beiden Safety Netzwerkvariablenlisten der SafetyApp1 muss also jeweils die Zielnetzwerkadresse
192.168.0.22
eingetragen werden und bei den Safety Netzwerkvariablenlisten der SafetyApp2 die IP Adresse192.168.0.1
. Hierbei muss der Eintrag beim Sender jeweils für den Eintrag gemacht werden, bei dem die Listenidentifikatoren mit denen beim zugehörigen Empfänger übereinstimmen, damit die Pakete von der unterlagerten Schicht korrekt zugeordnet werden können.Wichtig
Um herauszufinden, bei welchem der Sendereinträge die IP einzutragen ist, kann beim Sender in der Registerkarte Safety Konfiguration mit Hilfe der Schaltfläche Empfänger anzeigen eine Liste der verbundenen Empfänger angezeigt werden. Durch einen Doppelklick auf einen Eintrag in dieser Liste kann schnell der Editor der verbundenen Safety Netzwerkvariablenliste (Empfänger) geöffnet werden. In dem Editor können Sie überprüfen, welches Paar von Listenidentifikatoren von dem Empfänger benutzt wird.
Das Projekt ist für das Querkommunikationsbeispiel konfiguriert.
Für das Testen des Projekts laden Sie nun beide Applikationen auf die Sicherheitssteuerungen Gegebenenfalls muss auch sichergestellt werden, dass die jeweilige SafetyAppX_Mapping auf die Steuerung geladen und gestartet wurde. Anschließend starten Sie die Applikationen und setzen gegebenenfalls die
SF_EmergencyStop
-Bausteine mit Hilfe desReset
-Eingangs und der darauf in Schritt 3 verschalteten VariablenbVar_Reset
zurück.Nun können Sie durch Auslösen des Not-Aus-Signals an einer Steuerung den
SF_EmergencyStop
-Baustein in beiden vernetzten Steuerungen auslösen. Im Beispiel wird der Not-Aus-Schalter dadurch simuliert, dass Sie die globale Variable Local_EStop an einer der beiden Steuerungen aufFALSE
setzen und anschließend für diese Steuerung den Wert mittels des Befehls schreiben lassen.
Beispiel 2: Erweiterung des vorherigen Projekts um einen weiteren Teilnehmer durch „Neuanlegen“ der Netzwerkvariablen-Komponenten
Voraussetzung: Das Projekt aus Beispiel 1 wurde erstellt und ist geöffnet.
Fügen Sie dem Projekt mit dem Kontextmenübefehl Gerät anhängen eine weitere Standardsteuerung und darunter eine Sicherheitssteuerung hinzu.
Kopieren Sie die Objekte POU und GVL von SafetyApp1 unter die neue Sicherheitssteuerung.
Benennen Sie die neu angelegte SafetyApp um in SafetyApp3.
Fügen Sie unter SafetyApp3 mit dem Befehl Objekt hinzufügen eine Safety Netzwerkvariablenliste (Sender) und zwei Objekte Safety Netzwerkvariablenliste (Empfänger) hinzu.
Öffnen Sie jeweils die Registerkarte Safety Konfiguration der beiden Safety Netzwerkvariablenlisten (Empfänger) und wählen Sie aus der Auswahlliste Zugeordneter Sender bei der ersten Safety Netzwerkvariablenliste (Empfänger) den Sender von SafetyApp1 und bei der zweiten den Sender von SafetyApp2 aus.
Passen Sie, falls erforderlich, die Watchdog-Zeit in den Safety Netzwerkvariablenlisten (Empfänger) an.
Tipp
Die Connection ID wird durch das Neueinfügen des Objekts bereits mit einem projektweit eindeutigen Wert vorbelegt und muss daher beim Vorgehen, das in diesem Beispiel beschrieben wird, nicht mehr angepasst werden.
Deklarieren Sie in der neu angelegten Safety Netzwerkvariablenliste (Sender) die Variable
SApp3_EStop
des DatentypsSAFEBOOL
.Tipp
Die Safety-Adresse der Variablenliste wird durch das Neueinfügen des Objekts bereits mit einem projektweit eindeutigen Wert vorbelegt und muss daher bei diesem Vorgehen nicht mehr angepasst werden. Ebenso wird die Gruppe der Variablenlisten-Identifikatoren mit einem projektweit eindeutigen Wert vorbelegt, um Konflikte zu vermeiden.
Ändern Sie in der POU von SafetyApp3 die Zuweisung um, so dass die Variable
Local_EStop
auf die VariableSApp3_EStop
zugewiesen wird, damit der Wert des Not-Aus-Schalters mit Hilfe der Safety Netzwerkvariablenliste (Sender) veröffentlicht wird.Selektieren Sie den
AND
-Operator, wählen Sie den Kontextmenübefehl Eingang anhängen und verknüpfen Sie diesen neu hinzugefügten Eingang mit der VariablenSApp1_EStop
.Die Eingänge des
AND
-Operators sind jetzt mit den EingängenLocal_EStop
,SApp2_EStop
undSApp1_EStop
verknüpft.Setzen Sie SafetyApp3 als aktive Applikation und übersetzen Sie die Applikation mit dem Befehl ..
Beim Übersetzungsvorgang wird geprüft, ob die projektweite Safety Netzwerkvariablenkonfiguration zusammenpasst und die SafetyApp3_Mapping wird generiert.
In den folgenden Schritten passen Sie SafetyApp2 an.
Fügen Sie SafetyApp2 eine neue Safety Netzwerkvariablenliste (Empfänger) hinzu und wählen Sie aus der Auswahlliste Zugeordneter Sender die Sender-Netzwerkvariablenliste von SafetyApp3.
Passen Sie gegebenenfalls die Watchdog-Zeit an.
Öffnen Sie die POU von SafetyApp2 und fügen Sie dem
AND
-Operator mit dem Kontextmenübefehl Eingang anhängen einen neuen Eingang hinzu. Verknüpfen Sie diesen neu hinzugefügten Eingang mit der VariablenSApp3_EStop
.In den folgenden Schritten passen Sie SafetyApp1 an.
Fügen Sie SafetyApp1 eine neue Safety Netzwerkvariablenliste (Empfänger) hinzu und wählen Sie aus der Auswahlliste Zugeordneter Sender die Sender-Netzwerkvariablenliste von SafetyApp3.
Passen Sie gegebenenfalls die Watchdog-Zeit an.
Öffnen Sie die POU von SafetyApp1 und fügen Sie dem
AND
-Operator mit dem Kontextmenübefehl Eingang anhängen einen neuen Eingang hinzu. Verknüpfen Sie diesen neu hinzugefügten Eingang mit der VariablenSApp3_EStop
.Wie auch im vorigen Beispiel wird auch hier die Netzwerkkonfiguration mit expliziten Adressen beschrieben.
Setzen Sie für alle 3 Steuerungen im Projekt die Kommunikationseinstellungen, damit später ein Einloggen auf die Steuerungen möglich ist.
Deaktivieren Sie in allen Safety Netzwerkvariablenlisten die Option Standardwerte für Zielnetzwerkadresse und Port verwenden (255.255.255.255, 1202)
Tragen Sie gemäß dieser Abbildung die IP Adressen der jeweiligen Gegenstellen ein. Die IP-Adressen müssen Sie Ihrem Netzwerk entsprechend anpassen.
Für Safety App3 wird dieser Vorgang in den folgenden Schritten noch einmal genauer beschrieben:
Tragen Sie in der Registerkarte SPS Netzwerk der Safety Netzwerkvariablenliste (Sender) von SafetyApp3 beim Eintrag für die Listenidentifikatoren
1080 1081
die Zielnetzwerkadresse192.168.0.22
der Steuerung mit SafetyApp2 ein.Wichtig
Achten Sie darauf, dass Sie die Zielnetzwerkadressen den richtigen Listenidentifikatoren zuordnen, da andernfalls die Übertragung der Netzwerkvariablen nicht funktioniert.
Öffnen Sie die Safety Netzwerkvariablenliste (Empfänger), die die Variable
SApp2_EStop
importiert, und tragen Sie die Zielnetzwerkadresse der Steuerung mit SafetyApp2192.168.0.22
ein.Anschließend tragen Sie die Zielnetzwerkadresse
192.168.0.1
für die Steuerung mit SafetyApp1 an den beiden folgenden Stellen ein:Zunächst in der Safety Netzwerkvariablenliste (Sender) bei den Listenidentifikatoren
1082 1083
und anschließend in der Safety Netzwerkvariablenliste (Empfänger), die die VariableSApp1_EStop
importiert.Jetzt ist das Projekt für die Querkommunikation konfiguriert.
Zum Testen des Querkommunikationsbeispiels laden Sie zunächst die Applikationen auf alle beteiligten Steuerungen und starten Sie die Applikationen. Achten Sie auch darauf, dass auch die jeweiligen SafetyAppX_Mapping laufen.
Die mittels der Safety Netzwerkvariablen veröffentlichten Variablen
SAppX_EStop
werden nun jeweils in die POUs der anderen SafetyApps mit dem WertTRUE
übertragen. Dies ist der Initialwert, der von den simulierten Not-Aus-Schaltern auf die VariablenSAppX_EStop
geschrieben wird.Setzen Sie, falls nötig, die
SF_EmergencyStop
-Bausteine mit Hilfe desReset
-Eingangs und der darauf verschalteten VariablenbVar_Reset
zurück.Nun können Sie durch Auslösen des Not-Aus-Signals an einer Steuerung den
SF_EmergencyStop
-Baustein in allen 3 vernetzten Steuerungen auslösen. Im Beispiel wird der Not-Aus-Schalter dadurch simuliert, dass Sie die globale VariableLocal_EStop
an einer der Steuerungen aufFALSE
setzen und anschließend für diese Steuerung den Wert mittels des Befehls schreiben lassen.