5. Wejścia/Wyjścia robota

5.1. Ustawienie wyjścia cyfrowego skrzynki sterowniczej

1/**
2* @brief  Ustawia wyjście cyfrowe skrzynki sterowniczej
3* @param  [in] id  Numer I/O, 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*/
9int SetDO(int id, byte status, byte smooth, byte block);

5.2. Ustawienie wyjścia cyfrowego narzędzia

1/**
2* @brief  Ustawia wyjście cyfrowe narzędzia
3* @param  [in] id  Numer I/O, 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*/
9int SetToolDO(int id, byte status, byte smooth, byte block);

5.3. Ustawienie wyjścia analogowego skrzynki sterowniczej

1/**
2* @brief  Ustawia wyjście analogowe skrzynki sterowniczej
3* @param  [in] id  Numer I/O, 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*/
8int SetAO(int id, float value, byte block);

5.4. Ustawienie wyjścia analogowego narzędzia

1/**
2* @brief  Ustawia wyjście analogowe narzędzia
3* @param  [in] id  Numer I/O, 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*/
8int SetToolAO(int id, float value, byte block);

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

 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. Pobranie wejścia cyfrowego skrzynki sterowniczej

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

5.7. Pobranie wejścia cyfrowego narzędzia

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

5.8. Pobranie wejścia analogowego skrzynki sterowniczej

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

5.9. Pobranie wejścia analogowego narzędzia

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

5.10. Pobranie stanu przycisku rejestracji punktu końcowego robota

1/**
2* @brief Pobiera stan przycisku rejestracji punktu końcowego robota
3* @param [out] state Stan przycisku, 0-naciśnięty, 1-zwolniony
4* @return Kod błędu
5*/
6int GetAxlePointRecordBtnState(ref byte state);

5.11. Pobranie stanu wyjścia DO końcowego robota

1/**
2* @brief Pobiera stan wyjścia DO końcowego 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*/
6int GetToolDO(ref byte do_state);

5.12. Pobranie stanu wyjścia DO kontrolera robota

1/**
2* @brief Pobiera stan wyjścia DO kontrolera 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*/
7int GetDO(ref int do_state_h, ref int do_state_l);

5.13. Przykład kodu pobierania stanu DI, DO robota

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

1/**
2* @brief Oczekuje na wejście cyfrowe skrzynki sterowniczej
3* @param  [in] id  Numer I/O, 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 limitu czasu, 0-program zatrzymuje się i informuje o przekroczeniu limitu, 1-ignoruj informację o przekroczeniu limitu i kontynuuj wykonanie programu, 2-czekaj w nieskończoność
7* @return  Kod błędu
8*/
9int WaitDI(int id, byte status, int max_time, int opt);

5.15. Oczekiwanie na wielokanałowe wejście cyfrowe skrzynki sterowniczej

 1/**
 2* @brief Oczekuje na wielokanałowe wejście cyfrowe skrzynki sterowniczej
 3* @param  [in] mode 0-logiczne I dla wielu kanałów, 1-logiczne LUB dla wielu kanałów
 4* @param  [in] id  Numer I/O, 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 limitu czasu, 0-program zatrzymuje się i informuje o przekroczeniu limitu, 1-ignoruj informację o przekroczeniu limitu i kontynuuj wykonanie programu, 2-czekaj w nieskończoność
 8* @return  Kod błędu
 9*/
10int WaitMultiDI(int mode, int id, byte status, int max_time, int opt);

5.16. Oczekiwanie na wejście cyfrowe narzędzia

1/**
2* @brief Oczekuje na wejście cyfrowe narzędzia
3* @param  [in] id  Numer I/O, 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 limitu czasu, 0-program zatrzymuje się i informuje o przekroczeniu limitu, 1-ignoruj informację o przekroczeniu limitu i kontynuuj wykonanie programu, 2-czekaj w nieskończoność
7* @return  Kod błędu
8*/
9int WaitToolDI(int id, byte status, int max_time, int opt);

5.17. Oczekiwanie na wejście analogowe skrzynki sterowniczej

 1/**
 2* @brief Oczekuje na wejście analogowe skrzynki sterowniczej
 3* @param  [in] id  Numer I/O, zakres [0~1]
 4* @param  [in]  sign 0-większe niż, 1-mniejsze niż
 5* @param  [in]  value Procent wejściowej wartości prądu lub napięcia, 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 limitu czasu, 0-program zatrzymuje się i informuje o przekroczeniu limitu, 1-ignoruj informację o przekroczeniu limitu i kontynuuj wykonanie programu, 2-czekaj w nieskończoność
 8* @return  Kod błędu
 9*/
