14. Spawanie robotem

14.1. Ustawianie parametrów krzywej procesu spawania

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

 1/**
 2 * @brief Ustawia parametry krzywej procesu spawania
 3 * @param [in] id Numer procesu spawania (1-99)
 4 * @param [in] startCurrent Prąd rozpoczęcia łuku (A)
 5 * @param [in] startVoltage Napięcie rozpoczęcia łuku (V)
 6 * @param [in] startTime Czas rozpoczęcia łuku (ms)
 7 * @param [in] weldCurrent Prąd spawania (A)
 8 * @param [in] weldVoltage Napięcie spawania (V)
 9 * @param [in] endCurrent Prąd zakończenia łuku (A)
10 * @param [in] endVoltage Napięcie zakończenia łuku (V)
11 * @param [in] endTime Czas zakończenia łuku (ms)
12 * @return Kod błędu
13 */
14errno_t WeldingSetProcessParam(int id, double startCurrent, double startVoltage, double startTime, double weldCurrent, double weldVoltage, double endCurrent, double endVoltage, double endTime);

14.2. Pobieranie parametrów krzywej procesu spawania

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

 1/**
 2 * @brief Pobiera parametry krzywej procesu spawania
 3 * @param [in] id Numer procesu spawania (1-99)
 4 * @param [out] startCurrent Prąd rozpoczęcia łuku (A)
 5 * @param [out] startVoltage Napięcie rozpoczęcia łuku (V)
 6 * @param [out] startTime Czas rozpoczęcia łuku (ms)
 7 * @param [out] weldCurrent Prąd spawania (A)
 8 * @param [out] weldVoltage Napięcie spawania (V)
 9 * @param [out] endCurrent Prąd zakończenia łuku (A)
10 * @param [out] endVoltage Napięcie zakończenia łuku (V)
11 * @param [out] endTime Czas zakończenia łuku (ms)
12 * @return Kod błędu
13 */
14errno_t WeldingGetProcessParam(int id, double& startCurrent, double& startVoltage, double& startTime, double& weldCurrent, double& weldVoltage, double& endCurrent, double& endVoltage, double& endTime);

14.3. Ustawianie zależności prądu spawania od wyjścia analogowego

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

1/**
2* @brief Ustawia zależność prądu spawania od wyjścia analogowego
3* @param [in] currentMin Wartość prądu w lewym punkcie zależności liniowej prąd spawania - wyjście analogowe (A)
4* @param [in] currentMax Wartość prądu w prawym punkcie zależności liniowej prąd spawania - wyjście analogowe (A)
5* @param [in] outputVoltageMin Wartość napięcia wyjściowego analogowego w lewym punkcie zależności prąd spawania - wyjście analogowe (V)
6* @param [in] outputVoltageMax Wartość napięcia wyjściowego analogowego w prawym punkcie zależności prąd spawania - wyjście analogowe (V)
7* @return Kod błędu
8*/
9errno_t WeldingSetCurrentRelation(double currentMin, double currentMax, double outputVoltageMin, double outputVoltageMax);

14.4. Ustawianie zależności napięcia spawania od wyjścia analogowego

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

1/**
2* @brief Ustawia zależność napięcia spawania od wyjścia analogowego
3* @param [in] weldVoltageMin Wartość napięcia spawania w lewym punkcie zależności napięcie spawania - wyjście analogowe (A)
4* @param [in] weldVoltageMax Wartość napięcia spawania w prawym punkcie zależności napięcie spawania - wyjście analogowe (A)
5* @param [in] outputVoltageMin Wartość napięcia wyjściowego analogowego w lewym punkcie zależności napięcie spawania - wyjście analogowe (V)
6* @param [in] outputVoltageMax Wartość napięcia wyjściowego analogowego w prawym punkcie zależności napięcie spawania - wyjście analogowe (V)
7* @return Kod błędu
8*/
9errno_t WeldingSetVoltageRelation(double weldVoltageMin, double weldVoltageMax, double outputVoltageMin, double outputVoltageMax);

14.5. Pobieranie zależności prądu spawania od wyjścia analogowego

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

1/**
2* @brief Pobiera zależność prądu spawania od wyjścia analogowego
3* @param [out] currentMin Wartość prądu w lewym punkcie zależności liniowej prąd spawania - wyjście analogowe (A)
4* @param [out] currentMax Wartość prądu w prawym punkcie zależności liniowej prąd spawania - wyjście analogowe (A)
5* @param [out] outputVoltageMin Wartość napięcia wyjściowego analogowego w lewym punkcie zależności prąd spawania - wyjście analogowe (V)
6* @param [out] outputVoltageMax Wartość napięcia wyjściowego analogowego w prawym punkcie zależności prąd spawania - wyjście analogowe (V)
7* @return Kod błędu
8*/
9errno_t WeldingGetCurrentRelation(double *currentMin, double *currentMax, double *outputVoltageMin, double *outputVoltageMax);

14.6. Pobieranie zależności napięcia spawania od wyjścia analogowego

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

1/**
2* @brief Pobiera zależność napięcia spawania od wyjścia analogowego
3* @param [out] weldVoltageMin Wartość napięcia spawania w lewym punkcie zależności napięcie spawania - wyjście analogowe (A)
4* @param [out] weldVoltageMax Wartość napięcia spawania w prawym punkcie zależności napięcie spawania - wyjście analogowe (A)
5* @param [out] outputVoltageMin Wartość napięcia wyjściowego analogowego w lewym punkcie zależności napięcie spawania - wyjście analogowe (V)
6* @param [out] outputVoltageMax Wartość napięcia wyjściowego analogowego w prawym punkcie zależności napięcie spawania - wyjście analogowe (V)
7* @return Kod błędu
8*/
9errno_t WeldingGetVoltageRelation(double *weldVoltageMin, double *weldVoltageMax, double *outputVoltageMin, double *outputVoltageMax);

14.7. Ustawianie prądu spawania

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

1/**
2* @brief Ustawia prąd spawania
3* @param [in] ioType Typ IO sterowania 0-IO szafy sterowniczej; 1-rozszerzone IO
4* @param [in] current Wartość prądu spawania (A)
5* @param [in] AOIndex Port wyjścia analogowego szafy sterowniczej dla prądu spawania (0-1)
6* @param [in] blend Czy wygładzać 0-niewygładzone; 1-wygładzone
7* @return Kod błędu
8*/
9errno_t WeldingSetCurrent(int ioType, double current, int AOIndex, int blend);

14.8. Ustawianie napięcia spawania

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

1/**
2* @brief Ustawia napięcie spawania
3* @param [in] ioType Typ IO sterowania 0-IO szafy sterowniczej; 1-rozszerzone IO
4* @param [in] voltage Wartość napięcia spawania (A)
5* @param [in] AOIndex Port wyjścia analogowego szafy sterowniczej dla napięcia spawania (0-1)
6* @param [in] blend Czy wygładzać 0-niewygładzone; 1-wygładzone
7* @return Kod błędu
8*/
9errno_t WeldingSetVoltage(int ioType, double voltage, int AOIndex, int blend);

14.9. Ustawianie parametrów wahadła

 1/**
 2 * @brief Ustawia parametry wahadła
 3 * @param [in] weaveNum Numer konfiguracji parametrów spawania wahadłowego
 4 * @param [in] weaveType Typ wahadła 0-płaskie wahadło trójkątne; 1-pionowe wahadło trójkątne w kształcie L; 2-okrężne wahadło zgodne z ruchem wskazówek zegara; 3-okrężne wahadło przeciwne do ruchu wskazówek zegara; 4-płaskie wahadło sinusoidalne; 5-pionowe wahadło sinusoidalne w kształcie L; 6-pionowe wahadło trójkątne; 7-pionowe wahadło sinusoidalne
 5 * @param [in] weaveFrequency Częstotliwość wahadła (Hz)
 6 * @param [in] weaveIncStayTime Tryb oczekiwania 0-cykl nie zawiera czasu oczekiwania; 1-cykl zawiera czas oczekiwania
 7 * @param [in] weaveRange Amplituda wahadła (mm)
 8 * @param [in] weaveLeftRange Długość lewej cięciwy dla pionowego wahadła trójkątnego (mm)
 9 * @param [in] weaveRightRange Długość prawej cięciwy dla pionowego wahadła trójkątnego (mm)
10 * @param [in] additionalStayTime Czas oczekiwania w wierzchołku trójkąta dla pionowego wahadła trójkątnego (mm)
11 * @param [in] weaveLeftStayTime Lewy czas postoju wahadła (ms)
12 * @param [in] weaveRightStayTime Prawy czas postoju wahadła (ms)
13 * @param [in] weaveCircleRadio Okrężne wahadło - współczynnik powrotu (0-100%)
14 * @param [in] weaveStationary Oczekiwanie na pozycji wahadła, 0-pozycja kontynuuje ruch w czasie oczekiwania; 1-pozycja nieruchoma w czasie oczekiwania
15 * @param [in] weaveYawAngle Azymut kierunku wahadła (obrót wokół osi Z wahadła), jednostka °
16 * @param [in] weaveRotAngle Kąt przechyłu bocznego kierunku wahadła (odchylenie wokół osi X wahadła), jednostka °
17 * @return Kod błędu
18 */
19  errno_t WeaveSetPara(int weaveNum, int weaveType, double weaveFrequency, int weaveIncStayTime, double weaveRange, double weaveLeftRange, double weaveRightRange, int additionalStayTime, int weaveLeftStayTime, int weaveRightStayTime, int weaveCircleRadio, int weaveStationary, double weaveYawAngle, double weaveRotAngle = 0);

