13. Assi estesi

13.1. Imposta i parametri dell’asse esteso 485

Nuovo nella versione C#SDK-v1.0.6.

 1/**
 2* @brief Imposta i parametri dell'asse esteso 485
 3* @param [in] servoId ID servazionatore, intervallo [1-15], corrisponde all'ID slave
 4* @param [in] servoCompany Produttore servazionatore, 1-Dinatek
 5* @param [in] servoModel Modello servazionatore, 1-FD100-750C
 6* @param [in] servoSoftVersion Versione software servazionatore, 1-V1.0
 7* @param [in] servoResolution Risoluzione encoder
 8* @param [in] axisMechTransRatio Rapporto di trasmissione meccanico
 9* @return Codice di errore
10*/
11int AuxServoSetParam(int servoId, int servoCompany, int servoModel, int servoSoftVersion, int servoResolution, double axisMechTransRatio);

13.2. Ottieni i parametri di configurazione dell’asse esteso 485

Nuovo nella versione C#SDK-v1.0.6.

 1/**
 2* @brief Ottieni i parametri di configurazione dell'asse esteso 485
 3* @param [in] servoId ID servazionatore, intervallo [1-15], corrisponde all'ID slave
 4* @param [out] servoCompany Produttore servazionatore, 1-Dinatek
 5* @param [out] servoModel Modello servazionatore, 1-FD100-750C
 6* @param [out] servoSoftVersion Versione software servazionatore, 1-V1.0
 7* @param [out] servoResolution Risoluzione encoder
 8* @param [out] axisMechTransRatio Rapporto di trasmissione meccanico
 9* @return Codice di errore
10*/
11int AuxServoGetParam(int servoId, ref int servoCompany, ref int servoModel, ref int servoSoftVersion, ref int servoResolution, ref double axisMechTransRatio);

13.3. Imposta abilita/disabilita per l’asse esteso 485

Nuovo nella versione C#SDK-v1.0.6.

1/**
2* @brief Imposta abilita/disabilita per l'asse esteso 485
3* @param [in] servoId ID servazionatore, intervallo [1-15], corrisponde all'ID slave
4* @param [in] status Stato abilitazione, 0-Disabilita, 1-Abilita
5* @return Codice di errore
6*/
7int AuxServoEnable(int servoId, int status);

13.4. Imposta la modalità di controllo per l’asse esteso 485

Nuovo nella versione C#SDK-v1.0.6.

1/**
2* @brief Imposta la modalità di controllo per l'asse esteso 485
3* @param [in] servoId ID servazionatore, intervallo [1-15], corrisponde all'ID slave
4* @param [in] mode Modalità di controllo, 0-Modalità posizione, 1-Modalità velocità
5* @return Codice di errore
6*/
7int AuxServoSetControlMode(int servoId, int mode);

13.5. Imposta la posizione target per l’asse esteso 485 (modalità posizione)

Nuovo nella versione C#SDK-v1.0.6.

1/**
2* @brief Imposta la posizione target per l'asse esteso 485 (modalità posizione)
3* @param [in] servoId ID servazionatore, intervallo [1-15], corrisponde all'ID slave
4* @param [in] pos Posizione target, mm o °
5* @param [in] speed Velocità target, mm/s o °/s
6* @return Codice di errore
7*/
8int AuxServoSetTargetPos(int servoId, double pos, double speed);

13.6. Imposta la velocità target per l’asse esteso 485 (modalità velocità)

Nuovo nella versione C#SDK-v1.0.6.

1/**
2* @brief Imposta la velocità target per l'asse esteso 485 (modalità velocità)
3* @param [in] servoId ID servazionatore, intervallo [1-15], corrisponde all'ID slave
4* @param [in] speed Velocità target, mm/s o °/s
5* @return Codice di errore
6*/
7int AuxServoSetTargetSpeed(int servoId, double speed);

13.7. Imposta la coppia target per l’asse esteso 485 (modalità coppia)–Non ancora disponibile

Nuovo nella versione C#SDK-v1.0.6.

1/**
2* @brief Imposta la coppia target per l'asse esteso 485 (modalità coppia)--Non ancora disponibile
3* @param [in] servoId ID servazionatore, intervallo [1-15], corrisponde all'ID slave
4* @param [in] torque Coppia target, Nm
5* @return Codice di errore
6*/
7int AuxServoSetTargetTorque(int servoId, double torque);

13.8. Imposta l’homing per l’asse esteso 485

Nuovo nella versione C#SDK-v1.0.6.

1/**
2* @brief Imposta l'homing per l'asse esteso 485
3* @param [in] servoId ID servazionatore, intervallo [1-15], corrisponde all'ID slave
4* @param [in] mode Modalità homing, 1-Homing posizione corrente; 2-Homing finecorsa negativo; 3-Homing finecorsa positivo
5* @param [in] searchVel Velocità ricerca zero, mm/s o °/s
6* @param [in] latchVel Velocità aggancio zero, mm/s o °/s
7* @return Codice di errore
8*/
9int AuxServoHoming(int servoId, int mode, double searchVel, double latchVel);

13.9. Cancella le informazioni di errore dell’asse esteso 485

Nuovo nella versione C#SDK-v1.0.6.

1/**
2* @brief Cancella le informazioni di errore dell'asse esteso 485
3* @param [in] servoId ID servazionatore, intervallo [1-15], corrisponde all'ID slave
4* @return Codice di errore
5*/
6int AuxServoClearError(int servoId);

13.10. Ottieni lo stato del servomotore dell’asse esteso 485

Nuovo nella versione C#SDK-v1.0.6.

 1/**
 2* @brief Ottieni lo stato del servomotore dell'asse esteso 485
 3* @param [in] servoId ID servazionatore, intervallo [1-15], corrisponde all'ID slave
 4* @param [out] servoErrCode Codice errore servazionatore
 5* @param [out] servoState Stato servazionatore  bit0:0-Non abilitato; 1-Abilitato;  bit1:0-Non in movimento; 1-In movimento;  bit2 0-Finecorsa positivo non attivato; 1-Finecorsa positivo attivato; bit3 0-Finecorsa negativo non attivato; 1-Finecorsa negativo attivato; bit4 0-Posizionamento non completato; 1-Posizionamento completato;  bit5: 0-Homing non completato; 1-Homing completato
 6* @param [out] servoPos Posizione corrente servomotore mm o °
 7* @param [out] servoSpeed Velocità corrente servomotore mm/s o °/s
 8* @param [out] servoTorque Coppia corrente servomotore Nm
 9* @return Codice di errore
10*/
11int AuxServoGetStatus(int servoId, ref int servoErrCode, ref int servoState, ref double servoPos, ref double servoSpeed, ref double servoTorque);

13.11. Imposta il numero dell’asse per i dati dell’asse esteso 485 nel feedback di stato

Nuovo nella versione C#SDK-v1.0.6.

1/**
2* @brief Imposta il numero dell'asse per i dati dell'asse esteso 485 nel feedback di stato
3* @param [in] servoId ID servazionatore, intervallo [1-15], corrisponde all'ID slave
4* @return Codice di errore
5*/
6int AuxServosetStatusID(int servoId);

13.12. Imposta le accelerazioni/decelerazioni di movimento per l’asse esteso 485

1/**
2* @brief Imposta le accelerazioni/decelerazioni di movimento per l'asse esteso 485
3* @param [in] acc Accelerazione di movimento asse esteso 485
4* @param [in] dec Decelerazione di movimento asse esteso 485
5* @return  Codice di errore
6*/
7int AuxServoSetAcc(double acc, double dec);

13.13. Imposta le accelerazioni/decelerazioni di arresto di emergenza per l’asse esteso 485

1/**
2* @brief Imposta le accelerazioni/decelerazioni di arresto di emergenza per l'asse esteso 485
3* @param [in] acc Accelerazione arresto emergenza asse esteso 485
4* @param [in] dec Decelerazione arresto emergenza asse esteso 485
5* @return  Codice di errore
6*/
7int AuxServoSetEmergencyStopAcc(double acc, double dec);

13.14. Ottieni le accelerazioni/decelerazioni di movimento per l’asse esteso 485

1/**
2* @brief Ottieni le accelerazioni/decelerazioni di movimento per l'asse esteso 485
3* @param [out] acc Accelerazione di movimento asse esteso 485
4* @param [out] dec Decelerazione di movimento asse esteso 485
5* @return  Codice di errore
6*/
7int AuxServoGetAcc(ref double acc, ref double dec);

13.15. Ottieni le accelerazioni/decelerazioni di arresto di emergenza per l’asse esteso 485

1/**
2* @brief Ottieni le accelerazioni/decelerazioni di arresto di emergenza per l'asse esteso 485
3* @param [out] acc Accelerazione arresto emergenza asse esteso 485
4* @param [out] dec Decelerazione arresto emergenza asse esteso 485
5* @return  Codice di errore
6*/
7int AuxServoGetEmergencyStopAcc(ref double acc, ref double dec);

13.16. Esempio di codice per il controllo dell’asse esteso

Nuovo nella versione C#SDK-V1.1.3: Web-3.8.2

 1private void button64_Click(object sender, EventArgs e)
 2{
 3    int retval = robot.AuxServoSetParam(1, 1, 1, 1, 131072, 15.45);
 4    Console.WriteLine($"AuxServoSetParam is: {retval}");
 5
 6    int servoCompany = 0;
 7    int servoModel = 0;
 8    int servoSoftVersion = 0;
 9    int servoResolution = 0;
10    double axisMechTransRatio = 0;
11    retval = robot.AuxServoGetParam(1, ref servoCompany, ref servoModel, ref servoSoftVersion, ref servoResolution, ref axisMechTransRatio);
12    Console.WriteLine($"servoCompany {servoCompany}\n" +
13        $"servoModel {servoModel}\n" +
14        $"servoSoftVersion {servoSoftVersion}\n" +
15        $"servoResolution {servoResolution}\n" +
16        $"axisMechTransRatio {axisMechTransRatio}\n");
17
18    retval = robot.AuxServoSetParam(1, 10, 11, 12, 13, 14);
19    Console.WriteLine($"AuxServoSetParam is: {retval}");
20
21    retval = robot.AuxServoGetParam(1, ref servoCompany, ref servoModel, ref servoSoftVersion, ref servoResolution, ref axisMechTransRatio);
22    Console.WriteLine($"servoCompany {servoCompany}\n" +
23        $"servoModel {servoModel}\n" +
24        $"servoSoftVersion {servoSoftVersion}\n" +
25        $"servoResolution {servoResolution}\n" +
26        $"axisMechTransRatio {axisMechTransRatio}\n");
27
28    retval = robot.AuxServoSetParam(1, 1, 1, 1, 131072, 36);
29    Console.WriteLine($"AuxServoSetParam is: {retval}");
30    Thread.Sleep(3000);
31
32    robot.AuxServoSetAcc(3000, 3000);
33    robot.AuxServoSetEmergencyStopAcc(5000, 5000);
34    Thread.Sleep(1000);
35    double emagacc = 0, acc = 0;
36    double emagdec = 0, dec = 0;
37    robot.AuxServoGetEmergencyStopAcc(ref emagacc, ref emagdec);
38    Console.WriteLine($"emergency acc is {emagacc}  dec is {emagdec}");
39    robot.AuxServoGetAcc(ref acc, ref dec);
40    Console.WriteLine($"acc is {acc}  dec is {dec}");
41
42    robot.AuxServoSetControlMode(1, 0);
43    Thread.Sleep(2000);
44
45    retval = robot.AuxServoEnable(1, 0);
46    Console.WriteLine($"AuxServoEnable disenable {retval}");
47    Thread.Sleep(1000);
48    int servoerrcode = 0;
49    int servoErrCode = 0;
50    int servoState = 0;
51    double servoPos = 0;
52    double servoSpeed = 0;
53    double servoTorque = 0;
54    retval = robot.AuxServoGetStatus(1, ref servoErrCode, ref servoState, ref servoPos, ref servoSpeed, ref servoTorque);
55    Console.WriteLine($"AuxServoGetStatus servoState {servoState}");
56    Thread.Sleep(1000);
57
58    retval = robot.AuxServoEnable(1, 1);
59    Console.WriteLine($"AuxServoEnable enable {retval}");
60    Thread.Sleep(1000);
61    retval = robot.AuxServoGetStatus(1, ref servoErrCode, ref servoState, ref servoPos, ref servoSpeed, ref servoTorque);
62    Console.WriteLine($"AuxServoGetStatus servoState {servoState}");
63    Thread.Sleep(1000);
64
65    retval = robot.AuxServoHoming(1, 1, 5, 1);
66    Console.WriteLine($"AuxServoHoming {retval}");
67    Thread.Sleep(3000);
68
69    retval = robot.AuxServoSetTargetPos(1, 200, 30);
70    Console.WriteLine($"AuxServoSetTargetPos {retval}");
71    Thread.Sleep(1000);
72    retval = robot.AuxServoGetStatus(1, ref servoErrCode, ref servoState, ref servoPos, ref servoSpeed, ref servoTorque);
73    Console.WriteLine($"AuxServoGetStatus servoSpeed {servoSpeed}");
74    Thread.Sleep(8000);
75
76    robot.AuxServoSetControlMode(1, 1);
77    Thread.Sleep(2000);
78
79    robot.AuxServoEnable(1, 0);
80    Thread.Sleep(1000);
81    robot.AuxServoEnable(1, 1);
82    Thread.Sleep(1000);
83    robot.AuxServoSetTargetSpeed(1, 100, 80);
84
85    Thread.Sleep(5000);
86    robot.AuxServoSetTargetSpeed(1, 0, 80);
87}

13.17. Configurazione parametri comunicazione UDP per asse esteso

Nuovo nella versione C#SDK-V1.1.3: Web-3.8.2

 1/**
 2* @brief Configurazione parametri comunicazione UDP per asse esteso
 3* @param [in] ip Indirizzo IP PLC
 4* @param [in] port  Numero porta
 5* @param [in] period        Periodo comunicazione (ms, default 2, non modificare)
 6* @param [in] lossPkgTime   Tempo rilevamento perdita pacchetti (ms)
 7* @param [in] lossPkgNum    Numero pacchetti persi
 8* @param [in] disconnectTime        Durata conferma disconnessione comunicazione
 9* @param [in] reconnectEnable       Abilita riconnessione automatica in caso di disconnessione 0-Disabilita 1-Abilita
10* @param [in] reconnectPeriod       Intervallo periodo riconnessione (ms)
11* @param [in] reconnectNum  Numero tentativi riconnessione
12* @param [in] selfConnect Ricostruisci connessione automaticamente dopo riavvio da spegnimento; 0-Non costruire connessione; 1-Costruisci connessione
13* @return Codice di errore
14*/
15int ExtDevSetUDPComParam(std::string ip, int port, int period, int lossPkgTime, int lossPkgNum, int disconnectTime, int reconnectEnable, int reconnectPeriod, int reconnectNum, int selfConnect);

13.18. Ottieni la configurazione dei parametri di comunicazione UDP per asse esteso

Nuovo nella versione C#SDK-v1.0.7.

 1/**
 2* @brief Ottieni i parametri di comunicazione UDP per asse esteso
 3* @param [out] ip Indirizzo IP PLC
 4* @param [out] port Numero porta
 5* @param [out] period       Periodo comunicazione (ms, default 2, non modificare)
 6* @param [out] lossPkgTime  Tempo rilevamento perdita pacchetti (ms)
 7* @param [out] lossPkgNum   Numero pacchetti persi
 8* @param [out] disconnectTime       Durata conferma disconnessione comunicazione
 9* @param [out] reconnectEnable      Abilita riconnessione automatica in caso di disconnessione 0-Disabilita 1-Abilita
10* @param [out] reconnectPeriod      Intervallo periodo riconnessione (ms)
11* @param [out] reconnectNum Numero tentativi riconnessione
12* @return Codice di errore
13*/
14int ExtDevGetUDPComParam(std::string& ip, int& port, int& period, int& lossPkgTime, int& lossPkgNum, int& disconnectTime, int& reconnectEnable, int& reconnectPeriod, int& reconnectNum);

13.19. Carica comunicazione UDP

Nuovo nella versione C#SDK-v1.0.7.

1/**
2* @brief Carica comunicazione UDP
3* @return Codice di errore
4*/
5int ExtDevLoadUDPDriver();

13.20. Scarica comunicazione UDP

Nuovo nella versione C#SDK-v1.0.7.

1/**
2* @brief Scarica comunicazione UDP
3* @return Codice di errore
4*/
5int ExtDevUnloadUDPDriver();

13.21. Ripristina connessione dopo disconnessione anomala della comunicazione UDP per asse esteso

Nuovo nella versione C#SDK-v1.0.7.

1/**
2* @brief Ripristina connessione dopo disconnessione anomala della comunicazione UDP per asse esteso
3* @return Codice di errore
4*/
5int ExtDevUDPClientComReset();

13.22. Chiudi comunicazione dopo disconnessione anomala della comunicazione UDP per asse esteso

Nuovo nella versione C#SDK-v1.0.7.

1/**
2* @brief Chiudi comunicazione dopo disconnessione anomala della comunicazione UDP per asse esteso
3* @return Codice di errore
4*/
5int ExtDevUDPClientComClose();

13.23. Configurazione parametri asse esteso UDP

Nuovo nella versione C#SDK-v1.0.7.

 1/**
 2* @brief Configurazione parametri asse esteso 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 di inizio giunto
13* @param [in] axisCompany Produttore azionamento 1-Hichain; 2-Inovance; 3-Panasonic
14* @param [in] axisModel Modello azionamento 1-Hichain-SV-XD3EA040L-E, 2-Hichain-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 di errore
17*/
18int ExtAxisParamConfig(int axisID, int axisType, int axisDirection, double axisMax, double axisMin, double axisVel, double axisAcc, double axisLead, long encResolution, double axisOffect, int axisCompany, int axisModel, int axisEncType);

13.24. Imposta la posizione di installazione dell’asse esteso

Nuovo nella versione C#SDK-v1.0.7.

1/**
2* @brief Imposta la posizione di installazione dell'asse esteso
3* @param [in] installType 0-Robot installato sull'asse esterno, 1-Robot installato all'esterno dell'asse esterno
4* @return Codice di errore
5*/
6int SetRobotPosToAxis(int installType);

13.25. Imposta la configurazione dei parametri DH del sistema asse esteso

Nuovo nella versione C#SDK-v1.0.7.

 1/**
 2* @brief Imposta la configurazione dei parametri DH del sistema asse esteso
 3* @param [in]  axisConfig Configurazione asse esterno, 0-Corsia lineare a singolo grado di libertà, 1-Posizionatore a due gradi di libertà a L, 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 a1 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 di errore
13*/
14int SetAxisDHParaConfig(int axisConfig, double axisDHd1, double axisDHd2, double axisDHd3, double axisDHd4, double axisDHa1, double axisDHa2, double axisDHa3, double axisDHa4);

13.26. Abilita asse esteso UDP

Nuovo nella versione C#SDK-v1.0.7.

1/**
2* @brief Abilita asse esteso UDP
3* @param [in] axisID Numero asse[1-4]
4* @param [in] status 0-Disabilita; 1-Abilita
5* @return Codice di errore
6*/
7int ExtAxisServoOn(int axisID, int status);

13.27. Homing asse esteso UDP

Nuovo nella versione C#SDK-v1.0.7.

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 finecorsa negativo, 2-Homing finecorsa positivo
5* @param [in] searchVel Velocità ricerca zero (mm/s)
6* @param [in] latchVel Velocità aggancio zero (mm/s)
7* @return Codice di errore
8*/
9int ExtAxisSetHoming(int axisID, int mode, double searchVel, double latchVel);

13.28. Avvia jog asse esteso UDP

Nuovo nella versione C#SDK-v1.0.7.

 1/**
 2* @brief Avvia 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 Massima distanza jog
 8* @return Codice di errore
 9*/
10int ExtAxisStartJog(int axisID, int direction, double vel, double acc, double maxDistance);

13.29. Arresta jog asse esteso UDP

Nuovo nella versione C#SDK-v1.0.7.

1/**
2* @brief Arresta jog asse esteso UDP
3* @param [in] axisID Numero asse[1-4]
4* @return Codice di errore
5*/
6int ExtAxisStopJog(int axisID);

13.30. Esempio di codice per la configurazione e il jog dell’asse esteso UDP

 1private void btnJog_Click(object sender, EventArgs e)
 2{
 3    int rtn = robot.ExtDevSetUDPComParam("192.168.58.88", 2021, 2, 100, 3, 200, 1, 100, 5,1);
 4    Console.WriteLine("ExtDevSetUDPComParam rtn is " + rtn);
 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    rtn = robot.ExtDevGetUDPComParam(ref ip, ref port, ref period, ref lossPkgTime, ref lossPkgNum, ref disconnectTime, ref reconnectEnable, ref reconnectPeriod, ref reconnectNum);
 7    string param = "\nip " + ip + "\nport " + port.ToString() + "\nperiod  " + period.ToString() + "\nlossPkgTime " + lossPkgTime.ToString() + "\nlossPkgNum  " + lossPkgNum.ToString() + "\ndisConntime  " + disconnectTime.ToString() + "\nreconnecable  " + reconnectEnable.ToString() + "\nreconnperiod  " + reconnectPeriod.ToString() + "\nreconnnun  " + reconnectNum.ToString();
 8    Console.WriteLine("ExtDevGetUDPComParam rtn is " + rtn + param);
 9
10    robot.ExtDevLoadUDPDriver();
11
12    rtn = robot.ExtAxisServoOn(1, 1);
13    Console.WriteLine("ExtAxisServoOn axis id 1 rtn is " + rtn);
14    rtn = robot.ExtAxisServoOn(2, 1);
15    Console.WriteLine("ExtAxisServoOn axis id 2 rtn is " + rtn);
16    Thread.Sleep(2000);
17
18    rtn = robot.ExtAxisSetHoming(1, 0, 10, 2);
19    Console.WriteLine("ExtAxisSetHoming 1 rtnn is  " + rtn);
20    Thread.Sleep(2000);
21    rtn = robot.ExtAxisSetHoming(2, 0, 10, 2);
22    Console.WriteLine("ExtAxisSetHoming 2 rtnn is  " + rtn);
23
24    Thread.Sleep(4000);
25
26    rtn = robot.SetRobotPosToAxis(1);
27    Console.WriteLine("SetRobotPosToAxis rtn is " + rtn);
28    rtn = robot.SetAxisDHParaConfig(10, 20, 0, 0, 0, 0, 0, 0, 0);
29    Console.WriteLine("SetAxisDHParaConfig rtn is " + rtn);
30    rtn = robot.ExtAxisParamConfig(1, 1, 1, 1000, -1000, 1000, 1000, 1.905f, 262144, 200, 1, 0, 0);
31    Console.WriteLine("ExtAxisParamConfig axis 1 rtn is " + rtn);
32    rtn = robot.ExtAxisParamConfig(2, 1, 1, 1000, -1000, 1000, 1000, 4.444f, 262144, 200, 1, 0, 0);
33    Console.WriteLine("ExtAxisParamConfig axis 2 rtn is " + rtn);
34
35    Thread.Sleep(3000);
36    robot.ExtAxisStartJog(1, 0, 10, 10, 30);
37    Thread.Sleep(1000);
38    robot.ExtAxisStopJog(1);
39    Thread.Sleep(3000);
40    robot.ExtAxisServoOn(1, 0);
41
42    Thread.Sleep(3000);
43    robot.ExtAxisStartJog(2, 0, 10, 10, 30);
44    Thread.Sleep(1000);
45    robot.ExtAxisStopJog(2);
46    Thread.Sleep(3000);
47    robot.ExtAxisServoOn(2, 0);
48    Thread.Sleep(3000);
49    robot.ExtDevUnloadUDPDriver();
50}

13.31. Imposta il punto di riferimento del sistema di coordinate dell’asse esteso - metodo a quattro punti

Nuovo nella versione C#SDK-v1.0.7.

1/**
2* @brief Imposta il punto di riferimento del sistema di coordinate dell'asse esteso - metodo a quattro punti
3* @param [in]  pointNum Numero punto[1-4]
4* @return Codice di errore
5*/
6int ExtAxisSetRefPoint(int pointNum);

13.32. Calcola il sistema di coordinate dell’asse esteso - metodo a quattro punti

Nuovo nella versione C#SDK-v1.0.7.

1/**
2* @brief Calcola il sistema di coordinate dell'asse esteso - metodo a quattro punti
3* @param [out]  coord Valore sistema di coordinate
4* @return Codice di errore
5*/
6int ExtAxisComputeECoordSys(DescPose& coord);

13.33. Applica il sistema di coordinate dell’asse esteso

Nuovo nella versione C#SDK-v1.0.7.

1/**
2* @brief Applica il sistema di coordinate dell'asse esteso
3* @param [in]  applyAxisId Numero asse esteso bit0-bit3 corrisponde a numero asse esteso 1-4, es. applicare assi estesi 1 e 3, allora è 0b 0000 0101; cioè 5
4* @param [in]  axisCoordNum Numero sistema di coordinate asse esteso
5* @param [in]  coord Valore sistema di coordinate
6* @param [in]  calibFlag Flag calibrazione 0-No, 1-Sì
7* @return Codice di errore
8*/
9int ExtAxisActiveECoordSys(int applyAxisId, int axisCoordNum, DescPose coord, int calibFlag);

