葉錦川,李 楠,劉 鋒,王曉旭
(1.青島大學(xué)附屬青島市海慈醫(yī)院 青島市中醫(yī)院,山東 青島 266000;2.山東理工大學(xué),山東 淄博 255000)
將醫(yī)療化工供需系統(tǒng)的原料、生產(chǎn)、流通等環(huán)節(jié)與互聯(lián)網(wǎng)進(jìn)行深度結(jié)合,在醫(yī)療化工原料和產(chǎn)品供需過(guò)程中利用大數(shù)據(jù)來(lái)進(jìn)行質(zhì)量管控、輔助決策,形成個(gè)性化、定制化的智能制造系統(tǒng),有助于醫(yī)療化工企業(yè)及時(shí)、有效地應(yīng)對(duì)市場(chǎng)需求[1-3]。
在醫(yī)療化工供需系統(tǒng)的物聯(lián)網(wǎng)中,中間件是分布式軟件和網(wǎng)絡(luò)系統(tǒng)的中間層,它可實(shí)現(xiàn)物聯(lián)網(wǎng)設(shè)備與用戶(hù)級(jí)應(yīng)用的高效橋接[4-6]。提出了一種SmartCityWare物聯(lián)網(wǎng)中間件,并討論了該面向服務(wù)的中間件如何幫助IoT解決使用網(wǎng)絡(luò)霧運(yùn)算開(kāi)發(fā)和運(yùn)營(yíng)智慧城市服務(wù)時(shí)面對(duì)的新挑戰(zhàn)[7]。
在中間件的操作系統(tǒng)方面,選用嵌入式操作系統(tǒng)可以減少中間體設(shè)計(jì)時(shí)間和增加解決方案的可移植性[8-9];在通信協(xié)議方面,使用低功率廣域網(wǎng)絡(luò)(LPWAN)將物聯(lián)網(wǎng)應(yīng)用集成到醫(yī)療化工供需系統(tǒng)中,可顯著降低醫(yī)療化工供需系統(tǒng)的成本和功耗[10];此外,無(wú)線通信是物聯(lián)網(wǎng)通信的關(guān)鍵[11-13]。為了使基于物聯(lián)網(wǎng)技術(shù)的醫(yī)療化工供需系統(tǒng)、智能工廠、智能建筑等智能化應(yīng)用得到進(jìn)一步發(fā)展,物聯(lián)網(wǎng)網(wǎng)絡(luò)協(xié)議必須高效處理無(wú)線通信數(shù)據(jù)傳輸?shù)牟淮_定性問(wèn)題[14-15]。
對(duì)物聯(lián)網(wǎng)中間件的現(xiàn)有研究雖在操作系統(tǒng)、網(wǎng)絡(luò)協(xié)議、通信方式等方面開(kāi)展了大量研究[16],現(xiàn)有研究,特別是醫(yī)療化工供需系統(tǒng)中物聯(lián)網(wǎng)的研究,未在物聯(lián)網(wǎng)中間件的框架設(shè)計(jì)中綜合考慮這些問(wèn)題。
為解決該問(wèn)題,在現(xiàn)有研究基礎(chǔ)上,從操作系統(tǒng)、網(wǎng)絡(luò)協(xié)議和網(wǎng)絡(luò)通信架構(gòu)方面開(kāi)展研究,提出具有高效、輕便、可重復(fù)使用性能的醫(yī)療化工供需系統(tǒng)中嵌入式物聯(lián)網(wǎng)中間件的新框架。
LoRa是一種基于開(kāi)放標(biāo)準(zhǔn)的低成本射頻技術(shù),可允許用戶(hù)或設(shè)備以最小功耗進(jìn)行長(zhǎng)距離通信[17]。LoRa適用范圍非常廣泛,其中就包括在醫(yī)療化工供需系統(tǒng)的廣泛應(yīng)用[18]。
LoRaWan是一種開(kāi)放的網(wǎng)絡(luò)協(xié)議標(biāo)準(zhǔn),它通過(guò)網(wǎng)關(guān)與LoRa設(shè)備通信,并將此信息傳遞到網(wǎng)絡(luò)和應(yīng)用服務(wù)器[19]。本文所構(gòu)建的中間件體系結(jié)構(gòu)將基于LoRaWan協(xié)議運(yùn)行,故使用該中間件的網(wǎng)絡(luò)拓?fù)湫杌贚oRaWan協(xié)議進(jìn)行定義?;贚oRaWan網(wǎng)絡(luò)協(xié)議的網(wǎng)絡(luò)拓?fù)渲兄付?個(gè)基本元素:終端節(jié)點(diǎn)(設(shè)備)、網(wǎng)關(guān)、網(wǎng)絡(luò)服務(wù)器和應(yīng)用服務(wù)器?;贚oRaWan網(wǎng)絡(luò)協(xié)議的LoRa網(wǎng)絡(luò)拓?fù)涫纠鐖D1所示。本文所構(gòu)建的中間件架構(gòu)主要用于為位于終端設(shè)備節(jié)點(diǎn)的嵌入式操作系統(tǒng)提供服務(wù)。
圖1 基于LoRaWan網(wǎng)絡(luò)協(xié)議的LoRa網(wǎng)絡(luò)拓?fù)涫纠?/p>
物聯(lián)網(wǎng)可用于終端或邊緣節(jié)點(diǎn)設(shè)備通過(guò)網(wǎng)絡(luò)與運(yùn)行云中的批處理平臺(tái)的企業(yè)服務(wù)器進(jìn)行高質(zhì)量通信(通過(guò)選定的網(wǎng)關(guān))。物聯(lián)網(wǎng)中的設(shè)備、網(wǎng)關(guān)和云平臺(tái)的功能都有明確的定義,它們?cè)卺t(yī)療化工供需系統(tǒng)的物聯(lián)網(wǎng)解決方案中為醫(yī)療化工供需系統(tǒng)提供特定的特性和功能。
終端節(jié)點(diǎn)設(shè)備是物聯(lián)網(wǎng)解決方案的起點(diǎn),由于其與物理世界的直接交互,通常是醫(yī)療化工供需系統(tǒng)數(shù)據(jù)的發(fā)起者。終端設(shè)備節(jié)點(diǎn)的軟件和硬件層次結(jié)構(gòu)如圖2所示,該圖很好地展示了醫(yī)療化工供需系統(tǒng)中嵌入式物聯(lián)網(wǎng)中間件與其他層的交互。
圖2 終端設(shè)備節(jié)點(diǎn)的軟件和硬件層次結(jié)構(gòu)圖
圖2的劃分旨在強(qiáng)調(diào)終端設(shè)備節(jié)點(diǎn)的分層與嵌入式應(yīng)用程序創(chuàng)建的獨(dú)立性。因此,開(kāi)發(fā)人員基于所構(gòu)建中間件的API創(chuàng)建的解決方案,可允許終端設(shè)備節(jié)點(diǎn)的應(yīng)用程序代碼在其他平臺(tái)上被重復(fù)使用。
醫(yī)療化工供需系統(tǒng)中的嵌入式物聯(lián)網(wǎng)中間件可被設(shè)計(jì)成包含四個(gè)主要模塊,通過(guò)標(biāo)準(zhǔn)的多語(yǔ)言API實(shí)現(xiàn)從醫(yī)療化工供需系統(tǒng)設(shè)備到與醫(yī)療化工供需系統(tǒng)中各種平臺(tái)的集成。醫(yī)療化工供需系統(tǒng)中的嵌入式物聯(lián)網(wǎng)中間件的架構(gòu)如圖3所示。
圖3 醫(yī)療化工供需系統(tǒng)中嵌入式物聯(lián)網(wǎng)中間件架構(gòu)
圖3中的每個(gè)模塊封裝有實(shí)現(xiàn)細(xì)節(jié),每個(gè)模塊均可用于處理復(fù)雜性問(wèn)題,為系統(tǒng)提供清晰、內(nèi)聚的接口和服務(wù)。此外,模塊可以在同一程序內(nèi)或其他程序中重復(fù)使用。
1.3.1數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)是數(shù)據(jù)的集合,用于存儲(chǔ)、管理和檢索數(shù)據(jù)。結(jié)構(gòu)化查詢(xún)語(yǔ)言(SQL)數(shù)據(jù)庫(kù)是使用最為廣泛的數(shù)據(jù)庫(kù)。然而,隨著數(shù)據(jù)不可預(yù)測(cè)程度的不斷增強(qiáng),側(cè)重于大量不可預(yù)測(cè)數(shù)據(jù)存儲(chǔ)的非結(jié)構(gòu)化查詢(xún)語(yǔ)言(NoSQL)數(shù)據(jù)庫(kù)的使用越來(lái)越廣泛。
由于NoSQL數(shù)據(jù)庫(kù)不強(qiáng)制對(duì)象之間的關(guān)系,NoSQL數(shù)據(jù)庫(kù)通??梢员萐QL更快地寫(xiě)入和刪除數(shù)據(jù)。此外,NoSQL數(shù)據(jù)庫(kù)采用數(shù)據(jù)分片技術(shù)。通過(guò)分片,數(shù)據(jù)庫(kù)中的數(shù)據(jù)可以分布在多個(gè)服務(wù)器上,增加了數(shù)據(jù)庫(kù)的可伸縮性。鑒于此,本文中的物聯(lián)網(wǎng)中間件選用NoSQL數(shù)據(jù)庫(kù)。
1.3.2通信框架
構(gòu)建基于霧運(yùn)算和區(qū)塊鏈技術(shù)的物聯(lián)網(wǎng)通信框架,利用霧運(yùn)算和區(qū)塊鏈技術(shù)在中間件與智能設(shè)備、云平臺(tái)之間建立可靠和快速的通信。該框架在智能設(shè)備網(wǎng)絡(luò)環(huán)境中選用定期數(shù)據(jù)傳輸方式。在該傳輸方式中,一方面,數(shù)據(jù)包基于某種周期性時(shí)間模式生成;另一方面,服務(wù)時(shí)間總是一個(gè)具有一般分布的隨機(jī)變量。因此,當(dāng)服務(wù)時(shí)間超過(guò)數(shù)據(jù)包生成周期時(shí),一些數(shù)據(jù)包可能會(huì)因通道繁忙而被丟棄,導(dǎo)致無(wú)線通信數(shù)據(jù)傳輸?shù)牟淮_定性問(wèn)題。為解決該問(wèn)題,采用重傳方案、可變包長(zhǎng)度和飽和流量條件等技術(shù)來(lái)減少丟包率和增強(qiáng)模型的通信能力。
在所構(gòu)建的通信框架中,模式服務(wù)器用于存儲(chǔ)安全資源,代理作為存儲(chǔ)受保護(hù)數(shù)據(jù)的第三方服務(wù)器。中間件中的密鑰服務(wù)器用于生成加密和解密密鑰。經(jīng)授權(quán)的區(qū)塊鏈數(shù)據(jù)庫(kù)提供給智能設(shè)備的令牌具有訪問(wèn)框架、向密鑰服務(wù)器請(qǐng)求密鑰、從云獲取數(shù)據(jù)的權(quán)限。
物聯(lián)網(wǎng)平臺(tái)可提供開(kāi)源嵌入式操作系統(tǒng)(ARM Mbed OS)。該平臺(tái)擁有大量旨在開(kāi)發(fā)物聯(lián)網(wǎng)應(yīng)用的標(biāo)準(zhǔn)庫(kù),包括安全、連接和外圍設(shè)備和傳感器的驅(qū)動(dòng)程序。此外,該系統(tǒng)得到了來(lái)自不同制造商的大量硬件平臺(tái)的支持[20]。
支持ARM Mbed操作系統(tǒng)的嵌入式設(shè)備板和組件供應(yīng)商超過(guò)30多家,如意法半導(dǎo)體、MultiTech、NXP、Semtech等。ARM Mbed OS的廣泛應(yīng)用有利于不同應(yīng)用場(chǎng)景的物聯(lián)網(wǎng)應(yīng)用程序的開(kāi)發(fā),有助于不同平臺(tái)解決方案的集成和互轉(zhuǎn)。圖2中的系統(tǒng)層便是通過(guò)ARM Mbed OS實(shí)現(xiàn)的。
與目標(biāo)平臺(tái)的集成過(guò)程是通過(guò)正確實(shí)現(xiàn)描述模塊中功能的類(lèi)和接口來(lái)實(shí)現(xiàn)的。因此,每個(gè)模塊都由一組類(lèi)和接口組成,這些類(lèi)和接口必須正確實(shí)現(xiàn),以確保中間件和目標(biāo)系統(tǒng)的API之間的完全兼容性。
選擇控制模塊和系統(tǒng)集成模塊進(jìn)行醫(yī)療化工供需系統(tǒng)中嵌入式物聯(lián)網(wǎng)中間件體系結(jié)構(gòu)的功能實(shí)現(xiàn)。通過(guò)所選擇的模塊,可以:(1)驗(yàn)證中間件在ARM Mbed OS中的執(zhí)行情況;(2)驗(yàn)證對(duì)傳感器的控制和與傳感器的交互情況;(3)使用LoRaWan網(wǎng)絡(luò)協(xié)議評(píng)估通信情況。
為給出中間件的主要實(shí)體及其相互關(guān)系的正式表示,選用UML 2.0(統(tǒng)一建模語(yǔ)言)的類(lèi)圖和符號(hào)對(duì)中間件進(jìn)行建模和功能實(shí)現(xiàn)。源代碼使用C++語(yǔ)言生成,主要使用C++語(yǔ)言中的面向?qū)ο蟆⒛0搴陀成涞母拍睢?/p>
控制模塊中主要包括對(duì)抽象控制類(lèi)、傳感器類(lèi)和通信類(lèi)的通用描述。集成模塊用于控制不同模塊、不同類(lèi)通過(guò)接口實(shí)現(xiàn)互聯(lián)互通,例如,實(shí)現(xiàn)控制類(lèi)、傳感器類(lèi)和通信類(lèi)的集成和互聯(lián)互通。ARM Mbed OS平臺(tái)上各類(lèi)模塊的集成如圖4所示。
圖4 ARM Mbed OS平臺(tái)上各類(lèi)模塊的集成
在完成不同類(lèi)的集成之后,還需對(duì)不同的嵌入式操作系統(tǒng)進(jìn)行集成。在本例中,中間件使用嵌入式操作系統(tǒng)的API和驅(qū)動(dòng)程序來(lái)訪問(wèn)UART、SPI、I2C、GPIO等接口。
控制模塊中類(lèi)的集成通過(guò)函數(shù)Controllmpl實(shí)現(xiàn),控制模塊中類(lèi)對(duì)象集成的代碼片段如圖5所示。
圖5 控制模塊中類(lèi)對(duì)象集成的代碼片段
圖5中,第12~14行代碼實(shí)現(xiàn)將3種類(lèi)型的傳感器(溫度傳感器、陀螺儀傳感器和GPS傳感器)以及它們各自的通信接口(Analog IO接口、I2C接口、串行接口)集成到將中間件的控制模塊;第17行代碼將通信類(lèi)的LoRaWan集成到控制模塊;第21~23行代碼實(shí)現(xiàn)將控制類(lèi)對(duì)象引入控制模塊。
實(shí)現(xiàn)對(duì)陀螺儀傳感器定義的代碼片段如圖6所示。對(duì)GPS傳感器和溫度傳感器定義的過(guò)程與圖6中的代碼類(lèi)似。
圖6 對(duì)陀螺儀傳感器定義的代碼片段
如圖6中的第19行所示,傳感器與中間件系統(tǒng)的交互通過(guò)I2C接口實(shí)現(xiàn);第25行代碼描述了應(yīng)該返回的數(shù)據(jù)模型——GyroscopeData類(lèi)型;第29行代碼用于檢查陀螺儀傳感器的驅(qū)動(dòng)器所使用的MPU;第30行代碼給出了獲取傳感器數(shù)據(jù)的getMotion函數(shù)的聲明。
對(duì)通信類(lèi)的定義與實(shí)現(xiàn)與對(duì)傳感器類(lèi)的定義和實(shí)現(xiàn)類(lèi)似。對(duì)通信類(lèi)LoRaWanComm的定義如圖7所示。
在圖7的第61行代碼中,LoraData初始化通信類(lèi)LoRaWan的數(shù)據(jù)模型;該數(shù)據(jù)類(lèi)型封裝了通信類(lèi)的初始化參數(shù),例如,通信類(lèi)型為L(zhǎng)oRa、通信方式為無(wú)線通信、連接類(lèi)型為空中激活或自定義激活,這些參數(shù)通過(guò)對(duì)端口的連接、讀寫(xiě)獲取。選用LoRaWanInterface作為系統(tǒng)無(wú)線電交互的接口(第67行代碼),該接口為通信類(lèi)提供了一個(gè)使用C++ 的API,該API通過(guò)LoRa網(wǎng)絡(luò)連接到Internet。
在實(shí)現(xiàn)了Controllmpl、LoRaWanComm、Gyroscope、Gps和Temperature類(lèi)的定義之后,可在ARM Mbed OS平臺(tái)生成醫(yī)療化工供需系統(tǒng)中嵌入式物聯(lián)網(wǎng)的中間件。
設(shè)計(jì)一個(gè)使用含有嵌入式物聯(lián)網(wǎng)中間件的醫(yī)療化工供需系統(tǒng)狀態(tài)監(jiān)控示例來(lái)演示所構(gòu)建體系結(jié)構(gòu)的實(shí)際應(yīng)用,如圖8所示。該示例主要用于執(zhí)行設(shè)備的遠(yuǎn)程監(jiān)控,該示例的實(shí)際應(yīng)用將有助于提升設(shè)備的遠(yuǎn)程管理能力。在該示例中,物聯(lián)網(wǎng)中間件提供對(duì)監(jiān)控物理量(溫度、振動(dòng)和電流等)的傳感器的訪問(wèn)服務(wù),工作人員可通過(guò)這些物理量了解醫(yī)療化工供需系統(tǒng)運(yùn)行狀態(tài),進(jìn)而利用這些數(shù)據(jù)開(kāi)展醫(yī)療化工供需系統(tǒng)的統(tǒng)計(jì)分析。對(duì)于可拆卸設(shè)備,該中間件可以使用陀螺儀傳感器和/或GPS傳感器檢測(cè)和預(yù)警可拆卸設(shè)備發(fā)生的位移。使用物聯(lián)網(wǎng)嵌入式設(shè)備(內(nèi)含嵌入式中間件)遠(yuǎn)程監(jiān)控醫(yī)療化工供需系統(tǒng)的狀態(tài)監(jiān)控系統(tǒng)示例如圖8所示。該系統(tǒng)通過(guò)應(yīng)用程序從傳感器監(jiān)測(cè)處獲取數(shù)據(jù)并將其發(fā)送到云,為系統(tǒng)狀態(tài)評(píng)估提供數(shù)據(jù)。
圖8 使用嵌入式設(shè)備遠(yuǎn)程監(jiān)控醫(yī)療化工供需系統(tǒng)的監(jiān)控系統(tǒng)示例
遠(yuǎn)程監(jiān)控應(yīng)用程序的代碼片段如圖9所示。
圖9 狀態(tài)監(jiān)控應(yīng)用程序的代碼片段
在圖9中,第10行和第11行代碼引入控件類(lèi)并對(duì)其初始化。通過(guò)控制模塊,可以訪問(wèn)中間件提供的傳感器和通信等資源。第13~17行代碼分別用于獲取傳感器類(lèi)(溫度、陀螺儀、GPS)和通信類(lèi)(LoRaWan)的參考數(shù)據(jù)。第18行和第19行代碼中,使用LoraData中定義的連接配置初始化通信類(lèi)LoRaWan;然后,通過(guò)應(yīng)用程序嘗試連接到網(wǎng)絡(luò)。第21~23行代碼用于獲取溫度傳感器的值(temp->getValue())并將其發(fā)送到網(wǎng)絡(luò)服務(wù)器(COMM>write())。在第24行代碼中,監(jiān)控應(yīng)用程序讀取網(wǎng)絡(luò)服務(wù)器發(fā)送的消息(COMM->read())。這個(gè)響應(yīng)消息可以用作命令來(lái)激活帶有運(yùn)動(dòng)傳感器的線程。如果傳感器值受到任何干擾,它必須通過(guò)啟動(dòng)GPS并發(fā)送其定位坐標(biāo)來(lái)進(jìn)行校正或重新獲取
設(shè)計(jì)一種醫(yī)療化工供需系統(tǒng)中嵌入式物聯(lián)網(wǎng)中間件新框架,該框架選用ARM Mbed OS作為嵌入式操作系統(tǒng),選用LoRaWan協(xié)議作為網(wǎng)絡(luò)協(xié)議,選用區(qū)塊鏈技術(shù)建立物聯(lián)網(wǎng)中間件與云計(jì)算平臺(tái)、智能設(shè)備之間的通信框架。分析了一個(gè)使用所設(shè)計(jì)中間件框架的醫(yī)療化工供需系統(tǒng)遠(yuǎn)程實(shí)時(shí)監(jiān)控示例,演示所構(gòu)建中間件框架的實(shí)用性。
(1)通過(guò)選用ARM Mbed OS嵌入式操作系統(tǒng),提升了中間件架構(gòu)的可移植性;
(2)通過(guò)選用LoRaWan協(xié)議,提升了網(wǎng)絡(luò)可操作性;
(3)通過(guò)選用的區(qū)塊鏈技術(shù)建立物聯(lián)網(wǎng)中間件與云計(jì)算平臺(tái)、智能設(shè)備之間的通信框架,提升了內(nèi)在網(wǎng)絡(luò)的高效、安全通信;
(4)所設(shè)計(jì)新框架的實(shí)際應(yīng)用將有助于提升醫(yī)療化工供需系統(tǒng)的遠(yuǎn)程管理能力和安全運(yùn)行能力;
(5)所設(shè)計(jì)新框架對(duì)應(yīng)的中間件將具有輕量級(jí)、可重用的優(yōu)勢(shì),因此,該架構(gòu)方案在醫(yī)療化工供需系統(tǒng)狀態(tài)監(jiān)控的嵌入式應(yīng)用程序的創(chuàng)建方面具有廣闊的應(yīng)用前景。