14.10. Przykład kodu ustawiania parametrów spawania

 1int TestSetWeldParam(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  robot.WeldingSetProcessParam(1, 177, 27, 1000, 178, 28, 176, 26, 1000);
14  robot.WeldingSetProcessParam(2, 188, 28, 555, 199, 29, 133, 23, 333);
15  double startCurrent = 0;
16  double startVoltage = 0;
17  double startTime = 0;
18  double weldCurrent = 0;
19  double weldVoltage = 0;
20  double endCurrent = 0;
21  double endVoltage = 0;
22  double endTime = 0;
23  robot.WeldingGetProcessParam(1, startCurrent, startVoltage, startTime, weldCurrent, weldVoltage, endCurrent, endVoltage, endTime);
24  cout << "the Num 1 process param is " << startCurrent << " " << startVoltage << " " << startTime << " " << weldCurrent << " " << weldVoltage << " " << endCurrent << " " << endVoltage << " " << endTime << endl;
25  robot.WeldingGetProcessParam(2, startCurrent, startVoltage, startTime, weldCurrent, weldVoltage, endCurrent, endVoltage, endTime);
26  cout << "the Num 2 process param is " << startCurrent << " " << startVoltage << " " << startTime << " " << weldCurrent << " " << weldVoltage << " " << endCurrent << " " << endVoltage << " " << endTime << endl;
27  rtn = robot.WeldingSetCurrentRelation(0, 400, 0, 10, 0);
28  cout << "WeldingSetCurrentRelation rtn is: " << rtn << endl;
29  rtn = robot.WeldingSetVoltageRelation(0, 40, 0, 10, 1);
30  cout << "WeldingSetVoltageRelation rtn is: " << rtn << endl;
31  double current_min = 0;
32  double current_max = 0;
33  double vol_min = 0;
34  double vol_max = 0;
35  double output_vmin = 0;
36  double output_vmax = 0;
37  int curIndex = 0;
38  int volIndex = 0;
39  rtn = robot.WeldingGetCurrentRelation(&current_min, &current_max, &output_vmin, &output_vmax, &curIndex);
40  cout << "WeldingGetCurrentRelation rtn is: " << rtn << endl;
41  cout << "current min " << current_min << " current max " << current_max << " output vol min " << output_vmin << " output vol max " << output_vmax << endl;
42  rtn = robot.WeldingGetVoltageRelation(&vol_min, &vol_max, &output_vmin, &output_vmax, &volIndex);
43  cout << "WeldingGetVoltageRelation rtn is: " << rtn << endl;
44  cout << "vol min " << vol_min << " vol max " << vol_max << " output vol min " << output_vmin << " output vol max " << output_vmax << endl;
45  rtn = robot.WeldingSetCurrent(1, 100, 0, 0);
46  cout << "WeldingSetCurrent rtn is: " << rtn << endl;
47  this_thread::sleep_for(chrono::seconds(3));
48  rtn = robot.WeldingSetVoltage(1, 10, 0, 0);
49  cout << "WeldingSetVoltage rtn is: " << rtn << endl;
50  rtn = robot.WeaveSetPara(0, 0, 2.000000, 0, 10.000000, 0.000000, 0.000000, 0, 0, 0, 0, 0, 60.000000);
51  cout << "rtn is: " << rtn << endl;
52  robot.WeaveOnlineSetPara(0, 0, 1, 0, 20, 0, 0, 0, 0);
53  rtn = robot.WeldingSetCheckArcInterruptionParam(1, 200);
54  printf("WeldingSetCheckArcInterruptionParam  %d\n", rtn);
55  rtn = robot.WeldingSetReWeldAfterBreakOffParam(1, 5.7, 98.2, 0);
56  printf("WeldingSetReWeldAfterBreakOffParam  %d\n", rtn);
57  int enable = 0;
58  double length = 0;
59  double velocity = 0;
60  int moveType = 0;
61  int checkEnable = 0;
62  int arcInterruptTimeLength = 0;
63  rtn = robot.WeldingGetCheckArcInterruptionParam(&checkEnable, &arcInterruptTimeLength);
64  printf("WeldingGetCheckArcInterruptionParam checkEnable %d  arcInterruptTimeLength %d\n", checkEnable, arcInterruptTimeLength);
65  rtn = robot.WeldingGetReWeldAfterBreakOffParam(&enable, &length, &velocity, &moveType);
66  printf("WeldingGetReWeldAfterBreakOffParam enable = %d, length = %lf, velocity = %lf, moveType = %d\n", enable, length, velocity, moveType);
67  robot.SetWeldMachineCtrlModeExtDoNum(17);
68  for (int i = 0; i < 5; i++)
69  {
70    robot.SetWeldMachineCtrlMode(0);
71    robot.Sleep(1000);
72    robot.SetWeldMachineCtrlMode(1);
73    robot.Sleep(1000);
74  }
75  robot.CloseRPC();
76  return 0;
77}

14.11. Natychmiastowe ustawianie parametrów wahadła

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

 1/**
 2* @brief Natychmiastowe ustawianie parametrów wahadła
 3* @param [in] weaveNum Numer konfiguracji parametrów spawania wahadłowego
 4* @param [in] weaveType Typ wahadła 0-płaskie wahadło trójkątne; 1-pionowe wahadło trójkątne w kształcie L; 2-okrężne wahadło zgodne z ruchem wskazówek zegara; 3-okrężne wahadło przeciwne do ruchu wskazówek zegara; 4-płaskie wahadło sinusoidalne; 5-pionowe wahadło sinusoidalne w kształcie L; 6-pionowe wahadło trójkątne; 7-pionowe wahadło sinusoidalne
 5* @param [in] weaveFrequency Częstotliwość wahadła (Hz)
 6* @param [in] weaveIncStayTime Tryb oczekiwania 0-cykl nie zawiera czasu oczekiwania; 1-cykl zawiera czas oczekiwania
 7* @param [in] weaveRange Amplituda wahadła (mm)
 8* @param [in] weaveLeftStayTime Lewy czas postoju wahadła (ms)
 9* @param [in] weaveRightStayTime Prawy czas postoju wahadła (ms)
10* @param [in] weaveCircleRadio Okrężne wahadło - współczynnik powrotu (0-100%)
11* @param [in] weaveStationary Oczekiwanie na pozycji wahadła, 0-pozycja kontynuuje ruch w czasie oczekiwania; 1-pozycja nieruchoma w czasie oczekiwania
12* @return Kod błędu
13*/
14errno_t WeaveOnlineSetPara(int weaveNum, int weaveType, double weaveFrequency, int weaveIncStayTime, double weaveRange, int weaveLeftStayTime, int weaveRightStayTime, int weaveCircleRadio, int weaveStationary);

14.12. Ustawianie parametrów wykrywania nieoczekiwanego przerwania łuku spawania robota

Nowe w wersji C++SDK-v2.1.8-3.7.8.

1/**
2 * @brief Ustawia parametry wykrywania nieoczekiwanego przerwania łuku spawania robota
3 * @param [in] checkEnable Czy włączyć wykrywanie; 0-niewłączone; 1-włączone
4 * @param [in] arcInterruptTimeLength Czas potwierdzenia przerwania łuku (ms)
5 * @return Kod błędu
6 */
7errno_t WeldingSetCheckArcInterruptionParam(int checkEnable, int arcInterruptTimeLength);

14.13. Pobieranie parametrów wykrywania nieoczekiwanego przerwania łuku spawania robota

Nowe w wersji C++SDK-v2.1.8-3.7.8.

1/**
2 * @brief Pobiera parametry wykrywania nieoczekiwanego przerwania łuku spawania robota
3 * @param [out] checkEnable Czy włączyć wykrywanie; 0-niewłączone; 1-włączone
4 * @param [out] arcInterruptTimeLength Czas potwierdzenia przerwania łuku (ms)
5 * @return Kod błędu
6 */
7errno_t WeldingGetCheckArcInterruptionParam(int* checkEnable, int* arcInterruptTimeLength);

14.14. Ustawianie parametrów wznowienia po przerwaniu spawania robota

Nowe w wersji C++SDK-v2.1.8-3.7.8.

1/**
2 * @brief Ustawia parametry wznowienia po przerwaniu spawania robota
3 * @param [in] enable Czy włączyć wznowienie po przerwaniu spawania
4 * @param [in] length Odległość nakładania spoiny (mm)
5 * @param [in] velocity Procent prędkości powrotu robota do punktu ponownego rozpoczęcia łuku (0-100)
6 * @param [in] moveType Sposób ruchu robota do punktu ponownego rozpoczęcia łuku; 0-LIN; 1-PTP
7 * @return Kod błędu
8 */
9errno_t WeldingSetReWeldAfterBreakOffParam(int enable, double length, double velocity, int moveType);

14.15. Pobieranie parametrów wznowienia po przerwaniu spawania robota

Nowe w wersji C++SDK-v2.1.8-3.7.8.

1/**
2 * @brief Pobiera parametry wznowienia po przerwaniu spawania robota
3 * @param [out] enable Czy włączyć wznowienie po przerwaniu spawania
4 * @param [out] length Odległość nakładania spoiny (mm)
5 * @param [out] velocity Procent prędkości powrotu robota do punktu ponownego rozpoczęcia łuku (0-100)
6 * @param [out] moveType Sposób ruchu robota do punktu ponownego rozpoczęcia łuku; 0-LIN; 1-PTP
7 * @return Kod błędu
8 */
9errno_t WeldingGetReWeldAfterBreakOffParam(int* enable, double* length, double* velocity, int* moveType);

14.16. Ustawianie rozszerzonego portu DO trybu sterowania spawarką

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

1/**
2* @brief Ustawia rozszerzony port DO trybu sterowania spawarką
3* @param DONum Port DO trybu sterowania spawarką (0-127)
4* @return Kod błędu
5*/
6errno_t SetWeldMachineCtrlModeExtDoNum(int DONum);

14.17. Ustawianie trybu sterowania spawarką

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

1/**
2* @brief Ustawia tryb sterowania spawarką
3* @param [in] mode Tryb sterowania spawarką; 0-tryb stałego prądu/napięcia; 1-tryb impulsowy; 2-tryb JOB; 3-tryb zdalnego sterowania; 4-tryb oddzielny; 5-tryb CC/CV; 6-TIG; 7-CMT
4* @param [in] ioType Typ sterowania; 0-IO szafy sterowniczej; 1-Protokół komunikacji cyfrowej (UDP); 2-Protokół komunikacji cyfrowej (ModbusTCP)
5* @return Kod błędu
6*/
7errno_t SetWeldMachineCtrlMode(int mode, int ioType = 1);

14.18. Rozpoczęcie spawania

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

1/**
2* @brief Rozpoczęcie spawania
3* @param [in] ioType typ IO 0-IO sterownika; 1-rozszerzone IO
4* @param [in] arcNum Numer pliku konfiguracyjnego spawarki
5* @param [in] timeout Czas timeoutu rozpoczęcia łuku
6* @return Kod błędu
7*/
8errno_t ARCStart(int ioType, int arcNum, int timeout);

14.19. Zakończenie spawania

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

1/**
2* @brief Zakończenie spawania
3* @param [in] ioType typ IO 0-IO sterownika; 1-rozszerzone IO
4* @param [in] arcNum Numer pliku konfiguracyjnego spawarki
5* @param [in] timeout Czas timeoutu zgaśnięcia łuku
6* @return Kod błędu
7*/
8errno_t ARCEnd(int ioType, int arcNum, int timeout);

14.20. Rozpoczęcie wahadła

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

1/**
2* @brief Rozpoczęcie wahadła
3* @param [in] weaveNum Numer konfiguracji parametrów spawania wahadłowego
4* @return Kod błędu
5*/
6errno_t WeaveStart(int weaveNum);

14.21. Zakończenie wahadła

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

1/**
2* @brief Zakończenie wahadła
3* @param [in] weaveNum Numer konfiguracji parametrów spawania wahadłowego
4* @return Kod błędu
5*/
6errno_t WeaveEnd(int weaveNum);

14.22. Podawanie drutu w przód

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

1/**
2* @brief Podawanie drutu w przód
3* @param [in] ioType typ IO 0-IO sterownika; 1-rozszerzone IO
4* @param [in] wireFeed Sterowanie podawaniem drutu 0-zatrzymaj podawanie drutu; 1-podawaj drut
5* @return Kod błędu
6*/
7errno_t SetForwardWireFeed(int ioType, int wireFeed);

14.23. Podawanie drutu w tył

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

1/**
2* @brief Podawanie drutu w tył
3* @param [in] ioType typ IO 0-IO sterownika; 1-rozszerzone IO
4* @param [in] wireFeed Sterowanie podawaniem drutu 0-zatrzymaj podawanie drutu; 1-podawaj drut
5* @return Kod błędu
6*/
7errno_t SetReverseWireFeed(int ioType, int wireFeed);

14.24. Podawanie gazu

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

1/**
2* @brief Podawanie gazu
3* @param [in] ioType typ IO 0-IO sterownika; 1-rozszerzone IO
4* @param [in] airControl Sterowanie podawaniem gazu 0-zatrzymaj podawanie gazu; 1-podawaj gaz
5* @return Kod błędu
6*/
7errno_t SetAspirated(int ioType, int airControl);

14.25. Ustawianie wznowienia spawania po przerwaniu spawania robota

Nowe w wersji C++SDK-v2.1.8-3.7.8.

1/**
2 * @brief Ustawia wznowienie spawania po przerwaniu spawania robota
3 * @return Kod błędu
4 */
5errno_t WeldingStartReWeldAfterBreakOff();

14.26. Ustawianie wyjścia z spawania po przerwaniu spawania robota

Nowe w wersji C++SDK-v2.1.8-3.7.8.

1/**
2 * @brief Ustawia wyjście z spawania po przerwaniu spawania robota
3 * @return Kod błędu
4 */
5errno_t WeldingAbortWeldAfterBreakOff();

14.27. Przykład kodu sterowania spawaniem robota

 1int TestWelding(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  robot.SetForwardWireFeed(0, 1);
14  robot.Sleep(1000);
15  robot.SetForwardWireFeed(0, 0);
16  robot.SetReverseWireFeed(0, 1);
17  robot.Sleep(1000);
18  robot.SetReverseWireFeed(0, 0);
19  robot.SetAspirated(0, 1);
20  robot.Sleep(1000);
21  robot.SetAspirated(0, 0);
22  robot.WeldingSetCurrent(1, 230, 0, 0);
23  robot.WeldingSetVoltage(1, 24, 0, 1);
24  DescPose p1Desc(228.879, -503.594, 453.984, -175.580, 8.293, 171.267);
25  JointPos p1Joint(102.700, -85.333, 90.518, -102.365, -83.932, 22.134);
26  DescPose p2Desc(-333.302, -435.580, 449.866, -174.997, 2.017, 109.815);
27  JointPos p2Joint(41.862, -85.333, 90.526, -100.587, -90.014, 22.135);
28  ExaxisPos exaxisPos(0, 0, 0, 0);
29  DescPose offdese(0, 0, 0, 0, 0, 0);
30  robot.MoveJ(&p1Joint, &p1Desc, 13, 0, 20, 100, 100, &exaxisPos, -1, 0, &offdese);
31  robot.ARCStart(1, 0, 10000);
32  robot.WeaveStart(0);
33  robot.MoveL(&p2Joint, &p2Desc, 13, 0, 20, 100, 100, -1, 0, &exaxisPos, 0, 0, &offdese);
34  robot.ARCEnd(1, 0, 10000);
35  robot.WeaveEnd(0);
36  robot.WeldingStartReWeldAfterBreakOff();
37  robot.WeldingAbortWeldAfterBreakOff();
38  robot.CloseRPC();
39  return 0;
40}

14.28. Rozpoczęcie spawania odcinkowego

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

 1/**
 2* @brief Rozpoczęcie spawania odcinkowego
 3* @param [in] startDesePos Pozycja kartezjańska punktu początkowego
 4* @param [in] endDesePos Pozycja i orientacja kartezjańska punktu końcowego
 5* @param [in] startJPos Pozycja stawów punktu początkowego
 6* @param [in] endJPos Pozycja stawów punktu końcowego
 7* @param [in] weldLength Długość odcinka spawanego (mm)
 8* @param [in] noWeldLength Długość odcinka niespawanego (mm)
 9* @param [in] weldIOType Typ IO spawania (0-IO szafy sterowniczej; 1-rozszerzone IO)
10* @param [in] arcNum Numer pliku konfiguracyjnego spawarki
11* @param [in] weldTimeout Czas timeoutu rozpoczęcia/zakończenia łuku
12* @param [in] isWeave Czy wahadło
13* @param [in] weaveNum Numer konfiguracji parametrów spawania wahadłowego
14* @param [in] tool Numer układu współrzędnych narzędzia, zakres [0~14]
15* @param [in] user Numer układu współrzędnych obiektu, zakres [0~14]
16* @param [in] vel Procent prędkości, zakres [0~100]
17* @param [in] acc Procent przyspieszenia, zakres [0~100], tymczasowo niedostępne
18* @param [in] ovl Współczynnik skalowania prędkości, zakres [0~100]
19* @param [in] blendR [-1.0]-ruch do pozycji (blokujący), [0~1000.0]-promień wygładzania (nieblokujący), jednostka mm
20* @param [in] epos Pozycja osi rozszerzonej, jednostka mm
21* @param [in] search 0-brak lokalizacji drutu spawalniczego, 1-lokalizacja drutu spawalniczego
22* @param [in] offset_flag 0-brak przesunięcia, 1-przesunięcie w układzie bazowym/układzie obiektu, 2-przesunięcie w układzie narzędzia
23* @param [in] offset_pos Wartość przesunięcia pozy i orientacji
24* @return Kod błędu
25*/
26errno_t SegmentWeldStart(DescPose *startDesePos, DescPose *endDesePos, JointPos *startJPos, JointPos *endJPos, double weldLength, double noWeldLength, int weldIOType, int arcNum, int weldTimeout, bool isWeave, int weaveNum, int tool, int user, float vel, float acc, float ovl, float blendR, ExaxisPos *epos, uint8_t search, uint8_t offset_flag, DescPose *offset_pos);

14.29. Przykład kodu spawania odcinkowego robota

Zmienione w wersji C++SDK-v2.1.2.0.

 1int TestSegWeld(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  robot.WeldingSetCurrent(1, 230, 0, 0);
14  robot.WeldingSetVoltage(1, 24, 0, 1);
15  DescPose p1Desc(228.879, -503.594, 453.984, -175.580, 8.293, 171.267);
16  JointPos p1Joint(102.700, -85.333, 90.518, -102.365, -83.932, 22.134);
17  DescPose p2Desc(-333.302, -435.580, 449.866, -174.997, 2.017, 109.815);
18  JointPos p2Joint(41.862, -85.333, 90.526, -100.587, -90.014, 22.135);
19  ExaxisPos exaxisPos(0, 0, 0, 0);
20  DescPose offdese(0, 0, 0, 0, 0, 0);
21  rtn = robot.SegmentWeldStart(&p1Desc, &p2Desc, &p1Joint, &p2Joint, 20, 20, 0, 0, 5000, 0, 0, 0, 0, 100, 100, 100, -1, &exaxisPos, 0, 0, &offdese);
22  printf("SegmentWeldStart rtn is %d\n", rtn);
23  robot.CloseRPC();
24  return 0;
25}

14.30. Rozpoczęcie symulacji wahadła

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

1/**
2 * @brief Rozpoczęcie symulacji wahadła
3 * @param [in] weaveNum Numer parametrów wahadła
4 * @return Kod błędu
5 */
6errno_t WeaveStartSim(int weaveNum);

14.31. Zakończenie symulacji wahadła

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

1/**
2 * @brief Zakończenie symulacji wahadła
3 * @param [in] weaveNum Numer parametrów wahadła
4 * @return Kod błędu
5 */
6errno_t WeaveEndSim(int weaveNum);

14.32. Rozpoczęcie ostrzegania o wykryciu trajektorii (bez ruchu)

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

1/**
2 * @brief Rozpoczęcie ostrzegania o wykryciu trajektorii (bez ruchu)
3 * @param [in] weaveNum  Numer parametrów wahadła
4 * @return Kod błędu
5 */
6errno_t WeaveInspectStart(int weaveNum);

14.33. Zakończenie ostrzegania o wykryciu trajektorii (bez ruchu)

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

1/**
2 * @brief Zakończenie ostrzegania o wykryciu trajektorii (bez ruchu)
3 * @param [in] weaveNum  Numer parametrów wahadła
4 * @return Kod błędu
5 */
6errno_t WeaveInspectEnd(int weaveNum);

14.34. Rozpoczęcie gradientu wahadła

1/**
2 * @brief Rozpoczęcie gradientu wahadła
3 * @param [in] weaveChangeFlag 1-zmiana parametrów wahadła; 2-zmiana parametrów wahadła + prędkości spawania
4 * @param [in] weaveNum Numer wahadła
5 * @param [in] velStart Prędkość początkowa spawania (cm/min)
6 * @param [in] velEnd Prędkość końcowa spawania (cm/min)
7 * @return Kod błędu
8 */
9 errno_t WeaveChangeStart(int weaveChangeFlag, int weaveNum, double velStart, double velEnd);

14.35. Przykład kodu spawania z gradientem wahadła robota

 1int TestWeave(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  DescPose p1Desc(228.879, -503.594, 453.984, -175.580, 8.293, 171.267);
14  JointPos p1Joint(102.700, -85.333, 90.518, -102.365, -83.932, 22.134);
15  DescPose p2Desc(-333.302, -435.580, 449.866, -174.997, 2.017, 109.815);
16  JointPos p2Joint(41.862, -85.333, 90.526, -100.587, -90.014, 22.135);
17  ExaxisPos exaxisPos(0, 0, 0, 0);
18  DescPose offdese(0, 0, 0, 0, 0, 0);
19  robot.MoveJ(&p1Joint, &p1Desc, 13, 0, 20, 100, 100, &exaxisPos, -1, 0, &offdese);
20  robot.WeaveStartSim(0);
21  robot.MoveL(&p2Joint, &p2Desc, 13, 0, 20, 100, 100, -1, 0, &exaxisPos, 0, 0, &offdese);
22  robot.WeaveEndSim(0);
23  robot.MoveJ(&p1Joint, &p1Desc, 13, 0, 20, 100, 100, &exaxisPos, -1, 0, &offdese);
24  robot.WeaveInspectStart(0);
25  robot.MoveL(&p2Joint, &p2Desc, 13, 0, 20, 100, 100, -1, 0, &exaxisPos, 0, 0, &offdese);
26  robot.WeaveInspectEnd(0);
27  robot.WeldingSetVoltage(1, 19, 0, 0);
28  robot.WeldingSetCurrent(1, 190, 0, 0);
29  robot.MoveL(&p1Joint, &p1Desc, 1, 1, 100, 100, 50, -1, &exaxisPos, 0, 0, &offdese);
30  robot.ARCStart(1, 0, 10000);
31  robot.ArcWeldTraceControl(1, 0, 1, 0.06, 5, 5, 60, 1, 0.06, 5, 5, 80, 0, 0, 4, 1, 10, 0, 0);
32  robot.WeaveStart(0);
33  robot.WeaveChangeStart(1, 0, 50, 30);
34  robot.MoveL(&p2Joint, &p2Desc, 1, 1, 100, 100, 1, -1, &exaxisPos, 0, 0, &offdese);
35  robot.WeaveChangeEnd();
36  robot.WeaveEnd(0);
37  robot.ArcWeldTraceControl(0, 0, 1, 0.06, 5, 5, 60, 1, 0.06, 5, 5, 80, 0, 0, 4, 1, 10, 0, 0);
38  robot.ARCEnd(1, 0, 10000);
39  robot.CloseRPC();
40  return 0;
41}

14.36. Zakończenie gradientu wahadła

Nowe w wersji C++SDK-v2.2.0-3.8.0.

1/**
2 * @brief  Zakończenie gradientu wahadła
3 * @return  Kod błędu
4 */
5errno_t WeaveChangeEnd();

14.37. Rozszerzone IO - konfiguracja sygnału detekcji gazu spawarki

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

1/**
2 * @brief Rozszerzone IO - konfiguracja sygnału detekcji gazu spawarki
3 * @param [in] DONum Rozszerzony numer DO sygnału detekcji gazu
4 * @return Kod błędu
5 */
6errno_t SetAirControlExtDoNum(int DONum);

14.38. Rozszerzone IO - konfiguracja sygnału rozpoczęcia łuku spawarki

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

1/**
2 * @brief Rozszerzone IO - konfiguracja sygnału rozpoczęcia łuku spawarki
3 * @param [in] DONum Rozszerzony numer DO sygnału rozpoczęcia łuku spawarki
4 * @return Kod błędu
5 */
6errno_t SetArcStartExtDoNum(int DONum);

14.39. Rozszerzone IO - konfiguracja sygnału podawania drutu w tył spawarki

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

1/**
2 * @brief Rozszerzone IO - konfiguracja sygnału podawania drutu w tył spawarki
3 * @param [in] DONum Rozszerzony numer DO sygnału podawania drutu w tył
4 * @return Kod błędu
5 */
6errno_t SetWireReverseFeedExtDoNum(int DONum);

14.40. Rozszerzone IO - konfiguracja sygnału podawania drutu w przód spawarki

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

