張海江 黎海文 吳一輝 于正林
(長春理工大學機電工程學院1,吉林 長春 130028;中國科學院長春光學精密機械與物理研究所2,吉林 長春 130033)
生化分析儀是一種集光、機、電、液于一體的大型檢驗設備,主要用于檢驗人體體液的各項生化指標。目前,關于這方面的研究主要集中在兩個方面:一是采用較低檔次處理器(單片機)的小型產品,這類產品成本低,但硬件結構復雜、測試速度慢、人機交互性能差;二是搭配PC上位機的大型產品,這類產品的數據存貯和查詢方便,人機交互界面友好,但系統成本較高、體積大、運動控制實時性差[1-3]。針對以上問題,提出基于ARM-雙單片機系統的小型全自動生化分析儀。該方案采用S3C2440A(ARM)為上位機、C8051F060單片機為下位機的雙系統架構,可實時多任務并行處理。采用該方案設計的產品具有成本低、體積小、處理速度快等優點,適用于小型全自動生化分析系統。
系統框架如圖1所示。

圖1 系統結構框圖Fig.1 Structure of the system
由圖1可知,系統由上位機模塊和下位機模塊兩部分組成。
上位機模塊主要負責數據的分析處理、病人信息的存儲查詢、人機交互和向下位機發送命令等工作;下位機模塊主要負責加樣、混合、數據采集、轉盤轉動、清洗系統的控制和接收上位機的命令等工作。上位機模塊與下位機模塊之間采用異步串行通信。為實現多任務并行處理,下位機模塊采用雙單片機結構。
系統上位機模塊的核心是三星公司推出的基于ARM920T架構的S3C2440A處理器。這是一款專門針對低價格、低功耗、高性能應用推出的32位RISC指令集處理器,其最高主頻可達400 MHz,并具有加強的ARM體系內存管理單元(memory management unit,MMU),用于支持 WinCE、EPOC32和嵌入式 Linux系統、三通道UART、兩端口USB主機、LCD控制器等豐富的資源。S3C2440A共有130個I/O口和24路外部中斷,足以滿足小型全自動生化分析儀上位機的要求[4]。
系統下位機模塊的核心采用美國Silab公司的C8051F060單片機。該單片機內核采用流水線結構,速度比普通的51系列單片機快10倍,其指令和標準系列51單片機兼容,芯片支持在線調試。片上有64 kB的Flash、4352 B內部RAM、59個I/O口;片內集成有兩個UART、一個SM(兼容I2C)和一個SPI等豐富的資源,完全滿足下位機的要求[5]。
為快速完成復雜的測試動作并縮短測試時間,提出了雙單片機系統的設計方案。該方案將復雜的測試動作分配給兩個單片機,其中一個單片機負責轉盤定位和數據采集等工作,另一個單片機負責加樣臂旋轉、樣品加樣混合和清洗系統控制等工作。該方案大大提高了測試速度,減輕了單片機的工作任務。
下位機采用C8051F060單片機的優點主要有以下幾點:單片機實時性好;速度比普通的單片機快,大大提高了測試速度;采用雙單片機結構(兩個下位機),可實現多任務并行處理,提高了工作效率;上位機與下位機之間采用串口通信傳輸指令與數據,提高了系統的抗干擾能力。
系統上位機模塊與下位機模塊之間、下位機模塊中兩個單片機之間都采用異步串行通信。在異步通信中,數據是以字符為單位組成字符幀進行傳送的。發送端與接收端分別按字符幀規定的格式和波特率來協調數據的發送和接收。字符幀和波特率可由用戶根據實際情況選擇。字符幀由起始位、數據位、停止位和空閑位四部分組成[6-7]。
ARM與單片機之間的串口通信電氣連接如圖2所示。ARM與單片機之間使用MAX3232SOP芯片,提高了系統的抗干擾能力和穩定性。

圖2 串口通信電氣連接圖Fig.2 Electrical connections of the serial communications
系統軟件分為上位機程序和下位機程序兩部分。上位機程序部分采用模塊化設計,由主程序、顯示子程序、數據處理子程序和命令發送接收子程序等部分組成。
下位機程序部分主要負責接收上位機命令、加樣、混合、轉盤的轉動、控制微型光譜儀采集數據以及將數據發回給上位機等工作。
該系統的軟件流程如圖3所示。
在系統中,上位機與下位機之間主要通過串口傳送數據與命令。因此,串口通信是系統的核心。本系統以嵌入式Linux系統為應用平臺,這是由于嵌入式Linux具有內核精悍、運行穩定所需資源少及支持硬件數量龐大等優點[8]。在嵌入Linux系統中添加串口通信,首先將串口的設備驅動程序添加進內核,然后編寫測試程序。
編譯串口設備文件的內核,其主要步驟如下。
① 將串口驅動保存為 serial.c,并保存在目錄linux-2.6.32.2/drivers/char下。
② 在 linux-2.6.32.2/drivers/char目錄下,打開Kconfig文件,在文件中添加以下語句:

