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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 17 von 17

Thema: Ablaufkette - Schritte werden übersprungen?

  1. #11
    Registriert seit
    28.05.2010
    Beiträge
    35
    Danke
    6
    Erhielt 4 Danke für 4 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Wie wird denn die ZielPos definiert? Ist das ne Variable aus der Steuerung oder fährt die Achse im "Positioniersatz - Betrieb"....
    Wenn du mehr Infos über die Hardware nennst kann dir sicherlich besser geholfen werden.

    Mit den mir jetzt bekannten Fakten würde ich auch die Idee von "Verpolt" vorschlagen.

    Gruß Marco

  2. #12
    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 Programmierer und Experten,

    leider habe ich den Ablauf (AS) immer noch nicht im Griff.

    Ich habe einen Baustein FB_MovePTP erstellt und global instanziiert
    Der Baustein simuliert eine Bewegung, d.h. nach einer Startflanke wird ein Timer gestartet
    Ist der Timer abgelaufen, so wird das Signal InPos = TRUE ausgegeben
    Ich hätte erwartet dass Positionen 1-3 hintereinander 'angefahren' werden.
    Jedoch SPRINGT das Programm unregelmäßig durch den Ablauf.
    Die Ursache liegt wohl im Timing der Schrittabarbeitung.

    Ich hoffe Ihr könnt mir den/die Fehler aufzeigen.

    Allen ein schönes Wochenende, Michael


    Angehängte Grafiken Angehängte Grafiken
    Angehängte Dateien Angehängte Dateien

  3. #13
    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 Programmierer und Experten,

    leider habe ich den Ablauf (AS) immer noch nicht im Griff.

    Ich habe einen Baustein FB_MovePTP erstellt und global instanziiert
    Der Baustein simuliert eine Bewegung, d.h. nach einer Startflanke wird ein Timer gestartet
    Ist der Timer abgelaufen, so wird das Signal InPos = TRUE ausgegeben
    Ich hätte erwartet dass Positionen 1-3 hintereinander 'angefahren' werden.
    Jedoch SPRINGT das Programm unregelmäßig durch den Ablauf.
    Die Ursache liegt wohl im Timing der Schrittabarbeitung.

    Ich hoffe Ihr könnt mir den/die Fehler aufzeigen.

    Allen ein schönes Wochenende, Michael


    Vielleicht hilft es, die Var InPos nur als Flanke an deinen Transitionen abzufragen. Sonst wird ja sofort der Fahrbefehl wieder gestoppt.

  4. #14
    Registriert seit
    27.09.2010
    Beiträge
    516
    Danke
    36
    Erhielt 63 Danke für 56 Beiträge

    Standard

    also ich hatte solche probleme auch schon (als ich meinen modbus-treiber beigebracht habe queued-befehle abzuarbeiten) und habe es am ende einfach damit gelößt, das ich parallel zur befehls-/reaktionskette einen zähler (statische definition oder dynamisierte definition ist egal) geführt habe, der sichergestellt hat das die nötigen schritte durchlaufen werden allerdings war es kein as sondern case-anweisungen, ich denke aber das du sowas auch im as umsetzen kannst, deine transistionen währen dann eben nicht von InPos abhängig sondern vom wahrheitswert aus InPos und dem Zähler-Vergleich. Ich hoffe du konntest mir folgen und was damit anfassen.

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

    Standard

    Ich bleibe dabei : du hast in deiner Schrittkette definitiv ein paar Schritte zu wenig drin. Dadurch erhälst du dann eine durchlaufende Kette. Ich persönlich halte das zusätzlich Einbauen von Flankenauswertungen für ein drum-herum-programmieren um die Schrittkette. Es würde aber das vorhandene Problem ganz sicher lösen helfen.

    Dennoch - bei mir sähe das so aus :
    S1 : Fahre auf Pos.1
    T1 : warte bis Pos. errreicht = 1
    S2 : lösche Pos. erreicht
    T2 : Pos. erreicht = 0
    S3 : Fahre auf Pos.2
    T3 : warte bis Pos. errreicht = 1
    S4 : lösche Pos. erreicht
    T4 : Pos. erreicht = 0
    S5 : Fahre auf Pos.3
    T5 : warte bis Pos. errreicht = 1
    S6 : lösche Pos. erreicht
    T6 : Pos. erreicht = 0
    usw.

    das dargestellte impliziert dann allerdings auch die schon genannte Flankenauswertung.

  6. Folgender Benutzer sagt Danke zu Lupo für den nützlichen Beitrag:

    twincatter (02.05.2011)

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

    Standard

    Zitat Zitat von Lupo Beitrag anzeigen
    Ich bleibe dabei : du hast in deiner Schrittkette definitiv ein paar Schritte zu wenig drin. Dadurch erhälst du dann eine durchlaufende Kette. Ich persönlich halte das zusätzlich Einbauen von Flankenauswertungen für ein drum-herum-programmieren um die Schrittkette. Es würde aber das vorhandene Problem ganz sicher lösen helfen.

    Dennoch - bei mir sähe das so aus :
    S1 : Fahre auf Pos.1
    T1 : warte bis Pos. errreicht = 1
    S2 : lösche Pos. erreicht
    T2 : Pos. erreicht = 0
    S3 : Fahre auf Pos.2
    T3 : warte bis Pos. errreicht = 1
    S4 : lösche Pos. erreicht
    T4 : Pos. erreicht = 0
    S5 : Fahre auf Pos.3
    T5 : warte bis Pos. errreicht = 1
    S6 : lösche Pos. erreicht
    T6 : Pos. erreicht = 0
    usw.

    das dargestellte impliziert dann allerdings auch die schon genannte Flankenauswertung.

    Das ist definitiv zu viel Aufwand. Die Arbeit mit den Merkern ist ausserdem zu fehleranfällig. Eine Variable Typ Enumerated reicht und man vergisst keinen Merken zurüczusetzen. Wenn man allerdings so simple Dinge vergisst, wie dass das Signal POS-erreicht, statisch ist, kann einem niemanden helfen.

  8. Folgender Benutzer sagt Danke zu drfunfrock für den nützlichen Beitrag:

    twincatter (02.05.2011)

  9. #17
    Registriert seit
    02.09.2007
    Ort
    Wels, Austria
    Beiträge
    61
    Danke
    0
    Erhielt 11 Danke für 9 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    hallo Leute !
    Das Problem ist ,dass die Zählerflanke nicht richtig zählt, da der FB_Move.Start nur beim Duchlauf durch den Schritt Init einmal 0 wird und bei den anderen Schritte nicht. Hier sollte man programmtechnisch anders agieren. ich habe hier das Beispiel funktionierend bearbeitet und angehgängt. Ein leerer Zwischenschritt ist hier immer notwendig, aber normalerweise fährt man zum einer Position, macht dort etwas und dann wird die nächste angefahren
    mfg
    Cybertracepda
    Angehängte Dateien Angehängte Dateien
    Geändert von cybertracepda (01.05.2011 um 11:27 Uhr)

  10. Folgender Benutzer sagt Danke zu cybertracepda für den nützlichen Beitrag:

    twincatter (02.05.2011)

Ä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
  •