14. Soldagem do Robô

14.1. Definir Parâmetros da Curva de Processo de Soldagem

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] param Parâmetros do processo de soldagem
5* @return Código de erro
6*/
7int WeldingSetProcessParam(int id, WeldingProcessParam param);

14.2. Obter Parâmetros da Curva de Processo de Soldagem

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] param Parâmetros do processo de soldagem
5* @return Código de erro
6*/
7int WeldingGetProcessParam(int id, WeldingProcessParam param);

14.3. Definir Relação entre Corrente de Soldagem e Saída Analógica

1/**
2* @brief Define a relação entre corrente de soldagem e saída analógica
3* @param [in] relation Valores da relação
4* @return Código de erro
5*/
6int WeldingSetCurrentRelation(WeldCurrentAORelation relation);

14.4. Definir Relação entre Tensão de Soldagem e Saída Analógica

1/**
2* @brief Define a relação entre tensão de soldagem e saída analógica
3* @param [in] relation Valores da relação tensão de soldagem-saída analógica
4* @return Código de erro
5*/
6int WeldingSetVoltageRelation(WeldVoltageAORelation relation);

14.5. Obter Relação entre Corrente de Soldagem e Saída Analógica

1/**
2* @brief Obtém a relação entre corrente de soldagem e saída analógica
3* @param [out] relation Valores da relação
4* @return Código de erro
5*/
6int WeldingGetCurrentRelation(WeldCurrentAORelation relation);

14.6. Obter Relação entre Tensão de Soldagem e Saída Analógica

1/**
2* @brief Obtém a relação entre tensão de soldagem e saída analógica
3* @param [out] relation Valores da relação tensão de soldagem-saída analógica
4* @return Código de erro
5*/
6int WeldingGetVoltageRelation(WeldVoltageAORelation relation);

14.7. Definir Corrente de Soldagem

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*/
9int WeldingSetCurrent(int ioType, double current, int AOIndex, int blend);

14.8. Definir Tensão de Soldagem

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*/
9int WeldingSetVoltage(int ioType, double voltage, int AOIndex, int blend);

14.9. Definir Parâmetros de Oscilação

Alterado na versão Java: SDK-v1.0.5-3.8.2

 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 direção da oscilação (rotação em torno do eixo X da oscilação), em graus
17* @return Código de erro
18*/
19int 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)

14.10. Exemplo de Código para Definir Parâmetros de Soldagem

 1public static int TestSetWeldParam(Robot robot)
 2{
 3    WeldingProcessParam para1 = new WeldingProcessParam(177, 27, 1000, 178, 28, 176, 26, 1000);
 4    WeldingProcessParam para2 = new WeldingProcessParam(188, 28, 555, 199, 29, 133, 23, 333);
 5
 6    robot.WeldingSetProcessParam(1, para1);
 7    robot.WeldingSetProcessParam(2, para2);
 8
 9    double startCurrent = 0;
10    double startVoltage = 0;
11    int startTime = 0;
12    double weldCurrent = 0;
13    double weldVoltage = 0;
14    double endCurrent = 0;
15    double endVoltage = 0;
16    int endTime = 0;
17
18    WeldingProcessParam param = new WeldingProcessParam(startCurrent, startVoltage, startTime, weldCurrent, weldVoltage, endCurrent, endVoltage, endTime);
19    robot.WeldingGetProcessParam(1, param);
20    robot.WeldingGetProcessParam(2, param);
21
22    WeldCurrentAORelation rela1 = new WeldCurrentAORelation(0, 400, 0, 10, 0);
23    int rtn = robot.WeldingSetCurrentRelation(rela1);
24
25    WeldVoltageAORelation rela2 = new WeldVoltageAORelation(0, 40, 0, 10, 1);
26    rtn = robot.WeldingSetVoltageRelation(rela2);
27
28    double current_min = 0;
29    double current_max = 0;
30    double vol_min = 0;
31    double vol_max = 0;
32    double output_vmin = 0;
33    double output_vmax = 0;
34    int curIndex = 0;
35    int volIndex = 0;
36    WeldCurrentAORelation rela3 = new WeldCurrentAORelation(current_min, current_max, output_vmin, output_vmax, curIndex);
37    rtn = robot.WeldingGetCurrentRelation(rela3);
38
39    WeldVoltageAORelation rela4 = new WeldVoltageAORelation(0, 0, 0, 0, 0);
40    rtn = robot.WeldingGetVoltageRelation(rela4);
41
42    rtn = robot.WeldingSetCurrent(0, 100, 0, 0);
43
44    robot.Sleep(3000);
45
46    rtn = robot.WeldingSetVoltage(0, 10, 0, 0);
47
48    rtn = robot.WeaveSetPara(0, 0, 2.000000, 0, 10.000000, 0.000000, 0.000000, 0, 0, 0, 0, 0, 60.000000, 0);
49
50    robot.WeaveOnlineSetPara(0, 0, 1, 0, 20, 0, 0, 0, 0);
51
52    rtn = robot.WeldingSetCheckArcInterruptionParam(1, 200);
53    rtn = robot.WeldingSetReWeldAfterBreakOffParam(1, 5.7, 98.2, 0);
54    int enable = 0;
55    double length = 0;
56    double velocity = 0;
57    int moveType = 0;
58    int checkEnable = 0;
59    int arcInterruptTimeLength = 0;
60    List<Integer> inter = new ArrayList<>();
61    List<Number> num = new ArrayList<>();
62
63    inter = robot.WeldingGetCheckArcInterruptionParam();
64    num = robot.WeldingGetReWeldAfterBreakOffParam();
65
66    robot.SetWeldMachineCtrlModeExtDoNum(17);
67    for (int i = 0; i < 5; i++)
68    {
69        robot.SetWeldMachineCtrlMode(0);
70        robot.Sleep(1000);
71        robot.SetWeldMachineCtrlMode(1);
72        robot.Sleep(1000);
73    }
74    return 0;
75}

14.11. Definir Parâmetros de Oscilação em Tempo Real

 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*/
14int 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ô

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*/
7int WeldingSetCheckArcInterruptionParam(int checkEnable, int arcInterruptTimeLength);

14.13. Obter Parâmetros de Detecção de Interrupção Inesperada do Arco de Soldagem do Robô

1/**
2* @brief Obtém os parâmetros de detecção de interrupção inesperada do arco de soldagem do robô
3* @return List[0]:código de erro; List[1]:double se habilita detecção; 0-não habilita; 1-habilita; List[2]:duração de confirmação da interrupção do arco (ms)
4*/
5List<Integer> WeldingGetCheckArcInterruptionParam();

14.14. Definir Parâmetros de Recuperação de Interrupção de Soldagem do Robô

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*/
9int WeldingSetReWeldAfterBreakOffParam(int enable, double length, double velocity, int moveType);

14.15. Obter Parâmetros de Recuperação de Interrupção de Soldagem do Robô

1/**
2* @brief Obtém os parâmetros de recuperação de interrupção de soldagem do robô
3* @return List[0]:código de erro; List[1]:int se habilita recuperação de interrupção de soldagem; List[2]:double distância de sobreposição da solda (mm);
4* @return List[3]:double percentagem de velocidade do robô ao retornar ao ponto de reabertura de arco (0-100); List[4]:int modo de movimento do robô até o ponto de reabertura de arco; 0-LIN; 1-PTP
5*/
6List<Number> WeldingGetReWeldAfterBreakOffParam();

