Преобразование / нормализация протокола:Biztalk, альтернативы?

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

  •  04-07-2019
  •  | 
  •  

Вопрос

Нам необходимо использовать десятки различных протоколов из таких систем, как системы безопасности, пожарная сигнализация, системы видеонаблюдения и т.д..и интегрировать их в единый общий протокол.

Я бы хотел, чтобы это был сервер обмена сообщениями, на который многие системы могли бы подписаться и / или общаться через него.

  • опрашивающие и непроверяющие "драйверы" (преобразователи протоколов)
  • обрабатывать RS232/ RS485 / tcp
  • программируемые "драйверы" на управляемом языке, таком как Java или C#
  • возможности двигателя правил

Подходит ли biztalk для этого?

Существуют ли альтернативы с открытым исходным кодом?

Есть ли Java / Java EE способ сделать это?

На одном конце система будет представлять собой SCADA-систему, на другом - своего рода промежуточное программное обеспечение / сервер обмена сообщениями.

Будем признательны за любые мысли о наилучшем способе действий.Я знаю, что на стороне драйвера потребуется значительный объем программирования, однако, как бы у меня ни было искушение, создавать всю систему с нуля было бы нецелесообразно.

Это было полезно?

Решение

Если вы не возражаете работать на платформе Java, есть облегченный переключатель протоколов и реализация Шаблоны корпоративной интеграции в проекте с открытым исходным кодом под названием Верблюд - апач.

Верблюд уже может говорить на большей части общие протоколы и технологии Нравится Файлы, Адрес электронной почты, JMS, XMPP и так далее, чтобы для этих вещей не требовалось никакого фактического кодирования.

Чтобы добавить новые пользовательские протоколы, самый простой способ - создать поверх Компонент MINA который заботится обо всех сетевых процессах, обработке сокетов, передаче потоков и так далее (напримерNIO против BIO и др.).

Затем вы просто расширяете его, чтобы добавить свой собственный кодек протокола (как маршалировать / отменять маршалирование сообщений в сокете с возможным использованием фрейминга и т.д.).

В Компонент HL7 является примером того, как это делается.Еще подробно о написании кодеков MINA читайте здесь.

Затем, как только у вас будет ваш компонент camel (назовем его foo), вы сможете перейти от любого протокола к любому другому протоколу, используя простые URI для реализации любого из Шаблоны корпоративной интеграции такие , как Маршрутизатор на основе контента, Список получателей, Маршрутный лист и т.д.

например ,в коде 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}");

Другие советы

Я бы избегал BizTalk для SCADA и RS232 / RS485, потому что для них обычно требуются решения в реальном времени (или, по крайней мере, с низкой задержкой).BizTalk оптимизирован для высокой пропускной способности, но имеет недостаток в том, что по умолчанию имеет высокую задержку.

Вы можете настроить BizTalk на низкую задержку, но на этом этапе вы обнаружите, что обходите почти все, что встроено в BizTalk, и это, вероятно, будет мешать, вместо того чтобы помогать вам.

www.livedata.com

Это немного дорого, но это движок на базе python, который может принимать один протокол и выдавать другой, он уже настроен для нескольких протоколов scada, таких как ICCP, modbus, OPC и DNP "из коробки".Тогда вы сможете говорить все, что захотите, ниже по течению.

  • Джон

Я предлагаю OpenSCADA ( ОпенСКАДА ).На данный момент веб-сайт находится в некотором беспорядке, но программное обеспечение активно используется и находится в активной разработке.Явная цель - создать общий, независимый от технологии интерфейс для вариантов использования SCADA (хотя на данный момент направление более или менее ориентировано на java [но мы экспериментируем также с ikvm для создания версии .NET]).

Таким образом, вы могли бы использовать OpenSCADA для связи со всеми "аппаратными" устройствами, а затем создать мост к остальной части вашего промежуточного программного обеспечения или создать OpenSCADA bridge в качестве плагина в вашем промежуточном программном обеспечении.Например, у нас уже есть драйверы, которые подключаются к кард-ридерам, подключенным через последовательный сервер к локальной сети.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top