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.

1. Erstellen eines neuen Bibliotheksprojekts
Erstellen Sie ein neues Projekt mit der Bibliotheksvorlage Leere Bibliothek.

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.

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



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


6. Ausfüllen der Projektinformationen

7. Überprüfen der Bibliothek auf Compilerfehler
Zur Überprüfung er Bibliothek rufen Sie den Befehl Erstellen → Alle 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.



Fügen Sie das Attribut
sm_kin_libdoc
hinzu, wie in der Abbildung oben gezeigt.Fügen Sie im Projektinformationsdialog die erforderlichen Projekteigenschaften DocFormat und DocLanguages für die Bibliotheksdokumentation hinzu.
Ergebnis:
Stellen Sie sicher, dass das Installationsverzeichnis von CODESYS die ausführbare Datei
libdoc.exe
enthält (Verzeichnis...\DocScripting\3.5.xx.0
\).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.Erzeugen Sie unter Windows die Systemvariable
LIBDOC_CODESYS
. Setzen Sie den Wert auf den Dateipfad vonCODESYS.exe
. Beachten Sie, dass der Pfadname und der Profilname in doppelten Anführungsstrichen steht.Ergebnis:
Speichern, schließen und öffnen Sie das Bibliotheksprojekt neu.
Wählen Sie den Befehl
.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.
Erstellen Sie ein CODESYS-Standardprojekt mit der Steuerung CODESYS SoftMotion Win.
Ö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.Fügen Sie ein Achsgruppenobjekt hinzu und wählen Sie die Kinematik KinCustom.Gantry3C.
Ergebnis:
Fügen Sie im Gerätebaum dem Achsenpool von SoftMotion General Axis Pool 4 virtuelle Achsen hinzu. (DriveX, Y, Z und C)
Öffnen Sie den Achsengruppenkonfigurator und ordnen Sie im Abschnitt Achszuordnung die Achsen ihren jeweiligen Feldern zu.
Ergebnis:
Das Programm
Prg_Visu
ist das Hauptprogramm, das die Achsengruppe kontrolliert. Wenn die Anwendung gestartet wird, schaltet dasPrg_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:
Funktionsbaustein
Jog
: Dieser Funktionsbaustein kombiniert das Joggen sowohl im Achsraum als auch im kartesischen Raum. Er verwendet zwei Instanzen vonSMC_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:
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 VisualisierungsvorlageTRAFOF_Gantry3C_YZ
zur Visualisierung der Bewegungen der Kinematik verwenden können.Ergebnis:
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:
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