CINEL - FORMAÇÃO EM LABVIEW

UNIDADE 3 - Passagem de dados de Loops por "Túneis"

Ponto 5 - Shift-Registers - Acesso a dados de iterações anteriores

ponto anterior  ponto seguinte
5 de 7


Acesso a Dados de Ciclos Prévios

Quando programar com ciclos, necessita de aceder a dados de iterações de ciclos anteriores. Por exemplo, pode existir um VI que lê a temperatura e a disponibiliza num gráfico. Se desejar disponibilizar a média da temperatura, necessita de utilizar dados gerados em prévias iterações. As duas formas de aceder a esses dados incluem o shift register e o Feedback Node.

Shift Registers

Utilize shift registers em For Loops e While Loops para transferir valores de um ciclo de iteração para o próximo. Shift registers são semelhantes a variáveis estáticas em linguagens de programação baseadas em texto.

Um shift registers aparece como um par de terminais, Figura 1, opostos verticalmente no limite do ciclo. O terminal do lado direito contém uma seta direccionada para cima e guarda os dados aquando da conclusão de uma iteração. O LabVIEW trasfere os dados ligados ao lado direito do register (registador) para a próxima iteração. Crie um shift register clicando o ciclo no limite do lado esquerdo ou o lado direito e seleccione Add Shift Register do menu de atalho.
O shift register transfere qualquer tipo de dados e automaticamente altera o tipo de dados para o tipo de dados do primeiro objecto ligado ao shift register. Os dados a ligar aos terminais de cada shift register têm que ser do mesmo tipo de dados.
Para inicializar o shift register, ligue qualquer valor externo ao ciclo ao terminal esquerdo. Se não iniciar o shift register, o ciclo utiliza o valor escrito no shift register da última vez que o ciclo foi executado; se o ciclo nunca foi executado é utilizado o valor por defeito (conforme o tipo de dados).
Utilize o ciclo com um shift register não iniciado para executar o VI repetitivamente, para que cada vez que o VI seja executado, a saída inicial do shift register é o último valor da execução prévia. Utilize um shift register não iniciado para preservar o estado de informações entre execuções subsequentes de um VI. O último valor armazenado no shift register continua no terminal direito depois da execução do ciclo. Se ligar o terminal direito fora do ciclo, o cabo transfere o último valor guardado no shift register.
Pode adicionar mais do que um shift register a um ciclo. Se tiver múltiplas operações dentro de um ciclo utilize múltiplos shift register para armazenar os valores dos dados dos diferentes processos na estrutura. O diagrama de blocos (Figura 1) utiliza dois shift register inicializados.

Figura 1

Stacked Shift Registers (Registo de alterações em pilha)
Para criar um tacked shift register, clique lado direito o terminal esquerdo e seleccione Add Element do menu de atalho. Stacked shift registers permitem aceder a dados de iterações de ciclos anteriores. Stacked shift registers recordam os valores de iterações prévias e levam estes valores para as próximas iterações.
Stacked shift registers (Figura 2) só podem ocorrer no lado esquerdo do ciclo porque o terminal direito transmite apenas os dados gerados da iteração actual para a próxima iteração.

Figura 2

Se adicionar mais de dois elementos ao terminal esquerdo, os valores das últimas três iterações são levados para a próxima iteração; o valor da iteração mais recente encontra-se guardado no topo do shift register. O segundo terminal guarda os dados transmitidos da iteração anterior, o terminal de baixo guarda os dados da penúltima iteração.

Feedback Nodes
O Feedback Node, aparece automaticamente no For Loop ou While Loop se ligar a saída, função ou grupo de subVIs à entrada função ou grupo de subVIs de um VI. Tal como o shift register quando o ciclo compara uma iteração e envia esse valor à próxima iteração do ciclo; transfere qualquer tipo de dados. Utilize o Feedback Node para evitar cabos compridos desnecessários aos ciclos. A seta do Feedback Node indica em que direcção os dados devem avançar ao longo do cabo.
Pode também seleccionar o Feedback Node na palete Structures e colocá-lo dentro do For Loop ou While Loop. Se colocar o Feedback Node no cabo antes de ligar o cabo que liga os dados ao túnel, o Feedback Node passa cada valor de volta à entrada do VI e depois passa o último valor par ao túnel. O exercício Accessing Previous Data VI contém um exemplo desse comportamento.

 


 

ponto anterior    ponto 5 de 7    ponto seguinte