Absoluter Getriebegleichlauf mit SIMOTION - irre Zustände

Draco Malfoy

Level-1
Beiträge
1.168
Reaktionspunkte
82
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.
 
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 ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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.
 
Zuletzt bearbeitet:
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
 
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 ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
Hallo,
ich möchte das Thema wieder aufgreifen und habe folgende Frage:
Gibt es die Möglichkeit hier das "GearIn" mit einem Offset zu behaften?
Oder wie geht man dann vor?
Gruß Christoph
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich möchte das Thema wieder aufgreifen und habe folgende Frage:
Gibt es die Möglichkeit hier das "GearIn" mit einem Offset zu behaften?
Oder wie geht man dann vor?
Gruß Christoph
zuwenig informationen, mach mal en neues topic mit mehr info was du für ein system hast und was das problem ist
 
Zurück
Oben