TIA Schnittstelle Fehlermeldung umsetzen

Floki

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Abend,

ich habe eine Aufgbe erhalten und hoffe ich lnntet mich weiterhelfen:

ich habe eine Schnittstelle zwischen SPS und zwei Schaltschränke. Die Struktur von der Schnittstelle beinhaltet zwei integer-Werte für die Fehlermeldungen. Jedes Integer steht für eine physische Schaltschrank.

Jeder Schrank hat mehrere Codes zum Beispiel :
0: Ok
1: Fehler A
2: Fehler B
4: Fehler C
8: Fehler D
.
.

Im Falle, dass mehrere Fehler gleichzeitig anstehen, werden die Integer addiert.
Beispiel :
Fehler A -> Integer 1
Fehler B -> Integer 2

ErrorCode = 3

Kann mir jemanden helfen wie ich das ganze in SCL umsetzen kann, das ich weiß welche Fehlermeldung, die gerade anstehen.

Danke im Voraus.
 
Kann es sein, das die Fehler Bit-Codiert sind? Somit bei einem Integer = Word = 16Bit = 16 mögliche Fehler?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der Datentyp Integer ist nicht gut, weil es sich in Wirklichkeit um ein Bitfeld (Bitstream, Bitfolge) handelt --> besser als WORD deklarieren. Und dann ist die Lösung naheliegend: die Bits ausmaskieren.

So kann es jede SPS:
Code:
#Fehler_A := (#FehlerWord & 1) <> 0;
#Fehler_B := (#FehlerWord & 2) <> 0;
#Fehler_C := (#FehlerWord & 4) <> 0;
...
#Fehler_E := (#FehlerWord & 16) <> 0;
#Fehler_F := (#FehlerWord & 32) <> 0;
oder
Code:
#Fehler_A := (#FehlerWord & 16#0001) <> 0;
#Fehler_B := (#FehlerWord & 16#0002) <> 0;
#Fehler_C := (#FehlerWord & 16#0004) <> 0;
...
#Fehler_E := (#FehlerWord & 16#0010) <> 0;
#Fehler_F := (#FehlerWord & 16#0020) <> 0;

Je nachdem welche SPS man hat, geht evtl. auch kürzer "Slice"-Zugriff:
Code:
#Fehler_A := #FehlerWord.%X0;
#Fehler_B := #FehlerWord.%X1;
#Fehler_C := #FehlerWord.%X2;

Oder man nimmt die fertige Anweisung "SCATTER: Bitfolge in einzelne Bits zerlegen", wenn die SPS das unterstützt.

Nachtrag: für den Operator & kann man auch AND schreiben, das ist vermutlich mehr verbreitet. Beides ist in SCL, ST und IEC61131 möglich.

Harald
 
Zuletzt bearbeitet:
In dem Fall einfach deine Bits wieder ausmaskieren - also z.B. :
Code:
Fehler_1 := (Wert and 1) <> 0;
Fehler_2 := (Wert and 2) <> 0;
Fehler_3 := (Wert and 4) <> 0;

// usw.


Edit : Harald war schneller ... ;)
 
ich habe eine Schnittstelle zwischen SPS und zwei Schaltschränke. Die Struktur von der Schnittstelle beinhaltet zwei integer-Werte für die Fehlermeldungen. Jedes Integer steht für eine physische Schaltschrank.
:unsure:
Warum nicht einfach die Struktur als einzelne bits deklarieren ?
Dann entfällt die ganze Umwandlung von INTs oder WORDs in einzelne BOOLs.
 
Zurück
Oben