14. Soldagem do Robô
14.1. Definir Parâmetros da Curva de Processo de Soldagem
Novo na versão C++SDK-v2.1.5.0.
1/**
2 * @brief Define os parâmetros da curva de processo de soldagem
3 * @param [in] id Número do processo de soldagem (1-99)
4 * @param [in] startCurrent Corrente de abertura de arco (A)
5 * @param [in] startVoltage Tensão de abertura de arco (V)
6 * @param [in] startTime Tempo de abertura de arco (ms)
7 * @param [in] weldCurrent Corrente de soldagem (A)
8 * @param [in] weldVoltage Tensão de soldagem (V)
9 * @param [in] endCurrent Corrente de fechamento de arco (A)
10 * @param [in] endVoltage Tensão de fechamento de arco (V)
11 * @param [in] endTime Tempo de fechamento de arco (ms)
12 * @return Código de erro
13 */
14errno_t WeldingSetProcessParam(int id, double startCurrent, double startVoltage, double startTime, double weldCurrent, double weldVoltage, double endCurrent, double endVoltage, double endTime);
14.2. Obter Parâmetros da Curva de Processo de Soldagem
Novo na versão C++SDK-v2.1.5.0.
1/**
2 * @brief Obtém os parâmetros da curva de processo de soldagem
3 * @param [in] id Número do processo de soldagem (1-99)
4 * @param [out] startCurrent Corrente de abertura de arco (A)
5 * @param [out] startVoltage Tensão de abertura de arco (V)
6 * @param [out] startTime Tempo de abertura de arco (ms)
7 * @param [out] weldCurrent Corrente de soldagem (A)
8 * @param [out] weldVoltage Tensão de soldagem (V)
9 * @param [out] endCurrent Corrente de fechamento de arco (A)
10 * @param [out] endVoltage Tensão de fechamento de arco (V)
11 * @param [out] endTime Tempo de fechamento de arco (ms)
12 * @return Código de erro
13 */
14errno_t WeldingGetProcessParam(int id, double& startCurrent, double& startVoltage, double& startTime, double& weldCurrent, double& weldVoltage, double& endCurrent, double& endVoltage, double& endTime);
14.3. Definir Relação entre Corrente de Soldagem e Saída Analógica
Novo na versão C++SDK-v2.1.1.0.
1/**
2* @brief Define a relação entre corrente de soldagem e saída analógica
3* @param [in] currentMin Valor de corrente do ponto esquerdo da relação linear corrente de soldagem-saída analógica (A)
4* @param [in] currentMax Valor de corrente do ponto direito da relação linear corrente de soldagem-saída analógica (A)
5* @param [in] outputVoltageMin Valor de tensão de saída analógica do ponto esquerdo da relação linear corrente de soldagem-saída analógica (V)
6* @param [in] outputVoltageMax Valor de tensão de saída analógica do ponto direito da relação linear corrente de soldagem-saída analógica (V)
7* @return Código de erro
8*/
9errno_t WeldingSetCurrentRelation(double currentMin, double currentMax, double outputVoltageMin, double outputVoltageMax);
14.4. Definir Relação entre Tensão de Soldagem e Saída Analógica
Novo na versão C++SDK-v2.1.1.0.
1/**
2* @brief Define a relação entre tensão de soldagem e saída analógica
3* @param [in] weldVoltageMin Valor de tensão de soldagem do ponto esquerdo da relação linear tensão de soldagem-saída analógica (A)
4* @param [in] weldVoltageMax Valor de tensão de soldagem do ponto direito da relação linear tensão de soldagem-saída analógica (A)
5* @param [in] outputVoltageMin Valor de tensão de saída analógica do ponto esquerdo da relação linear tensão de soldagem-saída analógica (V)
6* @param [in] outputVoltageMax Valor de tensão de saída analógica do ponto direito da relação linear tensão de soldagem-saída analógica (V)
7* @return Código de erro
8*/
9errno_t WeldingSetVoltageRelation(double weldVoltageMin, double weldVoltageMax, double outputVoltageMin, double outputVoltageMax);
14.5. Obter Relação entre Corrente de Soldagem e Saída Analógica
Novo na versão C++SDK-v2.1.1.0.
1/**
2* @brief Obtém a relação entre corrente de soldagem e saída analógica
3* @param [out] currentMin Valor de corrente do ponto esquerdo da relação linear corrente de soldagem-saída analógica (A)
4* @param [out] currentMax Valor de corrente do ponto direito da relação linear corrente de soldagem-saída analógica (A)
5* @param [out] outputVoltageMin Valor de tensão de saída analógica do ponto esquerdo da relação linear corrente de soldagem-saída analógica (V)
6* @param [out] outputVoltageMax Valor de tensão de saída analógica do ponto direito da relação linear corrente de soldagem-saída analógica (V)
7* @return Código de erro
8*/
9errno_t WeldingGetCurrentRelation(double *currentMin, double *currentMax, double *outputVoltageMin, double *outputVoltageMax);
14.6. Obter Relação entre Tensão de Soldagem e Saída Analógica
Novo na versão C++SDK-v2.1.1.0.
1/**
2* @brief Obtém a relação entre tensão de soldagem e saída analógica
3* @param [out] weldVoltageMin Valor de tensão de soldagem do ponto esquerdo da relação linear tensão de soldagem-saída analógica (A)
4* @param [out] weldVoltageMax Valor de tensão de soldagem do ponto direito da relação linear tensão de soldagem-saída analógica (A)
5* @param [out] outputVoltageMin Valor de tensão de saída analógica do ponto esquerdo da relação linear tensão de soldagem-saída analógica (V)
6* @param [out] outputVoltageMax Valor de tensão de saída analógica do ponto direito da relação linear tensão de soldagem-saída analógica (V)
7* @return Código de erro
8*/
9errno_t WeldingGetVoltageRelation(double *weldVoltageMin, double *weldVoltageMax, double *outputVoltageMin, double *outputVoltageMax);
14.7. Definir Corrente de Soldagem
Novo na versão C++SDK-v2.1.1.0.
1/**
2* @brief Define a corrente de soldagem
3* @param [in] ioType Tipo de E/S de controle 0-E/S da caixa de controle; 1-E/S estendida
4* @param [in] current Valor da corrente de soldagem (A)
5* @param [in] AOIndex Porta de saída analógica da caixa de controle para corrente de soldagem (0-1)
6* @param [in] blend Se suaviza 0-não suaviza; 1-suaviza
7* @return Código de erro
8*/
9errno_t WeldingSetCurrent(int ioType, double current, int AOIndex, int blend);
14.8. Definir Tensão de Soldagem
Novo na versão C++SDK-v2.1.1.0.
1/**
2* @brief Define a tensão de soldagem
3* @param [in] ioType Tipo de E/S de controle 0-E/S da caixa de controle; 1-E/S estendida
4* @param [in] voltage Valor da tensão de soldagem (A)
5* @param [in] AOIndex Porta de saída analógica da caixa de controle para tensão de soldagem (0-1)
6* @param [in] blend Se suaviza 0-não suaviza; 1-suaviza
7* @return Código de erro
8*/
9errno_t WeldingSetVoltage(int ioType, double voltage, int AOIndex, int blend);
14.9. Definir Parâmetros de Oscilação
1/**
2 * @brief Define os parâmetros de oscilação
3 * @param [in] weaveNum Número de configuração dos parâmetros de oscilação de soldagem
4 * @param [in] weaveType Tipo de oscilação 0-oscilação triangular plana; 1-oscilação triangular em L vertical; 2-oscilação circular horária; 3-oscilação circular anti-horária; 4-oscilação senoidal plana; 5-oscilação senoidal em L vertical; 6-oscilação triangular vertical; 7-oscilação senoidal vertical
5 * @param [in] weaveFrequency Frequência de oscilação (Hz)
6 * @param [in] weaveIncStayTime Modo de espera 0-ciclo não inclui tempo de espera; 1-ciclo inclui tempo de espera
7 * @param [in] weaveRange Amplitude de oscilação (mm)
8 * @param [in] weaveLeftRange Comprimento da corda esquerda da oscilação triangular vertical (mm)
9 * @param [in] weaveRightRange Comprimento da corda direita da oscilação triangular vertical (mm)
10 * @param [in] additionalStayTime Tempo de permanência no ponto vertical da oscilação triangular vertical (mm)
11 * @param [in] weaveLeftStayTime Tempo de permanência à esquerda da oscilação (ms)
12 * @param [in] weaveRightStayTime Tempo de permanência à direita da oscilação (ms)
13 * @param [in] weaveCircleRadio Oscilação circular - taxa de retorno (0-100%)
14 * @param [in] weaveStationary Espera na posição de oscilação, 0-posição continua se movendo durante o tempo de espera; 1-posição permanece estática durante o tempo de espera
15 * @param [in] weaveYawAngle Ângulo de direção da oscilação (rotação em torno do eixo Z da oscilação), em graus
16 * @param [in] weaveRotAngle Ângulo de inclinação da direção da oscilação (deflexão em torno do eixo X da oscilação), em graus
17 * @return Código de erro
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. Exemplo de Código para Definir Parâmetros de Soldagem
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(¤t_min, ¤t_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. Definir Parâmetros de Oscilação em Tempo Real
Novo na versão C++SDK-v2.1.1.0.
1/**
2* @brief Define parâmetros de oscilação em tempo real
3* @param [in] weaveNum Número de configuração dos parâmetros de oscilação de soldagem
4* @param [in] weaveType Tipo de oscilação 0-oscilação triangular plana; 1-oscilação triangular em L vertical; 2-oscilação circular horária; 3-oscilação circular anti-horária; 4-oscilação senoidal plana; 5-oscilação senoidal em L vertical; 6-oscilação triangular vertical; 7-oscilação senoidal vertical
5* @param [in] weaveFrequency Frequência de oscilação (Hz)
6* @param [in] weaveIncStayTime Modo de espera 0-ciclo não inclui tempo de espera; 1-ciclo inclui tempo de espera
7* @param [in] weaveRange Amplitude de oscilação (mm)
8* @param [in] weaveLeftStayTime Tempo de permanência à esquerda da oscilação (ms)
9* @param [in] weaveRightStayTime Tempo de permanência à direita da oscilação (ms)
10* @param [in] weaveCircleRadio Oscilação circular - taxa de retorno (0-100%)
11* @param [in] weaveStationary Espera na posição de oscilação, 0-posição continua se movendo durante o tempo de espera; 1-posição permanece estática durante o tempo de espera
12* @return Código de erro
13*/
14errno_t WeaveOnlineSetPara(int weaveNum, int weaveType, double weaveFrequency, int weaveIncStayTime, double weaveRange, int weaveLeftStayTime, int weaveRightStayTime, int weaveCircleRadio, int weaveStationary);
14.12. Definir Parâmetros de Detecção de Interrupção Inesperada do Arco de Soldagem do Robô
Novo na versão C++SDK-v2.1.8-3.7.8.
1/**
2 * @brief Define os parâmetros de detecção de interrupção inesperada do arco de soldagem do robô
3 * @param [in] checkEnable Se habilita a detecção; 0-não habilita; 1-habilita
4 * @param [in] arcInterruptTimeLength Duração de confirmação da interrupção do arco (ms)
5 * @return Código de erro
6*/
7errno_t WeldingSetCheckArcInterruptionParam(int checkEnable, int arcInterruptTimeLength);
14.13. Obter Parâmetros de Detecção de Interrupção Inesperada do Arco de Soldagem do Robô
Novo na versão C++SDK-v2.1.8-3.7.8.
1/**
2 * @brief Obtém os parâmetros de detecção de interrupção inesperada do arco de soldagem do robô
3 * @param [out] checkEnable Se habilita a detecção; 0-não habilita; 1-habilita
4 * @param [out] arcInterruptTimeLength Duração de confirmação da interrupção do arco (ms)
5 * @return Código de erro
6*/
7errno_t WeldingGetCheckArcInterruptionParam(int* checkEnable, int* arcInterruptTimeLength);
14.14. Definir Parâmetros de Recuperação de Interrupção de Soldagem do Robô
Novo na versão C++SDK-v2.1.8-3.7.8.
1/**
2 * @brief Define os parâmetros de recuperação de interrupção de soldagem do robô
3 * @param [in] enable Se habilita a recuperação de interrupção de soldagem
4 * @param [in] length Distância de sobreposição da solda (mm)
5 * @param [in] velocity Percentagem de velocidade do robô ao retornar ao ponto de reabertura de arco (0-100)
6 * @param [in] moveType Modo de movimento do robô até o ponto de reabertura de arco; 0-LIN; 1-PTP
7 * @return Código de erro
8*/
9errno_t WeldingSetReWeldAfterBreakOffParam(int enable, double length, double velocity, int moveType);
14.15. Obter Parâmetros de Recuperação de Interrupção de Soldagem do Robô
Novo na versão C++SDK-v2.1.8-3.7.8.
1/**
2 * @brief Obtém os parâmetros de recuperação de interrupção de soldagem do robô
3 * @param [out] enable Se habilita a recuperação de interrupção de soldagem
4 * @param [out] length Distância de sobreposição da solda (mm)
5 * @param [out] velocity Percentagem de velocidade do robô ao retornar ao ponto de reabertura de arco (0-100)
6 * @param [out] moveType Modo de movimento do robô até o ponto de reabertura de arco; 0-LIN; 1-PTP
7 * @return Código de erro
8*/
9errno_t WeldingGetReWeldAfterBreakOffParam(int* enable, double* length, double* velocity, int* moveType);
14.16. Definir Porta DO Estendida do Modo de Controle da Máquina de Solda
Novo na versão C++SDK-v2.1.5.0.
1/**
2* @brief Define a porta DO estendida do modo de controle da máquina de solda
3* @param DONum Porta DO do modo de controle da máquina de solda (0-127)
4* @return Código de erro
5*/
6errno_t SetWeldMachineCtrlModeExtDoNum(int DONum);
14.17. Definir Modo de Controle da Máquina de Solda
Novo na versão C++SDK-v2.1.5.0.
1/**
2* @brief Define o modo de controle da máquina de solda
3* @param [in] mode Modo de controle da máquina de solda; 0-modo unário CC; 1-modo unário pulsado; 2-modo JOB; 3-modo controle local; 4-modo separado; 5-modo CC/CV; 6-TIG; 7-CMT
4* @param [in] ioType Tipo de controle; 0-E/S da caixa de controle; 1-protocolo de comunicação digital (UDP); 2-protocolo de comunicação digital (ModbusTCP)
5* @return Código de erro
6*/
7errno_t SetWeldMachineCtrlMode(int mode, int ioType = 1);
14.18. Início da Soldagem
Novo na versão C++SDK-v2.1.1.0.
1/**
2* @brief Início da soldagem
3* @param [in] ioType Tipo de E/S 0-E/S do controlador; 1-E/S estendida
4* @param [in] arcNum Número do arquivo de configuração da máquina de solda
5* @param [in] timeout Tempo limite de abertura de arco
6* @return Código de erro
7*/
8errno_t ARCStart(int ioType, int arcNum, int timeout);
14.19. Fim da Soldagem
Novo na versão C++SDK-v2.1.1.0.
1/**
2* @brief Fim da soldagem
3* @param [in] ioType Tipo de E/S 0-E/S do controlador; 1-E/S estendida
4* @param [in] arcNum Número do arquivo de configuração da máquina de solda
5* @param [in] timeout Tempo limite de extinção do arco
6* @return Código de erro
7*/
8errno_t ARCEnd(int ioType, int arcNum, int timeout);
14.20. Início da Oscilação
Novo na versão C++SDK-v2.1.1.0.
1/**
2* @brief Início da oscilação
3* @param [in] weaveNum Número de configuração dos parâmetros de oscilação de soldagem
4* @return Código de erro
5*/
6errno_t WeaveStart(int weaveNum);
14.21. Fim da Oscilação
Novo na versão C++SDK-v2.1.1.0.
1/**
2* @brief Fim da oscilação
3* @param [in] weaveNum Número de configuração dos parâmetros de oscilação de soldagem
4* @return Código de erro
5*/
6errno_t WeaveEnd(int weaveNum);
14.22. Alimentação de Arame para Frente
Novo na versão C++SDK-v2.1.1.0.
1/**
2* @brief Alimentação de arame para frente
3* @param [in] ioType Tipo de E/S 0-E/S do controlador; 1-E/S estendida
4* @param [in] wireFeed Controle de alimentação de arame 0-parar alimentação; 1-alimentar
5* @return Código de erro
6*/
7errno_t SetForwardWireFeed(int ioType, int wireFeed);
14.23. Alimentação de Arame para Trás
Novo na versão C++SDK-v2.1.1.0.
1/**
2* @brief Alimentação de arame para trás
3* @param [in] ioType Tipo de E/S 0-E/S do controlador; 1-E/S estendida
4* @param [in] wireFeed Controle de alimentação de arame 0-parar alimentação; 1-alimentar
5* @return Código de erro
6*/
7errno_t SetReverseWireFeed(int ioType, int wireFeed);
14.24. Fornecimento de Gás
Novo na versão C++SDK-v2.1.1.0.
1/**
2* @brief Fornecimento de gás
3* @param [in] ioType Tipo de E/S 0-E/S do controlador; 1-E/S estendida
4* @param [in] airControl Controle de fornecimento de gás 0-parar fornecimento; 1-fornecer
5* @return Código de erro
6*/
7errno_t SetAspirated(int ioType, int airControl);
14.25. Definir Retomada de Soldagem do Robô Após Interrupção
Novo na versão C++SDK-v2.1.8-3.7.8.
1/**
2 * @brief Define a retomada de soldagem do robô após interrupção
3 * @return Código de erro
4*/
5errno_t WeldingStartReWeldAfterBreakOff();
14.26. Definir Saída da Soldagem do Robô Após Interrupção
Novo na versão C++SDK-v2.1.8-3.7.8.
1/**
2 * @brief Define a saída da soldagem do robô após interrupção
3 * @return Código de erro
4 */
5errno_t WeldingAbortWeldAfterBreakOff();
14.27. Exemplo de Código de Controle de Soldagem do Robô
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. Início da Soldagem por Segmentos
Novo na versão C++SDK-v2.1.1.0.
1/**
2* @brief Início da soldagem por segmentos
3* @param [in] startDesePos Posição cartesiana do ponto inicial
4* @param [in] endDesePos Pose cartesiana do ponto final
5* @param [in] startJPos Pose articular do ponto inicial
6* @param [in] endJPos Pose articular do ponto final
7* @param [in] weldLength Comprimento do segmento de solda (mm)
8* @param [in] noWeldLength Comprimento do segmento não soldado (mm)
9* @param [in] weldIOType Tipo de E/S de soldagem (0-E/S da caixa de controle; 1-E/S estendida)
10* @param [in] arcNum Número do arquivo de configuração da máquina de solda
11* @param [in] weldTimeout Tempo limite de abertura/fechamento de arco
12* @param [in] isWeave Se oscila
13* @param [in] weaveNum Número de configuração dos parâmetros de oscilação de soldagem
14* @param [in] tool Número da coordenada da ferramenta, intervalo [0~14]
15* @param [in] user Número da coordenada da peça, intervalo [0~14]
16* @param [in] vel Percentagem de velocidade, intervalo [0~100]
17* @param [in] acc Percentagem de aceleração, intervalo [0~100], temporariamente não disponível
18* @param [in] ovl Fator de escala de velocidade, intervalo [0~100]
19* @param [in] blendR [-1.0]-movimento até o final (bloqueante), [0~1000.0]-raio de suavização (não bloqueante), em mm
20* @param [in] epos Posição do eixo estendido, em mm
21* @param [in] search 0-sem busca de posição do arame, 1-com busca de posição do arame
22* @param [in] offset_flag 0-sem deslocamento, 1-deslocamento no sistema de coordenadas base/peça, 2-deslocamento no sistema de coordenadas da ferramenta
23* @param [in] offset_pos Deslocamento de pose
24* @return Código de erro
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. Exemplo de Código de Soldagem por Segmentos do Robô
Alterado na versão 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. Início da Oscilação de Simulação
Novo na versão C++SDK-v2.1.5.0.
1/**
2 * @brief Início da oscilação de simulação
3 * @param [in] weaveNum Número do parâmetro de oscilação
4 * @return Código de erro
5 */
6errno_t WeaveStartSim(int weaveNum);
14.31. Fim da Oscilação de Simulação
Novo na versão C++SDK-v2.1.5.0.
1/**
2 * @brief Fim da oscilação de simulação
3 * @param [in] weaveNum Número do parâmetro de oscilação
4 * @return Código de erro
5 */
6errno_t WeaveEndSim(int weaveNum);
14.32. Início da Detecção de Alerta de Trajetória (Sem Movimento)
Novo na versão C++SDK-v2.1.5.0.
1/**
2 * @brief Início da detecção de alerta de trajetória (sem movimento)
3 * @param [in] weaveNum Número do parâmetro de oscilação
4 * @return Código de erro
5 */
6errno_t WeaveInspectStart(int weaveNum);
14.33. Fim da Detecção de Alerta de Trajetória (Sem Movimento)
Novo na versão C++SDK-v2.1.5.0.
1/**
2 * @brief Fim da detecção de alerta de trajetória (sem movimento)
3 * @param [in] weaveNum Número do parâmetro de oscilação
4 * @return Código de erro
5 */
6errno_t WeaveInspectEnd(int weaveNum);
14.34. Início da Mudança Gradual da Oscilação
1/**
2 * @brief Início da mudança gradual da oscilação
3 * @param [in] weaveChangeFlag 1-alterar parâmetro de oscilação; 2-alterar parâmetro de oscilação + velocidade de soldagem
4 * @param [in] weaveNum Número da oscilação
5 * @param [in] velStart Velocidade inicial de soldagem, (cm/min)
6 * @param [in] velEnd Velocidade final de soldagem, (cm/min)
7 * @return Código de erro
8 */
9 errno_t WeaveChangeStart(int weaveChangeFlag, int weaveNum, double velStart, double velEnd);
14.35. Exemplo de Código de Soldagem com Mudança Gradual de Oscilação do Robô
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. Fim da Mudança Gradual da Oscilação
Novo na versão C++SDK-v2.2.0-3.8.0.
1/**
2 * @brief Fim da mudança gradual da oscilação
3 * @return Código de erro
4 */
5errno_t WeaveChangeEnd();
14.37. E/S Estendida - Configurar Sinal de Detecção de Gás da Máquina de Solda
Novo na versão C++SDK-v2.1.5.0.
1/**
2 * @brief E/S estendida - configurar sinal de detecção de gás da máquina de solda
3 * @param [in] DONum Número DO estendido do sinal de detecção de gás
4 * @return Código de erro
5 */
6errno_t SetAirControlExtDoNum(int DONum);
14.38. E/S Estendida - Configurar Sinal de Abertura de Arco da Máquina de Solda
Novo na versão C++SDK-v2.1.5.0.
1/**
2 * @brief E/S estendida - configurar sinal de abertura de arco da máquina de solda
3 * @param [in] DONum Número DO estendido do sinal de abertura de arco da máquina de solda
4 * @return Código de erro
5 */
6errno_t SetArcStartExtDoNum(int DONum);
14.39. E/S Estendida - Configurar Sinal de Alimentação de Arame para Trás da Máquina de Solda
Novo na versão C++SDK-v2.1.5.0.
1/**
2 * @brief E/S estendida - configurar sinal de alimentação de arame para trás da máquina de solda
3 * @param [in] DONum Número DO estendido do sinal de alimentação de arame para trás
4 * @return Código de erro
5 */
6errno_t SetWireReverseFeedExtDoNum(int DONum);
14.40. E/S Estendida - Configurar Sinal de Alimentação de Arame para Frente da Máquina de Solda
Novo na versão C++SDK-v2.1.5.0.
1/**
2 * @brief E/S estendida - configurar sinal de alimentação de arame para frente da máquina de solda
3 * @param [in] DONum Número DO estendido do sinal de alimentação de arame para frente
4 * @return Código de erro
5 */
6errno_t SetWireForwardFeedExtDoNum(int DONum);
14.41. E/S Estendida - Configurar Sinal de Sucesso de Abertura de Arco da Máquina de Solda
Novo na versão C++SDK-v2.1.5.0.
1/**
2 * @brief E/S estendida - configurar sinal de sucesso de abertura de arco da máquina de solda
3 * @param [in] DINum Número DI estendido do sinal de sucesso de abertura de arco
4 * @return Código de erro
5 */
6errno_t SetArcDoneExtDiNum(int DINum);
14.42. E/S Estendida - Configurar Sinal de Prontidão da Máquina de Solda
Novo na versão C++SDK-v2.1.5.0.
1/**
2 * @brief E/S estendida - configurar sinal de prontidão da máquina de solda
3 * @param [in] DINum Número DI estendido do sinal de prontidão da máquina de solda
4 * @return Código de erro
5 */
6errno_t SetWeldReadyExtDiNum(int DINum);
14.43. E/S Estendida - Configurar Sinal de Recuperação de Interrupção de Soldagem
Novo na versão C++SDK-v2.1.5.0.
1/**
2 * @brief E/S estendida - configurar sinal de recuperação de interrupção de soldagem
3 * @param [in] reWeldDINum Número DI estendido do sinal de retomada de soldagem após interrupção
4 * @param [in] abortWeldDINum Número DI estendido do sinal de saída de soldagem após interrupção
5 * @return Código de erro
6 */
7errno_t SetExtDIWeldBreakOffRecover(int reWeldDINum, int abortWeldDINum);
14.44. Exemplo de Código para Configurar Sinais de Soldagem com E/S Estendida
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. Controle de Rastreamento de Arco
Novo na versão C++SDK-v2.1.5.0.
1 /**
2 * @brief Controle de rastreamento de arco
3 * @param [in] flag Chave, 0-desligar; 1-ligar
4 * @param [in] dalayTime Tempo de atraso, em ms
5 * @param [in] isLeftRight Compensação de desvio esquerda/direita
6 * @param [in] klr Coeficiente de ajuste esquerda/direita (sensibilidade);
7 * @param [in] tStartLr Tempo de início da compensação esquerda/direita cyc
8 * @param [in] stepMaxLr Quantidade máxima de compensação por vez esquerda/direita mm
9 * @param [in] sumMaxLr Quantidade máxima total de compensação esquerda/direita mm
10 * @param [in] isUpLow Compensação de desvio acima/abaixo
11 * @param [in] kud Coeficiente de ajuste acima/abaixo (sensibilidade);
12 * @param [in] tStartUd Tempo de início da compensação acima/abaixo cyc
13 * @param [in] stepMaxUd Quantidade máxima de compensação por vez acima/abaixo mm
14 * @param [in] sumMaxUd Quantidade máxima total de compensação acima/abaixo
15 * @param [in] axisSelect Seleção do sistema de coordenadas acima/abaixo, 0-oscilação; 1-ferramenta; 2-base
16 * @param [in] referenceType Modo de definição da corrente de referência acima/abaixo, 0-feedback; 1-constante
17 * @param [in] referSampleStartUd Início da amostragem da corrente de referência acima/abaixo (feedback);, cyc
18 * @param [in] referSampleCountUd Contagem do ciclo de amostragem da corrente de referência acima/abaixo (feedback);, cyc
19 * @param [in] referenceCurrent Corrente de referência acima/abaixo mA
20 * @param [in] offsetType Tipo de rastreamento com deslocamento, 0-sem deslocamento; 1-amostragem; 2-percentagem
21 * @param [in] offsetParameter Parâmetro de deslocamento; amostragem (tempo de início da amostragem de deslocamento, padrão um ciclo); percentagem (percentagem de deslocamento (-100 ~ 100))
22 * @return Código de erro
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. Configurar Porta de Sinal de Entrada de Rastreamento de Arco
Novo na versão C++SDK-v2.1.5.0.
1 /**
2 * @brief Configurar porta de sinal de entrada de rastreamento de arco
3 * @param [in] channel Banda de passagem AI do rastreamento de arco, [0-3]
4 * @return Código de erro
5 */
6 errno_t ArcWeldTraceExtAIChannelConfig(int channel);
14.47. Ativação da Compensação de Rastreamento de Arco + Múltiplas Camadas e Múltiplos Passes
Novo na versão C++SDK-v2.1.5.0.
1/**
2* @brief Ativação da compensação de rastreamento de arco + múltiplas camadas e múltiplos passes
3* @return Código de erro
4*/
5errno_t ArcWeldTraceReplayStart();
14.48. Desativação da Compensação de Rastreamento de Arco + Múltiplas Camadas e Múltiplos Passes
Novo na versão C++SDK-v2.1.5.0.
1/**
2* @brief Desativação da compensação de rastreamento de arco + múltiplas camadas e múltiplos passes
3* @return Código de erro
4*/
5errno_t ArcWeldTraceReplayEnd();
14.49. Mudança de Coordenadas de Deslocamento - Soldagem de Múltiplas Camadas e Múltiplos Passes
Novo na versão C++SDK-v2.1.5.0.
1/**
2* @brief Mudança de coordenadas de deslocamento - soldagem de múltiplas camadas e múltiplos passes
3* @return Código de erro
4*/
5errno_t MultilayerOffsetTrsfToBase(DescTran pointO, DescTran pointX, DescTran pointZ, double dx, double dy, double db, DescPose& offset);
14.50. Exemplo de Código de Rastreamento de Arco com Soldagem de Múltiplas Camadas e Múltiplos Passes
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. Seleção do Canal AI de Feedback de Corrente da Máquina de Solda para Rastreamento de Arco
1/**
2 * @brief Seleção do canal AI de feedback de corrente da máquina de solda para rastreamento de arco
3 * @param [in] channel Canal; 0-AI estendido 0; 1-AI estendido 1; 2-AI estendido 2; 3-AI estendido 3; 4-AI da caixa de controle 0; 5-AI da caixa de controle 1
4 * @return Código de erro
5 */
6 errno_t ArcWeldTraceAIChannelCurrent(int channel);
14.52. Seleção do Canal AI de Feedback de Tensão da Máquina de Solda para Rastreamento de Arco
1/**
2 * @brief Seleção do canal AI de feedback de tensão da máquina de solda para rastreamento de arco
3 * @param [in] channel Canal; 0-AI estendido 0; 1-AI estendido 1; 2-AI estendido 2; 3-AI estendido 3; 4-AI da caixa de controle 0; 5-AI da caixa de controle 1
4 * @return Código de erro
5 */
6 errno_t ArcWeldTraceAIChannelVoltage(int channel);
14.53. Parâmetros de Conversão de Feedback de Corrente da Máquina de Solda para Rastreamento de Arco
1 /**
2 * @brief Parâmetros de conversão de feedback de corrente da máquina de solda para rastreamento de arco
3 * @param [in] AILow Limite inferior do canal AI, valor padrão 0V, intervalo [0-10V]
4 * @param [in] AIHigh Limite superior do canal AI, valor padrão 10V, intervalo [0-10V]
5 * @param [in] currentLow Valor de corrente da máquina de solda correspondente ao limite inferior do AI, valor padrão 0V, intervalo [0-200V]
6 * @param [in] currentHigh Valor de corrente da máquina de solda correspondente ao limite superior do AI, valor padrão 100V, intervalo [0-200V]
7 * @return Código de erro
8 */
9 errno_t ArcWeldTraceCurrentPara(float AILow, float AIHigh, float currentLow, float currentHigh);
14.54. Parâmetros de Conversão de Feedback de Tensão da Máquina de Solda para Rastreamento de Arco
1 /**
2 * @brief Parâmetros de conversão de feedback de tensão da máquina de solda para rastreamento de arco
3 * @param [in] AILow Limite inferior do canal AI, valor padrão 0V, intervalo [0-10V]
4 * @param [in] AIHigh Limite superior do canal AI, valor padrão 10V, intervalo [0-10V]
5 * @param [in] voltageLow Valor de tensão da máquina de solda correspondente ao limite inferior do AI, valor padrão 0V, intervalo [0-200V]
6 * @param [in] voltageHigh Valor de tensão da máquina de solda correspondente ao limite superior do AI, valor padrão 100V, intervalo [0-200V]
7 * @return Código de erro
8 */
9 errno_t ArcWeldTraceVoltagePara(float AILow, float AIHigh, float voltageLow, float voltageHigh);
14.55. Exemplo de Código de Rastreamento de Arco
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);// ----definir tensão
19 robot->WeldingSetCurrent(0, 260, 0, 0);// ----definir corrente
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. Definir Portas E/S Estendidas para Busca de Posição do Arame de Solda
Novo na versão C++SDK-v2.1.5.0.
1/**
2* @brief Define as portas E/S estendidas para busca de posição do arame de solda
3* @param searchDoneDINum Porta DO de sucesso na busca de posição do arame (0-127)
4* @param searchStartDONum Porta DO de controle de início/parada da busca de posição do arame (0-127)
5* @return Código de erro
6*/
7errno_t SetWireSearchExtDIONum(int searchDoneDINum, int searchStartDONum);
14.57. Programa de Exemplo
Novo na versão 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); //ponto inicial
35robot->MoveL(&jointREF0B, &descREF0B, 1, 0, 10, 100, 100, -1, &exaxisPos, 1, 0, &offdese); //ponto de direção
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); //ponto inicial
41robot->MoveL(&jointREF1B, &descREF1B, 1, 0, 10, 100, 100, -1, &exaxisPos, 1, 0, &offdese); //ponto de direção
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); //ponto inicial
47robot->MoveL(&jointREF0B, &descREF0B, 1, 0, 10, 100, 100, -1, &exaxisPos, 1, 0, &offdese); //ponto de direção
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); //ponto inicial
53robot->MoveL(&jointREF1B, &descREF1B, 1, 0, 10, 100, 100, -1, &exaxisPos, 1, 0, &offdese); //ponto de direção
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. Início da Busca de Posição do Arame de Solda
Novo na versão C++SDK-v2.1.5.0.
1/**
2* @brief Início da busca de posição do arame de solda
3* @param [in] refPos 1-ponto de referência 0-ponto de contato
4* @param [in] searchVel Velocidade de busca %
5* @param [in] searchDis Distância de busca mm
6* @param [in] autoBackFlag Flag de retorno automático, 0-não automático; -automático
7* @param [in] autoBackVel Velocidade de retorno automático %
8* @param [in] autoBackDis Distância de retorno automático mm
9* @param [in] offectFlag 1-busca com deslocamento; 0-busca no ponto ensinado
10* @return Código de erro
11*/
12 errno_t WireSearchStart(int refPos, float searchVel, int searchDis, int autoBackFlag, float autoBackVel, int autoBackDis, int offectFlag);
14.59. Fim da Busca de Posição do Arame de Solda
Novo na versão C++SDK-v2.1.5.0.
1 /**
2 * @brief Fim da busca de posição do arame de solda
3 * @param [in] refPos 1-ponto de referência 2-ponto de contato
4 * @param [in] searchVel Velocidade de busca %
5 * @param [in] searchDis Distância de busca mm
6 * @param [in] autoBackFlag Flag de retorno automático, 0-não automático; -automático
7 * @param [in] autoBackVel Velocidade de retorno automático %
8 * @param [in] autoBackDis Distância de retorno automático mm
9 * @param [in] offectFlag 1-busca com deslocamento; 2-busca no ponto ensinado
10 * @return Código de erro
11 */
12 errno_t WireSearchEnd(int refPos, float searchVel, int searchDis, int autoBackFlag, float autoBackVel, int autoBackDis, int offectFlag);
14.60. Calcular Deslocamento da Busca de Posição do Arame de Solda
Novo na versão C++SDK-v2.1.5.0.
1 /**
2 * @brief Calcular deslocamento da busca de posição do arame de solda
3 * @param [in] seamType Tipo de solda
4 * @param [in] method Método de cálculo
5 * @param [in] varNameRef Pontos de referência 1-6, "#" indica ausência de ponto variável
6 * @param [in] varNameRes Pontos de contato 1-6, "#" indica ausência de ponto variável
7 * @param [out] offectFlag 0-deslocamento adicionado diretamente ao ponto de comando; 1-deslocamento requer transformação de coordenadas do ponto de comando
8 * @param [out] offect Deslocamento da pose [x, y, z, a, b, c]
9 * @return Código de erro
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. Aguardar Conclusão da Busca de Posição do Arame de Solda
Novo na versão C++SDK-v2.1.5.0.
1 /**
2 * @brief Aguardar conclusão da busca de posição do arame de solda
3 * @return Código de erro
4 */
5 errno_t WireSearchWait(std::string varName);
14.62. Escrever Ponto de Contato da Busca de Posição do Arame no Banco de Dados
Novo na versão C++SDK-v2.1.5.0.
1 /**
2 * @brief Escrever ponto de contato da busca de posição do arame no banco de dados
3 * @param [in] varName Nome do ponto de contato "RES0" ~ "RES99"
4 * @param [in] pos Dados do ponto de contato [x, y, x, a, b, c]
5 * @return Código de erro
6 */
7 errno_t SetPointToDatabase(std::string varName, DescPose pos);
14.63. Exemplo de Código de Busca de Posição do Arame de Solda do Robô
Novo na versão 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); //ponto inicial
36 robot.MoveL(&jointREF0B, &descREF0B, 1, 1, 100, 100, 100, -1, &exaxisPos, 1, 0, &offdese); //ponto de direção
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); //ponto inicial
41 robot.MoveL(&jointREF1B, &descREF1B, 1, 1, 100, 100, 100, -1, &exaxisPos, 1, 0, &offdese); //ponto de direção
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); //ponto inicial
46 robot.MoveL(&jointREF0B, &descREF0B, 1, 1, 100, 100, 100, -1, &exaxisPos, 1, 0, &offdese); //ponto de direção
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); //ponto inicial
51 robot.MoveL(&jointREF1B, &descREF1B, 1, 1, 100, 100, 100, -1, &exaxisPos, 1, 0, &offdese); //ponto de direção
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. Definir Início da Mudança Gradual da Tensão de Soldagem
1 /**
2 * @brief Define o início da mudança gradual da tensão de soldagem
3 * @param [in] IOType Tipo de controle; 0-E/S da caixa de controle; 1-protocolo de comunicação digital (UDP); 2-protocolo de comunicação digital (ModbusTCP)
4 * @param [in] voltageStart Tensão de soldagem inicial (V)
5 * @param [in] voltageEnd Tensão de soldagem final (V)
6 * @param [in] AOIndex Número da porta AO da caixa de controle (0-1)
7 * @param [in] blend Se suaviza 0-não suaviza; 1-suaviza
8 * @return Código de erro
9 */
10 errno_t WeldingSetVoltageGradualChangeStart(int IOType, double voltageStart, double voltageEnd, int AOIndex, int blend);
14.65. Definir Fim da Mudança Gradual da Tensão de Soldagem
1 /**
2 * @brief Define o fim da mudança gradual da tensão de soldagem
3 * @return Código de erro
4 */
5 errno_t WeldingSetVoltageGradualChangeEnd();
14.66. Definir Início da Mudança Gradual da Corrente de Soldagem
1 /**
2 * @brief Define o início da mudança gradual da corrente de soldagem
3 * @param [in] IOType Tipo de controle; 0-E/S da caixa de controle; 1-protocolo de comunicação digital (UDP); 2-protocolo de comunicação digital (ModbusTCP)
4 * @param [in] voltageStart Corrente de soldagem inicial (A)
5 * @param [in] voltageEnd Corrente de soldagem final (A)
6 * @param [in] AOIndex Número da porta AO da caixa de controle (0-1)
7 * @param [in] blend Se suaviza 0-não suaviza; 1-suaviza
8 * @return Código de erro
9 */
10 errno_t WeldingSetCurrentGradualChangeStart(int IOType, double currentStart, double currentEnd, int AOIndex, int blend);
14.67. Definir Fim da Mudança Gradual da Corrente de Soldagem
1/**
2 * @brief Define o fim da mudança gradual da corrente de soldagem
3 * @return Código de erro
4*/
5errno_t WeldingSetCurrentGradualChangeEnd();
14.68. Exemplo de Código de Mudança Gradual de Corrente e Tensão de Soldagem do Robô
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. Definir Parâmetros de Oscilação Personalizada
Novo na versão C++SDK-v3.8.6.
1/**
2* @brief Define parâmetros de oscilação personalizada
3* @param [in] id Número da oscilação personalizada: 0-2
4* @param [in] pointNum Número de pontos de oscilação 0-10
5* @param [in] point Dados do ponto de extremidade de movimento x, y, z
6* @param [in] stayTime Tempo de permanência da oscilação ms
7* @param [in] frequency Frequência de oscilação Hz
8* @param [in] incStayType Modo de espera: 0-ciclo não inclui tempo de espera; 1-ciclo inclui tempo de espera
9* @param [in] stationary Espera na posição de oscilação: 0-continua movimento durante o tempo de espera; 1-posição permanece estática durante o tempo de espera
10* @return Código de erro
11*/
12errno_t CustomWeaveSetPara(int id, int pointNum, DescTran point[10], double stayTime[10], double frequency, int incStayType, int stationary);
14.70. Obter Parâmetros de Oscilação Personalizada
Novo na versão C++SDK-v3.8.6.
1/**
2* @brief Obtém parâmetros de oscilação personalizada
3* @param [in] id Número da oscilação personalizada: 0-2
4* @param [out] pointNum Número de pontos de oscilação 0-10
5* @param [out] point Dados do ponto de extremidade de movimento x, y, z
6* @param [out] stayTime Tempo de permanência da oscilação ms
7* @param [out] frequency Frequência de oscilação Hz
8* @param [out] incStayType Modo de espera: 0-ciclo não inclui tempo de espera; 1-ciclo inclui tempo de espera
9* @param [out] stationary Espera na posição de oscilação: 0-continua movimento durante o tempo de espera; 1-posição permanece estática durante o tempo de espera
10* @return Código de erro
11*/
12errno_t CustomWeaveGetPara(int id, int& pointNum, DescTran point[10], double stayTime[10], double& frequency, int& incStayType, int& stationary);
14.71. Exemplo de Código de Parâmetros de Oscilação Personalizada
Novo na versão 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}