13. Eixo de Extensão

13.1. Definir Parâmetros do Eixo de Extensão 485

1/**
2* @brief Define os parâmetros do eixo de extensão 485
3* @param [in] servoId ID do servo driver, faixa [1-16], correspondente ao ID do escravo
4* @param [in] param Parâmetros do eixo de extensão 485
5* @return Código de erro
6*/
7int AuxServoSetParam(int servoId, Axis485Param param)

13.2. Obter Parâmetros do Eixo de Extensão 485

1/**
2* @brief Obtém os parâmetros de configuração do eixo de extensão 485
3* @param [in] servoId ID do servo driver, faixa [1-16], correspondente ao ID do escravo
4* @param [out] param Parâmetros do eixo de extensão 485
5* @return Código de erro
6*/
7int AuxServoGetParam(int servoId, Axis485Param param);

13.3. Habilitar/Desabilitar Eixo de Extensão 485

1/**
2* @brief Habilita/desabilita o eixo de extensão 485
3* @param [in] servoId ID do servo driver, faixa [1-16], correspondente ao ID do escravo
4* @param [in] status Estado de habilitação, 0-desabilitar, 1-habilitar
5* @return Código de erro
6*/
7int AuxServoEnable(int servoId, int status);

13.4. Definir Modo de Controle do Eixo de Extensão 485

1/**
2* @brief Define o modo de controle do eixo de extensão 485
3* @param [in] servoId ID do servo driver, faixa [1-16], correspondente ao ID do escravo
4* @param [in] mode Modo de controle, 0-modo posição, 1-modo velocidade
5* @return Código de erro
6*/
7int AuxServoSetControlMode(int servoId, int mode);

13.5. Definir Posição Alvo do Eixo de Extensão 485 (Modo Posição)

1/**
2* @brief Define a posição alvo do eixo de extensão 485 (modo posição)
3* @param [in] servoId ID do servo driver, faixa [1-16], correspondente ao ID do escravo
4* @param [in] pos Posição alvo, mm ou °
5* @param [in] speed Velocidade alvo, mm/s ou °/s
6* @param [in] acc Porcentagem de aceleração [0-100]
7* @return Código de erro
8*/
9int AuxServoSetTargetPos(int servoId, double pos, double speed, double acc);

13.6. Definir Torque Alvo do Eixo de Extensão 485 (Modo Torque) - Temporariamente não disponível

1/**
2* @brief Define o torque alvo do eixo de extensão 485 (modo torque) - Temporariamente não disponível
3* @param [in] servoId ID do servo driver, faixa [1-16], correspondente ao ID do escravo
4* @param [in] torque Torque alvo, Nm
5* @return Código de erro
6*/
7int AuxServoSetTargetTorque(int servoId, double torque);

13.7. Definir Homing do Eixo de Extensão 485

 1/**
 2* @brief Define o homing do eixo de extensão 485
 3* @param [in] servoId ID do servo driver, faixa [1-16], correspondente ao ID do escravo
 4* @param [in] mode Modo de homing, 1-homing na posição atual; 2-homing no limite negativo; 3-homing no limite positivo
 5* @param [in] searchVel Velocidade de busca, mm/s ou °/s
 6* @param [in] latchVel Velocidade de fixação, mm/s ou °/s
 7* @param [in] acc Porcentagem de aceleração [0-100]
 8* @return Código de erro
 9*/
10int AuxServoHoming(int servoId, int mode, double searchVel, double latchVel);

13.8. Limpar Informações de Erro do Eixo de Extensão 485

1/**
2* @brief Limpa as informações de erro do eixo de extensão 485
3* @param [in] servoId ID do servo driver, faixa [1-16], correspondente ao ID do escravo
4* @return Código de erro
5*/
6int AuxServoClearError(int servoId);

13.9. Obter Estado do Servo do Eixo de Extensão 485

 1/**
 2* @brief Obtém o estado do servo do eixo de extensão 485
 3* @param [in] servoId ID do servo driver, faixa [1-16], correspondente ao ID do escravo
 4* @param [in] servoErrCode Código de falha do servo driver
 5* @param [in] servoState Estado do servo driver bit0:0-desabilitado; 1-habilitado; bit1:0-parado; 1-em movimento; bit4:0-posicionamento não concluído; 1-posicionamento concluído; bit5:0-homing não concluído; 1-homing concluído
 6* @param [in] servoPos Posição atual do servo mm ou °
 7* @param [in] servoSpeed Velocidade atual do servo mm/s ou °/s
 8* @param [in] servoTorque Torque atual do servo Nm
 9* @return Código de erro
10*/
11int AuxServoGetStatus(int servoId, int[] servoErrCode, int[] servoState, double[] servoPos, double[] servoSpeed, double[] servoTorque)

13.10. Definir Velocidade Alvo do Eixo de Extensão 485 (Modo Velocidade)

1/**
2* @brief Define a velocidade alvo do eixo de extensão 485 (modo velocidade)
3* @param [in] servoId ID do servo driver, faixa [1-16], correspondente ao ID do escravo
4* @param [in] speed Velocidade alvo, mm/s ou °/s
5* @param [in] acc Porcentagem de aceleração [0-100]
6* @return Código de erro
7*/
8int AuxServoSetTargetSpeed(int servoId, double speed, double acc);

13.11. Definir Número do Eixo de Dados do Eixo de Extensão 485 no Feedback de Estado

1/**
2* @brief Define o número do eixo de dados do eixo de extensão 485 no feedback de estado
3* @param [in] servoId ID do servo driver, faixa [1-16], correspondente ao ID do escravo
4* @return Código de erro
5*/
6int AuxServosetStatusID(int servoId);

13.12. Definir Aceleração/Desaceleração do Movimento do Eixo de Extensão 485

1/**
2* @brief Define a aceleração/desaceleração do movimento do eixo de extensão 485
3* @param [in] acc Aceleração do movimento do eixo de extensão 485
4* @param [in] dec Desaceleração do movimento do eixo de extensão 485
5* @return Código de erro
6*/
7int AuxServoSetAcc(double acc, double dec)

13.13. Definir Aceleração/Desaceleração de Parada de Emergência do Eixo de Extensão 485

1/**
2* @brief Define a aceleração/desaceleração de parada de emergência do eixo de extensão 485
3* @param [in] acc Aceleração de parada de emergência do eixo de extensão 485
4* @param [in] dec Desaceleração de parada de emergência do eixo de extensão 485
5* @return Código de erro
6*/
7int AuxServoSetEmergencyStopAcc(double acc, double dec)

13.14. Obter Aceleração/Desaceleração do Movimento do Eixo de Extensão 485

1/**
2* @brief Obtém a aceleração/desaceleração do movimento do eixo de extensão 485
3* @return List[0]: Código de erro; List[1]: Aceleração do movimento do eixo de extensão 485; List[2]: Desaceleração do movimento do eixo de extensão 485
4*/
5List<Number> AuxServoGetAcc()

13.15. Obter Aceleração/Desaceleração de Parada de Emergência do Eixo de Extensão 485

1/**
2* @brief Obtém a aceleração/desaceleração de parada de emergência do eixo de extensão 485
3* @return List[0]: Código de erro; List[1]: Aceleração de parada de emergência do eixo de extensão 485; List[2]: Desaceleração de parada de emergência do eixo de extensão 485
4*/
5List<Number> AuxServoGetEmergencyStopAcc()

