C#聯合WINCC之數據通信


 

【公眾號dotNet工控上位機:thinger_swj】

在工控領域中,WINCC仍然占有很大的市場份額。很多時候我們說學習C#開發上位機可以取代傳統的組態軟件,兩者就像冤家一樣,然而,即使是冤家,也會有聯合的時候。當我們的項目已經采用WINCC落地之后,已經學會C#的我們,還能做哪些事情呢?今天跟大家分享一下如何使用C#,與WINCC聯合實現數據通信。

1. 環境搭建

眾所周知,WINCC作為西門子家族的一款組態軟件,主要是用來和PLC(主要是西門子PLC)通信,因此我們選擇的硬件就是一款西門子S7-1200 PLC。軟件方面,使用的是WINCC V7.4(其他版本待測試),以及宇宙第一IDE——VS 2019

這里有個問題提醒一下,當我安裝好WINCC V7.4,通過添加驅動和S7-1200 PLC通信時,怎么都連接不上,最后發現應該是WINCCS7-1200 PLC的驅動有點BUG,缺少一些組件,通過安裝TIA博圖之后,最終解決。

如果想通過C#聯合WINCC訪問到PLC里的變量,前提是WINCC項目已經開發好,並且處於運行狀態,操作步驟如下:

首先創建一個S7連接,並創建4個變量分別為data1data2data3data4,地址對應DB100.DBD0DB100.DBD4DB100.DBD8DB100.DBD12

 

 

接着創建一個畫面,拖入4個顯示控件,分別綁定這4個變量,通過博圖將4個變量的值分別設置為50.560.570.580.5

 

 

然后運行WINCC畫面。

 

 

接下來我們要做的是通過編寫一個簡單的Winform程序來讀取WINCC中這4個變量的值並顯示,這里有兩種方式可以實現這樣的效果,一種是通過直接訪問WINCC變量進行讀取,另一種是通過訪問WINCC畫面中的控件。

2. 訪問WINCC變量

1、首先創建一個新的Windows窗體應用,再從WINCC安裝目錄中找到兩個dll,分別是CCHMIRuntime.dllCCHMITags.dll,位置默認處於C:\Program Files (x86)\Common Files\Siemens\Bin,將這兩個dll復制到debug根目錄下並手動添加引用。

 

 2、Windows窗體界面設計如下圖所示:

 

 

3、編寫讀取代碼

 

 

4、編寫寫入代碼

 

 

5、讀取結果:

 

 

6、寫入結果

 

 

3. 訪問WINCC控件

1、重新新建一個窗體,窗體內容和布局與之前一致:

 

 

2、讀取代碼

 

3、寫入代碼

 

 

4、讀取結果

 

 

 

5、寫入結果

 

 

這里值得注意的是,通過訪問控件實現的寫入並沒有真正寫入PLC,所以這種方式僅限於讀取數據,但可以通過這種方式來設置控件的其他屬性,比如樣式、背景、文本等。

本文主要以學習研究為主,針對C#WINCC之間的數據通信做了較為詳盡的描述,相信對於很多電氣工程師,尤其是以西門子PLC為主的電氣工程師來說,會有很大幫助。也許這種情形目前用途不那么廣泛,但是出現這種需求時,就會變得很有用。

我一直堅信因為努力才會有結果,而不是因為看到結果,才想着去努力,而是就像學習C#和上位機一樣,你如果不學習,這些內容對你來說可能就是天方夜譚,但是如果你提前學習了,你會發現其實很簡單。

近幾年隨着人工智能、物聯網的普及,工控行業發生了很大的變化,每一位電氣工程師都應該及時作出調整,至少學習一門高級編程語言,未雨綢繆,以更好的姿態來應對即將到來的智能制造2025


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM