5. Wejścia/Wyjścia (IO) robota

5.1. Ustawianie wyjścia cyfrowego szafy sterowniczej

1/**
2* @brief  Ustawia wyjście cyfrowe szafy sterowniczej
3* @param  [in] id  Numer IO, zakres [0~15]
4* @param  [in] status 0-wył., 1-wł.
5* @param  [in] smooth 0-niewygładzone, 1-wygładzone
6* @param  [in] block  0-blokujące, 1-nieblokujące
7* @return  Kod błędu
8*/
9errno_t  SetDO(int id, uint8_t status, uint8_t smooth, uint8_t block);

5.2. Ustawianie wyjścia cyfrowego narzędzia

1/**
2* @brief  Ustawia wyjście cyfrowe narzędzia
3* @param  [in] id  Numer IO, zakres [0~1]
4* @param  [in] status 0-wył., 1-wł.
5* @param  [in] smooth 0-niewygładzone, 1-wygładzone
6* @param  [in] block  0-blokujące, 1-nieblokujące
7* @return  Kod błędu
8*/
9errno_t  SetToolDO(int id, uint8_t status, uint8_t smooth, uint8_t block);

5.3. Ustawianie wyjścia analogowego szafy sterowniczej

1/**
2* @brief  Ustawia wyjście analogowe szafy sterowniczej
3* @param  [in] id  Numer IO, zakres [0~1]
4* @param  [in] value Procent wartości prądu lub napięcia, zakres [0~100] odpowiada wartości prądu [0~20mA] lub napięcia [0~10V]
5* @param  [in] block  0-blokujące, 1-nieblokujące
6* @return  Kod błędu
7*/
8errno_t  SetAO(int id, float value, uint8_t block);

5.4. Ustawianie wyjścia analogowego narzędzia

1/**
2* @brief  Ustawia wyjście analogowe narzędzia
3* @param  [in] id  Numer IO, zakres [0]
4* @param  [in] value Procent wartości prądu lub napięcia, zakres [0~100] odpowiada wartości prądu [0~20mA] lub napięcia [0~10V]
5* @param  [in] block  0-blokujące, 1-nieblokujące
6* @return  Kod błędu
7*/
8errno_t  SetToolAO(int id, float value, uint8_t block);

5.5. Przykład kodu ustawiania wyjść cyfrowych i analogowych

 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. Pobieranie wejścia cyfrowego szafy sterowniczej

1/**
2* @brief  Pobiera wejście cyfrowe szafy sterowniczej
3* @param  [in] id  Numer IO, zakres [0~15]
4* @param  [in] block  0-blokujące, 1-nieblokujące
5* @param  [out] result  0-niski poziom, 1-wysoki poziom
6* @return  Kod błędu
7*/
8errno_t  GetDI(int id, uint8_t block, uint8_t *result);

5.7. Pobieranie wejścia cyfrowego narzędzia

1/**
2* @brief  Pobiera wejście cyfrowe narzędzia
3* @param  [in] id  Numer IO, zakres [0~1]
4* @param  [in] block  0-blokujące, 1-nieblokujące
5* @param  [out] result  0-niski poziom, 1-wysoki poziom
6* @return  Kod błędu
7*/
8errno_t  GetToolDI(int id, uint8_t block, uint8_t *result);

5.8. Pobieranie wejścia analogowego szafy sterowniczej

1/**
2* @brief  Pobiera wejście analogowe szafy sterowniczej
3* @param  [in] id  Numer IO, zakres [0~1]
4* @param  [in] block  0-blokujące, 1-nieblokujące
5* @param  [out] result  Procent wartości prądu lub napięcia wejściowego, zakres [0~100] odpowiada wartości prądu [0~20mA] lub napięcia [0~10V]
6* @return  Kod błędu
7*/
8errno_t  GetAI(int id, uint8_t block, float *result);

5.9. Pobieranie wejścia analogowego narzędzia

