Instituto Federal Fluminense Campus Campos Centro Curso Labview básico e aquisição de dados. Engenharia de Controle e Automação. Prof. William da Silva Vianna Conteúdo - Labview Linguagem G versus linguagem estruturada; ●Uso do ambiente de desenvolvimento Labview (painel frontal, diagrama de blocos, ajuda, exemplos, toolbox, etc); ●Conceito de VI e convenções; ●Tipos de dados; ●Estruturas de seleção e repetição; ●Ferramentas e técnicas de depuração do código; ●Registrador de deslocamento; ●Sub-VI; ●Documentação do código; ●Customização da aplicação; ●Compilação do código e Run Time Engine; ●Programação com thread e otimização do processamento; ●Máquina de estados; ●Customização da VI: property node; ●Aplicações práticas e exemplos. ● William da Silva Vianna - [email protected] 2 Conteúdo - DAQ Definições; ●Sinais versus tipos I/O; ●Tipos de dados de aquisição; ●Conceitos: trigger, amostras, taxa de amostragem, hardware de aquisição; ●Circuitos de ligação: simples, diferencial, referenciado e não referenciado; ●NI-DAQmx; ●MAX; ●Aplicações práticas; ● William da Silva Vianna - [email protected] 3 Problema O que você faz se precisa de uma FERRAMENTA DE DESENVOLVIMENTO DE SOFTWARE para implementar a solução de problema de medição, automação ou até mesmo P&D de forma rápida e com custo relativo baixo ? William da Silva Vianna - [email protected] 4 Fica com cara de abandonado ?! William da Silva Vianna - [email protected] 5 Definição de Labview O LabVIEW (acrónimo para Laboratory Virtual Instrument Engineering Workbench) é uma linguagem de programação gráfica originária da National Instruments®. A primeira versão surgiu em 1986 para o Macintosh e atualmente existem também ambientes de desenvolvimento integrados para os Sistemas Operacionais Windows, Linux e Solaris. William da Silva Vianna - [email protected] 6 Labview Aplicação e programação Os principais campos de aplicação do LabVIEW são a realização de: - medições; - automação. A programação é feita de acordo com o modelo de fluxo de dados, o que oferece a esta linguagem vantagens para a aquisição de dados e para a sua manipulação. William da Silva Vianna - [email protected] 7 Labview Conceitos Os programas em LabVIEW são chamados de instrumentos virtuais ou, simplesmente, IVs. São compostos pelo painel frontal, que contém a interface, e pelo diagrama de blocos, que contém o código gráfico do programa. O programa não é processado por um interpretador, mas sim compilado. Deste modo a sua performance é comparável à exibida pelas linguagens de programação de alto nível. A linguagem gráfica do LabVIEW é chamada "G". William da Silva Vianna - [email protected] 8 Linguagem G versus linguagem estruturada Linguagem G Linguagem estruturada #include <stdio.h> #include <stdlib.h> int main (void) { int a, b; double media; scanf ("%d %d", &a, &b); media = (a + b) / 2.0; printf ("A média de %d e %d é %f\n", a, b, media); return EXIT_SUCCESS; William da Silva Vianna} - [email protected] 9 Tão simples que sobra tempo para outros afazeres. William da Silva Vianna - [email protected] 10 Uso do ambiente de desenvolvimento Labview William da Silva Vianna - [email protected] 11 Menu do Labview Na barra de ferramentas do menu do Labview existem alguns botões importantes. Da esquerda para direita: 1 – executa o código uma vez. Deve ser usando quando o programa tem loop de controle ou deseja-se executá-lo apenas uma vez. Este botão também indica linhas (fios) desconectados; 2 – executa o código indefinidamente. Não deve se utilizado quando o programa possui alguma estrutura de loop para controle; 3 – finaliza a execução; 4 – pausa a execução; 5 – debug do código. William da Silva Vianna - [email protected] 12 Fios desconectados ou quebrados Os fios podem estar quebrados devido a ligação que não leva a nenhum lugar ou devido a incompatibilidade entre tipos de dados. William da Silva Vianna - [email protected] 13 Labview Conceitos Os blocos de funções são chamados de instrumentos virtuais - IV; ●O programador liga IVs com linhas (fios) de ligação; ●As cores e espessuras das linhas definem o tipo de dado; ●Os IVs podem estar interligados com muita complexidade; ●Muitos IVs e primitivas em LabVIEW são polimorfos; ● William da Silva Vianna - [email protected] 14 Labview Conceitos A entrada de dados no painel frontal é feita por IVs de controle; ●A saída de dados no painel frontal é feita por IVs de indicação; ●Os controles e indicadores no diagrama de blocos possuem correspondentes no painel frontal; ●Por convenção, os IVs possuem entradas de dados pela direita e saídas pela esquerda; ●O código deve ser comentado com descrições que explicam o funcionamento. Este recurso deve ser usado para documentar o código e é utilizado por todo bom programador. William da Silva Vianna - [email protected] 15 ● Tipos de dados numéricos William da Silva Vianna - [email protected] 16 Tipos de dados Tipos de dados são diferenciados pelas cores e espessuras. Os arrays possuem espessuras tanto maior quanto maior a dimensão. William da Silva Vianna - [email protected] 17 Tipos de dados O tipo Waveform é um tipo especial. É um cluster composto pelos seguintes tipos: ●Time; ●DBL; ●Array 1D (DBL). William da Silva Vianna - [email protected] 18 Tipos de dados Controles de arrays de uma e duas dimensões William da Silva Vianna - [email protected] 19 Busca por IVs A busca e ajuda devem ser utilizadas sempre que necessários. O Labview possui muitos IVs prontos e exemplos. No portal da National existem muitos exemplos que ajudam no desenvolvimento (www.ni.com ). William da Silva Vianna - [email protected] 20 Busca por soluções O portal da National Instruments possui muitos recursos http://www.ni.com . ●Exemplos de código; ●Tutoriais; ●Forums; ●Download de softwares diversos; ●Manuais; ●Etc. USE-O. William da Silva Vianna - [email protected] 21 Paletas do Labview As paletas de funções, controles e indicadores são distintas para o painel frontal e diagrama de blocos. Existem centenas de paletas de funções que podem ser incorporadas ao Labview. Estas paletas são criadas a partir do próprio Labview e possuem funções específicas para as diversas áres, como por exemplo: biologia, química, física, espacial, simulação, controle avançado, financeira, etc. William da Silva Vianna - [email protected] 22 Funções do diagrama de blocos Numérico e String William da Silva Vianna - [email protected] 23 Funções do diagrama de blocos Booleano e Array William da Silva Vianna - [email protected] 24 Funções do diagrama de blocos Estruturas e Comparação William da Silva Vianna - [email protected] 25 Funções do diagrama de blocos Cluster e I/O de arquivo. William da Silva Vianna - [email protected] 26 Funções do diagrama de blocos Waveform e Análise William da Silva Vianna - [email protected] 27 Painel Frontal Booleano, Array & Cluster, Conteiner William da Silva Vianna - [email protected] 28 Painel Frontal Decorativo, Diálogo, Gráficos William da Silva Vianna - [email protected] 29 Painel Frontal I/O, Listas & Tabelas, Numéricos William da Silva Vianna - [email protected] 30 Painel Frontal Menu & Enumeração, Refnum, String & Path. William da Silva Vianna - [email protected] 31 Atividades Comente o código e organize as ligações. Deixe o código legível e procure não fazer POG, pois na linguagem ”G” esta é uma prática comum. William da Silva Vianna - [email protected] 32 Não faça gambiarras, documente o código. William da Silva Vianna - [email protected] 33 Atividades iniciais Cria um programas para: 1 - somar dois números e apresentar o resultado. A entrada dos números deve ser feita por dois controles numéricos. Execute e teste; 2 – faça um gráfico da soma dos números (1) usando o chart. Observe a velocidade que os dados são plotados no gráficos. Resolva o problema usando uma temporização; William da Silva Vianna - [email protected] 34 Atividades iniciais 3 – somar dois vetores (array 1D) de tamanho 1x4 de double. Após plote em um gráfico. A entrada dos das dos vetores deve ser feita por controles; 4 – crie um programa para gerar um sinal senoidal de 100 Hz com amplitude 1 e plotar em um gráfico (Graph); 5 – altere o programa anterior de forma a ajustar a frequência com um slider; 6 – duplique o código de geração de sinal e plote no mesmo gráfico (Graph). Use o build array; William da Silva Vianna - [email protected] 35 Atividades iniciais 7 – faça a composição dos dois sinais senoidais e plote em um gráfico (graph). Varie as frequências base e observe o comportamento; 8 – calcule a FFT do sinal, resultante da composição, removendo do domínio do tempo e colocando no domínino da frequência. Plote o sinal resultando no gráfico. Compare os picos com as frequências iniciais geradas; 9 – insira ruído de amplitude 0,2 e verifique os gráficos do sinal e FFT. FFT – fast Fourier transform William da Silva Vianna - [email protected] 36 Otimização do processamento do PC (Dica) Sempre que possível utilize no código ”Wait Until Next ms Multiple”. Veja o comparativo do processamento da máquina com e sem este IV. 95% de uso da CPU sem a IV e menos de 1% com o uso. William da Silva Vianna - [email protected] 37 Estruturas William da Silva Vianna - [email protected] 38 Estrutura Case A estrutura de seleção executará o código conforme o resultado da condição. Também pode-se implementar estrutura de múltipla escolha com mais de duas opções. William da Silva Vianna - [email protected] 39 Atividade – Estrutura Case 10 - Cria um programa para somar ou subtrair dois números. A operação deve ser selecionada por uma chave (boolean). Se chave == 1 então Resultado = número1 + número2 Senão Resultado = número1 – número2 FimSe William da Silva Vianna - [email protected] 40 Atividade – Case - Resposta William da Silva Vianna - [email protected] 41 Atividade - Estrutura Loop 11 – Crie um programa para gerar 10 números aleatórios entre 0 e 10 em intervalos de 1 segundo e apresentar na tela um por vez; 12 – Crie um programa para criar um array 1D com 10 números aleatórios entre 0 e 10. Ao finalizar o array 1D deve ser apresentado na interface (use o Tunnel); 13 – Crie um programa para fazer a média dos números do vetor 1D criado; William da Silva Vianna - [email protected] 42 Atividade - Estrutura Loop 14 – Crie um programa com um slider ajustável entre 0 e 10 de double. Deve ser calculada e apresentada a média dos 3 últimos valores ajustados com intervalo de 0,5 segundo, ou seja, nos últimos 1,5 segundos passados (use o shift register); 15 – Altere o programa para calcular a média apenas quando houver novo valor no slider. William da Silva Vianna - [email protected] 43 Ferramentas e técnicas básicas de depuração do código Execução highlight – permite observar o fluxo de dados com os repectivos valores. Breakpoints – para o execução do programa no ponto indicado. William da Silva Vianna - [email protected] 44 Ferramentas e técnicas básicas de depuração do código Probe – cria medidores nas linhas para visualizar os dados trafegados no fluxo. William da Silva Vianna - [email protected] 45 Sub-VI Sub VI são utilizadas para tornar o código mais legível, organizado e modularizado. A criação de sub-VI pode ser feita de várias formas. No canto superior direiro existe o ícone da VI, este pode ser editado com o editor de icone. Assim como as entradas e saídas da sub-VI podem ser definidas. William da Silva Vianna - [email protected] 46 Atividade - Sub-VI 16 - Altere o programa 12 de forma a se tornar uma sub-VI com os seguintes parâmetros; Entrada – número de elementos do array 1D Saída – Array 1D com os números aleatórios. 17 – Edite o ícone da sub-VI e altere o help desta sub-VI. Vá em File → VI Properties → Documentation 18 – Implemente um programa que use use a subVI criada no item 16. Durante a edição do programa, clique em Ctrl + H e leia o texto da ajuda sub-VI criada. William da Silva Vianna - [email protected] 47 Customização da aplicação A aplicação pode ser totalmente customizada usando o menu ”VI Properties” acessível por ”File.” William da Silva Vianna - [email protected] 48 Customização da aplicação É possível: - alterar o ícone da aplicação; - documentar o código e ajuda; - definir histórico de versões; - definir senha para acesso ao diagrama de blocos da aplicação; - definir a aparência da janela e botões; - definir a forma de execução; - definir opções de impressão; - e várias outras customizações. Após compilado, as customizações são levadas para o arquivo executável. William da Silva Vianna - [email protected] 49 Compilação O código do Labview pode ser compilado e executado em outra máquina sem o Labview instalado. Para isto é necessário instalar uma biblioteca gratuita chamada Runtime Engene que pode ser obtida no site na National ( http://www.ni.com). http://www.ni.com Também é preciso possuir a licença do Labview que permita a compilação do código (Build Application). William da Silva Vianna - [email protected] 50 Compilação Muitos desenvolvedores distribuem seus programas criados a partir do Labview. Estes programas são customizados para remover as características que indicam o ambiente de desenvolvimento. Interface usada para compilar a aplicação. William da Silva Vianna - [email protected] 51 Otimização do código Máquina de estados Uma máquina de estados finitos ou Autômato Finito é uma modelagem de um comportamento, composto por estados, transições e ações. Um estado armazena informações sobre o passado, isto é, ele reflete as mudanças desde a entrada num estado, no início do sistema, até o momento presente. Uma transição indica uma mudança de estado e é descrita por uma condição que precisa ser realizada para que a transição ocorra. Uma ação é a descrição de uma atividade que deve ser realizada num determinado momento. William da Silva Vianna - [email protected] 52 Otimiação do código Máquina de estados O design da máquina de estados é uma ótima forma de documentar o solução do problema baseado em estados. William da Silva Vianna - [email protected] 53 Otimiação do código Máquina de estados No Labview a máquina de estados pode ser implementada com as estruturas de loop e case. A sequência dos estados é determinada por lógica ou estrutura de eventos com auxílio do registrador de deslocamento. William da Silva Vianna - [email protected] 54 Otimiação do código Máquina de estados William da Silva Vianna - [email protected] 55 Conteúdo - DAQ Definições; ●Sinais versus tipos I/O; ●Tipos de dados de aquisição; ●Conceitos: trigger, amostras, taxa de amostragem, hardware de aquisição; ●Circuitos de ligação: simples, diferencial, referenciado e não referenciado; ●NI-DAQmx; ●MAX; ●Aplicações práticas; ● William da Silva Vianna - [email protected] 56 DAQ - Definição Aquisição de dados é o processo de medir um fenômeno elétrico ou físico como tensão, corrente, temperatura, pressão ou som. Aquisição de dados baseada em PC utiliza uma combinação de hardware modular, software de aplicação e um computador para obter as medições. Embora cada sistema de aquisição de dados (DAQ) seja definido pelos seus requisitos da aplicação, cada sistema compartilha um objetivo em comum, adquirindo, analisando, e apresentando a informação. William da Silva Vianna - [email protected] 57 DAQ - componentes Os componentes dos sistemas de aquisição de dados incluem: * Sensores que convertem parâmetros físicos em sinais elétricos; * circuito de condicionamento de sinal para converter os sinais dos sensores em uma faixa que pode ser convertida para valores digitais; * conversores analógico-digitais, que convertem os sinais do sensor condicionados nos valores digitias. William da Silva Vianna - [email protected] 58 DAQ – esquema básico William da Silva Vianna - [email protected] 59 NI-DAQmx NI-DAQmx é o mais novo conjunto de drivers de aquisição de dados da National Instruments. O download pode ser feito gratuitamente em http://www.ni.com/drivers/ NI-DAQmx oferece maior facilidade de uso e desempenho comparado com o driver NI-DAQ tradicional. William da Silva Vianna - [email protected] 60 VISA O Virtual Instrument Software Architecture (VISA) é um padrão para a configuração, programação, sistemas de instrumentação e solução de problemas compreendendo GPIB, VXI, PXI, Serial, Ethernet e/ou interfaces USB. VISA fornece a interface de programação entre os ambientes de hardware e desenvolvimento como o LabVIEW, LabWindows / CVI e estúdio de medição para o Microsoft Visual Studio. NIVISA é a implementação da National Instruments para o padrão VISA I/O. William da Silva Vianna - [email protected] 61 VISA NI-VISA inclui bibliotecas de software, serviços interativos, como o NI Spy e o VISA Controle interativo e programas de configuração através Measurement & Automation Explorer (MAX) para todas as suas necessidades de desenvolvimento. NI-VISA é padrão de toda a linha de produtos da National Instruments. William da Silva Vianna - [email protected] 62 Tipos de sinais Sinal analógico é um tipo de sinal contínuo que varia em função do tempo. Um velocímetro analógico de ponteiros, um termômetro analógico de mercúrio, uma balança analógica de molas, são exemplos de sinais lidos de forma direta sem passar por qualquer decodificação complexa, pois as variáveis são observadas diretamente. Sinal digitial é um sinal que possui apenas dois estados: ligado/desligado, aberto/fechado, acesso/apagado, 0 volts/5 volts, etc. William da Silva Vianna - [email protected] 63 Sensores/Transdutores De forma geral, todos os sensores/transdutores transformam grandezas físicas ou químicas do mundo em real em sinais elétricos analógicos ou digitiais de tensão, corrente e resistência. Estes sinais relacionados com as grandezas originais e condicionadados nos sistemas DAQ. Cada sinal é ligado a um canal ou ponto de medição do sistema DAQ. William da Silva Vianna - [email protected] 64 Canais Número de Canais – O número de sinais analógicos/digital que o DAQ é capaz de medir. Os canais analógicos podem possui ligação single-ended, pseudo-diferencial e diferencial. Os canais single-ended têm todas as entradas referenciadas em um terra comum, que é conectada ao terminal terra de um computador. Canais pseudo-diferenciais são todos referenciados a um terra comum, mas este terra não é conectado ao terra do computador. Entradas diferenciais têm uma referência independente para cada canal. William da Silva Vianna - [email protected] 65 Resolução Resolução (Resolution) – O número de bits que o ADC (A/D) utiliza para representar o sinal analógico. Quanto maior a resolução, maior o número de divisões em que a faixa do sinal será representada, sendo assim quanto maior a resolução mais sensível é o ADC para as variações de tensão em uma mesma faixa de entrada e ganho. A menor variação de tensão detectável (também chamada de largura de código – code width) para um dispositivo DAQ ideal é determinada por: Menor variação de tensão detectável = faixa / (ganho*2^resolução) William da Silva Vianna - [email protected] 66 Resolução Resolução é apenas uma indicação da precisão de um dispositivo DAQ. Deve-se considerar pelo menos a precisão relativa (linearidade), tempo de ajuste, erros de offset e erros de ganho para entender por completo a precisão de um determinado produto DAQ. William da Silva Vianna - [email protected] 67 Taxa de amostragem máxima Taxa de Amostragem Máxima (Max Sampling Rate) – A maior taxa que o circuito pode digitalizar um sinal analógico de entrada. O produto pode digitalizar ou operar em diversas outras taxas mais lentas. William da Silva Vianna - [email protected] 68 Faixa do sinal de entrada Faixas do Sinal de Entrada (Input Signal Ranges) – As escalas de tensão nas quais um dispositivo DAQ pode ser configurado para aceitar e converter um sinal com precisão. A combinação da faixa de entrada e o ganho determinam qual o nível de tensão é aplicado aos ADCs de um dispositivo DAQ, é chamada de faixa do sinal de entrada atual. Pode-se calcular a faixa do sinal de entrada atual da seguinte maneira: Faixa do sinal de entrada atual = Faixa do Sinal de entrada / Ganho William da Silva Vianna - [email protected] 69 Faixa do sinal de entrada Exemplo Um dispositivo que possui uma faixa de entrada de 0 a 10 V e ganho configurado para 100, isso significa que o produto pode receber sinais com amplitude entre 0 a 0.1V. A faixa de entrada e o ganho são configurados no hardware em alguns produtos ou através de software em outros. A especificação da Tensão Máxima de Trabalho é relacionada com a faixa do sinal de entrada para sinais que apresentam tensão em modo-comum. A especificação de Proteção de sobretensão indica o quanto pode-se exceder a faixa do sinal de entrada sem danificar o produto. William da Silva Vianna - [email protected] 70 Trigger O trigger é um sinal que pode ser utilizado para iniciar o processo de conversão A/D ou D/A, ou até mesmo uma leitura discreta. O tiger pode ser analógico ou digital. Alguns hardwares DAQ possuiem entradas específicas para trigger. William da Silva Vianna - [email protected] 71 Tarefa de leitura/escrita NI-DAQ A tarefa de leitura/escrita do sinal na analógico ou digital em seu respectivo canal é realizada em três etapas básicas no NI-DAQmx. ●Criação da tarefa; ●Leitura/escrita; ●Finalização da tarefa. Podem existir outras etapas como: trigger, clock externo/interno, etc. William da Silva Vianna - [email protected] 72 Tarefa de leitura corrente NI-DAQ William da Silva Vianna - [email protected] 73 Tarefa de leitura com trigger NI-DAQ William da Silva Vianna - [email protected] 74 NI-DAQ Assistant O DAQ Assistant é uma forma muito simples de configurar a tarefa de leitura/escrita do sinal. Este assistente resolve a maioria dos problemas de aquisição. USE-O. William da Silva Vianna - [email protected] 75 Tão simples que até a Barbie usa o DAQ Assitant William da Silva Vianna - [email protected] 76 Measurement & Automation Explorer (MAX) Measurement & Automation Explorer (MAX) possibilita acesso a todos os seus dispositivos DAQ da National Instruments, GPIB, IMAQ, IVI, Movimento, VISA, e VXI. Com MAX, pode-se configurar o hardware National Instruments e software, adicionar novos canais, interfaces e instrumentos virtuais, executar diagnósticos do sistema e visualizar os dispositivos e instrumentos ligados ao seu sistema. MAX é instalada automaticamente com o NI-VISA versão 2.5 ou superior ou NI-VXI versão 3.0 ou superior. As versões mais novas permitem criar hardware virtual para fins de teste. William da Silva Vianna - [email protected] 77 Atividade DAQ 19 – Execute o MAX. Crei um hadware virtual conforme o indicado e especificado pelo professor; 20 – Ainda usando o MAX, use o assistente para verificar como seria feita a ligação elétrica da entrada analógica especificada pelo professor; 21 – Feche o MAX. Execute o Labview e crie um programa para realizar a leitura da primeira entrada analógica (use o DAQ Assistant). Plote o sinal em um gráfico. William da Silva Vianna - [email protected] 78 Continue os estudos, pois se ele consegue também podemos. William da Silva Vianna - [email protected] 79