10int WaitAI(int id, int sign, float value, int max_time, int opt);

5.18. Oczekiwanie na wejście analogowe narzędzia

 1/**
 2* @brief Oczekuje na wejście analogowe narzędzia
 3* @param  [in] id  Numer I/O, zakres [0]
 4* @param  [in]  sign 0-większe niż, 1-mniejsze niż
 5* @param  [in]  value Procent wejściowej wartości prądu lub napięcia, 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 limitu czasu, 0-program zatrzymuje się i informuje o przekroczeniu limitu, 1-ignoruj informację o przekroczeniu limitu i kontynuuj wykonanie programu, 2-czekaj w nieskończoność
 8* @return  Kod błędu
 9*/
10int 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 skrzynki sterowniczej

 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. Ustawienie, czy wyjście DO skrzynki sterowniczej ma być resetowane po zatrzymaniu/wstrzymaniu

1/**
2* @brief Ustawia, czy wyjście DO skrzynki sterowniczej ma być resetowane po zatrzymaniu/wstrzymaniu
3* @param [in] resetFlag 0-nie resetuj; 1-resetuj
4* @param [in] reloadFlag Czy przeładować po wznowieniu wstrzymania, 0-nie ładuj; 1-ładuj
5* @return Kod błędu
6*/
7public int SetOutputResetCtlBoxDO(int resetFlag, int reloadFlag);

5.21. Ustawienie, czy wyjście AO skrzynki sterowniczej ma być resetowane po zatrzymaniu/wstrzymaniu

1/**
2* @brief Ustawia, czy wyjście AO skrzynki sterowniczej ma być resetowane po zatrzymaniu/wstrzymaniu
3* @param [in] resetFlag 0-nie resetuj; 1-resetuj
4* @param [in] reloadFlag Czy przeładować po wznowieniu wstrzymania, 0-nie ładuj; 1-ładuj
5* @return Kod błędu
6*/
7public int SetOutputResetCtlBoxAO(int resetFlag, int reloadFlag);

5.22. Ustawienie, czy wyjście DO narzędzia końcowego ma być resetowane po zatrzymaniu/wstrzymaniu

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

5.23. Ustawienie, czy wyjście AO narzędzia końcowego ma być resetowane po zatrzymaniu/wstrzymaniu

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

5.24. Ustawienie, czy wyjście rozszerzone DO ma być resetowane po zatrzymaniu/wstrzymaniu

1/**
2* @brief Ustawia, czy wyjście rozszerzone DO ma być resetowane po zatrzymaniu/wstrzymaniu
3* @param [in] resetFlag 0-nie resetuj; 1-resetuj
4* @param [in] reloadFlag Czy przeładować po wznowieniu wstrzymania, 0-nie ładuj; 1-ładuj
5* @return  Kod błędu
6*/
7public int SetOutputResetExtDO(int resetFlag, int reloadFlag);

5.25. Ustawienie, czy wyjście rozszerzone AO ma być resetowane po zatrzymaniu/wstrzymaniu

1/**
2* @brief Ustawia, czy wyjście rozszerzone AO ma być resetowane po zatrzymaniu/wstrzymaniu
3* @param [in] resetFlag 0-nie resetuj; 1-resetuj
4* @param [in] reloadFlag Czy przeładować po wznowieniu wstrzymania, 0-nie ładuj; 1-ładuj
5* @return Kod błędu
6*/
7public int SetOutputResetExtAO(int resetFlag, int reloadFlag);

5.26. Ustawienie, czy wyjście SmartTool ma być resetowane po zatrzymaniu/wstrzymaniu

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

