TIA TIA Safety Eingangswort in Bits aufteilen

Zuviel Werbung?
-> Hier kostenlos registrieren
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:
Anhang anzeigen 70709

Oder du nimmst den W_Bo Wandler, den DeltaMikeAir in #11 vorgeschlagen hat.
Wie bekomme ich mein Eingangswort in das Merkerwort? Ich kann das Eingangswort leider nicht im Programm verwenden. Ich bekomme sowohl bei Word to bool als auch beim Move Baustein dieselbe 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.
 
Wie bekomme ich mein Eingangswort in das Merkerwort? Ich kann das Eingangswort leider nicht im Programm verwenden. Ich bekomme sowohl bei Word to bool als auch beim Move Baustein dieselbe 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.
Ich hatte mal getestet:
DB_Name.Variable_word mit MOVE Befehl zu MW übertragen -> funktioniert

Aber ich verstehe nicht:
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.
Wenn du die Scannerdaten schon in den EW 27, 29, 31 und 33 hast, warum fragst du dann nicht direkt einfach die entsprechenden Eingänge ab, also E27.0-E34.7?

Zeig doch mal (Ausschnitte) deines UDT und deiner Variablentabelle.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hatte mal getestet:
DB_Name.Variable_word mit MOVE Befehl zu MW übertragen -> funktioniert

Aber ich verstehe nicht:

Wenn du die Scannerdaten schon in den EW 27, 29, 31 und 33 hast, warum fragst du dann nicht direkt einfach die entsprechenden Eingänge ab, also E27.0-E34.7?

Zeig doch mal (Ausschnitte) deines UDT und deiner Variablentabelle.
Ich kann leider keine Bilder hochladen, das verbieten die Sicherheitseinstellungen unserer Firma, deswegen versuche ich es so gut wie möglich zu beschreiben.

Mein UDT sieht wie folgt aus:
Verschiedene Eingangsdaten des Scanners als Bool.
Am Ende 4 Wörter für die Statusinformationen der Zonen.

Standard-Variablentabelle:
Hier habe ich meinen UDT reinkopiert. Die Daten, die als Bool vorliegen, kann ich ohne Weiteres verarbeiten.
Am Ende habe ich dann meine 4 Eingangswörter.

Die Eingänge direkt abfragen geht leider nicht, da dies im F-Programm leider nicht erlaubt ist.
 
Dann wohl der Umweg über unsichere Modul/dein sicheres Wort im unsicheren Teil verarbeiten.. und dann transferieren in den F-DB. Siemens Safety erlaubt (leider) nur boolsche Verarbeitung. Deswegen muss man da viel hin und her transferieren von der unsicheren Seite in die sichere Seite.. leider schon oft machen müssen
 
Dann wohl der Umweg über unsichere Modul/dein sicheres Wort im unsicheren Teil verarbeiten.. und dann transferieren in den F-DB. Siemens Safety erlaubt (leider) nur boolsche Verarbeitung. Deswegen muss man da viel hin und her transferieren von der unsicheren Seite in die sichere Seite.. leider schon oft machen müssen
Hier geht es aber um sicherheitsrelevante Daten und deren Verarbeitung. Somit kann ich leider nicht einfach in den unsicheren Teil und wieder zurück transferieren.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Da dich der Safety Teil in keiner Form deine Daten so verarbeiten lässt wie du das möchtest würde ich vorschlagen alles weitere mit dem Hersteller vom Scanner/dem Sicherheitsbeauftragten/dem Maschinenbauer etc zu besprechen wie jetzt die Daten verarbeitet werden sollen. Zur Not tut's auch ein Support Request beim Siemens
 
Die Eingänge direkt abfragen geht leider nicht, da dies im F-Programm leider nicht erlaubt ist.
Warum nicht?

Zu meinem Verständnis:
dein UDT:
1691676324592.png

und deine Variablentabelle:
1691676367087.png

Also in Variablentabelle den UDT mit den sicheren Words und manuell die sicheren Bits anlegen, dann kannst du alles gelbe abfragen, die words und die Bits. (in den Screenshots ist nichts gelb, ich habe jetzt kein neues Projekt angelegt.)
 
mal auf die schnelle mit einer safety e-Karte getestet:
1691677170297.png

also word vom Scanner und Bit für die Abfragen / Auswertung

Evtl. kannst du den UDT nicht verwenden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Warum nicht?

Zu meinem Verständnis:
dein UDT:
Anhang anzeigen 70711

und deine Variablentabelle:
Anhang anzeigen 70712

Also in Variablentabelle den UDT mit den sicheren Words und manuell die sicheren Bits anlegen, dann kannst du alles gelbe abfragen, die words und die Bits. (in den Screenshots ist nichts gelb, ich habe jetzt kein neues Projekt angelegt.)
Habe ich auch bereits getestet. Dann bekomme ich folgende Fehlermeldung: Peripheriezugriff stimmt nicht mit der Kanalstruktur der F-Peripherie überein.
 
Es wundert mich ein bisschen, dass das noch keiner von euch gefragt hat : was ist denn das für ein Scanner und wie ist er mit der SPS gekoppelt ?
Gerne würde ich auch mal den Teil mit der Hardware-Definition sehen ...
 
OK ... und nun noch deine Hardware-Config ...
Normalerweise sollten die Eingänge immer auch als einzelne Bits einlesbar sein. Ich weiß aber auch, dass Keyence immer etwas speziell ist und mit Doku und Beispielen tun die dich oft sehr schwer ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der Scanner hat die Eingangs- und Ausgangsadressen 23-38.
CPU: CPU: CPU 1212FC DC/DC/Rly
Eingangsbaugruppe: F-DI 8/16x24VDC_1
Ausgangsbaugruppe: F-DQ 4x24VDC_1
 
Zurück
Oben