1 前言
隨著計算機技術(shù)的不斷發(fā)展,計算機控制在工業(yè)控制領(lǐng)域占的比例越來越重要。尤其在實時監(jiān)控和高速數(shù)據(jù)采集系統(tǒng)中,計算機控制是不可缺少的。由于在下位機系統(tǒng)中,若使用單片機控制,不但系統(tǒng)實現(xiàn)繁瑣,而且硬件故障較多,給程序調(diào)試帶來了很大的困難;而且在高速采集系統(tǒng)中,若采樣頻率達(dá)不到要求,可能導(dǎo)致數(shù)據(jù)丟失,進而影響檢測精度[3]。通過高速數(shù)據(jù)采集卡,可以將采集獲取的數(shù)據(jù)傳輸?shù)焦た貦C中,利用計算機強大的分析處理能力來提高測試系統(tǒng)的精度。PCI-1715U是Advantech(研華)公司推出的一款帶有PCI總線的隔離保護的高速模擬輸入卡,可應(yīng)用于高精度測試系統(tǒng)中。
2 測試系統(tǒng)的總體方案設(shè)計
本文介紹的測試系統(tǒng)用于采集小型冰箱全封閉制冷壓縮機壓力信號和活塞位移信號,通過數(shù)據(jù)處理、軟件編程,實現(xiàn)壓縮機PV指示圖繪制。
由于被測對象——小型制冷壓縮機的轉(zhuǎn)速在3000~4000r/min之間,壓力信號頻率為50-70Hz,但是為了更精確地取得壓力值,數(shù)據(jù)采集卡A/D轉(zhuǎn)換的采樣速率應(yīng)大于50KS/s(Kilo Sample per second),即1s內(nèi)有50000個采樣點。另外,在排氣閥開啟瞬間,系統(tǒng)需要測試的氣缸內(nèi)部壓力脈動屬于高頻信號,因此系統(tǒng)采用研華板卡PCI-1715U高速數(shù)據(jù)采集板卡,A/D轉(zhuǎn)換的采樣速率可達(dá)500 KS/s。相應(yīng)地,系統(tǒng)選用上海雁樺電子有限公司生產(chǎn)的GY403型微型壓力傳感器,測量氣缸內(nèi)部、吸氣閥、排氣閥三處的壓力值,其頻率響應(yīng)達(dá)10K。同時選用歐姆龍E6B2-CWZ6C型(分辨率為2000P/R)增量式旋轉(zhuǎn)編碼器測量曲軸轉(zhuǎn)過的角度,進而計算壓縮機活塞位移。
本系統(tǒng)采用研華板卡PCI-1715U高速數(shù)據(jù)采集板卡,確保系統(tǒng)能高速采集、處理數(shù)據(jù),進而精確繪制PV圖。該壓縮機PV圖測試系統(tǒng)以PCI-1715U為硬件平臺,通過PCI總線與工控機相連,利用研華工控機的內(nèi)存作為采樣數(shù)據(jù)的緩沖存儲器,借助研華32位DLL驅(qū)動程序提供的接口,采用Borland Delphi 7.0語言編程,實現(xiàn)對板卡的硬件控制,主要完成壓力、位移信號高速采集、傳輸及存儲。該系統(tǒng)結(jié)構(gòu)框圖如下圖1:
圖1 制冷壓縮機PV圖測試系統(tǒng)結(jié)構(gòu)框圖
3 PCI-1715U板卡功能特點和采集原理
3.1功能特點
PCI-1715U是一款帶有2500VDC的隔離保護的12位分辨率高速模擬量輸入卡,適用于各種測試領(lǐng)域。其具體特征如下[1]:
(1)32路單端或16路差分模擬量輸入,或采用單端和差分輸入的不同組合方式來完成多通道采樣;
(2)各輸入通道的增益可獨立設(shè)置,輸入范圍包括0~10V,0~5V等。用戶可以通過軟件選擇最合適被測信號的電壓范圍,各通道增益可獨立編程;
(3)對于A/D轉(zhuǎn)換,PCI-1715U支持三種觸發(fā)模式:軟件觸發(fā)、內(nèi)部定時器觸發(fā)和外部觸發(fā)。
(4)該板塊具備三種模擬量輸入采集方式:軟件方式、中斷傳輸方式、DMA傳輸方式。
(5)板卡帶1K的采樣FIFO緩存,A/D轉(zhuǎn)換的采樣速率可達(dá)500KS/s,支持32位PCI總線控制DMA數(shù)據(jù)傳送方式;
(6)當(dāng)用戶同時插入多張板卡時,可做硬件組態(tài)設(shè)定,輕易辨識每張板卡,便于系統(tǒng)擴展。
3.2數(shù)據(jù)采集原理
研華公司為其多種板卡開發(fā)了通用的“Advantech DLL Driver”驅(qū)動軟件,其中的ADSAPI32.DLL為用戶提供了能對硬件設(shè)備直接I/O操作的封裝函數(shù),便于用戶快速開發(fā)程序。PCI-1715U采集卡在Windows下采用32位動態(tài)鏈接庫驅(qū)動程序,可以在VC、VB和Delphi等環(huán)境下實現(xiàn)對采集卡的底層操作,開發(fā)出界面友好的控制系統(tǒng)[4]。本系統(tǒng)采用Delphi語言編程,實現(xiàn)高速DMA方式數(shù)據(jù)采集;DMA方式(Direct Memory Access)是最快的數(shù)據(jù)傳輸方式,指的是數(shù)據(jù)在沒有CPU介入的情況下直接在設(shè)備和內(nèi)存間傳輸,設(shè)備驅(qū)動會探測數(shù)據(jù)轉(zhuǎn)換狀態(tài)并發(fā)送合適的事件通知用戶。編程人員可以直接調(diào)用研華ADSAPI32.DLL為Delphi用戶提供的Driver.pas單元文件,該文件中聲明了有關(guān)常量、變量、DLL函數(shù)及相應(yīng)的結(jié)構(gòu),只需要將Driver.pas單元文件導(dǎo)入相應(yīng)的位置以及設(shè)置正確的路徑,就可省去自己聲明DLL函數(shù)的麻煩。
傳感器采集的信號經(jīng)濾波電路濾波后進入PCI-1715U板卡,卡上前端電路對信號進行信號調(diào)理,調(diào)理后信號進入A/D轉(zhuǎn)換器進行高速模數(shù)轉(zhuǎn)換。轉(zhuǎn)換數(shù)據(jù)首先暫存在板卡的1K板載FIFO中,當(dāng)FIFO半滿或全滿時產(chǎn)生一個中斷,設(shè)備驅(qū)動接收到中斷后會發(fā)送事件告知用戶當(dāng)前采樣狀態(tài),將數(shù)據(jù)從FIFO輸出到采樣緩存中。采樣緩存和用戶緩存一樣都是數(shù)據(jù)采集程序動態(tài)分配給驅(qū)動程序使用的兩塊內(nèi)存區(qū)域。兩塊緩存區(qū)的區(qū)別在于采樣緩存區(qū)存放的是從FIFO中取出來的原始值,用戶緩存區(qū)存放的是用戶需要的原始值或是經(jīng)轉(zhuǎn)換之后的電壓值[1]。而且,當(dāng)采用循環(huán)方式進行高速采集時,采樣緩存區(qū)分成容量相等的兩個半?yún)^(qū)使用,當(dāng)前半?yún)^(qū)填滿后就將數(shù)據(jù)向用戶緩存區(qū)傳送,同時將新轉(zhuǎn)換的數(shù)據(jù)放在采樣緩存區(qū)的后半部分。當(dāng)后半?yún)^(qū)填滿后就將此半?yún)^(qū)的數(shù)據(jù)向用戶緩存區(qū)傳送,同時自動將新轉(zhuǎn)換的數(shù)據(jù)放到早已傳輸完畢的前半個緩存區(qū)。
本文簡要介紹與該數(shù)據(jù)采集有關(guān)的幾個關(guān)鍵函數(shù)[1]:
DRV_DeviceOpen():對設(shè)備的任何操作和設(shè)置都必須首先調(diào)用此函數(shù)。它加載一個設(shè)備驅(qū)動程序到內(nèi)存,并確定設(shè)備類型,完成設(shè)備的初始化,使設(shè)備做好I/O傳輸?shù)臏?zhǔn)備工作。
DRV_DeviceGetFeatures():從打開的設(shè)備中獲取相關(guān)的設(shè)備信息,指明設(shè)備特征的存儲地址和存儲空間大小等。
DRV_FAIDmaExStart():通過指定AI起始通道和采樣通道數(shù),及存儲數(shù)據(jù)的內(nèi)部緩沖區(qū),來啟動總線控制下的DMA方式數(shù)據(jù)采集,并將A/D轉(zhuǎn)換數(shù)據(jù)從FIFO轉(zhuǎn)移到采樣緩存區(qū)中。
DRV_FAITransfer():把當(dāng)前采樣緩存區(qū)中的數(shù)據(jù)傳輸?shù)接脩艟彺鎱^(qū)。
DRV_FAICheck():該函數(shù)通常用于FAI啟動時來查詢當(dāng)前采樣緩存區(qū)的半滿狀態(tài),以便及時調(diào)用DRV_FAITransfer()函數(shù)把數(shù)據(jù)傳輸?shù)接脩艟彺鎱^(qū)中。
在PCI-1715U啟動A/D轉(zhuǎn)換進行高速數(shù)據(jù)采集前,首先需要獲取用戶對板卡的初始化設(shè)置信息(流程圖如下圖2所示),并將設(shè)置信息保存到設(shè)置緩存區(qū)相應(yīng)的位置。
圖2 PCI-1715U初始化流程圖
圖3 DMA高速數(shù)據(jù)采集流程圖
初始化設(shè)置完成后,啟動A/D進行高速數(shù)據(jù)轉(zhuǎn)換,以DMA方式將轉(zhuǎn)換數(shù)據(jù)實時地傳送到內(nèi)部緩存區(qū)。PCI-1715U進行高速數(shù)據(jù)采集的程序流程圖如圖3所示。在調(diào)用函數(shù)DRV_FAIDmaExStart()啟動DMA高速采樣之前,推薦事先調(diào)用函數(shù)DRV_EnableEvent()使能事件通知功能。接下來則可以調(diào)用函數(shù)DRV_CheckEvent()來等待使能的事件通知,當(dāng)接收到事件通知后,對數(shù)據(jù)進行處理。另外,DRV_FAITerminate()函數(shù)隨時都可以用來終止采樣操作。
當(dāng)函數(shù)DRV_FAIDmaExStart()執(zhí)行以后,A/D啟動開始進行高速數(shù)據(jù)轉(zhuǎn)換,轉(zhuǎn)換的數(shù)據(jù)首先利用PCI-1715U卡上的板載1K FIFO作為緩沖。一旦開始數(shù)據(jù)采集操作,必須知道當(dāng)前的采樣狀態(tài),以便及時把數(shù)據(jù)從內(nèi)部采樣緩存?zhèn)鬏數(shù)接脩艟彺。允許驅(qū)動向用戶程序發(fā)預(yù)定的事件(調(diào)用函數(shù)DRV_EnableEvent()),即當(dāng)采樣緩存區(qū)半滿時會產(chǎn)生一個ADS_EVT_BUFCHANGE事件,此時等待事件發(fā)生的通知(調(diào)用DRV_CheckEvent()),當(dāng)有事件發(fā)生用戶就可以調(diào)用函數(shù)DRV_FAITransfer()及時把數(shù)據(jù)從內(nèi)部采樣緩存?zhèn)鞯接脩艟彺妗T趯嶋H操作中,也可以將內(nèi)存中的數(shù)據(jù)保存成文件系統(tǒng)并存儲到工控機硬盤中。本系統(tǒng)采用Delphi 7.0語言編程[2],采集程序舉例如下:
…………
ptFAITransfer.DataBuffer := Pointer(GlobalLock(hDisplayBuf));
ptEnableEvent.EventType := 0;
if( chkBufferChange.Checked ) then
ptEnableEvent.EventType :=ptEnableEvent.EventType or ADS_EVT_BUFCHANGE;
if( chkTerminate.Checked ) then
ptEnableEvent.EventType := ptEnableEvent.EventType or ADS_EVT_TERMINATED;
…………
ErrCde := DRV_FAIDmaExStart(DriverHandle,ptFAIDmaExStart);
if DoesErr(ErrCde) = 1 then
begin
GlobalFree(HGLOBAL(hUserBuf));
GlobalFree(HGLOBAL(hDisplayBuf));
DRV_DeviceClose(DriverHandle);
Exit;
3.3測試系統(tǒng)實現(xiàn)的幾個關(guān)鍵問題
制冷壓縮機PV圖蘊含豐富的有關(guān)壓縮機運行狀況和工作性能的信息,當(dāng)壓機運行不正常或出現(xiàn)故障時,PV圖會發(fā)生相應(yīng)的變化。在本測試系統(tǒng)中,需要重點解決如下問題:
(1)壓力信號與主軸轉(zhuǎn)角相位同步問題
由于在整個工作過程中,活塞是在封閉的氣缸內(nèi)進行往復(fù)運動,因此直接獲得活塞移動的位置信號很困難。通常采用間接方法,即先獲得曲軸旋轉(zhuǎn)的角度信號,然后根據(jù)活塞壓縮機動力學(xué)知識轉(zhuǎn)換為活塞行程位移信號。假設(shè)壓縮機曲軸任意轉(zhuǎn)角α的瞬時,活塞距外止點的位移為S,由活塞式壓縮機動力學(xué)可知:
式中, r表示曲柄的半徑;L表示連桿長度。
由于壓縮機在整個工作過程中主軸轉(zhuǎn)速是不均勻的,不適合等時間間隔采樣。本系統(tǒng)中氣缸壓力信號采集選擇PCI-1715U支持的外部脈沖觸發(fā)方式,根據(jù)測試精度要求,旋轉(zhuǎn)編碼器A相每轉(zhuǎn)輸出嚴(yán)格等間隔的2000個脈沖,將編碼器與主軸連接在一起,編碼器輸出的脈沖即可作為氣缸壓力采樣的外部觸發(fā)信號,從而保證每次循環(huán)采集2000個壓力值,且采集的壓力信號與主軸等轉(zhuǎn)角位移同步。以壓縮機轉(zhuǎn)速3600r/min為例,編碼器分辨率為2000P/R, PCI-1715U采集3個壓力傳感器的壓力值,計算可得采樣速率為360 KS/s,符合該高速數(shù)據(jù)采集卡的采樣速率最大值500 KS/s。
(2)活塞止點鑒別問題
在系統(tǒng)實現(xiàn)中,要獲得PV圖首先要確定氣缸內(nèi)活塞在一個工作循環(huán)中的起點和終點位置,可是在工作過程中,活塞可能在氣缸的任何一個位置開始或停止工作,所以沒有任何關(guān)于壓縮機工作循環(huán)開始或結(jié)束的外部特征信息。系統(tǒng)只能對壓力信號循環(huán)采樣,在采集的大批數(shù)據(jù)中包含了多個工作循環(huán)內(nèi)的壓力信號。因此,如何從大量數(shù)據(jù)中確定一個完整工作循環(huán)的起點和終點,即活塞止點鑒別問題,是一項非常重要的工作。
本系統(tǒng)利用選擇旋轉(zhuǎn)編碼器實現(xiàn)止點鑒別,旋轉(zhuǎn)編碼器除了A、B兩相每轉(zhuǎn)輸出定量的脈沖外,其上Z相每轉(zhuǎn)在固定角度輸出一個脈沖,將此角度位置與活塞止點位置所對應(yīng)的主軸轉(zhuǎn)角重合,同步采集Z相電平信號,通過軟件分析,就能確定活塞止點所對應(yīng)的氣缸壓力采樣點。
4 結(jié)論
本文介紹了研華PCI-1715U高速數(shù)據(jù)采集卡在制冷壓縮機PV測試系統(tǒng)中的應(yīng)用,具體為:PCI-1715U板卡作為PV測試系統(tǒng)的硬件平臺,利用Delphi7.0作為軟件開發(fā)環(huán)境,借助于研華ADSAPI32.DLL進行編程,從而實現(xiàn)小型制冷壓縮機壓力和活塞位移信號的采集,并對獲得的數(shù)據(jù)以繪制曲線的方式進行顯示、分析,具有良好的應(yīng)用前景。
參考文獻(xiàn)
[1] Advantech Inc. PCI-1715U User’s Manual,2007.
[2]劉瑞新,萬朝陽等.Delphi程序設(shè)計教程[M].北京:機械工業(yè)出版社,2006
[3] 鄭玉林.基于研華工業(yè)控制板卡PCI-1713的高速數(shù)據(jù)采集系統(tǒng)[J].科教文匯,2006(03):105-106.
[4] 梅順齊,張智明.PCI-1710數(shù)據(jù)采集原理及其在工業(yè)中的應(yīng)用[J].現(xiàn)代制造工程,2006(7):31-32.