13.34. Imposta la posa del punto di riferimento di calibrazione nel sistema di coordinate dell’estremità del posizionatore

Nuovo nella versione C#SDK-v1.0.7.

1/**
2* @brief Imposta la posa del punto di riferimento di calibrazione nel sistema di coordinate dell'estremità del posizionatore
3* @param [in] pos Valore di posa
4* @return Codice di errore
5*/
6int SetRefPointInExAxisEnd(DescPose pos);

13.35. Impostazione punto di riferimento del sistema di coordinate del posizionatore

Nuovo nella versione C#SDK-v1.0.7.

1/**
2* @brief Impostazione punto di riferimento del sistema di coordinate del posizionatore
3* @param [in]  pointNum Numero punto[1-4]
4* @return Codice di errore
5*/
6int PositionorSetRefPoint(int pointNum);

13.36. Calcolo sistema di coordinate del posizionatore - metodo a quattro punti

Nuovo nella versione C#SDK-v1.0.7.

1/**
2* @brief Calcolo sistema di coordinate del posizionatore - metodo a quattro punti
3* @param [out] coord Valore sistema di coordinate
4* @return Codice di errore
5*/
6int PositionorComputeECoordSys(DescPose& coord);

13.37. Ottieni il sistema di coordinate dell’asse esteso

Nuovo nella versione C#SDK-V1.1.3: Web-3.8.2

1/**
2* @brief Ottieni il sistema di coordinate dell'asse esteso
3* @param [out] coord Sistema di coordinate asse esteso
4* @return Codice di errore
5*/
6int ExtAxisGetCoord(ref DescPose coord);

13.38. Esempio di codice per la calibrazione del sistema di coordinate dell’asse esteso