1/**
2* @brief  Pobiera wejście analogowe narzędzia
3* @param  [in] id  Numer IO, zakres [0]
4* @param  [in] block  0-blokujące, 1-nieblokujące
5* @param  [out] result  Procent wartości prądu lub napięcia wejściowego, zakres [0~100] odpowiada wartości prądu [0~20mA] lub napięcia [0~10V]
6* @return  Kod błędu
7*/
8errno_t  GetToolAI(int id, uint8_t block, float *result);

5.10. Pobieranie stanu przycisku rejestracji punktu na końcówce robota

1/**
2 * @brief Pobiera stan przycisku rejestracji punktu na końcówce robota
3 * @param [out] state Stan przycisku, 0-wciśnięty, 1-zwolniony
4 * @return Kod błędu
5 */
6errno_t  GetAxlePointRecordBtnState(uint8_t *state);

5.11. Pobieranie stanu wyjścia DO na końcówce robota

1/**
2 * @brief Pobiera stan wyjścia DO na końcówce robota
3 * @param [out] do_state Stan wyjścia DO, do0~do1 odpowiadają bit1~bit2, zaczynając od bit0
4 * @return Kod błędu
5 */
6errno_t  GetToolDO(uint8_t *do_state);

5.12. Pobieranie stanu wyjścia DO sterownika robota

1/**
2 * @brief Pobiera stan wyjścia DO sterownika robota
3 * @param [out] do_state_h Stan wyjścia DO, co0~co7 odpowiadają bit0~bit7
4 * @param [out] do_state_l Stan wyjścia DO, do0~do7 odpowiadają bit0~bit7
5 * @return Kod błędu
6 */
7errno_t  GetDO(uint8_t *do_state_h, uint8_t *do_state_l);

5.13. Przykład kodu pobierania stanów DI i DO robota

 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. Oczekiwanie na wejście cyfrowe szafy sterowniczej

1/**
2* @brief Oczekiwanie na wejście cyfrowe szafy sterowniczej
3* @param  [in] id  Numer IO, zakres [0~15]
4* @param  [in]  status 0-wył., 1-wł.
5* @param  [in]  max_time  Maksymalny czas oczekiwania, jednostka ms
6* @param  [in]  opt  Strategia po przekroczeniu czasu, 0-zatrzymaj program i wyświetl błąd przekroczenia czasu, 1-ignoruj błąd przekroczenia czasu i kontynuuj wykonywanie programu, 2-czekaj w nieskończoność
7* @return  Kod błędu
8*/
9errno_t  WaitDI(int id, uint8_t status, int max_time, int opt);

5.15. Oczekiwanie na wiele wejść cyfrowych szafy sterowniczej

 1/**
 2* @brief Oczekiwanie na wiele wejść cyfrowych szafy sterowniczej
 3* @param  [in] mode 0-logiczne I dla wielu wejść, 1-logiczne LUB dla wielu wejść
 4* @param  [in] id  Numer IO, bit0~bit7 odpowiadają DI0~DI7, bit8~bit15 odpowiadają CI0~CI7
 5* @param  [in]  status 0-wył., 1-wł.
 6* @param  [in]  max_time  Maksymalny czas oczekiwania, jednostka ms
 7* @param  [in]  opt  Strategia po przekroczeniu czasu, 0-zatrzymaj program i wyświetl błąd przekroczenia czasu, 1-ignoruj błąd przekroczenia czasu i kontynuuj wykonywanie programu, 2-czekaj w nieskończoność
 8* @return  Kod błędu
 9*/
10errno_t  WaitMultiDI(int mode, int id, uint8_t status, int max_time, int opt);

5.16. Oczekiwanie na wejście cyfrowe narzędzia

1/**
2* @brief Oczekiwanie na wejście cyfrowe narzędzia
3* @param  [in] id  Numer IO, zakres [0~1]
4* @param  [in]  status 0-wył., 1-wł.
5* @param  [in]  max_time  Maksymalny czas oczekiwania, jednostka ms
6* @param  [in]  opt  Strategia po przekroczeniu czasu, 0-zatrzymaj program i wyświetl błąd przekroczenia czasu, 1-ignoruj błąd przekroczenia czasu i kontynuuj wykonywanie programu, 2-czekaj w nieskończoność
7* @return  Kod błędu
8*/
9errno_t  WaitToolDI(int id, uint8_t status, int max_time, int opt);