5.27. Przykład kodu resetowania wyjść po zatrzymaniu/wstrzymaniu programu 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. Ustawienie funkcji konfigurowalnego portu CI skrzynki sterowniczej

 1/**
 2* @brief Ustawia funkcję konfigurowalnego portu CI skrzynki sterowniczej
 3* @param [in] config Kody funkcji CI0-CI7;
 4* 0-brak;1-pomyślne zajarzenie łuku;2-gotowość spawarki;3-wykrywanie taśmociągu;4-wstrzymaj;5-wznów;6-uruchom;7-zatrzymaj;
 58-wstrzymaj/wznów;9-uruchom/zatrzymaj;10-przeciąganie nożne;11-przejdź do punktu początkowego zadania;12-przełączanie ręczny/automatyczny;
 613-pomyślne pozycjonowanie drutu spawalniczego;14-przerwanie ruchu;15-uruchom program główny;16-uruchom przewijanie wstecz;17-potwierdzenie uruchomienia;
 718-sygnał wykrywania fotoelektrycznego X;19-sygnał wykrywania fotoelektrycznego Y;20-sygnał wejściowy awaryjnego zatrzymania zewnętrznego 1;21-sygnał wejściowy awaryjnego zatrzymania zewnętrznego 2;
 822-tryb redukcji pierwszego poziomu;23-tryb redukcji drugiego poziomu;24-tryb redukcji trzeciego poziomu (zatrzymanie);25-wznów spawanie;26-zakończ spawanie;
 927-włącz pomocnicze przeciąganie;28-wyłącz pomocnicze przeciąganie;29-włącz/wyłącz pomocnicze przeciąganie;30-wyczyść wszystkie błędy;
1031-przełączanie ręczny/automatyczny (poziom wysoki/niski);32-załącz;33-odłącz;34-załącz/odłącz (zbocze narastające/opadające);35-rozpocznij/zakończ śledzenie punktowe
11* @return Kod błędu
12*/
13public int SetDIConfig(int[] config)

5.29. Pobranie funkcji konfigurowalnego portu CI skrzynki sterowniczej

 1/**
 2* @brief Pobiera funkcję konfigurowalnego portu CI skrzynki sterowniczej
 3* @param [in] config Kody funkcji CI0-CI7;
 4* 0-brak;1-pomyślne zajarzenie łuku;2-gotowość spawarki;3-wykrywanie taśmociągu;4-wstrzymaj;5-wznów;6-uruchom;7-zatrzymaj;
 58-wstrzymaj/wznów;9-uruchom/zatrzymaj;10-przeciąganie nożne;11-przejdź do punktu początkowego zadania;12-przełączanie ręczny/automatyczny;
 613-pomyślne pozycjonowanie drutu spawalniczego;14-przerwanie ruchu;15-uruchom program główny;16-uruchom przewijanie wstecz;17-potwierdzenie uruchomienia;
 718-sygnał wykrywania fotoelektrycznego X;19-sygnał wykrywania fotoelektrycznego Y;20-sygnał wejściowy awaryjnego zatrzymania zewnętrznego 1;21-sygnał wejściowy awaryjnego zatrzymania zewnętrznego 2;
 822-tryb redukcji pierwszego poziomu;23-tryb redukcji drugiego poziomu;24-tryb redukcji trzeciego poziomu (zatrzymanie);25-wznów spawanie;26-zakończ spawanie;
 927-włącz pomocnicze przeciąganie;28-wyłącz pomocnicze przeciąganie;29-włącz/wyłącz pomocnicze przeciąganie;30-wyczyść wszystkie błędy;
1031-przełączanie ręczny/automatyczny (poziom wysoki/niski);32-załącz;33-odłącz;34-załącz/odłącz (zbocze narastające/opadające);35-rozpocznij/zakończ śledzenie punktowe
11* @return Kod błędu
12*/
13public int GetDIConfig(out int[] config)

5.30. Ustawienie funkcji konfigurowalnego portu CO skrzynki sterowniczej

 1/**
 2* @brief Ustawia funkcję konfigurowalnego portu CO skrzynki sterowniczej
 3* @param [out] config Kody funkcji CO0-CO7;
 4* 0-brak;1-błąd robota;2-robot w ruchu;3-uruchom/zatrzymaj natryskiwanie;4-czyszczenie pistoletu natryskowego;5-sygnał podawania gazu;6-sygnał zajarzenia łuku;7-podawanie drutu punktowe;
 58-podawanie drutu wsteczne;9-wejście JOB 1;10-wejście JOB 2;11-wejście JOB 3;12-sterowanie uruchomieniem/zatrzymaniem taśmociągu;13-robot wstrzymany;14-osiągnięto punkt początkowy zadania;
 615-osiągnięto strefę interferencji;16-sterowanie uruchomieniem/zatrzymaniem pozycjonowania drutu spawalniczego;17-robot zakończył uruchamianie;18-zatrzymanie uruchomienia 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-zatrzymanie uruchomienia programu skryptowego LUA;23-wyjście stanu bezpieczeństwa-bezpieczeństwo;24-wyjście stanu ochronnego zatrzymania-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 napędu;31-błąd robota-błąd przekroczenia miękkiego limitu;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 I/O;36-błąd robota-błąd chwytaka;37-błąd robota-błąd pliku;38-błąd robota-błąd osobliwej pozycji;
1139-błąd robota-błąd komunikacji napędu;40-błąd robota-błąd parametru;41-błąd robota-błąd przekroczenia miękkiego limitu zewnętrznej osi;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 strefy interferencji;46-ostrzeżenie robota-ostrzeżenie ściany bezpieczeństwa;
1347-stan załączenia;48-podnoszenie automatyczne po przerwaniu połączenia;49-ostrzeżenie interferencji sześcianu 1;50-ostrzeżenie interferencji sześcianu 2;51-ostrzeżenie interferencji sześcianu 3;52-ostrzeżenie interferencji sześcianu 4;
14* @return Kod błędu
15*/
16public int SetDOConfig(int[] config)

