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

Results 1 to 7 of 7

Thread: Absoluter Getriebegleichlauf mit SIMOTION - irre Zustände

  1. #1
    Join Date
    16.10.2012
    Posts
    920
    Danke
    56
    Erhielt 51 Danke für 40 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen

    Mittlerweile zweifle ich an meinem (Sach-)Verstand.

    Ich versuche momentan krampfaft einen absoluten Getriebegleichlauf zu realisieren.

    Erstes Problem: Nach Absetzen des Befehls sind die Achsen nicht in GEAR ! State = Gearing, aber SynchronizingState = SYNCHRONIZING. Die Achse fährt die Gleichlaufposition nicht an. Dafür muss ich erst den Master verfahren. Der Befehl ist richtig parametriert. Startbedingung = IMMEDIATLEY, synchronisieren nachlaufend. Ich weiß nicht, was ich noch tun soll.

    Zweites Problem: Auch nach dem Verfahren des Masters sind die Achsen nicht immer synchron. Es kommt auch schon vor, daß sämtliche States und Überwachungen einen Gleichlauf vermelden, aber die Slave-Achse fährt einfach nicht mit. Kommt in der Regel einmal nach dem Restart der CPUs. Das ist richtig übel.

    Drittes Problem: Ich weiß nicht, wie ich dem abhelfen soll. Welche Workarrounds muss ich einhalten, um sicherzugehen, daß die Achsen auch tatsächlich synchron sind und zusammen fahren ? Momentan überwache ich die Positionen der Achsen. Aber es ist keine Lösung.
    Reply With Quote Reply With Quote Absoluter Getriebegleichlauf mit SIMOTION - irre Zustände  

  2. #2
    Join Date
    26.11.2016
    Posts
    103
    Danke
    23
    Erhielt 14 Danke für 14 Beiträge

    Default

    Quote Originally Posted by Draco Malfoy View Post
    Hallo zusammen

    Mittlerweile zweifle ich an meinem (Sach-)Verstand.

    Ich versuche momentan krampfaft einen absoluten Getriebegleichlauf zu realisieren.

    Erstes Problem: Nach Absetzen des Befehls sind die Achsen nicht in GEAR ! State = Gearing, aber SynchronizingState = SYNCHRONIZING. Die Achse fährt die Gleichlaufposition nicht an. Dafür muss ich erst den Master verfahren. Der Befehl ist richtig parametriert. Startbedingung = IMMEDIATLEY, synchronisieren nachlaufend. Ich weiß nicht, was ich noch tun soll.

    Zweites Problem: Auch nach dem Verfahren des Masters sind die Achsen nicht immer synchron. Es kommt auch schon vor, daß sämtliche States und Überwachungen einen Gleichlauf vermelden, aber die Slave-Achse fährt einfach nicht mit. Kommt in der Regel einmal nach dem Restart der CPUs. Das ist richtig übel.

    Drittes Problem: Ich weiß nicht, wie ich dem abhelfen soll. Welche Workarrounds muss ich einhalten, um sicherzugehen, daß die Achsen auch tatsächlich synchron sind und zusammen fahren ? Momentan überwache ich die Positionen der Achsen. Aber es ist keine Lösung.
    Servus,

    1. Wenn du „nachlaufende Synchronisation“ sagst, ist es so dass sie Folgeachse erst aufholt wenn der Master in Bewegung ist, die Angegebene Syncposition „überfährt“ dann wird über den eingestellten Synchronisationsweg aufsynchronisiert.Da gibt es ziemlich viele mögliche Synchronisiermethoden also wäre es besser wenn du deinen kompletten Gear-Befehl postest.

    2. kannst du das mal Tracen oder ist es so dass die Slaveachse gar nicht verfährt ?

    3. Du kannst am Gleichlaufobjekt abfragen ob die Folgeachse synchron ist mit:
    _to.Folgeachse_Gleichlauf.syncstate = YES

    Zusätzlich würde ich am Gleichlaufobjekt noch einstellen,dass alle fehler des Masters an die Folgeachse gemeldet werden.

    Mit freundlichen Grüßen
    Piit


    Edit: Ist eine der beiden Achsen eine Modulo Achse ?
    Reply With Quote Reply With Quote Absoluter Getriebegleichlauf mit SIMOTION - irre Zustände  

  3. #3
    Draco Malfoy's Avatar
    Draco Malfoy is offline Erfahrener Benutzer
    Themenstarter
    Join Date
    16.10.2012
    Posts
    920
    Danke
    56
    Erhielt 51 Danke für 40 Beiträge

    Default

    Moin,

    zu 3: Nun ja, ich tue es ja schon. Ich frage gleich ganze 3 Bedingungen ab:

    Code:
    FollowAxis2InGear   := Axis_FOT2.syncState = YES AND Axis_FOT2.State = GEARING AND FAxis_2ND.syncMonitoring.differenceCommandValue = 0.0;
    Aber es hilft nichts. Es kann ohne Weiteres vorkommen, daß alle 3 Bedingungen erfüllt sind und der Slave trotzdem nicht mitfährt. Zum Glück hat so ne Situation noch keiner von den Montageleuten hier live erlebt.

    Ich habe jetzt in der ServoSynchronousTask die Überwachung der Istpositionen und Following Errors aller Gleichlaufachsen. Sobald da mehr als 2mm Unterschied ist, wird Not-Halt ausgelöst.

    Mein Befehl lautet wie folgt:

    Code:
                    Feedback_GearIn := _enableGearing       (
                                                            followingObject             := toFollowing,
                                                            direction                   := POSITIVE,
                                                            gearingType                 := ABSOLUTE, //RELATIVE, // ABSOLUTE, //
                                                            gearingMode                 := GEARING_WITH_FRACTION, // GEARING_WITH_RATIO
                                                            gearingRatioType            := DIRECT,
                                                            gearingRatio                := 1.0,
                                                            gearingNumerator            := 1,
                                                            gearingDenominator          := 1,
                                                            synchronizingMode           := IMMEDIATELY, // IMMEDIATELY_AND_SLAVE_POSITION, // //ON_MASTER_POSITION
                                                            syncPositionReference       := SYNCHRONIZE_WHEN_POSITION_REACHED, //BE_SYNCHRONOUS_AT_POSITION,
                                                            syncProfileReference        := RELATE_SYNC_PROFILE_TO_LEADING_VALUE,
                                                            syncLengthType              := DIRECT,
                                                            syncLength                  := MySyncLength,
                                                            syncPositionMasterType      := DIRECT,
                                                            syncPositionMaster          := MySyncPos,
                                                            syncPositionSlaveType       := USER_DEFAULT,
                                                            syncPositionSlave           := 0.0,
                                                            velocityType                := DIRECT,
                                                            velocity                    := MyVelocity,
                                                            positiveAccelType           := DIRECT,
                                                            positiveAccel               := Myacceleration,
                                                            negativeAccelType           := DIRECT,
                                                            negativeAccel               := Mydeceleration,
                                                            positiveAccelStartJerkType  := DIRECT,
                                                            positiveAccelStartJerk      := MyJerk,
                                                            positiveAccelEndJerkType    := DIRECT,
                                                            positiveAccelEndJerk        := MyJerk,
                                                            negativeAccelStartJerkType  := DIRECT,
                                                            negativeAccelStartJerk      := MyJerk,
                                                            negativeAccelEndJerkType    := DIRECT,
                                                            negativeAccelEndJerk        := MyJerk,
                                                            velocityProfile             := SMOOTH, // USER_DEFAULT,
                                                            mergeMode                   := IMMEDIATELY,
                                                            nextCommand                 := WHEN_BUFFER_READY, //WHEN_AXIS_SYNCHRONIZED,
                                                            synchronizingDirection      := SHORTEST_WAY,
                                                            synchronizingWithLookAhead  := EXTENDED_LOOK_AHEAD , // USER_DEFAULT, 
                                                            commandid                   := _getCommandId()
                                                            );
    Jetzt lautet meine eigentliche Kernfrage wie folgt:

    Welchen Befehl oder Kombination von Befehlen soll ich gebebn, damit sich meine zuvor stehende Slaveachse bei stehendem (!) Master sofort auf diesen absolut aufsynchronisiert, und dann auch synchron bleibt, bis wieder ein GEAROUT Befehlt kommt ?

    Die Dynamik ist mir dabei egal. Slaveachse kann von mir aus richtig Gas geben. Aber ich habe kein Bock darauf, etwas verfahren zu müssen, ohne sich vorher sicher zu sein, daß etwas anderes da auch mitkommt, oder im WorstCase eine Überraschung zu erleben, daß es eben nicht passiert. Es sind gigantische Schadenssummen die man sich hier einfahren kann. Denn aktuell ist es so, wenn ich den Befehl abgesetzt habe, sind die Achsen noch nicht synchron. Bei der Einstellung "BE_SYNCHRONOUS_AT_POSITION" ist es im Übrigen dasselbe. Jacke wie Hose.
    Last edited by Draco Malfoy; 10.06.2019 at 16:51.

  4. #4
    Join Date
    16.03.2006
    Location
    Franken
    Posts
    4,543
    Danke
    31
    Erhielt 1,134 Danke für 989 Beiträge

    Default

    Hi,

    bei stehenden Master?
    Da müsstest du über Dynamikparameter arbeiten und nicht MasterAchse Leitwerte, und eine nachlaufende Synchronization machen.
    Also bei SyncProfileReference = RELATE_SYNC_PROFILE_TO_TIME

    Gruß
    Christoph

  5. #5
    Draco Malfoy's Avatar
    Draco Malfoy is offline Erfahrener Benutzer
    Themenstarter
    Join Date
    16.10.2012
    Posts
    920
    Danke
    56
    Erhielt 51 Danke für 40 Beiträge

    Default

    Quote Originally Posted by ChristophD View Post
    Hi,

    bei stehenden Master?
    Da müsstest du über Dynamikparameter arbeiten und nicht MasterAchse Leitwerte, und eine nachlaufende Synchronization machen.
    Also bei SyncProfileReference = RELATE_SYNC_PROFILE_TO_TIME

    Gruß
    Christoph
    Christoph, Danke.

    Wie ist denn dann das Synchronisierverhalten in diesem Fall ? Fährt dann die Slaveachse mit vorgegebener V, a und j auf die aktuelle Masterposition und meldet dann Status = Synchron ?

  6. #6
    Join Date
    16.03.2006
    Location
    Franken
    Posts
    4,543
    Danke
    31
    Erhielt 1,134 Danke für 989 Beiträge

    Default

    Hi,

    ja die achse führt dann eine eigenständige Bewegung aus bis sie synchron zur Masterachse ist, dann kann mit der Masterachse verfahren werden und der nun synchronisierte Slave folgt.

    Gruß
    hristoph

  7. #7
    Draco Malfoy's Avatar
    Draco Malfoy is offline Erfahrener Benutzer
    Themenstarter
    Join Date
    16.10.2012
    Posts
    920
    Danke
    56
    Erhielt 51 Danke für 40 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Danke Christoph. Hört sich genau so an, wie ich das brauche. Ich werds mal ausprobieren.

Similar Threads

  1. TIA Getriebegleichlauf S120 an S7-1500
    By StGo in forum Simatic
    Replies: 9
    Last Post: 21.10.2015, 23:19
  2. Frequenzumrichter mit absoluter Positionierung und FailOver
    By drfunfrock in forum Antriebstechnik
    Replies: 6
    Last Post: 31.10.2013, 22:48
  3. Replies: 7
    Last Post: 11.03.2008, 10:54
  4. Replies: 10
    Last Post: 09.08.2007, 07:01
  5. S7-Techology Getriebegleichlauf
    By S7T-User in forum Simatic
    Replies: 5
    Last Post: 02.07.2007, 12:02

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •