基于CPLD的高速數據采集系統(tǒng)的實現
目前國內專門針對液壓系統(tǒng)的數據采集產品比較少,而且存在諸如采集參數選擇不當或不夠、采集速率偏低、未能準確反映液壓系統(tǒng)的工作狀況、接口不利于安裝或傳輸速度太慢等問題。本文設計了一種基于CPLD(復雜可編程邏輯器件)+FX2(單片機CY7C68013)的便攜式高速數據采集系統(tǒng),采用了數據流驅動多模塊并行技術和USB2.0接口。實踐證明,該方案結構簡單,成本低廉,實時同步采集和傳輸速度相當于DSP系列的數據采集產品。
1 設計思路
數據采集包括采集量到電參量的轉換、信號調理、模/數轉換、數據緩沖、數據發(fā)送等幾部分。一般采用主控芯片直接控制模,數轉換、數據緩沖、數據發(fā)送等模塊順序執(zhí)行的方式,如圖1(a)所示。要達到較高的采集速度,須使用如DSP等高速主控芯片,為此而增加了系統(tǒng)成本和軟、硬件的調試難度。
本設計選用Cypress公司帶智能USB接口引擎和4K FTFO的單片杌CY7C68013(FX2),其USB數據發(fā)送部分可獨立自動執(zhí)行。選用Altem公司的CPLD器件EPM7128,采用VefilogHDL語言編程,設計模/數轉換、數據緩存集成控制電路。并采用數據流驅動多模塊并行技術,當模塊執(zhí)行所需的數據滿足條件時立即執(zhí)行,三種模塊可并行執(zhí)行,如圖1(b)所示,從而可通過低主頻CPU來控制高速數據采集。
上位機軟件采用美國國家儀器公司的IabVIEW語言編寫?;趫D形化編程的G語言使得上位機軟件的開發(fā)效率大大提高。特別是其NI-VISA3.0(Virtual Instrumentation Software Arehitecture)控件的推出,可以通過調用其標準化面向具體功能的、通用儀器的API(Application Programmer Interface)驅動接口實現自主開發(fā)的USB設備的驅動。
2 硬件設計
系統(tǒng)硬件配置如圖2所示。液壓系統(tǒng)中的壓力、流量、溫度以及振動頻率等模擬量通過傳感器變換為電信號后,經放大、緩沖、濾波等調理電路處理后,由模擬開關電路選擇后送A/D芯片(AD574)轉換成數字信號,并寫入FX2內置的FIFO,由內部集成的uSB控制器自動發(fā)往上位機,完成數據采集。CPLD控制器除控制模擬開關電路和ADC(模,數轉換電路)外,還控制將采集得到的數據寫入FX2的FIFO??刂破髟O計采用數據流驅動多模塊并行技術,以提高控制電路的執(zhí)行效率。系統(tǒng)固件程序燒錄于E2ROM中,通電或復位時,FX2自動加載。系統(tǒng)配備了直流電源,以滿足室外便攜采集的需要。
3 軟件設計
3.1 CPLD程序設計
CPLD內含ADC采集控制和FIFO控制兩個模塊,A/D采集控制模塊包括通道選擇、轉換時序發(fā)生和轉換狀態(tài)檢測等部分,FIFO控制模塊實現FIFO的寫時序控制。FIF0寫控制模塊采用轉換數據為觸發(fā)條件,當A/D轉換完成并把數據送到總線時,發(fā)出寫FIFO觸發(fā)脈沖,FIFO寫控制模塊將總線數據寫入FIFO;A/D采集控制模塊則以自身的采集數據狀態(tài)和FIFO寫完成作為執(zhí)行條件。兩個模塊在單片機控制下并行執(zhí)行,與此同時,當FIFO寫滿,智能USB控制器將FIFO內的數據發(fā)往上位機,實現了低主頻CPU控制高速同步數據的采集和傳輸。由于USB控制器的傳輸率可高達480Mbps,采用兩片FIFO緩沖,采集頻率低于10MHz則可避免因uSB傳輸丟失數據。
3.1.1 A/D采集控制模塊
AD574獨立操作模式(stand alone)工作時,通過R/C腳進行轉換和讀取控制,同時需要監(jiān)控STATUS腳,在A/D芯片轉換完畢后將12位轉換數據并行輸出到總線,同時輸出寫FIFO觸發(fā)脈沖。圖3所示為ADC控制器流程圖,據此可設計相應的VefilogHDL程序。
3.1.2 FIFO控制模塊
CY68013除自帶USB2.0控制器外,還有一個4K×8b的FIFO,共分成4個端點,端點大小和緩沖層次可編程設置。本文設置成SLAVE FIFO工作模式,兩個上傳FIF0片(端點)。通過SLWR控制總線上的數據寫入FIFO。當數據寫滿一片FIFO時,FIFO控制模塊切換地址,以避免數據丟失,保證轉換、發(fā)送的連續(xù)性。寫滿數據的端點由USB控制器自動發(fā)送。
如果在采集過程中FIFO控制器接到停止采集命令后,FIFO控制模塊產生PKTEND信號,指示USB控制器將采集停止后未滿FIF0中的剩余數據發(fā)往上位機。
3.2 底層固件及設備驅動
高速數據采集系統(tǒng)軟件設計分為兩部分:USB外設端的固件程序和主機操作系統(tǒng)上的主機應用軟件。主機應用軟件采用LabVIEW編寫,本文主要介紹基于LabVIEW的自主開發(fā)的USB設備簡便驅動方法。
3.2.1 固件程序
固件程序功能比較復雜,采用Keil uVsion2集成環(huán)境進行單片機C語言開發(fā),完成源代碼的編寫、仿真和調試。固件程序包括主程序Main()、設備描述符表DSCR.A51、固件程序源碼FW.C、用戶程序Ad_control.c等部分。固件程序流程如圖4所示。
固件程序調試編譯成功后,將其轉換成C2文件,通過Cypress公司提供的控制面板下載至E2pROM中。當系統(tǒng)加電或復位時,會自動檢查E2ROM的第1個字節(jié),如該字節(jié)為C2,則由EWROM加載USB設備的相關信息和固件程序,進行重枚舉。
3.2.2 基于LabVlEW的USB設備驅動程序
客戶應用軟件在操作系統(tǒng)中處于用戶態(tài),不能直接對USB設備進行操作。通常是采用DDK直接編寫
驅動程序,也可用DriverStudio或windriver產生驅動程序框架,再添加自己的代碼,編譯出驅動程序。雖然LabVIEW與NI公司的硬件接口編程非常方便,但對于自主開發(fā)的USB設備,并不具有通用性。用戶不僅要設計驅動程序,還要在此基礎上編寫USB.DLL,用于LabVIEW與USB接口。VISA通用的儀器驅動軟件結構是VPP(VXIPlagPlay)聯盟制定的新一代儀器I/O標準,具有與儀器接口和具體計算機無關的特性,特別是VISA3.0的推出,提供了自主開發(fā)或第三方USB設備在LabVIEW中的簡便驅動方法。
本文利用NI-VISA3.3,直接調用驅動開發(fā)向導(Driver Development Wizard),根據設備的PID、VID以及生成廠家、產品名稱等重要參數生成inf文件。安裝此文件后調用MAX(MeasurementAutomation Explore)即可以看到設備安裝成功。
在實際操作過程中,需特別注意在安裝VISA生成的驅動程序時,不能安排設備的Windows驅動程序,否則LABVIEW無法正常調用VISA開發(fā)的驅動程序.發(fā)現不了USB設備。
4 實驗與分析
采用本文所述的采集系統(tǒng)對某一高頻液壓沖擊器工作時的工作壓力(1)、回油壓力(2)和沖擊活塞運動速度(3)進行了現場實時數據采集,如圖6所示,其最高采集頻率為28.6kHz。采集數據準確反映了研究對象的狀態(tài),完全滿足設計目標需要。
基于項目的需要,選用的A/D芯片(AD574)其采集頻率為28kHz,如欲進行更高速率的數據采集,只需更改A/D轉換芯片部分的硬件電路和CPLD與A/D轉換相關的程序。由于系統(tǒng)采用了數據流驅動多模塊并行技術,在成本增加不多的情況下達到了非常高的采集和傳輸速率。從理論上分析,如果A/D轉換芯片選擇適當,系統(tǒng)采集頻率可以達到1OMHz。
本文提出的液壓系統(tǒng)數據采集方案,利用廉價的單片機FX2+CPLD,采用數據流驅動多模塊并行體系結構和USB接口,以取代DSP為主控芯片進行高速、實時同步液壓數據采集,可以方便地移植于其他高速數據采集系統(tǒng)中,且成本低,可靠性高。同時,提出了自主開發(fā)的USB設備在LabVIEW中的簡便驅動方法。
評論