黃 輝 黃躍峰 李勇平 尹聰聰 賈文紅
(中國科學(xué)院上海應(yīng)用物理研究所 上海 201800)
上海光源(SSRF)線站電機控制系統(tǒng)在EPICS環(huán)境下開發(fā)而成,由運行 VxWorks操作系統(tǒng)的MVME5500單板機加上MAXv8000電機控制器完成對電機的控制。其性能優(yōu)良,但VxWorks價格昂貴、VME機箱占用空間較大。本文提出一種由運行Linux的S3C2440計算機(ARM9內(nèi)核)和MAXnet電機控制器組成的全新電機控制系統(tǒng),該系統(tǒng)目前已能正常工作。
EPICS為美國Argonne和Los Alamos等實驗室為大型物理和工業(yè)裝置聯(lián)合開發(fā)的分布式控制軟件工具,基于標(biāo)準(zhǔn)模型的Server/Client模式,具有結(jié)構(gòu)靈活、易于擴展、完全開放源代碼等優(yōu)點,是國際大型光源和對撞機控制系統(tǒng)的主流軟件開發(fā)工具[1]。基于ARM(Advanced RISC Machine)處理器的電機控制系統(tǒng)分為三個部分:(1) OPI(Operator Interface):運行Linux或Windows操作系統(tǒng)的中控電腦或Unix工作站,通過使用EPICS提供的MEDM或EDM設(shè)計的人機界面監(jiān)控各種控制過程,可在同一臺PC機上對多個IOC的運行狀況實行監(jiān)控;(2) IOC:由基于ARM架構(gòu)并安裝Linux操作系統(tǒng)的S3C2440計算機和運行在其中的EIPCS base核心程序iocCore構(gòu)成,核心任務(wù)是通過設(shè)備驅(qū)動程序控制MAXnet電機控制器,并把相關(guān)信息以分布式數(shù)據(jù)庫的方式存儲;(3) 設(shè)備控制層:選用美國Oregon Micro Systems公司的MAXnet電機控制器,可實現(xiàn)5路步進(jìn)/伺服電機的異步或同步驅(qū)動,不依賴VME總線,且提供網(wǎng)口和串口進(jìn)行通信,適用范圍較大并可降低成本。電機驅(qū)動器選用SLS20**系列。
系統(tǒng)的軟件設(shè)計分為OPI層、IOC層和設(shè)備控制層(圖1,標(biāo)示黑色部分由本組研制)。通過EPICS系統(tǒng)的Channel Access協(xié)議,IOC響應(yīng)來自O(shè)PI、IOC本身和網(wǎng)絡(luò)上其他IOC的數(shù)據(jù)請求與控制命令[2]。
系統(tǒng)的軟件開發(fā)環(huán)境為Red Hat Linux 9,base3-14-9,Extension,motor,asyn。Extension提供了多種開發(fā)應(yīng)用軟件,包括人機圖形界面開發(fā)工具EDM。Motor軟件包提供了motor記錄,相關(guān)的記錄支持、設(shè)備支持和一些硬件驅(qū)動支持等。asyn用于建立網(wǎng)口設(shè)備支持模塊,實現(xiàn)IOC中的數(shù)據(jù)庫與電機控制器MAXnet間的通信。
OPI由EPICS提供的EDM進(jìn)行開發(fā),可顯示任意record中任何感興趣的域,只需在界面上選定一小塊,輸入域的信息即可實現(xiàn),圖2為操作界面的一個示例。
IOC系統(tǒng)的軟件包括Channel Access、Database Access、IOC Database、Motor Record Support Module、MAXnet device & driver Module和IP Port Support Module,其中IOC Database須在現(xiàn)有記錄的基礎(chǔ)上根據(jù)系統(tǒng)需要改動,MAXnet device & driver Module須自行編寫,IP Port Support Module借用asyn軟件包來實現(xiàn),其他部分則基本無需改動。
Motor軟件包提供了motor記錄,并定義了多個域,涵蓋了電機控制中的主要信息。最常見的為VELO(運行速度)、VMAX(最大速度)、VBAS(起跳速度)、ACCL(加速度)、DIR(轉(zhuǎn)動方向)等[3]。選擇所需的域,并賦予特定值,啟動IOC時載入記錄,便完成了IOC Database的工作。
圖1 系統(tǒng)軟件設(shè)計圖Fig.1 Overall design of system software.
圖2 OPI界面示例Fig.2 Example of OPI.
MAXnet device & driver Module部分是本設(shè)計的重點和難點,其結(jié)構(gòu)圖見圖3。
圖3 MAXnet模塊結(jié)構(gòu)圖Fig.3 Structure of MAXnet Module.
MotordevCom是MotorRecord調(diào)用設(shè)備層的通用接口,根據(jù)實際需要調(diào)用具體設(shè)備的設(shè)備支持程序 devMAXnet。devMAXnet中定義的 motor_dset類型的數(shù)據(jù)結(jié)構(gòu)——devOmsMAXnet是數(shù)據(jù)庫記錄和驅(qū)動程序之間的接口。
drvMAXnet的主要工作如下:(1) 在系統(tǒng)中為MAXnet的各種狀態(tài)和運行信息申請存儲空間;(2)根據(jù)具體需求設(shè)定MAXnet的工作模式;(3) 把記錄中關(guān)于方位、速度等控制信息轉(zhuǎn)換為MAXnet的控制指令發(fā)送給設(shè)備;(4) 監(jiān)控MAXnet運行并返回控制信息到記錄,處理各種異常情況。
當(dāng)狀態(tài)標(biāo)記被設(shè)置時,MAXnet會異步發(fā)送標(biāo)記以通知主機。標(biāo)記通知字符串的格式為“%000 SSSSSSSS”,其中“%”意味著該串為數(shù)字流,“000”表示該數(shù)字流包含狀態(tài)標(biāo)記信息,八位ASCII碼代表狀態(tài)信息。由于此特征,需在drvMAXnet中的接收函數(shù)中增加對命令解析的處理。
drvMAXnet的程序架構(gòu)參照與 MAXnet同為OMS(Oregon Micro Systems)公司生產(chǎn)的MAXv和PC68電機控制器的驅(qū)動代碼。由于PC68使用串口通信,MAXv與MAXnet的指令最為接近,因此,PC68的數(shù)據(jù)處理方式與MAXnet的指令翻譯過程對drvMAXnet的開發(fā)有很大的參考價值。
MAXnet的設(shè)備應(yīng)用程序使用了網(wǎng)口,需要IP設(shè)備的驅(qū)動支持模塊。EPICS中的asyn軟件包提供的asynDriver(asynchronous driver support)可用于被控設(shè)備與低端驅(qū)動層的接口連接,使設(shè)備支持模塊的工作變得更容易[4]。此外,asyn軟件包中提供的asyncomRecord可方便地用來調(diào)試網(wǎng)口[5]。
在一臺Linux主機上完成了安裝EPICS base包和asyn軟件包、編譯MAXnet device & driver 程序和定義motor記錄后,啟動IOC還需要編寫適當(dāng)?shù)膯幽_本。
經(jīng)上述步驟,主機上建立IOC的工作基本完成,本設(shè)計的目標(biāo)是在嵌入式目標(biāo)機上運行IOC和電機控制程序。首先在一臺Linux主機上安裝Linux-arm的交叉編譯器,對將要下載到ARM開發(fā)板上的內(nèi)核進(jìn)行裁剪,減小占用空間,編譯內(nèi)核后下載到開發(fā)板中。用主機上成功安裝的 EPICS base包以及motor、asyn等支持包交叉編譯出開發(fā)板上可運行的IOC程序,在這個過程中,用NFS方式mount主機的根文件系統(tǒng)會對調(diào)試程序提供很大的便利,省去很多下載工作。程序調(diào)試成功后通過 ftp方式把程序、數(shù)據(jù)庫和啟動腳本下載到目標(biāo)機,修改開發(fā)板的開機配置文件使之自動運行 IOC,完成了 ARM開發(fā)板上IOC的開發(fā)。
電機部分由MAXnet電機控制器、電機驅(qū)動器和電機組成。MAXnet電機控制器(美國 Oregon Micro Systems公司)是高性能電機控制器,與MAXv系列功能類似。MAXnet無VME接口,而代之以串口和Ethernet接口,本文通過網(wǎng)口連接ARM開發(fā)板和MAXnet電機控制器。MAXnet可同時控制5軸電機的同步或異步運動,對于步進(jìn)和伺服電機也同樣適用。
控制開環(huán)的步進(jìn)電機連接線見圖 4,基本控制方式為“方向+轉(zhuǎn)速”。Direction控制電機的轉(zhuǎn)動方向,Step產(chǎn)生50%占空比的脈沖,脈沖個數(shù)決定電機轉(zhuǎn)過的角度。脈沖速度為0–4,199,303 /s,加速度為0–8,000,000 /s2[6],選擇合適的脈沖速度和加速度可控制電機的運行速度、起跳速度和加速度。
圖4 MAXnet與步進(jìn)電機的接線圖[6]Fig.4 The Wiring Diagram between MAXnet and motor.
目前上海光源電機控制系統(tǒng)的使用方式有單電機運動控制和多軸電機同步運動控制。單電機運動,其運動性能與操作系統(tǒng)的反應(yīng)時間和IOC與控制器之間的通信時間無關(guān),且MAXnet控制器與MAXv控制器命令集及參數(shù)指標(biāo)基本一致。因此,本設(shè)計可滿足簡單的單電機運動控制的使用要求。
對于多軸電機同步運動控制,我們用 Soft Motor與transform記錄結(jié)合觸發(fā)三路電機同步運動進(jìn)行了測試,規(guī)定延遲時間為第一路與第三路電機開始運動之間的時間差,同步誤差為運動過程中第一路與第三路電機之間的最大距離差,光源現(xiàn)有電機系統(tǒng)的延遲時間~23 ms。本設(shè)計的延遲時間為~100 ms,當(dāng)電機速度為150 μm/s時,新系統(tǒng)的同步誤差達(dá)15 μm,為光源現(xiàn)有系統(tǒng)的4倍。新系統(tǒng)中的S3C2440計算機升級為性能更高的PC機時,系統(tǒng)的延遲時間能控制在12 ms左右,僅為光源現(xiàn)有電機系統(tǒng)延遲時間的一半,產(chǎn)生的同步誤差也將為光源現(xiàn)有系統(tǒng)同步誤差的一半。表1為三種電機系統(tǒng)的軟硬件及性能比較。
由運行Linux非實時操作系統(tǒng)的PC機組成的電機控制系統(tǒng)性能上優(yōu)于光源現(xiàn)有電機系統(tǒng)。相比總線速度和操作系統(tǒng)實時性,計算機的運算能力對延遲時間的影響更大。實時操作系統(tǒng)帶來的優(yōu)勢并不明顯。
本次設(shè)計表明基于ARM處理器的電機控制系統(tǒng)的可行性,運行 Linux的 S3C2440計算機與MAXnet組成的電機系統(tǒng)在時間響應(yīng)性能上與光源現(xiàn)有電機系統(tǒng)有一定差距,原因在于使用ARM9內(nèi)核的S3C2440計算機是嵌入式開發(fā)的入門級產(chǎn)品,性能有限。將S3C2440(linux)+MAXnet的電機控制系統(tǒng)的計算機升級為PC機,系統(tǒng)的時間響應(yīng)性能會有較大提升。若使用運算能力較強的ARM處理器的計算機,時間響應(yīng)性能可得到很大提升。
本文介紹了EPICS下基于ARM處理器的電機控制系統(tǒng),軟硬件設(shè)計與系統(tǒng)調(diào)試均已完成,證明了基于ARM處理器的電機控制系統(tǒng)的可行性。本系統(tǒng)在位置控制可滿足使用要求,在時間響應(yīng)性能上存在一定差距,若使用高性能處理器,時間響應(yīng)性能可得到很大提升。
使用S3C2440(linux)+MAXnet方案將電機控制系統(tǒng)的成本降低了一個數(shù)量級,而且省去VME機箱,系統(tǒng)體積大大減小。本次設(shè)計是對電機控制系統(tǒng)的一種新嘗試,為上海光源的電機控制系統(tǒng)設(shè)計提供了一種可供參考的思路。
1 閆 芬, 李愛國, 楊 科, 等. 基于EPICS的硬X微聚焦試驗站數(shù)據(jù)采集系統(tǒng)[J]. 核技術(shù), 2009, 32(11): 801–805
YAN Fen, LI Aiguo, YANG ke, et al. EPICS-based data acquisition system of hard X-ray micro focus station[J]. Nucl Tech, 2009, 32(11): 801–805
2 Kraimer M R. EPICS input/output controller(IOC) application developer’s guide[OL], Release 3.14.8, 2005, http: //www. aps. anl. gov/epics/base/R3-14/8. php
3 Tim Mooney, Joe Sullivan, Ron Sluiter. Motor record and related software[OL]. 2003, http://www.Aps.anl.gov/bcda/ synApps/motor/R6-2/motor Record.html
4 Marty Kraimer, Eric Norum, Mark Rivers, et al. asynDriver: asynchronous driver support[OL], Release 4.5, 2006, http: //www. aps. anl. gov /epics/ modules/soft/ asyn/R4-7/asynDriver. html
5 Mark Rivers, Marty Kraimer. Asyn record, release 4-7[OL],2004,http://www.aps.anl.gov/epics/ modules/soft/ asyn/ R4-7/ asynRecord. html
6 User’s manual intelligent motion controller for Ethernet MAXnet[OL]. 2010, http://www.pro-dex.com/motioncontrol/product-catalog/motion-controllers/ethemet/ maxnet-motion-controller.aspx