Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 20

Thema: Grafcet Gleichzeitigkeit vs. ST- Sequentiell

  1. #1
    Registriert seit
    09.04.2015
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich stehe aktuell vor der Herausforderung, Grafcets automatisch in ST zu überführen. Das ganze ist Teil eines größeren Projektes und ich komme auch gut voran, habe nur hinsichtlich der formellen Absicherung noch Verständnisschwierigkeiten. Bitte korrigiert mich bei allem, wo ich falsch liege: Grafcet beschreibt "synchronous machines", in denen Zustandsübergänge ereignisgesteuert und gleichzeitig stattfinden. Eine PLC ist aber nunmal sequentiell - ich gehe hier auch von der ein-Prozessor-ein-Task-Programmierung aus.
    Im Bild unten jetzt ein Grafcet mit dem Fall, der mir Probleme bereitet: Was passiert, nachdem die oberste Transition gefeuert hat? Ist der Output (a=1,x=1) oder (a=1,x=0)? Im Falle der SFC ist die Auswertung von Aktionen und Transitionen implementierungsabhängig, im Falle von Codesys von links nach rechts. Dort wäre der Output im ersten Zyklus also klar (a=1,x=1). Da bei Grafcet aber alles gleichzeitig passiert, bin ich mir unsicher. Kann jemand helfen?

    20150407_114950711_iOS.jpg

    Bonuspunkte für Hinweise zu weiterem Material, dass mir bei dem Verständnis der Herausforderungen von parallelen Konstrukten wie in Grafcet aus sequentiellen Maschinen helfen kann.

    Vielen Dank.

    Max
    Zitieren Zitieren Grafcet Gleichzeitigkeit vs. ST- Sequentiell  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Hallo,
    du kannst ein GraphCet (also eine Schrittkette) zu 100% in ein PLC-Programm umsetzen - auch die bei dir dargestellte simultane Verzweigung.
    Es kommt hierbei allerdings darauf an, wie du es konkret im Code machst.
    Was wird denn bei dir im Code daraus ? Ein Select-Case mit einer INT-Variablen (ggf. als Enum) ? Oder wird jeder Schritt durch einen bool repräsentiert ?

    Gruß
    Larry

  3. #3
    sims1122 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    09.04.2015
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Moin Larry,
    jeder Schritt und jede Transitionsbedingung wird jeweils durch einen Bool repräsentiert. Ich werte in einer Schleife erst die Transitionen aus (deaktiviere und aktiviere also die notwendigen Steps) und führe anschließend die Aktionen zu den aktiven Steps aus. Natürlich ist das alles noch ein bisschen feiner im Hinblick auf transiente States, forcing orders etc., aber so grob der Ablauf. In dem konkreten Fall ist es nur eben relevant, ob im SourceCode erst die Aktion für den linken Schritt und dann die für den rechten steht, oder eben andersherum, da dies (zumindest für einen Zyklus) unterschiedliche Ausgaben geben wird.

    Gruß

    Max

  4. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Hallo Max,
    üblicherweise aktualisieren die SPS'en ihr Prozessabbild (also Einlesen der Eingänge bzw. Schreiben auf die Ausgänge) zu einem festgelegtem Zeitpunkt (i.d.R. am Ende des Haupt-Programms). Dadurch ist die Reihenfolge, mit der du intern rechnest micht relevant (soweit ich dich hier richtig verstanden habe).

    In deinem speziellen Fall der Simultan-Verzweigung ist es ja eigentlich sowieso so, dass die Zweige selbst wieder zueinander unsynchron ablaufen können (und auch können sollen), da ihre Synchronisierung ja am Ende durch eine Simultan-Zsammenführung erreicht wird (es geht nur insgesamt weiter wenn beide Zweige an derem Endschritt stehen und die ggf. vorhandene Bedingung erfüllt ist).

    Gruß
    Larry

  5. #5
    sims1122 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    09.04.2015
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Da kommen wir zum Kern der Frage: a ist eine interne Variable, gehört also m.E. nicht zum Prozessabbild und wird direkt geschrieben. Dadurch ist die Reihenfolge sehr wohl relevant, oder irre ich mich? Hinzu kommt die Frage, wie der korrekte Output vom Grafcet selbst wäre. Wenn ich da eine Möglichkeit hätte, eindeutig zu sagen, was passiert, könnte ich mich auch auf eine Reihenfolge festlegen.

    Zu dem unsynchronen Ablauf nachher hast du natürlich Recht, mir geht es wirklich um den einen Zyklus nach dem Feuern der ersten Transition.

  6. #6
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    5.477
    Danke
    1.140
    Erhielt 1.238 Danke für 971 Beiträge

    Standard

    Zitat Zitat von sims1122 Beitrag anzeigen
    Zu dem unsynchronen Ablauf nachher hast du natürlich Recht, mir geht es wirklich um den einen Zyklus nach dem Feuern der ersten Transition.
    Es gibt unzählige Arten und Möglichkeiten eine Schrittkette in der SPS zu realisieren.
    Anfang und Ende einer Simultanverzweigung sorgt dabei manchmal für Diskussionen.
    Aber letztlich ist es egal wie du es löst. Du musst dieses Verhalten einfach dokumentieren.
    Wenn das Verhalten bekannt ist, dann kann der Anwender eben entscheiden ob er einen weiteren Schritt an der Stelle einfügen muss.

  7. #7
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Zitat Zitat von sims1122 Beitrag anzeigen
    Da kommen wir zum Kern der Frage: a ist eine interne Variable, gehört also m.E. nicht zum Prozessabbild und wird direkt geschrieben. Dadurch ist die Reihenfolge sehr wohl relevant, oder irre ich mich?
    OK ... da hast du Recht.
    Die Variable ändert sofort bei der Zuweisung ihren Wert und ist ab da mit dem neuen Wert verfügbar.
    Wenn du jetzt allerdings im Strang 1 eine Zuweisung machen möchtest um dann im Strang 2 ggf. davon zu partizipieren dann machst du m.E. von der Überlegung her etwas falsch - es sein denn es soll sich hier um eine Art Verriegelung handeln.
    Wenn du die Umsetzung deiner Schrittkette so machst, dass du die Schritte mit ihren Transitionen nur genau das sein läßt und die Zuweisung später im Code gesammelt (quasi als Zusammenfassung) machst dann stellt sich das Problem mit der Unsynchronität und dem ggf. Nacheinander hier auch wieder nicht.

    Poste doch vielleicht mal einen Beispielcode und dann diskutieren wir darüber ...

    Gruß
    Larry

  8. #8
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    5.477
    Danke
    1.140
    Erhielt 1.238 Danke für 971 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    OK ... da hast du Recht.
    Die Variable ändert sofort bei der Zuweisung ihren Wert und ist ab da mit dem neuen Wert verfügbar.
    Wenn du jetzt allerdings im Strang 1 eine Zuweisung machen möchtest um dann im Strang 2 ggf. davon zu partizipieren dann machst du m.E. von der Überlegung her etwas falsch - es sein denn es soll sich hier um eine Art Verriegelung handeln.
    Wenn du die Umsetzung deiner Schrittkette so machst, dass du die Schritte mit ihren Transitionen nur genau das sein läßt und die Zuweisung später im Code gesammelt (quasi als Zusammenfassung) machst dann stellt sich das Problem mit der Unsynchronität und dem ggf. Nacheinander hier auch wieder nicht.
    Ganz so simpel ist es bei Grafcet nicht.
    In den Grafcet-Aktionen ist wesentlich mehr möglich als z.B. bei S7-Graph. Bedingt durch die seq. Bearbeitung wirst du immer irgendeinen Problemfall haben.
    Ich würd mal sagen, "Das war schon immer so und das wird immer so bleiben".
    Selbst bei Schütztechnik gab es - trotz Gleichzeitigkeit - Probleme und somit die Notwendigkeit zu vor- oder nacheilenden Kontakten.

    Gruß
    Dieter

  9. #9
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    @Dieter:
    Dein Einwand in allen Ehren.
    Der TE hat jedoch geschrieben, dass er die GraphCet-Funktionalität (also im Grunde genommen die Umsetzung des grafischen Aufbaus) in ST erstellen will.
    Basis ist hierbei die Verwendung von Schrittmerkern, mal unabhängig von wo die kommen - also echte Merker oder Instanz-Bits (so habe ich es jedenfalls verstanden).
    Und in diesem Fall würde es mit meinem Beitrag dann schon passen ...
    Du hast ansonsten natürlich Recht : es ist immer wichtig zu beachten, dass man nicht auf ein Ergebnis aufbaut bevor es erstellt wurde - das ist aber unabhängig von der jeweiligen Programmier-Methodik oder der Rahmen-Spielregel. Das läßt sich aber auf dem von mir beschriebenen Weg ganz gut im Griff behalten ...

    Gruß
    Larry

  10. #10
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    5.477
    Danke
    1.140
    Erhielt 1.238 Danke für 971 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    @Larry

    Das Problem an Grafcet oder auch an CFC ist, dass hier aufgrund der einfachen grafischen Programmierung die sequentielle, zyklische Bearbeitung in den Hintergrund tritt.
    Gleichzeitigkeit gibt es zwar auf dem Blatt Papier aber eben nicht in der SPS. Deshalb muss man eben "Rechenregeln" (von links nach rechts, in der Aktionsliste von Oben nach Unten, ...) enführen und dokumentieren.

    Im Grunde unterscheiden sich unsere Aussagen nicht. Wir wissen beide, dass der erste Zyklus bei Parallelverzweigungen oder beim Start von weiteren Schrittketten eben Aufmerksamkeit bedarf.

    Gruß
    Dieter

Ähnliche Themen

  1. Werden Hochsprachen auch sequentiell und zyklisch abgearbeitet?
    Von newcomer14 im Forum Hochsprachen - OPC
    Antworten: 8
    Letzter Beitrag: 31.03.2015, 10:36
  2. Sonstiges Startbedingung im GRAFCET
    Von REDBULL78 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 30.05.2013, 08:15
  3. Zwei Eingänge auf Gleichzeitigkeit überprüfen.
    Von buffi4711 im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 03.12.2012, 14:20
  4. Grafcet umwandeln......
    Von REDBULL78 im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 15.09.2012, 11:10
  5. Grafcet
    Von Mike369 im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 12.01.2009, 13:47

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •