1.引言
隨著現(xiàn)代電子計(jì)算機(jī)技術(shù)的迅猛發(fā)展及普及,各式各樣的自動(dòng)化分析儀日新月異,而臨床生化檢驗(yàn)是實(shí)現(xiàn)自動(dòng)化最早也最有成效的部分。大部分已裝備的全自動(dòng)生化分析儀無(wú)論其同時(shí)檢測(cè)的項(xiàng)目多少還是其速度的快慢,其核心部分仍是建立在比色分析基礎(chǔ)上的自動(dòng)比色系統(tǒng),其附屬設(shè)備的增加及由計(jì)算機(jī)控制自動(dòng)化程度的提高使分析儀具有了許多功能。
市場(chǎng)上每小時(shí)150―1200個(gè)測(cè)試的全自動(dòng)生化分析儀的基本組成如下:
從框圖可以看出,全自動(dòng)生化分析儀是在計(jì)算機(jī)的程序控制下,圍繞著比色分析而進(jìn)行的一系列工作,同手工操作的化學(xué)反應(yīng)一樣,只不過(guò)是各個(gè)操作步驟都由相應(yīng)的執(zhí)行機(jī)構(gòu)在計(jì)算機(jī)的控制下有序的完成。
2 基于ARM與UCLINUX的控制系統(tǒng)模型
2.1 系統(tǒng)結(jié)構(gòu)模型及優(yōu)點(diǎn)
采用ARM及UCLINUX具有以下好處:
(1)提高控制性能。采用成熟32位的ARM處理器來(lái)控制,可以提高系統(tǒng)可測(cè)的反應(yīng)類型和相應(yīng)的項(xiàng)目。
(2)提高系統(tǒng)可靠性。S3C4510B是一款基于ARM7內(nèi)核的32位RISC架構(gòu)的處理器,其體積小、低功耗、低成本、性能高,支持Thumb(16位)/ARM(32位)雙指令集,能很好的兼容8位/16位器件,采用此芯片后,控制器的硬件器件大為減少,軟件程序大為縮短,均有助提高可靠性。
(3)提高系統(tǒng)實(shí)時(shí)性,采用UCLIMNUX操作系統(tǒng)可以提高系統(tǒng)反應(yīng)時(shí)間,如減少試劑臂下降過(guò)程中觸底的反應(yīng)時(shí)間等等。
(4)降低軟件研發(fā)成本。軟件開(kāi)發(fā)簡(jiǎn)單、快速,可以由更少的軟件研發(fā)人員花更少的時(shí)間完成復(fù)雜的運(yùn)動(dòng)控制編程。
因此,采用采用ARM及UCLINUX能夠提高系統(tǒng)性能,并得到更優(yōu)秀的控制特性。且采用了運(yùn)動(dòng)控制芯片MCX314,由運(yùn)動(dòng)控制芯片來(lái)完成復(fù)雜的運(yùn)動(dòng)控制,而ARM處理器用來(lái)管理調(diào)度。
圖1表示了基于這種思想開(kāi)發(fā)的數(shù)控系統(tǒng)的結(jié)構(gòu)。
2.2 數(shù)控系統(tǒng)的硬件結(jié)構(gòu)
系統(tǒng)硬件采用ARM處理器加運(yùn)動(dòng)控制芯片結(jié)構(gòu)模式。ARM處理器選用SANSUM公司的4510B處理芯片,用于鍵盤、顯示,網(wǎng)絡(luò)通訊等管理工作,而運(yùn)動(dòng)控制芯片采用了NOVA電子有限公司的MCX314芯片,專門負(fù)責(zé)運(yùn)動(dòng)控制的處理工作, MCX314芯片是一款能夠同時(shí)控制4個(gè)伺服馬達(dá)或步進(jìn)馬達(dá)的運(yùn)動(dòng)控制芯片,它以脈沖串形式輸出,能對(duì)伺服馬達(dá)或步進(jìn)馬達(dá)進(jìn)行位置控制、插補(bǔ)驅(qū)動(dòng)、速度控制等。該芯片輸出的脈沖速度范圍為1PPS一4MPPS,可以滿足高速驅(qū)動(dòng)的需求,并且脈沖的頻率精確度小于0.1%。。控制系統(tǒng)硬件結(jié)構(gòu)如圖2所示。
2.3 ARM 處理器與運(yùn)動(dòng)控制芯片的連接
MCX314與CPU的連接如圖3所示。其中:CLK是啟動(dòng)MCX314的內(nèi)部同步電路的主時(shí)鐘信號(hào)輸入端,其頻率為16.000MHz。驅(qū)動(dòng)速度、加/減速度、加速度/減速度的變化率都根據(jù)此頻率設(shè)定。A0-A2是MCX314讀/寫(xiě)寄存器的地址信號(hào)。CSN為片選信號(hào),低電平有效。INTN是供CPU使用的中斷請(qǐng)求信號(hào),由任何中斷因素引發(fā)中斷,INTN都為低電平,中斷解除后,返回高阻態(tài)。WRN和RDN分別是寫(xiě)使能和讀使能。PLS是Pulse/DIR模式下的脈沖輸出端,占空比為50%,復(fù)位后為低電平。DIR是Pulse/DIR模式下的方向信號(hào)輸出端,占空比為50%,復(fù)位后為低電平。LMTP和LMPM分別是正方向和負(fù)方向的越限信號(hào)輸入端,在正、負(fù)方向驅(qū)動(dòng)脈沖輸出過(guò)程中,此信號(hào)有效就執(zhí)行減速停止或立即停止,在方式選擇中,可設(shè)定減速停止或立即停止和邏輯電平。IN0~IN3用于立即停止或減速運(yùn)動(dòng)中的軸,這里接原點(diǎn)和各工位的光電開(kāi)關(guān)輸入信號(hào)。EMGN信號(hào)常用于緊急停車,低電平會(huì)立即停止所有輸出。
3 控制系統(tǒng)軟件設(shè)計(jì)
3.1控制系統(tǒng)軟件構(gòu)架
uClinux是控制領(lǐng)域的嵌入式操作系統(tǒng),其優(yōu)勢(shì)在于開(kāi)源,免費(fèi).穩(wěn)定及強(qiáng)大的網(wǎng)絡(luò)功能,其內(nèi)核的功能結(jié)構(gòu)與Linux基本相同. 只是對(duì)內(nèi)存管理和進(jìn)程管理進(jìn)行改寫(xiě)。uClinux不支持MMU.不能使用處理器的虛擬內(nèi)存技術(shù),它采用的是實(shí)存儲(chǔ)器管理策略u(píng)Clinux采用romfs文件系統(tǒng).這種文件系統(tǒng)相對(duì)于一般的ext2文件系統(tǒng)占有更少的空間。uClinux重寫(xiě)了應(yīng)用程序庫(kù)。相對(duì)于大而全的glibc庫(kù),uclibc 對(duì)libc做了精簡(jiǎn)。
為了最大的利用系統(tǒng)硬件資源,并且還要保證實(shí)時(shí)性,所以使用了uClinux這個(gè)多任務(wù)實(shí)時(shí)操作系統(tǒng),通過(guò)它實(shí)現(xiàn)多任務(wù)實(shí)時(shí)控制。程序的編程語(yǔ)言為C語(yǔ)言以及ARM匯編語(yǔ)言。uClinux的所有源代碼都作為本程序的一部分,并與其它代碼一起進(jìn)行編譯和鏈接。系統(tǒng)的軟件構(gòu)架如圖4所示。
程序運(yùn)行時(shí)將會(huì)先后創(chuàng)建如下任務(wù):
(1) TaskStart 系統(tǒng)運(yùn)行后創(chuàng)建的第一個(gè)任務(wù),完成一些初始化工作以及創(chuàng)建其它任務(wù),所有工作完成后此任務(wù)將會(huì)被刪除。
(2) TaskMainMenu 主任務(wù),系統(tǒng)的菜單、網(wǎng)絡(luò)下載以及測(cè)試等都在此任務(wù)中完成,進(jìn)入運(yùn)動(dòng)控制任務(wù)后此任務(wù)會(huì)被掛起。
(3) TaskContml 運(yùn)動(dòng)控制任務(wù),負(fù)責(zé)編織過(guò)程中命令發(fā)送、運(yùn)動(dòng)芯片狀態(tài)讀取、IO口操作等控制。
(4)TaskErrorControl 異常處理任務(wù),負(fù)責(zé)運(yùn)動(dòng)過(guò)程中的異常處理。
(5)TaskStatusControl 運(yùn)動(dòng)狀態(tài)任務(wù),負(fù)責(zé)運(yùn)動(dòng)過(guò)程中的狀態(tài)顯示以及參數(shù)設(shè)置。
(6)TaskKeyInt 按鍵處理任務(wù),負(fù)責(zé)對(duì)鍵盤輸入的接收。
(7)TaskNetHandle 網(wǎng)絡(luò)任務(wù),負(fù)責(zé)對(duì)網(wǎng)絡(luò)數(shù)據(jù)包的處理。
(8)Taskstatus 系統(tǒng)狀態(tài)任務(wù),負(fù)責(zé)顯示CPU利用率、編碼器值等系統(tǒng)狀態(tài)。
2.2 UClinux的移植和驅(qū)動(dòng)程序的編寫(xiě)
操作系統(tǒng)采用目前比較流行的嵌入式Linux操作系統(tǒng)UClinux。移植UClinux到S3C4510B上主要需要解決以下一些問(wèn)題:
交叉編譯環(huán)境的建立:在宿主機(jī)上安裝arm―elf―tool工具包,建立基于ARM體系結(jié)構(gòu)的編譯器、鏈接器、調(diào)試器以及一些實(shí)用程序,編譯UClinux內(nèi)核、制作文件系統(tǒng)都需要依賴此交叉編譯環(huán)境。
加載方式:UClinux的內(nèi)核有兩種運(yùn)行方式,可以在Flash上直接運(yùn)行;也可以加載到RAM 中運(yùn)行。我們采用了boot-loader來(lái)執(zhí)行設(shè)置開(kāi)機(jī)寄存器的配置、內(nèi)核與文件系統(tǒng)的加載以及傳遞硬件與啟動(dòng)參數(shù)給內(nèi)核的方式加載UClinux內(nèi)核。
配置、編譯:在編譯UClinux內(nèi)核之前,首先要進(jìn)行內(nèi)核的系統(tǒng)類型、通用選項(xiàng)、塊設(shè)備、文件系統(tǒng)、字符設(shè)備的選擇和配置。最后用make zlmage命令生成壓縮好的內(nèi)核Zlmage。
UClinux的根文件系統(tǒng)的加載:系統(tǒng)內(nèi)核啟動(dòng)成功之后便會(huì)試圖加載根文件系統(tǒng)。UClinux采用的romfs根文件系統(tǒng),
romfs中需要保證基本目錄和基本應(yīng)用程序的存在,這樣操作系統(tǒng)才能正常工作。
此外,還必須為各外部硬件設(shè)備編寫(xiě)UClinux的驅(qū)動(dòng)程序,如IIC總線驅(qū)動(dòng)、LCD驅(qū)動(dòng)、打印機(jī)驅(qū)動(dòng)等。UClinux的驅(qū)動(dòng)程序結(jié)構(gòu)和標(biāo)準(zhǔn)Linux驅(qū)動(dòng)程序結(jié)構(gòu)類似。大部分的標(biāo)準(zhǔn)Linux驅(qū)動(dòng)都是采用模塊化的方式,以支持動(dòng)態(tài)加載/卸載的功能;而嵌入式系統(tǒng)都是針對(duì)具體應(yīng)用的,一般不需要此功能,所以UClinux的驅(qū)動(dòng)程序都是直接編譯到內(nèi)核中去的。
3.2 運(yùn)動(dòng)控制芯片的控制
與MCX314進(jìn)行數(shù)據(jù)交換主要通過(guò)以WR開(kāi)頭的8個(gè)寫(xiě)寄存器和以RR開(kāi)頭的8個(gè)讀寄存器。MCX314既可以用16位數(shù)據(jù)總線訪問(wèn),也可以用8位數(shù)據(jù)總線訪問(wèn)。當(dāng)用8位數(shù)據(jù)總線訪問(wèn)時(shí),需要使用A0、A1、A2和A3。系統(tǒng)初始化時(shí)皆應(yīng)預(yù)先設(shè)施寄存器初始制。
通過(guò)32位邏輯、實(shí)時(shí)位置計(jì)數(shù)器和比較寄存器實(shí)現(xiàn)位置反饋和控制;通過(guò)中斷端口向主控制器發(fā)出中斷請(qǐng)求;提供32個(gè)輸出端口和48個(gè)輸入端口,這些端口的功能各具特色。
本系統(tǒng)中運(yùn)動(dòng)控制芯片主要用于對(duì)4個(gè)軸(X.Y.Z.U)進(jìn)行控制,X軸初始化程序流程圖如下所示。
4 結(jié)論
采用基于ARM7的S3C451OB嵌入式微處理器,可以使系統(tǒng)小型化,便于提高性能以及與各種外設(shè)連接擴(kuò)展,同時(shí)降低了成本。uclinux作為一個(gè)源代碼公開(kāi)的操作系統(tǒng),在具體應(yīng)用種穩(wěn)定可靠。本系統(tǒng)采用ARM7+ uclinux開(kāi)發(fā)設(shè)計(jì),具有精度高、運(yùn)行穩(wěn)定、實(shí)時(shí)性好、抗干擾能力強(qiáng)、性價(jià)比高的特點(diǎn),通過(guò)實(shí)驗(yàn)證明,這種設(shè)計(jì)方案是可行的,如果接入網(wǎng)絡(luò)接口應(yīng)用,將取得更好效果。