前言
大家好!我是付工。
經常有人會問我,C#上位機是不是就是為了取代組態軟件?組態軟件是不是就沒用了?
今天跟大家聊聊,上位機與組態軟件之間的那些事兒。
應用
首先我認為,C#上位機并不是為了取代組態軟件,而是對組態軟件的補充,C#上位機與組態軟件有各自應用的場合。
如果你懂組態,不會C#編程,愿意購買組態授權,項目沒有特殊的需求,比如自定義協議、復雜業務、對接第三方系統等,組態軟件從功能和界面上能夠滿足需求,那么,組態軟件無疑是適合的。
如果你可以獨立開發上位機,不愿意購買組態軟件,那么你肯定會選擇自主開發上位機。
技術本質上沒有好壞之分,技術是為了服務于項目,結合自身情況,結合不同場合選擇合理的技術方案,才是技術人的意義所在。
那么,有沒有一種場合,可以將C#上位機與組態軟件聯合起來使用呢?下面就以西門子的WinCC為例,談談上位機如何聯合組態軟件實現通信。
我打算從兩個方面來說明,一種是上位機通過WinCC來獲取數據,另一種是上位機如何彌補WinCC的一些功能不足。
上位機讀取WinCC
我們首先看下上位機如何通過WinCC來獲取到數據,有這么幾種方案,可以參考一下:
前提是WinCC項目已經開發好,并且處于運行狀態,運行WinCC畫面,這里連接了一個S7-1500的PLC,如下圖所示:
第一種方案:通過WinCC的運行時庫
WinCC安裝目錄中有兩個dll,分別是CCHMIRuntime.dll和CCHMITags.dll,位置默認處于C:\\Program Files (x86)\\Common Files\\Siemens\\Bin,將這兩個dll復制到debug根目錄下并手動添加引用,然后創建通信對象。
CCHMIRUNTIME.HMIRuntime hmi = new CCHMIRUNTIME.HMIRuntime();
通過調用讀取方法即可實現讀取。
hmi.Tags["data1"].Read()
第二種方案:通過WinCC的OPC服務器
WinCC從V7.2版本開始支持OPC服務器,可以支持OPCDA和OPCUA,我們直接通過一個OPC客戶端來連接測試一下:
第三種方案:通過WinCC的數據庫
WinCC的數據庫使用的是SQLServer,WinCC變量歸檔數據是以壓縮的形式存儲在數據庫中的,第三方開發的應用程序可以通過WinCC提供的OLE-DB接口解壓并訪問這些數據。
上位機嵌入WinCC
我們再看看上位機如何彌補WinCC的一些功能不足,比如自定義協議或WinCC不支持的一些協議,WinCC從7.0版本開始支持.NET自定義控件,所以我們可以將一些業務和通信封裝在自定義控件中,然后嵌入到WinCC中來實現一些WinCC實現不了的功能。
這里以ModbusRTU協議為例,其他自定義協議類似,我們都知道,WinCC是不能直接支持ModbusRTU通信的。
這里我做了一個測試,開發了一個自定義控件,里面集成了串口連接及ModbusRTU通信協議讀取溫濕度,僅為測試使用,因此功能做的很簡單:
我將這個控件集成到WinCC中,和一個單片機連接,成功讀取到了溫濕度數據。
-
應用
+關注
關注
2文章
438瀏覽量
34151 -
組態軟件
+關注
關注
4文章
231瀏覽量
27048 -
上位機
+關注
關注
27文章
941瀏覽量
54790
發布評論請先 登錄
相關推薦
評論