14.16. Definir Porta DO Estendida do Modo de Controle da Máquina de Solda

1/**
2* @brief Define a porta DO estendida do modo de controle da máquina de solda
3* @param [in] DONum Porta DO do modo de controle da máquina de solda (0-127)
4* @return Código de erro
5*/
6int SetWeldMachineCtrlModeExtDoNum(int DONum);

14.17. Definir Modo de Controle da Máquina de Solda

1/**
2* @brief Define o modo de controle da máquina de solda
3* @param 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 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* @return Código de erro
6*/
7public int SetWeldMachineCtrlMode(int mode, int ioType)

14.18. Início da Soldagem

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*/
8int ARCStart(int ioType, int arcNum, int timeout);

14.19. Fim da Soldagem

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*/
8int ARCEnd(int ioType, int arcNum, int timeout);

14.20. Início da Oscilação

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*/
6int WeaveStart(int weaveNum);

14.21. Fim da Oscilação

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*/
6int WeaveEnd(int weaveNum);

14.22. Alimentação de Arame para Frente

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*/
7int SetForwardWireFeed(int ioType, int wireFeed);

14.23. Alimentação de Arame para Trás

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*/
7int SetReverseWireFeed(int ioType, int wireFeed);

14.24. Fornecimento de Gás

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*/
7int SetAspirated(int ioType, int airControl);

14.25. Definir Retomada de Soldagem do Robô Após Interrupção

1/**
2* @brief Define a retomada de soldagem do robô após interrupção
3* @return Código de erro
4*/
5int WeldingStartReWeldAfterBreakOff();

14.26. Definir Saída da Soldagem do Robô Após Interrupção

1/**
2* @brief Define a saída da soldagem do robô após interrupção
3* @return Código de erro
4*/
5int WeldingAbortWeldAfterBreakOff();

14.27. Exemplo de Código de Controle de Soldagem do Robô

 1public static int TestWelding(Robot robot)
 2{
 3    robot.WeldingSetCurrent(0, 230, 0, 0);
 4    robot.WeldingSetVoltage(0, 24, 0, 1);
 5
 6    DescPose p1Desc = new DescPose(228.879, -503.594, 453.984, -175.580, 8.293, 171.267);
 7    JointPos p1Joint = new JointPos(102.700, -85.333, 90.518, -102.365, -83.932, 22.134);
 8
 9    DescPose p2Desc = new DescPose(-333.302, -435.580, 449.866, -174.997, 2.017, 109.815);
10    JointPos p2Joint = new JointPos(41.862, -85.333, 90.526, -100.587, -90.014, 22.135);
11
12    ExaxisPos exaxisPos = new ExaxisPos(0, 0, 0, 0);
13    DescPose offdese = new DescPose(0, 0, 0, 0, 0, 0);
14
15    robot.MoveJ(p1Joint, p1Desc, 13, 0, 20, 100, 100, exaxisPos, -1, 0, offdese);
16    robot.ARCStart(1, 0, 10000);
17    robot.WeaveStart(0);
18    robot.MoveL(p2Joint, p2Desc, 13, 0, 20, 100, 100, -1, 0, exaxisPos, 0, 0, offdese, 0, 10);
19    robot.ARCEnd(1, 0, 10000);
20    robot.WeaveEnd(0);
21    return 0;
22}

14.28. Início da Soldagem por Segmentos

 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 ferramenta
15* @param [in] user Número da peça
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*/
26int SegmentWeldStart(DescPose startDesePos, DescPose endDesePos, JointPos startJPos, JointPos endJPos, double weldLength, double noWeldLength, int weldIOType, int arcNum, int weldTimeout, boolean isWeave, int weaveNum, int tool, int user, double vel, double acc, double ovl, double blendR, ExaxisPos epos, int search, int offset_flag, DescPose offset_pos);

14.29. Exemplo de Código de Soldagem por Segmentos do Robô

 1public static int TestSegWeld(Robot robot)
 2{
 3    robot.WeldingSetCurrent(0, 230, 0, 0);
 4    robot.WeldingSetVoltage(0, 24, 0, 1);
 5
 6    DescPose p1Desc = new DescPose(228.879, -503.594, 453.984, -175.580, 8.293, 171.267);
 7    JointPos p1Joint = new JointPos(102.700, -85.333, 90.518, -102.365, -83.932, 22.134);
 8
 9    DescPose p2Desc = new DescPose(-333.302, -435.580, 449.866, -174.997, 2.017, 109.815);
10    JointPos p2Joint = new JointPos(41.862, -85.333, 90.526, -100.587, -90.014, 22.135);
11
12    ExaxisPos exaxisPos = new ExaxisPos(0, 0, 0, 0);
13    DescPose offdese = new DescPose(0, 0, 0, 0, 0, 0);
14
15    robot.GetForwardKin(p1Joint, p1Desc);
16    robot.GetForwardKin(p2Joint, p2Desc);
17
18    int rtn = robot.SegmentWeldStart(p1Desc, p2Desc, p1Joint, p2Joint, 20, 20, 0, 0, 5000, true, 0, 1, 0, 30, 100, 100, -1, exaxisPos, 0, 0, offdese);
19    return 0;
20}

14.30. Início da Oscilação de Simulação

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*/
6int WeaveStartSim(int weaveNum);

14.31. Fim da Oscilação de Simulação

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*/
6int WeaveEndSim(int weaveNum);

14.32. Início da Detecção de Alerta de Trajetória (Sem Movimento)

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*/
6int WeaveInspectStart(int weaveNum);

14.33. Fim da Detecção de Alerta de Trajetória (Sem Movimento)

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*/
6int WeaveInspectEnd(int weaveNum);

14.34. Início da Mudança Gradual da Oscilação

