弓 靖,栗俊艷,梁晨艷,趙 磊
(中國航天科技集團第十六研究所,西安710100)
一種基于激光測距的自動化藥房庫存盤點方法設計
弓 靖,栗俊艷,梁晨艷,趙 磊
(中國航天科技集團第十六研究所,西安710100)
針對自動化藥房儲藥柜的藥品快速盤點問題,設計了一種將激光測距傳感器固定安裝在機械手上,通過激光測距技術計算藥盒數量的方法。采用貝加萊控制系統作為執行機構,上位機軟件采用C#作為開發平臺,二者采用MODBUS協議通信進行實時信息。上位機采用等代價搜索法對盤點儲位進行路徑優化,通過RS485通信獲取激光測距返回數值來計算儲藥位藥盒數量。實際運行結果表明,該系統可以實現自動化藥房的快速盤點問題,并且可靠性高,大大降低了藥房盤點的勞動強度。
自動化藥房;庫存盤點;激光測距;ModBus通信;等代價搜索
近年來,醫院藥房堅持以患者為中心,藥師的工作內容從傳統的操作型向知識技術服務型轉變[1-2]。傳統的盤點統計由于醫院藥房藥品的種類、數量較多,出、入庫頻繁,藥房工作人員都將面對成千上萬的處方單和出、入庫單據,工作量大,出錯率高,信息化程度不高。
科技進步使自動化控制技術在多個領域廣泛應用。20世紀90年代初,隨著現代藥品管理思想的推廣,諸多發達國家開始了關于藥房自動化建設的研究[3],自動化藥房已經成為醫院藥房發展的必然趨勢[4],藥品盤點作為醫院藥房藥品管理的一個重要環節直接反應了藥品的管理質量[5]。因此,采用自動的方式進行盤點,使藥師從繁雜的體力勞動解放出來,投入到對門診和住院患者的用藥指導和監督上,具有重要意義。
系統結構如圖1所示,結構部分由儲藥柜、機械手、激光測距儀構成。儲藥柜由藥槽底板、隔板、傳動組件組成,藥槽底板水平放置在儲藥裝置內部,多個隔板平行的插在藥槽底板上,形成多個寬度可調節的藥槽。機械手設計為二軸機械手及左右上藥機構,在左右上藥機構各安裝一只激光測距儀。機械手X向、Y向分別采用800W和400W貝加萊伺服電機控制,定位精度高于0.5mm。機械手和儲藥柜的位置固聯起來,保證機械手或儲藥柜的移動不導致相對位置的改變。激光測距儀固定安裝在機械手上,盤點過程中激光測距儀隨機械手移動到達目標儲位,測量固定位置(安裝位置)到藥盒的位置。

圖1 系統結構圖Fig.1 Diagram of system structure

圖2 控制系統結構圖Fig.2 Structure diagram of control system
自動化藥房控制系統結構如圖2所示,控制層采用貝加萊控制系統。貝加萊可編程計算機控制器PCC是一種面向運動控制、過程控制和網絡控制的專用控制系統,是集標準PLC、數控系統和工業計算機的性能特點與一體的智能控制器,其模塊化的硬件和軟件結構可根據設計者的控制需求組合成具有廠家應用特點的專用控制系統。控制系統軟件開發采用Automation Studio平臺,CPU采用X20CP1583,通過POWERLINK實時以太網總線與伺服驅動器進行數據交換。
上位機開發主要分為人機交互界面和數據庫設計,數據庫采用SQL 2008建立[6],用來存儲儲藥柜中每個儲位信息、藥品信息、位置信息等。人機交互界面采用C#軟件開發[7],主要實現了整個系統的后臺管理,并實現了與PLC的通信以及激光測距傳感器的通信;與PLC控制系統采用ModBus TCP/IP協議建立實時通信,傳遞工作指令,并接受控制系統反饋。
上位機軟件系統的流程圖如圖3所示,自動化藥房管理系統登錄后,建立與PLC控制系統的實時通信,實時傳遞上位機的盤點指令信息以及獲取機械手的狀態信息。在自動化藥房設計中,設計全盤點和藥品盤點2種方式。全盤點即所有儲位的盤點方式;藥品盤點顧名思義按照藥品進行盤點,操作人員在人機操作界面上選擇需要盤點的藥品名稱,上位機會自動根據所選藥品在數據庫中篩選盤點的儲位。當上位機發送盤點指令,上位機對指令進行分析,規劃盤點路徑。在機械手空閑狀態下到達規劃第一個儲位,程序發送測距指令,獲取有效數據后根據距離和該儲位的藥盒寬度信息計算藥盒數量并更新數據庫中藥品盤點數量。
軟件系統的關鍵技術主要包括激光測距、實時通信模塊和測距路徑規劃模塊。
2.1 激光測距傳感器通信

