Padrões e exemplos de projetos no LabVIEW 2012

Documentos relacionados
Introdução ao NI LabVIEW. ni.com/portugal

Comunicação de dados para sistemas escaláveis

National Instruments Soluções com projeto gráfico de sistemas para teste, medição e sistemas embarcados

Dicas e truques para acelerar o desenvolvimento em LabVIEW

Leve os seus Sistemas de Controle à Prática

SEMINÁRIOS INTEGRADOS EM SISTEMAS DE INFORMAÇÃO. Luiz Leão

Ferramenta: Spider-UCP. Manual do Usuário. Versão da Ferramenta: 1.0.

Preparando-se para o exame Certified LabVIEW Associate Developer (CLAD)

Open Day Bibliotecas ElipseX

Instituto Superior Técnico. Curso de LabVIEW. Pedro M. Ramos Parte I 14 de Outubro de 2004 IST/DEEC. O que é o LabVIEW?

Sumário. Capítulo 1 Introdução 29. Capítulo 2 Utilizando Objetos 59

Introdução ao Java. Prof. Herbert Rausch Fernandes

Orientação a objetos. Objetos ou Instâncias I

Instituto Superior Técnico. Curso de LabVIEW. Pedro M. Ramos Parte II 21 de Outubro de 2004 IST/DEEC. Arrays

Instrumentação Virtual Estruturas Sequenciais Estruturas de Dados Estruturas de Repetição. Prof. Dr. Eduardo G. Bertogna DAELN-CM/UTFPR

CONTEÚDO PROGRAMÁTICO

National Instruments. Aerospace & Defense Day ni.com

Requisitos do sistema

Tutorial 132 CP DUO Configuração MODBUS Escravo

Conceitos de Programação Orientada por Objectos. Rui Camacho Programação 2

ORIENTAÇÃO A OBJETOS Histórico:

Programação I Curso: Sistemas de Informação. Prof.: José Ronaldo Leles Júnior .:

GRUPO: Rafael Igor Vanderlei Vieira

Gerenciamento Eletrônico de Documentos

Designing Data Intensive Applications

Construa um sistema completo de teste HIL preparado para o futuro

Linguagem de Programação I Apresentação da Disciplina

CIÊNCIA DA COMPUTAÇÃO - LINGUAGEM DE PROGRAMAÇÃO II REVISÃO POO

Virtualização do System302 em ambiente VMWARE

Antes de falarmos do novo modelo, vamos entender como o SophiA trabalhou até hoje.

Metodologia Simplified. António Rocha

Aula 17 Introdução ao jquery

Tutorial 133 DUO Criação de telas e utilização do teclado

Introdução ao C# com o Microsoft Visual Studio Community 2015

Introdução À Engenharia De Software Com Foco No RUP: Rational Unified Process

O que é um sistema distribuído?

Core-Test. Controle de Perdas no Núcleo de Lâminas Estator LHF INSTRUMENTAÇÃO LTDA. Ricardo Guilherme Schmidt

Sistema de Gestão de Recursos Humanos

A crise do software As duas abordagens actuais para o desenvolvimento de software: abordagem clássica abordagem orientada para objectos

Conceitos de Programação Orientada a Objetos

GUIA DE SERVIÇOS DE MANUTENÇÃO DE SISTEMAS

Modelo do Mundo Real. Abstração. Interpretação

Transformando dados em resultados. Fernando Cassão Engenheiro de Vendas Marco Amorim Engenheiro de Vendas

POWERSUPS ENTERPRISE Manual PowerSups Enterprise

CONTEÚDO PROGRAMÁTICO

Análise de Sistemas. Aula 5

POO Paradigma Orientado a Objetos. POO Paradigma Orientado a Objetos. POO Paradigma Orientado a Objetos. POO Paradigma Orientado a Objetos

Versão do documento agosto Usando recursos avançados de geração de relatórios Soluções Ariba On-Demand

Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça. Padrão Observer (Observador)

Guia de instalação. Configuração necessária Instalação e ativação - 1 -

Academia Programador de Aplicações JAVA

Configurar um um início de uma sessão do botão para agentes do telefone IP

Tutorial 139 CP DUO Função PID

Conceitos de Programação Orientada a Objetos

ET7DE - Instrumentação Virtual. Prof. Winderson Introdução ao LabVIEW

Notas sobre a Versão do Controlador de arquivos para HP 3PAR StoreServ

Sumário. 1. Ambiente virtual de aprendizagem (AVA) 6

Guia de Instalação. 1. Guia de Instalação do Nintex Workflow 2010

Unidade 9: Noções de Orientação a Objetos Prof. Daniel Caetano

ET7DE - Instrumentação Virtual. Prof. Winderson Introdução ao LabVIEW

Orientação a Objetos (OO) Java Avançado Revisão do Paradigma de. Orientação a Objetos (OO) Programação Orientada a Objetos. Programação Procedimental

Classes e Objetos. Sintaxe de classe em Java

Engenharia de Software. Gerenciamento de Pessoal. Professor Joerllys Sérgio

Estruturas de Sistemas Operacionais

