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. Ottenere la Configurazione dei Parametri di Comunicazione UDP per Assi di Estensione
Nuovo nella versione C#SDK-v1.0.7.
1/**
2* @brief Ottiene i parametri di comunicazione UDP per assi di estensione
3* @param [out] ip Indirizzo IP del PLC
4* @param [out] port Numero di porta
5* @param [out] period Periodo di comunicazione (ms, default è 2, non modificare questo parametro)
6* @param [out] lossPkgTime Tempo di rilevamento perdita pacchetti (ms)
7* @param [out] lossPkgNum Numero di perdite di pacchetti
8* @param [out] disconnectTime Durata di conferma disconnessione comunicazione
9* @param [out] reconnectEnable Abilitazione riconnessione automatica alla disconnessione della comunicazione 0-disabilitato 1-abilitato
10* @param [out] reconnectPeriod Intervallo di riconnessione (ms)
11* @param [out] reconnectNum Numero di tentativi di riconnessione
12* @param [out] selfConnect Riconnessione automatica dopo riavvio del box di controllo; 0-nessuna riconnessione; 1-riconnessione
13* @return Codice di errore
14*/
15public int ExtDevGetUDPComParam(ref string ip, ref int port, ref int period, ref int lossPkgTime, ref int lossPkgNum, ref int disconnectTime, ref int reconnectEnable, ref int reconnectPeriod, ref int reconnectNum, ref int selfConnect)
13.19. 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. Impostare la Posizione di Installazione dell’Asse di Estensione
1/**
2* @brief Ottieni i parametri dell'asse di estensione UDP
3* @param [in] axisID Numero dell'asse di estensione [1-4]
4* @param [out] axisType Tipo di asse di estensione 0-lineare; 1-rotativo
5* @param [out] axisDirection Direzione dell'asse di estensione 0-positiva; 1-negativa
6* @param [out] axisMax Posizione massima dell'asse di estensione mm
7* @param [out] axisMin Posizione minima dell'asse di estensione mm
8* @param [out] axisVel Velocità mm/s
9* @param [out] axisAcc Accelerazione mm/s²
10* @param [out] axisLead Passo mm
11* @param [out] encResolution Risoluzione dell'encoder
12* @param [out] axisOffset Offset dell'asse di estensione per il punto di inizio saldatura
13* @param [out] axisCompany Produttore del driver 1-Hecuan; 2-Inovance; 3-Panasonic
14* @param [out] axisModel Modello del driver 1-Hecuan-SV-XD3EA040L-E, 2-Hecuan-SV-X2EA150A-A, 1-Inovance-SV620PT5R4I, 1-Panasonic-MADLN15SG, 2-Panasonic-MSDLN25SG, 3-Panasonic-MCDLN35SG
15* @param [out] axisEncType Tipo di encoder 0-incrementale; 1-assoluto
16* @return Codice di errore
17*/
18public int ExtAxisGetParamConfig(int axisID, ref int axisType, ref int axisDirection, ref double axisMax, ref double axisMin, ref double axisVel, ref double axisAcc, ref double axisLead, ref int encResolution, ref double axisOffect, ref int axisCompany, ref int axisModel, ref int axisEncType)
13.25. 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.26. 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.27. 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.28. 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.29. 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.30. 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.31. Esempio di codice per la configurazione e il jog dell’asse esteso UDP
1private void button65_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; int selfConnect = 0;
6 rtn = robot.ExtDevGetUDPComParam(ref ip, ref port, ref period, ref lossPkgTime, ref lossPkgNum, ref disconnectTime, ref reconnectEnable, ref reconnectPeriod, ref reconnectNum, ref selfConnect);
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() + "\nselfConnect " + selfConnect.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
31
32 int axisType = -1;
33 int axisDirection = -1;
34 double axisMax = -1;
35 double axisMin = -1;
36 double axisVel = -1;
37 double axisAcc = -1;
38 double axisLead = -1;
39 int encResolution = -1;
40 double axisOffect = -1;
41 int axisCompany = -1;
42 int axisModel = -1;
43 int axisEncType = -1;
44
45 rtn = robot.ExtAxisParamConfig(1, 1, 1, 1000, -1000, 1000, 1000, 1.905f, 262144, 200, 1, 0, 0);
46 Console.WriteLine("ExtAxisParamConfig axis 1 rtn is " + rtn);
47 rtn = robot.ExtAxisGetParamConfig(1, ref axisType, ref axisDirection, ref axisMax, ref axisMin, ref axisVel, ref axisAcc, ref axisLead, ref encResolution, ref axisOffect, ref axisCompany, ref axisModel, ref axisEncType);
48 Console.WriteLine($"axis id 1 ExtAxisGetParamConfig : axisType {axisType}, axisDirection {axisDirection}, axisMax {axisMax}, axisMin {axisMin}, axisVel {axisVel}, axisAcc {axisAcc}, axisLead {axisLead}, encResolution {encResolution}, axisOffect {axisOffect}, axisCompany {axisCompany}, axisModel {axisModel}, axisEncType {axisEncType}\n");
49
50
51 rtn = robot.ExtAxisParamConfig(2, 1, 1, 1000, -1000, 1000, 1000, 4.444f, 262144, 200, 1, 0, 0);
52 Console.WriteLine("ExtAxisParamConfig axis 2 rtn is " + rtn);
53 rtn = robot.ExtAxisGetParamConfig(2, ref axisType, ref axisDirection, ref axisMax, ref axisMin, ref axisVel, ref axisAcc, ref axisLead, ref encResolution, ref axisOffect, ref axisCompany, ref axisModel, ref axisEncType);
54 Console.WriteLine($"axis id 2 ExtAxisGetParamConfig : axisType {axisType}, axisDirection {axisDirection}, axisMax {axisMax}, axisMin {axisMin}, axisVel {axisVel}, axisAcc {axisAcc}, axisLead {axisLead}, encResolution {encResolution}, axisOffect {axisOffect}, axisCompany {axisCompany}, axisModel {axisModel}, axisEncType {axisEncType}\n");
55
56
57 Thread.Sleep(3000);
58 robot.ExtAxisStartJog(1, 0, 10, 10, 30);
59 Thread.Sleep(1000);
60 robot.ExtAxisStopJog(1);
61 Thread.Sleep(3000);
62 robot.ExtAxisServoOn(1, 0);
63
64 Thread.Sleep(3000);
65 robot.ExtAxisStartJog(2, 0, 10, 10, 30);
66 Thread.Sleep(1000);
67 robot.ExtAxisStopJog(2);
68 Thread.Sleep(3000);
69 robot.ExtAxisServoOn(2, 0);
70 Thread.Sleep(3000);
71 robot.ExtDevUnloadUDPDriver();
72}
13.32. 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.33. 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.34. 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.35. 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.36. 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.37. 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.38. 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.39. 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.40. 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.41. 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.42. 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.43. 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.44. 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.45. 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.46. 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.47. 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.48. 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.49. 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.50. 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.51. 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.52. 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.53. 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.54. 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.55. 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.56. 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.57. 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.58. 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.59. 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.60. 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.61. 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.62. 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.63. 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.64. 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}
13.65. Impostazione del Tempo di Completamento del Posizionamento per Assi di Estensione UDP
1/**
2* @brief Imposta il tempo di completamento del posizionamento per assi di estensione UDP
3* @param [in] time Tempo di completamento del posizionamento [ms]
4* @return Codice di errore
5*/
6public int SetExAxisCmdDoneTime(double time)