5.17. Oczekiwanie na wejście analogowe szafy sterowniczej

 1/**
 2* @brief Oczekiwanie na wejście analogowe szafy sterowniczej
 3* @param  [in] id  Numer IO, zakres [0~1]
 4* @param  [in]  sign 0-większe niż, 1-mniejsze niż
 5* @param  [in]  value Procent wartości prądu lub napięcia wejściowego, zakres [0~100] odpowiada wartości prądu [0~20mA] lub napięcia [0~10V]
 6* @param  [in]  max_time  Maksymalny czas oczekiwania, jednostka ms
 7* @param  [in]  opt  Strategia po przekroczeniu czasu, 0-zatrzymaj program i wyświetl błąd przekroczenia czasu, 1-ignoruj błąd przekroczenia czasu i kontynuuj wykonywanie programu, 2-czekaj w nieskończoność
 8* @return  Kod błędu
 9*/
10errno_t  WaitAI(int id, int sign, float value, int max_time, int opt);

5.18. Oczekiwanie na wejście analogowe narzędzia

 1/**
 2* @brief Oczekiwanie na wejście analogowe narzędzia
 3* @param  [in] id  Numer IO, zakres [0]
 4* @param  [in]  sign 0-większe niż, 1-mniejsze niż
 5* @param  [in]  value Procent wartości prądu lub napięcia wejściowego, zakres [0~100] odpowiada wartości prądu [0~20mA] lub napięcia [0~10V]
 6* @param  [in]  max_time  Maksymalny czas oczekiwania, jednostka ms
 7* @param  [in]  opt  Strategia po przekroczeniu czasu, 0-zatrzymaj program i wyświetl błąd przekroczenia czasu, 1-ignoruj błąd przekroczenia czasu i kontynuuj wykonywanie programu, 2-czekaj w nieskończoność
 8* @return  Kod błędu
 9*/
10errno_t  WaitToolAI(int id, int sign, float value, int max_time, int opt);

5.19. Przykład kodu oczekiwania na sygnały wejściowe cyfrowe i analogowe szafy sterowniczej

Zmienione w wersji 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. Ustawianie resetowania wyjścia DO szafy sterowniczej po zatrzymaniu/wstrzymaniu

Nowe w wersji C++SDK-v2.1.5.0.

1/**
2* @brief Ustawia resetowanie wyjścia DO szafy sterowniczej po zatrzymaniu/wstrzymaniu
3* @param [in] resetFlag 0-nie resetuj; 1-resetuj
4* @param [in] reloadFlag Czy przeładować po wznowieniu po wstrzymaniu, 0-nie ładuj; 1-ładuj
5* @return Kod błędu
6*/
7errno_t SetOutputResetCtlBoxDO(int resetFlag, int reloadFlag = 0);

5.21. Ustawianie resetowania wyjścia AO szafy sterowniczej po zatrzymaniu/wstrzymaniu

Nowe w wersji C++SDK-v2.1.5.0.

1/**
2* @brief Ustawia resetowanie wyjścia AO szafy sterowniczej po zatrzymaniu/wstrzymaniu
3* @param [in] resetFlag  0-nie resetuj; 1-resetuj
4* @param [in] reloadFlag Czy przeładować po wznowieniu po wstrzymaniu, 0-nie ładuj; 1-ładuj
5* @return Kod błędu
6*/
7errno_t SetOutputResetCtlBoxAO(int resetFlag, int reloadFlag = 0);

5.22. Ustawianie resetowania wyjścia DO narzędzia końcowego po zatrzymaniu/wstrzymaniu

Nowe w wersji C++SDK-v2.1.5.0.

1/**
2* @brief Ustawia resetowanie wyjścia DO narzędzia końcowego po zatrzymaniu/wstrzymaniu
3* @param [in] resetFlag  0-nie resetuj; 1-resetuj
4* @param [in] reloadFlag Czy przeładować po wznowieniu po wstrzymaniu, 0-nie ładuj; 1-ładuj
5* @return Kod błędu
6*/
7errno_t SetOutputResetAxleDO(int resetFlag, int reloadFlag = 0);

5.23. Ustawianie resetowania wyjścia AO narzędzia końcowego po zatrzymaniu/wstrzymaniu

Nowe w wersji C++SDK-v2.1.5.0.

1/**
2* @brief Ustawia resetowanie wyjścia AO narzędzia końcowego po zatrzymaniu/wstrzymaniu
3* @param [in] resetFlag  0-nie resetuj; 1-resetuj
4* @param [in] reloadFlag Czy przeładować po wznowieniu po wstrzymaniu, 0-nie ładuj; 1-ładuj
5* @return  Kod błędu
6*/
7errno_t SetOutputResetAxleAO(int resetFlag, int reloadFlag = 0);

5.24. Ustawianie resetowania wyjścia rozszerzonego DO po zatrzymaniu/wstrzymaniu

Nowe w wersji C++SDK-v2.1.5.0.

1/**
2* @brief Ustawia resetowanie wyjścia rozszerzonego DO po zatrzymaniu/wstrzymaniu
3* @param [in] resetFlag  0-nie resetuj; 1-resetuj
4* @param [in] reloadFlag Czy przeładować po wznowieniu po wstrzymaniu, 0-nie ładuj; 1-ładuj
5* @return  Kod błędu
6*/
7errno_t SetOutputResetExtDO(int resetFlag, int reloadFlag = 0);

5.25. Ustawianie resetowania wyjścia rozszerzonego AO po zatrzymaniu/wstrzymaniu

Nowe w wersji C++SDK-v2.1.5.0.

1/**
2* @brief Ustawia resetowanie wyjścia rozszerzonego AO po zatrzymaniu/wstrzymaniu
3* @param [in] resetFlag  0-nie resetuj; 1-resetuj
4* @param [in] reloadFlag Czy przeładować po wznowieniu po wstrzymaniu, 0-nie ładuj; 1-ładuj
5* @return  Kod błędu
6*/
7errno_t SetOutputResetExtAO(int resetFlag, int reloadFlag = 0);

5.26. Ustawianie resetowania wyjścia SmartTool po zatrzymaniu/wstrzymaniu

Nowe w wersji C++SDK-v2.1.5.0.

1/**
2* @brief Ustawia resetowanie wyjścia SmartTool po zatrzymaniu/wstrzymaniu
3* @param [in] resetFlag  0-nie resetuj; 1-resetuj
4* @param [in] reloadFlag Czy przeładować po wznowieniu po wstrzymaniu, 0-nie ładuj; 1-ładuj
5* @return  Kod błędu
6*/
7errno_t SetOutputResetSmartToolDO(int resetFlag, int reloadFlag = 0);

5.27. Przykład kodu resetowania wyjść po zatrzymaniu/wstrzymaniu programu LUA

Nowe w wersji 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. Ustawianie funkcji konfigurowalnych portów CI szafy sterowniczej

 1/**
 2* @brief Ustawia funkcje konfigurowalnych portów CI szafy sterowniczej
 3* @param [in] config Kody funkcji CI0-CI7;
 4* 0-brak;1-sukces rozpoczęcia łuku;2-gotowość spawarki;3-wykrywanie przenośnika;4-wstrzymanie;5-wznowienie;6-uruchomienie;7-zatrzymanie;
 58-wstrzymanie/wznowienie;9-uruchomienie/zatrzymanie;10-przeciąganie nożne;11-przejazd do punktu początkowego zadania;12-przełączanie ręczny/automatyczny;
 613-sukces lokalizacji drutu spawalniczego;14-przerwanie ruchu;15-uruchomienie programu głównego;16-uruchomienie przewijania do tyłu;17-potwierdzenie uruchomienia;
 718-sygnał detekcji fotoelektrycznej X;19-sygnał detekcji fotoelektrycznej Y;20-sygnał zewnętrznego awaryjnego zatrzymania 1;21-sygnał zewnętrznego awaryjnego zatrzymania 2;
 822-tryb redukcji poziomu 1;23-tryb redukcji poziomu 2;24-tryb redukcji poziomu 3 (zatrzymanie);25-wznowienie spawania;26-zakończenie spawania;
 927-włączenie wspomaganego przeciągania;28-wyłączenie wspomaganego przeciągania;29-włączenie/wyłączenie wspomaganego przeciągania;30-wyczyszczenie wszystkich błędów;
1031-przełączanie ręczny/automatyczny (poziom wysoki/niski);32-włączenie;33-wyłączenie;34-włączenie/wyłączenie (zbocze narastające/opadające);35-rozpoczęcie/zakończenie śledzenia punktowego
11* @return Kod błędu
12*/
13errno_t SetDIConfig(int config[8]);

5.29. Pobieranie funkcji konfigurowalnych portów CI szafy sterowniczej

 1/**
 2* @brief Pobiera funkcje konfigurowalnych portów CI szafy sterowniczej
 3* @param [in] config Kody funkcji CI0-CI7;
 4* 0-brak;1-sukces rozpoczęcia łuku;2-gotowość spawarki;3-wykrywanie przenośnika;4-wstrzymanie;5-wznowienie;6-uruchomienie;7-zatrzymanie;
 58-wstrzymanie/wznowienie;9-uruchomienie/zatrzymanie;10-przeciąganie nożne;11-przejazd do punktu początkowego zadania;12-przełączanie ręczny/automatyczny;
 613-sukces lokalizacji drutu spawalniczego;14-przerwanie ruchu;15-uruchomienie programu głównego;16-uruchomienie przewijania do tyłu;17-potwierdzenie uruchomienia;
 718-sygnał detekcji fotoelektrycznej X;19-sygnał detekcji fotoelektrycznej Y;20-sygnał zewnętrznego awaryjnego zatrzymania 1;21-sygnał zewnętrznego awaryjnego zatrzymania 2;
 822-tryb redukcji poziomu 1;23-tryb redukcji poziomu 2;24-tryb redukcji poziomu 3 (zatrzymanie);25-wznowienie spawania;26-zakończenie spawania;
 927-włączenie wspomaganego przeciągania;28-wyłączenie wspomaganego przeciągania;29-włączenie/wyłączenie wspomaganego przeciągania;30-wyczyszczenie wszystkich błędów;
1031-przełączanie ręczny/automatyczny (poziom wysoki/niski);32-włączenie;33-wyłączenie;34-włączenie/wyłączenie (zbocze narastające/opadające);35-rozpoczęcie/zakończenie śledzenia punktowego
11* @return Kod błędu
12*/
13errno_t GetDIConfig(int config[8]);

5.30. Ustawianie funkcji konfigurowalnych portów CO szafy sterowniczej

 1/**
 2* @brief Ustawia funkcje konfigurowalnych portów CO szafy sterowniczej
 3* @param [out] config Kody funkcji CO0-CO7;
 4* 0-brak;1-błąd robota;2-robot w ruchu;3-uruchamianie/zatrzymywanie natryskiwania;4-czyszczenie pistoletu natryskowego;5-sygnał podawania gazu;6-sygnał rozpoczęcia łuku;7-podawanie drutu impulsowe;
 58-podawanie drutu wsteczne;9-port wejściowy JOB 1;10-port wejściowy JOB 2;11-port wejściowy JOB 3;12-sterowanie uruchamianiem/zatrzymywaniem przenośnika;13-robot wstrzymany;14-osiągnięcie punktu początkowego zadania;
 615-osiągnięcie obszaru interferencji;16-sterowanie uruchamianiem/zatrzymywaniem lokalizacji drutu spawalniczego;17-robot zakończył uruchomienie;18-uruchomienie/zatrzymanie programu;19-tryb automatyczny/ręczny;20-sygnał wyjściowy awaryjnego zatrzymania 1-bezpieczeństwo;
 721-sygnał wyjściowy awaryjnego zatrzymania 2-bezpieczeństwo;22-uruchomienie/zatrzymanie programu skryptowego LUA;23-wyjście stanu bezpieczeństwa-bezpieczeństwo;24-wyjście stanu zatrzymania ochronnego-bezpieczeństwo;
 825-robot w ruchu-bezpieczeństwo;26-tryb redukcji robota-bezpieczeństwo;27-tryb nieredukcji robota-bezpieczeństwo;28-robot niezatrzymany;29-błąd robota-błąd punktu instrukcji;
 930-błąd robota-błąd sterownika;31-błąd robota-błąd przekroczenia miękkiego ograniczenia;32-błąd robota-błąd kolizji;33-błąd robota-błąd liczby aktywnych stacji podrzędnych;
1034-błąd robota-błąd stacji podrzędnej;35-błąd robota-błąd IO;36-błąd robota-błąd chwytaka;37-błąd robota-błąd pliku;38-błąd robota-błąd osobliwej pozy i orientacji;
1139-błąd robota-błąd komunikacji ze sterownikiem;40-błąd robota-błąd parametru;41-błąd robota-błąd przekroczenia miękkiego ograniczenia osi zewnętrznej;42-ostrzeżenie robota-ostrzeżenie;
1243-ostrzeżenie robota-ostrzeżenie drzwi bezpieczeństwa;44-ostrzeżenie robota-ostrzeżenie ruchu;45-ostrzeżenie robota-ostrzeżenie obszaru interferencji;46-ostrzeżenie robota-ostrzeżenie ściany bezpieczeństwa;
1347-stan włączenia;48-podnoszenie automatyczne po przerwaniu połączenia;49-ostrzeżenie interferencji prostopadłościan 1;50-ostrzeżenie interferencji prostopadłościan 2;51-ostrzeżenie interferencji prostopadłościan 3;52-ostrzeżenie interferencji prostopadłościan 4;
14* @return Kod błędu
15*/
16errno_t SetDOConfig(int config[8]);

