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