匡偉男 袁鉀光

摘? 要:利用CVI的平臺對SQLServer數據庫與MATALAB的調用,實現了數據的動態存儲與利用MATALAB對數據進行處理的功能。
關鍵詞:CVI;SQLSever;MATALAB;腳本;ActiveX控件
中圖分類號:TP311.5? ? ? ?文獻標志碼:A 文章編號:2095-2945(2020)05-0176-02
Abstract: This paper using CVI platform to call the SQL Server database and MATALAB, thus realizing the dynamic storage of data and the processing of data.
Keywords: CVI; SQLSever; MATALAB; Scripts; ActiveX controls
引言
在自動化生產中特別是在上位機的開發中,經常遇到一些場景需要對大量的數據進行儲存與處理。如果讓上位機自己開發底層的數據存儲與處理程序,則勢必會加大工作量,且“不專業”的數據處理方式可能會占用相當大的資源,使得正常處理流程受到影響。所以,本文從“專業的人”干“專業的事”角度出發,利用CVI 強大的支持庫對SQL Server與MATALAB進行調用來對數據進行處理。
1 利用CVI調用MATALAB與數據庫
LabWindows/CVI 是NI 開發的虛擬儀器開發平臺,包含了集成式開發環境、交互式編程方法、簡單直觀的圖形用戶界面設計和強大的圖表功能[1]。實現LabWindows/CVI 和MATLAB 調用的關鍵是其數據和命令的交換,LabWindows/CVI 和MATLAB都提供了與外部程序接口的組件[2],使得這種調用成為可能。
NI 的LabWindows/CVI SQL 工具包提供了一套簡單易用的工具,使用戶能夠快速鏈接本地或者遠程數據庫,并通過結構化查詢語言(SQL)編程,執行諸多常用數據庫操作[3]。本文是將利用SQL Server將數據庫建立在本地,通過CVI訪問所建立的數據庫,對數據庫進行簡單的操作。
在本文中,調用方法主要如下所示:
1.1 創建ActiveX支持庫調用MATALAB
在菜單欄選擇Tool-> Create ActiveX Controller->Matlab Application(Version 8.6) Type Library,然后根據向導選擇支持庫保存的文件路徑。完成后會在庫中自動生成一個MATALAB 2015b的支持庫和五個相關的拓展名為.c .fp .h .obj .sub的文件,將后綴為.fp的文件需要被添加到自己的工程目錄中。
1.2 利用CVI訪問SQL Server數據庫
SQL Server建立數據庫,創建用戶并創建一個新的表,在CVI中安裝SQL數據庫支持工具NILWCVISQL220,該工具包支持對多種數據庫的訪問與使用。
1.3 支持庫中的接口函數
接口函數是支持庫封裝的最基本函數,在應用中只需要按其要求調用,知悉其作用而不用去管內部實現過程。本文只給出幾個重要的接口函數的參數說明,其余的接口函數使用,讀者可調用函數面板查看使用指南。
(1)MLApp_NewDIMLApp,該函數創建一個Matlab的句柄。(2)MLApp_DIMLAppExecute,該函數執行一條Matlab命令。(3)MLApp_DIMLAppQuit,該函數退出Matlab。(4)DBInit,該函數對數據庫進行初始化操作。(5)DBConnect,該函數設置連接參數,指定數據庫類型,文件路徑,登錄id,密碼等。(6)DBBindColChar,該函數對數據庫中的列進行綁定。(7)DBFetchNext,該函數順序得到數據庫中的下一個記錄。
1.4 函數調用實例
在CVI上建立調用M腳本的運行環境,按照腳本語言編寫簡單的腳本,在CVI中調用。以下主要給出打開matalab與執行腳本的代碼,不對整個工程邏輯與子函數進行贅述。實現打開matalab功能,并最大化打開的matalab窗口。得到句柄后可進行對MATALAB的操作,運行單個命令函數代碼,如圖1所示。
本函數的調用在“運行腳本”的回調函數中,其中函數RunMatlabCommand為主要對1.3節函數DIMLAppExecute封裝。
由執行結果可知,本工程順利執行腳本中所寫腳本,畫出了3D測試效果圖,實現了由CVI調用matalab的過程。
2 利用CVI混合調用數據庫與MATALAB
2.1 建立工程
將上述庫建到同一個工程中,預期實現由CVI程序產生一個正弦波曲線數據,將產生的數據保存到文件中,并將保存的文件的路徑與日期寫到建立的數據庫中,在matalab中實現對曲線數據的重繪。
2.2 實現過程
在TABLE控件中,建立其點擊的回調函數,在回調函數的實現中獲取點擊處的單元格的值,此值為一個文件名,將此文件名調用MATALAB命令行輸入到MATALAB中,預先建好一個M腳本文件,寫好需要畫圖的腳本實現,只需將腳本中的參數由命令行中先指定即可實現預期效果。重要的函數實現如圖2所示。
2.3 實現結果
可以看到點擊一個文件名時MATALAB自動的對數據進行重繪,繪制出來的圖像與預期一致,如圖3所示。
3 結束語
通過這種混合調用的方式,能夠大大減少工作量,也能夠讓工作變得更加直觀與靈活。本文只介紹了CVI對數據存儲與處理兩方面的軟件簡單調用,讀者可在本文基礎上進行更深入的使用或是對其它需要的軟件進行調用。
參考文獻:
[1]王曉崗,吳得光.LabWindows/CVI環境下調用Excel文檔的實現方法[J].甘肅科學學報,2013,25(2):101-104.
[2]劉君華.基于LabWindows/CVI的虛擬儀器設計[M].北京:電子工業出版社,2003.
[3]蘇少雄,鄭賓.LabWindows/CVI下基于ActiveX技術的Excel調用[J].測控技術,2018,37(5):128-131.