5. E/S do Robô
5.1. Definir Saída Digital do Painel de Controle
1/**
2* @brief Definir saída digital do painel 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*/
9int SetDO(int id, byte status, byte smooth, byte block);
5.2. Definir Saída Digital da Ferramenta
1/**
2* @brief Definir 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*/
9int SetToolDO(int id, byte status, byte smooth, byte block);
5.3. Definir Saída Analógica do Painel de Controle
1/**
2* @brief Definir saída analógica do painel de controle
3* @param [in] id Número da E/S, intervalo [0~1]
4* @param [in] value Percentual do valor de corrente ou tensão, intervalo [0~100] correspondendo a 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*/
8int SetAO(int id, float value, byte block);
5.4. Definir Saída Analógica da Ferramenta
1/**
2* @brief Definir saída analógica da ferramenta
3* @param [in] id Número da E/S, intervalo [0]
4* @param [in] value Percentual do valor de corrente ou tensão, intervalo [0~100] correspondendo a 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*/
8int SetToolAO(int id, float value, byte block);
5.5. Exemplo de Código para Definir Saídas Digitais e Analógicas
1private void button14_Click(object sender, EventArgs e)
2{
3 byte status = 1;
4 byte smooth = 0;
5 byte block = 0;
6 byte di = 0, tool_di = 0;
7 float ai = 0.0f, tool_ai = 0.0f;
8 float value = 0.0f;
9
10
11 for (int i = 0; i < 16; i++)
12 {
13 robot.SetDO(i, status, smooth, block);
14 Thread.Sleep(300);
15 }
16
17 status = 0;
18
19 for (int i = 0; i < 16; i++)
20 {
21 robot.SetDO(i, status, smooth, block);
22 Thread.Sleep(300);
23 }
24
25 status = 1;
26
27 for (int i = 0; i < 2; i++)
28 {
29 robot.SetToolDO(i, status, smooth, block);
30 Thread.Sleep(1000);
31 }
32
33 status = 0;
34
35 for (int i = 0; i < 2; i++)
36 {
37 robot.SetToolDO(i, status, smooth, block);
38 Thread.Sleep(1000);
39 }
40
41 for (int i = 0; i < 100; i++)
42 {
43 robot.SetAO(0, i, block);
44 Thread.Sleep(30);
45 }
46
47 for (int i = 0; i < 100; i++)
48 {
49 robot.SetToolAO(0, i, block);
50 Thread.Sleep(30);
51 }
52
53}
5.6. Obter Entrada Digital do Painel de Controle
1/**
2* @brief Obter entrada digital do painel 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*/
8int GetDI(int id, byte block, ref byte level);
5.7. Obter Entrada Digital da Ferramenta
1/**
2* @brief Obter 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*/
8int GetToolDI(int id, byte block, ref byte level);
5.8. Obter Entrada Analógica do Painel de Controle
1/**
2* @brief Obter entrada analógica do painel 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 Percentual do valor de corrente ou tensão de entrada, intervalo [0~100] correspondendo a corrente [0~20mA] ou tensão [0~10V]
6* @return Código de erro
7*/
8int GetAI(int id, byte block, ref float persent);
5.9. Obter Entrada Analógica da Ferramenta
1/**
2* @brief Obter 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 Percentual do valor de corrente ou tensão de entrada, intervalo [0~100] correspondendo a corrente [0~20mA] ou tensão [0~10V]
6* @return Código de erro
7*/
8int GetToolAI(int id, byte block, ref float persent);
5.10. Obter Estado do Botão de Registro de Ponto da Extremidade do Robô
1/**
2* @brief Obter estado do botão de registro 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*/
6int GetAxlePointRecordBtnState(ref byte state);
5.11. Obter Estado de Saída DO da Extremidade do Robô
1/**
2* @brief Obter 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 do bit0
4* @return Código de erro
5*/
6int GetToolDO(ref byte do_state);
5.12. Obter Estado de Saída DO do Controlador do Robô
1/**
2* @brief Obter 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*/
7int GetDO(ref int do_state_h, ref int do_state_l);
5.13. Exemplo de Código para Obter Estados DI e DO do Robô
1private void button15_Click(object sender, EventArgs e)
2{
3 byte status = 1;
4 byte smooth = 0;
5 byte block = 0;
6 byte di = 0, tool_di = 0;
7 float ai = 0.0f, tool_ai = 0.0f;
8 float value = 0.0f;
9
10 robot.GetDI(0, block, ref di);
11 Console.WriteLine($"di0: {di}");
12
13 tool_di = (byte)robot.GetToolDI(1, block, ref tool_di);
14 Console.WriteLine($"tool_di1: {tool_di}");
15
16 robot.GetAI(0, block, ref ai);
17 Console.WriteLine($"ai0: {ai}");
18
19 tool_ai = robot.GetToolAI(0, block, ref tool_ai);
20 Console.WriteLine($"tool_ai0: {tool_ai}");
21
22 byte _button_state = 0;
23 robot.GetAxlePointRecordBtnState(ref _button_state);
24 Console.WriteLine($"_button_state is: {_button_state}");
25
26 byte tool_do_state = 0;
27 robot.GetToolDO(ref tool_do_state);
28 Console.WriteLine($"tool DO state is: {tool_do_state}");
29
30 int do_state_h = 0;
31 int do_state_l = 0;
32 robot.GetDO(ref do_state_h, ref do_state_l);
33 Console.WriteLine($"DO state high is: {do_state_h}\n DO state low is: {do_state_l}");
34}
5.14. Aguardar Entrada Digital do Painel de Controle
1/**
2* @brief Aguardar entrada digital do painel 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, unidade ms
6* @param [in] opt Estratégia após timeout, 0-parar o programa e indicar timeout, 1-ignorar o timeout e continuar a execução, 2-esperar indefinidamente
7* @return Código de erro
8*/
9int WaitDI(int id, byte status, int max_time, int opt);
5.15. Aguardar Entrada Digital Multicanal do Painel de Controle
1/**
2* @brief Aguardar entrada digital multicanal do painel de controle
3* @param [in] mode 0-E lógico multicanal, 1-OU lógico multicanal
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, unidade ms
7* @param [in] opt Estratégia após timeout, 0-parar o programa e indicar timeout, 1-ignorar o timeout e continuar a execução, 2-esperar indefinidamente
8* @return Código de erro
9*/
10int WaitMultiDI(int mode, int id, byte status, int max_time, int opt);
5.16. Aguardar Entrada Digital da Ferramenta
1/**
2* @brief Aguardar 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, unidade ms
6* @param [in] opt Estratégia após timeout, 0-parar o programa e indicar timeout, 1-ignorar o timeout e continuar a execução, 2-esperar indefinidamente
7* @return Código de erro
8*/
9int WaitToolDI(int id, byte status, int max_time, int opt);
5.17. Aguardar Entrada Analógica do Painel de Controle
1/**
2* @brief Aguardar entrada analógica do painel 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 Percentual do valor de corrente ou tensão de entrada, intervalo [0~100] correspondendo a corrente [0~20mA] ou tensão [0~10V]
6* @param [in] max_time Tempo máximo de espera, unidade ms
7* @param [in] opt Estratégia após timeout, 0-parar o programa e indicar timeout, 1-ignorar o timeout e continuar a execução, 2-esperar indefinidamente
8* @return Código de erro
9*/
10int WaitAI(int id, int sign, float value, int max_time, int opt);
5.18. Aguardar Entrada Analógica da Ferramenta
1/**
2* @brief Aguardar 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 Percentual do valor de corrente ou tensão de entrada, intervalo [0~100] correspondendo a corrente [0~20mA] ou tensão [0~10V]
6* @param [in] max_time Tempo máximo de espera, unidade ms
7* @param [in] opt Estratégia após timeout, 0-parar o programa e indicar timeout, 1-ignorar o timeout e continuar a execução, 2-esperar indefinidamente
8* @return Código de erro
9*/
10int 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 do Painel de Controle
1private void btnIOTest_Click(object sender, EventArgs e)
2{
3 byte status = 1;
4 byte smooth = 0;
5 byte block = 0;
6 byte di = 0, tool_di = 0;
7 float ai = 0.0f, tool_ai = 0.0f;
8 float value = 0.0f;
9
10 int rtn = robot.WaitDI(0, 1, 1000, 1);
11 Console.WriteLine("WaitDI over; rtn is: " + rtn);
12
13 robot.WaitMultiDI(1, 3, 3, 1000, 1);
14 Console.WriteLine("WaitMultiDI over; rtn is: " + rtn);
15
16 robot.WaitToolDI(1, 1, 1000, 1);
17 Console.WriteLine("WaitToolDI over; rtn is: " + rtn);
18
19 robot.WaitAI(0, 0, 50, 1000, 1);
20 Console.WriteLine("WaitAI over; rtn is: " + rtn);
21
22 robot.WaitToolAI(0, 0, 50, 1000, 1);
23 Console.WriteLine("WaitToolAI over; rtn is: " + rtn);
24}
5.20. Definir se a Saída DO do Painel de Controle Deve ser Reinicializada Após Parada/Pausa
1/**
2* @brief Definir se a saída DO do painel de controle deve ser reinicializada após parada/pausa
3* @param [in] resetFlag 0-não reinicializar; 1-reinicializar
4* @param [in] reloadFlag Recarregar após retomar da pausa? 0-não recarregar; 1-recarregar
5* @return Código de erro
6*/
7public int SetOutputResetCtlBoxDO(int resetFlag, int reloadFlag);
5.21. Definir se a Saída AO do Painel de Controle Deve ser Reinicializada Após Parada/Pausa
1/**
2* @brief Definir se a saída AO do painel de controle deve ser reinicializada após parada/pausa
3* @param [in] resetFlag 0-não reinicializar; 1-reinicializar
4* @param [in] reloadFlag Recarregar após retomar da pausa? 0-não recarregar; 1-recarregar
5* @return Código de erro
6*/
7public int SetOutputResetCtlBoxAO(int resetFlag, int reloadFlag);
5.22. Definir se a Saída DO da Ferramenta na Extremidade Deve ser Reinicializada Após Parada/Pausa
1/**
2* @brief Definir se a saída DO da ferramenta na extremidade deve ser reinicializada após parada/pausa
3* @param [in] resetFlag 0-não reinicializar; 1-reinicializar
4* @param [in] reloadFlag Recarregar após retomar da pausa? 0-não recarregar; 1-recarregar
5* @return Código de erro
6*/
7public int SetOutputResetAxleDO(int resetFlag, int reloadFlag);
5.23. Definir se a Saída AO da Ferramenta na Extremidade Deve ser Reinicializada Após Parada/Pausa
1/**
2* @brief Definir se a saída AO da ferramenta na extremidade deve ser reinicializada após parada/pausa
3* @param [in] resetFlag 0-não reinicializar; 1-reinicializar
4* @param [in] reloadFlag Recarregar após retomar da pausa? 0-não recarregar; 1-recarregar
5* @return Código de erro
6*/
7public int SetOutputResetAxleAO(int resetFlag, int reloadFlag);
5.24. Definir se a Saída DO Estendida Deve ser Reinicializada Após Parada/Pausa
1/**
2* @brief Definir se a saída DO estendida deve ser reinicializada após parada/pausa
3* @param [in] resetFlag 0-não reinicializar; 1-reinicializar
4* @param [in] reloadFlag Recarregar após retomar da pausa? 0-não recarregar; 1-recarregar
5* @return Código de erro
6*/
7public int SetOutputResetExtDO(int resetFlag, int reloadFlag);
5.25. Definir se a Saída AO Estendida Deve ser Reinicializada Após Parada/Pausa
1/**
2* @brief Definir se a saída AO estendida deve ser reinicializada após parada/pausa
3* @param [in] resetFlag 0-não reinicializar; 1-reinicializar
4* @param [in] reloadFlag Recarregar após retomar da pausa? 0-não recarregar; 1-recarregar
5* @return Código de erro
6*/
7public int SetOutputResetExtAO(int resetFlag, int reloadFlag);
5.26. Definir se a Saída DO do SmartTool Deve ser Reinicializada Após Parada/Pausa
1/**
2* @brief Definir se a saída DO do SmartTool deve ser reinicializada após parada/pausa
3* @param [in] resetFlag 0-não reinicializar; 1-reinicializar
4* @param [in] reloadFlag Recarregar após retomar da pausa? 0-não recarregar; 1-recarregar
5* @return Código de erro
6*/
7public int SetOutputResetSmartToolDO(int resetFlag, int reloadFlag);
5.27. Exemplo de Código para Reinicialização de Saída Após Parada/Pausa do Programa LUA
1public void TestDOReset()
2{
3 ROBOT_STATE_PKG pkg = new ROBOT_STATE_PKG();
4
5 for (int i = 0; i < 16; i++)
6 {
7 robot.SetDO(i, 1, 0, 0);
8 Thread.Sleep(200);
9 }
10
11 int resetFlag = 1;
12 int resumeReloadFlag = 1;
13 int rtn = robot.SetOutputResetCtlBoxDO(resetFlag, resumeReloadFlag);
14 robot.SetOutputResetCtlBoxAO(resetFlag, resumeReloadFlag);
15 robot.SetOutputResetAxleDO(resetFlag, resumeReloadFlag);
16 robot.SetOutputResetAxleAO(resetFlag, resumeReloadFlag);
17 robot.SetOutputResetExtDO(resetFlag, resumeReloadFlag);
18 robot.SetOutputResetExtAO(resetFlag, resumeReloadFlag);
19 robot.SetOutputResetSmartToolDO(resetFlag, resumeReloadFlag);
20
21 robot.ProgramLoad("/fruser/test.lua");
22 robot.ProgramRun();
23
24 Thread.Sleep(2000);
25 robot.PauseMotion();
26 Thread.Sleep(2000);
27 robot.ResumeMotion();
28 Thread.Sleep(2000);
29}
5.28. Definir Função da Porta CI Configurável do Painel de Controle
1/**
2* @brief Definir função da porta CI configurável do painel de controle
3* @param [in] config Código de função para CI0-CI7;
4* 0-nenhum;1-sucesso na abertura de arco;2-preparação da máquina de solda;3-detecção de esteira;4-pausa;5-retomar;6-iniciar;7-parar;
58-pausar/retomar;9-iniciar/parar;10-arrasto com pedal;11-mover para origem de trabalho;12-alternar manual/automático;
613-sucesso na busca de posição do arame;14-interrupção de movimento;15-iniciar programa principal;16-iniciar rebobinagem;17-confirmar 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 nível 1;23-modo de redução nível 2;24-modo de redução nível 3 (parada);25-retomar soldagem;26-terminar soldagem;
927-ativar arrasto assistido;28-desativar arrasto assistido;29-ativar/desativar arrasto assistido;30-limpar todos os erros;
1031-alternar manual/automático (nível alto/baixo);32-habilitar;33-desabilitar;34-habilitar/desabilitar (borda de subida/descida);35-iniciar/parar rastreamento de ponto fixo
11* @return Código de erro
12*/
13public int SetDIConfig(int[] config)
5.29. Obter Função da Porta CI Configurável do Painel de Controle
1/**
2* @brief Obter função da porta CI configurável do painel de controle
3* @param [in] config Código de função para CI0-CI7;
4* 0-nenhum;1-sucesso na abertura de arco;2-preparação da máquina de solda;3-detecção de esteira;4-pausa;5-retomar;6-iniciar;7-parar;
58-pausar/retomar;9-iniciar/parar;10-arrasto com pedal;11-mover para origem de trabalho;12-alternar manual/automático;
613-sucesso na busca de posição do arame;14-interrupção de movimento;15-iniciar programa principal;16-iniciar rebobinagem;17-confirmar 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 nível 1;23-modo de redução nível 2;24-modo de redução nível 3 (parada);25-retomar soldagem;26-terminar soldagem;
927-ativar arrasto assistido;28-desativar arrasto assistido;29-ativar/desativar arrasto assistido;30-limpar todos os erros;
1031-alternar manual/automático (nível alto/baixo);32-habilitar;33-desabilitar;34-habilitar/desabilitar (borda de subida/descida);35-iniciar/parar rastreamento de ponto fixo
11* @return Código de erro
12*/
13public int GetDIConfig(out int[] config)
5.30. Definir Função da Porta CO Configurável do Painel de Controle
1/**
2* @brief Definir função da porta CO configurável do painel de controle
3* @param [out] config Código de função para CO0-CO7;
4* 0-nenhum;1-erro do robô;2-robô em movimento;3-iniciar/parar pintura;4-limpeza do bocal de pintura;5-sinal de envio de gás;6-sinal de abertura de arco;7-alimentação de arame ponto a ponto;
58-alimentação de arame reversa;9-porta de entrada JOB 1;10-porta de entrada JOB 2;11-porta de entrada JOB 3;12-controle de início/parada da esteira;13-robô pausado;14-chegada na origem de trabalho;
615-chegada na zona de interferência;16-controle de início/parada da busca de posição do arame;17-inicialização do robô concluída;18-parada/início do programa;19-modo automático/manual;20-sinal de saída de parada de emergência 1 - segurança;
721-sinal de saída de parada de emergência 2 - segurança;22-parada/início da execução do script LUA;23-saída de estado de segurança - segurança;24-saída de estado de parada protetiva - segurança;
825-robô em movimento - segurança;26-modo de redução do robô - segurança;27-modo de não redução do robô - segurança;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 suave excedido;32-erro do robô - erro de colisão;33-erro do robô - erro no número de escravos ativos;
1034-erro do robô - erro de escravo;35-erro do robô - erro de E/S;36-erro do robô - erro de garra;37-erro do robô - erro de arquivo;38-erro do robô - erro de pose singular;
1139-erro do robô - erro de comunicação com o driver;40-erro do robô - erro de parâmetro;41-erro do robô - erro de limite suave excedido no eixo externo;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 zona de interferência;46-aviso do robô - aviso de parede de segurança;
1347-estado de habilitação;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*/
16public int SetDOConfig(int[] config)
5.31. Obter Função da Porta CO Configurável do Painel de Controle
1/**
2* @brief Obter função da porta CO configurável do painel de controle
3* @param [out] config Código de função para CO0-CO7;
4* 0-nenhum;1-erro do robô;2-robô em movimento;3-iniciar/parar pintura;4-limpeza do bocal de pintura;5-sinal de envio de gás;6-sinal de abertura de arco;7-alimentação de arame ponto a ponto;
58-alimentação de arame reversa;9-porta de entrada JOB 1;10-porta de entrada JOB 2;11-porta de entrada JOB 3;12-controle de início/parada da esteira;13-robô pausado;14-chegada na origem de trabalho;
615-chegada na zona de interferência;16-controle de início/parada da busca de posição do arame;17-inicialização do robô concluída;18-parada/início do programa;19-modo automático/manual;20-sinal de saída de parada de emergência 1 - segurança;
721-sinal de saída de parada de emergência 2 - segurança;22-parada/início da execução do script LUA;23-saída de estado de segurança - segurança;24-saída de estado de parada protetiva - segurança;
825-robô em movimento - segurança;26-modo de redução do robô - segurança;27-modo de não redução do robô - segurança;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 suave excedido;32-erro do robô - erro de colisão;33-erro do robô - erro no número de escravos ativos;
1034-erro do robô - erro de escravo;35-erro do robô - erro de E/S;36-erro do robô - erro de garra;37-erro do robô - erro de arquivo;38-erro do robô - erro de pose singular;
1139-erro do robô - erro de comunicação com o driver;40-erro do robô - erro de parâmetro;41-erro do robô - erro de limite suave excedido no eixo externo;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 zona de interferência;46-aviso do robô - aviso de parede de segurança;
1347-estado de habilitação;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*/
16public int GetDOConfig(out int[] config)
5.32. Definir Função da Porta End-CI Configurável da Extremidade
1/**
2* @brief Definir função da porta End-CI configurável da extremidade
3* @param [in] config Código de função para End CI0-CI1;
4* 0-nenhum;1-interruptor de ferramenta de ensinamento por arrasto;2-sinal de registro de ponto;3-alternar manual/automático (sinal de pulso);4-iniciar/parar registro TPD;5-pausar movimento;
56-retomar movimento;7-iniciar;8-parar;9-pausar/retomar;10-iniciar/parar;11-ativar arrasto assistido por sensor de força;12-desativar arrasto assistido por sensor de força;
613-ativar/desativar arrasto assistido por sensor de força;14-sinal de detecção a laser X;15-sinal de detecção a laser Y;16-mover PTP para origem de trabalho;17-interromper movimento, parar o movimento atual de acordo com o sinal;
718-iniciar programa principal;19-iniciar rebobinagem;20-confirmar início;21-retomar soldagem;22-terminar soldagem;23-limpar erros;24-alternar manual/automático (nível alto/baixo);
825-habilitar;26-desabilitar;27-habilitar/desabilitar;28-sinal de início/parada de rastreamento servo a laser;
9* @return Código de erro
10*/
11public int SetToolDIConfig(int[] config)
5.33. Obter Função da Porta End-CI Configurável da Extremidade
1/**
2* @brief Obter função da porta End-CI configurável da extremidade
3* @param [out] config Código de função para End CI0-CI1;
4* 0-nenhum;1-interruptor de ferramenta de ensinamento por arrasto;2-sinal de registro de ponto;3-alternar manual/automático (sinal de pulso);4-iniciar/parar registro TPD;5-pausar movimento;
56-retomar movimento;7-iniciar;8-parar;9-pausar/retomar;10-iniciar/parar;11-ativar arrasto assistido por sensor de força;12-desativar arrasto assistido por sensor de força;
613-ativar/desativar arrasto assistido por sensor de força;14-sinal de detecção a laser X;15-sinal de detecção a laser Y;16-mover PTP para origem de trabalho;17-interromper movimento, parar o movimento atual de acordo com o sinal;
718-iniciar programa principal;19-iniciar rebobinagem;20-confirmar início;21-retomar soldagem;22-terminar soldagem;23-limpar erros;24-alternar manual/automático (nível alto/baixo);
825-habilitar;26-desabilitar;27-habilitar/desabilitar;28-sinal de início/parada de rastreamento servo a laser;
9* @return Código de erro
10*/
11public int GetToolDIConfig(out int[] config)
5.34. Definir Estado Ativo da CI Configurável do Painel de Controle
1/**
2* @brief Definir estado ativo da CI configurável do painel 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*/
6public int SetDIConfigLevel(int[] config)
5.35. Obter Estado Ativo da CI Configurável do Painel de Controle
1/**
2* @brief Obter estado ativo da CI configurável do painel 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*/
6public int GetDIConfigLevel(out int[] config)
5.36. Definir Estado Ativo da CO Configurável do Painel de Controle
1/**
2* @brief Definir estado ativo da CO configurável do painel 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*/
6public int SetDOConfigLevel(int[] config)
5.37. Obter Estado Ativo da CO Configurável do Painel de Controle
1/**
2* @brief Obter estado ativo da CO configurável do painel 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*/
6public int GetDOConfigLevel(out int[] config)
5.38. Definir Estado Ativo da CI Configurável da Extremidade
1/**
2* @brief Definir estado ativo da 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*/
6public int SetToolDIConfigLevel(int[] config)
5.39. Obter Estado Ativo da CI Configurável da Extremidade
1/**
2* @brief Obter estado ativo da 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*/
6public int GetToolDIConfigLevel(out int[] config)
5.40. Definir Estado Ativo do DI Padrão do Painel de Controle
1/**
2* @brief Definir estado ativo do DI padrão do painel 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*/
6public int SetStandardDILevel(int[] config)
5.41. Obter Estado Ativo do DI Padrão do Painel de Controle
1/**
2* @brief Obter estado ativo do DI padrão do painel 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*/
6public int GetStandardDILevel(out int[] config)
5.42. Definir Estado Ativo do DO Padrão do Painel de Controle
1/**
2* @brief Definir estado ativo do DO padrão do painel 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*/
6public int SetStandardDOLevel(int[] config)
5.43. Obter Estado Ativo do DO Padrão do Painel de Controle
1/**
2* @brief Obter estado ativo do DO padrão do painel 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*/
6public int GetStandardDOLevel(out int[] config)
5.44. Exemplo de Código de Configuração de E/S do Robô
1public void TestIOConfig()
2{
3 int rtn = 0;
4
5 // ---------- Testar função da porta CI configurável ----------
6 int[] setDIConfig = new int[] { 3, 9, 1, 4, 5, 6, 7, 8 };
7 rtn = robot.SetDIConfig(setDIConfig);
8 Console.WriteLine($"SetDIConfig rtn is {rtn}");
9
10 // Usar o parâmetro out para receber o array de configuração obtido
11 int[] getDIConfig;
12 rtn = robot.GetDIConfig(out getDIConfig);
13 Console.WriteLine($"GetDIConfig rtn is {rtn}, value is {string.Join(" ", getDIConfig)}");
14
15 // ---------- Testar função da porta CO configurável ----------
16 int[] setDOConfig = new int[] { 9, 10, 11, 12, 13, 14, 15, 16 };
17 rtn = robot.SetDOConfig(setDOConfig);
18 Console.WriteLine($"SetDOConfig rtn is {rtn}");
19
20 int[] getDOConfig;
21 rtn = robot.GetDOConfig(out getDOConfig);
22 Console.WriteLine($"GetDOConfig rtn is {rtn}, value is {string.Join(" ", getDOConfig)}");
23
24 // ---------- Testar função da porta CI configurável da extremidade ----------
25 int[] setToolDIConfig = new int[] { 17, 18 };
26 rtn = robot.SetToolDIConfig(setToolDIConfig);
27 Console.WriteLine($"SetToolDIConfig rtn is {rtn}");
28
29 int[] getToolDIConfig;
30 rtn = robot.GetToolDIConfig(out getToolDIConfig);
31 Console.WriteLine($"GetToolDIConfig rtn is {rtn}, value is {string.Join(" ", getToolDIConfig)}");
32
33 // ---------- Testar estado ativo da CI configurável do painel de controle ----------
34 int[] setDIConfigLevel = new int[] { 1, 1, 1, 1, 0, 0, 0, 0 };
35 rtn = robot.SetDIConfigLevel(setDIConfigLevel);
36 Console.WriteLine($"SetDIConfigLevel rtn is {rtn}");
37
38 int[] getDIConfigLevel;
39 rtn = robot.GetDIConfigLevel(out getDIConfigLevel);
40 Console.WriteLine($"GetDIConfigLevel rtn is {rtn}, value is {string.Join(" ", getDIConfigLevel)}");
41
42 // ---------- Testar estado ativo da CO configurável do painel de controle ----------
43 int[] setDOConfigLevel = new int[] { 0, 0, 0, 0, 1, 1, 1, 1 };
44 rtn = robot.SetDIConfigLevel(setDOConfigLevel);
45 Console.WriteLine($"SetDOConfigLevel rtn is {rtn}");
46
47 int[] getDOConfigLevel;
48 rtn = robot.GetDOConfigLevel(out getDOConfigLevel);
49 Console.WriteLine($"GetDOConfigLevel rtn is {rtn}, value is {string.Join(" ", getDOConfigLevel)}");
50
51 // ---------- Testar estado ativo da CI configurável da extremidade ----------
52 int[] setToolDIConfigLevel = new int[] { 1, 0 };
53 rtn = robot.SetToolDIConfigLevel(setToolDIConfigLevel);
54 Console.WriteLine($"SetToolDIConfigLevel rtn is {rtn}");
55
56 int[] getToolDIConfigLevel;
57 rtn = robot.GetToolDIConfigLevel(out getToolDIConfigLevel);
58 Console.WriteLine($"GetToolDIConfigLevel rtn is {rtn}, value is {string.Join(" ", getToolDIConfigLevel)}");
59
60 // ---------- Testar estado ativo do DI padrão do painel de controle ----------
61 int[] setStandardDILevel = new int[] { 1, 1, 1, 1, 0, 0, 0, 0 };
62 rtn = robot.SetStandardDILevel(setStandardDILevel);
63 Console.WriteLine($"SetStandardDILevel rtn is {rtn}");
64
65 int[] getStandardDILevel;
66 rtn = robot.GetStandardDILevel(out getStandardDILevel);
67 Console.WriteLine($"GetStandardDILevel rtn is {rtn}, value is {string.Join(" ", getStandardDILevel)}");
68
69 // ---------- Testar estado ativo do DO padrão do painel de controle ----------
70 int[] setStandardDOLevel = new int[] { 0, 0, 0, 0, 1, 1, 1, 1 };
71 rtn = robot.SetStandardDOLevel(setStandardDOLevel);
72 Console.WriteLine($"SetStandardDOLevel rtn is {rtn}");
73
74 int[] getStandardDOLevel;
75 rtn = robot.GetStandardDOLevel(out getStandardDOLevel);
76 Console.WriteLine($"GetStandardDOLevel rtn is {rtn}, value is {string.Join(" ", getStandardDOLevel)}");
77
78}