(東華大學(xué) 機(jī)械工程學(xué)院,上海 201620)
隨著國(guó)內(nèi)低溫醫(yī)藥市場(chǎng)的迅速發(fā)展,冷藏藥品的年度增長(zhǎng)率已高達(dá)15%[1],醫(yī)藥冷庫(kù)具有廣闊的市場(chǎng)前景,但同時(shí)也面臨著一些問(wèn)題。一方面,醫(yī)藥冷庫(kù)自動(dòng)化、信息化程度較低,由于藥品名多為復(fù)雜的專業(yè)名稱,人工記錄時(shí)效率低,易出錯(cuò);而且傳統(tǒng)醫(yī)藥冷庫(kù)需要操作員進(jìn)入冷庫(kù)中進(jìn)行藥物的存取和盤點(diǎn),低溫環(huán)境會(huì)給操作員帶來(lái)安全隱患。另一方面,現(xiàn)有的醫(yī)療信息系統(tǒng),如LIS系統(tǒng)[2],其中的數(shù)據(jù)庫(kù)僅用于數(shù)據(jù)的存儲(chǔ)和管理,并不涉及運(yùn)動(dòng)過(guò)程的控制調(diào)度,因此信息系統(tǒng)與控制系統(tǒng)相互獨(dú)立,彼此之間無(wú)法進(jìn)行實(shí)時(shí)的信息傳輸,管理人員不能及時(shí)根據(jù)冷庫(kù)狀態(tài)作出調(diào)整,可能會(huì)對(duì)企業(yè)造成嚴(yán)重?fù)p失。
針對(duì)以上問(wèn)題,本文設(shè)計(jì)了將數(shù)據(jù)庫(kù)作為“大腦”的智能醫(yī)藥冷庫(kù)系統(tǒng),數(shù)據(jù)庫(kù)負(fù)責(zé)存儲(chǔ)藥品、用戶以及倉(cāng)位等的基本信息并產(chǎn)生流程調(diào)度所需的中間參數(shù),實(shí)現(xiàn)對(duì)機(jī)器人運(yùn)送藥品的自動(dòng)控制;同時(shí)通過(guò)瀏覽器或微信平臺(tái)可以遠(yuǎn)程訪問(wèn)數(shù)據(jù)庫(kù),實(shí)現(xiàn)了對(duì)冷庫(kù)狀態(tài)的實(shí)時(shí)監(jiān)控。
本系統(tǒng)以LabVIEW作為上位機(jī)的軟件開(kāi)發(fā)平臺(tái),使用串口和無(wú)線通信將機(jī)器人運(yùn)動(dòng)狀態(tài)、冷庫(kù)溫濕度和冷庫(kù)藥品等詳細(xì)信息通過(guò)CAN總線傳遞至上位機(jī),并存儲(chǔ)在數(shù)據(jù)庫(kù)中。通過(guò)隊(duì)列實(shí)現(xiàn)多線程指令對(duì)數(shù)據(jù)庫(kù)的有序化操作,合理調(diào)度各部分運(yùn)作。此外利用Socket網(wǎng)絡(luò)編程技術(shù),通過(guò)對(duì)冷庫(kù)的遠(yuǎn)程多點(diǎn)監(jiān)控,使管理人員及時(shí)獲取信息,提高決策效率,實(shí)現(xiàn)醫(yī)藥冷庫(kù)管理邁向智能化和信息化。
本文設(shè)計(jì)的智能化系統(tǒng)將主要由基礎(chǔ)采集層、數(shù)據(jù)層、應(yīng)用層和用戶層四部分構(gòu)成,關(guān)于系統(tǒng)的整體框架如圖1所示。
對(duì)于智能醫(yī)藥冷庫(kù)系統(tǒng)各層次主要功能介紹如下:
1)基礎(chǔ)采集層:由條碼識(shí)讀儀、各類傳感器和A/D轉(zhuǎn)換模塊組成。根據(jù)上層指令完成對(duì)藥品、溫濕度、機(jī)器人運(yùn)行參數(shù)和工作畫面的采集。利用CAN總線將系統(tǒng)內(nèi)的信號(hào)數(shù)據(jù)傳輸至通信轉(zhuǎn)換模塊,并采用串口和無(wú)線通信將信息傳遞至上層工控機(jī)。
圖1 系統(tǒng)整體架構(gòu)示意圖
2)數(shù)據(jù)層:一方面實(shí)時(shí)存儲(chǔ)用戶信息、藥品信息、冷庫(kù)內(nèi)溫濕度等大量基礎(chǔ)信息,另一方面存儲(chǔ)機(jī)器人運(yùn)行的中間參數(shù),用于實(shí)現(xiàn)流程有序調(diào)度。
3)應(yīng)用層:分為系統(tǒng)后臺(tái)管理部分和用戶遠(yuǎn)程訪問(wèn)平臺(tái)。系統(tǒng)后臺(tái)管理部分包括系統(tǒng)對(duì)各類信息調(diào)用和用戶訪問(wèn)的接口,用戶遠(yuǎn)程訪問(wèn)平臺(tái)能夠響應(yīng)用戶的訪問(wèn)需求,實(shí)現(xiàn)不同用戶階層下的功能。
4)用戶層:智能醫(yī)藥冷庫(kù)是為醫(yī)院、制藥企業(yè)開(kāi)發(fā)設(shè)計(jì)的。面向的用戶有:患者、醫(yī)生、冷庫(kù)管理員及疫苗安全管理專員。
結(jié)合實(shí)際要求進(jìn)行需求分析,是系統(tǒng)設(shè)計(jì)和開(kāi)發(fā)的基礎(chǔ)。通過(guò)調(diào)查研究,確定了用戶對(duì)醫(yī)藥冷庫(kù)的需求并對(duì)功能進(jìn)行劃分,圖2為系統(tǒng)功能圖。
圖2 系統(tǒng)功能圖
1)藥品管理自動(dòng)化。藥品的入庫(kù)、出庫(kù)和庫(kù)存盤點(diǎn)由上位機(jī)控制機(jī)器人完成。以藥品入庫(kù)為例,ERP系統(tǒng)中的采購(gòu)清單直接導(dǎo)入系統(tǒng),在LCD屏上顯示入庫(kù)清單,機(jī)器人按照入庫(kù)清單依次執(zhí)行入庫(kù)任務(wù);
2)監(jiān)控管理多點(diǎn)化。本系統(tǒng)中的監(jiān)控主要是對(duì)冷庫(kù)溫濕度、機(jī)器人狀態(tài)和藥品庫(kù)存量這三部分進(jìn)行的監(jiān)控。遠(yuǎn)程用戶能隨時(shí)通過(guò)網(wǎng)頁(yè)或微信公眾平臺(tái)實(shí)現(xiàn)對(duì)冷庫(kù)的監(jiān)控:實(shí)時(shí)顯示溫濕度信息,超限報(bào)警;實(shí)時(shí)顯示機(jī)器人正在執(zhí)行的任務(wù)進(jìn)程以及各倉(cāng)位中藥品的存量及有效期[3];
3)系統(tǒng)安全性。對(duì)不同角色設(shè)置了對(duì)系統(tǒng)的不同操作權(quán)限,通過(guò)用戶登錄和注冊(cè)界面保護(hù)系統(tǒng)數(shù)據(jù)安全。
在本智能冷庫(kù)管理及控制系統(tǒng)中,數(shù)據(jù)庫(kù)處于核心位置。人機(jī)界面、機(jī)器人和遠(yuǎn)程終端都與數(shù)據(jù)庫(kù)進(jìn)行信息交互,從數(shù)據(jù)庫(kù)中獲得下一步動(dòng)作的狀態(tài)參數(shù),在此過(guò)程中,可能會(huì)同時(shí)產(chǎn)生多個(gè)操作數(shù)據(jù)庫(kù)的指令。所以,在設(shè)計(jì)過(guò)程中面臨如何建立數(shù)據(jù)間的關(guān)聯(lián)性和解決流程調(diào)度的難點(diǎn)。
圖3 入庫(kù)時(shí)數(shù)據(jù)關(guān)系圖
首先應(yīng)明確各階段對(duì)數(shù)據(jù)庫(kù)的操作步驟。冷庫(kù)對(duì)藥品的操作分為入庫(kù)、出庫(kù)和庫(kù)存盤點(diǎn),我們以藥品入庫(kù)過(guò)程為例,如圖3所示。當(dāng)有藥品入庫(kù)時(shí),查詢冷庫(kù)中是否已有此藥品,如果庫(kù)中已有,則在子界面上顯示此藥品的關(guān)鍵信息,便于操作員確認(rèn);如果此藥品是新藥品,則將藥品的具體信息新增至藥品信息庫(kù)。藥品供應(yīng)商的操作與此相同。隨后,根據(jù)倉(cāng)位分配算法如遺傳算法等自動(dòng)選擇最優(yōu)倉(cāng)位,生成入庫(kù)清單。為了保證后續(xù)倉(cāng)位分配計(jì)算的準(zhǔn)確性,設(shè)置虛擬的預(yù)設(shè)庫(kù)存,把入庫(kù)量先計(jì)入庫(kù)存信息中。同時(shí),具體入庫(kù)信息存入入庫(kù)表中。接著向機(jī)器人發(fā)送帶有倉(cāng)位信息的入庫(kù)任務(wù)列表,機(jī)器人逐條執(zhí)行,每次執(zhí)行完成后向上位機(jī)返回完成信號(hào),入庫(kù)表中的入庫(kù)標(biāo)志位和庫(kù)存表中實(shí)際庫(kù)存量隨之改變。這樣,以下位機(jī)反饋的信號(hào)來(lái)判斷藥品是否真實(shí)入庫(kù),可以避免因機(jī)器人故障而引發(fā)的庫(kù)存記錄錯(cuò)亂。
為了在數(shù)據(jù)之間建立清晰的關(guān)聯(lián),需建立多張表對(duì)信息進(jìn)行分類存儲(chǔ)和處理。不僅同一庫(kù)中的表具有數(shù)據(jù)關(guān)聯(lián)性,不同數(shù)據(jù)庫(kù)間的數(shù)據(jù)也具有一定的聯(lián)系性[4]。
圖4 入庫(kù)E-R模型圖
本文通過(guò)將藥品、供應(yīng)商、庫(kù)存信息和入庫(kù)信息實(shí)體化,建立基于有向數(shù)據(jù)流的E-R模型,如圖4所示。入庫(kù)時(shí)庫(kù)存和入庫(kù)之間首先具有n:1的聯(lián)系,當(dāng)收到機(jī)器人入庫(kù)完成指令后,根據(jù)入庫(kù)表更改庫(kù)存表中的實(shí)際庫(kù)存,此時(shí)二者之間的聯(lián)系是1:1。該模型可以明確實(shí)體屬性和彼此聯(lián)系,幫助我們創(chuàng)建和設(shè)計(jì)合理的數(shù)據(jù)庫(kù)[5]。
據(jù)此我們可以建立供應(yīng)商字典、藥品字典、入庫(kù)表、庫(kù)存表等。系統(tǒng)中共建立9張數(shù)據(jù)表,在此僅列出入庫(kù)表,如表1所示。值得注意的是,入庫(kù)表和出庫(kù)表實(shí)質(zhì)上也是機(jī)器人任務(wù)的記錄表,由此建立了機(jī)器人運(yùn)動(dòng)和數(shù)據(jù)庫(kù)操作之間的關(guān)聯(lián)。
可看出本系統(tǒng)中智能化的數(shù)據(jù)庫(kù)不僅作為“信息倉(cāng)庫(kù)”對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ),還作為“大腦”實(shí)現(xiàn)動(dòng)作跳轉(zhuǎn)和流程調(diào)度。記錄了當(dāng)前機(jī)器人的動(dòng)作狀態(tài),是自動(dòng)化過(guò)程的參與者和記錄者。
在本系統(tǒng)中,機(jī)器人模塊是冷庫(kù)自動(dòng)化的關(guān)鍵模塊。硬件設(shè)計(jì)方案如圖5所示。
圖5 機(jī)器人模塊硬件示意圖
運(yùn)動(dòng)控制部分主要由GALIL運(yùn)動(dòng)控制卡組成,運(yùn)動(dòng)控制卡通過(guò)串口與通訊轉(zhuǎn)換模塊通信,實(shí)現(xiàn)串口數(shù)據(jù)與CAN報(bào)文數(shù)據(jù)的相互轉(zhuǎn)換,并采用實(shí)時(shí)性強(qiáng)的CAN總線網(wǎng)絡(luò)經(jīng)由通訊轉(zhuǎn)換模塊與上位機(jī)管理層通信??紤]到工藝及位置精度要求,機(jī)器人驅(qū)動(dòng)系統(tǒng)設(shè)計(jì)采用半閉環(huán)伺服控制,表2為機(jī)器人模塊主要硬件索引表。
表1 入庫(kù)表
表2 主要硬件索引表
軟件系統(tǒng)采用LabVIEW平臺(tái)開(kāi)發(fā),使用圖形化的G語(yǔ)言進(jìn)行編程,大大縮短開(kāi)發(fā)周期。為了便于系統(tǒng)在“互聯(lián)網(wǎng)+”的大背景下擴(kuò)展新功能,將系統(tǒng)劃分為數(shù)據(jù)庫(kù)模塊、機(jī)器人模塊、遠(yuǎn)程終端模塊和界面模塊4個(gè)模塊。
每個(gè)模塊都作為一個(gè)獨(dú)立運(yùn)行的線程,并且這種多線程的形式是實(shí)際流程中的客觀需要。但是,涉及數(shù)據(jù)庫(kù)的線程彼此之間互不通訊,而且在運(yùn)行過(guò)程中,不同線程產(chǎn)生的操作數(shù)據(jù)庫(kù)的指令是無(wú)序的,為了保證流程有序執(zhí)行,編程時(shí)采用LabVIEW中“生產(chǎn)者—消費(fèi)者”模型[6],即將其他模塊作為指令的生產(chǎn)者,數(shù)據(jù)庫(kù)模塊作為消費(fèi)者,通過(guò)隊(duì)列作為緩存,使指令在進(jìn)入數(shù)據(jù)庫(kù)線程時(shí)自動(dòng)排序,解決了多線程的指令沖突問(wèn)題。
多源指令串行進(jìn)入數(shù)據(jù)庫(kù)后,數(shù)據(jù)庫(kù)根據(jù)已有的信息和指令的排列順序進(jìn)行判斷,調(diào)用相應(yīng)子VI實(shí)現(xiàn)功能。編程時(shí)采用子VI的方式實(shí)現(xiàn)模塊化,每個(gè)子VI內(nèi)封裝一種對(duì)數(shù)據(jù)庫(kù)的具體操作,如查詢、插入、刪除等。這樣使程序結(jié)構(gòu)清晰,提高了程序的重用性和可擴(kuò)展性。
數(shù)據(jù)庫(kù)使用了在Web應(yīng)用中廣泛使用的MySQL數(shù)據(jù)庫(kù)。建立LabVIEW與MySQL數(shù)據(jù)庫(kù)之間的連接時(shí)采用ODBC數(shù)據(jù)源連接的方式:從LabVIEW自帶的LabSQL工具包中選取ADO Connection Create、ADO Connection Open、SQL Execute和ADO Connection Close,訪問(wèn)數(shù)據(jù)庫(kù)的框架。將標(biāo)準(zhǔn)的SQL語(yǔ)句從SQL Execute輸入端輸入,實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作。
在機(jī)器人模塊中,主要任務(wù)就是將數(shù)據(jù)庫(kù)發(fā)來(lái)的任務(wù)列表轉(zhuǎn)換為下位機(jī)能識(shí)別的機(jī)器語(yǔ)言,并通過(guò)串口通信將任務(wù)逐條發(fā)送至下位機(jī)。
數(shù)據(jù)庫(kù)發(fā)送的任務(wù)列表進(jìn)入機(jī)器人線程中后,首先通過(guò)LabVIEW中函數(shù)->編程->結(jié)構(gòu)->條件結(jié)構(gòu)來(lái)判斷任務(wù)的種類,即入庫(kù)、出庫(kù)、暫停、啟動(dòng)等,之后根據(jù)任務(wù)種類進(jìn)行翻譯,表3為入庫(kù)時(shí)發(fā)送至下位機(jī)的指令格式。其中字節(jié)數(shù)表示除去幀頭的字節(jié)個(gè)數(shù),ID表示CAN地址和電機(jī)地址,16進(jìn)制的命令字0X49表示入庫(kù)“I”,X、Y、Z表示目標(biāo)倉(cāng)位的坐標(biāo),即三個(gè)電機(jī)軸運(yùn)動(dòng)的絕對(duì)坐標(biāo)。
表3 入庫(kù)時(shí)上位機(jī)發(fā)送的通訊格式
串口通信使用LabVIEW中的VISA函數(shù)實(shí)現(xiàn),配置波特率為19200,數(shù)據(jù)位為8,停止位為1,循環(huán)讀取串口數(shù)據(jù)的時(shí)間間隔為100ms。
手機(jī)和無(wú)線網(wǎng)絡(luò)的發(fā)展,使得移動(dòng)終端越來(lái)越便捷,通過(guò)手機(jī)等移動(dòng)終端遠(yuǎn)程監(jiān)控冷庫(kù)已成為企業(yè)的強(qiáng)烈需求[7]。遠(yuǎn)程終端模塊包括由LabVIEW編寫的客戶端以及由PHP編寫的服務(wù)器端。采用了Socket網(wǎng)絡(luò)編程技術(shù)和TCP/IP網(wǎng)絡(luò)通信協(xié)議實(shí)現(xiàn)數(shù)據(jù)通訊。為了實(shí)現(xiàn)遠(yuǎn)程移動(dòng)終端對(duì)冷庫(kù)信息查詢,更新,錄入等功能,利用網(wǎng)絡(luò)端口Socket將操作指令由服務(wù)器端發(fā)送至客戶端線程,再按照指令協(xié)議對(duì)數(shù)據(jù)庫(kù)的相應(yīng)操作,最后將所需數(shù)據(jù)信息打包成規(guī)定格式的字符串再由Socket端口返回遠(yuǎn)程端。同時(shí),將PHP與網(wǎng)頁(yè)前端技術(shù)結(jié)合編寫了用戶注冊(cè)、登錄和操作界面,在微信公眾開(kāi)發(fā)平臺(tái)建立了用于查詢,更新和錄入的服務(wù)公眾號(hào),并為不同用戶提供了不同的操作界面。
根據(jù)功能需求,設(shè)計(jì)了初始化界面、入庫(kù)界面、監(jiān)控界面等多個(gè)人機(jī)交互友好的界面。
編程時(shí)先根據(jù)選項(xiàng)卡控件判斷在哪個(gè)界面上,接著利用LabVIEW中的事件結(jié)構(gòu),通過(guò)鼠標(biāo)操作的不同事件的發(fā)生,實(shí)現(xiàn)對(duì)子界面、數(shù)據(jù)庫(kù)的相應(yīng)操作。
本文提出的智能醫(yī)藥冷庫(kù)信息管理及控制系統(tǒng)已經(jīng)成功應(yīng)用于蘇州市某生物科技公司,實(shí)現(xiàn)了低溫藥品自動(dòng)化存儲(chǔ),解決了企業(yè)管理自動(dòng)化程度低、信息交互不及時(shí)等問(wèn)題。
圖6是冷庫(kù)管理員在手機(jī)微信端的操作界面,冷庫(kù)管理員可以查詢、修改藥品余量、是否過(guò)期等信息,也可以查看由歷史數(shù)據(jù)制作的進(jìn)出藥品量報(bào)表。圖7中(a)圖是系統(tǒng)入庫(kù)界面圖,藥品的入庫(kù)清單中包含了藥品信息,所存放的倉(cāng)位等信息,已經(jīng)入庫(kù)完成的顯示灰色,正在入庫(kù)的顯示綠色,操作員可以對(duì)還沒(méi)有入庫(kù)的項(xiàng)目進(jìn)行修改或刪除。圖7中(b)圖是監(jiān)控平臺(tái),監(jiān)控冷庫(kù)溫濕度、機(jī)器人運(yùn)行和庫(kù)存量等,如果有異常情況,報(bào)警燈亮,同時(shí)會(huì)向遠(yuǎn)程微信端推送或短信向管理員報(bào)警信息。操作員可在此界面中迅速定位異常來(lái)源,并通過(guò)記錄詳細(xì)數(shù)據(jù)的子界面分析故障具體原因。
圖6 冷庫(kù)管理員界面
從圖6和圖7可以看出,該系統(tǒng)將自動(dòng)化冷庫(kù)中的貨品數(shù)據(jù)、環(huán)境數(shù)據(jù)、設(shè)備數(shù)據(jù)都實(shí)時(shí)顯示出來(lái),實(shí)現(xiàn)了信息實(shí)時(shí)交互。當(dāng)冷庫(kù)出現(xiàn)異常時(shí)操作人員可以根據(jù)各項(xiàng)數(shù)據(jù)及時(shí)定位故障點(diǎn),保障冷庫(kù)藥品的安全。
本文針對(duì)醫(yī)藥冷庫(kù)的實(shí)際工作需求,設(shè)計(jì)完成了一套以數(shù)據(jù)庫(kù)為核心的智能醫(yī)藥冷庫(kù)管控系統(tǒng),該系統(tǒng)實(shí)現(xiàn)了對(duì)龐大冷庫(kù)信息的管理、對(duì)機(jī)器人運(yùn)送藥品的自動(dòng)化控制,以及通過(guò)瀏覽器或微信平臺(tái)對(duì)冷庫(kù)狀態(tài)的監(jiān)控。系統(tǒng)簡(jiǎn)潔易操作,穩(wěn)定性強(qiáng),在企業(yè)冷庫(kù)管理中能發(fā)揮巨大作用。蘇州市某生物科技公司引入此系統(tǒng)后,無(wú)需操作人員進(jìn)入冷庫(kù),藥品平均入、出庫(kù)時(shí)間比之前大大縮短,故障診斷的準(zhǔn)確度也大幅提升。并且,企業(yè)管理人員可以通過(guò)互聯(lián)網(wǎng)在遠(yuǎn)程端看到冷庫(kù)相關(guān)數(shù)據(jù)的統(tǒng)計(jì)和分析,為企業(yè)管理增加了智慧元素,提高了企業(yè)競(jìng)爭(zhēng)力。
圖7 系統(tǒng)操作界面
[1]陳軍慧.醫(yī)藥冷鏈物流中心的布局規(guī)劃及信息平臺(tái)構(gòu)建[D].武漢理工大學(xué),2013.
[2]薛明.淺析自動(dòng)化立體倉(cāng)庫(kù)的應(yīng)用及發(fā)展[J].物流技術(shù),2014(2):47-49.
[3]饒忠煒,邵揚(yáng),馬杰,等.智慧車間信息感知與分析系統(tǒng)[J].現(xiàn)代制造工程,2017(5):22-27.
[4]王雄,楊瑞峰,郭晨霞,等.基于ZigBee無(wú)線環(huán)境監(jiān)測(cè)網(wǎng)絡(luò)系統(tǒng)設(shè)計(jì)[J].科技通報(bào),2017,33(4):144-147.
[5]梁成.天津市第三中心醫(yī)院藥品管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].電子科技大學(xué),2014.
[6]吳繼華.基于CPS的機(jī)床監(jiān)控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].桂林電子科技大學(xué),2015.
[7]趙宏軍,王嘯,盛志宇.移動(dòng)終端智能工廠建設(shè)框架構(gòu)想[J].制造業(yè)自動(dòng)化,2017,39(6):16-18.