Trainsim

Ambiente di simulazione per il collaudo di apparecchiature ferroviarie in sicurezza

Collaudo di apparecchiature ferroviarie
La richiesta

GE Transportation, la divisione dedicata ai sistemi di segnalamento ferroviario della nota multinazionale, aveva la necessità di implementare un complesso sistema di simulazione di scenari, per il collaudo di apparecchiature ferroviarie in sicurezza.

Il simulatore avrebbe dovuto girare su più nodi (PC industriali e/o a bordo di device), con requisiti molto importanti di sincronizzazione dello stato di simulazione (latenze di sincronizzazione inferiori a 10 ms).

Inoltre, era necessario che i nodi del simulatore potessero funzionare anche a bordo di computer Windows, e che la libreria fosse utilizzabile da C++, Python e LISP.

Problemi affrontati

Soluzioni implementate

Le richieste
  • Simulazione di scenari tra più nodi
  • Supporto Linux e Windows
  • Sincronizzazione tra nodi entro 10ms
Cosa ha fatto Develer
  • Utilizzo di ZeroMQ come trasporto
  • Ottimizzazione tramite l’uso di C++, tecniche di multithreading e zero-copy
  • Binding da C++ a Python e a LISP
Risultati
  • Latenze estremamente basse e in linea con i requisiti
  • Software funzionante su piattaforme multiple
Vantaggi introdotti dalle nostre soluzioni

Abbiamo utilizzato la libreria ZeroMQ per implementare il protocollo di trasporto per la sincronizzazione tra i nodi. I meccanismi di publish/subscribe e request/reply implementati da ZeroMQ si sono rivelati molto efficienti, sebbene durante la fase iniziale di studio architetturale abbiamo effettuato importanti ottimizzazioni tramite l’uso di un approccio completamente multithread, con sincronizzazione lockless e zero copy dei dati.

L’uso del C++ si è poi rivelato vincente anche in fase di scrittura di binding, dove abbiamo potuto facilmente interfacciarsi a Python e LISP, i linguaggi scelti dal cliente per la scrittura dei nodi a livello applicativo.

Aumentare le performance è il tuo obiettivo?

Contattaci
In quale modo la nostra metodologia ci ha aiutato

Abbiamo scelto un approccio performance-oriented: cominciando da pagina bianca, abbiamo prima lavorato per ottenere le performance richieste nei casi semplici, e poi durante lo sviluppo è stata sempre considerata bloccante ogni regressione in termini di performance dovuta all’aggiunta di nuove funzionalità.

In quale modo l’open source ha aiutato il progetto

La libreria ZeroMQ è stato un importante tassello, che si è rivelato un trasporto perfetto per l’applicazione in questione, unendo basse latenze, un’architettura thread-safe e la piena portabilità tra mondo Linux e mondo Windows.

Cliente

Multinazionale produttrice di sistemi di segnalamento ferroviario

Staff

“L’uso di ZeroMQ e del multithreading ha consentito di raggiungere fin dall’inizio e mantenere importanti target di performance riguardo alla latenza di comunicazione tra i nodi”

Mirko Damiani Sviluppatore embedded @Develer