Skip to main content

Kundenspezifische Kinematiken

Sehen Sie hierzu das Beispielprojekt CustomKinematics_Implementation.project und die Bibliothek CustomKinematics.library im Installationsverzeichnis von CODESYS unter ..\CODESYS SoftMotion\Examples.

Dieses Beispiel beschreibt, wie Sie eine Bibliothek mit einer benutzerdefinierten kinematischen Transformation (Gantry3C) erstellen und wie Sie diese Bibliothek in einem Projekt zur Steuerung des Roboters verwenden.

Die kinematischen Transformation ‚Gantry3C‘ besteht aus 3 Linearachsen (X, Y und Z), die einen Werkzeugkopf bewegen. Der Werkzeugkopf besteht aus einer zusätzlichen Achse und einem darauf montierten Werkzeug. Der Werkzeugkopf kann um die Z-Achse gedreht werden.

_sm_img_custom_kinematik.png

1. Erstellen eines neuen Bibliotheksprojekts

Erstellen Sie ein neues Projekt mit der Bibliotheksvorlage Leere Bibliothek.

_sm_img_create_empty_project.png

2. Hinzufügen eines Bibliothekverwalters

Fügen Sie einen Bibliotheksverwalter zur Ansicht POU hinzu. Fügen Sie dem Bibliotheksverwalter die Bibliotheken SM3_Transformation, SM3_Math und SM3_Error hinzu.

3. Erstellen des Funktionsbausteins Gantry3C

Dieser Funktionsbaustein implementiert die Schnittstellen MC_KIN_REF_SM3 und ISMKinematicsWithInfo2 aus der Bibliothek SM3_Transformation. Sie können für jede Achse einen Offset als Eingabe definieren. Dieser Offset wird vor der Vorwärtstransformation subtrahiert und nach der inversen Transformation addiert.

_sm_img_fb_gantry3c.png

Beispiel für Gantry3C mit zwei entkoppelten Kinematiken und KinCoupled:

FUNCTION_BLOCK Custom_Kin_Gantry3 IMPLEMENTS ISMPositionKinematics
FUNCTION_BLOCK Custom_Kin_CAxis IMPLEMENTS ISMOrientationKinematics

FUNCTION_BLOCK Custom_Kin_Gantry3C EXTENDS Kin_Coupled

Stellen Sie Custom_Kin_Gantry3 und Custom_Kin_CAxis als Eingänge für den Funktionsbaustein Kin_Coupled während der Initialisierung zur Verfügung. Jetzt wird Custom_Kin_Gantry3C zu einer gekoppelten Kinematik, die die Positionier- und Orientierungskinematik kombiniert.

4. Implementieren der Methoden der Schnittstelle MC_KIN_REF_SM3 und der Eigenschaft NumAxes4

AxesToCartesian: Vorwärtskinematik: Berechnung der Position und Orientierung aus den Achswerten.

CartesianToAxes: Inverse Kinematik: Berechnung der Achswerte aus Position und Orientierung.

NumAxes: Anzahl der Achsen der Kinematik

_sm_img_cartesian_to_axes.png
_sm_img_axes_to_cartesian.png
_sm_img_gantry3c_methods.png

5. Implementieren der Methoden der Schnittstellen ISMKinematicsWithInfo2 und ISMKinematicsWithInfo

GetAxisProperties: Eigenschaften wie Achsentyp. Die Grenzen für jede Achse können definiert werden.

GetKinematicsName: Name der Kinematik

IsSingularity: Kann für diese Kinematik ignoriert werden

_sm_img_get_axis_properties.png
_sm_img_get_kinematics_name.png

6. Ausfüllen der Projektinformationen

_sm_img_project_information.png

7. Überprüfen der Bibliothek auf Compilerfehler

Zur Überprüfung er Bibliothek rufen Sie den Befehl ErstellenAlle Poolobjekte prüfen auf.

8. Erstellung der Beschreibung im Achsgruppenkonfigurator

Wenn die POU das Attribut sm_kin_libdoc besitzt, wird der im Funktionsbaustein angegebene Kommentar im Achsgruppenkonfigurator als Beschreibung der Kinematik verwendet. Die Beschreibung erfolgt in Restructured Text.

_sm_img_restructured_text.png
_sm_img_axis_group_description.png
_sm_img_axis_group_configurator.png
Prozedur. Gehen Sie folgendermaßen vor, um die Beschreibung der Kinematik aus den FB-Kommentaren im Achsengruppeneditor zu erzeugen:
  1. Fügen Sie das Attribut sm_kin_libdoc hinzu, wie in der Abbildung oben gezeigt.

  2. Fügen Sie im Projektinformationsdialog die erforderlichen Projekteigenschaften DocFormat und DocLanguages für die Bibliotheksdokumentation hinzu.

    Ergebnis:

    _sm_img_project_information_libdoc.png
  3. Stellen Sie sicher, dass das Installationsverzeichnis von CODESYS die ausführbare Datei libdoc.exe enthält (Verzeichnis ...\DocScripting\3.5.xx.0\).

  4. Laden Sie den 32-bit wkhtmltox-Konverter mit Version 0.12.5 oder niedriger von https://wkhtmltopdf.org/downloads.html herunter. Entpacken Sie die Datei wkhtmltox.dll und fügen Sie sie im CODESYS-Installationsverzeichnis unter ...\DocScripting\3.5.xx.0\bin ein.

    Wichtig

    Da die wkhtmltox.dll ab der Version 0.12.6 standardmäßig Bilder nicht mehr unterstützt, müssen Sie die Version 0.12.5 oder älter verwenden.

  5. Erzeugen Sie unter Windows die Systemvariable LIBDOC_CODESYS. Setzen Sie den Wert auf den Dateipfad von CODESYS.exe. Beachten Sie, dass der Pfadname und der Profilname in doppelten Anführungsstrichen steht.

    Ergebnis:

    _sm_img_libdoc_path.png
  6. Speichern, schließen und öffnen Sie das Bibliotheksprojekt neu.

  7. Wählen Sie den Befehl Datei → Projekt als übersetzte Bibliothek speichern.

    Die übersetzte Bibliothek wird später in dem Projekt installiert, das diese Kinematik verwendet.

