LABVIEW – Tip #43 – Close references (fugas de memória)

Nível: Intermédio

Para evitar fugas de memória do programa é necessário prestar atenção ás referencias criadas que não foram fechadas. Depois de criar o código é boa prática criar um teste de stress e verificar se não existem fugas de memória.

As fugas de memória fazem aumentar a memoria usada pelo nosso programa e algures no tempo o programa bloqueia. Como as condições criticas, as fugas de memória não são fáceis de detectar, é necessário testar, testar, testar.

LABVIEW – Tip #41 – Alertar algumas opcões das Ferramentas

Nível - Fácil

Esta é uma dica muito pessoal, porque acho que todos precisam alterar as preferências do programa para criar uma programação mais fácil e intuitiva.

Desabilitar no Block Diagram, 'place front terminal as icons', para tornar o código mais compacto e fácil de ler.

Desabilitar no Block Diagram, 'enable automatic wire routing', para ter o poder de decisão por onde vão passar as ligações dos objectos.

Desabilitar no Front Panel, 'show front panel grid', para estar sempre a ver o resultado final do UI e poder alterar os objectos pixel a pixel.

LABVIEW – Tip #39 – CHANNEL WIRES

Nível: Intermédio

Pode se usar os 'Channel Wires' para passar informação entre ciclos paralelos de uma maneira simples, sem ter de recorrer a queues ou notifiers. Este tipo de comunicação funciona como a arquitectura produtor / consumidor, pois temos de ter alguns cuidados em escolher qual o tipo de ligação a fazer.
TAG - conseguimos garantir a velocidade de execução do ciclo de leitura e pode ter vários módulos de escrita e leitura na mesma ligação, mas a leitura pode perder dados.
STREAM - garante a sequência dos dados com um determinado tamanho de buffer, mas a leitura pode ficar com uma fila de dados, ficando em atraso em relação à escrita.
MESSENGER - garante a sequência dos dados com um determinado tamanho de buffer e pode ter vários módulos de escrita e leitura na mesma ligação, mas a leitura pode ficar com uma fila de dados, ficando em atraso em relação à escrita.

LABVIEW – Tip #36 – Change Data Dialog

Nível: Intermédio

Por vezes é necessário criar uma função de dialogo para se poder inserir dados ou mesmo configurar algo no programa. O nossa função de dialogo deverá ser simples para que o utilizador saber intuitivamente o que fazer e podemos adicionar verificações aos 'inputs' para que não haja erros no programa com valores mal inseridos.

LABVIEW – Quiz #2

Na figura seleccione a letra correspondente a:

SHIFT REGISTER
CONDITIONAL TERMINAL
CONCATENATING TUNNEL
CONDITIONAL TUNNEL
INTERATION TERMINAL
TUNNEL
INDEXING TUNNEL

B - SHIFT REGISTER
E - CONDITIONAL TERMINAL
F - CONCATENATING TUNNEL
G - CONDITIONAL TUNNEL
D - INTERATION TERMINAL
A - TUNNEL
C - INDEXING TUNNEL

LABVIEW – Tip #34 – Serial (VISA) – Arduino (button) to LabVIEW

Nível: Intermédio

A comunicação com um dispositivo exterior pode ser feito através de USB-Serial-VISA. Neste exemplo o arduino envia pela porta serie a letra 'A' quando o botão está premido e 'a' quando é libertado, enquanto isso o labVIEW está à espera da comunicação através de um ciclo produtor, que tem a capacidade de recuperar se a porta serie for desligada. O ciclo consumidor faz a alteração do valor num control.

LABVIEW – Quiz #1

Qual a 'function node' que é executada primeiro?

Multiply - Possivel
Divide - não
Subtract - não
Pi - Possivel
Add - Possivel
Exponential - não

Qualquer uma das funções multiply, pi e add pode ser a primeira a ser executada, pois estão todas com valores nas suas entradas quando o programa começa. Como não se sabe qual delas o compilador decide a sua ordem, temos de ter cuidado com o nosso código para não criar nenhuma corrida critica.

LABVIEW – Tip #33 – Histogram + Cursors

Nível: Intermédio

Podemos fazer um histograma com um gráfico XY em modo de barras, para ser mais fácil a criação das barras, existe na palete de probabilidade e estatística a função 'Histogram'. Usando os cursores podemos marcar alguns valores tais como a média e o desvio padrão.

LABVIEW – Tip #23 – Dynamic Threads

Nível :  Avançado

Gosto de comparar uma 'thread' a um balão com um fio ('handle') que o une ao programa que o gerou, para que se possa facilmente controla-lo. Criar programas com 'threads' dinâmicas dá uma grande flexibilidade, pois quando se adiciona mais uma ligação ao sistema não é necessário alterar código e torna-lo mais complexo.

LABVIEW – Tip #22 – Webserver & IOT

Nível : Intermédio

Ao usar um serviço de webserver, pode-se colocar dados na nuvem para que fiquem disponíveis em diversos dispositivos com sistemas operativos diferentes. Este tipo de interconexão poderá fazer parte de um sistema baseado em IOT (internet of things), para se poder interagir com diversos equipamentos (Get/Insert Data, Input/Outputs).