1/**
2 * @brief Rozszerzone IO - konfiguracja sygnału podawania drutu w przód spawarki
3 * @param [in] DONum Rozszerzony numer DO sygnału podawania drutu w przód
4 * @return Kod błędu
5 */
6errno_t SetWireForwardFeedExtDoNum(int DONum);

14.41. Rozszerzone IO - konfiguracja sygnału sukcesu rozpoczęcia łuku spawarki

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

1/**
2 * @brief Rozszerzone IO - konfiguracja sygnału sukcesu rozpoczęcia łuku spawarki
3 * @param [in] DINum Rozszerzony numer DI sygnału sukcesu rozpoczęcia łuku
4 * @return Kod błędu
5 */
6errno_t SetArcDoneExtDiNum(int DINum);

14.42. Rozszerzone IO - konfiguracja sygnału gotowości spawarki

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

1/**
2 * @brief Rozszerzone IO - konfiguracja sygnału gotowości spawarki
3 * @param [in] DINum Rozszerzony numer DI sygnału gotowości spawarki
4 * @return Kod błędu
5 */
6errno_t SetWeldReadyExtDiNum(int DINum);

14.43. Rozszerzone IO - konfiguracja sygnału wznowienia po przerwaniu spawania

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

1/**
2 * @brief Rozszerzone IO - konfiguracja sygnału wznowienia po przerwaniu spawania
3 * @param [in] reWeldDINum Rozszerzony numer DI sygnału wznowienia spawania po przerwaniu
4 * @param [in] abortWeldDINum Rozszerzony numer DI sygnału wyjścia z spawania po przerwaniu
5 * @return Kod błędu
6 */
7errno_t SetExtDIWeldBreakOffRecover(int reWeldDINum, int abortWeldDINum);

14.44. Przykład kodu ustawiania sygnałów spawania rozszerzonego IO

 1int TestExtDIConfig(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  robot.SetArcStartExtDoNum(10);
14  robot.SetAirControlExtDoNum(20);
15  robot.SetWireForwardFeedExtDoNum(30);
16  robot.SetWireReverseFeedExtDoNum(40);
17  robot.SetWeldReadyExtDiNum(50);
18  robot.SetArcDoneExtDiNum(60);
19  robot.SetExtDIWeldBreakOffRecover(70, 80);
20  robot.SetWireSearchExtDIONum(0, 1);
21  robot.CloseRPC();
22  return 0;
23}

14.45. Sterowanie śledzeniem łuku spawalniczego

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

 1  /**
 2  * @brief  Sterowanie śledzeniem łuku spawalniczego
 3  * @param  [in] flag Przełącznik, 0-wył.; 1-wł.
 4  * @param  [in] dalayTime Czas opóźnienia, jednostka ms
 5  * @param  [in] isLeftRight Kompensacja odchylenia lewo/prawo
 6  * @param  [in] klr Współczynnik regulacji lewo/prawo (czułość);
 7  * @param  [in] tStartLr Czas rozpoczęcia kompensacji lewo/prawo cyc
 8  * @param  [in] stepMaxLr Maksymalna wielkość kompensacji na cykl lewo/prawo mm
 9  * @param  [in] sumMaxLr Maksymalna całkowita wielkość kompensacji lewo/prawo mm
10  * @param  [in] isUpLow Kompensacja odchylenia góra/dół
11  * @param  [in] kud Współczynnik regulacji góra/dół (czułość);
12  * @param  [in] tStartUd Czas rozpoczęcia kompensacji góra/dół cyc
13  * @param  [in] stepMaxUd Maksymalna wielkość kompensacji na cykl góra/dół mm
14  * @param  [in] sumMaxUd Maksymalna całkowita wielkość kompensacji góra/dół
15  * @param  [in] axisSelect Wybór układu współrzędnych góra/dół, 0-wahadło; 1-narzędzie; 2-podstawa
16  * @param  [in] referenceType Sposób ustawienia prądu odniesienia góra/dół, 0-sprzężenie zwrotne; 1-stała
17  * @param  [in] referSampleStartUd Rozpoczęcie zliczania próbkowania prądu odniesienia góra/dół (sprzężenie zwrotne); cyc
18  * @param  [in] referSampleCountUd Liczba cykli próbkowania prądu odniesienia góra/dół (sprzężenie zwrotne); cyc
19  * @param  [in] referenceCurrent Prąd odniesienia góra/dół mA
20  * @param  [in] offsetType Typ śledzenia z przesunięciem, 0-bez przesunięcia; 1-próbkowanie; 2-procent
21  * @param  [in] offsetParameter Parametr przesunięcia; próbkowanie (czas rozpoczęcia próbkowania przesunięcia, domyślnie jeden cykl); procent (procent przesunięcia (-100 ~ 100))
22  * @return  Kod błędu
23  */
24 errno_t ArcWeldTraceControl(int flag, double delaytime, int isLeftRight, double klr, double tStartLr, double stepMaxLr, double sumMaxLr, int isUpLow, double kud, double tStartUd, double stepMaxUd, double sumMaxUd, int axisSelect, int referenceType, double referSampleStartUd, double referSampleCountUd, double referenceCurrent, int offsetType = 0, int offsetParameter = 0);

14.46. Ustawianie portu wejściowego sygnału śledzenia łuku spawalniczego

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

1 /**
2  * @brief  Ustawia port wejściowy sygnału śledzenia łuku spawalniczego
3  * @param  [in] channel Pasmo AI dla śledzenia łuku spawalniczego, [0-3]
4  * @return  Kod błędu
5  */
6 errno_t ArcWeldTraceExtAIChannelConfig(int channel);

14.47. Rozpoczęcie śledzenia łuku spawalniczego + kompensacji wielowarstwowej i wielościeżkowej

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

1/**
2* @brief Rozpoczęcie śledzenia łuku spawalniczego + kompensacji wielowarstwowej i wielościeżkowej
3* @return Kod błędu
4*/
5errno_t ArcWeldTraceReplayStart();

14.48. Zakończenie śledzenia łuku spawalniczego + kompensacji wielowarstwowej i wielościeżkowej

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

1/**
2* @brief Zakończenie śledzenia łuku spawalniczego + kompensacji wielowarstwowej i wielościeżkowej
3* @return Kod błędu
4*/
5errno_t ArcWeldTraceReplayEnd();

14.49. Zmiana współrzędnych przesunięcia - spawanie wielowarstwowe i wielościeżkowe

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

1/**
2* @brief Zmiana współrzędnych przesunięcia - spawanie wielowarstwowe i wielościeżkowe
3* @return Kod błędu
4*/
5errno_t MultilayerOffsetTrsfToBase(DescTran pointO, DescTran pointX, DescTran pointZ, double dx, double dy, double db, DescPose& offset);

14.50. Przykład kodu śledzenia łuku spawalniczego dla spawania wielowarstwowego i wielościeżkowego

  1int TestArcWeldTrace(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  JointPos mulitilineorigin1_joint(-24.090, -63.501, 84.288, -111.940, -93.426, 57.669);
 14  DescPose mulitilineorigin1_desc(-677.559, 190.951, -1.205, 1.144, -41.482, -82.577);
 15  DescTran mulitilineX1_desc;
 16  mulitilineX1_desc.x = -677.556;
 17  mulitilineX1_desc.y = 211.949;
 18  mulitilineX1_desc.z = -1.206;
 19  DescTran mulitilineZ1_desc;
 20  mulitilineZ1_desc.x = -677.564;
 21  mulitilineZ1_desc.y = 190.956;
 22  mulitilineZ1_desc.z = 19.817;
 23  JointPos mulitilinesafe_joint(-25.734, -63.778, 81.502, -108.975, -93.392, 56.021);
 24  DescPose mulitilinesafe_desc(-677.561, 211.950, 19.812, 1.144, -41.482, -82.577);
 25  JointPos mulitilineorigin2_joint(-29.743, -75.623, 101.241, -116.354, -94.928, 55.735);
 26  DescPose mulitilineorigin2_desc(-563.961, 215.359, -0.681, 2.845, -40.476, -87.443);
 27  DescTran mulitilineX2_desc;
 28  mulitilineX2_desc.x = -563.965;
 29  mulitilineX2_desc.y = 220.355;
 30  mulitilineX2_desc.z = -0.680;
 31  DescTran mulitilineZ2_desc;
 32  mulitilineZ2_desc.x = -563.968;
 33  mulitilineZ2_desc.y = 215.362;
 34  mulitilineZ2_desc.z = 4.331;
 35  ExaxisPos epos(0, 0, 0, 0);
 36  DescPose offset(0, 0, 0, 0, 0, 0);
 37  robot.Sleep(10);
 38  int error = robot.MoveJ(&mulitilinesafe_joint, &mulitilinesafe_desc, 13, 0, 10, 100, 100, &epos, -1, 0, &offset);
 39  printf("MoveJ return: %d\n", error);
 40  error = robot.MoveL(&mulitilineorigin1_joint, &mulitilineorigin1_desc, 13, 0, 10, 100, 100, -1, &epos, 0, 0, &offset, 0, 100);
 41  printf("MoveL return: %d\n", error);
 42  error = robot.MoveJ(&mulitilinesafe_joint, &mulitilinesafe_desc, 13, 0, 10, 100, 100, &epos, -1, 0, &offset);
 43  printf("MoveJ return: %d\n", error);
 44  error = robot.MoveL(&mulitilineorigin2_joint, &mulitilineorigin2_desc, 13, 0, 10, 100, 100, -1, &epos, 0, 0, &offset, 0, 100);
 45  printf("MoveL return: %d\n", error);
 46  error = robot.MoveJ(&mulitilinesafe_joint, &mulitilinesafe_desc, 13, 0, 10, 100, 100, &epos, -1, 0, &offset);
 47  printf("MoveJ return: %d\n", error);
 48  error = robot.MoveL(&mulitilineorigin1_joint, &mulitilineorigin1_desc, 13, 0, 10, 100, 100, -1, &epos, 0, 0, &offset, 0, 100);
 49  printf("MoveL return: %d\n", error);
 50  error = robot.ARCStart(1, 0, 3000);
 51  printf("ARCStart return: %d\n", error);
 52  error = robot.WeaveStart(0);
 53  printf("WeaveStart return: %d\n", error);
 54  error = robot.ArcWeldTraceControl(1, 0, 1, 0.06, 5, 5, 50, 1, 0.06, 5, 5, 55, 0, 0, 4, 1, 10);
 55  printf("ArcWeldTraceControl return: %d\n", error);
 56  error = robot.MoveL(&mulitilineorigin2_joint, &mulitilineorigin2_desc, 13, 0, 1, 100, 100, -1, &epos, 0, 0, &offset, 0, 100);
 57  printf("MoveL return: %d\n", error);
 58  error = robot.ArcWeldTraceControl(0, 0, 1, 0.06, 5, 5, 50, 1, 0.06, 5, 5, 55, 0, 0, 4, 1, 10);
 59  printf("ArcWeldTraceControl return: %d\n", error);
 60  error = robot.WeaveEnd(0);
 61  printf("WeaveEnd return: %d\n", error);
 62  error = robot.ARCEnd(1, 0, 10000);
 63  printf("ARCEnd return: %d\n", error);
 64  error = robot.MoveJ(&mulitilinesafe_joint, &mulitilinesafe_desc, 13, 0, 10, 100, 100, &epos, -1, 0, &offset);
 65  printf("MoveJ return: %d\n", error);
 66  error = robot.MultilayerOffsetTrsfToBase(mulitilineorigin1_desc.tran, mulitilineX1_desc, mulitilineZ1_desc, 10.0, 0.0, 0.0, offset);
 67  printf("MultilayerOffsetTrsfToBase return: %d offect is %f %f %f \n", error, offset.tran.x, offset.tran.y, offset.tran.z);
 68  error = robot.MoveL(&mulitilineorigin1_joint, &mulitilineorigin1_desc, 13, 0, 10, 100, 100, -1, &epos, 0, 1, &offset, 0, 100);
 69  printf("MoveL return: %d\n", error);
 70  error = robot.ARCStart(1, 0, 3000);
 71  printf("ARCStart return: %d\n", error);
 72  error = robot.MultilayerOffsetTrsfToBase(mulitilineorigin2_desc.tran, mulitilineX2_desc, mulitilineZ2_desc, 10, 0, 0, offset);
 73  printf("MultilayerOffsetTrsfToBase return: %d offect is %f %f %f \n", error, offset.tran.x, offset.tran.y, offset.tran.z);
 74  error = robot.ArcWeldTraceReplayStart();
 75  printf("ArcWeldTraceReplayStart return: %d\n", error);
 76  error = robot.MoveL(&mulitilineorigin2_joint, &mulitilineorigin2_desc, 13, 0, 2, 100, 100, -1, &epos, 0, 1, &offset, 0, 100);
 77  printf("MoveL return: %d\n", error);
 78  error = robot.ArcWeldTraceReplayEnd();
 79  printf("ArcWeldTraceReplayEnd return: %d\n", error);
 80  error = robot.ARCEnd(1, 0, 10000);
 81  printf("ARCEnd return: %d\n", error);
 82  error = robot.MoveJ(&mulitilinesafe_joint, &mulitilinesafe_desc, 13, 0, 10, 100, 100, &epos, -1, 0, &offset);
 83  printf("MoveJ return: %d\n", error);
 84  error = robot.MultilayerOffsetTrsfToBase(mulitilineorigin1_desc.tran, mulitilineX1_desc, mulitilineZ1_desc, 0, 10, 0, offset);
 85  printf("MultilayerOffsetTrsfToBase return: %d offect is %f %f %f \n", error, offset.tran.x, offset.tran.y, offset.tran.z);
 86  error = robot.MoveL(&mulitilineorigin1_joint, &mulitilineorigin1_desc, 13, 0, 10, 100, 100, -1, &epos, 0, 1, &offset, 0, 100);
 87  printf("MoveL return: %d\n", error);
 88  error = robot.ARCStart(1, 0, 3000);
 89  printf("ARCStart return: %d\n", error);
 90  error = robot.MultilayerOffsetTrsfToBase(mulitilineorigin2_desc.tran, mulitilineX2_desc, mulitilineZ2_desc, 0, 10, 0, offset);
 91  printf("MultilayerOffsetTrsfToBase return: %d offect is %f %f %f \n", error, offset.tran.x, offset.tran.y, offset.tran.z);
 92  error = robot.ArcWeldTraceReplayStart();
 93  printf("MoveJ return: %d\n", error);
 94  error = robot.MoveL(&mulitilineorigin2_joint, &mulitilineorigin2_desc, 13, 0, 2, 100, 100, -1, &epos, 0, 1, &offset, 0, 100);
 95  printf("MoveL return: %d\n", error);
 96  error = robot.ArcWeldTraceReplayEnd();
 97  printf("ArcWeldTraceReplayEnd return: %d\n", error);
 98  error = robot.ARCEnd(1, 0, 3000);
 99  printf("ARCEnd return: %d\n", error);
100  error = robot.MoveJ(&mulitilinesafe_joint, &mulitilinesafe_desc, 13, 0, 10, 100, 100, &epos, -1, 0, &offset);
101  printf("MoveJ return: %d\n", error);
102  robot.CloseRPC();
103  return 0;
104}

