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

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

Thema: Ablaufkette - Schritte werden übersprungen?

  1. #1
    Registriert seit
    03.03.2011
    Ort
    Tettnang
    Beiträge
    123
    Danke
    24
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Gemeinde,
    wieder wende ich mich an Euch mit einer Frage.
    Es geht um eine Ablaufkette, folgendes soll in einer Schleife passieren.

    1. ZielpositionZunten anfahren (start mit globaler Variable gZAchse.PTPMove)
    2. warten bis globale Variable gZAchse.InPos = TRUE (Transition)
    3. ZielpositionZMitte anfahren (start mit globaler Variable gZAchse.PTPMove)
    4. warten bis globale Variable gZAchse.InPos = TRUE (Transition)

    siehe Anhang.

    Leider funktioniert das bei mir nicht. Ich denke es liegt daran weil beide direkt aufeinander folgende Schritte die gleiche Transition (gZAchse.InPos) verwenden. Es sieht so aus als ob teilweise Schritte übersprungen werden.

    Wenn ich (wie im Anhang ersichtlich) nach den eigentlichen Schritten Dummyschritte einfüge funktioniert es dagegen.

    Doch das ist sicher keine gute Lösung!

    In der Eingangsaktion setze ich übrigens gZAchse.InPos und gZAchse.PTPMove jeweils auf FALSE.

    Ich hoffe mein Problem ist verständlich.

    Vielen Dank, Michael
    Angehängte Grafiken Angehängte Grafiken
    Zitieren Zitieren Ablaufkette - Schritte werden übersprungen?  

  2. #2
    Registriert seit
    19.12.2008
    Beiträge
    336
    Danke
    19
    Erhielt 28 Danke für 28 Beiträge

    Standard

    Zitat Zitat von twincatter Beitrag anzeigen
    Leider funktioniert das bei mir nicht. Ich denke es liegt daran weil beide direkt aufeinander folgende Schritte die gleiche Transition (gZAchse.InPos) verwenden. Es sieht so aus als ob teilweise Schritte übersprungen werden.
    Das würde ich auch vermuten.
    Du könntest z.B. nach dem Setzen der "neuen" Zielposition zusätzlich abfragen, dass die Achse nun nicht mehr in Position sein darf. Möglicherweise gibt es aber auch noch ein Bit mit der Info "Achse fährt". Auf jeden Fall solltest du so oder so ähnlich sicherstellen, dass die Achse erstmal fährt und somit eben nicht mehr auf der Sollposition ist.

  3. #3
    Registriert seit
    14.08.2004
    Beiträge
    824
    Danke
    45
    Erhielt 73 Danke für 66 Beiträge

    Standard

    Das generelle Problem mit solchen globalen Variablen ist, dass sie - wenn sie nicht aktiv zurückgesetzt werden, entweder eine 2. Bedingung oder dass sie einen weiteren Schritt in der Kette erfordern. Wenn du hier zu Schritt 3 gehst, kann die Achse noch in der Ausgangsposition sein, also noch melden, dass sie in Pos ist. Du brauchst eine zusätzliche Bedingung, die den Zielbereich mit einschliesst. Das war denn auch die Ursache, dass, wenn du einen Schritt dazwischengeschoben hast, die Achse sich aus dem Zielbereich herausbewegt hatte.
    Geändert von drfunfrock (27.04.2011 um 10:01 Uhr)

  4. #4
    twincatter ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    03.03.2011
    Ort
    Tettnang
    Beiträge
    123
    Danke
    24
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo Lupo,
    erst einmal Danke für die Info.

    Ich setze im Funktionsblock der für die Positionierung zuständig ist den Ausgang InPos immer dann auf FALSE wenn ein neuer Fahrauftrag (positive Flanke von PTPMOVE) an den Funktionsblock übergeben wird.
    Das sollte doch schlüssig sein?

    Zusätzlich, weil es eben nicht funktioniert, setze ich auch InPos auch in der Eingangsaktion zurück - ohne Erfolg.

    Ich hoffe auf neue Anregungen, Lösungen.

    Grüsse, Michael

  5. #5
    Registriert seit
    19.12.2008
    Beiträge
    336
    Danke
    19
    Erhielt 28 Danke für 28 Beiträge

    Standard

    Ich glaube nicht, dass das Rücksetzen der FB-Meldung wirklich funktioniert - das widerspricht sich mit dem, was du schreibst, dass passiert.
    In jedem Fall ist aber auch der Vorschlag von drfunfrock recht sinnig, wo du ja einfach die aktuelle Position +/- Toleranz überprüfst. Ist diese dann ungleich der Zielposition so kann dann ja mit deiner InPos-Meldung etwas nicht stimmen.
    Ich persönlich favourisiere hier aber eigentlich eher den Handshake, wo ich dann ich der Schrittkette das Verlassen der aktuellen (also NICHT InPos) und dann das Erreichen der gewünschten Position (also InPos) abfrage (als 2 aufeinanderfolgende Schritte.

  6. #6
    Registriert seit
    19.06.2008
    Ort
    Ostalbkreis
    Beiträge
    3.140
    Danke
    201
    Erhielt 553 Danke für 498 Beiträge

    Standard

    Hallo,

    Die "InPos" Meldung hängt doch sicherlich von einem vordefinierten Fenster ab. (z.B +/- 1mm um SollPos)

    Die Abfrage würde ich mit "Fahrbefehl" + "FlankePosErreicht" realisieren.

  7. #7
    Registriert seit
    14.08.2004
    Beiträge
    824
    Danke
    45
    Erhielt 73 Danke für 66 Beiträge

    Standard

    Verpolt hat recht:

    Teste solche Variablen nur auf das Erreichen der richtigen Flanke, weil dieses Ereignis nicht statisch ist. Dafür gibts es auch einen FB ohne, dass man einen weiteren explizieten Schritt benötigt.

  8. #8
    twincatter ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    03.03.2011
    Ort
    Tettnang
    Beiträge
    123
    Danke
    24
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo,

    vielen Dank für die vielen Antworten.
    Ich bin derzeit noch am experimentieren.
    Der Move-Funktionsblock ist im Moment noch so realisiert:
    Die positive Flanke von PTPMove setzt InPos zurück und setzt einen Zähler TON auf 2Sekunden. Wenn der Zähler abgelaufen ist, wird InPos auf TRUE gesetzt.
    Es findet also (zum Glück) noch keine echten Bewegungen statt.

    Grüße, Michael

  9. #9
    Registriert seit
    19.06.2008
    Ort
    Ostalbkreis
    Beiträge
    3.140
    Danke
    201
    Erhielt 553 Danke für 498 Beiträge

    Standard

    Zitat Zitat von twincatter Beitrag anzeigen
    Hallo,

    vielen Dank für die vielen Antworten.
    Ich bin derzeit noch am experimentieren.
    Der Move-Funktionsblock ist im Moment noch so realisiert:

    Die positive Flanke von PTPMove setzt InPos zurück und setzt einen Zähler TON auf 2Sekunden. Wenn der Zähler abgelaufen ist, wird InPos auf TRUE gesetzt.
    Es findet also (zum Glück) noch keine echten Bewegungen statt.

    Grüße, Michael
    Warum setzt du eine Eingangsinfo zurück? zum Testen?

    Da würde ich schon ein Bit opfern, mit dem man "PosErreicht" simuliert.

  10. #10
    twincatter ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    03.03.2011
    Ort
    Tettnang
    Beiträge
    123
    Danke
    24
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo, ich setzte die Eingangsinfo zurück, weil sonst die Schritte komplett übersprungen werden. Ich nehme an, nein ich bin mir sicher dass ich mir das Verfahren bei Schrittketten nochmals genauer anschauen muß.

    Bin für weitere Infos dankbar, Michael

Ähnliche Themen

  1. Wartezeit Graph 5 wird übersprungen
    Von noppi im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 29.05.2010, 19:30
  2. Bahnübergang - Ablaufkette / Versetzung
    Von Shenlong im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 12.06.2009, 16:08
  3. S7 Graph - Transition übersprungen
    Von Rumpel25 im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 28.01.2009, 11:35
  4. FB 15 Ablaufkette ohne Betriebsartenwahl
    Von Deep Blue im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 01.06.2007, 09:08
  5. grafischeer Editor für Ablaufkette/Steuerung
    Von s-valve im Forum Programmierstrategien
    Antworten: 2
    Letzter Beitrag: 27.08.2005, 11:59

Lesezeichen

Berechtigungen

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