23.12.2012 Aufrufe

IEC 61131 - Fakultät Elektrotechnik und Informationstechnik

IEC 61131 - Fakultät Elektrotechnik und Informationstechnik

IEC 61131 - Fakultät Elektrotechnik und Informationstechnik

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>Elektrotechnik</strong> <strong>und</strong> <strong>Informationstechnik</strong> Institut für Automatisierungstechnik, Professur Prozessleittechnik<br />

DIN EN <strong>61131</strong><br />

Fachsprachen<br />

VL Prozessleittechnik I (SS 2012)<br />

Professur für Prozessleittechnik


<strong>61131</strong>-3 Programmiersprachen<br />

• <strong>61131</strong>-3 spezifiziert fünf Programmiersprachen zur<br />

Implementierung von POE<br />

• Standardfunktionen <strong>und</strong> Standardfunktionsbausteine<br />

• Typwandlungsfunktionen typ1_TO_typ2<br />

Textbasiert Grafisch<br />

Anweisungsliste (AWL)<br />

Strukturierter Text (ST)<br />

Ablaufsprache (AS)<br />

Kontaktplan (KOP)<br />

Funktionsbausteinsprache (FBS)<br />

17.04.2012 PLT-1 (c) 2008-2012, UR Folie 2


Übersicht<br />

• Beispiel:<br />

– Setze Ausgang Q1.1 auf 1, wenn folgende Bedingungen<br />

gleichzeitig erfüllt sind:<br />

• Eingänge I0.1 oder I0.2 oder Ausgang Q1.1 gesetzt<br />

• Eingang I0.3 gesetzt<br />

• Eingang I0.4 gesetzt<br />

• Zu realisierender boolscher Ausdruck:<br />

Q1.1 = ( I0.1 ˅ I0.2 ˅ Q1.1) ˄ I0.3 ˄ I0.4<br />

17.04.2012 PLT-1 (c) 2008-2012, UR Folie 3


Lösung in den verschiedenen<br />

Fachsprachen<br />

LD %IX0.1<br />

OR %IX0.2<br />

OR %QX1.1<br />

AND %IX0.3<br />

AND %IX0.4<br />

ST %QX1.1<br />

I0.1<br />

I0.2 I0.3 I0.4<br />

I0.3<br />

I0.4<br />

Q1.1:=(I0.1 OR I0.2 OR Q1.1)<br />

AND I0.3<br />

AND I0.4;<br />

S0<br />

S1<br />

T0<br />

T1<br />

S0<br />

Step 0<br />

R Q1.1<br />

Step 1<br />

S Q1.1<br />

I0.1<br />

I0.2<br />

Q1.1<br />

I0.1<br />

I0.2<br />

Q1.1<br />

I0.3 I0.4 Q1.1<br />

( )<br />

17.04.2012 PLT-1 (c) 2008-2012, UR Folie 4<br />

>1<br />

I0.3<br />

I0.4<br />

&<br />

Q1.1<br />

=


Gemeinsame Elemente der<br />

Programmiersprachen<br />

• Zeichensatz<br />

– Textelemente Spalten 002-007 der ISO/<strong>IEC</strong>-646 IRV<br />

– Zusätzlich Kleinbuchstaben (aber nicht case sensitiv),<br />

# oder £, $ oder ¤, | oder !<br />

• Bezeichner:<br />

– Folge von Buchstaben, Ziffern <strong>und</strong> Unterstrich<br />

– Muss mit Buchstaben oder Unterstrich beginnnen<br />

– Mehrere oder angehängte Unterstriche sind nicht<br />

zulässig<br />

– Mindestens sechs Zeichen werden zur eindeutigen<br />

Unterscheidung genutzt, Maximum impl.-abh.<br />

• Leerzeichen, Kommentare (* *), Numerische Literale,<br />

Zeichenfolgeliteral, Zeitdauer<br />

17.04.2012 PLT-1 (c) 2008-2012, UR Folie 5


Zahlen- <strong>und</strong> Zeitdauerliterale<br />

• Zahlen<br />

– Unterstriche zur Strukturierung erlaubt<br />

• 100_000_000 3.14159_26<br />

– Basis 2/8/16 Literale möglich<br />

• 2#1111_1111 8#377 16#ff<br />

