TC3: Anzahl der gesetzten Safety-Inputs (Türen) feststellen (TC3.4024.67)

Beiträge
7.085
Reaktionspunkte
1.842
Hallo,
ich möchte gerne die Anzahl der geöffneten Türen im Sicherheitsprogramm feststellen und bei Überschreitung eines Wertes eine Freigabe wegnehmen. Jede Tür geht an einen sicheren Eingang einer EL-Klemme.
Hat hier einer eine Idee zu? Mir qualmt bei der Aufgabe der Kopf.
 
Moin,

da die F-Programmierung (zumindest bei TIA) recht eingeschränkt ist, würde ich die Signale an das Standard-Programm übergeben (idealerweise direkt in ein Array) und dort mit einer Schleife zählen.
 
Moin,

da die F-Programmierung (zumindest bei TIA) recht eingeschränkt ist, würde ich die Signale an das Standard-Programm übergeben (idealerweise direkt in ein Array) und dort mit einer Schleife zählen.
Dann ist das aber nicht mehr wirklich sicher oder?
 
Moin,

das geht nicht so, wie Du es gern machen möchtest. Ich hatte diese Aufgabe auch schon. Du musst es klassisch lösen.
Am besten erzeugst Du Dir per safeMon je Schutztür das Zustandssignal. safeMon deshalb, weil Du hier die Zweikanaligkeit überprüfen kannst.

Mit dem Zustandssignal musst Du dann wohl oder übel per safeAnd --> safeOr jeden Zustand einzeln programmieren und der Freigabe zuordnen.

würde ich die Signale an das Standard-Programm übergeben (idealerweise direkt in ein Array) und dort mit einer Schleife zählen.
Ich bin erschüttert. Das geht nun wirklich nicht, wenn man die Signale sicher weiterverarbeiten muss.
 
Hier mal ein extrem verkleinerter Screenshot von dem Programm.
Links an den safeAnd's sind alle erlaubten Türschalterkombinationen und die gehen dann in das safeOr, dessen Ergebnis die Freigabe ist. Der Dritte Baustein ist die Freigabe des Zustimmtasters, der nur funktionieren durfte, wenn maximal eine Tür geöffnet war.
1780312535470.png
 
Und was ist der Grund das eine Schleife nicht verwendet werden darf?
Ich habe es noch nicht gefunden... Gibt es in TwinSAFE schon Schleifen? 🤨

Wenn du erst in die unsichere SPS gehst, kannst Du bei dieser Aufgabe nicht mehr zurück in die Sicherheits-SPS. Auch wenn der erste Eingang am safeAnd unsicher sein darf, müssen doch alle Schutztüren sicher verknüpft werden - und das geht einfach bei dieser Aufgabenstellung nicht.
 
Eine geöffnete Tür ist schon "böse". Was soll das für eine Sicherheit sein, die dann erst bei 5 offenen Türen reagiert?

Das ist so als würde die Feuerwehr erst ausrücken wenn mindestens 10 Leute angerufen haben...
 
So sehe ich das auch.Es wuerde ja dann eine primitve Oderverknuepfung reichen.
Aber selbst alle koennte man mit einem Zaehler aufaddieren und dann auswerten und am Zyklusanfang wieder loeschen.
Mann muss die Eingaenge nur einen Zyklus zwischenspeichern und dann aufaddieren.
Dann die Register am Anfang wieder loeschen.Wo ist der Denkfehler?
 
Eine geöffnete Tür ist schon "böse". Was soll das für eine Sicherheit sein, die dann erst bei 5 offenen Türen reagiert?

Das ist so als würde die Feuerwehr erst ausrücken wenn mindestens 10 Leute angerufen haben...
Das sind SOM2 Modi. Bei Normalbetrieb müssen alle Türen geschlossen sein, Bei einem SOM2 Modus darf nur maximal eine Tür offen sein, beim Anderen drei. Im SOM2 Betrieb wird aber mit reduzierter Geschwindigkeit gearbeitet.
Wir haben das hier nochmals besprochen. Eine mögliche Idee wäre, im Safety Programm in jedem Zyklus eine Variable auf 0 zu setzen, dann jede Tür überprüfen und wenn diese offen ist einen Zähler erhöhen und am Ende mit Limit überprüfen, ob das Limit überschritten wurde.
 
Hallo Oliver,

spontaner Gedanke zu einer möglichen Lösung:

Für jede Tür einen safeCounter Baustein anlegen der bei geschlossener Tür inkrementiert und offener Tür zurück gesetzt wird.
Den ActValue aller safeCounter mittels safeAdd (da nur 2 Eingänge, müssten mehrere safeAdd kaskadiert werden) addieren.
Zuletzt mit safeLimit prüfen ob die Summe das Limit überschreitet.

Gruss, Peter
 
Hallo Oliver,

spontaner Gedanke zu einer möglichen Lösung:

Für jede Tür einen safeCounter Baustein anlegen der bei geschlossener Tür inkrementiert und offener Tür zurück gesetzt wird.
Den ActValue aller safeCounter mittels safeAdd (da nur 2 Eingänge, müssten mehrere safeAdd kaskadiert werden) addieren.
Zuletzt mit safeLimit prüfen ob die Summe das Limit überschreitet.

Gruss, Peter
Ops, nach dem Drücken des SEND Buttons gesehen, dass du den prinzipiell gleichen Gedanken auch hattest 😄
 
Zurück
Oben