13. Erweiterungsachsen

13.1. Parameter für 485-Erweiterungsachse einstellen

1/**
2* @brief Stellt die Parameter für eine 485-Erweiterungsachse ein.
3* @param [in] servoId Servoantriebs-ID, Bereich [1-16], entspricht der Slave-ID.
4* @param [in] param Parameter der 485-Erweiterungsachse.
5* @return Fehlercode.
6*/
7int AuxServoSetParam(int servoId, Axis485Param param);

13.2. Parameter der 485-Erweiterungsachse abrufen

1/**
2* @brief Gibt die Konfigurationsparameter einer 485-Erweiterungsachse zurück.
3* @param [in] servoId Servoantriebs-ID, Bereich [1-16], entspricht der Slave-ID.
4* @param [out] param Parameter der 485-Erweiterungsachse.
5* @return Fehlercode.
6*/
7int AuxServoGetParam(int servoId, Axis485Param param);

13.3. Aktivierung/Deaktivierung der 485-Erweiterungsachse einstellen

1/**
2* @brief Stellt die Aktivierung/Deaktivierung der 485-Erweiterungsachse ein.
3* @param [in] servoId Servoantriebs-ID, Bereich [1-16], entspricht der Slave-ID.
4* @param [in] status Aktivierungsstatus, 0-deaktivieren, 1-aktivieren.
5* @return Fehlercode.
6*/
7int AuxServoEnable(int servoId, int status);

13.4. Steuerungsmodus der 485-Erweiterungsachse einstellen

1/**
2* @brief Stellt den Steuerungsmodus der 485-Erweiterungsachse ein.
3* @param [in] servoId Servoantriebs-ID, Bereich [1-16], entspricht der Slave-ID.
4* @param [in] mode Steuerungsmodus, 0-Positionsmodus, 1-Geschwindigkeitsmodus.
5* @return Fehlercode.
6*/
7int AuxServoSetControlMode(int servoId, int mode);

13.5. Zielposition der 485-Erweiterungsachse einstellen (Positionsmodus)

1/**
2* @brief Stellt die Zielposition der 485-Erweiterungsachse ein (Positionsmodus).
3* @param [in] servoId Servoantriebs-ID, Bereich [1-16], entspricht der Slave-ID.
4* @param [in] pos Zielposition, mm oder °.
5* @param [in] speed Zielgeschwindigkeit, mm/s oder °/s.
6* @param [in] acc Beschleunigungsprozentsatz [0-100].
7* @return Fehlercode.
8*/
9int AuxServoSetTargetPos(int servoId, double pos, double speed, double acc);

13.6. Zieldrehmoment der 485-Erweiterungsachse einstellen (Drehmomentmodus) - noch nicht freigegeben

1/**
2* @brief Stellt das Zieldrehmoment der 485-Erweiterungsachse ein (Drehmomentmodus) - noch nicht freigegeben.
3* @param [in] servoId Servoantriebs-ID, Bereich [1-16], entspricht der Slave-ID.
4* @param [in] torque Zieldrehmoment, Nm.
5* @return Fehlercode.
6*/
7int AuxServoSetTargetTorque(int servoId, double torque);

13.7. Referenzpunktfahrt der 485-Erweiterungsachse einstellen

 1/**
 2* @brief Stellt die Referenzpunktfahrt der 485-Erweiterungsachse ein.
 3* @param [in] servoId Servoantriebs-ID, Bereich [1-16], entspricht der Slave-ID.
 4* @param [in] mode Referenzpunktfahrt-Modus, 1-aktuelle Position als Nullpunkt; 2-negative Endlage als Nullpunkt; 3-positive Endlage als Nullpunkt.
 5* @param [in] searchVel Suchgeschwindigkeit, mm/s oder °/s.
 6* @param [in] latchVel Einrastgeschwindigkeit, mm/s oder °/s.
 7* @param [in] acc Beschleunigungsprozentsatz [0-100].
 8* @return Fehlercode.
 9*/
10int AuxServoHoming(int servoId, int mode, double searchVel, double latchVel, double acc);

13.8. Fehlerinformationen der 485-Erweiterungsachse löschen

1/**
2* @brief Löscht Fehlerinformationen der 485-Erweiterungsachse.
3* @param [in] servoId Servoantriebs-ID, Bereich [1-16], entspricht der Slave-ID.
4* @return Fehlercode.
5*/
6int AuxServoClearError(int servoId);

13.9. Servostatus der 485-Erweiterungsachse abrufen

 1/**
 2* @brief Gibt den Servostatus der 485-Erweiterungsachse zurück.
 3* @param [in] servoId Servoantriebs-ID, Bereich [1-16], entspricht der Slave-ID.
 4* @param [out] servoErrCode Fehlercode des Servoantriebs.
 5* @param [out] servoState Status des Servoantriebs. Bit0: 0-nicht aktiviert; 1-aktiviert. Bit1: 0-nicht in Bewegung; 1-in Bewegung. Bit4: 0-Positionierung nicht abgeschlossen; 1-Positionierung abgeschlossen. Bit5: 0-Referenzpunktfahrt nicht abgeschlossen; 1-Referenzpunktfahrt abgeschlossen.
 6* @param [out] servoPos Aktuelle Position des Servos mm oder °.
 7* @param [out] servoSpeed Aktuelle Geschwindigkeit des Servos mm/s oder °/s.
 8* @param [out] servoTorque Aktuelles Drehmoment des Servos Nm.
 9* @return Fehlercode.
10*/
11int AuxServoGetStatus(int servoId, int[] servoErrCode, int[] servoState, double[] servoPos, double[] servoSpeed, double[] servoTorque);

13.10. Zielgeschwindigkeit der 485-Erweiterungsachse einstellen (Geschwindigkeitsmodus)

1/**
2* @brief Stellt die Zielgeschwindigkeit der 485-Erweiterungsachse ein (Geschwindigkeitsmodus).
3* @param [in] servoId Servoantriebs-ID, Bereich [1-16], entspricht der Slave-ID.
4* @param [in] speed Zielgeschwindigkeit, mm/s oder °/s.
5* @param [in] acc Beschleunigungsprozentsatz [0-100].
6* @return Fehlercode.
7*/
8int AuxServoSetTargetSpeed(int servoId, double speed, double acc);

13.11. Achsnummer der 485-Erweiterungsachse in der Statusrückmeldung einstellen

1/**
2* @brief Stellt die Achsnummer der 485-Erweiterungsachse in der Statusrückmeldung ein.
3* @param [in] servoId Servoantriebs-ID, Bereich [1-16], entspricht der Slave-ID.
4* @return Fehlercode.
5*/
6int AuxServosetStatusID(int servoId);

13.12. Bewegungsbeschleunigung und -verzögerung der 485-Erweiterungsachse einstellen

1/**
2* @brief Stellt die Bewegungsbeschleunigung und -verzögerung der 485-Erweiterungsachse ein.
3* @param [in] acc Bewegungsbeschleunigung der 485-Erweiterungsachse.
4* @param [in] dec Bewegungsverzögerung der 485-Erweiterungsachse.
5* @return Fehlercode.
6*/
7int AuxServoSetAcc(double acc, double dec);

13.13. Not-Halt-Beschleunigung und -Verzögerung der 485-Erweiterungsachse einstellen

1/**
2* @brief Stellt die Not-Halt-Beschleunigung und -Verzögerung der 485-Erweiterungsachse ein.
3* @param [in] acc Not-Halt-Beschleunigung der 485-Erweiterungsachse.
4* @param [in] dec Not-Halt-Verzögerung der 485-Erweiterungsachse.
5* @return Fehlercode.
6*/
7int AuxServoSetEmergencyStopAcc(double acc, double dec);

13.14. Bewegungsbeschleunigung und -verzögerung der 485-Erweiterungsachse abrufen

1/**
2* @brief Gibt die Bewegungsbeschleunigung und -verzögerung der 485-Erweiterungsachse zurück.
3* @return List[0]: Fehlercode; List[1]: Bewegungsbeschleunigung der 485-Erweiterungsachse; List[2]: Bewegungsverzögerung der 485-Erweiterungsachse.
4*/
5List<Number> AuxServoGetAcc();