5.31. Pobieranie funkcji konfigurowalnych portów CO szafy sterowniczej

 1/**
 2* @brief Pobiera funkcje konfigurowalnych portów CO szafy sterowniczej
 3* @param [out] config Kody funkcji CO0-CO7;
 4* 0-brak;1-błąd robota;2-robot w ruchu;3-uruchamianie/zatrzymywanie natryskiwania;4-czyszczenie pistoletu natryskowego;5-sygnał podawania gazu;6-sygnał rozpoczęcia łuku;7-podawanie drutu impulsowe;
 58-podawanie drutu wsteczne;9-port wejściowy JOB 1;10-port wejściowy JOB 2;11-port wejściowy JOB 3;12-sterowanie uruchamianiem/zatrzymywaniem przenośnika;13-robot wstrzymany;14-osiągnięcie punktu początkowego zadania;
 615-osiągnięcie obszaru interferencji;16-sterowanie uruchamianiem/zatrzymywaniem lokalizacji drutu spawalniczego;17-robot zakończył uruchomienie;18-uruchomienie/zatrzymanie programu;19-tryb automatyczny/ręczny;20-sygnał wyjściowy awaryjnego zatrzymania 1-bezpieczeństwo;
 721-sygnał wyjściowy awaryjnego zatrzymania 2-bezpieczeństwo;22-uruchomienie/zatrzymanie programu skryptowego LUA;23-wyjście stanu bezpieczeństwa-bezpieczeństwo;24-wyjście stanu zatrzymania ochronnego-bezpieczeństwo;
 825-robot w ruchu-bezpieczeństwo;26-tryb redukcji robota-bezpieczeństwo;27-tryb nieredukcji robota-bezpieczeństwo;28-robot niezatrzymany;29-błąd robota-błąd punktu instrukcji;
 930-błąd robota-błąd sterownika;31-błąd robota-błąd przekroczenia miękkiego ograniczenia;32-błąd robota-błąd kolizji;33-błąd robota-błąd liczby aktywnych stacji podrzędnych;
1034-błąd robota-błąd stacji podrzędnej;35-błąd robota-błąd IO;36-błąd robota-błąd chwytaka;37-błąd robota-błąd pliku;38-błąd robota-błąd osobliwej pozy i orientacji;
1139-błąd robota-błąd komunikacji ze sterownikiem;40-błąd robota-błąd parametru;41-błąd robota-błąd przekroczenia miękkiego ograniczenia osi zewnętrznej;42-ostrzeżenie robota-ostrzeżenie;
1243-ostrzeżenie robota-ostrzeżenie drzwi bezpieczeństwa;44-ostrzeżenie robota-ostrzeżenie ruchu;45-ostrzeżenie robota-ostrzeżenie obszaru interferencji;46-ostrzeżenie robota-ostrzeżenie ściany bezpieczeństwa;
1347-stan włączenia;48-podnoszenie automatyczne po przerwaniu połączenia;49-ostrzeżenie interferencji prostopadłościan 1;50-ostrzeżenie interferencji prostopadłościan 2;51-ostrzeżenie interferencji prostopadłościan 3;52-ostrzeżenie interferencji prostopadłościan 4;
14* @return Kod błędu
15*/
16errno_t GetDOConfig(int config[8]);