5.31. Pobranie funkcji konfigurowalnego portu CO skrzynki sterowniczej

 1/**
 2* @brief Pobiera funkcję konfigurowalnego portu CO skrzynki sterowniczej
 3* @param [out] config Kody funkcji CO0-CO7;
 4* 0-brak;1-błąd robota;2-robot w ruchu;3-uruchom/zatrzymaj natryskiwanie;4-czyszczenie pistoletu natryskowego;5-sygnał podawania gazu;6-sygnał zajarzenia łuku;7-podawanie drutu punktowe;
 58-podawanie drutu wsteczne;9-wejście JOB 1;10-wejście JOB 2;11-wejście JOB 3;12-sterowanie uruchomieniem/zatrzymaniem taśmociągu;13-robot wstrzymany;14-osiągnięto punkt początkowy zadania;
 615-osiągnięto strefę interferencji;16-sterowanie uruchomieniem/zatrzymaniem pozycjonowania drutu spawalniczego;17-robot zakończył uruchamianie;18-zatrzymanie uruchomienia 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-zatrzymanie uruchomienia programu skryptowego LUA;23-wyjście stanu bezpieczeństwa-bezpieczeństwo;24-wyjście stanu ochronnego zatrzymania-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 napędu;31-błąd robota-błąd przekroczenia miękkiego limitu;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 I/O;36-błąd robota-błąd chwytaka;37-błąd robota-błąd pliku;38-błąd robota-błąd osobliwej pozycji;
1139-błąd robota-błąd komunikacji napędu;40-błąd robota-błąd parametru;41-błąd robota-błąd przekroczenia miękkiego limitu zewnętrznej osi;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 strefy interferencji;46-ostrzeżenie robota-ostrzeżenie ściany bezpieczeństwa;
1347-stan załączenia;48-podnoszenie automatyczne po przerwaniu połączenia;49-ostrzeżenie interferencji sześcianu 1;50-ostrzeżenie interferencji sześcianu 2;51-ostrzeżenie interferencji sześcianu 3;52-ostrzeżenie interferencji sześcianu 4;
14* @return Kod błędu
15*/
16public int GetDOConfig(out int[] config)

5.32. Ustawienie funkcji konfigurowalnego portu End-CI końcowego

 1/**
 2* @brief Ustawia funkcję konfigurowalnego portu End-CI końcowego
 3* @param [in] config Kody funkcji End CI0-CI1;
 4* 0-brak;1-przełącznik narzędzia przeciągania nauczania;2-sygnał rejestracji punktu;3-przełączanie ręczny/automatyczny (sygnał impulsowy);4-uruchom/zatrzymaj rejestrację TPD;5-wstrzymaj ruch;
 56-wznów ruch;7-uruchom;8-zatrzymaj;9-wstrzymaj/wznów;10-uruchom/zatrzymaj;11-włącz pomocnicze przeciąganie czujnika siły;12-wyłącz pomocnicze przeciąganie czujnika siły;
 613-włącz/wyłącz pomocnicze przeciąganie czujnika siły;14-sygnał wykrywania lasera X;15-sygnał wykrywania lasera Y;16-ruch PTP do punktu początkowego zadania;17-przerwanie ruchu, zatrzymanie bieżącego ruchu zgodnie z sygnałem;
 718-uruchom program główny;19-uruchom przewijanie wstecz;20-potwierdzenie uruchomienia;21-wznów spawanie;22-zakończ spawanie;23-wyczyść błędy;24-przełączanie ręczny/automatyczny (poziom wysoki/niski);
 825-załącz;26-odłącz;27-załącz/odłącz;28-sygnał uruchamiania/zatrzymywania śledzenia serwomechanizmu laserowego;
 9* @return Kod błędu
10*/
11public int SetToolDIConfig(int[] config)