13.16. Exemplo de Código de Controle do Eixo de Extensão

 1public static int Test485Auxservo(Robot robot)
 2{
 3    Axis485Param ax=new Axis485Param(1, 1, 1, 131072, 15.45);
 4    int retval = robot.AuxServoSetParam(1, ax);
 5
 6    Axis485Param ax2=new Axis485Param();
 7    retval = robot.AuxServoGetParam(1, ax2);
 8
 9    ax.servoCompany=10;
10    ax.servoModel=11;
11    ax.servoSoftVersion=12;
12    ax.servoResolution=13;
13    ax.axisMechTransRatio=14;
14
15    retval = robot.AuxServoSetParam(1, ax);
16
17    retval = robot.AuxServoGetParam(1,ax2);
18
19    ax.servoCompany=1;
20    ax.servoModel=1;
21    ax.servoSoftVersion=1;
22    ax.servoResolution=131072;
23    ax.axisMechTransRatio=36;
24
25    retval = robot.AuxServoSetParam(1, ax);
26    robot.Sleep(3000);
27
28    robot.AuxServoSetAcc(3000, 3000);
29    robot.AuxServoSetEmergencyStopAcc(5000, 5000);
30    robot.Sleep(1000);
31    double emagacc = 0, acc = 0;
32    double emagdec = 0, dec = 0;
33
34    List<Number> aux=new ArrayList<>();
35
36    aux=robot.AuxServoGetEmergencyStopAcc();
37    aux=robot.AuxServoGetAcc();
38
39    robot.AuxServoSetControlMode(1, 0);
40    robot.Sleep(2000);
41
42    retval = robot.AuxServoEnable(1, 0);
43    robot.Sleep(1000);
44    int[] servoerrcode =new int[]{0};
45    int[] servoErrCode=new int[]{0};
46    int[] servoState=new int[]{0};
47    double[] servoPos=new double[]{0};
48    double[] servoSpeed=new double[]{0};
49    double[] servoTorque=new double[]{0};
50    retval = robot.AuxServoGetStatus(1, servoErrCode, servoState, servoPos, servoSpeed, servoTorque);
51    robot.Sleep(1000);;
52
53    retval = robot.AuxServoEnable(1, 1);
54    robot.Sleep(1000);
55    retval = robot.AuxServoGetStatus(1, servoErrCode, servoState, servoPos, servoSpeed, servoTorque);
56    robot.Sleep(1000);
57
58    retval = robot.AuxServoHoming(1, 1, 5, 1,100);
59    robot.Sleep(3000);
60
61    retval = robot.AuxServoSetTargetPos(1, 200, 30,100);
62    robot.Sleep(1000);
63    retval = robot.AuxServoGetStatus(1, servoErrCode, servoState, servoPos, servoSpeed, servoTorque);
64    robot.Sleep(8000);
65
66
67    robot.AuxServoSetControlMode(1, 1);
68    robot.Sleep(2000);
69
70    robot.AuxServoEnable(1, 0);
71    robot.Sleep(1000);
72    robot.AuxServoEnable(1, 1);
73    robot.Sleep(1000);
74    robot.AuxServoSetTargetSpeed(1, 100, 80);
75
76    robot.Sleep(5000);
77    robot.AuxServoSetTargetSpeed(1, 0, 80);
78
79    robot.CloseRPC();
80    return 0;
81}

13.17. Configuração dos Parâmetros de Comunicação UDP do Eixo de Extensão

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

1/**
2* @brief Configuração dos parâmetros de comunicação UDP do eixo de extensão
3* @param [in] param Parâmetros de comunicação
4* @return Código de erro
5*/
6int ExtDevSetUDPComParam(UDPComParam param);

13.18. Obter Configuração dos Parâmetros de Comunicação UDP do Eixo de Extensão

 1/**
 2* @brief Obtém os parâmetros de comunicação UDP do eixo de extensão
 3* @param [out] ip Endereço IP do CLP
 4* @param [out] port Número da porta
 5* @param [out] period Período de comunicação (ms, padrão 2, não modifique este parâmetro)
 6* @param [out] lossPkgTime Tempo de detecção de perda de pacotes (ms)
 7* @param [out] lossPkgNum Número de perdas de pacotes
 8* @param [out] disconnectTime Duração de confirmação de desconexão da comunicação
 9* @param [out] reconnectEnable Habilitação de reconexão automática em caso de desconexão da comunicação 0-desabilitar 1-habilitar
10* @param [out] reconnectPeriod Intervalo de reconexão (ms)
11* @param [out] reconnectNum Número de tentativas de reconexão
12* @param [out] selfConnect Se reconecta automaticamente após reinicialização do painel de controle; 0-não reconectar; 1-reconectar
13* @return Código de erro
14*/
15public int ExtDevGetUDPComParam(ref string ip, ref int port, ref int period, ref int lossPkgTime, ref int lossPkgNum, ref int disconnectTime, ref int reconnectEnable, ref int reconnectPeriod, ref int reconnectNum, ref int selfConnect)

13.19. Carregar Comunicação UDP

1/**
2* @brief Carrega a comunicação UDP
3* @return Código de erro
4*/
5int ExtDevLoadUDPDriver();

13.20. Descarregar Comunicação UDP

1/**
2* @brief Descarrega a comunicação UDP
3* @return Código de erro
4*/
5int ExtDevUnloadUDPDriver();

13.21. Restaurar Conexão Após Desconexão Anormal da Comunicação UDP do Eixo de Extensão

1/**
2* @brief Restaura a conexão após desconexão anormal da comunicação UDP do eixo de extensão
3* @return Código de erro
4*/
5int ExtDevUDPClientComReset();

13.22. Fechar Comunicação Após Desconexão Anormal da Comunicação UDP do Eixo de Extensão

1/**
2* @brief Fecha a comunicação após desconexão anormal da comunicação UDP do eixo de extensão
3* @return Código de erro
4*/
5int ExtDevUDPClientComClose();

13.23. Configuração dos Parâmetros do Eixo de Extensão UDP

 1/**
 2* @brief Configuração dos parâmetros do eixo de extensão UDP
 3* @param [in] axisID Número do eixo
 4* @param [in] axisType Tipo de eixo de extensão 0-translação; 1-rotação
 5* @param [in] axisDirection Direção do eixo de extensão 0-positiva; 1-negativa
 6* @param [in] axisMax Posição máxima do eixo de extensão mm
 7* @param [in] axisMin Posição mínima do eixo de extensão mm
 8* @param [in] axisVel Velocidade mm/s
 9* @param [in] axisAcc Aceleração mm/s2
10* @param [in] axisLead Passo mm
11* @param [in] encResolution Resolução do codificador
12* @param [in] axisOffect Deslocamento do ponto inicial da solda no eixo de extensão
13* @param [in] axisCompany Fabricante do driver 1-Huichuan; 2-Huichuan; 3-Panasonic
14* @param [in] axisModel Modelo do driver 1-Huichuan-SV-XD3EA040L-E, 2-Huichuan-SV-X2EA150A-A, 1-Huichuan-SV620PT5R4I, 1-Panasonic-MADLN15SG, 2-Panasonic-MSDLN25SG, 3-Panasonic-MCDLN35SG
15* @param [in] axisEncType Tipo de codificador  0-incremental; 1-absoluto
16* @return Código de erro
17*/
18int ExtAxisParamConfig(int axisID, int axisType, int axisDirection, double axisMax, double axisMin, double axisVel, double axisAcc, double axisLead, int encResolution, double axisOffect, int axisCompany, int axisModel, int axisEncType);

13.24. Definir Posição de Instalação do Eixo de Extensão

1/**
2* @brief Define a posição de instalação do eixo de extensão
3* @param [in] installType 0-robô instalado no eixo externo, 1-robô instalado fora do eixo externo
4* @return Código de erro
5*/
6int SetRobotPosToAxis(int installType);

13.25. Definir Configuração dos Parâmetros DH do Sistema de Eixo de Extensão

 1/**
 2* @brief Define a configuração dos parâmetros DH do sistema de eixo de extensão
 3* @param [in]  axisConfig Configuração do eixo externo, 0-trilho linear de 1 grau de liberdade, 1-posicionador tipo L de 2 graus de liberdade, 2-3 graus de liberdade, 3-4 graus de liberdade, 4-posicionador de 1 grau de liberdade
 4* @param [in]  axisDHd1 Parâmetro DH do eixo externo d1 mm
 5* @param [in]  axisDHd2 Parâmetro DH do eixo externo d2 mm
 6* @param [in]  axisDHd3 Parâmetro DH do eixo externo d3 mm
 7* @param [in]  axisDHd4 Parâmetro DH do eixo externo d4 mm
 8* @param [in]  axisDHa1 Parâmetro DH do eixo externo a1 mm
 9* @param [in]  axisDHa2 Parâmetro DH do eixo externo a2 mm
10* @param [in]  axisDHa3 Parâmetro DH do eixo externo a3 mm
11* @param [in]  axisDHa4 Parâmetro DH do eixo externo a4 mm
12* @return Código de erro
13*/
14int SetAxisDHParaConfig(int axisConfig, double axisDHd1, double axisDHd2, double axisDHd3, double axisDHd4, double axisDHa1, double axisDHa2, double axisDHa3, double axisDHa4);

13.26. Habilitar Eixo de Extensão UDP

