Creating a Distributed System With NI VeriStand

Visão geral

This article discusses how to create a distributed processing and I/O system with NI VeriStand, which includes many features that make developing distributed systems a more efficient and powerful experience.

Control systems, such as those found in airplanes, automobiles, or other industrial projects, often require more computational power and I/O to monitor, test, or simulate than a single processor card and chassis can provide. This white paper explains how you can create a scalable and distributed system to meet the needs of a large hardware-in-the-loop (HIL) or real-time test system. NI VeriStand is a ready-to-use software environment for configuring real-time testing applications, including HIL test systems. Using the features of NI VeriStand, you can create this system without the need to design, program, and maintain the software architecture.

Contents

A necessidade de um Sistema Distribuído

Muitas vezes é possível dividir sistemas de grande porte em vários componentes, e tratar cada componente de hardware e software separadamente. Para proporcionar um maior poder computacional e capacidade de E/S, você pode implementar cada componente do sistema em um conjunto diferente de hardware.

Por exemplo, as asas de um avião, assim como os slats, ailerons, leme, motores e outros componentes precisam ser simulados e/ou testados. Você pode separar o sistema em vários sistemas modulares, como pode ser visto na Figura 1, tirando assim maior proveito de uma abordagem modular.


Figura 1. Você pode usar múltiplos sistemas PXI para simular os componentes de uma aeronave.
[+] Enlarge Image

Características de integração do nível de sistema

Usando o NI VeriStand, um ou mais computadores operadores (host) podem se comunicar com uma ou mais execuções de targets em tempo real, requerendo o mínimo de configuração por parte do usuário. O NI VeriStand cuida de toda a comunicação entre os computadores operadores (hosts) e execução de targets em tempo real. A Figura 2 mostra uma topologia simples envolvendo um host e um target.


Figura 2. Topologia Simples

O componente do host que comunica com o target é o Gateway do NI VeriStand. Isto é controlado automaticamente, mas é um conceito chave para entender topologias maiores.

Você pode facilmente adicionar uma topologia dentro do System Explore do NI VeriStand.


Figura 3. Adicionando um target dentro do System Explorer.

Um único arquivo de definição de sistema pode conter um número indeterminado de metas, e até mesmo misturar diferentes tipos de target.


Figure 4. Um único arquivo de definição de sistema pode conter múltiplos targets.

Cada target pode ter uma configuração específica de hardware e software e todos os targets podem ser implementados para interagir com um único gateway.


Figura 5. Múltiplos targets podem ser implementados para interagir com um único host.

Computadores host adicionais podem comunicar-se com a mesma topologia target através de comunicação com gateway de outros hosts.


Figure 6. Multiple Hosts and Multiple Targets Topology

Para conseguir isso, basta adicionar um host e simplesmente mudar o endereço do gateway do NI VeriStand para ser um host remoto. O restante das aplicações continua o mesmo.

Compartilhando dados entre sistemas distribuídos

Para fazer um sistema distribuído se comportar como um sistema único se faz necessário o compartilhamento de dados dos sistemas componentes. Este é um elemento chave que permite diferentes partes trabalharem juntas. Isto é comumente realizado utilizando interfaces de memória reflexiva.

Redes de memória reflexiva são redes locais (LANs) em tempo real, em que cada computador tem sempre uma cópia local atualizada do conjunto de memórias compartilhadas. Estas redes são especificamente projetadas para fornecer um alto determinismo na comunicação de dados. Elas oferecem um desempenho fortemente temporizado e necessário para uma variedade de simulações distribuídas e aplicações de controle industrial. Redes de memória reflexiva beneficiam-se dos avanços em rede de dados de uso geral, sendo uma tecnologia totalmente independente, conduzida pelas diferentes características e necessidades de aplicações onde a simplicidade de implantação e a necessidade de overhead de software são fatores chave.1

A memória reflexiva dá ao NI VeriStand a capacidade de compartilhar dados entre vários targets respeitando os requisitos de desempenho e determinismo de todo o sistema. Usando memória reflexiva, um modelo de simulação pode ser dividido para executar simultaneamente em diferentes sistemas de target. A entrada e saída de valores são compartilhadas entre os sistemas individuais sobre a memória reflexiva. Placas de memória reflexiva GE Fanuc são suportadas nativamente com o NI VeriStand. Muitos componentes do NI VeriStand podem usar memória reflexiva e podem perfeitamente criar um sistema multi-target.

