"Vorprogramm" vor Hauptprogramm

A

Anonymous

Guest
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

trotz intensivster studie dieses Forums und enthaltener Links habe ich keine Lösung für mein Problem finden können,dass wie folgt aussieht:

CPU314C 2DP
STEP7 V5.2+SP1+HFR3 Ausgabestand K5.2.1.3

An einer Anlage ist ein Bedienpult mit 3 Tastern und 3 LEDs angeschlossen.
Beim Schalten von STOP nach RUN sollen die LEDs leuchten und nacheinander durch betätigen der Taster gelöscht werden.
Erst wenn diese "Funktionsprüfung" durchgeführt wurde, soll das eigentliche Programm gestartet werden (Hand-/Tipp-/Automatikbetrieb).
Diese Funtionsprüfung soll nur beim ersten schalten auf RUN bzw. nach einem Stromausfall (Schalter steht noch auf RUN) durchgeführt werden.

1. Wie realisiere ich dieses "Vorprogramm" vor dem Hauptprogramm?
2. Wie und wo kann ich feststellen ob es der erste wechsel von STOP nach RUN und/oder ob ein Stromausfall eingetreten war?

Am dringensten benötige ich Hilfe zur ersten Frage. Wichtig für mich ist das ich diese Funktionsprüfung umsetzen kann, ob die nun bei jedem wechsel von STOP nach RUN durchgeführt wird oder nicht ist vorerst mal sekundär.

Ich danke euch schonmal hier und jetzt
internette Grüsse
Andreas
 
Anlauf

Hallo,

entweder du machst im Anlauf-OB mit einer Schleife bis die gewünschte Handlung ausgeführt ist. Weiss aber nicht was passiert wenn man da länger drin bleibt. Oder du machst die Bearbeitung des "Hauptprogramms" aus dem OB1 von einem Merker abhängig "Anlauf beendet" oder so. Zur Unterscheidung was los war gibts erstmal unterschiedliche Anlauf-OBs und auch eine Startinfo im OB.

MfG
André Räppel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
...danke für die prompte Antwort!

Die Idee mit der Schleife im OB100 hatte ich auch.
Nur weiss ich nicht wie man sowas in FUP programmieren soll. In AWL ist das bestimmt möglich, entzieht sich allerdings meiner Fähigkeiten.
 
Der Grundgedanke im Lösungsansatz von André Räppel ist mir klar.
Man programmiert all nötigen Netzwerke im OB100 und setzt, nach dem alle abgearbeitet wurden ein Flag. Soweit stellt das für mich kein Problem dar.
Das problem ist den OB100 solange aktiv zu halten bis(!) das Flag gesetzt wurde. Also in anderen Worten, der OB100 darf erst verlassen werden für den Aufruf des OB1, wenn das Flag gesetzt ist; so ich das aber noch nicht realisieren konnte.

Vielleicht bin ich auch auf dem Holzweg und jemand anderes hat eine elegantere Lösung.

Andreas
 
Anlauf

nein, wenn du dir nen Merker bildest dass alles fertig ist dann kannst du das auch im OB1 machen. Auslöser ist dann ein Neustartmerker. Wenn du ihn im Anlauf-OB halten willst dann

Code:
LOOP: blabla

Auswertung
.
.
.
UN "Routine beendet"
SPB LOOP

Wenn du mehrere Anlaufebenen hast (wird aber bei deiner CPU nicht sein) würde ich das in einen FC auslagern und diesen aus den Anlauf-OBs aufrufen.

MfG
André Räppel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo evlt. betrachte ich das zu einfach aber so würde ich das lösen:
Nach dem durchlaufen des OB100 ein Sprungbefehl im OB1 setzen der das Unterprogramm welches aus dem OB1 aufgerufen wird solange überspringt bis die Sartroutine beendet wurde.

Gruß Ronald
 
