4. Registradores de Entrada e Saída do Robô

O cliente CNDE e o robô podem trocar dados através de registradores de entrada e saída. Especificamente, isso inclui dois processos:

① A configuração de entrada do cliente CNDE inclui registradores de entrada. Ao modificar os valores dos registradores de entrada durante a entrada de dados, o robô pode ler os valores dos registradores de entrada modificados pelo cliente CNDE adicionando uma instrução de leitura de registrador de entrada ao programa LUA e executando o programa LUA.

② Uma instrução de escrita de registrador de saída é adicionada ao programa LUA do robô. Ao executar o programa LUA, o valor é escrito no registrador de saída. A configuração de saída do cliente CNDE inclui registradores de saída. Quando o cliente inicia o feedback de estado CNDE do robô e recebe os dados de saída CNDE, ele pode ler o valor do registrador de saída escrito no programa LUA.

4.1. Ler Registradores de Entrada

Abra o WebApp, clique sequencialmente em «Programa de Ensino», «Programação de Programa» e crie um novo programa de usuário «testReg.lua».

../_images/0122.png

Figura 4-1 Criar um novo programa «testReg.lua»

Clique em «Variável». Na caixa de adição de instruções à direita, selecione «Leitura de Variável de Registrador de Entrada». Selecione o tipo de variável como «int», o índice inicial do registrador como 0 e o número de registradores como 3. Clique nos botões «Adicionar» e «Aplicar».

../_images/0132.png

Figura 4-2 Adicionar instrução para ler registradores de entrada

Neste momento, uma instrução para ler registradores de entrada do tipo «int» foi adicionada ao «testReg.lua».

../_images/0142.png

Figura 4-3 Adição da instrução para ler registradores de entrada do tipo «int»

Clique no botão «Alternar Modo» para alternar para o modo de edição de programa. Antes da instrução de leitura do registrador de entrada, adicione três variáveis de programa Lua para receber os três valores de registrador de entrada lidos.

../_images/0152.png

Figura 4-4 Adicionar leitura de valores de registradores de entrada

Da mesma forma, a leitura de dados de registradores dos tipos «bit» e «double» pode ser adicionada.

../_images/0162.png

Figura 4-5 Adicionar leitura de registradores de entrada dos tipos «bit» e «double»

Salve o programa acima, alterne o robô para o modo automático e execute o programa. Os valores dos registradores de entrada serão lidos nas variáveis do programa Lua.

4.2. Escrever Registradores de Saída

Abra o WebApp, clique sequencialmente em «Programa de Ensino», «Programação de Programa» e crie um novo programa de usuário «testReg.lua».

../_images/0172.png

Figura 4-6 Criar um novo programa «testReg.lua»

Clique em «Variável». Na caixa de adição de instruções à direita, selecione «Escrita de Variável de Registrador de Saída». Selecione o tipo de variável como «int», o índice inicial do registrador como 0, o número de registradores como 2 e o valor do registrador como «18,55». Clique no botão «Adicionar». Em seguida, selecione novamente «Leitura de Variável de Registrador de Saída». Selecione o tipo de variável como «int», o índice inicial do registrador como 0 e o número de registradores como 2. Clique nos botões «Adicionar» e «Aplicar».

../_images/0182.png

Figura 4-7 Adicionar instruções de leitura e escrita de registradores de saída

Neste momento, as instruções de escrita e leitura de registradores de saída do tipo «int» foram adicionadas ao «testReg.lua».

../_images/0191.png

Figura 4-8 Adição das instruções de escrita e leitura de registradores de saída do tipo «int»

Clique no botão «Alternar Modo» para alternar para o modo de edição de programa. Antes da instrução de leitura do registrador de saída, adicione duas variáveis de programa Lua para receber os dois valores de registrador de saída lidos.

../_images/0202.png

Figura 4-9 Adicionar leitura de valores de registradores de entrada

Salve o programa acima, alterne o robô para o modo automático e execute o programa. Neste momento, os valores das variáveis Lua «intValue1» e «intValue2» serão 18 e 55, respectivamente. As operações com registradores dos tipos «bit» e «double» são as mesmas que com registradores do tipo «int».

4.3. Aplicação de Interação com Registradores de Entrada e Saída CNDE

../_images/0212.png

Figura 4-10 Interação de Dados com Registradores de Entrada e Saída

Os cenários de interação de dados entre o robô e o cliente CNDE através de registradores de entrada e saída incluem, mas não se limitam aos seguintes tipos:

① Registradores de entrada controlam o movimento do robô: O cliente CNDE planeja a posição alvo do robô e escreve a posição alvo do robô nos registradores de entrada. O programa LUA do robô lê os valores dos registradores de entrada para obter a posição alvo do robô e, em seguida, usa instruções de movimento como PTP, LIN, ServoJ, etc., para controlar o movimento do robô até a posição alvo. Um exemplo de programa LUA é o seguinte:

 1i = 0;
 2oldFlag = 0
 3while(1) do
 4    startFlag = ReadInputINTRegs(0,1)
 5    if(startFlag ~= oldFlag) then
 6    oldFlag = startFlag
 7    x, y, z, a, b, c = ReadInputDBLRegs(0,6)
 8    ServoJ({x, y, z, a, b, c}, {0, 0, 0, 0}, 10, 10, 0.008, 0, 0)
 9    end
10end

② Registradores de entrada controlam as ações do robô: O cliente CNDE escreve valores diferentes em um registrador de entrada para controlar o robô a executar ações diferentes. O programa LUA do robô obtém o valor do registrador de entrada correspondente em um loop e executa ações diferentes com base no valor do registrador. Um exemplo de programa é o seguinte:

 1runFlag = ReadInputINTRegs(0,1)
 2while(runFlag > 0) do
 3    motion,target = ReadInputINTRegs(1,2)
 4    if(motion > 0) then
 5        if(target == 1)then
 6            Lin(a1,100,-1,0,0)
 7        else if(target == 2) then
 8            Lin(a2,100,-1,0,0)
 9        else
10            Lin(safety,100,-1,0,0)
11        end
12        end
13    else
14        sleep_ms(100)
15    end
16end

③ Durante a operação do robô, ele escreve o estado atual do programa nos registradores de saída. O cliente CNDE lê o estado dos registradores de saída para monitorar a execução do programa do robô. Um exemplo de programa é o seguinte:

 1local weldCount = 0
 2runFlag = ReadInputINTRegs(0,1)
 3while(runFlag > 0) do
 4    Lin(safety,100,-1,0,0)
 5    Lin(a1,100,-1,0,0)
 6    ARCStart(0, 0, 3000)
 7    Lin(a2,100,-1,0,0)
 8    ARCEnd(0, 0, 3000)
 9    runFlag = ReadInputINTRegs(0,1)
10    weldCount = weldCount + 1
11    WriteOutputINTRegs(0,1,{weldCount})
12end