13. Eixo de Extensão

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

Novo na versão C++SDK-v2.1.3.0.

 1/**
 2* @brief Define os parâmetros do eixo de extensão 485
 3* @param [in] servoId ID do servo driver, faixa [1-15], correspondente ao ID do escravo
 4* @param [in] servoCompany Fabricante do servo driver, 1-Dynatect
 5* @param [in] servoModel Modelo do servo driver, 1-FD100-750C
 6* @param [in] servoSoftVersion Versão do software do servo driver, 1-V1.0
 7* @param [in] servoResolution Resolução do codificador
 8* @param [in] axisMechTransRatio Relação de transmissão mecânica
 9* @return Código de erro
10*/
11errno_t AuxServoSetParam(int servoId, int servoCompany, int servoModel, int servoSoftVersion, int servoResolution, double axisMechTransRatio);

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

Novo na versão C++SDK-v2.1.3.0.

 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-15], correspondente ao ID do escravo
 4* @param [out] servoCompany Fabricante do servo driver, 1-Dynatect
 5* @param [out] servoModel Modelo do servo driver, 1-FD100-750C
 6* @param [out] servoSoftVersion Versão do software do servo driver, 1-V1.0
 7* @param [out] servoResolution Resolução do codificador
 8* @param [out] axisMechTransRatio Relação de transmissão mecânica
 9* @return Código de erro
10*/
11errno_t AuxServoGetParam(int servoId, int* servoCompany, int* servoModel, int* servoSoftVersion, int* servoResolution, double* axisMechTransRatio);

13.3. Habilitar/Desabilitar Eixo de Extensão 485

Novo na versão C++SDK-v2.1.3.0.

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

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

Novo na versão C++SDK-v2.1.3.0.

1/**
2* @brief Define o modo de controle do eixo de extensão 485
3* @param [in] servoId ID do servo driver, faixa [1-15], 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*/
7errno_t AuxServoSetControlMode(int servoId, int mode);

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

Novo na versão C++SDK-v2.1.3.0.

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-15], 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* @return Código de erro
7*/
8errno_t AuxServoSetTargetPos(int servoId, double pos, double speed);

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

Novo na versão C++SDK-v2.1.3.0.

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

13.7. Definir Homing do Eixo de Extensão 485

Novo na versão C++SDK-v2.1.3.0.

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

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

Novo na versão C++SDK-v2.1.3.0.

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-15], correspondente ao ID do escravo
4* @return Código de erro
5*/
6errno_t AuxServoClearError(int servoId);

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

Novo na versão C++SDK-v2.1.3.0.

 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-15], correspondente ao ID do escravo
 4* @param [out] servoErrCode Código de falha do servo driver
 5* @param [out] servoState Estado do servo driver [número decimal convertido para binário, bit0-bit5: servo habilitado - servo em execução - limite positivo acionado - limite negativo acionado - posicionamento concluído - homing concluído]
 6* @param [out] servoPos Posição atual do servo mm ou °
 7* @param [out] servoSpeed Velocidade atual do servo mm/s ou °/s
 8* @param [out] servoTorque Torque atual do servo Nm
 9* @return Código de erro
10*/
11errno_t 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)

Novo na versão C++SDK-v2.1.3.0.

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-15], correspondente ao ID do escravo
4* @param [in] speed Velocidade alvo, mm/s ou °/s
5* @return Código de erro
6*/
7errno_t AuxServoSetTargetSpeed(int servoId, double speed);

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

Novo na versão C++SDK-v2.1.3.0.

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-15], correspondente ao ID do escravo
4* @return Código de erro
5*/
6errno_t AuxServosetStatusID(int servoId);

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

Novo na versão C++SDK-v2.1.5.0.

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*/
7errno_t AuxServoSetAcc(double acc, double dec);

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

Novo na versão C++SDK-v2.1.5.0.

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*/
7errno_t AuxServoSetEmergencyStopAcc(double acc, double dec);

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

Novo na versão C++SDK-v2.1.5.0.

1/**
2* @brief Obtém a aceleração/desaceleração do movimento do eixo de extensão 485
3* @param [out] acc Aceleração do movimento do eixo de extensão 485
4* @param [out] dec Desaceleração do movimento do eixo de extensão 485
5* @return Código de erro
6*/
7errno_t AuxServoGetAcc(double& acc, double& dec);

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

Novo na versão C++SDK-v2.1.5.0.

1/**
2* @brief Obtém a aceleração/desaceleração de parada de emergência do eixo de extensão 485
3* @param [out] acc Aceleração de parada de emergência do eixo de extensão 485
4* @param [out] dec Desaceleração de parada de emergência do eixo de extensão 485
5* @return Código de erro
6*/
7errno_t AuxServoGetEmergencyStopAcc(double& acc, double& dec);

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

