C#遇上WINCC

前言

在工控領域中,WinCC仍然佔有很大的市場份額。很多時候我們說學習C#開發上位機可以取代傳統的組態軟體,兩者就像冤家一樣,然而,即使是冤家,也會有聯合的時候。比如,當我們的專案已經採用WINCC並已經落地,如果我們學會C#,能做哪些事情呢?今天跟大家分享一下如何使用C#/。NET聯合西門子WinCC實現資料通訊。

環境搭建

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

這裡注意一下:測試時當安裝好WinCC V7。4,透過新增驅動和S7-1200 PLC通訊時,怎麼都連線不上,最後發現應該是WINCC的S7-1200 PLC的驅動有點BUG,缺少一些元件,透過安裝TIA博圖之後,最終解決。

如果想透過C#聯合WINCC訪問到PLC裡的變數,前提是WINCC專案已經開發好,並且處於執行狀態,操作步驟如下:

1、首先建立一個S7連線,並建立4個變數分別為data1、data2、data3、data4,地址對應DB100。DBD0、DB100。DBD4、DB100。DBD8、DB100。DBD12,如下圖所示:

2、建立一個畫面,拖入4個顯示控制元件,分別繫結這4個變數,透過博圖將4個變數的值分別設定為50。5、60。5、70。5、80。5,如下圖所示:

C#遇上WINCC

3、執行WINCC畫面,如下圖所示:

C#遇上WINCC

訪問WINCC變數

1、首先建立一個新的Windows窗體應用,再從WINCC安裝目錄中找到兩個dll,分別是CCHMIRuntime。dll和CCHMITags。dll,位置預設處於C:\Program Files (x86)\Common Files\Siemens\Bin,將這兩個dll複製到debug根目錄下並手動新增引用:

C#遇上WINCC

2、Windows窗體介面設計,下圖所示:

C#遇上WINCC

3、編寫讀取變數程式碼,如下圖所示:

4、編寫寫入變數程式碼,如下圖所示:

5、讀取測試結果如下圖所示:

C#遇上WINCC

6、寫入測試結果如下圖所示:

C#遇上WINCC

訪問WINCC控制元件

1、重新新建一個窗體,窗體內容和佈局與之前一致,如下所示:

C#遇上WINCC

2、編寫讀取控制元件屬性程式碼,如下所示:

3、編寫寫入控制元件屬性程式碼,如下所示:

4、讀取結果如下所示:

C#遇上WINCC

5、寫入結果如下所示:

C#遇上WINCC

這裡值得注意的是,透過訪問控制元件實現的寫入並沒有真正寫入PLC,所以這種方式僅限於讀取資料,但可以透過這種方式來設定控制元件的其他屬性,比如樣式、背景、文字等。

整體總結

本文主要以學習研究為主,針對C#與WINCC之間的資料通訊做了較為詳盡的描述,相信對於很多電氣工程師,尤其是以西門子PLC為主的電氣工程師來說,會有很大幫助。

TAG: 所示WINCCPLC如下控制元件