14.51. Wybór kanału AI dla sprzężenia zwrotnego prądu spawarki w śledzeniu łuku spawalniczego

1/**
2 * @brief Wybór kanału AI dla sprzężenia zwrotnego prądu spawarki w śledzeniu łuku spawalniczego
3 * @param [in]  channel Kanał; 0-rozszerzone AI0; 1-rozszerzone AI1; 2-rozszerzone AI2; 3-rozszerzone AI3; 4-AI0 szafy sterowniczej; 5-AI1 szafy sterowniczej
4 * @return Kod błędu
5 */
6 errno_t ArcWeldTraceAIChannelCurrent(int channel);

14.52. Wybór kanału AI dla sprzężenia zwrotnego napięcia spawarki w śledzeniu łuku spawalniczego

1/**
2 * @brief Wybór kanału AI dla sprzężenia zwrotnego napięcia spawarki w śledzeniu łuku spawalniczego
3 * @param [in]  channel Kanał; 0-rozszerzone AI0; 1-rozszerzone AI1; 2-rozszerzone AI2; 3-rozszerzone AI3; 4-AI0 szafy sterowniczej; 5-AI1 szafy sterowniczej
4 * @return Kod błędu
5 */
6 errno_t ArcWeldTraceAIChannelVoltage(int channel);

14.53. Parametry konwersji sprzężenia zwrotnego prądu spawarki w śledzeniu łuku spawalniczego

1 /**
2  * @brief Parametry konwersji sprzężenia zwrotnego prądu spawarki w śledzeniu łuku spawalniczego
3  * @param [in] AILow Dolna granica kanału AI, wartość domyślna 0V, zakres [0-10V]
4  * @param [in] AIHigh Górna granica kanału AI, wartość domyślna 10V, zakres [0-10V]
5  * @param [in] currentLow Wartość prądu spawarki odpowiadająca dolnej granicy kanału AI, wartość domyślna 0V, zakres [0-200V]
6  * @param [in] currentHigh Wartość prądu spawarki odpowiadająca górnej granicy kanału AI, wartość domyślna 100V, zakres [0-200V]
7  * @return Kod błędu
8  */
9 errno_t ArcWeldTraceCurrentPara(float AILow, float AIHigh, float currentLow, float currentHigh);

14.54. Parametry konwersji sprzężenia zwrotnego napięcia spawarki w śledzeniu łuku spawalniczego

1 /**
2* @brief Parametry konwersji sprzężenia zwrotnego napięcia spawarki w śledzeniu łuku spawalniczego
3* @param [in] AILow Dolna granica kanału AI, wartość domyślna 0V, zakres [0-10V]
4* @param [in] AIHigh Górna granica kanału AI, wartość domyślna 10V, zakres [0-10V]
5* @param [in] voltageLow Wartość napięcia spawarki odpowiadająca dolnej granicy kanału AI, wartość domyślna 0V, zakres [0-200V]
6* @param [in] voltageHigh Wartość napięcia spawarki odpowiadająca górnej granicy kanału AI, wartość domyślna 100V, zakres [0-200V]
7* @return Kod błędu
8*/
9errno_t ArcWeldTraceVoltagePara(float AILow, float AIHigh, float voltageLow, float voltageHigh);

14.55. Przykład kodu śledzenia łuku spawalniczego

 1int WeldTraceControlWithCtrlBoxAI(FRRobot* robot)
 2{
 3  DescPose startdescPose = { -473.86, 257.879, -20.849, -37.317, -42.021, 2.543 };
 4  JointPos startjointPos = { -43.487, -76.526, 95.568, -104.445, -89.356, 3.72 };
 5
 6  DescPose enddescPose = { -499.844, 141.225, 7.72, -34.856, -40.17, 13.13 };
 7  JointPos endjointPos = { -31.305, -82.998, 99.401, -104.426, -89.35, 3.696 };
 8
 9  DescPose safedescPose = { -504.043, 275.181, 40.908, -28.002, -42.025, -14.044 };
10  JointPos safejointPos = { -39.078, -76.732, 87.227, -99.47, -94.301, 18.714 };
11
12  ExaxisPos exaxisPos = { 0, 0, 0, 0 };
13  DescPose offdese = { 0, 0, 0, 0, 0, 0 };
14
15  robot->WeldingSetCurrentRelation(0, 495, 1, 10, 0);
16  robot->WeldingSetVoltageRelation(10, 45, 1, 10, 1);
17
18  robot->WeldingSetVoltage(0, 25, 1, 0);// ---- ustawienie napięcia
19  robot->WeldingSetCurrent(0, 260, 0, 0);// ---- ustawienie prądu
20
21  int rtn = robot->ArcWeldTraceAIChannelCurrent(4);
22  cout << "ArcWeldTraceAIChannelCurrent rtn is " << rtn << endl;
23  rtn = robot->ArcWeldTraceAIChannelVoltage(5);
24  cout << "ArcWeldTraceAIChannelVoltage rtn is " << rtn << endl;
25  rtn = robot->ArcWeldTraceCurrentPara(0, 5, 0, 500);
26  cout << "ArcWeldTraceCurrentPara rtn is " << rtn << endl;
27  rtn = robot->ArcWeldTraceVoltagePara(1.018, 10, 0, 50);
28  cout << "ArcWeldTraceVoltagePara rtn is " << rtn << endl;
29  robot->MoveJ(&safejointPos, &safedescPose, 1, 0, 5, 100, 100, &exaxisPos, -1, 0, &offdese);
30  robot->MoveJ(&startjointPos, &startdescPose, 1, 0, 5, 100, 100, &exaxisPos, -1, 0, &offdese);
31  rtn = robot->ArcWeldTraceControl(1, 0, 1, 0.08, 5, 5, 300, 1, 0.06, 4, 4, 300, 1, 0, 4, 1, 10, 0, 0);
32  cout << "ArcWeldTraceControl rtn is " << rtn << endl;
33  robot->ARCStart(0, 0, 10000);
34  robot->WeaveStart(0);
35  robot->MoveL(&endjointPos, &enddescPose, 1, 0, 100, 100, 2, -1, &exaxisPos, 0, 0, &offdese);
36  robot->ARCEnd(0, 0, 10000);
37  robot->WeaveEnd(0);
38  robot->ArcWeldTraceControl(0, 0, 1, 0.08, 5, 5, 300, 1, 0.06, 4, 4, 300, 1, 0, 4, 1, 10, 0, 0);
39  return 0;
40}

14.56. Ustawianie rozszerzonego portu IO dla lokalizacji drutu spawalniczego

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

1/**
2* @brief Ustawia rozszerzony port IO dla lokalizacji drutu spawalniczego
3* @param searchDoneDINum Port DO sukcesu lokalizacji drutu spawalniczego (0-127)
4* @param searchStartDONum Port DO sterowania uruchamianiem/zatrzymywaniem lokalizacji drutu spawalniczego (0-127)
5* @return Kod błędu
6*/
7errno_t SetWireSearchExtDIONum(int searchDoneDINum, int searchStartDONum);

