5. I/O del robot

5.1. Imposta uscita digitale del cabinet di controllo

1/**
2* @brief  Imposta uscita digitale del cabinet 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 smooth, 1-Smooth
6* @param  [in] block  0-Bloccante, 1-Non bloccante
7* @return  Codice di errore
8*/
9int SetDO(int id, byte status, byte smooth, byte block);

5.2. Imposta uscita digitale dell’utensile

1/**
2* @brief  Imposta uscita digitale 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 smooth, 1-Smooth
6* @param  [in] block  0-Bloccante, 1-Non bloccante
7* @return  Codice di errore
8*/
9int SetToolDO(int id, byte status, byte smooth, byte block);

5.3. Imposta uscita analogica del cabinet di controllo

1/**
2* @brief  Imposta uscita analogica del cabinet 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 corrente [0~20mA] o tensione [0~10V]
5* @param  [in] block  0-Bloccante, 1-Non bloccante
6* @return  Codice di errore
7*/
8int SetAO(int id, float value, byte block);

5.4. Imposta uscita analogica dell’utensile

1/**
2* @brief  Imposta uscita analogica dell'utensile
3* @param  [in] id  Numero io, intervallo [0]
4* @param  [in] value Percentuale valore corrente o tensione, intervallo [0~100] corrispondente a corrente [0~20mA] o tensione [0~10V]
5* @param  [in] block  0-Bloccante, 1-Non bloccante
6* @return  Codice di errore
7*/
8int SetToolAO(int id, float value, byte block);

5.5. Esempio di codice per impostare uscite digitali e analogiche

 1private void button14_Click(object sender, EventArgs e)
 2{
 3    byte status = 1;
 4    byte smooth = 0;
 5    byte block = 0;
 6    byte di = 0, tool_di = 0;
 7    float ai = 0.0f, tool_ai = 0.0f;
 8    float value = 0.0f;
 9
10
11    for (int i = 0; i < 16; i++)
12    {
13        robot.SetDO(i, status, smooth, block);
14        Thread.Sleep(300);
15    }
16
17    status = 0;
18
19    for (int i = 0; i < 16; i++)
20    {
21        robot.SetDO(i, status, smooth, block);
22        Thread.Sleep(300);
23    }
24
25    status = 1;
26
27    for (int i = 0; i < 2; i++)
28    {
29        robot.SetToolDO(i, status, smooth, block);
30        Thread.Sleep(1000);
31    }
32
33    status = 0;
34
35    for (int i = 0; i < 2; i++)
36    {
37        robot.SetToolDO(i, status, smooth, block);
38        Thread.Sleep(1000);
39    }
40
41    for (int i = 0; i < 100; i++)
42    {
43        robot.SetAO(0, i, block);
44        Thread.Sleep(30);
45    }
46
47    for (int i = 0; i < 100; i++)
48    {
49        robot.SetToolAO(0, i, block);
50        Thread.Sleep(30);
51    }
52
53}

5.6. Ottieni ingresso digitale del cabinet di controllo

1/**
2* @brief  Ottieni ingresso digitale del cabinet 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-Basso livello, 1-Alto livello
6* @return  Codice di errore
7*/
8int GetDI(int id, byte block, ref byte level);

5.7. Ottieni ingresso digitale dell’utensile

1/**
2* @brief  Ottieni ingresso digitale 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-Basso livello, 1-Alto livello
6* @return  Codice di errore
7*/
8int GetToolDI(int id, byte block, ref byte level);

5.8. Ottieni ingresso analogico del cabinet di controllo

1/**
2* @brief  Ottieni ingresso analogico del cabinet 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 in ingresso, intervallo [0~100] corrispondente a corrente [0~20mS] o tensione [0~10V]
6* @return  Codice di errore
7*/
8int GetAI(int id, byte block, ref float persent);

5.9. Ottieni ingresso analogico dell’utensile

1/**
2* @brief  Ottieni ingresso analogico 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 in ingresso, intervallo [0~100] corrispondente a corrente [0~20mS] o tensione [0~10V]
6* @return  Codice di errore
7*/
8int GetToolAI(int id, byte block, ref float persent);

5.10. Ottieni lo stato del pulsante di registrazione all’estremità del robot

