卿建華,陳元斌,鮑 敏,章近達(dá)
(1.浙江理工大學(xué) 機械與自動控制學(xué)院,杭州 310018;2.杭州名北拓科技有限公司,杭州 310000)
我國最早是中國科學(xué)院1999年的傳感網(wǎng)項目,正式開始了對物聯(lián)網(wǎng)的研究。從廣義上講,物聯(lián)網(wǎng)就是一個M2M系統(tǒng),分別代表機器之間(Machine to Machine)、人機交互(Man to Machine,Machine to Man)和人與人之間(Man to Man)的通信[1]。在生產(chǎn)制造各環(huán)節(jié)實現(xiàn)遠(yuǎn)程可視化檢測與技術(shù)支持,應(yīng)用物聯(lián)網(wǎng)技術(shù)為企業(yè)提供及時準(zhǔn)確的數(shù)據(jù),無疑對降低成本、提高生產(chǎn)效率和產(chǎn)品質(zhì)量發(fā)揮重要作用。
數(shù)據(jù)采集與監(jiān)控系統(tǒng)為企業(yè)ERP、EMS、CRM等信息化系統(tǒng)提供及時準(zhǔn)確的數(shù)據(jù),相關(guān)技術(shù)因此得到了廣泛的研究。無線傳輸方案中Wi-Fi、NB-IoT、LoRa、ZigBee以及Sub-GHz都是候選技術(shù)。吳海龍,鮑敏[2]等針對生產(chǎn)車間中數(shù)據(jù)采集問題,提出了一種基于ZigBee的生產(chǎn)車間數(shù)據(jù)采集系統(tǒng),并開發(fā)了原型系統(tǒng);莫哲萌,鮑敏等[3]針對離散制造車間的特點,在原型系統(tǒng)的基礎(chǔ)上,提出一種基于Sub-GHz無線通信技術(shù)的車間數(shù)據(jù)采集系統(tǒng)。
本文目標(biāo)企業(yè)車間生產(chǎn)線分布呈現(xiàn)整體分散局部集中格局,生產(chǎn)數(shù)據(jù)由人工統(tǒng)計及匯報,投入成本高,實時性差,管理層和決策層難以實時掌握生產(chǎn)一線狀況。企業(yè)希望改善現(xiàn)狀,要求能實時自動統(tǒng)計、匯總、存儲和處理生產(chǎn)數(shù)據(jù),監(jiān)測設(shè)備是否異常,以可視化監(jiān)控的形式供決策者隨時隨地監(jiān)控生產(chǎn)實際情況,做出生產(chǎn)調(diào)度,督促員工積極參與生產(chǎn),避免地理、時間等因素的影響。
在大量研究和實踐的基礎(chǔ)上,對原型系統(tǒng)做了多方面優(yōu)化和補充(比如,用穩(wěn)定性相差不大可編程模塊代替了原有的固定系統(tǒng)),結(jié)合企業(yè)實際要求,設(shè)計了離散型生產(chǎn)車間數(shù)據(jù)采集與監(jiān)控系統(tǒng)的總體架構(gòu)。該系統(tǒng)具有結(jié)構(gòu)簡單、組網(wǎng)容易、高靈敏度、遠(yuǎn)程指令下達(dá)、跨平臺使用、用戶操作方便、可二次開發(fā)的特點。
本文目標(biāo)是設(shè)計一種可視化遠(yuǎn)程監(jiān)控系統(tǒng),需要對傳感器節(jié)點、無線模塊、組網(wǎng)方案、數(shù)據(jù)流、云服務(wù)器、業(yè)務(wù)定制應(yīng)用等方面做適用性和可靠性研究。
傳感器節(jié)點是遠(yuǎn)程監(jiān)控系統(tǒng)的最小單元,由傳感器和控制器組成,起著感知世界、采集信息、接入傳感網(wǎng)的功能。該系統(tǒng)選用模擬量傳感器,由ADC電路采樣,經(jīng)過濾波等環(huán)節(jié)處理后得到需要的數(shù)字信號。本文的遠(yuǎn)程控制系統(tǒng)中,傳感器主要是連接在控制器上,控制器可以控制傳感器的工作狀態(tài),控制器可以將采集數(shù)據(jù)進(jìn)行轉(zhuǎn)化并發(fā)送出去。
目標(biāo)企業(yè)生產(chǎn)現(xiàn)場采集點分布整體分散局部集中,生產(chǎn)空間無障礙物的影響與繞射損耗,單條上傳數(shù)據(jù)小,因此傳輸終端采用ZigBee模式。ZigBee網(wǎng)絡(luò)容量大,單個網(wǎng)絡(luò)最多可支持65535個設(shè)備,每臺設(shè)備可以和另外254臺設(shè)備相互連接[4],如圖1所示。經(jīng)過分析和實驗,設(shè)計了基于RS485和Modbus協(xié)議的傳感器節(jié)點查詢、寫入和應(yīng)答操作,RS485可連接多個設(shè)備,形成總線形式。
網(wǎng)關(guān)基于以下部件的封裝:Digi XBee? ZigBee模塊、Pyboard開發(fā)板、QUECTEL-EC20模塊,Pyboard嵌入式開發(fā)板基于STM32F405RG微控制器,成功移植了MicroPython,是連接各個終端的匯集點,采用3G/4G網(wǎng)絡(luò)進(jìn)行與服務(wù)器的遠(yuǎn)程通信。采用一個云數(shù)據(jù)中心和物聯(lián)網(wǎng)常見的三層結(jié)構(gòu)組網(wǎng)方案,設(shè)備云平臺架設(shè)在阿里云,也可以架設(shè)私有云。應(yīng)用業(yè)務(wù)層采用現(xiàn)場監(jiān)控看板、WEB站點、APP三種方式。
圖1 監(jiān)控系統(tǒng)拓?fù)鋱D
控制器基于XBEE模塊和Pyboard開發(fā)板封裝,支持RS485轉(zhuǎn)虛擬USB和虛擬串口連接PC,實現(xiàn)存儲內(nèi)容可視,虛擬串口模式方便用戶調(diào)試?;cMicroPython語言開發(fā)了可復(fù)用的消息接發(fā)異步庫、RS485庫、ZigBee庫、StateMachine庫,極大的縮短了產(chǎn)品開發(fā)周期,二次開發(fā)只需專注于功能實現(xiàn)。
圖2 封裝后的網(wǎng)關(guān)實物照
控制器初始化,通過XBEE模塊接入ZigBee網(wǎng)絡(luò),發(fā)送握手信息連接網(wǎng)關(guān),ZigBee協(xié)調(diào)器(Coordinator)增加了多控制器和網(wǎng)關(guān)條件下的物理隔離。傳感網(wǎng)發(fā)送Modbus請求,對返回碼進(jìn)行CRC校驗。檢測網(wǎng)關(guān)是否連接,把數(shù)據(jù)解析的結(jié)果發(fā)送給網(wǎng)關(guān)。
網(wǎng)關(guān)具備的功能有:網(wǎng)絡(luò)創(chuàng)建、傳感器節(jié)點終端互連、網(wǎng)絡(luò)搜索、搜索網(wǎng)關(guān)創(chuàng)建的局域網(wǎng)中包含的設(shè)備、為方便識別和通信給局域網(wǎng)設(shè)備分配短地址、接收數(shù)據(jù)、云服務(wù)器用戶下達(dá)的指令反饋、數(shù)據(jù)封裝上傳。
傳感器節(jié)點控制器采用XBEE模塊,該模塊支持ZigBee通信協(xié)議。根據(jù)ZigBee協(xié)議,基于Digi XBee? ZigBee模塊、QUECTEL-EC20模塊和Pyboard開發(fā)板結(jié)合封裝了ZigBee/3G可編程網(wǎng)關(guān)充當(dāng)網(wǎng)絡(luò)接入設(shè)備,實現(xiàn)了向下與傳感器節(jié)點通訊向上與云服務(wù)器通訊。網(wǎng)關(guān)支持多種接口的互發(fā)。既可以做為網(wǎng)關(guān),也可以作為接入模塊使用。網(wǎng)關(guān)的開發(fā)工具是MicroPython,基于Python3語法重構(gòu)而成,具有很好的二次開發(fā)性能,能添加各種MicroPython-lib庫[5],如圖2所示。
圖3 控制器程序流程圖
控制器與傳感器通過UART連接,該系統(tǒng)采用RS485標(biāo)準(zhǔn)規(guī)范。
現(xiàn)場總線在自動化領(lǐng)域,相當(dāng)于計算機局域網(wǎng)。在總線種類多樣化的今天, Modbus技術(shù)以其先進(jìn)性、開放性、成熟性使得基于Modbus串行鏈路通信的設(shè)備得到了廣泛的使用,Modbus是運行在RS485總線上的軟件層協(xié)議。有標(biāo)準(zhǔn)MODBUS-RTU(S)、非標(biāo)準(zhǔn)MODBUSRTU(NS)和ASC(ASCⅡ碼)三種模式。Modbus-RTU(16進(jìn)制)查詢與應(yīng)答均采用8數(shù)據(jù)位、1停止位、奇偶校驗位、CRC校驗位。交互過程中關(guān)鍵是CRC-16(16位循環(huán)冗余校驗碼)校驗方法,如圖4所示。包含16位二進(jìn)制。CRC校驗碼由發(fā)送端計算, 放置于發(fā)送信息的尾部(2Bytes)。接收端重新計算接收到的信息的校驗碼,并與接收到的CRC校驗碼核對,如圖4所示。
圖4 MODBUS-RTU(NS)冗余循環(huán)碼計算
MQTT(Message Queuing Telemetry-Transpo-rt,消息隊列遙測傳輸)是IBM開發(fā)的一個即時通訊協(xié)議。MQTT消息體分為三個部分:固定頭、可變頭和有效載荷。固定頭是所有消息必須包含的部分[6],如圖5所示。
當(dāng)系統(tǒng)正常運行時,使用消息隊列可以跟蹤記錄系統(tǒng)的消息流狀態(tài),方便使用者精確查詢到某時間段內(nèi)的操作行為。
圖5 MQTT固定消息頭
圖6 對有效載荷流格式的設(shè)計
有效載荷部分(消息體),把數(shù)據(jù)按自定義的主題推送給云服務(wù)器,支持分層dev/a/b/c(最深支持8層),支持通配符+和#操作[7],如圖6所示。
ZigBee協(xié)議下有效載荷應(yīng)控制在71字節(jié)左右。模塊單次發(fā)送最大數(shù)據(jù)量127個字節(jié), 超過最大長度,ZigBee協(xié)議棧會做分包處理。
MQTT服務(wù)是建立在WEB服務(wù)器(該系統(tǒng)服務(wù)器架設(shè)于阿里云ESC)上層的消息接收發(fā)送類服務(wù)程序,如圖7所示。
圖7 MQTT服務(wù)在云平臺中的功能
消息接發(fā)服務(wù)負(fù)責(zé)把數(shù)據(jù)推送給該主題的所有訂閱者,節(jié)點可以自由按需要發(fā)布、訂閱或取消訂閱。
異步接口庫是消息推送客戶端實現(xiàn)關(guān)鍵的步驟之一。MQTT客戶端的功能:連接服務(wù)端、訂閱服務(wù)、訂閱主題、發(fā)布服務(wù)、發(fā)布主題。異步接口庫工作流程,如圖8所示。
圖8 異步接口庫程序流程圖
異步接口庫的回調(diào)函數(shù)支持MQTT的14種消息類型(連接類、發(fā)布類、訂閱類、保活類),包含主要的幾個回調(diào)函(連接成功回調(diào)函數(shù)、斷開連接回調(diào)函數(shù)、訂閱回調(diào)函數(shù)、取消訂閱回調(diào)函數(shù)、發(fā)布回調(diào)函數(shù)、接收消息回調(diào)函數(shù))。
系統(tǒng)數(shù)據(jù)處理工作大部分完成于云服務(wù)器,減輕了數(shù)據(jù)上行和下行負(fù)荷。
Web站點:采用B/S軟件結(jié)構(gòu)開發(fā)Web站點。基于典型的MVC架構(gòu)Django和Web Service作為云后臺數(shù)據(jù)交互服務(wù)[8]。
業(yè)務(wù)看板:基于Python的異步接口庫和Microsoft SQL Server接發(fā)并保存歷史數(shù)據(jù)。使用Python Kivy開發(fā)業(yè)務(wù)看板界面,客戶端基于PYMSSQL和數(shù)據(jù)庫進(jìn)行數(shù)據(jù)交互。
Web站點包括:實時數(shù)據(jù)監(jiān)控模塊、歷史數(shù)據(jù)統(tǒng)計模塊和指令下達(dá)模塊。實時數(shù)據(jù)監(jiān)控模塊效果,如圖9,界面包括網(wǎng)關(guān)MAC號,傳感器節(jié)點控制器ID號,ZigBee信號強度值,傳感網(wǎng)狀態(tài)。JavaScript實現(xiàn)數(shù)據(jù)實時刷新,刷新周期為2秒。為減少系統(tǒng)時延,數(shù)據(jù)刷新時間應(yīng)小于網(wǎng)關(guān)數(shù)據(jù)上傳周期。
圖9 實時數(shù)據(jù)Web界面
圖10 實時數(shù)據(jù)與設(shè)備狀態(tài)看板
生產(chǎn)線看板界面基于Python Kivy開發(fā),包括實時數(shù)據(jù)與設(shè)備狀態(tài)看板、歷史數(shù)據(jù)統(tǒng)計看板等多塊看板,看板掛置在每條生產(chǎn)線頭部。實時數(shù)據(jù)與設(shè)備狀態(tài)看板,如圖10所示。
本文根據(jù)某大型鞋服針織品制造企業(yè)要求,結(jié)合該企業(yè)生產(chǎn)車間現(xiàn)場環(huán)境情況,借鑒原型系統(tǒng)開發(fā)經(jīng)驗,基于大量研究和實踐,設(shè)計了一種離散型生產(chǎn)車間數(shù)據(jù)采集與監(jiān)控系統(tǒng)。
目前,系統(tǒng)已在目標(biāo)企業(yè)小規(guī)模上線。后續(xù)考慮對傳感網(wǎng)數(shù)據(jù)基于樸素貝葉斯算法分類并實現(xiàn)業(yè)務(wù)層模塊化。