14.57. Przykładowy program

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

 1void TestUDPWireSearch(FRRobot* robot)
 2{
 3robot->ExtDevSetUDPComParam("192.168.58.88", 2021, 2, 50, 5, 50, 1, 50, 10);
 4robot->ExtDevLoadUDPDriver();
 5
 6robot->SetWireSearchExtDIONum(0, 0);
 7
 8int rtn0, rtn1, rtn2 = 0;
 9ExaxisPos exaxisPos = { 0.0, 0.0, 0.0, 0.0 };
10DescPose offdese = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
11
12DescPose descStart = { -158.767, -510.596, 271.709, -179.427, -0.745, -137.349 };
13JointPos jointStart = { 61.667, -79.848, 108.639, -119.682, -89.700, -70.985 };
14
15DescPose descEnd = { 0.332, -516.427, 270.688, 178.165, 0.017, -119.989 };
16JointPos jointEnd = { 79.021, -81.839, 110.752, -118.298, -91.729, -70.981 };
17
18robot->MoveL(&jointStart, &descStart, 1, 0, 100, 100, 100, -1, &exaxisPos, 0, 0, &offdese);
19robot->MoveL(&jointEnd, &descEnd, 1, 0, 100, 100, 100, -1, &exaxisPos, 0, 0, &offdese);
20
21DescPose descREF0A = { -66.106, -560.746, 270.381, 176.479, -0.126, -126.745 };
22JointPos jointREF0A = { 73.531, -75.588, 102.941, -116.250, -93.347, -69.689 };
23
24DescPose descREF0B = { -66.109, -528.440, 270.407, 176.479, -0.129, -126.744 };
25JointPos jointREF0B = { 72.534, -79.625, 108.046, -117.379, -93.366, -70.687 };
26
27DescPose descREF1A = { 72.975, -473.242, 270.399, 176.479, -0.129, -126.744 };
28JointPos jointREF1A = { 87.169, -86.509, 115.710, -117.341, -92.993, -56.034 };
29
30DescPose descREF1B = { 31.355, -473.238, 270.405, 176.480, -0.130, -126.745 };
31JointPos jointREF1B = { 82.117, -87.146, 116.470, -117.737, -93.145, -61.090 };
32
33rtn0 = robot->WireSearchStart(0, 10, 100, 0, 10, 100, 0);
34robot->MoveL(&jointREF0A, &descREF0A, 1, 0, 100, 100, 100, -1, &exaxisPos, 0, 0, &offdese); //punkt początkowy
35robot->MoveL(&jointREF0B, &descREF0B, 1, 0, 10, 100, 100, -1, &exaxisPos, 1, 0, &offdese); //punkt kierunkowy
36rtn1 = robot->WireSearchWait("REF0");
37rtn2 = robot->WireSearchEnd(0, 10, 100, 0, 10, 100, 0);
38
39rtn0 = robot->WireSearchStart(0, 10, 100, 0, 10, 100, 0);
40robot->MoveL(&jointREF1A, &descREF1A, 1, 0, 100, 100, 100, -1, &exaxisPos, 0, 0, &offdese); //punkt początkowy
41robot->MoveL(&jointREF1B, &descREF1B, 1, 0, 10, 100, 100, -1, &exaxisPos, 1, 0, &offdese); //punkt kierunkowy
42rtn1 = robot->WireSearchWait("REF1");
43rtn2 = robot->WireSearchEnd(0, 10, 100, 0, 10, 100, 0);
44
45rtn0 = robot->WireSearchStart(0, 10, 100, 0, 10, 100, 0);
46robot->MoveL(&jointREF0A, &descREF0A, 1, 0, 100, 100, 100, -1, &exaxisPos, 0, 0, &offdese); //punkt początkowy
47robot->MoveL(&jointREF0B, &descREF0B, 1, 0, 10, 100, 100, -1, &exaxisPos, 1, 0, &offdese); //punkt kierunkowy
48rtn1 = robot->WireSearchWait("RES0");
49rtn2 = robot->WireSearchEnd(0, 10, 100, 0, 10, 100, 0);
50
51rtn0 = robot->WireSearchStart(0, 10, 100, 0, 10, 100, 0);
52robot->MoveL(&jointREF1A, &descREF1A, 1, 0, 100, 100, 100, -1, &exaxisPos, 0, 0, &offdese); //punkt początkowy
53robot->MoveL(&jointREF1B, &descREF1B, 1, 0, 10, 100, 100, -1, &exaxisPos, 1, 0, &offdese); //punkt kierunkowy
54rtn1 = robot->WireSearchWait("RES1");
55rtn2 = robot->WireSearchEnd(0, 10, 100, 0, 10, 100, 0);
56
57vector <string> varNameRef = { "REF0", "REF1", "#", "#", "#", "#" };
58vector <string> varNameRes = { "RES0", "RES1", "#", "#", "#", "#" };
59int offectFlag = 0;
60DescPose offectPos = { 0, 0, 0, 0, 0, 0 };
61rtn0 = robot->GetWireSearchOffset(0, 0, varNameRef, varNameRes, offectFlag, offectPos);
62robot->PointsOffsetEnable(0, &offectPos);
63robot->MoveL(&jointStart, &descStart, 1, 0, 100, 100, 100, -1, &exaxisPos, 0, 0, &offdese);
64robot->MoveL(&jointEnd, &descEnd, 1, 0, 100, 100, 100, -1, &exaxisPos, 0, 0, &offdese);
65robot->PointsOffsetDisable();
66}

14.58. Rozpoczęcie lokalizacji drutu spawalniczego

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

 1/**
 2* @brief  Rozpoczęcie lokalizacji drutu spawalniczego
 3* @param  [in] refPos  1-punkt odniesienia 0-punkt kontaktu
 4* @param  [in] searchVel   Prędkość lokalizacji %
 5* @param  [in] searchDis  Odległość lokalizacji mm
 6* @param  [in] autoBackFlag Flaga automatycznego powrotu, 0-nie automatyczny; -automatyczny
 7* @param  [in] autoBackVel  Prędkość automatycznego powrotu %
 8* @param  [in] autoBackDis  Odległość automatycznego powrotu mm
 9* @param  [in] offectFlag  1-lokalizacja z przesunięciem; 0-lokalizacja punktem nauczania
10* @return  Kod błędu
11*/
12 errno_t WireSearchStart(int refPos, float searchVel, int searchDis, int autoBackFlag, float autoBackVel, int autoBackDis, int offectFlag);

14.59. Zakończenie lokalizacji drutu spawalniczego

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

 1 /**
 2  * @brief  Zakończenie lokalizacji drutu spawalniczego
 3  * @param  [in] refPos  1-punkt odniesienia 2-punkt kontaktu
 4  * @param  [in] searchVel   Prędkość lokalizacji %
 5  * @param  [in] searchDis  Odległość lokalizacji mm
 6  * @param  [in] autoBackFlag Flaga automatycznego powrotu, 0-nie automatyczny; -automatyczny
 7  * @param  [in] autoBackVel  Prędkość automatycznego powrotu %
 8  * @param  [in] autoBackDis  Odległość automatycznego powrotu mm
 9  * @param  [in] offectFlag  1-lokalizacja z przesunięciem; 2-lokalizacja punktem nauczania
10  * @return  Kod błędu
11  */
12 errno_t WireSearchEnd(int refPos, float searchVel, int searchDis, int autoBackFlag, float autoBackVel, int autoBackDis, int offectFlag);

14.60. Obliczanie przesunięcia lokalizacji drutu spawalniczego

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

 1 /**
 2  * @brief  Obliczanie przesunięcia lokalizacji drutu spawalniczego
 3  * @param  [in] seamType  Typ spoiny
 4  * @param  [in] method   Metoda obliczeniowa
 5  * @param  [in] varNameRef Punkty odniesienia 1-6, „#” oznacza brak punktu
 6  * @param  [in] varNameRes Punkty kontaktu 1-6, „#” oznacza brak punktu
 7  * @param  [out] offectFlag 0-przesunięcie dodawane bezpośrednio do punktu instrukcji; 1-przesunięcie wymaga transformacji współrzędnych punktu instrukcji
 8  * @param  [out] offect Pozycja i orientacja przesunięcia [x, y, z, a, b, c]
 9  * @return  Kod błędu
10  */
11 errno_t GetWireSearchOffset(int seamType, int method, std::vector<std::string> varNameRef, std::vector<std::string> varNameRes, int& offectFlag, DescPose& offect);

14.61. Oczekiwanie na zakończenie lokalizacji drutu spawalniczego

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

1 /**
2  * @brief  Oczekiwanie na zakończenie lokalizacji drutu spawalniczego
3  * @return  Kod błędu
4  */
5 errno_t WireSearchWait(std::string varName);

14.62. Zapis punktu kontaktu lokalizacji drutu spawalniczego do bazy danych

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

1 /**
2  * @brief  Zapis punktu kontaktu lokalizacji drutu spawalniczego do bazy danych
3  * @param  [in] varName  Nazwa punktu kontaktu „RES0” ~ „RES99”
4  * @param  [in] pos  Dane punktu kontaktu [x, y, x, a, b, c]
5  * @return  Kod błędu
6  */
7 errno_t SetPointToDatabase(std::string varName, DescPose pos);

