Você está na página 1de 71

Introduo ao Labview Parte II

Prof. Dr.Valner J. Brusamarello DELET UFRGS

www.chasqueweb.ufrgs.br/~valner.brusamarello

Acesso a arquivos de dados


Acesso a arquivos - High Level: Estas funoes fornecem um elevado grau de abstraao ao usurio. Os arquivos so abertos e fechados automaticamente em uma operaao transparente ao usurio: Escreve em (spreadsheet file) arquivo tipo tabela - Converte um array 1D ou 2D de nmeros com preciso simples para ums string de texto e escreve essa string em um novo arquivo ASCII ou adiciona a string em um arquivo existente. L de um arquivo (spreadsheet file) tipo tabela L um especfico nmero de linhas ou colunas desde o incio de um arquivo texto numrico e converte os dados para um array 2D de dados. Escreve em um arquivo de Medidas - Express VI que escreve dados em um arquivo de medidas (.lvm) de texto ou binrio (tdm). L de um arquivo de medidas Um Express VI que l de um arquivo de medidas (.lvm) ou (tdm)

Acesso a arquivos de dados: faa estes pequenos programas:

Modelo genrico de acesso a arquivos

Acesso a arquivos
Use os I/O VIs de arquivos e funes para abrir e fechar arquivos, ler e escrever, criar diretrio (alm de outras funoes pesquise com o help). Use os high-level I/O VIs de arquivos para fazer operaoes comuns como leitura e escrita de diferentes tipos de dados. Use low-level I/O VIs de arquivos e funes avanadas para controlar operaes individuais de arquivos.

Formato spreadsheet
Trata-se de arquivos ASCII com certa formatao. Usualmente utilizam TAB entre colunas e END OF LINE entre linhas O LABview possui Vis que executam essas funes ou concatenam strings

Formato spreadsheet
Write to Spreadsheet File Pega array 1D ou 2D de dados numricos, formata esses dados e escreve em um arquivo. Format Into File Pega diferentes tipos de dados (string, numeric, Boolean) e escreve essa informao em um arquivo, utilizando um caminho (path). Esta funo pode incluir vrios terminais de dados se necessrio. Array to Spreadsheet String uma funao que formata um array de dados em uma string que pode ser escrita em um arquivo de dados. Concatenate String Funo utilizada para criar estrings longos a partir de strings curtos pr-existentes.

Utilizando os controles
Waveform charts: um nico ponto por vez.

Utilizando os controles
Waveform graph: vrios pontos de uma nica vez.

Utilizando os controles
Graphs tambm permitem a criaao de grficos de alta qualidade (para artigos) com a funao export simplified image . Boto direito no grfico , selecione Data OperationsExport Simplified Image

Exerccio 5
Crie um VI que Create a VI que produz um seno com uma freqncia especfica. Mostre os dados em um Waveform Chart at ser parado pelo usurio. Utilize o Simulate Signal Express VI Utilize o Tone Measurements Express VI (ExpressSignal AnalysisTone
Measurements). Crie indicadores para a frequncia e a amplitude Adicione controles de amplitude e frequncia no simulador

Exerccio 6 - Escrita em arquivo Spreadsheet


Selecione File I/O Open/Create/Replace File. Boto direito no terminal da funao Open/Create/Replace File e selecione Create Constant. Selecione open or create. Adicione um lao While loop da paleta Structures. Coloque a funao Write Text File function dentro do lao While. Boto direito no diagrama de blocos e selecione File I/O Write To Text File. Ligue o terminal refnum da funao Open/Create/Replace File ao terminal da funao Write Text File. Ligue o terminal error da funao Open/Create/Replace File a entrada de erro da funao Write Text File. Coloque uma funao Array to Spreadsheet String dentro do while loop e para a esquerda da funao Open/Create/Replace File function. Boto direito no diagrama de blocos e selecione String Array to Spreadsheet String. Boto direito no terminal format strin da funao Array to Spreadsheet e selecione Create Constant e entre com %0.4f no formato da string. Coloque uma funao Build Array. Boto direito no diagrama de blocos e selecione Array Build Array. Coloque um nmero aleatrio dentro do lao While. Boto direito no diagrama de blocos e selecione Numeric Random Number (0-1). Ligue o terminar error out da funao Write Text File para uma sada do lao. Boto direito no diagrama de blocos para selecionar Cluster & Variant Unbundle By Name. Ligue a sada error out da funao Write Text File a funao Unbundle By Name. Abra a apaleta de funao e selecione Boolean Or. Mude para o front panel e coloque um boto stop button. No diagrama de blocos, ligue o elemento de status do error cluster a entrada x da funao Or. Ligue o boto sop a entrada y. Ligue a sada da funao Or ao terminal condicional da lao While.

