Vorgehensweise zur Erstellung einer externen Positionsquelle
Schritt |
Aktion |
---|---|
1 |
Wählen Sie in der Baumstruktur der oder der die Option im Kontextmenü aus.Ergebnis: Das Dialogfeld wird angezeigt. |
2 |
Geben Sie einen Namen für Ihren Funktionsbaustein ein. |
3 |
Wählen Sie aus. |
4 |
Aktivieren Sie das Kontrollkästchen . |
5 |
Klicken Sie auf die Durchsuchen-Schaltfläche neben dem Eingabefeld, um die zu öffnen. |
6 |
Wählen Sie aus. |
7 |
Bestätigen Sie mit .Ergebnis: Das Dialogfeld wird angezeigt. |
8 |
Klicken Sie auf .![]() Ergebnis: Der die Schnittstelle implementierende Funktionsbaustein wird hinzugefügt. |
9 |
Fügen Sie Code zum Funktionsbaustein hinzu. Beispielcode für einen Roboter, der vier externen Antrieben folgen soll: ![]() |
Schritt |
Aktion |
---|---|
1 |
Fügen Sie eine Instanz des von Ihnen erstellten („Erstellen von ExternalPositionSource“) Funktionsbausteins hinzu.
|
2 |
Übergeben Sie diese Instanz an den Roboter durch Aufruf der Methode ExternalPositionSource(…) in ifRobotConfiguration.ifAdvanced:
|
Wenn sich der Roboter im Automatikmodus befindet (FB_Robot.xEnable = TRUE), wird die Methode jetzt in jedem Sercos-Zyklus zum Auslesen der Positionen aufgerufen.
Zur Prüfung der an den Roboter übergebenen RefPositions stehen mehrere Möglichkeiten zur Auswahl:
Prüfung |
Beschreibung |
---|---|
Die Komponente muss konfiguriert sein. |
Ausnahme: Wenn das Koordinatensystem des Roboters (ET_CoordinateSystem.CSR) gedreht wird, muss die richtige Orientierung an den FB_Robot übergeben werden. Sie können ifFeedback.rstLastTargetOrientation verwenden. |
Wenn Sie die Bibliothek SchneiderElectricRobotics verwenden, werden die RefPositions zur Prüfung mit dem Arbeitsbereich des Roboters verglichen. |
|
Die Standard-Transformationen prüfen, ob die Position mechanisch erreicht werden kann. |
Sollte die Position ungültig sein, dann werden die Roboterachsen gestoppt. Vom FB_Robot / FB_RoboticModule wird eine Ausnahme gemeldet. |
Bei Anforderung eines Kaltstarts wird die aktuelle TCP-Position mit der von der externen Positionsquelle bereitgestellten Position verglichen. Wenn diese Positionen mit einer Toleranz von 1.0E-2 übereinstimmen, wird davon ausgegangen, dass sich der Roboter auf der Bahn befindet, und es kann ein Kaltstart durchgeführt werden.
Wenn mindestens eine der Positionen um mehr als 0,01 abweicht, wird vom FB_Robot eine Ausnahme NotOnPath gemeldet.
Für einen Kaltstart gilt folgende Sequenz:
Schritt |
Aktion |
---|---|
1 |
Setzen Sie bei deaktiviertem Roboter Ihre externen Positionen auf ifFeedback.rstRefPositionTCP / rstRefOrientationTCP / raifAuxAx[Index].lrRefPosition. |
2 |
Aktivieren Sie den Roboter:
|
3 |
Prüfen Sie die Rückmeldung, wenn ifFeedback.xOnPath = TRUE. |
4 |
Starten Sie den Roboter:
Ergebnis: Sie können die externen Positionen versetzen und der Roboter folgt. |
Wenn eine externe Positionsquelle konfiguriert wurde, wird der Warmstart-Modus auf ET_WarmStartMode.Sequenced gesetzt. Deshalb müssen Sie die Methode ifWarmstart.Start() verwenden, um eine Warmstart-Verfahrbewegung zu starten. Detaillierte Informationen zum sequenzierten Warmstart finden Sie unter Verhalten des Warmstart-Modus „Sequenced“.
Beim Start des Warmstarts wird die Methode WriteRefValues aufgerufen und die Istposition der Komponenten ausgelesen. Die Komponenten werden an diese Position versetzt. Wenn die externe Position während des Warmstarts geändert wird, wird diese Änderung nicht berücksichtigt. Die Komponenten geben nicht die Rückmeldung OnPath zurück. Im Anwendungslogger wird ein entsprechender Eintrag erstellt.
Wenn sich die externe Position ändert, nachdem eine Komponente ihre Verfahrbewegung durchgeführt hat, der Warmstart jedoch noch nicht vollständig abgeschlossen ist, wird die Rückmeldung OnPath für diese Komponente auf FALSE zurückgesetzt.
Für jede Komponente, die sich noch nicht auf ihrer Bahn befindet, kann der Warmstart neu gestartet werden.
Wenn die Komponenten an ihre richtige Position verfahren werden, nimmt ifFeedback.xOnPath den Wert TRUE an, ifRobot.xStart kann auf TRUE gesetzt werden und der Roboter folgt der Bewegung der externen Positionsquelle.
Mögliche Bits für einen Warmstart sind beispielsweise ifWarmstart.raxCartesianPossible[ROB.ET_RobotComponent.CartesianX].
Diese Bits nehmen den Wert TRUE an, wenn folgende Voraussetzungen erfüllt sind:
Der FB_Robot befindet sich im Warmstart-Modus (xEnable, xWsSelect und xWsStart sind TRUE).
Die Bewegungsparameter für einen Warmstart für diese Komponente wurden konfiguriert (ifWarmstart.SetMotionParamerer(…)).
Die Komponente befindet sich nicht auf der Bahn.
Die Komponente führt keine Warmstart-Verfahrbewegung aus.
OnPath-Bits, beispielsweise ifWarmstart.raxCartesianOnPath [ROB.ET_RobotComponent.CartesianX].
Diese Bits nehmen in folgenden Fällen den Wert TRUE an:
Der Funktionsbaustein FB_Robot wird aktiviert.
Die Komponente befindet sich auf der Bahn.
Abstand, z. B. ifWarmstart.ralrCartesianDistance[ROB.ET_RobotComponent.CartesianX]. Wenn sich die Komponente nicht auf der Bahn befindet, kann der Abstand vom Warmstart-Ziel hier ausgelesen werden, sobald sich der FB_Robot im Warmstart-Modus befindet (xEnable, xWsSelect und xWsStart sind TRUE).
Darüber hinaus existieren Einträge im Anwendungslogger, die bestimmte Warmstart-Ereignisse melden.
Die folgenden Transformationen können verwendet werden, selbst wenn ExternalPositionSource konfiguriert wurde.
IF_RobotConfiguration.User3Ax(…)
IF_RobotConfigurationAdvanced.AdditionalTransformationTCP(…)
IF_RobotConfigurationAdvanced.AdditionalTransformationAxes(…)
Wenn ExternalPositionSource konfiguriert wurde, kann der Roboter nicht mithilfe von Standard-Fahrbefehlen verfahren werden. In diesem Fall geben die Methoden eine Diagnosemeldung ExecutionAborted / ExternalPositionSourceConfigured zurück.
Wenn FB_Robot.xStart von TRUE zu FALSE wechselt, wird die von der externen Positionsquelle übergebene aktive Verfahrbewegung jeder Roboterkomponente mit den konfigurierten Bewegungsparametern angehalten.
Die Bewegungsparameter können mit den verfügbaren Konfigurationsmethoden in IF_RobotMotion konfiguriert werden.
SetMotionParameters(…)
SetMaxVelocity(…)
SetMaxAcceleration(…)
SetMaxDeceleration(…)
SetRamp(…)
Wenn FB_Robot.xEnable von TRUE zu FALSE wechselt, wird die von der externen Positionsquelle übergebene aktive Verfahrbewegung jeder Roboterkomponente mit den konfigurierten Notfallparametern angehalten.
Die Notfallparameter können mit den verfügbaren Konfigurationsmethoden in IF_RobotConfiguration konfiguriert werden:
SetEmergencyParameters(…)
SetEmergencyParameters2(…)
Wenn das RoboticModule für den Betrieb mit einer externen Positionsquelle konfiguriert wurde, gilt folgendes Stopp-Verhalten:
Die Reaktion ASyncStop hält die einzelnen Achsen mit dem entsprechenden Stopp-Verhalten an.
Die Reaktion SyncStopEL/EH hält die externe Roboterbewegung mit den konfigurierten Notfallparametern an.
Die Reaktion StopEndOfCycle hält die externe Roboterbewegung mit den konfigurierten Bewegungsparametern an.
Die zur Berechnung der Rückmeldung der voraussichtlichen Stopp-Position („EstimatedStopPosition“) verwendeten Parameter haben sich geändert.
Parameter |
Beschreibung |
---|---|
ifSpace.rstEstimatedStopPosition |
Wird mit den über IF_RobotMotion.SetMotionParameters(…) eingestellten Bewegungsparametern für die Roboterkomponenten X, Y und Z berechnet. |
raifAuxAx.lrEstimatedStopPosition |
Wird mit den über IF_RobotMotion.SetMotionParameters(… eingestellten Bewegungsparametern für die Roboterkomponenten AuxAx (Hilfsachsen) berechnet. |
raifOrientation.lrEstimatedStopPosition |
Wird mit den über IF_RobotMotion.SetMotionParameters(…) eingestellten Bewegungsparametern für die Roboterkomponenten Orientation (Orientierung) berechnet. |
Die berechnete voraussichtliche Stopp-Position wird an einen Roboter von Schneider Electric zur Prüfung des Roboter-Arbeitsbereichs übergeben.
Die Bewegungsparameter zur Berechnung der voraussichtlichen Stopp-Position müssen in Übereinstimmung mit den Anforderungen der Anwendung konfiguriert werden. Andernfalls kann es zu einem unerwarteten Stopp des Roboters kommen.
Wenn Sie eine Periode für eine Hilfsachse verwenden, muss die Periode der externen Positionsquelle der Periodenlänge der Hilfsachse oder einem Vielfachen davon entsprechen.
Beispiele:
Periodenlänge der AuxAx |
Periode der externen Positionsquelle |
---|---|
360 |
0...360 -180...180 -360...360 0...3600 ... |
90 |
0...90 0...180 -45...45 -10...80 0...720 0...900 ... |
Die externe Position wird in die Periode der Hilfsachse berechnet. Der Periodenstart der Hilfsachse ist von keiner Bedeutung. Sie können eine Periode von -180 bis 180 für die Hilfsachse verwenden, während die externe Positionsquelle die Periode 0 bis 720 bzw. keine Periode verwendet.
Beispiel-Trace für eine Verfahrbewegung der externen Achsen ohne Periode, während AuxAx1 eine Periode von 0 bis 360 und AuxAx2 eine Periode von -180 bis 180 verwendet.
Beispiel-Trace für eine Verfahrbewegung der externen Achse für AuxAx1 ohne Periode von 0 bis 720, während AuxAx1 eine Periode von 0 bis 360 verwendet. Die externe Achse für AuxAx2 bewegt sich mit einer Periode von 0 bis 360, während AuxAx2 über eine Periode von -180 bis 180 verfügt.