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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 26

Thema: Schritt aus Schrittkette wird nicht registriert ...

  1. #1
    Registriert seit
    12.09.2012
    Beiträge
    961
    Danke
    183
    Erhielt 23 Danke für 22 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi Ihr,

    habe eine Frage. Es geht darum, dass ein Motor eine Achse ansteuert und gleichzeitig ein Greifer gedreht werden soll.

    Also wenn die Achse z.B. 3cm gefahren ist, dann soll der Greifer schwenken - die Achse aber weiter in ihre Endlage fahren.
    Das Problem ist nun, dass offensichtlich der Schritt (Greifer schwenken) zu kurz ist, damit das der Greifer registrieren kann.

    Es handelt sich um einen Festo-Antrieb und ich habe einfach (in SCL eine Case-Anweisung) programmiert:

    Code:
    2: 
    IF (Achse_ActualPosition = 300) THEN
      Schritt := 3;
    END_IF;
    In Schritt 3 soll dann der Greifer schwenken ...

    Wenn ich die Achse bei 3cm kurz anhalten lasse und dann den Befehl für den Greifer gebe, dann klappt es - aber ich verliere natürlich zuviel Zeit ...

    Wie könnte ich das lösen, damit der Greifer den Startimpuls auch sicher mitbekommt?

    Vielen Dank!
    LG
    spirit
    Zitieren Zitieren Schritt aus Schrittkette wird nicht registriert ...  

  2. #2
    Registriert seit
    20.01.2009
    Beiträge
    190
    Danke
    32
    Erhielt 15 Danke für 14 Beiträge

    Standard

    Niemals auf "=" abfragen.
    Was macht deine Routine, wenn die Achse auf 300,001 fährt, anstatt auf 300?

  3. Folgender Benutzer sagt Danke zu hub für den nützlichen Beitrag:

    spirit (24.02.2015)

  4. #3
    Avatar von spirit
    spirit ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    12.09.2012
    Beiträge
    961
    Danke
    183
    Erhielt 23 Danke für 22 Beiträge

    Standard

    Naja das Problem ist ja, dass der Greifer nicht mitbekommt, dass die Achse den Punkt 300 überfahren hat, weil sofort in den nachfolgenden Schritt gesprungen wird.

    Die Achse fährt im Zuge ihres Weges eh über die 300er Marke hinweg.
    LG
    spirit

  5. #4
    Registriert seit
    20.01.2009
    Beiträge
    190
    Danke
    32
    Erhielt 15 Danke für 14 Beiträge

    Standard

    da musst du mir schon mal den Code vom Schritt 3 zeigen

  6. #5
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.224
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Du kannst bei Überfahren der Postion einen Merker (oder Datenbit) setzen, der dann den Greifer dreht. Diesen kannst du dann z.Bsp. wieder zurücksetzen, wenn der Greifer in die andere Richtung angesteuert wird.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  7. #6
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    5.491
    Danke
    1.141
    Erhielt 1.243 Danke für 974 Beiträge

    Standard

    Die Istposition der Achse wird in einem bestimmten Zeitraster übertragen.
    Deshalb ist es fast unwahrscheinlich, dass du genau die 300 mitbekommst.
    Darum hat hub vollkommen recht mit niemals auf "=" abfragen.

    Bau mal deine Abfrage um:
    Code:
    IF ((Achse_ActualPosition >= 300) AND (Achse_ActualPosition <= Zielpos) THEN
    Bei manchen Antrieben kannst du auch Ausgänge oder M-Funktionen beim Überfrahren einer Position setzen.

    Gruß
    Dieter

  8. #7
    Avatar von spirit
    spirit ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    12.09.2012
    Beiträge
    961
    Danke
    183
    Erhielt 23 Danke für 22 Beiträge

    Standard

    Zitat Zitat von Blockmove Beitrag anzeigen
    Die Istposition der Achse wird in einem bestimmten Zeitraster übertragen.
    Deshalb ist es fast unwahrscheinlich, dass du genau die 300 mitbekommst.
    Darum hat hub vollkommen recht mit niemals auf "=" abfragen.

    Bau mal deine Abfrage um:
    Code:
    IF ((Achse_ActualPosition >= 300) AND (Achse_ActualPosition <= Zielpos) THEN
    Bei manchen Antrieben kannst du auch Ausgänge oder M-Funktionen beim Überfrahren einer Position setzen.

    Gruß
    Dieter
    Danke Dieter,

    würde denn dann (wie von Ralle vorgeschlagen) auch ein Merker an der Position 300 nicht gesetzt werden?

    Aber dann bleibt es ja auch etwas ein Zufallsprodukt, wann genau der Greifer zu schwenken beginnt, richtig?
    LG
    spirit

  9. #8
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.354
    Danke
    455
    Erhielt 694 Danke für 519 Beiträge

    Standard

    Schon. Da ja mit größer gleich 300 abgefragt wird.

    JEIN. Der Greifer schwenkt sobald die CPU erhalten hat dass 300 oder mehr gefahren wurde. Die Ungenauigkeit ist (wie immer) die Aktualisierungsrate der Position und der CPU-Zyklus.

    Ist aber besser als "möglicherweise gar nicht".
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  10. #9
    Avatar von spirit
    spirit ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    12.09.2012
    Beiträge
    961
    Danke
    183
    Erhielt 23 Danke für 22 Beiträge

    Standard

    Zitat Zitat von RONIN Beitrag anzeigen
    Schon. Da ja mit größer gleich 300 abgefragt wird.

    JEIN. Der Greifer schwenkt sobald die CPU erhalten hat dass 300 oder mehr gefahren wurde. Die Ungenauigkeit ist (wie immer) die Aktualisierungsrate der Position und der CPU-Zyklus.

    Ist aber besser als "möglicherweise gar nicht".
    Ja das stimmt natürlich RONIN!

    Und den Merker bei genau (also Abfrage auf "=") dem Wert 300 setzen, würde dann eher auch nicht klappen, oder?
    LG
    spirit

  11. #10
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.354
    Danke
    455
    Erhielt 694 Danke für 519 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von spirit Beitrag anzeigen
    Und den Merker bei genau (also Abfrage auf "=") dem Wert 300 setzen, würde dann eher auch nicht klappen, oder?
    Bin mir nicht sicher ob wir das selbe meinen, vielleicht habe ich den Satz auch missverstanden...

    Positionsverlauf über 3 Zyklen: 299, 300, 301 -> Sowohl >= als auch = lößen den Greifer aus (oder setzt den Merker, je nachdem wie du es nennst).
    Positionsverlauf über 3 Zyklen: 299, 301, 302 -> Nur >= löst den Greifer aus.

    Beim größer gleich kann man sich auch das "merken" des Ereignisses sparen. Das = gilt schließlich nur für eine Position, das größer gleich für alle über 300.

    oder was meintest du mit der Frage?
    Geändert von RONIN (24.02.2015 um 16:10 Uhr)
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  12. Folgender Benutzer sagt Danke zu RONIN für den nützlichen Beitrag:

    spirit (24.02.2015)

Ähnliche Themen

  1. Antworten: 9
    Letzter Beitrag: 12.10.2011, 07:05
  2. Wert in Schrittkette wird nicht gesetzt
    Von tymanis im Forum Simatic
    Antworten: 15
    Letzter Beitrag: 18.05.2010, 16:44
  3. Antworten: 5
    Letzter Beitrag: 29.01.2010, 15:01
  4. Antworten: 26
    Letzter Beitrag: 15.03.2009, 20:49
  5. Antworten: 2
    Letzter Beitrag: 26.12.2005, 18:44

Lesezeichen

Berechtigungen

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