2008-10-23 19 views
3

我們需要從安全系統,火災報警器,攝像機系統等系統中採取幾十種不同的協議,並將它們集成到一個單一的通用協議中。協議轉換/標準化:Biztalk,替代方案?

我希望這是一個消息服務器,許多系統可以訂閱和通信。

  • 輪詢和非輪詢 「驅動器」(協議轉換器)
  • 手柄RS232/RS485/TCP
  • 可編程像Java託管語言或C#
  • 規則引擎能力的 「司機」

biztalk是否適合這個?

有沒有開源的替代品?

有沒有Java/Java EE的方式來做到這一點?

一方面,系統將是一個SCADA系統,另一方面是一種中間件/消息服務器。

任何想要繼續下去的最佳途徑,將不勝感激。我知道在驅動程序方面會涉及大量的編程,但是像我一樣受到誘惑,從頭開始構建整個系統並不合適。

回答

3

如果您不介意在Java平臺上工作,那麼在一個名爲Apache Camel的開源項目中有一個輕量級協議切換器和Enterprise Integration Patterns的實現。

駱駝已經可以說大部分的common protocols and technologiesfilesemailJMSXMPP等等所以會爲這些事情不需要實際的編碼。

要添加新的自定義協議,最簡單的方法是在MINA component之上構建,該接口負責處理所有網絡,套接字處理,線程處理等(例如,NIO與BIO等)。

然後,你只需要擴展它來添加你自己的協議編解碼器(如何編組/封裝可能使用幀等插座上的消息)。

HL7 component就是這樣做的一個例子。更多detail on writing MINA codecs here

然後,一旦你有你的駱駝組成部分(可以稱之爲富),那麼你可以從任何協議橋使用簡單的URI來實現任何的任何其他協議Enterprise Integration PatternsContent Based RouterRecipient ListRouting Slip

例如在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}"); 
5

我會避免對SCADA和RS232/RS485,因爲這些通常需要實時(或至少低延遲)解決方案的BizTalk。 BizTalk針對高吞吐量進行了優化,但缺點是默認情況下延遲較長。

您可以調整BizTalk以實現低延遲,但此時您會發現您幾乎可以繞過BizTalk內置的所有內容,並且可能會阻礙BizTalk的發展。

1

我建議OpenSCADA。該網站當時是有點亂,但軟件是積極利用和積極開發。一個明確的目標是創建一個通用的,獨立於技術,接口SCADA用例(儘管此刻的方向或多或少對Java面向[但我們也實驗IKVM創建.NET版本])。

所以,你可以使用OpenSCADA與所有的「硬件」設備進行通信,然後創建一個橋樑,你的中間件的其餘部分,或者創建一個OpenSCADA橋爲你的中間件中的插件。我們已經有一個針對連接到通過串口服務器的局域網連接的讀卡機實例的驅動程序。

+0

謝謝,我會檢查這個。 – JeffV 2009-08-14 11:32:20

2

www.livedata.com

這是一個有點貴,但它是一個基於Python引擎,可以採取一個協議,吐出另一個,它已經建立了多個SCADA協議,如政府間委員會,MODBUS,OPC和DNP盒子外面。然後,你可以談談你想要什麼的下游。

  • 約翰