Domanda

Non ho trovato nessuna informazione utile per linguaggi di programmazione per sistemi in tempo reale. Tutto quello che ho trovato è stato Real Time sistemi e linguaggi di programmazione: Ada 95, Real-Time Java e Real- tempo C / POSIX ( alcuni pdf qui ) , che sembra parlare di estensioni di Java e C per i sistemi di tempi reali (non ho il libro da leggere). Inoltre, il libro è stato pubblicato nel 2001, e le informazioni possono essere obsolete ora.

Quindi, io sono dubbioso se queste lingue sono utilizzati in applicazioni del mondo reale, o se i sistemi in tempo reale nel mondo reale sono realizzati in altre lingue, come DSL.

Se la seconda opzione è vero per te, quali sono le caratteristiche salienti della lingua da utilizzare?

È stato utile?

Soluzione

La specifica Real-Time per Java ora ha diverse implementazioni di tipo commerciale:

Questi prodotti estendono il continuum dalla compilazione di codice nativo (Aonix) per J2ME (AICAS, Apogee), alla piena J2SE (Sun, IBM). La maggior parte delle implementazioni, se non tutti, hanno visto in un piccolo numero di sistemi alla sicurezza o mission-critical, ma lo slancio sta costruendo. Esempi includono di Eglin AFB sorveglianza radar spazio modernizzazione e l'uso della marina americana di RTSJ nel DDG-1000 / Zumwalt distruttore . Sun sostiene inoltre la distribuzione in ambito gestione delle transazioni finanziarie.

Se siete interessati a RTSJ, suggerisco di Peter Dibble in tempo reale piattaforma di programmazione , o il professor Wellings' concorrente e Real-time Programming in Java .

In una nota correlata, c'è anche lavori in corso per fornire un profilo di sicurezza-critico per il linguaggio di programmazione Java, costruito come un sottoinsieme di RTSJ. Inoltre, un gruppo di esperti si è formato ad esplorare un DRTSJ RTSJ distribuita, ma il lavoro è in fase di stallo.

Altri suggerimenti

Sono un ingegnere del software avionico. Sono stato in grado di partecipare a diversi progetti di sviluppo. Le lingue che ho usato in questi progetti sono:. C, C ++, e Real-time Java

C è grande. C ++ non è così male, ma C / C ++ richiede severe norme di codifica per le considerazioni di sicurezza come DO-178B.

Credo che in tempo reale Java è la strada da percorrere, ma non vedo molte applicazioni avioniche, ancora.

coreana jet addestratore T-50 avrà un computer di missione in esecuzione l'applicazione Java RT servire HUD e MFD display, e tutte le funzioni mission-critical.

Il libro copre l'uso di Ada 95, il Java Real-Time System e le estensioni in tempo reale POSIX (programmati in C). Nessuno di questi è direttamente un linguaggio specifico dominio.

Ada 95 è un linguaggio di programmazione comunemente usato negli ultimi anni '90 e (per quanto ne so) ancora ampiamente usato per la programmazione in tempo reale in industrie della difesa e aerospaziale. C'è almeno un DSL costruito sulla cima di Ada - SparkAda - che è un sistema di annotazioni che descrivono le caratteristiche del sistema di uno strumento di verifica del programma.

Questa intervista del 6 aprile 2006 indica alcune delle classi e dei cambiamenti delle macchine virtuali che compongono il Java Real-time System. Non menziona eventuali estensioni del linguaggio specifico dominio. Non sono venuto attraverso l'uso di Java in sistemi real-time, ma non sono stato a guardare i tipi di sistemi in cui mi aspetto di trovarlo (io lavoro in simulazione aerospaziale, dove è C ++, Fortran e, occasionalmente, Ada in tempo reale i sistemi in-the-loop).

tempo reale POSIX è un insieme di estensioni ai servizi del sistema operativo POSIX . Come estensioni del sistema operativo, non richiedono qualcosa di specifico nella lingua. Detto questo, mi viene in mente una DSL basata C per la descrizione di sistemi embedded - SystemC - ma io 've idea se è anche utilizzato per generare i sistemi embedded.

Non menzionato nel libro è Matlab , che negli ultimi anni è passata da un tool di simulazione ad un sistema di sviluppo basato su modelli per i sistemi in tempo reale. Matlab / Simulink è, in effetti, una DSL per programmazione lineare, macchine a stati e algoritmi. Matlab in grado di generare C o HDL per tempo reale e sistemi embedded. E 'molto raro vedere un avionica, EW o industria altra difesa in tempo reale di lavoro pubblicizzato che non richiede una certa esperienza Matlab. (Io non lavoro per Matlab, ma è difficile a più di enfasi come onnipresente è proprio nel settore)

applicazioni in tempo reale possono essere fatti in quasi tutte le lingue. L'ambiente (sistema operativo, runtime e librerie runtime) deve comunque essere conforme ai vincoli di tempo reale. Nella maggior parte dei casi in tempo reale significa che c'è sempre un momento in deterministico in cui succede qualcosa. deterministico essendo ussually un valore di tempo molto basso nell'intervallo microsecondi / millisecondi.

sistemi in tempo reale dipendono esclusivamente su questo criterio, come i specificiations solito dicono qualcosa come 'Ogni x (periodo di tempo) (fare qualcosa | controllare qualcosa)'. Solitamente questo accade se il sistema si interfaccia con sensori e controlli esterni salvavita o sistemi mortali.

stavo lavorando su un sistema di navigazione in-car infotainment e sviluppata per lo più in C / C ++ con un sistema operativo configurato specificamente per soddisfare i vincoli in tempo reale per fornire la navigazione in tempo reale e la riproduzione multimediale.

