Beste Rahmen oder Systemarchitektur für die Telemetrie / SCADA-System Design & Programmierung [geschlossen]

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

Frage

Ich fragte für dieses Thema .

Es ist nicht viele Antworten bekommen, vielleicht gibt es keine guten Bücher (obwohl ich das seltsam finden, ich muß Amazon für mich gehen suchen).

In Ermangelung eines Buches, vielleicht gibt es einen guten Rahmen, einige gute URLs, oder einfach nur allgemeine Ratschläge.

fragte Wie ich in der anderen Frage:

  

Ich bin auf der Suche an mehreren Projekten, die alle   mit etwa der gleichen Funktionalität.

     

sammeln Einige Instrumente einige Daten (oder   steuert einige Funktionen). Sie   Kommunikation über das Internet   (Ethernet / WLAN / GPRS / Satellit) mit   ein Datenbankserver, der die speichert   Messungen und stellt einen Browser   basierend Mittel, um die Daten abzufragen,   Erstellung von Berichten, etc. (und möglicherweise   Auch ermöglicht die Fernsteuerung von   Ausrüstung).

     

Kann jemand ein gutes Buch empfehlen   beschreibt einen Ansatz zur Entwicklung   eine solche Software-Architektur, keeping   es allgemein, die Werkzeuge, Sprachen.   Testmethoden, etc. zu benutzen?

Für „Buch“ Bitte ersetzen Sie „Rahmen, einige gute URLs, oder einfach nur allgemeine Hinweise“.

Dies ist ein sehr gemeinsames System Muster. Wer kann raten?

War es hilfreich?

Lösung

Ich habe ein komplettes SCADA-System geschrieben (ohne individuelle Instrumentierung Hardware) . Das System wurde entwickelt, um generische der Schaffung neuer Hardware-Modelle, Instrumenten und Datenerfassung zu ermöglichen - es war wie so viele SCADA-Systeme für ein einzelnes Unternehmen / Werk nicht geschrieben, sondern ist international für Tausende von Unternehmen / Pflanzen verwendet .

war ich die einzige Entwickler / Designer mit einem Mitglied der Geschäftsführung zu überwachen und um das Projekt zu leiten. Es dauerte länger, dass die Art und Weise, aber es war machbar. Wir sahen uns an andere SCADA spezifische Systeme / Frameworks bereits da draußen, und beschlossen, dass da unsere Einheiten individuelle waren, ist es einfacher und flexibler wäre, das System von Grund auf die Nutzung vorhandener Entwicklungs-Frameworks und 3rd-Party-Komponenten zu schreiben. Im Rückblick, das für uns wirklich gut funktioniert, weil wir die Zeit und Geschick hatten, aber dies ist in der Regel nicht die beste Lösung für Ihr Unternehmen / Vertragsmodell abhängig.

Ich bin nicht mehr mit dieser Gesellschaft, aber nutzen sie immer noch meine Software ausschließlich und ich ging zu ausgezeichneten Konditionen. Ich würde gerne allgemeine Fragen zu beantworten und zu helfen in die richtige Richtung weisen Sie haben.

Systemarchitektur

Hier ist ein High-Level-Überblick über das System bestand aus:

  • Benutzerdefinierte Cellular Geräte, die generische Eingaben hatten mehrere Instrumente unterschiedlicher Arten aufzunehmen (analog, digital, Druck, Stromstärke, die Schwimmer, usw.)
  • UDP / TCP-Pakete von benutzerdefinierten Format durch die Einheiten über das Zellennetz (GPRS) an unsere Server ( Windows Server 2003 R2) gesendet wurden. Die Information wurde regelmäßig für die Berichterstattung gesendet und auf kundengerechten Zustandsänderungen, die am Gerät oder online programmiert werden könnten, (die Konfiguration gesendet über das Zellennetz) .
  • Eine benutzerdefinierte Multi-Threaded .NET Anwendung unter Verwendung von TCP / UDP-Listener, die eingehenden Pakete gepackt (Mehrere hunderttausend pro Tag) , entziffert benutzerdefinierte Header und geleitet die Pakete ohne weitere Interpretation auf die richtige Datenbank (Einige Kunden ihr eigenes Standalone-System erforderlich)
  • A Microsoft SQL 2005 Datenbank, die als Gehirn für das gesamte System gehandelt hat. Die Pakete wurden mit CLR-Funktionen interpretiert und automatisch ausgelöste Alarme (wie konfiguriert) , zusammengestellt Berichte und hielt eine vollständige Geschichte
  • Ein benutzerdefinierte .NET Anwendung Griff Benachrichtigung per Telefon Tätigen von Anrufen, SMS-Nachrichten zu senden und E-Mails zu senden. Das Telefon Logik durch eine Intel Dialogic-Karte über analoge Leitungen mit einer Kombination von aufgezeichneten Ansagen und Text-To-Speech behandelt wurde.
  • 3 ASP.NET Seiten:
    • Kundenstandort gegenüber, die ihnen erlaubt, ihre Konten zu verwalten / sub Benutzer, Spur Warnungen, configure Einheiten und Alarme, Diagrammdaten, Karten Geräte, Export Berichte, etc.
    • Vertrieb Website, die die Verteilung des Materials zu Vertriebsmitarbeiter erlaubt, einzelner Geräte Tracking-Gerät Gesundheitsberichterstattung, etc.
    • Interne Management-Site, die die Erstellung von Kunden-Accounts erlaubt, die Konfiguration / Build von Einheiten, und alle anderen administrativen Funktionen wie erforderlich.
  • Es gab auch ein spezielles internes Kontrollsystem, die Gesundheit des Systems und Alarm-Techniker von Problemen wie nötig, um zu überprüfen, da das System 24/7 Verfügbarkeit erforderlich.
  • Zusätzlich haben wir eine iOS-App , mobile Website , und eine benutzerdefinierte Web-Service / Client ( API ) Abruf zu ermöglichen direkt von den Kunden von Kundendaten, damit sie unsere Lösung mit ihrem bestehenden integrieren (in der Regel benutzerdefinierte) SCADA-Systeme.

