11. Urządzenia peryferyjne robota

11.1. Konfiguracja chwytaka

1/**
2* @brief  Konfiguracja chwytaka
3* @param  [in] config .company  Producent chwytaka, 1-Robotiq, 2-Huiling, 3-Tianji, 4-Dahuan, 5-Zhixing
4* @param  [in] config .device  Numer urządzenia, Robotiq(0-2F-85 series), Huiling(0-NK series,1-Z-EFG-100), Tianji(0-TEG-110), Dahuan(0-PGI-140), Zhixing(0-CTPM2F20)
5* @param  [in] config .softvesion  Numer wersji oprogramowania, tymczasowo nieużywane, domyślnie 0
6* @param  [in] config .bus  Pozycja magistrali końcowej urządzenia, tymczasowo nieużywane, domyślnie 0
7* @return  Kod błędu
8*/
9int SetGripperConfig(DeviceConfig config);

11.2. Pobranie konfiguracji chwytaka

1/**
2* @brief  Pobranie konfiguracji chwytaka
3* @param  [out] config .company  Producent chwytaka, 1-Robotiq, 2-Huiling, 3-Tianji, 4-Dahuan, 5-Zhixing
4* @param  [out] config .device  Numer urządzenia, Robotiq(0-2F-85 series), Huiling(0-NK series,1-Z-EFG-100), Tianji(0-TEG-110), Dahuan(0-PGI-140), Zhixing(0-CTPM2F20)
5* @param  [out] config .softvesion  Numer wersji oprogramowania, tymczasowo nieużywane, domyślnie 0
6* @param  [out] config .bus  Pozycja magistrali końcowej urządzenia, tymczasowo nieużywane, domyślnie 0
7* @return  Kod błędu
8*/
9int GetGripperConfig(DeviceConfig config);

11.3. Aktywacja chwytaka

1/**
2* @brief  Aktywacja chwytaka
3* @param  [in] index  Numer chwytaka
4* @param  [in] act  0-reset, 1-aktywacja
5* @return  Kod błędu
6*/
7int ActGripper(int index, int act);

11.4. Sterowanie chwytakiem

 1/**
 2* @brief  Sterowanie chwytakiem
 3* @param  [in] index  Numer chwytaka
 4* @param  [in] pos  Procent pozycji, zakres [0~100]
 5* @param  [in] vel  Procent prędkości, zakres [0~100]
 6* @param  [in] force  Procent momentu, zakres [0~100]
 7* @param  [in] max_time  Maksymalny czas oczekiwania, zakres [0~30000], jednostka ms
 8* @param  [in] block  0-blokujący, 1-nieblokujący
 9* @param  [in] type Typ chwytaka, 0-chwytak równoległy; 1-chwytak obrotowy
10* @param  [in] rotNum Liczba obrotów
11* @param  [in] rotVel Procent prędkości obrotowej [0-100]
12* @param  [in] rotTorque Procent momentu obrotowego [0-100]
13* @return Kod błędu
14*/
15int MoveGripper(int index, int pos, int vel, int force, int max_time, int block, int type, double rotNum, int rotVel, int rotTorque);

11.5. Pobranie stanu ruchu chwytaka

1/**
2* @brief  Pobranie stanu ruchu chwytaka
3* @return List[0]:Kod błędu; List[1] : fault  0-brak błędu, 1-jest błąd; List[2]: status  0-ruch niezakończony, 1-ruch zakończony
4*/
5List<Integer> GetGripperMotionDone();

11.6. Pobranie stanu aktywacji chwytaka

1/**
2* @brief  Pobranie stanu aktywacji chwytaka
3* @return  List[0]:Kod błędu; List[1] : fault  0-brak błędu, 1-jest błąd; List[2]: status  bit0~bit15 odpowiada numerom chwytaka 0~15, bit=0 oznacza nieaktywny, bit=1 oznacza aktywny
4*/
5List<Number> GetGripperActivateStatus()

11.7. Pobranie pozycji chwytaka

1/**
2* @brief  Pobranie pozycji chwytaka
3* @return  List[0]:Kod błędu; List[1] : fault  0-brak błędu, 1-jest błąd; List[2]: position  Procent pozycji, zakres 0~100%
4*/
5List<Number> GetGripperCurPosition()

11.8. Pobranie prędkości chwytaka

1/**
2* @brief  Pobranie prędkości chwytaka
3* @return  List[0]:Kod błędu; List[1] : fault  0-brak błędu, 1-jest błąd; List[2]: speed  Procent prędkości, zakres 0~100%
4*/
5List<Number> GetGripperCurSpeed()

11.9. Pobranie prądu chwytaka

1/**
2* @brief  Pobranie prądu chwytaka
3* @return  List[0]:Kod błędu; List[1] : fault  0-brak błędu, 1-jest błąd; List[2]: current  Procent prądu, zakres 0~100%
4*/
5List<Number> GetGripperCurCurrent()

11.10. Pobranie napięcia chwytaka

1/**
2* @brief  Pobranie napięcia chwytaka
3* @return List[0]:Kod błędu; List[1] : fault  0-brak błędu, 1-jest błąd; List[2]:voltage  Napięcie, jednostka 0.1V
4*/
5List<Number> GetGripperVoltage()

11.11. Pobranie temperatury chwytaka

1/**
2* @brief  Pobranie temperatury chwytaka
3* @return List[0]:Kod błędu; List[1] : fault  0-brak błędu, 1-jest błąd; List[2]:temp  Temperatura, jednostka ℃
4*/
5List<Number> GetGripperTemp()

11.12. Obliczenie punktu wstępnego chwytania - wizja

1/**
2* @brief Obliczenie punktu wstępnego chwytania - wizja
3* @param [in] desc_pos  Pozycja kartezjańska punktu chwytania
4* @param [in] zlength   Przesunięcie osi Z
5* @param [in] zangle    Przesunięcie obrotu wokół osi Z
6* @param [out] pre_pos  Punkt wstępny
7* @return Kod błędu
8*/
9int ComputePrePick(DescPose desc_pos, double zlength, double zangle, DescPose pre_pos);

11.13. Obliczenie punktu wycofania - wizja

1/**
2* @brief Obliczenie punktu wycofania - wizja
3* @param [in] desc_pos  Pozycja kartezjańska punktu chwytania
4* @param [in] zlength   Przesunięcie osi Z
5* @param [in] zangle    Przesunięcie obrotu wokół osi Z
6* @param [out] post_poss Punkt wycofania
7* @return Kod błędu
8*/
9int ComputePostPick(DescPose desc_pos, double zlength, double zangle, DescPose post_pos);

11.14. Przykład kodu operacji chwytakiem robota

 1public static int TestGripper(Robot robot)
 2{
 3    int company = 4;
 4    int device = 0;
 5    int softversion = 0;
 6    int bus = 2;
 7    int index = 2;
 8    int act = 0;
 9    int max_time = 30000;
10    int block = 0;
11
12    int current_pos = 0;
13    int current = 0;
14    int voltage = 0;
15    int temp = 0;
16    int speed = 0;
17
18    DeviceConfig cnn=new DeviceConfig(company,device,softversion,bus);
19    robot.SetGripperConfig(cnn);
20    robot.GetGripperConfig(cnn);
21
22    robot.ActGripper(index, act);
23    robot.Sleep(1000);
24    act = 1;
25    robot.ActGripper(index, act);
26    robot.Sleep(1000);
27
28    robot.MoveGripper(index, 100, 50, 50, max_time, block, 0, 0, 0, 0);
29    robot.Sleep(1000);
30    robot.MoveGripper(index, 0, 50, 0, max_time, block, 0, 0, 0, 0);
31
32    List<Integer> stat=new ArrayList<>();
33    stat=robot.GetGripperMotionDone();
34
35    List<Number> list=new ArrayList<>();
36    list=robot.GetGripperActivateStatus();
37
38    list=robot.GetGripperCurPosition();
39
40    list=robot.GetGripperCurCurrent();
41
42    list=robot.GetGripperVoltage();
43
44    list=robot.GetGripperTemp();
45
46    list=robot.GetGripperCurSpeed();
47
48    int retval = 0;
49    DescPose prepick_pose = new DescPose(){};
50    DescPose postpick_pose = new DescPose(){};
51
52    DescPose p1Desc=new DescPose(-419.524, -13.000, 351.569, -178.118, 0.314, 3.833);
53    DescPose p2Desc=new DescPose(-321.222, 185.189, 335.520, -179.030, -1.284, -29.869);
54
55    retval = robot.ComputePrePick(p1Desc, 10, 0, prepick_pose);
56
57    retval = robot.ComputePostPick(p2Desc, -10, 0, postpick_pose);
58    return 0;
59}