1/**
2* @brief Ottieni lo stato del pulsante di registrazione all'estremità del robot
3* @param [out] state Stato pulsante, 0-Premuto, 1-Rilasciato
4* @return Codice di errore
5*/
6int GetAxlePointRecordBtnState(ref byte state);

5.11. Ottieni lo stato delle uscite DO all’estremità del robot

1/**
2* @brief Ottieni lo stato delle uscite DO all'estremità del robot
3* @param [out] do_state Stato uscite DO, do0~do1 corrisponde a bit1~bit2, a partire da bit0
4* @return Codice di errore
5*/
6int GetToolDO(ref byte do_state);

5.12. Ottieni lo stato delle uscite DO del controller del robot

1/**
2* @brief Ottieni 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*/
7int GetDO(ref int do_state_h, ref int do_state_l);

5.13. Esempio di codice per ottenere lo stato DI, DO del robot

 1private void button15_Click(object sender, EventArgs e)
 2{
 3    byte status = 1;
 4    byte smooth = 0;
 5    byte block = 0;
 6    byte di = 0, tool_di = 0;
 7    float ai = 0.0f, tool_ai = 0.0f;
 8    float value = 0.0f;
 9
10    robot.GetDI(0, block, ref di);
11    Console.WriteLine($"di0: {di}");
12
13    tool_di = (byte)robot.GetToolDI(1, block, ref tool_di);
14    Console.WriteLine($"tool_di1: {tool_di}");
15
16    robot.GetAI(0, block, ref ai);
17    Console.WriteLine($"ai0: {ai}");
18
19    tool_ai = robot.GetToolAI(0, block, ref tool_ai);
20    Console.WriteLine($"tool_ai0: {tool_ai}");
21
22    byte _button_state = 0;
23    robot.GetAxlePointRecordBtnState(ref _button_state);
24    Console.WriteLine($"_button_state is: {_button_state}");
25
26    byte tool_do_state = 0;
27    robot.GetToolDO(ref tool_do_state);
28    Console.WriteLine($"tool DO state is: {tool_do_state}");
29
30    int do_state_h = 0;
31    int do_state_l = 0;
32    robot.GetDO(ref do_state_h, ref do_state_l);
33    Console.WriteLine($"DO state high is: {do_state_h}\n DO state low is: {do_state_l}");
34}

5.14. Attendi ingresso digitale del cabinet di controllo

1/**
2* @brief Attendi ingresso digitale del cabinet 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 di attesa massimo, unità ms
6* @param  [in]  opt  Strategia dopo timeout, 0-Arresta programma e indica timeout, 1-Ignora indicazione timeout e continua esecuzione programma, 2-Aspetta indefinitamente
7* @return  Codice di errore
8*/
9int WaitDI(int id, byte status, int max_time, int opt);

5.15. Attendi ingressi digitali multipli del cabinet di controllo

 1/**
 2* @brief Attendi ingressi digitali multipli del cabinet di controllo
 3* @param  [in] mode 0-AND multipli, 1-OR multipli
 4* @param  [in] id  Numero io, bit0~bit7 corrisponde a DI0~DI7, bit8~bit15 corrisponde a CI0~CI7
 5* @param  [in]  status 0-Spento, 1-Acceso
 6* @param  [in]  max_time  Tempo di attesa massimo, unità ms
 7* @param  [in]  opt  Strategia dopo timeout, 0-Arresta programma e indica timeout, 1-Ignora indicazione timeout e continua esecuzione programma, 2-Aspetta indefinitamente
 8* @return  Codice di errore
 9*/
10int WaitMultiDI(int mode, int id, byte status, int max_time, int opt);

5.16. Attendi ingresso digitale dell’utensile

1/**
2* @brief Attendi 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 di attesa massimo, unità ms
6* @param  [in]  opt  Strategia dopo timeout, 0-Arresta programma e indica timeout, 1-Ignora indicazione timeout e continua esecuzione programma, 2-Aspetta indefinitamente
7* @return  Codice di errore
8*/
9int WaitToolDI(int id, byte status, int max_time, int opt);

5.17. Attendi ingresso analogico del cabinet di controllo

 1/**
 2* @brief Attendi ingresso analogico del cabinet 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 in ingresso, intervallo [0~100] corrispondente a corrente [0~20mS] o tensione [0~10V]
 6* @param  [in]  max_time  Tempo di attesa massimo, unità ms
 7* @param  [in]  opt  Strategia dopo timeout, 0-Arresta programma e indica timeout, 1-Ignora indicazione timeout e continua esecuzione programma, 2-Aspetta indefinitamente
 8* @return  Codice di errore
 9*/
