1 電磁打樁機及其功能要求簡介
電磁驅(qū)動是指導(dǎo)體在電磁場中受到電磁作用力而發(fā)生運動。電磁驅(qū)動器是由單組線圈外加軛鐵構(gòu)成。當(dāng)電樞進(jìn)入電磁驅(qū)動器中時,線圈不通電,由于軛鐵和電樞都是用軟磁性材料制成,它們之間沒有作用力;當(dāng)線圈通電,軛鐵和電樞都被磁化,軛鐵和電樞以及軛鐵與電樞之間的空氣間隙組成閉合磁路,電磁驅(qū)動器與電樞之間將產(chǎn)生電磁相互作用。但這種相互作用與電樞和驅(qū)動器之間的相對位置有關(guān),當(dāng)電樞處于驅(qū)動器的中平面上,磁阻最小,作用力為零;當(dāng)電樞處于驅(qū)動器的某一端時,作用力使電樞向另一端運動。要強調(diào)的是,這種作用力的大小除了與電樞和驅(qū)動器相對位置有關(guān)外,僅與線圈電流的大小有關(guān),而與電流的變化率無關(guān)。
圖1 電磁打樁機結(jié)構(gòu)圖
如果將電磁驅(qū)動器與某個物體相連接,并且讓其在與電樞發(fā)生相互作用時受到的作用力方向總是朝一個方向,那么電磁驅(qū)動器就能帶著那個物體總是朝另一個方向運動。筆者所要設(shè)計的電磁打樁機正是運用了上面的原理,電磁打樁機結(jié)構(gòu)如圖1所示。
電磁打樁機工作的關(guān)鍵是線圈放電時機、放電時間和放電強度的選擇,而且對準(zhǔn)確性和實時性的要求很高,靠傳統(tǒng)的機械和電子手段已經(jīng)不能解決問題。為了保證控制的準(zhǔn)確性和快速反應(yīng)能力,必須采用計算機技術(shù)。在打樁過程中可能需要對樁的狀態(tài)和性能做分析,樁的動測技術(shù)同樣也要采用計算機技術(shù)來實現(xiàn)對信號的采集和處理分析。由于電磁打樁機機電部件多而且工作環(huán)境惡劣,在野外難免會發(fā)生故障,這就要求它能具有一定的自我故障診斷功能。
2 電磁打樁機控制器總體結(jié)構(gòu)設(shè)計
嵌入式系統(tǒng)作為一個專用的計算機非常適合這種場合,根據(jù)電磁打樁機的功能要求和嵌入式系統(tǒng)的一般設(shè)計原則并結(jié)合未來的發(fā)展趨勢,電磁打樁機控制器的結(jié)構(gòu)設(shè)計如圖2所示。
圖2 電磁打樁機控制器結(jié)構(gòu)圖
3 電磁打樁機控制器的硬件
(1) 微處理器
一個嵌入式系統(tǒng)最核心的硬件是微處理器,筆者選擇SAMSUNG公司的S3C44B0X作為電磁打樁機控制器的處理器,這是一款專為手持設(shè)備和一般應(yīng)用提供的高性價比和高性能的ARM7TDMI核和RISC結(jié)構(gòu)的32位微處理器。S3C44B0X自身帶有擴展內(nèi)存控制器、LCD控制器、71個通用I/O、8個10位ADC、帶PWM的定義器等。
(2) 存儲器系統(tǒng)
對于系統(tǒng)的存儲結(jié)構(gòu),采用BIOS+系統(tǒng)內(nèi)存+海量存儲器的形式。系統(tǒng)通過BIOS啟動,然后將硬盤里面的可執(zhí)行文件拷貝到系統(tǒng)內(nèi)存中,系統(tǒng)開始運行。BIOS采用NOR FLASH(線性FLASH),系統(tǒng)內(nèi)存采用SDRAM,海量存儲采用NAND FLASH(非線性FLASH)。S3C44B0X的地址空間具有8個Bank,在這里Bank0用作BIOS,Bank1用作海量存儲,Bank6用作系統(tǒng)內(nèi)存。S3C44B0X支持多種數(shù)據(jù)總線,這里采用的是16位數(shù)據(jù)總線,因此在存儲器與處理器相連的時候要將存儲器地址引腳A0和S3C44B0X的地址引腳A1相連,其他對應(yīng)相連。
(3) 人機接口
人機接口包括鍵盤和LCD顯示。鍵盤采用4×4的小鍵盤,分別有0~9、小數(shù)點、↑、↓、←、→、Enter這16個鍵。鍵盤采用行列布局,以掃描的方式工作。鍵盤的行列線分別接在S3C44B0X的8個通用I/O口上。
由于S3C44B0X內(nèi)部帶有LCD控制器,因此只需外接LCD顯示屏,配以外圍的驅(qū)動電路,再對LCD的寄存器進(jìn)行編程即可。這里給電磁打樁機控制配置的顯示屏是常見的320×240的單色LCD。
(4) 系統(tǒng)接口
為了使電磁打樁機控制器能夠與外界交換信息,一些接口是必不可少的。在這里使用RS-232C作為其串行接口。S3C44B0X本身帶有UART(通用異步收發(fā)器),可以提供兩個獨立的異步串行I/O口。由于RS-232C和UART端口的電平特性不同,要通過電平轉(zhuǎn)換芯片如MAX3232等來實現(xiàn)兩者之間電平的轉(zhuǎn)換。
USB接口是已漸漸成為標(biāo)準(zhǔn)接口,具有很強的通用性和擴展性。S3C44B0X沒有USB控制器,因此通過外部的USB控制器USBN9603來擴展出一個USB接口,該接口是作為設(shè)備接口使用的。
隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,特別是IPv6技術(shù)的發(fā)展,這使得每一個嵌入式設(shè)備都有機會接入因特網(wǎng)。電磁打樁機控制器一旦能夠與網(wǎng)絡(luò)連接,就可以通過網(wǎng)絡(luò)實現(xiàn)遠(yuǎn)程控制、遠(yuǎn)程診斷和軟件的遠(yuǎn)程下載等。S3C44B0X沒有自帶Ethernet接口,這就需要通過外部Ethernet控制芯片來完成。這里用的是最常見的Ethernet控制芯片RTL8019AS。Ethernet的物理接口一般是RJ-45接口,RTL8019AS的數(shù)據(jù)收發(fā)線經(jīng)隔離變壓器與RJ-45相對應(yīng)的端口相連。
(5) 數(shù)字、模擬I/O
電磁打樁機由許多部件組成,對各個組成部件的開關(guān)控制、部件狀態(tài)的監(jiān)測等需要許多數(shù)字I/O口;而且設(shè)備還有各種傳感器,這些傳感器發(fā)回的大多是模擬信號,這就需要模擬I/O口。S3C44B0X本身帶有71個通用數(shù)字I/O,但很多都被占用,筆者用兩片8255A來擴展到24路輸入和24路輸出。電磁打樁機除了傳感器之外,其他部件與控制器之間的傳輸?shù)男盘柣旧蠜]有模擬信號,而且S3C44B0X本身帶有8個10位ADC,數(shù)量和精度都已經(jīng)能夠滿足使用要求,因此無需專門設(shè)計模擬信號輸入輸出。
(6) 外圍輔助電路
由于電磁打樁機控制器各個器件的工作電壓是不同的,如S3C44B0X內(nèi)核為2.5V,I/O為3.3V,LCD驅(qū)動需要28V等。通過MAX1677可以從0.7~5.5V的輸入得到3.3V和28V的電壓,2.5V的電壓則通過對3.3V的電壓經(jīng)二極管降壓得到。
其他的如復(fù)位、時鐘電路也是必不可少的。
4 電磁打樁機控制器的軟件
(1) 操作系統(tǒng)μC/OS-Ⅱ
嵌入式系統(tǒng)的軟件一般可分為兩種,一種是沒有操作系統(tǒng)的,一種是有操作系統(tǒng)的。沒有操作系統(tǒng)的通常是通過CPU在所有任務(wù)之間輪回調(diào)度來實現(xiàn),整個程序是一個無限循環(huán)。由于電磁打樁機控制器所要做的較多,而且對于某些事情線圈放電參數(shù)計算,其實時性要求很高,這就要用實時嵌入式操作系統(tǒng)來管理。這里為電磁打樁機控制器選擇的操作系統(tǒng)是Jean J. Labrosse的μC/OS-Ⅱ。
μC/OS-Ⅱ是一款開放源碼的實時嵌入式操作系統(tǒng),具有可移植性強、可固化、可裁剪、內(nèi)核短小精悍等特點,是比較理想的低端嵌入式操作系統(tǒng)。
(2) μC/OS-Ⅱ在S3C44B0X上的移植
μC/OS-Ⅱ在設(shè)計之初就考慮到了在不同CPU上運行,因此將和CPU與編譯器相關(guān)的部分都獨立出來。μC/OS-Ⅱ與CPU和編譯器有關(guān)的部分都集中在OS_CPU.H、OS_CPU_A.ASM和OS_CPU_C.C文件中。將μC/OS-Ⅱ移植到S3C44B0X就要根據(jù)S3C44B0X和編譯器對這三個文件進(jìn)行改寫。
OS_CPU.H文件包含與編譯器相關(guān)的數(shù)據(jù)類型、堆棧的定義以及用于開關(guān)中斷的宏的定義。
OS_CPU_A.ASM中要改實現(xiàn)的是與處理器相關(guān)的幾個函數(shù):運行優(yōu)先級最高的就緒任務(wù)函數(shù)OSStartHighRdy()、任務(wù)級的任務(wù)切換函數(shù)OSCtxSw()、中斷級的任務(wù)切換函數(shù)OSIntCtxSw()和時鐘節(jié)拍中斷服務(wù)函數(shù)OSTickISR()。這些函數(shù)只能用匯編語言編寫。
OS_CPU_C.C中需要用C語言實現(xiàn)和操作系統(tǒng)有關(guān)的幾個函數(shù):任務(wù)堆棧初始化函數(shù)OSTaskStkInit()和另外5個鉤子函數(shù)。鉤子函數(shù)可以不添加代碼。
對這三個文件進(jìn)行改寫后經(jīng)調(diào)試μC/OS-Ⅱ就可以在S3C44B0X上運行了。
(3) μC/OS-Ⅱ網(wǎng)絡(luò)連接的實現(xiàn)
設(shè)備要與現(xiàn)有因特網(wǎng)連接就必須要支持TCP/IP協(xié)議。μC/OS-Ⅱ只提供了一個內(nèi)核,它本身并不帶有TCP/IP協(xié)議,但通過自己編寫代碼或使用第三方的軟件可以實現(xiàn)μC/OS-Ⅱ的網(wǎng)絡(luò)連接。這里將LwIP移植到μC/OS-Ⅱ上來實現(xiàn)網(wǎng)絡(luò)連接。
LwIP是瑞士計算機學(xué)院(SICS)的Adam Dunkels等人開發(fā)的一套用于嵌入式系統(tǒng)的開發(fā)源碼的TCP/IP協(xié)議棧。LwIP實現(xiàn)的重點是在保持TCP協(xié)議主要功能的基礎(chǔ)上減少對RAM的需求。一般只需要幾十K的RAM和ROM就可以運行,非常適合在低端嵌入式系統(tǒng)中使用。LwIP在設(shè)計之時就充分考慮了在各種操作系統(tǒng)上的移植,將與硬件、操作系統(tǒng)和編譯器相關(guān)的都獨立出來。
LwIP中與CPU或編譯器有關(guān)的文件包括cc.h、cpu.h和perf.h,這些文件定義了數(shù)據(jù)長度、字的高低位順序等。
sys_arch.c中的內(nèi)容主要是與操作系統(tǒng)有關(guān)的一些結(jié)構(gòu)和函數(shù)。在這里要實現(xiàn)的有系統(tǒng)初始化sys_init()、新線程的創(chuàng)建sys_thread_new()、信號量的創(chuàng)建和使用sys_sem_t、消息的創(chuàng)建和使用sys_mbox_t,以及等待超時時間timeout的實現(xiàn)。
在lib_arch.c中有一些LwIP用到的外部函數(shù)要實現(xiàn),這些函數(shù)主要是改變字節(jié)順序的函數(shù)和一些字符串處理函數(shù)。
LwIP為網(wǎng)絡(luò)設(shè)備制定了一個ethernetif.c的模板用于網(wǎng)絡(luò)設(shè)備的驅(qū)動。根據(jù)使用的網(wǎng)絡(luò)芯片的不同對ethernetif.c文件進(jìn)行改寫。驅(qū)動中要做的就是對網(wǎng)卡的初始化、接收、發(fā)送和中斷處理操作。
(4) 針對電磁打樁機的應(yīng)用程序
針對電磁打樁機的實際工作情況和其控制器的設(shè)計,其應(yīng)用程序基本上包括如下幾個部分:
? 人機接口程序,如鍵盤和LCD顯示;
? 數(shù)字、模擬I/O口處理程序;
? 系統(tǒng)自檢、故障診斷程序;
? 打樁程序;
? 樁測試程序;
? 其他服務(wù)程序。
μC/OS-Ⅱ中的應(yīng)用程序是以任務(wù)的形式出現(xiàn)。根據(jù)實際使用要求,筆者為上述六種任務(wù)制定相應(yīng)的優(yōu)先級。μC/OS-Ⅱ為自己保留了8個任務(wù)的,用戶可以使用的有56個。將鍵盤任務(wù)的優(yōu)先級定為10,是應(yīng)用程序中的最高優(yōu)先級,其他應(yīng)用任務(wù)的優(yōu)先級依次降低。
由于在打樁時5和6程序并不是必要的,因此只是在被人為激活后才進(jìn)入運行,運行結(jié)束后任務(wù)進(jìn)入休眠狀態(tài)。
5 結(jié)語
基于ARM核微處理器和μC/OS-Ⅱ操作系統(tǒng)的嵌入式系統(tǒng)作為電磁打樁機控制器可以有效實現(xiàn)對設(shè)備的控制并且能夠具有一定的智能化水平。同時由于硬件設(shè)計上充分考慮到了大多數(shù)應(yīng)用的需要,軟件結(jié)構(gòu)采用操作系統(tǒng)+應(yīng)用程序的模型,只要對硬件做很小的改到,通過軟件編程就可以使它很容易應(yīng)用到其他應(yīng)用場合