Migliore quadro o il sistema di architettura per la telemetria / SCADA system design & programmazione [chiuso]

StackOverflow https://stackoverflow.com/questions/4611111

Domanda

Ho chiesto una domanda su un buon libro per questo argomento.

Non ricevendo molte risposte, quindi forse non ci sono tutti i buoni libri (anche se trovo molto strano;Devo andare a cercare di Amazon per me).

In assenza di un libro, forse c'è una buona struttura, alcune buone Url, o semplicemente un consiglio generale.

Come ho chiesto nell'altra domanda:

Sto cercando i diversi progetti, tutti con circa la stessa funzionalità.

Alcuni strumenti di raccogliere alcuni dati (o il controllo di alcune funzionalità).Essi comunicare via Internet (Ethernet/wifi/GPRS/satellitare) con un server di database che memorizza i misure e fornisce un browser a base di mezzi di esecuzione di query sui dati, produzione di report, ecc (e, eventualmente, permette anche il controllo remoto attrezzatura).

Qualcuno può consigliare un buon libro descrive un approccio per lo sviluppo di tale architettura software, mantenendo è generico, quali strumenti, linguaggi.i metodi di prova, ecc da usare?

Per "libro", si prega di sostituire "quadro, alcune buone Url, o semplicemente un consiglio generale".

Questo è un sistema molto comune modello.Che si può consigliare?

È stato utile?

Soluzione

Ho scritto un completo sistema SCADA (esclusa la strumentazione personalizzata hardware).Il sistema è stato progettato per essere generico per consentire la creazione di nuovi modelli di hardware, strumenti, e la raccolta di dati, non è stato scritto come tanti sistemi SCADA per una ditta individuale/pianta, ma è utilizzato a livello internazionale per le migliaia di imprese/impianti.

Ero l'unico sviluppatore/designer con un membro della gestione, la supervisione e la guida del progetto.Ci sono voluti più in quel modo, ma era fattibile.Ci guardammo SCADA sistemi specifici quadri già là fuori e ha deciso che, poiché le nostre unità sono state personalizzate, sarebbe più facile e più flessibile per scrivere il sistema da zero, facendo leva esistenti, framework di sviluppo e i 3 componenti di terze parti.Guardando indietro, questo ha funzionato molto bene per noi perché abbiamo avuto il tempo e l'abilità, ma questa è in genere la soluzione migliore a seconda del vostro business/modello di contratto.

Io non sono più con la società, tuttavia, essi continuare a utilizzare il software esclusivamente e ho lasciato in condizioni eccellenti.Sarei felice di rispondere a eventuali domande di carattere generale che si ha e per aiutare a punto nella giusta direzione.

Architettura Di Sistema

Ecco una panoramica di alto livello quali il sistema è costituito da:

  • Personalizzato dispositivi Cellulari che aveva generico ingressi per ospitare più strumenti di varia tipologia (analogica, digitale, di pressione, di amperaggio, galleggianti, ecc.)
  • UDP/TCP pacchetti di formato personalizzato sono stati inviati dall'unità di rete cellulare (GPRS) per i nostri server (Windows Server 2003 R2).Le informazioni sono state inviate regolarmente per la segnalazione, e personalizzabile cambiamenti di stato che potrebbe essere programmato sul dispositivo o online (la configurazione inviati attraverso la rete cellulare).
  • Personalizzato Multi-threaded .NET applicazione che utilizza il protocollo TCP/UDP Ascoltatori che hanno conquistato i pacchetti in arrivo (Diverse Centinaia di migliaia di un giorno), ha decifrato le intestazioni personalizzate, e instradati i pacchetti, senza ulteriore interpretazione corretta database (Alcuni clienti hanno richiesto un proprio sistema autonomo)
  • Un Microsoft SQL 2005 database che ha agito come il cervello dell'intero sistema.I pacchetti sono stati interpretati utilizzando Le funzioni CLR e automaticamente gli allarmi attivati (come configurato), alla compilazione report, e di mantenere una cronologia completa
  • Personalizzato .NET applicazione per gestire gli avvisi di effettuare le telefonate, l'invio di messaggi SMS e l'invio di messaggi di posta elettronica.Il telefono logica è stata gestita da una Intel Dialogic Scheda su linee analogiche utilizzando una combinazione di prompt registrati e Text-To-Speech.
  • 3 ASP.NET siti:
    • Cliente di fronte a un sito che ha permesso loro di gestire i propri account/sub utenti, traccia avvisi, configurare le unità e gli avvisi, i dati del grafico, mappa dispositivi, esportare i report, etc.
    • Sito di vendita che ha permesso la distribuzione di materiale per la gente di vendite, di monitoraggio delle singole periferiche, salute, relazioni, ecc.
    • La gestione interna del sito che ha permesso la creazione di account cliente, la configurazione/compilazione di unità, e tutte le altre funzioni amministrative, come richiesto.
  • C'era anche una custom sistema di monitoraggio interno per verificare l'integrità del sistema e per avvisare i tecnici di problemi come necessario, dato che il sistema necessari 24/7 operatività.
  • Inoltre abbiamo creato un app iOS, un sito mobile, e di un servizio web personalizzato/client (API) per consentire il recupero dei dati del cliente direttamente dai clienti per consentire loro di integrare la nostra soluzione per la loro esistente (di solito personalizzate) I sistemi SCADA.

