摘要:介紹一種基于VC++的下位機電機運動(dòng)控制系統和硬件采集器的雙通道多功能虛擬數字示波器。結合VC++良好的面向對象的特性, 該虛擬示波器具有豐富的功能, 如界面控制和波形顯示、數據采集、雙通道波形顯示對比及波形的測量與保存等。對這些功能模塊的實(shí)現方法與過(guò)程進(jìn)行了詳細的討論。
關(guān)鍵詞:虛擬儀器; 示波器; VC++; 便攜; 人機交互;
1、虛擬儀器介紹
隨著(zhù)科技發(fā)展, 虛擬儀器技術(shù)逐漸取代傳統儀器。虛擬儀器借助于計算機Windows操作系統強大的圖形功能, 使人機交互的操作更加友好和便捷;對于數據處理, 應用計算機軟件的強大功能可以靈活地選擇所需要的算法處理 (數字濾波、統計分析和數值計算) 。它不僅具有傳統儀器的示波器功能, 它比傳統儀器更具靈活性, 可以與計算機同步, 易實(shí)現自動(dòng)測試及網(wǎng)絡(luò )功能, 利于對設備運行故障進(jìn)行診斷。
2、虛擬儀器的設計
2.1、軟件需求概括
本軟件主要有以下幾個(gè)方面的功能。
1) 雙通道測量波形。
2) 多觸發(fā)源 (CH1、CH2、ALT、EXT) , 觸發(fā)斜率 (+、-) , 多觸發(fā)方式 (AUTO、NORMAL、SINGNAL) 。
3) 記錄歷史波形, 保存波形及參數設置界面。
4) 記錄歷史數據, 波形數據可以按時(shí)間和電壓輸出到TXT文件。
5) 保存下位機傳輸的數據, 并顯示波形。
6) 測量點(diǎn)硬件采集器傳輸數據波形與下位機數據波形相對比。
7) 測量檢測點(diǎn)的幅值、周期、頻率。測量下位機傳輸數據的幅值、周期、頻率。
8) CAN總線(xiàn)通信, 高刷新率, 高采樣率。
2.2、開(kāi)發(fā)環(huán)境簡(jiǎn)介
系統開(kāi)發(fā)的條件是普通PC以及相對應的系統, 本次開(kāi)發(fā)所用的軟件為Microsoft Vc++6.0。
2.3、軟件設計
軟件運行, 初始化操作。初始化完成, 當虛擬儀器上位機軟件檢測到硬件接入及硬件請求發(fā)送數據時(shí), 接收硬件數據, 并將數據存儲到已開(kāi)辟的存儲空間中。然后在主面板的狀態(tài)欄中顯示采樣, 當通道接地時(shí), 處理數據并獲取顯示數據。若通道未接地, 側處理數據, 并將數據從“ch_data”復制到“chx_data”, 然后獲取顯示數據。獲取顯示數據后, 當不處于X-Y模式時(shí), 在屏幕上顯示數據波形。否則, 重新從下位機讀取數據。
3、虛擬儀器軟件功能的實(shí)現
3.1、波形幅值、周期、頻率的計算
一方面, 對于硬件采集器的相關(guān)計算, 由于開(kāi)發(fā)商的二次開(kāi)發(fā)代碼中, 將有關(guān)從硬件采集器采集到的數據進(jìn)行了封裝。所以, 在對虛擬儀器軟件的開(kāi)發(fā)過(guò)程中, 是根據在面板上顯示的波形數據的二次處理數據間接獲得。波形顯示面板上縱坐標為256個(gè)像素點(diǎn), 再依據幅值的設定, 求得最大值與最小值, 從而反推得到波形的幅值。而波形顯示面板的橫坐標共有10 300多個(gè)數據, 再依據對時(shí)基的設定, 利用過(guò)零檢測, 求得波形的周期, 對應的波形的頻率等于周期的倒數。另一方面, 對于下位機數據波形的相關(guān)計算, 相比較硬件采集器而言, 要相對容易。因為, 通過(guò)和下位機協(xié)定好通信協(xié)議之后, 可以直接從下位機獲得直接數據。而對波形幅值、周期、頻率的算法, 和上面的算法相似。
3.2、波形的保存
具體軟件編程步驟如下:首先取得客戶(hù)區內存DC (客戶(hù)區設備上下文) , 用于客戶(hù)區的輸出, 與特定窗口關(guān)聯(lián), 可以讓開(kāi)發(fā)者訪(fǎng)問(wèn)目標窗口中客戶(hù)區。接著(zhù), 獲得窗口的當前的客戶(hù)區并創(chuàng )建一個(gè)與顯示器設備內容 (&SHDC) 兼容的內存設備內容DC, 來(lái)存放CBitmap對象。下一步, 將位圖選入到內存顯示設備中, 因為只有選入了位圖的內存顯示設備才有地方繪圖, 畫(huà)到指定的位圖上。然后, 將位圖從原設備文本復制到創(chuàng )建的設備文本, 實(shí)現圖片的保存。然后通過(guò)位圖頭文件BITMAPFILE-HEADER bfh和位圖信息頭BITMAPINFOHEADER bih等一些操作實(shí)現指定文件夾波形圖片的保存。
3.3、波形數據的保存
波形數據的保存主要實(shí)現的功能是, 將從下位機獲取的數據按照時(shí)序的方式, 保存到指定文件夾下。
4、軟件調試
軟件調試主要解決的問(wèn)題是, 上下位機是否可以按照設計的實(shí)現通信。而初步調試時(shí), 上下位機確實(shí)無(wú)法實(shí)現通信。于是, 再次回到了上位機軟件通信的編寫(xiě)以及CAN/USB轉接器的使用。經(jīng)過(guò)多次調試, 最終發(fā)現, 常規的串口通信程序, 會(huì )默認將DTR端置1, 如此將會(huì )使CAN/USB轉接器置于設置狀態(tài), 因而無(wú)法實(shí)現正常的通信。于是, 修改程序, 使DTR端口置0, 最終實(shí)現了上位機與下位機的正常通信。
5、結語(yǔ)
在本設計中的基于VC++的虛擬儀器不僅具有一般臺式數字存儲示波器的基本功能, 而且充分地發(fā)揮了PC強大的圖形功能和軟件設計的靈活性。基本滿(mǎn)足了最初的設計需求, 實(shí)現了便攜, 可以用于日常教學(xué)演示或外場(chǎng)調試測試等場(chǎng)合。
參考文獻
[1]楊樂(lè )平.虛擬儀器技術(shù)概論[M].北京:電子工業(yè)出版社, 2003.
[2]張易知.虛擬儀器的設計與實(shí)現[M].西安:西安電子科技大學(xué)出版社, 2002.