11.15. Pobranie liczby obrotów chwytaka obrotowego

1/**
2* @brief  Pobranie liczby obrotów chwytaka obrotowego
3* @return List[0]:Kod błędu List[1]: 0-brak błędu, 1-jest błąd List[2]:Liczba obrotów
4*/
5List<Number> GetGripperRotNum();

11.16. Pobranie procentu prędkości obrotowej chwytaka obrotowego

1/**
2* @brief  Pobranie procentu prędkości obrotowej chwytaka obrotowego
3* @return List[0]:Kod błędu List[1]: 0-brak błędu, 1-jest błąd List[2]:Procent prędkości obrotowej
4*/
5List<Number> GetGripperRotSpeed();

11.17. Pobranie procentu momentu obrotowego chwytaka obrotowego

1/**
2* @brief  Pobranie procentu momentu obrotowego chwytaka obrotowego
3* @return List[0]:Kod błędu List[1]: 0-brak błędu, 1-jest błąd List[2]:Procent momentu obrotowego
4*/
5List<Number> GetGripperRotTorque();

11.18. Przykład kodu pobrania stanu chwytaka obrotowego

 1public static int TestRotGripperState(Robot robot)
 2{
 3    int fault = 0;
 4    List<Number> rotNum=new ArrayList<>();
 5    List<Number> rotSpeed=new ArrayList<>();
 6    List<Number> rotTorque=new ArrayList<>();
 7
 8    rotNum=robot.GetGripperRotNum();
 9    rotSpeed=robot.GetGripperRotSpeed();
10    rotTorque=robot.GetGripperRotTorque();
11    System.out.println("gripper rot num :"+rotNum.get(2)+ ", gripper rotSpeed :"+rotSpeed.get(2)+",gripper rotTorque : "+rotTorque.get(2));
12
13    return 0;
14}

11.19. Uruchomienie, zatrzymanie przenośnika taśmowego

1/**
2* @brief  Uruchomienie, zatrzymanie przenośnika taśmowego
3* @param  [in] status Stan, 1-uruchom, 0-zatrzymaj
4* @return  Kod błędu
5*/
6int ConveyorStartEnd(int status);

11.20. Rejestracja punktu detekcji IO

1/**
2* @brief  Rejestracja punktu detekcji IO
3* @return  Kod błędu
4*/
5int ConveyorPointIORecord();

11.21. Rejestracja punktu A

1/**
2* @brief  Rejestracja punktu A
3* @return  Kod błędu
4*/
5int ConveyorPointARecord();

11.22. Rejestracja punktu odniesienia

1/**
2* @brief  Rejestracja punktu odniesienia
3* @return  Kod błędu
4*/
5int ConveyorRefPointRecord();

11.23. Rejestracja punktu B

1/**
2* @brief  Rejestracja punktu B
3* @return Kod błędu
4*/
5int ConveyorPointBRecord();

11.24. Detekcja IO przedmiotu na przenośniku

1/**
2* @brief Detekcja IO przedmiotu na przenośniku
3* @param [in] max_t Maksymalny czas detekcji, jednostka ms
4* @return Kod błędu
5*/
6int ConveyorIODetect(int max_t);

11.25. Pobranie bieżącej pozycji przedmiotu

1/**
2* @brief Pobranie bieżącej pozycji przedmiotu
3* @param [in] mode 1-śledzenie i chwytanie, 2-śledzenie ruchu, 3-śledzenie TPD
4* @return Kod błędu
5*/
6int ConveyorGetTrackData(int mode);

11.26. Rozpoczęcie śledzenia przenośnika

1/**
2* @brief Rozpoczęcie śledzenia przenośnika
3* @param [in] status Stan, 1-uruchom, 0-zatrzymaj
4* @return Kod błędu
5*/
6int ConveyorTrackStart(int status);

11.27. Zatrzymanie śledzenia przenośnika

1/**
2* @brief Zatrzymanie śledzenia przenośnika
3* @return Kod błędu
4*/
5int ConveyorTrackEnd();

11.28. Konfiguracja parametrów przenośnika

Zmienione w wersji Java: SDK-v1.0.4-3.8.1

 1/**
 2* @brief  Konfiguracja parametrów przenośnika
 3* @param [in] encChannel Kanał enkodera 1~2
 4* @param [in] resolution Liczba impulsów enkodera na jeden obrót
 5* @param [in] lead Odległość przejścia przenośnika na jeden obrót enkodera
 6* @param [in] wpAxis Numer układu przedmiotu dla funkcji śledzenia ruchu wybierz numer układu przedmiotu, dla śledzenia chwytania, śledzenia TPD ustaw na 0
 7* @param [in] vision Czy z wizją  0 nie  1 tak
 8* @param [in] speedRadio Współczynnik prędkości dla opcji śledzenia chwytania przenośnika (1-100) dla innych opcji domyślnie 1
 9* @param [in] followType Typ śledzenia ruchu, 0-śledzenie ruchu; 1-śledzenie kontrolne
10* @param [in] startDis Należy ustawić dla śledzenia kontrolnego, Odległość początkowa śledzenia, -1: automatyczne obliczenie (automatyczne śledzenie kontrolne po dotarciu przedmiotu pod robota), jednostka mm, wartość domyślna 0
11* @param [in] endDis Należy ustawić dla śledzenia kontrolnego, Odległość końcowa śledzenia, jednostka mm, wartość domyślna 100
12* @return Kod błędu
13*/
14int ConveyorSetParam(int encChannel, int resolution, double lead, int wpAxis, int vision, double speedRadio, int followType, int startDis, int endDis);

11.29. Ustawienie kompensacji punktu chwytania przenośnika

1/**
2* @brief Ustawienie kompensacji punktu chwytania przenośnika
3* @param [in] cmp Pozycja kompensacji double[3]{x, y, z}
4* @return Kod błędu
5*/
6int ConveyorCatchPointComp(Object[] cmp);

11.30. Ruch liniowy przenośnika

 1/**
 2* @brief Ruch liniowy
 3* @param [in] name Opis punktu ruchu
 4* @param [in] tool Numer narzędzia, zakres [0~14]
 5* @param [in] wobj Numer przedmiotu, zakres [0~14]
 6* @param [in] vel Procent prędkości, zakres [0~100]
 7* @param [in] acc Procent przyspieszenia, zakres [0~100], tymczasowo niedostępne
 8* @param [in] ovl Współczynnik skalowania prędkości, zakres [0~100]
 9* @param [in] blendR [-1.0]-ruch do pozycji (blokujący), [0~1000.0]-promień wygładzania (nieblokujący), jednostka mm
10* @return Kod błędu
11*/
12int ConveyorTrackMoveL(String name, int tool, int wobj, double vel, double acc, double ovl, double blendR);

11.31. Detekcja wejścia komunikacyjnego przenośnika

Nowe w wersji Java: SDK-v1.0.4-3.8.1

1/**
2* @brief Detekcja wejścia komunikacyjnego przenośnika
3* @param [in] timeout Czas oczekiwania na timeout ms
4* @return Kod błędu
5*/
6int ConveyorComDetect(int timeout);

11.32. Wyzwolenie detekcji wejścia komunikacyjnego przenośnika

Nowe w wersji Java: SDK-v1.0.4-3.8.1

1/**
2* @brief Wyzwolenie detekcji wejścia komunikacyjnego przenośnika
3* @param [in] timeout Czas oczekiwania na timeout ms
4* @return Kod błędu
5*/
6int ConveyorComDetectTrigger();

11.33. Przykładowy program operacji przenośnika robota

 1public static int TestConveyor(Robot robot)
 2{
 3    int retval = 0;
 4
 5    retval = robot.ConveyorStartEnd(1);
 6
 7    retval = robot.ConveyorPointIORecord();
 8
 9    retval = robot.ConveyorPointARecord();
10
11    retval = robot.ConveyorRefPointRecord();
12
13    retval = robot.ConveyorPointBRecord();
14
15    retval = robot.ConveyorStartEnd(0);
16
17    retval = 0;
18
19    retval = robot.ConveyorSetParam(1,10000,200,0,0,20,0,0,100);
20
21    Object[] cmp = new Object[]{ 0.0, 0.0, 0.0 };
22    retval = robot.ConveyorCatchPointComp(cmp);
23
24    int index = 1;
25    int max_time = 30000;
26    int block = 0;
27    retval = 0;
28
29    DescPose p1Desc=new DescPose(-419.524, -13.000, 351.569, -178.118, 0.314, 3.833);
30    DescPose p2Desc=new DescPose(-321.222, 185.189, 335.520, -179.030, -1.284, -29.869);
31
32
33    retval = robot.MoveCart(p1Desc, 1, 0, 100.0, 100.0, 100.0, -1.0, -1);
34
35    retval = robot.WaitMs(1);
36
37    retval = robot.ConveyorTrackStart(1);
38
39    retval = robot.ConveyorTrackMoveL("cvrCatchPoint", 1, 0, 100, 100, 100, -1.0);
40
41    retval = robot.MoveGripper(index, 51, 40, 30, max_time, block, 0, 0, 0, 0);
42
43    retval = robot.ConveyorTrackMoveL("cvrRaisePoint", 1, 0, 100, 100, 100, -1.0);
44
45    retval = robot.ConveyorTrackEnd();
46
47    robot.MoveCart(p2Desc, 1, 0, 100.0, 100.0, 100.0, -1.0, -1);
48
49    retval = robot.MoveGripper(index, 100, 40, 10, max_time, block, 0, 0, 0, 0);
50
51    return 0;
52}

