13. Assi Estesi
13.1. Impostazione Parametri Assi Estesi 485
1/**
2* @brief Imposta parametri assi estesi 485
3* @param [in] servoId ID driver servo, range [1-16], corrisponde all'ID slave
4* @param [in] param Parametri asse esteso 485
5* @return Codice errore
6*/
7int AuxServoSetParam(int servoId, Axis485Param param)
13.2. Ottenere Parametri Assi Estesi 485
1/**
2* @brief Ottiene parametri configurazione assi estesi 485
3* @param [in] servoId ID driver servo, range [1-16], corrisponde all'ID slave
4* @param [out] param Parametri asse esteso 485
5* @return Codice errore
6*/
7int AuxServoGetParam(int servoId, Axis485Param param);
13.3. Impostare Abilitazione/Disabilitazione Assi Estesi 485
1/**
2* @brief Imposta abilitazione/disabilitazione assi estesi 485
3* @param [in] servoId ID driver servo, range [1-16], corrisponde all'ID slave
4* @param [in] status Stato abilitazione, 0-disabilitato, 1-abilitato
5* @return Codice errore
6*/
7int AuxServoEnable(int servoId, int status);
13.4. Impostare Modalità Controllo Assi Estesi 485
1/**
2* @brief Imposta modalità controllo assi estesi 485
3* @param [in] servoId ID driver servo, range [1-16], corrisponde all'ID slave
4* @param [in] mode Modalità controllo, 0-modalità posizione, 1-modalità velocità
5* @return Codice errore
6*/
7int AuxServoSetControlMode(int servoId, int mode);
13.5. Impostare Posizione Target Asse Esteso 485 (Modalità Posizione)
1/**
2* @brief Imposta posizione target asse esteso 485 (modalità posizione)
3* @param [in] servoId ID driver servo, range [1-16], corrisponde all'ID slave
4* @param [in] pos Posizione target, mm o °
5* @param [in] speed Velocità target, mm/s o °/s
6* @param [in] acc Percentuale accelerazione [0-100]
7* @return Codice errore
8*/
9int AuxServoSetTargetPos(int servoId, double pos, double speed, double acc);
13.6. Impostare Coppia Target Asse Esteso 485 (Modalità Coppia) - Non ancora disponibile
1/**
2* @brief Imposta coppia target asse esteso 485 (modalità coppia) - Non ancora disponibile
3* @param [in] servoId ID driver servo, range [1-16], corrisponde all'ID slave
4* @param [in] torque Coppia target, Nm
5* @return Codice errore
6*/
7int AuxServoSetTargetTorque(int servoId, double torque);
13.7. Impostare Homing Asse Esteso 485
1/**
2* @brief Imposta homing asse esteso 485
3* @param [in] servoId ID driver servo, range [1-16], corrisponde all'ID slave
4* @param [in] mode Modalità homing, 1-homing posizione corrente; 2-homing limite negativo; 3-homing limite positivo
5* @param [in] searchVel Velocità ricerca homing, mm/s o °/s
6* @param [in] latchVel Velocità aggancio, mm/s o °/s
7* @param [in] acc Percentuale accelerazione [0-100]
8* @return Codice errore
9*/
10int AuxServoHoming(int servoId, int mode, double searchVel, double latchVel, double acc);
13.8. Cancellare Informazioni Errore Asse Esteso 485
1/**
2* @brief Cancella informazioni errore asse esteso 485
3* @param [in] servoId ID driver servo, range [1-16], corrisponde all'ID slave
4* @return Codice errore
5*/
6int AuxServoClearError(int servoId);
13.9. Ottenere Stato Servo Asse Esteso 485
1/**
2* @brief Ottiene stato servo asse esteso 485
3* @param [in] servoId ID driver servo, range [1-16], corrisponde all'ID slave
4* @param [out] servoErrCode Codice errore driver servo
5* @param [out] servoState Stato driver servo bit0:0-non abilitato; 1-abilitato; bit1:0-non in movimento; 1-in movimento; bit4 0-posizionamento non completato; 1-posizionamento completato; bit5:0-homing non completato; 1-homing completato
6* @param [out] servoPos Posizione corrente servo mm o °
7* @param [out] servoSpeed Velocità corrente servo mm/s o °/s
8* @param [out] servoTorque Coppia corrente servo Nm
9* @return Codice errore
10*/
11int AuxServoGetStatus(int servoId, int[] servoErrCode, int[] servoState, double[] servoPos, double[] servoSpeed, double[] servoTorque)
13.10. Impostare Velocità Target Asse Esteso 485 (Modalità Velocità)
1/**
2* @brief Imposta velocità target asse esteso 485 (modalità velocità)
3* @param [in] servoId ID driver servo, range [1-16], corrisponde all'ID slave
4* @param [in] speed Velocità target, mm/s o °/s
5* @param [in] acc Percentuale accelerazione [0-100]
6* @return Codice errore
7*/
8int AuxServoSetTargetSpeed(int servoId, double speed, double acc);
13.11. Impostare ID Asse Dati Assi Estesi 485 in Feedback Stato
1/**
2* @brief Imposta ID asse dati assi estesi 485 in feedback stato
3* @param [in] servoId ID driver servo, range [1-16], corrisponde all'ID slave
4* @return Codice errore
5*/
6int AuxServoSetStatusID(int servoId);
13.12. Impostare Accelerazione/Decelerazione Movimento Assi Estesi 485
1/**
2* @brief Imposta accelerazione/decelerazione movimento assi estesi 485
3* @param [in] acc Accelerazione movimento asse esteso 485
4* @param [in] dec Decelerazione movimento asse esteso 485
5* @return Codice errore
6*/
7int AuxServoSetAcc(double acc, double dec)
13.13. Impostare Accelerazione/Decelerazione Arresto Emergenza Assi Estesi 485
1/**
2* @brief Imposta accelerazione/decelerazione arresto emergenza assi estesi 485
3* @param [in] acc Accelerazione arresto emergenza asse esteso 485
4* @param [in] dec Decelerazione arresto emergenza asse esteso 485
5* @return Codice errore
6*/
7int AuxServoSetEmergencyStopAcc(double acc, double dec)
13.14. Ottenere Accelerazione/Decelerazione Movimento Assi Estesi 485
1/**
2* @brief Ottiene accelerazione/decelerazione movimento assi estesi 485
3* @return List[0]:Codice errore; List[1]:Accelerazione movimento asse esteso 485; List[2]:Decelerazione movimento asse esteso 485
4*/
5List<Number> AuxServoGetAcc()
13.15. Ottenere Accelerazione/Decelerazione Arresto Emergenza Assi Estesi 485
1/**
2* @brief Ottiene accelerazione/decelerazione arresto emergenza assi estesi 485
3* @return List[0]:Codice errore; List[1]:Accelerazione arresto emergenza asse esteso 485; List[2]:Decelerazione arresto emergenza asse esteso 485
4*/
5List<Number> AuxServoGetEmergencyStopAcc()
13.16. Esempio Codice Controllo Assi Estesi
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. Configurazione Parametri Comunicazione Assi Estesi UDP
Cambiato nella versione Java: SDK-v1.0.5-3.8.2
1/**
2* @brief Configurazione parametri comunicazione assi estesi UDP
3* @param [in] param Parametri comunicazione
4* @return Codice errore
5*/
6int ExtDevSetUDPComParam(UDPComParam param);
13.18. Ottenere Configurazione Parametri Comunicazione Assi Estesi UDP
1/**
2* @brief Ottiene i parametri di comunicazione UDP per assi di estensione
3* @param [out] ip Indirizzo IP del PLC
4* @param [out] port Numero di porta
5* @param [out] period Periodo di comunicazione (ms, default è 2, non modificare questo parametro)
6* @param [out] lossPkgTime Tempo di rilevamento perdita pacchetti (ms)
7* @param [out] lossPkgNum Numero di perdite di pacchetti
8* @param [out] disconnectTime Durata di conferma disconnessione comunicazione
9* @param [out] reconnectEnable Abilitazione riconnessione automatica alla disconnessione della comunicazione 0-disabilitato 1-abilitato
10* @param [out] reconnectPeriod Intervallo di riconnessione (ms)
11* @param [out] reconnectNum Numero di tentativi di riconnessione
12* @param [out] selfConnect Riconnessione automatica dopo riavvio del box di controllo; 0-nessuna riconnessione; 1-riconnessione
13* @return Codice di errore
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. Caricare Comunicazione UDP
1/**
2* @brief Carica comunicazione UDP
3* @return Codice errore
4*/
5int ExtDevLoadUDPDriver();
13.20. Scaricare Comunicazione UDP
1/**
2* @brief Scarica comunicazione UDP
3* @return Codice errore
4*/
5int ExtDevUnloadUDPDriver();
13.21. Ripristinare Connessione dopo Interruzione Anomala Comunicazione Assi Estesi UDP
1/**
2* @brief Ripristina connessione dopo interruzione anomala comunicazione assi estesi UDP
3* @return Codice errore
4*/
5int ExtDevUDPClientComReset();
13.22. Chiudere Comunicazione dopo Interruzione Anomala Assi Estesi UDP
1/**
2* @brief Chiude comunicazione dopo interruzione anomala assi estesi UDP
3* @return Codice errore
4*/
5int ExtDevUDPClientComClose();
13.23. Configurazione Parametri Assi Estesi UDP
1/**
2* @brief Configurazione parametri assi estesi UDP
3* @param [in] axisID Numero asse
4* @param [in] axisType Tipo asse esteso 0-traslazionale; 1-rotazionale
5* @param [in] axisDirection Direzione asse esteso 0-positiva; 1-negativa
6* @param [in] axisMax Posizione massima asse esteso mm
7* @param [in] axisMin Posizione minima asse esteso mm
8* @param [in] axisVel Velocità mm/s
9* @param [in] axisAcc Accelerazione mm/s2
10* @param [in] axisLead Passo vite mm
11* @param [in] encResolution Risoluzione encoder
12* @param [in] axisOffect Offset asse esteso punto inizio giunto saldatura
13* @param [in] axisCompany Produttore driver 1-Hechuan; 2-Inovance; 3-Panasonic
14* @param [in] axisModel Modello driver 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 Tipo encoder 0-incrementale; 1-assoluto
16* @return Codice errore
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. Acquisizione Parametri Asse Esteso UDP
1/**
2* @brief Acquisizione parametri asse esteso UDP
3* @param axisID Numero asse esteso [1-4]
4* @param params Array parametri in uscita, lunghezza 12, ordine:
5* [0] axisType Tipo asse esteso 0-lineare; 1-rotante
6* [1] axisDirection Direzione asse esteso 0-positiva; 1-negativa
7* [2] axisMax Posizione massima asse esteso mm
8* [3] axisMin Posizione minima asse esteso mm
9* [4] axisVel Velocità mm/s
10* [5] axisAcc Accelerazione mm/s²
11* [6] axisLead Passo mm
12* [7] encResolution Risoluzione encoder
13* [8] axisOffect Offset asse esteso del punto di inizio saldatura
14* [9] axisCompany Produttore driver 1-Hechen; 2-Inovance; 3-Panasonic
15* [10] axisModel Modello driver
16* [11] axisEncType Tipo encoder 0-incrementale; 1-assoluto
17* @return Codice di errore
18*/
19public int ExtAxisGetParamConfig(int axisID, Object[] params)
13.25. Impostare Posizione Installazione Asse Esteso
1/**
2* @brief Imposta posizione installazione asse esteso
3* @param [in] installType 0-robot installato sull'asse esterno, 1-robot installato fuori dall'asse esterno
4* @return Codice errore
5*/
6int SetRobotPosToAxis(int installType);
13.26. Configurazione Parametri DH Sistema Assi Estesi
1/**
2* @brief Configurazione parametri DH sistema assi estesi
3* @param [in] axisConfig Configurazione asse esterno, 0-guida lineare a singolo grado di libertà, 1-posizionatore a L a due gradi di libertà, 2-tre gradi di libertà, 3-quattro gradi di libertà, 4-posizionatore a singolo grado di libertà
4* @param [in] axisDHd1 Parametro DH asse esterno d1 mm
5* @param [in] axisDHd2 Parametro DH asse esterno d2 mm
6* @param [in] axisDHd3 Parametro DH asse esterno d3 mm
7* @param [in] axisDHd4 Parametro DH asse esterno d4 mm
8* @param [in] axisDHa1 Parametro DH asse esterno 11 mm
9* @param [in] axisDHa2 Parametro DH asse esterno a2 mm
10* @param [in] axisDHa3 Parametro DH asse esterno a3 mm
11* @param [in] axisDHa4 Parametro DH asse esterno a4 mm
12* @return Codice errore
13*/
14int SetAxisDHParaConfig(int axisConfig, double axisDHd1, double axisDHd2, double axisDHd3, double axisDHd4, double axisDHa1, double axisDHa2, double axisDHa3, double axisDHa4);
13.27. Abilitazione Asse Esteso UDP
1/**
2* @brief Abilitazione asse esteso UDP
3* @param [in] axisID Numero asse [1-4]
4* @param [in] status 0-disabilitato; 1-abilitato
5* @return Codice errore
6*/
7int ExtAxisServoOn(int axisID, int status);
13.28. Homing Asse Esteso UDP
1/**
2* @brief Homing asse esteso UDP
3* @param [in] axisID Numero asse [1-4]
4* @param [in] mode Modalità homing 0-homing posizione corrente, 1-homing limite negativo, 2-homing limite positivo
5* @param [in] searchVel Velocità ricerca homing (mm/s)
6* @param [in] latchVel Velocità aggancio homing (mm/s)
7* @return Codice errore
8*/
9int ExtAxisSetHoming(int axisID, int mode, double searchVel, double latchVel);
13.29. Inizio Jog Asse Esteso UDP
1/**
2* @brief Inizio jog asse esteso UDP
3* @param [in] axisID Numero asse [1-4]
4* @param [in] direction Direzione rotazione 0-negativa; 1-positiva
5* @param [in] vel Velocità (mm/s)
6* @param [in] acc Accelerazione (mm/s2)
7* @param [in] maxDistance Distanza massima jog
8* @return Codice errore
9*/
10int ExtAxisStartJog(int axisID, int direction, double vel, double acc, double maxDistance);
13.30. Arresto Jog Asse Esteso UDP
1/**
2* @brief Arresto jog asse esteso UDP
3* @param [in] axisID Numero asse [1-4]
4* @return Codice errore
5*/
6int ExtAxisStopJog(int axisID);
13.31. Esempio Codice Configurazione e Jog Assi Estesi UDP
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. Impostare Punto Riferimento Sistema Coordinate Assi Estesi - Metodo a Quattro Punti
1/**
2* @brief Imposta punto riferimento sistema coordinate assi estesi - metodo a quattro punti
3* @param [in] pointNum Numero punto [1-4]
4* @return Codice errore
5*/
6int ExtAxisSetRefPoint(int pointNum);
13.33. Calcolare Sistema Coordinate Assi Estesi - Metodo a Quattro Punti
1/**
2* @brief Calcola sistema coordinate assi estesi - metodo a quattro punti
3* @param [out] coord Valori sistema coordinate
4* @return Codice errore
5*/
6int ExtAxisComputeECoordSys(DescPose coord);
13.34. Impostare Punto Riferimento Sistema Coordinate Posizionatore
1/**
2* @brief Imposta punto riferimento sistema coordinate posizionatore
3* @param [in] pointNum Numero punto [1-4]
4* @return Codice errore
5*/
6int PositionorSetRefPoint(int pointNum);
13.35. Calcolare Sistema Coordinate Posizionatore - Metodo a Quattro Punti
1/**
2* @brief Calcola sistema coordinate posizionatore - metodo a quattro punti
3* @param [out] coord Valori sistema coordinate
4* @return Codice errore
5*/
6int PositionorComputeECoordSys(DescPose coord);
13.36. Impostare Posa Punto Riferimento Calibrazione nel Sistema Coordinate Estremità Posizionatore
1/**
2* @brief Imposta posa punto riferimento calibrazione nel sistema coordinate estremità posizionatore
3* @param [in] pos Valore posa
4* @return Codice errore
5*/
6int SetRefPointInExAxisEnd(DescPose pos);
13.37. Applicare Sistema Coordinate Assi Estesi
1/**
2* @brief Applica sistema coordinate assi estesi
3* @param [in] applyAxisId Numero asse esteso bit0-bit3 corrisponde a numero asse esteso 1-4, es. applica assi estesi 1 e 3, allora 0b 0000 0101; cioè 5
4* @param [in] axisCoordNum Numero sistema coordinate assi estesi
5* @param [in] coord Valori sistema coordinate
6* @param [in] calibFlag Flag calibrazione 0-no, 1-sì
7* @return Codice errore
8*/
9int ExtAxisActiveECoordSys(int applyAxisId, int axisCoordNum, DescPose coord, int calibFlag);
13.38. Ottenere Sistema Coordinate Assi Estesi
Nuovo nella versione Java: SDK-v1.0.5-3.8.2
1/**
2* @brief Ottiene sistema coordinate assi estesi
3* @param [out] coord Sistema coordinate assi estesi
4* @return Codice errore
5*/
6int ExtAxisGetCoord(DescPose coord);
13.39. Esempio Codice Calibrazione Sistema Coordinate Assi Estesi
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
16 robot.Sleep(4000);
17
18 rtn = robot.SetRobotPosToAxis(1);
19 rtn = robot.SetAxisDHParaConfig(1, 128.5, 206.4, 0, 0, 0, 0, 0, 0);
20 rtn = robot.ExtAxisParamConfig(1, 1, 1, 1000, -1000, 1000, 1000, 1.905, 262144, 200, 1, 0, 0);
21 rtn = robot.ExtAxisParamConfig(2, 1, 1, 1000, -1000, 1000, 1000, 4.444, 262144, 200, 1, 0, 0);
22
23 DescPose toolCoord=new DescPose(0, 0, 210, 0, 0, 0);
24 robot.SetToolCoord(1, toolCoord, 0, 0, 1, 0);
25
26 JointPos jSafe=new JointPos(115.193, -96.149, 92.489, -87.068, -89.15, -83.488);
27 JointPos j1=new JointPos(117.559, -92.624, 100.329, -96.909, -94.057, -83.488);
28 JointPos j2=new JointPos(112.239, -90.096, 99.282, -95.909, -89.824, -83.488);
29 JointPos j3=new JointPos(110.839, -83.473, 93.166, -89.22, -90.499, -83.487);
30 JointPos j4=new JointPos(107.935, -83.572, 95.424, -92.873, -87.933, -83.488);
31
32 DescPose descSafe =new DescPose(0,0,0,0,0,0);
33 DescPose desc1 = new DescPose(0,0,0,0,0,0);
34 DescPose desc2 = new DescPose(0,0,0,0,0,0);
35 DescPose desc3 = new DescPose(0,0,0,0,0,0);
36 DescPose desc4 = new DescPose(0,0,0,0,0,0);
37 ExaxisPos exaxisPos =new ExaxisPos(0,0,0,0);
38 DescPose offdese =new DescPose(0, 0, 0, 0, 0, 0);
39
40 robot.GetForwardKin(jSafe, descSafe);
41 robot.MoveJ(jSafe, descSafe, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
42 robot.Sleep(2000);
43
44 robot.GetForwardKin(j1, desc1);
45 robot.MoveJ(j1, desc1, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
46 robot.Sleep(2000);
47
48 DescPose actualTCPPos =new DescPose(0,0,0,0,0,0);
49
50 robot.GetActualTCPPose(actualTCPPos);
51 robot.SetRefPointInExAxisEnd(actualTCPPos);
52 rtn = robot.PositionorSetRefPoint(1);
53 robot.Sleep(2000);
54
55 robot.MoveJ(jSafe, descSafe, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
56 robot.ExtAxisStartJog(1, 0, 50, 50, 10);
57 robot.Sleep(1000);
58 robot.ExtAxisStartJog(2, 0, 50, 50, 10);
59 robot.Sleep(1000);
60 robot.GetForwardKin(j2, desc2);
61 rtn = robot.MoveJ(j2, desc2, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
62 rtn = robot.PositionorSetRefPoint(2);
63 robot.Sleep(2000);
64
65 robot.MoveJ(jSafe, descSafe, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
66 robot.ExtAxisStartJog(1, 0, 50, 50, 10);
67 robot.Sleep(1000);
68 robot.ExtAxisStartJog(2, 0, 50, 50, 10);
69 robot.Sleep(1000);
70 robot.GetForwardKin(j3, desc3);
71 robot.MoveJ(j3, desc3, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
72 rtn = robot.PositionorSetRefPoint(3);
73 robot.Sleep(2000);
74
75 robot.MoveJ(jSafe, descSafe, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
76 robot.ExtAxisStartJog(1, 0, 50, 50, 10);
77 robot.Sleep(1000);
78 robot.ExtAxisStartJog(2, 0, 50, 50, 10);
79 robot.Sleep(1000);
80 robot.GetForwardKin(j4, desc4);
81 robot.MoveJ(j4, desc4, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
82 rtn = robot.PositionorSetRefPoint(4);
83 robot.Sleep(2000);
84
85 DescPose axisCoord = new DescPose();
86 robot.PositionorComputeECoordSys(axisCoord);
87 robot.MoveJ(jSafe, descSafe, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
88 rtn = robot.ExtAxisActiveECoordSys(3, 1, axisCoord, 1);
89
90 robot.CloseRPC();
91 return 0;
92}
13.40. Movimento Asse Esteso UDP
Cambiato nella versione Java: SDK-v1.0.7-3.8.4
1/**
2* @brief Movimento asse esteso UDP
3* @param [in] pos Posizione target
4* @param [in] ovl Percentuale velocità
5* @param [in] blend Parametro smoothing (mm o ms)
6* @return Codice errore
7*/
8int ExtAxisMove(ExaxisPos pos, double ovl, double blend)
13.41. Esempio Codice Movimento Asse Esteso UDP
1public static int TestUDPAxisMove(Robot robot)
2{
3 ExaxisPos exaxisPos = new ExaxisPos( 20, 0, 0, 0 );
4 robot.ExtAxisMove(exaxisPos,40,0);
5 robot.CloseRPC();
6 return 0;
7}
13.42. Movimento Sincrono Assi Estesi UDP e Giunti Robot
1/**
2* @brief Movimento sincrono assi estesi UDP e giunti robot
3* @param [in] joint_pos Posizione target giunti, unità deg
4* @param [in] desc_pos Posa target cartesiana
5* @param [in] tool Numero sistema coordinate utensile, range [0~14]
6* @param [in] user Numero sistema coordinate pezzo, range [0~14]
7* @param [in] vel Percentuale velocità, range [0~100]
8* @param [in] acc Percentuale accelerazione, range [0~100], non ancora disponibile
9* @param [in] ovl Fattore scala velocità, range [0~100]
10* @param [in] epos Posizione assi estesi, unità mm
11* @param [in] blendT [-1.0]-movimento in posizione (bloccante), [0~500.0]-tempo smoothing (non bloccante), unità ms
12* @param [in] offset_flag 0-nessun offset, 1-offset in sistema base/pezzo, 2-offset in sistema utensile
13* @param [in] offset_pos Offset posa
14* @return Codice errore
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. Movimento Sincrono Assi Estesi UDP e Giunti Robot (Calcolo Cinematica Diretta Automatico)
Nuovo nella versione Java: SDK-v1.0.8-3.8.5
1/**
2* @brief Movimento sincrono assi estesi UDP e giunti robot (calcolo cinematica diretta automatico)
3* @param [in] joint_pos Posizione target giunti, unità deg
4* @param [in] tool Numero sistema coordinate utensile, range [0~14]
5* @param [in] user Numero sistema coordinate pezzo, range [0~14]
6* @param [in] vel Percentuale velocità, range [0~100]
7* @param [in] acc Percentuale accelerazione, range [0~100], non ancora disponibile
8* @param [in] ovl Fattore scala velocità, range [0~100]
9* @param [in] epos Posizione assi estesi, unità mm
10* @param [in] blendT [-1.0]-movimento in posizione (bloccante), [0~500.0]-tempo smoothing (non bloccante), unità ms
11* @param [in] offset_flag 0-nessun offset, 1-offset in sistema base/pezzo, 2-offset in sistema utensile
12* @param [in] offset_pos Offset posa
13* @return Codice errore
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. Esempio Codice Movimento Sincrono Assi Estesi UDP e Giunti Robot
1public int testSyncMoveJ(Robot robot)
2{
3 //1. Calibrare e applicare sistema coordinate utensile robot, è possibile utilizzare metodo a quattro o sei punti per calibrazione e applicazione sistema coordinate utensile, interfacce coinvolte:
4 // int SetToolPoint(int point_num); //Imposta punto riferimento utensile - metodo a sei punti
5 // int ComputeTool(ref DescPose tcp_pose); //Calcola sistema coordinate utensile
6 // int SetTcp4RefPoint(int point_num); //Imposta punto riferimento utensile - metodo a quattro punti
7 // int ComputeTcp4(ref DescPose tcp_pose); //Calcola sistema coordinate utensile - metodo a quattro punti
8 // int SetToolCoord(int id, DescPose coord, int type, int install); //Imposta e applica sistema coordinate utensile
9 // int SetToolList(int id, DescPose coord, int type, int install); //Imposta e applica lista sistemi coordinate utensile
10 //2. Impostare parametri comunicazione UDP e caricare comunicazione UDP
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. Impostare parametri assi estesi, incluso tipo asse esteso, parametri driver asse esteso, parametri DH asse esteso
15 robot.SetAxisDHParaConfig(4, 200, 200, 0, 0, 0, 0, 0, 0); //Posizionatore monoasse e parametri DH
16 robot.SetRobotPosToAxis(1); //Posizione installazione assi estesi
17 robot.ExtAxisParamConfig(1, 0, 1, 100, -100, 10, 10, 12, 131072, 0, 1, 0, 0); //Parametri driver servo, questo esempio è posizionatore monoasse, quindi basta un set di parametri driver, se si sceglie tipo asse esteso con più assi, ogni asse richiede parametri driver
18 //4. Impostare abilitazione e homing degli assi selezionati
19 robot.ExtAxisServoOn(1, 0);
20 robot.ExtAxisSetHoming(1, 0, 20, 3);
21 //5. Eseguire calibrazione e applicazione sistema coordinate assi estesi
22 DescPose pos = new DescPose(/* Inserire coordinate punto calibrazione */ );
23 robot.SetRefPointInExAxisEnd(pos);
24 robot.PositionorSetRefPoint(1); /* Sono necessari quattro punti in posizioni diverse per calibrare asse esteso, quindi chiamare questa interfaccia 4 volte per completare calibrazione */
25 DescPose coord = new DescPose();
26 robot.PositionorComputeECoordSys(coord); //Calcola risultato calibrazione asse esteso
27 robot.ExtAxisActiveECoordSys(1, 1, coord, 1); //Applica risultato calibrazione a sistema coordinate asse esteso
28 //6. Calibrare sistema coordinate pezzo su asse esteso, necessarie seguenti interfacce
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. Registrare punto di partenza movimento sincrono giunti
34 DescPose startdescPose = new DescPose(/*Inserire coordinate*/ );
35 JointPos startjointPos = new JointPos(/*Inserire coordinate*/ );
36 ExaxisPos startexaxisPos = new ExaxisPos(/* Inserire coordinate punto partenza asse esteso */ );
37 //8. Registrare coordinate punto arrivo movimento sincrono giunti
38 DescPose enddescPose = new DescPose(/*Inserire coordinate*/ );
39 JointPos endjointPos = new JointPos(/*Inserire coordinate*/ );
40 ExaxisPos endexaxisPos =new ExaxisPos(/* Inserire coordinate punto arrivo asse esteso */);
41 //9. Scrivere programma movimento sincrono
42 //Spostarsi al punto di partenza, assumendo sistemi coordinate utensile e pezzo applicati entrambi 1
43 robot.ExtAxisMove(startexaxisPos, 20, 0);
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 //Iniziare movimento sincrono
47 robot.ExtAxisSyncMoveJ(endjointPos, enddescPose, 1, 1, 100, 100, 100, endexaxisPos, -1, 0, offdese);
48 robot.MoveJ(startjointPos, 1, 1, 100, 100, 100, startexaxisPos, 0, 0, offdese);
49 //Iniziare movimento sincrono
50 robot.ExtAxisSyncMoveJ(endjointPos, 1, 1, 100, 100, 100, endexaxisPos, -1, 0, offdese);
51 robot.CloseRPC();
52 return 0;
53}
13.45. Movimento Lineare Sincrono Assi Estesi UDP e Robot
1/**
2* @brief Movimento lineare sincrono assi estesi UDP e robot
3* @param [in] joint_pos Posizione target giunti, unità deg
4* @param [in] desc_pos Posa target cartesiana
5* @param [in] tool Numero sistema coordinate utensile, range [0~14]
6* @param [in] user Numero sistema coordinate pezzo, range [0~14]
7* @param [in] vel Percentuale velocità, range [0~100]
8* @param [in] acc Percentuale accelerazione, range [0~100], non ancora disponibile
9* @param [in] ovl Fattore scala velocità, range [0~100]
10* @param [in] blendR [-1.0]-movimento in posizione (bloccante), [0~1000.0]-raggio smoothing (non bloccante), unità mm
11* @param [in] epos Posizione assi estesi, unità mm
12* @param [in] offset_flag 0-nessun offset, 1-offset in sistema base/pezzo, 2-offset in sistema utensile
13* @param [in] offset_pos Offset posa
14* @return Codice errore
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. Movimento Lineare Sincrono Assi Estesi UDP e Robot (Calcolo Cinematica Inversa Automatico)
Nuovo nella versione Java: SDK-v1.0.8-3.8.5
1/**
2* @brief Movimento lineare sincrono assi estesi UDP e robot (calcolo cinematica inversa automatico)
3* @param [in] desc_pos Posa target cartesiana
4* @param [in] tool Numero sistema coordinate utensile, range [0~14]
5* @param [in] user Numero sistema coordinate pezzo, range [0~14]
6* @param [in] vel Percentuale velocità, range [0~100]
7* @param [in] acc Percentuale accelerazione, range [0~100], non ancora disponibile
8* @param [in] ovl Fattore scala velocità, range [0~100]
9* @param [in] blendR [-1.0]-movimento in posizione (bloccante), [0~1000.0]-raggio smoothing (non bloccante), unità mm
10* @param [in] epos Posizione assi estesi, unità mm
11* @param [in] offset_flag 0-nessun offset, 1-offset in sistema base/pezzo, 2-offset in sistema utensile
12* @param [in] offset_pos Offset posa
13* @param [in] config Configurazione spazio giunti soluzione inversa, [-1]-riferimento posizione giunti corrente, [0~7]-risoluzione basata specifica configurazione spazio giunti
14* @return Codice errore
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. Esempio Codice Movimento Lineare Sincrono Assi Estesi UDP e Robot
1public int testSyncMoveL(Robot robot)
2{
3 //1. Calibrare e applicare sistema coordinate utensile robot, è possibile utilizzare metodo a quattro o sei punti per calibrazione e applicazione sistema coordinate utensile, interfacce coinvolte:
4 // int SetToolPoint(int point_num); //Imposta punto riferimento utensile - metodo a sei punti
5 // int ComputeTool(ref DescPose tcp_pose); //Calcola sistema coordinate utensile
6 // int SetTcp4RefPoint(int point_num); //Imposta punto riferimento utensile - metodo a quattro punti
7 // int ComputeTcp4(ref DescPose tcp_pose); //Calcola sistema coordinate utensile - metodo a quattro punti
8 // int SetToolCoord(int id, DescPose coord, int type, int install); //Imposta e applica sistema coordinate utensile
9 // int SetToolList(int id, DescPose coord, int type, int install); //Imposta e applica lista sistemi coordinate utensile
10 //2. Impostare parametri comunicazione UDP e caricare comunicazione UDP
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. Impostare parametri assi estesi, incluso tipo asse esteso, parametri driver asse esteso, parametri DH asse esteso
15 robot.SetAxisDHParaConfig(4, 200, 200, 0, 0, 0, 0, 0, 0); //Posizionatore monoasse e parametri DH
16 robot.SetRobotPosToAxis(1); //Posizione installazione assi estesi
17 robot.ExtAxisParamConfig(1, 0, 1, 100, -100, 10, 10, 12, 131072, 0, 1, 0, 0); //Parametri driver servo, questo esempio è posizionatore monoasse, quindi basta un set di parametri driver, se si sceglie tipo asse esteso con più assi, ogni asse richiede parametri driver
18 //4. Impostare abilitazione e homing degli assi selezionati
19 robot.ExtAxisServoOn(1, 0);
20 robot.ExtAxisSetHoming(1, 0, 20, 3);
21 //5. Eseguire calibrazione e applicazione sistema coordinate assi estesi
22 DescPose pos = new DescPose(/* Inserire coordinate punto calibrazione */ );
23 robot.SetRefPointInExAxisEnd(pos);
24 robot.PositionorSetRefPoint(1); /* Sono necessari quattro punti in posizioni diverse per calibrare asse esteso, quindi chiamare questa interfaccia 4 volte per completare calibrazione */
25 DescPose coord = new DescPose();
26 robot.PositionorComputeECoordSys(coord); //Calcola risultato calibrazione asse esteso
27 robot.ExtAxisActiveECoordSys(1, 1, coord, 1); //Applica risultato calibrazione a sistema coordinate asse esteso
28 //6. Calibrare sistema coordinate pezzo su asse esteso, necessarie seguenti interfacce
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. Registrare punto di partenza movimento lineare sincrono
34 DescPose startdescPose = new DescPose(/*Inserire coordinate*/ );
35 JointPos startjointPos = new JointPos(/*Inserire coordinate*/ );
36 ExaxisPos startexaxisPos = new ExaxisPos(/* Inserire coordinate punto partenza asse esteso */ );
37 //8. Registrare coordinate punto arrivo movimento lineare sincrono
38 DescPose enddescPose = new DescPose(/*Inserire coordinate*/ );
39 JointPos endjointPos = new JointPos(/*Inserire coordinate*/ );
40 ExaxisPos endexaxisPos =new ExaxisPos(/* Inserire coordinate punto arrivo asse esteso */);
41 //9. Scrivere programma movimento sincrono
42 //Spostarsi al punto di partenza, assumendo sistemi coordinate utensile e pezzo applicati entrambi 1
43 robot.ExtAxisMove(startexaxisPos, 20, 0);
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 //Iniziare movimento sincrono
47 robot.ExtAxisSyncMoveL(endjointPos, enddescPose, 1, 1, 100, 100, 100, 0, endexaxisPos, 0, offdese);
48 robot.MoveJ(startjointPos, 1, 1, 100, 100, 100, startexaxisPos, 0, 0, offdese);
49 //Iniziare movimento sincrono
50 robot.ExtAxisSyncMoveL(enddescPose, 1, 1, 100, 100, 100, 0, endexaxisPos, 0, offdese,-1);
51 robot.CloseRPC();
52 return 0;
53}
13.48. Movimento Arco Sincrono Assi Estesi UDP e Robot
1/**
2* @brief Movimento arco sincrono assi estesi UDP e robot
3* @param [in] joint_pos_p Posizione giunti punto percorso, unità deg
4* @param [in] desc_pos_p Posa cartesiana punto percorso
5* @param [in] ptool Numero sistema coordinate utensile, range [0~14]
6* @param [in] puser Numero sistema coordinate pezzo, range [0~14]
7* @param [in] pvel Percentuale velocità, range [0~100]
8* @param [in] pacc Percentuale accelerazione, range [0~100], non ancora disponibile
9* @param [in] epos_p Posizione assi estesi punto intermedio, unità mm
10* @param [in] poffset_flag 0-nessun offset, 1-offset in sistema base/pezzo, 2-offset in sistema utensile
11* @param [in] offset_pos_p Offset posa
12* @param [in] joint_pos_t Posizione giunti punto target, unità deg
13* @param [in] desc_pos_t Posa cartesiana punto target
14* @param [in] ttool Numero sistema coordinate utensile, range [0~14]
15* @param [in] tuser Numero sistema coordinate pezzo, range [0~14]
16* @param [in] tvel Percentuale velocità, range [0~100]
17* @param [in] tacc Percentuale accelerazione, range [0~100], non ancora disponibile
18* @param [in] epos_t Posizione assi estesi, unità mm
19* @param [in] toffset_flag 0-nessun offset, 1-offset in sistema base/pezzo, 2-offset in sistema utensile
20* @param [in] offset_pos_t Offset posa
21* @param [in] ovl Fattore scala velocità, range [0~100]
22* @param [in] blendR [-1.0]-movimento in posizione (bloccante), [0~1000.0]-raggio smoothing (non bloccante), unità mm
23* @return Codice errore
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. Movimento Arco Sincrono Assi Estesi UDP e Robot (Calcolo Cinematica Inversa Automatico)
Nuovo nella versione Java: SDK-v1.0.8-3.8.5
1/**
2* @brief Movimento arco sincrono assi estesi UDP e robot (calcolo cinematica inversa automatico)
3* @param [in] desc_pos_p Posa cartesiana punto percorso
4* @param [in] ptool Numero sistema coordinate utensile, range [0~14]
5* @param [in] puser Numero sistema coordinate pezzo, range [0~14]
6* @param [in] pvel Percentuale velocità, range [0~100]
7* @param [in] pacc Percentuale accelerazione, range [0~100], non ancora disponibile
8* @param [in] epos_p Posizione assi estesi, unità mm
9* @param [in] poffset_flag 0-nessun offset, 1-offset in sistema base/pezzo, 2-offset in sistema utensile
10* @param [in] offset_pos_p Offset posa
11* @param [in] desc_pos_t Posa cartesiana punto target
12* @param [in] ttool Numero sistema coordinate utensile, range [0~14]
13* @param [in] tuser Numero sistema coordinate pezzo, range [0~14]
14* @param [in] tvel Percentuale velocità, range [0~100]
15* @param [in] tacc Percentuale accelerazione, range [0~100], non ancora disponibile
16* @param [in] epos_t Posizione assi estesi, unità mm
17* @param [in] toffset_flag 0-nessun offset, 1-offset in sistema base/pezzo, 2-offset in sistema utensile
18* @param [in] offset_pos_t Offset posa
19* @param [in] ovl Fattore scala velocità, range [0~100]
20* @param [in] blendR [-1.0]-movimento in posizione (bloccante), [0~1000.0]-raggio smoothing (non bloccante), unità mm
21* @param [in] config Configurazione spazio giunti soluzione inversa, [-1]-riferimento posizione giunti corrente, [0~7]-risoluzione basata specifica configurazione spazio giunti
22* @return Codice errore
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. Esempio Codice Movimento Arco Sincrono Assi Estesi UDP e Robot
1public int testSyncMoveC(Robot robot)
2{
3 //1. Calibrare e applicare sistema coordinate utensile robot, è possibile utilizzare metodo a quattro o sei punti per calibrazione e applicazione sistema coordinate utensile, interfacce coinvolte:
4 // int SetToolPoint(int point_num); //Imposta punto riferimento utensile - metodo a sei punti
5 // int ComputeTool(ref DescPose tcp_pose); //Calcola sistema coordinate utensile
6 // int SetTcp4RefPoint(int point_num); //Imposta punto riferimento utensile - metodo a quattro punti
7 // int ComputeTcp4(ref DescPose tcp_pose); //Calcola sistema coordinate utensile - metodo a quattro punti
8 // int SetToolCoord(int id, DescPose coord, int type, int install); //Imposta e applica sistema coordinate utensile
9 // int SetToolList(int id, DescPose coord, int type, int install); //Imposta e applica lista sistemi coordinate utensile
10 //2. Impostare parametri comunicazione UDP e caricare comunicazione UDP
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. Impostare parametri assi estesi, incluso tipo asse esteso, parametri driver asse esteso, parametri DH asse esteso
15 robot.SetAxisDHParaConfig(4, 200, 200, 0, 0, 0, 0, 0, 0); //Posizionatore monoasse e parametri DH
16 robot.SetRobotPosToAxis(1); //Posizione installazione assi estesi
17 robot.ExtAxisParamConfig(1, 0, 1, 100, -100, 10, 10, 12, 131072, 0, 1, 0, 0); //Parametri driver servo, questo esempio è posizionatore monoasse, quindi basta un set di parametri driver, se si sceglie tipo asse esteso con più assi, ogni asse richiede parametri driver
18 //4. Impostare abilitazione e homing degli assi selezionati
19 robot.ExtAxisServoOn(1, 0);
20 robot.ExtAxisSetHoming(1, 0, 20, 3);
21 //5. Eseguire calibrazione e applicazione sistema coordinate assi estesi
22 DescPose pos = new DescPose(/* Inserire coordinate punto calibrazione */ );
23 robot.SetRefPointInExAxisEnd(pos);
24 robot.PositionorSetRefPoint(1); /* Sono necessari quattro punti in posizioni diverse per calibrare asse esteso, quindi chiamare questa interfaccia 4 volte per completare calibrazione */
25 DescPose coord = new DescPose();
26 robot.PositionorComputeECoordSys(coord); //Calcola risultato calibrazione asse esteso
27 robot.ExtAxisActiveECoordSys(1, 1, coord, 1); //Applica risultato calibrazione a sistema coordinate asse esteso
28 //6. Calibrare sistema coordinate pezzo su asse esteso, necessarie seguenti interfacce
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. Registrare punto di partenza movimento arco sincrono
34 DescPose startdescPose = new DescPose(/*Inserire coordinate*/ );
35 JointPos startjointPos = new JointPos(/*Inserire coordinate*/ );
36 ExaxisPos startexaxisPos = new ExaxisPos(/* Inserire coordinate punto partenza asse esteso */ );
37 //8. Registrare coordinate punto arrivo movimento arco sincrono
38 DescPose enddescPose = new DescPose(/*Inserire coordinate*/ );
39 JointPos endjointPos = new JointPos(/*Inserire coordinate*/ );
40 ExaxisPos endexaxisPos = new ExaxisPos(/* Inserire coordinate punto arrivo asse esteso */ );
41 //9. Registrare coordinate punto intermedio movimento arco sincrono
42 DescPose middescPose = new DescPose(/*Inserire coordinate*/ );
43 JointPos midjointPos =new JointPos(/*Inserire coordinate*/ );
44 ExaxisPos midexaxisPos = new ExaxisPos(/* Inserire coordinate asse esteso a punto intermedio arco robot */ );
45 //10. Scrivere programma movimento sincrono
46 //Spostarsi al punto di partenza, assumendo sistemi coordinate utensile e pezzo applicati entrambi 1
47 robot.ExtAxisMove(startexaxisPos, 20, 0);
48 DescPose offdese = new DescPose( 0, 0, 0, 0, 0, 0 );
49 robot.MoveJ(startjointPos, startdescPose, 1, 1, 100, 100, 100, startexaxisPos, 0, 0, offdese);
50 //Iniziare movimento sincrono
51 robot.ExtAxisSyncMoveC(midjointPos, middescPose, 1, 1, 100, 100, midexaxisPos, 0, offdese, endjointPos, enddescPose, 1, 1, 100, 100, endexaxisPos, 0, offdese, 100, 0);
52 robot.MoveJ(startjointPos, 1, 1, 100, 100, 100, startexaxisPos, 0, 0, offdese);
53 //Iniziare movimento sincrono
54 robot.ExtAxisSyncMoveC(middescPose, 1, 1, 100, 100, midexaxisPos, 0, offdese, enddescPose, 1, 1, 100, 100, endexaxisPos, 0, offdese, 100, 0,-1);
55 robot.CloseRPC();
56 return 0;
57}
13.51. Impostare DO Esteso
1/**
2* @brief Imposta DO esteso
3* @param [in] DONum Numero DO
4* @param [in] bOpen Interruttore true-acceso; false-spento
5* @param [in] smooth Smoothing
6* @param [in] block Blocco
7* @return Codice errore
8*/
9int SetAuxDO(int DONum, boolean bOpen, boolean smooth, boolean block);
13.52. Impostare AO Esteso
1/**
2* @brief Imposta AO esteso
3* @param [in] AONum Numero AO
4* @param [in] value Valore analogico [0-4095]
5* @param [in] block Blocco
6* @return Codice errore
7*/
8int SetAuxAO(int AONum, double value, boolean block);
13.53. Impostare Tempo Filtro Input DI Esteso
1/**
2* @brief Imposta tempo filtro input DI esteso
3* @param [in] filterTime Tempo filtro (ms)
4* @return Codice errore
5*/
6int SetAuxDIFilterTime(int filterTime);
13.54. Impostare Tempo Filtro Input AI Esteso
1/**
2* @brief Imposta tempo filtro input AI esteso
3* @param [in] AONum Numero AO
4* @param [in] filterTime Tempo filtro (ms)
5* @return Codice errore
6*/
7int SetAuxAIFilterTime(int AONum, int filterTime);
13.55. Attendere Input DI Esteso
1/**
2* @brief Attende input DI esteso
3* @param [in] DINum Numero DI
4* @param [in] bOpen Interruttore 0-spento; 1-acceso
5* @param [in] time Tempo attesa massimo (ms)
6* @param [in] errorAlarm Continuare movimento
7* @return Codice errore
8*/
9int WaitAuxDI(int DINum, boolean bOpen, int time, boolean errorAlarm);
13.56. Attendere Input AI Esteso
1/**
2* @brief Attende input AI esteso
3* @param [in] AINum Numero AI
4* @param [in] sign 0-maggiore; 1-minore
5* @param [in] value Valore AI
6* @param [in] time Tempo attesa massimo (ms)
7* @param [in] errorAlarm Continuare movimento
8* @return Codice errore
9*/
10int WaitAuxAI(int AINum, int sign, int value, int time, boolean errorAlarm);
13.57. Ottenere Valore DI Esteso
1/**
2* @brief Ottiene valore DI esteso
3* @param [in] DINum Numero DI
4* @param [in] isNoBlock Non bloccante
5* @return List[0]:Codice errore; List[1] : isOpen 0-spento; 1-acceso
6*/
7List<Integer> GetAuxDI(int DINum, boolean isNoBlock)
13.58. Ottenere Valore AI Esteso
1/**
2* @brief Ottiene valore AI esteso
3* @param [in] AINum Numero AI
4* @param [in] isNoBlock Non bloccante
5* @return List[0]:Codice errore; List[1] : value Valore input
6*/
7List<Integer> GetAuxAI(int AINum, boolean isNoBlock);
13.59. Esempio Codice IO Esteso
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
27 int curValue = -1;
28 List<Integer> liter=new ArrayList<>();
29 for (int i = 0; i < 4; i++)
30 {
31 liter = robot.GetAuxAI(i, true);
32 }
33
34 robot.WaitAuxDI(1, false, 1000, false);
35 robot.WaitAuxAI(1, 1, 132, 1000, false);
36
37 robot.CloseRPC();
38 return 0;
39}
13.60. Abilitazione Dispositivo Mobile
1/**
2* @brief Abilitazione dispositivo mobile
3* @param [in] enable false-disabilitato; true-abilitato
4* @return Codice errore
5*/
6int TractorEnable(Boolean enable);
13.61. Homing Dispositivo Mobile
1/**
2* @brief Homing dispositivo mobile
3* @return Codice errore
4*/
5int TractorHoming();
13.62. Movimento Lineare Dispositivo Mobile
1/**
2* @brief Movimento lineare dispositivo mobile
3* @param [in] distance Distanza movimento lineare (mm)
4* @param [in] vel Percentuale velocità movimento lineare (0-100)
5* @return Codice errore
6*/
7int TractorMoveL(double distance, double vel);
13.63. Movimento Arco Dispositivo Mobile
1/**
2* @brief Movimento arco dispositivo mobile
3* @param [in] radio Raggio movimento arco (mm)
4* @param [in] angle Angolo movimento arco (°)
5* @param [in] vel Percentuale velocità movimento lineare (0-100)
6* @return Codice errore
7*/
8int TractorMoveC(double radio, double angle, double vel);
13.64. Arresto Movimento Dispositivo Mobile
1/**
2* @brief Arresto movimento dispositivo mobile
3* @return Codice errore
4*/
5int TractorStop();
13.65. Esempio Codice Dispositivo Mobile
1public static void main(String[] args)
2{
3 Robot robot = new Robot();
4 robot.SetReconnectParam(true,20,500);//Imposta numero riconnessioni, intervallo
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("Connessione rpc successo");
10 }
11 else
12 {
13 System.out.println("Connessione rpc fallita");
14 return ;
15 }
16 UDPComParam param = new UDPComParam("192.168.58.88", 2021, 2, 100, 3, 100, 1, 100, 10,0);
17 robot.ExtDevSetUDPComParam(param);//comunicazione assi estesi udp
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();//arresto carrello
36 robot.TractorMoveC(300, -90, 20);
37}
13.66. Impostazione del Tempo di Completamento del Posizionamento per Assi di Estensione UDP
1/**
2* @brief Imposta il tempo di completamento del posizionamento per assi di estensione UDP
3* @param time Tempo di completamento del posizionamento [ms]
4* @return Codice di errore
5*/
6public int SetExAxisCmdDoneTime(double time)