TIA Frage mit RS und SR bei Siemens Eingangstests

ssyn

Level-2
Beiträge
224
Reaktionspunkte
23
Bei einem RS ist der S-Eingang dominant. Wenn also setzen und rücksetzen gleichzeitig betätigt sind, wird der Ausgang gesetzt. Bei einem SR "gewinnt" das Rücksetzen, der Ausgang wird nicht gesetzt.
Vielleicht sollte ich ergänzen, dass sich Siemens hier nicht an der IEC61131 orientiert.
 
Zuletzt bearbeitet:
Hmm, bei Siemens RS ist - R und S1 - "1" für dominant und SR - S und R1 - "1" für dominant
Aber in Codesys umgekehrt. Was für ein Sch.... :oops::oops::oops:
 
Bei Siemens kann man sich immer gut 2 getrennte Netzwerke vorstellen (vlt. ist das auch der Hintergrund dazu):

SR:
Code:
|--|TRUE|------------------(S)
Code:
|--|TRUE|------------------(R)

RS:
Code:
|--|TRUE|------------------(R)
Code:
|--|TRUE|------------------(S)

Das letzte Netzwerk bzw. der letzte Vorgang gewinnt immer.
 
Ist Dir aufgefallen, daß beim Siemens-SR/RS-Symbol der dominante Eingang immer der untere ist? Und bei Codesys immer oben S und unten R ist? Und deshalb bei Codesys für das Verständnis der dominante Eingang zwingend zusätzlich irgendwie markiert werden muß (S1, R1)

Die Siemens-Darstellung finde ich besser, weil da gilt wie überall: Abarbeitung von oben nach unten, der untere/letzte gewinnt.

Harald
 
Die "1" hinter SET oder RESET sagt dir doch auch die Dominanz.
Das ist bei Codesys einfach ein Design Thema, die sparen sich den doppelten Aufwand...

Wenn bei RS-Flipflop erste Buchstabe ist "R" und das ist "dominant" - es sieht logischer und einfacher als direkt in Box gucken und prüfen, wo steht eigentlich "1" - bei S oder R und/oder wo steht es - oben oder unten. Aber okay, weiß jetzt Bescheid, danke zu alle.
 
Wenn bei RS-Flipflop erste Buchstabe ist "R" und das ist "dominant" - es sieht logischer und einfacher als direkt in Box gucken und prüfen, wo steht eigentlich "1" - bei S oder R und/oder wo steht es - oben oder unten. Aber okay, weiß jetzt Bescheid, danke zu alle.
Auch das ist bei Codesys eher verwirrend als gut gelöst... :rolleyes:
Historisch üblicherweise ist der zweite Buchstabe der dominante Eingang (*). Das hat früher jeder Programmierer und Elektronik-Bastler gewusst und verstanden. Heutzutage muß für die Anwender "idiotensicher" dazugeschrieben werden, welcher Eingang der dominate Eingang ist.

(*) weil das (Codesys-)RS-Flipflop tatsächlich so funktioniert: erst S dann R verarbeiten. Wenn beide Eingänge aktiviert werden, dann wird zuerst der Operand gesetzt (weil S ist ja aktiviert) und gleich danach rückgesetzt (weil das dominante R1 ist ebenfalls aktiviert) ---> das Rücksetzen gewinnt. Diese Arbeitsweise macht aber Probleme in Multitasking-Programmen. Deshalb werden SR-Flipflops in verschiedenen SPS-Familien auch manchmal anders/aufwendiger implementiert, so daß es nur zu einer einzigen Zuweisung an den Operand kommt.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Diese Arbeitsweise macht aber Probleme in Multitasking-Programmen. Deshalb werden SR-Flipflops in verschiedenen SPS-Familien auch manchmal anders/aufwendiger implementiert, so daß es nur zu einer einzigen Zuweisung an den Operand kommt.
"Anders" ja, aber "aufwendiger"?
Was kann denn weniger aufwändig sein als ...
Code:
// SR:   
Q := (Q OR S) AND NOT R1 ;

// RS:
Q := S1 OR Q AND NOT R ;

(*) weil das (Codesys-)RS-Flipflop tatsächlich so funktioniert: erst S dann R verarbeiten. Wenn beide Eingänge aktiviert werden, dann wird zuerst der Operand gesetzt (weil S ist ja aktiviert) und gleich danach rückgesetzt (weil das dominante R1 ist ebenfalls aktiviert) ---> das Rücksetzen gewinnt.
Das wäre also so etwas ...
Code:
// SR:    
Q := Q OR S;        // S
Q := Q AND NOT R1 ; // R
   
// RS:
Q := Q AND NOT R ;  // R
Q := Q OR S1 ;      // S
Aufwändiger, weil umständlicher bzw. "weniger direkt".
Es lebe der Einzeiler!
 
Zuletzt bearbeitet:
Siemens-Implementierung des SR bei S7-300/400 (ich glaube, bei S5 ebenfalls):
Code:
      U     "S"
      S     "Q"
      U     "R"
      R     "Q"
      NOP   0

Ich "vermute", viele andere Implementierungen lesen/verknüpfen Q ebenfalls nicht, sondern führen lediglich bedingt Setzen und Rücksetzen durch:
Code:
IF S THEN Q := TRUE; END_IF;
IF R1 THEN Q := FALSE; END_IF;

//oder in KOP:

   S       Q
--| |-----(S)

   R1      Q
--| |-----(R)

Dagegen ist der Einzeiler mit zusätzlich Q verarbeiten möglicherweise aufwendiger.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Noch eine Frage, damit nicht ein neues Thema machen.

Diese Frage war auch in Eingangstest, ich versuchte die "richtige" Frage in TIA Portal prüfen und es lässt nicht es machen. Aber es war in V13, vielleicht geht es ab V16 oder so?

siemens_plus.jpg
 
Zurück
Oben