周亮 馮晟 曾赤良
摘要: 隨著經(jīng)濟的發(fā)展和科技的提高,ARM的應用越來越廣泛。我公司研制的顯微鏡載玻片自動上片機就運用了自行開發(fā)的以ARM作為主控芯片的控制器,它是我公司研制的一種用于醫(yī)學檢測上的設(shè)備,它的應用實現(xiàn)了分析儀上片操作自動化,大大節(jié)省時間,提高工作效率。本文著重介紹了基于ARM的上片機與上位機之間的串口通訊,通過串口通訊的實現(xiàn),使得自動上片機能更好地、更有效地完成所需功能。
【關(guān)鍵詞】自動上片機 ARM 通訊協(xié)議 串口通訊
1 引言
隨著現(xiàn)代化水平的不斷發(fā)展進步,越來越多的設(shè)備向著高性能、高效率、高自動化和高可靠性的方向發(fā)展,其中在醫(yī)學上也更多的用到了這類微型化、智能化的現(xiàn)代化設(shè)備,它給醫(yī)學研究與發(fā)展提供了更高效、更可靠的保障。
現(xiàn)在越來越多的醫(yī)療機構(gòu)需要這類智能化設(shè)備。本文介紹一下這類設(shè)備中的一種,即顯微鏡載玻片自動上片機。它是我院研制的一種用于醫(yī)學檢測上的設(shè)備,其主要功能是能夠由機械手將載有細胞樣本的玻片從玻片庫內(nèi)取出,放置在顯微鏡的載物臺上進行檢測,分析儀檢測完畢后自動上片機接受到分析儀的指令后,自動地將玻片放回到玻片庫內(nèi)。真正實現(xiàn)分析儀上片操作自動化,這樣能大大節(jié)省時間,提高工作效率。
自動上片機由玻片庫、玻片抓取裝置、玻片移動裝置、條碼識別裝置、電控系統(tǒng)等部分組成。玻片庫一次可容納50片,由以步進電機為驅(qū)動源的機構(gòu)驅(qū)動上下運動。玻片抓取裝置通過電動夾緊方式和定制夾具來抓取玻片;玻片移動裝置實現(xiàn)XY坐標上的二維運動,實現(xiàn)玻片在玻片庫和平臺之間來回轉(zhuǎn)運;條碼識別裝置安裝有條碼識別器,通過自動識別條形碼的方式來分辨出不同病人的玻片。
本文首先簡單介紹了自動上片機。它的電控部分采用了自行開發(fā)的定制控制器,該控制器運行穩(wěn)定可靠,能應用于各種工業(yè)控制場合。然后介紹了專門為自動上片機與PC機之間制定的通訊協(xié)議,具有傳輸時間短,受干擾概率低,通信實時性好等優(yōu)點。通過對ARM微控制器模塊的選擇、通訊協(xié)議的制定以及相關(guān)程序的編寫,使我們能更好地實現(xiàn)自動上片機與上位機之間的串口通訊,更好地實現(xiàn)設(shè)備的功能。
2 ARM微控制器模塊的選擇
自動上片機的控制系統(tǒng)運用ARM芯片作為主控芯片?,F(xiàn)有的控制系統(tǒng)一般采用單片機或DSP作為主控芯片,而ARM芯片以其高效的處理性能和豐富的處理器資源,較單片機和DSP更能滿足醫(yī)療設(shè)備的控制系統(tǒng)要求,并且ARM芯片已經(jīng)被越來越廣泛地應用于工業(yè)控制和移動計算領(lǐng)域,其應用已趨于成熟。
自動上片機的電控系統(tǒng)采用了自行開發(fā)的控制器,該控制器是基于TI公司的EASYARM1138微控制器的基礎(chǔ)上開發(fā)出來的。它選用TI公司的ARM CortexTM-M3處理器,該處理器提供出色的計算性能和對事件的卓越系統(tǒng)響應,同時可以應對低動態(tài)和靜態(tài)功率限制的挑戰(zhàn)。定位精度能達到30μ??刂破魈峁┝烁咝阅艿?2位運算能力,包含了PWM輸出,此特點特別適合控制步進電機等驅(qū)動器件,內(nèi)置的ADC和DAC避免外接單獨的轉(zhuǎn)換芯片的麻煩。I2C、SPI、UART、USB等豐富的外設(shè)端口,使得控制器能應用于各種工業(yè)控制場合。軟件方面,直接采用“C語言+驅(qū)動庫”的新概念開發(fā)模式。圖1為控制器的功能示意圖。
3 上片機與上位機之間的通訊協(xié)議
上片機與上位機之間的通信(即控制器與上位機之間的通信)用的是串行通信,采用RS232標準?!按小笔侵竿庠O(shè)與接口電路之間的信息傳送方式,CPU與接口之間卻是按照并行方式工作的。串行通信包括四個重要參數(shù):波特率、奇偶校驗位、數(shù)據(jù)位和停止位,我方設(shè)計的通訊協(xié)議用到的參數(shù)具體為波特率9600bps,無校驗,8個數(shù)據(jù)位,1個停止位。
我們?yōu)榱藵M足客戶要求自定義了6條通信指令。簡單介紹如下:
(1)抓撥片傳參數(shù)狀態(tài)。其功能碼為21H。
詢問幀:
詢問幀由10個字節(jié)組成,其格式如表1。
應答幀:
應答幀由9個字節(jié)組成,其格式如表2,(狀態(tài)碼為OOH/OIH)。
(2)通知上位機玻片條碼。其功能碼為22H。
發(fā)送幀如表3。
(3)上位機傳遞完成信號狀態(tài)(檢測結(jié)束指令)。其功能碼為30H,命令碼為OOH。
(4)上位機發(fā)送機器回零指令。其功能碼為30H,命令碼為OIH。
(5)復位完成指令。其功能碼為30H,命令碼為02H。
(6)所有玻片已經(jīng)抓完指令。其功能碼為30H,命令碼為03H。
(3)~(6)4條通信指令其格式均為:
詢問幀:
詢問幀由6個字節(jié)組成,其格式如表4。
應答幀:
應答幀由6個字節(jié)組成,其格式如表5。
4 上片機部分串口通訊的實現(xiàn)
上片機部分實際上主要是其控制器部分,它直接采用了“C語言+驅(qū)動庫”的新概念開發(fā)模式。由于Luninary Micro官方免費提供驅(qū)動庫軟件包,這樣我們就能更方便的實現(xiàn)其串口通訊。這里,我方要用到UART,UART是一種通用串行數(shù)據(jù)總線,用于異步通信,該總線雙向通信,可以實現(xiàn)全雙工傳輸和接收。其初始化如下:
SysCtlPeriEnable(SYSCTL_PERIPHUART2);
//使能UART模塊
SysCtlPeriEnable(SYSCTL_PERIPHGPIOG);
//使能RX/TX所在的GPIO端口
GPIOPinTypeUART(GPIO_PORTGBASE,
//配置RX/TX所在管腳為
GPIO_ PIN O GPIO PIN_ 1);//UART收發(fā)功能
UARTConfigSet(UART2_BASE,//配置UART端口
9600.波特率:9600
UART CONFIG WLEN 8//數(shù)據(jù)位:8
UART__ CONFIG STOP_ ONE//停止位:1
UART_CONFIG_PAR_NONE);//校驗位:無
UARTEnable(UART2_BASE);//使能UART端口
我們編寫函數(shù),通過功能封裝為函數(shù)的方式來實現(xiàn)自定義的6條通信指令,從而實現(xiàn)上片機部分的串口通訊。
fSend_2 l_GrabSlide_TransParameter()用于發(fā)送抓玻片傳參數(shù)狀態(tài);fSend_22_Send_SlideBarcode()用于實現(xiàn)通知上位機玻片條碼的功能;fSend_30_OO_PosirionMachineTransFinish()用于發(fā)送檢測結(jié)束指令;fSend_ 30 01 Retum to_ zero()用于發(fā)送上位機發(fā)送機器回零指令;fSend_30_02ResetCompletion()用于發(fā)送復位完成指令;fSend_30_03_AlICompletion()用于發(fā)送所有玻片發(fā)送完畢指令。
通過對上位機發(fā)送的通信指令進行解碼,并返回相應的應答幀,就可以實現(xiàn)上片機與上位機的實時通訊,使自動上片機完成相對應的功能。
5 上位機部分串口通訊的實現(xiàn)
上位機部分采用Visual C++6.0作為開發(fā)平臺,具體串口通訊功能選擇應用MSComm控件來編寫實現(xiàn)。
將此控件拉至對話框中,在類視圖中添加CMSComm類。MSComm6.0控件只有一個事件,即Oncomm事件。在通信時如果發(fā)生錯誤或者事件,將會引發(fā)Oncomm事件并且改變其屬性值,通過GetConunEvent()可獲得Oncomm產(chǎn)生事件或錯誤的代碼。在與上片機控制器進行通信的過程中,使用MSC,omm6.0控件和自定義的通訊協(xié)議可以完成數(shù)據(jù)的發(fā)送與接收。
端口的主要設(shè)置如下:
if(m_Comm.GetPortOpen(》
m_Comm.SetPortOpen(FALSE);
m_Comm.SetCommPort(l);//設(shè)置串口
if(Im_Comm.GetPortOpen(》//打開串口
m_Comm.SetPortOpen(TRUE);
else
{
AfxMessageBox(”cannot open serialport”);
return false;
}
m_Comm.SetSettings(”9600,n,8,1”);
m_Comm.SetInputMode(l);
m_Comm.SetRThreshold(l);
m_Comm.SetInputLen(0);
m_Comm.Getlnput();
我們通過在上位機界面上設(shè)置起始地址和抓取數(shù)量,來發(fā)送和接收數(shù)據(jù),從而達到上位機串口通訊的目的。的圖2、圖3為起始地址為10,抓取數(shù)量為5,所得到的抓取命令、檢測結(jié)束命令的上位機界面。
通過上位機發(fā)送相應的指令進行與上片機控制器的通訊,使我們能夠?qū)崿F(xiàn)抓取、檢測等一系列設(shè)備工藝設(shè)定,并能更好的完成自動上片機的所需功能。
6 結(jié)束語
近年來,隨著自動化及信息技術(shù)的迅速發(fā)展,各種設(shè)備己逐步向高質(zhì)量、多功能、集成化、自動化、系統(tǒng)化、智能化的方向發(fā)展,ARM也被越來越多的運用其中。通過基于ARM的上片機與上位機串口通訊的實現(xiàn),使得自動上片機能更好地、更有效地完成所需功能。目前,我院研制的自動上片機已經(jīng)在某醫(yī)療公司投入運用,并且運行情況良好,為他們大大節(jié)省時間,提高工作效率。
參考文獻
[1]周立功.ARM微控制器基礎(chǔ)與實戰(zhàn)[M].北 京:北京航天航空大學出版社,2005.
[2] LM3S1138微控制器數(shù)據(jù)手冊[z].廣州周立功單片機發(fā)展有限公司,2008: 20-24.
[3]何欽銘.C語言程序設(shè)計[M].北京:科學出版社,2010.
[4]李現(xiàn)勇,精通Visual C++串口通信技術(shù)與工程實踐(第三版)[M].北京:人民郵電出版社,2008.
[5]張筠莉,劉書智.Visual C++實踐與提高(串口通信與工程應用篇)(第二版)[M].北京:中國鐵道出版社,2009.