弓 靖,栗俊艷,梁晨艷,趙 磊
(中國(guó)航天科技集團(tuán)第十六研究所,西安710100)
一種基于激光測(cè)距的自動(dòng)化藥房庫(kù)存盤(pán)點(diǎn)方法設(shè)計(jì)
弓 靖,栗俊艷,梁晨艷,趙 磊
(中國(guó)航天科技集團(tuán)第十六研究所,西安710100)
針對(duì)自動(dòng)化藥房?jī)?chǔ)藥柜的藥品快速盤(pán)點(diǎn)問(wèn)題,設(shè)計(jì)了一種將激光測(cè)距傳感器固定安裝在機(jī)械手上,通過(guò)激光測(cè)距技術(shù)計(jì)算藥盒數(shù)量的方法。采用貝加萊控制系統(tǒng)作為執(zhí)行機(jī)構(gòu),上位機(jī)軟件采用C#作為開(kāi)發(fā)平臺(tái),二者采用MODBUS協(xié)議通信進(jìn)行實(shí)時(shí)信息。上位機(jī)采用等代價(jià)搜索法對(duì)盤(pán)點(diǎn)儲(chǔ)位進(jìn)行路徑優(yōu)化,通過(guò)RS485通信獲取激光測(cè)距返回?cái)?shù)值來(lái)計(jì)算儲(chǔ)藥位藥盒數(shù)量。實(shí)際運(yùn)行結(jié)果表明,該系統(tǒng)可以實(shí)現(xiàn)自動(dòng)化藥房的快速盤(pán)點(diǎn)問(wèn)題,并且可靠性高,大大降低了藥房盤(pán)點(diǎn)的勞動(dòng)強(qiáng)度。
自動(dòng)化藥房;庫(kù)存盤(pán)點(diǎn);激光測(cè)距;ModBus通信;等代價(jià)搜索
近年來(lái),醫(yī)院藥房堅(jiān)持以患者為中心,藥師的工作內(nèi)容從傳統(tǒng)的操作型向知識(shí)技術(shù)服務(wù)型轉(zhuǎn)變[1-2]。傳統(tǒng)的盤(pán)點(diǎn)統(tǒng)計(jì)由于醫(yī)院藥房藥品的種類、數(shù)量較多,出、入庫(kù)頻繁,藥房工作人員都將面對(duì)成千上萬(wàn)的處方單和出、入庫(kù)單據(jù),工作量大,出錯(cuò)率高,信息化程度不高。
科技進(jìn)步使自動(dòng)化控制技術(shù)在多個(gè)領(lǐng)域廣泛應(yīng)用。20世紀(jì)90年代初,隨著現(xiàn)代藥品管理思想的推廣,諸多發(fā)達(dá)國(guó)家開(kāi)始了關(guān)于藥房自動(dòng)化建設(shè)的研究[3],自動(dòng)化藥房已經(jīng)成為醫(yī)院藥房發(fā)展的必然趨勢(shì)[4],藥品盤(pán)點(diǎn)作為醫(yī)院藥房藥品管理的一個(gè)重要環(huán)節(jié)直接反應(yīng)了藥品的管理質(zhì)量[5]。因此,采用自動(dòng)的方式進(jìn)行盤(pán)點(diǎn),使藥師從繁雜的體力勞動(dòng)解放出來(lái),投入到對(duì)門(mén)診和住院患者的用藥指導(dǎo)和監(jiān)督上,具有重要意義。
系統(tǒng)結(jié)構(gòu)如圖1所示,結(jié)構(gòu)部分由儲(chǔ)藥柜、機(jī)械手、激光測(cè)距儀構(gòu)成。儲(chǔ)藥柜由藥槽底板、隔板、傳動(dòng)組件組成,藥槽底板水平放置在儲(chǔ)藥裝置內(nèi)部,多個(gè)隔板平行的插在藥槽底板上,形成多個(gè)寬度可調(diào)節(jié)的藥槽。機(jī)械手設(shè)計(jì)為二軸機(jī)械手及左右上藥機(jī)構(gòu),在左右上藥機(jī)構(gòu)各安裝一只激光測(cè)距儀。機(jī)械手X向、Y向分別采用800W和400W貝加萊伺服電機(jī)控制,定位精度高于0.5mm。機(jī)械手和儲(chǔ)藥柜的位置固聯(lián)起來(lái),保證機(jī)械手或儲(chǔ)藥柜的移動(dòng)不導(dǎo)致相對(duì)位置的改變。激光測(cè)距儀固定安裝在機(jī)械手上,盤(pán)點(diǎn)過(guò)程中激光測(cè)距儀隨機(jī)械手移動(dòng)到達(dá)目標(biāo)儲(chǔ)位,測(cè)量固定位置(安裝位置)到藥盒的位置。
圖1 系統(tǒng)結(jié)構(gòu)圖Fig.1 Diagram of system structure
圖2 控制系統(tǒng)結(jié)構(gòu)圖Fig.2 Structure diagram of control system
自動(dòng)化藥房控制系統(tǒng)結(jié)構(gòu)如圖2所示,控制層采用貝加萊控制系統(tǒng)。貝加萊可編程計(jì)算機(jī)控制器PCC是一種面向運(yùn)動(dòng)控制、過(guò)程控制和網(wǎng)絡(luò)控制的專用控制系統(tǒng),是集標(biāo)準(zhǔn)PLC、數(shù)控系統(tǒng)和工業(yè)計(jì)算機(jī)的性能特點(diǎn)與一體的智能控制器,其模塊化的硬件和軟件結(jié)構(gòu)可根據(jù)設(shè)計(jì)者的控制需求組合成具有廠家應(yīng)用特點(diǎn)的專用控制系統(tǒng)??刂葡到y(tǒng)軟件開(kāi)發(fā)采用Automation Studio平臺(tái),CPU采用X20CP1583,通過(guò)POWERLINK實(shí)時(shí)以太網(wǎng)總線與伺服驅(qū)動(dòng)器進(jìn)行數(shù)據(jù)交換。
上位機(jī)開(kāi)發(fā)主要分為人機(jī)交互界面和數(shù)據(jù)庫(kù)設(shè)計(jì),數(shù)據(jù)庫(kù)采用SQL 2008建立[6],用來(lái)存儲(chǔ)儲(chǔ)藥柜中每個(gè)儲(chǔ)位信息、藥品信息、位置信息等。人機(jī)交互界面采用C#軟件開(kāi)發(fā)[7],主要實(shí)現(xiàn)了整個(gè)系統(tǒng)的后臺(tái)管理,并實(shí)現(xiàn)了與PLC的通信以及激光測(cè)距傳感器的通信;與PLC控制系統(tǒng)采用ModBus TCP/IP協(xié)議建立實(shí)時(shí)通信,傳遞工作指令,并接受控制系統(tǒng)反饋。
上位機(jī)軟件系統(tǒng)的流程圖如圖3所示,自動(dòng)化藥房管理系統(tǒng)登錄后,建立與PLC控制系統(tǒng)的實(shí)時(shí)通信,實(shí)時(shí)傳遞上位機(jī)的盤(pán)點(diǎn)指令信息以及獲取機(jī)械手的狀態(tài)信息。在自動(dòng)化藥房設(shè)計(jì)中,設(shè)計(jì)全盤(pán)點(diǎn)和藥品盤(pán)點(diǎn)2種方式。全盤(pán)點(diǎn)即所有儲(chǔ)位的盤(pán)點(diǎn)方式;藥品盤(pán)點(diǎn)顧名思義按照藥品進(jìn)行盤(pán)點(diǎn),操作人員在人機(jī)操作界面上選擇需要盤(pán)點(diǎn)的藥品名稱,上位機(jī)會(huì)自動(dòng)根據(jù)所選藥品在數(shù)據(jù)庫(kù)中篩選盤(pán)點(diǎn)的儲(chǔ)位。當(dāng)上位機(jī)發(fā)送盤(pán)點(diǎn)指令,上位機(jī)對(duì)指令進(jìn)行分析,規(guī)劃盤(pán)點(diǎn)路徑。在機(jī)械手空閑狀態(tài)下到達(dá)規(guī)劃第一個(gè)儲(chǔ)位,程序發(fā)送測(cè)距指令,獲取有效數(shù)據(jù)后根據(jù)距離和該儲(chǔ)位的藥盒寬度信息計(jì)算藥盒數(shù)量并更新數(shù)據(jù)庫(kù)中藥品盤(pán)點(diǎn)數(shù)量。
軟件系統(tǒng)的關(guān)鍵技術(shù)主要包括激光測(cè)距、實(shí)時(shí)通信模塊和測(cè)距路徑規(guī)劃模塊。
2.1 激光測(cè)距傳感器通信
圖3 軟件邏輯流程圖Fig.3 Flowchart of software logic
激光測(cè)距儀采用型號(hào)為S85-MH-5-Y03,精度為0.1mm,量程范圍為20mm~119200mm,采用RS485串口通信編程。在工業(yè)控制中,SerialPort類廣泛地應(yīng)用于串口通信程序的設(shè)計(jì)中。在利用SerialPort類進(jìn)行串口編程時(shí),首先在程序代碼起始位置加入包含SerialPort類的命名空間Using System.IO.Ports,然后定義SerialPort類實(shí)例,設(shè)置通信端口號(hào),波特率、數(shù)據(jù)位、停止位和校驗(yàn)位分別為115200、8、1、None。采用應(yīng)答式與傳感器進(jìn)行對(duì)話,發(fā)送數(shù)據(jù)為5位,命令中第3位為節(jié)點(diǎn)號(hào),在傳感器界面上設(shè)置節(jié)點(diǎn)號(hào)為“0”,發(fā)送數(shù)據(jù)格式如表1所示。
表1 數(shù)據(jù)發(fā)送格式Table 1 Data transmission format
返回?cái)?shù)據(jù)格式為3個(gè)字節(jié)的一串?dāng)?shù)據(jù),數(shù)據(jù)格式如圖4所示。
圖4 數(shù)據(jù)返回格式Fig.4 Data return format
每個(gè)字節(jié)的前2位表示數(shù)據(jù)開(kāi)始,當(dāng)接受數(shù)據(jù)為3個(gè)字節(jié),并且這3個(gè)字節(jié)起始兩位分別為01、10和11,則認(rèn)為數(shù)據(jù)有效。測(cè)距的數(shù)值為如圖4所示的剩余16位組成的二進(jìn)制數(shù),“10 101101 111001”轉(zhuǎn)換為十進(jìn)制為11129(單位:mm)。
2.2 PLC與上位機(jī)實(shí)時(shí)通信
軟件系統(tǒng)除了提供人機(jī)操作界面,還兼顧與下位機(jī)實(shí)時(shí)通信的功能,系統(tǒng)采用多線程技術(shù)實(shí)現(xiàn)窗體線程與通信線程同時(shí)運(yùn)行。操作系統(tǒng)為每個(gè)運(yùn)行線程安排一定的CPU時(shí)間,通過(guò)一種循環(huán)的方式為線程提供時(shí)間片,線程在自己的時(shí)間內(nèi)運(yùn)行。因?yàn)闀r(shí)間片相當(dāng)短,因此感覺(jué)多個(gè)線程同時(shí)運(yùn)行[8]。System.Threading命名空間提供一些可以進(jìn)行多線程編程的類和接口,在用戶登錄后系統(tǒng)啟動(dòng)通信線程,創(chuàng)建并啟動(dòng)線程的代碼如下:
CommuThread為線程的入口函數(shù),在該函數(shù)中實(shí)現(xiàn)PLC與上位機(jī)的實(shí)時(shí)通信,包括往PLC對(duì)應(yīng)地址寫(xiě)上位機(jī)信號(hào)以及讀取相應(yīng)地址的信號(hào)。在該部分設(shè)計(jì)中,定義全局公有數(shù)組arr_read[400]和arr_write[500]分別代表讀數(shù)據(jù)數(shù)組和寫(xiě)數(shù)據(jù)數(shù)組,隨著線程的運(yùn)行以非常短的周期循環(huán)往PLC讀寫(xiě)數(shù)據(jù)。定義401~405為寫(xiě)地址,寫(xiě)的內(nèi)容為激光傳感器到達(dá)儲(chǔ)位對(duì)應(yīng)機(jī)械手的X坐標(biāo)、Y坐標(biāo)以及用左右哪個(gè)上藥機(jī)構(gòu)到達(dá);定義411~412為讀地址,讀的內(nèi)容為機(jī)械手到位信號(hào)和機(jī)械手反饋X坐標(biāo)、Y坐標(biāo)以及反饋的上藥機(jī)械手號(hào),該部分獨(dú)立于窗體線程單獨(dú)運(yùn)行。在窗體程序中,需要通信只需對(duì)數(shù)組arr_read[400]和arr_write[500]進(jìn)行操作即可,例如定義讀取機(jī)械手到位信號(hào)狀態(tài)地址為501,直接獲取arr_read[501]的值即獲取機(jī)械手是否到位。
2.3 測(cè)距路徑規(guī)劃模塊
在盤(pán)點(diǎn)時(shí),上位機(jī)根據(jù)用戶選擇的盤(pán)點(diǎn)方式對(duì)篩選出的儲(chǔ)位進(jìn)行排列形成鏈表,以便程序后續(xù)依次發(fā)送給PLC。在全盤(pán)點(diǎn)模式下,采用S形路線進(jìn)行盤(pán)點(diǎn)。在藥品盤(pán)點(diǎn)模式下,由于所選藥品所在儲(chǔ)位為非連續(xù)的、沒(méi)有規(guī)則的,因此需要給出一種排列機(jī)制使得機(jī)械手不走彎路,快速完成盤(pán)點(diǎn)。設(shè)計(jì)將儲(chǔ)藥柜背面即上藥一面的左下角作為坐標(biāo)原點(diǎn),向右X向遞增,向上Y向遞增,每個(gè)儲(chǔ)位的坐標(biāo)保存在數(shù)據(jù)庫(kù)中。盤(pán)點(diǎn)時(shí)從機(jī)械手零位出發(fā),遍歷所有符合要求的儲(chǔ)位,最終回到機(jī)械手零位。假設(shè)機(jī)械手在運(yùn)行過(guò)程中運(yùn)動(dòng)速度恒定,忽略升降速部分。因此使得盤(pán)點(diǎn)效率最優(yōu)的問(wèn)題歸結(jié)為從機(jī)械手零位出發(fā),連接所有盤(pán)點(diǎn)儲(chǔ)位的最短路徑問(wèn)題。
該問(wèn)題同著名的“旅行商”問(wèn)題類似,都是從起點(diǎn)出發(fā),經(jīng)過(guò)每個(gè)結(jié)點(diǎn)恰好一次,最終返回起點(diǎn)。目前為止沒(méi)有有效的計(jì)算旅行商問(wèn)題的有效算法,寬度優(yōu)先搜索算法是解決這類問(wèn)題通用的最直接的算法。該算法羅列所有種路徑的可能,N個(gè)儲(chǔ)位就會(huì)有N種路徑,這是一種費(fèi)時(shí)的算法,并不是一種優(yōu)秀的算法。本文采用等代價(jià)搜索法來(lái)確定一條最短路徑,該算法對(duì)寬度優(yōu)先搜索進(jìn)行了部分優(yōu)化,用來(lái)解決尋找從起始節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)具有最小代價(jià)路徑問(wèn)題,算法步驟如下:
假設(shè)盤(pán)點(diǎn)有A、B、C、D、E這5個(gè)儲(chǔ)位,5個(gè)儲(chǔ)位間兩兩距離如圖5(a)圖所示,圖5(b)~圖5(e)為等代價(jià)搜索法構(gòu)造最優(yōu)路徑的過(guò)程。
圖5 等代價(jià)搜索法構(gòu)造最優(yōu)路徑過(guò)程圖Fig.5 Search method of uniform-cost search process
PCC的系統(tǒng)軟件采用分時(shí)多任務(wù)機(jī)制構(gòu)筑應(yīng)用軟件的運(yùn)行平臺(tái),應(yīng)用程序的運(yùn)行周期和程序長(zhǎng)短無(wú)關(guān),僅由操作系統(tǒng)的循環(huán)周期決定。將應(yīng)用程序的掃描周期同真正外部的控制周期區(qū)分開(kāi)來(lái),滿足了真正實(shí)時(shí)控制的需求。PCC的應(yīng)用程序由多任務(wù)模塊構(gòu)成,給項(xiàng)目應(yīng)用軟件的開(kāi)發(fā)帶來(lái)了很大便利。
程序設(shè)計(jì)通信任務(wù)模塊、軸控制任務(wù)模塊以及盤(pán)點(diǎn)任務(wù)模塊來(lái)完成盤(pán)點(diǎn)功能控制,這些任務(wù)以2ms的周期進(jìn)行不斷掃描。在通信模塊中,程序?qū)⑸衔粰C(jī)寫(xiě)給PLC的信息批次拷貝到連續(xù)地址段中,同時(shí)將PLC反饋給上位機(jī)的數(shù)據(jù)寫(xiě)到相應(yīng)地址,以便上位機(jī)實(shí)時(shí)讀取;軸控制程序主要調(diào)用貝加萊ACP10功能塊實(shí)現(xiàn)電機(jī)運(yùn)動(dòng)控制;盤(pán)點(diǎn)任務(wù)的控制邏輯如圖6所示。在系統(tǒng)上電后,程序?qū)Ω鬏S進(jìn)行軸網(wǎng)絡(luò)初始化,并且自動(dòng)回零,回零完畢后在零位等待命令。當(dāng)上位機(jī)發(fā)送盤(pán)點(diǎn)命令,程序在檢測(cè)信號(hào)正確的前提下設(shè)置軸參數(shù),設(shè)置運(yùn)動(dòng)方式為絕對(duì)位置方式,根據(jù)上位機(jī)信號(hào)設(shè)置絕對(duì)位置、速度、加速度、減速度,通過(guò)軸控制程序驅(qū)動(dòng)電機(jī)到目標(biāo)位置。
圖6 PLC控制邏輯流程圖Fig.6 Flowchart of PLC control logic
如表2所示,在軟件中查詢某藥品有6個(gè)存儲(chǔ)貨位。機(jī)械手從零點(diǎn)出發(fā),到達(dá)每一個(gè)貨位的順序按照等代價(jià)搜索法排序。本項(xiàng)目設(shè)計(jì)的激光測(cè)距儀安裝位置到藥槽最前端為1462mm,用于計(jì)算藥盒總長(zhǎng)度的數(shù)值為1462減去測(cè)量值。例如測(cè)距為498mm,那么存儲(chǔ)藥盒的總長(zhǎng)度為964mm,每個(gè)藥盒的長(zhǎng)度為80mm,可計(jì)算出在該貨位藥槽的藥盒為12個(gè)。
經(jīng)過(guò)多次人工盤(pán)點(diǎn)與激光盤(pán)點(diǎn)進(jìn)行比較,盤(pán)點(diǎn)差異小于0.5%,證明該盤(pán)點(diǎn)方法能夠有效地減少人力。
醫(yī)院自動(dòng)化藥房的建設(shè)主要是為了改變藥師的勞動(dòng)模式,提高醫(yī)院的藥品管理水平。本文在自動(dòng)化藥房快速發(fā)藥設(shè)備基礎(chǔ)上結(jié)合激光測(cè)距技術(shù)開(kāi)發(fā)了盤(pán)點(diǎn)模塊,重點(diǎn)研究了激光測(cè)距傳感器的通信、實(shí)時(shí)通信模塊建立以及盤(pán)點(diǎn)路徑優(yōu)化問(wèn)題,成功實(shí)現(xiàn)了儲(chǔ)藥柜藥品的自動(dòng)盤(pán)點(diǎn)功能。項(xiàng)目實(shí)時(shí)可以減輕藥師盤(pán)點(diǎn)的勞動(dòng)強(qiáng)度,并且能夠提高醫(yī)院的藥品管理質(zhì)量。
表2 實(shí)驗(yàn)數(shù)據(jù)表Table 2 Sheet of experimental data
[1]張石革,馬國(guó)輝.論藥師職責(zé)轉(zhuǎn)型的時(shí)代使命與其必然性[J].中國(guó)藥房,2006,17(2):84.ZHANG Shi-ge,MA Guo-hui.Responsibility transformation of pharmacists and its necessity[J].China Pharmacy,2006,17(2):84.
[2]汪萌,白少華,李菁.自動(dòng)化建設(shè)對(duì)醫(yī)院藥房的發(fā)展影響[J].中國(guó)藥業(yè),2013,22(2):51.WANG Meng,BAI Shao-hua,LI Qing.The influence of automation construction on the development of hospital pharmacy[J].China Pharmaceuticals,2013,22(2):51.
[3]Subramanyan G S,Yokoe D S,Sharnprapai S,et al.Usingautomated pharmacy records to assess the management of tuberculosis[J].Emerging Infectious Diseases,1999,5(6):788-791.
[4]趙陶麗.藥房自動(dòng)化是醫(yī)院藥房發(fā)展的必然趨勢(shì)[J].首都醫(yī)藥,2009,16(24):31.ZHAO Tao-li.Pharmacy automation is the inevitable trend of the development of hospital pharmacy[J].Capital Medicine,2009,16(24):31.
[5]彭海瑩,季波.我院門(mén)診西藥房藥品盤(pán)點(diǎn)方法的實(shí)施及討論[J].中國(guó)藥房,2004,15(12):728-729.PENG Hai-ying,JI Bo.Implementation and discussion of drug inventory method in western hospital of outpatient department[J].China Pharmacy,2004,15(12):728-729.
[6]明日科技.SQL Server從入門(mén)到精通[M].北京:清華大學(xué)出版社,2012.StarQ.SQL Server from entry to proficiency[M].Beijing:Tsinghua University Press,2012.
[7]王小科,徐薇.C#從入門(mén)到精通[M].北京:清華大學(xué)出版社,2011.WANG Xiao-ke,XU Wei.C#from entry to proficiency[M].Beijing:Tsinghua University Press,2011.
[8]孫鑫,余安萍.VC++深入研究[M].北京:電子工業(yè)出版社,2006.SUN Xin,YU An-ping.VC++depth study[M].Beijing:Electronics Industry Press,2006.
Design of Automated Pharmacy Stock Inventory Method Based on Laser Ranging
GONG Jing,LI Jun-yan,LIANG Chen-yan,ZHAO Lei
(The 16thInstitute,China Aerospace Science and Technology Corporation,Xi'an 710100)
According to the problem of speedy stocktaking of drug which stored in cabinet of automated pharmacy,a kind of method which counts by laser ranging sensor fixed installation on mechanical hand is designed.The PC software adopts C#as development platform,and B&R as control system which communicates with PC by MODBUS communicates protocol.The PC optimizes the path of counting by a method of uniform cost search,and gets counting number by laser ranging sensor which communicates with PC by RS485 communication protocol.The practical running results show that the system with high reliability can realize rapid automated pharmacy inventory problems,and reduce the labor intensity of the pharmacy inventory greatly.
automated pharmacy;stock inventory;laser ranging;ModBus communication;uniform cost search
TP273.3
A
1674-5558(2017)01-01299
10.3969/j.issn.1674-5558.2017.03.004
弓靖,女,碩士,工程師,研究方向?yàn)樽詣?dòng)化設(shè)備上位機(jī)軟件。
2016-08-04