Técnicas de Desenvolvimento para Sistemas Real Time com LabVIEW



Documentos relacionados
Programação em LabVIEW Real- Time e LabVIEW FPGA

Novas Funcionalidades do LabVIEW 8.6. CompactRIO. André Oliveira Engenheiro de Vendas Alexandre Dias Engenheiro de Vendas

Arquitetura de Sistemas Operacionais

Sistemas Operacionais

Maestro. Arthur Kazuo Tojo Costa Universidade Federal de São Carlos Campus Sorocaba Bacharelado em Ciência da Computação

Organização e Arquitetura de Computadores

O que há de novo no LabVIEW Real- Time e LabVIEW FPGA

IW10. Rev.: 02. Especificações Técnicas

CAPÍTULO 2 CARACTERÍSTICAS DE E/S E PORTA PARALELA

Desenvolva Sistemas de Medições Distribuídos e Portáteis

Tópicos. Atualizações e segurança do sistema. Manutenção Preventiva e Corretiva de Software (utilizando o MS Windows XP)

Sistemas Operacionais

SIMULADOR DE ROTEAMENTO DE PACOTES (V. 3 20/05/2010)

Simplifique a complexidade do sistema

Considerações no Projeto de Sistemas Cliente/Servidor

ncia de Redes NGN - NEXT GENERATION NETWORK Hugo Santana Lima hugosl@nec.com.br Porque Telefonia IP?

Processos e Threads (partes I e II)

ADMINISTRAÇÃO DE SISTEMA OPERACIONAL DE REDE (AULA 1)

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Melhores práticas para desenvolvimento de software e gerenciamento de código

Sistemas Distribuídos

Introdução aos Sistemas

Sistemas Operativos. Threads. 3º ano - ESI e IGE (2011/2012) Engenheiro Anilton Silva Fernandes (afernandes@unipiaget.cv)

Ao longo do presente capítulo será apresentada uma descrição introdutória da tecnologia FPGA e dos módulos básicos que a constitui.

William Stallings Arquitetura e Organização de Computadores 8 a Edição

Fundamentos de Sistemas Operacionais

Migrando das clássicas tecnologias Fieldbus

Sistema Operacional. Prof. Leonardo Barreto Campos 1

ENTRADA E SAÍDA DE DADOS

Arquiteturas RISC. (Reduced Instructions Set Computers)

Resumo até aqui. Gerenciamento Proteção Compartilhamento. Infra-estrutura de Software

Visão Geral de Sistemas Operacionais

UNIVERSIDADE. Sistemas Distribuídos

Sistemas Operacionais Entrada / Saída. Carlos Ferraz (cagf@cin.ufpe.br) Jorge Cavalcanti Fonsêca (jcbf@cin.ufpe.br)

Programação Concorrente Processos e Threads

MODELO CLIENTE SERVIDOR

MODULO SERVIDOR DE GERENCIAMENTO DE CHAVES DE ENCRIPTAÇÃO AÉREA OTAR P25, FASE 2

Gerência de Processador

Sistemas Operacionais Processos e Threads

Até o final de década de 70, os sistemas operacionais suportavam apenas processos com um único thread;

Organização de Computadores

Estruturas do Sistema de Computação

Sistemas Distribuídos

Construindo Sistemas de Gravação e Reprodução de Dados de Áudio, Vídeo e GPS com a Plataforma PXI

6 - Gerência de Dispositivos

Comparativo de desempenho do Pervasive PSQL v11

Marcos Cardoso Engenheiro de Vendas Bruno Cesar Engenheiro de Sistemas

Arquitetura de Computadores Arquitetura de entrada e saída

Preparando-se para o Exame Certified LabVIEW Associate (CLAD) Rodrigo Schneiater Engenheiro de Aplicações de Campo

SISTEMAS OPERACIONAIS

Anexo IV PLANILHA DESCRITIVA DE ESPECIFICAÇÕES TÉCNICAS

Prof. Antonio Fundamentos de Sistemas Operacionais UNIP/2015

Há dois tipos de configurações bidirecionais usados na comunicação em uma rede Ethernet:

Desenvolvendo sistemas de inspeção automatizadas com o Vision Builder AI e LabVIEW. Marcelo Costa Engenheiro de Vendas

ICORLI. INSTALAÇÃO, CONFIGURAÇÃO e OPERAÇÃO EM REDES LOCAIS e INTERNET

CAMADA DE TRANSPORTE

