黃 輝 黃躍峰 李勇平 尹聰聰 賈文紅
(中國科學院上海應用物理研究所 上海 201800)
上海光源(SSRF)線站電機控制系統在EPICS環境下開發而成,由運行 VxWorks操作系統的MVME5500單板機加上MAXv8000電機控制器完成對電機的控制。其性能優良,但VxWorks價格昂貴、VME機箱占用空間較大。本文提出一種由運行Linux的S3C2440計算機(ARM9內核)和MAXnet電機控制器組成的全新電機控制系統,該系統目前已能正常工作。
EPICS為美國Argonne和Los Alamos等實驗室為大型物理和工業裝置聯合開發的分布式控制軟件工具,基于標準模型的Server/Client模式,具有結構靈活、易于擴展、完全開放源代碼等優點,是國際大型光源和對撞機控制系統的主流軟件開發工具[1]。基于ARM(Advanced RISC Machine)處理器的電機控制系統分為三個部分:(1) OPI(Operator Interface):運行Linux或Windows操作系統的中控電腦或Unix工作站,通過使用EPICS提供的MEDM或EDM設計的人機界面監控各種控制過程,可在同一臺PC機上對多個IOC的運行狀況實行監控;(2) IOC:由基于ARM架構并安裝Linux操作系統的S3C2440計算機和運行在其中的EIPCS base核心程序iocCore構成,核心任務是通過設備驅動程序控制MAXnet電機控制器,并把相關信息以分布式數據庫的方式存儲;(3) 設備控制層:選用美國Oregon Micro Systems公司的MAXnet電機控制器,可實現5路步進/伺服電機的異步或同步驅動,不依賴VME總線,且提供網口和串口進行通信,適用范圍較大并可降低成本。電機驅動器選用SLS20**系列。
系統的軟件設計分為OPI層、IOC層和設備控制層(圖1,標示黑色部分由本組研制)。通過EPICS系統的Channel Access協議,IOC響應來自OPI、IOC本身和網絡上其他IOC的數據請求與控制命令[2]。
系統的軟件開發環境為Red Hat Linux 9,base3-14-9,Extension,motor,asyn。Extension提供了多種開發應用軟件,包括人機圖形界面開發工具EDM。Motor軟件包提供了motor記錄,相關的記錄支持、設備支持和一些硬件驅動支持等。asyn用于建立網口設備支持模塊,實現IOC中的數據庫與電機控制器MAXnet間的通信。
OPI由EPICS提供的EDM進行開發,可顯示任意record中任何感興趣的域,只需在界面上選定一小塊,輸入域的信息即可實現,圖2為操作界面的一個示例。
IOC系統的軟件包括Channel Access、Database Access、IOC Database、Motor Record Support Module、MAXnet device & driver Module和IP Port Support Module,其中IOC Database須在現有記錄的基礎上根據系統需要改動,MAXnet device & driver Module須自行編寫,IP Port Support Module借用asyn軟件包來實現,其他部分則基本無需改動。
Motor軟件包提供了motor記錄,并定義了多個域,涵蓋了電機控制中的主要信息。最常見的為VELO(運行速度)、VMAX(最大速度)、VBAS(起跳速度)、ACCL(加速度)、DIR(轉動方向)等[3]。選擇所需的域,并賦予特定值,啟動IOC時載入記錄,便完成了IOC Database的工作。

圖1 系統軟件設計圖Fig.1 Overall design of system software.

圖2 OPI界面示例Fig.2 Example of OPI.
MAXnet device & driver Module部分是本設計的重點和難點,其結構圖見圖3。