Novo na versão C++SDK-v2.1.5.0.

 1int Test485Auxservo(void)
 2{
 3  ROBOT_STATE_PKG pkg = {};
 4  FRRobot robot;
 5  robot.LoggerInit();
 6  robot.SetLoggerLevel(1);
 7  int rtn = robot.RPC("192.168.58.2");
 8  if (rtn != 0)
 9  {
10    return -1;
11  }
12  robot.SetReConnectParam(true, 30000, 500);
13  int retval = robot.AuxServoSetParam(1, 1, 1, 1, 131072, 15.45);
14  std::cout << "AuxServoSetParam is: " << retval << std::endl;
15  int servoCompany;
16  int servoModel;
17  int servoSoftVersion;
18  int servoResolution;
19  double axisMechTransRatio;
20  retval = robot.AuxServoGetParam(1, &servoCompany, &servoModel, &servoSoftVersion, &servoResolution, &axisMechTransRatio);
21  std::cout << "servoCompany " << servoCompany << "\n"
22    << "servoModel " << servoModel << "\n"
23    << "servoSoftVersion " << servoSoftVersion << "\n"
24    << "servoResolution " << servoResolution << "\n"
25    << "axisMechTransRatio " << axisMechTransRatio << "\n"
26    << std::endl;
27  retval = robot.AuxServoSetParam(1, 10, 11, 12, 13, 14);
28  std::cout << "AuxServoSetParam is: " << retval << std::endl;
29  retval = robot.AuxServoGetParam(1, &servoCompany, &servoModel, &servoSoftVersion, &servoResolution, &axisMechTransRatio);
30  std::cout << "servoCompany " << servoCompany << "\n"
31    << "servoModel " << servoModel << "\n"
32    << "servoSoftVersion " << servoSoftVersion << "\n"
33    << "servoResolution " << servoResolution << "\n"
34    << "axisMechTransRatio " << axisMechTransRatio << "\n"
35    << std::endl;
36  retval = robot.AuxServoSetParam(1, 1, 1, 1, 131072, 36);
37  std::cout << "AuxServoSetParam is: " << retval << std::endl;
38  robot.Sleep(3000);
39  robot.AuxServoSetAcc(3000, 3000);
40  robot.AuxServoSetEmergencyStopAcc(5000, 5000);
41  robot.Sleep(1000);
42  double emagacc = 0, acc = 0;
43  double emagdec = 0, dec = 0;
44  robot.AuxServoGetEmergencyStopAcc(emagacc, emagdec);
45  printf("emergency acc is %f dec is %f \n", emagacc, emagdec);
46  robot.AuxServoGetAcc(acc, dec);
47  printf("acc is %f dec is %f \n", acc, dec);
48  robot.AuxServoSetControlMode(1, 0);
49  robot.Sleep(2000);
50  retval = robot.AuxServoEnable(1, 0);
51  std::cout << "AuxServoEnable disenable " << retval << std::endl;
52  robot.Sleep(1000);
53  int servoerrcode = 0;
54  int servoErrCode;
55  int servoState;
56  double servoPos;
57  double servoSpeed;
58  double servoTorque;
59  retval = robot.AuxServoGetStatus(1, &servoErrCode, &servoState, &servoPos, &servoSpeed, &servoTorque);
60  std::cout << "AuxServoGetStatus servoState " << servoState << std::endl;
61  robot.Sleep(1000);;
62  retval = robot.AuxServoEnable(1, 1);
63  std::cout << "AuxServoEnable enable " << retval << std::endl;
64  robot.Sleep(1000);
65  retval = robot.AuxServoGetStatus(1, &servoErrCode, &servoState, &servoPos, &servoSpeed, &servoTorque);
66  std::cout << "AuxServoGetStatus servoState " << servoState << std::endl;
67  robot.Sleep(1000);
68  retval = robot.AuxServoHoming(1, 1, 5, 1);
69  std::cout << "AuxServoHoming " << retval << std::endl;
70  robot.Sleep(3000);
71  retval = robot.AuxServoSetTargetPos(1, 200, 30);
72  std::cout << "AuxServoSetTargetPos " << retval << std::endl;
73  robot.Sleep(1000);
74  retval = robot.AuxServoGetStatus(1, &servoErrCode, &servoState, &servoPos, &servoSpeed, &servoTorque);
75  std::cout << "AuxServoGetStatus servoSpeed " << servoSpeed << std::endl;
76  robot.Sleep(8000);
77  robot.AuxServoSetControlMode(1, 1);
78  robot.Sleep(2000);
79  robot.AuxServoEnable(1, 0);
80  robot.Sleep(1000);
81  robot.AuxServoEnable(1, 1);
82  robot.Sleep(1000);
83  robot.AuxServoSetTargetSpeed(1, 100, 80);
84  robot.Sleep(5000);
85  robot.AuxServoSetTargetSpeed(1, 0, 80);
86  robot.CloseRPC();
87  return 0;
88}

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

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

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

Novo na versão C++SDK-v2.1.4.0.

 1/**
 2* @brief Obtém a configuração dos 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] selfStart Se reconecta automaticamente após reinicialização do painel de controle; 0-não reconectar; 1-reconectar
13* @return Código de erro
14*/
15errno_t ExtDevGetUDPComParam(std::string& ip, int& port, int& period, int& lossPkgTime, int& lossPkgNum, int& disconnectTime, int& reconnectEnable, int& reconnectPeriod, int& reconnectNum, int& selfConnect);

13.19. Carregar Comunicação UDP

Novo na versão C++SDK-v2.1.4.0.

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

13.20. Descarregar Comunicação UDP

Novo na versão C++SDK-v2.1.4.0.

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

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

Novo na versão C++SDK-v2.1.4.0.

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*/
5errno_t ExtDevUDPClientComReset();

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

Novo na versão C++SDK-v2.1.4.0.

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*/
5errno_t ExtDevUDPClientComClose();

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

Novo na versão C++SDK-v2.1.4.0.

 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*/
18errno_t ExtAxisParamConfig(int axisID, int axisType, int axisDirection, double axisMax, double axisMin, double axisVel, double axisAcc, double axisLead, long encResolution, double axisOffect, int axisCompany, int axisModel, int axisEncType);

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

Novo na versão C++SDK-v2.1.4.0.

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*/
6errno_t SetRobotPosToAxis(int installType);

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

Novo na versão C++SDK-v2.1.4.0.

 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*/
14errno_t 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

Novo na versão C++SDK-v2.1.4.0.

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*/
7errno_t ExtAxisServoOn(int axisID, int status);

13.27. Homing do Eixo de Extensão UDP

Novo na versão C++SDK-v2.1.4.0.

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*/
9errno_t ExtAxisSetHoming(int axisID, int mode, double searchVel, double latchVel);

13.28. Iniciar Jog do Eixo de Extensão UDP

Novo na versão C++SDK-v2.1.4.0.

 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*/
10errno_t ExtAxisStartJog(int axisID, int direction, double vel, double acc, double maxDistance);

13.29. Parar Jog do Eixo de Extensão UDP

