TIA TIA Safety Eingangswort in Bits aufteilen

KD_LM

Level-2
Beiträge
22
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Wir versuchen im Safety Programm einen Sicherheitslaserscanner in Betrieb zu nehmen.
Dazu wollen wir die Daten, die der Scanner als Word sendet in einzelne Bits aufteilen und diese anschließend weiter verwenden. Das Ganze sieht wie folgt aus: Die Daten, die der Scanner an die SPS sendet, sind in einem UDT aufgelistet. Den Status jeder Schutzzone überträgt der Scanner als "Word". In der Standard-Variablentabelle haben wir den UDT eingetragen und mit der entsprechenden Eingangsadresse versehen, sodass die Schutzzonen in den Eingangswörtern 27,29,31 und 33 gesendet werden. Im Datenbaustein habe ich die einzelnen Bits definiert, die ich verwenden möchte. Mithilfe des Bausteins Word to Bool wollte ich das Word in die einzelnen Bits aufteilen. Leider ist das nicht möglich, da immer eine Fehlermeldung kommt. Ich habe als Test ein fiktives Merkerwort ohne Inhalt angelegt. Hier kommt keine Fehlermeldung, obwohl auch hier ein Word genutzt wird. Wie kann ich also das Eingangsword des Scanners in die einzelnen Bits aufteilen und diese verwenden? Vielen Dank im Voraus.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Sorry, das habe ich vergessen.

CPU: CPU 1212FC DC/DC/Rly
Software TIA V17
Sprache: KOP

Fehlermeldung: Der Datentyp WORD, DWORD oder TIME ist für eine Variable einer F-Baugruppe nicht zulässig. Bitte stellen Sie den Datentyp in der Variablen-Tabelle auf INT bzw. DINT um.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Version 4.4
Mein Problem ist, dass ich den Datentypen nicht einfach umstellen kann. Der Scanner überträgt seine Daten zur Zone als Word. Würde ich versuchen direkt einzelne Bits bzw. INT zu nutzen, kommt immer die Fehlermeldung, dass mein Zugriff nicht mit der F-Peripherie übereinstimmt. Ich muss also irgendwie das Word anderweitig verarbeiten. Einen Move-Baustein habe ich auch bereits probiert. Hier kommt dieselbe Fehlermeldung wie beim Word to bool
 
Du kannst mit ".%X" die einzelnen Bits des Wortes ansteuern, könntest zB mit einem simplen FC jedes Bit des Wortes auf eine entsprechende UDT legen. WORD_TO_BOOL wandelt dir ein Wort in eine boolsche Variable um, geht halt nur wenn nur eine 0 oder eine 1 im WORD steht
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du kannst mit ".%X" die einzelnen Bits des Wortes ansteuern, könntest zB mit einem simplen FC jedes Bit des Wortes auf eine entsprechende UDT legen. WORD_TO_BOOL wandelt dir ein Wort in eine boolsche Variable um, geht halt nur wenn nur eine 0 oder eine 1 im WORD steht
geht das wirklich in F-Programm?
 
Brauchst du einen Zugriff auf das Word? Oder interessieren dich nur die Bits? Wenn nur die Bits relevant sind müsstest du doch die Bits einzeln in der UDT anlegen und somit direkten Zugriff darauf haben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Brauchst du einen Zugriff auf das Word? Oder interessieren dich nur die Bits? Wenn nur die Bits relevant sind müsstest du doch die Bits einzeln in der UDT anlegen und somit direkten Zugriff darauf haben.
In erster Linie interessieren mich nur die Bits. Ich kann aber leider nicht im UDT direkt die Bits anlegen, da mein Scanner in diesem Datenbereich ein Word sendet und nicht einzelne Bits. Das habe ich versucht, dann bekomme ich die Fehlermeldung, dass das Programm nicht mit meiner F-Peripherie übereinstimmt.
 
Was ich jetzt schreibe, ist vlt. etwas rückständige Steinzeit SPS Programmierung, aber das funktioniert:
(Die als Schmiermerkerbereiche definierten Merkerbereiche bei S5 waren schon sinnvoll.)

Dein WORD von der Sicherheitslichtschranke in ein MW (Merkerwort) übertragen, dann kannst du die einzelnen Bits abfragen.
Das MW als WORD und als BOOL in einer Variablentabelle anlegen:
1691672759206.png

Oder du nimmst den W_Bo Wandler, den DeltaMikeAir in #11 vorgeschlagen hat.
 
Zurück
Oben