.. include:: glb_defs.txt .. |ico| image:: ../shared_img/_cmd/m1.png .. _`Movimentação Indexada`: Movimentação Indexada ####################### +------------------------------------------------------------+ |Movimentação Indexada | +-------------------+----------------------------------------+ |Caminho |Programa/Editor Ladder/Elementos/Básicos| +-------------------+----------------------------------------+ |Grupo |Movimento | +-------------------+----------------------------------------+ |Tecla de Atalho |X | +-------------------+----------------------------------------+ |Parâmetros |3 | +-------------------+----------------------------------------+ |Entradas |1 | +-------------------+----------------------------------------+ |Tamanho do elemento|3 linhas | +-------------------+----------------------------------------+ |Ícone ||ico| | +-------------------+----------------------------------------+ .. only:: hitec +--------------------------------------------------+ |:ref:`compatibilidade de firmware` | +-------------------+------------------------------+ |Geração de Firmware|GI, GII, GII-DUO, G3, G3S, G3R| +-------------------+------------------------------+ Este elemento possibilita a movimentação de um grupo de memórias inteiras onde a fonte e o destino são indexados pelos parâmetros P1 e P2. Para utilizar o elemento no programa, deve-se posicionar o cursor do editor ladder na posição onde o elemento será inserido, selecionar no menu à esquerda o grupo **Movimento** e clicar no botão associado |ico| ou pressionar a tecla **X**. Símbolo ******** .. image:: _img/_elem/6I.jpg :width: 30 mm Exemplo Movimentação Indexada ****************************** Considere o exemplo indicado na figura a seguir. No instante T1, antes do elemento de movimentação indexada ser executado, o conteúdo das memórias inteiras é o apresentado na tabela T1. Durante a execução do elemento, é realizada a seguinte sequência de operações: 1. O número da memória inicial fonte dos dados a serem transferidos é extraído do conteúdo do parâmetro P1. No exemplo, sendo 6 o conteúdo de M2 (parâmetro P1), a memória fonte dos dados será a memória M6. #. O número da memória inicial destino dos dados a serem transferidos é extraído do conteúdo do parâmetro P2. No exemplo, sendo 10 o conteúdo de M3 (parâmetro P2), a memória destino dos dados será a memória M10. #. O parâmetro P3 indica a memória de onde deverá ser obtido a quantidade de dados a serem transferidos. No exemplo, sendo 2 o conteúdo de M4, serão transferidas 2 memórias consecutivas da fonte (M6) para o destino (M10). Sendo assim, no instante t2, após a execução do elemento, os valores 18 e 19 presentes em M6 e M7 são transferidos para M10 e M11 respectivamente. .. image:: _img/ed_ladder_mov_index.jpg :width: 60 mm Movimentação com operandos K ============================== Os parâmetros P1 e P2 podem ser do tipo constantes inteiras K. Quando especificada uma constante para o parâmetro, o elemento de movimentação indexada trata o valor da constante como o número da memória fonte ou destino. No exemplo anterior, se o parâmetro P1 for especificado como uma constante de valor 3, a movimentação realizada seria da memória M3 para memória M10 e portanto os valores transferidos seriam 10 e 2 respectivamente. Parâmetros ************ +---------------------------------------------------------------------------------------------+ |Descrição dos Parâmetros | +==============+==========+==========+========================================================+ |Parâmetro |Tipo(s) |Valores |Descrição | +--------------+----------+----------+--------------------------------------------------------+ |P1 |K |0..Max(K) |Quando do tipo K, especifica o número da memória M usada| | | | |como fonte de dados para a operação de transferência. | | +----------+----------+--------------------------------------------------------+ | |M |0..Max(M) |Quando do tipo M, especifica o operando de onde será | | | | |obtido o número da memória M usada como fonte de dados | | | | |para a operação de transferência. | +--------------+----------+----------+--------------------------------------------------------+ |P2 |K |0..Max(K) |Quando do tipo K, especifica o número da memória usada | | | | |como destino de dados para a operação de transferência. | | +----------+----------+--------------------------------------------------------+ | |M |0..Max(M) |Quando do tipo M, Especifica o operando de onde será | | | | |obtido o número da memória usada como destino de dados | | | | |para a operação de transferência. | +--------------+----------+----------+--------------------------------------------------------+ |P3 |K |0..Max(K) |Especifica a quantidade de dados que serão transferidos | | | | |a partir da memória fonte para memória destino. |Z1| | | +----------+----------+ | | |M |0..Max(M) | | +--------------+----------+----------+--------------------------------------------------------+ .. rst-class:: tbobs ====== ================================================================================================ |Z1| O sinal (positivo ou negativo) associado a este parâmetro P3 indica a ordem de movimentação dos dados, conforme descrito abaixo: \ Quando a quantidade é um valor positivo, a movimentação ocorre em ordem crescente ou seja, a partir da variável **Origem** (parâmetro P1), incrementando o número da variável a cada valor movimentado até atingir a quantidade de movimentações especificada no parâmetro P3. \ 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 no parâmetro P3. ====== ================================================================================================ 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, portanto | | | | |nenhuma movimentaçãode 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 da memória destino não foi alterado.| | | | |As possíveis causas de falha na execução desta função são:| | | | |* **Overflow na transferência**: A quantidade de dados | | | | |especificada na transferência, ultrapassa o número de | | | | |memórias inteiras definidas na aplicação. | | | | |* **Bloco não contíguo**: A faixa de valores especificada | | | | |pelo operando fonte ou destino inclui memórias voláteis | | | | |e memórias não voláteis no mesmo bloco. | | | | |Cada bloco a ser lido ou copiado deve ser do mesmo tipo | | | | |(volátil ou não volátil) para equipamentos GI, GII e | | | | |GII-DUO. | | | +---------+----------------------------------------------------------+ | | |Ativo |Indica que a entrada do elemento estava ativa e a | | | | |transferência definida foi realizada com sucesso. | +--------+------------+---------+----------------------------------------------------------+ Variáveis do tipo inteiro longo (L) e constantes do tipo inteiro longo (Y) estão disponíveis em equipamentos com suporte para plataforma G3 ou superior. O bloco :ref:`Movimentação Indexada Estendida` acrescenta recursos que permitem a movimentação de outros tipos de dados além do tipo M. .. raw:: pdf PageBreak