2011-08-10 51 views
4

我在這裏有一個比較特殊的問題。至少我認爲這很特別,因爲谷歌似乎沒有能夠向我提供我正在尋找的信息。從Java訪問S7 Profinet PLC(1212C)的資源

我最近購買了包含S7 1212C PLC的S7 Starter Kit。這一切都設置和運行。

我想要做的是編寫一個與該控制器通信的Java程序(無本機庫)。我知道有S7 Java Beans,但這些似乎只適用於200/300/400 Sieries。有沒有Java協議棧的任何(開源)實現,允許從Java訪問這樣的PLC?如果沒有,我會很樂意得到一些指標,讓我能夠自己實現一個基本的堆棧(看起來Web充滿了高層次的信息,但似乎周圍的低級別的東西很少:-()

幫助非常感謝, 克里斯

回答

1

中找到爲了能夠關閉此。實際使用ProfinetIO沒有純粹的Java方法,問題是啓動通信不是問題,輪詢值也是可能的,但爲了啓動正常的Profinet IO通信,我將不得不訪問TCP和UDP下面的IP堆棧哪些Java不允許。不幸的是,plc發送的「實時」狀態信息是使用Java不支持的IP幀類型發送的。

3

有一個beta測試只有libnodave Java版本,但我不知道是否支持1212

+0

是的......我已經聯繫了這個傢伙。希望很快得到答案。目前,據我所知,該協議基於ISO over TCP(RFC1006),我可以在Apache Mina項目中找到這個實現。除此之外,我已經訂購了一本描述ProfiNet Protokol的書籍...希望它能很快到達。此外,我有一個要求是獨立於任何本地圖書館。這應該是一個Pure-Java解決方案,它消除了很多大多數商業和昂貴的解決方案。 –

+0

好吧......好吧,現在我獲得了更多信息。那麼看起來Libnodave使用Profinet CBA訪問PLC。 profinet的人建議看看基於UDP的Profinet IO。不幸的是,似乎沒有可用的Profinet IO程序的一個例子(不管語言如何)。 –

+0

Libnodave不能通過Profinet訪問S7 PLC ... – avra

0

我不知道這是否對你有幫助,但是我們有一個java庫(LGPL 3.0),它通過TCP/IP與S7設備本地通訊。

看看http://openscada.org

代碼本身可以在http://git.openscada.org/?p=org.openscada.atlantis.git;a=tree;f=org.openscada.da.server.dave;hb=HEAD

+0

謝謝你...我會看看它。我實際上手工實現了Profinet IO協議的一部分,但對於實際的數據交換,我將不得不在TCP協議棧下進行實現,這在Java中是不可能的,因此我放棄了它。認爲Profinet CBA的實現足以滿足我想使用它的需求,而且我可以看到它利用了很多我很容易用作開發人員的工具(JCIFS,JInterop,...)感謝您的指針:-) –