TIA ersten Bearbeitungszyklus eines Bausteins erkennen

MFreiberger

Level-3
Beiträge
2.894
Reaktionspunkte
768
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin Zusammen,

wie bekomme ich es einfach hin, zu erkennen, wann ein Baustein das erste mal Berabeitet wird?

Also:
- Baustein wird aufgerufen.
- Baustein wird nicht mehr aufgerufen.
- Baustein wird wieder aufgerufen.
- Baustein wird nicht mehr aufgerufen.
- Baustein wird wieder aufgerufen.
- ...

Immer, wenn der Baustein (FB) aufgerufen wird, soll er quasi einen Initialzyklus durchlaufen, dann seine Aufgabe abarbeiten und fertig melden.
Beim nächstenmal, wenn er aufgerufen wird, soll dasselbe passieren.

Erst hatte ich gedacht, eine Variable zu setzen, wenn der Baustein bearbeitet wird und zurückzusetzen, wenn er fertig ist. Aber was ist, wenn der Baustein nicht mehr aufgerufen wird, bevor er fertig ist? Dann bleibt die Variable true und beim nächsten Bausteinaufruf funktioniert die Abfrage nicht mehr...

Der Baustein soll in einer Schrittkette aufgerufen werden. Wenn diese abbricht, wird der Baustein ja vorzeitig nicht mehr aufgerufen. Trotzdem soll die Initialisierung beim nächsten Aufruf wieder funktionieren.

Wenn ich so darüber nachdenke, wird es wahrscheinlich keine Lösung geben. Außer, den Baustein zweimal aufzurufen. Also in der Schrittkette einen Schritt zum Initialisieren und einen weiteren Schritt zur regulären Bearbeitung.

Hat Jemand eine andere Idee?

VG

MFreiberger
 
Was genau macht den der Baustein? Könnte man ihn auch synchron, also in einem Zyklus, arbeiten lassen? Dann würdest du dir das auswerten ersparen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich bin jetzt Siemens Laie, aber wenn Du GRAPH einsetzt für die Schrittkette gibt es doch eine Eingangs- und Ausgangsaktion die jeweils nur einmal ausgeführt wird auch wenn die Schrittkette abgebrochen wird denke ich mal. Wenn Du Deinem FB jetzt einen Reseteingang gönnst und diesen bei Abbruch mit RESET True aufrufst. Das setzt natürlich voraus, dass man in den Schritten feststellen kann, dass die Schrittkette abgebrochen wird oder TIA beim Abbruch in einen speziellen Schritt springt, aber das kann ich leider nicht sagen.
 
Ich würde in der Schrittkette vor oder beim ersten Aufruf ein Bit setzen.
In GRAPH wäre das z.B. ein "S1 N #Variable". Das Bit ist dann nur für einen Zyklus bei betreten des Schrittes aktiv.
 
Moin,

erst einmal vielen Dank für die Rückmeldungen!

Was genau macht den der Baustein? Könnte man ihn auch synchron, also in einem Zyklus, arbeiten lassen? Dann würdest du dir das auswerten ersparen.

Leider arbeitet der Baustein asynchron.


Ich bin jetzt Siemens Laie, aber wenn Du GRAPH einsetzt für die Schrittkette gibt es doch eine Eingangs- und Ausgangsaktion die jeweils nur einmal ausgeführt wird auch wenn die Schrittkette abgebrochen wird denke ich mal. Wenn Du Deinem FB jetzt einen Reseteingang gönnst und diesen bei Abbruch mit RESET True aufrufst. Das setzt natürlich voraus, dass man in den Schritten feststellen kann, dass die Schrittkette abgebrochen wird oder TIA beim Abbruch in einen speziellen Schritt springt, aber das kann ich leider nicht sagen.

Ah, gute Idee!


Ich würde in der Schrittkette vor oder beim ersten Aufruf ein Bit setzen.
In GRAPH wäre das z.B. ein "S1 N #Variable". Das Bit ist dann nur für einen Zyklus bei betreten des Schrittes aktiv.