Das sind die Komponenten, die wir verwenden, und sie arbeiteten. Es wieder tun würde ich ein paar Dinge ändern. Ich würde verwenden Windows Server 2008 R2 , SQL 2008 R2 , und statt einer Dialogic Karte würde ich Microsoft TellMe mit VoIP. Ich würde verwenden auch Silverlight anstelle von ASP.NET. Ich mag ASP.NET, aber Silverlight kann eine viel bessere Vorstellung geben und gebrauchte außerhalb des Browsers als notwendig sein kann -. Eine gemeinsame Anfrage von SCADA Operatoren

Die Seiten alle verwendeten 3rd-Party-Komponenten , so dass Charting und Tabellen nicht von Grund auf neu geschrieben werden. Es gibt einige SCADA spezifische Komponenten (weitgehend Java basiert) da draußen. Allerdings haben wir die meisten von ihnen gefunden zu spezifisch roh, hässlich, oder Weg, um in unserem generischen System verwendet werden (auch teuer! Es war einfacher und flexibler ein Messgerät / Charting-Paket zu „make“ unsere eigenen gestalten ) .

Wie bereits erwähnt, das Gehirn des Systems war die Datenbank . Dies wurde getan, weil Microsoft SQL ein ziemlich genial ist, gut unterstützt Produkt für extreme Laufzeiten mit großen Backup-und Performance-Optionen konzipiert. Wir waren auch mit der .NET CLR-Integration , das möglich war wirklich beeindruckt unser eigener .NET-Code ermöglicht als Teil dieses Prozesses zu laufen. Die Einheiten waren wir kamen von Modellen in einer Vielzahl unterstützen und so konfiguriert werden, könnte eine beliebige Kombination von Instrumenten zu verwenden und so halten die Datenbank flexibel war der Schlüssel. Wir haben eine Menge Normalisierung!

Eine Sache, die wirklich war geholfen Verwendung rekursive CTE zu fälschen die Existenz von Daten, wenn die Werte nach wie vor der Standard waren. Wir haben diesen Raum in der Datenbank speichern, aber das konnten wir auch eine Abstraktionsschicht in der Datenbank einzuführen, die die Abfragen als auch flexibel sein darf.

Wir hatten mit OPC in der Vergangenheit durcheinander, aber fanden es zu unflexibel, schwierig und irritierend für unsere Bedürfnisse. Das war vor ein paar Jahren aber, und ich habe nicht auf sie da.

sah

Das ist eine lange und sehr allgemeine Antwort auf Ihre Frage. Ich kann Ihnen nicht spezifischen Code geben oder in extremes Detail gehen, da diese Informationen Eigentum dieser Gesellschaft ist, aber ich kann einige Design-Fragen beantworten und zeigen Sie auf Frameworks / Tools, die wir hilfreich. Mein besten Rat sein würde Pause alles in einzelne Komponenten und verwendet, um das Black-Box-Modell auf jedem so, dass einzelne Komponenten ausgelagert als notwendig werden können / verbessert . Der Umfang des Projekts kann überwältigend scheinen anders. Lassen Sie uns wissen, wenn Sie weitere Fragen haben oder weitere Informationen, viel Glück gefällt!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top