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}