張哲 陳天鷹 陳光達
摘 要:隨著工業(yè)自動化,智能化的浪潮襲來,人們的生活方式發(fā)生了巨大的變化,人們的就醫(yī)環(huán)境和醫(yī)療設備也進一步實現(xiàn)智能化,本文主要利用STM32微控制器通過CAN總線來控制盒裝自動發(fā)藥機的發(fā)藥裝置,傳統(tǒng)盒裝發(fā)藥機的發(fā)藥裝置主要通過PLC技術來實現(xiàn)控制[1],但PLC本身的線路非常復雜,最終使得發(fā)藥機顯得非常龐大笨重,現(xiàn)場組裝也耗時耗力自動化程度也不高,同時PLC控制裝置的成本非常高昂,這嚴重制約了盒裝自動發(fā)藥機的市場化發(fā)展。因此本文采用的STM32微控制器可以有效解決PLC技術的相關缺點。
關鍵詞:自動發(fā)藥機;STM32微控制器;CAN總線
據(jù)統(tǒng)計北京大醫(yī)院一天的門診量就達到上萬人,病人有時花費大量的時間在等待排隊中,這樣浪費了大量時間所以針對這種現(xiàn)象,本論文研究一種自動發(fā)藥機[ 2 ],來節(jié)省病人取藥時等待排隊的時間,目前國內(nèi)外自動化藥房的發(fā)藥機主要產(chǎn)品分為以下四種形式:
1)散裝藥品自動化發(fā)藥機;
2)數(shù)控回轉(zhuǎn)柜式自動化藥房發(fā)藥機[ 2 ] ;
3)機械手式自動化藥房發(fā)藥機;
4)儲藥槽式自動化發(fā)藥機。
國內(nèi)的一些發(fā)藥機產(chǎn)品一般采用的是PLC技術,而這種技術導致設備的線路非常復雜,機器顯得非常龐大笨重,現(xiàn)場組裝也耗時耗力自動化程度也不高。
綜上所述,本文采用的基于STM32微控制器技術來控制盒裝發(fā)藥機的控制裝置,可以有效克服傳統(tǒng)PLC控制方法的缺點與不足,同時降低了盒裝發(fā)藥機整體的成本。
一、盒裝發(fā)藥機的硬件設計
盒裝發(fā)藥機控制發(fā)藥裝置的過程如下:上位機通過CAN總線向STM32微控制器發(fā)送相應的十六位控制信號。當STM32微控制器收到這些控制信號時,根據(jù)我們編寫的通信協(xié)議,控制相應發(fā)藥彈塊裝置彈出所發(fā)藥盒。藥盒被發(fā)出時,需要一個光電檢測電路[ 6 ],用來檢測藥盒是否正常發(fā)出而沒有被卡住。
因此盒裝發(fā)藥機硬件設計最重要包含三個部分:第一部分是CAN總線收發(fā)控制電路,第二部分是盒裝發(fā)藥機發(fā)藥彈塊控制裝置,第三部分是光電檢測裝置。因此本文實現(xiàn)發(fā)藥機控制的核心是CAN總線電路與CAN總線協(xié)議的制定,發(fā)藥控制裝置的框圖如下圖:
(一)CAN總線收發(fā)控制電路
由上可知盒裝發(fā)藥機控制裝置的核心是CAN總線電路,CAN總線(控制器局域網(wǎng)絡)即控制器局域網(wǎng)[ 3-4 ],是使用最廣泛的國際現(xiàn)場總線。起初,CAN總線被設計成在汽車環(huán)境中的微控制器之間的通信,在車載電子控制單元(ECU)形成汽車電子控制網(wǎng)絡之間的信息交換。它是一種多主方式的串行通訊總線,基本設計規(guī)范要求較高的比特率,高抗干擾,而且能夠檢測出產(chǎn)生的任何錯誤。信號最長傳輸距離為10公里,但是數(shù)據(jù)傳輸速率只能低至5Kbps。
基于CAN總線的分布式控制系統(tǒng)在以下幾個方面的優(yōu)勢:
1)CAN具有完善的通信協(xié)議,該協(xié)議都是由硬件自動完成,因此降低了系統(tǒng)的開發(fā)難度,縮短了開發(fā)周期,這些是只僅僅有電氣協(xié)議的RS-485所無法比擬的。
2)在CAN總線的接口電路中,有CAN-H和CAN-L與線路連接,CAN-H只能是高電平或者懸空狀態(tài),CAN-L只能是低電平或者懸空狀態(tài),這就確保了CAN總線接口電路不會像RS-485那樣在總線出現(xiàn)問題時會損壞節(jié)點接口。而且CAN節(jié)點在錯誤嚴重的情況下具有自動關閉輸出功能,以使總線上其他節(jié)點的操作不受影響,從而保證不會出現(xiàn)象在網(wǎng)絡中,因個別節(jié)點出現(xiàn)問題,使得總線處于“死鎖”狀態(tài)。
3)CAN控制器可以在多主方式下工作,網(wǎng)絡中的每個節(jié)點都可以通過一種特殊的仲裁機制(具體參見CAN2.0協(xié)議標準)來變成主機。且CAN總線協(xié)議用通信數(shù)據(jù)編碼取代了棧地址的編碼,這使得每個節(jié)點都可以收到一樣的數(shù)據(jù),這樣就大大增強了數(shù)據(jù)通信的實時性。
綜上所述本文采用的CAN總線收發(fā)器為TJA1050,CAN總線收發(fā)控制電路如下:
二、盒裝發(fā)藥機的軟件設計
(一)盒裝發(fā)藥機的控制流程圖
Fig3 The control diagram of dispensing machine
(二)盒裝發(fā)藥機CAN總線通信子程序設計
本文采用上位機通過CAN總線與STM32微控制器通信,下面是本文CAN總線發(fā)藥機控制器上、下位機通訊協(xié)議:
1.通訊要求
CAN2.0,擴展位模式,頻率800M,無遠程幀。
2.上位機格式(16進制)例
0x 00 00 AB CD 01 02 03 05 01 55
① ② ③ ④ ⑤ ⑥ ⑦
①:00 00 AB CD 為地址,前2位為00 00,后2位可變。
②:為執(zhí)行動作標志位。取01時執(zhí)行動作相應動作,取02時為通訊測試。
③:為電磁鐵位置標志位:取值為01時第一個電磁鐵動作,取02時第二個電磁鐵動作,以此類推。
④:為通電時間標志位:取值為01時為通電10毫秒,取值為10時通電100毫秒。
⑤:為錯誤動作次數(shù)標志位:取值為05時動作5次,其他值時動作3次。
⑥:為發(fā)藥藥道檢測使能標志位:取值為01時本藥道參與檢測,其他值時不參與檢測。
⑦:CRC驗證:②+③+④+⑤+⑥=⑦
3.下位機格式(16進制)
例:0x 00 00 AB CD 01 02 55
① ② ③ ④
①:本機地址。
②:發(fā)藥成功標志位。取值為01時發(fā)藥成功,取值為02時發(fā)藥失敗。
③:發(fā)藥位置標志位。取值為01時發(fā)第一盒藥,取值02為發(fā)第二盒藥,依次類推。
④:CRC驗證:②+③=④
三、結(jié)論
本文針對傳統(tǒng)發(fā)藥機采用PLC控制系統(tǒng)來控制發(fā)藥裝置,由此造成的成本高昂,設備結(jié)構復雜等缺點,提出了采用STM32微控制器的方法,該方法通過設計簡單的電路圖利用CAN總線通信來控制相應的發(fā)藥裝置,可以有效克服PLC控制系統(tǒng)的缺點,同時可以有效的提高控制系統(tǒng)的可靠性與穩(wěn)定性。
但是,本文還存在一定不足。本文中的控制系統(tǒng)沒有采用帶有任務管理的操作系統(tǒng),導致沒有友好的人機交互界面。從而使后續(xù)系統(tǒng)的管理維護,以及迭代開發(fā)帶來了不便。
參考文獻:
[1] 王慶.基于S7-200 PLC的中藥自動發(fā)藥機系統(tǒng)的研究與實現(xiàn)[D].四川:中國知網(wǎng),2005:2-3.
[2] 盧道兵,梁茂本.自動化發(fā)藥系統(tǒng)在醫(yī)院門診藥房中的應用效果評價[J].重慶醫(yī)學,2016,45(29):12.
[3] 劉火良,楊森.STM32庫開發(fā)實戰(zhàn)指南[M].北京:機械工業(yè)出版社,2013,06.
[4] 鄭杰.ARM嵌入式系統(tǒng)開發(fā)與應用完全手冊[M].北京:中國鐵道出版社,2013,08:53.
[5] 趙齊,許彥峰,李健,曾丹紅.基于STM32和多照度傳感器融合照度測量系統(tǒng)[J].電子技術與軟件工程,2014,03.
[6] 尹杰,楊宗帥,聶海,王海峰.基于紅外反射式智能循跡遙控小車系統(tǒng)設計[J].電子設計工程,2013,12.