– Literale mit Typangaben<br />

• BOOL#0 UINT#16#FF<br />

• Zeitdauern<br />

– kurzes/langes Präfix<br />

• TIME#14ms T#14.7s<br />

– mit/ohne Unterstrichen<br />

• t#5d14h12m18s3.5ms t#5d_14h_12m_18s_3.5ms<br />

17.04.2012 PLT-1 (c) 2008-2012, UR Folie 6


Elementare Datentypen<br />

• Wahrheitswert:<br />

• BOOL 1<br />

• Ganzzahl mit/ohne Vorzeichen:<br />

• SINT 8 , INT 16 , DINT 32 , LINT 64 / USINT 8 , UINT 16 , UDINT 32 ,<br />

ULINT 64<br />

• Reele Zahl:<br />

• REAL 32 , LREAL 64<br />

• Zeiten:<br />

• TIME, DATE, TIME_OF_DAY/TOD, DATE_AND_TIME/DT<br />

• Variabel lange Zeichenkette:<br />

• STRING 8 , WSTRING 16<br />

• Bit-Folgen:<br />

• BYTE 8 , WORD 16 , DWORD 32 , LWORD 64<br />

17.04.2012 PLT-1 (c) 2008-2012, UR Folie 7


Hierarchie der allgemeinen Datentypen<br />

(zur Festlegung von Ein/Ausgängen von<br />

POE)<br />

ANY<br />

+---- ANY_DERIVED<br />

+---- ANY_ELEMENTARY<br />

+---- ANY_MAGNITUDE<br />

| +---- ANY_NUM<br />

| | +---- ANY_REAL<br />

| | | +---- LREAL, REAL<br />

| | |<br />

| | +---- ANY_INT<br />

| | +---- LINT, DINT, INT, ULINT, SINT,<br />

| | ULDINT, UDINT, UINT, USINT<br />

| +---- TIME<br />

|<br />

+---- ANY_BIT<br />

| +---- LWORD, DWORD, WORD, BYTE, BOOL<br />

|<br />

+---- ANY_STRING<br />

| +---- STRING, WSTRING<br />

|<br />

+---- ANY_DATE<br />

+---- DATE_AND_TIME, DATE, TIME_OF_DAY<br />

17.04.2012 PLT-1 (c) 2008-2012, UR Folie 8


Abgeleitete Anwender- oder<br />

herstellerdefinierte Datentypen<br />

• TYPE Bezeichner : ... END_TYPE<br />

• Aufzählung<br />

– TYPE A_SIG : (SINGLE, DIFF) ; END_TYPE<br />

• Bereich<br />

– TYPE A_DATA : INT (-32000..32512) ; END_TYPE<br />

• Feld<br />

– TYPE A_8IN : ARARY [1..16] OF A_DATA; END_TYPE<br />

• Struktur<br />

– TYPE Bezeichner : STRUCT ... END_STRUCT;<br />

END_TYPE<br />

– Kann geschachtelt werden<br />

17.04.2012 PLT-1 (c) 2008-2012, UR Folie 9


Einzelelementvariablen<br />

% Q X 7.3 Adresse der Variablen<br />

I0.1<br />

I0.0<br />

Speicherort<br />

I Eingang<br />

Q Ausgang<br />

M Merker<br />

Kennung einer direkten Variablen (Optional)<br />

&<br />

Q1.1<br />

X (Einzel-)Bit-Größe<br />

kein (Einzel-)Bit-Größe<br />

B Byte(8 Bit)-Größe<br />

W Word(16 Bit)-Größe<br />

D Doppelwort(32 Bit)-Größe<br />

L Langwort(64 Bit)-Größe<br />

Schalter 1<br />

Schalter 2<br />

17.04.2012 PLT-1 (c) 2008-2012, UR Folie 10<br />

&<br />

Lampe


<strong>IEC</strong> <strong>61131</strong>-3 Standardfunktionen 1/2<br />

• Mit einer numerischen Variablen<br />

– ABS, SQRT, LN, LOG, EXP, SIN, COS, TAN, ASIN,<br />

ACOS, ATAN<br />

• Arithmetische Funktionen<br />

– ADD * , MUL * , SUB, DIV, MOD, EXPT,<br />

