Preciso de um sistema em tempo real?

Introdução
Você pode ter visto anteriormente a expressão "em tempo real" usado para descrever um sistema de computação, ou sequer ouvido falar do LabVIEW Módulo Real-Time. O que esta terminologia significa? Quais componentes compõem um sistema de "tempo real"? Quando será que faz sentido escolher um sistema em tempo real para o seu projeto? Este documento fornece um guia simples que irá responder a todas estas perguntas e ajudá-lo a determinar se faz sentido considerar a construção de um sistema em tempo real. Depois de ter lido este paper, é recomendável que você visite os sites da National Instruments que podem ajudá-lo a construir sistemas melhores em tempos menores.


O que é um Sistema de Tempo Real?
Um sistema de computação em tempo real é um sistema capaz de executar de forma muito confiável programas com uma temporização (timing) muito específica, algo que é importante para projetos de pesquisa e engenharia. O componente chave que é necessário para construir um sistema em tempo real é um Sistema Operacional de Tempo Real do inglês Real-Time Operating System (RTOS). Outros elementos de hardware e software que compõem um sistema em tempo real serão discutidos na próxima seção.


Tempo preciso
Para muitos engenheiros e cientistas é inaceitável executar um programa de medição ou controle em um PC padrão com um sistema operacional de propósito geral instalado (como o Windows). A qualquer momento, o sistema operativo pode atrasar a execução de um programa por muitas razões: para executar uma verificação de vírus, atualização de gráficos, executar tarefas de fundo do sistema, entre outras razões.
Para programas que precisam ser executados a uma determinada taxa sem interrupção (por exemplo um sistema de controle da velocidade), este atraso pode causar falha do sistema. Observe que esse comportamento já é esperado desde o projeto: sistemas operacionais de propósito geral são otimizados para executar muitos processos e aplicações de uma vez e fornecer outras características como interface de usuário rica. Em contraste, sistemas operacionais de tempo real são projetados para executar um programa único com cronograma muito preciso. Especificamente, os sistemas operacionais de tempo real pode permitir-lhe:


  • Garantir a execução de tarefas dentro pior caso do cronograma;
  • Priorizar cuidadosamente diferentes seções do seu programa;
  • Executar laços com quase o mesmo tempo de cada iteração (normalmente dentro de microssegundos);
  • Detectar se um laço se perdeu;


Ao pesquisar sistemas de computação em tempo real, você pode se deparar os termos "tempo real rígido" e "tempo real leve". Dessa forma, sistemas de tempo real rígidos são projetados para garantir absolutamente que a tarefa será executada dentro de um determinado período de tempo do pior caso.
Portanto, isso se aplica a projetos que, em caso de falha, envolvem a segurança ou sistemas que possuem requisitos que podem resultar na perda de grandes investimentos. Por outro lado, os sistemas em tempo real leves são concebidos para satisfazer os seus requisitos de tempo na maior parte da execução mas sem certeza absoluta. Isso pode ser aceitável para operações como processamento de vídeo, onde um quadro perdido não é bom, mas não chega a ser necessariamente um problema crítico.


Figura 2. Componentes dos Sistemas de Tempo Real

Confiabilidade
Além de fornecer o sincronismo preciso, sistemas de computação em tempo real podes ser configurados para funcionar de forma confiável por dias, meses ou anos sem parar. Isto é importante não só para os sistemas de engenheiros que necessitam de operar no modo "24-7", mas também para qualquer aplicação onde o tempo de inatividade custe caro.
Um recurso de "whatch-dog" também é normalmente incluído em sistemas de tempo real para reiniciar automaticamente o computador no caso de algum programa parar de funcionar. Além disso, o hardware utilizado em um sistema de tempo real, é frequentemente muito bem robusto para suportar duras condições por longos períodos.


Quais componentes formam um Sistema de Tempo Real?
Embora o principal componente necessário para criar um sistema em tempo real é o RTOS, várias peças de software e hardware são necessários para construir um sistema de tempo real.


Figura 2. Componentes dos Sistemas de Tempo Real

Programas
RTOS: Este sistema operacional especial é projetado para executar um programa de usuário de forma confiável com um tempo muito preciso. Ferramentas de desenvolvimento: Um compilador, vinculador, depurador também são elementos necessários para gerar código compatível para o RTOS.


Drivers
Para um sistema operacional em tempo real para se comunicar com o hardware do sistema e módulos I/O, são necessários para garantir a execução das operações I/O dentro do pior caso de tempo.


Hardware
Módulos de I/O e sistema de hardware com controladores em tempo real.


Hardware robusto (Opcional)
Chassis usada num sistema de tempo real podem ser concebidas para suportar ambientes um pouco mais agressivos por longos períodos de tempo.


Watchdog (Opcional)
Um temporizador de watchdog integrado pode reiniciar automaticamente o computador, caso um programa de usuário trave durante a execução.

Resumo: Preciso de um Sistema de Tempo Real?
Em resumo, a construção de um sistema em tempo real pode ser uma boa ideia se você precisa se certificar de que certas partes do seu programa seja executado em um determinado período de tempo, ou se você precisa executar o seu programa de forma confiável por longos períodos de tempo. Se você estiver trabalhando em uma missão-crítica ou relacionada com a segurança do projeto, a necessidade de construir um sistema em tempo real é clara.
Mesmo nos casos em que tempos precisos e confiabilidade a longo prazo não são requisitos absolutos para o seu projeto, a construção de um sistema em tempo real pode fornecer “paz de espírito” ao saber que o seu programa continuará a ser executado sem interromper sua medida ou controle de processo. Caso o sistema que você está criando resulte em custos de manutenção, se for interrompido, priorizar o hardware e software necessários para criar um sistema em tempo real pode ser um bom investimento.
Compreenda que um sistema em tempo real não significa necessariamente medição ou controle. Normalmente sistemas em tempo real só executam um programa, e a maioria dos sistemas de tempo real não possuem uma interface de usuário, neste caso, um computador separado deve ser usado para fornecer gráficos ou controles de usuário.
Alguns projetos requerem hardware determinista onde a lógica é implementado em um ASIC ou FPGA. Ainda assim, milhares de sistemas em tempo real estão em operação hoje e continuarão a ser uma opção viável para projetos que precisam de tempo preciso e alta confiabilidade.


Referências

http://www.ni.com/white-paper/14238/en/ (Tradução Livre) Acesso em 12.01.2016

Postagens mais visitadas