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("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}