Alterado na versão Java: SDK-v1.0.5-3.8.2

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*/
9int 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ô

 1public static int TestWeave(Robot robot)
 2{
 3    DescPose p1Desc = new DescPose(228.879, -503.594, 453.984, -175.580, 8.293, 171.267);
 4    JointPos p1Joint = new JointPos(102.700, -85.333, 90.518, -102.365, -83.932, 22.134);
 5
 6    DescPose p2Desc = new DescPose(-333.302, -435.580, 449.866, -174.997, 2.017, 109.815);
 7    JointPos p2Joint = new JointPos(41.862, -85.333, 90.526, -100.587, -90.014, 22.135);
 8
 9    ExaxisPos exaxisPos = new ExaxisPos(0, 0, 0, 0);
10    DescPose offdese = new DescPose(0, 0, 0, 0, 0, 0);
11
12    robot.MoveJ(p1Joint, p1Desc, 13, 0, 20, 100, 100, exaxisPos, -1, 0, offdese);
13    robot.WeaveStartSim(0);
14    robot.MoveL(p2Joint, p2Desc, 13, 0, 20, 100, 100, -1, 0, exaxisPos, 0, 0, offdese, 0, 10);
15    robot.WeaveEndSim(0);
16    robot.MoveJ(p1Joint, p1Desc, 13, 0, 20, 100, 100, exaxisPos, -1, 0, offdese);
17    robot.WeaveInspectStart(0);
18    robot.MoveL(p2Joint, p2Desc, 13, 0, 20, 100, 100, -1, 0, exaxisPos, 0, 0, offdese, 0, 10);
19    robot.WeaveInspectEnd(0);
20
21    robot.WeldingSetVoltage(1, 19, 0, 0);
22    robot.WeldingSetCurrent(1, 190, 0, 0);
23    robot.MoveL(p1Joint, p1Desc, 1, 1, 100, 100, 50, -1, 0, exaxisPos, 0, 0, offdese, 0, 10);
24    robot.ARCStart(1, 0, 10000);
25    robot.ArcWeldTraceControl(1, 0, 1, 0.06, 5, 5, 60, 1, 0.06, 5, 5, 80, 0, 0, 4, 1, 10, 0, 0);
26    robot.WeaveStart(0);
27    robot.WeaveChangeStart(1, 0, 50, 30);
28    robot.MoveL(p2Joint, p2Desc, 1, 1, 100, 100, 1, -1, 0, exaxisPos, 0, 0, offdese, 0, 10);
29    robot.WeaveChangeEnd();
30    robot.WeaveEnd(0);
31    robot.ArcWeldTraceControl(0, 0, 1, 0.06, 5, 5, 60, 1, 0.06, 5, 5, 80, 0, 0, 4, 1, 10, 0, 0);
32    robot.ARCEnd(1, 0, 10000);
33    return 0;
34}

14.36. Fim da Mudança Gradual da Oscilação

Novo na versão Java: SDK-v1.0.2-3.7.9

1/**
2* @brief Fim da mudança gradual da oscilação
3* @return Código de erro
4*/
5int WeaveChangeEnd();

14.37. E/S Estendida - Configurar Sinal de Detecção de Gás da Máquina de Solda

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*/
6int SetAirControlExtDoNum(int DONum);

14.38. E/S Estendida - Configurar Sinal de Abertura de Arco da Máquina de Solda

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*/
6int SetArcStartExtDoNum(int DONum);

14.39. E/S Estendida - Configurar Sinal de Alimentação de Arame para Trás da Máquina de Solda

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*/
6int SetWireReverseFeedExtDoNum(int DONum);

14.40. E/S Estendida - Configurar Sinal de Alimentação de Arame para Frente da Máquina de Solda

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*/
6int SetWireForwardFeedExtDoNum(int DONum);

14.41. E/S Estendida - Configurar Sinal de Sucesso de Abertura de Arco da Máquina de Solda

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*/
6int SetArcDoneExtDiNum(int DINum);

14.42. E/S Estendida - Configurar Sinal de Prontidão da Máquina de Solda

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*/
6int SetWeldReadyExtDiNum(int DINum);

14.43. E/S Estendida - Configurar Sinal de Recuperação de Interrupção de Soldagem

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*/
7int SetExtDIWeldBreakOffRecover(int reWeldDINum, int abortWeldDINum);

14.44. Exemplo de Código para Configurar Sinais de Soldagem com E/S Estendida

 1public static int TestExtDIConfig(Robot robot)
 2{
 3    robot.SetArcStartExtDoNum(10);
 4    robot.SetAirControlExtDoNum(20);
 5    robot.SetWireForwardFeedExtDoNum(30);
 6    robot.SetWireReverseFeedExtDoNum(40);
 7
 8    robot.SetWeldReadyExtDiNum(50);
 9    robot.SetArcDoneExtDiNum(60);
10    robot.SetExtDIWeldBreakOffRecover(70, 80);
11    robot.SetWireSearchExtDIONum(0, 1);
12
13    return 0;
14}

14.45. Controle de Rastreamento de Arco

Alterado na versão Java: SDK-v1.0.2-3.7.9

 1/**
 2* @brief Controle de rastreamento de arco
 3* @param [in] flag Chave, 0-desligar; 1-ligar
 4* @param [in] delaytime 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*/
24int 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, int offsetParameter);

14.46. Seleção da Banda de Passagem AI do Rastreamento de Arco

1/**
2* @brief Seleção da banda de passagem AI do rastreamento de arco
3* @param channel Banda de passagem AI do rastreamento de arco, [0-3]
4* @return Código de erro
5*/
6public int ArcWeldTraceExtAIChannelConfig(int channel)

14.47. Ativação da Compensação de Rastreamento de Arco + Múltiplas Camadas e Múltiplos Passes

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*/
5public int ArcWeldTraceReplayStart()

14.48. Desativação da Compensação de Rastreamento de Arco + Múltiplas Camadas e Múltiplos Passes

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*/
5public int ArcWeldTraceReplayEnd()

14.49. Mudança de Coordenadas de Deslocamento - Soldagem de Múltiplas Camadas e Múltiplos Passes

 1/**
 2* @brief Mudança de coordenadas de deslocamento - soldagem de múltiplas camadas e múltiplos passes
 3* @param pointO Pose cartesiana do ponto de referência
 4* @param pointX Pose cartesiana do ponto de direção de deslocamento no eixo X do ponto de referência
 5* @param pointZ Pose cartesiana do ponto de direção de deslocamento no eixo Z do ponto de referência
 6* @param dx Quantidade de deslocamento na direção X (mm)
 7* @param dz Quantidade de deslocamento na direção Z (mm)
 8* @param dry Quantidade de deslocamento em torno do eixo Y (°)
 9* @param offset Deslocamento calculado
10* @return Código de erro
11*/
12public int MultilayerOffsetTrsfToBase(DescTran pointO, DescTran pointX, DescTran pointZ, double dx, double dz, double dry, DescPose offset)

14.50. Exemplo de Código de Rastreamento de Arco com Soldagem de Múltiplas Camadas e Múltiplos Passes

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

14.51. Seleção do Canal AI de Feedback de Corrente da Máquina de Solda para Rastreamento de Arco

Novo na versão Java: SDK-v1.0.5-3.8.2

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*/
6int ArcWeldTraceAIChannelCurrent(int channel)

14.52. Seleção do Canal AI de Feedback de Tensão da Máquina de Solda para Rastreamento de Arco

Novo na versão Java: SDK-v1.0.5-3.8.2

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*/
6int ArcWeldTraceAIChannelVoltage(int channel)

14.53. Parâmetros de Conversão de Feedback de Corrente da Máquina de Solda para Rastreamento de Arco

Novo na versão Java: SDK-v1.0.5-3.8.2

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*/
9int ArcWeldTraceCurrentPara(double AILow, double AIHigh, double currentLow, double currentHigh)

14.54. Parâmetros de Conversão de Feedback de Tensão da Máquina de Solda para Rastreamento de Arco

Novo na versão Java: SDK-v1.0.5-3.8.2

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*/
9int ArcWeldTraceVoltagePara(double AILow, double AIHigh, double voltageLow, double voltageHigh)

