Преобразование / нормализация протокола: Biztalk, альтернативы? - PullRequest
3 голосов
/ 23 октября 2008

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

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

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

Подходит ли biztalk к этому?

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

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

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

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

Ответы [ 4 ]

6 голосов
/ 23 октября 2008

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

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

3 голосов
/ 16 июня 2010

www.livedata.com

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

  • John
3 голосов
/ 23 октября 2008

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

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

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

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

Компонент HL7 является примером этого. Подробнее подробнее о написании кодеков MINA здесь .

Затем, получив ваш верблюжий компонент (назовем его 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}");
2 голосов
/ 14 августа 2009

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

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

...