Movimentação Indexada Estendida

Movimentação Indexada Estendida
Caminho Programa/Editor Ladder/Elementos/Movimento
Grupo Movimento
Tecla de Atalho Nenhuma
Parâmetros 4
Entradas 1
Tamanho do elemento 4 linhas
Ícone ico
Tabela de compatibilidade de firmwares
Geração de Firmware G3, G3S, G3R, disponível na família ZAP-900 GII a partir do firmware versão 1.8.02

Símbolo

../_images/8N.jpg

Este elemento possibilita a movimentação de um grupo de variáveis (R, M, D ou L) ou constante string (W) da base de dados do controlador, sendo que os endereços origem e destino das variáveis movimentadas podem ser indexadas. O tipo de variável (R, M, D ou L) ou constante string (W) a ser movimentada é especificado no parâmetro P1, os endereços origem e destino das variáveis a serem movimentadas são especificadas ou indexadas pelos parâmetros P2 e P3 respectivamente, e por fim a quantidade de variáveis a ser movimentada é especificada no parâmetro P4.

Para inseri-lo no programa deve-se posicionar o cursor na posição desejada, selecionar no menu à esquerda o grupo “Movimento” e clicar no botão ico.

Considere o exemplo indicado na figura a seguir. No instante T1, antes do elemento de movimentação indexada estendido ser executado, o conteúdo das variáveis é o apresentado na tabela T1. Durante a execução do elemento, é realizada a seguinte seqüência de operações:

A. O tipo de variável a ser movimentada é extraído para parâmetro P1. Neste exemplo, P1 = M1, e como o conteúdo de M1 = 2, indica o tipo de variável associada ao código 2, no caso, este código indica variáveis do tipo M. Assim esta operação de movimentação será realizada em variáveis do tipo M.

B. O número da memória M inicial origem dos dados a serem transferidos é extraído do parâmetro P2. Neste exemplo, P2 = M2, e como o conteúdo de M2 = 6, indica que a variável origem da movimentação será a variável M6.

C. O número da memória M inicial destino dos dados a serem transferidos é extraído do parâmetro P3. Neste exemplo, P3 = M3, e como o conteúdo de M3 =10, indica que a variável destino da movimentação será a variável M10.

D. O parâmetro P4 indica a quantidade de variáveis a serem movimentadas. No exemplo, P4 = M4, e como o conteúdo de M4 = 2, indica que serão transferidas 2 memórias M consecutivas, a partia da memória origem (M6) para a memória destino (M10).

Sendo assim, no instante T2, após a execução da movimentação, os valores 18 e 19 presentes nas memórias M6 e M7 são transferidos para as memórias M10 e M11, respectivamente, conforme ilustrado na figura abaixo:

../_images/ed_ladder_mov_index_est.jpg

Movimentação com operandos K ou M

Os parâmetros P1, P2, P3 e P4 podem ser do tipo constantes inteiras K ou memórias inteiras M. Quando especificada uma constante K para o parâmetro, o elemento de movimentação trata o valor da constante como o valor do parâmetro, caso contrário, se for especificada uma variável M, considera-se o conteúdo da respectiva variável M o valor do parâmetro. E neste último caso, através do conteúdo destes parâmetros do tipo M pode-se indexar as variáveis origem e destino da movimentação de dados.

Parâmetros

Observações