11.34. Konfiguracja czujnika końcowego

1/**
2* @brief Konfiguracja czujnika końcowego
3* @param [in] config idCompany Producent, 18-JUNKONG;25-HUIDE
4* @param [in] config idDevice Typ, 0-JUNKONG/RYR6T.V1.0
5* @param [in] config idSoftware Wersja oprogramowania, 0-J1.0/HuiDe1.0(tymczasowo niedostępne)
6* @param [in] config idBus Pozycja podłączenia, 1-port końcowy 1;2-port końcowy 2...8-port końcowy 8(tymczasowo niedostępne)
7* @return Kod błędu
8*/
9int AxleSensorConfig(DeviceConfig config);

11.35. Pobranie konfiguracji czujnika końcowego

1/**
2* @brief Pobranie konfiguracji czujnika końcowego
3* @param [out] config idCompany Producent, 18-JUNKONG;25-HUIDE
4* @param [out] config idDevice Typ, 0-JUNKONG/RYR6T.V1.0
5* @return Kod błędu
6*/
7int AxleSensorConfigGet(DeviceConfig config);

11.36. Aktywacja czujnika końcowego

1/**
2* @brief Aktywacja czujnika końcowego
3* @param [in] actFlag 0-reset;1-aktywacja
4* @return Kod błędu
5*/
6int AxleSensorActivate(int actFlag);

11.37. Zapis do rejestru czujnika końcowego

 1/**
 2* @brief Zapis do rejestru czujnika końcowego
 3* @param [in] devAddr  Numer adresu urządzenia 0-255
 4* @param [in] regHAddr Adres rejestru wysoki 8 bitów
 5* @param [in] regLAddr Adres rejestru niski 8 bitów
 6* @param [in] regNum  Liczba rejestrów 0-255
 7* @param [in] data1 Wartość do zapisu do rejestru 1
 8* @param [in] data2 Wartość do zapisu do rejestru 2
 9* @param [in] isNoBlock 0-blokujący;1-nieblokujący
10* @return Kod błędu
11*/
12int AxleSensorRegWrite(int devAddr, int regHAddr, int regLAddr, int regNum, int data1, int data2, int isNoBlock);

11.38. Przykład kodu czujnika końcowego

 1public static int TestAxleSensor(Robot robot)
 2{
 3    DeviceConfig con=new DeviceConfig(18,0,0,1);
 4    robot.AxleSensorConfig(con);
 5    int company = -1;
 6    int type = -1;
 7    robot.AxleSensorConfigGet(con);
 8
 9    int rtn = robot.AxleSensorActivate(1);
10
11    robot.Sleep(1000);
12
13    rtn = robot.AxleSensorRegWrite(1, 4, 6, 1, 0, 0, 0);
14    return 0;
15}

11.39. Pobranie protokołu urządzeń peryferyjnych robota

1/**
2* @brief Pobranie protokołu urządzeń peryferyjnych robota
3* @return List[0]:Kod błędu; List[1] : int protocol Numer protokołu urządzeń peryferyjnych robota 4096-karta sterująca osią rozszerzenia;4097-ModbusSlave;4098-ModbusMaster
4*/
5List<Integer> GetExDevProtocol();

11.40. Ustawienie protokołu urządzeń peryferyjnych robota

1/**
2* @brief Ustawienie protokołu urządzeń peryferyjnych robota
3* @param [in] protocol Numer protokołu urządzeń peryferyjnych robota 4096-karta sterująca osią rozszerzenia;4097-ModbusSlave;4098-ModbusMaster
4* @return Kod błędu
5*/
6int SetExDevProtocol(int protocol);

11.41. Przykładowy program ustawiania protokołu urządzeń peryferyjnych robota

1public static int TestExDevProtocol(Robot robot)
2{
3    int protocol = 4096;
4    int rtn = robot.SetExDevProtocol(protocol);
5    List<Integer> integer=new ArrayList<>();
6    integer = robot.GetExDevProtocol();
7
8    return 0;
9}

11.42. Pobranie parametrów komunikacji końcowej

1/**
2* @brief Pobranie parametrów komunikacji końcowej
3* @param [out] param Parametry komunikacji końcowej
4* @return Kod błędu
5*/
6int GetAxleCommunicationParam(AxleComParam param)

11.43. Ustawienie parametrów komunikacji końcowej

1/**
2* @brief Ustawienie parametrów komunikacji końcowej
3* @param [in] param Parametry komunikacji końcowej
4* @return Kod błędu
5*/
6int SetAxleCommunicationParam(AxleComParam param)

11.44. Ustawienie typu transferu pliku końcowego

1/**
2* @brief Ustawienie typu transferu pliku końcowego
3* @param [in] type 1-plik aktualizacji MCU;2-plik LUA
4* @return  Kod błędu
5*/
6public int SetAxleFileType(int type)

11.45. Ustawienie włączenia wykonania LUA końcowego

1/**
2* @brief Ustawienie włączenia wykonania LUA końcowego
3* @param [in] enable 0-niewłączony;1-włączony
4* @return  Kod błędu
5*/
6public int SetAxleLuaEnable(int enable)

11.46. Odnowienie błędu wyjątkowego pliku LUA końcowego

1/**
2* @brief Odnowienie błędu wyjątkowego pliku LUA końcowego
3* @param [in] status 0-nie odnawiaj;1-odnów
4* @return  Kod błędu
5*/
6public int SetRecoverAxleLuaErr(int status)

11.47. Pobranie stanu włączenia wykonania LUA końcowego

1/**
2* @brief Pobranie stanu włączenia wykonania LUA końcowego
3* @param [out] status[0]: 0-niewłączony;1-włączony
4* @return  Kod błędu
5*/
6int GetAxleLuaEnableStatus(int[] status)

11.48. Ustawienie typu włączenia urządzenia końcowego LUA

1/**
2* @brief Ustawienie typu włączenia urządzenia końcowego LUA
3* @param forceSensorEnable Stan włączenia czujnika siły, 0-niewłączony;1-włączony
4* @param gripperEnable Stan włączenia chwytaka, 0-niewłączony;1-włączony
5* @param IOEnable Stan włączenia urządzenia IO, 0-niewłączony;1-włączony
6* @return  Kod błędu
7*/
8public int SetAxleLuaEnableDeviceType(int forceSensorEnable, int gripperEnable, int IOEnable)

11.49. Pobranie typu włączenia urządzenia końcowego LUA

1/**
2 * @brief Pobranie typu włączenia urządzenia końcowego LUA
3 * @param enable enable[0]:forceSensorEnable Stan włączenia czujnika siły, 0-niewłączony;1-włączony
4 * @param enable enable[1]:gripperEnable Stan włączenia chwytaka, 0-niewłączony;1-włączony
5 * @param enable enable[2]:IOEnable Stan włączenia urządzenia IO, 0-niewłączony;1-włączony
6 * @return  Kod błędu
7 */
8public int GetAxleLuaEnableDeviceType(int[] enable)

11.50. Pobranie aktualnie skonfigurowanego urządzenia końcowego

1/**
2 * @brief Pobranie aktualnie skonfigurowanego urządzenia końcowego
3 * @param forceSensorEnable Numer urządzenia włączonego czujnika siły 0-niewłączony;1-włączony
4 * @param gripperEnable Numer urządzenia włączonego chwytaka, 0-niewłączony;1-włączony
5 * @param IODeviceEnable Numer urządzenia włączonego urządzenia IO, 0-niewłączony;1-włączony
6 * @return  Kod błędu
7 */
8public int GetAxleLuaEnableDevice(int[] forceSensorEnable, int[] gripperEnable, int[] IODeviceEnable)

11.51. Ustawienie włączenia funkcji sterowania ruchem chwytaka

