5. I/O del Robot
5.1. Impostare le uscite digitali della scatola di controllo
1/**
2* @brief Imposta le uscite digitali della scatola di controllo
3* @param [in] id numero io, intervallo [0~15]
4* @param [in] status 0-spento, 1-acceso
5* @param [in] smooth 0-non smoothing, 1-smoothing
6* @param [in] block 0-bloccante, 1-non bloccante
7* @return Codice di errore
8*/
9errno_t SetDO(int id, uint8_t status, uint8_t smooth, uint8_t block);
5.2. Impostare le uscite digitali dell’utensile
1/**
2* @brief Imposta le uscite digitali dell'utensile
3* @param [in] id numero io, intervallo [0~1]
4* @param [in] status 0-spento, 1-acceso
5* @param [in] smooth 0-non smoothing, 1-smoothing
6* @param [in] block 0-bloccante, 1-non bloccante
7* @return Codice di errore
8*/
9errno_t SetToolDO(int id, uint8_t status, uint8_t smooth, uint8_t block);
5.3. Impostare le uscite analogiche della scatola di controllo
1/**
2* @brief Imposta le uscite analogiche della scatola di controllo
3* @param [in] id numero io, intervallo [0~1]
4* @param [in] value percentuale valore corrente o tensione, intervallo [0~100] corrispondente a valore corrente [0~20mA] o tensione [0~10V]
5* @param [in] block 0-bloccante, 1-non bloccante
6* @return Codice di errore
7*/
8errno_t SetAO(int id, float value, uint8_t block);
5.4. Impostare le uscite analogiche dell’utensile
1/**
2* @brief Imposta le uscite analogiche dell'utensile
3* @param [in] id numero io, intervallo [0]
4* @param [in] value percentuale valore corrente o tensione, intervallo [0~100] corrispondente a valore corrente [0~20mA] o tensione [0~10V]
5* @param [in] block 0-bloccante, 1-non bloccante
6* @return Codice di errore
7*/
8errno_t SetToolAO(int id, float value, uint8_t block);
5.5. Esempio di codice per impostare uscite digitali e analogiche
1 int TestAODO(void)
2 {
3 ROBOT_STATE_PKG pkg = {};
4 FRRobot robot;
5 robot.LoggerInit();
6 robot.SetLoggerLevel(1);
7 int rtn = robot.RPC("192.168.58.2");
8 if (rtn != 0)
9 {
10 return -1;
11 }
12 robot.SetReConnectParam(true, 30000, 500);
13 uint8_t status = 1;
14 uint8_t smooth = 0;
15 uint8_t block = 0;
16 for (int i = 0; i < 16; i++)
17 {
18 robot.SetDO(i, status, smooth, block);
19 robot.Sleep(300);
20 }
21 status = 0;
22 for (int i = 0; i < 16; i++)
23 {
24 robot.SetDO(i, status, smooth, block);
25 robot.Sleep(300);
26 }
27 status = 1;
28 for (int i = 0; i < 2; i++)
29 {
30 robot.SetToolDO(i, status, smooth, block);
31 robot.Sleep(1000);
32 }
33 status = 0;
34 for (int i = 0; i < 2; i++)
35 {
36 robot.SetToolDO(i, status, smooth, block);
37 robot.Sleep(1000);
38 }
39 for (int i = 0; i < 100; i++)
40 {
41 robot.SetAO(0, i * 40.96, block);
42 robot.Sleep(30);
43 }
44 for (int i = 0; i < 100; i++)
45 {
46 robot.SetToolAO(0, i * 40.96, block);
47 robot.Sleep(30);
48 }
49 robot.CloseRPC();
50 return 0;
51 }
5.6. Ottenere gli ingressi digitali della scatola di controllo
1/**
2* @brief Ottiene gli ingressi digitali della scatola di controllo
3* @param [in] id numero io, intervallo [0~15]
4* @param [in] block 0-bloccante, 1-non bloccante
5* @param [out] result 0-livello basso, 1-livello alto
6* @return Codice di errore
7*/
8errno_t GetDI(int id, uint8_t block, uint8_t *result);
5.7. Ottenere gli ingressi digitali dell’utensile
1/**
2* @brief Ottiene gli ingressi digitali dell'utensile
3* @param [in] id numero io, intervallo [0~1]
4* @param [in] block 0-bloccante, 1-non bloccante
5* @param [out] result 0-livello basso, 1-livello alto
6* @return Codice di errore
7*/
8errno_t GetToolDI(int id, uint8_t block, uint8_t *result);
5.8. Ottenere gli ingressi analogici della scatola di controllo
1/**
2* @brief Ottiene gli ingressi analogici della scatola di controllo
3* @param [in] id numero io, intervallo [0~1]
4* @param [in] block 0-bloccante, 1-non bloccante
5* @param [out] result percentuale valore corrente o tensione di ingresso, intervallo [0~100] corrispondente a valore corrente [0~20mA] o tensione [0~10V]
6* @return Codice di errore
7*/
8errno_t GetAI(int id, uint8_t block, float *result);
5.9. Ottenere gli ingressi analogici dell’utensile
1/**
2* @brief Ottiene gli ingressi analogici dell'utensile
3* @param [in] id numero io, intervallo [0]
4* @param [in] block 0-bloccante, 1-non bloccante
5* @param [out] result percentuale valore corrente o tensione di ingresso, intervallo [0~100] corrispondente a valore corrente [0~20mA] o tensione [0~10V]
6* @return Codice di errore
7*/
8errno_t GetToolAI(int id, uint8_t block, float *result);
5.10. Ottenere lo stato del pulsante di registrazione punti terminale del robot
1/**
2 * @brief Ottiene lo stato del pulsante di registrazione punti terminale del robot
3 * @param [out] state stato pulsante, 0-premuto, 1-rilasciato
4 * @return Codice di errore
5 */
6errno_t GetAxlePointRecordBtnState(uint8_t *state);
5.11. Ottenere lo stato delle uscite DO terminali del robot
1/**
2 * @brief Ottiene lo stato delle uscite DO terminali del robot
3 * @param [out] do_state stato uscite DO, do0~do1 corrisponde a bit1~bit2, da bit0 inizio
4 * @return Codice di errore
5 */
6errno_t GetToolDO(uint8_t *do_state);
5.12. Ottenere lo stato delle uscite DO del controller del robot
1/**
2 * @brief Ottiene lo stato delle uscite DO del controller del robot
3 * @param [out] do_state_h stato uscite DO, co0~co7 corrisponde a bit0~bit7
4 * @param [out] do_state_l stato uscite DO, do0~do7 corrisponde a bit0~bit7
5 * @return Codice di errore
6 */
7errno_t GetDO(uint8_t *do_state_h, uint8_t *do_state_l);
5.13. Esempio di codice per ottenere stati DI/DO del robot
1 int TestGetDIAI(void)
2 {
3 ROBOT_STATE_PKG pkg = {};
4 FRRobot robot;
5 robot.LoggerInit();
6 robot.SetLoggerLevel(1);
7 int rtn = robot.RPC("192.168.58.2");
8 if (rtn != 0)
9 {
10 return -1;
11 }
12 robot.SetReConnectParam(true, 30000, 500);
13 uint8_t status = 1;
14 uint8_t smooth = 0;
15 uint8_t block = 0;
16 uint8_t di = 0, tool_di = 0;
17 float ai = 0.0, tool_ai = 0.0;
18 float value = 0.0;
19 robot.GetDI(0, block, &di);
20 printf("di0:%u\n", di);
21 tool_di = robot.GetToolDI(1, block, &tool_di);
22 printf("tool_di1:%u\n", tool_di);
23 robot.GetAI(0, block, &ai);
24 printf("ai0:%f\n", ai);
25 tool_ai = robot.GetToolAI(0, block, &tool_ai);
26 printf("tool_ai0:%f\n", tool_ai);
27 uint8_t _button_state = 0;
28 robot.GetAxlePointRecordBtnState(&_button_state);
29 printf("_button_state is: %u\n", _button_state);
30 uint8_t tool_do_state = 0;
31 robot.GetToolDO(&tool_do_state);
32 printf("tool DO state is: %u\n", tool_do_state);
33 uint8_t do_state_h = 0;
34 uint8_t do_state_l = 0;
35 robot.GetDO(&do_state_h, &do_state_l);
36 printf("DO state high is: %u \n DO state low is: %u\n", do_state_h, do_state_l);
37 robot.CloseRPC();
38 return 0;
39 }
5.14. Attendere ingresso digitale della scatola di controllo
1/**
2* @brief Attende ingresso digitale della scatola di controllo
3* @param [in] id numero io, intervallo [0~15]
4* @param [in] status 0-spento, 1-acceso
5* @param [in] max_time tempo massimo attesa, unità ms
6* @param [in] opt strategia dopo timeout, 0-programma si ferma e segnala timeout, 1-ignora timeout programma continua, 2-attesa continua
7* @return Codice di errore
8*/
9errno_t WaitDI(int id, uint8_t status, int max_time, int opt);
5.15. Attendere ingressi digitali multipli della scatola di controllo
1/**
2* @brief Attende ingressi digitali multipli della scatola di controllo
3* @param [in] mode 0-AND multipli, 1-OR multipli
4* @param [in] id numero io, bit0~bit7 corrisponde DI0~DI7, bit8~bit15 corrisponde CI0~CI7
5* @param [in] status 0-spento, 1-acceso
6* @param [in] max_time tempo massimo attesa, unità ms
7* @param [in] opt strategia dopo timeout, 0-programma si ferma e segnala timeout, 1-ignora timeout programma continua, 2-attesa continua
8* @return Codice di errore
9*/
10errno_t WaitMultiDI(int mode, int id, uint8_t status, int max_time, int opt);
5.16. Attendere ingresso digitale dell’utensile
1/**
2* @brief Attende ingresso digitale dell'utensile
3* @param [in] id numero io, intervallo [0~1]
4* @param [in] status 0-spento, 1-acceso
5* @param [in] max_time tempo massimo attesa, unità ms
6* @param [in] opt strategia dopo timeout, 0-programma si ferma e segnala timeout, 1-ignora timeout programma continua, 2-attesa continua
7* @return Codice di errore
8*/
9errno_t WaitToolDI(int id, uint8_t status, int max_time, int opt);
5.17. Attendere ingresso analogico della scatola di controllo
1/**
2* @brief Attende ingresso analogico della scatola di controllo
3* @param [in] id numero io, intervallo [0~1]
4* @param [in] sign 0-maggiore di, 1-minore di
5* @param [in] value percentuale valore corrente o tensione di ingresso, intervallo [0~100] corrispondente a valore corrente [0~20mA] o tensione [0~10V]
6* @param [in] max_time tempo massimo attesa, unità ms
7* @param [in] opt strategia dopo timeout, 0-programma si ferma e segnala timeout, 1-ignora timeout programma continua, 2-attesa continua
8* @return Codice di errore
9*/
10errno_t WaitAI(int id, int sign, float value, int max_time, int opt);
5.18. Attendere ingresso analogico dell’utensile
1/**
2* @brief Attende ingresso analogico dell'utensile
3* @param [in] id numero io, intervallo [0]
4* @param [in] sign 0-maggiore di, 1-minore di
5* @param [in] value percentuale valore corrente o tensione di ingresso, intervallo [0~100] corrispondente a valore corrente [0~20mA] o tensione [0~10V]
6* @param [in] max_time tempo massimo attesa, unità ms
7* @param [in] opt strategia dopo timeout, 0-programma si ferma e segnala timeout, 1-ignora timeout programma continua, 2-attesa continua
8* @return Codice di errore
9*/
10errno_t WaitToolAI(int id, int sign, float value, int max_time, int opt);
5.19. Esempio di codice per attendere segnali di ingresso digitali/analogici della scatola di controllo
Cambiato nella versione C++SDK-v2.1.2.0.
1 int TestWaitDIAI(void)
2 {
3 ROBOT_STATE_PKG pkg = {};
4 FRRobot robot;
5 robot.LoggerInit();
6 robot.SetLoggerLevel(1);
7 int rtn = robot.RPC("192.168.58.2");
8 if (rtn != 0)
9 {
10 return -1;
11 }
12 robot.SetReConnectParam(true, 30000, 500);
13 uint8_t status = 1;
14 uint8_t smooth = 0;
15 uint8_t block = 0;
16 uint8_t di = 0, tool_di = 0;
17 float ai = 0.0, tool_ai = 0.0;
18 float value = 0.0;
19 rtn = robot.WaitDI(0, 1, 1000, 1);
20 cout << "WaitDI over; rtn is: " << rtn << endl;
21 robot.WaitMultiDI(1, 3, 3, 1000, 1);
22 cout << "WaitDI over; rtn is: " << rtn << endl;
23 robot.WaitToolDI(1, 1, 1000, 1);
24 cout << "WaitDI over; rtn is: " << rtn << endl;
25 robot.WaitAI(0, 0, 50, 1000, 1);
26 cout << "WaitDI over; rtn is: " << rtn << endl;
27 robot.WaitToolAI(0, 0, 50, 1000, 1);
28 cout << "WaitDI over; rtn is: " << rtn << endl;
29 robot.CloseRPC();
30 return 0;
31 }
5.20. Imposta se Resettare l’Uscita DO del Box di Controllo dopo Stop/Pausa
Nuovo nella versione C++SDK-v2.1.5.0.
1/**
2* @brief Imposta se resettare l'uscita DO del box di controllo dopo stop/pausa
3* @param [in] resetFlag 0-non resettare; 1-resetta
4* @param [in] reloadFlag Se ricaricare dopo la ripresa dalla pausa, 0-non caricare; 1-carica
5* @return Codice di errore
6*/
7errno_t SetOutputResetCtlBoxDO(int resetFlag, int reloadFlag = 0);
5.21. Imposta se Resettare l’Uscita AO del Box di Controllo dopo Stop/Pausa
Nuovo nella versione C++SDK-v2.1.5.0.
1/**
2* @brief Imposta se resettare l'uscita AO del box di controllo dopo stop/pausa
3* @param [in] resetFlag 0-non resettare; 1-resetta
4* @param [in] reloadFlag Se ricaricare dopo la ripresa dalla pausa, 0-non caricare; 1-carica
5* @return Codice di errore
6*/
7errno_t SetOutputResetCtlBoxAO(int resetFlag, int reloadFlag = 0);
5.22. Imposta se Resettare l’Uscita DO dell’Utensile Terminale dopo Stop/Pausa
Nuovo nella versione C++SDK-v2.1.5.0.
1/**
2* @brief Imposta se resettare l'uscita DO dell'utensile terminale dopo stop/pausa
3* @param [in] resetFlag 0-non resettare; 1-resetta
4* @param [in] reloadFlag Se ricaricare dopo la ripresa dalla pausa, 0-non caricare; 1-carica
5* @return Codice di errore
6*/
7errno_t SetOutputResetAxleDO(int resetFlag, int reloadFlag = 0);
5.23. Imposta se Resettare l’Uscita AO dell’Utensile Terminale dopo Stop/Pausa
Nuovo nella versione C++SDK-v2.1.5.0.
1/**
2* @brief Imposta se resettare l'uscita AO dell'utensile terminale dopo stop/pausa
3* @param [in] resetFlag 0-non resettare; 1-resetta
4* @param [in] reloadFlag Se ricaricare dopo la ripresa dalla pausa, 0-non caricare; 1-carica
5* @return Codice di errore
6*/
7errno_t SetOutputResetAxleAO(int resetFlag, int reloadFlag = 0);
5.24. Imposta se Resettare l’Uscita DO Estensione dopo Stop/Pausa
Nuovo nella versione C++SDK-v2.1.5.0.
1/**
2* @brief Imposta se resettare l'uscita DO di estensione dopo stop/pausa
3* @param [in] resetFlag 0-non resettare; 1-resetta
4* @param [in] reloadFlag Se ricaricare dopo la ripresa dalla pausa, 0-non caricare; 1-carica
5* @return Codice di errore
6*/
7errno_t SetOutputResetExtDO(int resetFlag, int reloadFlag = 0);
5.25. Imposta se Resettare l’Uscita AO Estensione dopo Stop/Pausa
Nuovo nella versione C++SDK-v2.1.5.0.
1/**
2* @brief Imposta se resettare l'uscita AO di estensione dopo stop/pausa
3* @param [in] resetFlag 0-non resettare; 1-resetta
4* @param [in] reloadFlag Se ricaricare dopo la ripresa dalla pausa, 0-non caricare; 1-carica
5* @return Codice di errore
6*/
7errno_t SetOutputResetExtAO(int resetFlag, int reloadFlag = 0);
5.26. Imposta se Resettare l’Uscita SmartTool dopo Stop/Pausa
Nuovo nella versione C++SDK-v2.1.5.0.
1/**
2* @brief Imposta se resettare l'uscita SmartTool dopo stop/pausa
3* @param [in] resetFlag 0-non resettare; 1-resetta
4* @param [in] reloadFlag Se ricaricare dopo la ripresa dalla pausa, 0-non caricare; 1-carica
5* @return Codice di errore
6*/
7errno_t SetOutputResetSmartToolDO(int resetFlag, int reloadFlag = 0);
5.27. Esempio di Codice per Impostare il Reset dell’Uscita del Programma LUA dopo Stop/Pausa
Nuovo nella versione C++SDK-v2.1.5.0.
1int TestDOReset(void)
2{
3ROBOT_STATE_PKG pkg = {};
4FRRobot robot;
5robot.LoggerInit();
6robot.SetLoggerLevel(3);
7int rtn = robot.RPC("192.168.58.2");
8if (rtn != 0)
9{
10 return -1;
11}
12robot.SetReConnectParam(true, 30000, 500);
13for (int i = 0; i < 16; i++)
14{
15 robot.SetDO(i, 1, 0, 0);
16 robot.Sleep(200);
17}
18int resetFlag = 0;
19int resumeReloadFlag = 0;
20rtn = robot.SetOutputResetCtlBoxDO(resetFlag, resumeReloadFlag);
21robot.SetOutputResetCtlBoxAO(resetFlag, resumeReloadFlag);
22robot.SetOutputResetAxleDO(resetFlag, resumeReloadFlag);
23robot.SetOutputResetAxleAO(resetFlag, resumeReloadFlag);
24robot.SetOutputResetExtDO(resetFlag, resumeReloadFlag);
25robot.SetOutputResetExtAO(resetFlag, resumeReloadFlag);
26robot.SetOutputResetSmartToolDO(resetFlag, resumeReloadFlag);
27robot.ProgramLoad("/fruser/test.lua");
28robot.ProgramRun();
29robot.Sleep(2000);
30robot.PauseMotion();
31robot.Sleep(2000);
32robot.ResumeMotion();
33robot.Sleep(2000);
34robot.CloseRPC();
35return 0;
36}
5.28. Impostare le Funzioni delle Porte CI Configurabili del Box di Controllo
1/**
2* @brief Imposta le funzioni delle porte CI configurabili del box di controllo
3* @param [in] config Codici funzione CI0-CI7;
4* 0-Nessuna;1-Avvio arco riuscito;2-Saldatrice pronta;3-Rilevamento nastro trasportatore;4-Pausa;5-Riprendi;6-Avvio;7-Arresto;
58-Pausa/Riprendi;9-Avvio/Arresto;10-Trascinamento a pedale;11-Spostamento a origine lavoro;12-Commutazione manuale/automatica;
613-Ricerca filo riuscita;14-Interruzione movimento;15-Avvio programma principale;16-Avvio riavvolgimento;17-Conferma avvio;
718-Segnale rilevamento fotoelettrico X;19-Segnale rilevamento fotoelettrico Y;20-Segnale ingresso arresto emergenza esterno 1;21-Segnale ingresso arresto emergenza esterno 2;
822-Modalità riduzione livello 1;23-Modalità riduzione livello 2;24-Modalità riduzione livello 3 (Arresto);25-Riprendi saldatura;26-Termina saldatura;
927-Abilita trascinamento assistito;28-Disabilita trascinamento assistito;29-Abilita/Disabilita trascinamento assistito;30-Cancella tutti gli errori;
1031-Commutazione manuale/automatica (livello alto/basso);32-Abilita;33-Disabilita;34-Abilita/Disabilita (fronte di salita/discesa);35-Avvio/ fine inseguimento punto fisso
11* @return Codice di errore
12*/
13errno_t SetDIConfig(int config[8]);
5.29. Ottenere le Funzioni delle Porte CI Configurabili del Box di Controllo
1/**
2* @brief Ottiene le funzioni delle porte CI configurabili del box di controllo
3* @param [in] config Codici funzione CI0-CI7;
4* 0-Nessuna;1-Avvio arco riuscito;2-Saldatrice pronta;3-Rilevamento nastro trasportatore;4-Pausa;5-Riprendi;6-Avvio;7-Arresto;
58-Pausa/Riprendi;9-Avvio/Arresto;10-Trascinamento a pedale;11-Spostamento a origine lavoro;12-Commutazione manuale/automatica;
613-Ricerca filo riuscita;14-Interruzione movimento;15-Avvio programma principale;16-Avvio riavvolgimento;17-Conferma avvio;
718-Segnale rilevamento fotoelettrico X;19-Segnale rilevamento fotoelettrico Y;20-Segnale ingresso arresto emergenza esterno 1;21-Segnale ingresso arresto emergenza esterno 2;
822-Modalità riduzione livello 1;23-Modalità riduzione livello 2;24-Modalità riduzione livello 3 (Arresto);25-Riprendi saldatura;26-Termina saldatura;
927-Abilita trascinamento assistito;28-Disabilita trascinamento assistito;29-Abilita/Disabilita trascinamento assistito;30-Cancella tutti gli errori;
1031-Commutazione manuale/automatica (livello alto/basso);32-Abilita;33-Disabilita;34-Abilita/Disabilita (fronte di salita/discesa);35-Avvio/ fine inseguimento punto fisso
11* @return Codice di errore
12*/
13errno_t GetDIConfig(int config[8]);
5.30. Impostare le Funzioni delle Porte CO Configurabili del Box di Controllo
1/**
2* @brief Imposta le funzioni delle porte CO configurabili del box di controllo
3* @param [out] config Codici funzione CO0-CO7;
4* 0-Nessuna;1-Errore robot;2-Robot in movimento;3-Avvio/arresto spruzzatura;4-Pulizia pistola spruzzo;5-Segnale gas;6-Segnale avvio arco;7-Alimentazione filo a impulsi;
58-Alimentazione filo inversa;9-Ingresso JOB 1;10-Ingresso JOB 2;11-Ingresso JOB 3;12-Controllo avvio/arresto nastro trasportatore;13-Robot in pausa;14-Origine lavoro raggiunta;
615-Area di interferenza raggiunta;16-Controllo avvio/arresto ricerca filo;17-Avvio robot completato;18-Avvio/arresto programma;19-Modalità automatica/manuale;20-Segnale uscita arresto emergenza 1-Sicurezza;
721-Segnale uscita arresto emergenza 2-Sicurezza;22-Esecuzione/arresto programma script Lua;23-Uscita stato sicurezza-Sicurezza;24-Uscita stato arresto protettivo-Sicurezza;
825-Robot in movimento-Sicurezza;26-Modalità ridotta robot-Sicurezza;27-Modalità non ridotta robot-Sicurezza;28-Robot non arrestato;29-Errore robot-Errore punto istruzione;
930-Errore robot-Errore driver;31-Errore robot-Limite software superato;32-Errore robot-Errore collisione;33-Errore robot-Errore numero slave attivi;
1034-Errore robot-Errore slave;35-Errore robot-Errore IO;36-Errore robot-Errore gripper;37-Errore robot-Errore file;38-Errore robot-Errore posa singolare;
1139-Errore robot-Errore comunicazione driver;40-Errore robot-Errore parametro;41-Errore robot-Asse esterno limite software superato;42-Avviso robot-Avviso;
1243-Avviso robot-Avviso porta sicurezza;44-Avviso robot-Avviso movimento;45-Avviso robot-Avviso area interferenza;46-Avviso robot-Avviso parete sicurezza;
1347-Stato abilitazione;48-Sollevamento automatico durante disconnessione;49-Avviso interferenza cubo 1;50-Avviso interferenza cubo 2;51-Avviso interferenza cubo 3;52-Avviso interferenza cubo 4;
14* @return Codice di errore
15*/
16errno_t SetDOConfig(int config[8]);
5.31. Ottenere le Funzioni delle Porte CO Configurabili del Box di Controllo
1/**
2* @brief Ottiene le funzioni delle porte CO configurabili del box di controllo
3* @param [out] config Codici funzione CO0-CO7;
4* 0-Nessuna;1-Errore robot;2-Robot in movimento;3-Avvio/arresto spruzzatura;4-Pulizia pistola spruzzo;5-Segnale gas;6-Segnale avvio arco;7-Alimentazione filo a impulsi;
58-Alimentazione filo inversa;9-Ingresso JOB 1;10-Ingresso JOB 2;11-Ingresso JOB 3;12-Controllo avvio/arresto nastro trasportatore;13-Robot in pausa;14-Origine lavoro raggiunta;
615-Area di interferenza raggiunta;16-Controllo avvio/arresto ricerca filo;17-Avvio robot completato;18-Avvio/arresto programma;19-Modalità automatica/manuale;20-Segnale uscita arresto emergenza 1-Sicurezza;
721-Segnale uscita arresto emergenza 2-Sicurezza;22-Esecuzione/arresto programma script Lua;23-Uscita stato sicurezza-Sicurezza;24-Uscita stato arresto protettivo-Sicurezza;
825-Robot in movimento-Sicurezza;26-Modalità ridotta robot-Sicurezza;27-Modalità non ridotta robot-Sicurezza;28-Robot non arrestato;29-Errore robot-Errore punto istruzione;
930-Errore robot-Errore driver;31-Errore robot-Limite software superato;32-Errore robot-Errore collisione;33-Errore robot-Errore numero slave attivi;
1034-Errore robot-Errore slave;35-Errore robot-Errore IO;36-Errore robot-Errore gripper;37-Errore robot-Errore file;38-Errore robot-Errore posa singolare;
1139-Errore robot-Errore comunicazione driver;40-Errore robot-Errore parametro;41-Errore robot-Asse esterno limite software superato;42-Avviso robot-Avviso;
1243-Avviso robot-Avviso porta sicurezza;44-Avviso robot-Avviso movimento;45-Avviso robot-Avviso area interferenza;46-Avviso robot-Avviso parete sicurezza;
1347-Stato abilitazione;48-Sollevamento automatico durante disconnessione;49-Avviso interferenza cubo 1;50-Avviso interferenza cubo 2;51-Avviso interferenza cubo 3;52-Avviso interferenza cubo 4;
14* @return Codice di errore
15*/
16errno_t GetDOConfig(int config[8]);
5.32. Impostare le Funzioni delle Porte End-CI Configurabili dell’End-Effector
1/**
2* @brief Imposta le funzioni delle porte End-CI configurabili dell'end-effector
3* @param [in] config Codici funzione End CI0-CI1;
4* 0-Nessuna;1-Interruttore strumento insegnamento a trascinamento;2-Segnale registrazione punto;3-Commutazione manuale/automatica (segnale impulsivo);4-Avvio/arresto registrazione TPD;5-Pausa movimento;
56-Riprendi movimento;7-Avvio;8-Arresto;9-Pausa/Riprendi;10-Avvio/Arresto;11-Abilita trascinamento assistito sensore di forza;12-Disabilita trascinamento assistito sensore di forza;
613-Abilita/Disabilita trascinamento assistito sensore di forza;14-Segnale rilevamento laser X;15-Segnale rilevamento laser Y;16-Movimento PTP verso origine lavoro;17-Interruzione movimento, arresta movimento corrente in base al segnale;
718-Avvio programma principale;19-Avvio riavvolgimento;20-Conferma avvio;21-Riprendi saldatura;22-Termina saldatura;23-Cancella errore;24-Commutazione manuale/automatica (livello alto/basso);
825-Abilita;26-Disabilita;27-Abilita/Disabilita;28-Segnale avvio/arresto inseguimento servocomando laser;
9* @return Codice di errore
10*/
11errno_t SetToolDIConfig(int config[2]);
5.33. Ottenere le Funzioni delle Porte End-CI Configurabili dell’End-Effector
1/**
2* @brief Ottiene le funzioni delle porte End-CI configurabili dell'end-effector
3* @param [out] config Codici funzione End CI0-CI1;
4* 0-Nessuna;1-Interruttore strumento insegnamento a trascinamento;2-Segnale registrazione punto;3-Commutazione manuale/automatica (segnale impulsivo);4-Avvio/arresto registrazione TPD;5-Pausa movimento;
56-Riprendi movimento;7-Avvio;8-Arresto;9-Pausa/Riprendi;10-Avvio/Arresto;11-Abilita trascinamento assistito sensore di forza;12-Disabilita trascinamento assistito sensore di forza;
613-Abilita/Disabilita trascinamento assistito sensore di forza;14-Segnale rilevamento laser X;15-Segnale rilevamento laser Y;16-Movimento PTP verso origine lavoro;17-Interruzione movimento, arresta movimento corrente in base al segnale;
718-Avvio programma principale;19-Avvio riavvolgimento;20-Conferma avvio;21-Riprendi saldatura;22-Termina saldatura;23-Cancella errore;24-Commutazione manuale/automatica (livello alto/basso);
825-Abilita;26-Disabilita;27-Abilita/Disabilita;28-Segnale avvio/arresto inseguimento servocomando laser;
9* @return Codice di errore
10*/
11errno_t GetToolDIConfig(int config[2]);
5.34. Impostare lo Stato Attivo CI Configurabile del Box di Controllo
1/**
2* @brief Imposta lo stato attivo CI configurabile del box di controllo
3* @param [in] config Stato attivo porte CI0-CI7; 0-attivo alto; 1-attivo basso
4* @return Codice di errore
5*/
6errno_t SetDIConfigLevel(int config[8]);
5.35. Ottenere lo Stato Attivo CI Configurabile del Box di Controllo
1/**
2* @brief Ottiene lo stato attivo CI configurabile del box di controllo
3* @param [out] config Stato attivo porte CI0-CI7; 0-attivo alto; 1-attivo basso
4* @return Codice di errore
5*/
6errno_t GetDIConfigLevel(int config[8]);
5.36. Impostare lo Stato Attivo CO Configurabile del Box di Controllo
1/**
2* @brief Imposta lo stato attivo CO configurabile del box di controllo
3* @param [in] config Stato attivo porte CO0-CO7; 0-attivo alto; 1-attivo basso
4* @return Codice di errore
5*/
6errno_t SetDOConfigLevel(int config[8]);
5.37. Ottenere lo Stato Attivo CO Configurabile del Box di Controllo
1/**
2* @brief Ottiene lo stato attivo CO configurabile del box di controllo
3* @param [out] config Stato attivo porte CO0-CO7; 0-attivo alto; 1-attivo basso
4* @return Codice di errore
5*/
6errno_t GetDOConfigLevel(int config[8]);
5.38. Impostare lo Stato Attivo CI Configurabile dell’End-Effector
1/**
2* @brief Imposta lo stato attivo CI configurabile dell'end-effector
3* @param [in] config Stato attivo porte CI0-CI1; 0-attivo alto; 1-attivo basso
4* @return Codice di errore
5*/
6errno_t SetToolDIConfigLevel(int config[2]);
5.39. Ottenere lo Stato Attivo CI Configurabile dell’End-Effector
1/**
2* @brief Ottiene lo stato attivo CI configurabile dell'end-effector
3* @param [out] config Stato attivo porte CI0-CI1; 0-attivo alto; 1-attivo basso
4* @return Codice di errore
5*/
6errno_t GetToolDIConfigLevel(int config[2]);
5.40. Impostare lo Stato Attivo DI Standard del Box di Controllo
1/**
2* @brief Imposta lo stato attivo DI standard del box di controllo
3* @param [in] config Stato attivo porte DI0-DI7; 0-attivo alto; 1-attivo basso
4* @return Codice di errore
5*/
6errno_t SetStandardDILevel(int config[8]);
5.41. Ottenere lo Stato Attivo DI Standard del Box di Controllo
1/**
2* @brief Ottiene lo stato attivo DI standard del box di controllo
3* @param [out] config Stato attivo porte DI0-DI7; 0-attivo alto; 1-attivo basso
4* @return Codice di errore
5*/
6errno_t GetStandardDILevel(int config[8]);
5.42. Impostare lo Stato Attivo DO Standard del Box di Controllo
1/**
2* @brief Imposta lo stato attivo DO standard del box di controllo
3* @param [in] config Stato attivo porte DO0-DO7; 0-attivo alto; 1-attivo basso
4* @return Codice di errore
5*/
6errno_t SetStandardDOLevel(int config[8]);
5.43. Ottenere lo Stato Attivo DO Standard del Box di Controllo
1/**
2* @brief Ottiene lo stato attivo DO standard del box di controllo
3* @param [out] config Stato attivo porte DO0-DO7; 0-attivo alto; 1-attivo basso
4* @return Codice di errore
5*/
6errno_t GetStandardDOLevel(int config[8]);
5.44. Esempio di Codice di Configurazione IO del Robot
1int TestIOConfig()
2{
3 ROBOT_STATE_PKG pkg = {};
4 FRRobot robot;
5 robot.LoggerInit();
6 robot.SetLoggerLevel(1);
7 int rtn = robot.RPC("192.168.58.2");
8 if (rtn != 0)
9 {
10 return -1;
11 }
12 robot.SetReConnectParam(true, 30000, 500);
13 int setDIConfig[8] = { 1, 2, 3, 4, 5, 6, 7, 8 };
14 int getDIConfig[8] = { 0 };
15 rtn = robot.SetDIConfig(setDIConfig);
16 printf("SetDIConfig rtn is %d\n", rtn);
17 rtn = robot.GetDIConfig(getDIConfig);
18 printf("GetDIConfig rtn is %d, value is %d %d %d %d %d %d %d %d \n", rtn,
19 getDIConfig[0], getDIConfig[1], getDIConfig[2], getDIConfig[3], getDIConfig[4], getDIConfig[5], getDIConfig[6], getDIConfig[7]);
20 int setDOConfig[8] = { 9, 10, 11, 12, 13, 14, 15, 16 };
21 int getDOConfig[8] = { 0 };
22 rtn = robot.SetDOConfig(setDOConfig);
23 printf("SetDOConfig rtn is %d\n", rtn);
24 rtn = robot.GetDOConfig(getDOConfig);
25 printf("GetDOConfig rtn is %d, value is %d %d %d %d %d %d %d %d \n", rtn,
26 getDOConfig[0], getDOConfig[1], getDOConfig[2], getDOConfig[3], getDOConfig[4], getDOConfig[5], getDOConfig[6], getDOConfig[7]);
27 int setToolDIConfig[2] = { 17, 18 };
28 int getToolDIConfig[2] = { 0 };
29 rtn = robot.SetToolDIConfig(setToolDIConfig);
30 printf("SetToolDIConfig rtn is %d\n", rtn);
31 rtn = robot.GetToolDIConfig(getToolDIConfig);
32 printf("GetToolDIConfig rtn is %d, value is %d %d \n", rtn, getToolDIConfig[0], getToolDIConfig[1]);
33 int setDIConfigLevel[8] = { 1, 1, 1, 1, 0, 0, 0, 0 };
34 int getDIConfigLevel[8] = { 0 };
35 rtn = robot.SetDIConfigLevel(setDIConfigLevel);
36 printf("SetDIConfigLevel rtn is %d\n", rtn);
37 rtn = robot.GetDIConfigLevel(getDIConfigLevel);
38 printf("GetDIConfigLevel rtn is %d, value is %d %d %d %d %d %d %d %d \n", rtn,
39 getDIConfigLevel[0], getDIConfigLevel[1], getDIConfigLevel[2], getDIConfigLevel[3], getDIConfigLevel[4], getDIConfigLevel[5], getDIConfigLevel[6], getDIConfigLevel[7]);
40 int setDOConfigLevel[8] = { 0, 0, 0, 0, 1, 1, 1, 1 };
41 int getDOConfigLevel[8] = { 0 };
42 rtn = robot.SetDOConfigLevel(setDOConfigLevel);
43 printf("SetDOConfigLevel rtn is %d\n", rtn);
44 rtn = robot.GetDOConfigLevel(getDOConfigLevel);
45 printf("GetDOConfigLevel rtn is %d, value is %d %d %d %d %d %d %d %d \n", rtn,
46 getDOConfigLevel[0], getDOConfigLevel[1], getDOConfigLevel[2], getDOConfigLevel[3], getDOConfigLevel[4], getDOConfigLevel[5], getDOConfigLevel[6], getDOConfigLevel[7]);
47 int setToolDIConfigLevel[2] = { 1, 0 };
48 int getToolDIConfigLevel[2] = { 0 };
49 rtn = robot.SetToolDIConfigLevel(setToolDIConfigLevel);
50 printf("SetToolDIConfigLevel rtn is %d\n", rtn);
51 rtn = robot.GetToolDIConfigLevel(getToolDIConfigLevel);
52 printf("GetToolDIConfigLevel rtn is %d, value is %d %d \n", rtn, getToolDIConfigLevel[0], getToolDIConfigLevel[1]);
53 int setStandardDILevel[8] = { 1, 1, 1, 1, 0, 0, 0, 0 };
54 int getStandardDILevel[8] = { 0 };
55 rtn = robot.SetStandardDILevel(setStandardDILevel);
56 printf("SetStandardDILevel rtn is %d\n", rtn);
57 rtn = robot.GetStandardDILevel(getStandardDILevel);
58 printf("GetStandardDILevel rtn is %d, value is %d %d %d %d %d %d %d %d \n", rtn,
59 getStandardDILevel[0], getStandardDILevel[1], getStandardDILevel[2], getStandardDILevel[3], getStandardDILevel[4], getStandardDILevel[5], getStandardDILevel[6], getStandardDILevel[7]);
60 int setStandardDOLevel[8] = { 0, 0, 0, 0, 1, 1, 1, 1 };
61 int getStandardDOLevel[8] = { 0 };
62 rtn = robot.SetStandardDOLevel(setStandardDOLevel);
63 printf("SetStandardDOLevel rtn is %d\n", rtn);
64 rtn = robot.GetStandardDOLevel(getStandardDOLevel);
65 printf("GetStandsrdDOLevel rtn is %d, value is %d %d %d %d %d %d %d %d \n", rtn,
66 getStandardDOLevel[0], getStandardDOLevel[1], getStandardDOLevel[2], getStandardDOLevel[3], getStandardDOLevel[4], getStandardDOLevel[5], getStandardDOLevel[6], getStandardDOLevel[7]);
67 robot.Sleep(2000);
68 robot.CloseRPC();
69 robot.Sleep(1000);
70 return 0;
71}