14.63. Przykład kodu lokalizacji drutu spawalniczego robota

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

 1int TestWireSearch(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  DescPose toolCoord(0, 0, 200, 0, 0, 0);
14  robot.SetToolCoord(1, &toolCoord, 0, 0, 1, 0);
15  DescPose wobjCoord(0, 0, 0, 0, 0, 0);
16  robot.SetWObjCoord(1, &wobjCoord, 0);
17  int rtn0, rtn1, rtn2 = 0;
18  ExaxisPos exaxisPos = { 0, 0, 0, 0 };
19  DescPose offdese = { 0, 0, 0, 0, 0, 0 };
20  DescPose descStart = { 216.543, 445.175, 93.465, 179.683, 1.757, -112.641 };
21  JointPos jointStart = { -128.345, -86.660, 114.679, -119.625, -89.219, 74.303 };
22  DescPose descEnd = { 111.143, 523.384, 87.659, 179.703, 1.835, -97.750 };
23  JointPos jointEnd = { -113.454, -81.060, 109.328, -119.954, -89.218, 74.302 };
24  robot.MoveL(&jointStart, &descStart, 1, 1, 100, 100, 100, -1, &exaxisPos, 0, 0, &offdese);
25  robot.MoveL(&jointEnd, &descEnd, 1, 1, 100, 100, 100, -1, &exaxisPos, 0, 0, &offdese);
26  DescPose descREF0A = { 142.135, 367.604, 86.523, 179.728, 1.922, -111.089 };
27  JointPos jointREF0A = { -126.794, -100.834, 128.922, -119.864, -89.218, 74.302 };
28  DescPose descREF0B = { 254.633, 463.125, 72.604, 179.845, 2.341, -114.704 };
29  JointPos jointREF0B = { -130.413, -81.093, 112.044, -123.163, -89.217, 74.303 };
30  DescPose descREF1A = { 92.556, 485.259, 47.476, -179.932, 3.130, -97.512 };
31  JointPos jointREF1A = { -113.231, -83.815, 119.877, -129.092, -89.217, 74.303 };
32  DescPose descREF1B = { 203.103, 583.836, 63.909, 179.991, 2.854, -103.372 };
33  JointPos jointREF1B = { -119.088, -69.676, 98.692, -121.761, -89.219, 74.303 };
34  rtn0 = robot.WireSearchStart(0, 10, 100, 0, 10, 100, 0);
35  robot.MoveL(&jointREF0A, &descREF0A, 1, 1, 100, 100, 100, -1, &exaxisPos, 0, 0, &offdese); //punkt początkowy
36  robot.MoveL(&jointREF0B, &descREF0B, 1, 1, 100, 100, 100, -1, &exaxisPos, 1, 0, &offdese); //punkt kierunkowy
37  rtn1 = robot.WireSearchWait("REF0");
38  rtn2 = robot.WireSearchEnd(0, 10, 100, 0, 10, 100, 0);
39  rtn0 = robot.WireSearchStart(0, 10, 100, 0, 10, 100, 0);
40  robot.MoveL(&jointREF1A, &descREF1A, 1, 1, 100, 100, 100, -1, &exaxisPos, 0, 0, &offdese); //punkt początkowy
41  robot.MoveL(&jointREF1B, &descREF1B, 1, 1, 100, 100, 100, -1, &exaxisPos, 1, 0, &offdese); //punkt kierunkowy
42  rtn1 = robot.WireSearchWait("REF1");
43  rtn2 = robot.WireSearchEnd(0, 10, 100, 0, 10, 100, 0);
44  rtn0 = robot.WireSearchStart(0, 10, 100, 0, 10, 100, 0);
45  robot.MoveL(&jointREF0A, &descREF0A, 1, 1, 100, 100, 100, -1, &exaxisPos, 0, 0, &offdese); //punkt początkowy
46  robot.MoveL(&jointREF0B, &descREF0B, 1, 1, 100, 100, 100, -1, &exaxisPos, 1, 0, &offdese); //punkt kierunkowy
47  rtn1 = robot.WireSearchWait("RES0");
48  rtn2 = robot.WireSearchEnd(0, 10, 100, 0, 10, 100, 0);
49  rtn0 = robot.WireSearchStart(0, 10, 100, 0, 10, 100, 0);
50  robot.MoveL(&jointREF1A, &descREF1A, 1, 1, 100, 100, 100, -1, &exaxisPos, 0, 0, &offdese); //punkt początkowy
51  robot.MoveL(&jointREF1B, &descREF1B, 1, 1, 100, 100, 100, -1, &exaxisPos, 1, 0, &offdese); //punkt kierunkowy
52  rtn1 = robot.WireSearchWait("RES1");
53  rtn2 = robot.WireSearchEnd(0, 10, 100, 0, 10, 100, 0);
54  vector <string> varNameRef = { "REF0", "REF1", "#", "#", "#", "#" };
55  vector <string> varNameRes = { "RES0", "RES1", "#", "#", "#", "#" };
56  int offectFlag = 0;
57  DescPose offectPos = { 0, 0, 0, 0, 0, 0 };
58  rtn0 = robot.GetWireSearchOffset(0, 0, varNameRef, varNameRes, offectFlag, offectPos);
59  robot.PointsOffsetEnable(0, &offectPos);
60  robot.MoveL(&jointStart, &descStart, 1, 1, 100, 100, 100, -1, &exaxisPos, 0, 0, &offdese);
61  robot.MoveL(&jointEnd, &descEnd, 1, 1, 100, 100, 100, -1, &exaxisPos, 1, 0, &offdese);
62  robot.PointsOffsetDisable();
63  robot.CloseRPC();
64  return 0;

14.64. Rozpoczęcie gradientu napięcia spawania

 1 /**
 2* @brief Rozpoczęcie gradientu napięcia spawania
 3* @param [in] IOType Typ sterowania; 0-IO szafy sterowniczej; 1-Protokół komunikacji cyfrowej (UDP); 2-Protokół komunikacji cyfrowej (ModbusTCP)
 4* @param [in] voltageStart Początkowe napięcie spawania (V)
 5* @param [in] voltageEnd Końcowe napięcie spawania (V)
 6* @param [in] AOIndex Numer portu AO szafy sterowniczej (0-1)
 7* @param [in] blend Czy wygładzać 0-niewygładzone; 1-wygładzone
 8* @return Kod błędu
 9*/
10errno_t WeldingSetVoltageGradualChangeStart(int IOType, double voltageStart, double voltageEnd, int AOIndex, int blend);

14.65. Zakończenie gradientu napięcia spawania

1 /**
2  * @brief Zakończenie gradientu napięcia spawania
3  * @return Kod błędu
4  */
5 errno_t WeldingSetVoltageGradualChangeEnd();

14.66. Rozpoczęcie gradientu prądu spawania

 1 /**
 2  * @brief Rozpoczęcie gradientu prądu spawania
 3  * @param [in] IOType Typ sterowania; 0-IO szafy sterowniczej; 1-Protokół komunikacji cyfrowej (UDP); 2-Protokół komunikacji cyfrowej (ModbusTCP)
 4  * @param [in] voltageStart Początkowy prąd spawania (A)
 5  * @param [in] voltageEnd Końcowy prąd spawania (A)
 6  * @param [in] AOIndex Numer portu AO szafy sterowniczej (0-1)
 7  * @param [in] blend Czy wygładzać 0-niewygładzone; 1-wygładzone
 8  * @return Kod błędu
 9  */
10 errno_t WeldingSetCurrentGradualChangeStart(int IOType, double currentStart, double currentEnd, int AOIndex, int blend);

14.67. Zakończenie gradientu prądu spawania

1/**
2 * @brief Zakończenie gradientu prądu spawania
3 * @return Kod błędu
4 */
5errno_t WeldingSetCurrentGradualChangeEnd();

14.68. Przykład kodu gradientu prądu i napięcia spawania robota

 1int WeldparamChange(FRRobot* robot)
 2{
 3  DescPose startdescPose = { -484.707, 276.996, -14.013, -37.657, -40.508, -1.548 };
 4  JointPos startjointPos = { -45.421, -75.673, 93.627, -104.302, -87.938, 6.005 };
 5
 6  DescPose enddescPose = { -508.767, 137.109, -13.966, -37.639, -40.508, -1.559 };
 7  JointPos endjointPos = { -32.768, -80.947, 100.254, -106.201, -87.201, 18.648 };
 8
 9  DescPose safedescPose = { -484.709, 294.436, 13.621, -37.660, -40.508, -1.545 };
10  JointPos safejointPos = { -46.604, -75.410, 89.109, -100.003, -88.012, 4.823 };
11  ExaxisPos exaxisPos = { 0, 0, 0, 0 };
12  DescPose offdese = { 0, 0, 0, 0, 0, 0 };
13
14  robot->WeldingSetCurrentRelation(0, 495, 1, 10, 0);
15  robot->WeldingSetVoltageRelation(10, 45, 1, 10, 1);
16  robot->MoveJ(&safejointPos, &safedescPose, 1, 0, 5, 100, 100, &exaxisPos, -1, 0, &offdese);
17  int rtn = robot->WeldingSetCurrentGradualChangeStart(0, 260, 220, 0, 0);
18  cout << "WeldingSetCurrentGradualChangeStart rtn is " << rtn << endl;
19  rtn = robot->WeldingSetVoltageGradualChangeStart(0, 25, 22, 1, 0);
20  cout << "WeldingSetVoltageGradualChangeStart rtn is " << rtn << endl;
21  rtn = robot->ArcWeldTraceControl(1, 0, 1, 0.08, 5, 5, 300, 1, 0.06, 4, 4, 300, 1, 0, 4, 1, 10, 0, 0);
22  cout << "ArcWeldTraceControl rtn is " << rtn << endl;
23  robot->MoveJ(&startjointPos, &startdescPose, 1, 0, 5, 100, 100, &exaxisPos, -1, 0, &offdese);
24
25  robot->ARCStart(0, 0, 10000);
26  robot->WeaveStart(0);
27  robot->WeaveChangeStart(2, 1, 24, 36);
28  robot->MoveL(&endjointPos, &enddescPose, 1, 0, 100, 100, 2, -1, &exaxisPos, 0, 0, &offdese);
29  robot->ARCEnd(0, 0, 10000);
30  robot->WeaveChangeEnd();
31  robot->WeaveEnd(0);
32  robot->ArcWeldTraceControl(0, 0, 1, 0.08, 5, 5, 300, 1, 0.06, 4, 4, 300, 1, 0, 4, 1, 10, 0, 0);
33  robot->WeldingSetCurrentGradualChangeEnd();
34  robot->WeldingSetVoltageGradualChangeEnd();
35  return 0;
36}

14.69. Ustawianie niestandardowych parametrów wahadła

Nowe w wersji C++SDK-v3.8.6.

 1/**
 2* @brief Ustawia niestandardowe parametry wahadła
 3* @param [in] id Niestandardowy numer wahadła: 0-2
 4* @param [in] pointNum Liczba punktów wahadła 0-10
 5* @param [in] point Dane punktów ruchu x, y, z
 6* @param [in] stayTime Czas postoju wahadła ms
 7* @param [in] frequency Częstotliwość wahadła Hz
 8* @param [in] incStayType Tryb oczekiwania: 0-cykl nie zawiera czasu oczekiwania; 1-cykl zawiera czas oczekiwania
 9* @param [in] stationary Oczekiwanie na pozycji wahadła: 0-kontynuuj ruch w czasie oczekiwania; 1-pozycja nieruchoma w czasie oczekiwania
10* @return Kod błędu
11*/
12errno_t CustomWeaveSetPara(int id, int pointNum, DescTran point[10], double stayTime[10], double frequency, int incStayType, int stationary);

14.70. Pobieranie niestandardowych parametrów wahadła

Nowe w wersji C++SDK-v3.8.6.

 1/**
 2* @brief Pobiera niestandardowe parametry wahadła
 3* @param [in] id Niestandardowy numer wahadła: 0-2
 4* @param [out] pointNum Liczba punktów wahadła 0-10
 5* @param [out] point Dane punktów ruchu x, y, z
 6* @param [out] stayTime Czas postoju wahadła ms
 7* @param [out] frequency Częstotliwość wahadła Hz
 8* @param [out] incStayType Tryb oczekiwania: 0-cykl nie zawiera czasu oczekiwania; 1-cykl zawiera czas oczekiwania
 9* @param [out] stationary Oczekiwanie na pozycji wahadła: 0-kontynuuj ruch w czasie oczekiwania; 1-pozycja nieruchoma w czasie oczekiwania
10* @return Kod błędu
11*/
12errno_t CustomWeaveGetPara(int id, int& pointNum, DescTran point[10], double stayTime[10], double& frequency, int& incStayType, int& stationary);

14.71. Przykład kodu niestandardowych parametrów wahadła

Nowe w wersji C++SDK-v3.8.6.

 1int TestCustomWeaveSetPara()
 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 0;
11  }
12  robot.SetReConnectParam(true, 30000, 500);
13  DescTran point[10] = {};
14  point[0].x = -3;
15  point[0].y = -3;
16  point[0].z = 0;
17  point[1].x = -6;
18  point[1].y = 0;
19  point[1].z = 0;
20  point[2].x = -3;
21  point[2].y = 3;
22  point[2].z = 0;
23  point[3].x = 0;
24  point[3].y = 0;
25  point[3].z = 0;
26  double stayTime[10] = { 0,0,0,0,0,0,0,0,0,0 };
27  rtn = robot.CustomWeaveSetPara(2, 4, point, stayTime, 1.000, 0, 0);
28  printf("CustomWeaveSetPara rtn is %d\n", rtn);
29  robot.Sleep(1000);
30  int pointNum = 0;
31  double frequency;
32  int incStayType;
33  int stationary;
34  robot.CustomWeaveGetPara(2, pointNum, point, stayTime, frequency, incStayType, stationary);
35  printf("pointNum is %d\n", pointNum);
36  for (int i = 0; i < pointNum; i++)
37  {
38    printf("point %d, point x y z %f %f %f\n", i, point[i].x, point[i].y, point[i].z);
39  }
40  printf("fre is %f, stay is %d %d \n", frequency, incStayType, stationary);
41  robot.WeaveSetPara(0, 9, 1.000000, 1, 5.000000, 6.000000, 5.000000, 50, 100, 100, 0, 1, 0.000000, 0.000000);
42  DescPose desc_p1 = { -288.650, 367.807, 288.404, 0.000, -0.001, 0.001 };
43  DescPose desc_p2 = { -431.714, 367.815, 288.415, 0.001, 0.001, 0.000 };
44  DescPose desc_p3 = { -348.666, 427.798, 288.404, -0.000, -0.000, 0.001 };
45  JointPos j1 = { 140.656, -84.560, -91.707, -93.734, 90.000, 50.655 };
46  JointPos j2 = { 149.873, -98.298, -77.599, -94.103, 90.000, 59.873 };
47  JointPos j3 = { 139.773, -96.173, -80.014, -93.814, 90.000, 49.772 };
48  ExaxisPos epos = {};
49  DescPose offset_pos = {};
50  robot.MoveJ(&j1, &desc_p1, 3, 0, 100, 100, 100, &epos, -1, 0, &offset_pos);
51  robot.WeaveStart(0);
52  robot.Circle(&j3, &desc_p3, 3, 0, 100, 100, &epos, &j2, &desc_p2, 3, 0, 100, 100, &epos, 10, -1, &offset_pos);
53  robot.WeaveEnd(0);
54  robot.MoveJ(&j1, &desc_p1, 3, 0, 100, 100, 100, &epos, -1, 0, &offset_pos);
55  robot.WeaveStart(0);
56  robot.MoveC(&j3, &desc_p3, 3, 0, 100, 100, &epos, 0, &offset_pos, &j2, &desc_p2, 3, 0, 100, 100, &epos, 0, &offset_pos, 10, -1);
57  robot.WeaveEnd(0);
58  robot.MoveJ(&j1, &desc_p1, 3, 0, 100, 100, 100, &epos, -1, 0, &offset_pos);
59  robot.WeaveStart(0);
60  robot.MoveL(&j2, &desc_p2, 3, 0, 100, 100, 10, -1, &epos, 0, 0, &offset_pos, 0, 100);
61  robot.WeaveEnd(0);
62  robot.CloseRPC();
63}