Novo na versão C++SDK-v2.1.4.0.

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*/
6errno_t ExtAxisStopJog(int axisID);

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

 1int TestUDPAxis(void)
 2{
 3  ROBOT_STATE_PKG pkg = {};
 4  FRRobot robot;
 5  robot.LoggerInit();
 6  robot.SetLoggerLevel(1);
 7  int rtn = robot.RPC("192.168.58.2");
 8  if (rtn != 0)
 9  {
10    return -1;
11  }
12  robot.SetReConnectParam(true, 30000, 500);
13  rtn = robot.ExtDevSetUDPComParam("192.168.58.88", 2021, 2, 100, 3, 200, 1, 100, 5, 1);
14  cout << "ExtDevSetUDPComParam rtn is " << rtn << endl;
15  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;
16  rtn = robot.ExtDevGetUDPComParam(ip, port, period, lossPkgTime, lossPkgNum, disconnectTime, reconnectEnable, reconnectPeriod, reconnectNum);
17  string patam = "\nip " + ip + "\nport " + to_string(port) + "\nperiod " + to_string(period) + "\nlossPkgTime " + to_string(lossPkgTime) + "\nlossPkgNum " + to_string(lossPkgNum) + "\ndisConntime " + to_string(disconnectTime) + "\nreconnecable " + to_string(reconnectEnable) + "\nreconnperiod " + to_string(reconnectPeriod) + "\nreconnnun " + to_string(reconnectNum);
18  cout << "ExtDevGetUDPComParam rtn is " << rtn << patam << endl;
19  robot.ExtDevLoadUDPDriver();
20  rtn = robot.ExtAxisServoOn(1, 1);
21  cout << "ExtAxisServoOn axis id 1 rtn is " << rtn << endl;
22  rtn = robot.ExtAxisServoOn(2, 1);
23  cout << "ExtAxisServoOn axis id 2 rtn is " << rtn << endl;
24  robot.Sleep(2000);
25  robot.ExtAxisSetHoming(1, 0, 10, 2);
26  robot.Sleep(2000);
27  rtn = robot.ExtAxisSetHoming(2, 0, 10, 2);
28  cout << "ExtAxisSetHoming rtnn is " << rtn << endl;
29  robot.Sleep(4000);
30  rtn = robot.SetRobotPosToAxis(1);
31  cout << "SetRobotPosToAxis rtn is " << rtn << endl;
32  rtn = robot.SetAxisDHParaConfig(10, 20, 0, 0, 0, 0, 0, 0, 0);
33  cout << "SetAxisDHParaConfig rtn is " << rtn << endl;
34  rtn = robot.ExtAxisParamConfig(1, 1, 1, 1000, -1000, 1000, 1000, 1.905, 262144, 200, 1, 0, 0);
35  cout << "ExtAxisParamConfig axis 1 rtn is " << rtn << endl;
36  rtn = robot.ExtAxisParamConfig(2, 1, 1, 1000, -1000, 1000, 1000, 4.444, 262144, 200, 1, 0, 0);
37  cout << "ExtAxisParamConfig axis 1 rtn is " << rtn << endl;
38  robot.Sleep(1000 * 3);
39  robot.ExtAxisStartJog(1, 0, 10, 10, 30);
40  robot.Sleep(1000 * 1);
41  robot.ExtAxisStopJog(1);
42  robot.Sleep(1000 * 3);
43  robot.ExtAxisServoOn(1, 0);
44  robot.Sleep(1000 * 3);
45  robot.ExtAxisStartJog(2, 0, 10, 10, 30);
46  robot.Sleep(1000 * 1);
47  robot.ExtAxisStopJog(2);
48  robot.Sleep(1000 * 3);
49  robot.ExtAxisServoOn(2, 0);
50  robot.ExtDevUnloadUDPDriver();
51  robot.CloseRPC();
52  return 0;
53}

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

Novo na versão C++SDK-v2.1.4.0.

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*/
6errno_t ExtAxisSetRefPoint(int pointNum);

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

Novo na versão C++SDK-v2.1.4.0.

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*/
6errno_t ExtAxisComputeECoordSys(DescPose& coord);

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

Novo na versão C++SDK-v2.1.4.0.

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*/
6errno_t PositionorSetRefPoint(int pointNum);

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

Novo na versão C++SDK-v2.1.4.0.

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*/
6errno_t PositionorComputeECoordSys(DescPose& coord);

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

Novo na versão C++SDK-v2.1.4.0.

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*/
6errno_t SetRefPointInExAxisEnd(DescPose pos);

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

