5. I/O del Robot
5.1. Impostazione uscita digitale del pannello di controllo
1/**
2* @brief Imposta l'uscita digitale del pannello di controllo
3* @param [in] id Numero IO, intervallo [0~15]
4* @param [in] status 0-Spegnimento, 1-Accensione
5* @param [in] smooth 0-Non smooth, 1-Smooth
6* @param [in] block 0-Blocco, 1-Non bloccante
7* @return Codice errore
8*/
9int SetDO(int id, int status, int smooth, int block);
5.2. Impostazione uscita digitale del tool
1/**
2* @brief Imposta l'uscita digitale del tool
3* @param [in] id Numero IO, intervallo [0~1]
4* @param [in] status 0-Spegnimento, 1-Accensione
5* @param [in] smooth 0-Non smooth, 1-Smooth
6* @param [in] block 0-Blocco, 1-Non bloccante
7* @return Codice errore
8*/
9int SetToolDO(int id, int status, int smooth, int block);
5.3. Impostazione uscita analogica del pannello di controllo
1/**
2* @brief Imposta l'uscita analogica del pannello di controllo
3* @param [in] id Numero IO, intervallo [0~1]
4* @param [in] value Percentuale del valore di corrente o tensione, intervallo [0~100] corrispondente a corrente [0~20mA] o tensione [0~10V]
5* @param [in] block 0-Blocco, 1-Non bloccante
6* @return Codice errore
7*/
8int SetAO(int id, double value, int block);
5.4. Impostazione uscita analogica del tool
1/**
2* @brief Imposta l'uscita analogica del tool
3* @param [in] id Numero IO, intervallo [0]
4* @param [in] value Percentuale del valore di corrente o tensione, intervallo [0~100] corrispondente a corrente [0~20mA] o tensione [0~10V]
5* @param [in] block 0-Blocco, 1-Non bloccante
6* @return Codice errore
7*/
8int SetToolAO(int id, double value, int block);
5.5. Esempio di codice per impostazione uscite digitali/analogiche
1public static int TestAODO(Robot robot)
2{
3 int status = 1;
4 int smooth = 0;
5 int block = 0;
6
7 for (int i = 0; i < 16; i++)
8 {
9 robot.SetDO(i, status, smooth, block);
10 robot.Sleep(300);
11 }
12
13 status = 0;
14
15 for (int i = 0; i < 16; i++)
16 {
17 robot.SetDO(i, status, smooth, block);
18 robot.Sleep(300);
19 }
20
21 status = 1;
22
23 for (int i = 0; i < 2; i++)
24 {
25 robot.SetToolDO(i, status, smooth, block);
26 robot.Sleep(1000);
27 }
28
29 status = 0;
30
31 for (int i = 0; i < 2; i++)
32 {
33 robot.SetToolDO(i, status, smooth, block);
34 robot.Sleep(1000);
35 }
36
37 for (int i = 0; i < 100; i++)
38 {
39 robot.SetAO(0, i, block);
40 robot.Sleep(30);
41 }
42
43 for (int i = 0; i < 100; i++)
44 {
45 robot.SetToolAO(0, i, block);
46 robot.Sleep(30);
47 }
48
49 robot.CloseRPC();
50 return 0;
51}
5.6. Acquisizione ingresso digitale del pannello di controllo
1/**
2* @brief Acquisisce l'ingresso digitale del pannello di controllo
3* @param [in] id Numero IO, intervallo [0~15]
4* @param [in] block 0-Blocco, 1-Non bloccante
5* @param [out] level 0-Livello basso, 1-Livello alto
6* @return Codice errore
7*/
8int GetDI(int id, int block, int[] level);
5.7. Acquisizione ingresso digitale del tool
1/**
2* @brief Acquisisce l'ingresso digitale del tool
3* @param [in] id Numero IO, intervallo [0~1]
4* @param [in] block 0-Blocco, 1-Non bloccante
5* @param [out] level 0-Livello basso, 1-Livello alto
6* @return Codice errore
7*/
8int GetToolDI(int id, int block, int[] level);
5.8. Acquisizione ingresso analogico del pannello di controllo
1/**
2* @brief Acquisisce l'ingresso analogico del pannello di controllo
3* @param [in] id Numero IO, intervallo [0~1]
4* @param [in] block 0-Blocco, 1-Non bloccante
5* @param [out] persent Percentuale del valore di corrente o tensione in ingresso, intervallo [0~100] corrispondente a corrente [0~20mA] o tensione [0~10V]
6* @return Codice errore
7*/
8int GetAI(int id, int block, double[] persent);
5.9. Acquisizione ingresso analogico del tool
1/**
2* @brief Acquisisce l'ingresso analogico del tool
3* @param [in] id Numero IO, intervallo [0]
4* @param [in] block 0-Blocco, 1-Non bloccante
5* @param [out] persent Percentuale del valore di corrente o tensione in ingresso, intervallo [0~100] corrispondente a corrente [0~20mA] o tensione [0~10V]
6* @return Codice errore
7*/
8int GetToolAI(int id, int block, double[] persent);
5.10. Acquisizione stato del pulsante di registrazione punto terminale del robot
1/**
2* @brief Acquisisce lo stato del pulsante di registrazione punto terminale del robot
3* @param [out] state Stato del pulsante, 0-Premuto, 1-Rilasciato
4* @return Codice errore
5*/
6int GetAxlePointRecordBtnState(int[] state);
5.11. Acquisizione stato uscita DO del terminale del robot
1/**
2* @brief Acquisisce lo stato dell'uscita DO del terminale del robot
3* @param [out] do_state Stato uscita DO, do0~do1 corrisponde a bit1~bit2, a partire da bit0
4* @return Codice errore
5*/
6int GetToolDO(int[] do_state);
5.12. Acquisizione stato uscita DO del controller del robot
1/**
2* @brief Acquisisce lo stato dell'uscita DO del controller del robot
3* @param [out] do_state_h Stato uscita DO, co0~co7 corrisponde a bit0~bit7
4* @param [out] do_state_l Stato uscita DO, do0~do7 corrisponde a bit0~bit7
5* @return Codice errore
6*/
7int GetDO(int[] do_state_h, int[] do_state_l);
5.13. Esempio di codice per acquisizione stati DI, DO del robot
1public static int TestGetDIAI(Robot robot)
2{
3 int status = 1;
4 int smooth = 0;
5 int block = 0;
6 int[] di = new int[]{0}, tool_di = new int[]{0};
7 double[] ai = new double[]{0}, tool_ai = new double[]{0};
8 double value = 0.0;
9
10 robot.GetDI(0, block, di);
11 System.out.println("di0:" + di[0]);
12
13 robot.GetToolDI(1, block, tool_di);
14 System.out.println("tool_di1:" + tool_di[0]);
15
16 robot.GetAI(0, block, ai);
17 System.out.println("ai0:" + ai[0]);
18
19 robot.GetToolAI(0, block, tool_ai);
20 System.out.println("tool_ai0:" + tool_ai[0]);
21
22 int[] _button_state = new int[]{0};
23 robot.GetAxlePointRecordBtnState(_button_state);
24 System.out.println("_button_state is: " + _button_state[0]);
25
26 int[] tool_do_state = new int[]{0};
27 robot.GetToolDO(tool_do_state);
28 System.out.println("tool DO state is: " + tool_do_state[0]);
29
30 int[] do_state_h = new int[]{0};
31 int[] do_state_l = new int[]{0};
32 robot.GetDO(do_state_h, do_state_l);
33 System.out.println("DO state high is: " + do_state_h[0] + ", DO state low is: " + do_state_l[0]);
34
35 return 0;
36}
5.14. Attesa ingresso digitale del pannello di controllo
1/**
2* @brief Attesa ingresso digitale del pannello di controllo
3* @param [in] id Numero IO, intervallo [0~15]
4* @param [in] status 0-Spegnimento, 1-Accensione
5* @param [in] max_time Tempo massimo di attesa, unità ms
6* @param [in] opt Strategia dopo timeout, 0-Programma si ferma e segnala timeout, 1-Ignora timeout e programma continua, 2-Attesa continua
7* @return Codice errore
8*/
9int WaitDI(int id, int status, int max_time, int opt);
5.15. Attesa ingressi digitali multipli del pannello di controllo
1/**
2* @brief Attesa ingressi digitali multipli del pannello di controllo
3* @param [in] mode 0-AND multiplo, 1-OR multiplo
4* @param [in] id Numero IO, bit0~bit7 corrisponde a DI0~DI7, bit8~bit15 corrisponde a CI0~CI7
5* @param [in] status 0-Spegnimento, 1-Accensione
6* @param [in] max_time Tempo massimo di attesa, unità ms
7* @param [in] opt Strategia dopo timeout, 0-Programma si ferma e segnala timeout, 1-Ignora timeout e programma continua, 2-Attesa continua
8* @return Codice errore
9*/
10int WaitMultiDI(int mode, int id, int status, int max_time, int opt);
5.16. Attesa ingresso digitale del tool
1/**
2* @brief Attesa ingresso digitale del tool
3* @param [in] id Numero IO, intervallo [0~1]
4* @param [in] status 0-Spegnimento, 1-Accensione
5* @param [in] max_time Tempo massimo di attesa, unità ms
6* @param [in] opt Strategia dopo timeout, 0-Programma si ferma e segnala timeout, 1-Ignora timeout e programma continua, 2-Attesa continua
7* @return Codice errore
8*/
9int WaitToolDI(int id, int status, int max_time, int opt);
5.17. Attesa ingresso analogico del pannello di controllo
1/**
2* @brief Attesa ingresso analogico del pannello 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 del valore di corrente o tensione in ingresso, intervallo [0~100] corrispondente a corrente [0~20mA] o tensione [0~10V]
6* @param [in] max_time Tempo massimo di attesa, unità ms
7* @param [in] opt Strategia dopo timeout, 0-Programma si ferma e segnala timeout, 1-Ignora timeout e programma continua, 2-Attesa continua
8* @return Codice errore
9*/
10int WaitAI(int id, int sign, double value, int max_time, int opt);
5.18. Attesa ingresso analogico del tool
1/**
2* @brief Attesa ingresso analogico del tool
3* @param [in] id Numero IO, intervallo [0]
4* @param [in] sign 0-Maggiore di, 1-Minore di
5* @param [in] value Percentuale del valore di corrente o tensione in ingresso, intervallo [0~100] corrispondente a corrente [0~20mA] o tensione [0~10V]
6* @param [in] max_time Tempo massimo di attesa, unità ms
7* @param [in] opt Strategia dopo timeout, 0-Programma si ferma e segnala timeout, 1-Ignora timeout e programma continua, 2-Attesa continua
8* @return Codice errore
9*/
10int WaitToolAI(int id, int sign, double value, int max_time, int opt);
5.19. Esempio di codice per attesa segnali ingresso digitale/analogico del pannello di controllo
1public static int TestWaitDIAI(Robot robot)
2{
3 int rtn = -1;
4
5 int status = 1;
6 int smooth = 0;
7 int block = 0;
8 int di = 0, tool_di = 0;
9 double ai = 0.0, tool_ai = 0.0;
10 double value = 0.0;
11
12 rtn = robot.WaitDI(0, 1, 1000, 1);
13 System.out.println("WaitDI over; rtn is: " + rtn);
14
15 robot.WaitMultiDI(1, 3, 3, 1000, 1);
16 System.out.println("WaitDI over; rtn is: " + rtn);
17
18 robot.WaitToolDI(1, 1, 1000, 1);
19 System.out.println("WaitDI over; rtn is: " + rtn);
20
21 robot.WaitAI(0, 0, 50, 1000, 1);
22 System.out.println("WaitDI over; rtn is: " + rtn);
23
24 robot.WaitToolAI(0, 0, 50, 1000, 1);
25 System.out.println("WaitDI over; rtn is: " + rtn);
26 return 0;
27}
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 resetFlag 0-Non ripristina; 1-Ripristina
4* @param 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 resetFlag 0-Non ripristina; 1-Ripristina
4* @param 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 resetFlag 0-Non ripristina; 1-Ripristina
4* @param 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 resetFlag 0-Non ripristina; 1-Ripristina
4* @param 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 resetFlag 0-Non ripristina; 1-Ripristina
4* @param 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 resetFlag 0-Non ripristina; 1-Ripristina
4* @param 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 resetFlag 0-Non ripristina; 1-Ripristina
4* @param 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 static void TestDOReset(Robot robot)
2{
3 for (int i = 0; i < 16; i++)
4 {
5 robot.SetDO(i, 1, 0, 0);
6 robot.Sleep(200);
7 }
8 int resetFlag = 1;
9 int resumeReloadFlag = 1;
10 int rtn = robot.SetOutputResetCtlBoxDO(resetFlag, resumeReloadFlag);
11 robot.SetOutputResetCtlBoxAO(resetFlag, resumeReloadFlag);
12 robot.SetOutputResetAxleDO(resetFlag, resumeReloadFlag);
13 robot.SetOutputResetAxleAO(resetFlag, resumeReloadFlag);
14 robot.SetOutputResetExtDO(resetFlag, resumeReloadFlag);
15 robot.SetOutputResetExtAO(resetFlag, resumeReloadFlag);
16 robot.SetOutputResetSmartToolDO(resetFlag, resumeReloadFlag);
17 robot.ProgramLoad("/fruser/test.lua");
18 robot.ProgramRun();
19 robot.Sleep(2000);
20 robot.PauseMotion();
21 robot.Sleep(2000);
22 robot.ResumeMotion();
23 robot.Sleep(2000);
24 robot.CloseRPC();
25}