13.15. Not-Halt-Beschleunigung und -Verzögerung der 485-Erweiterungsachse abrufen

1/**
2* @brief Gibt die Not-Halt-Beschleunigung und -Verzögerung der 485-Erweiterungsachse zurück.
3* @return List[0]: Fehlercode; List[1]: Not-Halt-Beschleunigung der 485-Erweiterungsachse; List[2]: Not-Halt-Verzögerung der 485-Erweiterungsachse.
4*/
5List<Number> AuxServoGetEmergencyStopAcc();

13.16. Codebeispiel zur Steuerung einer Erweiterungsachse

 1public static int Test485Auxservo(Robot robot)
 2{
 3    Axis485Param ax=new Axis485Param(1, 1, 1, 131072, 15.45);
 4    int retval = robot.AuxServoSetParam(1, ax);
 5
 6    Axis485Param ax2=new Axis485Param();
 7    retval = robot.AuxServoGetParam(1, ax2);
 8
 9    ax.servoCompany=10;
10    ax.servoModel=11;
11    ax.servoSoftVersion=12;
12    ax.servoResolution=13;
13    ax.axisMechTransRatio=14;
14
15    retval = robot.AuxServoSetParam(1, ax);
16
17    retval = robot.AuxServoGetParam(1,ax2);
18
19    ax.servoCompany=1;
20    ax.servoModel=1;
21    ax.servoSoftVersion=1;
22    ax.servoResolution=131072;
23    ax.axisMechTransRatio=36;
24
25    retval = robot.AuxServoSetParam(1, ax);
26    robot.Sleep(3000);
27
28    robot.AuxServoSetAcc(3000, 3000);
29    robot.AuxServoSetEmergencyStopAcc(5000, 5000);
30    robot.Sleep(1000);
31    double emagacc = 0, acc = 0;
32    double emagdec = 0, dec = 0;
33
34    List<Number> aux=new ArrayList<>();
35
36    aux=robot.AuxServoGetEmergencyStopAcc();
37    aux=robot.AuxServoGetAcc();
38
39    robot.AuxServoSetControlMode(1, 0);
40    robot.Sleep(2000);
41
42    retval = robot.AuxServoEnable(1, 0);
43    robot.Sleep(1000);
44    int[] servoerrcode =new int[]{0};
45    int[] servoErrCode=new int[]{0};
46    int[] servoState=new int[]{0};
47    double[] servoPos=new double[]{0};
48    double[] servoSpeed=new double[]{0};
49    double[] servoTorque=new double[]{0};
50    retval = robot.AuxServoGetStatus(1, servoErrCode, servoState, servoPos, servoSpeed, servoTorque);
51    robot.Sleep(1000);
52
53    retval = robot.AuxServoEnable(1, 1);
54    robot.Sleep(1000);
55    retval = robot.AuxServoGetStatus(1, servoErrCode, servoState, servoPos, servoSpeed, servoTorque);
56    robot.Sleep(1000);
57
58    retval = robot.AuxServoHoming(1, 1, 5, 1,100);
59    robot.Sleep(3000);
60
61    retval = robot.AuxServoSetTargetPos(1, 200, 30,100);
62    robot.Sleep(1000);
63    retval = robot.AuxServoGetStatus(1, servoErrCode, servoState, servoPos, servoSpeed, servoTorque);
64    robot.Sleep(8000);
65
66
67    robot.AuxServoSetControlMode(1, 1);
68    robot.Sleep(2000);
69
70    robot.AuxServoEnable(1, 0);
71    robot.Sleep(1000);
72    robot.AuxServoEnable(1, 1);
73    robot.Sleep(1000);
74    robot.AuxServoSetTargetSpeed(1, 100, 80);
75
76    robot.Sleep(5000);
77    robot.AuxServoSetTargetSpeed(1, 0, 80);
78
79    robot.CloseRPC();
80    return 0;
81}

13.17. UDP-Kommunikationsparameter für Erweiterungsachse konfigurieren

Geändert in Version Java: SDK-v1.0.5-3.8.2

1/**
2* @brief Konfiguriert die UDP-Kommunikationsparameter für die Erweiterungsachse.
3* @param [in] param Kommunikationsparameter.
4* @return Fehlercode.
5*/
6int ExtDevSetUDPComParam(UDPComParam param);

13.18. UDP-Kommunikationsparameter für Erweiterungsachse abrufen

1/**
2* @brief Gibt die UDP-Kommunikationsparameter für die Erweiterungsachse zurück.
3* @param [out] param Kommunikationsparameter.
4* @return Fehlercode.
5*/
6int ExtDevGetUDPComParam(UDPComParam param);

13.19. UDP-Kommunikation laden

1/**
2* @brief Lädt die UDP-Kommunikation.
3* @return Fehlercode.
4*/
5int ExtDevLoadUDPDriver();

13.20. UDP-Kommunikation entladen

1/**
2* @brief Entlädt die UDP-Kommunikation.
3* @return Fehlercode.
4*/
5int ExtDevUnloadUDPDriver();

13.21. Verbindung nach abnormaler UDP-Kommunikationsunterbrechung wiederherstellen

1/**
2* @brief Stellt die Verbindung nach einer abnormalen UDP-Kommunikationsunterbrechung wieder her.
3* @return Fehlercode.
4*/
5int ExtDevUDPClientComReset();

13.22. Kommunikation nach abnormaler UDP-Kommunikationsunterbrechung schließen

1/**
2* @brief Schließt die Kommunikation nach einer abnormalen UDP-Kommunikationsunterbrechung.
3* @return Fehlercode.
4*/
5int ExtDevUDPClientComClose();

13.23. Parameter für UDP-Erweiterungsachse konfigurieren

 1/**
 2* @brief Konfiguriert die Parameter einer UDP-Erweiterungsachse.
 3* @param [in] axisID Achsnummer.
 4* @param [in] axisType Erweiterungsachsentyp 0-Translation; 1-Rotation.
 5* @param [in] axisDirection Richtung der Erweiterungsachse 0-positive Richtung; 1-negative Richtung.
 6* @param [in] axisMax Maximale Position der Achse mm.
 7* @param [in] axisMin Minimale Position der Achse mm.
 8* @param [in] axisVel Geschwindigkeit mm/s.
 9* @param [in] axisAcc Beschleunigung mm/s².
10* @param [in] axisLead Spindelsteigung mm.
11* @param [in] encResolution Encoderauflösung.
12* @param [in] axisOffect Versatz des Schweißnahtstartpunkts zur Erweiterungsachse.
13* @param [in] axisCompany Antriebshersteller 1-Hechuan; 2-Inovance; 3-Panasonic.
14* @param [in] axisModel Antriebsmodell 1-Hechuan-SV-XD3EA040L-E, 2-Hechuan-SV-X2EA150A-A, 1-Inovance-SV620PT5R4I, 1-Panasonic-MADLN15SG, 2-Panasonic-MSDLN25SG, 3-Panasonic-MCDLN35SG.
15* @param [in] axisEncType Encodertyp 0-inkremental; 1-absolut.
16* @return Fehlercode.
17*/
18int ExtAxisParamConfig(int axisID, int axisType, int axisDirection, double axisMax, double axisMin, double axisVel, double axisAcc, double axisLead, int encResolution, double axisOffect, int axisCompany, int axisModel, int axisEncType);

13.24. Einbauposition der Erweiterungsachse einstellen

1/**
2* @brief Stellt die Einbauposition der Erweiterungsachse ein.
3* @param [in] installType 0-Roboter auf der externen Achse montiert, 1-Roboter außerhalb der externen Achse montiert.
4* @return Fehlercode.
5*/
6int SetRobotPosToAxis(int installType);

