范治政,劉永春,郭志庭
(四川理工學(xué)院 自動化與電子信息學(xué)院 四川省院士(專家)工作站,自貢 643000)
在工業(yè)生產(chǎn)、電氣設(shè)備監(jiān)測過程中常常要求對各種信號進行同步記錄,以便分析信號之間的關(guān)系,作出相應(yīng)的預(yù)測與控制[1]。數(shù)據(jù)采集與分析對于提高工業(yè)生產(chǎn)、優(yōu)化生產(chǎn)線、及時發(fā)現(xiàn)設(shè)備故障等都有重要的意義。以NI公司為代表生產(chǎn)的數(shù)據(jù)采集卡過于昂貴,在數(shù)據(jù)采集過程中,對那些不要求超高速采集和處理的控制系統(tǒng),這類采集卡顯得過于浪費資源。采用Ardunio和LabVIEW快速構(gòu)建低成本、多功能的USB采集卡,可適用于這些場合。Ardunio是國外比較流行的電子開源平臺,開發(fā)者為不同型號的Ardunio編寫有bootloader,以便于管理和引導(dǎo)程序。編程者只需要掌握C/C++就可以快速地進行開發(fā),以及做出屬于自己的庫文件。在數(shù)據(jù)采集和控制系統(tǒng)中,采用VC、Delphi、VB等面向?qū)ο箝_發(fā)平臺開發(fā)上位機監(jiān)控軟件存在開發(fā)周期長、測試效率低等問題[2]。而使用LabVIEW開發(fā)周期短、界面控件豐富、內(nèi)置豐富的信號處理VI、可以大大地提高效率。
系統(tǒng)總體結(jié)構(gòu)如圖1所示。數(shù)據(jù)采集系統(tǒng)核心部分由上位機監(jiān)控軟件和下位機Ardunio控制器組成。上位機監(jiān)控軟件通過USB總線向Ardunio發(fā)送數(shù)據(jù)采集指令,下位機收到指令開始采集數(shù)據(jù)。傳感器采集到模擬信號經(jīng)過信號調(diào)理電路,送到A/D轉(zhuǎn)換器轉(zhuǎn)換為數(shù)字量,數(shù)字信號經(jīng)光電耦合隔離電路送到控制器I/O口采集。采集數(shù)據(jù)通過CH340T芯片緩沖區(qū)送到USB通道中,由上位機監(jiān)控軟件進行分析處理。根據(jù)數(shù)據(jù)分析處理結(jié)果,可以調(diào)節(jié)Ardunio的2路PWM占空比和6路數(shù)字輸出,對設(shè)備進行控制。
圖1 系統(tǒng)總體結(jié)構(gòu)圖Fig.1 System overall structure
Ardunio是一款便捷的開源電子平臺控制器,包含有各種型號的Ardunio硬件和IDE開發(fā)環(huán)境。Ardunio主要是基于Atmel公司的微處理器進行高度封裝,開發(fā)者不用了解底層硬件就可以控制處理器,現(xiàn)階段已有32位微處理器支持Ardunio。Ardunio主控電路如圖2所示。
Ardunio選用第三代uno板,在原版的基礎(chǔ)上重新設(shè)計電路圖,以適應(yīng)采集卡的需要。電路設(shè)計預(yù)留出了5 V和3.3 V接口,可直接為各種數(shù)字式傳感器提供電源。保留原版的ICSP接口,用于升級bootloader。第三代 Ardunio控制器總共有 6路PWM,系統(tǒng)只使用2路。6路模擬輸入管腳用于采集多通道模擬數(shù)據(jù)。14路I/O口(包含6路PWM),6路用于數(shù)字輸入檢測,6路用于數(shù)字量輸出。片內(nèi)資源豐富:32 K Flash、2 K SRAM、1 K E2PROM。Ardunio管腳編號固定,同一類板卡,不同型號之間的程序可以相互使用,這是Ardunio板的巨大優(yōu)勢。
圖2 系統(tǒng)主控電路圖Fig.2 System main control circuit diagram
采用CH340T芯片作為轉(zhuǎn)換接口。使用之前需要安裝驅(qū)動程序,從官方網(wǎng)站下載驅(qū)動安裝之后可進行數(shù)據(jù)傳輸。CH340T芯片是全速USB接口,兼容USBV2.0,全雙工串口,內(nèi)置緩沖區(qū),支持通訊率50 b/s~2 Mb/s。外加電平轉(zhuǎn)換器件可提供 RS232、RS485、RS422等接口,采用5 V或3.3 V供電。USB轉(zhuǎn)串口電路圖如圖3所示。
圖3 USB接口轉(zhuǎn)換電路Fig.3 USB interface conversion circuit
RXD和TXD管腳分別與主控器RXD、TXD管腳相連接。UD-和UD+與USB接口的D-和D+連接,在電源和地之間加有0.1 μF耦合電容。12 MHz晶振和電容構(gòu)成芯片運行的時鐘。USB接口端分別接上16 kΩ匹配電阻,防止高速信號出現(xiàn)反射現(xiàn)象[3-4]。
下位機程序主要包括初始化控制器管腳、設(shè)置波特率、發(fā)送數(shù)據(jù)子程序、接收命令子程序、數(shù)據(jù)轉(zhuǎn)化程序等。為增強程序的可讀性和調(diào)試方便,把相關(guān)程序做成頭文件。由于Ardunio的頭文件均采用了C++編寫,需要嚴格遵守類和繼承有關(guān)的要求以及Ardunio庫文件的格式。系統(tǒng)中用到的幾個頭文件 :#inclue
圖4 下位機流程圖Fig.4 Flow chart of lower machine
Ardunio上電或者復(fù)位后會初始化內(nèi)部寄存器和分配I/O引腳,等待上位機發(fā)送指令。上位機將指令轉(zhuǎn)換為十六進制數(shù)據(jù)發(fā)到下位機,指令中包含2個字節(jié)校驗碼。下位機通過校驗碼,校驗發(fā)送指令是否正確。加入校驗碼進行通訊可以屏蔽掉一些電平干擾,防止下位機進行誤操作,損壞設(shè)備。校驗碼正確后,下位機判別指令功能執(zhí)行相應(yīng)程序。如接收到模擬采集數(shù)據(jù)指令,下位機將模擬數(shù)值以ASCLL碼格式通過USB接口發(fā)送到上位機。當收到PWM更新指令時,根據(jù)上位機發(fā)送的占空比,下位機改寫PWM函數(shù)中參數(shù)值,輸出更新PWM。
實驗過程中采用了LabVIEW 2013開發(fā)上位機監(jiān)控軟件。下位機中選用了CH340T芯片進行USB轉(zhuǎn)串口通訊。LabVIEW中串口通訊接口主要是采用的VISA節(jié)點,VISA是高層API調(diào)用。VISA函數(shù)集中包含有與串口配置VI。調(diào)用串口節(jié)點配置VI,配置串口節(jié)點的波特率、數(shù)據(jù)位數(shù)等相關(guān)參數(shù)就可以和下位機進行數(shù)據(jù)交換。上位機監(jiān)控軟件流程如圖5所示。
圖5 上位機流程圖Fig.5 Flow chart of host computer
數(shù)據(jù)分析處理的流程為通過VISA中的串口寫入和串口讀取VI,上位機能夠向串口發(fā)送命令、讀取數(shù)據(jù)。從串口中讀取數(shù)據(jù)后,要立即釋放串口,使串口持續(xù)讀取下位機數(shù)據(jù)。讀取數(shù)據(jù)中分為模擬數(shù)據(jù)和數(shù)字量。讀取模擬數(shù)據(jù)易受到各種電磁干擾,讓模擬數(shù)據(jù)通過濾波器后再進行處理。LabVIEW作為自動化專業(yè)的測試測量軟件,提供諸如Bessel、Elliptic、Buterworth等I2R濾波器[5]。根據(jù)采集的模擬信號種類,將數(shù)據(jù)送入對應(yīng)濾波器,進行濾波。濾波完成再將數(shù)據(jù)送到波形和數(shù)值顯示控件中,進行顯示。同時將采集的數(shù)據(jù)生成報表文件,供以后查詢。數(shù)據(jù)分析部分主要是利用Matlab和LabVIEW混合編程實現(xiàn)。在LabVIEW中可以通過ActiveX技術(shù)實現(xiàn)和Matlab交換數(shù)據(jù)[6]。這種交換方式只能滿足一般要求,實時性存在一定的問題?,F(xiàn)有的高級版本中主要通過Matlab腳本和MathScript實現(xiàn)[7]。由于MathScript的實時性能較好,系統(tǒng)設(shè)計時優(yōu)先選用。以數(shù)字輸入檢測為例闡述數(shù)據(jù)采集處理過程:當數(shù)字采集通道1被選中,同時采集按鍵發(fā)生值改變。上位機向下位機發(fā)送采集數(shù)字通道1指令。寫入指令后,等待串口緩沖區(qū)獲取數(shù)據(jù),然后讀出數(shù)據(jù),與常量0做比較,結(jié)果送入布爾顯示控件。根據(jù)數(shù)據(jù)分析結(jié)果,上位機向VISA寫VI中送入指令代碼,改變下位機中的開關(guān)量輸出、PWM占空比。校驗指令和控制指令一起寫入Buffer緩沖區(qū),通過轉(zhuǎn)換芯片以16進制方式發(fā)送到下位機。一次控制結(jié)束后,立即釋放串口資源。
實驗過程中,在采集卡周圍放置3個通電運行的直流電機,以測試系統(tǒng)抗干擾能力。分別采用實驗室的信號發(fā)生器、心率采集器、壓力傳感器、溫度傳感器測試采集數(shù)據(jù)能力。以溫度采集為例,實驗中采用LM35溫度傳感器。LM35溫度傳感器輸出模擬電壓,片內(nèi)有溫度補償電路,當前環(huán)境每上升1℃,輸出電壓增加10 mV。溫度模擬電壓數(shù)據(jù)由模擬通道0采集,采集轉(zhuǎn)換數(shù)據(jù)時,只保留了溫度整數(shù)位數(shù),小數(shù)部分未保留。轉(zhuǎn)化溫度在溫度實驗選項卡顯示。實驗效果如圖6和圖7所示。
圖6 模擬數(shù)據(jù)采集Fig.6 Analog data acquisition
圖7 溫度實驗效果圖Fig.7 Experimental result of the temperature
文中采用了Ardunio做為采集數(shù)據(jù)主控器,結(jié)合LabVIEW虛擬儀器開發(fā)了數(shù)據(jù)采集系統(tǒng)。借用虛擬儀器強大的信號處理和儀器控制功能,完成對采集數(shù)據(jù)的分析和外部設(shè)備控制。采用開源Ardunio和LabVIEW聯(lián)合開發(fā),降低了開發(fā)成本,縮短開發(fā)周期。通過一系列的實驗表明,系統(tǒng)運行良好,能夠達到預(yù)期要求。
[1]邢磊,鄭萍.多通道高速數(shù)據(jù)采集系統(tǒng)的設(shè)計與實現(xiàn)[J].儀表技術(shù)與傳感器,2012(11):116-118,148.
[2]吳桂清,朱院娟,郭斯羽,等.基于LabVIEW的旋轉(zhuǎn)機械振動在線監(jiān)測系統(tǒng)設(shè)計[J].傳感器與微系統(tǒng),2012,31(6):104-107.
[3]周青云,王建勛.基于USB接口與LabVIEW的數(shù)據(jù)采集系統(tǒng)設(shè)計[J].實驗室研究與探索,2011,30(8):238-240.
[4]張亮,李杰,張?zhí)煊?USB接口芯片CH376在專用控制系統(tǒng)中的應(yīng)用[J].兵工自動化,2014,33(3):51-53.
[5]呂東陽,王顯軍.基于LabVIEW的電機轉(zhuǎn)臺數(shù)據(jù)采集及監(jiān)控系統(tǒng)[J].測控技術(shù),2014,33(4):75-78.
[6]李貴娥,麻紅昭,沈家旗,等.電渦流檢測技術(shù)及影響因素分析[J].傳感技術(shù)學(xué)報,2009,22(11):141-145.
[7]陳樹學(xué),劉萱.LabVIEW寶典[M].北京:電子工業(yè)出版社,2011.