14.72. Konfiguracja parametrów spawarki laserowej

 1/**
 2* @brief Konfiguracja parametrów spawarki laserowej
 3* @param[in] io_type Typ komunikacji 0-IO 1-UDP
 4* @param[in] num Numer grupy do ustawienia (1~10)
 5* @param[in] scanSpeed Prędkość skanowania
 6* @param[in] scanWidth Szerokość skanowania
 7* @param[in] peakPower Moc szczytowa
 8* @param[in] dutyCycle Współczynnik wypełnienia
 9* @param[in] freq Częstotliwość
10* @return Kod błędu
11*/
12errno_t SetLaserWeldingParam(int io_type, int num, int scanSpeed, int scanWidth, int peakPower, int dutyCycle, int freq);

14.73. Ustawianie rozpoczęcia/zatrzymania spawania laserowego

1/**
2* @brief Ustawianie rozpoczęcia/zatrzymania spawania laserowego
3* @param[in] io_type Typ komunikacji 0-IO 1-UDP
4* @param[in] status Słowo sterujące 0-zatrzymaj emisję 1-rozpocznij emisję
5* @param[in] max_waittime Maksymalny czas oczekiwania, jednostka milisekundy, domyślnie 10000
6* @return Kod błędu
7*/
8errno_t SetLaserWeldingStartEnd(int io_type, int status, int max_waittime = 10000);

14.74. Włączanie/wyłączanie spawarki laserowej

1/**
2* @brief Włączanie/wyłączanie spawarki laserowej
3* @param[in] io_type Typ komunikacji 0-IO 1-UDP
4* @param[in] status 0-wyłącz 1-włącz
5* @return Kod błędu
6*/
7errno_t SetLaserWeldingEnable(int io_type, int status);

14.75. Resetowanie usterki spawarki laserowej

1/**
2* @brief Resetowanie usterki spawarki laserowej
3* @param[in] io_type Typ komunikacji 0-IO 1-UDP
4* @param[in] status Słowo sterujące 0-nieważne 1-reset usterki
5* @return Kod błędu
6*/
7errno_t ResetLaserWeldingErr(int io_type, int status);

14.76. Pobieranie stanu pracy spawarki laserowej

1/**
2* @brief Pobieranie stanu pracy spawarki laserowej
3* @param[in] io_type Typ komunikacji 0-IO 1-UDP
4* @param[out] status Słowo sterujące 0-zatrzymana 1-pracuje
5* @return Kod błędu
6*/
7errno_t GetLaserWeldingRunningState(int io_type, int& status);

14.77. Pobieranie stanu usterki spawarki laserowej

1/**
2* @brief Pobieranie stanu usterki spawarki laserowej
3* @param[in] io_type Typ komunikacji 0-IO 1-UDP
4* @param[out] status 0-brak usterki 1-istnieje usterka
5* @return Kod błędu
6*/
7errno_t GetLaserWeldingErrState(int io_type, int& status);

14.78. Pobieranie parametrów konfiguracyjnych spawarki laserowej

 1/**
 2* @brief Pobieranie parametrów konfiguracyjnych spawarki laserowej
 3* @param[in] num Numer grupy do ustawienia (1~10)
 4* @param[out] scanSpeed Prędkość skanowania
 5* @param[out] scanWidth Szerokość skanowania
 6* @param[out] peakPower Moc szczytowa
 7* @param[out] dutyCycle Współczynnik wypełnienia
 8* @param[out] freq Częstotliwość
 9* @return Kod błędu
10*/
11errno_t GetLaserWeldingParamTarget(int num, int& scanSpeed, int& scanWidth, int& peakPower, int& dutyCycle, int& freq);

14.79. Pobieranie aktualnie obowiązujących parametrów konfiguracyjnych spawarki laserowej

 1/**
 2* @brief Pobieranie aktualnie obowiązujących parametrów konfiguracyjnych spawarki laserowej
 3* @param[in] io_type Typ komunikacji 0-IO 1-UDP
 4* @param[out] scanSpeed Prędkość skanowania
 5* @param[out] scanWidth Szerokość skanowania
 6* @param[out] peakPower Moc szczytowa
 7* @param[out] dutyCycle Współczynnik wypełnienia
 8* @param[out] freq Częstotliwość
 9* @return Kod błędu, 0 oznacza sukces, niezerowy oznacza niepowodzenie
10*/
11errno_t GetLaserWeldingParamActual(int io_type, int& scanSpeed, int& scanWidth, int& peakPower, int& dutyCycle, int& freq);

14.80. Konfiguracja rozszerzonego portu DO włączania spawarki laserowej przez IO

1/**
2* @brief Konfiguracja rozszerzonego portu DO włączania spawarki laserowej przez IO
3* @param[in] ctrlModeDONum Numer rozszerzonego portu DO włączania spawarki laserowej
4* @return Kod błędu, 0 oznacza sukces, niezerowy oznacza niepowodzenie
5*/
6errno_t SetLaserWeldingEnableExtDoNum(int ctrlModeDONum);

14.81. Konfiguracja rozszerzonego portu DO uruchamiania spawarki laserowej przez IO

1/**
2* @brief Konfiguracja rozszerzonego portu DO uruchamiania spawarki laserowej przez IO
3* @param[in] ctrlModeDONum Numer rozszerzonego portu DO uruchamiania spawarki laserowej (rozpoczęcie/zakończenie emisji)
4* @return Kod błędu, 0 oznacza sukces, niezerowy oznacza niepowodzenie
5*/
6errno_t SetLaserWeldingStartExtDoNum(int ctrlModeDONum);

14.82. Konfiguracja rozszerzonego portu DO resetowania usterki spawarki laserowej przez IO

1/**
2* @brief Konfiguracja rozszerzonego portu DO resetowania usterki spawarki laserowej przez IO
3* @param[in] ctrlModeDONum Numer rozszerzonego portu DO resetowania usterki spawarki laserowej
4* @return Kod błędu, 0 oznacza sukces, niezerowy oznacza niepowodzenie
5*/
6errno_t SetLaserWeldingErrResetExtDoNum(int ctrlModeDONum);

14.83. Konfiguracja rozszerzonego portu DI stanu pracy (stanu emisji) spawarki laserowej przez IO

1/**
2* @brief Konfiguracja rozszerzonego portu DI stanu pracy (stanu emisji) spawarki laserowej przez IO
3* @param[in] diNum Konfiguracja rozszerzonego portu DI stanu pracy (stanu emisji) spawarki laserowej
4* @return Kod błędu, 0 oznacza sukces, niezerowy oznacza niepowodzenie
5*/
6errno_t SetLaserWeldingRunningStateExtDiNum(int diNum);

14.84. Konfiguracja rozszerzonego portu DI stanu usterki spawarki laserowej przez IO

1/**
2* @brief Konfiguracja rozszerzonego portu DI stanu usterki spawarki laserowej przez IO
3* @param[in] diNum Konfiguracja rozszerzonego portu DI stanu usterki spawarki laserowej
4* @return Kod błędu, 0 oznacza sukces, niezerowy oznacza niepowodzenie
5*/
6errno_t SetLaserWeldingErrStateExtDiNum(int diNum);

14.85. Przykład kodu spawania laserowego

 1int TestLaserWeld()
 2{
 3    ROBOT_STATE_PKG pkg = {};
 4    FRRobot robot;
 5    robot.LoggerInit();
 6    robot.SetLoggerLevel(1);
 7    robot.SetReConnectParam(true, 300000, 500);
 8    int rtn = robot.RPC("192.168.58.2");
 9    if (rtn != 0)
10    {
11        return -1;
12    }
13    rtn = robot.ExtDevLoadUDPDriver();
14    if (rtn != 0)
15    {
16        std::cout << "Failed to load UDP driver, error code: " << rtn << std::endl;
17    }
18    robot.Sleep(1000);
19    rtn = robot.SetLaserWeldingParam(1, 3, 2000, 3, 1500, 100, 1000);
20    if (rtn != 0)
21    {
22        std::cout << "SetLaserWeldingParam failed, error code: " << rtn << std::endl;
23    }
24    else
25    {
26        std::cout << "SetLaserWeldingParam success" << std::endl;
27    }
28    rtn = robot.SetLaserWeldingStartExtDoNum(1);
29    if (rtn != 0)
30    {
31        std::cout << "SetLaserWeldingStartExtDoNum failed, error code: " << rtn << std::endl;
32    }
33    rtn = robot.Mode(0);
34    if (rtn != 0)
35    {
36        std::cout << "Set mode 0 failed, error code: " << rtn << std::endl;
37    }
38    robot.Sleep(1000);
39    DescPose desc_pos1(-303.721, -206.960, 297.105, 152.209, 19.857, 109.166);
40    DescPose desc_pos2(-301.575, -254.888, 284.786, 155.919, 26.946, 111.629);
41    DescPose desc_safe(-344.386, -280.830, 435.073, 173.835, 15.333, 124.931);
42    JointPos jointPos1(9.827, -99.740, 120.088, -78.900, -77.241, -17.904);
43    JointPos jointPos2(15.251, -96.456, 120.138, -84.664, -68.542, -17.843);
44    JointPos jointSafe(19.142, -98.078, 101.493, -83.078, -77.070, -17.794);
45    ExaxisPos exaxis(0.0, 0.0, 0.0, 0.0);
46    DescPose offset(0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
47    int error = robot.MoveL(&desc_pos1,0, 0, 100, 100, 100, -1, 0, &exaxis, 0, 0, &offset, -1, 0);
48    std::cout << "MoveL to pos1 return: " << error << std::endl;
49    rtn = robot.SetLaserWeldingStartEnd(1, 1, 10000);
50    if (rtn != 0)
51    {
52        std::cout << "SetLaserWeldingStartEnd (start) failed, error code: " << rtn << std::endl;
53    }
54    else
55    {
56        std::cout << "Laser started" << std::endl;
57    }
58    rtn = robot.MoveL(&desc_pos2,0, 0, 30, 100, 100, -1, 0, &exaxis, 0, 0, &offset, -1, 0);
59    std::cout << "MoveL to pos2 return: " << rtn << std::endl;
60    rtn = robot.SetLaserWeldingStartEnd(1, 0, 10000);
61    if (rtn != 0)
62    {
63        std::cout << "SetLaserWeldingStartEnd (stop) failed, error code: " << rtn << std::endl;
64    }
65    else
66    {
67        std::cout << "Laser stopped" << std::endl;
68    }
69    robot.Sleep(500);
70    rtn = robot.MoveL(&desc_safe, 0, 0, 100, 100, 100, -1, 0, &exaxis, 0, 0, &offset, -1, 0);
71    std::cout << "MoveL to safe_pos return: " << rtn << std::endl;
72    rtn = robot.Mode(1);
73    if (rtn != 0)
74    {
75        std::cout << "Set mode 1 failed, error code: " << rtn << std::endl;
76    }
77    robot.Sleep(1000);
78    robot.CloseRPC();
79    robot.Sleep(1000);
80    std::cout << "Test completed" << std::endl;
81    return 0;
82}