圖3 軟件邏輯流程圖Fig.3 Flowchart of software logic
激光測距儀采用型號為S85-MH-5-Y03,精度為0.1mm,量程范圍為20mm~119200mm,采用RS485串口通信編程。在工業控制中,SerialPort類廣泛地應用于串口通信程序的設計中。在利用SerialPort類進行串口編程時,首先在程序代碼起始位置加入包含SerialPort類的命名空間Using System.IO.Ports,然后定義SerialPort類實例,設置通信端口號,波特率、數據位、停止位和校驗位分別為115200、8、1、None。采用應答式與傳感器進行對話,發送數據為5位,命令中第3位為節點號,在傳感器界面上設置節點號為“0”,發送數據格式如表1所示。

表1 數據發送格式Table 1 Data transmission format
返回數據格式為3個字節的一串數據,數據格式如圖4所示。

圖4 數據返回格式Fig.4 Data return format
每個字節的前2位表示數據開始,當接受數據為3個字節,并且這3個字節起始兩位分別為01、10和11,則認為數據有效。測距的數值為如圖4所示的剩余16位組成的二進制數,“10 101101 111001”轉換為十進制為11129(單位:mm)。
2.2 PLC與上位機實時通信
軟件系統除了提供人機操作界面,還兼顧與下位機實時通信的功能,系統采用多線程技術實現窗體線程與通信線程同時運行。操作系統為每個運行線程安排一定的CPU時間,通過一種循環的方式為線程提供時間片,線程在自己的時間內運行。因為時間片相當短,因此感覺多個線程同時運行[8]。System.Threading命名空間提供一些可以進行多線程編程的類和接口,在用戶登錄后系統啟動通信線程,創建并啟動線程的代碼如下:

CommuThread為線程的入口函數,在該函數中實現PLC與上位機的實時通信,包括往PLC對應地址寫上位機信號以及讀取相應地址的信號。在該部分設計中,定義全局公有數組arr_read[400]和arr_write[500]分別代表讀數據數組和寫數據數組,隨著線程的運行以非常短的周期循環往PLC讀寫數據。定義401~405為寫地址,寫的內容為激光傳感器到達儲位對應機械手的X坐標、Y坐標以及用左右哪個上藥機構到達;定義411~412為讀地址,讀的內容為機械手到位信號和機械手反饋X坐標、Y坐標以及反饋的上藥機械手號,該部分獨立于窗體線程單獨運行。在窗體程序中,需要通信只需對數組arr_read[400]和arr_write[500]進行操作即可,例如定義讀取機械手到位信號狀態地址為501,直接獲取arr_read[501]的值即獲取機械手是否到位。
2.3 測距路徑規劃模塊
在盤點時,上位機根據用戶選擇的盤點方式對篩選出的儲位進行排列形成鏈表,以便程序后續依次發送給PLC。在全盤點模式下,采用S形路線進行盤點。在藥品盤點模式下,由于所選藥品所在儲位為非連續的、沒有規則的,因此需要給出一種排列機制使得機械手不走彎路,快速完成盤點。設計將儲藥柜背面即上藥一面的左下角作為坐標原點,向右X向遞增,向上Y向遞增,每個儲位的坐標保存在數據庫中。盤點時從機械手零位出發,遍歷所有符合要求的儲位,最終回到機械手零位。假設機械手在運行過程中運動速度恒定,忽略升降速部分。因此使得盤點效率最優的問題歸結為從機械手零位出發,連接所有盤點儲位的最短路徑問題。
該問題同著名的“旅行商”問題類似,都是從起點出發,經過每個結點恰好一次,最終返回起點。目前為止沒有有效的計算旅行商問題的有效算法,寬度優先搜索算法是解決這類問題通用的最直接的算法。該算法羅列所有種路徑的可能,N個儲位就會有N種路徑,這是一種費時的算法,并不是一種優秀的算法。本文采用等代價搜索法來確定一條最短路徑,該算法對寬度優先搜索進行了部分優化,用來解決尋找從起始節點到目標節點具有最小代價路徑問題,算法步驟如下:

