摘? 要: 介紹了新型中藥智能配藥系統(tǒng)的硬件和軟件控制技術(shù)。硬件部分采用OMRON的PLC和基于CPLD的電路板進(jìn)行控制,軟件部分則通過組態(tài)軟件FIX32與界面編輯軟件VB相結(jié)合對上位機(jī)" title="上位機(jī)">上位機(jī)進(jìn)行控制和通訊。本系統(tǒng)達(dá)到國內(nèi)領(lǐng)先、國際先進(jìn)的水平,它的研制成功對中藥在世界范圍內(nèi)的進(jìn)一步推廣起到了重要的作用。
關(guān)鍵詞: 中藥智能配藥系統(tǒng)? PLC? CPLD? FIX32? VB
?
中藥智能配藥系統(tǒng)(Intelligent Dispense System for Chinese Medicine)是隨著中醫(yī)院流程系統(tǒng)管理向電子化、網(wǎng)絡(luò)化的方向發(fā)展而產(chǎn)生的。該系統(tǒng)工作的過程是:首先通過醫(yī)院內(nèi)部局域網(wǎng)將在終端電腦上開出的處方傳至藥房配藥主控計算機(jī),然后由主控計算機(jī)在查詢藥品數(shù)據(jù)庫的基礎(chǔ)上形成配藥指令并下達(dá)給配藥機(jī)器,完成配藥過程。同時,主控計算機(jī)在配藥機(jī)器終端的液晶顯示屏上顯示患者信息,并驅(qū)動打印機(jī)輸出處方的綜合信息,將處方綜合信息連同配藥機(jī)器輸出的配好的分帖包裝中藥一起交付患者使用。中藥智能配藥系統(tǒng)的控制系統(tǒng)" title="控制系統(tǒng)">控制系統(tǒng)可分為機(jī)電控制系統(tǒng)和上位機(jī)軟件控制系統(tǒng),其結(jié)構(gòu)框圖如圖1所示。
?
1 機(jī)電控制系統(tǒng)
機(jī)電控制系統(tǒng)為分層分布式結(jié)構(gòu),采用上位機(jī)+下位機(jī)" title="下位機(jī)">下位機(jī)+集成電路板的技術(shù)進(jìn)行綜合控制。其電路系統(tǒng)結(jié)構(gòu)框圖如圖2所示。具體介紹如下:
?
(1)上位機(jī)使用PC機(jī),負(fù)責(zé)管理級和監(jiān)控調(diào)度級的控制。上位機(jī)不采用工控機(jī)的原因是因系統(tǒng)對于界面、數(shù)據(jù)庫處理及網(wǎng)絡(luò)聯(lián)系等均有較高的要求。上位機(jī)的主要功能是將人機(jī)界面輸入的二進(jìn)制編碼信息通過RS-232串口傳送給下位機(jī),并對下位機(jī)的工作狀況進(jìn)行實時監(jiān)控,完成藥方打印和液晶顯示。另外,它與藥品管理信息系統(tǒng)之間的信息交互,是通過醫(yī)院內(nèi)部的局域網(wǎng)來進(jìn)行并采用TCP/IP協(xié)議實現(xiàn)的。
(2)下位機(jī)負(fù)責(zé)設(shè)備級控制。其功能是接收并解碼上位機(jī)發(fā)送的二進(jìn)制配藥信息,然后根據(jù)配藥信息選定所需藥品,驅(qū)動相應(yīng)集成電路板進(jìn)行下藥控制,并驅(qū)動機(jī)械手進(jìn)行定位、取出藥品、包裝成袋,連同打印藥方一起交付患者。下位機(jī)之所以采用PLC而沒有選擇價格相對低廉的單片機(jī),原因之一是為了滿足中藥配藥機(jī)對高速運作的要求,X軸導(dǎo)軌和Y軸導(dǎo)軌均采用伺服電機(jī)" title="伺服電機(jī)">伺服電機(jī)驅(qū)動,而單片機(jī)對伺服電機(jī)的控制能力相對較差,很難做到精確控制;原因之二是中藥智能配藥系統(tǒng)對可靠性的要求很高,而單片機(jī)的穩(wěn)定性與PLC相比要差一些,且容易受到外界電磁的干擾。
(3)下藥直流電動機(jī)的控制采用以ALTERA
公司的ACEX1K芯片為核心的集成電路板來完成。在該芯片中集成了在Max+plus II開發(fā)系統(tǒng)中用VHDL語言編寫的控制、計數(shù)和定時功能。該電路板的功能是接收從PLC發(fā)來的命令和藥品質(zhì)量數(shù),控制電動機(jī)的轉(zhuǎn)數(shù),在0.07g/轉(zhuǎn)的精度下完成規(guī)定重量的下藥。由于本系統(tǒng)使用了多達(dá)420個下藥直流電機(jī),因此采用可減少I/O點數(shù)及PLC布線的集成電路板。該系統(tǒng)的所有下藥電機(jī)由28塊集成電路板分別控制,每塊集成電路板控制的下藥部分相對獨立。這樣,檢查和維修不受位置限制,具有較高的可靠性和性價比。
1.1? PLC控制
1.1.1? PLC配置
本系統(tǒng)PLC配置采用OMRON公司的C200HE型PLC,并在其基礎(chǔ)上擴(kuò)展了一個16點繼電器型開關(guān)量輸出模塊C200H-OC225、一個32點晶體管型開關(guān)量輸出模塊C200H-OD215、兩個16點開關(guān)量輸入模塊C200H-ID212和一個四軸位置控制模塊C200HE-NC413。各模塊的作用為:
(1)兩個輸入模塊用來接收配藥機(jī)器中各種接觸器的位置反饋或動作的故障反饋,對其配置無特別要求;
(2)兩個輸出模塊發(fā)出指令,用來操作配藥機(jī)器。繼電器型開關(guān)量輸出模塊驅(qū)動電流大,但不能頻繁動作,因此用來控制所有電磁閥和各種直流電機(jī)、步進(jìn)電機(jī)" title="步進(jìn)電機(jī)">步進(jìn)電機(jī);晶體管型開關(guān)量輸出模塊則正好相反,且其輸出為TTL電平,具有可以與其它集成電路接口的優(yōu)點,用來驅(qū)動集成電路完成下藥操作。
(3)四軸位置控制模塊用來控制四軸(X、Y、Z、U)互相獨立的兩個伺服電機(jī)和三個步進(jìn)電機(jī)。在X、Y軸上分別配置了兩個伺服電機(jī),而三個步進(jìn)電機(jī)由于工作時間互相錯開,全部配置在U軸上。另外,X、Y軸上各有左右限位開關(guān)和原點接近開關(guān)3個,Z軸有原點接近開關(guān)1個,這樣,共7個接近開關(guān)接到C200HENC413上。該模塊以不超過10ms的響應(yīng)時間從PLC內(nèi)存取得命令,在500kp/s的高頻脈沖下與PLC內(nèi)存數(shù)據(jù)建立映射關(guān)系,完成通過修改內(nèi)存數(shù)據(jù)定位伺服電機(jī)和步進(jìn)電機(jī)的位置以及通過內(nèi)存數(shù)據(jù)反饋伺服電機(jī)和步進(jìn)電機(jī)的位置情況的功能。
1.1.2 伺服電機(jī)控制電路
在本系統(tǒng)中,配置了兩個OMRON公司的SMARTSTEP A伺服系統(tǒng),對X、Y軸完成定位操作,具體控制電路如圖3所示。其中包括四軸位置控制模塊C200HE-NC413、通用控制電纜R88A-CPU002S、伺服驅(qū)動器R7D-AP04H、伺服電機(jī)R7M-A40030-BS1(為帶制動器的帶鍵直軸圓柱形電機(jī))。圖中,CN1代表伺服驅(qū)動器,CN2代表與伺服電機(jī)同軸的分辨率為2000脈沖/轉(zhuǎn)的光學(xué)增量型編碼器用連接器,它可以完成從驅(qū)動器到伺服電機(jī)的具有位置反饋和速度反饋的閉環(huán)控制。在伺服電機(jī)中,M代表電機(jī)本身,E代表編碼器,B代表動力制動器。由于固定脈沖代表固定距離,因此當(dāng)伺服電機(jī)接收到控制系統(tǒng)發(fā)出的若干條脈沖指令后,就可以完成預(yù)定的定位。在本系統(tǒng)中,設(shè)置電機(jī)的分辨率為5000脈沖/轉(zhuǎn)(0.072度/步),伺服電機(jī)連接的同軸減速器比例為3?押1,其帶動導(dǎo)軌移動的速率為60mm/轉(zhuǎn)。因此,伺服電機(jī)帶動導(dǎo)軌移動的速率為20mm/5000脈沖。伺服電機(jī)控制電路的控制原理為:位置控制單元從設(shè)備處得到各種控制信號,并根據(jù)不同藥罐間的距離與20mm/5000脈沖的數(shù)據(jù)大致算出映射到四軸位置控制模塊NC413在PLC中的脈沖數(shù)據(jù);然后通過通用控制電纜輸出高速脈沖給伺服驅(qū)動器,由其驅(qū)動伺服電機(jī),使之根據(jù)誤差反饋自動微調(diào)該數(shù)據(jù),最終達(dá)到精確定位的目的。
?
1.1.3 步進(jìn)電機(jī)控制電路
步進(jìn)電機(jī)驅(qū)動器與C200HE-NC413的連線類似于圖3中伺服電機(jī)驅(qū)動器與C200HE-NC413的連線,而步進(jìn)電機(jī)驅(qū)動器與步進(jìn)電機(jī)間的連線則如圖4所示。本系統(tǒng)中控制機(jī)械手?jǐn)[動的步進(jìn)電機(jī)采用STONE公司的86BYG250B,驅(qū)動器采用STONE公司的混合式步進(jìn)電機(jī)驅(qū)動器SH20806C;控制送袋與推袋的兩個步進(jìn)電機(jī)采用SANYO公司的103H548,驅(qū)動器采用STEP公司的四相混合式步進(jìn)電機(jī)細(xì)分驅(qū)動器ST4HB03X。步進(jìn)電機(jī)的控制類型為不具有位置反饋功能的開環(huán)控制,控制方法為在確定運動起點與終點的基礎(chǔ)上,將位移或角度改變以200脈沖/轉(zhuǎn)(0.18度/步)為分辨率轉(zhuǎn)變?yōu)槊}沖數(shù),寫入映射在NC413中的內(nèi)存位置,從而控制步進(jìn)電機(jī)完成定位。
?
1.2 系統(tǒng)工作步驟
系統(tǒng)中有各種電機(jī)、限位、定位用傳感器以及與真空氣泵連接的電磁閥,可以完成取空藥袋、打開空藥袋及封裝、輸送藥袋等功能,其工作時序見圖5。
?
1.3 PLC程序?qū)崿F(xiàn)
利用OMRON的編程軟件CX-Programmer完成梯形圖的編寫,程序包括如下六個模塊:
(1)初始化模塊,其功能是將PLC的內(nèi)存單元初始化,進(jìn)行電氣部分的歸零操作,目的是為配藥系統(tǒng)進(jìn)行運轉(zhuǎn)做好準(zhǔn)備,防止誤操作對系統(tǒng)造成不可挽回的破壞;
(2)接收模塊,其功能是接收上位機(jī)界面中輸入的二進(jìn)制編碼的信息(包括藥品種類、數(shù)量、貼數(shù)等),存入預(yù)先定義的內(nèi)存單元;
(3)發(fā)送模塊,其功能是將藥品種類、數(shù)量等按照數(shù)據(jù)庫與伺服電機(jī)結(jié)構(gòu)中已定義的方式分別轉(zhuǎn)變?yōu)橄滤幹绷麟姍C(jī)位置和轉(zhuǎn)動圈數(shù),并發(fā)送到集成電路板,完成下藥操作;
(4)反饋模塊,其功能是接收來自集成電路板的直流電機(jī)轉(zhuǎn)動停止(即規(guī)定重量下藥動作完成)的反饋信號;
(5)控制模塊,其功能是在確定下藥過程完成后,驅(qū)動機(jī)械手完成取空藥袋、打開空藥袋、定位及集藥等任務(wù),并驅(qū)動藥袋封口裝置動作,觸發(fā)直流電動機(jī)帶動皮帶轉(zhuǎn)動,送出藥品;
(6)故障處理模塊,其功能是接收各處傳感器反饋的接近或故障信號,隨時停止系統(tǒng)的配藥動作,以進(jìn)行故障處理。
此外,在發(fā)送模塊和控制模塊中建立時間聯(lián)系,使得在一次多貼藥配藥過程中,下一貼藥的下藥、取空藥袋動作與上一貼藥的封口、傳輸動作并行進(jìn)行,縮短了配藥時間。
2 上位機(jī)軟件控制系統(tǒng)
上位機(jī)軟件控制系統(tǒng)包括藥品信息數(shù)據(jù)庫和人機(jī)對話界面,前者主要存儲醫(yī)院的藥品信息,包括名稱、數(shù)量、價格、藥性、有效期等;后者則與數(shù)據(jù)庫建立連接,可以實現(xiàn)查詢、開處方、藥品管理、處方管理、打印、液晶顯示等功能。其流程圖如圖6所示。
?
2.1 工控組態(tài)軟件FIX32
FIX32是美國 Intellution公司開發(fā)的基于視窗的大型應(yīng)用軟件,包含動態(tài)顯示、報警、趨勢、控制策略、控制網(wǎng)絡(luò)通信等組件。在本系統(tǒng)中,應(yīng)用FIX32編寫了主界面和系統(tǒng)運行的動態(tài)模擬顯示程序。
(1)主界面是上位機(jī)與下位機(jī)之間的連接橋梁,其功能是與VB編寫的界面建立聯(lián)系,激活配藥控制界面和藥品管理界面。
(2)系統(tǒng)運行動態(tài)模擬顯示的實現(xiàn)方式是首先在
FIX32的DRAW模式下畫出整個配藥系統(tǒng)的模擬圖,包括靜止物體及各種動作顯示,設(shè)定限位與故障反饋警報;然后在FIX32中對I/O點進(jìn)行組態(tài),并在數(shù)據(jù)庫中建立各藥罐、各動作I/O類型及其在下位機(jī)PLC中的地址。這樣,當(dāng)PLC中的程序開始運行時,相應(yīng)地址中的模擬量或開關(guān)量便發(fā)生變化。這種變化可在配藥系統(tǒng)動作的同時顯示到動態(tài)模擬界面,使動態(tài)模擬同步進(jìn)行。在配藥系統(tǒng)封閉運行的情況下,其作用之一是可以從動態(tài)模擬畫面中實時觀察到系統(tǒng)的運作情況,之二是可在系統(tǒng)發(fā)生可反饋性故障時在第一時間得到提示,快速完成對故障的調(diào)整。
2.2 界面編輯軟件VB
該部分軟件包括取藥與加藥兩個模塊,均具有權(quán)限控制功能,用戶需輸入密碼,可保證系統(tǒng)的安全性。VB界面框架圖如圖7所示。
?
取藥模塊的主要任務(wù)是與ACCESS數(shù)據(jù)庫取得聯(lián)系,將需要的藥品名、數(shù)量、貼數(shù)等通過FIX32傳入下位機(jī)中,完成取藥操作。其中,在數(shù)據(jù)庫中的藥品名采用拼音查詢,數(shù)量與貼數(shù)則可多次修改。同時,VB還要向液晶屏輸出患者及處方信息,并完成處方打印。
在取藥模塊中進(jìn)行了取藥任務(wù)優(yōu)化處理算法的設(shè)計,其目的是在醫(yī)生開藥順序任意的情況下完成最短時間的配藥過程。由于機(jī)械手在X、Y軸伺服電機(jī)的控制下的勻速行走速度為1m/s,因此時間最短即為行走路線最短,這個問題等價于典型的旅行商(TSP)問題。在本系統(tǒng)中,420個藥罐分為前后兩面各14行等距排列,每一面中又分左右兩側(cè)各7行,每行15個。此外,藥罐位置每單位Y軸坐標(biāo)與三個單位X軸坐標(biāo)相同,且機(jī)械手對前后兩面的取藥由步進(jìn)電機(jī)擺動控制。經(jīng)過簡單計算可以確定本系統(tǒng)中實際節(jié)點應(yīng)為66個。采用新的禁忌遺傳算法在VB中編程,該算法對多節(jié)點系統(tǒng)設(shè)置禁忌步長和松弛步長。引入張弛效應(yīng),與傳統(tǒng)遺傳算法相比,減小了可行解空間,提高了收斂速度。
加藥模塊為藥品管理員專用,主要任務(wù)是從界面中修改數(shù)據(jù)庫中貨存藥品的所有信息。
對散裝中藥實現(xiàn)定量配置的中藥智能配藥系統(tǒng)在控制方法上有多種創(chuàng)新,具有良好的人機(jī)界面,能在足夠短的時間內(nèi)對指定藥方完成配藥。該系統(tǒng)通過了上海市科委主持的專家鑒定,達(dá)到國內(nèi)領(lǐng)先、國際先進(jìn)的水平,在運行中情況良好,可靠性和安全性都得到了驗證。
?
參考文獻(xiàn)
1 顧松年, 陳鐵年.可編程控制器原理與應(yīng)用. 北京:押國防工業(yè)出版社,1996
2 OMRON可編程控制器C200HE編程手冊.OMRON,1997
3 王福成,周鐵柱,黃淼云.Visual Basic 6.0 數(shù)據(jù)庫開發(fā)指南.北京:清華大學(xué)出版社,2000
4 許 超,邵惠鶴.禁忌遺傳算法在TSP中的應(yīng)用.系統(tǒng)仿真學(xué)報,? 2001;8:94~96