1/**
2 * @brief Ustawienie włączenia funkcji sterowania ruchem chwytaka
3 * @param id Numer urządzenia chwytaka
4 * @param func func[0]-włączenie chwytaka;func[1]-inicjalizacja chwytaka;2-ustawienie pozycji;3-ustawienie prędkości;4-ustawienie momentu;6-odczyt stanu chwytaka;7-odczyt stanu inicjalizacji;8-odczyt kodu błędu;9-odczyt pozycji;10-odczyt prędkości;11-odczyt momentu
5 * @return  Kod błędu
6 */
7public int SetAxleLuaGripperFunc(int id, int[] func)

11.52. Pobranie włączenia funkcji sterowania ruchem chwytaka

1/**
2 * @brief Pobranie włączenia funkcji sterowania ruchem chwytaka
3 * @param id Numer urządzenia chwytaka
4 * @param func func[0]-włączenie chwytaka;func[1]-inicjalizacja chwytaka;2-ustawienie pozycji;3-ustawienie prędkości;4-ustawienie momentu;6-odczyt stanu chwytaka;7-odczyt stanu inicjalizacji;8-odczyt kodu błędu;9-odczyt pozycji;10-odczyt prędkości;11-odczyt momentu
5 * @return  Kod błędu
6 */
7public int GetAxleLuaGripperFunc(int id, int[] func)

11.53. Zapis pliku węzła podrzędnego Ethercat robota

1/**
2 * @brief Zapis pliku węzła podrzędnego Ethercat robota
3 * @param type Typ pliku węzła podrzędnego, 1-plik aktualizacji węzła podrzędnego;2-plik konfiguracyjny węzła podrzędnego
4 * @param slaveID Numer węzła podrzędnego
5 * @param fileName Nazwa przesyłanego pliku
6 * @return  Kod błędu
7 */
8public int SlaveFileWrite(int type, int slaveID, String fileName)

11.54. Przesłanie pliku protokołu otwartego LUA końcowego

1/**
2 * @brief Przesłanie pliku protokołu otwartego LUA końcowego
3 * @param filePath Ścieżka lokalnego pliku lua ".../AXLE_LUA_End_DaHuan.lua"
4 * @return Kod błędu
5 */
6public int AxleLuaUpload(String filePath)

11.55. Wprowadzenie węzła podrzędnego Ethercat robota w tryb boot

1/**
2 * @brief Wprowadzenie węzła podrzędnego Ethercat robota w tryb boot
3 * @return  Kod błędu
4 */
5public int SetSysServoBootMode()

11.56. Przykład kodu operacji na pliku LUA końcowego robota

 1public static int TestAxleLua(Robot robot)
 2{
 3    robot.AxleLuaUpload("D://zUP/AXLE_LUA_End_DaHuan.lua");
 4
 5    AxleComParam param=new AxleComParam(7, 8, 1, 0, 5, 3, 1);
 6    robot.SetAxleCommunicationParam(param);
 7
 8    robot.GetAxleCommunicationParam(param);
 9
10    robot.SetAxleLuaEnable(1);
11    int[] luaEnableStatus = new int[]{0};
12    robot.GetAxleLuaEnableStatus(luaEnableStatus);
13    robot.SetAxleLuaEnableDeviceType(0, 1, 0);
14
15    int forceEnable = 0;
16    int gripperEnable = 0;
17    int ioEnable = 0;
18    int [] enable=new int[]{0,0,0};
19    robot.GetAxleLuaEnableDeviceType(enable);
20
21    int[] func = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
22    robot.SetAxleLuaGripperFunc(1, func);
23    int[] getFunc = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
24    robot.GetAxleLuaGripperFunc(1, getFunc);
25    int[] getforceEnable = { 0,0,0,0,0,0,0,0};
26    int[] getgripperEnable = { 0,0,0,0,0,0,0,0};
27    int[] getioEnable = { 0,0,0,0,0,0,0,0};
28    robot.GetAxleLuaEnableDevice(getforceEnable, getgripperEnable, getioEnable);
29    for (int i = 0; i < 8; i++)
30    {
31        System.out.println(getforceEnable[i]);
32    }
33    System.out.println("getgripperEnable status : ");
34    for (int i = 0; i < 8; i++)
35    {
36        System.out.println(getgripperEnable[i]);
37    }
38    System.out.println("getioEnable status : ");
39    for (int i = 0; i < 8; i++)
40    {
41        System.out.println(getioEnable[i]);
42    }
43    robot.ActGripper(1, 0);
44    robot.Sleep(2000);
45    robot.ActGripper(1, 1);
46    robot.Sleep(2000);
47    robot.MoveGripper(1, 90, 10, 100, 50000, 0, 0, 0, 0, 0);
48    int pos = 0;
49    while (true)
50    {
51        ROBOT_STATE_PKG pkg=new ROBOT_STATE_PKG();
52        pkg=robot.GetRobotRealTimeState();
53        System.out.println("gripper pos is:"+pkg.gripper_position);
54        robot.Sleep(100);
55    }
56
57}

11.57. Pobranie stanu przycisków SmartTool

Nowe w wersji Java: SDK-v1.0.4-3.8.1

1/**
2* @brief Pobranie stanu przycisków SmartTool
3* @param [out] state Stan przycisków uchwytu SmartTool;(bit0:0-komunikacja normalna;1-utrata komunikacji;bit1-cofnij operację;bit2-wyczyść program;bit3-przycisk A;bit4-przycisk B;bit5-przycisk C;bit6-przycisk D;bit7-przycisk E;bit8-przycisk IO;bit9-ręczny/automatyczny;bit10-start)
4* @return Kod błędu
5*/
6int GetSmarttoolBtnState(int[] state)

11.58. Przykład kodu przycisków SmartTool

 1public static void main(String[] args)
 2{
 3    Robot robot = new Robot();
 4    robot.SetReconnectParam(true, 100, 500);//设置重连次数、间隔
 5    robot.LoggerInit(FrLogType.DIRECT, FrLogLevel.INFO, "D://log", 10, 10);
 6    int rtn = robot.RPC("192.168.58.2");
 7    if (rtn == 0) {
 8        System.out.println("rpc连接 success");
 9    } else {
10        System.out.println("rpc连接 fail");
11        return;
12    }
13
14    int[] state = {0};
15    while (true)
16    {
17        robot.GetSmarttoolBtnState(state);
18
19        String binaryString = String.format("%32s", Integer.toBinaryString(state[0])).replace(' ', '0');
20        System.out.println("GetSmarttoolBtnState:"+binaryString);
21        robot.Sleep(100);
22    }
23}

11.59. Przesłanie pliku LUA protokołu otwartego

Nowe w wersji Java: SDK-v1.0.8-3.8.5

1/**
2* @brief Przesłanie pliku LUA protokołu otwartego
3* @param  filePath Ścieżka lokalnego pliku lua protokołu otwartego
4* @return Kod błędu
5*/
6public int OpenLuaUpload(String filePath)

11.60. Pobranie parametrów karty węzła podrzędnego

Nowe w wersji Java: SDK-v1.0.8-3.8.5

1/**
2* @brief  Pobranie parametrów karty węzła podrzędnego
3* @param  type  0-Ethercat,1-CClink, 3-Ethercat, 4-EIP
4* @param  version  Wersja protokołu
5* @param  connState  0-niepołączony 1-połączony
6* @return  Kod błędu
7*/
8public int GetFieldBusConfig(int[] type, int[] version, int[] connState)

11.61. Zapis DO węzła podrzędnego

Nowe w wersji Java: SDK-v1.0.8-3.8.5

1/**
2* @brief  Zapis DO węzła podrzędnego
3* @param   DOIndex  Numer DO
4* @param   wirteNum  Liczba do zapisu
5* @param   status Wartości do zapisu, maksymalnie 8
6* @return  Kod błędu
7*/
8public int FieldBusSlaveWriteDO(int DOIndex, int wirteNum, int[] status)

11.62. Zapis AO węzła podrzędnego

Nowe w wersji Java: SDK-v1.0.8-3.8.5

1/*
2* @brief  Zapis AO węzła podrzędnego
3* @param  AOIndex Numer AO
4* @param  wirteNum Liczba do zapisu
5* @param  status Tablica wartości do zapisu (maksymalnie 8), AO0~AO15 są typu całkowitego, AO16~AO31 są typu zmiennoprzecinkowego
6* @return  Kod błędu
7*/
8public int FieldBusSlaveWriteAO(int AOIndex, int wirteNum, double[] status)

11.63. Odczyt DI węzła podrzędnego

Nowe w wersji Java: SDK-v1.0.8-3.8.5

