13. Eixos Extensores
13.1. Configurar Parâmetros do Eixo Extensor 485
Novo na versão C#SDK-v1.0.6.
1/**
2* @brief Configurar parâmetros do eixo extensor 485
3* @param [in] servoId ID do servo driver, intervalo [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*/
11int AuxServoSetParam(int servoId, int servoCompany, int servoModel, int servoSoftVersion, int servoResolution, double axisMechTransRatio);
13.2. Obter Parâmetros de Configuração do Eixo Extensor 485
Novo na versão C#SDK-v1.0.6.
1/**
2* @brief Obter parâmetros de configuração do eixo extensor 485
3* @param [in] servoId ID do servo driver, intervalo [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*/
11int AuxServoGetParam(int servoId, ref int servoCompany, ref int servoModel, ref int servoSoftVersion, ref int servoResolution, ref double axisMechTransRatio);
13.3. Habilitar/Desabilitar Eixo Extensor 485
Novo na versão C#SDK-v1.0.6.
1/**
2* @brief Habilitar/Desabilitar eixo extensor 485
3* @param [in] servoId ID do servo driver, intervalo [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*/
7int AuxServoEnable(int servoId, int status);
13.4. Definir Modo de Controle do Eixo Extensor 485
Novo na versão C#SDK-v1.0.6.
1/**
2* @brief Definir modo de controle do eixo extensor 485
3* @param [in] servoId ID do servo driver, intervalo [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*/
7int AuxServoSetControlMode(int servoId, int mode);
13.5. Definir Posição Alvo do Eixo Extensor 485 (Modo Posição)
Novo na versão C#SDK-v1.0.6.
1/**
2* @brief Definir posição alvo do eixo extensor 485 (modo posição)
3* @param [in] servoId ID do servo driver, intervalo [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*/
8int AuxServoSetTargetPos(int servoId, double pos, double speed);
13.6. Definir Velocidade Alvo do Eixo Extensor 485 (Modo Velocidade)
Novo na versão C#SDK-v1.0.6.
1/**
2* @brief Definir velocidade alvo do eixo extensor 485 (modo velocidade)
3* @param [in] servoId ID do servo driver, intervalo [1-15], correspondente ao ID do escravo
4* @param [in] speed Velocidade alvo, mm/s ou °/s
5* @return Código de erro
6*/
7int AuxServoSetTargetSpeed(int servoId, double speed);
13.7. Definir Torque Alvo do Eixo Extensor 485 (Modo Torque) – Temporariamente não disponível
Novo na versão C#SDK-v1.0.6.
1/**
2* @brief Definir torque alvo do eixo extensor 485 (modo torque) -- Temporariamente não disponível
3* @param [in] servoId ID do servo driver, intervalo [1-15], 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.8. Definir Homing do Eixo Extensor 485
Novo na versão C#SDK-v1.0.6.
1/**
2* @brief Definir homing do eixo extensor 485
3* @param [in] servoId ID do servo driver, intervalo [1-15], 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 do zero, mm/s ou °/s
6* @param [in] latchVel Velocidade de fixação, mm/s ou °/s
7* @return Código de erro
8*/
9int AuxServoHoming(int servoId, int mode, double searchVel, double latchVel);
13.9. Limpar Informações de Erro do Eixo Extensor 485
Novo na versão C#SDK-v1.0.6.
1/**
2* @brief Limpar informações de erro do eixo extensor 485
3* @param [in] servoId ID do servo driver, intervalo [1-15], correspondente ao ID do escravo
4* @return Código de erro
5*/
6int AuxServoClearError(int servoId);
13.10. Obter Status do Servo do Eixo Extensor 485
Novo na versão C#SDK-v1.0.6.
1/**
2* @brief Obter status do servo do eixo extensor 485
3* @param [in] servoId ID do servo driver, intervalo [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 bit0:0-desabilitado; 1-habilitado; bit1:0-parado; 1-em movimento; bit2 0-limite positivo não acionado; 1-limite positivo acionado; bit3 0-limite negativo não acionado; 1-limite negativo acionado; bit4 0-posicionamento não concluído; 1-posicionamento concluído; bit5: 0-homing não concluído; 1-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*/
11int AuxServoGetStatus(int servoId, ref int servoErrCode, ref int servoState, ref double servoPos, ref double servoSpeed, ref double servoTorque);
13.11. Definir Número do Eixo de Dados do Eixo Extensor 485 no Feedback de Estado
Novo na versão C#SDK-v1.0.6.
1/**
2* @brief Definir número do eixo de dados do eixo extensor 485 no feedback de estado
3* @param [in] servoId ID do servo driver, intervalo [1-15], correspondente ao ID do escravo
4* @return Código de erro
5*/
6int AuxServosetStatusID(int servoId);
13.12. Definir Aceleração/Desaceleração de Movimento do Eixo Extensor 485
1/**
2* @brief Definir aceleração/desaceleração de movimento do eixo extensor 485
3* @param [in] acc Aceleração do movimento do eixo extensor 485
4* @param [in] dec Desaceleração do movimento do eixo extensor 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 Extensor 485
1/**
2* @brief Definir aceleração/desaceleração de parada de emergência do eixo extensor 485
3* @param [in] acc Aceleração da parada de emergência do eixo extensor 485
4* @param [in] dec Desaceleração da parada de emergência do eixo extensor 485
5* @return Código de erro
6*/
7int AuxServoSetEmergencyStopAcc(double acc, double dec);
13.14. Obter Aceleração/Desaceleração de Movimento do Eixo Extensor 485
1/**
2* @brief Obter aceleração/desaceleração de movimento do eixo extensor 485
3* @param [out] acc Aceleração do movimento do eixo extensor 485
4* @param [out] dec Desaceleração do movimento do eixo extensor 485
5* @return Código de erro
6*/
7int AuxServoGetAcc(ref double acc, ref double dec);
13.15. Obter Aceleração/Desaceleração de Parada de Emergência do Eixo Extensor 485
1/**
2* @brief Obter aceleração/desaceleração de parada de emergência do eixo extensor 485
3* @param [out] acc Aceleração da parada de emergência do eixo extensor 485
4* @param [out] dec Desaceleração da parada de emergência do eixo extensor 485
5* @return Código de erro
6*/
7int AuxServoGetEmergencyStopAcc(ref double acc, ref double dec);
13.16. Exemplo de Código de Controle do Eixo Extensor
Novo na versão C#SDK-V1.1.3: Web-3.8.2
1private void button64_Click(object sender, EventArgs e)
2{
3 int retval = robot.AuxServoSetParam(1, 1, 1, 1, 131072, 15.45);
4 Console.WriteLine($"AuxServoSetParam is: {retval}");
5
6 int servoCompany = 0;
7 int servoModel = 0;
8 int servoSoftVersion = 0;
9 int servoResolution = 0;
10 double axisMechTransRatio = 0;
11 retval = robot.AuxServoGetParam(1, ref servoCompany, ref servoModel, ref servoSoftVersion, ref servoResolution, ref axisMechTransRatio);
12 Console.WriteLine($"servoCompany {servoCompany}\n" +
13 $"servoModel {servoModel}\n" +
14 $"servoSoftVersion {servoSoftVersion}\n" +
15 $"servoResolution {servoResolution}\n" +
16 $"axisMechTransRatio {axisMechTransRatio}\n");
17
18 retval = robot.AuxServoSetParam(1, 10, 11, 12, 13, 14);
19 Console.WriteLine($"AuxServoSetParam is: {retval}");
20
21 retval = robot.AuxServoGetParam(1, ref servoCompany, ref servoModel, ref servoSoftVersion, ref servoResolution, ref axisMechTransRatio);
22 Console.WriteLine($"servoCompany {servoCompany}\n" +
23 $"servoModel {servoModel}\n" +
24 $"servoSoftVersion {servoSoftVersion}\n" +
25 $"servoResolution {servoResolution}\n" +
26 $"axisMechTransRatio {axisMechTransRatio}\n");
27
28 retval = robot.AuxServoSetParam(1, 1, 1, 1, 131072, 36);
29 Console.WriteLine($"AuxServoSetParam is: {retval}");
30 Thread.Sleep(3000);
31
32 robot.AuxServoSetAcc(3000, 3000);
33 robot.AuxServoSetEmergencyStopAcc(5000, 5000);
34 Thread.Sleep(1000);
35 double emagacc = 0, acc = 0;
36 double emagdec = 0, dec = 0;
37 robot.AuxServoGetEmergencyStopAcc(ref emagacc, ref emagdec);
38 Console.WriteLine($"emergency acc is {emagacc} dec is {emagdec}");
39 robot.AuxServoGetAcc(ref acc, ref dec);
40 Console.WriteLine($"acc is {acc} dec is {dec}");
41
42 robot.AuxServoSetControlMode(1, 0);
43 Thread.Sleep(2000);
44
45 retval = robot.AuxServoEnable(1, 0);
46 Console.WriteLine($"AuxServoEnable disenable {retval}");
47 Thread.Sleep(1000);
48 int servoerrcode = 0;
49 int servoErrCode = 0;
50 int servoState = 0;
51 double servoPos = 0;
52 double servoSpeed = 0;
53 double servoTorque = 0;
54 retval = robot.AuxServoGetStatus(1, ref servoErrCode, ref servoState, ref servoPos, ref servoSpeed, ref servoTorque);
55 Console.WriteLine($"AuxServoGetStatus servoState {servoState}");
56 Thread.Sleep(1000);
57
58 retval = robot.AuxServoEnable(1, 1);
59 Console.WriteLine($"AuxServoEnable enable {retval}");
60 Thread.Sleep(1000);
61 retval = robot.AuxServoGetStatus(1, ref servoErrCode, ref servoState, ref servoPos, ref servoSpeed, ref servoTorque);
62 Console.WriteLine($"AuxServoGetStatus servoState {servoState}");
63 Thread.Sleep(1000);
64
65 retval = robot.AuxServoHoming(1, 1, 5, 1);
66 Console.WriteLine($"AuxServoHoming {retval}");
67 Thread.Sleep(3000);
68
69 retval = robot.AuxServoSetTargetPos(1, 200, 30);
70 Console.WriteLine($"AuxServoSetTargetPos {retval}");
71 Thread.Sleep(1000);
72 retval = robot.AuxServoGetStatus(1, ref servoErrCode, ref servoState, ref servoPos, ref servoSpeed, ref servoTorque);
73 Console.WriteLine($"AuxServoGetStatus servoSpeed {servoSpeed}");
74 Thread.Sleep(8000);
75
76 robot.AuxServoSetControlMode(1, 1);
77 Thread.Sleep(2000);
78
79 robot.AuxServoEnable(1, 0);
80 Thread.Sleep(1000);
81 robot.AuxServoEnable(1, 1);
82 Thread.Sleep(1000);
83 robot.AuxServoSetTargetSpeed(1, 100, 80);
84
85 Thread.Sleep(5000);
86 robot.AuxServoSetTargetSpeed(1, 0, 80);
87}
13.17. Configurar Parâmetros de Comunicação UDP do Eixo Extensor
Novo na versão C#SDK-V1.1.3: Web-3.8.2
1/**
2* @brief Configurar parâmetros de comunicação UDP do eixo extensor
3* @param [in] ip Endereço IP do PLC
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 para confirmar desconexão da comunicação
9* @param [in] reconnectEnable Habilitar reconexão automática em caso de desconexão 0-desabilitar 1-habilitar
10* @param [in] reconnectPeriod Intervalo do período de reconexão (ms)
11* @param [in] reconnectNum Número de tentativas de reconexão
12* @param [in] selfConnect Estabelecer conexão automaticamente após reinicialização por falta de energia; 0-não estabelecer; 1-estabelecer
13* @return Código de erro
14*/
15int ExtDevSetUDPComParam(std::string ip, int port, int period, int lossPkgTime, int lossPkgNum, int disconnectTime, int reconnectEnable, int reconnectPeriod, int reconnectNum, int selfConnect);
13.18. Obter Parâmetros de Configuração de Comunicação UDP do Eixo Extensor
Novo na versão C#SDK-v1.0.7.
1/**
2* @brief Obter parâmetros de comunicação UDP do eixo extensor
3* @param [out] ip Endereço IP do PLC
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 para confirmar desconexão da comunicação
9* @param [out] reconnectEnable Habilitar reconexão automática em caso de desconexão 0-desabilitar 1-habilitar
10* @param [out] reconnectPeriod Intervalo do período de reconexão (ms)
11* @param [out] reconnectNum Número de tentativas de reconexão
12* @param [out] selfConnect Reconectar automaticamente após reiniciar a caixa 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
Novo na versão C#SDK-v1.0.7.
1/**
2* @brief Carregar comunicação UDP
3* @return Código de erro
4*/
5int ExtDevLoadUDPDriver();
13.20. Descarregar Comunicação UDP
Novo na versão C#SDK-v1.0.7.
1/**
2* @brief Descarregar 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 Extensor
Novo na versão C#SDK-v1.0.7.
1/**
2* @brief Restaurar conexão após desconexão anormal da comunicação UDP do eixo extensor
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 Extensor
Novo na versão C#SDK-v1.0.7.
1/**
2* @brief Fechar comunicação após desconexão anormal da comunicação UDP do eixo extensor
3* @return Código de erro
4*/
5int ExtDevUDPClientComClose();
13.23. Configurar Parâmetros do Eixo Extensor UDP
Novo na versão C#SDK-v1.0.7.
1/**
2* @brief Configurar parâmetros do eixo extensor UDP
3* @param [in] axisID Número do eixo
4* @param [in] axisType Tipo de eixo extensor 0-translação; 1-rotação
5* @param [in] axisDirection Direção do eixo extensor 0-positiva; 1-negativa
6* @param [in] axisMax Posição máxima do eixo extensor mm
7* @param [in] axisMin Posição mínima do eixo extensor 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 eixo extensor no ponto de início da solda
13* @param [in] axisCompany Fabricante do driver 1-Hokuyo; 2-Inovance; 3-Panasonic
14* @param [in] axisModel Modelo do driver 1-Hokuyo-SV-XD3EA040L-E, 2-Hokuyo-SV-X2EA150A-A, 1-Inovance-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, long encResolution, double axisOffect, int axisCompany, int axisModel, int axisEncType);
13.24. Definir Posição de Instalação do Eixo Extensor
Novo na versão C#SDK-v1.0.7.
1/**
2* @brief Definir posição de instalação do eixo extensor
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 de Parâmetros DH do Sistema do Eixo Extensor
Novo na versão C#SDK-v1.0.7.
1/**
2* @brief Definir configuração de parâmetros DH do sistema do eixo extensor
3* @param [in] axisConfig Configuração do eixo externo, 0-trilho deslizante linear 1 DOF, 1-posicionador L de 2 DOF, 2-3 DOF, 3-4 DOF, 4-posicionador de 1 DOF
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 Extensor UDP
Novo na versão C#SDK-v1.0.7.
1/**
2* @brief Habilitar eixo extensor 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 Extensor UDP
Novo na versão C#SDK-v1.0.7.
1/**
2* @brief Homing do eixo extensor 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 do zero (mm/s)
6* @param [in] latchVel Velocidade de fixação do zero (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 Extensor UDP
Novo na versão C#SDK-v1.0.7.
1/**
2* @brief Iniciar jog do eixo extensor UDP
3* @param [in] axisID Número do eixo[1-4]
4* @param [in] direction Direção de rotação 0-reversa; 1-direta
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 Extensor UDP
Novo na versão C#SDK-v1.0.7.
1/**
2* @brief Parar jog do eixo extensor 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 Extensor UDP
1private void btnJog_Click(object sender, EventArgs e)
2{
3 int rtn = robot.ExtDevSetUDPComParam("192.168.58.88", 2021, 2, 100, 3, 200, 1, 100, 5,1);
4 Console.WriteLine("ExtDevSetUDPComParam rtn is " + rtn);
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 rtn = robot.ExtDevGetUDPComParam(ref ip, ref port, ref period, ref lossPkgTime, ref lossPkgNum, ref disconnectTime, ref reconnectEnable, ref reconnectPeriod, ref reconnectNum);
7 string param = "\nip " + ip + "\nport " + port.ToString() + "\nperiod " + period.ToString() + "\nlossPkgTime " + lossPkgTime.ToString() + "\nlossPkgNum " + lossPkgNum.ToString() + "\ndisConntime " + disconnectTime.ToString() + "\nreconnecable " + reconnectEnable.ToString() + "\nreconnperiod " + reconnectPeriod.ToString() + "\nreconnnun " + reconnectNum.ToString();
8 Console.WriteLine("ExtDevGetUDPComParam rtn is " + rtn + param);
9
10 robot.ExtDevLoadUDPDriver();
11
12 rtn = robot.ExtAxisServoOn(1, 1);
13 Console.WriteLine("ExtAxisServoOn axis id 1 rtn is " + rtn);
14 rtn = robot.ExtAxisServoOn(2, 1);
15 Console.WriteLine("ExtAxisServoOn axis id 2 rtn is " + rtn);
16 Thread.Sleep(2000);
17
18 rtn = robot.ExtAxisSetHoming(1, 0, 10, 2);
19 Console.WriteLine("ExtAxisSetHoming 1 rtnn is " + rtn);
20 Thread.Sleep(2000);
21 rtn = robot.ExtAxisSetHoming(2, 0, 10, 2);
22 Console.WriteLine("ExtAxisSetHoming 2 rtnn is " + rtn);
23
24 Thread.Sleep(4000);
25
26 rtn = robot.SetRobotPosToAxis(1);
27 Console.WriteLine("SetRobotPosToAxis rtn is " + rtn);
28 rtn = robot.SetAxisDHParaConfig(10, 20, 0, 0, 0, 0, 0, 0, 0);
29 Console.WriteLine("SetAxisDHParaConfig rtn is " + rtn);
30 rtn = robot.ExtAxisParamConfig(1, 1, 1, 1000, -1000, 1000, 1000, 1.905f, 262144, 200, 1, 0, 0);
31 Console.WriteLine("ExtAxisParamConfig axis 1 rtn is " + rtn);
32 rtn = robot.ExtAxisParamConfig(2, 1, 1, 1000, -1000, 1000, 1000, 4.444f, 262144, 200, 1, 0, 0);
33 Console.WriteLine("ExtAxisParamConfig axis 2 rtn is " + rtn);
34
35 Thread.Sleep(3000);
36 robot.ExtAxisStartJog(1, 0, 10, 10, 30);
37 Thread.Sleep(1000);
38 robot.ExtAxisStopJog(1);
39 Thread.Sleep(3000);
40 robot.ExtAxisServoOn(1, 0);
41
42 Thread.Sleep(3000);
43 robot.ExtAxisStartJog(2, 0, 10, 10, 30);
44 Thread.Sleep(1000);
45 robot.ExtAxisStopJog(2);
46 Thread.Sleep(3000);
47 robot.ExtAxisServoOn(2, 0);
48 Thread.Sleep(3000);
49 robot.ExtDevUnloadUDPDriver();
50}
13.31. Definir Ponto de Referência do Sistema de Coordenadas do Eixo Extensor - Método dos Quatro Pontos
Novo na versão C#SDK-v1.0.7.
1/**
2* @brief Definir ponto de referência do sistema de coordenadas do eixo extensor - método dos 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 Extensor - Método dos Quatro Pontos
Novo na versão C#SDK-v1.0.7.
1/**
2* @brief Calcular sistema de coordenadas do eixo extensor - método dos quatro pontos
3* @param [out] coord Valor do sistema de coordenadas
4* @return Código de erro
5*/
6int ExtAxisComputeECoordSys(DescPose& coord);
13.33. Aplicar Sistema de Coordenadas do Eixo Extensor
Novo na versão C#SDK-v1.0.7.
1/**
2* @brief Aplicar sistema de coordenadas do eixo extensor
3* @param [in] applyAxisId ID do eixo extensor a ser aplicado bit0-bit3 correspondem aos números dos eixos extensores 1-4, por exemplo, aplicar eixos extensores 1 e 3, então é 0b 0000 0101; ou seja, 5
4* @param [in] axisCoordNum Número do sistema de coordenadas do eixo extensor
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.34. Definir Pose do Ponto de Referência de Calibração no Sistema de Coordenadas da Extremidade do Posicionador
Novo na versão C#SDK-v1.0.7.
1/**
2* @brief Definir 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.35. Definir Ponto de Referência do Sistema de Coordenadas do Posicionador
Novo na versão C#SDK-v1.0.7.
1/**
2* @brief Definir 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.36. Calcular Sistema de Coordenadas do Posicionador - Método dos Quatro Pontos
Novo na versão C#SDK-v1.0.7.
1/**
2* @brief Calcular sistema de coordenadas do posicionador - método dos quatro pontos
3* @param [out] coord Valor do sistema de coordenadas
4* @return Código de erro
5*/
6int PositionorComputeECoordSys(DescPose& coord);
13.37. Obter Sistema de Coordenadas do Eixo Extensor
Novo na versão C#SDK-V1.1.3: Web-3.8.2
1/**
2* @brief Obter sistema de coordenadas do eixo extensor
3* @param [out] coord Sistema de coordenadas do eixo extensor
4* @return Código de erro
5*/
6int ExtAxisGetCoord(ref DescPose coord);
13.38. Exemplo de Código de Calibração do Sistema de Coordenadas do Eixo Extensor
Novo na versão C#SDK-V1.1.3: Web-3.8.2
1private void button66_Click(object sender, EventArgs e)
2{
3 int rtn = robot.ExtDevSetUDPComParam("192.168.58.88", 2021, 2, 100, 3, 200, 1, 100, 5,1);
4 Console.WriteLine("ExtDevSetUDPComParam rtn is " + rtn);
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 rtn = robot.ExtDevGetUDPComParam(ref ip, ref port, ref period, ref lossPkgTime, ref lossPkgNum, ref disconnectTime, ref reconnectEnable, ref reconnectPeriod, ref reconnectNum);
7 string param = "\nip " + ip + "\nport " + port.ToString() + "\nperiod " + period.ToString() + "\nlossPkgTime " + lossPkgTime.ToString() + "\nlossPkgNum " + lossPkgNum.ToString() + "\ndisConntime " + disconnectTime.ToString() + "\nreconnecable " + reconnectEnable.ToString() + "\nreconnperiod " + reconnectPeriod.ToString() + "\nreconnnun " + reconnectNum.ToString();
8 Console.WriteLine("ExtDevGetUDPComParam rtn is " + rtn + param);
9
10 robot.ExtDevLoadUDPDriver();
11
12 rtn = robot.ExtAxisServoOn(1, 1);
13 Console.WriteLine("ExtAxisServoOn axis id 1 rtn is " + rtn);
14 rtn = robot.ExtAxisServoOn(2, 1);
15 Console.WriteLine("ExtAxisServoOn axis id 2 rtn is " + rtn);
16 Thread.Sleep(2000);
17
18 robot.ExtAxisSetHoming(1, 0, 10, 2);
19 Thread.Sleep(2000);
20 rtn = robot.ExtAxisSetHoming(2, 0, 10, 2);
21 Console.WriteLine("ExtAxisSetHoming rtnn is " + rtn);
22
23 Thread.Sleep(4000);
24
25 rtn = robot.SetRobotPosToAxis(1);
26 Console.WriteLine("SetRobotPosToAxis rtn is " + rtn);
27 rtn = robot.SetAxisDHParaConfig(1, 128.5f, 206.4f, 0, 0, 0, 0, 0, 0);
28 Console.WriteLine("SetAxisDHParaConfig rtn is " + rtn);
29 rtn = robot.ExtAxisParamConfig(1, 1, 1, 1000, -1000, 1000, 1000, 1.905f, 262144, 200, 1, 0, 0);
30 Console.WriteLine("ExtAxisParamConfig axis 1 rtn is " + rtn);
31 rtn = robot.ExtAxisParamConfig(2, 1, 1, 1000, -1000, 1000, 1000, 4.444f, 262144, 200, 1, 0, 0);
32 Console.WriteLine("ExtAxisParamConfig axis 1 rtn is " + rtn);
33
34 DescPose toolCoord = new DescPose(0, 0, 210, 0, 0, 0);
35 robot.SetToolCoord(1, toolCoord, 0, 0, 1, 0);
36
37 JointPos jSafe = new JointPos(115.193f, -96.149f, 92.489f, -87.068f, -89.15f, -83.488f);
38 JointPos j1 = new JointPos(117.559f, -92.624f, 100.329f, -96.909f, -94.057f, -83.488f);
39 JointPos j2 = new JointPos(112.239f, -90.096f, 99.282f, -95.909f, -89.824f, -83.488f);
40 JointPos j3 = new JointPos(110.839f, -83.473f, 93.166f, -89.22f, -90.499f, -83.487f);
41 JointPos j4 = new JointPos(107.935f, -83.572f, 95.424f, -92.873f, -87.933f, -83.488f);
42
43 DescPose descSafe = new DescPose();
44 DescPose desc1 = new DescPose();
45 DescPose desc2 = new DescPose();
46 DescPose desc3 = new DescPose();
47 DescPose desc4 = new DescPose();
48 ExaxisPos exaxisPos = new ExaxisPos(0, 0, 0, 0);
49 DescPose offdese = new DescPose(0, 0, 0, 0, 0, 0);
50
51 robot.GetForwardKin( jSafe, ref descSafe);
52 robot.MoveJ( jSafe, descSafe, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
53 Thread.Sleep(2000);
54
55 robot.GetForwardKin( j1, ref desc1);
56 robot.MoveJ( j1, desc1, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
57 Thread.Sleep(2000);
58
59 DescPose actualTCPPos = new DescPose();
60 robot.GetActualTCPPose(0, ref actualTCPPos);
61 robot.SetRefPointInExAxisEnd(actualTCPPos);
62 rtn = robot.PositionorSetRefPoint(1);
63 Console.WriteLine("PositionorSetRefPoint 1 rtn is " + rtn);
64 Thread.Sleep(2000);
65
66 robot.MoveJ( jSafe, descSafe, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
67 robot.ExtAxisStartJog(1, 0, 50, 50, 10);
68 Thread.Sleep(1000);
69 robot.ExtAxisStartJog(2, 0, 50, 50, 10);
70 Thread.Sleep(1000);
71 robot.GetForwardKin( j2, ref desc2);
72 rtn = robot.MoveJ( j2, desc2, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
73 rtn = robot.PositionorSetRefPoint(2);
74 Console.WriteLine("PositionorSetRefPoint 2 rtn is " + rtn);
75 Thread.Sleep(2000);
76
77 robot.MoveJ( jSafe, descSafe, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
78 robot.ExtAxisStartJog(1, 0, 50, 50, 10);
79 Thread.Sleep(1000);
80 robot.ExtAxisStartJog(2, 0, 50, 50, 10);
81 Thread.Sleep(1000);
82 robot.GetForwardKin( j3, ref desc3);
83 robot.MoveJ( j3, desc3, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
84 rtn = robot.PositionorSetRefPoint(3);
85 Console.WriteLine("PositionorSetRefPoint 3 rtn is " + rtn);
86 Thread.Sleep(2000);
87
88 robot.MoveJ( jSafe, descSafe, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
89 robot.ExtAxisStartJog(1, 0, 50, 50, 10);
90 Thread.Sleep(1000);
91 robot.ExtAxisStartJog(2, 0, 50, 50, 10);
92 Thread.Sleep(1000);
93 robot.GetForwardKin(j4, ref desc4);
94 robot.MoveJ(j4, desc4, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
95 rtn = robot.PositionorSetRefPoint(4);
96 Console.WriteLine("PositionorSetRefPoint 4 rtn is " + rtn);
97 Thread.Sleep(2000);
98
99 DescPose axisCoord = new DescPose();
100 robot.PositionorComputeECoordSys(ref axisCoord);
101 robot.MoveJ(jSafe, descSafe, 1, 0, 100, 100, 100, exaxisPos, -1, 0, offdese);
102 Console.WriteLine("PositionorComputeECoordSys rtn is {0} {1} {2} {3} {4} {5}", axisCoord.tran.x, axisCoord.tran.y, axisCoord.tran.z, axisCoord.rpy.rx, axisCoord.rpy.ry, axisCoord.rpy.rz);
103 rtn = robot.ExtAxisActiveECoordSys(3, 1, axisCoord, 1);
104 Console.WriteLine("ExtAxisActiveECoordSys rtn is " + rtn);
105}
13.39. Movimento do Eixo Extensor UDP
Novo na versão C#SDK-V1.1.5: Web-3.8.4
1/**
2* @brief Movimento do eixo extensor UDP
3* @param [in] pos Posição alvo
4* @param [in] ovl Percentual 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=-1);
13.40. Exemplo de Código de Movimento do Eixo Extensor UDP
1private void button66_Click(object sender, EventArgs e)
2{
3 ExaxisPos axisPos;
4 axisPos.ePos[0] = 20;
5 axisPos.ePos[1] = 0;
6 axisPos.ePos[2] = 0;
7 axisPos.ePos[3] = 0;
8 robot.ExtAxisMove(axisPos, 50);
9}
13.41. Movimento Síncrono do Eixo Extensor UDP com Movimento de Junta do Robô
Novo na versão C#SDK-v1.0.7.
1/**
2* @brief Movimento síncrono do eixo extensor UDP com movimento de junta do robô
3* @param [in] joint_pos Posição de junta alvo, unidade deg
4* @param [in] desc_pos Pose cartesiana alvo
5* @param [in] tool Número da coordenada da ferramenta, intervalo [0~14]
6* @param [in] user Número da coordenada da peça, intervalo [0~14]
7* @param [in] vel Percentual de velocidade, intervalo [0~100]
8* @param [in] acc Percentual de aceleração, intervalo [0~100], temporariamente não disponível
9* @param [in] ovl Fator de escala de velocidade, intervalo [0~100]
10* @param [in] epos Posição do eixo extensor, unidade mm
11* @param [in] blendT [-1.0]-movimento até o fim (bloqueante), [0~500.0]-tempo de suavização (não bloqueante), unidade ms
12* @param [in] offset_flag 0-sem deslocamento, 1-deslocamento no sistema de coordenadas base/peça, 2-deslocamento no sistema de coordenadas da ferramenta
13* @param [in] offset_pos Quantidade de deslocamento da pose
14* @return Código de erro
15*/
16int 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. Exemplo de Código
1private void btnSyncMoveJ_Click(object sender, EventArgs e)
2{
3 Robot robot = new Robot();
4 robot.RPC("192.168.58.2");
5
6 //1. Calibre e aplique 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 as seguintes:
7 // int SetToolPoint(int point_num); //Definir ponto de referência da ferramenta - método de seis pontos
8 // int ComputeTool(ref DescPose tcp_pose); //Calcular sistema de coordenadas da ferramenta
9 // int SetTcp4RefPoint(int point_num); //Definir ponto de referência da ferramenta - método de quatro pontos
10 // int ComputeTcp4(ref DescPose tcp_pose); //Calcular sistema de coordenadas da ferramenta - método de quatro pontos
11 // int SetToolCoord(int id, DescPose coord, int type, int install); //Definir e aplicar sistema de coordenadas da ferramenta
12 // int SetToolList(int id, DescPose coord, int type, int install); //Definir e aplicar lista de sistemas de coordenadas da ferramenta
13
14 //2. Defina os parâmetros de comunicação UDP e carregue a comunicação UDP
15 robot.ExtDevSetUDPComParam("192.168.58.88", 2021, 2, 100, 3, 100, 1, 100, 10);
16 robot.ExtDevLoadUDPDriver();
17
18 //3. Defina os parâmetros do eixo extensor, incluindo o tipo de eixo extensor, parâmetros do driver do eixo extensor, parâmetros DH do eixo extensor
19 robot.SetAxisDHParaConfig(4, 200, 200, 0, 0, 0, 0, 0, 0); //Posicionador de eixo único e parâmetros DH
20 robot.SetRobotPosToAxis(1); //Posição de instalação do eixo extensor
21 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 parâmetro de driver precisa ser definido. Se você escolher um tipo de eixo extensor que inclui vários eixos, precisa definir os parâmetros do driver para cada eixo.
22
23 //4. Habilite o eixo selecionado e execute o homing
24 robot.ExtAxisServoOn(1, 0);
25 robot.ExtAxisSetHoming(1, 0, 20, 3);
26
27 //5. Calibre e aplique o sistema de coordenadas do eixo extensor (Nota: As interfaces de calibração para posicionadores e trilhos deslizantes lineares são diferentes. Abaixo estão as interfaces para posicionadores)
28 DescPose pos = new DescPose(/* Insira as coordenadas do seu ponto de calibração */);
29 robot.SetRefPointInExAxisEnd(pos);
30 robot.PositionorSetRefPoint(1); /* Você precisa calibrar o eixo extensor usando pontos em quatro posições diferentes, portanto, precisa chamar esta interface 4 vezes para completar a calibração */
31 DescPose coord = new DescPose( );
32 robot.PositionorComputeECoordSys(ref coord); //Calcular o resultado da calibração do eixo extensor
33 robot.ExtAxisActiveECoordSys(1, 1, coord, 1); //Aplicar o resultado da calibração ao sistema de coordenadas do eixo extensor
34
35 //6. Calibre o sistema de coordenadas da peça no eixo extensor. Você precisará usar as seguintes interfaces
36 //int SetWObjCoordPoint(int point_num);
37 //int ComputeWObjCoord(int method, ref DescPose wobj_pose);
38 //int SetWObjCoord(int id, DescPose coord);
39 //int SetWObjList(int id, DescPose coord);
40
41 //7. Registre o ponto de início do seu movimento de junta síncrono
42 DescPose startdescPose = new DescPose(/* Insira suas coordenadas */);
43 JointPos startjointPos = new JointPos(/* Insira suas coordenadas */);
44 ExaxisPos startexaxisPos = new ExaxisPos(/* Insira as coordenadas do ponto de início do seu eixo extensor */);
45
46 //8. Registre as coordenadas do ponto final do seu movimento de junta síncrono
47 DescPose enddescPose = new DescPose(/* Insira suas coordenadas */);
48 JointPos endjointPos = new JointPos(/* Insira suas coordenadas */);
49 ExaxisPos endexaxisPos = new ExaxisPos(/* Insira as coordenadas do ponto final do seu eixo extensor */);
50
51 //9. Escreva o programa de movimento síncrono
52 //Mova para o ponto de início, assumindo que os sistemas de coordenadas da ferramenta e da peça aplicados são ambos 1
53 robot.ExtAxisMove(startexaxisPos, 20);
54 DescPose offdese = new DescPose(0, 0, 0, 0, 0, 0);
55 robot.MoveJ(startjointPos, startdescPose, 1, 1, 100, 100, 100, startexaxisPos, 0, 0, offdese);
56
57 //Iniciar movimento síncrono
58 robot.ExtAxisSyncMoveJ(endjointPos, enddescPose, 1, 1, 100, 100, 100, endexaxisPos, -1, 0, offdese);
59}
13.43. Movimento Síncrono do Eixo Extensor UDP com Movimento Linear do Robô
Novo na versão C#SDK-v1.0.7.
1/**
2* @brief Movimento síncrono do eixo extensor UDP com movimento linear do robô
3* @param [in] joint_pos Posição de junta alvo, unidade deg
4* @param [in] desc_pos Pose cartesiana alvo
5* @param [in] tool Número da coordenada da ferramenta, intervalo [0~14]
6* @param [in] user Número da coordenada da peça, intervalo [0~14]
7* @param [in] vel Percentual de velocidade, intervalo [0~100]
8* @param [in] acc Percentual de aceleração, intervalo [0~100], temporariamente não disponível
9* @param [in] ovl Fator de escala de velocidade, intervalo [0~100]
10* @param [in] blendR [-1.0]-movimento até o fim (bloqueante), [0~1000.0]-raio de suavização (não bloqueante), unidade mm
11* @param [in] epos Posição do eixo extensor, unidade mm
12* @param [in] offset_flag 0-sem deslocamento, 1-deslocamento no sistema de coordenadas base/peça, 2-deslocamento no sistema de coordenadas da ferramenta
13* @param [in] offset_pos Quantidade de deslocamento da pose
14* @return Código de erro
15*/
16int 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.44. Exemplo de Código
1private void btnSyncMoveL_Click(object sender, EventArgs e)
2{
3 Robot robot = new Robot();
4 robot.RPC("192.168.58.2");
5
6//1. Calibre e aplique 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 as seguintes:
7 // int SetToolPoint(int point_num); //Definir ponto de referência da ferramenta - método de seis pontos
8 // int ComputeTool(ref DescPose tcp_pose); //Calcular sistema de coordenadas da ferramenta
9 // int SetTcp4RefPoint(int point_num); //Definir ponto de referência da ferramenta - método de quatro pontos
10 // int ComputeTcp4(ref DescPose tcp_pose); //Calcular sistema de coordenadas da ferramenta - método de quatro pontos
11 // int SetToolCoord(int id, DescPose coord, int type, int install); //Definir e aplicar sistema de coordenadas da ferramenta
12 // int SetToolList(int id, DescPose coord, int type, int install); //Definir e aplicar lista de sistemas de coordenadas da ferramenta
13
14 //2. Defina os parâmetros de comunicação UDP e carregue a comunicação UDP
15 robot.ExtDevSetUDPComParam("192.168.58.88", 2021, 2, 100, 3, 100, 1, 100, 10);
16 robot.ExtDevLoadUDPDriver();
17
18 //3. Defina os parâmetros do eixo extensor, incluindo o tipo de eixo extensor, parâmetros do driver do eixo extensor, parâmetros DH do eixo extensor
19 robot.SetAxisDHParaConfig(4, 200, 200, 0, 0, 0, 0, 0, 0); //Posicionador de eixo único e parâmetros DH
20 robot.SetRobotPosToAxis(1); //Posição de instalação do eixo extensor
21 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 parâmetro de driver precisa ser definido. Se você escolher um tipo de eixo extensor que inclui vários eixos, precisa definir os parâmetros do driver para cada eixo.
22
23 //4. Habilite o eixo selecionado e execute o homing
24 robot.ExtAxisServoOn(1, 0);
25 robot.ExtAxisSetHoming(1, 0, 20, 3);
26
27 //5. Calibre e aplique o sistema de coordenadas do eixo extensor
28 DescPose pos = new DescPose(/* Insira as coordenadas do seu ponto de calibração */);
29 robot.SetRefPointInExAxisEnd(pos);
30 robot.PositionorSetRefPoint(1); /* Você precisa calibrar o eixo extensor usando pontos em quatro posições diferentes, portanto, precisa chamar esta interface 4 vezes para completar a calibração */
31 DescPose coord = new DescPose();
32 robot.PositionorComputeECoordSys(ref coord); //Calcular o resultado da calibração do eixo extensor
33 robot.ExtAxisActiveECoordSys(1, 1, coord, 1); //Aplicar o resultado da calibração ao sistema de coordenadas do eixo extensor
34
35 //6. Calibre o sistema de coordenadas da peça no eixo extensor. Você precisará usar as seguintes interfaces
36 //int SetWObjCoordPoint(int point_num);
37 //int ComputeWObjCoord(int method, ref DescPose wobj_pose);
38 //int SetWObjCoord(int id, DescPose coord);
39 //int SetWObjList(int id, DescPose coord);
40
41 //7. Registre o ponto de início do seu movimento linear síncrono
42 DescPose startdescPose = new DescPose(/* Insira suas coordenadas */);
43 JointPos startjointPos = new JointPos(/* Insira suas coordenadas */);
44 ExaxisPos startexaxisPos = new ExaxisPos(/* Insira as coordenadas do ponto de início do seu eixo extensor */);
45
46 //8. Registre as coordenadas do ponto final do seu movimento linear síncrono
47 DescPose enddescPose = new DescPose(/* Insira suas coordenadas */);
48 JointPos endjointPos = new JointPos(/* Insira suas coordenadas */);
49 ExaxisPos endexaxisPos = new ExaxisPos(/* Insira as coordenadas do ponto final do seu eixo extensor */);
50
51 //9. Escreva o programa de movimento síncrono
52 //Mova para o ponto de início, assumindo que os sistemas de coordenadas da ferramenta e da peça aplicados são ambos 1
53 robot.ExtAxisMove(startexaxisPos, 20);
54 DescPose offdese = new DescPose(0, 0, 0, 0, 0, 0);
55 robot.MoveJ(startjointPos, startdescPose, 1, 1, 100, 100, 100, startexaxisPos, 0, 0, offdese);
56
57 //Iniciar movimento síncrono
58 robot.ExtAxisSyncMoveL(endjointPos, enddescPose, 1, 1, 100, 100, 100, 0, endexaxisPos, 0, offdese);
59}
13.45. Movimento Síncrono do Eixo Extensor UDP com Movimento de Arco do Robô
Novo na versão C#SDK-v1.0.7.
1/**
2* @brief Movimento síncrono do eixo extensor UDP com movimento de arco do robô
3* @param [in] joint_pos_p Posição de junta 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 coordenada da ferramenta, intervalo [0~14]
6* @param [in] puser Número da coordenada da peça, intervalo [0~14]
7* @param [in] pvel Percentual de velocidade, intervalo [0~100]
8* @param [in] pacc Percentual de aceleração, intervalo [0~100], temporariamente não disponível
9* @param [in] epos_p Posição do eixo extensor no ponto intermediário, unidade mm
10* @param [in] poffset_flag 0-sem deslocamento, 1-deslocamento no sistema de coordenadas base/peça, 2-deslocamento no sistema de coordenadas da ferramenta
11* @param [in] offset_pos_p Quantidade de deslocamento da pose
12* @param [in] joint_pos_t Posição de junta do ponto alvo, unidade deg
13* @param [in] desc_pos_t Pose cartesiana do ponto alvo
14* @param [in] ttool Número da coordenada da ferramenta, intervalo [0~14]
15* @param [in] tuser Número da coordenada da peça, intervalo [0~14]
16* @param [in] tvel Percentual de velocidade, intervalo [0~100]
17* @param [in] tacc Percentual de aceleração, intervalo [0~100], temporariamente não disponível
18* @param [in] epos_t Posição do eixo extensor, unidade mm
19* @param [in] toffset_flag 0-sem deslocamento, 1-deslocamento no sistema de coordenadas base/peça, 2-deslocamento no sistema de coordenadas da ferramenta
20* @param [in] offset_pos_t Quantidade de deslocamento da pose
21* @param [in] ovl Fator de escala de velocidade, intervalo [0~100]
22* @param [in] blendR [-1.0]-movimento até o fim (bloqueante), [0~1000.0]-raio de suavização (não bloqueante), unidade mm
23* @return Código de erro
24*/
25int 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.46. Exemplo de Código
1private void btnSyncMoveC_Click(object sender, EventArgs e)
2{
3 Robot robot = new Robot();
4 robot.RPC("192.168.58.2");
5
6//1. Calibre e aplique 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 as seguintes:
7 // int SetToolPoint(int point_num); //Definir ponto de referência da ferramenta - método de seis pontos
8 // int ComputeTool(ref DescPose tcp_pose); //Calcular sistema de coordenadas da ferramenta
9 // int SetTcp4RefPoint(int point_num); //Definir ponto de referência da ferramenta - método de quatro pontos
10 // int ComputeTcp4(ref DescPose tcp_pose); //Calcular sistema de coordenadas da ferramenta - método de quatro pontos
11 // int SetToolCoord(int id, DescPose coord, int type, int install); //Definir e aplicar sistema de coordenadas da ferramenta
12 // int SetToolList(int id, DescPose coord, int type, int install); //Definir e aplicar lista de sistemas de coordenadas da ferramenta
13
14 //2. Defina os parâmetros de comunicação UDP e carregue a comunicação UDP
15 robot.ExtDevSetUDPComParam("192.168.58.88", 2021, 2, 100, 3, 100, 1, 100, 10);
16 robot.ExtDevLoadUDPDriver();
17
18 //3. Defina os parâmetros do eixo extensor, incluindo o tipo de eixo extensor, parâmetros do driver do eixo extensor, parâmetros DH do eixo extensor
19 robot.SetAxisDHParaConfig(4, 200, 200, 0, 0, 0, 0, 0, 0); //Posicionador de eixo único e parâmetros DH
20 robot.SetRobotPosToAxis(1); //Posição de instalação do eixo extensor
21 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 parâmetro de driver precisa ser definido. Se você escolher um tipo de eixo extensor que inclui vários eixos, precisa definir os parâmetros do driver para cada eixo.
22
23 //4. Habilite o eixo selecionado e execute o homing
24 robot.ExtAxisServoOn(1, 0);
25 robot.ExtAxisSetHoming(1, 0, 20, 3);
26
27 //5. Calibre e aplique o sistema de coordenadas do eixo extensor
28 DescPose pos = new DescPose(/* Insira as coordenadas do seu ponto de calibração */);
29 robot.SetRefPointInExAxisEnd(pos);
30 robot.PositionorSetRefPoint(1); /* Você precisa calibrar o eixo extensor usando pontos em quatro posições diferentes, portanto, precisa chamar esta interface 4 vezes para completar a calibração */
31 DescPose coord = new DescPose();
32 robot.PositionorComputeECoordSys(ref coord); //Calcular o resultado da calibração do eixo extensor
33 robot.ExtAxisActiveECoordSys(1, 1, coord, 1); //Aplicar o resultado da calibração ao sistema de coordenadas do eixo extensor
34
35 //6. Calibre o sistema de coordenadas da peça no eixo extensor. Você precisará usar as seguintes interfaces
36 //int SetWObjCoordPoint(int point_num);
37 //int ComputeWObjCoord(int method, ref DescPose wobj_pose);
38 //int SetWObjCoord(int id, DescPose coord);
39 //int SetWObjList(int id, DescPose coord);
40
41 //7. Registre o ponto de início do seu movimento de arco síncrono
42 DescPose startdescPose = new DescPose(/* Insira suas coordenadas */);
43 JointPos startjointPos = new JointPos(/* Insira suas coordenadas */);
44 ExaxisPos startexaxisPos = new ExaxisPos(/* Insira as coordenadas do ponto de início do seu eixo extensor */);
45
46 //8. Registre as coordenadas do ponto final do seu movimento de arco síncrono
47 DescPose enddescPose = new DescPose(/* Insira suas coordenadas */);
48 JointPos endjointPos = new JointPos(/* Insira suas coordenadas */);
49 ExaxisPos endexaxisPos = new ExaxisPos(/* Insira as coordenadas do ponto final do seu eixo extensor */);
50
51 //8. Registre as coordenadas do ponto intermediário do seu movimento de arco síncrono
52 DescPose middescPose = new DescPose(/* Insira suas coordenadas */);
53 JointPos midjointPos = new JointPos(/* Insira suas coordenadas */);
54 ExaxisPos midexaxisPos = new ExaxisPos(/* Insira a coordenada do eixo extensor quando o robô estiver no ponto intermediário do arco */);
55
56 //9. Escreva o programa de movimento síncrono
57 //Mova para o ponto de início, assumindo que os sistemas de coordenadas da ferramenta e da peça aplicados são ambos 1
58 robot.ExtAxisMove(startexaxisPos, 20);
59 DescPose offdese = new DescPose(0, 0, 0, 0, 0, 0);
60 robot.MoveJ(startjointPos, startdescPose, 1, 1, 100, 100, 100, startexaxisPos, 0, 0, offdese);
61
62 //Iniciar movimento síncrono
63 robot.ExtAxisSyncMoveC(midjointPos, middescPose, 1, 1, 100, 100, midexaxisPos, 0, offdese, endjointPos, enddescPose, 1, 1, 100, 100, endexaxisPos, 0, offdese, 100, 0);
64}
13.47. Definir DO de Extensão
Novo na versão C#SDK-v1.0.7.
1/**
2* @brief Definir DO de extensão
3* @param [in] DONum Número do DO
4* @param [in] bOpen Estado true-ligar; false-desligar
5* @param [in] smooth Suavizar ou não
6* @param [in] block Bloquear ou não
7* @return Código de erro
8*/
9int SetAuxDO(int DONum, bool bOpen, bool smooth, bool block);
13.48. Definir AO de Extensão
Novo na versão C#SDK-v1.0.7.
1/**
2* @brief Definir 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 Bloquear ou não
6* @return Código de erro
7*/
8int SetAuxAO(int AONum, double value, bool block);
13.49. Definir Tempo de Filtragem de Entrada DI de Extensão
Novo na versão C#SDK-v1.0.7.
1/**
2* @brief Definir tempo de filtragem de entrada DI de extensão
3* @param [in] filterTime Tempo de filtragem (ms)
4* @return Código de erro
5*/
6int SetAuxDIFilterTime(int filterTime);
13.50. Definir Tempo de Filtragem de Entrada AI de Extensão
Novo na versão C#SDK-v1.0.7.
1/**
2* @brief Definir tempo de filtragem de entrada AI de extensão
3* @param [in] filterTime Tempo de filtragem (ms)
4* @return Código de erro
5*/
6int SetAuxAIFilterTime(int filterTime);
13.51. Aguardar Entrada DI de Extensão
Novo na versão C#SDK-v1.0.7.
1/**
2* @brief Aguardar entrada DI de extensão
3* @param [in] DINum Número do DI
4* @param [in] bOpen Estado 0-desligado; 1-ligado
5* @param [in] time Tempo máximo de espera (ms)
6* @param [in] errorAlarm Continuar movimento ou não
7* @return Código de erro
8*/
9int WaitAuxDI(int DINum, bool bOpen, int time, bool errorAlarm);
13.52. Aguardar Entrada AI de Extensão
Novo na versão C#SDK-v1.0.7.
1/**
2* @brief Aguardar entrada 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 Continuar movimento ou não
8* @return Código de erro
9*/
10int WaitAuxAI(int AINum, int sign, int value, int time, bool errorAlarm);
13.53. Obter Valor DI de Extensão
Novo na versão C#SDK-v1.0.7.
1/**
2* @brief Obter valor DI de extensão
3* @param [in] DINum Número do DI
4* @param [in] isNoBlock Bloquear ou não
5* @param [out] isOpen 0-desligado; 1-ligado
6* @return Código de erro
7*/
8int GetAuxDI(int DINum, bool isNoBlock, bool& isOpen);
13.54. Obter Valor AI de Extensão
Novo na versão C#SDK-v1.0.7.
1/**
2* @brief Obter valor AI de extensão
3* @param [in] AINum Número do AI
4* @param [in] isNoBlock Bloquear ou não
5* @param [in] value Valor de entrada
6* @return Código de erro
7*/
8int GetAuxAI(int AINum, bool isNoBlock, int& value);
13.55. Exemplo de Código de E/S de Extensão
1private void btnAODO_Click(object sender, EventArgs e)
2{
3 int rtn;
4 for (int i = 0; i < 128; i++)
5 {
6 robot.SetAuxDO(i, true, false, true);
7 Thread.Sleep(100);
8 }
9 for (int i = 0; i < 128; i++)
10 {
11 robot.SetAuxDO(i, false, false, true);
12 Thread.Sleep(100);
13 }
14
15 for (int i = 0; i < 409; i++)
16 {
17 robot.SetAuxAO(0, i * 10, true);
18 robot.SetAuxAO(1, 4095 - i * 10, true);
19 robot.SetAuxAO(2, i * 10, true);
20 robot.SetAuxAO(3, 4095 - i * 10, true);
21 Thread.Sleep(10);
22 }
23
24 robot.SetAuxDIFilterTime(10);
25 robot.SetAuxAIFilterTime(0, 10);
26
27 for (int i = 0; i < 20; i++)
28 {
29 bool curValue = false;
30 rtn = robot.GetAuxDI(i, false, ref curValue);
31 Console.WriteLine("DI" + i + " " + curValue);
32 }
33 int curValueAI = -1;
34 for (int i = 0; i < 4; i++)
35 {
36 rtn = robot.GetAuxAI(i, true, ref curValueAI);
37 }
38
39 robot.WaitAuxDI(1, false, 1000, false);
40 robot.WaitAuxAI(1, 1, 132, 1000, false);
41}
13.56. Habilitar Dispositivo Móvel
Novo na versão C#SDK-v1.0.9.
1/**
2* @brief Habilitar dispositivo móvel
3* @param enable false-desabilitar; true-habilitar
4* @return Código de erro
5*/
6int TractorEnable(bool enable);
13.57. Parar Movimento do Dispositivo Móvel
Novo na versão C#SDK-v1.0.9.
1/**
2* @brief Parar movimento do dispositivo móvel
3* @return Código de erro
4*/
5int TractorStop();
13.58. Homing do Dispositivo Móvel
Novo na versão C#SDK-v1.0.9.
1/**
2* @brief Homing do dispositivo móvel
3* @return Código de erro
4*/
5int TractorHoming();
13.59. Movimento Linear do Dispositivo Móvel
Novo na versão C#SDK-v1.0.9.
1/**
2* @brief Movimento linear do dispositivo móvel
3* @param distance Distância do movimento linear (mm)
4* @param vel Percentual de velocidade do movimento linear (0-100)
5* @return Código de erro
6*/
7int TractorMoveL(double distance, double vel);
13.60. Movimento de Arco do Dispositivo Móvel
Novo na versão C#SDK-v1.0.9.
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 Percentual de velocidade do movimento linear (0-100)
6* @return Código de erro
7*/
8int TractorMoveC(double radio, double angle, double vel);
13.61. Exemplo de Código
1private void button6_Click(object sender, EventArgs e)
2{
3 int rtn;
4 robot.ExtDevSetUDPComParam("192.168.58.2", 2021, 2, 50, 5, 50, 1, 50, 10,1);
5 robot.ExtDevLoadUDPDriver();
6 rtn = robot.ExtAxisServoOn(1, 1);
7 rtn = robot.ExtAxisServoOn(2, 1);
8 Thread.Sleep(2000);
9 robot.ExtAxisSetHoming(1, 0, 10, 2);
10 Thread.Sleep(2000);
11 rtn = robot.ExtAxisSetHoming(2, 0, 10, 2);
12 Thread.Sleep(4000);
13 robot.ExtAxisParamConfig(1, 0, 0, 50000, -50000, 1000, 1000, 6.280f, 16384, 200, 0, 0, 0);
14 robot.ExtAxisParamConfig(2, 0, 0, 50000, -50000, 1000, 1000, 6.280f, 16384, 200, 0, 0, 0);
15 robot.SetAxisDHParaConfig(5, 0, 0, 0, 0, 0, 0, 0, 0);
16 robot.TractorEnable(false);
17 Thread.Sleep(2000);
18 robot.TractorEnable(true);
19 Thread.Sleep(2000);
20 robot.TractorHoming();
21 Thread.Sleep(2000);
22 robot.TractorMoveL(100, 2);
23 Thread.Sleep(5000);
24 robot.TractorStop();
25 robot.TractorMoveL(-100, 20);
26 Thread.Sleep(5000);
27 robot.TractorMoveC(300, 90, 20);
28 Thread.Sleep(10000);
29 robot.TractorMoveC(300, -90, 20);
30 Thread.Sleep(1000);
31 robot.TractorStop();
32}
13.62. Definir Estratégia de Movimento Síncrono entre Eixo Extensor e Robô
Novo na versão C#SDK-V1.1.7: Web-3.8.5
1/**
2* @brief Definir estratégia de movimento síncrono entre eixo extensor e robô
3* @param strategy Estratégia; 0-com o robô como principal; 1-eixo extensor e robô síncronos
4* @return Código de erro
5*/
6int SetExAxisRobotPlan(int strategy)
13.63. Exemplo de Código de Definição de Estratégia de Movimento Síncrono entre Eixo Extensor e Robô
Novo na versão C#SDK-V1.1.7: Web-3.8.5
1private void button94_Click(object sender, EventArgs e)
2{
3 JointPos joint_pos1 = new JointPos(-22.016, -49.217, 124.714, -161.100, -85.108, -0.333);
4 JointPos joint_pos2 = new JointPos(-21.083, -46.613, 110.079, -147.796, -80.757, -0.330);
5 JointPos joint_pos3 = new JointPos(-25.572, -60.090, 135.397, -163.889, -82.489, -0.345);
6 DescPose desc_pos1 = new DescPose(2.637, -0.001, 30.673, 178.786, -4.134, 68.326);
7 DescPose desc_pos2 = new DescPose(213.812, -1.440, 47.311, 177.410, 0.166, 68.946);
8 DescPose desc_pos3 = new DescPose(444.342, -12.723, 82.470, -177.701, -1.325, 65.151);
9 ExaxisPos epos1 = new ExaxisPos(0.001, 0.000, 0.000, 0.000);
10 ExaxisPos epos2 = new ExaxisPos(299.977, 0.000, 0.000, 0.000);
11 ExaxisPos epos3 = new ExaxisPos(399.969, 0.000, 0.000, 0.000);
12 DescPose offset_pos = new DescPose(0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
13 int rtn = robot.SetExAxisRobotPlan(0);
14 Console.WriteLine($"SetExAxisRobotPlan rtn is {rtn}");
15 Thread.Sleep(1000);
16 rtn = robot.ExtAxisSyncMoveL(joint_pos1, desc_pos1, 1, 0, 100, 100, 100, -1, epos1, 0, offset_pos);
17 Console.WriteLine($"ExtAxisSyncMoveL 1 rtn is {rtn}");
18
19 rtn = robot.ExtAxisSyncMoveL(joint_pos2, desc_pos2, 1, 0, 100, 100, 100, -1, epos2, 0, offset_pos);
20 Console.WriteLine($"ExtAxisSyncMoveL 2 rtn is {rtn}");
21 rtn = robot.ExtAxisSyncMoveL(joint_pos3, desc_pos3, 1, 0, 100, 100, 100, -1, epos3, 0, offset_pos);
22 Console.WriteLine($"ExtAxisSyncMoveL 3 rtn is {rtn}");
23 Thread.Sleep(8000);
24}
13.64. Definir Tempo de Conclusão de Posicionamento do Eixo Extensor UDP
1/**
2* @brief Definir tempo de conclusão de posicionamento do eixo extensor UDP
3* @param [in] time Tempo de conclusão de posicionamento [ms]
4* @return Código de erro
5*/
6public int SetExAxisCmdDoneTime(double time)