5. E/S do Robô
5.1. Definir Saída Digital da Caixa de Controle
1/**
2* @brief Define a saída digital da caixa de controle
3* @param [in] id Número da E/S, intervalo [0~15]
4* @param [in] status 0-desligado, 1-ligado
5* @param [in] smooth 0-não suave, 1-suave
6* @param [in] block 0-bloqueante, 1-não bloqueante
7* @return Código de erro
8*/
9errno_t SetDO(int id, uint8_t status, uint8_t smooth, uint8_t block);
5.2. Definir Saída Digital da Ferramenta
1/**
2* @brief Define a saída digital da ferramenta
3* @param [in] id Número da E/S, intervalo [0~1]
4* @param [in] status 0-desligado, 1-ligado
5* @param [in] smooth 0-não suave, 1-suave
6* @param [in] block 0-bloqueante, 1-não bloqueante
7* @return Código de erro
8*/
9errno_t SetToolDO(int id, uint8_t status, uint8_t smooth, uint8_t block);
5.3. Definir Saída Analógica da Caixa de Controle
1/**
2* @brief Define a saída analógica da caixa de controle
3* @param [in] id Número da E/S, intervalo [0~1]
4* @param [in] value Percentagem do valor de corrente ou tensão, intervalo [0~100] correspondendo à corrente [0~20mA] ou tensão [0~10V]
5* @param [in] block 0-bloqueante, 1-não bloqueante
6* @return Código de erro
7*/
8errno_t SetAO(int id, float value, uint8_t block);
5.4. Definir Saída Analógica da Ferramenta
1/**
2* @brief Define a saída analógica da ferramenta
3* @param [in] id Número da E/S, intervalo [0]
4* @param [in] value Percentagem do valor de corrente ou tensão, intervalo [0~100] correspondendo à corrente [0~20mA] ou tensão [0~10V]
5* @param [in] block 0-bloqueante, 1-não bloqueante
6* @return Código de erro
7*/
8errno_t SetToolAO(int id, float value, uint8_t block);
5.5. Exemplo de Código para Configurar Saídas Digitais e Analógicas
1 int TestAODO(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 uint8_t status = 1;
14 uint8_t smooth = 0;
15 uint8_t block = 0;
16 for (int i = 0; i < 16; i++)
17 {
18 robot.SetDO(i, status, smooth, block);
19 robot.Sleep(300);
20 }
21 status = 0;
22 for (int i = 0; i < 16; i++)
23 {
24 robot.SetDO(i, status, smooth, block);
25 robot.Sleep(300);
26 }
27 status = 1;
28 for (int i = 0; i < 2; i++)
29 {
30 robot.SetToolDO(i, status, smooth, block);
31 robot.Sleep(1000);
32 }
33 status = 0;
34 for (int i = 0; i < 2; i++)
35 {
36 robot.SetToolDO(i, status, smooth, block);
37 robot.Sleep(1000);
38 }
39 for (int i = 0; i < 100; i++)
40 {
41 robot.SetAO(0, i * 40.96, block);
42 robot.Sleep(30);
43 }
44 for (int i = 0; i < 100; i++)
45 {
46 robot.SetToolAO(0, i * 40.96, block);
47 robot.Sleep(30);
48 }
49 robot.CloseRPC();
50 return 0;
51 }
5.6. Obter Entrada Digital da Caixa de Controle
1/**
2* @brief Obtém a entrada digital da caixa de controle
3* @param [in] id Número da E/S, intervalo [0~15]
4* @param [in] block 0-bloqueante, 1-não bloqueante
5* @param [out] result 0-nível baixo, 1-nível alto
6* @return Código de erro
7*/
8errno_t GetDI(int id, uint8_t block, uint8_t *result);
5.7. Obter Entrada Digital da Ferramenta
1/**
2* @brief Obtém a entrada digital da ferramenta
3* @param [in] id Número da E/S, intervalo [0~1]
4* @param [in] block 0-bloqueante, 1-não bloqueante
5* @param [out] result 0-nível baixo, 1-nível alto
6* @return Código de erro
7*/
8errno_t GetToolDI(int id, uint8_t block, uint8_t *result);
5.8. Obter Entrada Analógica da Caixa de Controle
1/**
2* @brief Obtém a entrada analógica da caixa de controle
3* @param [in] id Número da E/S, intervalo [0~1]
4* @param [in] block 0-bloqueante, 1-não bloqueante
5* @param [out] result Percentagem do valor de corrente ou tensão de entrada, intervalo [0~100] correspondendo à corrente [0~20mA] ou tensão [0~10V]
6* @return Código de erro
7*/
8errno_t GetAI(int id, uint8_t block, float *result);
5.9. Obter Entrada Analógica da Ferramenta
1/**
2* @brief Obtém a entrada analógica da ferramenta
3* @param [in] id Número da E/S, intervalo [0]
4* @param [in] block 0-bloqueante, 1-não bloqueante
5* @param [out] result Percentagem do valor de corrente ou tensão de entrada, intervalo [0~100] correspondendo à corrente [0~20mA] ou tensão [0~10V]
6* @return Código de erro
7*/
8errno_t GetToolAI(int id, uint8_t block, float *result);
5.10. Obter Estado do Botão de Gravação de Ponto da Extremidade do Robô
1/**
2 * @brief Obtém o estado do botão de gravação de ponto da extremidade do robô
3 * @param [out] state Estado do botão, 0-pressionado, 1-solto
4 * @return Código de erro
5 */
6errno_t GetAxlePointRecordBtnState(uint8_t *state);
5.11. Obter Estado de Saída DO da Extremidade do Robô
1/**
2 * @brief Obtém o estado de saída DO da extremidade do robô
3 * @param [out] do_state Estado de saída DO, do0~do1 correspondem aos bits 1~2, começando no bit 0
4 * @return Código de erro
5 */
6errno_t GetToolDO(uint8_t *do_state);
5.12. Obter Estado de Saída DO do Controlador do Robô
1/**
2 * @brief Obtém o estado de saída DO do controlador do robô
3 * @param [out] do_state_h Estado de saída DO, co0~co7 correspondem aos bits 0~7
4 * @param [out] do_state_l Estado de saída DO, do0~do7 correspondem aos bits 0~7
5 * @return Código de erro
6 */
7errno_t GetDO(uint8_t *do_state_h, uint8_t *do_state_l);
5.13. Exemplo de Código para Obter Estado DI e DO do Robô
1 int TestGetDIAI(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 uint8_t status = 1;
14 uint8_t smooth = 0;
15 uint8_t block = 0;
16 uint8_t di = 0, tool_di = 0;
17 float ai = 0.0, tool_ai = 0.0;
18 float value = 0.0;
19 robot.GetDI(0, block, &di);
20 printf("di0:%u\n", di);
21 tool_di = robot.GetToolDI(1, block, &tool_di);
22 printf("tool_di1:%u\n", tool_di);
23 robot.GetAI(0, block, &ai);
24 printf("ai0:%f\n", ai);
25 tool_ai = robot.GetToolAI(0, block, &tool_ai);
26 printf("tool_ai0:%f\n", tool_ai);
27 uint8_t _button_state = 0;
28 robot.GetAxlePointRecordBtnState(&_button_state);
29 printf("_button_state is: %u\n", _button_state);
30 uint8_t tool_do_state = 0;
31 robot.GetToolDO(&tool_do_state);
32 printf("tool DO state is: %u\n", tool_do_state);
33 uint8_t do_state_h = 0;
34 uint8_t do_state_l = 0;
35 robot.GetDO(&do_state_h, &do_state_l);
36 printf("DO state high is: %u \n DO state low is: %u\n", do_state_h, do_state_l);
37 robot.CloseRPC();
38 return 0;
39 }
5.14. Aguardar Entrada Digital da Caixa de Controle
1/**
2* @brief Aguarda a entrada digital da caixa de controle
3* @param [in] id Número da E/S, intervalo [0~15]
4* @param [in] status 0-desligado, 1-ligado
5* @param [in] max_time Tempo máximo de espera, em ms
6* @param [in] opt Estratégia após timeout, 0-parar o programa e indicar timeout, 1-ignorar indicação de timeout e continuar a execução do programa, 2-esperar indefinidamente
7* @return Código de erro
8*/
9errno_t WaitDI(int id, uint8_t status, int max_time, int opt);
5.15. Aguardar Entrada Digital Múltipla da Caixa de Controle
1/**
2* @brief Aguarda a entrada digital múltipla da caixa de controle
3* @param [in] mode 0-E lógico múltiplo, 1-OU lógico múltiplo
4* @param [in] id Número da E/S, bits 0~7 correspondem a DI0~DI7, bits 8~15 correspondem a CI0~CI7
5* @param [in] status 0-desligado, 1-ligado
6* @param [in] max_time Tempo máximo de espera, em ms
7* @param [in] opt Estratégia após timeout, 0-parar o programa e indicar timeout, 1-ignorar indicação de timeout e continuar a execução do programa, 2-esperar indefinidamente
8* @return Código de erro
9*/
10errno_t WaitMultiDI(int mode, int id, uint8_t status, int max_time, int opt);
5.16. Aguardar Entrada Digital da Ferramenta
1/**
2* @brief Aguarda a entrada digital da ferramenta
3* @param [in] id Número da E/S, intervalo [0~1]
4* @param [in] status 0-desligado, 1-ligado
5* @param [in] max_time Tempo máximo de espera, em ms
6* @param [in] opt Estratégia após timeout, 0-parar o programa e indicar timeout, 1-ignorar indicação de timeout e continuar a execução do programa, 2-esperar indefinidamente
7* @return Código de erro
8*/
9errno_t WaitToolDI(int id, uint8_t status, int max_time, int opt);
5.17. Aguardar Entrada Analógica da Caixa de Controle
1/**
2* @brief Aguarda a entrada analógica da caixa de controle
3* @param [in] id Número da E/S, intervalo [0~1]
4* @param [in] sign 0-maior que, 1-menor que
5* @param [in] value Percentagem do valor de corrente ou tensão de entrada, intervalo [0~100] correspondendo à corrente [0~20mA] ou tensão [0~10V]
6* @param [in] max_time Tempo máximo de espera, em ms
7* @param [in] opt Estratégia após timeout, 0-parar o programa e indicar timeout, 1-ignorar indicação de timeout e continuar a execução do programa, 2-esperar indefinidamente
8* @return Código de erro
9*/
10errno_t WaitAI(int id, int sign, float value, int max_time, int opt);
5.18. Aguardar Entrada Analógica da Ferramenta
1/**
2* @brief Aguarda a entrada analógica da ferramenta
3* @param [in] id Número da E/S, intervalo [0]
4* @param [in] sign 0-maior que, 1-menor que
5* @param [in] value Percentagem do valor de corrente ou tensão de entrada, intervalo [0~100] correspondendo à corrente [0~20mA] ou tensão [0~10V]
6* @param [in] max_time Tempo máximo de espera, em ms
7* @param [in] opt Estratégia após timeout, 0-parar o programa e indicar timeout, 1-ignorar indicação de timeout e continuar a execução do programa, 2-esperar indefinidamente
8* @return Código de erro
9*/
10errno_t WaitToolAI(int id, int sign, float value, int max_time, int opt);
5.19. Exemplo de Código para Aguardar Sinais de Entrada Digital e Analógica da Caixa de Controle
Alterado na versão C++SDK-v2.1.2.0.
1 int TestWaitDIAI(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 uint8_t status = 1;
14 uint8_t smooth = 0;
15 uint8_t block = 0;
16 uint8_t di = 0, tool_di = 0;
17 float ai = 0.0, tool_ai = 0.0;
18 float value = 0.0;
19 rtn = robot.WaitDI(0, 1, 1000, 1);
20 cout << "WaitDI over; rtn is: " << rtn << endl;
21 robot.WaitMultiDI(1, 3, 3, 1000, 1);
22 cout << "WaitDI over; rtn is: " << rtn << endl;
23 robot.WaitToolDI(1, 1, 1000, 1);
24 cout << "WaitDI over; rtn is: " << rtn << endl;
25 robot.WaitAI(0, 0, 50, 1000, 1);
26 cout << "WaitDI over; rtn is: " << rtn << endl;
27 robot.WaitToolAI(0, 0, 50, 1000, 1);
28 cout << "WaitDI over; rtn is: " << rtn << endl;
29 robot.CloseRPC();
30 return 0;
31 }
5.20. Definir se a Saída DO da Caixa de Controle é Reiniciada Após Parada/Pausa
Novo na versão C++SDK-v2.1.5.0.
1/**
2* @brief Define se a saída DO da caixa de controle é reiniciada após parada/pausa
3* @param [in] resetFlag 0-não reiniciar; 1-reiniciar
4* @param [in] reloadFlag Se recarregar após retomar da pausa, 0-não carregar; 1-carregar
5* @return Código de erro
6*/
7errno_t SetOutputResetCtlBoxDO(int resetFlag, int reloadFlag = 0);
5.21. Definir se a Saída AO da Caixa de Controle é Reiniciada Após Parada/Pausa
Novo na versão C++SDK-v2.1.5.0.
1/**
2* @brief Define se a saída AO da caixa de controle é reiniciada após parada/pausa
3* @param [in] resetFlag 0-não reiniciar; 1-reiniciar
4* @param [in] reloadFlag Se recarregar após retomar da pausa, 0-não carregar; 1-carregar
5* @return Código de erro
6*/
7errno_t SetOutputResetCtlBoxAO(int resetFlag, int reloadFlag = 0);
5.22. Definir se a Saída DO da Ferramenta de Extremidade é Reiniciada Após Parada/Pausa
Novo na versão C++SDK-v2.1.5.0.
1/**
2* @brief Define se a saída DO da ferramenta de extremidade é reiniciada após parada/pausa
3* @param [in] resetFlag 0-não reiniciar; 1-reiniciar
4* @param [in] reloadFlag Se recarregar após retomar da pausa, 0-não carregar; 1-carregar
5* @return Código de erro
6*/
7errno_t SetOutputResetAxleDO(int resetFlag, int reloadFlag = 0);
5.23. Definir se a Saída AO da Ferramenta de Extremidade é Reiniciada Após Parada/Pausa
Novo na versão C++SDK-v2.1.5.0.
1/**
2* @brief Define se a saída AO da ferramenta de extremidade é reiniciada após parada/pausa
3* @param [in] resetFlag 0-não reiniciar; 1-reiniciar
4* @param [in] reloadFlag Se recarregar após retomar da pausa, 0-não carregar; 1-carregar
5* @return Código de erro
6*/
7errno_t SetOutputResetAxleAO(int resetFlag, int reloadFlag = 0);
5.24. Definir se a Saída DO Estendida é Reiniciada Após Parada/Pausa
Novo na versão C++SDK-v2.1.5.0.
1/**
2* @brief Define se a saída DO estendida é reiniciada após parada/pausa
3* @param [in] resetFlag 0-não reiniciar; 1-reiniciar
4* @param [in] reloadFlag Se recarregar após retomar da pausa, 0-não carregar; 1-carregar
5* @return Código de erro
6*/
7errno_t SetOutputResetExtDO(int resetFlag, int reloadFlag = 0);
5.25. Definir se a Saída AO Estendida é Reiniciada Após Parada/Pausa
Novo na versão C++SDK-v2.1.5.0.
1/**
2* @brief Define se a saída AO estendida é reiniciada após parada/pausa
3* @param [in] resetFlag 0-não reiniciar; 1-reiniciar
4* @param [in] reloadFlag Se recarregar após retomar da pausa, 0-não carregar; 1-carregar
5* @return Código de erro
6*/
7errno_t SetOutputResetExtAO(int resetFlag, int reloadFlag = 0);
5.26. Definir se a Saída DO do SmartTool é Reiniciada Após Parada/Pausa
Novo na versão C++SDK-v2.1.5.0.
1/**
2* @brief Define se a saída DO do SmartTool é reiniciada após parada/pausa
3* @param [in] resetFlag 0-não reiniciar; 1-reiniciar
4* @param [in] reloadFlag Se recarregar após retomar da pausa, 0-não carregar; 1-carregar
5* @return Código de erro
6*/
7errno_t SetOutputResetSmartToolDO(int resetFlag, int reloadFlag = 0);
5.27. Exemplo de Código para Reinicialização de Saída Após Parada/Pausa do Programa LUA
Novo na versão C++SDK-v2.1.5.0.
1int TestDOReset(void)
2{
3ROBOT_STATE_PKG pkg = {};
4FRRobot robot;
5robot.LoggerInit();
6robot.SetLoggerLevel(3);
7int rtn = robot.RPC("192.168.58.2");
8if (rtn != 0)
9{
10 return -1;
11}
12robot.SetReConnectParam(true, 30000, 500);
13for (int i = 0; i < 16; i++)
14{
15 robot.SetDO(i, 1, 0, 0);
16 robot.Sleep(200);
17}
18int resetFlag = 0;
19int resumeReloadFlag = 0;
20rtn = robot.SetOutputResetCtlBoxDO(resetFlag, resumeReloadFlag);
21robot.SetOutputResetCtlBoxAO(resetFlag, resumeReloadFlag);
22robot.SetOutputResetAxleDO(resetFlag, resumeReloadFlag);
23robot.SetOutputResetAxleAO(resetFlag, resumeReloadFlag);
24robot.SetOutputResetExtDO(resetFlag, resumeReloadFlag);
25robot.SetOutputResetExtAO(resetFlag, resumeReloadFlag);
26robot.SetOutputResetSmartToolDO(resetFlag, resumeReloadFlag);
27robot.ProgramLoad("/fruser/test.lua");
28robot.ProgramRun();
29robot.Sleep(2000);
30robot.PauseMotion();
31robot.Sleep(2000);
32robot.ResumeMotion();
33robot.Sleep(2000);
34robot.CloseRPC();
35return 0;
36}
5.28. Definir Função da Porta CI Configurável da Caixa de Controle
1/**
2* @brief Define a função da porta CI configurável da caixa de controle
3* @param [in] config Código da função CI0-CI7;
4* 0-nenhum;1-sucesso de abertura de arco;2-preparação da soldadora;3-detecção de esteira;4-pausa;5-retomar;6-iniciar;7-parar;
58-pausa/retomar;9-iniciar/parar;10-arrasto com pedal;11-mover para origem do trabalho;12-comutação manual/automático;
613-sucesso na busca de posição do fio de solda;14-interrupção de movimento;15-iniciar programa principal;16-iniciar retrocesso;17-confirmação de início;
718-sinal de detecção fotoelétrica X;19-sinal de detecção fotoelétrica Y;20-sinal de parada de emergência externa 1;21-sinal de parada de emergência externa 2;
822-modo de redução de nível 1;23-modo de redução de nível 2;24-modo de redução de nível 3 (parada);25-retomar soldagem;26-terminar soldagem;
927-ativar arrasto auxiliar;28-desativar arrasto auxiliar;29-ativar/desativar arrasto auxiliar;30-limpar todos os erros;
1031-comutação manual/automático (nível alto/baixo);32-ativar;33-desativar;34-ativar/desativar (borda de subida/descida);35-iniciar/terminar rastreamento de ponto fixo
11* @return Código de erro
12*/
13errno_t SetDIConfig(int config[8]);
5.29. Obter Função da Porta CI Configurável da Caixa de Controle
1/**
2* @brief Obtém a função da porta CI configurável da caixa de controle
3* @param [in] config Código da função CI0-CI7;
4* 0-nenhum;1-sucesso de abertura de arco;2-preparação da soldadora;3-detecção de esteira;4-pausa;5-retomar;6-iniciar;7-parar;
58-pausa/retomar;9-iniciar/parar;10-arrasto com pedal;11-mover para origem do trabalho;12-comutação manual/automático;
613-sucesso na busca de posição do fio de solda;14-interrupção de movimento;15-iniciar programa principal;16-iniciar retrocesso;17-confirmação de início;
718-sinal de detecção fotoelétrica X;19-sinal de detecção fotoelétrica Y;20-sinal de parada de emergência externa 1;21-sinal de parada de emergência externa 2;
822-modo de redução de nível 1;23-modo de redução de nível 2;24-modo de redução de nível 3 (parada);25-retomar soldagem;26-terminar soldagem;
927-ativar arrasto auxiliar;28-desativar arrasto auxiliar;29-ativar/desativar arrasto auxiliar;30-limpar todos os erros;
1031-comutação manual/automático (nível alto/baixo);32-ativar;33-desativar;34-ativar/desativar (borda de subida/descida);35-iniciar/terminar rastreamento de ponto fixo
11* @return Código de erro
12*/
13errno_t GetDIConfig(int config[8]);
5.30. Definir Função da Porta CO Configurável da Caixa de Controle
1/**
2* @brief Define a função da porta CO configurável da caixa de controle
3* @param [out] config Código da função CO0-CO7;
4* 0-nenhum;1-erro do robô;2-robô em movimento;3-iniciar/parar pulverização;4-limpeza do bico de pulverização;5-sinal de gás;6-sinal de abertura de arco;7-avanço do fio por ponto;
58-retrocesso do fio;9-porta de entrada JOB1;10-porta de entrada JOB2;11-porta de entrada JOB3;12-controle de iniciar/parar esteira;13-robô em pausa;14-origem do trabalho alcançada;
615-área de interferência alcançada;16-controle de iniciar/parar busca de posição do fio;17-robô iniciado com sucesso;18-iniciar/parar programa;19-modo automático/manual;20-sinal de saída de parada de emergência 1-seguro;
721-sinal de saída de parada de emergência 2-seguro;22-parada/início de execução do script LUA;23-saída de estado seguro-seguro;24-saída de estado de parada protetiva-seguro;
825-robô em movimento-seguro;26-robô em modo reduzido-seguro;27-robô em modo não reduzido-seguro;28-robô não parado;29-erro do robô-erro de ponto de comando;
930-erro do robô-erro do driver;31-erro do robô-erro de limite flexível excedido;32-erro do robô-erro de colisão;33-erro do robô-erro de número de escravas ativas;
1034-erro do robô-erro de escrava;35-erro do robô-erro de E/S;36-erro do robô-erro da garra;37-erro do robô-erro de arquivo;38-erro do robô-erro de pose singular;
1139-erro do robô-erro de comunicação do driver;40-erro do robô-erro de parâmetro;41-erro do robô-erro de limite flexível do eixo externo excedido;42-aviso do robô-aviso;
1243-aviso do robô-aviso de porta de segurança;44-aviso do robô-aviso de movimento;45-aviso do robô-aviso de área de interferência;46-aviso do robô-aviso de parede de segurança;
1347-estado ativado;48-elevação automática durante desconexão;49-aviso de interferência do cubo 1;50-aviso de interferência do cubo 2;51-aviso de interferência do cubo 3;52-aviso de interferência do cubo 4;
14* @return Código de erro
15*/
16errno_t SetDOConfig(int config[8]);
5.31. Obter Função da Porta CO Configurável da Caixa de Controle
1/**
2* @brief Obtém a função da porta CO configurável da caixa de controle
3* @param [out] config Código da função CO0-CO7;
4* 0-nenhum;1-erro do robô;2-robô em movimento;3-iniciar/parar pulverização;4-limpeza do bico de pulverização;5-sinal de gás;6-sinal de abertura de arco;7-avanço do fio por ponto;
58-retrocesso do fio;9-porta de entrada JOB1;10-porta de entrada JOB2;11-porta de entrada JOB3;12-controle de iniciar/parar esteira;13-robô em pausa;14-origem do trabalho alcançada;
615-área de interferência alcançada;16-controle de iniciar/parar busca de posição do fio;17-robô iniciado com sucesso;18-iniciar/parar programa;19-modo automático/manual;20-sinal de saída de parada de emergência 1-seguro;
721-sinal de saída de parada de emergência 2-seguro;22-parada/início de execução do script LUA;23-saída de estado seguro-seguro;24-saída de estado de parada protetiva-seguro;
825-robô em movimento-seguro;26-robô em modo reduzido-seguro;27-robô em modo não reduzido-seguro;28-robô não parado;29-erro do robô-erro de ponto de comando;
930-erro do robô-erro do driver;31-erro do robô-erro de limite flexível excedido;32-erro do robô-erro de colisão;33-erro do robô-erro de número de escravas ativas;
1034-erro do robô-erro de escrava;35-erro do robô-erro de E/S;36-erro do robô-erro da garra;37-erro do robô-erro de arquivo;38-erro do robô-erro de pose singular;
1139-erro do robô-erro de comunicação do driver;40-erro do robô-erro de parâmetro;41-erro do robô-erro de limite flexível do eixo externo excedido;42-aviso do robô-aviso;
1243-aviso do robô-aviso de porta de segurança;44-aviso do robô-aviso de movimento;45-aviso do robô-aviso de área de interferência;46-aviso do robô-aviso de parede de segurança;
1347-estado ativado;48-elevação automática durante desconexão;49-aviso de interferência do cubo 1;50-aviso de interferência do cubo 2;51-aviso de interferência do cubo 3;52-aviso de interferência do cubo 4;
14* @return Código de erro
15*/
16errno_t GetDOConfig(int config[8]);
5.32. Definir Função da Porta End-CI Configurável da Extremidade
1/**
2* @brief Define a função da porta End-CI configurável da extremidade
3* @param [in] config Código da função End CI0-CI1;
4* 0-nenhum;1-chave da ferramenta de arrasto para ensino;2-sinal de gravação de ponto;3-comutação manual/automático (sinal de pulso);4-iniciar/parar gravação TPD;5-pausar movimento;
56-retomar movimento;7-iniciar;8-parar;9-pausar/retomar;10-iniciar/parar;11-ativar arrasto auxiliar do sensor de força;12-desativar arrasto auxiliar do sensor de força;
613-ativar/desativar arrasto auxiliar do sensor de força;14-sinal de detecção a laser X;15-sinal de detecção a laser Y;16-movimento PTP para origem do trabalho;17-interrupção de movimento, parar movimento atual com base no sinal;
718-iniciar programa principal;19-iniciar retrocesso;20-confirmação de início;21-retomar soldagem;22-terminar soldagem;23-limpar erro;24-comutação manual/automático (nível alto/baixo)
825-ativar;26-desativar;27-ativar/desativar;28-sinal de iniciar/parar rastreamento servo a laser;
9* @return Código de erro
10*/
11errno_t SetToolDIConfig(int config[2]);
5.33. Obter Função da Porta End-CI Configurável da Extremidade
1/**
2* @brief Obtém a função da porta End-CI configurável da extremidade
3* @param [out] config Código da função End CI0-CI1;
4* 0-nenhum;1-chave da ferramenta de arrasto para ensino;2-sinal de gravação de ponto;3-comutação manual/automático (sinal de pulso);4-iniciar/parar gravação TPD;5-pausar movimento;
56-retomar movimento;7-iniciar;8-parar;9-pausar/retomar;10-iniciar/parar;11-ativar arrasto auxiliar do sensor de força;12-desativar arrasto auxiliar do sensor de força;
613-ativar/desativar arrasto auxiliar do sensor de força;14-sinal de detecção a laser X;15-sinal de detecção a laser Y;16-movimento PTP para origem do trabalho;17-interrupção de movimento, parar movimento atual com base no sinal;
718-iniciar programa principal;19-iniciar retrocesso;20-confirmação de início;21-retomar soldagem;22-terminar soldagem;23-limpar erro;24-comutação manual/automático (nível alto/baixo)
825-ativar;26-desativar;27-ativar/desativar;28-sinal de iniciar/parar rastreamento servo a laser;
9* @return Código de erro
10*/
11errno_t GetToolDIConfig(int config[2]);
5.34. Definir Estado Ativo do CI Configurável da Caixa de Controle
1/**
2* @brief Define o estado ativo do CI configurável da caixa de controle
3* @param [in] config Estado ativo das portas CI0-CI7; 0-ativo em nível alto; 1-ativo em nível baixo
4* @return Código de erro
5*/
6errno_t SetDIConfigLevel(int config[8]);
5.35. Obter Estado Ativo do CI Configurável da Caixa de Controle
1/**
2* @brief Obtém o estado ativo do CI configurável da caixa de controle
3* @param [out] config Estado ativo das portas CI0-CI7; 0-ativo em nível alto; 1-ativo em nível baixo
4* @return Código de erro
5*/
6errno_t GetDIConfigLevel(int config[8]);
5.36. Definir Estado Ativo do CO Configurável da Caixa de Controle
1/**
2* @brief Define o estado ativo do CO configurável da caixa de controle
3* @param [in] config Estado ativo das portas CO0-CO7; 0-ativo em nível alto; 1-ativo em nível baixo
4* @return Código de erro
5*/
6errno_t SetDOConfigLevel(int config[8]);
5.37. Obter Estado Ativo do CO Configurável da Caixa de Controle
1/**
2* @brief Obtém o estado ativo do CO configurável da caixa de controle
3* @param [out] config Estado ativo das portas CO0-CO7; 0-ativo em nível alto; 1-ativo em nível baixo
4* @return Código de erro
5*/
6errno_t GetDOConfigLevel(int config[8]);
5.38. Definir Estado Ativo do CI Configurável da Extremidade
1/**
2* @brief Define o estado ativo do CI configurável da extremidade
3* @param [in] config Estado ativo das portas CI0-CI1; 0-ativo em nível alto; 1-ativo em nível baixo
4* @return Código de erro
5*/
6errno_t SetToolDIConfigLevel(int config[2]);
5.39. Obter Estado Ativo do CI Configurável da Extremidade
1/**
2* @brief Obtém o estado ativo do CI configurável da extremidade
3* @param [out] config Estado ativo das portas CI0-CI1; 0-ativo em nível alto; 1-ativo em nível baixo
4* @return Código de erro
5*/
6errno_t GetToolDIConfigLevel(int config[2]);
5.40. Definir Estado Ativo do DI Padrão da Caixa de Controle
1/**
2* @brief Define o estado ativo do DI padrão da caixa de controle
3* @param [in] config Estado ativo das portas DI0-DI7; 0-ativo em nível alto; 1-ativo em nível baixo
4* @return Código de erro
5*/
6errno_t SetStandardDILevel(int config[8]);
5.41. Obter Estado Ativo do DI Padrão da Caixa de Controle
1/**
2* @brief Obtém o estado ativo do DI padrão da caixa de controle
3* @param [out] config Estado ativo das portas DI0-DI7; 0-ativo em nível alto; 1-ativo em nível baixo
4* @return Código de erro
5*/
6errno_t GetStandardDILevel(int config[8]);
5.42. Definir Estado Ativo do DO Padrão da Caixa de Controle
1/**
2* @brief Define o estado ativo do DO padrão da caixa de controle
3* @param [in] config Estado ativo das portas DO0-DO7; 0-ativo em nível alto; 1-ativo em nível baixo
4* @return Código de erro
5*/
6errno_t SetStandardDOLevel(int config[8]);
5.43. Obter Estado Ativo do DO Padrão da Caixa de Controle
1/**
2* @brief Obtém o estado ativo do DO padrão da caixa de controle
3* @param [out] config Estado ativo das portas DO0-DO7; 0-ativo em nível alto; 1-ativo em nível baixo
4* @return Código de erro
5*/
6errno_t GetStandardDOLevel(int config[8]);
5.44. Exemplo de Código de Configuração de E/S do Robô
1int TestIOConfig()
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 setDIConfig[8] = { 1, 2, 3, 4, 5, 6, 7, 8 };
14 int getDIConfig[8] = { 0 };
15 rtn = robot.SetDIConfig(setDIConfig);
16 printf("SetDIConfig rtn is %d\n", rtn);
17 rtn = robot.GetDIConfig(getDIConfig);
18 printf("GetDIConfig rtn is %d, value is %d %d %d %d %d %d %d %d \n", rtn,
19 getDIConfig[0], getDIConfig[1], getDIConfig[2], getDIConfig[3], getDIConfig[4], getDIConfig[5], getDIConfig[6], getDIConfig[7]);
20 int setDOConfig[8] = { 9, 10, 11, 12, 13, 14, 15, 16 };
21 int getDOConfig[8] = { 0 };
22 rtn = robot.SetDOConfig(setDOConfig);
23 printf("SetDOConfig rtn is %d\n", rtn);
24 rtn = robot.GetDOConfig(getDOConfig);
25 printf("GetDOConfig rtn is %d, value is %d %d %d %d %d %d %d %d \n", rtn,
26 getDOConfig[0], getDOConfig[1], getDOConfig[2], getDOConfig[3], getDOConfig[4], getDOConfig[5], getDOConfig[6], getDOConfig[7]);
27 int setToolDIConfig[2] = { 17, 18 };
28 int getToolDIConfig[2] = { 0 };
29 rtn = robot.SetToolDIConfig(setToolDIConfig);
30 printf("SetToolDIConfig rtn is %d\n", rtn);
31 rtn = robot.GetToolDIConfig(getToolDIConfig);
32 printf("GetToolDIConfig rtn is %d, value is %d %d \n", rtn, getToolDIConfig[0], getToolDIConfig[1]);
33 int setDIConfigLevel[8] = { 1, 1, 1, 1, 0, 0, 0, 0 };
34 int getDIConfigLevel[8] = { 0 };
35 rtn = robot.SetDIConfigLevel(setDIConfigLevel);
36 printf("SetDIConfigLevel rtn is %d\n", rtn);
37 rtn = robot.GetDIConfigLevel(getDIConfigLevel);
38 printf("GetDIConfigLevel rtn is %d, value is %d %d %d %d %d %d %d %d \n", rtn,
39 getDIConfigLevel[0], getDIConfigLevel[1], getDIConfigLevel[2], getDIConfigLevel[3], getDIConfigLevel[4], getDIConfigLevel[5], getDIConfigLevel[6], getDIConfigLevel[7]);
40 int setDOConfigLevel[8] = { 0, 0, 0, 0, 1, 1, 1, 1 };
41 int getDOConfigLevel[8] = { 0 };
42 rtn = robot.SetDOConfigLevel(setDOConfigLevel);
43 printf("SetDOConfigLevel rtn is %d\n", rtn);
44 rtn = robot.GetDOConfigLevel(getDOConfigLevel);
45 printf("GetDOConfigLevel rtn is %d, value is %d %d %d %d %d %d %d %d \n", rtn,
46 getDOConfigLevel[0], getDOConfigLevel[1], getDOConfigLevel[2], getDOConfigLevel[3], getDOConfigLevel[4], getDOConfigLevel[5], getDOConfigLevel[6], getDOConfigLevel[7]);
47 int setToolDIConfigLevel[2] = { 1, 0 };
48 int getToolDIConfigLevel[2] = { 0 };
49 rtn = robot.SetToolDIConfigLevel(setToolDIConfigLevel);
50 printf("SetToolDIConfigLevel rtn is %d\n", rtn);
51 rtn = robot.GetToolDIConfigLevel(getToolDIConfigLevel);
52 printf("GetToolDIConfigLevel rtn is %d, value is %d %d \n", rtn, getToolDIConfigLevel[0], getToolDIConfigLevel[1]);
53 int setStandardDILevel[8] = { 1, 1, 1, 1, 0, 0, 0, 0 };
54 int getStandardDILevel[8] = { 0 };
55 rtn = robot.SetStandardDILevel(setStandardDILevel);
56 printf("SetStandardDILevel rtn is %d\n", rtn);
57 rtn = robot.GetStandardDILevel(getStandardDILevel);
58 printf("GetStandardDILevel rtn is %d, value is %d %d %d %d %d %d %d %d \n", rtn,
59 getStandardDILevel[0], getStandardDILevel[1], getStandardDILevel[2], getStandardDILevel[3], getStandardDILevel[4], getStandardDILevel[5], getStandardDILevel[6], getStandardDILevel[7]);
60 int setStandardDOLevel[8] = { 0, 0, 0, 0, 1, 1, 1, 1 };
61 int getStandardDOLevel[8] = { 0 };
62 rtn = robot.SetStandardDOLevel(setStandardDOLevel);
63 printf("SetStandardDOLevel rtn is %d\n", rtn);
64 rtn = robot.GetStandardDOLevel(getStandardDOLevel);
65 printf("GetStandsrdDOLevel rtn is %d, value is %d %d %d %d %d %d %d %d \n", rtn,
66 getStandardDOLevel[0], getStandardDOLevel[1], getStandardDOLevel[2], getStandardDOLevel[3], getStandardDOLevel[4], getStandardDOLevel[5], getStandardDOLevel[6], getStandardDOLevel[7]);
67 robot.Sleep(2000);
68 robot.CloseRPC();
69 robot.Sleep(1000);
70 return 0;
71}