Verwenden der Bibliothek in einem Projekt (CustomKinematics_Implementation.project)

Das Projekt zeigt ein Beispiel, wie Sie die im vorigen Abschnitt erstellte Kinematik durch Joggen oder Kommandieren einer Bewegung verwenden und steuern können.

  1. Erstellen Sie ein CODESYS-Standardprojekt mit der Steuerung CODESYS SoftMotion Win.

  2. Öffnen Sie den Bibliotheksverwalter und installieren Sie die Bibliothek CustomKinematics.compiled-library (erstellt im vorherigen Abschnitt), die die Kinematik Gantry3C enthält. Fügen Sie die Bibliothek dem Bibliotheksverwalter hinzu.

  3. Fügen Sie ein Achsgruppenobjekt hinzu und wählen Sie die Kinematik KinCustom.Gantry3C.

    Ergebnis:

    _sm_img_select_kinematics.png
  4. Fügen Sie im Gerätebaum dem Achsenpool von SoftMotion General Axis Pool 4 virtuelle Achsen hinzu. (DriveX, Y, Z und C)

  5. Öffnen Sie den Achsengruppenkonfigurator und ordnen Sie im Abschnitt Achszuordnung die Achsen ihren jeweiligen Feldern zu.

    Ergebnis:

    _sm_img_axis_mapping.png
  6. Das Programm Prg_Visu ist das Hauptprogramm, das die Achsengruppe kontrolliert. Wenn die Anwendung gestartet wird, schaltet das Prg_Visu die Achsgruppe ein und aktiviert sie. Außerdem ruft es alle notwendigen Funktionsbausteine auf, um die Achsgruppe zu steuern (Jogging, lineare und PTP-Bewegungen). Alle diese Bewegungen können über die angeschlossene Visualisierung gesteuert werden.

    Ergebnis:

    _sm_img_prg_visu.png
  7. Funktionsbaustein Jog: Dieser Funktionsbaustein kombiniert das Joggen sowohl im Achsraum als auch im kartesischen Raum. Er verwendet zwei Instanzen von SMC_GroupJog2. Eine für den Achsraum und die andere für den kartesischen Raum. Dieser Funktionsbaustein kann zusammen mit den Visualisierungsvorlagen V_RobotPosition_axes und V_RobotPosition_cart_Jog verwendet werden, um beliebige Kinematiken im kartesischen und Achsenraum zu joggen.

    Ergebnis:

    _sm_img_fb_jog.png
    _sm_img_fb_jog2.png
  8. FB SMC_TRAFOF_Gantry3C: Dieser Funktionsbaustein transformiert die Eingangsachsenwerte einer Gantry3C-Kinematik in ihre jeweiligen TCP-Werte. Zusätzlich werden die Achsenwerte normalisiert, damit Sie sie zusammen mit der Visualisierungsvorlage TRAFOF_Gantry3C_YZ zur Visualisierung der Bewegungen der Kinematik verwenden können.

    Ergebnis:

    _sm_img_trafof_gantry3c.png
  9. Kompilieren und starten Sie die Anwendung. Öffnen Sie die Visualisierung. Sie können den Roboter sowohl im Achsraum als auch im kartesischen Raum joggen. Es sind auch Visualisierungsvorlagen vorhanden, um eine lineare oder eine PTP-Bewegung zu kommandieren.

    Ergebnis:

    _sm_img_custom_kinematics_visu.png

Tipp

Das hier beschriebene Beispiel betrachtet die Positionier- und Orientierungsachsen in einem gemeinsamen Funktionsbaustein. Viele Kinematiken können sich aus zwei entkoppelten Teilkinematiken zusammensetzen: Einer Positionierkinematik (Delta, Portale,…) und einer Orientierungskinematik (Werkzeuge wie C-Achse, Wrist2, Wrist3, …). Die beiden Kinematiken sind am so genannten ‚Flanschpunkt‘, dem TCP der Positionierkinematik, miteinander verbunden. Die Orientierungskinematik zeichnet sich dadurch aus, dass sie in der Lage ist, den Vektor vom Flanschpunkt zum TCP der gekoppelten Kinematik zu berechnen. Die Berechnung erfolgt nur mit der Orientierung dieses TCP (also unabhängig von der Positionierkinematik oder unabhängig von der Orientierung des Flanschpunktes). Die Positionierkinematik wiederum muss in der Lage sein, ihre Achsenpositionen nur aus der Position des Flanschpunktes zu bestimmen. Sie darf nicht von der Orientierung des Flanschpunktes abhängen.

In diesem Fall können Sie auf Schnittstellen wie ISMPositionKinematics oder ISMOrientationKinematics zurückgreifen. Um diese Schnittstellen zu implementieren, definieren Sie einen Funktionsbaustein, der ISMPositionKinematics implementiert und einen weiteren Funktionsbaustein, der ISMOrientationKinematics implementiert. Definieren Sie schließlich einen Funktionsbaustein, der den Funktionsbaustein Kin_Coupled (aus SM3_Transformation) mit den zuvor definierten Funktionsbausteinen als Eingänge erweitert.

Für weitere Informationen siehe: Erstellen eigener Kinematiken