• Bitfolgefunktionen<br />

– SHL, SHR, ROR, ROL<br />

• Bitweise boolsche Standardfunktionen<br />

– AND * , OR * , XOR * , NOT,<br />

• Auswahl<br />

– SEL, MAX * , MIN * , LIMIT, MUX * ,<br />

17.04.2012 PLT-1 (c) 2008-2012, UR Folie 11


<strong>IEC</strong> <strong>61131</strong>-3 Standardfunktionen 2/2<br />

• Vergleich<br />

– GT * , GE * , EQ * , LE * , LT * , NE<br />

• Zeichenfolgen<br />

– LEN, LEFT, RIGHT, MID, CONCAT * , INSERT, DELETE,<br />

REPLACE, FIND<br />

• Zeit (DATE, TIME, TIME_OF_DAY,DATE_AND_TIME)<br />

– ADD, SUB, CONCAT_DATE_TOD<br />

17.04.2012 PLT-1 (c) 2008-2012, UR Folie 12


<strong>IEC</strong> <strong>61131</strong>-3 Standardfunktionsbausteine<br />

• Bistabile Funktionsbausteine<br />

– SR (* vorrangig Setzen *)<br />

– RS (* vorrangig Rücksetzen *)<br />

• Flankenerkennung<br />

– R_TRIG (* steigende Flanke *)<br />

– F_TRIG (* fallende Flanke *)<br />

• Zähler<br />

– CTU, CTU_(D|L|UD|UL)INT (*Aufwärtszähler*)<br />

– CTD, CTD_(D|L|UD|UL)INT (*Abwärtszähler*)<br />

• Zeitgeber<br />

– TON, TOF (* Ein/Ausschaltverzögerung *)<br />

– TP (* Puls *)<br />

17.04.2012 PLT-1 (c) 2008-2012, UR Folie 13


Textbasiert Grafisch<br />

Anweisungsliste (AWL)<br />

Strukturierter Text (ST)<br />

Ablaufsprache (AS)<br />

Kontaktplan (KOP)<br />

Funktionsbausteinsprache (FBS)


Anweisungsliste AWL<br />

(engl. Instruction List, IL, STEP7: AWL)<br />

• AWL: universell einsetzbare Maschinensprache,<br />

vergleichbar mit einem Assembler.<br />

– Nach wie vor am weitesten verbreitet.<br />

– wenig Möglichkeiten zur strukturierten Programmierung.<br />

– In den jeweiligen Implementierungen zum Teil<br />

unterschiedliche Operatoren <strong>und</strong> Sprachumfänge<br />

17.04.2012 PLT-1 (c) 2008-2012, UR Folie 15


AWLs „Virtuelle Maschine“<br />

• AWL definiert implizit eine virtuelle Maschine mit<br />

– AKU<br />

– Variablen (funktionale Speicher)<br />

• Zentrales Element ist der AKKUMULATOR (AKU)<br />

– Gr<strong>und</strong>legende Semantik von Operatoren<br />

• Ergebnis := Ergebnis Operator Operand<br />

– Ergebnis <strong>und</strong> Operand müssen denselben Datentyp<br />

besitzen<br />

• Formale Syntax:<br />

[Marke:] Operator Operand [(* Kommentar *)]<br />

17.04.2012 PLT-1 (c) 2008-2012, UR Folie 16


Modifzierer für Negation, Zurückstellung,<br />

bedingte Auswertung<br />

• N: Negation<br />

– ANDN %IX2 � Erg := Erg AND NOT %IX2<br />

• (: Zurückstellung der Auswertung bis zum Operator )<br />

– AND( %IX1 � Erg := Erg AND (%IX1 OR %IX2)<br />

OR %IX2<br />

)<br />

• C: Bedingung, Anweisung wird nur durchgeführt,<br />

wenn der vorherige Ausdruck eine boolsche 1 ergeben<br />

hatte<br />

– Achtung: Modifizierer gelten nur für bestimmte Befehle<br />

17.04.2012 PLT-1 (c) 2008-2012, UR Folie 17


Operatoren der Anweisungsliste<br />