Descrição dos Parâmetros
Parâmetro Tipo(s) Valores Descrição
P1 K 0..Max(K) Quando do tipo K, o valor da constante especifica o código do tipo de variável (R, M, D ou L) ou constante string (W) a ser movimentada. Z1
M 0..Max(M) Quando do tipo M, o conteúdo desta memória especifica o código do tipo de variável (R, M, D ou L) ou constante string (W) a ser movimentada. Z1
P2 K 0..Max(K) Especifica o número inicial da variável origem para a movimentação de dados. Quando do tipo K, o valor da constante especifica o número da variável (R, M, D ou L) ou constante string (W) a ser utilizada como origem dos dados para a operação de movimentação de dados.
M 0..Max(M) Quando do tipo M, o conteúdo desta memória especifica o número da variável (R, M, D ou L) ou constante string (W) a ser utilizada como origem dos dados para a operação de movimentação de dados.
P3 K 0..Max(K) Especifica o número inicial da variável destino para a movimentação de dados. Quando do tipo K, o valor da constante especifica o número da variável (R, M, D ou L) ou string (X) a ser utilizada como destino dos dados para a operação de movimentação de dados.
M 0..Max(M) Quando do tipo M, o conteúdo desta memória especifica o número da variável (R, M, D ou L) ou string (X) a ser utilizada como destino dos dados para a operação de movimentação de dados.
P4 K 0..Max(K) Especifica a quantidade de dados que serão movimentados a partir da variável origem para a variável destino. Quando do tipo K, o valor da constante especifica a quantidade de variáveis (R, M, D ou L) ou constante string (W) a serem movimentadas.
M 0..Max(M) Quando do tipo M, o conteúdo desta memória especifica a quantidade de variáveis (R, M, D ou L) ou constante string (W) a serem movimentadas. Z2
Z1 Os códigos disponíveis para movimentação de variáveis são:
  1. 0 = movimentação de variáveis do tipo R para R.
  2. 2 = movimentação de variáveis do tipo M para M.
  3. 4 = movimentação de variáveis do tipo D para D.
  4. 6 = movimentação de variáveis do tipo L para L, se disponível no controlador utilizado.
  5. 50 = movimentação de constante string W para string X, se disponível no controlador utilizado.
  6. 204 = movimentação de variáveis do tipo M para D.
  7. 402 = movimentação de variáveis do tipo D para M.
  8. 208 = movimentação de variáveis do tipo M para F.
  9. 802 = movimentação de variáveis do tipo F para M.
As opções f,g,h,i estão disponíveis apenas em controladores G3S como por exemplo:
  • P7C à partir do firmware versão 1.3.13
  • ZAP91X S à partir do firmware versão 2.3.12
  • NEON à partir do firmware versão 1.3.17
Z2 O sinal (positivo ou negativo) associado a este parâmetro indica a ordem de movimentação dos dados, conforme descrito abaixo:
  1. Quando a quantidade é um valor positivo, a movimentação dos dados ocorre em ordem crescente ou seja, a partir da variável origem, incrementando o número da variável a cada valor movimentado até atingir a quantidade de movimentações especificada.
  2. Quando a quantidade é um valor negativo, a movimentação dos dados ocorre em ordem decrescente, ou seja, a partir da variável “Origem + Quantidade”, decrementando o número da variável a cada valor transferido até atingir a quantidade de movimentações especificada.

Entradas

Descrição das Entradas
Entrada Função Estado Descrição
A1 Ativação Inativo Com a entrada A1 inativa, a operação não é realizada e portanto nenhuma movimentação de dados ocorre. Nesta condição, a saída do bloco é desativada.
Ativo Com a entrada A1 ativa, a operação de movimentação é realizada e, caso ocorra sem erros, a saída do elemento é mantida ativa. No caso de erro no processo de movimentação, a saída é desativada para sinalizar a falha. Nesta condição o conteúdo das variáveis destino permanecem inalteradas.

Saída

Descrição das Saídas
Saída Função Estado Descrição
B1 Energização Inativo Se a entrada A1 estiver inativa, indica que a função associada não foi executada. Se a entrada A1 estiver ativa,indica que houve falha na execução da função e neste caso o conteúdo das memórias destino não é alterado. As possíveis causas de falha na execução desta função são: Tipo de variável inválida: o código do tipo de variável a ser movimentada é inválido, ou não é suportado pelo controlador, por exemplo, se o controlador não possuir suporte para variáveis do tipo L(Long). Overflow na movimentação: a quantidade de dados espeecificada na transferência (origem e/ou destino), ultrapassa o número de variáveis disponíveis na base de dados do controlador.
Ativo Indica que a entrada do elemento estava ativa e a transferência definida foi realizada com sucesso.

Este bloco MXX incorpora toda a funcionalidade do bloco Movimentação Indexada, com os recursos adicionais que permitem a movimentação de outros tipos de dados além do tipo M.

Dica

Utilizando este bloco com o parâmetro P4 com valor negativo, é fácil implementar um buffer circular. Considere o seguinte exemplo:

Uma aplicação necessita de um buffer de 20 memórias do tipo M que serão alocadas nas posições M100 a M119. A memória M30 contém um novo valor a ser inserido na posição M100 depois que todos os valores forem deslocados de uma posição para a direita.

Para deslocar os valores do buffer de uma posição para a direita utilize o elemento de movimentação indexada estendida com os seguintes parâmetros: MXX (P1, P2, P3, P4), com P1 = 2, P2 = 100, P3 = 101 e P4 = -19.

Após a execução do bloco acima, o conteúdo do buffer definido será deslocado de uma posição para a direita, perdendo-se o valor da memória M119 e liberando a memória M100 para receber o novo valor disponível na memória M30.