3

我们需要从安全系统、火警、摄像系统等系统中获取数十种不同的协议,并将它们集成到一个通用协议中。

我希望这是一个消息服务器,许多系统都可以订阅和/或通过它进行通信。

  • 轮询和非轮询“驱动程序”(协议转换器)
  • 处理 RS232 / RS485 / tcp
  • 以 Java 或 C# 等托管语言编写的可编程“驱动程序”
  • 规则引擎能力

biztalk 适合这个吗?

有开源替代品吗?

是否有 Java / Java EE 方法可以做到这一点?

该系统一方面是 SCADA 系统,另一方面是一种中间件/消息服务器。

任何关于最佳方式的想法将不胜感激。我知道在驱动程序方面会涉及大量的编程,但是尽管我很想从头开始构建整个系统是不合适的。

4

4 回答 4

6

我会避免 BizTalk 用于 SCADA 和 RS232/RS485,因为这些通常需要实时(或至少低延迟)解决方案。BizTalk 针对高吞吐量进行了优化,但默认情况下具有高延迟的缺点。

您可以调整 BizTalk 以获得低延迟,但此时您会发现您绕过了 BizTalk 内置的几乎所有内容,它可能会阻碍而不是帮助您。

于 2008-10-23T14:30:59.513 回答
3

如果您不介意在 Java 平台上工作,那么在一个名为Apache Camel的开源项目中,有一个轻量级协议切换器和企业集成模式的实现。

Camel 已经可以说大多数常见的协议和技术,如文件电子邮件JMSXMPP等,因此这些东西不需要实际编码。

要添加新的自定义协议,最简单的方法是构建在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}");
于 2008-10-23T13:53:09.747 回答
3

www.livedata.com

它有点贵,但它是一个基于 python 的引擎,可以采用一个协议并吐出另一个协议,它已经为多种 scada 协议设置,例如 ICCP、modbus、OPC 和 DNP。然后你可以在下游说任何你想要的东西。

  • 约翰
于 2010-06-16T04:31:07.890 回答
2

我建议OpenSCADA。该网站目前有点混乱,但该软件正在积极使用和积极开发中。一个明确的目标是为 SCADA 用例创建一个通用的、独立于技术的接口(尽管目前方向或多或少面向 java [但我们也尝试使用 ikvm 创建一个 .NET 版本])。

因此,您可以使用 OpenSCADA 与所有“硬件”设备进行通信,然后创建一个连接到其余中间件的桥,或者创建一个 OpenSCADA 桥作为中间件中的插件。例如,我们已经拥有连接到通过串行服务器连接到 LAN 的读卡器的驱动程序。

于 2009-08-13T21:11:03.987 回答