10int WaitAI(int id, int sign, float value, int max_time, int opt);

5.18. Attendi ingresso analogico dell’utensile

 1/**
 2* @brief Attendi 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 in ingresso, intervallo [0~100] corrispondente a corrente [0~20mS] o tensione [0~10V]
 6* @param  [in]  max_time  Tempo di attesa massimo, unità ms
 7* @param  [in]  opt  Strategia dopo timeout, 0-Arresta programma e indica timeout, 1-Ignora indicazione timeout e continua esecuzione programma, 2-Aspetta indefinitamente
 8* @return  Codice di errore
 9*/
10int WaitToolAI(int id, int sign, float value, int max_time, int opt);

5.19. Esempio di codice per attendere segnali di ingresso digitali e analogici del cabinet di controllo

 1private void btnIOTest_Click(object sender, EventArgs e)
 2{
 3    byte status = 1;
 4    byte smooth = 0;
 5    byte block = 0;
 6    byte di = 0, tool_di = 0;
 7    float ai = 0.0f, tool_ai = 0.0f;
 8    float value = 0.0f;
 9
10    int rtn = robot.WaitDI(0, 1, 1000, 1);
11    Console.WriteLine("WaitDI over; rtn is: " + rtn);
12
13    robot.WaitMultiDI(1, 3, 3, 1000, 1);
14    Console.WriteLine("WaitMultiDI over; rtn is: " + rtn);
15
16    robot.WaitToolDI(1, 1, 1000, 1);
17    Console.WriteLine("WaitToolDI over; rtn is: " + rtn);
18
19    robot.WaitAI(0, 0, 50, 1000, 1);
20    Console.WriteLine("WaitAI over; rtn is: " + rtn);
21
22    robot.WaitToolAI(0, 0, 50, 1000, 1);
23    Console.WriteLine("WaitToolAI over; rtn is: " + rtn);
24}

5.20. Imposta Se Output DO Scatola Controllo Si Ripristina Dopo Stop/Pausa

1/**
2* @brief Imposta se l'output DO della scatola di controllo si ripristina dopo stop/pausa
3* @param [in] resetFlag 0-Non ripristina; 1-Ripristina
4* @param [in] reloadFlag Se ricaricare dopo ripresa pausa, 0-Non caricare; 1-Carica
5* @return Codice errore
6*/
7public int SetOutputResetCtlBoxDO(int resetFlag, int reloadFlag);

5.21. Imposta Se Output AO Scatola Controllo Si Ripristina Dopo Stop/Pausa

1/**
2* @brief Imposta se l'output AO della scatola di controllo si ripristina dopo stop/pausa
3* @param [in] resetFlag 0-Non ripristina; 1-Ripristina
4* @param [in] reloadFlag Se ricaricare dopo ripresa pausa, 0-Non caricare; 1-Carica
5* @return Codice errore
6*/
7public int SetOutputResetCtlBoxAO(int resetFlag, int reloadFlag);

5.22. Imposta Se Output DO Utensile Terminale Si Ripristina Dopo Stop/Pausa

1/**
2* @brief Imposta se l'output DO dell'utensile terminale si ripristina dopo stop/pausa
3* @param [in] resetFlag 0-Non ripristina; 1-Ripristina
4* @param [in] reloadFlag Se ricaricare dopo ripresa pausa, 0-Non caricare; 1-Carica
5* @return Codice errore
6*/
7public int SetOutputResetAxleDO(int resetFlag, int reloadFlag);

5.23. Imposta Se Output AO Utensile Terminale Si Ripristina Dopo Stop/Pausa

1/**
2* @brief Imposta se l'output AO dell'utensile terminale si ripristina dopo stop/pausa
3* @param [in] resetFlag 0-Non ripristina; 1-Ripristina
4* @param [in] reloadFlag Se ricaricare dopo ripresa pausa, 0-Non caricare; 1-Carica
5* @return Codice errore
6*/
7public int SetOutputResetAxleAO(int resetFlag, int reloadFlag);

5.24. Imposta Se Output DO Esteso Si Ripristina Dopo Stop/Pausa

