Step 7 PCS7: SFC, Schrittkettenbearbeitung

Beiträge
62
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen die Herrschaften!

Kurze Frage zum SFC in PCS7:

In der Schrittkette "Idle" soll das Programm warten, bis ein Startbefehl vom Benutzer kommt (Eingang "Start"). So ist ja auch die generelle Funktionsweise eines SFC (-Plans oder -Typs).
Ich habe in "Idle" lediglich zwei Schritte, eben Start und Ende. Allerdings scheint der Plan, solange er in Idle ist, diese Kette ständig neu abzuarbeiten, d.h. er springt ständig von "Start" nach "Ende" und umgekehrt.
Das ist auch bei anderen Ketten (z.B. Error, Run...) so. Prinzipiell etwas unschön, da er ja dann schon in einem Schritt bleiben sollte (vorzugsweise im letzten, um eben auf den nächsten Befehl zu warten).

Ich habe jetzt der Transition zwischen den Schritten "Start" und "Ende" einfach die Bedingung "Start = True" gegeben, was aber ja eher unschön ist, da diese Funktion ja eigentlich durch die einzelnen Ketten selbst abgedeckt sein sollte...

Frage jetzt also: Warum springt der immer zwischen den Schritten hin und her? Ist das einfach so? Kann ich das abstellen? Würde hier halt gerne die "hauseigene" Funktionsweise des SFC für div. Steuerfunktionen meines Programms nutzen, aber wenn ich jedes mal doch wieder von Hand noch den Startbefehl einprogrammieren muss, wäre das ja etwas schade.

Der Eingang CYCLEXEC ist übrigens 0, wobei der ja auch eigentlich eine andere Funktion bzw. Auswirkung hat...

Schönen Tag noch, freuet euch aufs kommende Wochenende und danke im Voraus für eure Antworten!
 
Hmm, irgendwie hab ich nicht verstanden, wo Dein Problem liegt...

Ne Schrittkette nur mit Start und Ende, wo an der einzigen Transition noch nichtmal was dransteht macht für mich auf den ersten Blick wenig Sinn?

Jedenfalls ist Dein Problem, dass die Schrittkette nach ENDE automatisch/zyklisch wieder startet? Oder hab ich das falsch verstanden? Hast Du den "zyklischen Betrieb" irgendwo aktiviert? Stimmt mit dem Betriebsverhalten/Betriebsarten alles oder probierst Du da nur rum?

Erstell doch mal nen neuen SFC-Plan und teste das mal alles aus... Starte und Stoppe das erstmal aus der Visu und nicht über die Bausteineingänge, das ist einfacher fürs Verständnis.

Gruß.
 
Moin!

Ja ist schon klar, dass sich das erstmal komisch anhört. Im SFC gibt's ja diese ganzen Betriebsarten, "Run", "Complete", "Held" usw..., die sich über die Standard-Bausteineingänge steuern lassen und für die man dann jew. eigene Ketten anlegen kann. Das sind ja im SFC selbst enthaltene Betriebszustände, die dieser auf jeden Fall durchläuft, ob nun dafür eine Kette existiert oder nicht.

In der Kette "Idle" möchte ich im Schritt 1 (von 2) lediglich die Parameterprüfung (mit PARAM = 1) machen und dann in Schritt 2 springen, wenn diese erfolgreich abgeschlossen wurde (QPARAM = 1). In Schritt 2 (dem Ende-Schritt) soll gewartet werden, bis der Eingang "Start" von extern gesetzt wird und das Programm in die "Starting"-Kette wechseln kann, wo dann weitere Bearbeitungen folgen. Ohne die Parameterprüfung kann ich die Kette auch gar nicht starten, da sonst ständig QDIS_START = 1 ist, der "Start"-Eingang also gesperrt ist.