Das werde ich, denke ich, so umsetzen.


VG

MFreiberger
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also:
- Baustein wird aufgerufen.
- Baustein wird nicht mehr aufgerufen.
- Baustein wird wieder aufgerufen.
- Baustein wird nicht mehr aufgerufen.
- Baustein wird wieder aufgerufen.
- ...

Immer, wenn der Baustein (FB) aufgerufen wird, soll er quasi einen Initialzyklus durchlaufen, dann seine Aufgabe abarbeiten und fertig melden.
Beim nächstenmal, wenn er aufgerufen wird, soll dasselbe passieren.
Der der den Baustein (bzw. die Instanz) aufruft weiß am besten, ob das ein Folgeaufruf oder ein Initialaufruf einer neuen Folge sein soll. Also sollte der Aufrufer über einen Aufrufparameter mitteilen, ob das ein Initialaufruf ist.
Wird die Baustein-Instanz tatsächlich mehrmals aufgerufen ohne Initialaufruf dazwischen? Dauert das Aufgabe abarbeiten mehrere Aufrufe? Wenn nicht, dann wäre jeder Aufruf ein Initialaufruf und Du kannst die ganze Unterscheidung sparen.

Harald
 
Moin Harald,

ja, tatsächlich dauert die Aufgabe meherere Aufrufe lang. Die Maschine soll eine Prozedur durchlaufen. Weil die Prozedur immer gleich ablaufen soll, egal ob sie zwischendurch unterbrochen wurde, soll der Baustein, der die Prozedur steuert, immer bei "0" starten.
Das der Baustein in einer Schrittkette aufgerufen werden soll, wird er nicht zyklisch bearbeitet. ABER: das sollte ich vielleicht noch einmal überdenken.
Auf jeden Fall benötige ich die Unterscheidung zwischen Initialaufruf oder Folgeaufruf und dementsprechend einen entsprechenden Bausteinparameter.

Also hätte ich zwei Lösungsmöglichkeiten:
1. Aufruf in der Schrittkette mit Initialisierungseingang, auf den eine Variable gelegt wird, die in dem Schritt mit 'S1' (kommendem Schritt) = true geschrieben (nicht gesetzt!) wird.
2. Zyklischer Aufruf wobei ich ja immer noch ein Initialbit benötige, um den Baustein neu zu starten => auch eine Variable, die mit 'S1' geschrieben wird oder einen Schritt davor einfügen zum Initialisieren?

Die Lösungsmöglichkeit kann auch für TON/TOF-Aufrufe in der Schrittkette verwendet werden. Wobei ich da wohl eher die Schrittablaufzeit abfragen würde.

VG

Mario
 
Kannst du nicht den Baustein einfach zyklisch aufrufen und in den Schritten in denen er aktiv sein soll ein Freigabebit auf 1 setzen solange der Schritt aktiv ist?

Positive Flanke von Freigabe startet die Prozedur, Freigabe auf FALSE setzt den Baustein zurück.

Oder verstehe ich nicht was du vorhast?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin TP-Inc,

Kannst du nicht den Baustein einfach zyklisch aufrufen und in den Schritten in denen er aktiv sein soll ein Freigabebit auf 1 setzen solange der Schritt aktiv ist?

Positive Flanke von Freigabe startet die Prozedur, Freigabe auf FALSE setzt den Baustein zurück.

Oder verstehe ich nicht was du vorhast?

ja, sicher. Das ist eine der Möglichkeiten. Ich habe ursprünglich darüber nachgedacht, ob man es komplett im Baustein intern abhandeln kann. Alle anderen Möglichkeiten sind "der normale Weg", bei dem sich derjenige, der den Baustein einsetzt bzw. aufruft Gedanken machen muss. Kein großes Problem. :cool:

VG

MFreiberger
 
Zurück
Oben