Além disso, o NI VeriStand distribui automaticamente os dados entre os targets para vários usuários. Por exemplo, você pode configurar um estímulo (teste) para rodar em um Target A que faz referência de dados no Target B. O NI VeriStand cria e permite automaticamente uma ligação entre os targets para obter os dados. Isso é feito automaticamente, sem configuração explícita pelo usuário.

A figura 7 mostra um exemplo de sistema com cartão de memória reflexiva.


Figura 7. Múltiplos Chassis com Memória Reflexiva.

Sincronizando um sistema distribuído

É importante pensar nos requisitos de temporização e sincronização ao projetar um sistema. Se o hardware distribuído não está sincronizado, a amostragem de entradas e saídas não irá acontecer simultaneamente. Além disso, operações ao longo do tempo podem fazer com que componentes do sistema coletem mais amostras, mesmo que estejam configurados para a mesma taxa. Se você tem como objetivo desenvolver simulações, isto pode causar problemas. Por exemplo, em uma simulação de flaps você pode ter diferentes estados ao longo do tempo. Neste caso, o registro de dados e análises, pode ser corrompido pelo fato dos dados não serem os mesmos todo o tempo.

Uma visão geral de Noções Básicas de Sincronização inclui muitos detalhes, tais como desvio de clock e diferenças no tempo de clock - clock skew.

A sincronização de um sistema distribuído envolve a sincronização de hardware e sincronização de software. Opcionalmente, você pode sincronizar todo o sistema usando uma referência de temporização externa como um GPS ou IRIG.

Sincronização por Hardware

Sincronização por Hardware significa que cada peça de hardware que faz parte do sistema compartilha um hardware de referência de clock para temporização e um trigger para iniciar as tarefas de E/S. Cada peça de hardware no sistema deriva seu próprio clock do mesmo hardware de referência de clock, e cada peça de hardware é iniciada ao mesmo tempo.

Exemplos de tarefas de temporização e sincronização por hardware comum incluem tarefas de amostragem simultânea em várias placas de aquisição de dados, atualização do ciclo PWM na saída digital de um cartão FPGA (Field-Programmable Gate Array), enquanto ocorre atualização de aquisição de dados de saídas analógicas, handshaking entre um multímetro digital (DMM) e uma chave, malha de bloqueio de fase um gerador de forma de onda com um digitalizador ou sincronizar um RF down converter com uma digitalizadora de freqüência intermediária (IF). 

Você pode criar um sistema distribuído NI VeriStand com um chassi NI PXI. Extensões PCI para Instrumentações (PCI eXtensions for Instrumentation – PXI) são uma plataforma robusta baseada em PC que oferece um alto desempenho e baixo custo para soluções de implantação de sistemas de medição e automação. O PXI combina o barramento elétrico PCI (Peripheral Component Interconnect) com o robusto, pacote mecânico modular Eurocard do CompactPCI e adiciona barramentos especializados de sincronismo e recursos chave de software.

O chassi contém um backplane PXI de alto desempenho, o qual inclui o barramento PCI e barramentos de temporização e trigger. A instrumentação modular PXI adiciona um sistema de referência de clock dedicado de 10MHz, barramento trigger PXI, barramento star trigger, e um barramento local slot a slot para atender as necessidades de temporização avançada, sincronização e comunicação lateral sem perder nenhuma vantagem PCI.

A maneira mais fácil de compartilhar um clock de referência entre chassis PXI é com as ligações CLK10 BNC na parte traseira do chassi. Quase todos os chassis PXI modernos têm estes terminais BNC. Cada chassi tem uma conexão de saída CLK 10 e uma conexão de entrada CLK10. Ao ligar o CLK10 de um chassi para o CLK10 de outro chassi, você pode garantir que está usando a mesma referência de clock.

Para compartilhar um trigger de inicio, recomenda-se usar um dispositivo de aquisição de dados (DAQ) da National Instruments. Um chassi pode exportar um trigger para outros chassis para ser usado como um trigger de início.

Você pode ver um exemplo de configuração de sincronização por hardware na Figura 8. Nesta configuração, o chassi mestre NI PXI-1042 exporta o CLK10 como um tempo de referência para N outros PXI com um cabo BNC. Todos os chassis recebem um start trigger externo. 

Figura 8. Sincronização por Hardware de Vários Chassis
[+] Enlarge Image

O NI VeriStand cuida de toda a sincronização de hardware dentro de um chassi automaticamente, e há opções para exportar e importar amostras de clocks e trigger para outros targets.