5.33. Pobranie funkcji konfigurowalnego portu End-CI końcowego

 1/**
 2* @brief Pobiera funkcję konfigurowalnego portu End-CI końcowego
 3* @param [out] config Kody funkcji End CI0-CI1;
 4* 0-brak;1-przełącznik narzędzia przeciągania nauczania;2-sygnał rejestracji punktu;3-przełączanie ręczny/automatyczny (sygnał impulsowy);4-uruchom/zatrzymaj rejestrację TPD;5-wstrzymaj ruch;
 56-wznów ruch;7-uruchom;8-zatrzymaj;9-wstrzymaj/wznów;10-uruchom/zatrzymaj;11-włącz pomocnicze przeciąganie czujnika siły;12-wyłącz pomocnicze przeciąganie czujnika siły;
 613-włącz/wyłącz pomocnicze przeciąganie czujnika siły;14-sygnał wykrywania lasera X;15-sygnał wykrywania lasera Y;16-ruch PTP do punktu początkowego zadania;17-przerwanie ruchu, zatrzymanie bieżącego ruchu zgodnie z sygnałem;
 718-uruchom program główny;19-uruchom przewijanie wstecz;20-potwierdzenie uruchomienia;21-wznów spawanie;22-zakończ spawanie;23-wyczyść błędy;24-przełączanie ręczny/automatyczny (poziom wysoki/niski);
 825-załącz;26-odłącz;27-załącz/odłącz;28-sygnał uruchamiania/zatrzymywania śledzenia serwomechanizmu laserowego;
 9* @return Kod błędu
10*/
11public int GetToolDIConfig(out int[] config)

5.34. Ustawienie stanu aktywnego konfigurowalnego portu CI skrzynki sterowniczej

1/**
2* @brief Ustawia stan aktywny konfigurowalnego portu CI skrzynki 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*/
6public int SetDIConfigLevel(int[] config)

5.35. Pobranie stanu aktywnego konfigurowalnego portu CI skrzynki sterowniczej

1/**
2* @brief Pobiera stan aktywny konfigurowalnego portu CI skrzynki 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*/
6public int GetDIConfigLevel(out int[] config)

5.36. Ustawienie stanu aktywnego konfigurowalnego portu CO skrzynki sterowniczej

1/**
2* @brief Ustawia stan aktywny konfigurowalnego portu CO skrzynki 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*/
6public int SetDOConfigLevel(int[] config)

5.37. Pobranie stanu aktywnego konfigurowalnego portu CO skrzynki sterowniczej

1/**
2* @brief Pobiera stan aktywny konfigurowalnego portu CO skrzynki 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*/
6public int GetDOConfigLevel(out int[] config)

5.38. Ustawienie stanu aktywnego konfigurowalnego portu CI końcowego

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

5.39. Pobranie stanu aktywnego konfigurowalnego portu CI końcowego

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

5.40. Ustawienie stanu aktywnego standardowego portu DI skrzynki sterowniczej

1/**
2* @brief Ustawia stan aktywny standardowego portu DI skrzynki 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*/
6public int SetStandardDILevel(int[] config)

5.41. Pobranie stanu aktywnego standardowego portu DI skrzynki sterowniczej

1/**
2* @brief Pobiera stan aktywny standardowego portu DI skrzynki 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*/
6public int GetStandardDILevel(out int[] config)

5.42. Ustawienie stanu aktywnego standardowego portu DO skrzynki sterowniczej

1/**
2* @brief Ustawia stan aktywny standardowego portu DO skrzynki 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*/
6public int SetStandardDOLevel(int[] config)

5.43. Pobranie stanu aktywnego standardowego portu DO skrzynki sterowniczej

1/**
2* @brief Pobiera stan aktywny standardowego portu DO skrzynki 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*/
6public int GetStandardDOLevel(out int[] config)

5.44. Przykład kodu konfiguracji I/O robota

 1public void TestIOConfig()
 2{
 3    int rtn = 0;
 4
 5    // ---------- Test funkcji konfigurowalnego portu CI ----------
 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    // Użycie parametru out do odebrania pobranej tablicy konfiguracyjnej
11    int[] getDIConfig;
12    rtn = robot.GetDIConfig(out getDIConfig);
13    Console.WriteLine($"GetDIConfig rtn is {rtn}, value is {string.Join(" ", getDIConfig)}");
14
15    // ---------- Test funkcji konfigurowalnego portu CO ----------
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 funkcji konfigurowalnego portu CI końcowego ----------
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 stanu aktywnego konfigurowalnego portu CI skrzynki sterowniczej ----------
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 stanu aktywnego konfigurowalnego portu CO skrzynki sterowniczej ----------
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 stanu aktywnego konfigurowalnego portu CI końcowego ----------
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 stanu aktywnego standardowego portu DI skrzynki sterowniczej ----------
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 stanu aktywnego standardowego portu DO skrzynki sterowniczej ----------
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}