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