1 引言
許多測試系統(tǒng)要求在連續(xù)運動的同時能實時進行數(shù)據(jù)采集,。如果測試過程不連續(xù),,或者測試位置在前而采集在后,二者之間不能同步,,將不可避免地產(chǎn)生誤差,。為了提高測量精度,運動控制和數(shù)據(jù)采集必須實現(xiàn)同步,。目前,,美國NI公司提供的PCI總線E系列數(shù)據(jù)采集卡和運動控制卡都嵌入了RTSI(Real-Time System Integration)總線,它可以滿足需要精確同步和實時數(shù)據(jù)采集處理的測試系統(tǒng)的要求,。本文主要介紹如何利用RTSI總線編程實現(xiàn)運動控制和數(shù)據(jù)采集之間的同步,。
2 RTSI總線
RISI總線是實時系統(tǒng)集成總線,它是一種專用高速數(shù)字總線,,專門提供NI產(chǎn)品(包括圖像采集和數(shù)據(jù)采集產(chǎn)品)之間的高速互連,。RTSI總線包括7根觸發(fā)線,用于創(chuàng)建NI的測量,、圖像采集和運動控制設(shè)備以及接口板卡之間靈活的同步關(guān)系,。通過軟件設(shè)置可將其他觸發(fā)信號路由到RTSI總線上,也可以將RTSI總線信號路由到其分觸發(fā)信號線上作為觸發(fā)時鐘,,實現(xiàn)l路信號驅(qū)動多個設(shè)備,,達到同步的目的。通過RTSI總線,,可用1個公共的觸發(fā)或定時事件實現(xiàn)幾個功能事件同步,。RTSI總線的典型應(yīng)用包括觸發(fā)圖像采集、基于運動事件的數(shù)據(jù)采集測量,、捕獲基于外部事件到運動控制器的當前運動位置等,。
對于PCI總線E系列數(shù)據(jù)采集卡,有15種信號與RTSI總線相連,,包括時基信號,、數(shù)據(jù)采集時鐘、D/A輸出時鐘,、板上通用計數(shù)器信號,、外部PFI(可編程輸入)信號等,如圖1所示。
3 運動控制與數(shù)據(jù)采集的同步
測試系統(tǒng)中采取的同步方式一般有二種:一種是運動控制卡控制電機運動到某個指定位置,,數(shù)據(jù)采集卡能實時采集該位置上的數(shù)據(jù),,這種方式稱為中斷;另一種同步方式是如果電機運動到某個位置時數(shù)據(jù)采集卡采集到滿足某種條件的信號,,則需要記錄電機當前的運動位置,,這種方式稱為捕獲。本文主要討論中斷同步方式,。
3.1 中斷方式
中斷分為絕對位置中斷,、相對位置中斷及周期性位置中斷,。絕對位置中斷是指當電機運動到某絕對位置時運動控制卡將產(chǎn)生外部中斷信號,;相對位置中斷是指當電機的運動位置相對于允許電機產(chǎn)生中斷時的位置之差滿足設(shè)定的條件時產(chǎn)生中斷信號;求模位置中斷是指每相對于某個設(shè)定的位置都將產(chǎn)生1個中斷信號,。因此可以根據(jù)測試系統(tǒng)的不同需要決定采取什么樣的中斷方式,。
3.2 同步的原理
當運動控制卡控制電機運動到某個位置時,編碼器上返回的位置信號一旦符合設(shè)定的位置條件,,將發(fā)出1個中斷信號,。該信號可作為數(shù)據(jù)采集卡采集信號的觸發(fā)條件,使采集卡能實時采集所需數(shù)據(jù),。運動控制卡和數(shù)據(jù)采集卡可以通過RTSI總線實現(xiàn)二者之間的同步,。運動控制卡產(chǎn)生的中斷信號通過內(nèi)部電路傳送到RTSI輸出引腳,目前RTSI輸出引腳主要有7個(RTSIO-RTSl6),。RPSI輸出引腳可通過外部電纜與數(shù)據(jù)采集卡的RTSI引腳相連,。采集卡的RTSI引腳也可以通過內(nèi)部電路與其控制信號(見圖1)相連,從而實現(xiàn)二者之間的同步,。
當運動控制卡控制電機運動到某個指定位置時將產(chǎn)生中斷信號,,該中斷輸出信號可連接到運動控制卡的RTSI引腳,運動控制卡的RTSI引腳與數(shù)據(jù)采集卡的RTSI引腳相連,。而在采集卡內(nèi),,RTSI引腳信號作為系統(tǒng)的掃描時鐘,與采樣時鐘信號相連,,因此運動控制卡每產(chǎn)生1個中斷信號,,數(shù)據(jù)采集卡便進行1次通道掃描,讀取各個傳感器上采集的數(shù)據(jù),。該數(shù)據(jù)將存放在設(shè)置的緩沖區(qū)中,。而一旦緩沖區(qū)中的數(shù)據(jù)已滿,則通過多線程的方式顯示到屏幕上,。這樣就實現(xiàn)了運動控制和數(shù)據(jù)采集之間的同步,。
4 編程實現(xiàn)
運動控制與數(shù)據(jù)采集的同步控制流程如圖2所示。
筆者采用LabWindows/CVI軟件對RTSl總線、數(shù)據(jù)采集和運動控制進行編程,,其函數(shù)庫由NI-DAQ和NI-Motion提供,。其中NI-Motion函數(shù)庫可以將運動控制與所有應(yīng)用軟件相結(jié)合,并可通過數(shù)字觸發(fā)輸入或NI運動控制卡上的斷點輸出,,使運動與測量硬件同步運行,。RTSI總線則將這些觸發(fā)與中斷信號連接到其他卡上,此總線功能由軟件設(shè)定,。通過“Measurement&Automation Explorer”(MAX)設(shè)備管理工具,,可以配置各設(shè)備的硬件屬性,為每個設(shè)備分配1個設(shè)備編號,,在編程時作為查找設(shè)備的標識,。下面是編程所需要的主要函數(shù)。
(1)連接中斷信號和RTSI總線信號函數(shù)
flex_select_signal(boardID,destination,source),其中boardlD為MAX分配的數(shù)據(jù)采集卡的ID號,;destination目的信號,為RTSI某引腳,,如NIMC_RT-SI[0..7];source源信號,,為某一中斷信號的名稱,,如NIMC_BREAKPOINT[1..4]。
(2)設(shè)置運動參數(shù)和中斷信號模式函數(shù)
設(shè)置運動速度函數(shù)flex_load_velocity(boardlD,,axisOrVectorSpace,,velocity,inputVector),,其中ax-isOrVectorSpace為選擇軸編號或空間坐標,;in-putVector參數(shù)對脫離主機運行的程序有用,一般設(shè)成OXFF,。
設(shè)置加速度/減速度函數(shù)flex_load_acceleration(boardID,,axisOrVectorSpace,accelerationType,,accel-eration,,inputVector),其中accelerationType為選擇加載的方式,,即加速度,、減速度還是同時加載。
設(shè)置S-Curve時間函數(shù)flex_load_velocity(boar-dID,,axisOrVectorSpace,,sCurveTime,inputVector),其中sCurveTime為從0加速到恒定速度或從恒定速度減速到0時的時間,,單位為采樣時間的整數(shù)倍,。范圍為l~32 767。
設(shè)置運動模式函數(shù)flex_set_op_mode(boardID,axisOrVectorSpace,operationMode),。
設(shè)置運動的目標位置flex_load_target_pos(boardID,,axis,targetPosition,,inputVector),。
設(shè)置產(chǎn)生中斷的方式函數(shù)flex_config-ure_breakpoint(boardID,axisOrEncoder,,enableMode,,actionOnBreakpoint,operation),,其中actionOnBreak-point為中斷時電平的高低,,operation為選擇單點中斷方式或緩沖中斷方式,由運動控制卡的信號決定,。
(3)設(shè)置中斷信號產(chǎn)生位置和打開中斷函數(shù)
設(shè)置中斷信號產(chǎn)生位置函數(shù)flix_load_pos_bp(boardID,,axisOrEncoder,breakpointPosition.inputVector),,其中breakpointPosition為中斷位置(即采樣點)的起始位置,下一次產(chǎn)生中斷的位置為上一次產(chǎn)生中斷的位置加上采樣間距,。打開中斷函數(shù)flex_enable_breakpoint(),。
(4)啟動電機運動函數(shù)
啟動電機運動函數(shù)flex_start(boardID,ax-isOrVectorSpace,,axisOrVSMap),其中axisOrVSMap為可選擇單軸運動或多軸同時運動,。
(5)檢查各種狀態(tài)函數(shù)
檢查運動狀態(tài),讀取運動是否結(jié)束函數(shù)flex_check_move_complete_status(),。檢測中斷狀態(tài)函數(shù)flex_read_axis_status_rtn0(),。從通信狀態(tài)寄存器中讀取通信狀態(tài)函數(shù)flex_read_csr_rtn()。
5 結(jié)束語
利用RTSI可為各種測控系統(tǒng)應(yīng)用提供基于硬件的高速同步能力,,本文討論的這種基于RTSI的運動控制和數(shù)據(jù)采集之間的同步方法采用Lab-Windows/CVI編程實現(xiàn),,可應(yīng)用到在運動過程中實時采集數(shù)據(jù)的測控系統(tǒng)中,能獲得很好的測量精度,。