Como enviar dados de uma iteração a outra em um loop no LabVIEW

Incluído nesta seção

Quando estiver programando com loops, muitas vezes você precisará acessar dados de iterações anteriores do loop no LabVIEW. Por exemplo, se você estiver adquirindo uma amostra de dados em cada iteração de um loop e quiser calcular a média das amostras a cada cinco coletas, precisará reter os dados das iterações anteriores do loop.

Shift registers

 

Vídeo: Shift registers

Quando quiser passar pelo loop valores de iterações anteriores para a próxima iteração, você poderá usar shift registers. Um shift register é mostrado como um par de terminais, onde cada terminal é colocado em uma das bordas verticais do loop.

O terminal do lado direito do loop contém uma seta que aponta para cima. Este terminal armazena os dados de uma iteração concluída. O LabVIEW transfere os dados conectados ao lado direito do registrador para a próxima iteração. Após a execução do loop, o terminal do lado direito do loop devolve o último valor armazenado no shift register.

Para criar um shift register, clique com o botão direito na borda esquerda ou direita de um loop e selecione Add Shift Register no menu de atalhos.

Shift registers transferem qualquer tipo de dados, assumindo automaticamente o tipo de dados do primeiro objeto conectado a ele. Os dados que você conectar aos terminais de cada shift register deverão ser de um mesmo tipo.

Você pode colocar mais de um shift register em um loop. Para executar diferentes operações que utilizam valores de iterações anteriores no loop, você poderá utilizar vários shift registers para armazenar os valores de dados de diferentes processos da estrutura, como mostrado na figura 1.

Figura 1. Como usar vários shift registers

Como inicializar shift registers

Inicializar um shift register significa definir o valor que o shift register enviará na primeira iteração do loop quando o VI for executado. Para inicializar um shift register, conectamos um controle ou constante ao terminal do shift register, do lado esquerdo do loop, como mostrado na figura 2.

Figura 2. Shift register inicializado

Na figura 2, o loop For é executado cinco vezes, incrementando em 1 a cada vez o valor transportado pelo shift register. Após cinco iterações do loop For, o shift register passa o valor final, 5, ao indicador e o VI conclui sua execução. Sempre que o VI é executado, o shift register começa com o valor  0. Se o shift register não for inicializado, o loop utilizará o valor gravado no shift register na última vez que o loop foi executado. Ou, se o loop nunca tiver sido executado, será utilizado o valor padrão do tipo de dados. Você pode usar um shift register não inicializado para preservar informações de estado de uma execução de um VI para a seguinte.

Figura 3. Shift register não inicializado

Na figura 3, o loop For é executado cinco vezes, incrementando em 1 a cada vez o valor transportado pelo shift register. Na primeira vez que você executar o VI, o shift register será iniciado com o valor 0, que é o valor padrão para números inteiros de 32 bits. Após cinco iterações do loop For, o shift register passa o valor final, 5, ao indicador e o VI conclui sua execução. Na próxima vez que você executar o VI, o shift register começará a trabalhar com o valor 5, que foi o último valor obtido na execução anterior. Após cinco iterações do loop For, o shift register passa o valor final, 10, ao indicador. Se você executar o VI novamente, o shift register começará com o valor 10, e assim por diante. Shift registers não inicializados retêm o valor da iteração anterior, até você fechar o VI.

Shift registers empilhados

Usando shift registers empilhados, você pode acessar dados de iterações de loop anteriores. Shift registers empilhados "lembram" valores de várias iterações anteriores e transportam esses valores às próximas iterações. Para criar um shift register empilhado, clique com o botão direito no terminal esquerdo e selecione Add Element no menu de atalhos.

Shift registers empilhados somente podem ser colocados do lado esquerdo do loop, pois o terminal do lado direito somente transfere os dados gerados da iteração atual para a próxima.

Figura 4. Como utilizar shift registers empilhados

Se você incluir outro elemento ao terminal esquerdo no diagrama de blocos anterior, os valores das duas últimas iterações serão transportados à próxima iteração, tendo o valor da iteração mais recente armazenado no shift register de cima. O terminal de baixo armazena os dados enviados a ele na iteração anterior.

Aprenda os conceitos básicos do LabVIEW de uma nova maneira

Aprenda os conceitos do LabVIEW com nossa nova experiência interativa.

Continue seu aprendizado

Anterior Estruturas de execução
Tratamento de erros Próxima