運(yùn)動控制技術(shù)在工業(yè)、辦公和家庭等自動化方面的應(yīng)用日益廣泛,控制形式也由以機(jī)械提供動力驅(qū)動的簡單啟停控制,發(fā)展到對其位置、速度、加速度、轉(zhuǎn)矩等的精確控制。原先的“電機(jī)拖動”、“電氣傳動”已經(jīng)發(fā)展到“運(yùn)動控制”的新階段。
運(yùn)動控制芯片
PCI總線是一種先進(jìn)的高性能32/64位地址數(shù)據(jù)復(fù)用局部總線,可以同時支持多組外圍設(shè)備。實(shí)現(xiàn)PCI總線接口的方法主要有兩種:一是采用CPLD或FPGA設(shè)計(jì)PCI接口,這種方法比較靈活,但是其難度較大,設(shè)計(jì)周期也較長。二是采用專用的PCI接口芯片,可以大大減少設(shè)計(jì)者的工作量,從而縮短開發(fā)周期,降低開發(fā)成本。本運(yùn)動控制卡采用PLX公司的PCI9052接口芯片進(jìn)行設(shè)計(jì),該芯片符合PCI2.1規(guī)范。
與ISA總線相比,PCI總線支持三個物理空間:存儲器地址空間、I/O地址空間和配置空間。配置空間是PCI特有的一個空間,所有的PCI設(shè)備都必須提供配置空間。PCI9052包含一個用于加載配置信息的串行EEPROM接口,用于裝載一個特定適配設(shè)備信息。串行EEPROM中存儲了PCI9052的重要的配置信息,如設(shè)備號、制造商號、設(shè)備類型號、局部空間基地址以及局部空間描述符等信息。PCI9052對EEPROM型號的要求是比較嚴(yán)格的,可以使用的包括HolTek的HT93LC46,MicroChip的93LC46B等。
在ISA模式下,EEPROM的使用是必需的,為使PCI9052正常工作在ISA模式下,首先應(yīng)確保EEPEOM能被找到,并且將PCI9052的第68管腳接低電平。EEPROM的內(nèi)容非常重要,它直接關(guān)系到整個板卡能否正常工作,在設(shè)計(jì)時要特別注意。
運(yùn)動控制芯片
傳統(tǒng)的運(yùn)動控制器多采用嵌入式高性能單片機(jī)或DSP來實(shí)現(xiàn),但系統(tǒng)集成度不夠高,電路復(fù)雜,且軟、硬件研制周期長。采用專用運(yùn)動控制器可以提高系統(tǒng)集成度、插補(bǔ)速度及可靠性,同時簡化電路,縮短開發(fā)周期。
目前市場上有多種運(yùn)動控制器,如美國的PMD公司以及日本的NOVA、KYOPAL、SEEK公司的產(chǎn)品。本設(shè)計(jì)采用NOVA公司的MCX312,它能同時控制獨(dú)立兩個伺服電機(jī)或步進(jìn)電機(jī)的運(yùn)動控制芯片。以脈沖串的形式輸出,能對伺服電機(jī)和步進(jìn)電機(jī)進(jìn)行位置控制、插補(bǔ)驅(qū)動、速度控制等。
● 獨(dú)立二軸驅(qū)動
一個芯片可分別控制2個電機(jī)驅(qū)動軸的運(yùn)動。每個軸都可以進(jìn)行定速驅(qū)動,直線加/減速驅(qū)動,S曲線驅(qū)動等,2軸的性質(zhì)相同;輸出驅(qū)動脈沖的范圍為1PPS~4MPPS,使用16MHz時鐘時,輸出脈沖頻率精度小于±0.1%。
● 定量驅(qū)動和連續(xù)驅(qū)動
定量驅(qū)動是指以固定速度或加/減速度輸出制定數(shù)量的脈沖,用以移動到確定位置或進(jìn)行確定的動作,連續(xù)驅(qū)動連續(xù)輸出驅(qū)動脈沖直至高位的停止命令或外部的停止信號有效,用以原點(diǎn)搜尋、掃描操作、及電機(jī)旋轉(zhuǎn)速度控制。
● 插補(bǔ)驅(qū)動
可進(jìn)行相對于當(dāng)前位置范圍-8 388 607~+8 388 607內(nèi)的2軸直線插補(bǔ)及圓弧插補(bǔ),插補(bǔ)精度為±0.5LSB,速度范圍為1PPS~4MPPS,并可以連續(xù)地運(yùn)用2軸直線及圓弧插補(bǔ)在每個插補(bǔ)節(jié)點(diǎn)不停的驅(qū)動,其最大速度可達(dá)2MHz。
● 位置控制
每軸都有兩個32位位置計(jì)數(shù)器,一個是芯片內(nèi)部管理驅(qū)動脈沖輸出的邏輯位置計(jì)數(shù)器,另一個是管理從外部編碼器來的脈沖的實(shí)際位置計(jì)數(shù)器,并可通過內(nèi)部寄存器的設(shè)定,使得當(dāng)位置計(jì)數(shù)器同比較寄存器的大小關(guān)系有變化時,產(chǎn)生中斷。
● 實(shí)時監(jiān)控
在驅(qū)動過程中,可以通過實(shí)時讀取片內(nèi)部寄存器得到邏輯位置、實(shí)際位置、驅(qū)動速度、加速度以及加/減速狀態(tài)(加速中,定速中,減速中)等信息。
● 其他功能
MCX312還具有許多其他重要功能:由外部信號控制進(jìn)行定量驅(qū)動、連續(xù)驅(qū)動;硬件限制;緊急停止;驅(qū)動狀態(tài)輸出;脈沖輸出方式選擇;輸入信號濾波等。
系統(tǒng)設(shè)計(jì)
在硬件系統(tǒng)中,PCI9052作為連接CPU與運(yùn)動控制芯片的橋梁,完成了從PCI總線到ISA總線的過渡。CPU通過編程對運(yùn)動控制芯片進(jìn)行控制,以實(shí)現(xiàn)對兩軸運(yùn)動的控制。
該設(shè)計(jì)硬件結(jié)構(gòu)如下圖所示,PCI9052與PCI總線相連,AD[31:0]、CBE[3:0]、PAR、TRDYN、IDSEL、STOPN、PERRN、SERRN、CLK、RST0、INTA0、LOCKN等是必須實(shí)現(xiàn)的信號,EESK、EEDO、EEDI、DDCS與串行EEPROM相連;CPU以16位數(shù)據(jù)對MCX312進(jìn)行控制,使其向外發(fā)出X及Y方向脈沖信號,以控制兩個方向軸上的運(yùn)動。
數(shù)控系統(tǒng)通過位置傳感器返回其包括nLMTP、nLMTM、nINPOS、nALARM等系統(tǒng)位置信息,進(jìn)而實(shí)現(xiàn)左右方向限位,伺服到位及報(bào)警等功能。編碼器輸入信號引起MCX312的實(shí)際位置計(jì)數(shù)器的變化,可以得到兩軸相對于原點(diǎn)的實(shí)際移動位置。通用輸入輸出擴(kuò)展了系統(tǒng)功能,在應(yīng)用中可根據(jù)實(shí)際情況用作不同的用途。
在電路設(shè)計(jì)時應(yīng)考慮一下幾點(diǎn):
?。?)根據(jù)PCI協(xié)議規(guī)定,PCI總線的CLK信號線的長度為2500mil,其他信號線的長度以1500mil以內(nèi)為宜;
(2)因系統(tǒng)中多為開關(guān)量輸入輸出,在實(shí)際工作中,應(yīng)盡量避免外界信號的干擾,為達(dá)到這個目的,在系統(tǒng)中采用光電耦合器件,其輸入端配置發(fā)光器件,輸出端為受光器,開關(guān)量輸入接入電路中,會被擋在光電耦合器以外,從而將干擾隔離;
?。?)數(shù)字電路信號電平轉(zhuǎn)換過程中會產(chǎn)生很大的沖擊電流,并在傳輸線和電源內(nèi)阻上產(chǎn)生較大的壓降,形成嚴(yán)重的干擾。為了抑止這種干擾,在芯片的電源和地之間連接高頻特性好的0.1μF左右的去耦電容;
(4)總線信號PRSNT1#的PRSNT2#中必須有一個接地,它們表明板卡的存在并提供該板對電源要求的有關(guān)信息。
函數(shù)庫及驅(qū)動設(shè)計(jì)
運(yùn)動控制卡給用戶提供了一個軟硬件的使用平臺,用戶可以根據(jù)自己的需要選擇使用自己需要的功能,而對于功能實(shí)現(xiàn),函數(shù)庫的編制是必須的。函數(shù)庫用于運(yùn)動控制系統(tǒng)的二次開發(fā),編程人員可以使用高級語言,通過對庫函數(shù)的調(diào)用,來實(shí)現(xiàn)對運(yùn)動控制系統(tǒng)的控制。該系統(tǒng)的庫函數(shù)包括5類。
?。?)基本參數(shù)設(shè)置,包括卡的初始化與釋放、脈沖輸出方式、軟硬件限位設(shè)定、脈沖輸出方式及編碼器輸入的工作方式、加/減速方式設(shè)定及輸入信號濾波功能設(shè)置等;
?。?)運(yùn)動參數(shù)的設(shè)定與讀取,包括范圍設(shè)定、加/減速度的設(shè)定與讀取、驅(qū)動速度的設(shè)定與讀取、初始速度的設(shè)定與讀取、邏輯/實(shí)際位置計(jì)數(shù)器的設(shè)定與讀取、COMP+/COMP-寄存器的設(shè)定等;
?。?)驅(qū)動狀態(tài)檢查,包括獲取各軸的驅(qū)動狀態(tài)及插補(bǔ)驅(qū)動狀態(tài);
?。?)脈沖驅(qū)動輸出及設(shè)定,包括兩軸直線插補(bǔ)、順時針/逆時針圓弧插補(bǔ)、定量驅(qū)動、連續(xù)驅(qū)動及驅(qū)動的減速停止與立即停止;
?。?)開關(guān)量輸入輸出,包括所有開關(guān)量的輸入輸出及單個輸入輸出的控制。
開發(fā)Windows下的應(yīng)用程序應(yīng)考慮系統(tǒng)的限制,Windows系統(tǒng)為保護(hù)系統(tǒng)對用戶的訪問權(quán)限進(jìn)行了劃分,用戶所處的級別由系統(tǒng)對硬件資源進(jìn)行了屏蔽,用戶不能直接訪問硬件資源。為了達(dá)到與硬件通信的目的,必須編寫驅(qū)動程序。
用于Windows驅(qū)動開發(fā)的工具包括Windriver,DriverStudio以及DDK(Driver Develop Kit)。Windriver使用簡單,不需要專門的關(guān)于系統(tǒng)驅(qū)動的知識,開發(fā)時間短,但效率低,且不易發(fā)布;DDK效率及可靠性高,但使用煩瑣,開發(fā)周期長;DriverStudio包括DriverWorks,SoftICE,DirverAgent等工具,具有開發(fā)調(diào)試的強(qiáng)大功能,把DDK用類的形式進(jìn)行了封裝,使用簡單。本文就是利用DriveStudio進(jìn)行驅(qū)動開發(fā)的。
DriverWorks提供了DriverWizard向?qū)В盟梢陨沈?qū)動程序的框架,其中最為關(guān)鍵的一步添加相應(yīng)的I/O端口、內(nèi)存資源、DMA、中斷等相應(yīng)得硬件資源,并在相應(yīng)的處理程序中添加代碼。
結(jié)論
本系統(tǒng)采用PCI總線接口及MCX312運(yùn)動控制芯片,支持即插即用,可用于多種操作系統(tǒng),具有輸出脈沖頻率高、控制準(zhǔn)確、易向多軸擴(kuò)展等特點(diǎn),可廣泛應(yīng)用于機(jī)器人、基于PC的數(shù)控系統(tǒng)中。
編輯:何世平