2017-09-01 119 views
1

我想知道是否只需與PLC進行通信,如讀取和寫入標籤,我是否需要使用OPC-UA服務器附帶的所有其他繁重工作?是否需要使用OPC服務器與Controllogix通信?

我試過在Python上寫一個簡單的服務器與PLC通信,但是在請求PLC的信息時我拒絕了。

Controllogix PLC我試圖與Ethernet/IP進行通信,所以爲什麼沒有簡單的服務器/客戶端腳本工作?通常需要準確地與Allen Bradley PLCPLC's進行溝通?

回答

2

與PLC通信需要相當多的時間。

每個供應商都有一個驅動程序,有固件兼容性考慮因素。不同的協議來思考。

OPC-UA使其更具通用性,但OPC-UA在設置通信時仍有一系列的問題需要解決。

我所使用的大多數OPC產品都需要調整其安全性以允許進行匿名通信。這樣做通常是不好的做法。 (網絡入侵將能夠讀取/寫入您的自動化層)如果您正在尋找簡單的通信,則需要關閉證書籤名和一些加密業務。 (同樣,這不是一個好的做法,但對於學習來說沒問題)

畢竟,您必須瞭解如何在OPC服務器上設置PLC,這裏有通道,設備,命名空間等。將OPC客戶端連接到某些opc.tcp://:

如果您已經完成了這麼多工作,那麼我假設您的OPC服務器正在運行並且此時已配置了標籤。您可以使用您的OPC-UA API進行讀取。它可以僅返回值,或者可以通過標記健康狀況,時間戳和一堆其他數據返回對象。取決於實施。之後,你可以做訂閱,寫道......你需要的任何東西。

TLDR:不需要OPC服務器,但可能是最簡單的方法。關閉安全。 (但在將控制層暴露於網絡之前將其重新打開)

+0

好的,謝謝你的信息。我加入了OPC基金會,一直試圖修改他們提供的.NET樣本以滿足我的需求。這是件棘手的事情 – jameson1128

+0

OPC UA不會從PLC自身讀取數據,您的OPC服務器還必須使用其他協議(例如Modbus或Ethernet/IP)來獲取數據。正如你所說的是艱難的東西。 –

1

取決於幾個因素,如果您希望編程簡單,您可以選擇Modbus/TCP我認爲一些AB PLC不需要額外的硬件就可以支持它。但是,如果你想要一些具有更高安全性的東西,例如工業用途,那麼OPC UA將是更好的選擇,但編程的複雜性遠遠高於Modbus,即使使用OPC Foundation或其他庫。可以選擇使用商用或免費(如果有)OPC UA服務器來保存工作,那麼您只需要對客戶端進行編程。

以太網/ IP也應該是可能的,但問題是沒有明確的規範,甚至不同的AB模型談論不同的以太網/ IP方言! ,與Modbus相比,編程要複雜得多。

0

我對這個討論稍微遲了一點,但有一些商業工具可以使這個更容易一些。當你說你正在使用python的時候,想到的就是Cogent的數據中心。這當然不是那裏最便宜的工具,但它們已經完成了PLC/PC通信安全性的所有重要工作。

0

如果試圖使用Python讀取CLX數據,有幾個開源實現可以爲您節省大量工作。像這樣的:

https://github.com/dmroeder/pylogix

如果使用.NET和Visual Studio,您可以使用AdvancedHMI

0

能夠閱讀和ControlLogix平臺通過其通信驅動程序的RSLinx完成寫OPC標籤。 RSLinx充當OPC服務器,它需要配置爲與PLC通信並在同一局域網上的聯網PC上運行。 RSLinx中的幾種口味可供選擇(用於WAN/VLAN也),但本質上這就是你需要跟AB公司PLC的

1

我也有點晚了這一談話的通信驅動程序。如果您有興趣編寫您自己的解決方案並且不想使用任何商用標準,那麼AdvancedHMI是一個以VB.NET編寫的「主要」開源解決方案,該解決方案100%免費,並提供與許多不同PLC的通信,包括ControlLogix平臺。既然我看到你正在用Python進行編程,你可能也有興趣知道該項目在Linux操作系統下的Mono下工作。我用它在EthernetIP和ModbusTCP之間編寫網關,並從OEM設備串行拉取數據,並將此數據推送到CLX PLC。

該論壇充滿了許多有用的提示,並且非常活躍並受到支持。

只是想給你另一種選擇。 DDE,NetDDE,FastDDE,OPC,DCOM,Suitelink ....這些都很好,但主要是付費玩冒險。作爲一名程序員,爲了與我的硬件,恕我直言聯繫,必須支付如此多的金錢似乎是荒謬的。對不起,咆哮。玩的開心!