1/**
2* @brief Habilita o eixo de extensão UDP
3* @param [in] axisID Número do eixo [1-4]
4* @param [in] status 0-desabilitar; 1-habilitar
5* @return Código de erro
6*/
7int ExtAxisServoOn(int axisID, int status);

13.27. Homing do Eixo de Extensão UDP

1/**
2* @brief Homing do eixo de extensão UDP
3* @param [in] axisID Número do eixo [1-4]
4* @param [in] mode Modo de homing 0-homing na posição atual, 1-homing no limite negativo, 2-homing no limite positivo
5* @param [in] searchVel Velocidade de busca (mm/s)
6* @param [in] latchVel Velocidade de fixação da busca (mm/s)
7* @return Código de erro
8*/
9int ExtAxisSetHoming(int axisID, int mode, double searchVel, double latchVel);

13.28. Iniciar Jog do Eixo de Extensão UDP

 1/**
 2* @brief Inicia o jog do eixo de extensão UDP
 3* @param [in] axisID Número do eixo [1-4]
 4* @param [in] direction Direção de rotação 0-reversa; 1-positiva
 5* @param [in] vel Velocidade (mm/s)
 6* @param [in] acc (Aceleração mm/s2)
 7* @param [in] maxDistance Distância máxima de jog
 8* @return Código de erro
 9*/
10int ExtAxisStartJog(int axisID, int direction, double vel, double acc, double maxDistance);

13.29. Parar Jog do Eixo de Extensão UDP

1/**
2* @brief Para o jog do eixo de extensão UDP
3* @param [in] axisID Número do eixo [1-4]
4* @return Código de erro
5*/
6int ExtAxisStopJog(int axisID);

13.30. Exemplo de Código de Configuração e Jog do Eixo de Extensão UDP

 1public static int TestUDPAxis(Robot robot)//UDP
 2{
 3    UDPComParam para1=new UDPComParam("192.168.58.88", 2021, 2, 100, 3, 200, 1, 100, 5, 1);
 4    int rtn = robot.ExtDevSetUDPComParam(para1);
 5    String ip = ""; int port = 0; int period = 0; int lossPkgTime = 0; int lossPkgNum = 0; int disconnectTime = 0; int reconnectEnable = 0; int reconnectPeriod = 0; int reconnectNum = 0;
 6    UDPComParam para2=new UDPComParam(ip, port, period, lossPkgTime, lossPkgNum, disconnectTime, reconnectEnable, reconnectPeriod, reconnectNum,0);
 7    rtn = robot.ExtDevGetUDPComParam(para2);
 8
 9    robot.ExtDevLoadUDPDriver();
10
11    rtn = robot.ExtAxisServoOn(1, 1);
12    rtn = robot.ExtAxisServoOn(2, 1);
13    robot.Sleep(3000);
14
15    robot.ExtAxisSetHoming(1, 0, 10, 2);
16    robot.Sleep(3000);
17    rtn = robot.ExtAxisSetHoming(2, 0, 10, 2);
18
19    robot.Sleep(4000);
20
21    rtn = robot.SetRobotPosToAxis(1);
22    rtn = robot.SetAxisDHParaConfig(10, 20, 0, 0, 0, 0, 0, 0, 0);
23    rtn = robot.ExtAxisParamConfig(1, 1, 1, 1000, -1000, 1000, 1000, 1.905, 262144, 200, 1, 0, 0);
24    rtn = robot.ExtAxisParamConfig(2, 1, 1, 1000, -1000, 1000, 1000, 4.444, 262144, 200, 1, 0, 0);
25
26    robot.Sleep(4000);
27    robot.ExtAxisStartJog(1, 0, 10, 10, 30);
28    robot.Sleep(4000);
29    robot.ExtAxisStopJog(1);
30    robot.Sleep(4000);
31    robot.ExtAxisServoOn(1, 0);
32
33    robot.Sleep(4000);
34    robot.ExtAxisStartJog(2, 0, 10, 10, 30);
35    robot.Sleep(4000);
36    robot.ExtAxisStopJog(2);
37    robot.Sleep(4000);
38    robot.ExtAxisServoOn(2, 0);
39    robot.Sleep(4000);
40    robot.ExtDevUnloadUDPDriver();
41
42    return 0;
43}

13.31. Definir Ponto de Referência do Sistema de Coordenadas do Eixo de Extensão - Método de Quatro Pontos

1/**
2* @brief Define o ponto de referência do sistema de coordenadas do eixo de extensão - Método de quatro pontos
3* @param [in]  pointNum Número do ponto [1-4]
4* @return Código de erro
5*/
6int ExtAxisSetRefPoint(int pointNum);

13.32. Calcular Sistema de Coordenadas do Eixo de Extensão - Método de Quatro Pontos

1/**
2* @brief Calcula o sistema de coordenadas do eixo de extensão - Método de quatro pontos
3* @param [out]  coord Valor do sistema de coordenadas
4* @return Código de erro
5*/
6int ExtAxisComputeECoordSys(DescPose coord);

13.33. Definir Ponto de Referência do Sistema de Coordenadas do Posicionador

1/**
2* @brief Define o ponto de referência do sistema de coordenadas do posicionador
3* @param [in]  pointNum Número do ponto [1-4]
4* @return Código de erro
5*/
6int PositionorSetRefPoint(int pointNum);

13.34. Calcular Sistema de Coordenadas do Posicionador - Método de Quatro Pontos

1/**
2* @brief Calcula o sistema de coordenadas do posicionador - Método de quatro pontos
3* @param [out] coord Valor do sistema de coordenadas
4* @return Código de erro
5*/
6int PositionorComputeECoordSys(DescPose coord);

13.35. Definir Pose do Ponto de Referência de Calibração no Sistema de Coordenadas da Extremidade do Posicionador

1/**
2* @brief Define a pose do ponto de referência de calibração no sistema de coordenadas da extremidade do posicionador
3* @param [in] pos Valor da pose
4* @return Código de erro
5*/
6int SetRefPointInExAxisEnd(DescPose pos);

13.36. Aplicar Sistema de Coordenadas do Eixo de Extensão

1/**
2* @brief Aplica o sistema de coordenadas do eixo de extensão
3* @param [in]  applyAxisId Número do eixo de extensão bit0-bit3 correspondem aos números dos eixos de extensão 1-4, por exemplo, aplicar eixos de extensão 1 e 3 é 0b 0000 0101; ou seja, 5
4* @param [in]  axisCoordNum Número do sistema de coordenadas do eixo de extensão
5* @param [in]  coord Valor do sistema de coordenadas
6* @param [in]  calibFlag Flag de calibração 0-não, 1-sim
7* @return Código de erro
8*/
9int ExtAxisActiveECoordSys(int applyAxisId, int axisCoordNum, DescPose coord, int calibFlag);

13.37. Obter Sistema de Coordenadas do Eixo de Extensão

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

1/**
2* @brief Obtém o sistema de coordenadas do eixo de extensão
3* @param [out] coord Sistema de coordenadas do eixo de extensão
4* @return Código de erro
5*/
6int ExtAxisGetCoord(DescPose coord);