5.32. Ustawianie funkcji konfigurowalnych portów End-CI końcówki

 1/**
 2* @brief Ustawia funkcje konfigurowalnych portów End-CI końcówki
 3* @param [in] config Kody funkcji End CI0-CI1;
 4* 0-brak;1-przełącznik narzędzia do przeciągania;2-sygnał rejestracji punktu;3-przełączanie ręczny/automatyczny (sygnał impulsowy);4-uruchamianie/zatrzymywanie rejestracji TPD;5-wstrzymanie ruchu;
 56-wznowienie ruchu;7-uruchomienie;8-zatrzymanie;9-wstrzymanie/wznowienie;10-uruchomienie/zatrzymanie;11-włączenie wspomaganego przeciągania przez czujnik siły;12-wyłączenie wspomaganego przeciągania przez czujnik siły;
 613-włączenie/wyłączenie wspomaganego przeciągania przez czujnik siły;14-sygnał detekcji laserowej X;15-sygnał detekcji laserowej Y;16-ruch PTP do punktu początkowego zadania;17-przerwanie ruchu, zatrzymanie bieżącego ruchu zgodnie z sygnałem;
 718-uruchomienie programu głównego;19-uruchomienie przewijania do tyłu;20-potwierdzenie uruchomienia;21-wznowienie spawania;22-zakończenie spawania;23-wyczyszczenie błędu;24-przełączanie ręczny/automatyczny (poziom wysoki/niski)
 825-włączenie;26-wyłączenie;27-włączenie/wyłączenie;28-sygnał uruchamiania/zatrzymywania śledzenia serwo laserowego;
 9* @return Kod błędu
10*/
11errno_t SetToolDIConfig(int config[2]);

5.33. Pobieranie funkcji konfigurowalnych portów End-CI końcówki

 1/**
 2* @brief Pobiera funkcje konfigurowalnych portów End-CI końcówki
 3* @param [out] config Kody funkcji End CI0-CI1;
 4* 0-brak;1-przełącznik narzędzia do przeciągania;2-sygnał rejestracji punktu;3-przełączanie ręczny/automatyczny (sygnał impulsowy);4-uruchamianie/zatrzymywanie rejestracji TPD;5-wstrzymanie ruchu;
 56-wznowienie ruchu;7-uruchomienie;8-zatrzymanie;9-wstrzymanie/wznowienie;10-uruchomienie/zatrzymanie;11-włączenie wspomaganego przeciągania przez czujnik siły;12-wyłączenie wspomaganego przeciągania przez czujnik siły;
 613-włączenie/wyłączenie wspomaganego przeciągania przez czujnik siły;14-sygnał detekcji laserowej X;15-sygnał detekcji laserowej Y;16-ruch PTP do punktu początkowego zadania;17-przerwanie ruchu, zatrzymanie bieżącego ruchu zgodnie z sygnałem;
 718-uruchomienie programu głównego;19-uruchomienie przewijania do tyłu;20-potwierdzenie uruchomienia;21-wznowienie spawania;22-zakończenie spawania;23-wyczyszczenie błędu;24-przełączanie ręczny/automatyczny (poziom wysoki/niski)
 825-włączenie;26-wyłączenie;27-włączenie/wyłączenie;28-sygnał uruchamiania/zatrzymywania śledzenia serwo laserowego;
 9* @return Kod błędu
10*/
11errno_t GetToolDIConfig(int config[2]);

5.34. Ustawianie stanu aktywnego konfigurowalnych CI szafy sterowniczej

