朱澤瑋,沈奶連
(上海理工大學(xué) 光電信息與計(jì)算機(jī)工程學(xué)院,上海 200093)
基于EPICS的伺服平臺(tái)驅(qū)動(dòng)開(kāi)發(fā)
朱澤瑋,沈奶連
(上海理工大學(xué) 光電信息與計(jì)算機(jī)工程學(xué)院,上海 200093)
針對(duì)實(shí)驗(yàn)物理與工業(yè)控制系統(tǒng)軟件環(huán)境中缺乏伺服電機(jī)驅(qū)動(dòng)支持,不能直接使用伺服電機(jī)搭建實(shí)驗(yàn)平臺(tái)進(jìn)行實(shí)驗(yàn)的問(wèn)題。文中設(shè)計(jì)采用StreamDevice軟件模塊,配置IOC調(diào)用StreamDevices實(shí)現(xiàn)控制功能。建立伺服電機(jī)在EPICS環(huán)境下的輸入輸出控制器, IOC采用串口通信的方式,發(fā)送控制指令至伺服電機(jī)控制器,并由控制器和驅(qū)動(dòng)器完成伺服電機(jī)的運(yùn)動(dòng)控制。制作了圖形控制軟件界面,方便操作員直觀地對(duì)伺服電機(jī)操作控制。設(shè)計(jì)實(shí)現(xiàn)了伺服電機(jī)在EPICS環(huán)境下的精確運(yùn)動(dòng)控制和實(shí)時(shí)通信響應(yīng)。
EPICS;StreamDevice;伺服電機(jī)驅(qū)動(dòng);IOC;運(yùn)動(dòng)控制
實(shí)驗(yàn)物理與工業(yè)控制系統(tǒng)(Experimental Physics and Industrial Control System, EPICS)是由美國(guó)洛斯阿拉莫斯國(guó)家實(shí)驗(yàn)室和阿貢國(guó)家實(shí)驗(yàn)室聯(lián)合開(kāi)發(fā)的分布式控制系統(tǒng)開(kāi)發(fā)軟件,主要用于開(kāi)發(fā)基于網(wǎng)絡(luò)的分布式控制系統(tǒng)[1-2]。EPICS系統(tǒng)具有運(yùn)行穩(wěn)定、結(jié)構(gòu)靈活、開(kāi)放性好等優(yōu)點(diǎn),支持多種操作系統(tǒng)和硬件平臺(tái),是目前大型科學(xué)實(shí)驗(yàn)裝置及工業(yè)現(xiàn)場(chǎng)中,主流的分布式控制系統(tǒng)開(kāi)發(fā)工具[3-9]。電機(jī)是工業(yè)現(xiàn)場(chǎng)中的常用設(shè)備,在多種類型的電機(jī)中,伺服電機(jī)平臺(tái)以其高精度、高轉(zhuǎn)速、負(fù)載能力強(qiáng)、適用范圍廣、響應(yīng)速度快和運(yùn)行穩(wěn)定等優(yōu)點(diǎn),被廣泛應(yīng)用于工業(yè)控制和科學(xué)研究領(lǐng)域[10-11]。
EPICS系統(tǒng)對(duì)伺服電機(jī)的驅(qū)動(dòng)支持較少,并且需要配合專有硬件使用[12-13]。為在EPICS系統(tǒng)中穩(wěn)定使用通用伺服電機(jī),設(shè)計(jì)采用StreamDevice模塊,開(kāi)發(fā)伺服平臺(tái)在EPICS下的驅(qū)動(dòng),實(shí)現(xiàn)電機(jī)控制功能。本文研究結(jié)果主要用于上海同步輻射光源高精度光譜采集系統(tǒng)中。
StreamDevice是由瑞士保羅謝爾研究所(Paul Scherrer Institute,PSI)開(kāi)發(fā)并維護(hù)的開(kāi)源軟件模塊,主要用于EPICS系統(tǒng)中,開(kāi)發(fā)基于數(shù)據(jù)流通信的設(shè)備驅(qū)動(dòng)和控制程序,即通過(guò)收發(fā)字符實(shí)現(xiàn)儀器或設(shè)備的控制。StreamDevice通過(guò)調(diào)用通訊模塊asyn,實(shí)現(xiàn)多種通訊接口和協(xié)議的使用,常用的通訊接口有:串口通信(RS-232與RS-485等)、IEEE-488總線(即GPIB或HP-IB)和網(wǎng)絡(luò)協(xié)議TCP/IP等[14]。
StreamDevice是EPICS環(huán)境中獨(dú)立的軟件模塊,使用時(shí)由輸入輸出控制器(Input Output Controller,IOC)直接調(diào)用,作為設(shè)備支持,協(xié)助IOC實(shí)現(xiàn)控制功能,IOC軟件結(jié)構(gòu)如圖1所示[15]。StreamDevice采用“數(shù)據(jù)庫(kù)(Database file)+協(xié)議文件(Protocol file)”的形式完成設(shè)備驅(qū)動(dòng)。其中,數(shù)據(jù)庫(kù)面向操作員,操作員通過(guò)數(shù)據(jù)庫(kù)完成系統(tǒng)控制功能;協(xié)議文件面向硬件設(shè)備,協(xié)議文件接收來(lái)自數(shù)據(jù)庫(kù)的指令,并將其轉(zhuǎn)譯為設(shè)備控制指令發(fā)送至設(shè)備。
圖1 IOC結(jié)構(gòu)圖
StreamDevice模塊具有結(jié)構(gòu)簡(jiǎn)單、穩(wěn)定性高、實(shí)用性強(qiáng)和操作簡(jiǎn)單等優(yōu)點(diǎn),作為EPICS軟件系統(tǒng)認(rèn)可的驅(qū)動(dòng)開(kāi)發(fā)模塊,由EPICS官方直接提供給用戶使用,相關(guān)研究表明,StreamDevice可以用于大型工業(yè)控制系統(tǒng)的驅(qū)動(dòng)開(kāi)發(fā)[16]。
開(kāi)發(fā)過(guò)程使用的伺服平臺(tái)選用北京卓立漢光公司生產(chǎn)的PSA600-11AS-X型滑臺(tái),電機(jī)采用ASP-2000驅(qū)動(dòng),運(yùn)動(dòng)控制由MC600運(yùn)動(dòng)控制器完成,系統(tǒng)硬件實(shí)物如圖2所示[17]。電機(jī)驅(qū)動(dòng)和控制軟件的開(kāi)發(fā),在CentOS 6.4操作系統(tǒng)下進(jìn)行,開(kāi)發(fā)過(guò)程中使用的軟件模塊如表1所示。
圖2 伺服平臺(tái)及其驅(qū)動(dòng)控制器
表1 軟件及其功能
軟件模塊名稱軟件版本軟件模塊功能EPICSbase3.14.12.3EPICS系統(tǒng)的base軟件,是所有使用EPICS軟件的基礎(chǔ)synApps5-7EPICS控制系統(tǒng)開(kāi)發(fā)常用工具集合包asyn4-21通用設(shè)備接口軟件,用于底層硬件設(shè)備驅(qū)動(dòng)與通信stream2-6基于字符串控制設(shè)備的開(kāi)發(fā)軟件模塊CSS3.2.11控制圖形界面開(kāi)發(fā)軟件
2.1 建立IOC應(yīng)用
EPICS軟件為控制系統(tǒng)開(kāi)發(fā)者提供了標(biāo)準(zhǔn)的IOC應(yīng)用,控制系統(tǒng)開(kāi)發(fā)者可以在標(biāo)準(zhǔn)應(yīng)用基礎(chǔ)上,根據(jù)系統(tǒng)的控制功能,自行添加或者刪減功能模塊。使用StreamDevice開(kāi)發(fā)設(shè)備驅(qū)動(dòng)程序時(shí),需要向IOC中添加StreamDevice模塊和asyn模塊的調(diào)用。具體方法是,在生成IOC的configure路徑下,編輯Release文件,向文件中寫入StreamDevice和asyn模塊的安裝路徑,并在IOC根目錄的App/src路徑下,編輯Makefile文件,在文件中添加StreamDevice和asyn模塊的依賴庫(kù)并保存。返回IOC根目錄后編譯IOC,完成電機(jī)驅(qū)動(dòng)IOC的建立。
2.2 數(shù)據(jù)庫(kù)編寫
根據(jù)EPICS的軟件設(shè)計(jì),系統(tǒng)控制功能是通過(guò)IOC實(shí)時(shí)數(shù)據(jù)庫(kù)中的記錄(record)實(shí)現(xiàn),操作員通過(guò)對(duì)數(shù)據(jù)庫(kù)中的記錄進(jìn)行操作,可以實(shí)現(xiàn)控制指令的發(fā)送和控制數(shù)據(jù)的讀取。使用StreamDevice開(kāi)發(fā)設(shè)備驅(qū)動(dòng)時(shí),數(shù)據(jù)庫(kù)應(yīng)為被控設(shè)備所有控制功能的集合,即將被控設(shè)備的實(shí)現(xiàn)的功能,轉(zhuǎn)換為EPICS中數(shù)據(jù)庫(kù)中的記錄,運(yùn)行在IOC中。
數(shù)據(jù)庫(kù)中記錄的編寫遵循如下標(biāo)準(zhǔn)格式。記錄一般以record起始,在record后的小括號(hào)中,指定記錄的類型和記錄在控制網(wǎng)絡(luò)中的唯一名稱。記錄通過(guò)配置域(field)實(shí)現(xiàn)具體功能,對(duì)記錄域的設(shè)置,在大括號(hào)中以field關(guān)鍵字完成。
record(record_type, record_name)
{
field (field_name, “valve1”)
field (field_name, “valve2”)
……
}
以下以伺服電機(jī)的絕對(duì)位移為例,簡(jiǎn)述記錄的編寫。操作員通過(guò)對(duì)該記錄賦值,可以實(shí)現(xiàn)在伺服電機(jī)內(nèi)部坐標(biāo)系中,控制電機(jī)移動(dòng)到指定的位置。根據(jù)記錄的主要功能,選用ao(Analog Output,模擬輸出)的記錄類型,編寫電動(dòng)平臺(tái)的控制指令。該記錄名為MoveAbs,在記錄編寫中,采用宏變量“$()”化簡(jiǎn)編寫過(guò)程,同時(shí)也便于管理和功能擴(kuò)展。
record(ao, "$(P)$(R)MoveAbs")
{
field(DESC, "Move absolutely float x")
field(DTYP, "stream")
field(OUT, "@devDevSERM.proto moveA($(P)$(R)Axis) $(PORT) $(A)")
field(VAL, "0")
field(EGU, "um")
field(DRVL, "0")
field(DRVH, "600000")
}
確定記錄類型和記錄名稱后,需根據(jù)記錄的功能,對(duì)記錄進(jìn)行配置和初始化。其中,記錄的主要功能通過(guò)VAL域、DTYP域和OUT域?qū)崿F(xiàn),DRVL域和DRVH域是對(duì)記錄功能的增強(qiáng),EGU域和DESC是對(duì)記錄的完善。在記錄功能方面,VAL域接收來(lái)自操作員的位置數(shù)據(jù),并將該數(shù)據(jù)通過(guò)協(xié)議文件傳遞到電機(jī)控制器。操作員在IOC運(yùn)行過(guò)程中,只需要在該記錄的VAL域中寫入數(shù)據(jù),便可實(shí)現(xiàn)記錄功能。VAL域的數(shù)據(jù)在傳遞過(guò)程中,通過(guò)DYPE和OUT兩個(gè)域確定數(shù)據(jù)的流向。配置DYPE域?yàn)椤皊tream”,表示VAL域值輸出需要通過(guò)StreamDevice模塊實(shí)現(xiàn),而OUT域是用于指定使用StreamDevice時(shí),具體的輸出途徑,即協(xié)議文件和其中需要執(zhí)行的函數(shù)。在IOC運(yùn)行過(guò)程中,為保障電機(jī)和其他設(shè)備安全,在記錄中添加了DRVH和DRVL兩個(gè)域,用于電機(jī)運(yùn)動(dòng)的軟件限位。其中,DRVH用于限制電機(jī)行程的高位,DRVL限制電機(jī)行程的低位。只有當(dāng)操作員輸入的VAL數(shù)據(jù)在高低限位之間時(shí),記錄才會(huì)被觸發(fā)。最后,記錄使用DESC域?qū)τ涗涍M(jìn)行描述和注釋,便于在IOC運(yùn)行過(guò)程中查看記錄功能,使用EGU域設(shè)置記錄中數(shù)據(jù)的單位。
依照以上方法,依次將電機(jī)的全部功能及配置參數(shù)信息,改寫為數(shù)據(jù)庫(kù)中的記錄,即可完成數(shù)據(jù)庫(kù)的編寫,即完成操作員與系統(tǒng)控制程序的交互接口設(shè)計(jì),實(shí)現(xiàn)了控制數(shù)據(jù)從操作員到IOC軟件的傳遞。而要實(shí)現(xiàn)控制數(shù)據(jù)由IOC軟件傳遞到電機(jī)運(yùn)動(dòng)控制器,則需要IOC軟件調(diào)用StreamDevice,通過(guò)StreamDevice軟件中協(xié)議文件,將系統(tǒng)控制數(shù)據(jù)發(fā)送至被控電機(jī)設(shè)備。
2.3 協(xié)議文件編寫
協(xié)議文件連接數(shù)據(jù)庫(kù)與伺服電機(jī)控制器,其接收來(lái)自數(shù)據(jù)庫(kù)的指令,并按照協(xié)議文件內(nèi)容,將數(shù)據(jù)庫(kù)指令轉(zhuǎn)譯為設(shè)備指令,發(fā)送至電機(jī)控制器。編寫協(xié)議文件需要了解伺服電機(jī)控制器的控制指令,伺服平臺(tái)的位移命令如表2所示。
表2 伺服電機(jī)控制指令
根據(jù)電機(jī)的控制指令,若要滑臺(tái)X軸正向運(yùn)動(dòng)到a位置,操作員需要通過(guò)串口發(fā)送“GoPosition X,O,A,P,a”至電機(jī)運(yùn)動(dòng)控制器。由于功能設(shè)計(jì)需要,指令中的參數(shù)不需要全部開(kāi)放,只保留軸標(biāo)及位移量。協(xié)議文件中位移函數(shù)編寫如下:
moveA
{
out "GoPosition %($1){X|Y|Z|T},O,A,P,%f";
}
在以上函數(shù)中,函數(shù)名為moveA。當(dāng)電機(jī)位移記錄被觸發(fā),記錄將依次向下觸發(fā)執(zhí)行該函數(shù),函數(shù)中“out”字符后引號(hào)內(nèi)的全部?jī)?nèi)容,將被發(fā)送至電機(jī)控制器。在函數(shù)中,為增強(qiáng)函數(shù)的通用性,采用參數(shù)變量“($1)”,用于選擇伺服電機(jī)驅(qū)動(dòng)的坐標(biāo)軸。參數(shù)變量的具體內(nèi)容,在數(shù)據(jù)庫(kù)中調(diào)用該函數(shù)時(shí)設(shè)置。同時(shí),為保證參數(shù)變量傳遞的正確性,避免誤操作,在協(xié)議文件的函數(shù)中加入了內(nèi)容判別,只有當(dāng)通過(guò)數(shù)據(jù)庫(kù)傳遞的參數(shù)在X、Y、Z和T4個(gè)軸之中時(shí),參數(shù)才會(huì)被接受。電機(jī)運(yùn)動(dòng)的絕對(duì)坐標(biāo)位置,則通過(guò)記錄中的VAL域,直接賦值在函數(shù)的“%f”處。當(dāng)參數(shù)由數(shù)據(jù)庫(kù)傳遞到協(xié)議文件的函數(shù)中后,函數(shù)便將控制指令通過(guò)串口發(fā)送至電機(jī)的控制器,有控制器實(shí)現(xiàn)滑臺(tái)的運(yùn)動(dòng)控制。
按照以上的方法,將伺服電機(jī)全部控制指令,轉(zhuǎn)化為數(shù)據(jù)庫(kù)中的記錄和協(xié)議文件中的函數(shù),即可通過(guò)IOC應(yīng)用,實(shí)現(xiàn)在EPICS環(huán)境中實(shí)現(xiàn)伺服電機(jī)的運(yùn)動(dòng)控制。
2.4 配置啟動(dòng)腳本
啟動(dòng)腳本st.cmd文件是IOC啟動(dòng)前最后需要編寫的文件。該文件負(fù)責(zé)IOC最高層級(jí)的配置,包括運(yùn)行環(huán)境配置、通信方式選擇、實(shí)時(shí)數(shù)據(jù)庫(kù)加載、IOC功能模塊使能及IOC初始化等。編譯完成的IOC通過(guò)執(zhí)行啟動(dòng)腳本開(kāi)始運(yùn)行。
使用st.cmd文件啟動(dòng)IOC時(shí),首先需要導(dǎo)入envPaths文件配置IOC的運(yùn)行環(huán)境,同時(shí)需要在啟動(dòng)腳本中,指定IOC使用的協(xié)議文件的路徑。協(xié)議文件的路徑通過(guò)epicsEnvSet指令,設(shè)置環(huán)境變量STREAM_PROTOCOL_PATH完成。啟動(dòng)腳本中相關(guān)配置命令如下:
###### Set up environment
< envPaths
epicsEnvSet "STREAM_PROTOCOL_PATH" "$(DevSERM)/db"
此外,IOC中的宏變量及通信接口,也需要在啟動(dòng)腳本中利用epicsEnvSet指令完成設(shè)置和初始化。設(shè)置時(shí)采用“$(變量名=變量?jī)?nèi)容)”的格式,直接將變量的內(nèi)容賦值給所用的變量。伺服電機(jī)的控制器采用USB轉(zhuǎn)串口的通信方式,因此在指定通信端口時(shí)采用了ttyUSB的USB口,若硬件中采用串口,則需要將ttyUSB改為ttyS。
######Allow PV name prefixes and serial port name to be set from the environment
epicsEnvSet "P" "$(P=X14W1:EH:RIXS:)"
epicsEnvSet "R" "$(R=Zd:)"
epicsEnvSet "TTY" "$(TTY=/dev/ttyUSB1)"
配置啟動(dòng)腳本的最后一步,就是設(shè)置軟件通信采用的通信協(xié)議。StreamDevice調(diào)用asyn模塊作為通信模塊,在配置通信方式上,也使用asyn模塊的配置函數(shù)進(jìn)行設(shè)置。
###### Set up ASYN ports
drvAsynSerialPortConfigure("L0","$(TTY)",0,0,0)#定義設(shè)備名稱
asynSetOption("L0",-1,"baud","19200")#串口波特率19200
asynSetOption("L0",-1,"bits","8")#8位數(shù)據(jù)位
asynSetOption("L0", -1, "parity", "none")#無(wú)校驗(yàn)位
asynSetOption("L0", -1, "stop", "1")#1位停止位
asynSetOption("L0", -1, "clocal", "Y")#本地連接,無(wú)調(diào)制解調(diào)器控制
asynSetOption("L0", -1, "crtscts", "N")#無(wú)輸出硬件流控制
drvAsynSerialPortConfigure()函數(shù)用于配置通信接口的基本信息,函數(shù)有如下的調(diào)用形式:drvAsynSerialPortConfigure("portName","ttyName",priority,noAutoConnect,noProcessEosIn)。其中,portName為應(yīng)用中通訊端口的名稱,ttyName為硬件端口,priority用于配置當(dāng)前端口的優(yōu)先級(jí),noAutoConnect用于配置端口是否自動(dòng)連接,noProcessEosIn配置字符串的結(jié)束符處理方式。
通信方式的配置使用asynSetOption("portName",addr,"key","value")函數(shù)。其中,portName為配置的通訊口的名稱,addr是當(dāng)一個(gè)通訊端口對(duì)應(yīng)多個(gè)硬件時(shí),需要指定的硬件地址,key為可以配置的參數(shù),value是key參數(shù)的數(shù)值。key與val的內(nèi)容如表3所示,方括號(hào)中的數(shù)據(jù)為軟件默認(rèn)參數(shù)[18]。
表3 asynSetOption函數(shù)參數(shù)
在啟動(dòng)文件中完成以上配置,便可選擇加載數(shù)據(jù)庫(kù),并通過(guò)iocInit函數(shù)初始化并啟動(dòng)IOC程序。
###### Load record instances
cd $(DevSERM)
dbLoadRecords("db/devDevSERM.db","P=$(P),R=$(R),PORT=L0,A=0")
cd $(ASYN)
dbLoadRecords("db/asynRecord.db","P=$(P)$(R),R=asyn,PORT=L0,ADDR=-1,OMAX=0, IMAX=0")
###### Start EPICS
cd ${TOP}/iocBoot/${IOC}
iocInit2.5 測(cè)試
測(cè)試采用CSS(Control System Studio)軟件制作圖形化控制界面,完成伺服電機(jī)的可視化控制,控制界面如圖3所示。Drive部分主要用于電機(jī)的運(yùn)動(dòng)控制,Base部分用于配置平臺(tái)的詳細(xì)參數(shù),Dynamics是用于配置電機(jī)運(yùn)行時(shí)如速度、加速度等運(yùn)行參數(shù)。
圖3 電機(jī)控制界面
在測(cè)試條件下,在控制界面的MoveAbs一欄中輸入電機(jī)的坐標(biāo)位置,并點(diǎn)擊回車鍵確認(rèn),IOC便會(huì)將操作員輸入的位置坐標(biāo)傳遞至伺服電機(jī)的控制器,并由控制器驅(qū)動(dòng)平臺(tái)運(yùn)動(dòng)到指定位置。
本文使用StreamDevice開(kāi)發(fā)了伺服電機(jī)驅(qū)動(dòng)程序及控制IOC,實(shí)現(xiàn)了伺服平臺(tái)在EPICS軟件環(huán)境下的驅(qū)動(dòng)及控制。實(shí)驗(yàn)結(jié)果表明,采用StreamDevice開(kāi)發(fā)的伺服電機(jī)驅(qū)動(dòng),實(shí)現(xiàn)伺服電機(jī)多種方式運(yùn)動(dòng)控制、運(yùn)動(dòng)參數(shù)調(diào)節(jié)、返回值讀取等常用功能,具有較高的穩(wěn)定性,可以用于實(shí)驗(yàn)系統(tǒng)的搭建中。同時(shí),相較于EPICS系統(tǒng)中其他方式的驅(qū)動(dòng)開(kāi)發(fā),使用StreamDevice模塊開(kāi)發(fā)流程較為簡(jiǎn)單,節(jié)約了開(kāi)發(fā)時(shí)間,提高了開(kāi)發(fā)效率。
[1] Martin R Kraimer, Janet Anderson, Andrew Johnson, et al. EPICS:input / output controller application developer’s guide[EB/OL].(2003-11-03)[2016-03-28]http://www.aps.anl.gov/epics/base/R3-14/3-docs/AppDe-vGuide.pdf.
[2] 丁建國(guó),劉松強(qiáng).EPICS系統(tǒng)中的網(wǎng)絡(luò)技術(shù)[J].核技術(shù),2006,29(5):380-383.
[3] Joshi R,Singh M,Trivedi K.EPICS based monitoring and
control in data acquisition system[J]. International Journal of Computer Science Engineering,2014,3(2):95-100.
[4] Ito T U,Nakahara K,Kawase M,et al.The EPICS-based remote control system for muon beam line devices at J-PARC MUSE[J].Journal of Physics,2010, 225(1):12-22.
[5] Stepanov S,Makarov O,Hilgart M,et al.JBluIce-EPICS control system for macromolecular crystallography[J].Acta Crystallographica Section D: Biological Crystallography,2011,67(3):176-188.
[6] 張德敏,金曉,黎明,等.EPICS在加速器控制系統(tǒng)中的應(yīng)用[J].強(qiáng)激光與粒子束,2008,20(4):597-600.
[7] 劉平,周永年,米清茹,等.光束線站EPICS數(shù)據(jù)采集系統(tǒng)研究[J].核技術(shù),2010,33(6): 415-419.
[8] 辛文曲,李剛,歐陽(yáng)華甫,等.CSNS直線加速器前端水冷控制系統(tǒng)的研制[J].核電子學(xué)與探測(cè)技術(shù),2014,34(3):345-348.
[9] 劉群,汪嘯,賀博.EPICS環(huán)境下PLC在光束線安全防護(hù)控制中的應(yīng)用[J].核電子學(xué)與探測(cè)技術(shù),2015,35(7):662-665.
[10] 張博,朱宇軍,和征.三相無(wú)刷直流伺服電機(jī)控制系統(tǒng)的研究[J].電子科技,2008,21(9): 67-69.
[11] 朱衛(wèi)云,付東翔,葛懂林.基于RBF神經(jīng)網(wǎng)絡(luò)的永磁同步伺服電機(jī)控制系統(tǒng)[J].電子科技,2016,29(1):161-164.
[12] Tim Mooney,Joe Sullivan,Ron Sluiter.Motor record and related software[EB/OL]. (2003-09-05)[2016-03-28]http://www.aps.anl.gov/bcda/synApps/motor/R6-8/motorRecord.html.
[13] 胡勇,鄭麗芳,李紀(jì)堂,等.基于EPICS的運(yùn)動(dòng)控制系統(tǒng)[J].核電子學(xué)與探測(cè)技術(shù),2007,27(6): 1175-1178.
[14] Dirk Zimoch.Stream[EB/OL]. (2011-09-14)[2016-03-28]http://epics.web.psi.ch/software/streamdevice/doc/stream.pdf.
[15] 王萌.EPICS在過(guò)程控制中的應(yīng)用研究[D].哈爾濱:哈爾濱工業(yè)大學(xué),2008.
[16] 喬顯杰,李剛.基于EPICS的StreamDevice的應(yīng)用研究[J].核電子學(xué)與探測(cè)技術(shù),2011, 31(10):1073-1076.
[17] Norum W Eric.How to use StreamDevice and ASYN to create EPICS device support for a simple serial, GPIB, or network attached device[EB/OL]. (2010-05-27)[2016-03-28]http://www.aps.anl.gov/epics/modules/s-oft/asyn/R4-24/HowToDoSerial/HowToDoSerial_StreamDevice.html.
[18] Mark Rivers, Eric Norum, Marty Kraimer.AsynDriver[EB/OL]. (2012-02-18)[2016-04-01]http://www.aps.anl.gov/epic-s/modules/soft/asyn/R4-21/asynDriver.pdf.
Development of Servo Motor Driver Based on EPICS
ZHU Zewei,SHEN Nailian
(School of Optical-Electrical and Computer Engineering, University of Shanghai for Science and Technology, Shanghai 200093, China)
The lack of drivers in EPICS software environment deny the use of servo motor in setting up experiment platform directly, for which problem the StreamDevice software module is used to develop a servo motor driver in EPICS. The developing process begins with setting up a servo motor IOC with EPICS tools. The driver program of servo motor is developed with StreamDevice module and called by IOC. With a serial port, the IOC sends control commands to the servo controller which cooperate with the hardware driver to implement the control task. Finally, a graphical user interface is developed for an intuitive operation. By this development method, a servo motor can be used in an EPICS with precise control and real-time respond.
EPICS; StreamDivce; servo motor driver; IOC; motion control
2016- 06- 11
朱澤瑋(1992-),男,碩士研究生。研究方向:光電檢測(cè)等。
10.16180/j.cnki.issn1007-7820.2017.05.051
TM383.4
A
1007-7820(2017)05-188-05