2010-07-21 71 views
3

我可以用C#編寫PLC控制程序嗎? 如何?用C#.NET編寫PLC程序

+0

我相信這將取決於製造商或品牌 – Luiscencio 2010-07-21 18:21:59

+1

這是什麼意思?寫入由PLC中的處理器執行的程序或僅需要通過例如PLC與PLC通信的程序。以太網,Modbus等? – JohnSaps 2015-07-28 15:49:30

回答

10

不太可能。 C#需要實現公共語言運行時(CLR)來運行以該語言或任何.NET語言開發的應用程序。我會說任何PLC都不太可能出於各種原因而被製造出來。

現在你可以做的是有你的C#應用​​程序使用OPC協議的PLC讀取和寫入數據。有幾個不同的可用於.NET Framework的OPC庫。

Here是一個不錯的網站佈局的選項。

3

不,至少不是現在。至於未來?幾乎可以肯定的是,也不是IMO。

PLC的硬件特定於使用CLR編寫的程序。

如果你有興趣寫代碼,在不同類型的PLC的便攜式,你會得到現在的問題是使用IEC 6113-3 Structured Text代碼最接近的一次。

大多數,如果不是所有領先的PLC製造商現在能夠利用這一點,包括歐姆龍,西門子,Allen Bradley的,三菱,TE電器和可能更多。

0

C#沒有在PLC世界中使用。使用.NET Micro Framework可以獲得最接近的FEZ Domino

0

unitronics怎麼樣。沒有與源代碼的通信驅動unitronics

2

是所有PLC型號,你絕對可以編寫軟件來讀取和使用C#編寫的PLC。但是,這可能需要很多工作。如果你幸運的話,你可以爲感興趣的PLC追蹤一個.NET庫。在我的情況下,這是一個DirectLogic PLC EBC模塊,在那裏我找到了一個VB.NET庫here和一個Allen Bradley SLC Micro,在那裏我找到了另一個VB.NET庫here。這兩種情況下,我不得不重構代碼,然後從我的C#應用​​程序中引用它。

如果你不能找到一個.NET庫,你通常可以得到一些C/C++代碼保持,然後自己將它移植。如果情況變得更糟,並且只有預編譯的庫,那麼總是有native interop

2

我從事PLC編程已經很長時間了,但是PLC不是一組根據輸入,定時器等進行決策併發布輸出的邏輯門。那麼爲什麼不能使用vb或c#或任何.Net語言來執行此邏輯?

這不是一個指示plc的問題,它更多的是它可以取代plc的問題,如果硬件,驅動程序和dll的可用位置。

當然,如果尚不可用,這將很快到來。

7

Beckhoff公司實際提供的PLC程序的變量直接操作的接口(ADS)使用C#(和其他語言),可用於TwinCAT 2或3。正如Ahmed Yazan Tibi所說的,你也可以在TC3的PLC程序中直接使用C++。

在這裏看到:http://www.beckhoff.com/english.asp?twincat/twincat_ads_communication_library.htm

你仍然需要在PLC程序中創建的變量,並使用Beckhoff公司的系統管理軟件之前,這將是有用的,「連接」他們的物理接口。

雖然這是完全有可能的,你會遺漏,通過走這路線忽略一些直接在PLC環境規劃的主要優勢:

  1. 確定性是
  2. 運行時的安全

儘管如此,它具有很多優點 - 從能夠非常簡單地將任何類型的前端技術連接到將數據直接記錄到數據庫及其間的所有內容中。

乾杯,

LazzMaTazz

4

了Beckhoff的TwinCAT是這樣的!更進一步,您必須使用IEC 6113-3及其5種編程風格,包括最接近「文本代碼樣式」的「結構化文本」代碼。

警告,不要創建一個具有常量循環的程序(while(1)),它會被檢測爲故障。該循環是全局的並且經過驗證。

享受PLC編程。

3

是的,你可以。

我目前正在做它,在一個活的環境。我們通過TCP使用Modbus協議。

我不會說,它的隨和,或PLC編程的最佳選擇,但它的工作,我們有活機赫然出現在世界上,你附近工作和運行在醫院:)

它甚至不必是C#,你可以使用任何可以通過TCP通信的語言,你只需要編程一個通過TCP工作的Modbus接口,這非常容易。然後,您需要掌握一些採用Modbus TCP的從站控制器,並將這些命令轉換爲設置的其他部分。

現在很多人都會皺眉說垃圾話,比如說「不是一個確定性的環境」,或者「記憶管理」,或者我最喜歡的「沒有運行在RTOS上」。所有這些都是垃圾。在那裏很少有環境要求使用RTOS或確定性編程來實現它,事實上,200毫秒的響應時間很好,我們發現c#最能做到。如果你的環境需要RTOS,我不會推薦使用C#,但如果像大多數環境一樣,你只需要在人類感知時間控制東西,那麼C#[在這裏填寫你的語言選擇]是好的。

哦,並且避免使用梯形圖編程,或者其他愚蠢的,特別爲電氣工程師設計的,以使他們的轉換更容易。

2

您可以從a.net應用向PLC通過檢索或在PLC中的存儲器中存儲的數據進行通信,這就是所謂的a DB。然後你可以使用這些變量來操縱PLC的代碼。

與plc的TCPIP通信可以使用僅與siemens plc兼容的opensource api snap7完成。

也許更可靠的設置是通過opc服務器進行通信。這可以通過凱譜華或SNMP SIEMENS完成

有跡象表明,可以買允許通信在這些協議的OPC幾個.NET API(還有其他協議)

  • OPC DA通過COM
  • 通過TCP或webservices的OPC UA