1/**
2* @brief Imposta se l'output DO esteso si ripristina dopo stop/pausa
3* @param [in] resetFlag 0-Non ripristina; 1-Ripristina
4* @param [in] reloadFlag Se ricaricare dopo ripresa pausa, 0-Non caricare; 1-Carica
5* @return Codice errore
6*/
7public int SetOutputResetExtDO(int resetFlag, int reloadFlag);

5.25. Imposta Se Output AO Esteso Si Ripristina Dopo Stop/Pausa

1/**
2* @brief Imposta se l'output AO esteso si ripristina dopo stop/pausa
3* @param [in] resetFlag 0-Non ripristina; 1-Ripristina
4* @param [in] reloadFlag Se ricaricare dopo ripresa pausa, 0-Non caricare; 1-Carica
5* @return Codice errore
6*/
7public int SetOutputResetExtAO(int resetFlag, int reloadFlag);

5.26. Imposta Se Output SmartTool Si Ripristina Dopo Stop/Pausa

1/**
2* @brief Imposta se l'output SmartTool si ripristina dopo stop/pausa
3* @param [in] resetFlag 0-Non ripristina; 1-Ripristina
4* @param [in] reloadFlag Se ricaricare dopo ripresa pausa, 0-Non caricare; 1-Carica
5* @return Codice errore
6*/
7public int SetOutputResetSmartToolDO(int resetFlag, int reloadFlag);

5.27. Esempio Codice Impostazione Ripristino Output Dopo Stop/Pausa Programma Lua

 1public void TestDOReset()
 2{
 3    ROBOT_STATE_PKG pkg = new ROBOT_STATE_PKG();
 4
 5    for (int i = 0; i < 16; i++)
 6    {
 7        robot.SetDO(i, 1, 0, 0);
 8        Thread.Sleep(200);
 9    }
10
11    int resetFlag = 1;
12    int resumeReloadFlag = 1;
13    int rtn = robot.SetOutputResetCtlBoxDO(resetFlag, resumeReloadFlag);
14    robot.SetOutputResetCtlBoxAO(resetFlag, resumeReloadFlag);
15    robot.SetOutputResetAxleDO(resetFlag, resumeReloadFlag);
16    robot.SetOutputResetAxleAO(resetFlag, resumeReloadFlag);
17    robot.SetOutputResetExtDO(resetFlag, resumeReloadFlag);
18    robot.SetOutputResetExtAO(resetFlag, resumeReloadFlag);
19    robot.SetOutputResetSmartToolDO(resetFlag, resumeReloadFlag);
20
21    robot.ProgramLoad("/fruser/test.lua");
22    robot.ProgramRun();
23
24    Thread.Sleep(2000);
25    robot.PauseMotion();
26    Thread.Sleep(2000);
27    robot.ResumeMotion();
28    Thread.Sleep(2000);
29}

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*/
13public int SetDIConfig(int[] config)

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*/
13public int GetDIConfig(out int[] config)

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*/
16public int SetDOConfig(int[] config)

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*/
16public int GetDOConfig(out int[] config)

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*/
11public int SetToolDIConfig(int[] config)

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*/
11public int GetToolDIConfig(out int[] config)

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*/
6public int SetDIConfigLevel(int[] config)

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*/
6public int GetDIConfigLevel(out int[] config)

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*/
6public int SetDOConfigLevel(int[] config)

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*/
6public int GetDOConfigLevel(out int[] config)

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*/
6public int SetToolDIConfigLevel(int[] config)

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*/
6public int GetToolDIConfigLevel(out int[] config)

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*/
6public int SetStandardDILevel(int[] config)

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*/
6public int GetStandardDILevel(out int[] config)

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*/
6public int SetStandardDOLevel(int[] config)

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*/
6public int GetStandardDOLevel(out int[] config)

