楊昌群
(國家石油天然氣管網(wǎng)集團(tuán)有限公司華南分公司,廣東 廣州 510180)
磁致伸縮位移傳感器是一種利用TOF(Time of Flight)法來測量物體絕對位移的非接觸式傳感器,具有精度高、重復(fù)性好、穩(wěn)定可靠、無需定期標(biāo)定等優(yōu)勢[1-2],因而被廣泛應(yīng)用于石油、化工、冶金等行業(yè)中的位置檢測與控制系統(tǒng)[3],如火箭和導(dǎo)彈發(fā)射臺(tái)架控制系統(tǒng)、液壓控制系統(tǒng)、輥壓機(jī)的壓下機(jī)構(gòu)等。
作為檢測與控制系統(tǒng)的重要一環(huán),為滿足現(xiàn)場安裝的空間限制以及位移檢測的實(shí)時(shí)性、可靠性和穩(wěn)定性要求,磁致伸縮位移傳感器自身舍棄了顯示操作功能以減小電子倉體積和故障發(fā)生率。而在正式應(yīng)用前,為了確保測量準(zhǔn)確性,傳感器的工作參數(shù)必須根據(jù)現(xiàn)場的實(shí)際條件進(jìn)行確定[4],如零點(diǎn)位置、測量方向、通訊參數(shù)等,因此需要配合手操器或工控機(jī)完成調(diào)試工作。目前市面上常見的手操器大多采用按鍵復(fù)用和數(shù)碼管實(shí)現(xiàn)人機(jī)交互,使用十分不便,而采用傳統(tǒng)C/S架構(gòu)的工控機(jī)調(diào)試軟件依賴于運(yùn)行環(huán)境,易于出現(xiàn)兼容性問題[5]。并且由于傳感器大多應(yīng)用于具有沖擊振動(dòng)、污染等惡劣條件下的工業(yè)現(xiàn)場,調(diào)試人員不宜靠近安裝工位,此時(shí)將傳感器接入調(diào)試設(shè)備還需長距離布線,不利于調(diào)試工作的快速開展。
鑒于上述問題,本文設(shè)計(jì)了一種基于B/S 架構(gòu)的磁致伸縮位移傳感器手操器。用戶通過手機(jī)、平板、移動(dòng)PC 等便攜式設(shè)備接入手操器的Wi-Fi 網(wǎng)絡(luò)后即可使用Web 進(jìn)行遠(yuǎn)程操作。相較于傳統(tǒng)調(diào)試工具,無需預(yù)先安裝調(diào)試程序,軟件兼容性更好,可實(shí)現(xiàn)即連即用,并且通過無線通信和Web 技術(shù)以一種更加友好的方式實(shí)現(xiàn)交互,對磁致伸縮位移傳感器的現(xiàn)場調(diào)試具有積極意義。
手操器需要具備遠(yuǎn)程操作以及良好的人機(jī)交互功能,以便于對應(yīng)用于工業(yè)現(xiàn)場的磁致伸縮位移傳感器進(jìn)行快速調(diào)試,因此采用B/S架構(gòu)并結(jié)合Web 技術(shù)以提供更加簡便高效的操作方式,整體方案如圖1所示。手操器采用RS485 接口與磁致伸縮位移傳感器進(jìn)行通信,其內(nèi)部運(yùn)行Web 服務(wù)器,用于接收來自便攜式設(shè)備的前端請求并通過CGI(Common Gateway Interface)[6]和HTML實(shí)現(xiàn)請求響應(yīng)和數(shù)據(jù)可視化。其中,Web 前端所需的資源文件均存儲(chǔ)于本地,在用戶首次訪問后統(tǒng)一上傳。通過Wi-Fi 模塊將手操器拓展為無線網(wǎng)絡(luò)接入點(diǎn),使用戶接入該網(wǎng)絡(luò)后即可通過瀏覽器完成磁致伸縮位移傳感器的現(xiàn)場調(diào)試。
手操器以ARM芯片為核心,硬件按功能可劃分為最小系統(tǒng)電路、RS485接口模塊、存儲(chǔ)拓展模塊和無線通信模塊等,如圖2所示。ARM 芯片的型號(hào)為STM32F429,主頻180M,自帶1M的FLASH和256K的SRAM,具有SD、SPI、USART 等多種外設(shè)接口。由于片內(nèi)存儲(chǔ)器大小無法滿足系統(tǒng)需求,分別拓展了128M 的NOR FLASH 用于存儲(chǔ)Web資源文件以及32M的SDRAM充當(dāng)發(fā)送與接收緩沖區(qū)。無線通信模塊選用型號(hào)為AP6181 的Wi-Fi模塊,符合IEEE 802.11 b/g/n標(biāo)準(zhǔn),啟動(dòng)后以AP模式工作,負(fù)責(zé)手操器與便攜式設(shè)備之間的無線數(shù)據(jù)傳輸,該模塊的外圍電路設(shè)計(jì)如圖3所示。RS485 接口則作為手操器的外部接口,負(fù)責(zé)與磁致伸縮位移傳感器進(jìn)行通信。
為降低不同功能模塊之間的耦合度并提高實(shí)時(shí)性,手操器采用FreeRTOS 操作系統(tǒng)。FreeRTOS 是一款開源且實(shí)現(xiàn)多任務(wù)調(diào)度的輕量級(jí)實(shí)時(shí)操作系統(tǒng)[7],因此可將手操器整體功能劃分為各個(gè)子任務(wù)并進(jìn)行靈活調(diào)度。為滿足手操器與瀏覽器之間的通信協(xié)議標(biāo)準(zhǔn),在手操器中移植輕量級(jí)TCP/IP協(xié)議棧LWIP[8]并根據(jù)HTTP協(xié)議規(guī)范實(shí)現(xiàn)應(yīng)用層數(shù)據(jù)解析及封裝。根據(jù)需求分析,最終將整體功能劃分為五個(gè)任務(wù),分別為主程序、DHCP服務(wù)程序、HTTP 服務(wù)程序、無線通信程序和傳感器通信程序,任務(wù)之間通過FreeRTOS 提供的消息郵箱和消息量實(shí)現(xiàn)協(xié)作。
主程序負(fù)責(zé)完成硬件初始化和任務(wù)創(chuàng)建,待所有任務(wù)進(jìn)入就緒狀態(tài)后,開啟搶占式任務(wù)調(diào)度,此時(shí)程序的執(zhí)行邏輯由操作系統(tǒng)根據(jù)各任務(wù)的優(yōu)先級(jí)和阻塞狀態(tài)決定。DHCP服務(wù)程序?yàn)槊總€(gè)接入無線網(wǎng)絡(luò)的便攜式設(shè)備分配臨時(shí)的IP地址。HTTP服務(wù)程序阻塞監(jiān)聽本機(jī)IP地址上的80端口,判斷是否有HTTP請求到達(dá),根據(jù)協(xié)議規(guī)范解析請求并執(zhí)行URL對應(yīng)的CGI程序,然后按協(xié)議格式封裝消息并返回。傳感器通信線程負(fù)責(zé)按Modbus-RTU標(biāo)準(zhǔn)協(xié)議與傳感器進(jìn)行數(shù)據(jù)交換,根據(jù)響應(yīng)碼解析數(shù)據(jù)并生成相應(yīng)信息。無線通信程序負(fù)責(zé)控制無線通信模塊的底層數(shù)據(jù)發(fā)送和接收,通過消息郵箱與LWIP協(xié)議棧進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)包傳遞。
傳感器在調(diào)試過程中的位移實(shí)時(shí)檢測需要Web前端不斷向手操器發(fā)送請求并根據(jù)響應(yīng)數(shù)據(jù)更新圖表信息。若請求到達(dá)HTTP 服務(wù)程序后再與傳感器進(jìn)行通信,則該線程的阻塞時(shí)間將在較大程度上取決于傳感器的響應(yīng)時(shí)間,導(dǎo)致單次通信所耗費(fèi)的時(shí)間延長。為了提高通信效率,本文采用生產(chǎn)者、消費(fèi)者設(shè)計(jì)模式,將數(shù)據(jù)生產(chǎn)和消費(fèi)任務(wù)分別交由傳感器通信程序和HTTP服務(wù)程序完成,使數(shù)據(jù)在生產(chǎn)和消費(fèi)速率不一致的情況下實(shí)現(xiàn)高效率的共享[9]。傳感器通信程序負(fù)責(zé)將傳感器數(shù)據(jù)按固定格式加工為對應(yīng)的消息并投遞至數(shù)據(jù)緩沖區(qū),HTTP 服務(wù)程序則根據(jù)請求中攜帶的URL 直接從該緩沖區(qū)中取出指定類型的消息并返回給Web 前端,兩者之間的數(shù)據(jù)緩沖區(qū)采用基于FIFO隊(duì)列的消息郵箱。通過這種方式,HTTP服務(wù)線程在響應(yīng)請求時(shí)可直接從郵箱中取出消息而無需在此期間等待傳感器響應(yīng),實(shí)現(xiàn)了程序的進(jìn)一步解耦,執(zhí)行流程如圖4所示。
Web前端負(fù)責(zé)在瀏覽器中控制和顯示傳感器的操作界面,由HTML、CSS 和JS 文件組成。Web 前端和手操器之間采用HTTP 協(xié)議進(jìn)行通信并以JSON 作為數(shù)據(jù)交換格式。
SPA(Single-page Web Application)是指通過單個(gè)HTML界面完成用戶交互與動(dòng)態(tài)更新的應(yīng)用程序。SPA的優(yōu)勢在于構(gòu)建Web 界面所需的資源僅需加載一次,其后通過JS腳本和少量的數(shù)據(jù)交互即可完成頁面內(nèi)容的更新,從而提高了Web 界面的響應(yīng)速度[10]。本文根據(jù)SPA規(guī)范設(shè)計(jì)了Web前端并使用AJAX(Asynchronous JavaScript and XML)完成數(shù)據(jù)的異步更新[11]及界面的局部刷新[12]。當(dāng)便攜式設(shè)備接入無線網(wǎng)絡(luò)并訪問指定IP地址后,手操器將存儲(chǔ)其中的Web 資源上傳并在瀏覽器成功加載后開始運(yùn)行其中的JS 腳本。為了滿足Web 界面與傳感器的交互需求,JS腳本實(shí)現(xiàn)了以下幾個(gè)功能:1)將Web 界面中的各個(gè)按鈕與CGI 對應(yīng)的URL 綁定。2)以固定頻率向手操器發(fā)送位移請求,并將該請求對應(yīng)的響應(yīng)包作為心跳包以判斷便攜式設(shè)備與手操器的連接狀態(tài)。3)根據(jù)協(xié)議規(guī)范解析響應(yīng)包并通過DOM 操作調(diào)整Web 界面的顯示內(nèi)容。4)發(fā)生指定異常時(shí),通過瀏覽器的彈窗顯示異常信息,異常分類如表1所示。JS腳本的具體執(zhí)行流程如圖5所示。
表1 異常信息分類
由于接入設(shè)備的屏幕分辨率存在差異,采用單一頁面布局可能會(huì)導(dǎo)致Web 頁面在某些分辨率下出現(xiàn)內(nèi)容缺失、顯示比例不協(xié)調(diào)、無法正常操作等問題,對此采用Bootstrap開源框架對網(wǎng)頁布局進(jìn)行響應(yīng)式設(shè)計(jì),其原理為采用媒體查詢(@media)控制網(wǎng)頁的CSS樣式。當(dāng)設(shè)備的屏幕尺寸滿足@media 中設(shè)置的尺寸范圍時(shí)即采用對應(yīng)的布局樣式,使Web 頁面在不同尺寸的屏幕中均可正常顯示。為減小存儲(chǔ)占用和傳輸耗時(shí),對Bootstrap進(jìn)行裁剪,僅保留柵格系統(tǒng)以實(shí)現(xiàn)適配功能。
為測試手操器的各項(xiàng)功能,以RS485 總線連接手操器和傳感器,將便攜式設(shè)備接入無線網(wǎng)絡(luò),通過瀏覽器訪問指定IP 地址后顯示手操器的Web 界面,如圖6所示。通過該界面,用戶可查看磁致伸縮位移傳感器的運(yùn)行狀態(tài)并對其工作參數(shù)進(jìn)行調(diào)整,如方向、分辨率、平滑次數(shù)等。其中,曲線圖負(fù)責(zé)實(shí)時(shí)展示傳感器的位移輸出值。當(dāng)模擬表1所示的指定異常后,瀏覽器中也可及時(shí)出現(xiàn)攜帶相應(yīng)異常信息的彈窗警告。
將電腦接入手操器的無線網(wǎng)絡(luò)中并通過Chrome 瀏覽器記錄Web 前端與手操器通信時(shí)所產(chǎn)生的HTTP 報(bào)文,然后根據(jù)其生成的HAR文件[13]分析Web應(yīng)用性能并統(tǒng)計(jì)通信的延時(shí)情況。在一段時(shí)間內(nèi)對手操器進(jìn)行連續(xù)測試,測試條件為手操器以每秒20 次的頻率采集傳感器的位移值并進(jìn)行存儲(chǔ),然后由Web 前端以0.5 s 為間隔定時(shí)向手操器發(fā)送請求以獲取位移數(shù)據(jù),延時(shí)大小以從瀏覽器發(fā)出請求到接收響應(yīng)包之間的時(shí)間差為準(zhǔn)。測試結(jié)果如下:測試期間,Web 前端共發(fā)送8119 次HTTP請求,成功返回8015個(gè)響應(yīng)包,丟包率約為1.3%,平均延時(shí)約為37.6 ms,具體情況如圖7所示。由此可見,該手操器在測試期間運(yùn)行較為穩(wěn)定,延時(shí)大小可滿足現(xiàn)場調(diào)試的需求。
本文基于B/S架構(gòu)設(shè)計(jì)了一種應(yīng)用于磁致伸縮位移傳感器的手操器,以ARM 作為控制核心進(jìn)行拓展,選用Wi-Fi作為無線通信方式并結(jié)合一系列Web技術(shù)完成數(shù)據(jù)可視化,使人機(jī)交互性能得到較大提升。最后對所設(shè)計(jì)的儀器進(jìn)行功能測試,驗(yàn)證了該方案的可行性,為相關(guān)手操器的開發(fā)提供了一種設(shè)計(jì)思路。
自動(dòng)化技術(shù)與應(yīng)用2022年10期