1/**
2* @brief  Odczyt DI węzła podrzędnego
3* @param  DOIndex  Numer DI
4* @param  readNum  Liczba do odczytu
5* @param  status Odczytane wartości, maksymalnie 8
6* @return  Kod błędu
7*/
8public int FieldBusSlaveReadDI(int DOIndex, int readNum, int[] status)

11.64. Odczyt AI węzła podrzędnego

Nowe w wersji Java: SDK-v1.0.8-3.8.5

1/**
2* @brief  Odczyt AI węzła podrzędnego
3* @param  AIIndex  Numer AI
4* @param  readNum  Liczba do odczytu
5* @param  status Odczytane wartości, maksymalnie 8
6* @return  Kod błędu
7*/
8public int FieldBusSlaveReadAI(int AIIndex, int readNum, double[] status)

11.65. Oczekiwanie na wejście rozszerzonego DI

Nowe w wersji Java: SDK-v1.0.8-3.8.5

1/**
2* @brief Oczekiwanie na wejście rozszerzonego DI
3* @param  DIIndex Numer DI
4* @param  status 0-niski poziom;1-wysoki poziom
5* @param  waitMs Maksymalny czas oczekiwania (ms)
6* @return Kod błędu
7*/
8public int FieldBusSlaveWaitDI(int DIIndex, int status, int waitMs)

11.66. Oczekiwanie na wejście rozszerzonego AI

Nowe w wersji Java: SDK-v1.0.8-3.8.5

1/**
2* @brief Oczekiwanie na wejście rozszerzonego AI
3* @param  AIIndex Numer AI
4* @param  waitType 0-większe niż;1-mniejsze niż
5* @param  value Wartość AI
6* @param  waitMs Maksymalny czas oczekiwania (ms)
7* @return Kod błędu
8*/
9public int FieldBusSlaveWaitAI(int AIIndex, int waitType, double value, int waitMs)

11.67. Przykład kodu instrukcji interfejsów trybu węzła podrzędnego

 1public static void testFieldBusBoard(Robot robot)
 2{
 3    // Przesłanie i załadowanie pliku protokołu otwartego
 4    robot.OpenLuaUpload("D://zUP/1111/CtrlDev_field.lua");
 5    robot.Sleep(2000);
 6    robot.SetCtrlOpenLUAName(3, "CtrlDev_field.lua");
 7    robot.UnloadCtrlOpenLUA(3);
 8    robot.LoadCtrlOpenLUA(3);
 9    robot.Sleep(8000);
10    int[] type=new int[1];
11    int[] version=new int[1];
12    int[] connState=new int[1];
13    // Pobranie typu protokołu karty węzła podrzędnego, wersji oprogramowania, stanu połączenia z PLC
14    robot.GetFieldBusConfig(type, version, connState);
15    System.out.println("type is: "+type[0]+", version is : "+version[0]+", connState is : "+connState[0]);
16    // Zapis DO0 = 1, DO1 = 0, DO2 = 1
17    int[] ctrl =new int[8];
18    ctrl[0] = 1;
19    ctrl[1] = 0;
20    ctrl[2] = 1;
21    robot.FieldBusSlaveWriteDO(0, 3, ctrl);
22    // Zapis AO2 = 0x1000
23    int[] ctrlAO =new int[8];
24    ctrlAO[0] = 0x1000;
25    robot.FieldBusSlaveWriteAO(2, 1, ctrlAO);
26    int[] DI=new int[4];
27    double[] AI=new double[3];
28    // Pętla monitorująca DI0~DI3 AI0~AI2
29    for (int i = 0; i < 100; i++)
30    {
31        robot.FieldBusSlaveReadDI(0, 4, DI);
32        System.out.println("DI0 is: "+DI[0]+", DI1 is: "+DI[1]+",DI2 is: "+DI[2]+",DI3 is: "+DI[3]);
33        robot.FieldBusSlaveReadAI(0, 3, AI);
34        System.out.println("AI0 is: "+AI[0]+ ",AI1 is: "+AI[1]+",AI2 is: "+AI[2]);
35        robot.Sleep(10);
36    }
37    // Oczekiwanie, czy DI0 ma wartość 1, czas oczekiwania 100ms i wydrukowanie wyniku
38    int ret = robot.FieldBusSlaveWaitDI(0, 1, 100);
39    System.out.println("FieldBusSlaveWaitDI result is: "+ ret);
40    // Oczekiwanie, czy AI0 jest większe niż 400, czas oczekiwania 100ms i wydrukowanie wyniku
41    ret = robot.FieldBusSlaveWaitAI(0,0,400.00,100);
42    System.out.println("FieldBusSlaveWaitAI result is: "+ ret);
43    robot.CloseRPC();
44}

11.68. Sterowanie matrycową przyssawką

Nowe w wersji Java: SDK-v1.0.8-3.8.5

1/**
2* @brief Sterowanie matrycową przyssawką
3* @param  slaveID Numer węzła podrzędnego
4* @param  len Długość
5* @param  ctrlValue Wartość sterowania 1-zassanie z maksymalnym podciśnieniem 2-zassanie z ustawionym podciśnieniem 3-zatrzymanie zassania
6* @return Kod błędu
7*/
8public int SetSuckerCtrl(int slaveID, int len, int[] ctrlValue)

11.69. Pobranie stanu matrycowej przyssawki

Nowe w wersji Java: SDK-v1.0.8-3.8.5

1/**
2* @brief Pobranie stanu matrycowej przyssawki
3* @param  slaveID Numer węzła podrzędnego
4* @param  state Stan przyssania 0-zwolnienie przedmiotu 1-wykryto pomyślne przyssanie przedmiotu 2-brak przyssania przedmiotu 3-oderwanie przedmiotu
5* @param  pressValue Bieżące podciśnienie jednostka kpa
6* @param  error Bieżący kod błędu przyssawki
7* @return Kod błędu
8*/
9public int GetSuckerState(int slaveID, int[] state, int[] pressValue, int[] error)

11.70. Oczekiwanie na stan przyssawki

Nowe w wersji Java: SDK-v1.0.8-3.8.5

1/**
2* @brief Oczekiwanie na stan przyssawki
3* @param  slaveID Numer węzła podrzędnego
4* @param  state Stan przyssania 0-zwolnienie przedmiotu 1-wykryto pomyślne przyssanie przedmiotu 2-brak przyssania przedmiotu 3-oderwanie przedmiotu
5* @param  ms Maksymalny czas oczekiwania
6* @return Kod błędu
7*/
8public int WaitSuckerState(int slaveID, int state, int ms)

11.71. Przykład kodu instrukcji sterowania matrycową przyssawką

 1public static void testSucker(Robot robot)
 2{
 3    // Przesłanie i załadowanie pliku protokołu otwartego
 4    robot.OpenLuaUpload("C://项目/外设SDK/CtrlDev_sucker.lua");
 5    robot.Sleep(2000);
 6    robot.UnloadCtrlOpenLUA(1);
 7    robot.LoadCtrlOpenLUA(1);
 8    robot.Sleep(1000);
 9    // Sterowanie w trybie rozgłaszania przyssawki, zassanie z maksymalną wydajnością
10    int[] ctrl = {1};
11    robot.SetSuckerCtrl(0, 1, ctrl);
12    int[] state=new int[1];
13    int[] pressVlaue=new int[1];
14    int[] error=new int[1];
15    // Pętla monitorująca stan przyssawki nr 1 i nr 12
16    for (int i = 0; i < 100; i++)
17    {
18        robot.GetSuckerState(1, state,pressVlaue, error);
19        System.out.println("sucker1 state is:"+state[0]+",pressVlaue is:"+pressVlaue[0]+",error num is"+error[0]);
20        robot.GetSuckerState(12, state, pressVlaue, error);
21        System.out.println("sucker12 state is :"+state[0]+", pressVlaue is:"+pressVlaue[0]+",error num is:"+error[0]);
22        robot.Sleep(100);
23    }
24    // Oczekiwanie, czy przyssawka nr 1 osiągnęła stan przyssania przedmiotu, czas oczekiwania 100ms
25    int ret = robot.WaitSuckerState(1, 1, 100);
26    System.out.println("WaitSuckerState result is:"+ ret);
27    // Wyłączenie przyssawek nr 1 i nr 12 w trybie unicast
28    ctrl[0] = 3;
29    robot.SetSuckerCtrl(1, 1, ctrl);
30    robot.SetSuckerCtrl(12, 1, ctrl);
31    robot.CloseRPC();
32}

11.72. Funkcja włączania/wyłączania urządzenia peryferyjnego laserowego

Nowe w wersji Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Funkcja włączania/wyłączania urządzenia peryferyjnego laserowego
3 * @param [in] OnOff 0-wyłącz 1-włącz
4 * @param [in] weldId ID spoiny domyślnie 0
5 * @return Kod błędu
6 */
7public int LaserTrackingLaserOnOff(int OnOff, int weldId)