Plano de Testes VideoSystem

Nota de Aplicação. Suporte Técnico Brasil. Versão: 1.0

Tutorial da ferramenta de modelagem ASTAH (Versão resumida) Prof. Moacyr Franco Neto

Técnicas de Reutilização. Reutilização em Programação Orientada a Objetos. Considere três classes... Reuso de Classes.

S200 connect SOFTWARE DE CONFIGURAÇÃO. Versão 2.16 / Revisão 1

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS

Análise de Sistemas 4º Bimestre (material 3)

Nova funcionalidade de monitoramento em forma de rotor patenteada, incluindo alarmes para aviso precoce dos pontos fracos estruturais

Linguagem de Programação II Relacionamento entre classes

Objetivo. Diagramas de Caso de Uso. História. Diagramas de Caso de Uso. Atores. Atores

Guia de Usuário da Matriz Virtual do Avigilon Control Center. Versão 5.4

Manual Correio de Voz M75S/NG75. INTRODUÇÃO

API DE INTEGRAÇÃO VERSÃO 2. Janeiro/2017. Manual de Integração. Setor de Desenvolvimento

TinyOS. Saymon Castro de Souza. Orientador: Prof. Dr. José Gonçalves Pereira Filho

Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça. Padrão Observer (Observador)

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto

Engenharia de Software

Aula 7 - Análise de Requisitos: descrição de casos de uso. Análise de Sistemas Prof. Filipe Arantes Fernandes

AULA 2 VISÃO BÁSICA DE CLASSES EM PHP

esi Sistemas de Instrumentação

Proposta de uma plataforma de monitoramento e acionamento remoto voltada para sistemas de hardware industriais utilizando LabVIEW

Estrutura de Dados Funções e Procedimentos

Ciclo de vida: fases x atividades

Visão Geral da Norma ISO/IEC 12207

Soluções reutilizáveis para situações ou problemas encontrados comumente em desenvolvimento de software orientado a objetos.

Desenvolvimento Web II

UTILIZANDO ROBÔTICA NO ENSINO DE PROGRAMAÇÃO DE COMPUTADORES UTILIZAÇÃO DO ROBÔ LEGO MINDSTORMS

Envio de SMS pelo Emed

MÓDULO 10 INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA POR OBJETOS O QUE É A PROGRAMAÇÃO ORIENTADA POR OBJETOS 10

Desenvolvendo aplicações Java

Introdução à Análise e Projeto de Sistemas

Meu Blog: Mais sobre o Ubuntu LTS no link:

Criando site. Tutorial Webnode

Estilos Arquiteturais

VIRTUALIZAÇÃO DE SERVIDORES - HYPER-V E SYSTEM CENTER

Transcrição:

Padrões e exemplos de projetos no LabVIEW 2012 Desenvolvendo aplicações escaláveis com arquiteturas orientadas a Objeto Ilton Pereira Gerente da Engenharia de Aplicações Felipe Flores Engenheiro de Aplicações

Você já ouviu isso alguma vez? Adicionar ou alterar suporte à hardware requer tempo e esforço significativos. Para adicionar uma funcionalidade similar a uma já existente, você constantemente copia trechos do código. Ao adicionar uma nova funcionalidade, o código começa a apresentar falhas devido a um mau projeto. Simples Escalável Reutilizável

Agenda Problemas clássicos em desenvolvimento de software Abordagem tradicional de programação no LabVIEW Limitações da abordagem tradicional Orientação a objeto no LabVIEW Actor Framework Modelo de arquitetura orientada a objeto. Feedback Evaporative Cooler - Demonstração

Modelos e projetos de exemplo no LabVIEW Ponto de partida recomendado para a maioria das aplicações em LabVIEW Indica claramente onde adicionar ou alterar uma funcionalidade. Apresenta as melhores práticas para projeto, documentação e organização de código. Capacidade de adicioanar modelos e projetos de exemplo.

Por que o acoplamento (forte) é ruim? Gerenciador da Interface de Usuário Aquisição de Dados Aquisição de Temperatura

Coesão: entendendo o escopo de dados O shift rigister define o escopo do processo. Loop While DAQ Os processos deveriam ser bem coesos. Processos independentes deveriam estar em loops separados. TDMS Interface de Usuário Estado Múltiplos shift registers para um processo indica um superacoplamento.

Desacoplando processos independentes Melhores práticas 1. Identificar o escopo de dados; 2. Delegar ações ao processo apropriado; 3. Não faça polling ou use timeouts* *exceto para códigos que se comunicam com Hardware. Loop orientado à eventos Considerações 1. Como enviar comandos? 2. Como enviar dados? 3. Que processos podem se comunicar entre si? 4. Como atualizar a interface de usuário? Rotina de aquisição de dados

Análise de um loop produtor Processo Ação ou evento Atendeu à condição de parada? Informação Data Envia a informação Envia a mensagem a outro processo, programa ou target.

Análise de um loop produtor de mensagens Processo Ação ou evento Atendeu à condição de parada? Comando Uma mensagem é composta de um comando e dados opcionais. Dado Comunicação entre processos Envia mensagens a outro processo, programa ou target

