Allgemeines Verhalten von ExternalPositionSource

Erstellen von ExternalPositionSource

Vorgehensweise zur Erstellung einer externen Positionsquelle

Schritt

Aktion

1

Wählen Sie in der Baumstruktur der Geräte oder der POUs die Option Objekt hinzufügen > POU... im Kontextmenü aus.

Ergebnis: Das Dialogfeld Aufruf hinzufügen wird angezeigt.

2

Geben Sie einen Namen für Ihren Funktionsbaustein ein.

3

Wählen Sie Funktionsbaustein aus.

4

Aktivieren Sie das Kontrollkästchen Implementieren.

5

Klicken Sie auf die Durchsuchen-Schaltfläche neben dem Eingabefeld, um die Eingabehilfe zu öffnen.

6

Wählen Sie Kategorien > Schnittstellen > ROB > Robotic > Konfiguration > IF_ExternalPositionSource aus.

7

Bestätigen Sie mit OK.

Ergebnis: Das Dialogfeld Aufruf hinzufügen wird angezeigt.

8

Klicken Sie auf Hinzufügen.

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:

Verwenden von ExternalPositionSource

Schritt

Aktion

1

Fügen Sie eine Instanz des von Ihnen erstellten („Erstellen von ExternalPositionSource“) Funktionsbausteins hinzu.

VAR
fbExternalPositionSource : FB_ExternalPositionSource;
END_VAR

2

Übergeben Sie diese Instanz an den Roboter durch Aufruf der Methode ExternalPositionSource(…) in ifRobotConfiguration.ifAdvanced:

fbRobot.ifConfiguration.ifAdvanced.ExternalpositionSource(
                 i_ifSource := fbExternalPositionSource,
                 q_etDiag    => etDiag,
                 q_etDiagExt => etDiagExt,
                 q_sMsg      => sMsg;

Wenn sich der Roboter im Automatikmodus befindet (FB_Robot.xEnable = TRUE), wird die Methode jetzt in jedem Sercos-Zyklus zum Auslesen der Positionen aufgerufen.

Prüfen von RefPositions

Zur Prüfung der an den Roboter übergebenen RefPositions stehen mehrere Möglichkeiten zur Auswahl:

Prüfung

Beschreibung

Die Komponente muss konfiguriert sein.

  • Es kann keine RefPosition für Y geschrieben werden, wenn ein 2D-Roboter (z. B. Delta2Ax) mit der Arbeitsebene X/Z konfiguriert ist.

  • Es kann keine RefPosition für eine nicht konfigurierte Hilfsachse geschrieben werden.

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.

  • Der Roboter kann nicht gestartet werden, wenn sich das TCP außerhalb des Arbeitsbereichs befindet, weder über einen Warm- noch über einen Kaltstart.

  • Wenn die Verfahrbewegung den Roboter außerhalb des Arbeitsbereichs führen würde, wird ein Halt mit Standard-Bewegungsparameter ausgelöst.

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.

Verhalten eines Kaltstarts mit ExternalPositionSource

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:

  • FB_RoboticModule: Senden Sie den Modulbefehl ET_Cmd.Auto.

  • FB_Robot: Setzen Sie die Eigenschaft xEnable auf TRUE.

3

Prüfen Sie die Rückmeldung, wenn ifFeedback.xOnPath = TRUE.

4

Starten Sie den Roboter:

  • FB_RoboticModule: Senden Sie den Modulbefehl ET_Cmd.Start.

  • FB_Robot: Setzen Sie die Eigenschaft xStart auf TRUE.

Ergebnis: Sie können die externen Positionen versetzen und der Roboter folgt.

Verhalten eines Warmstarts mit ExternalPositionSource

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.

Verhalten des Warmstarts Feedback

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.

Verwenden einer zusätzlichen / benutzerdefinierten Transformation

Die folgenden Transformationen können verwendet werden, selbst wenn ExternalPositionSource konfiguriert wurde.

  • IF_RobotConfiguration.User3Ax(…)

  • IF_RobotConfigurationAdvanced.AdditionalTransformationTCP(…)

  • IF_RobotConfigurationAdvanced.AdditionalTransformationAxes(…)

Kombination mit Standard-Fahrbefehlen

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.

Verhalten von Stop

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(…)

Verhalten von EmergencyStop

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(…)

Stopp-Verhalten bei Verwendung von RoboticModule

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.

Verhalten der Rückmeldung EstimatedStopPosition

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.

Verhalten des Arbeitsbereichs der Roboter von Schneider Electric

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.

Verhalten einer periodischen Hilfsachse

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.

HINWEIS: Die Verwendung einer kürzeren Periode für die externe Positionsquelle ist nicht möglich.

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.