Capítulo 5 Structures A B E C D F G A - Sequence E - Formula Node B - Case F - Variável Global C - For Loop G - Variável Local D - While Loop For Loop • Um For Loop realiza uma operação um certo número de vezes. A letra N, localizada no canto superior esquerdo, representa o número de vezes que queremos que o For Loop se repita. A letra I representa quantas vezes o For Loop já se repetiu. • A figura abaixo demonstra como se representa um For Loop nos métodos tradicionais de programação. • O I, neste caso, começa do 0, e armazena até que ponto o For Loop já se repetiu. O N é o valor máximo. • Repare que o I começa do 0, e não do 1. Essa é uma características da programação. Se não for especificado antes, o valor inicial será 0. • E, para que se repita até 10, por exemplo, o valor de N terá que se 9 ( N -1 ), devido ao valor inicial ser 0, e não 1. While Loop • Um While Loop irá realizar uma operação enquanto uma condição for verdadeira ou não. Isso é estabelecido através de um valor chamado de BOOLEANO. Este tipo de valor só pode ter dois estados: True = Verdadeiro False = Falso • Essa variável, que deverá transmitir um estado BOOLEANO é ligada na seta circular, localizada no canto inferior direito do While, chamada Conditional Terminal ( Terminal Condicional ) • Enquanto o estado for VERDADEIRO, o While fará a operação. Se, porém , ele mudar para FALSO, o processo irá ser finalizado. • E letra I representa o numero de vezes que o While já executou a operação. • A representação do While nos métodos usuais de programação está demonstrado abaixo: • Ele Fará ( DO ) uma operação Enquanto ( WHILE ) uma condição for verdadeira • Uma característica do While é que ele rodará ao menos uma vez, mesmo que a variável seja falsa. • A variável booleana pode ser ligada ao While de duas formas diferentes: Na primeira delas, a variável estará DENTRO do While Neste caso, a variável será verificada e atualizada a cada variação. • Porém, se a variável estiver FORA do While ele rodará apenas uma vez, se ela for FALSA, ou infinitamente, se ela for VERDADEIRA Shift Registers • Shift Registers são utilizados quando se quer armazenar qualquer tipo de valor de variáveis, tais como numéricas, arrays, booleanas, strings, etc de um ciclo de um loop para o próximo. • A seta que aponta para cima, do lado direito representa o valor que será armazenado. Ou seja, a cada ciclo, o valor de saída ficará gravado nela até que seja usado. • Já a seta do lado esquerdo, que aponta para baixo é o valor do ciclo anterior. O zero ligado a ela é o valor inicial. Case Structures • Um Case consiste em dois ou mais sub-diagramas, sendo que cada um deles representa uma opção. • As opções são pré estabelecidas pelo programador, e comparadas a um valor de entrada. Este valor é ligado ao SELECTOR. ( seletor ) • Se o valor de entrada corresponder a algum dos valores pré-estabelecidos, o Case executa o processo relacionado a aquele valor. • Se o valor conectado ao seletor for do tipo booleano, o Case poderá apenas possuir dois estado, um FALSO e outro VERDADEIRO. • Caso seja ligado a um valor numérico, ele poderá ter, no máximo 2 e15 -1 valores. • O padrão de entrada é BOOLEANO, mas pode ser facilmente modificado ligando valores numéricos ao seletor. • Se um número negativo for ligado ao seletor, ele entenderá este número como sendo 0. E, se for ligado um numero maior que o maior numero do Case, ele será entendido como o maior número. • O seletor poderá ser colocado em qualquer posição da borda esquerda, e ele automaticamente se adequará a variável a ele ligada. • Valores que se encontram na entrada da janela do Case poderão ser utilizados por todos os estados do Case . • Não é obrigatório que haja no Case valores de entrada ou saída. Mas se houver algum valor de saída, em algum estado do caso, todos os demais estados deverão prover um valor de saída. Sequence Structures • O que uma Sequence Structure faz é realizar uma série de eventos, um após o outro, ordenadamente, sendo que cada evento deve ser colocado em um Frame diferente. • Para inserir um novo Frame basta dar um clique direito no Frame atual e clicar em Add Frame After, Add Frame Before ou Duplicate Frame, para se adicionar uma Frame antes do atual, depois, ou duplicá-lo, respectivamente. • Os Frames serão utilizados seguindo uma ordem, de acordo com o número que fica no meio da parte superior do Sequence. • Caso haja a necessidade de se utilizar um mesmo Frame mais de uma vez durante todo o processo, não é preciso copiar todo o conteúdo do Frame anterior. • Através do Add Sequence Local pode-se indicar que este frame será utilizado em outros pontos posteriores. Aqui é apresentada uma pequena sequência, que começa no Frame 0 E se estende até o Frame 2 Formula Node • Quando é necessário que se utilize cálculos mais complicados, que seriam muito difíceis de se estar implementando somente ligando os blocos matemáticos, é utilizada um recurso chamado Formula Node. • Este recurso permite ao implementador digitar as equações, de forma simples e rápida. • Ao final de cada equação é obrigatório o uso de ponto e vírgula, que indica ao programa o final da mesma. • As variáveis de entrada são inseridas dando um clique direito no canto esquerdo da Formula Node, e selecionando Add Input. • Para as variáveis de saída, deve-se dar um clique direito no canto direito da Formula Node, e selecionar Add Output. • O programa faz distinção entre variáveis maiúsculas e minúsculas. Se uma variável da equação se apresenta com letra maiúscula, ela deve também estar com letra maiúscula, seja na entrada ou na saída. Variáveis Locais e Globais • As variáveis são indispensáveis em qualquer tipo de problemas, já que permitem armazenar a informação necessária para a resolução de problemas. • No LabVIEW todos os controles introduzidos no Painel Frontal que geram um terminal na janela Diagrama serão variáveis identificadas pelo nome representado na etiqueta ( label ). Mas pode ocorrer que queiramos usar o valor de certa variável em outro subdiagrama ou em outro VI ou, simplesmente, que queremos armazenar um resultado intermediário. A forma mais simples de fazê-lo é gerando variáveis locais e/ou globais dependendo da aplicação. Variáveis Locais • Nas variáveis locais os dados são armazenados em alguns dos controladores ou indicadores existentes do Painel Frontal do VI criado ; é por isso que estas variáveis não servem para trocar dados entre VI’s. A principal utilidade destas variáveis reside no fato de que uma vez criada a variável local não importa o que possa acontecer entre indicador ou um controlador, desde que poderá usar o mesmo diagrama tanto de entrada como saída. • As variáveis locais estão disponíveis no menu Structs & Constants da Paleta de Funções. Variável Local - Exemplo • No exemplo abaixo demonstramos como uma variável local de uma chave booleana pode parar dois While Loops. VARIÁVEL LOCAL Variáveis Globais • As variáveis globais são um tipo especial de VI, que unicamente dispõem do Painel Frontal, no qual se define o tipo de dado da variável e o nome de identificação indispensável para que possamos nos referir a ela depois. • Quando escolhemos a função Global do menu Structs & Constants criamos um novo terminal no Diagrama; este terminal corresponde a um VI que inicialmente não contém nenhuma variável. Para poder adiciona-lo daremos um duplo clique no terminal e se abrirá o Painel Frontal. Variáveis Globais - Cont. 1 • Uma vez aberto, as variáveis são definidas igual a qualquer controle ou indicador de um VI normal. Podemos criar um VI para cada variável global ou defini-las no mesmo VI, que é a opção mais indicada para qualquer aplicação. Quando terminarmos de colocar todas as variáveis gravaremos o VI e o fecharemos. Se uma vez fechado queremos adicionar variáveis novas, bastará voltar a abri-lo e adicionar as mudanças necessárias Variáveis Globais - Cont. 2 • Para adicionar novos terminais que fazem referência às variáveis globais criadas, não executamos a função Global já que isto criaria um novo VI então abriremos o VI existente por meio do comando VI.. da Paleta de Funções e selecionaremos a variável através do comando Select ltem do menu pop-up. Também, este mesmo menu tem outra opção que nos permite usar uma variável já criada para ler dados ou armazená-los, se trata do comando Change To Read Global ou Change To Write Global.