Nuovo nella versione C#SDK-V1.1.3: Web-3.8.2

  1private void button66_Click(object sender, EventArgs e)
  2{
  3    int rtn = robot.ExtDevSetUDPComParam("192.168.58.88", 2021, 2, 100, 3, 200, 1, 100, 5,1);
  4    Console.WriteLine("ExtDevSetUDPComParam rtn is " + rtn);
  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    rtn = robot.ExtDevGetUDPComParam(ref ip, ref port, ref period, ref lossPkgTime, ref lossPkgNum, ref disconnectTime, ref reconnectEnable, ref reconnectPeriod, ref reconnectNum);
  7    string param = "\nip " + ip + "\nport " + port.ToString() + "\nperiod  " + period.ToString() + "\nlossPkgTime " + lossPkgTime.ToString() + "\nlossPkgNum  " + lossPkgNum.ToString() + "\ndisConntime  " + disconnectTime.ToString() + "\nreconnecable  " + reconnectEnable.ToString() + "\nreconnperiod  " + reconnectPeriod.ToString() + "\nreconnnun  " + reconnectNum.ToString();
  8    Console.WriteLine("ExtDevGetUDPComParam rtn is " + rtn + param);
  9
 10    robot.ExtDevLoadUDPDriver();
 11
 12    rtn = robot.ExtAxisServoOn(1, 1);
 13    Console.WriteLine("ExtAxisServoOn axis id 1 rtn is " + rtn);
 14    rtn = robot.ExtAxisServoOn(2, 1);
 15    Console.WriteLine("ExtAxisServoOn axis id 2 rtn is " + rtn);
 16    Thread.Sleep(2000);
 17
 18    robot.ExtAxisSetHoming(1, 0, 10, 2);
 19    Thread.Sleep(2000);
 20    rtn = robot.ExtAxisSetHoming(2, 0, 10, 2);
 21    Console.WriteLine("ExtAxisSetHoming rtnn is  " + rtn);
 22
 23    Thread.Sleep(4000);
 24
 25    rtn = robot.SetRobotPosToAxis(1);
 26    Console.WriteLine("SetRobotPosToAxis rtn is " + rtn);
 27    rtn = robot.SetAxisDHParaConfig(1, 128.5f, 206.4f, 0, 0, 0, 0, 0, 0);
 28    Console.WriteLine("SetAxisDHParaConfig rtn is " + rtn);
 29    rtn = robot.ExtAxisParamConfig(1, 1, 1, 1000, -1000, 1000, 1000, 1.905f, 262144, 200, 1, 0, 0);
 30    Console.WriteLine("ExtAxisParamConfig axis 1 rtn is " + rtn);
 31    rtn = robot.ExtAxisParamConfig(2, 1, 1, 1000, -1000, 1000, 1000, 4.444f, 262144, 200, 1, 0, 0);
 32    Console.WriteLine("ExtAxisParamConfig axis 1 rtn is " + rtn);
 33
 34    DescPose toolCoord = new DescPose(0, 0, 210, 0, 0, 0);
 35    robot.SetToolCoord(1, toolCoord, 0, 0, 1, 0);
 36
 37    JointPos jSafe = new JointPos(115.193f, -96.149f, 92.489f, -87.068f, -89.15f, -83.488f);
 38    JointPos j1 = new JointPos(117.559f, -92.624f, 100.329f, -96.909f, -94.057f, -83.488f);
 39    JointPos j2 = new JointPos(112.239f, -90.096f, 99.282f, -95.909f, -89.824f, -83.488f);
 40    JointPos j3 = new JointPos(110.839f, -83.473f, 93.166f, -89.22f, -90.499f, -83.487f);
 41    JointPos j4 = new JointPos(107.935f, -83.572f, 95.424f, -92.873f, -87.933f, -83.488f);
 42
 43    DescPose descSafe = new DescPose();
 44    DescPose desc1 = new DescPose();
 45    DescPose desc2 = new DescPose();
 46    DescPose desc3 = new DescPose();
 47    DescPose desc4 = new DescPose();
 48    ExaxisPos exaxisPos = new ExaxisPos(0, 0, 0, 0);
 49    DescPose offdese = new DescPose(0, 0, 0, 0, 0, 0);
 50
 51    robot.GetForwardKin( jSafe,  ref descSafe);
 52    robot.MoveJ( jSafe,  descSafe, 1, 0, 100, 100, 100,  exaxisPos, -1, 0,  offdese);
 53    Thread.Sleep(2000);
 54
 55    robot.GetForwardKin( j1, ref desc1);
 56    robot.MoveJ( j1,  desc1, 1, 0, 100, 100, 100,  exaxisPos, -1, 0,  offdese);
 57    Thread.Sleep(2000);
 58
 59    DescPose actualTCPPos = new DescPose();
 60    robot.GetActualTCPPose(0, ref actualTCPPos);
 61    robot.SetRefPointInExAxisEnd(actualTCPPos);
 62    rtn = robot.PositionorSetRefPoint(1);
 63    Console.WriteLine("PositionorSetRefPoint 1 rtn is " + rtn);
 64    Thread.Sleep(2000);
 65
 66    robot.MoveJ( jSafe,  descSafe, 1, 0, 100, 100, 100,  exaxisPos, -1, 0,  offdese);
 67    robot.ExtAxisStartJog(1, 0, 50, 50, 10);
 68    Thread.Sleep(1000);
 69    robot.ExtAxisStartJog(2, 0, 50, 50, 10);
 70    Thread.Sleep(1000);
 71    robot.GetForwardKin( j2, ref desc2);
 72    rtn = robot.MoveJ( j2,  desc2, 1, 0, 100, 100, 100,  exaxisPos, -1, 0,  offdese);
 73    rtn = robot.PositionorSetRefPoint(2);
 74    Console.WriteLine("PositionorSetRefPoint 2 rtn is " + rtn);
 75    Thread.Sleep(2000);
 76
 77    robot.MoveJ( jSafe,  descSafe, 1, 0, 100, 100, 100,  exaxisPos, -1, 0,  offdese);
 78    robot.ExtAxisStartJog(1, 0, 50, 50, 10);
 79    Thread.Sleep(1000);
 80    robot.ExtAxisStartJog(2, 0, 50, 50, 10);
 81    Thread.Sleep(1000);
 82    robot.GetForwardKin( j3, ref desc3);
 83    robot.MoveJ( j3,  desc3, 1, 0, 100, 100, 100,  exaxisPos, -1, 0,  offdese);
 84    rtn = robot.PositionorSetRefPoint(3);
 85    Console.WriteLine("PositionorSetRefPoint 3 rtn is " + rtn);
 86    Thread.Sleep(2000);
 87
 88    robot.MoveJ( jSafe,  descSafe, 1, 0, 100, 100, 100,  exaxisPos, -1, 0,  offdese);
 89    robot.ExtAxisStartJog(1, 0, 50, 50, 10);
 90    Thread.Sleep(1000);
 91    robot.ExtAxisStartJog(2, 0, 50, 50, 10);
 92    Thread.Sleep(1000);
 93    robot.GetForwardKin(j4, ref desc4);
 94    robot.MoveJ(j4, desc4, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
 95    rtn = robot.PositionorSetRefPoint(4);
 96    Console.WriteLine("PositionorSetRefPoint 4 rtn is " + rtn);
 97    Thread.Sleep(2000);
 98
 99    DescPose axisCoord = new DescPose();
100    robot.PositionorComputeECoordSys(ref axisCoord);
101    robot.MoveJ(jSafe, descSafe, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
102    Console.WriteLine("PositionorComputeECoordSys rtn is {0} {1} {2} {3} {4} {5}", axisCoord.tran.x, axisCoord.tran.y, axisCoord.tran.z, axisCoord.rpy.rx, axisCoord.rpy.ry, axisCoord.rpy.rz);
103    rtn = robot.ExtAxisActiveECoordSys(3, 1, axisCoord, 1);
104    Console.WriteLine("ExtAxisActiveECoordSys rtn is " + rtn);
105}

13.39. Movimento asse esteso UDP

Nuovo nella versione C#SDK-V1.1.5: Web-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 smooth (mm o ms)
6* @return Codice di errore
7*/
8int ExtAxisMove(ExaxisPos pos, double ovl, double blend=-1);

13.40. Esempio di codice per il movimento dell’asse esteso UDP

1private void button66_Click(object sender, EventArgs e)
2{
3    ExaxisPos axisPos;
4    axisPos.ePos[0] = 20;
5    axisPos.ePos[1] = 0;
6    axisPos.ePos[2] = 0;
7    axisPos.ePos[3] = 0;
8    robot.ExtAxisMove(axisPos, 50);
9}

13.41. Movimento sincrono asse esteso UDP con giunti del robot

Nuovo nella versione C#SDK-v1.0.7.

 1/**
 2* @brief Movimento sincrono asse esteso UDP con giunti del robot
 3* @param [in] joint_pos Posizione target giunti, unità deg
 4* @param [in] desc_pos Posa cartesiana target
 5* @param [in] tool Numero coordinata utensile, intervallo[0~14]
 6* @param [in] user Numero coordinata pezzo, intervallo[0~14]
 7* @param [in] vel Percentuale velocità, intervallo[0~100]
 8* @param [in] acc Percentuale accelerazione, intervallo[0~100], non ancora disponibile
 9* @param [in] ovl Fattore di scala velocità, intervallo[0~100]
10* @param [in] epos Posizione asse esteso, unità mm
11* @param [in] blendT [-1.0]-Movimento fino a posizione (bloccante), [0~500.0]-Tempo smooth (non bloccante), unità ms
12* @param [in] offset_flag  0-Nessun offset, 1-Offset sistema base/pezzo, 2-Offset sistema utensile
13* @param [in] offset_pos  Quantità offset posa
14* @return  Codice di errore
15*/
16int ExtAxisSyncMoveJ(JointPos joint_pos, DescPose desc_pos, int tool, int user, float vel, float acc, float ovl, ExaxisPos epos, float blendT, byte offset_flag, DescPose offset_pos);

13.42. Esempio di codice

 1private void btnSyncMoveJ_Click(object sender, EventArgs e)
 2{
 3    Robot robot = new Robot();
 4    robot.RPC("192.168.58.2");
 5
 6    //1. Calibra e applica il sistema di coordinate utensile del robot, puoi usare il metodo a quattro o sei punti per la calibrazione e applicazione del sistema di coordinate utensile, le interfacce coinvolte sono:
 7    //    int SetToolPoint(int point_num);  //Imposta punto riferimento utensile - metodo a sei punti
 8    //    int ComputeTool(ref DescPose tcp_pose);  //Calcola sistema coordinate utensile
 9    //    int SetTcp4RefPoint(int point_num);    //Imposta punto riferimento utensile - metodo a quattro punti
10    //    int ComputeTcp4(ref DescPose tcp_pose);   //Calcola sistema coordinate utensile - metodo a quattro punti
11    //    int SetToolCoord(int id, DescPose coord, int type, int install);  //Imposta e applica sistema coordinate utensile
12    //    int SetToolList(int id, DescPose coord, int type, int install);   //Imposta e applica lista sistemi coordinate utensile
13
14    //2. Imposta i parametri di comunicazione UDP e carica la comunicazione UDP
15    robot.ExtDevSetUDPComParam("192.168.58.88", 2021, 2, 100, 3, 100, 1, 100, 10);
16    robot.ExtDevLoadUDPDriver();
17
18    //3. Imposta i parametri dell'asse esteso, inclusi tipo asse esteso, parametri azionamento asse esteso, parametri DH asse esteso
19    robot.SetAxisDHParaConfig(4, 200, 200, 0, 0, 0, 0, 0, 0); //Posizionatore monoasse e parametri DH
20    robot.SetRobotPosToAxis(1);  //Posizione di installazione asse esteso
21    robot.ExtAxisParamConfig(1, 0, 1, 100, -100, 10, 10, 12, 131072, 0, 1, 0, 0); //Parametri azionamento servomotore, questo esempio è per un posizionatore monoasse, quindi è necessario impostare solo i parametri di un azionamento. Se scegli un tipo di asse esteso con più assi, devi impostare i parametri dell'azionamento per ogni asse
22
23    //4. Abilita e fai homing dell'asse selezionato
24    robot.ExtAxisServoOn(1, 0);
25    robot.ExtAxisSetHoming(1, 0, 20, 3);
26
27    //5. Effettua calibrazione e applicazione del sistema di coordinate dell'asse esteso (Nota: le interfacce di calibrazione per posizionatore e corsia lineare sono diverse, di seguito sono le interfacce per il posizionatore)
28    DescPose pos = new DescPose(/* Inserisci le coordinate del tuo punto di calibrazione */);
29    robot.SetRefPointInExAxisEnd(pos);
30    robot.PositionorSetRefPoint(1); /* È necessario calibrare l'asse esteso utilizzando quattro punti in posizioni diverse, quindi è necessario chiamare questa interfaccia 4 volte per completare la calibrazione */
31    DescPose coord = new DescPose( );
32    robot.PositionorComputeECoordSys(ref coord); //Calcola risultato calibrazione asse esteso
33    robot.ExtAxisActiveECoordSys(1, 1, coord, 1);  //Applica il risultato di calibrazione al sistema di coordinate dell'asse esteso
34
35    //6. Calibra il sistema di coordinate del pezzo sull'asse esteso, avrai bisogno delle seguenti interfacce
36    //int SetWObjCoordPoint(int point_num);
37    //int ComputeWObjCoord(int method, ref DescPose wobj_pose);
38    //int SetWObjCoord(int id, DescPose coord);
39    //int SetWObjList(int id, DescPose coord);
40
41    //7. Registra il punto di partenza del tuo movimento articolare sincrono
42    DescPose startdescPose = new DescPose(/*Inserisci le tue coordinate*/);
43    JointPos startjointPos = new JointPos(/*Inserisci le tue coordinate*/);
44    ExaxisPos startexaxisPos = new ExaxisPos(/* Inserisci le coordinate del punto di partenza dell'asse esteso */);
45
46    //8. Registra le coordinate del punto finale del tuo movimento articolare sincrono
47    DescPose enddescPose = new DescPose(/*Inserisci le tue coordinate*/);
48    JointPos endjointPos = new JointPos(/*Inserisci le tue coordinate*/);
49    ExaxisPos endexaxisPos = new ExaxisPos(/* Inserisci le coordinate del punto finale dell'asse esteso */);
50
51    //9. Scrivi il programma di movimento sincrono
52    //Muoviti al punto di partenza, assumendo che i sistemi di coordinate utensile e pezzo applicati siano entrambi 1
53    robot.ExtAxisMove(startexaxisPos, 20);
54    DescPose offdese = new DescPose(0, 0, 0, 0, 0, 0);
55    robot.MoveJ(startjointPos, startdescPose, 1, 1, 100, 100, 100, startexaxisPos, 0, 0, offdese);
56
57    //Inizia movimento sincrono
58    robot.ExtAxisSyncMoveJ(endjointPos, enddescPose, 1, 1, 100, 100, 100, endexaxisPos, -1, 0, offdese);
59}

13.43. Movimento sincrono asse esteso UDP con movimento lineare del robot

Nuovo nella versione C#SDK-v1.0.7.

 1/**
 2* @brief Movimento sincrono asse esteso UDP con movimento lineare del robot
 3* @param [in] joint_pos  Posizione target giunti, unità deg
 4* @param [in] desc_pos  Posa cartesiana target
 5* @param [in] tool  Numero coordinata utensile, intervallo[0~14]
 6* @param [in] user  Numero coordinata pezzo, intervallo[0~14]
 7* @param [in] vel  Percentuale velocità, intervallo[0~100]
 8* @param [in] acc  Percentuale accelerazione, intervallo[0~100], non ancora disponibile
 9* @param [in] ovl  Fattore di scala velocità, intervallo[0~100]
10* @param [in] blendR [-1.0]-Movimento fino a posizione (bloccante), [0~1000.0]-Raggio smooth (non bloccante), unità mm
11* @param [in] epos  Posizione asse esteso, unità mm
12* @param [in] offset_flag  0-Nessun offset, 1-Offset sistema base/pezzo, 2-Offset sistema utensile
13* @param [in] offset_pos  Quantità offset posa
14* @return Codice di errore
15*/
16int ExtAxisSyncMoveL(JointPos joint_pos, DescPose desc_pos, int tool, int user, float vel, float acc, float ovl, float blendR, ExaxisPos epos, int offset_flag, DescPose offset_pos);

13.44. Esempio di codice

 1private void btnSyncMoveL_Click(object sender, EventArgs e)
 2{
 3    Robot robot = new Robot();
 4    robot.RPC("192.168.58.2");
 5
 6//1. Calibra e applica il sistema di coordinate utensile del robot, puoi usare il metodo a quattro o sei punti per la calibrazione e applicazione del sistema di coordinate utensile, le interfacce coinvolte sono:
 7    //    int SetToolPoint(int point_num);  //Imposta punto riferimento utensile - metodo a sei punti
 8    //    int ComputeTool(ref DescPose tcp_pose);  //Calcola sistema coordinate utensile
 9    //    int SetTcp4RefPoint(int point_num);    //Imposta punto riferimento utensile - metodo a quattro punti
10    //    int ComputeTcp4(ref DescPose tcp_pose);   //Calcola sistema coordinate utensile - metodo a quattro punti
11    //    int SetToolCoord(int id, DescPose coord, int type, int install);  //Imposta e applica sistema coordinate utensile
12    //    int SetToolList(int id, DescPose coord, int type, int install);   //Imposta e applica lista sistemi coordinate utensile
13
14    //2. Imposta i parametri di comunicazione UDP e carica la comunicazione UDP
15    robot.ExtDevSetUDPComParam("192.168.58.88", 2021, 2, 100, 3, 100, 1, 100, 10);
16    robot.ExtDevLoadUDPDriver();
17
18    //3. Imposta i parametri dell'asse esteso, inclusi tipo asse esteso, parametri azionamento asse esteso, parametri DH asse esteso
19    robot.SetAxisDHParaConfig(4, 200, 200, 0, 0, 0, 0, 0, 0); //Posizionatore monoasse e parametri DH
20    robot.SetRobotPosToAxis(1);  //Posizione di installazione asse esteso
21    robot.ExtAxisParamConfig(1, 0, 1, 100, -100, 10, 10, 12, 131072, 0, 1, 0, 0); //Parametri azionamento servomotore, questo esempio è per un posizionatore monoasse, quindi è necessario impostare solo i parametri di un azionamento. Se scegli un tipo di asse esteso con più assi, devi impostare i parametri dell'azionamento per ogni asse
22
23    //4. Abilita e fai homing dell'asse selezionato
24    robot.ExtAxisServoOn(1, 0);
25    robot.ExtAxisSetHoming(1, 0, 20, 3);
26
27    //5. Effettua calibrazione e applicazione del sistema di coordinate dell'asse esteso (Nota: le interfacce di calibrazione per posizionatore e corsia lineare sono diverse, di seguito sono le interfacce per il posizionatore)
28    DescPose pos = new DescPose(/* Inserisci le coordinate del tuo punto di calibrazione */);
29    robot.SetRefPointInExAxisEnd(pos);
30    robot.PositionorSetRefPoint(1); /* È necessario calibrare l'asse esteso utilizzando quattro punti in posizioni diverse, quindi è necessario chiamare questa interfaccia 4 volte per completare la calibrazione */
31    DescPose coord = new DescPose();
32    robot.PositionorComputeECoordSys(ref coord); //Calcola risultato calibrazione asse esteso
33    robot.ExtAxisActiveECoordSys(1, 1, coord, 1);  //Applica il risultato di calibrazione al sistema di coordinate dell'asse esteso
34
35    //6. Calibra il sistema di coordinate del pezzo sull'asse esteso, avrai bisogno delle seguenti interfacce
36    //int SetWObjCoordPoint(int point_num);
37    //int ComputeWObjCoord(int method, ref DescPose wobj_pose);
38    //int SetWObjCoord(int id, DescPose coord);
39    //int SetWObjList(int id, DescPose coord);
40
41    //7. Registra il punto di partenza del tuo movimento lineare sincrono
42    DescPose startdescPose = new DescPose(/*Inserisci le tue coordinate*/);
43    JointPos startjointPos = new JointPos(/*Inserisci le tue coordinate*/);
44    ExaxisPos startexaxisPos = new ExaxisPos(/* Inserisci le coordinate del punto di partenza dell'asse esteso */);
45
46    //8. Registra le coordinate del punto finale del tuo movimento lineare sincrono
47    DescPose enddescPose = new DescPose(/*Inserisci le tue coordinate*/);
48    JointPos endjointPos = new JointPos(/*Inserisci le tue coordinate*/);
49    ExaxisPos endexaxisPos = new ExaxisPos(/* Inserisci le coordinate del punto finale dell'asse esteso */);
50
51    //9. Scrivi il programma di movimento sincrono
52    //Muoviti al punto di partenza, assumendo che i sistemi di coordinate utensile e pezzo applicati siano entrambi 1
53    robot.ExtAxisMove(startexaxisPos, 20);
54    DescPose offdese = new DescPose(0, 0, 0, 0, 0, 0);
55    robot.MoveJ(startjointPos, startdescPose, 1, 1, 100, 100, 100, startexaxisPos, 0, 0, offdese);
56
57    //Inizia movimento sincrono
58    robot.ExtAxisSyncMoveL(endjointPos, enddescPose, 1, 1, 100, 100, 100, 0, endexaxisPos, 0, offdese);
59}

13.45. Movimento sincrono asse esteso UDP con movimento circolare del robot

Nuovo nella versione C#SDK-v1.0.7.

 1/**
 2* @brief Movimento sincrono asse esteso UDP con movimento circolare del 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 coordinata utensile, intervallo[0~14]
 6* @param [in] puser  Numero coordinata pezzo, intervallo[0~14]
 7* @param [in] pvel  Percentuale velocità, intervallo[0~100]
 8* @param [in] pacc  Percentuale accelerazione, intervallo[0~100], non ancora disponibile
 9* @param [in] epos_p  Posizione asse esteso punto intermedio, unità mm
10* @param [in] poffset_flag  0-Nessun offset, 1-Offset sistema base/pezzo, 2-Offset sistema utensile
11* @param [in] offset_pos_p  Quantità 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 coordinata utensile, intervallo[0~14]
15* @param [in] tuser  Numero coordinata pezzo, intervallo[0~14]
16* @param [in] tvel  Percentuale velocità, intervallo[0~100]
17* @param [in] tacc  Percentuale accelerazione, intervallo[0~100], non ancora disponibile
18* @param [in] epos_t  Posizione asse esteso, unità mm
19* @param [in] toffset_flag  0-Nessun offset, 1-Offset sistema base/pezzo, 2-Offset sistema utensile
20* @param [in] offset_pos_t  Quantità offset posa
21* @param [in] ovl  Fattore di scala velocità, intervallo[0~100]
22* @param [in] blendR [-1.0]-Movimento fino a posizione (bloccante), [0~1000.0]-Raggio smooth (non bloccante), unità mm
23* @return Codice di errore
24*/
25int ExtAxisSyncMoveC(JointPos joint_pos_p, DescPose desc_pos_p, int ptool, int puser, float pvel, float pacc, ExaxisPos epos_p, int poffset_flag, DescPose offset_pos_p, JointPos joint_pos_t, DescPose desc_pos_t, int ttool, int tuser, float tvel, float tacc, ExaxisPos epos_t, int toffset_flag, DescPose offset_pos_t, float ovl, float blendR);

13.46. Esempio di codice

 1private void btnSyncMoveC_Click(object sender, EventArgs e)
 2{
 3    Robot robot = new Robot();
 4    robot.RPC("192.168.58.2");
 5
 6//1. Calibra e applica il sistema di coordinate utensile del robot, puoi usare il metodo a quattro o sei punti per la calibrazione e applicazione del sistema di coordinate utensile, le interfacce coinvolte sono:
 7    //    int SetToolPoint(int point_num);  //Imposta punto riferimento utensile - metodo a sei punti
 8    //    int ComputeTool(ref DescPose tcp_pose);  //Calcola sistema coordinate utensile
 9    //    int SetTcp4RefPoint(int point_num);    //Imposta punto riferimento utensile - metodo a quattro punti
10    //    int ComputeTcp4(ref DescPose tcp_pose);   //Calcola sistema coordinate utensile - metodo a quattro punti
11    //    int SetToolCoord(int id, DescPose coord, int type, int install);  //Imposta e applica sistema coordinate utensile
12    //    int SetToolList(int id, DescPose coord, int type, int install);   //Imposta e applica lista sistemi coordinate utensile
13
14    //2. Imposta i parametri di comunicazione UDP e carica la comunicazione UDP
15    robot.ExtDevSetUDPComParam("192.168.58.88", 2021, 2, 100, 3, 100, 1, 100, 10);
16    robot.ExtDevLoadUDPDriver();
17
18    //3. Imposta i parametri dell'asse esteso, inclusi tipo asse esteso, parametri azionamento asse esteso, parametri DH asse esteso
19    robot.SetAxisDHParaConfig(4, 200, 200, 0, 0, 0, 0, 0, 0); //Posizionatore monoasse e parametri DH
20    robot.SetRobotPosToAxis(1);  //Posizione di installazione asse esteso
21    robot.ExtAxisParamConfig(1, 0, 1, 100, -100, 10, 10, 12, 131072, 0, 1, 0, 0); //Parametri azionamento servomotore, questo esempio è per un posizionatore monoasse, quindi è necessario impostare solo i parametri di un azionamento. Se scegli un tipo di asse esteso con più assi, devi impostare i parametri dell'azionamento per ogni asse
22
23    //4. Abilita e fai homing dell'asse selezionato
24    robot.ExtAxisServoOn(1, 0);
25    robot.ExtAxisSetHoming(1, 0, 20, 3);
26
27    //5. Effettua calibrazione e applicazione del sistema di coordinate dell'asse esteso (Nota: le interfacce di calibrazione per posizionatore e corsia lineare sono diverse, di seguito sono le interfacce per il posizionatore)
28    DescPose pos = new DescPose(/* Inserisci le coordinate del tuo punto di calibrazione */);
29    robot.SetRefPointInExAxisEnd(pos);
30    robot.PositionorSetRefPoint(1); /* È necessario calibrare l'asse esteso utilizzando quattro punti in posizioni diverse, quindi è necessario chiamare questa interfaccia 4 volte per completare la calibrazione */
31    DescPose coord = new DescPose();
32    robot.PositionorComputeECoordSys(ref coord); //Calcola risultato calibrazione asse esteso
33    robot.ExtAxisActiveECoordSys(1, 1, coord, 1);  //Applica il risultato di calibrazione al sistema di coordinate dell'asse esteso
34
35    //6. Calibra il sistema di coordinate del pezzo sull'asse esteso, avrai bisogno delle seguenti interfacce
36    //int SetWObjCoordPoint(int point_num);
37    //int ComputeWObjCoord(int method, ref DescPose wobj_pose);
38    //int SetWObjCoord(int id, DescPose coord);
39    //int SetWObjList(int id, DescPose coord);
40
41    //7. Registra il punto di partenza del tuo movimento circolare sincrono
42    DescPose startdescPose = new DescPose(/*Inserisci le tue coordinate*/);
43    JointPos startjointPos = new JointPos(/*Inserisci le tue coordinate*/);
44    ExaxisPos startexaxisPos = new ExaxisPos(/* Inserisci le coordinate del punto di partenza dell'asse esteso */);
45
46    //8. Registra le coordinate del punto finale del tuo movimento circolare sincrono
47    DescPose enddescPose = new DescPose(/*Inserisci le tue coordinate*/);
48    JointPos endjointPos = new JointPos(/*Inserisci le tue coordinate*/);
49    ExaxisPos endexaxisPos = new ExaxisPos(/* Inserisci le coordinate del punto finale dell'asse esteso */);
50
51    //8. Registra le coordinate del punto intermedio del tuo movimento circolare sincrono
52    DescPose middescPose = new DescPose(/*Inserisci le tue coordinate*/);
53    JointPos midjointPos = new JointPos(/*Inserisci le tue coordinate*/);
54    ExaxisPos midexaxisPos = new ExaxisPos(/* Inserisci le coordinate dell'asse esteso al punto intermedio del movimento circolare del robot */);
55
56    //9. Scrivi il programma di movimento sincrono
57    //Muoviti al punto di partenza, assumendo che i sistemi di coordinate utensile e pezzo applicati siano entrambi 1
58    robot.ExtAxisMove(startexaxisPos, 20);
59    DescPose offdese = new DescPose(0, 0, 0, 0, 0, 0);
60    robot.MoveJ(startjointPos, startdescPose, 1, 1, 100, 100, 100, startexaxisPos, 0, 0, offdese);
61
62    //Inizia movimento sincrono
63    robot.ExtAxisSyncMoveC(midjointPos, middescPose, 1, 1, 100, 100, midexaxisPos, 0, offdese, endjointPos, enddescPose, 1, 1, 100, 100, endexaxisPos, 0, offdese, 100, 0);
64}

13.47. Imposta DO esteso

Nuovo nella versione C#SDK-v1.0.7.

1/**
2* @brief Imposta DO esteso
3* @param [in] DONum Numero DO
4* @param [in] bOpen Interruttore true-Aperto; false-Chiuso
5* @param [in] smooth Se smooth
6* @param [in] block Se bloccante
7* @return Codice di errore
8*/
9int SetAuxDO(int DONum, bool bOpen, bool smooth, bool block);

13.48. Imposta AO esteso

Nuovo nella versione C#SDK-v1.0.7.

1/**
2* @brief Imposta AO esteso
3* @param [in] AONum Numero AO
4* @param [in] value Valore analogico[0-4095]
5* @param [in] block Se bloccante
6* @return Codice di errore
7*/
8int SetAuxAO(int AONum, double value, bool block);

13.49. Imposta tempo filtro ingresso DI esteso

Nuovo nella versione C#SDK-v1.0.7.

1/**
2* @brief Imposta tempo filtro ingresso DI esteso
3* @param [in] filterTime Tempo filtro (ms)
4* @return Codice di errore
5*/
6int SetAuxDIFilterTime(int filterTime);

13.50. Imposta tempo filtro ingresso AI esteso

Nuovo nella versione C#SDK-v1.0.7.

1/**
2* @brief Imposta tempo filtro ingresso AI esteso
3* @param [in] filterTime Tempo filtro (ms)
4* @return Codice di errore
5*/
6int SetAuxAIFilterTime(int filterTime);

13.51. Attendi ingresso DI esteso

Nuovo nella versione C#SDK-v1.0.7.

1/**
2* @brief Attendi ingresso DI esteso
3* @param [in] DINum Numero DI
4* @param [in] bOpen Interruttore 0-Chiuso; 1-Aperto
5* @param [in] time Tempo di attesa massimo (ms)
6* @param [in] errorAlarm Se continuare il movimento
7* @return Codice di errore
8*/
9int WaitAuxDI(int DINum, bool bOpen, int time, bool errorAlarm);

13.52. Attendi ingresso AI esteso

Nuovo nella versione C#SDK-v1.0.7.

 1/**
 2* @brief Attendi ingresso AI esteso
 3* @param [in] AINum Numero AI
 4* @param [in] sign 0-Maggiore di; 1-Minore di
 5* @param [in] value Valore AI
 6* @param [in] time Tempo di attesa massimo (ms)
 7* @param [in] errorAlarm Se continuare il movimento
 8* @return Codice di errore
 9*/
10int WaitAuxAI(int AINum, int sign, int value, int time, bool errorAlarm);

13.53. Ottieni valore DI esteso

Nuovo nella versione C#SDK-v1.0.7.

1/**
2* @brief Ottieni valore DI esteso
3* @param [in] DINum Numero DI
4* @param [in] isNoBlock Se non bloccante
5* @param [out] isOpen 0-Chiuso; 1-Aperto
6* @return Codice di errore
7*/
8int GetAuxDI(int DINum, bool isNoBlock, bool& isOpen);

13.54. Ottieni valore AI esteso

Nuovo nella versione C#SDK-v1.0.7.

1/**
2* @brief Ottieni valore AI esteso
3* @param [in] AINum Numero AI
4* @param [in] isNoBlock Se non bloccante
5* @param [in] value Valore di ingresso
6* @return Codice di errore
7*/
8int GetAuxAI(int AINum, bool isNoBlock, int& value);

13.55. Esempio di codice per I/O estesi

 1private void btnAODO_Click(object sender, EventArgs e)
 2{
 3    int rtn;
 4    for (int i = 0; i < 128; i++)
 5    {
 6        robot.SetAuxDO(i, true, false, true);
 7        Thread.Sleep(100);
 8    }
 9    for (int i = 0; i < 128; i++)
10    {
11        robot.SetAuxDO(i, false, false, true);
12        Thread.Sleep(100);
13    }
14
15    for (int i = 0; i < 409; i++)
16    {
17        robot.SetAuxAO(0, i * 10, true);
18        robot.SetAuxAO(1, 4095 - i * 10, true);
19        robot.SetAuxAO(2, i * 10, true);
20        robot.SetAuxAO(3, 4095 - i * 10, true);
21        Thread.Sleep(10);
22    }
23
24    robot.SetAuxDIFilterTime(10);
25    robot.SetAuxAIFilterTime(0, 10);
26
27    for (int i = 0; i < 20; i++)
28    {
29        bool curValue = false;
30        rtn = robot.GetAuxDI(i, false, ref curValue);
31        Console.WriteLine("DI" + i + "   " + curValue);
32    }
33    int curValueAI = -1;
34    for (int i = 0; i < 4; i++)
35    {
36        rtn = robot.GetAuxAI(i, true, ref curValueAI);
37    }
38
39    robot.WaitAuxDI(1, false, 1000, false);
40    robot.WaitAuxAI(1, 1, 132, 1000, false);
41}

13.56. Abilita dispositivo mobile

Nuovo nella versione C#SDK-v1.0.9.

1/**
2* @brief Abilita dispositivo mobile
3* @param enable false-Disabilita; true-Abilita
4* @return Codice di errore
5*/
6int TractorEnable(bool enable);

13.57. Arresta movimento dispositivo mobile

Nuovo nella versione C#SDK-v1.0.9.

1/**
2* @brief Arresta movimento dispositivo mobile
3* @return Codice di errore
4*/
5int TractorStop();

13.58. Homing dispositivo mobile

Nuovo nella versione C#SDK-v1.0.9.

1/**
2* @brief Homing dispositivo mobile
3* @return Codice di errore
4*/
5int  TractorHoming();

13.59. Movimento lineare dispositivo mobile

Nuovo nella versione C#SDK-v1.0.9.

1/**
2* @brief Movimento lineare dispositivo mobile
3* @param distance Distanza movimento lineare (mm)
4* @param vel Percentuale velocità movimento lineare (0-100)
5* @return Codice di errore
6*/
7int TractorMoveL(double distance, double vel);

13.60. Movimento circolare dispositivo mobile

Nuovo nella versione C#SDK-v1.0.9.

1/**
2* @brief Movimento circolare dispositivo mobile
3* @param radio Raggio movimento circolare (mm)
4* @param angle Angolo movimento circolare (°)
5* @param vel Percentuale velocità movimento lineare (0-100)
6* @return Codice di errore
7*/
8int TractorMoveC(double radio, double angle, double vel);

13.61. Esempio di codice

 1private void button6_Click(object sender, EventArgs e)
 2{
 3    int rtn;
 4    robot.ExtDevSetUDPComParam("192.168.58.2", 2021, 2, 50, 5, 50, 1, 50, 10,1);
 5    robot.ExtDevLoadUDPDriver();
 6    rtn = robot.ExtAxisServoOn(1, 1);
 7    rtn = robot.ExtAxisServoOn(2, 1);
 8    Thread.Sleep(2000);
 9    robot.ExtAxisSetHoming(1, 0, 10, 2);
10    Thread.Sleep(2000);
11    rtn = robot.ExtAxisSetHoming(2, 0, 10, 2);
12    Thread.Sleep(4000);
13    robot.ExtAxisParamConfig(1, 0, 0, 50000, -50000, 1000, 1000, 6.280f, 16384, 200, 0, 0, 0);
14    robot.ExtAxisParamConfig(2, 0, 0, 50000, -50000, 1000, 1000, 6.280f, 16384, 200, 0, 0, 0);
15    robot.SetAxisDHParaConfig(5, 0, 0, 0, 0, 0, 0, 0, 0);
16    robot.TractorEnable(false);
17    Thread.Sleep(2000);
18    robot.TractorEnable(true);
19    Thread.Sleep(2000);
20    robot.TractorHoming();
21    Thread.Sleep(2000);
22    robot.TractorMoveL(100, 2);
23    Thread.Sleep(5000);
24    robot.TractorStop();
25    robot.TractorMoveL(-100, 20);
26    Thread.Sleep(5000);
27    robot.TractorMoveC(300, 90, 20);
28    Thread.Sleep(10000);
29    robot.TractorMoveC(300, -90, 20);
30    Thread.Sleep(1000);
31    robot.TractorStop();
32}

13.62. Imposta la strategia di movimento sincrono tra asse esteso e robot

Nuovo nella versione C#SDK-V1.1.7: Web-3.8.5

1/**
2* @brief Imposta la strategia di movimento sincrono tra asse esteso e robot
3* @param strategy Strategia; 0-Con robot come principale; 1-Asse esteso e robot sincronizzati
4* @return Codice di errore
5*/
6int SetExAxisRobotPlan(int strategy)

13.63. Esempio di codice per impostare la strategia di movimento sincrono tra asse esteso e robot

Nuovo nella versione C#SDK-V1.1.7: Web-3.8.5

 1private void button94_Click(object sender, EventArgs e)
 2{
 3    JointPos joint_pos1 = new JointPos(-22.016, -49.217, 124.714, -161.100, -85.108, -0.333);
 4    JointPos joint_pos2 = new JointPos(-21.083, -46.613, 110.079, -147.796, -80.757, -0.330);
 5    JointPos joint_pos3 = new JointPos(-25.572, -60.090, 135.397, -163.889, -82.489, -0.345);
 6    DescPose desc_pos1 = new DescPose(2.637, -0.001, 30.673, 178.786, -4.134, 68.326);
 7    DescPose desc_pos2 = new DescPose(213.812, -1.440, 47.311, 177.410, 0.166, 68.946);
 8    DescPose desc_pos3 = new DescPose(444.342, -12.723, 82.470, -177.701, -1.325, 65.151);
 9    ExaxisPos epos1 = new ExaxisPos(0.001, 0.000, 0.000, 0.000);
10    ExaxisPos epos2 = new ExaxisPos(299.977, 0.000, 0.000, 0.000);
11    ExaxisPos epos3 = new ExaxisPos(399.969, 0.000, 0.000, 0.000);
12    DescPose offset_pos = new DescPose(0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
13    int rtn = robot.SetExAxisRobotPlan(0);
14    Console.WriteLine($"SetExAxisRobotPlan rtn is {rtn}");
15    Thread.Sleep(1000);
16    rtn = robot.ExtAxisSyncMoveL(joint_pos1, desc_pos1, 1, 0, 100, 100, 100, -1, epos1, 0, offset_pos);
17    Console.WriteLine($"ExtAxisSyncMoveL 1 rtn is {rtn}");
18
19    rtn = robot.ExtAxisSyncMoveL(joint_pos2, desc_pos2, 1, 0, 100, 100, 100, -1, epos2, 0, offset_pos);
20    Console.WriteLine($"ExtAxisSyncMoveL 2 rtn is {rtn}");
21    rtn = robot.ExtAxisSyncMoveL(joint_pos3, desc_pos3, 1, 0, 100, 100, 100, -1, epos3, 0, offset_pos);
22    Console.WriteLine($"ExtAxisSyncMoveL 3 rtn is {rtn}");
23    Thread.Sleep(8000);
24}