Pergunta

Eu não encontrar qualquer informação útil sobre linguagens de programação para sistemas de tempo real. Tudo que eu encontrei foi Tempo Real Sistemas e linguagens de programação: Ada 95, Real-Time Java e Real- tempo C / POSIX ( alguns pdf aqui ) , que parece falar sobre extensões de Java e C para sistemas de tempos reais (eu não tenho o livro para ler). Além disso, o livro foi publicado em 2001, e as informações podem ser obsoleto agora.

Então, eu tenho dúvidas se essas línguas são usados ??em aplicações do mundo real, ou se os sistemas em tempo real no mundo real são feitas em outros idiomas, como DSLs.

Se a segunda opção é verdade para você, quais são as características marcantes da linguagem que você usa?

Foi útil?

Solução

O Real-Time Specification for Java agora tem várias implementações de classe comercial:

Estes produtos abrangem o continuum de compilação de código nativo (Aonix) para J2ME (aicas, apogeu), para J2SE completo (Sun, IBM). A maioria das implantações se não todos, têm visto em um pequeno número de sistemas de Segurança- ou de missão crítica, mas momento é de construção. Exemplos incluem Eglin da AFB vigilância do espaço radar modernização ea utilização da Marinha os EUA de RTSJ no DDG-1000 / Zumwalt destruidor . Sun também afirma implantação no domínio processamento de transações financeiras.

Se você está interessado em RTSJ, sugiro Real-Time Plataforma de Pedro Dibble Programação , ou Professor Wellings' Concurrent e Programação em Tempo real em Java .

Em uma nota relacionada, há também trabalho em andamento para fornecer um perfil de segurança Crítica para a linguagem de programação Java, construído como um subconjunto de RTSJ. Além disso, um grupo de peritos foi formada para explorar uma RTSJ DRTSJ distribuído, mas o trabalho está parado.

Outras dicas

Eu sou um engenheiro de software de aviônicos. Eu era capaz de participar em vários projectos de desenvolvimento. As línguas que eu utilizados nesses projetos são: C, C ++ e Java em tempo real

.

C é grande. C ++ não é tão ruim, mas C / C ++ exigem padrões rigorosos de codificação para as considerações de segurança, tais como DO-178B.

Eu acho que Java em tempo real é o caminho a percorrer, mas eu não vejo muitas aplicações aviônicos, ainda.

trainer jet-coreano T-50 terá um computador de missão execução da aplicação de RT Java servindo HUD e MFD monitores, e todas as funções de missão crítica.

As capas de livros usar de Ada 95, o Sistema Real-Time Java e realtime extensões POSIX (programados em C). Nenhum destes está diretamente uma linguagem específica de domínio.

Ada 95 é uma linguagem de programação utilizada no final dos anos 90 e (AFAIK) ainda amplamente utilizado para a programação em tempo real nas indústrias de defesa e aeroespacial. Há pelo menos um DSL construída em cima de Ada - SparkAda - que é um sistema de anotações que descrevem as características do sistema a uma ferramenta de verificação do programa.

Este entrevista de 06 de abril de 2006 indica algumas das classes e mudanças de máquinas virtuais que compõem o real-Time System Java. Ele não menciona quaisquer extensões de linguagem de domínio específico. Eu não vim através de uso de Java em sistemas de tempo real, mas eu não tenho estado a olhar para os tipos de sistemas onde eu esperaria encontrá-lo (trabalho que na simulação aeroespacial, onde é C ++, Fortran e, ocasionalmente, Ada para sistemas in-the-loop em tempo real).

Realtime POSIX é um conjunto de extensões para as instalações do sistema operacional POSIX . Como extensões do sistema operacional, eles não exigem específica qualquer coisa na língua. Dito isto, eu posso pensar em uma DSL baseada C para descrever sistemas embarcados - SystemC - mas eu não tenho nenhuma idéia se ele também é usado para gerar os sistemas embarcados.

Não mencionado no livro é Matlab , que nos últimos anos passou de uma ferramenta de simulação a um sistema de desenvolvimento orientado modelo para sistemas de tempo real. Matlab / Simulink é, com efeito, uma DSL para a programação linear, máquinas de estado e algoritmos. Matlab pode gerar C ou HDL para em tempo real e sistemas embarcados. É muito raro ver um aviônicos, EW ou outra indústria de defesa em tempo real de trabalho anunciados que não requer alguma experiência Matlab. (Eu não trabalho para Matlab, mas é difícil ênfase sobre como onipresente é realmente na indústria)

aplicações em tempo real podem ser feitas em praticamente qualquer idioma. O ambiente (sistema operacional, tempo de execução e bibliotecas de execução) deve, contudo, ser compatível com limitações de tempo reais. Na maioria dos casos meios em tempo real que há sempre um tempo determinista em que algo acontece. tempo determinista sendo ussually um valor de tempo muito baixo nos microssegundos / milissegundos variar.

sistemas de tempo real depende unicamente a esses critérios, como os specificiations costumam dizer algo como 'a cada X (período de tempo) (fazer algo | verificação de alguma coisa)'. Geralmente isso acontece se as interfaces do sistema com sensores e controles externos vida de poupança ou sistemas de risco de vida.

Eu estava trabalhando em um in-car de navegação e sistema de infotainment desenvolvido principalmente em C / C ++ com um sistema operacional configurado especificamente para atender às restrições de tempo real para fornecer navegação em tempo real e reprodução de mídia.