8 Threads. 8.1 Introdução

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Componentes de um computador típico

Faculdades Santa Cruz - Inove. Plano de Aula Base: Livro - Distributed Systems Professor: Jean Louis de Oliveira.

MEMÓRIA. 0 e 1 únicos elementos do sistema de numeração de base 2

Especificações da oferta Gerenciamento de dispositivos distribuídos: Gerenciamento de ativos

Capítulo 8. Sistemas com Múltiplos Processadores. 8.1 Multiprocessadores 8.2 Multicomputadores 8.3 Sistemas distribuídos

Sistemas Operacionais Gerência de Dispositivos

Software de segurança em redes para monitoração de pacotes em uma conexão TCP/IP

Windows NT 4.0. Centro de Computação

Gerenciamento de Projeto

Organização de Computadores 1

Geral: Manual de Utilização do Software de Teste Gradual Windows

Sistemas Operacionais

SISTEMAS DISTRIBUIDOS EM INSTRUMENTAÇÃO E CONTROLO. Guia de Laboratório. Trabalho 4 -P1

Sistemas Operacionais

Entrada e Saída. Interface entre periféricos, processador e memória. Fonte: Minho - Portugal 1

O Servidor de impressão DP-300U atende a seguinte topologia: Podem ser conectadas 2 impressoras Paralelas e 1 USB.

Você acha que não precisa de um FPGA? Pense melhor!

Aprenda as melhores práticas para construir um completo sistema de teste automatizado