假設盤點有A、B、C、D、E這5個儲位,5個儲位間兩兩距離如圖5(a)圖所示,圖5(b)~圖5(e)為等代價搜索法構造最優路徑的過程。

圖5 等代價搜索法構造最優路徑過程圖Fig.5 Search method of uniform-cost search process

PCC的系統軟件采用分時多任務機制構筑應用軟件的運行平臺,應用程序的運行周期和程序長短無關,僅由操作系統的循環周期決定。將應用程序的掃描周期同真正外部的控制周期區分開來,滿足了真正實時控制的需求。PCC的應用程序由多任務模塊構成,給項目應用軟件的開發帶來了很大便利。
程序設計通信任務模塊、軸控制任務模塊以及盤點任務模塊來完成盤點功能控制,這些任務以2ms的周期進行不斷掃描。在通信模塊中,程序將上位機寫給PLC的信息批次拷貝到連續地址段中,同時將PLC反饋給上位機的數據寫到相應地址,以便上位機實時讀取;軸控制程序主要調用貝加萊ACP10功能塊實現電機運動控制;盤點任務的控制邏輯如圖6所示。在系統上電后,程序對各軸進行軸網絡初始化,并且自動回零,回零完畢后在零位等待命令。當上位機發送盤點命令,程序在檢測信號正確的前提下設置軸參數,設置運動方式為絕對位置方式,根據上位機信號設置絕對位置、速度、加速度、減速度,通過軸控制程序驅動電機到目標位置。

圖6 PLC控制邏輯流程圖Fig.6 Flowchart of PLC control logic
如表2所示,在軟件中查詢某藥品有6個存儲貨位。機械手從零點出發,到達每一個貨位的順序按照等代價搜索法排序。本項目設計的激光測距儀安裝位置到藥槽最前端為1462mm,用于計算藥盒總長度的數值為1462減去測量值。例如測距為498mm,那么存儲藥盒的總長度為964mm,每個藥盒的長度為80mm,可計算出在該貨位藥槽的藥盒為12個。
經過多次人工盤點與激光盤點進行比較,盤點差異小于0.5%,證明該盤點方法能夠有效地減少人力。
醫院自動化藥房的建設主要是為了改變藥師的勞動模式,提高醫院的藥品管理水平。本文在自動化藥房快速發藥設備基礎上結合激光測距技術開發了盤點模塊,重點研究了激光測距傳感器的通信、實時通信模塊建立以及盤點路徑優化問題,成功實現了儲藥柜藥品的自動盤點功能。項目實時可以減輕藥師盤點的勞動強度,并且能夠提高醫院的藥品管理質量。

表2 實驗數據表Table 2 Sheet of experimental data
[1]張石革,馬國輝.論藥師職責轉型的時代使命與其必然性[J].中國藥房,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]汪萌,白少華,李菁.自動化建設對醫院藥房的發展影響[J].中國藥業,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]趙陶麗.藥房自動化是醫院藥房發展的必然趨勢[J].首都醫藥,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]彭海瑩,季波.我院門診西藥房藥品盤點方法的實施及討論[J].中國藥房,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].北京:清華大學出版社,2012.StarQ.SQL Server from entry to proficiency[M].Beijing:Tsinghua University Press,2012.
[7]王小科,徐薇.C#從入門到精通[M].北京:清華大學出版社,2011.WANG Xiao-ke,XU Wei.C#from entry to proficiency[M].Beijing:Tsinghua University Press,2011.
[8]孫鑫,余安萍.VC++深入研究[M].北京:電子工業出版社,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
弓靖,女,碩士,工程師,研究方向為自動化設備上位機軟件。
2016-08-04