11.73. Funkcja rozpoczęcia/zakończenia śledzenia laserowego

Nowe w wersji Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Funkcja rozpoczęcia/zakończenia śledzenia laserowego
3 * @param [in] OnOff 0-zakończ 1-rozpocznij
4 * @param [in] coordId Numer układu narzędzia urządzenia peryferyjnego laserowego
5 * @return Kod błędu
6 */
7public int LaserTrackingTrackOnOff(int OnOff, int coordId)

11.74. Poszukiwanie pozycji laserowej - stały kierunek

Nowe w wersji Java: SDK-v1.0.9-3.8.6

 1/**
 2 * @brief Poszukiwanie pozycji laserowej - stały kierunek
 3 * @param [in] direction 0-x+ 1-x- 2-y+ 3-y- 4-z+ 5-z-
 4 * @param [in] vel Prędkość jednostka%
 5 * @param [in] distance Maksymalna odległość poszukiwania jednostka mm
 6 * @param [in] timeout Czas timeout poszukiwania jednostka ms
 7 * @param [in] posSensorNum Numer narzędzia skalibrowanego lasera
 8 * @return Kod błędu
 9 */
10public int LaserTrackingSearchStart_xyz(int direction, int vel, int distance, int timeout, int posSensorNum)

11.75. Poszukiwanie pozycji laserowej - dowolny kierunek

Nowe w wersji Java: SDK-v1.0.9-3.8.6

 1/**
 2 * @brief Poszukiwanie pozycji laserowej - dowolny kierunek
 3 * @param [in] directionPoint Punkt wejściowy poszukiwania współrzędne xyz
 4 * @param [in] vel Prędkość jednostka%
 5 * @param [in] distance Maksymalna odległość poszukiwania jednostka mm
 6 * @param [in] timeout Czas timeout poszukiwania jednostka ms
 7 * @param [in] posSensorNum Numer narzędzia skalibrowanego lasera
 8 * @return Kod błędu
 9 */
10public int LaserTrackingSearchStart_point(DescTran directionPoint, int vel, int distance, int timeout, int posSensorNum)

11.76. Zakończenie poszukiwania pozycji laserowej

Nowe w wersji Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief  Zakończenie poszukiwania pozycji laserowej
3 * @return Kod błędu
4 */
5 public int LaserTrackingSearchStop()

11.77. Konfiguracja IP lasera

Nowe w wersji Java: SDK-v1.0.9-3.8.6

1 /**
2  * @brief Konfiguracja IP lasera
3  * @param [in] ip Adres IP urządzenia peryferyjnego laserowego
4  * @param [in] port Numer portu urządzenia peryferyjnego laserowego
5  * @return Kod błędu
6  */
7 public int LaserTrackingSensorConfig(String ip, int port)

11.78. Konfiguracja okresu próbkowania urządzenia peryferyjnego laserowego

Nowe w wersji Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Konfiguracja okresu próbkowania urządzenia peryferyjnego laserowego
3 * @param [in] period Okres próbkowania urządzenia peryferyjnego laserowego jednostka ms
4 * @return Kod błędu
5 */
6public int LaserTrackingSensorSamplePeriod(int period)

11.79. Ładowanie sterownika urządzenia peryferyjnego laserowego

Nowe w wersji Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Ładowanie sterownika urządzenia peryferyjnego laserowego
3 * @param [in] type Typ protokołu sterownika urządzenia peryferyjnego laserowego 101-RuiNiu 102-ChuangXiang 103-QuanShi 104-TongZhou 105-AoTai
4 * @return Kod błędu
5 */
6public int LoadPosSensorDriver(int type)

11.80. Rozładowanie sterownika urządzenia peryferyjnego laserowego

Nowe w wersji Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Rozładowanie sterownika urządzenia peryferyjnego laserowego
3 * @return Kod błędu
4 */
5public int UnLoadPosSensorDriver()

11.81. Rejestracja ścieżki spoiny laserowej

Nowe w wersji Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Rejestracja ścieżki spoiny laserowej
3 * @param [in] status 0-zatrzymaj rejestrację 1-śledzenie w czasie rzeczywistym 2-rozpocznij rejestrację
4 * @param [in] delayTime Czas opóźnienia jednostka ms
5 * @return Kod błędu
6 */
7public int LaserSensorRecord1(int status, int delayTime)

11.82. Odtwarzanie ścieżki spoiny laserowej

Nowe w wersji Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Odtwarzanie ścieżki spoiny laserowej
3 * @param [in] delayTime Czas opóźnienia jednostka ms
4 * @param [in] speed Prędkość jednostka%
5 * @return Kod błędu
6 */
7public int LaserSensorReplay(int delayTime, double speed)

11.83. Odtwarzanie śledzenia laserowego

Nowe w wersji Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Odtwarzanie śledzenia laserowego
3 * @return Kod błędu
4 */
5public int MoveLTR()

11.84. Odtwarzanie ścieżki spoiny laserowej

Nowe w wersji Java: SDK-v1.0.9-3.8.6

 1/**
 2* @brief Odtwarzanie ścieżki spoiny laserowej
 3* @param delayMode Tryb 0-czas opóźnienia 1-odległość opóźnienia
 4* @param delayTime Czas opóźnienia jednostka ms
 5* @param delayDisExAxisNum Numer osi rozszerzenia opóźnienia
 6* @param delayDis Odległość opóźnienia jednostka mm
 7* @param sensitivePara Współczynnik czułości kompensacji
 8* @param trackMode Typ śledzenia punktowego. 0-ruch asynchroniczny osi rozszerzenia;1-robot
 9* @param triggerMode Sposób wyzwalania śledzenia punktowego. 0-czas śledzenia;1-IO
10* @param runTime Czas śledzenia punktowego robota (s)
11* @param speed Prędkość jednostka%
12* @return Kod błędu
13*/
14public int LaserSensorRecordandReplay(int delayMode, int delayTime, int delayDisExAxisNum, double delayDis, double sensitivePara, int trackMode, int triggerMode, double runTime, double speed)

11.85. Ruch do początku zapisu ścieżki spoiny

Nowe w wersji Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Ruch do początku zapisu ścieżki spoiny
3 * @param [in] moveType 0-PTP 1-LIN
4 * @param [in] ovl Prędkość jednostka%
5 * @return Kod błędu
6 */
7public int MoveToLaserRecordStart(int moveType, double ovl)

11.86. Ruch do końca zapisu ścieżki spoiny

Nowe w wersji Java: SDK-v1.0.9-3.8.6

1/**
2 * @brief Ruch do końca zapisu ścieżki spoiny
3 * @param [in] moveType 0-PTP 1-LIN
4 * @param [in] ovl Prędkość jednostka%
5 * @return Kod błędu
6 */
7public int MoveToLaserRecordEnd(int moveType, double ovl)

11.87. Ruch do punktu poszukiwanego przez czujnik laserowy

Nowe w wersji Java: SDK-v1.0.9-3.8.6

 1/**
 2 * @brief Ruch do punktu poszukiwanego przez czujnik laserowy
 3 * @param [in] moveFlag Typ ruchu: 0-PTP;1-LIN
 4 * @param [in] ovl Współczynnik skalowania prędkości, 0-100
 5 * @param [in] dataFlag Wybór danych bufora spoiny: 0-wykonaj dane planowania;1-wykonaj dane zapisu
 6 * @param [in] plateType Typ blachy: 0-blacha falista;1-blacha trapezowa;2-blacha ogrodzeniowa;3-beczka;4-stal pancerzowa falista
 7 * @param [in] trackOffectType Typ przesunięcia czujnika laserowego: 0-bez przesunięcia;1-przesunięcie w układzie bazowym;2-przesunięcie w układzie narzędzia;3-przesunięcie surowych danych czujnika laserowego
 8 * @param [in] offset Wartość przesunięcia
 9 * @return Kod błędu
10 */
11public int MoveToLaserSeamPos(int moveFlag, double ovl, int dataFlag, int plateType, int trackOffectType, DescPose offset)

11.88. Pobranie informacji o współrzędnych punktu poszukiwanego przez czujnik laserowy

