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}