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. Impostazione reset uscita DO del pannello di controllo dopo stop/pausa
1/**
2* @brief Imposta se resettare l'uscita DO del pannello di controllo dopo stop/pausa
3* @param [in] resetFlag 0-Non resettare; 1-Resetta
4* @return Codice errore
5*/
6int SetOutputResetCtlBoxDO(int resetFlag);
5.21. Impostazione reset uscita AO del pannello di controllo dopo stop/pausa
1/**
2* @brief Imposta se resettare l'uscita AO del pannello di controllo dopo stop/pausa
3* @param [in] resetFlag 0-Non resettare; 1-Resetta
4* @return Codice errore
5*/
6int SetOutputResetCtlBoxAO(int resetFlag);
5.22. Impostazione reset uscita DO del tool terminale dopo stop/pausa
1/**
2* @brief Imposta se resettare l'uscita DO del tool terminale dopo stop/pausa
3* @param [in] resetFlag 0-Non resettare; 1-Resetta
4* @return Codice errore
5*/
6int SetOutputResetAxleDO(int resetFlag);
5.23. Impostazione reset uscita AO del tool terminale dopo stop/pausa
1/**
2* @brief Imposta se resettare l'uscita AO del tool terminale dopo stop/pausa
3* @param [in] resetFlag 0-Non resettare; 1-Resetta
4* @return Codice errore
5*/
6int SetOutputResetAxleAO(int resetFlag);
5.24. Impostazione reset uscita DO estensione dopo stop/pausa
1/**
2* @brief Imposta se resettare l'uscita DO estensione dopo stop/pausa
3* @param [in] resetFlag 0-Non resettare; 1-Resetta
4* @return Codice errore
5*/
6int SetOutputResetExtDO(int resetFlag);
5.25. Impostazione reset uscita AO estensione dopo stop/pausa
1/**
2* @brief Imposta se resettare l'uscita AO estensione dopo stop/pausa
3* @param [in] resetFlag 0-Non resettare; 1-Resetta
4* @return Codice errore
5*/
6int SetOutputResetExtAO(int resetFlag);
5.26. Impostazione reset SmartTool dopo stop/pausa
1/**
2* @brief Imposta se resettare SmartTool dopo stop/pausa
3* @param [in] resetFlag 0-Non resettare; 1-Resetta
4* @return Codice errore
5*/
6int SetOutputResetSmartToolDO(int resetFlag);
5.27. Esempio di codice per reset uscite dopo stop/pausa programma LUA
1public static int TestDOReset(Robot robot)
2{
3 int rtn = -1;
4 for (int i = 0; i < 16; i++)
5 {
6 robot.SetDO(i, 1, 0, 0);
7 robot.Sleep(300);
8 }
9
10 int resetFlag = 1;
11 rtn = robot.SetOutputResetCtlBoxDO(resetFlag);
12 robot.SetOutputResetCtlBoxAO(resetFlag);
13 robot.SetOutputResetAxleDO(resetFlag);
14 robot.SetOutputResetAxleAO(resetFlag);
15 robot.SetOutputResetExtDO(resetFlag);
16 robot.SetOutputResetExtAO(resetFlag);
17 robot.SetOutputResetSmartToolDO(resetFlag);
18
19 robot.ProgramLoad("/fruser/test.lua");
20 robot.ProgramRun();
21 return 0;
22}