萬歡,魏雯,趙展,賈作文,肖燁
(蘇州工業(yè)職業(yè)技術(shù)學(xué)院,江蘇蘇州,215104)
本文提出了一種區(qū)域型全自動藥庫系統(tǒng)設(shè)計(jì),是基于Cortex M3內(nèi)核的32位微控制器,并與ESP8266相互連接,形成一個局域性網(wǎng)絡(luò)結(jié)構(gòu)的配送系統(tǒng)。通過Netty進(jìn)行同步或者異步的網(wǎng)絡(luò)調(diào)配,作為服務(wù)端的網(wǎng)絡(luò)通信框架,能夠提供高可靠性與高性能的網(wǎng)絡(luò)服務(wù)[1]?;谠撓到y(tǒng),實(shí)時的通過網(wǎng)絡(luò)進(jìn)行藥品訂單的自動配送,整個配送傳輸過程無需人為干預(yù),僅需通過客戶端進(jìn)行操作。配送運(yùn)輸通過AGV小車進(jìn)行及時準(zhǔn)確的送藥任務(wù),能夠通過服務(wù)端程序監(jiān)控所有AGV小車配送的動態(tài)信息,減少了醫(yī)生與患者的接觸,避免人工配送時產(chǎn)生的風(fēng)險,進(jìn)一步保障醫(yī)生與患者的健康與安全。
區(qū)域型全自動藥庫系統(tǒng)以安全、便捷為主,能夠在新冠疫情之下,對藥品隔離運(yùn)輸,有效隔離病毒,減少中途因常規(guī)送藥而產(chǎn)生不必要的傳染因素。在此基礎(chǔ)上該系統(tǒng)將全院互聯(lián)網(wǎng)絡(luò)一體化,能夠使用服務(wù)器進(jìn)行同一調(diào)配AGV小車,使用WIFI網(wǎng)絡(luò)進(jìn)行節(jié)點(diǎn)通信,并使用服務(wù)器處理撿藥系統(tǒng)與運(yùn)輸路線規(guī)劃;實(shí)時監(jiān)測整體運(yùn)行情況,在緊急情況能夠按緊急等級進(jìn)行優(yōu)先分配送藥;并且能夠促進(jìn)智慧醫(yī)療現(xiàn)代化的發(fā)展,保障多方的安全與利益,系統(tǒng)總體框圖如圖1所示。
圖1 系統(tǒng)總體框圖
硬件系統(tǒng)主要包括三個部分,分別是藥品運(yùn)輸車輛AGV小車,自動取藥倉庫,道路車輛檢測。AGV小車通過STM32F103最小系統(tǒng)板控制整個小車的運(yùn)行與取藥送藥行動,小車上配備WIFI模塊整個系統(tǒng)通過無線模式與服務(wù)器進(jìn)行通信;行進(jìn)部分采用PWM控制電機(jī)轉(zhuǎn)動,采用場效應(yīng)管H橋式的電機(jī)驅(qū)動模塊,能夠輸出正向與反向電壓驅(qū)動大功率直流電機(jī),保障驅(qū)動一定負(fù)載的電機(jī)[2]。自動取藥倉庫同樣采用STM32F103最小系統(tǒng)進(jìn)行控制電機(jī)進(jìn)行出藥操作,同樣該取藥倉庫采用WIFI模塊與服務(wù)器進(jìn)行通信。道路車輛檢測擬采用紅外模塊感應(yīng)車輛精確位置,確保整個系統(tǒng)正常運(yùn)行。系統(tǒng)總硬件電路如圖2所示。
該系統(tǒng)方案采用STM32F103RTE6控制,該芯片擁有128KB的內(nèi)部flash,20KB的SRAM,三個通用定時器與一個高級定時器。并支持包括SPI、I2C、USART、CAN等通信協(xié)議,49個通用IO口,兩個16通道的ADC,主頻72MHz能夠支持大部分的邏輯運(yùn)算,并能夠運(yùn)行實(shí)時操作系統(tǒng),進(jìn)一步優(yōu)化阻塞式運(yùn)行模式。通過外圍電路來實(shí)現(xiàn)對電機(jī)的驅(qū)動和電機(jī)狀態(tài)判斷,通過行駛道路上布置的傳感器以及車身上的傳感器來對車輛自身狀態(tài)與道路狀態(tài)進(jìn)行判斷并實(shí)時反饋至服務(wù)器做出相應(yīng)判斷,通過出藥系統(tǒng)的傳感器與車輛反饋并服務(wù)器下發(fā)指令進(jìn)行出藥操作等。
直流電機(jī)驅(qū)動電路設(shè)計(jì)需要對輸出電流和輸出電壓進(jìn)行匹配,該項(xiàng)決定輸出功率的大?。恍枰獙﹄姍C(jī)驅(qū)動效率測試,提高驅(qū)動效率減少發(fā)熱量,減少不必要的電力浪費(fèi);控制端與輸出端的主從關(guān)系,電機(jī)線圈產(chǎn)生的感應(yīng)電流對控制短的影響;電壓波動對電源穩(wěn)定性的影響;是否能夠精確控制轉(zhuǎn)速,能夠改變方向也同樣是電機(jī)驅(qū)動電路的重要指標(biāo)。
圖2 系統(tǒng)總硬件電路原理圖
圖3 H橋驅(qū)動原理圖
通過場效應(yīng)管驅(qū)動直流電機(jī)的電路采用常見的H橋驅(qū)動電路,H橋作為一個典型的直流電機(jī)驅(qū)動控制電路,能夠采用集成芯片或者分立元件,由于驅(qū)動四個行進(jìn)電機(jī)需要較高的電流需求,所以采用分立元件,防止IC因功率過大燒毀。通過H橋并能夠?qū)﹄姍C(jī)進(jìn)行多種狀態(tài)操作,如正轉(zhuǎn)、反轉(zhuǎn)、停止、制動,H橋電路需要對每個橋臂進(jìn)行精確控制,防止因?yàn)橥瑐?cè)同時導(dǎo)通導(dǎo)致MOS管燒毀。通過對兩種情況的比較,MOS-H橋型的電機(jī)驅(qū)動電路能夠作為本設(shè)計(jì)AGV小車電機(jī)的驅(qū)動電路,通過各樣詳細(xì)參數(shù)的比較MOS管更加適配[3],H橋驅(qū)動電路如圖3所示。
軟件系統(tǒng)分為三個部分,分別是底層單片機(jī)系統(tǒng),服務(wù)器控制系統(tǒng)與控制軟件。底層單片機(jī)需藥分別對STM32最小系統(tǒng)進(jìn)行設(shè)計(jì),實(shí)時檢測車輛運(yùn)行狀態(tài),通過控制電機(jī)驅(qū)動確保運(yùn)行的穩(wěn)定性,并反饋道路狀況給予服務(wù)器進(jìn)行路況分析;通過ESP8266的系統(tǒng)設(shè)計(jì)保障整個通信系統(tǒng)的穩(wěn)定性。服務(wù)器控制系統(tǒng)通過TCP/IP協(xié)議接收局域網(wǎng)中各個設(shè)備發(fā)來的信息,控制整個系統(tǒng),完成藥品運(yùn)輸任務(wù)??刂栖浖獒t(yī)生使用的控制端,為需要分配藥品的患者進(jìn)行配藥;后端藥庫管理人員可以通過控制端進(jìn)行檢測藥庫剩余藥量,并及時補(bǔ)充。整個系統(tǒng)僅需人工操作電腦,將系統(tǒng)數(shù)據(jù)歸一化,完善自動藥庫系統(tǒng)。
根據(jù)一種區(qū)域型全自動藥庫系統(tǒng)的功能需求進(jìn)行程序設(shè)計(jì),服務(wù)器程序設(shè)計(jì)使用常見的操作系統(tǒng)Windows,采用Java與Netty框架設(shè)計(jì)的服務(wù)程序,處理接收來的數(shù)據(jù)并反饋,支持一定數(shù)量的并發(fā)。服務(wù)器程序主要通過通道進(jìn)行相關(guān)數(shù)據(jù)傳輸,進(jìn)行處理客戶端與AGV小車傳送的數(shù)據(jù),并進(jìn)行分析處理。
Netty是基于NIO的一種框架,NIO相對傳統(tǒng)IO,是一種同步且非阻塞式IO,相比傳統(tǒng)流傳輸,緩沖區(qū)具有更大的優(yōu)勢,不僅增加了處理過程中的靈活性,而且可以確保數(shù)據(jù)的安全性,確保不丟失,進(jìn)一步增加TCP/IP的穩(wěn)定性[4]。同時NIO采用的多路復(fù)用器,不需要像Socket那樣每創(chuàng)建一個連接創(chuàng)建一個線程,能夠能更加有效的利用CPU的資源,同時通過緩沖區(qū)的Buffer分配,在一定數(shù)據(jù)量的情況下,使用JAVA的自動回收機(jī)制,進(jìn)一步減少內(nèi)存的浪費(fèi),所以Netty更適合為服務(wù)器的軟件通信框架,服務(wù)流程總體框圖如圖4所示。
圖4 服務(wù)程序總體框圖
客戶端程序與服務(wù)端相對應(yīng),在本設(shè)計(jì)中客戶端為醫(yī)療從業(yè)者使用,能夠通過對圖形界面進(jìn)行選擇發(fā)送命令,使服務(wù)器控制AGV小車進(jìn)行取藥與運(yùn)輸?shù)牟僮?。在本程序中主要涉及兩個方面一個是圖形界面的設(shè)計(jì),另一個是與服務(wù)器的數(shù)據(jù)交互設(shè)計(jì),客戶端處理流程如圖5所示。
圖5 客戶端處理流程圖
圖形界面設(shè)計(jì)使用JavaFX框架,JavaFX在Java8中集成在jdk之中,java11之后則采用獨(dú)立的JavaFX的SDK。傳統(tǒng)的Java圖形開發(fā)需要依賴AWT等窗口工具包,在JavaFX中擁有豐富的圖形與媒體API,并且JavaFX完全由Java編寫,在使用該類庫開發(fā)時不需要額外鏈接其他框架,便于學(xué)習(xí)且開發(fā)周期較短。
使用JavaFX開發(fā)無需像傳統(tǒng)窗口工具包只能夠通過代碼來進(jìn)行布置,通過額外的Scene Builder可以實(shí)現(xiàn)圖形化開發(fā),能夠通過實(shí)時的界面調(diào)節(jié)進(jìn)行布局的修改。其能夠高效的設(shè)計(jì)圖形界面,數(shù)據(jù)交互同樣與服務(wù)器使用同一種通信方式的網(wǎng)絡(luò)框架。
使用傳感器采集一組數(shù)據(jù),數(shù)據(jù)為char型8位,在正常運(yùn)行中至少存在兩點(diǎn)位于循跡線上,循跡線上的檢測點(diǎn)值常高于其他循跡點(diǎn)值,在干凈的面板上其他循跡點(diǎn)不會出現(xiàn)異常高值,為應(yīng)變復(fù)雜環(huán)境,循跡判斷前需要進(jìn)行高斯濾波,將可疑點(diǎn)進(jìn)行濾除,避免在姿態(tài)判斷中出現(xiàn)誤判現(xiàn)象。
電機(jī)驅(qū)動采用PWM技術(shù),PWM全稱為脈寬調(diào)制波形如圖6所示,通過數(shù)字量對模擬設(shè)備驅(qū)動進(jìn)行控制,使用PWM控制電機(jī)能夠有效的控制車輛行駛速度,減少突然停頓與突然運(yùn)行等情況。
圖6 PWM波形擬真圖
本設(shè)計(jì)是基于物聯(lián)網(wǎng)技術(shù)與無線通信技術(shù)的一種局域型全自動藥庫系統(tǒng)。藥品運(yùn)輸車輛采用STM32芯片作為控制電路,使用H橋驅(qū)動電機(jī)運(yùn)行,并通過ESP-12E進(jìn)行無線通信與服務(wù)器進(jìn)行交互。服務(wù)系統(tǒng)則通過Windows端使用Netty和Java構(gòu)建基于TCP/IP的服務(wù)器程序。服務(wù)器程序依賴客戶端設(shè)備發(fā)送請求命令,進(jìn)行分析、規(guī)劃并向運(yùn)輸車輛發(fā)出控制命令、規(guī)劃車輛取藥與送藥所需路徑根據(jù)具體等級安排運(yùn)輸順序,并且能夠接收車輛實(shí)時的工作狀態(tài)??蛻舳耸褂谜咭话銥獒t(yī)護(hù)人員,醫(yī)護(hù)人員通過患者具體情況選擇藥品,并選擇輸送至患者所在床位或房間。同樣,客戶端能夠通過服務(wù)器接收各設(shè)備的具體運(yùn)行情況,達(dá)到實(shí)時監(jiān)管的作用。
通過構(gòu)建物聯(lián)網(wǎng)系統(tǒng)框架,控制AGV車輛運(yùn)輸藥品,使其在區(qū)域中運(yùn)輸藥品更加便捷,減少了醫(yī)生與患者的接觸,避免人工配送時產(chǎn)生的風(fēng)險,保障了醫(yī)生與患者的健康與安全。