Mas isso não é tudo para sistemas de tempo real: Normalmente a selecção de algoritmos em todo o sistema é feito para ter tempos de execução determinísticos de acordo com a notação Big-O, principalmente usando linear ou constante de tempo. Tudo o resto é considerada não-determinista e, portanto, não utilizáveis ??para sistemas de tempo real.

Todos os sistemas em tempo real com quem trabalhei foram predominantemente escrito em C com alguns pedaços de assembler, ou por escrito principalmente em assembler com pequenos pedaços de C. (dependendo se estamos falando dos anos 90 e além, ou década de 80, respectivamente) No entanto, alguns dos sistemas de tempo real que eu trabalhei com ter usado -. não exatamente DSLs -. geradores de código homegrown especial

em tempo real linguagem orientada?

O que é em tempo real

Primeiro temos que definir o que em tempo real média.

É claro que, dependendo de como sua ferramenta vai trabalhar contra o ambiente físico pura em tempo real não pôde ser efetivamente feito, principalmente porque haverá um monte de dependências de terceiros.

Se você está construindo coisas incorporar usando microcontroladores como arduino , a língua de uso será limitado pelo hardware, mas com o material mais complexo como Raspberry Pi , a escolha do idioma é muito ampla.

Granularity

Isto é, dependendo do que você está medindo, se você estiver trabalhando com:

  • temperaturas climáticas , um ler cada 10 minutos pode ser suficiente
  • pessoas altura ou peso , um ou talvez quatro lido por dia
  • status do servidor , entre 1 segundo para a multa de depuração para aproximadamente 1 hora para o servidor secundário sem importância tranquila.
  • colisão atômica count : algo mais fino ...

Evento de leitura com base

A (melhor) maneira correta de coleta de dados é baseado em alteração do valor de evento ... sempre que o dispositivo faça permite.

A sua ferramenta não tem que poll valores do dispositivo, mas o dispositivo tem que enviar valores para a sua ferramenta, quando mudam.

Isso poderia ser feito por meio de um hardware de interrupção gatilho ou usando protocole porto como RS-232 ficar escuta em alguma porta serial, por exemplo.

Monitoramento de ambiente

A última coisa a ser avisado é como legítimo usuário irá interagir com .

Se você está construindo incorporar dispositivo independente, como robot , você pode usar bibliotecas gráficas para interagir com a tela sensível ao toque.

Se você está construindo do monitor baseado na web, você pode ter que manter em mente que o cliente poderia ser um velho 800x600 tela monocromática, utilizando má ligação à Internet e pequeno processador ... Mas, dependendo objetivo final, se você pode interagir com os clientes, você poderia garantir hardware forte e fortes ligações à Internet. De qualquer forma você tem que prestar atenção para soltura conexão e evento para atraso de comunicação entre o servidor eo cliente. Há dependências principalmente de terceiros.

Qual linguagem de programação?

A partir daí, a escolha do idioma é ampla e depende claramente

  • seu conhecimento.
  • granularidade solicitado (usando também, é claro baseado em eventos)
  • a quantidade de tempo que você tem que construir a ferramenta (dinheiro;)
  • atraso, colegas de trabalho ...
  • tipo de dispositivo
  • tipo de monitoramento
  • algumas outras razões políticas

Você pode construir o monitoramento do motor usando única, que eu já vi motores sofisticados que foi construído sob apenas ... Eu pessoalmente construído, um monitor de energia solar baseado na web usando , e .

Eu não posso acreditar que ninguém tenha mencionado linguagem LabVIEW programação que é amplamente utilizado para sistemas críticos de segurança em tempo real. Tem bibliotecas extensas e padrões de projeto bem conhecidos para architecturing e implementação de sistemas de RT.

Além disso National Instruments faz vários hardware (cRIO, PXI e etc), que são projetados para aplicações em tempo real.

Nós usamos LabVIEW para Fracking (fraturamento hidráulico) que é usado em ambientes seguros-crítica.

A propósito, o LabVIEW é também utilizado para aplicações não-RT também.

PLCs correr escada e código FBD que é realmente uma DSL em tempo real no sentido de que suas opções são tão limitados que é difícil programa de uma forma que iria resultar em um desempenho de tempo de execução imprevisível

A aplicação realmente proposital da linguagem C para programação em tempo real - e todas as questões relacionadas (tais como programação paralela) - é oferecido pelo meu Kickstarter http://www.kickstarter.com/projects/767046121/crawl -Space-computação-com-connel Ele é chamado de "Programação Wide" e eu venho fazendo isso parte da minha vida. As recompensas incluem uma biblioteca de software e um livro -. Projetado para ser útil

a empresa que eu tenho trabalhado para desde 2003 tem vindo a desenvolver e implementar uma plataforma Scada / Mes. implementação original começou em 1993, usado Modula-2 no OS / 2. Mais tarde (1998), foi portado para Ada95 e Windows. Atualmente (2019), usamos compilador Ada por AdaCore. Nosso sistema foi portado e foi implantado em 32/64 do Windows, HPUX, OpenVMS (e ultimamente até mesmo para framboesa). Temos múltipla instalação na Europa central (indústria de gás, refinarias, fábricas, usinas de energia). Sentimos características de Ada dar o nosso sistema de um alto grau de confiabilidade e previne um monte de erros que facilmente occour se usássemos linguagens como C. Veja também o meu blog https://www.ipesoft.com/en/ blogue / o que-language-é-o-D2000 escrito

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top