Neste artigo, vamos falar sobre a instrução MOV muito implementada em lógicas de programação para manipular dados. Depois de você ler este post, com certeza será capaz de entender melhor esta função avançada do CLP bastante aplicada em projetos de automação. Também será capaz de reconhecer as diferenças aplicadas por cada fabricante de CLP com relação a funcionalidades e implementações. Por fim, pretendo explorar duas das formas mais populares de coletar e manipular dados na linguagem Ladder.

Por que Precisamos de Coletar ou Adquirir Dados?

A resposta para a pergunta acima é simples. Vamos dizer que nós estamos utilizando um módulo analógico de um fabricante de CLP. Este módulo adquire sinais analógicos do mundo real (variação de tensão ou corrente) e converte este sinal em algo que o CLP consegue entender (um sinal digital por exemplo composto por combinações de 0 e 1). Geralmente estes dados são armazenados na memoria mas algumas vezes precisamos coletar o dado da memória e MOVer para algum outro lugar antes que o próximo sinal analógico medido substitua o sinal anterior. Em outras palavras podemos dizer que “MOVa isto ou Perca isto!”.  Outra coisa que podemos querer fazer é armazenar uma contante (ex.: uma palavra inteira), pegar alguns dados binários das entradas do CLP (ex.: um sensor ultrassônico lendo  a altura do líquido do tanque) e fazer alguma operação matemática armazenando o resultado em outro local.

Como falei no início deste post, existem tipicamente 2 instruções comuns “set”, sendo que alguns fabricantes utilizam uma instrução simples para fazer todas as operações (MOV) e outros preferem aplicar duas instruções emparelhadas (LDA e STA) e neste caso, as duas são utilizadas em conjunto para que o resultado final seja obtido. Vamos dar uma olhada breve nestas instruções.

A instrução simples é comummente chamada de MOV ou em alguns fabricantes MOVN, que tem a mesma função do anterior, mas que transfere o dado de uma forma invertida. (ex,: se o bit é 1, o 0 será armazenado/movido ou se o bit for 0, o 1 será armazenado/movido. Abaixo estou apresentando a vocês esta instrução em um CLP Allen Bradley:

MOV CLP

Já as instruções emparelhadas (LDA e STA) ou (Load Accumulator e Store Accumulator). O acumulador é simplesmente um registro dentro do CLP em que o mesmo armazena dados temporariamente enquanto trabalha. As instruções LDA  e STA tipicamente parecem com as mostradas abaixo:

MOV LDA STA CLP

Independentemente de usarmos uma instrução única ou a combinação do LDA e STA (e isto depende de cada fabricante), iremos obter o mesmo resultado pois eles possuem a mesma finalidade. Pegando a instrução do CLP Allen Bradley, podemos verificar que ela possui os elementos Source e Dest. Vamos ver o que cada um significa:

Você Gostou Deste Artigo?
Cadastre-se hoje e receba atualizações por e-mail. Respeitamos a sua privacidade e você nunca terá seu e-mail divulgado.

Source (XXXX): É onde o dado que queremos transferir está localizado. nós podemos escrever uma constante (4444 por exemplo) ou escrever a localização do endereço onde o dado que queremos mover está localizado. Assim, no exemplo acima I:0.0 está simplesmente dizendo que o dado que queremos mover está no CLP endereço 0.

Destination (XXXX): É o local onde o dado vai ser transferido e neste caso, basta informarmos o endereço para onde vai a informação. Neste exemplo que coloquei, o dado está indo para o N7:17 (N significa inteiro no CLP Allen Bradley, 7 é a identificação de número inteiro e 17 é seu endereço).

mov exemplo contador

No exemplo acima, você poderá entender melhor como funciona a instrução no CLP Allen Bradley que transfere um valor inteiro armazenado no endereço 0 (N7:0) para o Preset do contador C5:0. Note que no exemplo utilizei o One Time Rising que tem a função de armazenar um Bit quando ocorre uma transição de desligado para ligado em um Scan do CLP. Você pode estar se perguntando o motivo pelo qual fazer esta lógica. A razão é simples: imagine que ligamos a entrada I:0/11 diretamente na instrução MOV e que a entrada tenha uma alta frequência de chaveamento, maior do que o scan do CLP. Durante o Scan, a entrada vai interferir na execução do programa fazendo com que haja várias transferências do endereço N7:0 para o Preset do contador. Isso pode causar vários problemas dependendo da lógica que você esteja desenvolvendo. A fim de garantir que para cada Scan do CLP, haverá somente uma transferência de valor, independentemente da variação do comando para tal, utilizamos este recurso.

Explicando melhor o funcionamento do exemplo acima temos: quando ocorre um comando na entrada I:0/11, a transição de desligado para ligado energiza a instrução OSR, que por sua vez armazena na memória o Bit no endereço B3:0/0. Por sua vez, este bit ativa a transferência do valor no endereço (N7:0) para o Preset do contador C5:0 garantindo que isto ocorrerá somente uma vez no scan do CLP.

Se por outro lado, você estiver utilizando um CLP que utiliza as instruções LDA e STA para transferir dados, abaixo eu explico cada uma delas:

LDA: Esta instrução é similar a Source do MOV e indica onde o dado que queremos transferir está localizado. Da mesma forma que no Source, podemos escrever uma constante (4444 por exemplo) ou escrever a localização do endereço onde o dado que queremos mover está localizado.

STA: Instrução similar ao Destination e indica o local onde o dado vai ser transferido. Neste caso, basta informarmos o endereço para onde vai a informação.