LabVIEW是一個劃時代的圖形化編程系統,應用于數據采集與控制、信號分析等方面,它為不熟悉文本語言編程的專業科技工作者在測控領域建立計算機儀器系統——虛擬儀器,提供了一個便捷、輕松的圖形化設計環境。由于其靈活、簡單易用、開發效率高等特點,正逐漸成為科技工作者進行儀器應用與開發的得力工具。數據采集是開發過程中一個重要的環節,NI公司提供了各種不同類型的基于LabVIEW的數據采集卡,但是其價格昂貴,對于小型企業、實驗教學等方面仍存在著不可避免的資金問題。而市面上銷售的第三方開發的數據采集卡,由于不具備對LabVIEW的直接支持,需要用戶開發其驅動程序,使用也不方便。如果采用以凌陽16位單片機SPCE061A作為前端數據采集,通過串口進行與LabVIEW的數據通訊,就可實現低成本、靈活方便、接口簡單的數據采集系統。這對于許多信號頻率不是太高的場合,此方案無疑非常便利。本文所介紹的就是這樣一種利用LabVIEW 對SPCE061A的數據進行分析處理,并通過串口實現二者之間的數據交換、經濟實用的數據采集及分析系統。 本系統主要包含兩部分的設計:LabVIEW部分設計和SPCE061A數據采集與串口通訊部分設計。 1 LabVIEW部分設計 1.1 VISA簡介 LabVIEW提供了功能強大的VISA庫。VISA(Virtual Instrument Software Architecture——虛擬儀器軟件規范,是用于儀器編程的標準I/O函數庫及其相關規范的總稱。VISA庫駐留于計算機系統中,完成計算機與儀器之間的連接,用以實現對儀器的程序控制,其實質是用于虛擬儀器系統的標準的API。VISA本身不具備編程能力,它是一個高層API,通過調用底層驅動程序來實現對儀器的編程,其層次如圖1(a)所示。VISA是采用VPP標準的I/O接口軟件,其軟件結構應包含三部分,如圖1(b)所示。 圖1 與其它現存的I/O接口軟件相比,VISA的I/O控制功能具有如下幾個特點:適用于各種儀器類型如VXI儀器、GPIB儀器、RS-232 串行儀器、消息基器件、寄存器器件、存儲器器件等儀器);適用于各種硬件接口類型;適用于單、多處理器結構或分布式網絡結構;適用于多種網絡機制。 VISA的I/O的軟件庫的源程序是唯一的,其與操作系統及編程語言無關,只是提供了標準形式的API文件作為系統的輸出。 1.2 VISA庫中的串口函數 本文用到的主要的串口通訊函數調用路徑為:Functions→Instrument I/O→VISA→VISA Advanced→Interface→Specific→Serial中。 1) VISA Configure Serial Port節點(如圖2所示) 圖2 VISA Configure Serial Port.vi圖標及其端口 該節點主要用于串口的初始化。主要參數意義如下: VISA resource name:設置串口號。 baud rate:設置波特率,默認值為9600。 data bits:設置數據位。該位應在5~8之間,默認值為8。 parity:奇偶校驗位,默認值為無校驗、偶校驗等。 stop bits:設置停止位,可以為1、1.5、2。 flow control:用于設置握手信號類型。 2) VISA Read節點(如圖3所示) 圖3 VISA Read.vi 圖標及其端口 該節點為串口讀子VI,為本文中的主要節點,將串口中的數據讀出,然后利用LabVIEW的強大數據處理功能對其進行分析處理。主要參數意義如下: VISA resource name:設置串口號。 byte count:設置讀取字節數。 read buffer:從串口讀取的字符。 由于LabVIEW的串行通訊子VI只允許對字符串的讀寫,因此本文中在進行數據處理時,必須要實現字符串與數字之間的正確轉換。此外,若要讀入當前串口中的所有字符,則要先執行“VISA Bytes at Serial Port”子VI,用以確定將要讀入的確切的字節數,然后將其輸出作為VISA Read節點的輸入即可。 2 SPCE061A數據采集與串口通訊部分設計 2.1硬件部分 SPCE061A內置8通道10位模-數轉換器,其中7個通道用于將模擬量信號 (例如電壓信號) 轉換為數字量信號, 可以直接通過引線(IOA[0~6])輸入。另外一個通道只用于語音輸入,即通過內置自動增益控制放大器的麥克風通道(MIC_IN)輸入。實際上可以把模數轉換器(ADC,Analog to Digital Converter)看作是一個實現模/數信號轉換的編碼器。在ADC內,由數模轉換器DAC0和逐次逼近寄存器SAR組成逐次逼近式模-數轉換器。另外,SPCE061A內置UART模塊,UART模塊提供了一個全雙工標準接口,用于完成SPCE061A與外設之間的串行通訊。借助于IOB口的特殊功能和UART IRQ中斷,可以同時完成UART接口的接收和發送數據的過程。UART模塊的接收管腳Rx和Tx分別與IOB7和IOB10共用。 本電路采用RS-232串行接口標準,在電氣特性上,RS-232采用負邏輯,要求高低兩信號間有較大的幅度,標準為:邏輯“1”在-5V~-15V之間,邏輯“0”在+5V~+15V之間,通常采用-1V左右為邏輯1,+10V左右為邏輯0。本電路采用符合RS-232標準的驅動芯片MAX232EPE實現此轉換。由于SPCE061A的信號輸入輸出為TTL電平,邏輯1為3.3V左右,邏輯0為0.4V左右,而MAX232EPE要求+5V供電,因此,在 MAX232EPE和SPCE061A之間加了電平匹配電路。 整個電路接口簡單,可靠性高。硬件部分原理圖如圖5所示 圖5 硬件原理圖 2.2軟件部分 LabVIEW軟件與串口實現數據通訊的程序圖,如圖6所示,由于SPCE061A發送給Labview的是字符串數據,所以先把該字符串轉換為字符數組,然后通過一個數組索引指定數組的第一個字符顯示并形成波形。 圖6. LabVIEW串口通訊程序圖 單片機SPCE061A利用通用串行接口UART實現串口通訊部分程序: //************************主程序*****************************************// L_ResendData: L_Check_TxRDY: R2 = [P_UART_Command2]; R2 &= 0x0040; //檢測輸出是否READY JZ L_Check_RxRDY; //發送8位十六進制數cc R1 = [recFlag]; CMP R1,0x0000; //是否接收過數據 JZ L_Check_RxRDY; [P_UART_Data] = R4; //發送數據 R1 = 0x0000; [recFlag] = R1; L_Check_RxRDY: R2 = [P_UART_Command2]; //檢測是否有數據接收 R2 &= 0x0080; JZ L_Check_RxRDY; R4 = [P_UART_Data]; //接收數據 R1 = 0x0001; [recFlag] = R1; //設置接收標識符 goto L_ResendData; 3.應用實例 如圖7所示,利用該數據采集系統進行一溫度數據的采集,在圖5的硬件原理圖中,將鉑熱電阻PT100測得的溫度電壓值(該測溫電路由電壓跟隨和電壓放大電路組成)送入到SPCE061A的IOA4端口,通過該路AD轉換通道,將電壓值經過數據處理后轉換為16進制數據值,并將處理后的溫度數據通過串口發送給LabVIEW,經過分析對比PT100鉑電阻準確的溫度曲線與所測得的溫度曲線可以得出在該溫度采集系統的軟件編程過程中應該對AD轉換后的數據乘以一個多大的溫度系數以及在分段溫度系數的情況下得出溫度系數轉折點,使處理后的所得的溫度數值盡可能的接近真實溫度值。 圖7 利用LabVIEW與SPCE061A的溫度數據數據采集系統 4 結論 LabVIEW作為一個具有良好開放性的虛擬儀器開發平臺,為面向儀器的編程提供了強有力的支持,在LabVIEW環境下能夠開發出各種功能強大、開放性好的虛擬儀器軟件,構造出實用的計算機輔助測試、分析與控制系統。本文利用SPCE061A進行前端數據采集,通過串口實現與LabVIEW的數據通訊,利用LabVIEW的強大信號分析處理功能,開發了一套投資少、操作簡便的數據采集與信號分析系統(其虛擬面板如圖7 所示)。實驗證明,該系統運行良好。 |