13.38. Exemplo de Código de Calibração do Sistema de Coordenadas do Eixo de Extensão

 1public static int TestUDPAxisCalib(Robot robot)
 2{
 3    UDPComParam para1=new UDPComParam("192.168.58.88", 2021, 2, 100, 3, 200, 1, 100, 5, 1);
 4
 5    int rtn = robot.ExtDevSetUDPComParam(para1);
 6    String ip = ""; int port = 0; int period = 0; int lossPkgTime = 0; int lossPkgNum = 0; int disconnectTime = 0; int reconnectEnable = 0; int reconnectPeriod = 0; int reconnectNum = 0;
 7    UDPComParam para2=new UDPComParam(ip, port, period, lossPkgTime, lossPkgNum, disconnectTime, reconnectEnable, reconnectPeriod, reconnectNum,0);
 8
 9    rtn = robot.ExtDevGetUDPComParam(para2);
10
11    robot.ExtDevLoadUDPDriver();
12
13    rtn = robot.ExtAxisServoOn(1, 1);
14    rtn = robot.ExtAxisServoOn(2, 1);
15
16    robot.Sleep(4000);
17
18    rtn = robot.SetRobotPosToAxis(1);
19    rtn = robot.SetAxisDHParaConfig(1, 128.5, 206.4,  0, 0, 0, 0, 0, 0);
20    rtn = robot.ExtAxisParamConfig(1, 1, 1, 1000, -1000, 1000, 1000, 1.905, 262144, 200, 1, 0, 0);
21    rtn = robot.ExtAxisParamConfig(2, 1, 1, 1000, -1000, 1000, 1000, 4.444, 262144, 200, 1, 0, 0);
22
23    DescPose toolCoord=new DescPose(0, 0, 210, 0, 0, 0);
24    robot.SetToolCoord(1, toolCoord, 0, 0, 1, 0);
25
26    JointPos jSafe=new JointPos(115.193, -96.149, 92.489, -87.068, -89.15, -83.488);
27    JointPos j1=new JointPos(117.559, -92.624, 100.329, -96.909, -94.057, -83.488);
28    JointPos j2=new JointPos(112.239, -90.096, 99.282, -95.909, -89.824, -83.488);
29    JointPos j3=new JointPos(110.839, -83.473, 93.166, -89.22, -90.499, -83.487);
30    JointPos j4=new JointPos(107.935, -83.572, 95.424, -92.873, -87.933, -83.488);
31
32    DescPose descSafe =new DescPose(0,0,0,0,0,0);
33    DescPose desc1 = new DescPose(0,0,0,0,0,0);
34    DescPose desc2 = new DescPose(0,0,0,0,0,0);
35    DescPose desc3 = new DescPose(0,0,0,0,0,0);
36    DescPose desc4 = new DescPose(0,0,0,0,0,0);
37    ExaxisPos exaxisPos =new ExaxisPos(0,0,0,0);
38    DescPose offdese =new DescPose(0, 0, 0, 0, 0, 0);
39
40    robot.GetForwardKin(jSafe, descSafe);
41    robot.MoveJ(jSafe, descSafe, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
42    robot.Sleep(2000);
43
44    robot.GetForwardKin(j1, desc1);
45    robot.MoveJ(j1, desc1, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
46    robot.Sleep(2000);
47
48    DescPose actualTCPPos =new DescPose(0,0,0,0,0,0);
49
50    robot.GetActualTCPPose(actualTCPPos);
51    robot.SetRefPointInExAxisEnd(actualTCPPos);
52    rtn = robot.PositionorSetRefPoint(1);
53    robot.Sleep(2000);
54
55    robot.MoveJ(jSafe, descSafe, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
56    robot.ExtAxisStartJog(1, 0, 50, 50, 10);
57    robot.Sleep(1000);
58    robot.ExtAxisStartJog(2, 0, 50, 50, 10);
59    robot.Sleep(1000);
60    robot.GetForwardKin(j2, desc2);
61    rtn = robot.MoveJ(j2, desc2, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
62    rtn = robot.PositionorSetRefPoint(2);
63    robot.Sleep(2000);
64
65    robot.MoveJ(jSafe, descSafe, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
66    robot.ExtAxisStartJog(1, 0, 50, 50, 10);
67    robot.Sleep(1000);
68    robot.ExtAxisStartJog(2, 0, 50, 50, 10);
69    robot.Sleep(1000);
70    robot.GetForwardKin(j3, desc3);
71    robot.MoveJ(j3, desc3, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
72    rtn = robot.PositionorSetRefPoint(3);
73    robot.Sleep(2000);
74
75    robot.MoveJ(jSafe, descSafe, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
76    robot.ExtAxisStartJog(1, 0, 50, 50, 10);
77    robot.Sleep(1000);
78    robot.ExtAxisStartJog(2, 0, 50, 50, 10);
79    robot.Sleep(1000);
80    robot.GetForwardKin(j4, desc4);
81    robot.MoveJ(j4, desc4, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
82    rtn = robot.PositionorSetRefPoint(4);
83    robot.Sleep(2000);
84
85    DescPose axisCoord = new DescPose();
86    robot.PositionorComputeECoordSys(axisCoord);
87    robot.MoveJ(jSafe, descSafe, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
88    rtn = robot.ExtAxisActiveECoordSys(3, 1, axisCoord, 1);
89
90    robot.CloseRPC();
91    return 0;
92}

13.39. Movimento do Eixo de Extensão UDP

Alterado na versão Java: SDK-v1.0.7-3.8.4

1/**
2* @brief Movimento do eixo de extensão UDP
3* @param [in] pos Posição alvo
4* @param [in] ovl Porcentagem de velocidade
5* @param [in] blend Parâmetro de suavização (mm ou ms)
6* @return Código de erro
7*/
8int ExtAxisMove(ExaxisPos pos, double ovl, double blend)

13.40. Exemplo de Código de Movimento do Eixo de Extensão UDP

1public static int TestUDPAxisCalib(Robot robot)
2{
3    ExaxisPos exaxisPos = new ExaxisPos( 20, 0, 0, 0 );
4    robot.ExtAxisMove(exaxisPos,40);
5    robot.CloseRPC();
6    return 0;
7}

13.41. Movimento Síncrono do Eixo de Extensão UDP com Movimento Articular do Robô

 1/**
 2* @brief Movimento síncrono do eixo de extensão UDP com movimento articular do robô
 3* @param [in] joint_pos  Posição articular alvo, unidade deg
 4* @param [in] desc_pos   Pose cartesiana alvo
 5* @param [in] tool  Número da ferramenta, faixa [0~14]
 6* @param [in] user  Número da peça, faixa [0~14]
 7* @param [in] vel  Porcentagem de velocidade, faixa [0~100]
 8* @param [in] acc  Porcentagem de aceleração, faixa [0~100], temporariamente não disponível
 9* @param [in] ovl  Fator de escala de velocidade, faixa [0~100]
10* @param [in] epos  Posição do eixo de extensão, unidade mm
11* @param [in] blendT [-1.0]-movimento concluído (bloqueado), [0~500.0]-tempo de suavização (não bloqueado), unidade ms
12* @param [in] offset_flag  0-sem deslocamento, 1-deslocamento no sistema de coordenadas base/sistema de coordenadas da peça, 2-deslocamento no sistema de coordenadas da ferramenta
13* @param [in] ffset_pos  Valor de deslocamento da pose
14* @return Código de erro
15*/
16int ExtAxisSyncMoveJ(JointPos joint_pos, DescPose desc_pos, int tool, int user, double vel, double acc, double ovl, ExaxisPos epos, double blendT, int offset_flag, DescPose offset_pos);

13.42. Movimento Síncrono do Eixo de Extensão UDP com Movimento Articular do Robô (Cálculo Automático de Cinemática Direta)

Novo na versão Java: SDK-v1.0.8-3.8.5

 1/**
 2* @brief  Movimento síncrono do eixo de extensão UDP com movimento articular do robô (Cálculo automático de cinemática direta)
 3* @param  [in] joint_pos  Posição articular alvo, unidade deg
 4* @param  [in] tool  Número da ferramenta, faixa [0~14]
 5* @param  [in] user  Número da peça, faixa [0~14]
 6* @param  [in] vel  Porcentagem de velocidade, faixa [0~100]
 7* @param  [in] acc  Porcentagem de aceleração, faixa [0~100], temporariamente não disponível
 8* @param  [in] ovl  Fator de escala de velocidade, faixa [0~100]
 9* @param  [in] epos  Posição do eixo de extensão, unidade mm
10* @param  [in] blendT [-1.0]-movimento concluído (bloqueado), [0~500.0]-tempo de suavização (não bloqueado), unidade ms
11* @param  [in] offset_flag  0-sem deslocamento, 1-deslocamento no sistema de coordenadas base/sistema de coordenadas da peça, 2-deslocamento no sistema de coordenadas da ferramenta
12* @param  [in] offset_pos  Valor de deslocamento da pose
13* @return  Código de erro
14*/
15int ExtAxisSyncMoveJ(JointPos joint_pos, int tool, int user, double vel, double acc, double ovl, ExaxisPos epos, double blendT, int offset_flag, DescPose offset_pos)

13.43. Exemplo de Código de Movimento Síncrono do Eixo de Extensão UDP com Movimento Articular do Robô

 1public int testSyncMoveJ(Robot robot)
 2{
 3    //1. Calibrar e aplicar o sistema de coordenadas da ferramenta do robô. Você pode usar o método de quatro pontos ou seis pontos para calibrar e aplicar o sistema de coordenadas da ferramenta. As interfaces envolvidas na calibração do sistema de coordenadas da ferramenta são:
 4    //  int SetToolPoint(int point_num); //Definir ponto de referência da ferramenta - método de seis pontos
 5    //  int ComputeTool(ref DescPose tcp_pose); //Calcular sistema de coordenadas da ferramenta
 6    //  int SetTcp4RefPoint(int point_num);  //Definir ponto de referência da ferramenta - método de quatro pontos
 7    //  int ComputeTcp4(ref DescPose tcp_pose);  //Calcular sistema de coordenadas da ferramenta - método de quatro pontos
 8    //  int SetToolCoord(int id, DescPose coord, int type, int install); //Definir e aplicar sistema de coordenadas da ferramenta
 9    //  int SetToolList(int id, DescPose coord, int type, int install);  //Definir e aplicar lista de sistemas de coordenadas da ferramenta
10    //2. Definir parâmetros de comunicação UDP e carregar a comunicação UDP
11    UDPComParam param=new UDPComParam("192.168.58.88", 2021, 2, 100, 3, 100, 1, 100, 10,0);
12    robot.ExtDevSetUDPComParam(param);
13    robot.ExtDevLoadUDPDriver();
14    //3. Definir parâmetros do eixo de extensão, incluindo tipo de eixo de extensão, parâmetros do driver do eixo de extensão, parâmetros DH do eixo de extensão
15    robot.SetAxisDHParaConfig(4, 200, 200, 0, 0, 0, 0, 0, 0); //Posicionador de eixo único e parâmetros DH
16    robot.SetRobotPosToAxis(1); //Posição de instalação do eixo de extensão
17    robot.ExtAxisParamConfig(1, 0, 1, 100, -100, 10, 10, 12, 131072, 0, 1, 0, 0); //Parâmetros do servo driver. Este exemplo é para um posicionador de eixo único, portanto, apenas um driver precisa ser configurado. Se você escolher um tipo de eixo de extensão com vários eixos, precisará definir os parâmetros do driver para cada eixo.
18    //4. Habilitar e fazer homing do eixo selecionado
19    robot.ExtAxisServoOn(1, 0);
20    robot.ExtAxisSetHoming(1, 0, 20, 3);
21    //5. Calibrar e aplicar o sistema de coordenadas do eixo de extensão
22    DescPose pos = new DescPose(/* Insira as coordenadas do seu ponto de calibração */ );
23    robot.SetRefPointInExAxisEnd(pos);
24    robot.PositionorSetRefPoint(1); /*Você precisa calibrar o eixo de extensão usando pontos em quatro posições diferentes, portanto, esta interface precisa ser chamada 4 vezes para concluir a calibração */
25    DescPose coord = new DescPose();
26    robot.PositionorComputeECoordSys(coord); //Calcular o resultado da calibração do eixo de extensão
27    robot.ExtAxisActiveECoordSys(1, 1, coord, 1); //Aplicar o resultado da calibração ao sistema de coordenadas do eixo de extensão
28    //6. Calibrar o sistema de coordenadas da peça no eixo de extensão. Você precisará usar as seguintes interfaces:
29    //int SetWObjCoordPoint(int point_num);
30    //int ComputeWObjCoord(int method, ref DescPose wobj_pose);
31    //int SetWObjCoord(int id, DescPose coord);
32    //int SetWObjList(int id, DescPose coord);
33    //7. Registrar o ponto inicial do movimento articular síncrono
34    DescPose startdescPose = new DescPose(/*Insira suas coordenadas*/ );
35    JointPos startjointPos = new JointPos(/*Insira suas coordenadas*/ );
36    ExaxisPos startexaxisPos = new ExaxisPos(/* Insira as coordenadas do ponto inicial do seu eixo de extensão */ );
37    //8. Registrar as coordenadas do ponto final do movimento articular síncrono
38    DescPose enddescPose = new DescPose(/*Insira suas coordenadas*/ );
39    JointPos endjointPos = new JointPos(/*Insira suas coordenadas*/ );
40    ExaxisPos endexaxisPos =new ExaxisPos(/* Insira as coordenadas do ponto final do seu eixo de extensão */);
41    //9. Escrever o programa de movimento síncrono
42    //Mover para o ponto inicial, assumindo que os sistemas de coordenadas da ferramenta e da peça aplicados são ambos 1
43    robot.ExtAxisMove(startexaxisPos, 20);
44    DescPose offdese = new DescPose( 0, 0, 0, 0, 0, 0 );
45    robot.MoveJ(startjointPos, startdescPose, 1, 1, 100, 100, 100, startexaxisPos, 0, 0, offdese);
46    //Iniciar movimento síncrono
47    robot.ExtAxisSyncMoveJ(endjointPos, enddescPose, 1, 1, 100, 100, 100, endexaxisPos, -1, 0, offdese);
48    robot.MoveJ(startjointPos, 1, 1, 100, 100, 100, startexaxisPos, 0, 0, offdese);
49    //Iniciar movimento síncrono
50    robot.ExtAxisSyncMoveJ(endjointPos, 1, 1, 100, 100, 100, endexaxisPos, -1, 0, offdese);
51    robot.CloseRPC();
52    return 0;
53}

13.44. Movimento Síncrono do Eixo de Extensão UDP com Movimento Linear do Robô

 1/**
 2* @brief Movimento síncrono do eixo de extensão UDP com movimento linear do robô
 3* @param [in] joint_pos  Posição articular alvo, unidade deg
 4* @param [in] desc_pos   Pose cartesiana alvo
 5* @param [in] tool  Número da ferramenta, faixa [0~14]
 6* @param [in] user  Número da peça, faixa [0~14]
 7* @param [in] vel  Porcentagem de velocidade, faixa [0~100]
 8* @param [in] acc  Porcentagem de aceleração, faixa [0~100], temporariamente não disponível
 9* @param [in] ovl  Fator de escala de velocidade, faixa [0~100]
10* @param [in] blendR [-1.0]-movimento concluído (bloqueado), [0~1000.0]-raio de suavização (não bloqueado), unidade mm
11* @param [in] epos  Posição do eixo de extensão, unidade mm
12* @param [in] offset_flag  0-sem deslocamento, 1-deslocamento no sistema de coordenadas base/sistema de coordenadas da peça, 2-deslocamento no sistema de coordenadas da ferramenta
13* @param [in] offset_pos  Valor de deslocamento da pose
14* @return Código de erro
15*/
16int ExtAxisSyncMoveL(JointPos joint_pos, DescPose desc_pos, int tool, int user, double vel, double acc, double ovl, double blendR, ExaxisPos epos, int offset_flag, DescPose offset_pos);

13.45. Movimento Síncrono do Eixo de Extensão UDP com Movimento Linear do Robô (Cálculo Automático de Cinemática Inversa)

Novo na versão Java: SDK-v1.0.8-3.8.5

 1/**
 2* @brief  Movimento síncrono do eixo de extensão UDP com movimento linear do robô (Cálculo automático de cinemática inversa)
 3* @param  [in] desc_pos   Pose cartesiana alvo
 4* @param  [in] tool  Número da ferramenta, faixa [0~14]
 5* @param  [in] user  Número da peça, faixa [0~14]
 6* @param  [in] vel  Porcentagem de velocidade, faixa [0~100]
 7* @param  [in] acc  Porcentagem de aceleração, faixa [0~100], temporariamente não disponível
 8* @param  [in] ovl  Fator de escala de velocidade, faixa [0~100]
 9* @param  [in] blendR [-1.0]-movimento concluído (bloqueado), [0~1000.0]-raio de suavização (não bloqueado), unidade mm
10* @param  [in] epos  Posição do eixo de extensão, unidade mm
11* @param  [in] offset_flag  0-sem deslocamento, 1-deslocamento no sistema de coordenadas base/sistema de coordenadas da peça, 2-deslocamento no sistema de coordenadas da ferramenta
12* @param  [in] offset_pos  Valor de deslocamento da pose
13* @param  [in] config  Configuração do espaço articular para cinemática inversa, [-1]-calcular com base na posição articular atual, [0~7]-calcular com base em uma configuração específica do espaço articular
14* @return  Código de erro
15*/
16int ExtAxisSyncMoveL(DescPose desc_pos, int tool, int user, double vel, double acc, double ovl, double blendR, ExaxisPos epos, int offset_flag, DescPose offset_pos,int config)

13.46. Exemplo de Código de Movimento Síncrono do Eixo de Extensão UDP com Movimento Linear do Robô

 1public int testSyncMoveL(Robot robot)
 2{
 3    //1. Calibrar e aplicar o sistema de coordenadas da ferramenta do robô. Você pode usar o método de quatro pontos ou seis pontos para calibrar e aplicar o sistema de coordenadas da ferramenta. As interfaces envolvidas na calibração do sistema de coordenadas da ferramenta são:
 4    //  int SetToolPoint(int point_num); //Definir ponto de referência da ferramenta - método de seis pontos
 5    //  int ComputeTool(ref DescPose tcp_pose); //Calcular sistema de coordenadas da ferramenta
 6    //  int SetTcp4RefPoint(int point_num);  //Definir ponto de referência da ferramenta - método de quatro pontos
 7    //  int ComputeTcp4(ref DescPose tcp_pose);  //Calcular sistema de coordenadas da ferramenta - método de quatro pontos
 8    //  int SetToolCoord(int id, DescPose coord, int type, int install); //Definir e aplicar sistema de coordenadas da ferramenta
 9    //  int SetToolList(int id, DescPose coord, int type, int install);  //Definir e aplicar lista de sistemas de coordenadas da ferramenta
10    //2. Definir parâmetros de comunicação UDP e carregar a comunicação UDP
11    UDPComParam param=new UDPComParam("192.168.58.88", 2021, 2, 100, 3, 100, 1, 100, 10,0);
12    robot.ExtDevSetUDPComParam(param);
13    robot.ExtDevLoadUDPDriver();
14    //3. Definir parâmetros do eixo de extensão, incluindo tipo de eixo de extensão, parâmetros do driver do eixo de extensão, parâmetros DH do eixo de extensão
15    robot.SetAxisDHParaConfig(4, 200, 200, 0, 0, 0, 0, 0, 0); //Posicionador de eixo único e parâmetros DH
16    robot.SetRobotPosToAxis(1); //Posição de instalação do eixo de extensão
17    robot.ExtAxisParamConfig(1, 0, 1, 100, -100, 10, 10, 12, 131072, 0, 1, 0, 0); //Parâmetros do servo driver. Este exemplo é para um posicionador de eixo único, portanto, apenas um driver precisa ser configurado. Se você escolher um tipo de eixo de extensão com vários eixos, precisará definir os parâmetros do driver para cada eixo.
18    //4. Habilitar e fazer homing do eixo selecionado
19    robot.ExtAxisServoOn(1, 0);
20    robot.ExtAxisSetHoming(1, 0, 20, 3);
21    //5. Calibrar e aplicar o sistema de coordenadas do eixo de extensão
22    DescPose pos = new DescPose(/* Insira as coordenadas do seu ponto de calibração */ );
23    robot.SetRefPointInExAxisEnd(pos);
24    robot.PositionorSetRefPoint(1); /*Você precisa calibrar o eixo de extensão usando pontos em quatro posições diferentes, portanto, esta interface precisa ser chamada 4 vezes para concluir a calibração */
25    DescPose coord = new DescPose();
26    robot.PositionorComputeECoordSys(coord); //Calcular o resultado da calibração do eixo de extensão
27    robot.ExtAxisActiveECoordSys(1, 1, coord, 1); //Aplicar o resultado da calibração ao sistema de coordenadas do eixo de extensão
28    //6. Calibrar o sistema de coordenadas da peça no eixo de extensão. Você precisará usar as seguintes interfaces:
29    //int SetWObjCoordPoint(int point_num);
30    //int ComputeWObjCoord(int method, ref DescPose wobj_pose);
31    //int SetWObjCoord(int id, DescPose coord);
32    //int SetWObjList(int id, DescPose coord);
33    //7. Registrar o ponto inicial do movimento articular síncrono
34    DescPose startdescPose = new DescPose(/*Insira suas coordenadas*/ );
35    JointPos startjointPos = new JointPos(/*Insira suas coordenadas*/ );
36    ExaxisPos startexaxisPos = new ExaxisPos(/* Insira as coordenadas do ponto inicial do seu eixo de extensão */ );
37    //8. Registrar as coordenadas do ponto final do movimento articular síncrono
38    DescPose enddescPose = new DescPose(/*Insira suas coordenadas*/ );
39    JointPos endjointPos = new JointPos(/*Insira suas coordenadas*/ );
40    ExaxisPos endexaxisPos =new ExaxisPos(/* Insira as coordenadas do ponto final do seu eixo de extensão */);
41    //9. Escrever o programa de movimento síncrono
42    //Mover para o ponto inicial, assumindo que os sistemas de coordenadas da ferramenta e da peça aplicados são ambos 1
43    robot.ExtAxisMove(startexaxisPos, 20);
44    DescPose offdese = new DescPose( 0, 0, 0, 0, 0, 0 );
45    robot.MoveJ(startjointPos, startdescPose, 1, 1, 100, 100, 100, startexaxisPos, 0, 0, offdese);
46    //Iniciar movimento síncrono
47    robot.ExtAxisSyncMoveL(endjointPos, enddescPose, 1, 1, 100, 100, 100, 0, endexaxisPos, 0, offdese);
48    robot.MoveJ(startjointPos, 1, 1, 100, 100, 100, startexaxisPos, 0, 0, offdese);
49    //Iniciar movimento síncrono
50    robot.ExtAxisSyncMoveL(enddescPose, 1, 1, 100, 100, 100, 0, endexaxisPos, 0, offdese,-1);
51    robot.CloseRPC();
52    return 0;
53}

13.47. Movimento Síncrono do Eixo de Extensão UDP com Movimento de Arco do Robô

 1/**
 2* @brief Movimento síncrono do eixo de extensão UDP com movimento de arco do robô
 3* @param [in] joint_pos_p  Posição articular do ponto de caminho, unidade deg
 4* @param [in] desc_pos_p   Pose cartesiana do ponto de caminho
 5* @param [in] ptool  Número da ferramenta, faixa [0~14]
 6* @param [in] puser  Número da peça, faixa [0~14]
 7* @param [in] pvel  Porcentagem de velocidade, faixa [0~100]
 8* @param [in] pacc  Porcentagem de aceleração, faixa [0~100], temporariamente não disponível
 9* @param [in] epos_p  Posição do eixo de extensão no ponto intermediário, unidade mm
10* @param [in] poffset_flag  0-sem deslocamento, 1-deslocamento no sistema de coordenadas base/sistema de coordenadas da peça, 2-deslocamento no sistema de coordenadas da ferramenta
11* @param [in] offset_pos_p  Valor de deslocamento da pose
12* @param [in] joint_pos_t  Posição articular do ponto alvo, unidade deg
13* @param [in] desc_pos_t   Pose cartesiana do ponto alvo
14* @param [in] ttool  Número da ferramenta, faixa [0~14]
15* @param [in] tuser  Número da peça, faixa [0~14]
16* @param [in] tvel  Porcentagem de velocidade, faixa [0~100]
17* @param [in] tacc  Porcentagem de aceleração, faixa [0~100], temporariamente não disponível
18* @param [in] epos_t  Posição do eixo de extensão, unidade mm
19* @param [in] toffset_flag  0-sem deslocamento, 1-deslocamento no sistema de coordenadas base/sistema de coordenadas da peça, 2-deslocamento no sistema de coordenadas da ferramenta
20* @param [in] offset_pos_t  Valor de deslocamento da pose
21* @param [in] ovl  Fator de escala de velocidade, faixa [0~100]
22* @param [in] blendR [-1.0]-movimento concluído (bloqueado), [0~1000.0]-raio de suavização (não bloqueado), unidade mm
23* @return Código de erro
24*/
25int ExtAxisSyncMoveC(JointPos joint_pos_p, DescPose desc_pos_p, int ptool, int puser, double pvel, double pacc, ExaxisPos epos_p, int poffset_flag, DescPose offset_pos_p, JointPos joint_pos_t, DescPose desc_pos_t, int ttool, int tuser, double tvel, double tacc, ExaxisPos epos_t, int toffset_flag, DescPose offset_pos_t, double ovl, double blendR);

13.48. Movimento Síncrono do Eixo de Extensão UDP com Movimento de Arco do Robô (Cálculo Automático de Cinemática Inversa)

Novo na versão Java: SDK-v1.0.8-3.8.5

 1/**
 2* @brief  Movimento síncrono do eixo de extensão UDP com movimento de arco do robô (Cálculo automático de cinemática inversa)
 3* @param  [in] desc_pos_p   Pose cartesiana do ponto de caminho
 4* @param  [in] ptool  Número da ferramenta, faixa [0~14]
 5* @param  [in] puser  Número da peça, faixa [0~14]
 6* @param  [in] pvel  Porcentagem de velocidade, faixa [0~100]
 7* @param  [in] pacc  Porcentagem de aceleração, faixa [0~100], temporariamente não disponível
 8* @param  [in] epos_p  Posição do eixo de extensão, unidade mm
 9* @param  [in] poffset_flag  0-sem deslocamento, 1-deslocamento no sistema de coordenadas base/sistema de coordenadas da peça, 2-deslocamento no sistema de coordenadas da ferramenta
10* @param  [in] offset_pos_p  Valor de deslocamento da pose
11* @param  [in] desc_pos_t   Pose cartesiana do ponto alvo
12* @param  [in] ttool  Número da ferramenta, faixa [0~14]
13* @param  [in] tuser  Número da peça, faixa [0~14]
14* @param  [in] tvel  Porcentagem de velocidade, faixa [0~100]
15* @param  [in] tacc  Porcentagem de aceleração, faixa [0~100], temporariamente não disponível
16* @param  [in] epos_t  Posição do eixo de extensão, unidade mm
17* @param  [in] toffset_flag  0-sem deslocamento, 1-deslocamento no sistema de coordenadas base/sistema de coordenadas da peça, 2-deslocamento no sistema de coordenadas da ferramenta
18* @param  [in] offset_pos_t  Valor de deslocamento da pose
19* @param  [in] ovl  Fator de escala de velocidade, faixa [0~100]
20* @param  [in] blendR [-1.0]-movimento concluído (bloqueado), [0~1000.0]-raio de suavização (não bloqueado), unidade mm
21* @param  [in] config  Configuração do espaço articular para cinemática inversa, [-1]-calcular com base na posição articular atual, [0~7]-calcular com base em uma configuração específica do espaço articular
22* @return  Código de erro
23*/
24int ExtAxisSyncMoveC(DescPose desc_pos_p, int ptool, int puser, double pvel, double pacc, ExaxisPos epos_p, int poffset_flag, DescPose offset_pos_p, DescPose desc_pos_t, int ttool, int tuser, double tvel, double tacc, ExaxisPos epos_t, int toffset_flag, DescPose offset_pos_t, double ovl, double blendR,int config)

13.49. Exemplo de Código de Movimento Síncrono do Eixo de Extensão UDP com Movimento de Arco do Robô

 1public int testSyncMoveC(Robot robot)
 2{
 3    //1. Calibrar e aplicar o sistema de coordenadas da ferramenta do robô. Você pode usar o método de quatro pontos ou seis pontos para calibrar e aplicar o sistema de coordenadas da ferramenta. As interfaces envolvidas na calibração do sistema de coordenadas da ferramenta são:
 4    //  int SetToolPoint(int point_num); //Definir ponto de referência da ferramenta - método de seis pontos
 5    //  int ComputeTool(ref DescPose tcp_pose); //Calcular sistema de coordenadas da ferramenta
 6    //  int SetTcp4RefPoint(int point_num);  //Definir ponto de referência da ferramenta - método de quatro pontos
 7    //  int ComputeTcp4(ref DescPose tcp_pose);  //Calcular sistema de coordenadas da ferramenta - método de quatro pontos
 8    //  int SetToolCoord(int id, DescPose coord, int type, int install); //Definir e aplicar sistema de coordenadas da ferramenta
 9    //  int SetToolList(int id, DescPose coord, int type, int install);  //Definir e aplicar lista de sistemas de coordenadas da ferramenta
10    //2. Definir parâmetros de comunicação UDP e carregar a comunicação UDP
11    UDPComParam param=new UDPComParam("192.168.58.88", 2021, 2, 100, 3, 100, 1, 100, 10,0);
12    robot.ExtDevSetUDPComParam(param);
13    robot.ExtDevLoadUDPDriver();
14    //3. Definir parâmetros do eixo de extensão, incluindo tipo de eixo de extensão, parâmetros do driver do eixo de extensão, parâmetros DH do eixo de extensão
15    robot.SetAxisDHParaConfig(4, 200, 200, 0, 0, 0, 0, 0, 0); //Posicionador de eixo único e parâmetros DH
16    robot.SetRobotPosToAxis(1); //Posição de instalação do eixo de extensão
17    robot.ExtAxisParamConfig(1, 0, 1, 100, -100, 10, 10, 12, 131072, 0, 1, 0, 0); //Parâmetros do servo driver. Este exemplo é para um posicionador de eixo único, portanto, apenas um driver precisa ser configurado. Se você escolher um tipo de eixo de extensão com vários eixos, precisará definir os parâmetros do driver para cada eixo.
18    //4. Habilitar e fazer homing do eixo selecionado
19    robot.ExtAxisServoOn(1, 0);
20    robot.ExtAxisSetHoming(1, 0, 20, 3);
21    //5. Calibrar e aplicar o sistema de coordenadas do eixo de extensão
22    DescPose pos = new DescPose(/* Insira as coordenadas do seu ponto de calibração */ );
23    robot.SetRefPointInExAxisEnd(pos);
24    robot.PositionorSetRefPoint(1); /*Você precisa calibrar o eixo de extensão usando pontos em quatro posições diferentes, portanto, esta interface precisa ser chamada 4 vezes para concluir a calibração */
25    DescPose coord = new DescPose();
26    robot.PositionorComputeECoordSys(coord); //Calcular o resultado da calibração do eixo de extensão
27    robot.ExtAxisActiveECoordSys(1, 1, coord, 1); //Aplicar o resultado da calibração ao sistema de coordenadas do eixo de extensão
28    //6. Calibrar o sistema de coordenadas da peça no eixo de extensão. Você precisará usar as seguintes interfaces:
29    //int SetWObjCoordPoint(int point_num);
30    //int ComputeWObjCoord(int method, ref DescPose wobj_pose);
31    //int SetWObjCoord(int id, DescPose coord);
32    //int SetWObjList(int id, DescPose coord);
33    //7. Registrar o ponto inicial do movimento de arco síncrono
34    DescPose startdescPose = new DescPose(/*Insira suas coordenadas*/ );
35    JointPos startjointPos = new JointPos(/*Insira suas coordenadas*/ );
36    ExaxisPos startexaxisPos = new ExaxisPos(/* Insira as coordenadas do ponto inicial do seu eixo de extensão */ );
37    //8. Registrar as coordenadas do ponto final do movimento de arco síncrono
38    DescPose enddescPose = new DescPose(/*Insira suas coordenadas*/ );
39    JointPos endjointPos = new JointPos(/*Insira suas coordenadas*/ );
40    ExaxisPos endexaxisPos = new ExaxisPos(/* Insira as coordenadas do ponto final do seu eixo de extensão */ );
41    //9. Registrar as coordenadas do ponto intermediário do movimento de arco síncrono
42    DescPose middescPose = new DescPose(/*Insira suas coordenadas*/ );
43    JointPos midjointPos =new JointPos(/*Insira suas coordenadas*/ );
44    ExaxisPos midexaxisPos = new ExaxisPos(/* Insira as coordenadas do eixo de extensão quando o robô estiver no ponto intermediário do arco */ );
45    //10. Escrever o programa de movimento síncrono
46    //Mover para o ponto inicial, assumindo que os sistemas de coordenadas da ferramenta e da peça aplicados são ambos 1
47    robot.ExtAxisMove(startexaxisPos, 20);
48    DescPose offdese = new DescPose( 0, 0, 0, 0, 0, 0 );
49    robot.MoveJ(startjointPos, startdescPose, 1, 1, 100, 100, 100, startexaxisPos, 0, 0, offdese);
50    //Iniciar movimento síncrono
51    robot.ExtAxisSyncMoveC(midjointPos, middescPose, 1, 1, 100, 100, midexaxisPos, 0, offdese, endjointPos, enddescPose, 1, 1, 100, 100, endexaxisPos, 0, offdese, 100, 0);
52    robot.MoveJ(startjointPos, 1, 1, 100, 100, 100, startexaxisPos, 0, 0, offdese);
53    //Iniciar movimento síncrono
54    robot.ExtAxisSyncMoveC(middescPose, 1, 1, 100, 100, midexaxisPos, 0, offdese, enddescPose, 1, 1, 100, 100, endexaxisPos, 0, offdese, 100, 0,-1);
55    robot.CloseRPC();
56    return 0;
57}

13.50. Definir DO de Extensão

1/**
2* @brief Define o DO de extensão
3* @param [in] DONum Número do DO
4* @param [in] bOpen Interruptor true-ligar; false-desligar
5* @param [in] smooth Se é suave
6* @param [in] block Se é bloqueante
7* @return Código de erro
8*/
9int SetAuxDO(int DONum, boolean bOpen, boolean smooth, boolean block);

13.51. Definir AO de Extensão

1/**
2* @brief Define o AO de extensão
3* @param [in] AONum Número do AO
4* @param [in] value Valor analógico [0-4095]
5* @param [in] block Se é bloqueante
6* @return Código de erro
7*/
8int SetAuxAO(int AONum, double value, boolean block);

13.52. Definir Tempo de Filtro de Entrada do DI de Extensão

1/**
2* @brief Define o tempo de filtro de entrada do DI de extensão
3* @param [in] filterTime Tempo de filtro (ms)
4* @return  Código de erro
5*/
6int SetAuxDIFilterTime(int filterTime);

13.53. Definir Tempo de Filtro de Entrada do AI de Extensão

1/**
2* @brief Define o tempo de filtro de entrada do AI de extensão
3* @param [in] AONum Número do AO
4* @param [in] filterTime Tempo de filtro (ms)
5* @return Código de erro
6*/
7int SetAuxAIFilterTime(int AONum, int filterTime);

13.54. Aguardar Entrada do DI de Extensão

1/**
2* @brief Aguarda a entrada do DI de extensão
3* @param [in] DINum Número do DI
4* @param [in] bOpen Interruptor 0-desligar; 1-ligar
5* @param [in] time Tempo máximo de espera (ms)
6* @param [in] errorAlarm Se continua o movimento
7* @return Código de erro
8*/
9int WaitAuxDI(int DINum, boolean bOpen, int time, boolean errorAlarm);

13.55. Aguardar Entrada do AI de Extensão

 1/**
 2* @brief Aguarda a entrada do AI de extensão
 3* @param [in] AINum Número do AI
 4* @param [in] sign 0-maior que; 1-menor que
 5* @param [in] value Valor do AI
 6* @param [in] time Tempo máximo de espera (ms)
 7* @param [in] errorAlarm Se continua o movimento
 8* @return Código de erro
 9*/
10int WaitAuxAI(int AINum, int sign, int value, int time, boolean errorAlarm);

13.56. Obter Valor do DI de Extensão

1/**
2* @brief Obtém o valor do DI de extensão
3* @param [in] DINum Número do DI
4* @param [in] isNoBlock Se é não bloqueante
5* @return List[0]: Código de erro; List[1] : isOpen 0-desligar; 1-ligar
6*/
7List<Integer> GetAuxDI(int DINum, boolean isNoBlock)

13.57. Obter Valor do AI de Extensão

1/**
2* @brief Obtém o valor do AI de extensão
3* @param [in] AINum Número do AI
4* @param [in] isNoBlock Se é não bloqueante
5* @return List[0]: Código de erro; List[1] : value Valor de entrada
6*/
7List<Integer> GetAuxAI(int AINum, boolean isNoBlock);

13.58. Exemplo de Código de IO de Extensão

 1public static int TestAuxDOAO(Robot robot)
 2{
 3    for (int i = 0; i < 128; i++)
 4    {
 5        robot.SetAuxDO(i, true, false, true);
 6        robot.Sleep(100);
 7    }
 8    for (int i = 0; i < 128; i++)
 9    {
10        robot.SetAuxDO(i, false, false, true);
11        robot.Sleep(100);
12    }
13
14    for (int i = 0; i < 409; i++)
15    {
16        robot.SetAuxAO(0, i * 10, true);
17        robot.SetAuxAO(1, 4095 - i * 10, true);
18        robot.SetAuxAO(2, i * 10, true);
19        robot.SetAuxAO(3, 4095 - i * 10, true);
20        robot.Sleep(10);
21    }
22
23    robot.SetAuxDIFilterTime(10);
24    robot.SetAuxAIFilterTime(0, 10);
25
26
27    int curValue = -1;
28    List<Integer> liter=new ArrayList<>();
29    for (int i = 0; i < 4; i++)
30    {
31        liter = robot.GetAuxAI(i, true);
32    }
33
34    robot.WaitAuxDI(1, false, 1000, false);
35    robot.WaitAuxAI(1, 1, 132, 1000, false);
36
37    robot.CloseRPC();
38    return 0;
39}

13.59. Habilitar Dispositivo Móvel

1/**
2* @brief Habilita o dispositivo móvel
3* @param [in] enable false-desabilitar; true-habilitar
4* @return Código de erro
5*/
6int TractorEnable(Boolean enable);

13.60. Homing do Dispositivo Móvel

1/**
2* @brief Homing do dispositivo móvel
3* @return Código de erro
4*/
5int TractorHoming();

13.61. Movimento Linear do Dispositivo Móvel

1/**
2* @brief Movimento linear do dispositivo móvel
3* @param [in] distance Distância do movimento linear (mm)
4* @param [in] vel Porcentagem de velocidade do movimento linear (0-100)
5* @return Código de erro
6*/
7int TractorMoveL(double distance, double vel);

13.62. Movimento de Arco do Dispositivo Móvel

1/**
2* @brief Movimento de arco do dispositivo móvel
3* @param [in] radio Raio do movimento de arco (mm)
4* @param [in] angle Ângulo do movimento de arco (°)
5* @param [in] vel Porcentagem de velocidade do movimento linear (0-100)
6* @return Código de erro
7*/
8int TractorMoveC(double radio, double angle, double vel);

13.63. Parar Movimento do Dispositivo Móvel

1/**
2* @brief Para o movimento do dispositivo móvel
3* @return Código de erro
4*/
5int TractorStop();

13.64. Exemplo de Código do Dispositivo Móvel

 1public static void main(String[] args)
 2{
 3    Robot robot = new Robot();
 4    robot.SetReconnectParam(true,20,500);//Definir número de tentativas de reconexão, intervalo
 5    robot.LoggerInit(FrLogType.DIRECT, FrLogLevel.INFO, "D://log", 10, 10);
 6    int rtn = robot.RPC("192.168.58.2");
 7    if(rtn == 0)
 8    {
 9        System.out.println("Conexão RPC bem-sucedida");
10    }
11    else
12    {
13        System.out.println("Falha na conexão RPC");
14        return ;
15    }
16    UDPComParam param = new UDPComParam("192.168.58.88", 2021, 2, 100, 3, 100, 1, 100, 10);
17    robot.ExtDevSetUDPComParam(param);//Comunicação UDP do eixo de extensão
18    robot.ExtAxisParamConfig(1, 0, 0, 50000, -50000, 1000, 1000, 6.280, 16384, 200, 0, 0, 0);
19    robot.ExtAxisParamConfig(2, 0, 0, 50000, -50000, 1000, 1000, 6.280, 16384, 200, 0, 0, 0);
20    robot.SetAxisDHParaConfig(5, 0, 0, 0, 0, 0, 0, 0, 0);
21
22    robot.TractorEnable(false);
23    robot.Sleep(2000);
24    robot.TractorEnable(true);
25    robot.Sleep(2000);
26    robot.TractorHoming();
27
28    robot.Sleep(2000);
29    robot.TractorMoveL(100, 20);
30    robot.Sleep(5000);
31    robot.TractorMoveL(-100, 20);
32    robot.Sleep(5000);
33    robot.TractorMoveC(300, 90, 20);
34    robot.Sleep(2000);
35    robot.TractorStop();//Parar dispositivo móvel
36    robot.TractorMoveC(300, -90, 20);
37}

13.65. Configuração do Tempo de Conclusão do Posicionamento do Eixo de Extensão UDP

1/**
2* @brief Configuração do tempo de conclusão do posicionamento do eixo de extensão UDP
3* @param time Tempo de conclusão do posicionamento [ms]
4* @return Código de erro
5*/
6public int SetExAxisCmdDoneTime(double time)