宇電智能溫度儀表在C#/.NET上位機開發(fā)中的應用
付加勁 天津星閣教育科技有限公司 天津 300450
摘要: 組態(tài)軟件作為一種通用軟件,體系結構較為龐大、功能軟件包多、價格也比較昂貴,而且對于一些復雜的業(yè)務邏輯或自定義的協(xié)議,實現起來比較麻煩。近幾年,C#/.NET上位機開發(fā)應用越來越廣泛,相對于傳統(tǒng)的組態(tài)軟件的方式,C#開發(fā)上位機具有靈活、易學、擴展性強的特點。本文使用VS2019作為開發(fā)軟件,SQLite作為數據存儲軟件,硬件使用廈門宇電溫度控制器,開發(fā)一套通用的上位機監(jiān)控系統(tǒng)。
關鍵字:組態(tài)軟件;上位機;宇電溫度控制器;VS2019
Abstract: As a general-purpose software, configuration software has a relatively large system structure, many functional software packages, and a relatively expensive price. It is also troublesome to implement some complex business logic or custom protocols. In recent years, the development and application of C#/.NET host computer has become more and more extensive. Compared with the traditional configuration software, C# development host computer has the characteristics of flexibility, easy learning, and strong scalability. This article uses VS2019 as the development software, SQLite as the data storage software, and the hardware uses the Xiamen Yudian temperature controller to develop a universal host computer monitoring system.
1 引言
在工業(yè)自動化領域,上位機軟件一直在扮演著一個至關重要的角色。一般情況下,我們通常會采用組態(tài)軟件來開發(fā)上位機,然而,組態(tài)軟件作為一種通用軟件,體系結構較為龐大、功能軟件包多、價格也比較昂貴,而且對于一些復雜的業(yè)務邏輯或自定義的協(xié)議,實現起來比較麻煩。
近幾年來,語言開發(fā)上位機應用越來越廣泛,相對于傳統(tǒng)的組態(tài)軟件,采用語言開發(fā)上位機具有更靈活、擴展性更強、更便宜的特點。在眾多的語言當中,微軟.NET平臺下的C#顯得尤為突出。C#/.NET開發(fā)上位機相對于其他的語言而言,更加方便快捷,而且可以獲取到的資料也相對比較多。
2 AIBUS簡介
AIBUS協(xié)議是宇電為AI系列儀表開發(fā)的一個協(xié)議,其指令比Modbus更簡單、更可靠,而且通信速率比Modbus更高,同時也具備組網功能,可以在一個RS485總線上連接多達80臺儀表。
2.1 AIBUS報文結構
AI儀表采用16進制數據格式來表示各種指令代碼及數據。AI儀表軟件通訊指令經過優(yōu)化設計,標準的通訊指令只有兩條,一條為讀指令,一條為寫指令,兩條指令使得上位機軟件編寫容易,但能100%完整地對儀表進行操作;標準讀和寫指令分別如下:
讀?。旱刂反?+ 52H(82)+ 要讀的參數代號 + 00 + 00 + 校驗碼
寫入:地址代號 + 43H(67)+ 要寫的參數代號 + 寫入低字節(jié) + 寫入高字節(jié) + 校驗碼
2.2 AIBUS報文說明
?地址代號:AI儀表有效地址為0-80,協(xié)議規(guī)定地址代號為兩個相同的字節(jié),數值為(儀表地址+80H),如地址為5,那么地址代碼將對應85H 85H。
?參數代號:參數代號表示各個參數對應的值,這個需要參考協(xié)議說明書,下面列舉部分常用參數:
表1:AI儀表常用參數
?校驗碼:校驗碼采用 16 位求和校驗方式。
讀指令校驗碼計算方法為:
要讀的參數的代號×256+82+ADDR
寫指令校驗碼計算方法為:
要寫的參數代號×256+67+要寫的參數值+ADDR
公式中 ADDR為儀表地址,范圍是 0~80(注意不要加上 80H)。校驗碼為2 個字節(jié),其低字節(jié)在前,高字節(jié)在后。
?返回報文:無論是讀還是寫,儀表都返回以下10個字節(jié)數據:
返回:測量值 PV + 給定值SV + 輸出值MV及報警狀態(tài) + 所讀/寫參數值 + 校驗碼
PV、SV 及所讀參數值各占 2 個字節(jié),低位字節(jié)在前,高位字節(jié)在后,整數無法表示小數點,要求用戶在上位機處理;MV 占一個字節(jié),數值范圍-110~+110,狀態(tài)位占一個字節(jié),校驗碼占 2個字節(jié),共 10個字節(jié)。
3 儀表接線設置
在實現上位機通信前,需要搭建儀表通信環(huán)境,這里主要針對儀表的接線及相關參數設置進行說明。
3.1 儀表接線說明
針對AI-500系列儀表,通信接口為485接口,因此需要通過將485總線轉換成USB接口,然后再接入上位機,根儀表測試的接線圖,還需要接入220V電源、Pt100鉑熱電阻,具體接線方式如下表所示:
表2:AI儀表接線圖
3.2 儀表設置說明
完成上述接線之后,需要設置一下儀表的相關參數,根據儀表的說明書,主要設置輸入規(guī)格、通信地址、波特率這三個參數,如下表所示:
表3: AI儀表參數設置
參數設置完畢,可以看到儀表上已經可以顯示室內溫度。
為了便于組成網絡,這里選擇3個儀表,將另外2個儀表的輸入規(guī)格和波特率設置成一樣,但是通信地址分別設置成3和4,在接線方面,直接將485接口的A和B并接在一起即可,網絡接線圖如下所示:
圖1:網絡結構圖
4 AIBUS通信協(xié)議開發(fā)
4.1 串口通信
在創(chuàng)建好Windows窗體應用后,創(chuàng)建一個類,取名為AIBUS,AIBUS協(xié)議基于串口通信,因此先要實現基本的串口連接與斷開,通過調用SerialPort組件實現,代碼如下圖所示:
圖2:串口連接
4.2 讀取參數
每次通信返回結果可能包含很多參數,這里主要獲取5個重要的參數,分別是實際值、設定值、參數值、高限報警、低限報警,并將這5個參數封裝成一個類,如下圖所示:
圖3:通信對象
參考協(xié)議中的讀取報文,讀取參數將地址代號與參數代號作為參數,然后將返回值解析成一個AIBUSParam對象,如下圖所示:
圖4:讀取參數
讀取報文中涉及到校驗,對于讀取校驗,按照協(xié)議進行校驗和累加,zui終結果轉換2個字節(jié)返回,如下圖所示:
圖5:讀取校驗
4.3 解析報文
解析報文先是判斷返回報文校驗是否正確,然后按照協(xié)議進行解析,返回AIBUSParam對象,驗證報文主要是做校驗判斷,對前面N-2個字節(jié)做校驗,然后與zui后2個字節(jié)對比,這樣就可以知道報文校驗是否正確,如下圖所示:
圖6:驗證報文
驗證報文通過后,需要根據協(xié)議來對返回的報文進行解析,zui終返回成一個AIBUSParam對象,如下圖所示:
圖7:解析報文
4.4 寫入參數
參考協(xié)議中的寫入報文,寫入參數將地址代號、參數代號與參數值作為參數,返回值仍然解析成一個AIBUSParam對象,如下圖所示:
圖8:寫入參數
寫入報文中涉及到校驗,對于寫入校驗,按照協(xié)議進行校驗和累加,zui終結果轉換2個字節(jié)返回,如下圖所示:
圖9:寫入校驗
5 溫度監(jiān)控系統(tǒng)上位機開發(fā)
通信庫編程完成后,就可以進行上位機開發(fā),本上位機主要是實時采集三個不同地點的溫度,通過實時曲線進行顯示并存儲到數據庫,便于后續(xù)分析。
5.1 UI界面設計
監(jiān)控系統(tǒng)UI界面主要包括三部分,分別為實時曲線、系統(tǒng)日志及參數顯示,設計布局如下圖所示:
圖10:上位機UI界面設計
5.2 配置信息管理
配置信息主要包括通信端口號、波特率、儀表1地址代號、儀表2地址代號、儀表3地址代號等,這里采用ini的方式進行存儲,通過調用底層API的方式讀取配置信息,封裝成對象。ini文件存儲形式如下所示:
圖11:配置信息
5.3 實時日志顯示
系統(tǒng)運行過程中的各種狀態(tài)都將通過日志的形式進行展示,這里采用ListView+委托的方式來實現,代碼如下所示:
圖12:實時日志
5.4實時讀取及斷線重連
實時讀取采用的是多線程的方式,直接輪詢讀取各個儀表的參數,讀取完成后進行二次解析并顯示。對于斷線重連,每次如果讀取失敗,則將錯誤次數加1,當讀取錯誤次數超過max錯誤次數時,說明讀取異常,當出現讀取異常時,需要判斷COM口是否存在,如果仍然存在,則不需要重新連接,直接繼續(xù)讀取即可,如果COM口不存在,則需要重新連接,從而實現自動斷線重連。
5.5實時數據存儲
實時數據存儲采用SQLite數據庫,通過開啟一個線程定時器,按照1秒的頻率定時向數據庫中存儲數據,便于后續(xù)查詢。
5.6運行效果顯示
完成上位機開發(fā)之后,即可運行程序。通過查看系統(tǒng)日志信息及實時曲線顯示,判斷是否正常,實際運行結果如下圖所示:
圖13:運行顯示
6 總結
本文通過對AI-500系列儀表進行研究,zui終實現C#開發(fā)出一個溫度監(jiān)控系統(tǒng)。從AIBUS通信協(xié)議剖析入手,結合實際硬件,對其接線及參數設置進行說明,zui終通過C#結合協(xié)議內容開發(fā)出AIBUS對應的通信庫,使用開發(fā)好的通信庫,運用多線程技術及SQLite數據庫,實現zui終的宇電智能儀表監(jiān)控系統(tǒng)的開發(fā)。
隨著物聯網、云計算、人工智能等技術的發(fā)展,以及國家“工業(yè)4.0”和“中國制造2025”口號的提出,智能制造行業(yè)近幾年得到了迅速發(fā)展,越來越多的電氣工程師意識到上位機開發(fā)的重要性,本文以工業(yè)領域常見的一款智能儀表,結合C#語言,實現與其通信、顯示及存儲,這正是工業(yè)物聯網發(fā)展的一個基石。因此,相信這篇文章,不管是對電氣工程師還是工業(yè)領域,應該都很有實用價值。
作者簡介:付加勁,杭州電子科技大學工程碩士,主要從事工業(yè)自動化相關教學工作。