Novo na versão C++SDK-v2.1.4.0.

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*/
9errno_t ExtAxisActiveECoordSys(int applyAxisId, int axisCoordNum, DescPose coord, int calibFlag);

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

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*/
6errno_t ExtAxisGetCoord(DescPose& coord);

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

  1int TestUDPAxisCalib(void)
  2{
  3   ROBOT_STATE_PKG pkg = {};
  4   FRRobot robot;
  5   robot.LoggerInit();
  6   robot.SetLoggerLevel(1);
  7   int rtn = robot.RPC("192.168.58.2");
  8   if (rtn != 0)
  9   {
 10      return -1;
 11   }
 12   robot.SetReConnectParam(true, 30000, 500);
 13   rtn = robot.ExtDevSetUDPComParam("192.168.58.88", 2021, 2, 100, 3, 200, 1, 100, 5, 1);
 14   cout << "ExtDevSetUDPComParam rtn is " << rtn << endl;
 15   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;
 16   rtn = robot.ExtDevGetUDPComParam(ip, port, period, lossPkgTime, lossPkgNum, disconnectTime, reconnectEnable, reconnectPeriod, reconnectNum);
 17   string patam = "\nip " + ip + "\nport " + to_string(port) + "\nperiod " + to_string(period) + "\nlossPkgTime " + to_string(lossPkgTime) + "\nlossPkgNum " + to_string(lossPkgNum) + "\ndisConntime " + to_string(disconnectTime) + "\nreconnecable " + to_string(reconnectEnable) + "\nreconnperiod " + to_string(reconnectPeriod) + "\nreconnnun " + to_string(reconnectNum);
 18   cout << "ExtDevGetUDPComParam rtn is " << rtn << patam << endl;
 19   robot.ExtDevLoadUDPDriver();
 20   rtn = robot.ExtAxisServoOn(1, 1);
 21   cout << "ExtAxisServoOn axis id 1 rtn is " << rtn << endl;
 22   rtn = robot.ExtAxisServoOn(2, 1);
 23   cout << "ExtAxisServoOn axis id 2 rtn is " << rtn << endl;
 24   robot.Sleep(2000);
 25   robot.ExtAxisSetHoming(1, 0, 10, 2);
 26   robot.Sleep(2000);
 27   rtn = robot.ExtAxisSetHoming(2, 0, 10, 2);
 28   cout << "ExtAxisSetHoming rtnn is " << rtn << endl;
 29   robot.Sleep(4000);
 30   rtn = robot.SetRobotPosToAxis(1);
 31   cout << "SetRobotPosToAxis rtn is " << rtn << endl;
 32   rtn = robot.SetAxisDHParaConfig(1, 128.5, 206.4, 0, 0, 0, 0, 0, 0);
 33   cout << "SetAxisDHParaConfig rtn is " << rtn << endl;
 34   rtn = robot.ExtAxisParamConfig(1, 1, 1, 1000, -1000, 1000, 1000, 1.905, 262144, 200, 1, 0, 0);
 35   cout << "ExtAxisParamConfig axis 1 rtn is " << rtn << endl;
 36   rtn = robot.ExtAxisParamConfig(2, 1, 1, 1000, -1000, 1000, 1000, 4.444, 262144, 200, 1, 0, 0);
 37   cout << "ExtAxisParamConfig axis 1 rtn is " << rtn << endl;
 38   DescPose toolCoord(0, 0, 210, 0, 0, 0);
 39   robot.SetToolCoord(1, &toolCoord, 0, 0, 1, 0);
 40   JointPos jSafe(115.193, -96.149, 92.489, -87.068, -89.15, -83.488);
 41   JointPos j1(117.559, -92.624, 100.329, -96.909, -94.057, -83.488);
 42   JointPos j2(112.239, -90.096, 99.282, -95.909, -89.824, -83.488);
 43   JointPos j3(110.839, -83.473, 93.166, -89.22, -90.499, -83.487);
 44   JointPos j4(107.935, -83.572, 95.424, -92.873, -87.933, -83.488);
 45   DescPose descSafe = {};
 46   DescPose desc1 = {};
 47   DescPose desc2 = {};
 48   DescPose desc3 = {};
 49   DescPose desc4 = {};
 50   ExaxisPos exaxisPos = { 0, 0, 0, 0 };
 51   DescPose offdese = { 0, 0, 0, 0, 0, 0 };
 52   robot.GetForwardKin(&jSafe, &descSafe);
 53   robot.MoveJ(&jSafe, &descSafe, 1, 0, 100, 100, 100, &exaxisPos, -1, 0, &offdese);
 54   robot.Sleep(2000);
 55   robot.GetForwardKin(&j1, &desc1);
 56   robot.MoveJ(&j1, &desc1, 1, 0, 100, 100, 100, &exaxisPos, -1, 0, &offdese);
 57   robot.Sleep(2000);
 58   DescPose actualTCPPos = {};
 59   robot.GetActualTCPPose(0, &actualTCPPos);
 60   robot.SetRefPointInExAxisEnd(actualTCPPos);
 61   rtn = robot.PositionorSetRefPoint(1);
 62   cout << "PositionorSetRefPoint 1 rtn is " << rtn << endl;
 63   robot.Sleep(2000);
 64   robot.MoveJ(&jSafe, &descSafe, 1, 0, 100, 100, 100, &exaxisPos, -1, 0, &offdese);
 65   robot.ExtAxisStartJog(1, 0, 50, 50, 10);
 66   robot.Sleep(1000);
 67   robot.ExtAxisStartJog(2, 0, 50, 50, 10);
 68   robot.Sleep(1000);
 69   robot.GetForwardKin(&j2, &desc2);
 70   rtn = robot.MoveJ(&j2, &desc2, 1, 0, 100, 100, 100, &exaxisPos, -1, 0, &offdese);
 71   rtn = robot.PositionorSetRefPoint(2);
 72   cout << "PositionorSetRefPoint 2 rtn is " << rtn << endl;
 73   robot.Sleep(2000);
 74   robot.MoveJ(&jSafe, &descSafe, 1, 0, 100, 100, 100, &exaxisPos, -1, 0, &offdese);
 75   robot.ExtAxisStartJog(1, 0, 50, 50, 10);
 76   robot.Sleep(1000);
 77   robot.ExtAxisStartJog(2, 0, 50, 50, 10);
 78   robot.Sleep(1000);
 79   robot.GetForwardKin(&j3, &desc3);
 80   robot.MoveJ(&j3, &desc3, 1, 0, 100, 100, 100, &exaxisPos, -1, 0, &offdese);
 81   rtn = robot.PositionorSetRefPoint(3);
 82   cout << "PositionorSetRefPoint 3 rtn is " << rtn << endl;
 83   robot.Sleep(2000);
 84   robot.MoveJ(&jSafe, &descSafe, 1, 0, 100, 100, 100, &exaxisPos, -1, 0, &offdese);
 85   robot.ExtAxisStartJog(1, 0, 50, 50, 10);
 86   robot.Sleep(1000);
 87   robot.ExtAxisStartJog(2, 0, 50, 50, 10);
 88   robot.Sleep(1000);
 89   robot.GetForwardKin(&j4, &desc4);
 90   robot.MoveJ(&j4, &desc4, 1, 0, 100, 100, 100, &exaxisPos, -1, 0, &offdese);
 91   rtn = robot.PositionorSetRefPoint(4);
 92   cout << "PositionorSetRefPoint 4 rtn is " << rtn << endl;
 93   robot.Sleep(2000);
 94   DescPose axisCoord = {};
 95   robot.PositionorComputeECoordSys(axisCoord);
 96   robot.MoveJ(&jSafe, &descSafe, 1, 0, 100, 100, 100, &exaxisPos, -1, 0, &offdese);
 97   printf("PositionorComputeECoordSys rtn is %f %f %f %f %f %f\n", axisCoord.tran.x, axisCoord.tran.y, axisCoord.tran.z, axisCoord.rpy.rx, axisCoord.rpy.ry, axisCoord.rpy.rz);
 98   rtn = robot.ExtAxisActiveECoordSys(3, 1, axisCoord, 1);
 99   cout << "ExtAxisActiveECoordSys rtn is " << rtn << endl;
100DescPose getCoord(0, 0, 0, 0, 0, 0);
101rtn = robot.ExtAxisGetCoord(getCoord);
102printf("ExtAxisGetCoord rtn is %f %f %f %f %f %f\n", getCoord.tran.x, getCoord.tran.y, getCoord.tran.z, getCoord.rpy.rx, getCoord.rpy.ry, getCoord.rpy.rz);
103robot.CloseRPC();
104return 0;
105}