LABVIEW – Tip #16 – Lêr e criar um ficheiro de configuração

Pode-se aproveitar a leitura do ficheiro de configuração (.INI) para criar um valor por defeito no ficheiro - caso o mesmo não exista. Usando o 'stacked sequence structure' ocupa-se menos espaço e a leitura do ficheiro de configuração fica mais organizada.

LABVIEW – Tip #15 – Remover a moldura nos controls

A alteração dos elementos do User Interface faz com que o programa fique mais apelativo e prático de utilizar. Uma das formas mais simples é alterar as cores. Para remover a moldura dos controls pode-se utilizar o pincel da Tools Palette escolhendo a cor transparente como primaria e secundaria.

LABVIEW – Tip #12 – Juntar Arrays com dimensões diferentes

Ao juntar 'arrays' de dimensões diferentes através do 'build array' vai criar um 'array' com uma dimensão superior e vai colocando o valor 'default' nos menores até ficarem com dimensões iguais. Para manter as dimensões dos 'arrays' coloca-se individualmente cada um num 'cluster' e assim já podem ser colocados num 'build array' sem perderem sua dimensão.

LABVIEW – Tip #10 – Sequência do Código

No labview não basta colocar o código da esquerda para a direita, ou mesmo de cima para baixo para garantir a sequência do código. É necessário garantir o um fluxo de informação como desejamos que o programa se comporte, para isso podemos usar algumas ferramentas para garantir a sequência, tais como, usar a linha de Controlo de Erros, Flat Sequence, Stacked Sequence, ciclo FOR com Case Structure, Máquina de Estados ...

LABVIEW – Tip #9 – Icon Editor

É importante ao criar um 'vi' / função alterar o seu ICON, para que seja mais fácil a sua implementação no código. Ao ver o ICON devemos conseguir perceber qual a sua função, para isso tem de ser perceptível o texto (letras grandes e se necessário abreviaturas) e para auxiliar pode-se desenhar algo simples que identifique a função.

apagar o layer
desenhar e gravar um novo template (caso não exista)
escolher o template
criar o icon com base no template

LABVIEW – Tip #8 – Shift Register

Quando é necessário passar dados entre iterações de ciclos deve-se usar o Shift Register para evitar variáveis e garantir o sincronismo. Pode-se puxar o túnel de entrada do Shift Register para obter os valores das iterações anteriores, de cima para baixo (último [-1], penúltimo [-2], antepenúltimo [-3], ...).

LABVIEW – Tip #7 – Ciclos FOR

O número de ciclos pode ser inicializado pelo"N" ou pela entrada de arrays no ciclo FOR. Quando se inicializa com "0" no "N" o código que está dentro do ciclo FOR não irá ser executado e os túneis de saída ficam com os valores default, no caso de ser um túnel simples o valor é default do tipo de variável, já se for um shift register o valor é o que estiver na entrada do mesmo. Ao inicializar com arrays a quantidade de ciclos será definida pelo array menor, todas as outros valores de entrada não alteram a quantidade de ciclos.

LABVIEW – Tip #6 – User Interface

Por vezes o User Interface é mais importante do que o próprio código, sendo a "cara" do nosso programa, por isso devemos trata-lo como tal. Trato o UI como se fosse um quadro, primeiro começo a fazer um croqui onde coloco todos os elementos necessários para a iteração com o utilizador, de seguida continuo a fazer o código (dar vida ao quadro). Ao decorrer do programa cruza-se a informação dos objectos com o equilíbrio do UI, até ter o formato desejado.

LABVIEW – Tip #4 – Function Global Variable

Para se garantir o sincronismo na utilização de variáveis pode-se criar uma função altamente customizável e utiliza-la em qualquer parte do programa. Para criar usa-se um ciclo while de uma única interacção ("true" na condição de saída) alojando um ou mais shift register para guardar a informação. Para as condições de entrada do "case" pode-se utilizar "enum", "string", "numeric", "bollean"... dependendo do pretendido.

LABVIEW – Tip #3 – Master / Slave

Para usar esta arquitectura podemos utilizar queues (filas de dados) para inserir dados no Master (produtor) e retirar os dados num ou mais Slaves (consumidores). Para terminar a execução do Slave poderá ser ligada a linha de erros da Queue na condição termino do ciclo while. (no release queue é necessário colocar a entrada "force destroy" a "true")

LABVIEW – Tip #2 – TypeDef



Ao utilizar estruturas de dados ou mesmo controles, que poderemos vir a alterar no decorrer do programa deve-se utilizar o controle como TypeDef, para quando for necessário fazer uma alteração essa seja reproduzida em todos os sítios onde foi utilizada, poupando tempo e facilitando a alteração do programa para futuras melhorias.

#LABVIEW #TIPS



LABVIEW – Tip #1 – Ciclos While



Quando usamos um ciclo while em labview que serve para a estrutura do programa e não há necessidade de ser executado o mais rápido possível deve-se colocar uma função que faça retardar a execução (ex: wait until).

Desta forma o nosso programa irá funcionar como esperado sem colocar o processador a tentar fazer o maior numero de interacções possíveis e degradar a performance do PC e até mesmo do nosso programa.

#LABVIEW #TIPS