Question

Nous avons besoin de prendre des dizaines de protocoles différents de systèmes tels que des systèmes de sécurité, des alarmes incendie, des systèmes de caméras, etc. et de les intégrer dans un protocole commun unique.

J'aimerais qu'il s'agisse d'un serveur de messagerie auquel de nombreux systèmes pourraient s'abonner et / ou communiquer via.

  • "Pilotes" interrogés et non interrogés (convertisseurs de protocole)
  • gérer les ports RS232 / RS485 / tcp
  • pilotes " programmables " dans un langage géré tel que Java ou C #
  • capacité du moteur de règles

Est-ce que biztalk correspond à cela?

Existe-t-il des alternatives open source?

Existe-t-il un moyen Java / Java EE pour le faire?

D'un côté, le système serait un système SCADA, de l'autre côté, c'est une sorte de middleware / serveur de messagerie.

Toute idée sur la meilleure façon de procéder serait la bienvenue. Je sais que les pilotes impliqueront une quantité considérable de programmation, mais aussi tentant que je sois, il ne serait pas approprié de construire tout le système à partir de rien.

Était-ce utile?

La solution

Si cela ne vous dérange pas de travailler sur la plate-forme Java, il existe un commutateur de protocole léger et une implémentation du Modèles d'intégration d'entreprise dans un projet open source appelé Apache Camel .

Camel peut déjà parler la plupart des protocoles et technologies communs , comme fichiers , courriel , JMS , < a href = "http://activemq.apache.org/camel/xmpp.html" rel = "nofollow noreferrer"> XMPP et ainsi de suite afin qu'aucun code ne soit réellement nécessaire pour ces opérations.

Pour ajouter de nouveaux protocoles personnalisés, la solution la plus simple consiste à construire au-delà du composant MINA qui prend en charge tous les réseaux, la gestion des sockets, les threads, etc. (par exemple, NIO versus BIO et autres).

Ensuite, il vous suffit de l’étendre pour ajouter votre propre codec de protocole (comment regrouper / annuler les messages sur le socket en utilisant éventuellement le cadrage, etc.).

Le composant HL7 en est un exemple. Plus des détails sur l'écriture de codecs MINA ici .

Ensuite, une fois que vous avez votre composant chameau (appelons-le foo), vous pouvez alors passer d'un protocole à un autre en utilisant des URI simples pour implémenter l'un des Modèles d'intégration d'entreprise tels que Routeur basé sur le contenu , Liste des destinataires , bordereau de routage , etc.

par exemple. en code Java

// 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}");

Autres conseils

J'éviterais BizTalk pour SCADA et RS232 / RS485 car ils nécessitent généralement des solutions en temps réel (ou du moins, une latence faible). BizTalk est optimisé pour un débit élevé, mais présente l'inconvénient d'avoir une latence élevée par défaut.

Vous pouvez modifier BizTalk pour obtenir une faible latence, mais à ce stade, vous éviterez presque tout ce que BizTalk a intégré et cela vous gênerait probablement au lieu de vous aider.

www.livedata.com

C'est un peu cher, mais c'est un moteur basé sur Python qui peut prendre un protocole et en cracher un autre. Il est déjà configuré pour plusieurs protocoles scada tels que ICCP, Modbus, OPC et DNP. Ensuite, vous pouvez parler de ce que vous voulez en aval.

  • John

Je suggère OpenSCADA . Le site Web est pour le moment un peu en désordre, mais le logiciel est activement utilisé et en développement actif. Un objectif explicite est de créer une interface commune indépendante de la technologie pour les cas d’utilisation SCADA (bien que, pour le moment, la direction soit plus ou moins orientée vers java [mais nous expérimentons également avec ikvm pour créer une version .NET]).

Vous pouvez donc utiliser OpenSCADA pour communiquer avec tous les "matériels". périphériques, puis créez un pont avec le reste de votre middleware ou créez un pont OpenSCADA en tant que plug-in au sein de votre middleware. Nous avons déjà par exemple des pilotes qui se connectent à des lecteurs de cartes reliés au réseau par un serveur série.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top