Construíndo uma mensagem Dados O dado do tipo Variant pode ser convertido em qualquer outro tipo de dado. Diferentes mensagens podem exigir diferentes dados. Comando Constantes enumeradas (Enums) listam todas as opções Exemplos Comando Dado Inicializar Interface de Usuário Cluster contendo os dados de configuração Popular Menu Array de strings para mostrar no menu Redimensionar Janela Array de inteiros [Largura, Altura] Carregar Subpanel Referência do VI a ser carregado Inserir Cabeçalho String Parar -

Processo de gerenciamento de mensagens por fila A estrutura case possui um caso para cada comando Após a execução do comando, o cluster de dados pode ser atualizado. PRIMEIRO ESTADO Cluster de dados para todos os estados Referência à fila Define o escopo de operações que este consumidor pode gerenciar. Tipo de dados específico para este estado Execução do Comando Atendeu à condição de parada? Desenfilerar Ação & Dado? Variant To Data Próximos passos É possível enfileirar uma nova ação para qualquer outro loop, incluindo este.

Criando múltiplos processos consumidores Cenário um: Múltiplas instâncias do mesmo processo Referências à fila Solução Tradicional: Carregar o VI dinamicamente ou duplicar código.

Criando múltiplos processos consumidores Cenário dois: Personalizar o comportamento existente Medição A Medição B Mensagens Configurar Adquirir Medir Fechar Sair Mensagens Configurar Adquirir Medir Fechar Sair Solução Tradicional: Manter duas cópias separadas

Criando múltiplos processos consumidores Cenário três: Adicionar nova funcionalidade Medição A Medição B Mensagens Configurar Adquirir Medir Fechar Sair Mensagens Configurar Adquirir Medir Registrar Fechar Medir Sair Fechar Sair Solução Tradicional: Manter duas cópias separadas

Qual seria então uma outra abordagem para o desenvolvimento de aplicações escaláveis, reutilizáveis e simples?

Classe: Carro Exemplos de objetos dessa classe Propriedades desses itens: - Consumo (km/l) - Índice de segurança - Câmbio manual/automático - Motor - Potência - Combustível Dados Esses itens podem - Ligar - Dirigir - Trocar marcha - Acionar os Air Bags - Viajar no tempo Métodos ni.com

O que é uma Classe do LabVIEW? Classe: Um conjunto de dados e métodos que interagem com esses dados. Objeto: Uma instância de uma classe. Uma classe do LabVIEW é Um cluster glorificado Um tipo de dado definido pelo usuário Um tipo de biblioteca de projeto ni.com

Controle de dados privados: encapsulamento! O motivo pelo qual algumas pessoas chamam classes de um cluster glorificado Somente VIs pertencentes à classe podem acessar ou modificar estes dados. ni.com

O que é herança? Classe Veículo (Pai) Exemplo de métodos: Inicializar Obter capacidade de carga Classe Carro (filho) Um carro é um tipo de veículo. Classe Caminhão (filho) Um caminhão é um tipo de veículo. ni.com

Dynamic Dispatch (Polimorfismo) A ligação dinâmica pode ser imaginada como um polimorfismo no tempo de execução. O objeto que você passa em um terminal de ligação dinâmica determina o método específico a ser invocado no tempo de execução. 15 10 2 Vehicle.lvclass Get Cargo Capacity.vi Truck.lvclass Get Cargo Capacity.vi Car.lvclass Get Cargo Capacity.vi 21

Os métodos de um ator são executados quando uma mensagem é recebida = Log Status Update Update Data Launch Results UI Initialize Hardware Scan Measurement Done Measurement Scan Start Measurement Receive Results Object Métodos do Ator definem as mensagens que podem ser consumidas por ele mesmo

Mensagens podem ser alteradas ou adicionadas pela classe filho = Log Status Update Update Data Launch Results UI Initialize Hardware Scan Measurement Done Measurement Scan Start Measurement Receive Results Object Receive Request for Compatible Receive Request for Hardware Types Hardware Device Names Receive Request to Load New Measurement from Disk Overridden

Demonstração Feedback Evaporative Cooler

Comunidade: LabVIEW Development Best Practices https://decibel.ni.com/content/groups/large-labview-application-development

Novo Usuário Usuário Experiente Usuário Avançado LabVIEW Core 1 LabVIEW Core 2 Certificações Certified LV Associate Developer LabVIEW Core 3 LabVIEW Connectivity Object-Oriented Design and Programming in LabVIEW LabVIEW Performance Certified LabVIEW Developer Managing Software Engineering in LabVIEW Advanced Architectures in LabVIEW Certified LabVIEW Architect Outros Treinamentos LabVIEW Real-Time 1 LabVIEW Real-Time 2 DAQ & Signal Conditioning LabVIEW FPGA LabVIEW Machine Vision

Baixe exemplos e apresentações ni.com/largeapps Ferramentas de engenharia de software Práticas de desenvolvimento Comunidade para grandes aplicações

Perguntas? Muito obrigado!