Kleissler schrieb:
Hallo evlt. betrachte ich das zu einfach aber so würde ich das lösen:
Nach dem durchlaufen des OB100 ein Sprungbefehl im OB1 setzen der das Unterprogramm welches aus dem OB1 aufgerufen wird solange überspringt bis die Sartroutine beendet wurde.

Gruß Ronald

Deinen Tipp habe ich gerade ausprobiert.
Aufgrund der zyklischen Bearbeitung des S7 Programms wird nach den Anlauf OBs der OB1 aufgerufen und Netzwerk für Netzwerk von oben nach unten abgearbeitet.
Deshalb habe ich im ersten NW des OB1 den Aufruf meines "Vorprogrammes" (FC100), verriegelt (auf NICHT) durch im FC100 zu setzenden Merker.
Im zweiten NW des OB1 ist der von dir vorgeschlagene JUMP-Befehl auf das erste NW des OB1 (ebenfals durch Merker auf NICHT veriegelt).
Soweit sogut, funktioniert auch ein paar Sekunden dann hängt der Zyklus sich auf.

Die Option alle aufzurufenden FC mit diesem Merker zu verriegeln wäre sicherlich auch eine Lösung, wurde auch schon von Andrè Räppel vorgschlagen.
Nur ist dies ein nicht zu verachtender Programmieraufwand bei vielen FC aufrüfen, die teilweise auch gleichzeitig laufen. Jeder Aufruf brauch ein zusätzliches UND-Gatter.
Ich suche eine Lösung die sich auch schnell in eine vorhandene Steuerung implementieren lässt.

Andreas
 
Zuviel Werbung?
-> Hier kostenlos registrieren
es reicht doch die sache in netzwerk 1 zu tippen....

also im ob 100 schreibst du:

set
s M0.0

und im ERSTEN netzwerk von ob1:


u m0.0
fp m1.0 // flanke das nur im ersten zyklus gesetzt wird
s a4.0 // lampe-1
s a4.1 // lampe-2
s a4.2 // lampe-3

u e0.0 // reset lampe-1
r a4.0 // lampe-1

u e0.1 // reset lampe-2
r a4.1 // lampe-2

u e0.2 // reset lampe-3
r a4.2 // lampe-3

un a4.0
un a4.1
un a4.2
r m0.0


u m0.0
BEB // baustein wird hier beendet solange m0.0 =1 --> somit werden die weiteren netzwerke nicht bearbeitet



//edit
kann man vieleicht noch verschönern, ohne ausgänge setzen zu müssen und die sache etwas kürzen, aber so sollte es leicht verständlich sein...
 
@Markus

Dein Lösung funktioniert einwandfrei. Nur gibts den Befehl BEB nur in AWL.
Hast Du oder vielleicht jemand anderes eine Idee für eine Lösung in Fup?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Lösung gefunden !!!

Zuerst einmal meinen Dank an alle, die mir soviel neue Lösungsansätze aufgezeigt haben. Erst die Verknüpfung dieser Denkanstösse hat mir das gewünschte Ergebniss gebracht.

Der Ansatz von Markus und sps-connect ist zwar im grunde richtig, funktioniert aber nicht. Genauso wenig wie der FUP-Befehl RET. Allen gemein ist, dass der Zyklus untebrochen bzw. angehalten wird.
Der OB1 liest zwar das PAE (einmal), aber kann beim verlassen kein PAA schreiben um daraufhin das PAE zu aktualisieren, da er ja garnicht bis zu seinem Ende kommt.

Meine Lösung fand ich durch die Idee von Kleissler.
Im 1. NW des OB1 einen Sprung ins letzte(!) NW, dort den FC aufrufen ENO bleibt unbelegt. Die FC wird durchlaufen und nach rückkehr in den OB1 ist ja kein weiteres NW abzuarbeiten, das PAA wird geschrieben und der Zyklus beginnt von neuem. Solange bis entsprechende Veriegelungen über Merker den Sprung-/FC-aufruf verhindern.
 
Zurück
Oben