5.44. Esempio di Codice di Configurazione IO del Robot

 1public void TestIOConfig()
 2{
 3    int rtn = 0;
 4
 5    // ---------- Test funzioni porte CI configurabili ----------
 6    int[] setDIConfig = new int[] { 3, 9, 1, 4, 5, 6, 7, 8 };
 7    rtn = robot.SetDIConfig(setDIConfig);
 8    Console.WriteLine($"SetDIConfig rtn is {rtn}");
 9
10    // Utilizza il parametro out per ricevere l'array di configurazione ottenuto
11    int[] getDIConfig;
12    rtn = robot.GetDIConfig(out getDIConfig);
13    Console.WriteLine($"GetDIConfig rtn is {rtn}, value is {string.Join(" ", getDIConfig)}");
14
15    // ---------- Test funzioni porte CO configurabili ----------
16    int[] setDOConfig = new int[] { 9, 10, 11, 12, 13, 14, 15, 16 };
17    rtn = robot.SetDOConfig(setDOConfig);
18    Console.WriteLine($"SetDOConfig rtn is {rtn}");
19
20    int[] getDOConfig;
21    rtn = robot.GetDOConfig(out getDOConfig);
22    Console.WriteLine($"GetDOConfig rtn is {rtn}, value is {string.Join(" ", getDOConfig)}");
23
24    // ---------- Test funzioni porte End-CI configurabili dell'end-effector ----------
25    int[] setToolDIConfig = new int[] { 17, 18 };
26    rtn = robot.SetToolDIConfig(setToolDIConfig);
27    Console.WriteLine($"SetToolDIConfig rtn is {rtn}");
28
29    int[] getToolDIConfig;
30    rtn = robot.GetToolDIConfig(out getToolDIConfig);
31    Console.WriteLine($"GetToolDIConfig rtn is {rtn}, value is {string.Join(" ", getToolDIConfig)}");
32
33    // ---------- Test stato attivo CI configurabile del box di controllo ----------
34    int[] setDIConfigLevel = new int[] { 1, 1, 1, 1, 0, 0, 0, 0 };
35    rtn = robot.SetDIConfigLevel(setDIConfigLevel);
36    Console.WriteLine($"SetDIConfigLevel rtn is {rtn}");
37
38    int[] getDIConfigLevel;
39    rtn = robot.GetDIConfigLevel(out getDIConfigLevel);
40    Console.WriteLine($"GetDIConfigLevel rtn is {rtn}, value is {string.Join(" ", getDIConfigLevel)}");
41
42    // ---------- Test stato attivo CO configurabile del box di controllo ----------
43    int[] setDOConfigLevel = new int[] { 0, 0, 0, 0, 1, 1, 1, 1 };
44    rtn = robot.SetDIConfigLevel(setDOConfigLevel);
45    Console.WriteLine($"SetDOConfigLevel rtn is {rtn}");
46
47    int[] getDOConfigLevel;
48    rtn = robot.GetDOConfigLevel(out getDOConfigLevel);
49    Console.WriteLine($"GetDOConfigLevel rtn is {rtn}, value is {string.Join(" ", getDOConfigLevel)}");
50
51    // ---------- Test stato attivo CI configurabile dell'end-effector ----------
52    int[] setToolDIConfigLevel = new int[] { 1, 0 };
53    rtn = robot.SetToolDIConfigLevel(setToolDIConfigLevel);
54    Console.WriteLine($"SetToolDIConfigLevel rtn is {rtn}");
55
56    int[] getToolDIConfigLevel;
57    rtn = robot.GetToolDIConfigLevel(out getToolDIConfigLevel);
58    Console.WriteLine($"GetToolDIConfigLevel rtn is {rtn}, value is {string.Join(" ", getToolDIConfigLevel)}");
59
60    // ---------- Test stato attivo DI standard del box di controllo ----------
61    int[] setStandardDILevel = new int[] { 1, 1, 1, 1, 0, 0, 0, 0 };
62    rtn = robot.SetStandardDILevel(setStandardDILevel);
63    Console.WriteLine($"SetStandardDILevel rtn is {rtn}");
64
65    int[] getStandardDILevel;
66    rtn = robot.GetStandardDILevel(out getStandardDILevel);
67    Console.WriteLine($"GetStandardDILevel rtn is {rtn}, value is {string.Join(" ", getStandardDILevel)}");
68
69    // ---------- Test stato attivo DO standard del box di controllo ----------
70    int[] setStandardDOLevel = new int[] { 0, 0, 0, 0, 1, 1, 1, 1 };
71    rtn = robot.SetStandardDOLevel(setStandardDOLevel);
72    Console.WriteLine($"SetStandardDOLevel rtn is {rtn}");
73
74    int[] getStandardDOLevel;
75    rtn = robot.GetStandardDOLevel(out getStandardDOLevel);
76    Console.WriteLine($"GetStandardDOLevel rtn is {rtn}, value is {string.Join(" ", getStandardDOLevel)}");
77
78}