Also in "Idle" soll lediglich dafür gesorgt werden, dass die Grundvoraussetzungen für den Start des Programms (der eigentlichen Schrittkette) gegeben sind. Auch in manchen der anderen Ketten gibt es solche kurzen Bearbeitungen. Z.B. in "Error" warten auf Quittierung und Störungsbehebung. Da reicht im einfachsten Fall auch eine Schrittkette mit zwei Schritten und einer Transition. Dennoch kann natürlich die Kette in "Starting" oder "Run" umfangreicher sein.

Mein Problem ist jetzt, konkret auf die "Idle"-Kette bezogen (ist aber auch bei den anderen Ketten so): Ich bin in Schritt 1 (Start), die Transition für Schritt 2 (Ende) ist erfüllt, die Kette spring von Schritt 1 in 2. So wie es sein soll, kein Hexenwerk. Jetzt ist die Bedingung für das Beenden der Kette (bzw. für das Starten der nächsten Kette (von "Idle" nach "Starting" z.B., also der "Start"-Eingang")) aber noch nicht gegeben, d.h. ich warte immer noch in "Idle" auf den eigentlichen Programmstart. Aber: Die "Idle"-/"Error"-Kette bleibt nicht in Schritt 2 (Ende) und wartet dort einfach auf "Start" / "Resume", wäre ja soweit alles vorbereitet (Parameter geprüft / Störungen quittiert...), sondern springt automatisch wieder in Schritt 1, sodass dann wieder die Transition abgefragt werden muss usw... Testen tu ich seit Tagen (natürlich nicht nur das) und habe auch das Gefühl, dass es schon mal funktioniert hat, aber vielleicht irre ich mich auch...

Der "zyklische Betrieb" wird über den Eingang "CYCLEXEC" aktiviert / deaktiviert, dieser ist auch deaktiviert. Aber über diesen Eingang wird auch nicht das Wiederholen einer einzelnen Kette gesteuert, sondern das Schalten vom Zustand "Run" bzw. "Completing" zurück in "Starting" bzw. "Run".

Den ganzen Text, den ich geschrieben habe, lösche ich nicht mehr, sonst war ja die ganze Mühe umsonst... habe gerade beim sicherheitshalben Kontrollieren der Bedeutung von "CYCLEXEC" was gefunden:


Zitat Siemens-Doku "SFC für Simatic S7":

Bei "Zyklischer Betrieb: aus" bleibt die Ablaufsteuerung im Zustand "Beendet". Wenn kein Befehl zum Verlassen des Zustandes ansteht, wird "Beendet" ständig zyklisch bearbeitet.

Dieses Verhalten gilt für alle Betriebszustände, die nur durch Befehle verlassen werden können.

... folglich für "Idle", "Held", "Held Error", "Completed", "Aborted", "Stopped".

Glück gehabt, dass ich durch Zufall drauf gestoßen bin...

Hoffentlich kann jemand anderes mal noch irgendwann davon profitieren :-D

Trotzdem natürlich danke für deine schnelle Antwort!!!
 
Hmm, ich hab zwar immer noch nicht konkret verstanden, wo Dein Problem liegt und wie Du es gelöst hast, aber Hauptsache gelöst ;)

viel Erfolg noch.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Naja ist eigentlich ganz einfach:
Kette (Idle)SollIstLösung
Schritt 1 (Start)Eingang PARAM = 1Eingang PARAM = 1Eingang PARAM = 1
Transition 1-2QPARAM = 1QPARAM = 1QPARAM = 1 & Eingang "Start" = 1
Schritt 2 (Ende)PARAM = 0PARAM = 0PARAM = 0
noch Schritt 2 (Ende)Warten auf Startbefehl (Eingang "Start") für nächste Kette ("Starting"), Teil der internen SFC-SteuerungZurück zu Schritt 1, solange Eingang "Start" = 0Zur nächsten Kette ("Starting"), da Eingang "Start" noch gesetzt. D.h. teilweise Verlagerung von Schritt 2 in die Transition 1-2
Prinzipiell ist es kein "Problem" im eigentlichen Sinne, aber v.a. in der Visu ist es eben unschön, wenn der im wartenden Zustand (Warten auf "Start" oder "Resume" etc.)
immer die komplette Kette abläuft und wiederholt... Schritt 1, Schritt 2, Schritt 1, Schritt 2 usw. usf..., siehe Istzustand in der Tabelle.

Jetzt etwas klarer? ;-)
 