Ma non è tutto a sistemi in tempo reale: Solitamente la selezione di algoritmi dell'intero sistema è fatto di avere autonomia deterministici secondo la notazione O-grande, soprattutto utilizzando tempo lineare o costante. Tutto il resto è considerato non-deterministico e quindi non utilizzabile per sistemi real-time.

Tutti i sistemi real-time con cui ho lavorato sono stati prevalentemente scritto in C con alcuni pezzi di assembler, o scritta per lo più in assembler con piccoli pezzi di C. (A seconda se stiamo parlando degli anni '90 e oltre, o anni 80, rispettivamente) Tuttavia, alcuni dei sistemi real-time con cui ho lavorato hanno usato -. non esattamente DSL -. generatori di speciali codici a homegrown

Real-time linguaggio orientato?

Qual è in tempo reale

Per prima cosa dobbiamo definire che cosa in tempo reale significa.

Naturalmente a seconda di come il vostro strumento funziona contro l'ambiente fisico pura in tempo reale non poteva essere fatto in modo efficace, soprattutto perché ci saranno un sacco di dipendenze di terzi.

Se si sta costruendo roba embed utilizzando microcontrollori come arduino , la lingua da utilizzare sarà limitato dall'hardware, ma con roba più complessa come Raspberry Pi , la scelta della lingua è molto ampia.

granularità

Questo dipende da ciò che si sta misurando, se si sta lavorando con:

  • Temperature , una lettura ogni 10 minuti potrebbe essere sufficiente
  • gente altezza o peso , uno o forse quattro letto da giorno
  • lo stato del server , compreso tra 1 secondo per bene il debug di circa 1 ora di tranquillità server secondario senza importanza.
  • collisione atomica count : qualcosa di più fine ...

Evento basato lettura

L'(meglio) modo giusto per la raccolta dei dati si basa su variazione del valore di evento ... ogni volta che il dispositivo non lo permette.

Lo strumento necessario non sondaggio valori da dispositivo, ma il dispositivo deve inviare i valori per il vostro strumento, quando cambiano.

Questo potrebbe essere fatto utilizzando un interrupt hardware trigger o utilizzando la porta protocole come RS-232 stare in ascolto su qualche porta seriale, per il campione.

ambiente di monitoraggio

L'ultima cosa da essere avvertiti è come legittimo utente interagirà con .

Se si sta costruendo dispositivo embed stand-alone, come robot , è possibile utilizzare librerie grafiche di interagire con i touch screen.

Se si sta costruendo il monitor basato sul web, potrebbe essere necessario tenere a mente che il cliente potrebbe essere una vecchia 800x600 schermo monocromatico, con scarsa connessione internet e piccolo processore ... Ma a seconda obiettivo finale, se si può interagire con i clienti, si potrebbe assicurare una forte hardware e connessioni internet forti. In ogni caso si deve guardare per connessione sciolti e l'evento per il ritardo la comunicazione tra server e client. C'è dipendenze in gran parte di terzi.

Quale linguaggio di programmazione?

Da qui, la scelta della lingua è ampia e dipende chiaramente

  • la vostra conoscenza.
  • granularità richiesta (utilizzando evento a base di troppo, naturalmente)
  • la quantità di tempo che si deve costruire lo strumento (denaro;)
  • di ritardo, colleghi di lavoro ...
  • tipo di dispositivo
  • tipo di monitoraggio
  • alcune altre ragioni politiche

Si potrebbe costruire monitoraggio in tempo reale del motore utilizzando e solo, che ho visto motori sofisticati che è stato costruito sotto solo ... ho personalmente costruito un monitor energia solare basato sul web utilizzando , e .

Non posso credere che nessuno ha menzionato linguaggio di programmazione LabVIEW che è ampiamente usato per i sistemi safety-critical in tempo reale. Ha ampie librerie e modelli di progettazione ben noti per ARCHITETTIAMO e l'implementazione dei sistemi RT.

Anche National Instruments rende vari hardware (cRIO, PXI e ecc) che sono progettati per le applicazioni in tempo reale.

Usiamo LabVIEW per Fracking (fratturazione idraulica) che viene utilizzato in ambienti sicuri-critical.

A proposito, LabVIEW è utilizzato anche per applicazioni non-RT troppo.

PLC scala correre e codice FUP che è davvero un dsl in tempo reale, nel senso che le opzioni sono così limitati che è difficile da programmare in un modo che si tradurrebbe in performance di runtime imprevedibile

Un'applicazione davvero mirata del linguaggio C per la programmazione in tempo reale - e tutte le questioni connesse (come ad esempio la programmazione parallela) - viene offerto dal mio Kickstarter http://www.kickstarter.com/projects/767046121/crawl -Spazio-informatica-with-Connel Si chiama "Wide Programmazione" e sono stato facendo la maggior parte della mia vita. I premi includono una libreria software e un libro -. Progettato per essere utile

la società ho lavorato per dal 2003 è stato sviluppo e la distribuzione di una piattaforma Scada / Mes. implementazione originale iniziata nel 1993, utilizzato Modula2 su OS / 2. Più tardi (1998) è stato portato a Ada95 e Windows. Attualmente (2019) usiamo Ada compilatore AdaCore. Il nostro sistema è stato portato ed è stato distribuito a 32/64 di Windows, HP-UX, OpenVMS (e ultimamente anche a Raspberry). Abbiamo installazioni multiple in Europa centrale (industria del gas, raffinerie, fabbriche, centrali elettriche). Ci sentiamo caratteristiche di Ada dare il nostro sistema di un alto grado di affidabilità e impedisce un sacco di errori che potrebbero facilmente occour se abbiamo usato come lingue C. Vedi anche il mio blog https://www.ipesoft.com/en/ blog / what-linguaggio-è-il-D2000-scritto

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top