Questi sono i componenti da noi utilizzati e hanno lavorato.Facendo di nuovo vorrei cambiare un paio di cose.Vorrei utilizzare Windows Server 2008 R2, SQL 2008 R2, e invece di un Dialogic scheda vorrei utilizzare Microsoft TellMe utilizzando il VoIP.Vorrei anche utilizzare Silverlight invece di ASP.NET.Mi piace molto ASP.NET ma Silverlight è in grado di dare una migliore presentazione e può essere utilizzato al di fuori del browser come necessario - una richiesta comune da SCADA operatori.

Tutti i siti hanno utilizzato 3 componenti di terze parti in modo che la creazione di grafici e tabelle non devono essere scritti da zero.Ci sono alcuni SCADA componenti specifici (in gran parte basato su Java) là fuori.Tuttavia, abbiamo trovato la maggior parte di loro di essere grezzo, brutto, o in modo troppo specifico per essere utilizzato in un generico sistema (anche costoso!Era più semplice e più flessibile per personalizzare un misuratore/pacchetto di grafici a "fare" il nostro).

Come detto, il cervello del sistema è il database.Questo è stato fatto perché Microsoft SQL è un abbastanza impressionante, ben supportato prodotto progettato per l'estrema tempi di uptime con grande backup e opzioni di prestazioni.Anche noi siamo stati molto colpiti con la .NET CLR integrazione che è stato possibile, permettendo nostro costume .NET codice da eseguire come parte del processo.L'unità stavamo sostenendo è venuto in una varietà di modelli e può essere configurato per utilizzare una qualsiasi combinazione di strumenti e così mantenere il database flessibile è stata la chiave. Abbiamo usato un sacco di normalizzazione!

Una cosa che ha veramente aiutato è stato quello di utilizzare Cte Ricorsiva finta l'esistenza o meno di dati quando i valori erano ancora predefinito.Abbiamo fatto questo per risparmiare spazio nel database, ma anche questo ci ha permesso di introdurre un livello di astrazione del database che ha permesso la query per essere flessibile.

Abbiamo avuto pasticciato con OPC in passato, ma è troppo poco, difficile e irritante per le nostre esigenze.Che era a pochi anni fa, però, e non ho guardato fino a questo momento.

Che è un lavoro lungo e molto generale, la risposta alla tua domanda.Non posso darti il codice specifico o andare in estremo dettaglio, dal momento che l'informazione è di proprietà della società, ma posso rispondere ad alcune domande di progettazione e punta verso di quadri/strumenti che abbiamo trovato utili.Il mio consiglio principale sarebbe quello di rompere tutto giù in componenti separate e impiegano la scatola nera modello in ogni modo che i singoli componenti possono essere scambiati/migliorato come necessario.Lo scopo del progetto può sembrare il contrario.Fatemi sapere se avete ulteriori domande o desiderate ulteriori informazioni, buona fortuna!

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