13.39. Movimento do Eixo de Extensão UDP

Alterado na versão C++SDK-v2.2.4.0.

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); -1: aguardar conclusão do movimento
6* @return Código de erro
7*/
8errno_t ExtAxisMove(ExaxisPos pos, double ovl, double blend = -1);

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

 1int TestUDPAxisCalib(void)
 2{
 3  ROBOT_STATE_PKG pkg = {};
 4  FRRobot robot;
 5  robot.LoggerInit();
 6  robot.SetLoggerLevel(1);
 7  int rtn = robot.RPC("192.168.58.2");
 8  if (rtn != 0)
 9  {
10    return -1;
11  }
12  ExaxisPos axisPos;
13  axisPos.ePos[0] = 20;
14  axisPos.ePos[1] = 0;
15  axisPos.ePos[2] = 0;
16  axisPos.ePos[3] = 0;
17  robot.ExtAxisMove(axisPos, 50);
18  robot.CloseRPC();
19  return 0;
20}

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

Novo na versão C++SDK-v2.1.4.0.

 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] offset_pos  Valor de deslocamento da pose
14* @return  Código de erro
15*/
16errno_t ExtAxisSyncMoveJ(JointPos joint_pos, DescPose desc_pos, int tool, int user, float vel, float acc, float ovl, ExaxisPos epos, float blendT, byte 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)

 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*/
