Grundstellung nach Neustart SPS

HEidelberger

Level-2
Beiträge
39
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, ich habe mir folgendes S7 classic Programm zusammengesponnen, damit nach einem Neustart der SPS eine Grundstellung angefahren wird. Erstmal nur ein erster Programmierversuch:

- OB100: Merker-Bit setzen
- OB1: abfragen, ob Merker-Bit gesetzt und in eine FC springen
- in FC: Code abarbeiten & Merker-Bit zurücksetzen

- OB1: führt dann das restliche Programm aus


Leider kann ich in der FC keine Ausgänge (RS1o) schalten. Mit der Brillenfunktion wird das angeblich auch gemacht, aber an der realen CPU nicht!
Ich habe auch schon verschiedene andere Ansätz mit SR Gliedern etc. probiert - keine Chance.
Das Rücksetzen des Merker-Bit M99.0 funktioniert.

Grundsätzlich kann ich Ausgänge schalten. Die Hardware ist OK.


Wo habe ich einen Denkfehler?

Ich bitte um Hilfe.


1733376730160.png
__________________________________________________

1733376686883.png
__________________________________________________

1733377304562.png
 
RS1o ist ein Ausgang den Du nur und ausschließlich in diesem FC zuweist? Oder wird der ggf. an anderer Stelle beschrieben?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

mal der Reihe nach:
- es ist wirklich so, dass der RS1o Ausgang in einer anderen FC (FC1) verwendet wird
Ich habe mal den FC1 nicht im OB1 aufgerufen. Somit ließ sich der RS1o schalten

==> Wie würde man das da sauber machen, wenn verschiedene Ursachen den Ausgang RS1o schalten?

- das Zeitglied funktioniert allerdings so


Danke für weitere Tipps
 
Zuletzt bearbeitet:
Du beschreibst die anderen Stellen mit Merkern oder DB und am Ende des OB1 schreibst du O Merker_XY O Merker_XZ = Ausgang

1733381704590.png

Ich würde aber den M99.0 direkt ans Oderglied schreiben, dann denn M99.0 auf ein TON mit 10s und denn TON Ausgang R M99.0. Da brauchst du keine Flanke, kein TP
 
Deine Steuerung sollte sich die Stellung der Rolläden eigentlich merken. Deshalb benutzt du ja einen remanenten Datenbaustein und kein Merkerwort für die Zeitwerte. Ein remanenter Datenbaustein wird beim Neustart nicht auf die Startwerte zurückgesetzt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also nochmal für mich zusammenfassend mit der Eingangsfrage:

- OB100: Merker-Bit 99.0 setzen
- OB1: abfragen, ob Merker-Bit M99.0 gesetzt -> falls ja: in FC100 springen
- in FC100: Code abarbeiten, keine Ausgänge setzen -> Merker für Ausgang verwenden, Merker-Bit M99.0 zurücksetzen

- OB1: weitere FCs ausführen lassen, keine Ausgänge setzen -> Merker für Ausgang verwenden
- am Ende vom OB1 alle Merker auf Ausgänge wirken lassen


Würde das so passen?
 
Wieso den FC100 bedingt aufrufen, wenn darin sowieso nichts passiert, wenn die Eingangsbedingung nicht erfüllt ist?

Es wäre doch leserlicher, wenn alle deine Bedingungen, den Ausgang zu schalten auch an einem Ort programmiert sind.
Dass die SPS neu gestartet wurde speicherst du dir ja schon ab, dann kannst du die Logik auch dort hin packen wo alles andere mit dem Ausgang passiert.

Benutz doch auch Symbole für deine Merker, benenne deine Bausteine und Netzwerke.
 
Mach dir doch mal eine Skizze von deinem Ablauf bevor du anfängst zu programmieren und dich dort verhaspelst.
Was soll deine Steuerung machen, und wie sehen dazu die Bedingungen aus?

Einfach drauf los Programmieren geht meistens nach hinten los.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also ich setz mir auch für sowas im OB100 einmal einen Merker und setzte den dann am Ende vom OB1 wieder zurück.
In den ganzen FBs, welche im OB1 aufgerufen werden, verwende ich dann den Merker und führe dann da irgendwelchen Code aus.
Wenn ich dann noch z.B. einen oder mehrere Zeit OBs verwende, dann setze ich im OB100 auch mehrere Merker und setze die dann jeweils am Ende von dem jeweiligen Zeit-OB wieder zurück.
 
Zurück
Oben