Nr. Operator N ( C Bedeutung<br />

1 LD N Erg := Operand<br />

2 ST N Operand := Erg<br />

3 S, R Operand := (bool) Erg<br />

4-7 AND,&,OR,XOR N ( Erg := Erg OP Operand<br />

7a NOT Einerkomplement<br />

8-11a ADD,SUB,MUL,<br />

DIV,MOD<br />

12-17 GT,GE,EQ,NE,LE,<br />

LT<br />

( Erg := Erg OP Operand<br />

( Erg := Erg OP Operand<br />

18-20 JMP, CAL, RET N C Sprung, Aufruf, Rücksprung<br />

21 ) Bearbeitung rückgesteller OP<br />

17.04.2012 PLT-1 (c) 2008-2012, UR Folie 18


Funktionsaufruf<br />

• Eintrag Funktionsname in Operatorfeld<br />

• Argumente als nicht-formale Eingangsliste<br />

LIMIT(1,B,5)<br />

Argumente als formale Eingangsliste<br />

LIMIT(<br />

EN:=COND,<br />

IN:=B,<br />

MN:=1,<br />

MX:= 5,<br />

ENO => TEMPL<br />

)<br />

• Zurückgegebener Wert (RET) wird Ergebnis<br />

– ST A<br />

17.04.2012 PLT-1 (c) 2008-2012, UR Folie 19


Einschub: Ausführungssteuerung mit<br />

EN/ENO<br />

• Für Funktionen <strong>und</strong> Funktionsbausteine können ein<br />

zusätzlicher Freigabeeingang EN (Enable) <strong>und</strong><br />

Ausgang ENO (Enable Out) oder beide zur Verfügung<br />

gestellt werden<br />

VAR_INPUT EN: BOOL := 1 ; END_VAR<br />

VAR_OUTPUT ENO: BOOL ; END_VAR<br />

• EN == False<br />

– Operation wird nicht ausgeführt, durch SPS<br />

ENO := False<br />

• ENO == False<br />

– Werte der Funktionsausgänge<br />

implementierungsabhängig<br />

17.04.2012 PLT-1 (c) 2008-2012, UR Folie 20


Funktionsbausteinaufruf<br />

• Aufruf FBS mit nicht-formaler oder formaler<br />

Argumentliste<br />

– CAL C10(%IX10, FALSE, A, OUT, B)<br />

– CAL C10(<br />

CU := %IX10,<br />

Q=> OUT)<br />

• Aufruf mit Laden/Speichern mit FBS-Eingangs<br />

von Argumenten Operatoren<br />

– LD A LD A<br />

ST C10.PV PV C10<br />

LD %IX10 LD %IX10<br />

ST C10.CU CU C10<br />

CAL C10<br />

17.04.2012 PLT-1 (c) 2008-2012, UR Folie 21


Unvollständige formale Argumentliste<br />

oder Eingangsoperatoren<br />

• Fehlende Argumente werden von der letzten<br />

Zuweisung (ggf. Initialisierung) übernommen<br />

– Fehlende Argumente ändern sich also nicht!<br />

• Beispiel<br />

VAR C10: CTU;<br />

LD 15<br />

PV C10<br />

• Zähler C10 wird bei steigender Flanke auf Eingang CU<br />

inkrementiert<br />

– CU ist nicht angegeben<br />

� keine Änderung, Zähler zählt nicht!<br />

17.04.2012 PLT-1 (c) 2008-2012, UR Folie 22


AWL Beispiel<br />

LD %IX0.1 (* Lade Eingang 0.1 in Akku *)<br />

OR %IX0.2 (* Akku=Akku oder Eingang 0.2 *)<br />

OR %QX1.1 (* Akku=Akku oder Ausgang 1.1 *)<br />

AND %IX0.3 (* Akku=Akku <strong>und</strong> Eingang 0.3 *)<br />

AND %IX0.4 (* Akku=Akku <strong>und</strong> Eingang 0.4 *)<br />

ST %QX1.1 (* Ausgang 1.1=Akku *)<br />

17.04.2012 PLT-1 (c) 2008-2012, UR Folie 23


Textbasiert Grafisch<br />

Anweisungsliste (AWL)<br />

Strukturierter Text (ST)<br />

Ablaufsprache (AS)<br />

Kontaktplan (KOP)<br />

Funktionsbausteinsprache (FBS)


Strukturierter Text<br />

(engl. Structured Text, ST, STEP7 SCL)<br />

• Pascal-ähnliche, höhere Programmiersprache<br />

• Vorteile:<br />

– sehr kompakte Formulierung<br />

– abstrakte maschinenferne Befehle<br />

– übersichtlicher Aufbau durch Anweisungsblöcke<br />

– umfangreiche, komplexe Aufgaben realisierbar<br />

• Nachteile:<br />

– Qualität des Maschinencode ist abhängig von Compiler<br />

(Übersetzer).<br />

– Bei einigen Compilern Effizienzverlust zur Laufzeit durch<br />

höhere Abstraktion (ST-Code i.d.R. langsamer als AWL-<br />

Code)<br />

17.04.2012 PLT-1 (c) 2008-2012, UR Folie 25


Ausdrücke<br />

• Auswertungsreihenfolge<br />

– Rangfolge (Punkt vor Strich): A+B*C<br />

– Auswertung von links nach rechts: A+B+C<br />

– Auswertung linker Operand zuerst: SIN(A)*SIN(B)<br />

• Boolsche Ausdrücke<br />

– Lazy Evaluation ist erlaubt: (A>B)&(C>D)<br />

• Operatoren<br />

– Funktionsaufruf, e.g. SIN(A)<br />

– - (Negation), NOT, **, *, / MOD, +, -,<br />

– ,=, =, <br />

– &, AND, XOR, OR<br />

17.04.2012 PLT-1 (c) 2008-2012, UR Folie 26


Anweisungen<br />

• Zuweisung: A := B; C := SIN(X);<br />

• FBS-Aufruf: TMR(IN:=%IX5, PT:=T#300ms);<br />

A := TMR.Q;<br />

• Bed. Ausführung: IF B1 THEN … ELSIF B2 THEN …<br />

ELSE … END_IF;<br />

• Falluntersch.: CASE B1 OF<br />

1,5: …<br />

7..10: …<br />

ELSE … END_CASE;<br />

• Wiederholung: FOR I:= 1 TO 3 DO … END_FOR;<br />

WHILE B1 DO … END_WHILE;<br />

REPEAT … UNTIL B1 END_REPEAT;<br />

17.04.2012 PLT-1 (c) 2008-2012, UR Folie 27


ST Beispiele<br />

(Viele Wege führen nach Rom)<br />

• Beispiel 1:<br />

Q1.1:=(I0.1 OR I0.2 OR Q1.1) AND I0.3 AND I0.4;<br />

• Beispiel 2:<br />

M = Q1.1; Q1.1:=0;<br />

IF (I0.1 OR I0.2 OR M) THEN<br />

IF (I0.3 AND I0.4) THEN<br />

Q1.1:=1;<br />

END_IF;<br />

END_IF;<br />

• Negativbeispiel 3:<br />

Q1.1:=((I0.1+I0.2+Q1.1)>0)*I0.3*I0.4<br />

17.04.2012 PLT-1 (c) 2008-2012, UR Folie 28


Textbasiert Grafisch<br />

Anweisungsliste (AWL)<br />

Strukturierter Text (ST)<br />

Ablaufsprache (AS)<br />

Kontaktplan (KOP)<br />

Funktionsbausteinsprache (FBS)


Kontaktplan KOP<br />

(engl. Ladder Diagramm, LD, STEP7: KOP)<br />

• Funktionen werden durch Schaltsymbole aus der<br />

<strong>Elektrotechnik</strong> dargestellt:<br />

– Schließer, Öffner usw., die schaltbildähnlich zu<br />

Netzwerken zusammengefügt werden.<br />

– An den Seiten befinden sich zwei Stromschienen,<br />

zwischen denen die Relaislogik liegt (90° Drehung zur<br />

Anpassung an Computer/Textschreiben)<br />

• Programmiersprache beschränkt sich im Wesentlichen<br />

auf boolsche Signale<br />

– Reihenschaltung: UND<br />

– Parallelschaltung: ODER<br />

– Negation: Arbeitskontakt / Ruhekontakt<br />

17.04.2012 PLT-1 (c) 2008-2012, UR Folie 30


KOP Beispiel<br />

I0.1<br />

I0.2<br />

Q1.1<br />

I0.3 I0.4 Q1.1<br />

( )<br />

Eingang: Schaltkontakt --| |--<br />

Ausgang: Relaisspule --( )--<br />

Negation: --|/|--<br />

--(/)--<br />

17.04.2012 PLT-1 (c) 2008-2012, UR Folie 31


Textbasiert Grafisch<br />

Anweisungsliste (AWL)<br />

Strukturierter Text (ST)<br />

Ablaufsprache (AS)<br />

Kontaktplan (KOP)<br />

Funktionsbausteinsprache


Funktionsbausteinsprache FBS<br />

(engl. Function Block Language, FB, STEP7: FUP)<br />

• Symbolik der Digitalen-Schaltungen<br />

• UND- , ODER-Gatter,<br />

• INVERTIERTER Eingang, usw.<br />

• gut strukturierte <strong>und</strong> übersichtliche Programmierung<br />

bool´scher Verknüpfungen.<br />

• Grafisch anschauliche Programmierung des<br />

Informationsfluss von ganzzahligen <strong>und</strong> Gleitkomma-<br />

Operationen.<br />

17.04.2012 PLT-1 (c) 2008-2012, UR Folie 33


FBS Beispiel<br />

I0.1<br />

I0.2<br />

Q1.1<br />

>1<br />

I0.3<br />

I0.4<br />

17.04.2012 PLT-1 (c) 2008-2012, UR Folie 34<br />

&<br />

Q1.1<br />

=


Textbasiert Grafisch<br />

Anweisungsliste (AWL)<br />

Strukturierter Text (ST)<br />

Kontaktplan (KOP)<br />

Ablaufsprache (AS)<br />

Funktionsbausteinsprache (FBS)


Ablaufsprache AS<br />

(engl. Sequential Function Chart Language, SFC)<br />

• Industrielle Automatisierungsaufgaben lassen sich<br />

häufig als Sequenz einzelner Schritte darstellen.<br />

– Die Ausführung der Schritte hängt vom Erreichen einer<br />

Bedingung ab<br />

– Verschiedene Schritte können/müssen auch parallel<br />

ausgeführt werden<br />

• Vereinfachte Petrinetze:<br />

– Übergang von einem Schritt zu einen oder mehreren<br />

(parallelen) folgenden Schritten erfolgt durch eine<br />

Übergangsbedingung (Transition).<br />

– Aktionen <strong>und</strong> Transitionen werden in einer der<br />

vorgenannten Sprachen spezifiziert.<br />

17.04.2012 PLT-1 (c) 2008-2012, UR Folie 36


AS Beispiel<br />

I0.1<br />

I0.2 I0.3 I0.4<br />

I0.3<br />

I0.4<br />

S0<br />

S1<br />

17.04.2012 PLT-1 (c) 2008-2012, UR Folie 37<br />

T0<br />

T1<br />

S0<br />

Step 0<br />

R Q1.1<br />

Step 1<br />

S Q1.1


Siemens STEP7 vs. <strong>IEC</strong> <strong>61131</strong>-3<br />

• Aus TIA, Anhang II, <strong>IEC</strong> <strong>61131</strong>:<br />

– Die Programmiersprachen KOP <strong>und</strong> FUP entsprechen<br />

den in der Norm DIN EN <strong>61131</strong>-3 (int. <strong>IEC</strong> <strong>61131</strong>-3)<br />

festgelegten Sprachen „Kontaktplan“ <strong>und</strong><br />

„Funktionsbaustein-Sprache“. […]<br />

– AWL entspricht der in der Norm DIN EN <strong>61131</strong>-3 (int.<br />

<strong>IEC</strong> <strong>61131</strong>-3) festgelegten Sprache „Anweisungsliste“,<br />

wobei hinsichtlich der Operationen wesentliche<br />

Unterschiede bestehen. […]<br />

– Die Ablaufsprache S7-GRAPH entspricht der in der Norm<br />

DIN EN <strong>61131</strong>-3 (int. <strong>IEC</strong> <strong>61131</strong>-3) festgelegten<br />

Sprache „Sequential Function Chart“.<br />

– Zusätzlich S7-HiGraph (Zustandsgraphen)<br />

17.04.2012 PLT-1 (c) 2008-2012, UR Folie 38

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!