13.25. DH-Parameter des Erweiterungsachsensystems einstellen

 1/**
 2* @brief Stellt die DH-Parameter des Erweiterungsachsensystems ein.
 3* @param [in] axisConfig Konfiguration der externen Achse, 0-Linearführung mit einem Freiheitsgrad, 1-L-förmiger Positionierer mit zwei Freiheitsgraden, 2-drei Freiheitsgrade, 3-vier Freiheitsgrade, 4-Positionierer mit einem Freiheitsgrad.
 4* @param [in] axisDHd1 DH-Parameter d1 der externen Achse mm.
 5* @param [in] axisDHd2 DH-Parameter d2 der externen Achse mm.
 6* @param [in] axisDHd3 DH-Parameter d3 der externen Achse mm.
 7* @param [in] axisDHd4 DH-Parameter d4 der externen Achse mm.
 8* @param [in] axisDHa1 DH-Parameter a1 der externen Achse mm.
 9* @param [in] axisDHa2 DH-Parameter a2 der externen Achse mm.
10* @param [in] axisDHa3 DH-Parameter a3 der externen Achse mm.
11* @param [in] axisDHa4 DH-Parameter a4 der externen Achse mm.
12* @return Fehlercode.
13*/
14int SetAxisDHParaConfig(int axisConfig, double axisDHd1, double axisDHd2, double axisDHd3, double axisDHd4, double axisDHa1, double axisDHa2, double axisDHa3, double axisDHa4);

13.26. UDP-Erweiterungsachse aktivieren

1/**
2* @brief Aktiviert/Deaktiviert die UDP-Erweiterungsachse.
3* @param [in] axisID Achsnummer [1-4].
4* @param [in] status 0-deaktivieren; 1-aktivieren.
5* @return Fehlercode.
6*/
7int ExtAxisServoOn(int axisID, int status);

13.27. Referenzpunktfahrt der UDP-Erweiterungsachse einstellen

1/**
2* @brief Stellt die Referenzpunktfahrt der UDP-Erweiterungsachse ein.
3* @param [in] axisID Achsnummer [1-4].
4* @param [in] mode Referenzpunktfahrt-Modus 0-aktuelle Position als Nullpunkt, 1-negative Endlage als Nullpunkt, 2-positive Endlage als Nullpunkt.
5* @param [in] searchVel Suchgeschwindigkeit (mm/s).
6* @param [in] latchVel Einrastgeschwindigkeit (mm/s).
7* @return Fehlercode.
8*/
9int ExtAxisSetHoming(int axisID, int mode, double searchVel, double latchVel);

13.28. Tippbetrieb (Jog) der UDP-Erweiterungsachse starten

 1/**
 2* @brief Startet den Tippbetrieb (Jog) der UDP-Erweiterungsachse.
 3* @param [in] axisID Achsnummer [1-4].
 4* @param [in] direction Drehrichtung 0-negativ; 1-positiv.
 5* @param [in] vel Geschwindigkeit (mm/s).
 6* @param [in] acc Beschleunigung (mm/s²).
 7* @param [in] maxDistance Maximale Tippdistanz.
 8* @return Fehlercode.
 9*/
10int ExtAxisStartJog(int axisID, int direction, double vel, double acc, double maxDistance);

13.29. Tippbetrieb (Jog) der UDP-Erweiterungsachse stoppen

1/**
2* @brief Stoppt den Tippbetrieb (Jog) der UDP-Erweiterungsachse.
3* @param [in] axisID Achsnummer [1-4].
4* @return Fehlercode.
5*/
6int ExtAxisStopJog(int axisID);

13.30. Codebeispiel für Konfiguration und Tippbetrieb einer UDP-Erweiterungsachse

 1public static int TestUDPAxis(Robot robot)//UDP
 2{
 3    UDPComParam para1=new UDPComParam("192.168.58.88", 2021, 2, 100, 3, 200, 1, 100, 5, 1);
 4    int rtn = robot.ExtDevSetUDPComParam(para1);
 5    String ip = ""; int port = 0; int period = 0; int lossPkgTime = 0; int lossPkgNum = 0; int disconnectTime = 0; int reconnectEnable = 0; int reconnectPeriod = 0; int reconnectNum = 0;
 6    UDPComParam para2=new UDPComParam(ip, port, period, lossPkgTime, lossPkgNum, disconnectTime, reconnectEnable, reconnectPeriod, reconnectNum,0);
 7    rtn = robot.ExtDevGetUDPComParam(para2);
 8
 9    robot.ExtDevLoadUDPDriver();
10
11    rtn = robot.ExtAxisServoOn(1, 1);
12    rtn = robot.ExtAxisServoOn(2, 1);
13    robot.Sleep(3000);
14
15    robot.ExtAxisSetHoming(1, 0, 10, 2);
16    robot.Sleep(3000);
17    rtn = robot.ExtAxisSetHoming(2, 0, 10, 2);
18    robot.Sleep(4000);
19
20    rtn = robot.SetRobotPosToAxis(1);
21    rtn = robot.SetAxisDHParaConfig(10, 20, 0, 0, 0, 0, 0, 0, 0);
22    rtn = robot.ExtAxisParamConfig(1, 1, 1, 1000, -1000, 1000, 1000, 1.905, 262144, 200, 1, 0, 0);
23    rtn = robot.ExtAxisParamConfig(2, 1, 1, 1000, -1000, 1000, 1000, 4.444, 262144, 200, 1, 0, 0);
24
25    robot.Sleep(4000);
26    robot.ExtAxisStartJog(1, 0, 10, 10, 30);
27    robot.Sleep(4000);
28    robot.ExtAxisStopJog(1);
29    robot.Sleep(4000);
30    robot.ExtAxisServoOn(1, 0);
31
32    robot.Sleep(4000);
33    robot.ExtAxisStartJog(2, 0, 10, 10, 30);
34    robot.Sleep(4000);
35    robot.ExtAxisStopJog(2);
36    robot.Sleep(4000);
37    robot.ExtAxisServoOn(2, 0);
38    robot.Sleep(4000);
39    robot.ExtDevUnloadUDPDriver();
40
41    return 0;
42}

13.31. Referenzpunkte für das Erweiterungsachsen-Koordinatensystem einstellen - Vier-Punkt-Methode

1/**
2* @brief Stellt Referenzpunkte für das Erweiterungsachsen-Koordinatensystem ein - Vier-Punkt-Methode.
3* @param [in] pointNum Punktnummer [1-4].
4* @return Fehlercode.
5*/
6int ExtAxisSetRefPoint(int pointNum);

13.32. Erweiterungsachsen-Koordinatensystem berechnen - Vier-Punkt-Methode

1/**
2* @brief Berechnet das Erweiterungsachsen-Koordinatensystem - Vier-Punkt-Methode.
3* @param [out] coord Koordinatenwerte.
4* @return Fehlercode.
5*/
6int ExtAxisComputeECoordSys(DescPose coord);

13.33. Referenzpunkte für das Positionierer-Koordinatensystem einstellen

1/**
2* @brief Stellt Referenzpunkte für das Positionierer-Koordinatensystem ein.
3* @param [in] pointNum Punktnummer [1-4].
4* @return Fehlercode.
5*/
6int PositionorSetRefPoint(int pointNum);

13.34. Positionierer-Koordinatensystem berechnen - Vier-Punkt-Methode

1/**
2* @brief Berechnet das Positionierer-Koordinatensystem - Vier-Punkt-Methode.
3* @param [out] coord Koordinatenwerte.
4* @return Fehlercode.
5*/
6int PositionorComputeECoordSys(DescPose coord);

13.35. Pose des Kalibrierreferenzpunkts im Positionierer-Endkoordinatensystem einstellen

1/**
2* @brief Stellt die Pose des Kalibrierreferenzpunkts im Positionierer-Endkoordinatensystem ein.
3* @param [in] pos Posenwert.
4* @return Fehlercode.
5*/
6int SetRefPointInExAxisEnd(DescPose pos);

13.36. Erweiterungsachsen-Koordinatensystem anwenden

1/**
2* @brief Wendet das Erweiterungsachsen-Koordinatensystem an.
3* @param [in] applyAxisId Erweiterungsachsennummern als Bitmaske, Bit0-Bit3 entsprechen den Achsnummern 1-4. z.B. Achsen 1 und 3 anwenden: 0b 0000 0101 = 5.
4* @param [in] axisCoordNum Nummer des Erweiterungsachsen-Koordinatensystems.
5* @param [in] coord Koordinatenwerte.
6* @param [in] calibFlag Kalibrierungsflag 0-nein, 1-ja.
7* @return Fehlercode.
8*/
9int ExtAxisActiveECoordSys(int applyAxisId, int axisCoordNum, DescPose coord, int calibFlag);

