梁新武 陳飛 謝雨欣 謝啟 徐惠鋼
摘? 要? 為培養(yǎng)學生工業(yè)通信協議應用能力,設計一種基于LabVIEW與Modbus協議的多點溫度采集實驗。該實驗以LabVIEW為上位機,以TAM-18B20-8L模塊實現對溫度信號的采集;上位機通過485通信接口及Modbus協議讀取溫度數據進行處理并顯示,通過Database Connectivity工具包完成Access數據庫的建立及數據存儲。學生可以通過該實驗更好地掌握Modbus協議、數據庫建立訪問的設計方法和工程實現方法。
關鍵詞? LabVIEW;Modbus協議;多點溫度采集實驗;TAM-18B20-8L溫度采集模塊
中圖分類號:G642.423? ? 文獻標識碼:B
文章編號:1671-489X(2023)01-0039-04
0? 引言
在工業(yè)4.0時代以及“新工科”背景下,我國的工程教育迎來了難得的發(fā)展機遇。地方應用型大學培養(yǎng)應用型人才更應該注重工程應用、工程技術的培養(yǎng)[1]。在科技快速發(fā)展的背景下,智能化設備已經占據制造業(yè)的主導地位,在智能化設備上,各種通信端口的應用,實現了各設備之間的通信,同時也為各設備提供了更多的可拓展空間,創(chuàng)造了無限的可能性[2]。
在工業(yè)中,常用的通信協議有Modbus協議、TCP/IP協議、MPI通信、串口通信等。Modbus協議作為工業(yè)自動化領域應用最為廣泛的通信協議之一,已經被廣泛應用到工業(yè)設備上,是自動化類、電子信息類學生必須掌握學習的知識。在傳統實踐教學中,Modbus協議的教學往往是容易忽略的一點,學生對此協議的掌握也相對薄弱[3]。
溫度作為國際單位制的七個基本量之一,是工業(yè)現場一種需要重點監(jiān)控的參數,通過虛擬儀器技術進行檢測是自動化領域中常用的方法。LabVIEW是NI公司推出的一種虛擬儀器開發(fā)平臺,采用可視化的圖形編程語言編程,具有鮮明的行業(yè)特征,在測試測量行業(yè)有著其獨特優(yōu)勢。
鑒于此本文設計了一種基于LabVIEW與Modbus協議的多點溫度采集實驗,旨在培養(yǎng)學生將運用LabVIEW實現工業(yè)協議——Modbus協議的能力,加深對LabVIEW數據采集、通信、數據庫操作工程實現方法的理解。
1? 系統硬件設計
本系統的硬件連接圖如圖1所示。選用穩(wěn)定性較好、分辨率較高的DS18B20溫度傳感器,該傳感器測溫范圍是-55~125 ℃,可滿足多種情況下的測溫需求。該模塊使用的是Modbus通信協議,最多可同時采集8路信號,能滿足學生日常實驗學習需求。
系統以LabVIEW作為上位機,TAM-18B20-8L溫度采集模塊通過RS-485轉USB 模塊連接到電腦。在此設置485通信波特率是9600,無奇偶位校驗,因此將TAM-18B20-8L溫度采集模塊中的10位撥碼開關B1~B10設置為0000100000,并將模塊內部的跳線帽接到485接口的位置。在此電路連接中,為了實現溫度采集模塊與通信轉換器有統一的電源基準,需將其GND引腳接在一起[4]。
2? 系統軟件設計
本軟件部分主要包括:Modbus通信協議、LabVIEW讀取溫度數據、LabVIEW與Access數據庫的交互。系統軟件設計將LabVIEW 2018作為主要開發(fā)平臺。軟件設計程序流程圖如圖2所示。本系統以冷箱出廠時的冷藏室、冷凍室溫度變化是否符合要求的測試為例進行軟件設計。首先需對測溫時長及合格溫度進行設置;繼而采集溫度;當測溫時間到時則對所采集到的溫度數據進行處理,并做出是否合格的判定;同時將測試的數據存儲到數據庫中以便追溯。LabVIEW軟件并行機制的一些程序同時具有選擇數據查詢或停止系統運行的功能,當選擇數據查詢時則調用數據庫顯示歷史的測試數據,當選擇停止時則退出整個程序。
2.1? Modbus通信協議
軟件設計首先要掌握Modbus通信協議[5]。該通信協議是工業(yè)上常用的通信協議、通信約定,是一種單主站的主/從通信模式,用于不同類型總線或網絡設備之間提供主站設備/從站設備通信,同一主站可對應多個從站。本實驗中采用485接口Modbus協議實現上位機LabVIEW與TAM-18B20-8L溫度采集模塊的通信。
實驗中采用傳輸效率較高的Modbus RTU通信模式,屬于異步串行通信模式,主站請求幀和從機響應幀格式如表1、表2所示。
實驗中采用一塊TAM-18B20-8L溫度采集模塊(共可接8路溫度傳感器),設置其模塊地址碼為01;若主站要讀取溫度采集模塊上的數據,由表1知其功能碼為03;溫度采集模塊接了三路溫度傳感器(其對應的寄存器地址為0x0000~0x0003),因此,寄存器的起始地址為 0x0000;寄存器數量為3;CRC校驗采用的CRC-16校驗,通過計算得到其CRC校驗結果為05BC,從而得到主機請求幀為:0103 0000 0003 05CB。
2.2? LabVIEW讀取溫度數據
實驗中使用了3個DS18B20傳感器,由圖1知3個傳感器接至TAM-18B20-8L溫度采集模塊的通道0到通道2上。LabVIEW通過Modbus協議讀取TAM-18B20-8L溫度采集模塊的數據并進行處理,溫度數據讀取流程如圖3所示。
1)通信參數初始化為:波特率:9600、數據位:8位、奇偶校驗位:None、停止位:1位、流控制:無;
2)LabVIEW向TAM-18B20-8L溫度采集模塊寫主機請求幀:0103 0000 0003 05CB;
3)延時200毫秒后讀取溫度采集模塊的響應幀,由表2知響應幀為11個字節(jié),其中第4~9字節(jié)為溫度信息;
4)若讀取到11字節(jié)后對其進行CRC校驗碼計算;
5)CRC校驗正確則提取溫度信息。
將接收到的從機響應幀中的前9個字節(jié),即不包括校驗碼,進行CRC-16校驗碼計算,其程序流程圖如圖4所示。實驗中的Modbus通信CRC-16校驗,采用的校驗多項式為X16+X15+X2+1,即1 1000 0000 0000 0101,用前9個數據幀以模2除法的方式除上面的除數,得到的余數就是該幀的CRC校驗碼,利用LabVIEW編程就是先預置1個16位的寄存器為十六進制FFFF(即全為1),稱此寄存器為CRC寄存器;然后把第一個8位二進制數據(即第一個字節(jié))與16位的CRC寄存器的低8位相異或,把結果放在CRC寄存器里面,高8位的數據保持不變;再把CRC寄存器的內容右移一位(朝低位移),用0填補最高位,并檢查右移后的移出位;如果移出位是0則再次右移一位;如果移出位為1,則CRC寄存器與多項式A001(1010000000000001)進行異或;重復上述步驟,直到右移8次,這樣整個8位數據就全部都進行了處理;重復以上步驟,進行通信信息幀下一個字節(jié)的處理;將所有字節(jié)按上述步驟計算完成后,將計算得到的16位CRC寄存器的高、低字節(jié)進行交換位置;最后得到的CRC寄存器內容即為CRC校驗碼。將得到的CRC校驗碼與接收到CRC碼(第10、11兩個字節(jié))進行比較,若相等則接收到的數據正確。
實驗中將三路溫度傳感器采集到的溫度數據,以25%、25%、50%的加權進行數據處理,令三路傳感器采集到的溫度分別為T1、T2、T3,則最終得到的溫度為:
T=0.25T1+0.25T2+0.5T3? ? ? ? ? ? ? (1)
由式(1)得到的最終溫度與設定的合格溫度進行對比,假設低于設定的合格溫度則為合格,反之為不合格。
2.3? LabVIEW與Access數據庫的交互
在工業(yè)實際應用中,為做到檢測信息可追溯都會用到數據庫,為使學生了解和掌握LabVIEW的數據庫操作,本實驗要求使用Access數據庫進行溫度數據的存儲與查詢。
LabVIEW本身并不具有數據庫的功能,本實驗要求通過Database Connectivity Toolkit工具包以及Access Database Engine數據引擎,連接Access數據庫實現寫入數據、讀取數據的功能,也可以通過ActiveX調用Microsoft ADO控件實現訪問或者通過第三方工具包LabSQL完成訪問[6]。
先建立起一個可調用的Access模板,填充測試時間、溫度等表頭名稱,通過拆分路徑的方式生成數據庫文件,在使用數據庫文件時,若檢測到數據庫未建立,則自動復制前面創(chuàng)建的數據庫模板。本次使用的是相對方便靈活地連接字符串連接數據庫,常見的連接方式還有DSN、UDL等。完成數據庫建立之后,需要將相關數據寫入數據庫,將需要的信息建立成一個簇,將相關數據提取到簇中,在此基礎上,不斷更新數據[7]。
當檢測到查詢數據指令時,系統將會執(zhí)行打開數據庫和數據讀取兩個操作。系統會判斷鏈接的文件路徑是不是測試數據庫文件,若是,則正常打開數據庫。讀取數據庫,會將Access中的數據讀取到LabVIEW前面板中顯示。
3? 實驗運行
連接好硬件電路,打開程序測試系統前面板如圖5所示配置,測試時間為5分鐘,設定溫度為25 ℃,經判定當前溫度為低于設定溫度,因此判定結果為合格。通過選項卡的切換可以進行測試數據的查詢,如圖6所示。
4? 結束語
本文設計了基于LabVIEW與Modbus協議的多點溫度采集實驗。選用TAM-18B20-8L溫度采集模塊進行多點溫度信息的采集,LabVIEW通過Modbus協議讀取溫度采集模塊的溫度信息并進行處理顯示,同時將溫度數據等存儲到Access數據庫中。本實驗設計面向應用型人才的培養(yǎng),與工業(yè)實際聯合起來。該實驗為虛擬儀器技術課程的實踐環(huán)節(jié)提供了典型案例,學生可在此基礎上進行二次開發(fā)。
1)在數據處理方面,本實驗中采用簡單的加權計算,存在一定的誤差,可利用誤差理論與數據處理等知識進行誤差判定并得到更準確的溫度值。
2)可找一應用場合,在實驗中加入PID調溫。
3)可考慮使用其他工業(yè)中的協議進行替換[8]。
通過實驗使學生更好地掌握理論知識,提高工程實踐能力,同時實驗中較多的可拓展處可激發(fā)學生的學習熱情與創(chuàng)新意識。本實驗也可為類似系統的設計提供一定的參考。
5? 參考文獻
[1] 馬云闊,羅瑤嘉.“新工科”背景下地方高水平大學工程類本科應用型人才培養(yǎng)研究[J].佳木斯大學社會科學學報,2018,36(4):165-167,173.
[2] 楚敬敬,張偉,孫曉,等.基于Modbus RTU協議的PLC通信實驗平臺開發(fā)[J].山東化工,2021,50(18):219-223.
[3] 張加宏,楊天民,劉恒,等.一種嵌入式PID恒溫控制的教學實驗設計[J].實驗技術與管理,2020,37(10):211-215,219.
[4] 黃靖博.RS485通訊連接方式及其應用[J].大眾用電,2008(9):22-23.
[5] 艾博,許向陽,賈月明.基于Modbus RTU協議的數據采集平臺設計與實現[J].電子工業(yè)專用設備,2021,50(5):46-49.
[6] 蘇同發(fā),張樸.基于LabVIEW與Access的多通道數據采集存儲系統設計與實現[M]//2019中國自動化大會(CAC2019)論文集.中國自動化學會會議論文集.2019.
[7] 寧芬,周慶華,唐立軍,等.基于LabVIEW與Access的虛擬實驗教學系統[J].智能計算機與應用,2016,6(5):81-84.
[8] 吳蘭.面向測控專業(yè)的信號處理類課程的教學改革與實踐[J].教育教學論壇,2017(11):85-86.