圖3 MAXnet模塊結構圖Fig.3 Structure of MAXnet Module.
MotordevCom是MotorRecord調用設備層的通用接口,根據實際需要調用具體設備的設備支持程序 devMAXnet。devMAXnet中定義的 motor_dset類型的數據結構——devOmsMAXnet是數據庫記錄和驅動程序之間的接口。
drvMAXnet的主要工作如下:(1) 在系統中為MAXnet的各種狀態和運行信息申請存儲空間;(2)根據具體需求設定MAXnet的工作模式;(3) 把記錄中關于方位、速度等控制信息轉換為MAXnet的控制指令發送給設備;(4) 監控MAXnet運行并返回控制信息到記錄,處理各種異常情況。
當狀態標記被設置時,MAXnet會異步發送標記以通知主機。標記通知字符串的格式為“%000 SSSSSSSS”,其中“%”意味著該串為數字流,“000”表示該數字流包含狀態標記信息,八位ASCII碼代表狀態信息。由于此特征,需在drvMAXnet中的接收函數中增加對命令解析的處理。
drvMAXnet的程序架構參照與 MAXnet同為OMS(Oregon Micro Systems)公司生產的MAXv和PC68電機控制器的驅動代碼。由于PC68使用串口通信,MAXv與MAXnet的指令最為接近,因此,PC68的數據處理方式與MAXnet的指令翻譯過程對drvMAXnet的開發有很大的參考價值。
MAXnet的設備應用程序使用了網口,需要IP設備的驅動支持模塊。EPICS中的asyn軟件包提供的asynDriver(asynchronous driver support)可用于被控設備與低端驅動層的接口連接,使設備支持模塊的工作變得更容易[4]。此外,asyn軟件包中提供的asyncomRecord可方便地用來調試網口[5]。
在一臺Linux主機上完成了安裝EPICS base包和asyn軟件包、編譯MAXnet device & driver 程序和定義motor記錄后,啟動IOC還需要編寫適當的啟動腳本。
經上述步驟,主機上建立IOC的工作基本完成,本設計的目標是在嵌入式目標機上運行IOC和電機控制程序。首先在一臺Linux主機上安裝Linux-arm的交叉編譯器,對將要下載到ARM開發板上的內核進行裁剪,減小占用空間,編譯內核后下載到開發板中。用主機上成功安裝的 EPICS base包以及motor、asyn等支持包交叉編譯出開發板上可運行的IOC程序,在這個過程中,用NFS方式mount主機的根文件系統會對調試程序提供很大的便利,省去很多下載工作。程序調試成功后通過 ftp方式把程序、數據庫和啟動腳本下載到目標機,修改開發板的開機配置文件使之自動運行 IOC,完成了 ARM開發板上IOC的開發。
電機部分由MAXnet電機控制器、電機驅動器和電機組成。MAXnet電機控制器(美國 Oregon Micro Systems公司)是高性能電機控制器,與MAXv系列功能類似。MAXnet無VME接口,而代之以串口和Ethernet接口,本文通過網口連接ARM開發板和MAXnet電機控制器。MAXnet可同時控制5軸電機的同步或異步運動,對于步進和伺服電機也同樣適用。
控制開環的步進電機連接線見圖 4,基本控制方式為“方向+轉速”。Direction控制電機的轉動方向,Step產生50%占空比的脈沖,脈沖個數決定電機轉過的角度。脈沖速度為0–4,199,303 /s,加速度為0–8,000,000 /s2[6],選擇合適的脈沖速度和加速度可控制電機的運行速度、起跳速度和加速度。

圖4 MAXnet與步進電機的接線圖[6]Fig.4 The Wiring Diagram between MAXnet and motor.
目前上海光源電機控制系統的使用方式有單電機運動控制和多軸電機同步運動控制。單電機運動,其運動性能與操作系統的反應時間和IOC與控制器之間的通信時間無關,且MAXnet控制器與MAXv控制器命令集及參數指標基本一致。因此,本設計可滿足簡單的單電機運動控制的使用要求。
對于多軸電機同步運動控制,我們用 Soft Motor與transform記錄結合觸發三路電機同步運動進行了測試,規定延遲時間為第一路與第三路電機開始運動之間的時間差,同步誤差為運動過程中第一路與第三路電機之間的最大距離差,光源現有電機系統的延遲時間~23 ms。本設計的延遲時間為~100 ms,當電機速度為150 μm/s時,新系統的同步誤差達15 μm,為光源現有系統的4倍。新系統中的S3C2440計算機升級為性能更高的PC機時,系統的延遲時間能控制在12 ms左右,僅為光源現有電機系統延遲時間的一半,產生的同步誤差也將為光源現有系統同步誤差的一半。表1為三種電機系統的軟硬件及性能比較。
由運行Linux非實時操作系統的PC機組成的電機控制系統性能上優于光源現有電機系統。相比總線速度和操作系統實時性,計算機的運算能力對延遲時間的影響更大。實時操作系統帶來的優勢并不明顯。
本次設計表明基于ARM處理器的電機控制系統的可行性,運行 Linux的 S3C2440計算機與MAXnet組成的電機系統在時間響應性能上與光源現有電機系統有一定差距,原因在于使用ARM9內核的S3C2440計算機是嵌入式開發的入門級產品,性能有限。將S3C2440(linux)+MAXnet的電機控制系統的計算機升級為PC機,系統的時間響應性能會有較大提升。若使用運算能力較強的ARM處理器的計算機,時間響應性能可得到很大提升。
本文介紹了EPICS下基于ARM處理器的電機控制系統,軟硬件設計與系統調試均已完成,證明了基于ARM處理器的電機控制系統的可行性。本系統在位置控制可滿足使用要求,在時間響應性能上存在一定差距,若使用高性能處理器,時間響應性能可得到很大提升。
使用S3C2440(linux)+MAXnet方案將電機控制系統的成本降低了一個數量級,而且省去VME機箱,系統體積大大減小。本次設計是對電機控制系統的一種新嘗試,為上海光源的電機控制系統設計提供了一種可供參考的思路。
1 閆 芬, 李愛國, 楊 科, 等. 基于EPICS的硬X微聚焦試驗站數據采集系統[J]. 核技術, 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