我们需要从安全系统,火警,摄像系统等系统中采集几十种不同的协议,并将它们集成到一个通用协议中。
我希望这是……
www.livedata.com
它有点贵但它是一个基于python的引擎,可以采用一个协议并吐出另一个协议,它已经设置了多个scada协议,如ICCP,modbus,OPC和开箱即用的DNP。然后你可以随心所欲地说下游。
如果您不介意在Java平台上工作,那么可以使用轻量级协议切换器和实现 企业集成模式 在一个名为的开源项目中 Apache Camel 。
骆驼已经可以说大部分了 通用协议和技术 喜欢 档 , 电子邮件 , 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}");
我建议 OpenSCADA 。该网站目前有点混乱,但该软件正在积极使用和积极开发。一个明确的目标是为SCADA用例创建一个通用的,独立于技术的接口(虽然目前方向或多或少是针对java [但我们也尝试使用ikvm来创建.NET版本])。
因此,您可以使用OpenSCADA与所有“硬件”设备进行通信,然后创建与其他中间件的桥接,或者在中间件中创建OpenSCADA桥接器作为插件。例如,我们已经连接到通过串行服务器链接到LAN读卡器的驱动程序。
我会避免使用BizTalk for SCADA和RS232 / RS485,因为这些通常需要实时(或至少低延迟)解决方案。 BizTalk针对高吞吐量进行了优化,但缺点是默认情况下具有高延迟。
您可以调整BizTalk以获得低延迟,但此时您会发现几乎所有BizTalk都内置了它,它可能会妨碍您而不是帮助您。