14.55. Exemplo de Código de Rastreamento de Arco

 1public static void WeldTraceControlWithCtrlBoxAI(Robot robot)
 2{
 3    DescPose startdescPose = new DescPose(-473.86, 257.879, -20.849, -37.317, -42.021, 2.543);
 4    JointPos startjointPos = new JointPos(-43.487, -76.526, 95.568, -104.445, -89.356, 3.72);
 5
 6    DescPose safedescPose = new DescPose(-504.043, 275.181, 40.908, -28.002, -42.025, -14.044);
 7    JointPos safejointPos = new JointPos(-39.078, -76.732, 87.227, -99.47, -94.301, 18.714);
 8
 9    DescPose enddescPose = new DescPose(-499.844, 141.225, 7.72, -34.856, -40.17, 13.13);
10    JointPos endjointPos = new JointPos(-31.305, -82.998, 99.401, -104.426, -89.35, 3.696);
11
12    ExaxisPos exaxisPos = new ExaxisPos(0, 0, 0, 0);
13    DescPose offdese = new DescPose(0, 0, 0, 0, 0, 0);
14    // Movimento inicial para ponto seguro
15    robot.MoveJ(safejointPos, safedescPose, 1, 0, 5, 20, 100, exaxisPos, -1, 0, offdese);
16
17    WeldCurrentAORelation current = new WeldCurrentAORelation(0, 495, 1, 10, 0);
18    WeldVoltageAORelation voltage = new WeldVoltageAORelation(10, 45, 1, 10, 1);
19    robot.WeldingSetCurrentRelation(current); // Relação corrente-saída analógica
20    robot.WeldingSetVoltageRelation(voltage); // Relação tensão-saída analógica
21    robot.WeldingSetVoltage(0, 25, 1, 0); // Definir tensão
22    robot.WeldingSetCurrent(0, 260, 0, 0); // Definir corrente
23
24    int rtn = robot.ArcWeldTraceAIChannelCurrent(4);
25    System.out.println("ArcWeldTraceAIChannelCurrent rtn is " + rtn);
26
27    rtn = robot.ArcWeldTraceAIChannelVoltage(5);
28    System.out.println("ArcWeldTraceAIChannelVoltage rtn is " + rtn);
29
30    rtn = robot.ArcWeldTraceCurrentPara(0.0, 5, 0, 500);
31    System.out.println("ArcWeldTraceCurrentPara rtn is " + rtn);
32
33    rtn = robot.ArcWeldTraceVoltagePara(1.018, 10, 0, 50);
34    System.out.println("ArcWeldTraceVoltagePara rtn is " + rtn);
35
36    robot.MoveJ(startjointPos, startdescPose, 1, 0, 20, 20, 100, exaxisPos, -1, 0, offdese);
37    robot.ArcWeldTraceControl(1, 0, 1, 0.08, 5, 5, 300, 1, 0.06, 4, 4, 300, 1, 0, 4, 1, 10, 0, 0);
38    robot.ARCStart(0, 0, 10000);
39    robot.WeaveStart(0);
40    robot.MoveL(endjointPos, enddescPose, 1, 0, 100, 100, 2, -1, 0, exaxisPos, 0, 0, offdese, 0, 10);
41    robot.ARCEnd(0, 0, 10000);
42    robot.WeaveEnd(0);
43    robot.ArcWeldTraceControl(0, 0, 1, 0.08, 5, 5, 300, 1, 0.06, 4, 4, 300, 1, 0, 4, 1, 10, 0, 0);
44
45    robot.MoveJ(safejointPos, safedescPose, 1, 0, 20, 20, 100, exaxisPos, -1, 0, offdese);
46}

14.56. Definir Portas E/S Estendidas para Busca de Posição do Arame de Solda

1/**
2* @brief Define as portas E/S estendidas para busca de posição do arame de solda
3* @param [in] searchDoneDINum Porta DO de sucesso na busca de posição do arame (0-127)
4* @param [in] 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*/
7int SetWireSearchExtDIONum(int searchDoneDINum, int searchStartDONum);

14.57. Programa de Exemplo

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

14.58. Início da Busca de Posição do Arame de Solda

 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*/
12int WireSearchStart(int refPos, double searchVel, int searchDis, int autoBackFlag, double autoBackVel, int autoBackDis, int offectFlag);

14.59. Fim da Busca de Posição do Arame de Solda

 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*/
12int WireSearchEnd(int refPos, double searchVel, int searchDis, int autoBackFlag, double autoBackVel, int autoBackDis, int offectFlag);

14.60. Calcular Deslocamento da Busca de Posição do Arame de Solda

 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] offset Deslocamento da pose [x, y, z, a, b, c] e modo de deslocamento
 8* @return Código de erro
 9*/
10int GetWireSearchOffset(int seamType, int method, String[] varNameRef, String[] varNameRes, DescOffset offset);

14.61. Aguardar Conclusão da Busca de Posição do Arame de Solda

1/**
2* @brief Aguardar conclusão da busca de posição do arame de solda
3* @return Código de erro
4*/
5int WireSearchWait(String name);

14.62. Escrever Ponto de Contato da Busca de Posição do Arame no Banco de Dados

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*/
7int SetPointToDatabase(String varName, DescPose pos);