13.37. Erweiterungsachsen-Koordinatensystem abrufen

Neu in Version Java: SDK-v1.0.5-3.8.2

1/**
2* @brief Gibt das Erweiterungsachsen-Koordinatensystem zurück.
3* @param [out] coord Erweiterungsachsen-Koordinatensystem.
4* @return Fehlercode.
5*/
6int ExtAxisGetCoord(DescPose coord);

13.38. Codebeispiel für die Kalibrierung des Erweiterungsachsen-Koordinatensystems

 1public static int TestUDPAxisCalib(Robot robot)
 2{
 3    UDPComParam para1=new UDPComParam("192.168.58.88", 2021, 2, 100, 3, 200, 1, 100, 5, 1);
 4
 5    int rtn = robot.ExtDevSetUDPComParam(para1);
 6    String ip = ""; int port = 0; int period = 0; int lossPkgTime = 0; int lossPkgNum = 0; int disconnectTime = 0; int reconnectEnable = 0; int reconnectPeriod = 0; int reconnectNum = 0;
 7    UDPComParam para2=new UDPComParam(ip, port, period, lossPkgTime, lossPkgNum, disconnectTime, reconnectEnable, reconnectPeriod, reconnectNum,0);
 8
 9    rtn = robot.ExtDevGetUDPComParam(para2);
10
11    robot.ExtDevLoadUDPDriver();
12
13    rtn = robot.ExtAxisServoOn(1, 1);
14    rtn = robot.ExtAxisServoOn(2, 1);
15    robot.Sleep(4000);
16
17    rtn = robot.SetRobotPosToAxis(1);
18    rtn = robot.SetAxisDHParaConfig(1, 128.5, 206.4,  0, 0, 0, 0, 0, 0);
19    rtn = robot.ExtAxisParamConfig(1, 1, 1, 1000, -1000, 1000, 1000, 1.905, 262144, 200, 1, 0, 0);
20    rtn = robot.ExtAxisParamConfig(2, 1, 1, 1000, -1000, 1000, 1000, 4.444, 262144, 200, 1, 0, 0);
21
22    DescPose toolCoord=new DescPose(0, 0, 210, 0, 0, 0);
23    robot.SetToolCoord(1, toolCoord, 0, 0, 1, 0);
24
25    JointPos jSafe=new JointPos(115.193, -96.149, 92.489, -87.068, -89.15, -83.488);
26    JointPos j1=new JointPos(117.559, -92.624, 100.329, -96.909, -94.057, -83.488);
27    JointPos j2=new JointPos(112.239, -90.096, 99.282, -95.909, -89.824, -83.488);
28    JointPos j3=new JointPos(110.839, -83.473, 93.166, -89.22, -90.499, -83.487);
29    JointPos j4=new JointPos(107.935, -83.572, 95.424, -92.873, -87.933, -83.488);
30
31    DescPose descSafe =new DescPose(0,0,0,0,0,0);
32    DescPose desc1 = new DescPose(0,0,0,0,0,0);
33    DescPose desc2 = new DescPose(0,0,0,0,0,0);
34    DescPose desc3 = new DescPose(0,0,0,0,0,0);
35    DescPose desc4 = new DescPose(0,0,0,0,0,0);
36    ExaxisPos exaxisPos =new ExaxisPos(0,0,0,0);
37    DescPose offdese =new DescPose(0, 0, 0, 0, 0, 0);
38
39    robot.GetForwardKin(jSafe, descSafe);
40    robot.MoveJ(jSafe, descSafe, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
41    robot.Sleep(2000);
42
43    robot.GetForwardKin(j1, desc1);
44    robot.MoveJ(j1, desc1, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
45    robot.Sleep(2000);
46
47    DescPose actualTCPPos =new DescPose(0,0,0,0,0,0);
48
49    robot.GetActualTCPPose(actualTCPPos);
50    robot.SetRefPointInExAxisEnd(actualTCPPos);
51    rtn = robot.PositionorSetRefPoint(1);
52    robot.Sleep(2000);
53
54    robot.MoveJ(jSafe, descSafe, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
55    robot.ExtAxisStartJog(1, 0, 50, 50, 10);
56    robot.Sleep(1000);
57    robot.ExtAxisStartJog(2, 0, 50, 50, 10);
58    robot.Sleep(1000);
59    robot.GetForwardKin(j2, desc2);
60    rtn = robot.MoveJ(j2, desc2, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
61    rtn = robot.PositionorSetRefPoint(2);
62    robot.Sleep(2000);
63
64    robot.MoveJ(jSafe, descSafe, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
65    robot.ExtAxisStartJog(1, 0, 50, 50, 10);
66    robot.Sleep(1000);
67    robot.ExtAxisStartJog(2, 0, 50, 50, 10);
68    robot.Sleep(1000);
69    robot.GetForwardKin(j3, desc3);
70    robot.MoveJ(j3, desc3, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
71    rtn = robot.PositionorSetRefPoint(3);
72    robot.Sleep(2000);
73
74    robot.MoveJ(jSafe, descSafe, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
75    robot.ExtAxisStartJog(1, 0, 50, 50, 10);
76    robot.Sleep(1000);
77    robot.ExtAxisStartJog(2, 0, 50, 50, 10);
78    robot.Sleep(1000);
79    robot.GetForwardKin(j4, desc4);
80    robot.MoveJ(j4, desc4, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
81    rtn = robot.PositionorSetRefPoint(4);
82    robot.Sleep(2000);
83
84    DescPose axisCoord = new DescPose();
85    robot.PositionorComputeECoordSys(axisCoord);
86    robot.MoveJ(jSafe, descSafe, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
87    rtn = robot.ExtAxisActiveECoordSys(3, 1, axisCoord, 1);
88
89    robot.CloseRPC();
90    return 0;
91}

13.39. UDP-Erweiterungsachsen-Bewegung

Geändert in Version Java: SDK-v1.0.7-3.8.4

1/**
2* @brief Bewegung der UDP-Erweiterungsachse.
3* @param [in] pos Zielposition.
4* @param [in] ovl Geschwindigkeitsprozentsatz.
5* @param [in] blend Glättungsparameter (mm oder ms).
6* @return Fehlercode.
7*/
8int ExtAxisMove(ExaxisPos pos, double ovl, double blend);

13.40. UDP-Erweiterungsachsen-Bewegung - Codebeispiel

1public static int TestUDPAxisCalib(Robot robot)
2{
3    ExaxisPos exaxisPos = new ExaxisPos( 20, 0, 0, 0 );
4    robot.ExtAxisMove(exaxisPos,40);
5    robot.CloseRPC();
6    return 0;
7}

13.41. Synchronisierte Bewegung: UDP-Erweiterungsachse und Roboter-Gelenkbewegung

 1/**
 2* @brief Synchronisierte Bewegung: UDP-Erweiterungsachse und Roboter-Gelenkbewegung.
 3* @param [in] joint_pos Ziel-Gelenkposition, Einheit deg.
 4* @param [in] desc_pos Ziel-Kartesische Pose.
 5* @param [in] tool Werkzeugkoordinatennummer, Bereich [0~14].
 6* @param [in] user Werkstückkoordinatennummer, Bereich [0~14].
 7* @param [in] vel Geschwindigkeitsprozentsatz, Bereich [0~100].
 8* @param [in] acc Beschleunigungsprozentsatz, Bereich [0~100] (vorerst nicht verfügbar).
 9* @param [in] ovl Geschwindigkeitsskalierungsfaktor, Bereich [0~100].
10* @param [in] epos Position der Erweiterungsachse, Einheit mm.
11* @param [in] blendT [-1.0]-Bewegung abschließen (blockierend), [0~500.0]-Glättungszeit (nicht blockierend), Einheit ms.
12* @param [in] offset_flag 0-kein Versatz, 1-Versatz im Basis-/Werkstückkoordinatensystem, 2-Versatz im Werkzeugkoordinatensystem.
13* @param [in] offset_pos Posenversatz.
14* @return Fehlercode.
15*/
16int ExtAxisSyncMoveJ(JointPos joint_pos, DescPose desc_pos, int tool, int user, double vel, double acc, double ovl, ExaxisPos epos, double blendT, int offset_flag, DescPose offset_pos);

13.42. Synchronisierte Bewegung: UDP-Erweiterungsachse und Roboter-Gelenkbewegung (automatische Vorwärtskinematik)

Neu in Version Java: SDK-v1.0.8-3.8.5

 1/**
 2* @brief Synchronisierte Bewegung: UDP-Erweiterungsachse und Roboter-Gelenkbewegung (automatische Vorwärtskinematik).
 3* @param [in] joint_pos Ziel-Gelenkposition, Einheit deg.
 4* @param [in] tool Werkzeugkoordinatennummer, Bereich [0~14].
 5* @param [in] user Werkstückkoordinatennummer, Bereich [0~14].
 6* @param [in] vel Geschwindigkeitsprozentsatz, Bereich [0~100].
 7* @param [in] acc Beschleunigungsprozentsatz, Bereich [0~100] (vorerst nicht verfügbar).
 8* @param [in] ovl Geschwindigkeitsskalierungsfaktor, Bereich [0~100].
 9* @param [in] epos Position der Erweiterungsachse, Einheit mm.
10* @param [in] blendT [-1.0]-Bewegung abschließen (blockierend), [0~500.0]-Glättungszeit (nicht blockierend), Einheit ms.
11* @param [in] offset_flag 0-kein Versatz, 1-Versatz im Basis-/Werkstückkoordinatensystem, 2-Versatz im Werkzeugkoordinatensystem.
12* @param [in] offset_pos Posenversatz.
13* @return Fehlercode.
14*/
15int ExtAxisSyncMoveJ(JointPos joint_pos, int tool, int user, double vel, double acc, double ovl, ExaxisPos epos, double blendT, int offset_flag, DescPose offset_pos);

13.43. Codebeispiel für synchronisierte Gelenkbewegung

 1public int testSyncMoveJ(Robot robot)
 2{
 3    //1. Kalibrieren und Anwenden des Roboter-Werkzeugkoordinatensystems. Sie können die Vier-Punkt- oder Sechs-Punkt-Methode verwenden. Die relevanten Schnittstellen sind:
 4    //  int SetToolPoint(int point_num); // Werkzeug-Referenzpunkt einstellen - Sechs-Punkt-Methode
 5    //  int ComputeTool(ref DescPose tcp_pose); // Werkzeugkoordinatensystem berechnen
 6    //  int SetTcp4RefPoint(int point_num);  // Werkzeug-Referenzpunkt einstellen - Vier-Punkt-Methode
 7    //  int ComputeTcp4(ref DescPose tcp_pose);  // Werkzeugkoordinatensystem berechnen - Vier-Punkt-Methode
 8    //  int SetToolCoord(int id, DescPose coord, int type, int install); // Werkzeugkoordinatensystem einstellen und anwenden
 9    //  int SetToolList(int id, DescPose coord, int type, int install);  // Werkzeugkoordinatensystem in Liste einstellen und anwenden
10    //2. UDP-Kommunikationsparameter einstellen und UDP-Kommunikation laden
11    UDPComParam param = new UDPComParam("192.168.58.88", 2021, 2, 100, 3, 100, 1, 100, 10, 0);
12    robot.ExtDevSetUDPComParam(param);
13    robot.ExtDevLoadUDPDriver();
14    //3. Parameter für Erweiterungsachsen einstellen, einschließlich Typ, Antriebsparameter, DH-Parameter
15    robot.SetAxisDHParaConfig(4, 200, 200, 0, 0, 0, 0, 0, 0); // Einachs-Positionierer und DH-Parameter
16    robot.SetRobotPosToAxis(1); // Einbauposition der Erweiterungsachse
17    robot.ExtAxisParamConfig(1, 0, 1, 100, -100, 10, 10, 12, 131072, 0, 1, 0, 0); // Servoantriebsparameter, hier für Einachs-Positionierer. Bei mehreren Achsen müssen für jede Achse Parameter gesetzt werden.
18    //4. Ausgewählte Achse aktivieren und Referenzfahrt durchführen
19    robot.ExtAxisServoOn(1, 0);
20    robot.ExtAxisSetHoming(1, 0, 20, 3);
21    //5. Kalibrierung und Anwendung des Erweiterungsachsen-Koordinatensystems
22    DescPose pos = new DescPose(/* Geben Sie hier Ihre Kalibrierungspunktkoordinaten ein */);
23    robot.SetRefPointInExAxisEnd(pos);
24    robot.PositionorSetRefPoint(1); /* Sie müssen diese Schnittstelle 4 Mal mit verschiedenen Punkten aufrufen, um die Achse zu kalibrieren */
25    DescPose coord = new DescPose();
26    robot.PositionorComputeECoordSys(coord); // Kalibrierungsergebnis berechnen
27    robot.ExtAxisActiveECoordSys(1, 1, coord, 1); // Kalibrierungsergebnis auf das Erweiterungsachsen-Koordinatensystem anwenden
28    //6. Werkstückkoordinatensystem auf der Erweiterungsachse kalibrieren. Sie benötigen folgende Schnittstellen:
29    //int SetWObjCoordPoint(int point_num);
30    //int ComputeWObjCoord(int method, ref DescPose wobj_pose);
31    //int SetWObjCoord(int id, DescPose coord);
32    //int SetWObjList(int id, DescPose coord);
33    //7. Startpunkt der synchronen Gelenkbewegung erfassen
34    DescPose startdescPose = new DescPose(/* Geben Sie hier Ihre Koordinaten ein */);
35    JointPos startjointPos = new JointPos(/* Geben Sie hier Ihre Koordinaten ein */);
36    ExaxisPos startexaxisPos = new ExaxisPos(/* Geben Sie hier Ihre Startkoordinaten für die Erweiterungsachse ein */);
37    //8. Endpunkt der synchronen Gelenkbewegung erfassen
38    DescPose enddescPose = new DescPose(/* Geben Sie hier Ihre Koordinaten ein */);
39    JointPos endjointPos = new JointPos(/* Geben Sie hier Ihre Koordinaten ein */);
40    ExaxisPos endexaxisPos = new ExaxisPos(/* Geben Sie hier Ihre Endkoordinaten für die Erweiterungsachse ein */);
41    //9. Synchronbewegungsprogramm erstellen
42    // Zum Startpunkt bewegen, angenommen Werkzeug- und Werkstückkoordinatensystem sind beide 1
43    robot.ExtAxisMove(startexaxisPos, 20);
44    DescPose offdese = new DescPose( 0, 0, 0, 0, 0, 0 );
45    robot.MoveJ(startjointPos, startdescPose, 1, 1, 100, 100, 100, startexaxisPos, 0, 0, offdese);
46    // Synchronbewegung starten
47    robot.ExtAxisSyncMoveJ(endjointPos, enddescPose, 1, 1, 100, 100, 100, endexaxisPos, -1, 0, offdese);
48    // Zum Startpunkt bewegen (Überladung ohne Zielpose)
49    robot.MoveJ(startjointPos, 1, 1, 100, 100, 100, startexaxisPos, 0, 0, offdese);
50    // Synchronbewegung starten (Überladung ohne Zielpose)
51    robot.ExtAxisSyncMoveJ(endjointPos, 1, 1, 100, 100, 100, endexaxisPos, -1, 0, offdese);
52    robot.CloseRPC();
53    return 0;
54}

13.44. Synchronisierte Bewegung: UDP-Erweiterungsachse und Roboter-Linearbewegung

 1/**
 2* @brief Synchronisierte Bewegung: UDP-Erweiterungsachse und Roboter-Linearbewegung.
 3* @param [in] joint_pos Ziel-Gelenkposition, Einheit deg.
 4* @param [in] desc_pos Ziel-Kartesische Pose.
 5* @param [in] tool Werkzeugkoordinatennummer, Bereich [0~14].
 6* @param [in] user Werkstückkoordinatennummer, Bereich [0~14].
 7* @param [in] vel Geschwindigkeitsprozentsatz, Bereich [0~100].
 8* @param [in] acc Beschleunigungsprozentsatz, Bereich [0~100] (vorerst nicht verfügbar).
 9* @param [in] ovl Geschwindigkeitsskalierungsfaktor, Bereich [0~100].
10* @param [in] blendR [-1.0]-Bewegung abschließen (blockierend), [0~1000.0]-Glättungsradius (nicht blockierend), Einheit mm.
11* @param [in] epos Position der Erweiterungsachse, Einheit mm.
12* @param [in] offset_flag 0-kein Versatz, 1-Versatz im Basis-/Werkstückkoordinatensystem, 2-Versatz im Werkzeugkoordinatensystem.
13* @param [in] offset_pos Posenversatz.
14* @return Fehlercode.
15*/
16int ExtAxisSyncMoveL(JointPos joint_pos, DescPose desc_pos, int tool, int user, double vel, double acc, double ovl, double blendR, ExaxisPos epos, int offset_flag, DescPose offset_pos);

13.45. Synchronisierte Bewegung: UDP-Erweiterungsachse und Roboter-Linearbewegung (automatische inverse Kinematik)

Neu in Version Java: SDK-v1.0.8-3.8.5

 1/**
 2* @brief Synchronisierte Bewegung: UDP-Erweiterungsachse und Roboter-Linearbewegung (automatische inverse Kinematik).
 3* @param [in] desc_pos Ziel-Kartesische Pose.
 4* @param [in] tool Werkzeugkoordinatennummer, Bereich [0~14].
 5* @param [in] user Werkstückkoordinatennummer, Bereich [0~14].
 6* @param [in] vel Geschwindigkeitsprozentsatz, Bereich [0~100].
 7* @param [in] acc Beschleunigungsprozentsatz, Bereich [0~100] (vorerst nicht verfügbar).
 8* @param [in] ovl Geschwindigkeitsskalierungsfaktor, Bereich [0~100].
 9* @param [in] blendR [-1.0]-Bewegung abschließen (blockierend), [0~1000.0]-Glättungsradius (nicht blockierend), Einheit mm.
10* @param [in] epos Position der Erweiterungsachse, Einheit mm.
11* @param [in] offset_flag 0-kein Versatz, 1-Versatz im Basis-/Werkstückkoordinatensystem, 2-Versatz im Werkzeugkoordinatensystem.
12* @param [in] offset_pos Posenversatz.
13* @param [in] config Konfiguration des inversen Gelenkraums, [-1]-basierend auf aktueller Gelenkposition berechnen, [0~7]-basierend auf spezifischer Konfiguration lösen.
14* @return Fehlercode.
15*/
16int ExtAxisSyncMoveL(DescPose desc_pos, int tool, int user, double vel, double acc, double ovl, double blendR, ExaxisPos epos, int offset_flag, DescPose offset_pos, int config);

13.46. Codebeispiel für synchronisierte Linearbewegung

 1public int testSyncMoveL(Robot robot)
 2{
 3    // 1. Werkzeugkoordinatensystem kalibrieren und anwenden...
 4    // 2. UDP-Kommunikationsparameter setzen und laden
 5    UDPComParam param = new UDPComParam("192.168.58.88", 2021, 2, 100, 3, 100, 1, 100, 10, 0);
 6    robot.ExtDevSetUDPComParam(param);
 7    robot.ExtDevLoadUDPDriver();
 8    // 3. Erweiterachsenparameter setzen
 9    robot.SetAxisDHParaConfig(4, 200, 200, 0, 0, 0, 0, 0, 0);
10    robot.SetRobotPosToAxis(1);
11    robot.ExtAxisParamConfig(1, 0, 1, 100, -100, 10, 10, 12, 131072, 0, 1, 0, 0);
12    // 4. Achse aktivieren und Referenzpunktfahrt durchführen
13    robot.ExtAxisServoOn(1, 0);
14    robot.ExtAxisSetHoming(1, 0, 20, 3);
15    // 5. Erweiterachsen-Koordinatensystem kalibrieren und anwenden
16    DescPose pos = new DescPose(/* Ihre Koordinaten */);
17    robot.SetRefPointInExAxisEnd(pos);
18    robot.PositionorSetRefPoint(1);
19    DescPose coord = new DescPose();
20    robot.PositionorComputeECoordSys(coord);
21    robot.ExtAxisActiveECoordSys(1, 1, coord, 1);
22    // 6. Werkstückkoordinatensystem auf der Erweiterachse kalibrieren
23    // ...
24    // 7. Startpunkt der synchronen Linearbewegung aufzeichnen
25    DescPose startdescPose = new DescPose(/* Ihre Koordinaten */);
26    JointPos startjointPos = new JointPos(/* Ihre Koordinaten */);
27    ExaxisPos startexaxisPos = new ExaxisPos(/* Ihre Koordinaten */);
28    // 8. Endpunkt der synchronen Linearbewegung aufzeichnen
29    DescPose enddescPose = new DescPose(/* Ihre Koordinaten */);
30    JointPos endjointPos = new JointPos(/* Ihre Koordinaten */);
31    ExaxisPos endexaxisPos = new ExaxisPos(/* Ihre Koordinaten */);
32    // 9. Synchrones Bewegungsprogramm schreiben
33    robot.ExtAxisMove(startexaxisPos, 20);
34    DescPose offdese = new DescPose(0, 0, 0, 0, 0, 0);
35    robot.MoveJ(startjointPos, startdescPose, 1, 1, 100, 100, 100, startexaxisPos, 0, 0, offdese);
36    robot.ExtAxisSyncMoveL(endjointPos, enddescPose, 1, 1, 100, 100, 100, 0, endexaxisPos, 0, offdese);
37    robot.MoveJ(startjointPos, 1, 1, 100, 100, 100, startexaxisPos, 0, 0, offdese);
38    robot.ExtAxisSyncMoveL(enddescPose, 1, 1, 100, 100, 100, 0, endexaxisPos, 0, offdese, -1);
39    robot.CloseRPC();
40    return 0;
41}

13.47. Synchronisierte Bewegung: UDP-Erweiterungsachse und Roboter-Kreisbogenbewegung

 1/**
 2* @brief Synchronisierte Bewegung: UDP-Erweiterungsachse und Roboter-Kreisbogenbewegung.
 3* @param [in] joint_pos_p Gelenkposition des Zwischenpunkts, Einheit deg.
 4* @param [in] desc_pos_p Kartesische Pose des Zwischenpunkts.
 5* @param [in] ptool Werkzeugkoordinatennummer für Zwischenpunkt, Bereich [0~14].
 6* @param [in] puser Werkstückkoordinatennummer für Zwischenpunkt, Bereich [0~14].
 7* @param [in] pvel Geschwindigkeitsprozentsatz für Zwischenpunkt, Bereich [0~100].
 8* @param [in] pacc Beschleunigungsprozentsatz für Zwischenpunkt, Bereich [0~100] (vorerst nicht verfügbar).
 9* @param [in] epos_p Position der Erweiterungsachse am Zwischenpunkt, Einheit mm.
10* @param [in] poffset_flag 0-kein Versatz, 1-Versatz im Basis-/Werkstückkoordinatensystem, 2-Versatz im Werkzeugkoordinatensystem für Zwischenpunkt.
11* @param [in] offset_pos_p Posenversatz für Zwischenpunkt.
12* @param [in] joint_pos_t Gelenkposition des Zielpunkts, Einheit deg.
13* @param [in] desc_pos_t Kartesische Pose des Zielpunkts.
14* @param [in] ttool Werkzeugkoordinatennummer für Zielpunkt, Bereich [0~14].
15* @param [in] tuser Werkstückkoordinatennummer für Zielpunkt, Bereich [0~14].
16* @param [in] tvel Geschwindigkeitsprozentsatz für Zielpunkt, Bereich [0~100].
17* @param [in] tacc Beschleunigungsprozentsatz für Zielpunkt, Bereich [0~100] (vorerst nicht verfügbar).
18* @param [in] epos_t Position der Erweiterungsachse am Zielpunkt, Einheit mm.
19* @param [in] toffset_flag 0-kein Versatz, 1-Versatz im Basis-/Werkstückkoordinatensystem, 2-Versatz im Werkzeugkoordinatensystem für Zielpunkt.
20* @param [in] offset_pos_t Posenversatz für Zielpunkt.
21* @param [in] ovl Geschwindigkeitsskalierungsfaktor, Bereich [0~100].
22* @param [in] blendR [-1.0]-Bewegung abschließen (blockierend), [0~1000.0]-Glättungsradius (nicht blockierend), Einheit mm.
23* @return Fehlercode.
24*/
25int ExtAxisSyncMoveC(JointPos joint_pos_p, DescPose desc_pos_p, int ptool, int puser, double pvel, double pacc, ExaxisPos epos_p, int poffset_flag, DescPose offset_pos_p, JointPos joint_pos_t, DescPose desc_pos_t, int ttool, int tuser, double tvel, double tacc, ExaxisPos epos_t, int toffset_flag, DescPose offset_pos_t, double ovl, double blendR);

13.48. Synchronisierte Bewegung: UDP-Erweiterungsachse und Roboter-Kreisbogenbewegung (automatische inverse Kinematik)

Neu in Version Java: SDK-v1.0.8-3.8.5

 1/**
 2* @brief Synchronisierte Bewegung: UDP-Erweiterungsachse und Roboter-Kreisbogenbewegung (automatische inverse Kinematik).
 3* @param [in] desc_pos_p Kartesische Pose des Zwischenpunkts.
 4* @param [in] ptool Werkzeugkoordinatennummer für Zwischenpunkt, Bereich [0~14].
 5* @param [in] puser Werkstückkoordinatennummer für Zwischenpunkt, Bereich [0~14].
 6* @param [in] pvel Geschwindigkeitsprozentsatz für Zwischenpunkt, Bereich [0~100].
 7* @param [in] pacc Beschleunigungsprozentsatz für Zwischenpunkt, Bereich [0~100] (vorerst nicht verfügbar).
 8* @param [in] epos_p Position der Erweiterungsachse am Zwischenpunkt, Einheit mm.
 9* @param [in] poffset_flag 0-kein Versatz, 1-Versatz im Basis-/Werkstückkoordinatensystem, 2-Versatz im Werkzeugkoordinatensystem für Zwischenpunkt.
10* @param [in] offset_pos_p Posenversatz für Zwischenpunkt.
11* @param [in] desc_pos_t Kartesische Pose des Zielpunkts.
12* @param [in] ttool Werkzeugkoordinatennummer für Zielpunkt, Bereich [0~14].
13* @param [in] tuser Werkstückkoordinatennummer für Zielpunkt, Bereich [0~14].
14* @param [in] tvel Geschwindigkeitsprozentsatz für Zielpunkt, Bereich [0~100].
15* @param [in] tacc Beschleunigungsprozentsatz für Zielpunkt, Bereich [0~100] (vorerst nicht verfügbar).
16* @param [in] epos_t Position der Erweiterungsachse am Zielpunkt, Einheit mm.
17* @param [in] toffset_flag 0-kein Versatz, 1-Versatz im Basis-/Werkstückkoordinatensystem, 2-Versatz im Werkzeugkoordinatensystem für Zielpunkt.
18* @param [in] offset_pos_t Posenversatz für Zielpunkt.
19* @param [in] ovl Geschwindigkeitsskalierungsfaktor, Bereich [0~100].
20* @param [in] blendR [-1.0]-Bewegung abschließen (blockierend), [0~1000.0]-Glättungsradius (nicht blockierend), Einheit mm.
21* @param [in] config Konfiguration des inversen Gelenkraums, [-1]-basierend auf aktueller Gelenkposition berechnen, [0~7]-basierend auf spezifischer Konfiguration lösen.
22* @return Fehlercode.
23*/
24int ExtAxisSyncMoveC(DescPose desc_pos_p, int ptool, int puser, double pvel, double pacc, ExaxisPos epos_p, int poffset_flag, DescPose offset_pos_p, DescPose desc_pos_t, int ttool, int tuser, double tvel, double tacc, ExaxisPos epos_t, int toffset_flag, DescPose offset_pos_t, double ovl, double blendR, int config);

13.49. Codebeispiel für synchronisierte Kreisbogenbewegung

 1public int testSyncMoveC(Robot robot)
 2{
 3    // 1. Werkzeugkoordinatensystem kalibrieren und anwenden...
 4    // 2. UDP-Kommunikationsparameter setzen und laden
 5    UDPComParam param = new UDPComParam("192.168.58.88", 2021, 2, 100, 3, 100, 1, 100, 10, 0);
 6    robot.ExtDevSetUDPComParam(param);
 7    robot.ExtDevLoadUDPDriver();
 8    // 3. Erweiterachsenparameter setzen
 9    robot.SetAxisDHParaConfig(4, 200, 200, 0, 0, 0, 0, 0, 0);
10    robot.SetRobotPosToAxis(1);
11    robot.ExtAxisParamConfig(1, 0, 1, 100, -100, 10, 10, 12, 131072, 0, 1, 0, 0);
12    // 4. Achse aktivieren und Referenzpunktfahrt durchführen
13    robot.ExtAxisServoOn(1, 0);
14    robot.ExtAxisSetHoming(1, 0, 20, 3);
15    // 5. Erweiterachsen-Koordinatensystem kalibrieren und anwenden
16    DescPose pos = new DescPose(/* Ihre Koordinaten */);
17    robot.SetRefPointInExAxisEnd(pos);
18    robot.PositionorSetRefPoint(1);
19    DescPose coord = new DescPose();
20    robot.PositionorComputeECoordSys(coord);
21    robot.ExtAxisActiveECoordSys(1, 1, coord, 1);
22    // 6. Werkstückkoordinatensystem auf der Erweiterachse kalibrieren
23    // ...
24    // 7. Startpunkt der synchronen Kreisbogenbewegung aufzeichnen
25    DescPose startdescPose = new DescPose(/* Ihre Koordinaten */);
26    JointPos startjointPos = new JointPos(/* Ihre Koordinaten */);
27    ExaxisPos startexaxisPos = new ExaxisPos(/* Ihre Koordinaten */);
28    // 8. Endpunkt der synchronen Kreisbogenbewegung aufzeichnen
29    DescPose enddescPose = new DescPose(/* Ihre Koordinaten */);
30    JointPos endjointPos = new JointPos(/* Ihre Koordinaten */);
31    ExaxisPos endexaxisPos = new ExaxisPos(/* Ihre Koordinaten */);
32    // 9. Zwischenpunkt der synchronen Kreisbogenbewegung aufzeichnen
33    DescPose middescPose = new DescPose(/* Ihre Koordinaten */);
34    JointPos midjointPos = new JointPos(/* Ihre Koordinaten */);
35    ExaxisPos midexaxisPos = new ExaxisPos(/* Ihre Koordinaten */);
36    // 10. Synchrones Bewegungsprogramm schreiben
37    robot.ExtAxisMove(startexaxisPos, 20);
38    DescPose offdese = new DescPose(0, 0, 0, 0, 0, 0);
39    robot.MoveJ(startjointPos, startdescPose, 1, 1, 100, 100, 100, startexaxisPos, 0, 0, offdese);
40    robot.ExtAxisSyncMoveC(midjointPos, middescPose, 1, 1, 100, 100, midexaxisPos, 0, offdese, endjointPos, enddescPose, 1, 1, 100, 100, endexaxisPos, 0, offdese, 100, 0);
41    robot.MoveJ(startjointPos, 1, 1, 100, 100, 100, startexaxisPos, 0, 0, offdese);
42    robot.ExtAxisSyncMoveC(middescPose, 1, 1, 100, 100, midexaxisPos, 0, offdese, enddescPose, 1, 1, 100, 100, endexaxisPos, 0, offdese, 100, 0, -1);
43    robot.CloseRPC();
44    return 0;
45}

13.50. Erweiterungs-DO setzen

1/**
2* @brief Setzt einen erweiterten digitalen Ausgang (AuxDO).
3* @param [in] DONum DO-Nummer.
4* @param [in] bOpen Schalter true-ein; false-aus.
5* @param [in] smooth Glättung (ob Befehl geglättet wird).
6* @param [in] block Blockierung (ob auf Abschluss gewartet wird).
7* @return Fehlercode.
8*/
9int SetAuxDO(int DONum, boolean bOpen, boolean smooth, boolean block);

13.51. Erweiterungs-AO setzen

1/**
2* @brief Setzt einen erweiterten analogen Ausgang (AuxAO).
3* @param [in] AONum AO-Nummer.
4* @param [in] value Analogwert [0-4095].
5* @param [in] block Blockierung (ob auf Abschluss gewartet wird).
6* @return Fehlercode.
7*/
8int SetAuxAO(int AONum, double value, boolean block);

13.52. Filterzeit für erweiterten digitalen Eingang (AuxDI) einstellen

1/**
2* @brief Stellt die Filterzeit für einen erweiterten digitalen Eingang (AuxDI) ein.
3* @param [in] filterTime Filterzeit (ms).
4* @return Fehlercode.
5*/
6int SetAuxDIFilterTime(int filterTime);

13.53. Filterzeit für erweiterten analogen Eingang (AuxAI) einstellen

1/**
2* @brief Stellt die Filterzeit für einen erweiterten analogen Eingang (AuxAI) ein.
3* @param [in] AONum AO-Nummer.
4* @param [in] filterTime Filterzeit (ms).
5* @return Fehlercode.
6*/
7int SetAuxAIFilterTime(int AONum, int filterTime);

13.54. Auf erweiterten digitalen Eingang (AuxDI) warten

1/**
2* @brief Wartet auf einen erweiterten digitalen Eingang (AuxDI).
3* @param [in] DINum DI-Nummer.
4* @param [in] bOpen Schalter 0-aus; 1-ein.
5* @param [in] time Maximale Wartezeit (ms).
6* @param [in] errorAlarm Verhalten bei Zeitüberschreitung (false: Fehler, Bewegung stoppen; true: Warnung, Bewegung fortsetzen).
7* @return Fehlercode.
8*/
9int WaitAuxDI(int DINum, boolean bOpen, int time, boolean errorAlarm);

13.55. Auf erweiterten analogen Eingang (AuxAI) warten

 1/**
 2* @brief Wartet auf einen erweiterten analogen Eingang (AuxAI).
 3* @param [in] AINum AI-Nummer.
 4* @param [in] sign 0-größer als; 1-kleiner als.
 5* @param [in] value AI-Wert.
 6* @param [in] time Maximale Wartezeit (ms).
 7* @param [in] errorAlarm Verhalten bei Zeitüberschreitung (false: Fehler, Bewegung stoppen; true: Warnung, Bewegung fortsetzen).
 8* @return Fehlercode.
 9*/
10int WaitAuxAI(int AINum, int sign, int value, int time, boolean errorAlarm);

13.56. Wert eines erweiterten digitalen Eingangs (AuxDI) abrufen

1/**
2* @brief Gibt den Wert eines erweiterten digitalen Eingangs (AuxDI) zurück.
3* @param [in] DINum DI-Nummer.
4* @param [in] isNoBlock Blockierung (false: blockierend; true: nicht blockierend).
5* @return List[0]: Fehlercode; List[1]: isOpen 0-aus; 1-ein.
6*/
7List<Integer> GetAuxDI(int DINum, boolean isNoBlock);

13.57. Wert eines erweiterten analogen Eingangs (AuxAI) abrufen

1/**
2* @brief Gibt den Wert eines erweiterten analogen Eingangs (AuxAI) zurück.
3* @param [in] AINum AI-Nummer.
4* @param [in] isNoBlock Blockierung (false: blockierend; true: nicht blockierend).
5* @return List[0]: Fehlercode; List[1]: value Eingangswert.
6*/
7List<Integer> GetAuxAI(int AINum, boolean isNoBlock);

13.58. Codebeispiel für erweiterte I/Os (AuxIO)

 1public static int TestAuxDOAO(Robot robot)
 2{
 3    for (int i = 0; i < 128; i++)
 4    {
 5        robot.SetAuxDO(i, true, false, true);
 6        robot.Sleep(100);
 7    }
 8    for (int i = 0; i < 128; i++)
 9    {
10        robot.SetAuxDO(i, false, false, true);
11        robot.Sleep(100);
12    }
13
14    for (int i = 0; i < 409; i++)
15    {
16        robot.SetAuxAO(0, i * 10, true);
17        robot.SetAuxAO(1, 4095 - i * 10, true);
18        robot.SetAuxAO(2, i * 10, true);
19        robot.SetAuxAO(3, 4095 - i * 10, true);
20        robot.Sleep(10);
21    }
22
23    robot.SetAuxDIFilterTime(10);
24    robot.SetAuxAIFilterTime(0, 10);
25
26    List<Integer> liter = new ArrayList<>();
27    for (int i = 0; i < 4; i++)
28    {
29        liter = robot.GetAuxAI(i, true);
30    }
31
32    robot.WaitAuxDI(1, false, 1000, false);
33    robot.WaitAuxAI(1, 1, 132, 1000, false);
34
35    robot.CloseRPC();
36    return 0;
37}

13.59. Fahrbare Einheit aktivieren

1/**
2* @brief Aktiviert/Deaktiviert die fahrbare Einheit.
3* @param [in] enable false-deaktivieren; true-aktivieren.
4* @return Fehlercode.
5*/
6int TractorEnable(Boolean enable);

13.60. Referenzpunktfahrt der fahrbaren Einheit

1/**
2* @brief Führt die Referenzpunktfahrt der fahrbaren Einheit durch.
3* @return Fehlercode.
4*/
5int TractorHoming();

13.61. Linearbewegung der fahrbaren Einheit

1/**
2* @brief Linearbewegung der fahrbaren Einheit.
3* @param [in] distance Bewegungsstrecke (mm).
4* @param [in] vel Geschwindigkeitsprozentsatz (0-100).
5* @return Fehlercode.
6*/
7int TractorMoveL(double distance, double vel);

13.62. Kreisbogenbewegung der fahrbaren Einheit

1/**
2* @brief Kreisbogenbewegung der fahrbaren Einheit.
3* @param [in] radius Radius der Kreisbogenbewegung (mm).
4* @param [in] angle Winkel der Kreisbogenbewegung (°).
5* @param [in] vel Geschwindigkeitsprozentsatz (0-100).
6* @return Fehlercode.
7*/
8int TractorMoveC(double radius, double angle, double vel);

13.63. Bewegung der fahrbaren Einheit stoppen

1/**
2* @brief Stoppt die Bewegung der fahrbaren Einheit.
3* @return Fehlercode.
4*/
5int TractorStop();

13.64. Codebeispiel für fahrbare Einheit

 1public static void main(String[] args)
 2{
 3    Robot robot = new Robot();
 4    robot.SetReconnectParam(true,20,500);
 5    robot.LoggerInit(FrLogType.DIRECT, FrLogLevel.INFO, "D://log", 10, 10);
 6    int rtn = robot.RPC("192.168.58.2");
 7    if(rtn == 0)
 8    {
 9        System.out.println("RPC-Verbindung erfolgreich");
10    }
11    else
12    {
13        System.out.println("RPC-Verbindung fehlgeschlagen");
14        return ;
15    }
16    UDPComParam param = new UDPComParam("192.168.58.88", 2021, 2, 100, 3, 100, 1, 100, 10);
17    robot.ExtDevSetUDPComParam(param);
18    robot.ExtAxisParamConfig(1, 0, 0, 50000, -50000, 1000, 1000, 6.280, 16384, 200, 0, 0, 0);
19    robot.ExtAxisParamConfig(2, 0, 0, 50000, -50000, 1000, 1000, 6.280, 16384, 200, 0, 0, 0);
20    robot.SetAxisDHParaConfig(5, 0, 0, 0, 0, 0, 0, 0, 0);
21
22    robot.TractorEnable(false);
23    robot.Sleep(2000);
24    robot.TractorEnable(true);
25    robot.Sleep(2000);
26    robot.TractorHoming();
27
28    robot.Sleep(2000);
29    robot.TractorMoveL(100, 20);
30    robot.Sleep(5000);
31    robot.TractorMoveL(-100, 20);
32    robot.Sleep(5000);
33    robot.TractorMoveC(300, 90, 20);
34    robot.Sleep(2000);
35    robot.TractorStop(); // Fahrbare Einheit stoppen
36    robot.TractorMoveC(300, -90, 20);
37}