Nowe w wersji Java: SDK-v1.0.9-3.8.6

 1/**
 2 * @brief Pobranie informacji o współrzędnych punktu poszukiwanego przez czujnik laserowy
 3 * @param [in] trackOffectType Typ przesunięcia czujnika laserowego: 0-bez przesunięcia;1-przesunięcie w układzie bazowym;2-przesunięcie w układzie narzędzia;3-przesunięcie surowych danych czujnika laserowego
 4 * @param [in] offset Wartość przesunięcia
 5 * @param [out] jPos Pozycja przegubów [°]
 6 * @param [out] descPos Pozycja kartezjańska [mm]
 7 * @param [out] tool Układ narzędzia
 8 * @param [out] user Układ przedmiotu
 9 * @param [out] exaxis Pozycja osi rozszerzenia [mm]
10 * @return Kod błędu
11 */
12public int GetLaserSeamPos(int trackOffectType, DescPose offset, JointPos jPos, DescPose descPos, int[] tool, int[] user, ExaxisPos exaxis)

11.89. Przykład kodu konfiguracji parametrów i debugowania urządzenia peryferyjnego laserowego

 1public static void testLaserConfig(Robot robot)
 2{
 3    robot.LaserTrackingSensorConfig("192.168.58.20", 5020);
 4
 5    robot.LaserTrackingSensorSamplePeriod(20);
 6
 7    robot.LoadPosSensorDriver(101);
 8    robot.LaserTrackingLaserOnOff(0,0);
 9
10    robot.Sleep(3000);
11
12    robot.LaserTrackingLaserOnOff(1, 0);
13
14    robot.CloseRPC();
15}

11.90. Przykład kodu skanowania i odtwarzania ścieżki laserowej

 1public static void testLaserRecordAndReplay(Robot robot)
 2{
 3    // Przesłanie i załadowanie pliku protokołu otwartego
 4    robot.OpenLuaUpload("D://zUP/CtrlDev_laser_ruiniu-0117.lua");
 5    robot.Sleep(2000);
 6    robot.SetCtrlOpenLUAName(0, "CtrlDev_laser_ruiniu-0117.lua");
 7    robot.UnloadCtrlOpenLUA(0);
 8    robot.LoadCtrlOpenLUA(0);
 9    robot.Sleep(8000);
10
11    for (int i=0;i<10;++i){
12        JointPos startjointPos=new JointPos(56.205, -117.951, 141.872, -118.149, -94.217, -122.176);
13        DescPose startdescPose=new DescPose(-97.552, -282.855, 26.675, 174.182, -1.338, -91.707);
14        ExaxisPos exaxisPos=new ExaxisPos(0, 0, 0, 0);
15        DescPose offdese=new DescPose(0, 0, 0, 0, 0, 0);
16        robot.MoveL(startjointPos, startdescPose, 1, 0, 100, 100, 100, -1, 0,exaxisPos, 0, 0, offdese, 0,1, 1);
17
18        robot.LaserSensorRecord1(2, 10);
19
20        JointPos endjointPos=new JointPos(68.809, -87.100, 121.120, -127.233, -95.038, -109.555);
21        DescPose enddescPose=new DescPose(-103.555, -464.234, 13.076, 174.179, -1.344, -91.709);
22        robot.MoveL(endjointPos, enddescPose, 1, 0, 50, 100, 100, -1,0, exaxisPos, 0, 0, offdese, 0,1, 1);
23
24        robot.LaserSensorRecord1(0, 10);
25
26        robot.MoveToLaserRecordStart(1, 30);
27
28        robot.LaserSensorReplay(10, 100);
29
30        robot.MoveLTR();
31
32        robot.LaserSensorRecord1(0, 10);
33    }
34
35    robot.CloseRPC();
36}

11.91. Przykład kodu poszukiwania pozycji laserowej i śledzenia w czasie rzeczywistym

 1public static void testLasertrack(Robot robot)
 2{
 3    // Przesłanie i załadowanie pliku protokołu otwartego
 4    robot.OpenLuaUpload("D://zUP/CtrlDev_laser_ruiniu-0117.lua");
 5    robot.Sleep(2000);
 6    robot.SetCtrlOpenLUAName(0, "CtrlDev_laser_ruiniu-0117.lua");
 7    robot.UnloadCtrlOpenLUA(0);
 8    robot.LoadCtrlOpenLUA(0);
 9    robot.Sleep(8000);
10    for(int i=0;i<10;++i){
11        JointPos startjointPos=new JointPos(56.205, -117.951, 141.872, -118.149, -94.217, -122.176);
12        DescPose startdescPose=new DescPose(-97.552, -282.855, 26.675, 174.182, -1.338, -91.707);
13        ExaxisPos exaxisPos=new ExaxisPos(0, 0, 0, 0);
14        DescPose offdese=new DescPose(0, 0, 0, 0, 0, 0);
15        DescTran directionPoint=new DescTran();
16        robot.MoveL(startjointPos, startdescPose, 1, 0, 100, 100, 100, -1, 0,exaxisPos, 0, 0, offdese, 0,1, 1);
17
18        robot.LaserTrackingSearchStart_xyz(3, 100, 300, 1000, 3);
19        robot.LaserTrackingSearchStop();
20
21        // robot.GetRobotTeachingPoint(name, data);
22        robot.MoveToLaserSeamPos(1, 30, 0, 0, 0, offdese);
23        // printf("%f, %f, %f,%f, %f, %f,%f, %f, %f,%f, %f, %f\n", data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7], data[8], data[9], data[10], data[11]);
24
25        robot.LaserTrackingTrackOnOff(1, 3);
26        // robot.LaserTrackingTrackOn(3);
27        JointPos endjointPos=new JointPos(68.809,-87.100,121.120,-127.233,-95.038,-109.555);
28        DescPose enddescPose=new DescPose(-103.555,-464.234,13.076,174.179,-1.344,-91.709);
29        robot.MoveL(endjointPos, enddescPose, 1, 0, 20, 100, 100, -1, 0,exaxisPos, 0, 0, offdese, 0,1, 1);
30
31        robot.LaserTrackingTrackOnOff(0, 3);
32        System.out.println("To jest " + (i+1) + " raz");
33    }
34    robot.CloseRPC();
35}

11.92. Przykład kodu śledzenia laserowego z osią rozszerzenia synchronicznie z robotem

 1public static void testLasertrackandExitAxis(Robot robot)
 2{
 3    ExaxisPos startexaxisPos =new ExaxisPos( 0,0,0,0 );
 4    ExaxisPos seamexaxisPos = new ExaxisPos(-10,0,0,0 );
 5    ExaxisPos endexaxisPos = new ExaxisPos(-30, 0, 0, 0);
 6    DescPose offdese = new DescPose(0, 0, 0, 0, 0, 0 );
 7    JointPos seamjointPos=new JointPos(0, 0, 0, 0, 0, 0);
 8    DescPose seamdescPose=new DescPose(0, 0, 0, 0, 0, 0);
 9
10    for(int i =0;i<10;++i) {
11        // Ruch do punktu początkowego wymagającego poszukiwania pozycji
12        JointPos startjointPos = new JointPos(58.337, -119.628, 146.037, -116.358, -92.224, -117.654);
13        DescPose startdescPose = new DescPose(-53.375, -255.363, 0.919, 178.054, 1.077, -94.026);
14        robot.ExtAxisSyncMoveJ(startjointPos, startdescPose, 1, 0, 100, 100, 100, startexaxisPos, -1, 0, offdese);
15
16        System.out.println("11111");
17        // Rozpoczęcie poszukiwania pozycji w kierunku -y
18        int ret = robot.LaserTrackingSearchStart_xyz(3, 100, 300, 1000, 2);
19        robot.LaserTrackingSearchStop();
20        System.out.println("2222");
21        int[] tool = new int[1];
22        int[] user = new int[1];
23        robot.GetLaserSeamPos(0, offdese, seamjointPos, seamdescPose, tool, user, startexaxisPos);
24        System.out.println(seamjointPos.J1 + ", " + seamjointPos.J2 + ", " +
25                seamjointPos.J3 + ", " + seamjointPos.J4 + ", " +
26                seamjointPos.J5 + ", " + seamjointPos.J6 + ", " +
27                seamdescPose.tran.x + ", " + seamdescPose.tran.y + ", " +
28                seamdescPose.tran.z + ", " + seamdescPose.rpy.rx + ", " +
29                seamdescPose.rpy.ry + ", " + seamdescPose.rpy.rz);
30        // Jeśli poszukiwanie pozycji zakończone sukcesem
31        if (ret == 0) {
32            // Synchroniczny ruch robota i osi rozszerzenia do punktu poszukiwanego
33            robot.ExtAxisSyncMoveJ(seamjointPos, seamdescPose, 1, 0, 100, 100, 100, seamexaxisPos, -1, 0, offdese);
34
35            // Rozpoczęcie śledzenia laserowego wzdłuż punktu poszukiwanego i synchronicznego ruchu z osią rozszerzenia
36            System.out.println("3333");
37            robot.LaserTrackingTrackOnOff(1, 2);
38            JointPos endjointPos = new JointPos(70.580, -90.918, 126.593, -125.154, -92.162, -105.403);
39            DescPose enddescPose = new DescPose(-53.375, -419.020, 0.920, 178.054, 1.076, -94.026);
40            robot.ExtAxisSyncMoveL(endjointPos, enddescPose, 1, 0, 20, 100, 100, -1, endexaxisPos, 0, offdese);
41            ;
42            // Zatrzymanie śledzenia
43            robot.LaserTrackingTrackOnOff(0, 2);
44            System.out.println("44444");
45        }
46        System.out.println("Aktualna liczba uruchomień: "+i);
47    }
48    robot.CloseRPC();
49}