IP significa Internet Protocol. A Internet é uma rede, e assim como ocorre em qualquer tipo de rede, os seus nós (computadores, impressoras, etc.

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

O que veremos nesta aula? Principais Aspectos de Sistemas Operacionais. Visão geral de um sistema computacional

Um Driver NDIS Para Interceptação de Datagramas IP

Redes. Pablo Rodriguez de Almeida Gross

Gerência de processos Requisitos fundamentais

PEER DATA MANAGEMENT SYSTEM

Comunicado à Imprensa

Sistemas Operacionais. Roteiro. Hardware. Marcos Laureano

Figura 01 Kernel de um Sistema Operacional

Márcio Leandro Moraes Rodrigues. Frame Relay

CONHECIMENTOS ESPECÍFICOS TÉCNICO DE LABORATÓRIO / ÁREA INFORMÁTICA

Processos. Adão de Melo Neto

Prof.: Roberto Franciscatto. Capítulo 1.2 Aspectos Gerais

Capítulo 4 Gerência do Processador. O que sabemos é uma gota, o que ignoramos é um oceano. Isaac Newton

Introdução a Computação 07 Sistemas operacionais. Márcio Daniel Puntel marcio.puntel@ulbra.edu.br

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

Capítulo 8. Software de Sistema

ADMINISTRAÇÃO DE SISTEMAS OPERACIONAIS SERVIÇOS IMPRESSÃO. Professor Carlos Muniz

Otimize e reduza o tempo do seu teste com LabVIEW e TestStand. ni.com

Guia de Conectividade Worldspan Go Res! A V A N Ç A D O

Transcrição:

Técnicas de Desenvolvimento para Sistemas Real Time com LabVIEW André Oliveira Engenheiro de Vendas Rodrigo Schneiater Engenheiro de Aplicações NIDays 2011 1

Agenda Projeto Entendendo Modelos de Agendamento de Prioridades Utilize Padrões de Projeto Separe Tarefas Desenvolvimento Evitando Jitter Comunicação com a Interface de Usuário Usando Shared Variables Efetivamente Distribuição Mude as Definições de Distribuição Realize Benchmark Corretamente Minimize o uso de CPU 2

Entendendo Modelos de Agendamento de Prioridades Terminologia Threads: Executando concorrentemente tarefas no Sistema Operacional Thread Priority: Classificação relativa de uma thread O LabVIEW Real-Time associa prioridades de OS e VI (ou estrutura temporizada) para threads Sistema de Execução: Agrupamento de threads específico do LabVIEW Scheduler: Atribui threads para executar na(s) CPU(s) Fila de execução: Fila de threads preparadas para agendamento Preemptive vs Round-Robin: Agendamento baseado em classificação ou FIFO 3

Entendendo Modelos de Agendamento de Prioridades Uma Nota Sobre Agendamento Regras Básicas de Agendamento RT 1. Realizar agendamento preemptivo entre threads de prioridades diferentes 2. Realizar agendamento round-robin entre threads de prioridades iguais 3. Threads de VI s críticas sempre executam até a conclusão Uma thread bloqueada está impedida de executar por recurso compartilhado função de espera operação de E/S 4

Entendendo Modelos de Agendamento de Prioridades Defina a prioridade da tarefa por requisitos de temporização, não por importância aparente (orçamento de tempo) 5

Utilize Padrões de Projeto Utilize Padrões de Projeto Use padrões de projeto comuns para Diminuir o tempo de desenvolvimento Aumentar a robustez Simplificar a depuração Melhorar a reusabilidade e facilitar a manutenção Padrões de projeto recomendados NI (veja ni.com/info) Máquina de Estados (statemachines) Produtor/Consumidor (producerconsumer) Cliente/Servidor (clientserver) 6

Separe Tarefas Mais Terminologia Determinismo: Execução previsível de uma tarefa Jitter: Desvio entre o tempo de execução real e esperado Limitado vs Ilimitado: Qualificação do jitter máximo como finito ou infinito, respectivamente Tempo Crítico: A tarefa de usuário de maior prioridade Uma tarefa de tempo crítico tem alto determinismo Uma tarefa de tempo crítico tem jitter baixo, limitado 7

Separe Tarefas Separe Tarefas 1. Defina suas tarefas Controle Log Comunicação Etc. 2. Diagrame o sistema de execução 3. Construa seu diagrama de blocos 8

Separe Tarefas Separe Tarefas (continuação) 4. Crie uma Rotina de Inicialização 5. Crie uma Rotina de Finalização Segura 9

Evitando Jitter Evitando Jitter Fontes de Jitter Comuns Alocação de Memória Tratamento de Referência Comunicação Inter-thread Recursos Compartilhados Escrita/Leitura de Arquivo Comunicação pela Rede Algoritmos Ilimitados Solução Pre-alocação Durante Inicialização e Finalização RT FIFOs Evitar recursos de HW, canais de E/S e VIs nãoreentrantes em tarefas de tempo crítico Evitar em tarefas de tempo crítico Evitar em tarefas de tempo crítico Fazer benchmark do código de tempo crítico! 10

Evitando Jitter Crie um Esquema de Temporização While Loop Não possui habilidades de temporização incorporadas Estrutura de loop básica Multi-thread Pequeno overhead de CPU Pode ser usado com VI Priorities e Timed Loops Timed Loop Possui incorporados Controle de temporização Dados de temporização Seleção de CPU Controle de prioridade Projetado para aplicações com múltiplas taxas Single-thread Comparando, overhead de CPU maior que while loop [poucos µs] Nota: While loops são recomendados para código ilimitado (E/S de arquivo, comunicações de rede, etc.) 11

Evitando Jitter Selecione um Mecanismo de Temporização E/S Temporizada por Hardware Frequency Digital Edge Counter Digital Change Detection Signal from Task NI Scan Engine Funções de Espera Wait Wait until next multiple Clocks Internos somente para estruturas temporizadas Software-Triggered kilohertz Megahertz Nota: O uso de uma única fonte de temporização para todas as estruturas temporizadas reduz o jitter introduzido pelo scheduler 12

Evitando Jitter Criando um Orçamento de Tempo Uso de CPU (%) = 100 * Soma[Loop 1, Loop 2,.., Loop n], onde Loop n = (Duração / Período) Tarefa/Loop Duração (µs) Período (µs) Controle 400 1000 Monitoramento 3,000 10,000 Log 16,000 30,000 Tarefa/Loop Duração (µs) Período (µs) Controle 400 1000 Monitoramento 3,000 25,000 Log 16,000 80,000 100 * (400/1,000 + 3,000/10,000 + 16,000/30,000) = 123% 100 * (400/1,000 + 3,000/25,000 + 16,000/80,000) = 72% Nota: Conhecido como agentamento de taxa monotônica: Tarefas com taxas altas recebem prioridades maiores 13

Comunique com a Interface de Usuário Comunique com a Interface de Usuário Casos de Uso Monitoramento dos valores atuais Transmitir dados em alta velocidade do targer RT para um computador host, enviando comandos para um target RT Protocolos centrais, ponto de partida para protocolos personalizados como STM Comunicação determinística entre targets RT Controle dinâmico de VIs RT Interfaces de usuário baseadas na Web, integração com tecnologias padrão da Web Protocolo Network-Published Shared Variable Network Streams TCP ou UDP Time-Triggered Shared Variable VI Server Web Services 14

Comunique com a Interface de Usuário Use os Recursos Certos Streaming Data Continuously Target to host, one to one Send data payloads of 1 KB (1024 bytes) Casos de Uso Comando (um para um) Comando (um para vários) Comando (vários para um) High throughput Monitoramento (um para um) Low CPU overhead Monitoramento Reasonable (um para vários) latency To minimize latency while Monitoramento streaming (vários para data, um) use a smaller Transmissão payload contínua size de dados (um para um) Consider polling mode for Ethernet packet detection Transmissão contínua de dados (um para vários) Transmissão contínua de dados (vários para um) Sending Commands/Monitoring Identify architecture Protocolos Recomendados Funções Network Streams Network-published Command shared (host variables to target) VIs de Web Monitor services (target ou network-published to host) shared variables One to one Network-published One to many shared variables VIs de Web Many services to one ou network-published shared variables Send each command as soon as possible Network-published shared variables Funções Network Use Flush Streams Stream function to TCP ou UDP send a command over the network immediately after writing TCP ou UDP 15

Demo Pêndulo Invertido 16

Usando Shared Variables Efetivamente Usando Shared Variables Efetivamente Limite o Uso de Shared Variable Bom para aplicações pequenas com poucos canais Single-process (local) e Networked Combine canais de tipos idênticos em um array Utilize funções RT FIFO Arquitetura escalávei para grandes aplicações (somente local) Modos Polling e blocking (Alto desempenho ou baixo uso de CPU, respectivamente) 17

Usando Shared Variables Efetivamente Usando Shared Variables Efetivamente Inicialize as Shared Variables Serialize a execução das Shared Variables Evite ler dados velhos das Shared Variables 18

Usando Shared Variables Efetivamente Usando Shared Variables Efetivamente Evite Bufferização Desnecessária Previne perda de dados causada por atrasos temporários na rede Não garante transferência de dados sem perdas Consome mais CPU e memória Vem habilitada por padrão em Network-Published Shared Variables Selecione um Host Apropriado para as Shared Variables Host RT simplifica acesso de múltiplos hosts e aumenta a estabilidade Host RT também aumenta overhead de CPU e de memória 19

Mude as Definições de Distribuição Mude as Definições de Distribuição Modifique as configurações de distribuição para otimizar desempenho e determinismo Configurações da BIOS Desabilite Legacy USB Support Desabilite Hyperthreading Configurações do MAX Configure Ethernet Packet Detection para Polling Configurações do Target no Projeto LabVIEW Desabilite CPU Load Monitoring Desabilite Debugging NI Web-Based Monitoring and Configuration Desabilite Automatically Refreshing the Console Output 20

Mude as Definições de Distribuição Considerações Adicionais sobre Distribuição Instale o conjunto mínimo de software Aumenta a RAM disponível Minimiza interrupções relacionadas a driver Compile e execute código como aplicação autônoma Compilação de código otimizada Remove o overhead da Interface de Usuário do painel frontal 21

Realize Benchmark Corretamente Realize Benchmark Corretamente Faça Benchmark com as Definições de Distribuição Avalie tarefas com o exemplo RT Benchmarking 22

Realize Benchmark Corretamente Realize Benchmark Corretamente Capture e Analise usando o Toolkit Real- Time Execution Trace Monitore métricas usando o NI Distributed System Manager CPU Memória Alertas Estados de VIs Valores de Shared Variable 23

Demo Monitorando Métricas em Sistemas Real Time 24

Minimize o Uso de CPU Minimize o Uso de CPU Crie um Orçamento de Tempo Priorize threads por requisitos de tempo Evite Paralelismo Excessivo Reuse padrões de projeto comuns Faça Benchmark para determinar a arquitetura de código ótima Limite o Uso de Shared Variable Descarregue Tarefas (quando possível) Use FPGA para algoritmos de aquisição e controle Use PC Host para log, monitoramento e ser host de shared variable 25

Resumo Projeto Entendendo Modelos de Agendamento de Prioridades Utilize Padrões de Projeto Separe Tarefas Desenvolvimento Evitando Jitter Comuinique com a Interface de Usuário Usando Shared Variables Efetivamente Distribuição Mude as Definições de Distribuição Realize Benchmark Corretamente Minimize o uso de CPU 26

Dúvidas? 27