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 Abrufen der UDP-Kommunikationsparameter für Erweiterungsachsen
3* @param [out] ip PLC-IP-Adresse
4* @param [out] port Portnummer
5* @param [out] period Kommunikationszyklus (ms, Standard ist 2, diesen Parameter nicht ändern)
6* @param [out] lossPkgTime Paketverlust-Erkennungszeit (ms)
7* @param [out] lossPkgNum Anzahl der Paketverluste
8* @param [out] disconnectTime Bestätigungsdauer für Kommunikationsunterbrechung
9* @param [out] reconnectEnable Automatische Wiederverbindung bei Kommunikationsunterbrechung aktivieren 0-deaktiviert 1-aktiviert
10* @param [out] reconnectPeriod Wiederverbindungsintervall (ms)
11* @param [out] reconnectNum Anzahl der Wiederverbindungsversuche
12* @param [out] selfConnect Automatische Wiederverbindung nach Neustart des Steuerkastens; 0-keine Wiederverbindung; 1-Wiederverbindung
13* @return Fehlercode
14*/
15public int ExtDevGetUDPComParam(ref string ip, ref int port, ref int period, ref int lossPkgTime, ref int lossPkgNum, ref int disconnectTime, ref int reconnectEnable, ref int reconnectPeriod, ref int reconnectNum, ref int selfConnect)
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. UDP-Erweiterte Achsenparameterabfrage
1/**
2* @brief UDP-erweiterte Achsenparameterabfrage
3* @param axisID Erweiterte Achsennummer [1-4]
4* @param params Ausgabeparameter-Array, Länge 12, Reihenfolge:
5* [0] axisType Erweiterter Achsentyp 0-linear; 1-drehend
6* [1] axisDirection Erweiterte Achsenrichtung 0-positiv; 1-negativ
7* [2] axisMax Maximale Position der erweiterten Achse mm
8* [3] axisMin Minimale Position der erweiterten Achse mm
9* [4] axisVel Geschwindigkeit mm/s
10* [5] axisAcc Beschleunigung mm/s²
11* [6] axisLead Spindelsteigung mm
12* [7] encResolution Encoder-Auflösung
13* [8] axisOffekt Schweißstartpunkt-Versatz der erweiterten Achse
14* [9] axisCompany Antriebshersteller 1-Hechen; 2-Inovance; 3-Panasonic
15* [10] axisModel Antriebsmodell
16* [11] axisEncType Encodertyp 0-inkrementell; 1-absolut
17* @return Fehlercode
18*/
19public int ExtAxisGetParamConfig(int axisID, Object[] params)
13.25. 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.26. 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.27. 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.28. 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.29. 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.30. 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.31. Codebeispiel für Konfiguration und Tippbetrieb einer UDP-Erweiterungsachse
1public static int TestUDPAxis(Robot robot) {
2 int rtn = -1;
3
4 UDPComParam param = new UDPComParam("192.168.58.88", 2021, 2, 100, 3, 200, 1, 100, 5, 1);
5 rtn = robot.ExtDevSetUDPComParam(param);
6 System.out.println("ExtDevSetUDPComParam rtn is " + rtn);
7
8 UDPComParam getParam = new UDPComParam();
9 rtn = robot.ExtDevGetUDPComParam(getParam);
10 String paramStr = "\nip " + getParam.ip + "\nport " + getParam.port + "\nperiod " + getParam.period +
11 "\nlossPkgTime " + getParam.lossPkgTime + "\nlossPkgNum " + getParam.lossPkgNum +
12 "\ndisconnectTime " + getParam.disconnectTime + "\nreconnectEnable " + getParam.reconnectEnable +
13 "\nreconnectPeriod " + getParam.reconnectPeriod + "\nreconnectNum " + getParam.reconnectNum +
14 "\nselfConnect " + getParam.selfConnect;
15 System.out.println("ExtDevGetUDPComParam rtn is " + rtn + paramStr);
16
17 robot.ExtDevLoadUDPDriver();
18
19 rtn = robot.SetExAxisCmdDoneTime(5000.0);
20 System.out.println("SetExAxisCmdDoneTime rtn is " + rtn);
21
22 rtn = robot.ExtAxisServoOn(1, 1);
23 System.out.println("ExtAxisServoOn axis id 1 rtn is " + rtn);
24 rtn = robot.ExtAxisServoOn(2, 1);
25 System.out.println("ExtAxisServoOn axis id 2 rtn is " + rtn);
26 robot.Sleep(2000);
27
28 robot.ExtAxisSetHoming(1, 0, 10, 2);
29 robot.Sleep(2000);
30 rtn = robot.ExtAxisSetHoming(2, 0, 10, 2);
31 System.out.println("ExtAxisSetHoming rtn is " + rtn);
32
33 robot.Sleep(4000);
34
35 rtn = robot.SetRobotPosToAxis(1);
36 System.out.println("SetRobotPosToAxis rtn is " + rtn);
37
38 rtn = robot.SetAxisDHParaConfig(10, 20, 0, 0, 0, 0, 0, 0, 0);
39 System.out.println("SetAxisDHParaConfig rtn is " + rtn);
40
41 rtn = robot.ExtAxisParamConfig(1, 1, 1, 1000, -1000, 1000, 1000, 1.905, 262144, 200, 1, 0, 0);
42 System.out.println("ExtAxisParamConfig axis 1 rtn is " + rtn);
43
44 Object[] params1 = new Object[12];
45 rtn = robot.ExtAxisGetParamConfig(1, params1);
46 System.out.printf("axis id 1 ExtAxisGetParamConfig : axisType %d, axisDirection %d, axisMax %.2f, axisMin %.2f, axisVel %.2f, axisAcc %.2f, axisLead %.2f, encResolution %d, axisOffect %.2f, axisCompany %d, axisModel %d, axisEncType %d\n",
47 (int)params1[0], (int)params1[1], (double)params1[2], (double)params1[3],
48 (double)params1[4], (double)params1[5], (double)params1[6], (int)params1[7],
49 (double)params1[8], (int)params1[9], (int)params1[10], (int)params1[11]);
50
51 rtn = robot.ExtAxisParamConfig(2, 1, 1, 1000, -1000, 1000, 1000, 4.444, 262144, 200, 1, 0, 0);
52 System.out.println("ExtAxisParamConfig axis 2 rtn is " + rtn);
53
54 Object[] params2 = new Object[12];
55 rtn = robot.ExtAxisGetParamConfig(2, params2);
56 System.out.printf("axis id 2 ExtAxisGetParamConfig : axisType %d, axisDirection %d, axisMax %.2f, axisMin %.2f, axisVel %.2f, axisAcc %.2f, axisLead %.2f, encResolution %d, axisOffect %.2f, axisCompany %d, axisModel %d, axisEncType %d\n",
57 (int)params2[0], (int)params2[1], (double)params2[2], (double)params2[3],
58 (double)params2[4], (double)params2[5], (double)params2[6], (int)params2[7],
59 (double)params2[8], (int)params2[9], (int)params2[10], (int)params2[11]);
60
61 robot.Sleep(3000);
62
63 robot.ExtAxisStartJog(1, 0, 10, 10, 30);
64 robot.Sleep(1000);
65 robot.ExtAxisStopJog(1);
66 robot.Sleep(3000);
67 robot.ExtAxisServoOn(1, 0);
68
69 robot.Sleep(3000);
70
71 robot.ExtAxisStartJog(2, 0, 10, 10, 30);
72 robot.Sleep(1000);
73 robot.ExtAxisStopJog(2);
74 robot.Sleep(3000);
75 robot.ExtAxisServoOn(2, 0);
76 robot.ExtDevUnloadUDPDriver();
77
78 return 0;
79}
13.32. 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.33. 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.34. 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.35. 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.36. 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.37. 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.38. 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.39. 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.40. 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.41. 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.42. 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.43. 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.44. 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.45. 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.46. 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.47. 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.48. 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.49. 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.50. 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.51. 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.52. 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.53. 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.54. 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.55. 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.56. 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.57. 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.58. 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.59. 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.60. 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.61. Referenzpunktfahrt der fahrbaren Einheit
1/**
2* @brief Führt die Referenzpunktfahrt der fahrbaren Einheit durch.
3* @return Fehlercode.
4*/
5int TractorHoming();
13.62. 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.63. 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.64. Bewegung der fahrbaren Einheit stoppen
1/**
2* @brief Stoppt die Bewegung der fahrbaren Einheit.
3* @return Fehlercode.
4*/
5int TractorStop();
13.65. 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}
13.66. Einstellung der Positionierungsabschlusszeit für UDP-Erweiterungsachsen
1/**
2* @brief Einstellung der Positionierungsabschlusszeit für UDP-Erweiterungsachsen
3* @param time Positionierungsabschlusszeit [ms]
4* @return Fehlercode
5*/
6public int SetExAxisCmdDoneTime(double time)