11.93. Interfejs SDK włączania/wyłączania funkcji przezroczystej transmisji końcowej

1/**
2* @brief Włączenie ogólnej funkcji przezroczystej transmisji końcowej
3* @param włączenie, 0-wyłącz, 1-włącz
4* @return Kod błędu
5*/
6public int SetAxleGenComEnable(int mode)

11.94. Interfejs SDK wysyłania i odbierania danych aperiodycznych funkcji przezroczystej transmisji końcowej

1/**
2* @brief Wysłanie danych aperiodycznych przez końcówkę i oczekiwanie na odpowiedź
3* @param lenSnd Długość wysyłania
4* @param sndBuff Dane wysyłane
5* @param lenRcv Wybór długości odbioru
6* @param [out] rcvData Dane odpowiedzi
7* @return Kod błędu
8*/
9public int SndRcvAxleGenComCmdData(int lenSnd, int[] sndBuff, int lenRcv, int[] rcvData)

11.95. Przykład kodu komunikacji danych aperiodycznych głowicy moxibuscyjnej Beiyikang w oparciu o funkcję przezroczystej transmisji końcowej

 1public static void testAxleGenCom(Robot robot) {
 2int[] led_on = {0xAB, 0xBA, 0x12, 0x01, 0x01, 0x79};
 3int[] led_off = {0xAB, 0xBA, 0x12, 0x01, 0x00, 0x78};
 4int[] version = {0xAB, 0xBA, 0x11, 0x00, 0x76};
 5int[] state = {0xAB, 0xBA, 0x1B, 0x01, 0xAA, 0x2B};
 6
 7int[] rcvdata = new int[16];
 8int ret = 0;
 9int cnt = 1;
10
11JointPos p1Joint = new JointPos(88.708, -86.178, 140.989, -141.825, -89.162, -49.879);
12DescPose p1Desc = new DescPose(188.007, -377.850, 260.207, 178.715, 2.823, -131.466);
13
14JointPos p2Joint = new JointPos(112.131, -75.554, 126.989, -139.027, -88.044, -26.477);
15DescPose p2Desc = new DescPose(368.003, -377.848, 260.211, 178.715, 2.823, -131.465);
16
17ExaxisPos exaxisPos = new ExaxisPos(0, 0, 0, 0);
18DescPose offdese = new DescPose(0, 0, 0, 0, 0, 0);
19
20// Włączenie funkcji przezroczystej transmisji końcowej
21robot.SetAxleGenComEnable(1);
22robot.SetAxleLuaEnable(1);
23
24while (cnt <= 10000) {
25    // Odczyt numeru wersji
26    ret = robot.SndRcvAxleGenComCmdData(5, version, 10, rcvdata);
27    if (ret == 0) {
28        System.out.printf(" hard version : %d,hard code:%d, soft version:%d %d, soft code:%d \n",
29                rcvdata[4], rcvdata[5], rcvdata[6], rcvdata[7], rcvdata[8]);
30    } else {
31        System.out.println("SndRcvAxleGenComCmdData version fail: " + ret);
32        break;
33    }
34    robot.Sleep(1000);
35
36    // Odczyt stanu obecności głowicy moxibuscyjnej
37    ret = robot.SndRcvAxleGenComCmdData(6, state, 6, rcvdata);
38    if (ret == 0) {
39        System.out.printf(" state : %d \n", rcvdata[4]);
40    }
41    robot.Sleep(1000);
42
43    // Włączenie lasera głowicy moxibuscyjnej
44    ret = robot.SndRcvAxleGenComCmdData(6, led_on, 6, rcvdata);
45    if (ret == 0) {
46        System.out.printf("led on rcv data is: %d, %d, %d, %d, %d, %d\n",
47                rcvdata[0], rcvdata[1], rcvdata[2], rcvdata[3], rcvdata[4], rcvdata[5]);
48    }
49    robot.MoveJ(p1Joint, p1Desc, 0, 0, 100.0, 100.0, 100.0, exaxisPos, -1.0, 0, offdese);
50    robot.Sleep(4000);
51
52    // Wyłączenie lasera głowicy moxibuscyjnej
53    ret = robot.SndRcvAxleGenComCmdData(6, led_off, 6, rcvdata);
54    if (ret == 0) {
55        System.out.printf("led off rcv data is: %d, %d, %d, %d, %d, %d \n",
56                rcvdata[0], rcvdata[1], rcvdata[2], rcvdata[3], rcvdata[4], rcvdata[5]);
57    }
58    robot.MoveJ(p2Joint, p2Desc, 0, 0, 100.0, 100.0, 100.0, exaxisPos, -1.0, 0, offdese);
59    robot.Sleep(1000);
60
61    System.out.println("***********************complete No. " + cnt + " SDK test*****************************");
62    cnt++;
63}
64}

11.96. Pobranie pliku LUA protokołu otwartego

1/**
2* @brief Pobranie pliku LUA protokołu otwartego
3* @param fileName Nazwa pliku protokołu otwartego „CtrlDev_XXX.lua”
4* @param savePath Ścieżka zapisu pliku protokołu otwartego
5* @return Kod błędu
6*/
7public int OpenLuaDownload(string fileName, string savePath)

11.97. Usunięcie pliku LUA protokołu otwartego

1/**
2* @brief Usunięcie pliku LUA protokołu otwartego
3* @param [in] fileName Nazwa pliku lua protokołu otwartego do usunięcia „CtrlDev_XXX.lua”
4* @return Kod błędu
5*/
6public int OpenLuaDelete(string fileName)

11.98. Usunięcie wszystkich plików LUA protokołu otwartego

1/**
2* @brief Usunięcie wszystkich plików LUA protokołu otwartego
3* @return Kod błędu
4*/
5public int AllOpenLuaDelete()

11.99. Przykład kodu przesyłania, pobierania i usuwania protokołu otwartego urządzeń peryferyjnych kontrolera

 1public static int TestCtrlOpenLuaOperate(Robot robot) {
 2    int rtn;
 3    rtn = robot.OpenLuaUpload("D://zUP/openlua/CtrlDev_WELDING_A.lua");
 4    System.out.println("OpenLuaUpload rtn is " + rtn);
 5    rtn = robot.OpenLuaUpload("D://zUP/openlua/CtrlDev_SWDPOLISH.lua");
 6    System.out.println("OpenLuaUpload rtn is " + rtn);
 7    rtn = robot.OpenLuaDownload("CtrlDev_WELDING_A.lua", "D://zDOWN/");
 8    System.out.println("OpenLuaDownload rtn is " + rtn);
 9    rtn = robot.OpenLuaDownload("CtrlDev_SWDPOLISH.lua", "D://zDOWN/");
10    System.out.println("OpenLuaDownload rtn is " + rtn);
11
12    rtn = robot.SetCtrlOpenLUAName(0, "CtrlDev_WELDING_A.lua");
13    System.out.println("SetCtrlOpenLUAName rtn is " + rtn);
14    rtn = robot.SetCtrlOpenLUAName(1, "CtrlDev_SWDPOLISH.lua");
15    System.out.println("SetCtrlOpenLUAName rtn is " + rtn);
16
17    String[] names = new String[4];
18    rtn = robot.GetCtrlOpenLUAName(names);
19    System.out.println("GetCtrlOpenLUAName rtn is " + rtn + ", names: " +
20            names[0] + ", " + names[1] + ", " + names[2] + ", " + names[3]);
21
22    rtn = robot.LoadCtrlOpenLUA(1);
23    System.out.println("LoadCtrlOpenLUA rtn is " + rtn);
24    robot.Sleep(2000);
25    rtn = robot.UnloadCtrlOpenLUA(1);
26    System.out.println("UnloadCtrlOpenLUA rtn is " + rtn);
27
28    rtn = robot.OpenLuaDelete("CtrlDev_WELDING_A.lua");
29    System.out.println("OpenLuaDelete rtn is " + rtn);
30    rtn = robot.AllOpenLuaDelete();
31    System.out.println("AllOpenLuaDelete rtn is " + rtn);
32
33    robot.Sleep(1000);
34    return 0;
35}