1/**
2* @brief Ustawia stan aktywny konfigurowalnych CI szafy sterowniczej
3* @param [in] config Stan aktywny portów CI0-CI7; 0-aktywny wysoki poziom; 1-aktywny niski poziom
4* @return Kod błędu
5*/
6errno_t SetDIConfigLevel(int config[8]);

5.35. Pobieranie stanu aktywnego konfigurowalnych CI szafy sterowniczej

1/**
2* @brief Pobiera stan aktywny konfigurowalnych CI szafy sterowniczej
3* @param [out] config Stan aktywny portów CI0-CI7; 0-aktywny wysoki poziom; 1-aktywny niski poziom
4* @return Kod błędu
5*/
6errno_t GetDIConfigLevel(int config[8]);

5.36. Ustawianie stanu aktywnego konfigurowalnych CO szafy sterowniczej

1/**
2* @brief Ustawia stan aktywny konfigurowalnych CO szafy sterowniczej
3* @param [in] config Stan aktywny portów CO0-CO7; 0-aktywny wysoki poziom; 1-aktywny niski poziom
4* @return Kod błędu
5*/
6errno_t SetDOConfigLevel(int config[8]);

5.37. Pobieranie stanu aktywnego konfigurowalnych CO szafy sterowniczej

1/**
2* @brief Pobiera stan aktywny konfigurowalnych CO szafy sterowniczej
3* @param [out] config Stan aktywny portów CO0-CO7; 0-aktywny wysoki poziom; 1-aktywny niski poziom
4* @return Kod błędu
5*/
6errno_t GetDOConfigLevel(int config[8]);

5.38. Ustawianie stanu aktywnego konfigurowalnych CI końcówki

1/**
2* @brief Ustawia stan aktywny konfigurowalnych CI końcówki
3* @param [in] config Stan aktywny portów CI0-CI1; 0-aktywny wysoki poziom; 1-aktywny niski poziom
4* @return Kod błędu
5*/
6errno_t SetToolDIConfigLevel(int config[2]);

5.39. Pobieranie stanu aktywnego konfigurowalnych CI końcówki

1/**
2* @brief Pobiera stan aktywny konfigurowalnych CI końcówki
3* @param [out] config Stan aktywny portów CI0-CI1; 0-aktywny wysoki poziom; 1-aktywny niski poziom
4* @return Kod błędu
5*/
6errno_t GetToolDIConfigLevel(int config[2]);

5.40. Ustawianie stanu aktywnego standardowych DI szafy sterowniczej

1/**
2* @brief Ustawia stan aktywny standardowych DI szafy sterowniczej
3* @param [in] config Stan aktywny portów DI0-DI7; 0-aktywny wysoki poziom; 1-aktywny niski poziom
4* @return Kod błędu
5*/
6errno_t SetStandardDILevel(int config[8]);

5.41. Pobieranie stanu aktywnego standardowych DI szafy sterowniczej

1/**
2* @brief Pobiera stan aktywny standardowych DI szafy sterowniczej
3* @param [out] config Stan aktywny portów DI0-DI7; 0-aktywny wysoki poziom; 1-aktywny niski poziom
4* @return Kod błędu
5*/
6errno_t GetStandardDILevel(int config[8]);

5.42. Ustawianie stanu aktywnego standardowych DO szafy sterowniczej

1/**
2* @brief Ustawia stan aktywny standardowych DO szafy sterowniczej
3* @param [in] config Stan aktywny portów DO0-DO7; 0-aktywny wysoki poziom; 1-aktywny niski poziom
4* @return Kod błędu
5*/
6errno_t SetStandardDOLevel(int config[8]);

5.43. Pobieranie stanu aktywnego standardowych DO szafy sterowniczej

1/**
2* @brief Pobiera stan aktywny standardowych DO szafy sterowniczej
3* @param [out] config Stan aktywny portów DO0-DO7; 0-aktywny wysoki poziom; 1-aktywny niski poziom
4* @return Kod błędu
5*/
6errno_t GetStandardDOLevel(int config[8]);

5.44. Przykład kodu konfiguracji IO robota

 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}