15errno_t ExtAxisSyncMoveJ(JointPos joint_pos, int tool, int user, float vel, float acc, float ovl, ExaxisPos epos, float blendT, uint8_t 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ô

 1int testSyncMoveJ()
 2{
 3  ROBOT_STATE_PKG pkg = {};
 4  FRRobot robot;
 5  robot.LoggerInit();
 6  robot.SetLoggerLevel(1);
 7  int rtn = robot.RPC("192.168.58.2");
 8  if (rtn != 0)
 9  {
10    return -1;
11  }
12  robot.SetReConnectParam(true, 30000, 500);
13  //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:
14  //  int SetToolPoint(int point_num); //Definir ponto de referência da ferramenta - método de seis pontos
15  //  int ComputeTool(ref DescPose tcp_pose); //Calcular sistema de coordenadas da ferramenta
16  //  int SetTcp4RefPoint(int point_num);  //Definir ponto de referência da ferramenta - método de quatro pontos
17  //  int ComputeTcp4(ref DescPose tcp_pose);  //Calcular sistema de coordenadas da ferramenta - método de quatro pontos
18  //  int SetToolCoord(int id, DescPose coord, int type, int install); //Definir e aplicar sistema de coordenadas da ferramenta
19  //  int SetToolList(int id, DescPose coord, int type, int install);  //Definir e aplicar lista de sistemas de coordenadas da ferramenta
20  //2. Definir parâmetros de comunicação UDP e carregar a comunicação UDP
21  robot.ExtDevSetUDPComParam("192.168.58.88", 2021, 2, 100, 3, 100, 1, 100, 10);
22  robot.ExtDevLoadUDPDriver();
23  //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
24  robot.SetAxisDHParaConfig(4, 200, 200, 0, 0, 0, 0, 0, 0); //Posicionador de eixo único e parâmetros DH
25  robot.SetRobotPosToAxis(1); //Posição de instalação do eixo de extensão
26  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.
27  //4. Habilitar e fazer homing do eixo selecionado
28  robot.ExtAxisServoOn(1, 0);
29  robot.ExtAxisSetHoming(1, 0, 20, 3);
30  //5. Calibrar e aplicar o sistema de coordenadas do eixo de extensão
31  DescPose pos = {/* Insira as coordenadas do seu ponto de calibração */ };
32  robot.SetRefPointInExAxisEnd(pos);
33  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 */
34  DescPose coord = {};
35  robot.PositionorComputeECoordSys(coord); //Calcular o resultado da calibração do eixo de extensão
36  robot.ExtAxisActiveECoordSys(1, 1, coord, 1); //Aplicar o resultado da calibração ao sistema de coordenadas do eixo de extensão
37  //6. Calibrar o sistema de coordenadas da peça no eixo de extensão. Você precisará usar as seguintes interfaces:
38  //int SetWObjCoordPoint(int point_num);
39  //int ComputeWObjCoord(int method, ref DescPose wobj_pose);
40  //int SetWObjCoord(int id, DescPose coord);
41  //int SetWObjList(int id, DescPose coord);
42  //7. Registrar o ponto inicial do movimento articular síncrono
43  DescPose startdescPose = {/*Insira suas coordenadas*/ };
44  JointPos startjointPos = {/*Insira suas coordenadas*/ };
45  ExaxisPos startexaxisPos = {/* Insira as coordenadas do ponto inicial do seu eixo de extensão */ };
46  //8. Registrar as coordenadas do ponto final do movimento articular síncrono
47  DescPose enddescPose = {/*Insira suas coordenadas*/ };
48  JointPos endjointPos = {/*Insira suas coordenadas*/ };
49  ExaxisPos endexaxisPos = {/* Insira as coordenadas do ponto final do seu eixo de extensão */ };
50  //9. Escrever o programa de movimento síncrono
51  //Mover para o ponto inicial, assumindo que os sistemas de coordenadas da ferramenta e da peça aplicados são ambos 1
52  robot.ExtAxisMove(startexaxisPos, 20);
53  DescPose offdese = { 0, 0, 0, 0, 0, 0 };
54  robot.MoveJ(&startjointPos, &startdescPose, 1, 1, 100, 100, 100, &startexaxisPos, 0, 0, &offdese);
55  //Iniciar movimento síncrono
56  robot.ExtAxisSyncMoveJ(endjointPos, enddescPose, 1, 1, 100, 100, 100, endexaxisPos, -1, 0, offdese);
57  robot.MoveJ(&startjointPos, 1, 1, 100, 100, 100, &startexaxisPos, 0, 0, &offdese);
58  //Iniciar movimento síncrono
59  robot.ExtAxisSyncMoveJ(endjointPos, 1, 1, 100, 100, 100, endexaxisPos, -1, 0, offdese);
60  robot.CloseRPC();
61}

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

Novo na versão C++SDK-v2.1.4.0.

 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*/
16errno_t ExtAxisSyncMoveL(JointPos joint_pos, DescPose desc_pos, int tool, int user, float vel, float acc, float ovl, float 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)

 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*/
16errno_t ExtAxisSyncMoveL(DescPose desc_pos, int tool, int user, float vel, float acc, float ovl, float blendR, ExaxisPos epos, uint8_t offset_flag, DescPose offset_pos, int config = -1);

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

 1int testSyncMoveL()
 2{
 3  ROBOT_STATE_PKG pkg = {};
 4  FRRobot robot;
 5  robot.LoggerInit();
 6  robot.SetLoggerLevel(1);
 7  int rtn = robot.RPC("192.168.58.2");
 8  if (rtn != 0)
 9  {
10    return -1;
11  }
12  robot.SetReConnectParam(true, 30000, 500);
13  //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:
14  //  int SetToolPoint(int point_num); //Definir ponto de referência da ferramenta - método de seis pontos
15  //  int ComputeTool(ref DescPose tcp_pose); //Calcular sistema de coordenadas da ferramenta
16  //  int SetTcp4RefPoint(int point_num);  //Definir ponto de referência da ferramenta - método de quatro pontos
17  //  int ComputeTcp4(ref DescPose tcp_pose);  //Calcular sistema de coordenadas da ferramenta - método de quatro pontos
18  //  int SetToolCoord(int id, DescPose coord, int type, int install); //Definir e aplicar sistema de coordenadas da ferramenta
19  //  int SetToolList(int id, DescPose coord, int type, int install);  //Definir e aplicar lista de sistemas de coordenadas da ferramenta
20  //2. Definir parâmetros de comunicação UDP e carregar a comunicação UDP
21  robot.ExtDevSetUDPComParam("192.168.58.88", 2021, 2, 100, 3, 100, 1, 100, 10);
22  robot.ExtDevLoadUDPDriver();
23  //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
24  robot.SetAxisDHParaConfig(4, 200, 200, 0, 0, 0, 0, 0, 0); //Posicionador de eixo único e parâmetros DH
25  robot.SetRobotPosToAxis(1); //Posição de instalação do eixo de extensão
26  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.
27  //4. Habilitar e fazer homing do eixo selecionado
28  robot.ExtAxisServoOn(1, 0);
29  robot.ExtAxisSetHoming(1, 0, 20, 3);
30  //5. Calibrar e aplicar o sistema de coordenadas do eixo de extensão
31  DescPose pos = {/* Insira as coordenadas do seu ponto de calibração */ };
32  robot.SetRefPointInExAxisEnd(pos);
33  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 */
34  DescPose coord = {};
35  robot.PositionorComputeECoordSys(coord); //Calcular o resultado da calibração do eixo de extensão
36  robot.ExtAxisActiveECoordSys(1, 1, coord, 1); //Aplicar o resultado da calibração ao sistema de coordenadas do eixo de extensão
37  //6. Calibrar o sistema de coordenadas da peça no eixo de extensão. Você precisará usar as seguintes interfaces:
38  //int SetWObjCoordPoint(int point_num);
39  //int ComputeWObjCoord(int method, ref DescPose wobj_pose);
40  //int SetWObjCoord(int id, DescPose coord);
41  //int SetWObjList(int id, DescPose coord);
42  //7. Registrar o ponto inicial do movimento linear síncrono
43  DescPose startdescPose = {/*Insira suas coordenadas*/ };
44  JointPos startjointPos = {/*Insira suas coordenadas*/ };
45  ExaxisPos startexaxisPos = {/* Insira as coordenadas do ponto inicial do seu eixo de extensão */ };
46  //8. Registrar as coordenadas do ponto final do movimento linear síncrono
47  DescPose enddescPose = {/*Insira suas coordenadas*/ };
48  JointPos endjointPos = {/*Insira suas coordenadas*/ };
49  ExaxisPos endexaxisPos = {/* Insira as coordenadas do ponto final do seu eixo de extensão */ };
50  //9. Escrever o programa de movimento síncrono
51  //Mover para o ponto inicial, assumindo que os sistemas de coordenadas da ferramenta e da peça aplicados são ambos 1
52  robot.ExtAxisMove(startexaxisPos, 20);
53  DescPose offdese = { 0, 0, 0, 0, 0, 0 };
54  robot.MoveJ(&startjointPos, &startdescPose, 1, 1, 100, 100, 100, &startexaxisPos, 0, 0, &offdese);
55  //Iniciar movimento síncrono
56  robot.ExtAxisSyncMoveL(endjointPos, enddescPose, 1, 1, 100, 100, 100, 0, endexaxisPos, 0, offdese);
57
58  robot.MoveJ(&startjointPos, 1, 1, 100, 100, 100, &startexaxisPos, 0, 0, &offdese);
59  //Iniciar movimento síncrono
60  robot.ExtAxisSyncMoveL(enddescPose, 1, 1, 100, 100, 100, 0, endexaxisPos, 0, offdese);
61  robot.CloseRPC();
62}

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

Novo na versão C++SDK-v2.1.4.0.

 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*/
25errno_t ExtAxisSyncMoveC(JointPos joint_pos_p, DescPose desc_pos_p, int ptool, int puser, float pvel, float pacc, ExaxisPos epos_p, int poffset_flag, DescPose offset_pos_p, JointPos joint_pos_t, DescPose desc_pos_t, int ttool, int tuser, float tvel, float tacc, ExaxisPos epos_t, int toffset_flag, DescPose offset_pos_t, float ovl, float 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)

 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*/
24errno_t ExtAxisSyncMoveC(DescPose desc_pos_p, int ptool, int puser, float pvel, float pacc, ExaxisPos epos_p, uint8_t poffset_flag, DescPose offset_pos_p, DescPose desc_pos_t, int ttool, int tuser, float tvel, float tacc, ExaxisPos epos_t, uint8_t toffset_flag, DescPose offset_pos_t, float ovl, float blendR, int config = -1);

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

 1int testSyncMoveC()
 2{
 3  ROBOT_STATE_PKG pkg = {};
 4  FRRobot robot;
 5  robot.LoggerInit();
 6  robot.SetLoggerLevel(1);
 7  int rtn = robot.RPC("192.168.58.2");
 8  if (rtn != 0)
 9  {
10    return -1;
11  }
12  robot.SetReConnectParam(true, 30000, 500);
13  //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:
14  //  int SetToolPoint(int point_num); //Definir ponto de referência da ferramenta - método de seis pontos
15  //  int ComputeTool(ref DescPose tcp_pose); //Calcular sistema de coordenadas da ferramenta
16  //  int SetTcp4RefPoint(int point_num);  //Definir ponto de referência da ferramenta - método de quatro pontos
17  //  int ComputeTcp4(ref DescPose tcp_pose);  //Calcular sistema de coordenadas da ferramenta - método de quatro pontos
18  //  int SetToolCoord(int id, DescPose coord, int type, int install); //Definir e aplicar sistema de coordenadas da ferramenta
19  //  int SetToolList(int id, DescPose coord, int type, int install);  //Definir e aplicar lista de sistemas de coordenadas da ferramenta
20  //2. Definir parâmetros de comunicação UDP e carregar a comunicação UDP
21  robot.ExtDevSetUDPComParam("192.168.58.88", 2021, 2, 100, 3, 100, 1, 100, 10);
22  robot.ExtDevLoadUDPDriver();
23  //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
24  robot.SetAxisDHParaConfig(4, 200, 200, 0, 0, 0, 0, 0, 0); //Posicionador de eixo único e parâmetros DH
25  robot.SetRobotPosToAxis(1); //Posição de instalação do eixo de extensão
26  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.
27  //4. Habilitar e fazer homing do eixo selecionado
28  robot.ExtAxisServoOn(1, 0);
29  robot.ExtAxisSetHoming(1, 0, 20, 3);
30  //5. Calibrar e aplicar o sistema de coordenadas do eixo de extensão
31  DescPose pos = {/* Insira as coordenadas do seu ponto de calibração */ };
32  robot.SetRefPointInExAxisEnd(pos);
33  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 */
34  DescPose coord = {};
35  robot.PositionorComputeECoordSys(coord); //Calcular o resultado da calibração do eixo de extensão
36  robot.ExtAxisActiveECoordSys(1, 1, coord, 1); //Aplicar o resultado da calibração ao sistema de coordenadas do eixo de extensão
37  //6. Calibrar o sistema de coordenadas da peça no eixo de extensão. Você precisará usar as seguintes interfaces:
38  //int SetWObjCoordPoint(int point_num);
39  //int ComputeWObjCoord(int method, ref DescPose wobj_pose);
40  //int SetWObjCoord(int id, DescPose coord);
41  //int SetWObjList(int id, DescPose coord);
42  //7. Registrar o ponto inicial do movimento de arco síncrono
43  DescPose startdescPose = {/*Insira suas coordenadas*/ };
44  JointPos startjointPos = {/*Insira suas coordenadas*/ };
45  ExaxisPos startexaxisPos = {/* Insira as coordenadas do ponto inicial do seu eixo de extensão */ };
46  //8. Registrar as coordenadas do ponto final do movimento de arco síncrono
47  DescPose enddescPose = {/*Insira suas coordenadas*/ };
48  JointPos endjointPos = {/*Insira suas coordenadas*/ };
49  ExaxisPos endexaxisPos = {/* Insira as coordenadas do ponto final do seu eixo de extensão */ };
50  //9. Registrar as coordenadas do ponto intermediário do movimento de arco síncrono
51  DescPose middescPose = {/*Insira suas coordenadas*/ };
52  JointPos midjointPos = {/*Insira suas coordenadas*/ };
53  ExaxisPos midexaxisPos = {/* Insira as coordenadas do eixo de extensão quando o robô estiver no ponto intermediário do arco */ };
54  //10. Escrever o programa de movimento síncrono
55  //Mover para o ponto inicial, assumindo que os sistemas de coordenadas da ferramenta e da peça aplicados são ambos 1
56  robot.ExtAxisMove(startexaxisPos, 20);
57  DescPose offdese = { 0, 0, 0, 0, 0, 0 };
58  robot.MoveJ(&startjointPos, &startdescPose, 1, 1, 100, 100, 100, &startexaxisPos, 0, 0, &offdese);
59  //Iniciar movimento síncrono
60  robot.ExtAxisSyncMoveC(midjointPos, middescPose, 1, 1, 100, 100, midexaxisPos, 0, offdese, endjointPos, enddescPose, 1, 1, 100, 100, endexaxisPos, 0, offdese, 100, 0);
61  robot.MoveJ(&startjointPos, 1, 1, 100, 100, 100, &startexaxisPos, 0, 0, &offdese);
62  //Iniciar movimento síncrono
63  robot.ExtAxisSyncMoveC(middescPose, 1, 1, 100, 100, midexaxisPos, 0, offdese, enddescPose, 1, 1, 100, 100, endexaxisPos, 0, offdese, 100, 0);
64  robot.CloseRPC();
65}

13.50. Definir DO de Extensão

Novo na versão C++SDK-v2.1.4.0.

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*/
9errno_t SetAuxDO(int DONum, bool bOpen, bool smooth, bool block);

13.51. Definir AO de Extensão

Novo na versão C++SDK-v2.1.4.0.

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*/
8errno_t SetAuxAO(int AONum, double value, bool block);

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

Novo na versão C++SDK-v2.1.4.0.

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*/
6errno_t SetAuxDIFilterTime(int filterTime);

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

Novo na versão C++SDK-v2.1.4.0.

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

13.54. Aguardar Entrada do DI de Extensão

Novo na versão C++SDK-v2.1.4.0.

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*/
9errno_t WaitAuxDI(int DINum, bool bOpen, int time, bool errorAlarm);

13.55. Aguardar Entrada do AI de Extensão

Novo na versão C++SDK-v2.1.4.0.

 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*/
10errno_t WaitAuxAI(int AINum, int sign, int value, int time, bool errorAlarm);

13.56. Obter Valor do DI de Extensão

Novo na versão C++SDK-v2.1.4.0.

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* @param [out] isOpen 0-desligar; 1-ligar
6* @return Código de erro
7*/
8errno_t GetAuxDI(int DINum, bool isNoBlock, bool& isOpen);

13.57. Obter Valor do AI de Extensão

Novo na versão C++SDK-v2.1.4.0.

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* @param [in] value Valor de entrada
6* @return Código de erro
7*/
8errno_t GetAuxAI(int AINum, bool isNoBlock, int& value);

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

 1int TestAuxDOAO(void)
 2{
 3  ROBOT_STATE_PKG pkg = {};
 4  FRRobot robot;
 5  robot.LoggerInit();
 6  robot.SetLoggerLevel(1);
 7  int rtn = robot.RPC("192.168.58.2");
 8  if (rtn != 0)
 9  {
10    return -1;
11  }
12  robot.SetReConnectParam(true, 30000, 500);
13  for (int i = 0; i < 128; i++)
14  {
15    robot.SetAuxDO(i, true, false, true);
16    Sleep(100);
17  }
18  for (int i = 0; i < 128; i++)
19  {
20    robot.SetAuxDO(i, false, false, true);
21    Sleep(100);
22  }
23  for (int i = 0; i < 409; i++)
24  {
25    robot.SetAuxAO(0, i * 10, true);
26    robot.SetAuxAO(1, 4095 - i * 10, true);
27    robot.SetAuxAO(2, i * 10, true);
28    robot.SetAuxAO(3, 4095 - i * 10, true);
29    Sleep(10);
30  }
31  robot.SetAuxDIFilterTime(10);
32  robot.SetAuxAIFilterTime(0, 10);
33  for (int i = 0; i < 20; i++)
34  {
35    bool curValue = false;
36    int rtn = robot.GetAuxDI(i, false, curValue);
37    cout << "DI" << i << "  " << curValue << endl;
38  }
39  int curValue = -1;
40  for (int i = 0; i < 4; i++)
41  {
42    rtn = robot.GetAuxAI(i, true, curValue);
43  }
44  robot.WaitAuxDI(1, false, 1000, false);
45  robot.WaitAuxAI(1, 1, 132, 1000, false);
46  robot.CloseRPC();
47  return 0;
48}

13.59. Habilitar Dispositivo Móvel

Novo na versão C++SDK-v2.1.5.0.

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

13.60. Homing do Dispositivo Móvel

Novo na versão C++SDK-v2.1.5.0.

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

13.61. Movimento Linear do Dispositivo Móvel

Novo na versão C++SDK-v2.1.5.0.

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

13.62. Movimento de Arco do Dispositivo Móvel

Novo na versão C++SDK-v2.1.5.0.

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

13.63. Parar Movimento do Dispositivo Móvel

Novo na versão C++SDK-v2.1.5.0.

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

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

 1int TestTractor(void)
 2{
 3  ROBOT_STATE_PKG pkg = {};
 4  FRRobot robot;
 5  robot.LoggerInit();
 6  robot.SetLoggerLevel(1);
 7  int rtn = robot.RPC("192.168.58.2");
 8  if (rtn != 0)
 9  {
10    return -1;
11  }
12  robot.SetReConnectParam(true, 30000, 500);
13  robot.ExtDevSetUDPComParam("192.168.58.2", 2021, 2, 50, 5, 50, 1, 50, 10, 1);
14  robot.ExtDevLoadUDPDriver();
15  rtn = robot.ExtAxisServoOn(1, 1);
16  rtn = robot.ExtAxisServoOn(2, 1);
17  robot.Sleep(2000);
18  robot.ExtAxisSetHoming(1, 0, 10, 2);
19  robot.Sleep(2000);
20  rtn = robot.ExtAxisSetHoming(2, 0, 10, 2);
21  robot.Sleep(4000);
22  robot.ExtAxisParamConfig(1, 0, 0, 50000, -50000, 1000, 1000, 6.280, 16384, 200, 0, 0, 0);
23  robot.ExtAxisParamConfig(2, 0, 0, 50000, -50000, 1000, 1000, 6.280, 16384, 200, 0, 0, 0);
24  robot.SetAxisDHParaConfig(5, 0, 0, 0, 0, 0, 0, 0, 0);
25  robot.TractorEnable(false);
26  robot.Sleep(2000);
27  robot.TractorEnable(true);
28  robot.Sleep(2000);
29  robot.TractorHoming();
30  robot.Sleep(2000);
31  robot.TractorMoveL(100, 2);
32  robot.Sleep(5000);
33  robot.TractorStop();
34  robot.TractorMoveL(-100, 20);
35  robot.Sleep(5000);
36  robot.TractorMoveC(300, 90, 20);
37  robot.Sleep(10000);
38  robot.TractorMoveC(300, -90, 20);
39  robot.Sleep(1);
40  robot.CloseRPC();
41  return 0;
42}

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 [in] time Tempo de conclusão do posicionamento [ms]
4* @return Código de erro
5*/
6errno_t SetExAxisCmdDoneTime(double time);