Tja, warum die Kette "Idle" jetzt wieder neu beginnt, kann ich aus der Ferne nicht sagen, irgendeine Startbedingung (für Kette Idle) muss schon vorhanden sein, oder halt zyklischer Betrieb aktiviert (das geht auch noch an anderen Stellen ausser Eingang CYCLEXEC)...

Der letzte Schritt "Ende" wartet im eigentlichen Sinne auf nix Ende ist Ende... natürlich höchstens auf einen Neustart der Kette.

Soll: Warten auf Startbefehl (Eingang "Start") für nächste Kette ("Starting"), Teil der internen SFC-Steuerung

das verstehe ich nicht, wie gesagt, ENDE wartet auf nix.

Aber ok, wenns jetzt funktioniert ist doch OK.
 
Startbedingung für die Kette "Idle" ist Ausgang "Idle" = 1. Was gibt es noch für Möglichkeiten, den zyklischen Betrieb zu aktivieren außer CYCLEXEC?

Ja der Betriebszustand "Idle" kann ja nur verlassen werden (u.a.), wenn Eingang "Start" = 1 ist. Solange das nicht der Fall ist, bleibt er für alle Ewigkeit im Zustand Idle, d.h. eine Schrittkette, die im Zustand Idle bearbeitet wird,
würde auch ewig... genau das ist jetzt die Frage. Sie wird eben ewig zyklisch bearbeitet bzw. neu gestartet, meiner Ansicht nach wäre wünschenswerter, wenn sie eben im letzten Schritt warten würde, bis der Eingang "Start" kommt und der neue Betriebszustand "Starting" aktiv wird --> ggf. Kette "Starting" bearbeitet wird.

Ich vermute mal, dass ich einfach einen kleinen Denkfehler bei der Sache habe, ist mein erstes Projekt mit PCS7 und SFC... Da die Startbedingung für die Kette, nämlich "Idle" = 1, ja ständig erfüllt ist, ist ja eigentlich sogar logisch, dass er sie wieder und wieder ausführt. Besser wäre es in meinem Fall dann ja, wenn nicht auf den Zustand "Idle", sondern auf eine positive Flanke von "Idle" abgefragt werden würde. Dann würde sie einmal ausgeführt werden und fertig, wenns danach nicht weitergeht, weil kein "Start" kommt, würde sie dann einfach im letzten Schritt stehen bleiben...

Wenn ich jetzt so drüber nachdenke, habe ich sogar das Gefühl, dass genau das mein Problem ist :-D aber gut, einmal ein wenig ein Anstoß von außen, schon geht einem so manches Lichtlein auf ;-)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich vermute mal, dass ich einfach einen kleinen Denkfehler bei der Sache habe, ist mein erstes Projekt mit PCS7 und SFC...

Hast Du mal die Gettings Starteds von PCS7 (Erste Schritte, Teil1, Teil2) durchgearbeitet? Da ist auch ne SFC Schrittkette mit drin. Weiterhin gibt's nen Demoprojekt: APL_Example_EU falls Du ne neuere Version von PCS7 hast, da ist auch ne Schrittkette drin.

Ne Schulung für PCS7 ist m.M. nach zu empfehlen (ich verkaufe keine Schulungen). U.U. hast Du einen gewaltigen Verständnisdenkfehler bei der Sachen, kommt mir jedenfalls so vor, da ich vieles nicht verstehe, was Du schreibst.

viele nützliche Infos zu PCS7 gibt es hier: http://support.automation.siemens.com/WW/view/de/63481413

Das mit der Flanke hatte ich ja schonmal weiter oben geschrieben.

Gruß.
 
Zurück
Oben