③ 在 linux-2.6.32.2/目錄下執行 make menuconfig命令。在出現的界面中,將光標下調至Device Drivers,按回車鍵進入另一界面。在這個界面中,將光標下調至Character Devices,按回車鍵進入另一界面。最后用方向鍵選中"Support for Serial(new)",并按空格鍵使該行最前面的符號變為<* >(<M>表示為編譯成Module形式,默認<* >為編譯入內核)。配置完成后,退出并保存。
④ 在 linux-2.6.32.2/drivers/char目錄下,修改Makefile文件,添加如下語句并保存。
obj-$(SERIAL_NAME)+=serial.o
⑤最后執行命令make zImage生成內核文件。
編寫串口測試程序,其主要步驟如下。
①使用open()函數打開串口設備文件。CommFd=open(DeviceName,O_RDWR,0),其中DeviceName為串口設備名。
②設置串口,TryATttr為存儲串口設置參數的結構體名稱,設置波特率、數據位、停止位、奇偶校驗位等相關參數,然后使用下面的函數進行設置:tcsetattr(CommFd,TCSANOW,&TtyAttr)。
③ 使用read()、write()函數對串口進行讀寫。
④最后關閉串口設備文件,與關閉其他設備文件相同,使用close()函數,close(CommFd)。
至此,上位機模塊中含有串口驅動的內核以及測試程序全部完成。
友好的人機交互界面簡化了復雜的操作,降低了操作人員的工作強度,提高了自動化水平。上位機系統軟件結構如圖4所示。

圖4 上位機系統軟件結構圖Fig.4 Software structure of the host computer system
系統采用嵌入式Linux作為操作系統,管理軟硬件資源;采用QT/E來完成對圖形化界面和應用程序的開發。QT/E是挪威Trolltech公司專門為嵌入式系統開發的基于C++的應用框架和窗口系統,它可在含有ARM處理器的嵌入式Linux操作系統跨平臺運行,且支持多線程編程[9]。
該應用程序主要分為參數的讀取與設置、命令的發送與接收、數據接收與處理、結果的顯示與查詢四大部分。首先使用 QT Creator界面,然后遵循 Qt/Embedded編程一般規則編寫代碼,最后編譯并通過網絡文件系統(network file system,NFS)進行板上測試。
由于圖形用戶界面應用程序都只有一個執行線程,且一次只執行一個操作。而系統中的數據處理或串口通信都是較耗時的操作。當這些操作被執行時,雖然實際上該操作正在進行,但用戶界面通常會被凍結而不再響應。在QT/E應用程序中,子類化QThread并重新實現它的run()函數,實現多線程,從而解決以上問題[10]。根據系統要求,創建兩個新的線程類,分別用于與兩個下位機進行通信。創建語句如下。
class Thread_master_SCM:public QThread;
class Thread_slave_SCM:public QThread;
兩個線程類在主界面類MainWindow類中創建對象,線程創建后通過QThread::run()函數開始執行。要實現兩個不同的線程對共有數據的互斥訪問,還需使用互斥鎖QMutex mutex來進行線程間的協調與同步工作。
針對小型全自動生化分析儀產品體積小、處理速度快以及人機交互友好等需求,提出了基于ARM-雙單片機系統的設計方法。該系統采用以ARM為上位機、單片機為下位機的雙系統架構,提高了測試速度與測試效率。在上下位機之間使用串口傳送數據與命令,增強了系統的抗干擾能力。上位機系統模塊采用嵌入式Linux系統為操作系統,應用程序使用QT/E開發,并使用液晶觸摸屏使人機交互更加方便快捷。試驗結果表明,控制系統人機交互方便快捷、運動控制實時性好、運算處理能力強、性能穩定可靠。
[1]錢超.全自動生化分析儀機械系統研究[D].哈爾濱:哈爾濱工業大學,2009.
[2]陳東.基于嵌入式Linux的全自動生化分析儀的研究與設計[D].長沙:湖南大學,2006.
[3]吳海波.全自動生化分析儀電子控制系統的設計與實現[D].沈陽:東北大學,2006.
[4]侯冬晴.基于ARM9的指紋識別器的設計[J].自動化儀表,2007,28(11):29 -31.
[5]潘琢金,施國君.C8051FXXX高速SOC單片機原理及應用[M].北京:北京航空航天大學出版社,2002.
[6]張洪輝,黎海文,高春海,等.面向小型全自動生化分析儀的同步可靠的 UART 通信[J].電子技術應用,2010,36(1):128-131.
[7]莫易敏,覃君愷.應用ARM920T的S3C2410A與PC間的異步串行通信設計[J].現代制造工程,2008(6):96-98.
[8]陳佳男,李欣,張海燕.基于ARM+Linux的異步串行通信設計[J].微計算機信息,2009,25(3):139 -140.
[9]岑海洪,楊艷娟.基于ARM和Linux的注塑機上位控制器設計[J].工業儀表與自動化裝置,2010(6):23-26.
[10]Jasmin Blanchette,Mark Summerfield++GUI Programming with QT 4[M].2nd edition.閆鋒欣,譯.北京:電子工業出版社,2008:255-269.