14.63. Exemplo de Código de Busca de Posição do Arame de Solda do Robô

 1public static int TestWireSearch(Robot robot)
 2{
 3    DescPose toolCoord = new DescPose(0, 0, 200, 0, 0, 0);
 4    robot.SetToolCoord(1, toolCoord, 0, 0, 1, 0);
 5    DescPose wobjCoord = new DescPose(0, 0, 0, 0, 0, 0);
 6    robot.SetWObjCoord(1, wobjCoord, 0);
 7
 8    int rtn0, rtn1, rtn2 = 0;
 9    ExaxisPos exaxisPos = new ExaxisPos(0, 0, 0, 0);
10    DescPose offdese = new DescPose(0, 0, 0, 0, 0, 0);
11
12    DescPose descStart = new DescPose(216.543, 445.175, 93.465, 179.683, 1.757, -112.641);
13    JointPos jointStart = new JointPos(-128.345, -86.660, 114.679, -119.625, -89.219, 74.303);
14
15    DescPose descEnd = new DescPose(111.143, 523.384, 87.659, 179.703, 1.835, -97.750);
16    JointPos jointEnd = new JointPos(-113.454, -81.060, 109.328, -119.954, -89.218, 74.302);
17
18    robot.MoveL(jointStart, descStart, 1, 1, 100, 100, 100, -1, 0, exaxisPos, 0, 0, offdese, 0, 100);
19    robot.MoveL(jointEnd, descEnd, 1, 1, 100, 100, 100, -1, 0, exaxisPos, 0, 0, offdese, 0, 100);
20
21    DescPose descREF0A = new DescPose(142.135, 367.604, 86.523, 179.728, 1.922, -111.089);
22    JointPos jointREF0A = new JointPos(-126.794, -100.834, 128.922, -119.864, -89.218, 74.302);
23
24    DescPose descREF0B = new DescPose(254.633, 463.125, 72.604, 179.845, 2.341, -114.704);
25    JointPos jointREF0B = new JointPos(-130.413, -81.093, 112.044, -123.163, -89.217, 74.303);
26
27    DescPose descREF1A = new DescPose(92.556, 485.259, 47.476, -179.932, 3.130, -97.512);
28    JointPos jointREF1A = new JointPos(-113.231, -83.815, 119.877, -129.092, -89.217, 74.303);
29
30    DescPose descREF1B = new DescPose(203.103, 583.836, 63.909, 179.991, 2.854, -103.372);
31    JointPos jointREF1B = new JointPos(-119.088, -69.676, 98.692, -121.761, -89.219, 74.303);
32
33    rtn0 = robot.WireSearchStart(0, 10, 100, 0, 10, 100, 0);
34    robot.MoveL(jointREF0A, descREF0A, 1, 1, 100, 100, 100, -1, 0, exaxisPos, 0, 0, offdese, 0, 10);  // ponto inicial
35    robot.MoveL(jointREF0B, descREF0B, 1, 1, 100, 100, 100, -1, 0, exaxisPos, 1, 0, offdese, 0, 10);  // ponto de direção
36    rtn1 = robot.WireSearchWait("REF0");
37    rtn2 = robot.WireSearchEnd(0, 10, 100, 0, 10, 100, 0);
38
39    rtn0 = robot.WireSearchStart(0, 10, 100, 0, 10, 100, 0);
40    robot.MoveL(jointREF1A, descREF1A, 1, 1, 100, 100, 100, -1, 0, exaxisPos, 0, 0, offdese, 0, 10);  // ponto inicial
41    robot.MoveL(jointREF1B, descREF1B, 1, 1, 100, 100, 100, -1, 0, exaxisPos, 1, 0, offdese, 0, 10);  // ponto de direção
42    rtn1 = robot.WireSearchWait("REF1");
43    rtn2 = robot.WireSearchEnd(0, 10, 100, 0, 10, 100, 0);
44
45    rtn0 = robot.WireSearchStart(0, 10, 100, 0, 10, 100, 0);
46    robot.MoveL(jointREF0A, descREF0A, 1, 1, 100, 100, 100, -1, 0, exaxisPos, 0, 0, offdese, 0, 10);  // ponto inicial
47    robot.MoveL(jointREF0B, descREF0B, 1, 1, 100, 100, 100, -1, 0, exaxisPos, 1, 0, offdese, 0, 10);  // ponto de direção
48    rtn1 = robot.WireSearchWait("RES0");
49    rtn2 = robot.WireSearchEnd(0, 10, 100, 0, 10, 100, 0);
50
51    rtn0 = robot.WireSearchStart(0, 10, 100, 0, 10, 100, 0);
52    robot.MoveL(jointREF1A, descREF1A, 1, 1, 100, 100, 100, -1, 0, exaxisPos, 0, 0, offdese, 0, 10);  // ponto inicial
53    robot.MoveL(jointREF1B, descREF1B, 1, 1, 100, 100, 100, -1, 0, exaxisPos, 1, 0, offdese, 0, 10);  // ponto de direção
54    rtn1 = robot.WireSearchWait("RES1");
55    rtn2 = robot.WireSearchEnd(0, 10, 100, 0, 10, 100, 0);
56
57    String[] varNameRef = new String[]{"REF0", "REF1", "#", "#", "#", "#"};
58    String[] varNameRes = new String[]{"RES0", "RES1", "#", "#", "#", "#"};
59    int offectFlag = 0;
60
61    DescPose pos = new DescPose(0, 0, 0, 0, 0, 0);
62    DescOffset offectPos = new DescOffset();
63    offectPos.offset = pos;
64    offectPos.offsetFlag = 0;
65
66    rtn0 = robot.GetWireSearchOffset(0, 0, varNameRef, varNameRes, offectPos);
67    robot.PointsOffsetEnable(0, pos);
68    robot.MoveL(jointStart, descStart, 1, 1, 100, 100, 100, -1, 0, exaxisPos, 0, 0, offdese, 0, 10);
69    robot.MoveL(jointEnd, descEnd, 1, 1, 100, 100, 100, -1, 0, exaxisPos, 1, 0, offdese, 0, 10);
70    robot.PointsOffsetDisable();
71
72    robot.CloseRPC();
73    return 0;
74}

14.64. Definir Início da Mudança Gradual da Tensão de Soldagem

Novo na versão Java: SDK-v1.0.5-3.8.2

 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*/
10int WeldingSetVoltageGradualChangeStart(int IOType, double voltageStart, double voltageEnd, int AOIndex, int blend)

14.65. Definir Fim da Mudança Gradual da Tensão de Soldagem

Novo na versão Java: SDK-v1.0.5-3.8.2

1/**
2* @brief Define o fim da mudança gradual da tensão de soldagem
3* @return Código de erro
4*/
5int WeldingSetVoltageGradualChangeEnd()

14.66. Definir Início da Mudança Gradual da Corrente de Soldagem

Novo na versão Java: SDK-v1.0.5-3.8.2

 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] currentStart Corrente de soldagem inicial (A)
 5* @param [in] currentEnd 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*/
10int WeldingSetCurrentGradualChangeStart(int IOType, double currentStart, double currentEnd, int AOIndex, int blend)

14.67. Definir Fim da Mudança Gradual da Corrente de Soldagem

Novo na versão Java: SDK-v1.0.5-3.8.2

1/**
2* @brief Define o fim da mudança gradual da corrente de soldagem
3* @return Código de erro
4*/
5int WeldingSetCurrentGradualChangeEnd()

14.68. Exemplo de Código de Mudança Gradual de Corrente e Tensão de Soldagem do Robô

 1public static void WeldparamChange(Robot robot)
 2{
 3    DescPose startdescPose = new DescPose(-484.707, 276.996, -14.013, -37.657, -40.508, -1.548);
 4    JointPos startjointPos = new JointPos(-45.421, -75.673, 93.627, -104.302, -87.938, 6.005);
 5
 6    DescPose enddescPose = new DescPose(-508.767, 137.109, -13.966, -37.639, -40.508, -1.559);
 7    JointPos endjointPos = new JointPos(-32.768, -80.947, 100.254, -106.201, -87.201, 18.648);
 8
 9    DescPose safedescPose = new DescPose(-484.709, 294.436, 13.621, -37.660, -40.508, -1.545);
10    JointPos safejointPos = new JointPos(-46.604, -75.410, 89.109, -100.003, -88.012, 4.823);
11
12    ExaxisPos exaxisPos = new ExaxisPos(0, 0, 0, 0);
13    DescPose offdese = new DescPose(0, 0, 0, 0, 0, 0);
14
15    WeldCurrentAORelation cur = new WeldCurrentAORelation(0, 495, 1, 10, 0);
16    WeldVoltageAORelation vol = new WeldVoltageAORelation(10, 45, 1, 10, 1);
17    robot.WeldingSetCurrentRelation(cur);
18    robot.WeldingSetVoltageRelation(vol);
19
20    robot.WeldingSetVoltage(0, 25, 1, 0); // ---- definir tensão
21    robot.WeldingSetCurrent(0, 260, 0, 0); // ---- definir corrente
22
23    robot.MoveJ(safejointPos, safedescPose, 1, 0, 5, 100, 100, exaxisPos, -1, 0, offdese);
24
25    robot.WeldingSetCurrentGradualChangeStart(0, 260, 220, 0, 0);
26    robot.WeldingSetVoltageGradualChangeStart(0, 25, 22, 1, 0);
27    int rtn = robot.ArcWeldTraceControl(1, 0, 1, 0.08, 5, 5, 300, 1, 0.06, 4, 4, 300, 1, 0, 4, 1, 10, 0, 0);
28
29    robot.MoveJ(startjointPos, startdescPose, 1, 0, 5, 100, 100, exaxisPos, -1, 0, offdese);
30    System.out.println("ArcWeldTraceControl rtn is " + rtn);
31
32    robot.ARCStart(0, 0, 10000);
33    robot.WeaveStart(0);
34    robot.WeaveChangeStart(2, 1, 24, 36);
35    robot.MoveL(endjointPos, enddescPose, 1, 0, 100, 100, 2, -1, 0, exaxisPos, 0, 0, offdese, 0, 10);
36    robot.ARCEnd(0, 0, 10000);
37    robot.WeaveChangeEnd();
38    robot.WeaveEnd(0);
39    robot.ArcWeldTraceControl(0, 0, 1, 0.08, 5, 5, 300, 1, 0.06, 4, 4, 300, 1, 0, 4, 1, 10, 0, 0);
40    robot.WeldingSetCurrentGradualChangeEnd();
41    robot.WeldingSetVoltageGradualChangeEnd();
42}

