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}