E/A gegeneinander sperren

Kniffo

Level-1
Beiträge
119
Reaktionspunkte
10
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

gibt es eine Möglichkeit, auf möglichst tiefer Ebene bestimmte Aktionen zu beschränken?
Einfaches Bsp.: wenn E 1.1 gesetzt ist und E 1.2, darf A 2.0 nicht beschrieben werden.

Gibt es einen Weg solche Sperren irgendwie global zu formulieren?

Vielen Dank
Kniffo
 
... du meinst, das wenn E1.1 und E1.2 da sind soll der aktuelle Zustand des A2.0 nicht geändert werden können ? Also weder Setzen noch Rücksetzen ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja genau. Mir geht es dabei aber wie gesagt nicht um die Umsetzung in einer Programmiersprache, sondern so eine Sperre generell für alle Funktionen zu setzen.
 
Hallo,

gibt es eine Möglichkeit, auf möglichst tiefer Ebene bestimmte Aktionen zu beschränken?
Einfaches Bsp.: wenn E 1.1 gesetzt ist und E 1.2, darf A 2.0 nicht beschrieben werden.

Gibt es einen Weg solche Sperren irgendwie global zu formulieren?

Vielen Dank
Kniffo

Man könnte 2 Sachen machen:

1. In den Zweig, in Welchem A2.0 gesetzt wird mit reinschreiben UN E1.1 UN E1.2! Das wäre die saubere Lösung, die aber nicht so global ist wie du das wohl gerne willst.

2. Im letzen NW des OB 1 alles wieder zurücksetzen, was nicht gesetzt werden darf.

UN E1.1 UN E 1.2 R A2.0

Das ist eher unsauber, schlecht zu finden und schlecht zu warten, für "Fremde" aber dafür "global".

Ich würde in jedem Fall zu Variante 1 raten!
 
Ja genau. Mir geht es dabei aber wie gesagt nicht um die Umsetzung in einer Programmiersprache, sondern so eine Sperre generell für alle Funktionen zu setzen.

Dann mach für jede Funktion ein eigenes Bit "Freigabe". Das kannst du zentral (global) setzen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@Ralle:
Ich glaube, du hast das falsch verstanden. Kniffo will die Möglichkeit der Bearbeitung des Ausgangs sperren ...

M.E. geht das nur, wenn man den Ausgang in einem FC (oder FB) zuweisst und den FC in Abhängigkeit der entsprechenden Eingänge bedingt bearbeitet ...
Das wäre zwar machbar, aber DAS SCHLIMMSTE WAS MAN MACHEN KANN ...
 
@Ralle:
Ich glaube, du hast das falsch verstanden. Kniffo will die Möglichkeit der Bearbeitung des Ausgangs sperren ...

M.E. geht das nur, wenn man den Ausgang in einem FC (oder FB) zuweisst und den FC in Abhängigkeit der entsprechenden Eingänge bedingt bearbeitet ...
Das wäre zwar machbar, aber DAS SCHLIMMSTE WAS MAN MACHEN KANN ...

Klar verstanden, mit dem Freigabebit würde das aber prima gehen und wäre sauber!
 
sowas kann man auch hardwaretechnisch lösen, indem man ein relais oder weiters in den ausgangsstrang hängt, und einen öffnerkontakt nutzt, wenn die beiden eingänge da sind.
 
sowas kann man auch hardwaretechnisch lösen, indem man ein relais oder weiters in den ausgangsstrang hängt, und einen öffnerkontakt nutzt, wenn die beiden eingänge da sind.
Naja dann geht das Signal weg, die Aufgabe war ja, dass nichts passieren soll- wenns 0 ist bleibts 0 wenn es 1 ist bleibts 1.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
wie wärs denn mit ner ganz simplen sprunganweisung ?

un #aenderungsbedingung
spb noa1

//hier ist deine zuweisung für den Ax.y

noa1: nop 0
 
Oder:

U "Setzbedingung"
UN E1.1
UN E1.2
S A0.0
U "Rücksetzbedingung"
UN E1.1
UN E1.2
R A0.0

Du darfst Ausgänge eh nur einmal beschreiben und somit "global". Also ist deine Verriegelung auch "global".
Sicherer geht es nicht mehr.
Sonst musst du die Hardware verriegeln...

Gruß, Tobias
 
Was mir noch einfällt: Für den Fall, dass zusätzlich neben dem SPS- Programm was gesperrt werden soll: Das geht nicht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das

mit der Sprunganweisung kann man ja mit nem Merker als Zwischenergebnis realisieren. Wenn der Merker dann nen 'Namen' bekommt wie 'Jou ich mach weiter', dann ist auch für den E- Man vor Ort die Funktion ersichtlich

Also:

U Setzbedingung Ax
U Jou ich mach weiter
S Ausgang x

U Rückstezbedingung Ax
U Jou ich mach weiter
R Ausgang x

wenn 'Jou ich mach weiter' dann '0' ist, dann tut sich an den proggrammierten Stellen nix mehr und man ist mit der Belegeung des Merkers ja frei.

Wär das was womit man Leben kann?

Gruß
 
...
M.E. geht das nur, wenn man den Ausgang in einem FC (oder FB) zuweisst und den FC in Abhängigkeit der entsprechenden Eingänge bedingt bearbeitet ...
Das wäre zwar machbar, aber DAS SCHLIMMSTE WAS MAN MACHEN KANN ...

Wenn ich die Aufgabe richtig verstanden habe ist "DAS SCHLIMMSTE WAS MAN MACHEN KANN" aber die einfachste Lösung.


Ein andere Lösung wäre wenn die Ausgänge immer auf vollen AB/AW liegen diese am Anfang von OB1 in MB/MW (oder in einen DB) zu sichern und wenn die Bedingung zur Sperrung erfüllt ist am ende vom OB1 einfach wieder die Ausgänge mit den gespeicherten Werten überschreiben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... aus meiner Sicht, weil man bei mehreren Zuweisungen im Problemfall nicht mehr erkennen kann, von wo der "S" oder "R" oder auch "=" Befehl kam.
Deswegen sträuben sich bei mir bei so etwas ein wenig die Nackenhaare ...

Das geht wohl jedem so aber es entspicht ja genau der Aufgabenstellung wenn ich die richtig verstanden habe. Wobei mir der Sinn der Aufgabe nicht klar ist.

@Kniffo: Für was braucht man das?
 
Erstmal vielen Dank für eure Antworten! Ich musste gestern leider weg.

Mein Betreuer hatte mir die Frage gestellt. Dabei sollen einfach nur Zustände abgeriegelt werden, die nie auftreten dürfen. Da scheinbar auch mal Leute rumspielen, die keine zu große Ahnung haben, sollten so ein paar Fehlzustände generell unterdrückt werden, auch wenn sie im betreffenden Baustein nicht beachtet wurden um solche Fehlerquellen eben standardmäßig bereits auszuschließen - so als kleine Unterstützung.

@Larry Laffer
Es muss also nicht zwingend sein, dass eine 1=1 und eine 0=0 bleibt. Das kommt auf den Umstand an, könnte aber mit eine Bedingung sein.

Ich hoffe ich konnte das jetzt einigermaßen rüberbringen.
Vielleicht ist das auch Blödsinn, aber ein paar Ansätze interessieren mich doch. Wie umsetzbar und sinnvoll das ist, muss dann entschieden werden.
 
Zurück
Oben