14.69. Definir Parâmetros de Oscilação Personalizada

Novo na versão Java: SDK-v1.0.9-3.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 */
12public int CustomWeaveSetPara(int id, int pointNum, DescTran[] point, double[] stayTime, double frequency, int incStayType, int stationary)

14.70. Obter Parâmetros de Oscilação Personalizada

Novo na versão Java: SDK-v1.0.9-3.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 */
12public int CustomWeaveGetPara(int id, int[] pointNum, DescTran[] point, double[] stayTime, double[] frequency, int[] incStayType, int[] stationary)

14.71. Exemplo de Código de Parâmetros de Oscilação Personalizada

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

14.72. Configuração de Parâmetros da Soldadora a Laser

 1/**
 2* @brief Configuração de parâmetros da soldadora a laser
 3* @param  io_type Tipo de comunicação 0-IO 1-UDP
 4* @param  num Número do grupo a ser configurado (1~10)
 5* @param  scanSpeed Velocidade de varredura
 6* @param  scanWidth Largura de varredura
 7* @param  peakPower Potência de pico
 8* @param  dutyCycle Ciclo de trabalho
 9* @param  freq Frequência
10* @return Código de erro
11*/
12public int SetLaserWeldingParam(int io_type, int num, int scanSpeed, int scanWidth, int peakPower, int dutyCycle, int freq);

14.73. Iniciar/Parar Soldagem a Laser

1/**
2* @brief Iniciar/parar soldagem a laser
3* @param io_type Tipo de comunicação 0-IO 1-UDP
4* @param status Palavra de controle 0-laser desligado 1-laser ligado
5* @param max_waittime Tempo máximo de espera em milissegundos, padrão 10000
6* @return Código de erro
7*/
8public int SetLaserWeldingStartEnd(int io_type, int status, int max_waittime)

14.74. Habilitar/Desabilitar Soldadora a Laser

1/**
2* @brief Habilitar/desabilitar soldadora a laser
3* @param io_type Tipo de comunicação 0-IO 1-UDP
4* @param status 0-desabilitar 1-habilitar
5* @return Código de erro
6*/
7public int SetLaserWeldingEnable(int io_type, int status)

14.75. Reset de Falha da Soldadora a Laser

1/**
2* @brief Reset de falha da soldadora a laser
3* @param io_type Tipo de comunicação 0-IO 1-UDP
4* @param status Palavra de controle 0-inválido 1-reset de falha
5* @return Código de erro
6*/
7public int ResetLaserWeldingErr(int io_type, int status)

14.76. Obter Estado de Operação da Soldadora a Laser

1/**
2* @brief Obter estado de operação da soldadora a laser
3* @param io_type Tipo de comunicação 0-IO 1-UDP
4* @param  status Palavra de controle 0-parado 1-operando
5* @return Código de erro
6*/
7public int GetLaserWeldingRunningState(int io_type, int[] status)

14.77. Obter Estado de Falha da Soldadora a Laser

1/**
2* @brief Obter estado de falha da soldadora a laser
3* @param io_type Tipo de comunicação 0-IO 1-UDP
4* @param  status 0-sem falha 1-com falha
5* @return Código de erro
6*/
7public int GetLaserWeldingErrState(int io_type, int[] status)

14.78. Obter Parâmetros de Configuração da Soldadora a Laser

1/**
2* @brief Obter parâmetros de configuração de um dos 10 grupos de processo da soldadora a laser
3* @param num Número do grupo a ser configurado (1~10)
4* @param params Array de parâmetros de saída: [scanSpeed, scanWidth, peakPower, dutyCycle, freq]
5* @return Código de erro
6*/
7public int GetLaserWeldingParamTarget(int num, int[] params)

14.79. Obter Parâmetros de Configuração Ativos da Soldadora a Laser

1/**
2* @brief Obter parâmetros de configuração ativos da soldadora a laser
3* @param io_type Tipo de comunicação 0-IO 1-UDP
4* @param params Array de parâmetros de saída: [scanSpeed, scanWidth, peakPower, dutyCycle, freq]
5* @return Código de erro
6*/
7public int GetLaserWeldingParamActual(int io_type, int[] params)

14.80. Configurar Porta DO de E/S Expansão para Habilitar Soldadora a Laser

1/**
2* @brief Configurar porta DO de E/S expansão para habilitar soldadora a laser
3* @param ctrlModeDONum Número da porta DO de E/S expansão para habilitar a soldadora a laser
4* @return Código de erro
5*/
6public int SetLaserWeldingEnableExtDoNum(int ctrlModeDONum)

14.81. Configurar Porta DO de E/S Expansão para Iniciar Soldadora a Laser

1/**
2* @brief Configurar porta DO de E/S expansão para iniciar soldadora a laser
3* @param ctrlModeDONum Número da porta DO de E/S expansão para iniciar/parar a soldadora a laser
4* @return Código de erro
5*/
6public int SetLaserWeldingStartExtDoNum(int ctrlModeDONum)

14.82. Configurar Porta DO de E/S Expansão para Reset de Falha da Soldadora a Laser

1/**
2* @brief Configurar porta DO de E/S expansão para reset de falha da soldadora a laser
3* @param ctrlModeDONum Número da porta DO de E/S expansão para reset de falha da soldadora a laser
4* @return Código de erro
5*/
6public int SetLaserWeldingErrResetExtDoNum(int ctrlModeDONum)

14.83. Configurar Porta DI de E/S Expansão para Estado de Operação (Laser Ligado) da Soldadora a Laser

1/**
2* @brief Configurar porta DI de E/S expansão para estado de operação (laser ligado) da soldadora a laser
3* @param diNum Número da porta DI de E/S expansão para estado de operação (laser ligado) da soldadora a laser
4* @return Código de erro, 0 indica sucesso, diferente de 0 indica falha
5*/
6public int SetLaserWeldingRunningStateExtDiNum(int diNum);

