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

組態(tài)型工控機(嵌入式工業(yè)電腦)、上位機組態(tài)軟件
Windows環(huán)境與PLC相連的上位機監(jiān)控操作軟件應該使用組態(tài)好
PLC和上位機組態(tài)軟件通訊方式

評論