Exerccio 6 - Escrita em arquivo Spreadsheet

Adicione uma funao Close File na direita do laoWhile. File I/O Close File. Ligue a sada refnum output tunnel ao terminal de entrada refnuminput da funao Close File. Ligue a sada error output tunnel ao terminal error in da funao Close File. Rode o VI. Voc ver a mensagem Choose or enter path of file to open, entre: spreadsheet.xls.

Alguns recursos de programao


SEQNCIAS
Flat sequence Stacked sequence

LAOS
Case While For Variveis Locais Shift Register Feedback Nodes

Flat Sequence

selecionada

rea

Flat sequencia criada

Diagrama de BlocosFunctions PaletteStructuresFlat Sequence

Flat Sequence
Consiste de um ou mais subdiagramas, ou frames, que so executadas sequencialmente. Clique com o boto direito na borda da estrutura para adicionar e deletar frames. Use a estrutura Flat Sequence para garantir que um subdiagrama execute antes ou depois de outro subdiagrama. Os frames em uma estrutura Flat Sequence so executados da esquerda para a direita e quando todos os valores ligados ao frame esto disponveis. Os dados saem do frame quando a execuao do mesmo estiver concluda.

Stacked Sequence: Similar a flat sequence, porm frames empilhados

rea selecionada

Stacked sequence criada

Diagrama de BlocosFunctions PaletteStructuresStacked Sequence

Stacked Sequence

Prximo quadro Boto direito do mouse Add Frame After

Quadro seguinte criado

Case Structure

Diagrama de BlocosFunctions PaletteStructuresCase Structure

Case Structure
Case Booleano:

Case Structure
Menu superior da estrutura alterna os estados. Apenas um Case visvel por vez.

Cases Booleanos e Numricos

necessrio conectar todas as possibilidades do case se for utilizado um Tunnel

Lao WHILE : implemente e analise com a ferramenta debugg o cdigo abaixo


O lao WHILE executa determinado cdigo ENQUANTO uma condio for satisfeita.

Analogia: WHILE em C X WHILE em G (Labview):

x = 0; while (x < 3) { x++; }

Adicionando o WHILE

1. Selecione o Lao While

2. Arraste o Mouse para desenh-lo em torno do cdigo desejado

Tipos de Condio do WHILE: Implemente os dois cdigos e analise-os com a ferramenta debugg

STOP IF TRUE

CONTINUE IF TRUE

Condio de Parada Contador De Iteraes

Condio de Parada

Exerccio lao while: entenda o cdigo e os blocos envolvidos

Lao FOR
O lao FOR executa um cdigo um nmero N de vezes Analogia: FOR em C X FOR em G (Labview)
for (x=0; x++; x<100) { CDIGO }

No LabVIEW a estrutura de repetio FOR funciona de maneira parecida, porm o cdigo deve estar dentro de uma estrutura denominada subdiagrama (For Loop: executa N vezes o que est no interior do loop e i o ndice que varia de 0 at N-1).

Adicionando o FOR

1. Selecione o Lao FOR

2. Arraste o Mouse para desenh-lo em torno do cdigo desejado

Inserindo um Delay em um Lao: implemente o cdigo e analise-o com a ferramenta debugg

*Delay em ms

Cronometrando um Programa: implemente o cdigo abaixo

Tempo = Tinicial - Tfinal

Frmula Node
Executa as funes no interior do quadro Principais funes: abs(x), acos(x), acosh(x), ..., cos(x), sin(x), exp(x), gamma(x), int(x), ln(x), log(x), log2(x), max(x,y), min(x,y), mod(x,y), pow(x,y), rand(), sqrt(x), entre outras. Principais operadores: ** (exponenciao), +, -, ++, -- (pr-ps-incrementodecremento), ! (negao lgica), ~ (complemento de bits), *, /, %, +, >>, << (deslocamentos) <, >, >=, <=, !=, == (comparaes) &, ^, |, &&, || (operaes lgicas)

Frmula Node: implemente o VI abaixo

Select: implemente o VI abaixo


Select Retorna o valor ligado na entrada t ou f, dependendo do valor de s. Se s V,a funao retorna o valor de t. Se s F, retorna o valor de f.

Exerccio 7 - Loop while


gerar um nmero aleatrio entre 0 e 1 mediante a funo Functions, Numeric, Random Number. O resultado ser representado mediante um grfico no painel de controle: Control, Graph, Waveform Chart. A execuo deve parar quando o usurio selecionar um boto On/Off.

Exerccio 7 - Loop while

Exerccio 7 - Loop while


A funo tem como entrada um valor em milisegundos O valor mximo que se deseja selecionar e 10, portanto, o atraso mximo = 10 * 100ms = 1 segundo.