14.84. Configurar Porta DI de E/S Expansão para Estado de Falha da Soldadora a Laser

1/**
2* @brief Configurar porta DI de E/S expansão para estado de falha da soldadora a laser
3* @param diNum Número da porta DI de E/S expansão para estado de falha da soldadora a laser
4* @return Código de erro, 0 indica sucesso, diferente de 0 indica falha
5*/
6public int SetLaserWeldingErrStateExtDiNum(int diNum);

14.85. Exemplo de Código de Soldagem a Laser

 1public static int testLsaerWeld(Robot robot) {
 2    int rtn = -1;
 3    rtn = robot.ExtDevLoadUDPDriver();
 4    if (rtn != 0) {
 5        System.out.println("Falha ao carregar driver UDP, código de erro: " + rtn);
 6    }
 7    robot.Sleep(1000);
 8    rtn = robot.SetLaserWeldingParam(1, 3, 2000, 3, 1500, 100, 1000);
 9    if (rtn != 0) {
10        System.out.println("SetLaserWeldingParam falhou, código de erro: " + rtn);
11    } else {
12        System.out.println("SetLaserWeldingParam sucesso");
13    }
14    rtn = robot.SetLaserWeldingStartExtDoNum(1);
15    if (rtn != 0) {
16        System.out.println("SetLaserWeldingStartExtDoNum falhou, código de erro: " + rtn);
17    }
18    rtn = robot.Mode(0);
19    if (rtn != 0) {
20        System.out.println("Falha ao definir modo 0, código de erro: " + rtn);
21    }
22    robot.Sleep(1000);
23    DescPose desc_pos1 = new DescPose(-303.721, -206.960, 297.105, 152.209, 19.857, 109.166);
24    DescPose desc_pos2 = new DescPose(-301.575, -254.888, 284.786, 155.919, 26.946, 111.629);
25    DescPose desc_safe = new DescPose(-344.386, -280.830, 435.073, 173.835, 15.333, 124.931);
26
27    JointPos jointPos1 = new JointPos(9.827, -99.740, 120.088, -78.900, -77.241, -17.904);
28    JointPos jointPos2 = new JointPos(15.251, -96.456, 120.138, -84.664, -68.542, -17.843);
29    JointPos jointSafe = new JointPos(19.142, -98.078, 101.493, -83.078, -77.070, -17.794);
30
31    ExaxisPos exaxis = new ExaxisPos(0.0, 0.0, 0.0, 0.0);
32    DescPose offset = new DescPose(0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
33    int error = robot.MoveL(desc_pos1, 0, 0, 100, 100, 100, -1, 0, exaxis, 0, 0, offset, -1, 0,0,0);
34    System.out.println("MoveL para pos1 retorno: " + error);
35    rtn = robot.SetLaserWeldingStartEnd(1, 1, 10000);
36    if (rtn != 0) {
37        System.out.println("SetLaserWeldingStartEnd (iniciar) falhou, código de erro: " + rtn);
38    } else {
39        System.out.println("Laser iniciado");
40    }
41    rtn = robot.MoveL(desc_pos2, 0, 0, 30, 100, 100, -1, 0, exaxis, 0, 0, offset, -1, 0,0, 0);
42    System.out.println("MoveL para pos2 retorno: " + rtn);
43    rtn = robot.SetLaserWeldingStartEnd(1, 0, 10000);
44    if (rtn != 0) {
45        System.out.println("SetLaserWeldingStartEnd (parar) falhou, código de erro: " + rtn);
46    } else {
47        System.out.println("Laser parado");
48    }
49    robot.Sleep(500);
50    rtn = robot.MoveL(desc_safe, 0, 0, 100, 100, 100, -1, 0, exaxis, 0, 0, offset, -1, 0,0,0);
51    System.out.println("MoveL para safe_pos retorno: " + rtn);
52    rtn = robot.Mode(1);
53    if (rtn != 0) {
54        System.out.println("Falha ao definir modo 1, código de erro: " + rtn);
55    }
56    robot.Sleep(1000);
57    robot.CloseRPC();
58    robot.Sleep(1000);
59
60    System.out.println("Teste concluído");
61
62    return 0;
63}

14.86. Definir Retorno ao Ponto Zero do Ciclo ao Final da Oscilação

1/**
2* @brief Define se retorna ao ponto zero do ciclo ao final da oscilação
3* @param flag Se retorna ao ponto zero do ciclo ao final da oscilação; 0-não retornar; 1-retornar ao ponto zero do ciclo
4* @return Código de erro
5*/
6public int SetWeaveBackCenterConfig(int flag)

14.87. Obter Parâmetros de Retorno ao Ponto Zero do Ciclo ao Final da Oscilação

1/**
2* @brief Obtém os parâmetros de retorno ao ponto zero do ciclo ao final da oscilação
3* @param flag Se retorna ao ponto zero do ciclo ao final da oscilação; 0-não retornar; 1-retornar ao ponto zero do ciclo
4* @return Código de erro
5*/
6public int GetWeaveBackCenterConfig(int[] flag)

14.88. Exemplo de Código de Retorno ao Ponto Zero do Ciclo ao Final da Oscilação

 1public static void TestSplineWeave(Robot robot)
 2{
 3    JointPos j1 = new JointPos(9.000, -66.067, 67.706, -103.217, -90.151, 100.669);
 4    JointPos j2 = new JointPos(-4.660, -107.973, 103.734, -76.214, -89.999, 90.886);
 5    JointPos j3 = new JointPos(-36.762, -77.380, 91.364, -127.159, -90.024, 54.833);
 6    JointPos j4 = new JointPos(-62.875, -89.460, 86.437, -77.030, -90.012, 31.539);
 7    DescPose desc_pos1 = new DescPose(-654.129, -235.344, 246.543, 6.010, -11.535, -176.787);
 8    DescPose desc_pos2 = new DescPose(-273.710, -100.871, 280.935, 5.692, 9.522, 179.512);
 9    DescPose desc_pos3 = new DescPose(-566.093, 311.278, 215.008, -10.453, -17.486, -174.209);
10    DescPose desc_pos4 = new DescPose(-246.558, 328.240, 292.173, 13.912, 4.437, -179.067);
11    DescPose offset_pos = new DescPose(0, 0, 0, 0, 0, 0);
12    ExaxisPos epos = new ExaxisPos(0, 0, 0, 0);
13    int tool = 2;
14    int user = 0;
15    float vel = 100.0f;
16    float acc = 100.0f;
17    float ovl = 20.0f;
18    float oacc = 100.0f;
19    float blendT = 0.0f;
20    float blendR = 0.0f;
21    int flag = 0;
22    int search = 0;
23    int blendMode = 0;
24    int velAccMode = 0;
25
26    robot.WeaveEnd(0);
27    robot.SetSpeed(1);
28
29    robot.SetWeaveBackCenterConfig(1);
30    int[] weaveBackConfig = new int[1];
31    robot.GetWeaveBackCenterConfig(weaveBackConfig);
32    System.out.printf("GetWeaveBackCenterConfig:  %d \n", weaveBackConfig[0]);
33
34    robot.MoveJ(j1, desc_pos1, tool, user, vel, acc, 100.0f, epos, blendT, flag, offset_pos);
35
36    robot.WeaveStart(0);
37    robot.NewSplineStart(0, 6000);
38    robot.NewSplinePoint(j1, desc_pos1, tool, user, vel, acc, ovl, -1, 0);
39    robot.NewSplinePoint(j2, desc_pos2, tool, user, vel, acc, ovl, -1, 0);
40    robot.NewSplinePoint(j3, desc_pos3, tool, user, vel, acc, ovl, -1, 0);
41    robot.NewSplinePoint(j4, desc_pos4, tool, user, vel, acc, ovl, -1, 1);
42    robot.NewSplineEnd();
43    robot.WeaveEnd(0);
44}

14.89. Definição de Velocidade em Tempo Real (Quadro de Comando, Baixa Latência)

1/**
2* @brief Define a velocidade (quadro de comando, baixa latência)
3* @param vel Percentual de velocidade, intervalo [0~100]
4* @return Código de erro
5*/
6public int SetSpeedInstant(int vel)

14.90. Definir Deslocamento em Tempo Real da Oscilação

1/**
2* @brief Define o deslocamento em tempo real da oscilação
3* @param [in] offset Deslocamento em tempo real [mm, °]
4* @return Código de erro
5*/
6public int SetWeaveOffsetRT(DescPose offset)

14.91. Exemplo de Código de Teste de Velocidade e Deslocamento da Oscilação

  1public static void TestWeaveSpeedAndOffset(Robot robot) {
  2if (robot == null) {
  3    System.out.println("ERROR: connect fail");
  4    return;
  5}
  6int rtn;
  7ROBOT_STATE_PKG pkg = new ROBOT_STATE_PKG();
  8 ExaxisPos epos = new ExaxisPos(0, 0, 0, 0);
  9 DescPose offset_pos = new DescPose(0, 0, 0, 0, 0, 0);
 10
 11 JointPos j1 = new JointPos(5.027, -84.331, -75.139, -103.690, 86.379, 20.794);
 12 DescPose d1 = new DescPose(324.752, -83.339, 366.314, -172.321, -0.936, -106.047);
 13
 14 JointPos j2 = new JointPos(-35.335, -117.598, -57.174, -95.234, 90.001, -19.560);
 15 DescPose d2 = new DescPose(324.999, -355.439, 260.000, 179.995, 0.003, -105.775);
 16
 17 JointPos j3 = new JointPos(59.787, -117.594, -57.183, -95.222, 90.006, 75.562);
 18 DescPose d3 = new DescPose(324.998, 355.441, 260.002, 179.995, 0.003, -105.775);
 19
 20 System.out.println("\nStep 1: MoveJ to start point");
 21 rtn = robot.MoveJ(j1, d1, 1, 0, 100, 100, 50, epos, -1, 0, offset_pos);
 22 System.out.println("  MoveJ(j1) rtn=" + rtn);
 23 try {
 24     Thread.sleep(500);
 25 } catch (InterruptedException e) {
 26     Thread.currentThread().interrupt();
 27 }
 28
 29 System.out.println("\nStep 2: MoveJ to weave entry point");
 30 rtn = robot.MoveJ(j2, d2, 1, 0, 100, 100, 50, epos, -1, 0, offset_pos);
 31 System.out.println("  MoveJ(j2) rtn=" + rtn);
 32 try {
 33     Thread.sleep(500);
 34 } catch (InterruptedException e) {
 35     Thread.currentThread().interrupt();
 36 }
 37
 38 System.out.println("\nStep 3: WeaveStart + MoveL in background thread");
 39 robot.WeaveStart(0);
 40
 41 final boolean[] weaveRunning = {true};
 42 final int[] threadRtn = {0};
 43 Thread weaveThread = new Thread(new Runnable() {
 44     @Override
 45     public void run() {
 46         threadRtn[0] = robot.MoveL(j3, d3, 1, 0, 100, 100, 5, -1, 0, epos, 0, 0, offset_pos, 5, 0, 0, 10);
 47         System.out.println("  MoveL(weave) thread finished, rtn=" + threadRtn[0]);
 48         weaveRunning[0] = false;
 49     }
 50 });
 51 weaveThread.setDaemon(true);
 52 weaveThread.start();
 53 try {
 54     Thread.sleep(500);
 55 } catch (InterruptedException e) {
 56     Thread.currentThread().interrupt();
 57 }
 58
 59 System.out.println("\nStep 4: SetSpeed test during weaving");
 60 int[] speedValues = { 20, 50, 80, 30, 60, 10 };
 61 for (int speed : speedValues) {
 62     if (!weaveRunning[0]) break;
 63     rtn = robot.SetSpeedInstant(speed);
 64     pkg = robot.GetRobotRealTimeState();
 65     System.out.println("  SetSpeed(" + speed + ") -> rtn=" + rtn + ", TCP_CmpSpeed=" + pkg.target_TCP_CmpSpeed);
 66     try {
 67         Thread.sleep(5000);
 68     } catch (InterruptedException e) {
 69         Thread.currentThread().interrupt();
 70     }
 71 }
 72
 73 try {
 74     Thread.sleep(5000);
 75 } catch (InterruptedException e) {
 76     Thread.currentThread().interrupt();
 77 }
 78
 79 System.out.println("\nStep 5: SetWeaveOffsetRT test (50 iterations, delta=0.1)");
 80 double accumOffset = 0.0;
 81 for (int i = 0; i < 50 && weaveRunning[0]; i++) {
 82     accumOffset += 0.1;
 83     DescPose weaveOffset = new DescPose(0, 0, accumOffset, 0, 0, 0);
 84     rtn = robot.SetWeaveOffsetRT(weaveOffset);
 85     pkg = robot.GetRobotRealTimeState();
 86     System.out.printf("  [%d/50] SetWeaveOffsetRT(x=%.1f) -> rtn=%d, TCP_pos=(%.2f,%.2f,%.2f)\n",
 87         i + 1, accumOffset, rtn,
 88         pkg.tl_cur_pos[0], pkg.tl_cur_pos[1], pkg.tl_cur_pos[2]);
 89     try {
 90         Thread.sleep(100);
 91     } catch (InterruptedException e) {
 92         Thread.currentThread().interrupt();
 93     }
 94 }
 95
 96 System.out.println("\nStep 6: Wait for weave MoveL, then WeaveEnd");
 97  try {
 98      weaveThread.join();
 99  } catch (InterruptedException e) {
100      Thread.currentThread().interrupt();
101  }
102  robot.WeaveEnd(0);
103  try {
104      Thread.sleep(500);
105  } catch (InterruptedException e) {
106      Thread.currentThread().interrupt();
107  }
108
109  System.out.println("\nStep 7: MoveL back to start");
110  rtn = robot.MoveL(j1, d1, 1, 0, 100, 100, 50, -1, 0, epos, 0, 0, offset_pos, 50, 0, 0, 10);
111  System.out.println("  MoveL(back) rtn=" + rtn);
112
113  pkg = robot.GetRobotRealTimeState();
114  System.out.println("\n  Final robot state: main_code=" + pkg.main_code + ", sub_code=" + pkg.sub_code);
115}