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