Exerccio 7 - Loop while

Exerccio 7 - Loop while

Exerccio 7 - Loop while


Para o sistema, situaremos a funo dentro de um lao while que ser executado no mnimo 1x at que a condio determinada pelo boto On/Off seja falso (no caso utilizei um boto do tipo booleano). O nmero de decimais que aparece no visualizador pode ser modificado mediante a propriedade associada FORMAT & PRECISION da janela ou menu contextual.

Exerccio 8 Repita o exerccio 7 para um lao for

Exerccio 9
Implemente um programa, onde uma chave determina se a operao entre dois nmeros adiao (V) ou subtraao (F)

Exerccio 10
Faa um programa em que voc entra com um nmero de 0 a 1000. O cdigo deve gerar aleatoriamente nmeros variando de 0 a 1000. O software deve ter como sada, o tempo para que o nmero gerado coincida com o nmero digitado.

Construindo arrays com loops


Laos For e While podem indexar e acumular arrays. Isto conhecido como auto-indexao. O ponto de indexaao chamado de tnel. O lao For, por default possui autoindexao habilitada. O lao While, por default possui auto-indexao desabilitada. Exemplos: Habilite auto-indexao para coletar valores no lao e construir o array. Todos os valores so colocados em array ao sair do loop. Disabilite auto-indexao se voc estiver interessado apenas no valor final.

Criando um array
Selecione um array em ControlsModernArray, Matrix, and Cluster palette, arraste ao front panel. Arraste um controle ou indicator Voc deve inserir um objeto no array antes de us-lo no diagrama de blocos!

Criando um array
Para adicionar dimenses em um array, boto direito no index display e selecione Add Dimension do menu. 1D Array Single Element:

1D Array Multiple Elements:

2D Array Single Element:

2D Array Multiple Elements:

Criando um array

Time delay e loops temporizados

O Time Delay Express VI atrasa a execuo por um especfico nmero de ms. O lao while no vai executar a iterao at que todas as tarefas no seu interior estiverem completas. Use o Loop temporizado quando voc quiser desenvolver VIs com caractersticas dinmicas de temporizao, ou em situaes diversas. Duplo-click no n de entrada e selecione Configure Timed Loop para mostrar a tela de configurao. Wait Until Next ms Multiple: espera at que o valor de um timer (ms) se torne um determinado mltiplo de um valor em ms. Use esta funo para sincronizar atividades FunctionsProgrammingTimingWait Until Next ms Multiple

Exerccio 11
Abra o exerccio 5 e salve-o com o nome de exerccio 11 Remova o lao While Loop (clique na borda do lao). Remova tambm o boto stop. Substitua o waveform chart por um waveform graph ( ReplaceModernGraphWaveform Graph). Clique com o boto direito no grfico e selecione Visible ItemsCursor Legend. Setar dois cursores (free cursor) Mude o valor mximo da Frequency In no dial para 100. Ajuste um valor default boto direito - selecione Data OperationsMake Current Value Default. Rode o VI e observe o sinal no grfico. Se voc no ver o sinal selecione X ScaleAutoScale X. Mude a frequncia do sinal. Manualmente mea a frequncia e a amplitude do sinal no grfico usando cursoreshe signal on the graph using cursors. Para fazer os cursores aparecerem na tela, clique em um dos trs botes na legenda. Uma vez que os cursores so mostrados voc pode arrast-los e suas coordenadas aparecem nas legendas do cursor.

Exerccio 12

Construir uma matriz que armazenar 100 dados. Primeiro inserir no painel frontal um array Control, Array & Cluster/Array. Depois introduzir dentro de uma seqncia.

Matrizes

Matrizes

Matrizes

Mathscript Node
Depois da verso 8, possvel combinar a linguagem do labview com outras ferramentas atravs de uma espcie de n de scripts chamado de mathscript. O prprio LabVIEW possui um modo texto nativo: MathScript node, Formula node Ainda pode Comunicar-se com outros softwares: Xmath node, MATLAB script node, Maple* node, IDL* node Inclusive, a comunicao pode ser feita por VI Server: Mathematica* VIs, and Mathcad* VIs No LabVIEW 8, pode-se combinar a programao grfica do LabVIEW com uma linguagem textual orientada para aplicaes matemticas, geralmente compatvel com a linguagem dos scripts m-files.

Mathscript Node
Implemente o programa abaixo Explore o bloco com o help ProgrammingStructures Para adicionar variveis, boto direito e escolha Add Input ou Add Output. Nomes de variveis como usadas na formula. Cada linha deve terminar com um ponto-vrgula. Pode-se importar ou exporta m-files clicando no n.