Depois de adicionar os dispositivos DAQ para uma configuração do sistema no NI VeriStand System Explore, você pode ver na Figura 9 que um dos nomes do dispositivo DAQ fica em negrito. O NI VeriStand escolhe automaticamente um dispositivo para ser o dispositivo DAQ mestre para o chassi. O dispositivo DAQ mestre aceita um trigger externo para permitir uma sincronização de diversos targets. O NI VeriStand sincroniza dispositivos mestre não-DAQ ao dispositivo mestre DAQ dentro deste único chassi, não se envolvendo na sincronização de outros chassis.


Figura 9. O dispositivo em negrito pode ser selecionado como um dispositivo mestre DAQ.

Você pode personalizar a seleção do dispositivo DAQ mestre, bem como o tipo de trigger na página do chassi, como você pode observar na Figura 10. Nesta figura, foram destacadas as seções importantes para sincronização de hardware com vários chassis.

Figura 10. O Chassi importando um trigger no PFI 6.

Na figura 10, o chassi está configurado para importar um trigger para o Dev1 no PFI6. Consulte o manual do hardware do dispositivo Dev1 para encontrar o terminal de PFI6.

Depois de criar estas configurações e conectar as linhas de BNC e de trigger, você pode implantá-los para rodar em targets de execução em tempo real no NI VeriStand para fornecer sincronização por hardware.

Se o chassi que você esta usando não tem a conexão CLK 10 BNC ou se houver a necessidade de maior desempenho de sincronização, você pode usar um cartão de temporização e sincronização (NI-665x) para executar esta mesma função. Se você optar por usar o cartão NI-665x para executar esta função, verifique se a configuração do sistema tem o dispositivo “PLL 10MHz” timing and sync acrescentado e configurado para exportar ou importar o clock de 10MHz.

Sincronização por Software

Sincronização por Software significa que vários pedaços de código do sistema (neste caso, o NI VeriStand Real-Time Engine) compartilham uma execução de clock em comum, e start trigger para começar a execução ao mesmo tempo.

O NI VeriStand Real-Time Engine é projetado para uso em hardware-timed (hardware temporizado) com único ponto de E/S (HWTSPIO) quando os dispositivos de hardware são apropriados. O HWTSIO faz parte dos conjuntos de hardware e software DAQ que permitem o bloqueio de execução de software por clock físico de hardware. Este travamento de software por hardware só é permitido por uma entrada analógica, assim uma configuração de sistema PXI deve ter pelo menos um canal de entrada analógica mesmo se não for usado.

Portanto, se o hardware é sincronizado como descrito acima e um canal analógico está disponível em cada configuração, cada target do NI VeriStand Real-Time Engine é automaticamente sincronizado.

Sincronização com uma referência de tempo

Em alguns casos, é uma exigência para os componentes do sistema, não só para serem sincronizados entre si, mas também a uma referência de tempo externa. Como a abordagem acima para sincronizar os componentes do sistema envolve um target mestre que partilha o seu clock e o sinal de trigger com o resto do sistema distribuído, a sincronização de referência de tempo pode ser alcançada simplesmente sincronizando o target mestre para a referência de tempo externa.

O Clock 10 Discipline Add-On for NI VeriStand dá ao NI VeriStand Engine a capacidade de sincronizar com uma referência de tempo externa. A referência de tempo externa pode ser uma das referências suportadas para um módulo NI PXI-6682. O add-on usa uma combinação do PXI-6682 e outro cartão de temporização e sincronismo para guiar o chassi PXI para a referência de tempo externa. Você pode encontrar mais detalhes na página do add-on.

A Figura 11 mostra um exemplo de um sistema distribuído que é sincronizado um ao outro e a uma referência de tempo externa.

Figura 11. Sincronização por Hardware de Múltiplos Chassis com Referência de Tempo Externa.
[+] Enlarge Image

Conclusão

Com o NI VeriStand, você pode configurar as E/S em tempo real, estimular perfis, registro de dados, alarmes, implementar algoritmos de controle ou simulações de sistemas por meio da importação de modelos a partir de uma variedade de ambientes de software, construir interfaces de testes de sistemas rapidamente com um tempo de execução editável e uma interface de usuário completa com ferramentas prontas para o uso e adicionar funcionalidades personalizadas usando NI LabVIEW, NI TestStand, ANSI C / C + +,. NET, Python, e outros ambientes de software.

Tirando vantagem do NI VeriStand, você pode facilmente criar um HIL distribuído, testes em tempo real ou sistemas de monitoramento usando recursos simples para operar vários targets.

Referências
  1. GE Reflective Memory Nodes - http://www.ge-ip.com/products/family/reflective-memory-nodes