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}