徐闖 王亞剛
摘 要:為提高實驗室工作效率,降低人為誤差、減少人工成本,使實驗操作過程更方便、直觀,設(shè)計了基于? ? ? ? .NET框架的實驗儀器監(jiān)控系統(tǒng)。在Visual Studio 2019平臺上運用.NET框架和C#語言實現(xiàn)系統(tǒng)軟件開發(fā),通過Modbus-RTU通訊協(xié)議采集設(shè)備數(shù)據(jù),采用輕量化Access數(shù)據(jù)庫結(jié)構(gòu)對數(shù)據(jù)進行存儲。該監(jiān)控系統(tǒng)具有友好的用戶交互界面,能夠?qū)崟r監(jiān)控多臺設(shè)備。采用圖形化界面顯示數(shù)據(jù),根據(jù)不同用戶需求自動生成數(shù)據(jù)報表供研究人員分析參考。測試結(jié)果表明,與傳統(tǒng)人工方式相比,時間效率提高8.3%,數(shù)據(jù)準確率達到100%,證明該系統(tǒng)能提高實驗人員工作效率與實驗質(zhì)量。
關(guān)鍵詞:C#;.Net;Access;WinForm;VS 2019;Modbus-RTU
DOI:10. 11907/rjdk. 201777
中圖分類號:TP319文獻標識碼:A 文章編號:1672-7800(2020)010-0160-05
Abstract:In order to improve the efficiency of researchers in the laboratory, reduce human errors and labor costs, and make the experimental operation process more convenient and intuitive, combined with a variety of experimental equipment provided by a company, an experimental instrument monitoring system based on .NET framework is designed. The .NET framework and C# language are used to realize the development of system software on the Visual Studio 2019 platform, collect device data through the Modbus-RTU communication protocol, and use a lightweight Access database structure to store the data. The monitoring system has a user-friendly interaction interface which can monitor the status, parameters and indicators of multiple devices in real time. A graphical interface is used to display the data, and data reports are automatically generated according to the needs of different users for analysis and reference by researchers. The test results show that the time efficiency is increased by 8.3% and the data accuracy rate is 100% compared with the traditional manual. This proves that the system can improve the work efficiency and quality of the experiment.
Key Words:C#;.Net;Access;WinForm;VS 2019;Modbus-RTU
0 引言
高校實驗室的儀器設(shè)備,不僅僅是高校辦學能力水平以及綜合實力的一個重要評定指標,還是保障高校順利進行教學和科研實驗的重要物質(zhì)基礎(chǔ)[1]。近年來,由于高校辦學規(guī)模不斷擴大,實驗設(shè)備也逐步增多,致使實驗者在做并行實驗時難以同時操作所有設(shè)備,從而導致工作效率低、人為誤差大、人工成本高等缺陷[2]。物聯(lián)網(wǎng)技術(shù)迅速發(fā)展,其應(yīng)用越來越廣泛,但應(yīng)用在實驗儀器監(jiān)控方面卻相對較少[3-5]。裴斐等[6]設(shè)計一種基于RFID(Radio Frequency Identification)、JNA(Java Native Access)、Web Socket API、服務(wù)器、監(jiān)控模塊和網(wǎng)絡(luò)通信等物聯(lián)網(wǎng)技術(shù)的實驗儀器智能管理平臺,針對設(shè)備儀器進行定位管理分配,提高了實驗室設(shè)備使用效率;王宇鑫[7]采用ZigBee、射頻識別技術(shù)以及紅外等當今熱門物聯(lián)網(wǎng)技術(shù),對實驗室設(shè)備、人員等進行管理,使實驗室具有共享性,更加符合數(shù)字化信息管理需求。以上研究雖然對實驗儀器開發(fā)了管理定位共享功能,但卻沒有解決實驗員本身操作時的不便問題。
本文設(shè)計一種基于.NET框架的實驗儀器監(jiān)控系統(tǒng),運用.NET框架在VS 2019平臺上利用C#語言進行系統(tǒng)軟件開發(fā),采用物聯(lián)網(wǎng)思想,將實驗室所有儀器看作一個小型局域網(wǎng),進而通過電腦終端實現(xiàn)對所有實驗儀器進行監(jiān)控操作和數(shù)據(jù)化分析,一個實驗即可同時操作多臺實驗儀器,具有數(shù)據(jù)采集存儲分析、控制設(shè)備啟停、設(shè)置參數(shù)、根據(jù)不同需求生成實驗報表、導出實驗數(shù)據(jù)進行分析并共享等功能,很好地解決了上述問題。
1 系統(tǒng)總體設(shè)計
1.1 系統(tǒng)組成
采用物聯(lián)網(wǎng)思想設(shè)計的實驗室儀器監(jiān)控系統(tǒng)分為硬件和軟件兩個部分。系統(tǒng)總體架構(gòu)如圖1所示。
硬件部分:用搭載STM32F103RC芯片并帶有RS-485通信串口模塊的實驗儀器,通過兩根RS-485總線并行連接,經(jīng)過RS-485轉(zhuǎn)RS-232轉(zhuǎn)換器連接到USB串口線,最后連接至電腦終端的COM口上,構(gòu)成一個小型局域網(wǎng)絡(luò)。
軟件部分:借助VS 2019平臺運用C#語言搭建WinForm桌面系統(tǒng)軟件,結(jié)合輕量化Access數(shù)據(jù)庫和Modbus-RTU通信協(xié)議,使用戶可實時監(jiān)控所有局域網(wǎng)內(nèi)的實驗儀器。
1.2 系統(tǒng)工作原理及流程
實驗員先建立整體網(wǎng)絡(luò),打開系統(tǒng)軟件平臺進行準備工作。
(1)自動檢測是否已存在Access數(shù)據(jù)庫文件,存在則進行下一步,反之則利用OLEDB類[8]庫函數(shù)創(chuàng)建Access數(shù)據(jù)庫,用來存儲每次實驗采集的數(shù)據(jù)信息。
(2)自動檢測是否有串口接入,如果沒有則會提示實驗員“未檢測到串口,請先確定串口線接好和驅(qū)動安裝好!”并退出程序。反之將監(jiān)測到的串口號存儲到列表,為后面通信做好準備。部分代碼如下:
SerialPort serialhander;
//獲取計算機所有串口的個數(shù)
n = SerialPort.GetPortNames().Length;
if (n == 0)//如果是0個的話,說明連串口都沒有
{
this.Tag = 0;
MessageBox.Show(“未檢測到串口,請先確定串口線接好和驅(qū)動安裝好!”);//彈框提示
Application.Exit();//關(guān)閉程序
}
//這個循環(huán),將所有串口名
//(例如;com1)存入--串口名--中
for (int num = 0; num < SerialPort.GetPortNames().Length; num++)
{
serialhander = new SerialPort(SerialPort.GetPortNames()[num]);
serialhander.Open();
serialhander.Close();
串口名。Add(SerialPort.GetPortNames()[num]);
}
準備工作完成后,實驗員添加要監(jiān)測的設(shè)備號,填寫對應(yīng)的設(shè)備信息,點擊開始聯(lián)機,主界面會依次排列所添加的設(shè)備窗口,在每個設(shè)備窗口可獨立控制設(shè)備啟停,設(shè)定參數(shù),如溫度、速度、定時、光照度、真空度、PH值等,查看實時動態(tài)數(shù)據(jù)曲線圖等功能。
與此同時,點開查詢歷史數(shù)據(jù)功能,選擇好要查詢的時間區(qū)間,點擊查詢,就可列出這段時間內(nèi)所有實驗數(shù)據(jù)記錄。雙擊任意一個單元格則進入該橫條實驗記錄中,顯示詳細的實驗記錄信息。
功能鍵有3個:①數(shù)據(jù)報表:軟件會自動生成一個PDF文件,將實驗名、實驗者信息、設(shè)備照片、實驗數(shù)據(jù)曲線、數(shù)據(jù)分析處理等進行打印輸出,供實驗員參考研究;②曲線展示:彈出窗口,利用Chart類控鍵顯示對應(yīng)數(shù)據(jù)的曲線表現(xiàn)形式,供實驗員初步直觀研究;③數(shù)據(jù)共享:軟件將自動生成一個Excel文件,將實驗中所記錄的所有相關(guān)數(shù)據(jù)提取出來導入到文件中。實驗員可將其共享給他人,一同進行數(shù)據(jù)分析研究。
還有一些輔助性功能,如存儲時間設(shè)定系統(tǒng)采集數(shù)據(jù)每隔多少時間存儲一次數(shù)據(jù);語言設(shè)定將語言切換成英文,方便外國留學生使用;幫助中的使用說明和版本信息介紹該系統(tǒng)軟件功能如何使用以及軟件版本信息,使用者能快速了解該系統(tǒng)軟件工具。
2 系統(tǒng)軟件設(shè)計
2.1 語言及平臺
該監(jiān)控系統(tǒng)是在VS平臺上運用C#語言開發(fā)WinForm桌面系統(tǒng)軟件。
經(jīng)過C和C++的融合進化的C#語言具有更安全穩(wěn)定的性能和簡單易懂的編程邏輯思路,同時兼具可視化功能,運行效率高,是.NET開發(fā)的首選語言[9]。
VS是Microsoft Visual Studio的簡稱,因其具有一整套完善的開發(fā)工具集,基本上囊括整個軟件開發(fā)生命周期中所需要的大部分工具,如UML工具、代碼管控工具、集成開發(fā)環(huán)境(IDE)等。Visual Studio是目前最流行的Windows平臺應(yīng)用程序的集成開發(fā)環(huán)境,最新版本為 Visual Studio 2019版本,基于.NET Framework 4.7[10]。
2.2 通訊方式與協(xié)議
該監(jiān)控平臺采用工業(yè)通用的Modbus-RTU通信協(xié)議[11],多臺設(shè)備可通過RS-485[12]并行連接,通過RS-458轉(zhuǎn)RS-232接口,通過USB串口線連接至電腦,通過SerialPort[13]傳輸數(shù)據(jù)方式與設(shè)備進行通信。包括串口配置,打開port,傳輸數(shù)據(jù),關(guān)閉port等。部分代碼如下:
//串口參數(shù)初始化配置
串口.BaudRate = 9600;
串口.Parity = System.IO.Ports.Parity.None;
串口.DataBits = 8;
串口.StopBits = System.IO.Ports.StopBits.One;
串口.RtsEnable = true;
串口.ReceivedBytesThreshold = 1000;
串口.ReadTimeout = 1000;
串口.WriteTimeout = 1000;
for (n = 0; n < 串口名.Count; n++)
{
串口.PortName = 串口名[n].ToString();
串口.Open();
modbusrtu協(xié)議 =? ModbusSerialMaster.CreateRtu(串口);
for (i = 1; i <= 增減設(shè)備.num[0]; i++)
{
ushort[] 數(shù)據(jù) = new ushort[5];
當前設(shè)備地址 = 增減設(shè)備.num[i];
數(shù)據(jù) = modbusrtu協(xié)議.ReadHoldingRegisters(當前設(shè)備地址, 0, 5);
Thread.Sleep(50);
if (數(shù)據(jù)[0] != 0)
{? break;? }
}
if (i <= 增減設(shè)備.num[0])
{? break;? }
串口.Close();
Thread.Sleep(50);
}
通信邏輯流程如圖2所示。
根據(jù)Modbus-RTU通信協(xié)議[11],數(shù)據(jù)標準的傳輸字節(jié)段編排如表1所示。
其中,每個字節(jié)所代表的含義如下:
起始位:就是傳輸數(shù)據(jù)的開始。
主機號:例如1,2,3。依據(jù)RS-485協(xié)議[12],一根總線最多可掛載32臺設(shè)備接入。
功能碼:本平臺主要使用03和06功能碼,03功能是讀取一個或多個保持寄存器;06是寫入單個寄存器。
起始地址:讀取或?qū)懭氲拈_始地址,本文依據(jù)設(shè)備通訊協(xié)議采用4000起頭。
數(shù)據(jù):傳輸如溫度、電機轉(zhuǎn)速、濕度、光照強度、PH值等參數(shù)數(shù)據(jù),設(shè)定參數(shù)。
CRC校驗:為保障數(shù)據(jù)在傳輸過程中不丟失或不產(chǎn)生錯誤,要進行數(shù)據(jù)校驗。
停止位:即傳輸數(shù)據(jù)的截止位置。
2.3 功能架構(gòu)
結(jié)合實驗功能需求,設(shè)計平臺功能架構(gòu)如圖3所示。
(1)設(shè)備管理:確定對幾臺設(shè)備進行監(jiān)控。①添加刪減設(shè)備:最大可添加數(shù)32臺,采用“寫讀INI”類[14]進行ini文件編寫,進而記錄每一次所加載的設(shè)備號,為下一次實驗進行緩存處理。②設(shè)備配置:記錄每次實驗信息,如設(shè)備號、實驗員姓名、實驗?zāi)康?、實驗時間、備注等。查看以往記錄,了解實驗?zāi)康囊约跋嚓P(guān)內(nèi)容。
(2)歷史數(shù)據(jù):運用Access數(shù)據(jù)庫搭建存儲操作,存儲所有實驗數(shù)據(jù)記錄供查詢及研究。①數(shù)據(jù)報表:運用iTextSharp類庫[15-17]以PDF的形式將實驗數(shù)據(jù)記錄及數(shù)據(jù)處理分析結(jié)果輸出保存,內(nèi)容有實驗名稱、實驗者信息、數(shù)據(jù)曲線圖、數(shù)據(jù)分析表、原始數(shù)據(jù)表等。②數(shù)據(jù)曲線:以圖形曲線形式將實驗采集到的數(shù)據(jù)顯示,供實驗員直觀研究與對比。③數(shù)據(jù)導出:運用NPOI類[18-19]庫以Excel形式將實驗數(shù)據(jù)信息(實驗名稱、操作人員信息等)輸出保存,與其他實驗員共享。
(3)軟件配置:進行相應(yīng)的功能配置。①存儲配置:設(shè)置時間間隔實時采集數(shù)據(jù),設(shè)定間隔時間將采集到的數(shù)據(jù)進行存儲。②語言設(shè)置:軟件以中英文兩種模式轉(zhuǎn)換,目的是方便國外研究人員使用。
(4)幫助:軟件信息與操作說明。①使用說明:該軟件完整的配套使用說明。②版本信息:顯示該軟件的一些版本信息。
(5)開始聯(lián)機:與聯(lián)通設(shè)備進行通信采集。
通信連接:通過BackgroundWorker[20]控件類進程多線程數(shù)據(jù)采集以及數(shù)據(jù)指令下發(fā)操作任務(wù);通過IModbusSerialMaster類創(chuàng)建一個實例,針對Modbus通信協(xié)議進行相應(yīng)功能指令代碼編寫;通過SerialPort[13]類將指令代碼通過串口下發(fā)給設(shè)備,達到與設(shè)備實時通信的目的。
(6)設(shè)備狀態(tài):將每臺設(shè)備作為一個窗口顯示,展示具體操作信息。①實時監(jiān)控:實時讀取下方設(shè)備狀態(tài)數(shù)據(jù),顯示到界面的每個對應(yīng)label控件中,例如實時溫度,溫度設(shè)定值;實時速度,速度設(shè)定等相關(guān)數(shù)據(jù)展示。每次數(shù)據(jù)改變時都進行界面刷新,以達到實時監(jiān)控效果目的。②實時圖像:采用chart類[13]控件將實時讀取的數(shù)據(jù)以鍵值對形式添加到列表中,進而顯示曲線圖。每次讀取都添加一個位點數(shù)據(jù),進而展現(xiàn)出動態(tài)圖像效果。③儀器操作:可進行設(shè)備的開關(guān)機、相關(guān)參數(shù)設(shè)定,如溫度、速度等參數(shù)設(shè)定。④報警提示:當出現(xiàn)溫度超過安全值、傳感器跌落、電機堵轉(zhuǎn)等故障時,對應(yīng)的設(shè)備界面會顯示出紅色并告之故障信息,提示實驗員檢查設(shè)備。
該軟件系統(tǒng)程序設(shè)計邏輯流程如圖4所示。
3 運行與測試
該監(jiān)控系統(tǒng)經(jīng)過長時間運行,反復測試和修改bug,達到預(yù)期效果,具有友好的交互界面、簡單的操作方式以及實時顯示等各項功能。
將某公司實驗設(shè)備進行50組并行實驗測試,每組同時操控10臺不同儀器, 24小時不間斷監(jiān)控操作。對每組實驗完成情況進行時間效率與數(shù)據(jù)準確率分析。50組實驗完成時間求取平均值,每組采集數(shù)據(jù)與真實數(shù)據(jù)對比計算正確率后再取平均值。將本文系統(tǒng)與傳統(tǒng)操作進行對比,時間效率提高了8.3%,數(shù)據(jù)準確率從95%提高到100%,如表2所示。
測試結(jié)果表明,本系統(tǒng)軟件使工作效率大大提高,人為導致的誤差減小,人工成本降低,該系統(tǒng)有效實用。軟件運行效果如圖5所示(彩圖掃OSID碼可見)。
圖5(a)是系統(tǒng)的主頁面,左邊是功能菜單欄,右邊顯示監(jiān)控設(shè)備窗口。
圖5(b)是點擊實時曲線后彈出的窗口,進行實時溫度曲線展示,紅線是溫度設(shè)定值,黃線是實時采集到的真實溫度值。
圖5(c)是點擊查詢歷史數(shù)據(jù)彈出的窗口,可選擇時間區(qū)間進行實驗記錄查詢。
圖5(d)是雙擊第3個圖中任意單元格彈出的詳細實驗數(shù)據(jù)記錄,左上角實現(xiàn)數(shù)據(jù)報表、曲線展示、數(shù)據(jù)共享3個功能。
圖5(e)是點擊數(shù)據(jù)報表后軟件自動生成的數(shù)據(jù)分析報表,顯示實驗名稱、操作者信息、設(shè)備儀器突顯、數(shù)據(jù)曲線圖像、數(shù)據(jù)分析表和采集的原始數(shù)據(jù)。
4 結(jié)語
本文研究設(shè)計了基于.NET框架的實驗儀器監(jiān)控系統(tǒng)。該系統(tǒng)交互性好、操作簡單、兼容性強,實驗人員在做并行實驗時可監(jiān)測控制多臺設(shè)備儀器,在提高實驗效率的同時降低了人為誤差,節(jié)省了人工成本,具有很好的推廣價值。但該系統(tǒng)暫未集成數(shù)據(jù)分析算法,對采集數(shù)據(jù)缺少深度分析,后續(xù)可加入算法功能進行研究。另外,還需提高界面展示和操作功能,讓實驗者能更好地進行實驗操作。
參考文獻:
[1] 王青偉. 高校實驗室儀器設(shè)備管理與使用[J]. 科技經(jīng)濟導刊,2020,28(5):157-158.
[2] 張皓瑜,陳媛媛. 物聯(lián)網(wǎng)技術(shù)在高校實驗室管理中的應(yīng)用[J]. 河南科技,2019,18(28):29-31.
[3] 李柏華. 基于物聯(lián)網(wǎng)技術(shù)的生態(tài)環(huán)境監(jiān)測應(yīng)用研究[J]. 科技創(chuàng)新與應(yīng)用,2020,19(16):149-150.
[4] 楊錦輝,王開心,黃艾璇,等. 基于物聯(lián)網(wǎng)的智能窗戶系統(tǒng)設(shè)計實現(xiàn)[J]. 物聯(lián)網(wǎng)技術(shù),2020,10(4):76-79.
[5] 馬莉,李維康,梁晨,等. 面向資源的物聯(lián)網(wǎng)系統(tǒng)形式化建模與驗證[J]. 小型微型計算機系統(tǒng),2018,39(1):140-145.
[6] 裴斐,金秋. 基于物聯(lián)網(wǎng)技術(shù)的實驗儀器智能管理平臺設(shè)計研究[J]. 信息與電腦(理論版),2017,16(23):113-115.
[7] 王宇鑫.? 物聯(lián)網(wǎng)技術(shù)應(yīng)用于多設(shè)備共享實驗室管理的研究與實現(xiàn)[D]. 沈陽:沈陽工業(yè)大學,2019.
[8] 陳洪磊,施秋萍. 基于C#的OLEDB和COM組件對Excel文件操作[J]. 大眾科技,2014,16(6):6-9.
[9] 金曉松. 基于C#的遠程視頻監(jiān)控系統(tǒng)設(shè)計[J]. 科技視界,2014,21(13):75-128.
[10] 曾軒哲,張志東,王麒麟,等. 基于Microsoft Visual Studio 2010開發(fā)的井控裝置自動試壓檢測系統(tǒng)[J]. 鉆采工藝,2014,37(5):82-83.
[11] 馬秋芳. 智能設(shè)備中的Modbus RTU協(xié)議開發(fā)與實現(xiàn)[J]. 儀表技術(shù),2019,18(8):24-26.
[12] 張生磊,王磊,代亮. 基于RS-485總線與無線射頻的智能供暖通訊系統(tǒng)的設(shè)計[J]. 電子設(shè)計工程,2018,26(6):138-142.
[13] 王剛. 基于. NET的串口示波器開發(fā)[J]. 電子測試,2016,15(13):82-83.
[14] 李國貞,于會智. 動態(tài)修改INI文件應(yīng)用分析[J]. 軟件導刊,2011,10(6):26-27.
[15] 胡陽,鄒海. 基于iTextSharp的報表打印技術(shù)[J]. 計算機與現(xiàn)代化,2011,32(1):60-62.
[16] 李寬,張志紅. 基于C# iTextSharp類庫PDF文檔生成技術(shù)的研究與應(yīng)用[J]. 昆明學院學報,2011,33(3):68-75.
[17] 楊曉輝. 基于iTextSharp的PDF生成技術(shù)應(yīng)用研究[J]. 電腦知識與技術(shù),2012,8(28):6853-6855.
[18] 蔡小艷,盧莉娜,鄭炎,等. 基于NPOI組件生成Excel報表的設(shè)計與實現(xiàn)[J]. 電腦知識與技術(shù),2016,12(1):64-65.
[19] 連俊光. 基于NPOI數(shù)據(jù)導出方法的研究與實現(xiàn)[J]. 電腦知識與技術(shù),2017,13(28):8-9.
[20] 舒清錄,廖明梅. 基于. NET的后臺線程在數(shù)據(jù)導出中的應(yīng)用與實現(xiàn)方法[J]. 安陽師范學院學報,2013,20(5):61-64.
(責任編輯:杜能鋼)