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