Mathscript window
A MathScript Window um ambiente interativo onde as equaes podem ser prototipadas e os clculos podem ser feitos A MathScript Window e o MathScript Node utilizam a mesma sintaxe e variveis globais. O painel de dados possibilita uma maneira rpida de analisar as variveis como nmeros, graficamente, ou at ecut-los (com a placa de som) Acesse o mathscript dentro do labview no menu tools. Digite help na janela de comando para uma introduao. Tema de casa: explore essa ferramenta.

Mathscript window

Rode o seguinte script


i_menos=0; R=1; L=0.001; E=1 delta_t=0.00001; i_array = []; for t = 0 : 0.1: 50, %for t = 0 : 50 i_mais=i_menos*(1(R/L)*delta_t)+E*delta_t/L; i_array = [i_array; i_mais]; i_menos=i_mais; end t = 0 : 0.1 : 50; figure; plot(t, i_array, 'r-'); xlabel('time'); ylabel('corrente (A)')

Exerccio 13
Create um VI que utiliza o MathScript Node para alterar um sinal simulado e mostre em um grfico. Use o MathScript Window para ver e alterar os dados e ento carregue novamente o script criado no MathScript Node. Abra o arquivo do exerccio 11 onde foi feita uma anlise manual. Salve o VI com um novo nome exercicio11.vi. No diagrama de blocos delete a conexo do sinal simulado a Waveform Graph. Coloque um MathScript Node (ProgrammingStructuresMathScript Node). Boto direito na borda esquerda do MathScript Node - selecione Add Input. De um nome a essa entrada - In. Boto direito na borda direita do MathScript Node e selecione Add Output. D um nome a essa sada -Out. Converta o Dynamic Data Type da sada do VI Simulate Signals para 1D Array de Scalars para entrar no MathScript Node. (ExpressSignal ManipulationConvert from Dynamic Data). Ligue a sada do seno do VI do sinal simulado para a entrada do VI Convert from Dynamic Data. Ligue a sada do array do VI Convert from Dynamic Data VI na entrada In do MathScript Node. Para usar os dados do Simulate Signal VI no MathScript Window necessrio declarar a varivel de entrada como global. Dentro do MathScript Node digite global In;. Retorne ao front panel e aumente a frequencia para um valor entre 50 e 100. Rode o VI. Abra o MathScript Window (ToolsMathScript Window). No MathScript Window, na janela de comandos digite global Ine pressione Enter. Isso permitir ver os dados passados a varivel In no MathScript Node.

Exerccio 13

Exerccio 13
Use a paleta do grfico para fazer zoom nos dados. Boto direito no Cursor 1 e selecione Bring to Center. Explore algumas funoes do grfico.

Exerccio 13
Multiplique os dados por uma funo exponencial decrescente: a. Crie um array de 100 elementos de dados que constituem uma rampa indo de 0.01 a 5 digitando Array = [0.01:0.05:5]; Na janela de comando pressione Enter. b. Crie um array contendo uma exponencial decrescente. Digite Exp = 5*exp(-Array); e pressione Enter. c. Agora multiplique o Exp e o array In, elemento por elemento digitando Out = In.*Exp; e pressione Enter. d. Veja no grfico a varivel Out. V at a aba History e use Ctrl-click para escolher os 4 comandos que voc entrou. Copie estes comandos usando <Ctrl-C>. Na aba Script tab, faa o paste dos comandos no Script Editor usando <CtrlV>. Salve seu script clicando Save na base da janela. Salve como myscript.txt Feche a MathScript Window. Retorne ao diagrama de blocos e carregue o script que voc acabou de digitarcom um clique do bo^~ao direito na borda do MathScript Node e selecione selecting Import Navegue at myscript.txt, selecione-o , e clique OK. Boto direito na varivel Out e selecione Data Type1D-ArrayDBL 1D. O tipo da sada de dados deve ser ajustada manualmente no MathScript Node. Ligue a varivel Out ao Waveform Graph e Retorne ao front panel e rode o VI.

Exerccio 13

Extras:
Array exercise.vi:
Gera um array e controla o acesso dos seus dados colocando-os em um indicador

Extras
Calculator.vi: um case para selecionar uma de quatro operaoes, mostrando 1 resultado.

Extract 2D array
Compe e extrai um array 2D:

Leitura de arquivo
Rode o Vi e procure entend-lo

Escrita de arquivo
Rode o Vi e procure entend-lo

Extras
Manipulao de arquivo texto. Entenda a funao do VI ao lado.

Extras
Substitua o bloco DAQ por um sinal simulado somado a um sinal aleatrio. Implemente e entenda o VI.

Extras
Implemente e entenda o VI a seguir

Extras
Datalogger escrita e leitura. Substitua o bloco DAQ por um simulador e entenda o VI

Você também pode gostar