Frage

Wir haben eine Notwendigkeit, Dutzende verschiedenen Protokolle von Systemen wie Sicherheitssysteme, Feuermelder, Kamerasysteme etc .. zu nehmen und sie in ein einziges gemeinsames Protokoll zu integrieren.

Ich würde dies wie ein Messaging-Server sein, dass viele Systeme zeichnen könnten und oder kommunizieren über.

  • Polling und nicht-Polling "Treiber" (Protokollkonverter)
  • handle RS232 / RS485 / tcp
  • programmierbarer "Treiber" in einer verwalteten Sprache wie Java oder C #
  • Rules Engine Fähigkeit

Enthält diese biztalk passen?

Gibt es Open-Source-Alternativen?

Gibt es einen Java / Java EE Weg, dies zu tun?

An einem Ende würde das System ein SCADA-System sein, an das andere ist eine Art Middleware / Messaging-Server.

Alle Gedanken über den besten Weg wäre, um fortzufahren geschätzt. Ich weiß, dass es eine beträchtliche Menge der Programmierung auf der Fahrerseite beteiligt sein, aber so versucht wie ich bin, würde das ganze System von Grund auf neu nicht geeignet sein.

War es hilfreich?

Lösung

Wenn Sie nichts dagegen nicht auf der Java-Plattform arbeiten, gibt es ein einfaches Protokoll Switcher und Implementierung der Enterprise Integration Patterns in einem Open-Source-Projekt namens Apache Camel .

Kamel kann schon sprechen die meisten der gemeinsame Protokolle und Technologien wie Dateien , E-Mail , JMS , < a href = "http://activemq.apache.org/camel/xmpp.html" rel = "nofollow noreferrer"> XMPP und so weiter, so würde es keine tatsächliche Codierung für diese Dinge erforderlich sein.

Um neue benutzerdefinierte Protokolle die einfachste Route auf der MINA Komponente zu bauen, ist hinzuzufügen , die kümmert sich um alle die Vernetzung, socket Handhabung, Gewindeschneiden usw. (zB NIO gegen BIO et al).

Dann erweitern Sie es gerade Ihr eigenes Protokoll Codec hinzuzufügen (wie Marschall / Abstellungs Nachrichten auf dem Sockel mit möglicherweise mit Framing usw.).

Die HL7 Komponente ein Beispiel, dies zu tun ist. Mehr Detail auf das Schreiben MINA Codecs hier .

Dann, wenn Sie Ihre Kamel Komponente haben (kann es foo nennen) Sie dann von jedem beliebigen Protokoll zu jedem anderen Protokoll mit einfacher URIs eine des Enterprise Integration Patterns wie Content Based Router , Empfängerliste , Laufzettel etc

z. in Java-Code

// route all messages from foo
// to a single queue on JMS
from("foo://somehost:1234").
  to("jms:MyQueue");

// route all messages from foo component
// to a queue using a header
from("foo://somehost:1234").
  recipientList().
    simple("activemq:MyPrefix.${headers.cheese}");

Andere Tipps

würde ich BizTalk für SCADA und RS232 / RS485 vermeiden, da diese in der Regel erfordern Echtzeit (oder zumindest mit geringer Latenz) -Lösungen. BizTalk ist für hohen Datendurchsatz optimiert, aber hat den Nachteil, standardmäßig hohe Latenz aufweist.

Sie können BizTalk für niedrige Latenzzeiten optimieren, aber an diesem Punkt werden Sie feststellen, Sie fast alles umgehen BizTalk hat eingebaut und es wäre wahrscheinlich in der Art und Weise statt des Helfens bekommen.

www.livedata.com

Es ist ein bisschen teuer, aber es ist ein Python-basierte Engine, die ein Protokoll nehmen und eine andere ausspucken, es ist bereits Setup für mehr scada Protokolle wie ICCP, Modbus, OPC, und DNP aus dem Kasten heraus. Dann können Sie reden, was Sie Downstream wollen.

  • John

Ich schlage vor, OpenSCADA . Die Website ist im Moment ein bisschen ein Durcheinander, aber die Software ist aktiv im Einsatz und in der aktiven Entwicklung. Ein erklärtes Ziel ist es, eine gemeinsame, Technologie unabhängig, Schnittstelle für SCADA Anwendungsfälle zu erstellen (auch wenn im Moment die Richtung mehr oder weniger in Richtung Java-orientiert [aber wir experimentieren auch mit ikvm eine .NET-Version erstellen]).

So Sie OpenSCADA nutzen könnten mit allen „Hardware“ Geräten zu kommunizieren und dann eine Brücke zum Rest Ihrer Middleware erstellen oder eine OpenSCADA Brücke als Plugin in Ihrer Middleware erstellen. Wir haben bereits zum Beispiel Treiber, die über einen seriellen Server mit dem LAN verbunden Kartenleser angeschlossen werden.

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