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 parametri comunicazione assi estesi UDP
3* @param [out] param Parametri comunicazione
4* @return Codice errore
5*/
6int ExtDevGetUDPComParam(UDPComParam param);
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. 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.25. 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.26. 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.27. 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.28. 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.29. 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.30. Esempio Codice Configurazione e Jog Assi Estesi UDP
1public static int TestUDPAxis(Robot robot)//UDP
2{
3 UDPComParam para1=new UDPComParam("192.168.58.88", 2021, 2, 100, 3, 200, 1, 100, 5, 1);
4 int rtn = robot.ExtDevSetUDPComParam(para1);
5 String ip = ""; int port = 0; int period = 0; int lossPkgTime = 0; int lossPkgNum = 0; int disconnectTime = 0; int reconnectEnable = 0; int reconnectPeriod = 0; int reconnectNum = 0;
6 UDPComParam para2=new UDPComParam(ip, port, period, lossPkgTime, lossPkgNum, disconnectTime, reconnectEnable, reconnectPeriod, reconnectNum,0);
7 rtn = robot.ExtDevGetUDPComParam(para2);
8
9 robot.ExtDevLoadUDPDriver();
10
11 rtn = robot.ExtAxisServoOn(1, 1);
12 rtn = robot.ExtAxisServoOn(2, 1);
13 robot.Sleep(3000);
14
15 robot.ExtAxisSetHoming(1, 0, 10, 2);
16 robot.Sleep(3000);
17 rtn = robot.ExtAxisSetHoming(2, 0, 10, 2);
18
19 robot.Sleep(4000);
20
21 rtn = robot.SetRobotPosToAxis(1);
22 rtn = robot.SetAxisDHParaConfig(10, 20, 0, 0, 0, 0, 0, 0, 0);
23 rtn = robot.ExtAxisParamConfig(1, 1, 1, 1000, -1000, 1000, 1000, 1.905, 262144, 200, 1, 0, 0);
24 rtn = robot.ExtAxisParamConfig(2, 1, 1, 1000, -1000, 1000, 1000, 4.444, 262144, 200, 1, 0, 0);
25
26 robot.Sleep(4000);
27 robot.ExtAxisStartJog(1, 0, 10, 10, 30);
28 robot.Sleep(4000);
29 robot.ExtAxisStopJog(1);
30 robot.Sleep(4000);
31 robot.ExtAxisServoOn(1, 0);
32
33 robot.Sleep(4000);
34 robot.ExtAxisStartJog(2, 0, 10, 10, 30);
35 robot.Sleep(4000);
36 robot.ExtAxisStopJog(2);
37 robot.Sleep(4000);
38 robot.ExtAxisServoOn(2, 0);
39 robot.Sleep(4000);
40 robot.ExtDevUnloadUDPDriver();
41
42 return 0;
43}
13.31. 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.32. 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.33. 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.34. 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.35. 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.36. 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.37. 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.38. 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.39. 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.40. 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.41. 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.42. 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.43. 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.44. 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.45. 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.46. 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.47. 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.48. 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.49. 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.50. 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.51. 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.52. 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.53. 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.54. 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.55. 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.56. 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.57. 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.58. 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.59. 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.60. Homing Dispositivo Mobile
1/**
2* @brief Homing dispositivo mobile
3* @return Codice errore
4*/
5int TractorHoming();
13.61. 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.62. 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.63. Arresto Movimento Dispositivo Mobile
1/**
2* @brief Arresto movimento dispositivo mobile
3* @return Codice errore
4*/
5int TractorStop();
13.64. 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}