《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 測試測量 > 業(yè)界動態(tài) > 基于虛擬儀器的綜合測控系統(tǒng)程序設(shè)計

基于虛擬儀器的綜合測控系統(tǒng)程序設(shè)計

2008-12-09
作者:夏文超1, 戴瑜興1, 周 斌2

  摘? 要: 介紹了使用虛擬儀器技術(shù)及PLC構(gòu)成的綜合測控系統(tǒng)" title="測控系統(tǒng)">測控系統(tǒng),重點闡述了大型多線程LabVIEW程序的構(gòu)建、通訊協(xié)議的算法實現(xiàn)以及外部函數(shù)的調(diào)用、動畫的顯示等。
  關(guān)鍵詞: 虛擬儀器; PLC; 測控系統(tǒng); LabVIEW; RS-232

?

  LabVIEW即實驗室虛擬儀器集成環(huán)境,是美國國家儀器公司開發(fā)的圖形化集成開發(fā)環(huán)境" title="開發(fā)環(huán)境">開發(fā)環(huán)境。它區(qū)別于其他開發(fā)環(huán)境,主要采用圖形化編程即G語言編程,其核心是子VI、前面板、數(shù)據(jù)流圖等概念。LabVIEW目前已經(jīng)發(fā)展到8.5版本,提供了與MATLAB、C等外部程序的良好接口,支持ActiveX、DDE、TCP/IP等標準程序接口,采用了面向?qū)ο蟮木幊谭椒ǎδ芊浅姶螅m用于任何編程任務(wù),并滲入到嵌入式系統(tǒng)、FPGA設(shè)計等多個方面,成為一個獲得廣泛認可的圖形化軟件開發(fā)環(huán)境。本文介紹一個使用虛擬儀器技術(shù)在一臺普通PC上搭建通用多功能檢測平臺的應(yīng)用,其集成了多種傳統(tǒng)檢測功能,同時具有數(shù)據(jù)分析、存儲、模擬仿真等諸多擴展功能,使眾多功能統(tǒng)一在一個架構(gòu)下,成本低廉且方便管理維護,很好地體現(xiàn)了虛擬儀器低價靈活功能強大的優(yōu)點。
1 測控系統(tǒng)總體結(jié)構(gòu)
  本測控系統(tǒng)主要目的是在一個架構(gòu)下完成對工業(yè)生產(chǎn)中的各種元器件的檢測,根據(jù)測量對象的不同選用不同的機械部分,可以應(yīng)用于研發(fā)、質(zhì)保等環(huán)節(jié)。
  系統(tǒng)整體結(jié)構(gòu)如圖1所示,整個系統(tǒng)由普通PC機、PLC、機械/電動執(zhí)行件及傳感器搭建組成。傳感器通過CAN、開關(guān)量、模擬量等方式接入PLC,PLC通過RS232連接PC機。此系統(tǒng)靈活簡單,任何一臺裝上程序的普通PC機連接PLC就能采集數(shù)據(jù),且成本較低。PLC選用一款國產(chǎn)的控制器,特點是端口豐富,擁有2個CAN2.0B端口,1個RS232/422/485復用串口,1個以太網(wǎng)口,6路PWM輸出,4路脈沖輸入以及大量的模擬和數(shù)字端口,價格低廉,符合本設(shè)計要求,擴展空間廣闊。基本連接的傳感器為Hengsler絕對編碼器和3B6角度傳感器,使用CANOPEN接口;執(zhí)行件為大扭矩步進電機,以PLC的PWM輸出作為其主要控制信號。

?

  系統(tǒng)的核心是PC機與PLC的協(xié)同工作。在工作時PC機與PLC進行雙向?qū)Φ仁酵ㄐ牛伎梢韵驅(qū)Ψ街鲃影l(fā)數(shù)據(jù)。PC機負責人機交互" title="人機交互">人機交互、數(shù)據(jù)分析存儲以及根據(jù)收到的信息進行一些邏輯判斷,向PLC發(fā)送各種數(shù)據(jù)及命令。PLC負責將收到的命令轉(zhuǎn)換成具體的動作,收集現(xiàn)場信息傳給PC,以及實現(xiàn)安全保護的邏輯判斷。
2 主機程序總體結(jié)構(gòu)
  程序主要結(jié)構(gòu)如圖2所示。主循環(huán)由2個線程組成,一個負責監(jiān)視通信;一個負責邏輯分析以及人機交互。通信線程包括數(shù)據(jù)收包解包、幀打包發(fā)送。人機交互線程包括面板操作響應(yīng)、數(shù)據(jù)分析及畫圖演示、發(fā)送命令、響應(yīng)PLC的請求等。線程間通信通過LabVIEW中有互斥保護機制的隊列類型(queue)交換數(shù)據(jù),避免不同線程同時搶占公共資源或讀寫順序混亂產(chǎn)生錯誤。線程內(nèi)部不同子循環(huán)間通過“通知/消息”結(jié)構(gòu)(notifier)交換有時間性要求的數(shù)據(jù)。最后為正常退出的處理程序,進行設(shè)置存盤等操作。數(shù)據(jù)的存儲與讀取使用ACCESS數(shù)據(jù)庫。

?

3 LabVIEW主要程序設(shè)計" title="程序設(shè)計">程序設(shè)計
3.1用戶登錄驗證

  登錄驗證界面程序完成用戶合法性及權(quán)限驗證。在啟動時隱藏程序主界面,彈出登錄驗證界面。登錄程序首先讀取數(shù)據(jù)庫用戶信息,然后進入單循環(huán)event case結(jié)構(gòu),等待登錄事件觸發(fā),進行驗證。訪問數(shù)據(jù)庫使用LabSQL模塊完成。圖3所示為等待登錄事件觸發(fā)的程序,圖4中程序完成對用戶信息數(shù)據(jù)庫userinfo.mdb的一次訪問。

?


3.2 PC機與PLC通信設(shè)計
3.2.1 模塊概述
  通信模塊的正常可靠運行是整個測控系統(tǒng)安全工作的基礎(chǔ)。如果不定義數(shù)據(jù)包不加處理地直接收發(fā)信息,則有可能因為收發(fā)雙方收發(fā)時間的不協(xié)調(diào)而導致連續(xù)的誤判。這在主從式低速通信的情況下可以通過問答形式避免,但在雙向通信的情況下,隨著數(shù)據(jù)量的增加錯誤風險也大大增加,可能導致危險的機械動作,因此需要一定的機制避免這種情況的發(fā)生。最理想的方法是利用TCP/IP協(xié)議,但PLC中RS232通信模塊沒有此協(xié)議,因此自行編制了一個底層通信協(xié)議以保證通信的可靠和效率。圖5為基本通信過程。

?


3.2.2? 通信協(xié)議
  對于雙方的上層應(yīng)用程序,數(shù)據(jù)幀定義如下:每一幀開頭包括2字節(jié)表示幀類型及幀意義,第三字節(jié)開始為數(shù)據(jù)及參數(shù),長度可變,如無參數(shù)和數(shù)據(jù)則填空。重要的數(shù)據(jù)在發(fā)送后需要得到確認。應(yīng)用程序?qū)⑿枰l(fā)送的幀寫到寫緩沖隊列中,等待打包程序處理后發(fā)送。接收到的包經(jīng)過對應(yīng)的解包程序后送到讀緩沖隊列中給程序使用。
  打包處理過程如圖6所示,程序接收到應(yīng)用程序要發(fā)送的數(shù)據(jù)幀后,將幀中的數(shù)據(jù)位進行裁減及拼接處理,將原數(shù)據(jù)位中每7位數(shù)據(jù)分成一組,最高位補0,作為數(shù)據(jù)包中的1字節(jié)數(shù)據(jù),犧牲1位的效率表示原數(shù)據(jù)。這樣做是因為包的結(jié)尾有一字節(jié)“FE”作為包結(jié)束標志,避免數(shù)據(jù)位中出現(xiàn)與結(jié)束位相同的字節(jié)。幀頭的幀類型幀意義2 字節(jié)數(shù)據(jù)同樣也不能出現(xiàn)和結(jié)束位一樣的字節(jié)“FE”。完成后再對前面所有位進行累加然后模128,結(jié)果作為1字節(jié)校驗位。在包的最后是一字節(jié)“FE”表示包結(jié)束。使用“FE”而不是“FF”可以避免此重要的結(jié)束字8位為全“1”,增強抗干擾性。解包程序為其逆過程。由于上述處理都是數(shù)據(jù)移位的過程,所以占用資源很少,執(zhí)行效率非常高,PLC端也能承受這種開銷。

?


  LabVIEW中打包子程序" title="子程序">子程序主要部分如圖7所示。中間case結(jié)構(gòu)為打包算法的實現(xiàn):取出幀中數(shù)據(jù)位拼接到一個Unsigned Integer64單元中,接著按位取出,每7位一組作為1字節(jié),得到包數(shù)據(jù)位,再進行累加和校驗,與幀頭2位及結(jié)束位組合便得到數(shù)據(jù)包。

?


3.2.3 通信監(jiān)視線程
  通信監(jiān)視線程的接口主要是3個FIFO隊列,即Wbuf、combuf、databuf,隊列元素為供上層程序使用的幀,以LabVIEW中簇(Bundle)的形式存在。Wbuf表示待發(fā)送數(shù)據(jù),combuf表示收到的命令幀,databuf表示收到的數(shù)據(jù)幀。程序不斷地掃描Wbuf隊列、RS232硬件接收緩沖區(qū)。當Wbuf中有元素時,依次取出所有元素,并對每個元素即待發(fā)的幀調(diào)用打包程序進行數(shù)據(jù)位、校驗位及結(jié)束位的處理,再把處理結(jié)果拼接成數(shù)組轉(zhuǎn)換成字符串后送給串口寫模塊發(fā)送。當RS232硬件接收緩沖區(qū)中掃描到數(shù)據(jù)時,線程將數(shù)據(jù)讀到一個數(shù)組中并掃描。當出現(xiàn)結(jié)束字時就把結(jié)束字以前的所有數(shù)據(jù)當成一個包拿出來,進行驗證判定解包,將不正確結(jié)果丟棄,正確結(jié)果放入combuf、databuf隊列中,并及時反映在前面板。當數(shù)組中沒有結(jié)束字時則不做處理,等待下一次數(shù)據(jù)。如果數(shù)組超過一定長度還沒收到結(jié)束字則視同錯誤包丟棄處理。通信狀態(tài)燈顯示通信工作狀態(tài)。
3.3 界面響應(yīng)線程
  界面響應(yīng)線程主要負責對用戶界面操作的響應(yīng),根據(jù)規(guī)則向PLC發(fā)送信息并應(yīng)答PLC請求,顯示工作情況等。此線程主要由兩個循環(huán)組成,第一個循環(huán)專門掃描用戶操作進行響應(yīng),采用事件結(jié)構(gòu)(event case)編程,響應(yīng)事件程序都放在event case結(jié)構(gòu)中。case中實現(xiàn)控件響應(yīng)、系統(tǒng)設(shè)置、測量數(shù)據(jù)、數(shù)據(jù)分析畫圖顯示、數(shù)據(jù)存儲等功能。每一個需要響應(yīng)的事件或?qū)崿F(xiàn)的功能形成一個case,以“插件”的形式存在,便于修改。子case調(diào)用子程序,收發(fā)相應(yīng)數(shù)據(jù),并在前面板以字符串或動畫的形式產(chǎn)生回應(yīng)。用戶在前面板進行操作后產(chǎn)生一個事件,程序便會調(diào)用相應(yīng)事件處理程序進行處理。另一個循環(huán)監(jiān)視收到的命令數(shù)據(jù),進行應(yīng)答或形成LabVIEW中用于同步交換數(shù)據(jù)的通知(Notifier)發(fā)給需要的子程序。這個循環(huán)同時負責處理緊急事件如緊急停止等。
3.4 不規(guī)則界面設(shè)計
  LabVIEW標準生成矩形窗口,沒有很好的方法實現(xiàn)不規(guī)則窗口,給界面設(shè)計帶來一些限制,因此需要借助外部程序。微軟標配的user32.dll中函數(shù)SetLayeredWindowAttributes能使窗體中指定顏色部分變成透明。將VI前面板背景色作為參數(shù)傳給此函數(shù), 同時設(shè)置好VI的Window Appearance屬性,便能隱藏背景,顯示定制界面。圖8完成此外部函數(shù)的調(diào)用,圖9為不規(guī)則的登錄窗口顯示效果。

?


3.5 數(shù)據(jù)處理
3.5.1 數(shù)據(jù)分析及存儲
  通過插入C語言、Matlab語言節(jié)點編制程序及調(diào)用LabVIEW數(shù)據(jù)分析模塊完成分析、模擬仿真功能。每種功能同樣以“插件”形式作為子功能存在于event case結(jié)構(gòu)中,系統(tǒng)完成一次檢測或分析后對ACCESS數(shù)據(jù)庫進行操作,過程大致與登錄系統(tǒng)相同,不再贅述。
3.5.2 作圖及動畫演示
  普通要求的數(shù)據(jù)顯示調(diào)用LabVIEW提供的Plot Multi-XY模塊即可完成。此模塊接收一組數(shù)據(jù)包,每個包中含有一組坐標數(shù)據(jù),對應(yīng)一條將被繪制的曲線。特殊要求可通過自行編制畫圖程序完成。動畫演示部分通過自行編制畫圖程序在前面板的Picture容器中繪圖完成。被繪制的圖形是受控的可以運動變化的圖形。繪圖子程序根據(jù)主程序傳遞的參數(shù)計算并繪制應(yīng)顯示的圖形,參數(shù)不斷地改變從而形成顯示圖形的不斷改變,從而形成動畫。

  繪圖過程如下:如圖10所示,程序初始化時,繪圖程序從BMP文件中讀取需要繪制的子圖像及背景。背景是靜止圖形,程序運行中一般不更新,子圖像是需要運動變化的圖像。讀取到的子圖像是一個個矩形圖像,和其他圖像拼接時會有互相掩蓋現(xiàn)象。將讀到的圖像進行掩碼處理使不需要的地方成為透明色,這時子圖像可以進行拼接。當需要繪圖時,主程序首先通過參數(shù)的形式告訴繪圖程序需要繪制的圖形情況,繪圖程序根據(jù)參數(shù)進行運算,將輸入數(shù)據(jù)轉(zhuǎn)換成繪圖需要的具體參數(shù),如運動點位置、子圖形大小等。在得到繪制圖形需要的所有參數(shù)后,程序?qū)D形按要求以不同角度貼到指定位置,同時調(diào)用函數(shù)直接繪制矩形圓形等圖形填充其他位置。由于LabVIEW中圖形以左上角為原點,x從左到右y從上到下增大,不方便位置運算,因此需要給繪圖子程序傳入Picture容器高度進行坐標系轉(zhuǎn)換。圖11為一次繪圖過程,通過多次類似過程,得到最終的圖形顯示在前面板上。

?


4 程序編譯執(zhí)行效果
  程序脫離開發(fā)環(huán)境后運行效果理想,集成實現(xiàn)了多項測量功能,界面精美友好,在普通PC上運行流暢。圖12為程序整體編譯后的主程序界面。
  本測量系統(tǒng)通過1臺普通PC機與PLC通信,利用PC機的靈活性,以較低的成本集成實現(xiàn)了多種測量子功能,充分發(fā)揮了虛擬儀器的優(yōu)勢,同時子功能以插件的形式存在,從而使得擴展空間非常廣大。本文介紹了應(yīng)用于測控系統(tǒng)的大型LabVIEW程序的結(jié)構(gòu)及設(shè)計方法,使用了多線程、動畫等技術(shù),完成了傳統(tǒng)儀器所沒有的功能,使一臺PC機變成了多功能測控中心。由此可見虛擬儀器具有十分強大的功能,必將得到更為廣泛的應(yīng)用。


參考文獻
[1] ?楊樂平,李海濤,楊磊.LabVIEW程序設(shè)計與應(yīng)用.北京:電子工業(yè)出版社,2004.
[2] ?National Instruments Corporation. LabVIEW development?guidelines, April 2003 Edition. Part Number 321393D-01
[3] ?National Instruments Corporation. LabVIEW Function and?VI reference manual, January 1998 Edition. Part Number?321526B-01.
[4] ?NORMA D. Using LabVIEW to Creat Multithreaded VIs?for Maximum performance and reliability[DB/OL].
?www.ni.com

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
在线电影一区| 亚洲免费成人| 欧美网站在线观看| 欧美区国产区| 欧美激情影院| 欧美韩国一区| 欧美高清日韩| 欧美久久久久| 欧美日韩在线播放一区| 欧美日韩亚洲三区| 欧美视频日韩| 国产精品久久久久一区| 欧美性大战久久久久| 欧美三级小说| 国产精品久久久久久模特| 欧美丝袜第一区| 国产精品高清网站| 国产欧美日韩中文字幕在线| 国产欧美日韩免费| 国产一区观看| 1024国产精品| 亚洲精品欧美精品| 一区二区三区精密机械公司| 国产精品99久久久久久有的能看| 亚洲香蕉成视频在线观看| 午夜精品短视频| 久久黄色级2电影| 亚洲人成网站在线播| 99精品黄色片免费大全| 在线视频一区观看| 午夜精品亚洲| 久久视频在线看| 欧美精品一区二区三| 欧美三区不卡| 国产性做久久久久久| 黄色另类av| 亚洲日韩欧美视频一区| 在线视频一区二区| 欧美一级片久久久久久久| 亚洲国产国产亚洲一二三| 日韩午夜在线观看视频| 亚洲一区二区久久| 久久九九久久九九| 欧美国产综合一区二区| 国产精品激情av在线播放| 国产自产精品| 亚洲免费高清| 欧美一区二区高清| 亚洲毛片一区二区| 欧美一区日韩一区| 欧美.日韩.国产.一区.二区| 欧美视频四区| 国产亚洲精品bv在线观看| 亚洲国产欧美日韩精品| 正在播放亚洲一区| 亚洲国产日韩欧美在线图片| 亚洲自啪免费| 麻豆国产精品一区二区三区| 欧美日韩系列| 国内精品写真在线观看| 亚洲日本成人女熟在线观看| 亚洲欧美日韩国产精品| 亚洲精品综合在线| 欧美亚洲三级| 欧美日本三区| 国产资源精品在线观看| 99在线精品免费视频九九视| 欧美在线视频网站| 亚洲视频香蕉人妖| 久久人人爽国产| 欧美日韩一区二区免费视频| 午夜精彩国产免费不卡不顿大片| 欧美精品一区二区久久婷婷 | 久久久久国内| 欧美日韩第一区日日骚| 国产色综合久久| 亚洲精品自在久久| 久久精品久久综合| 亚洲欧美日韩中文在线制服| 欧美激情精品久久久久久| 国产农村妇女精品一二区| 亚洲欧洲在线观看| 亚洲国产精品一区二区久| 午夜精品久久久久久久久| 欧美理论大片| 狠狠久久婷婷| 午夜欧美电影在线观看| 一本色道综合亚洲| 久久一区二区三区超碰国产精品| 国产精品热久久久久夜色精品三区| 最近看过的日韩成人| 欧美在线首页| 午夜久久一区| 欧美日韩在线播放三区四区| 亚洲激情成人在线| 亚洲级视频在线观看免费1级| 欧美在线一区二区| 国产精品久久久久久久久果冻传媒| 91久久久久久| 亚洲久色影视| 欧美电影在线观看完整版| 黑人巨大精品欧美一区二区小视频 | 99精品国产在热久久婷婷| 美国十次了思思久久精品导航| 国产一区二区三区在线观看免费视频 | 欧美日韩精品中文字幕| 亚洲国产精品一区二区第一页| 欧美一区激情视频在线观看| 欧美一级久久久久久久大片| 欧美性色aⅴ视频一区日韩精品| 91久久精品一区二区别| 亚洲国产精品成人综合| 久久久999| 国产深夜精品福利| 午夜一区在线| 亚洲黄网站在线观看| 久久手机精品视频| 一区二区三区在线高清| 久久精品国产亚洲精品| 久久躁狠狠躁夜夜爽| 尤物99国产成人精品视频| 久久动漫亚洲| 久久亚洲精品一区二区| 在线电影院国产精品| 最新精品在线| 欧美精品一区二区在线观看| 亚洲精品午夜精品| 亚洲私人影院| 欧美午夜宅男影院在线观看| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲欧美视频在线观看| 国产精品一级| 欧美一区三区三区高中清蜜桃| 久久久久久午夜| 在线观看日韩专区| 亚洲免费观看高清完整版在线观看| 欧美日韩国产一级| 在线综合欧美| 欧美在线综合视频| 国产一区自拍视频| 亚洲黄色大片| 欧美日本在线视频| 亚洲先锋成人| 久久人人爽爽爽人久久久| 亚洲高清123| 亚洲精品一区二区在线| 久久大逼视频| 欧美韩日一区| 一区二区三区高清在线| 性做久久久久久久久| 红桃视频成人| 在线视频欧美日韩| 国产日韩精品视频一区| 91久久在线观看| 欧美视频导航| 久久精品2019中文字幕| 欧美精品一区在线播放| 亚洲一二三四久久| 麻豆成人在线| 国产精品99久久久久久久vr | 奶水喷射视频一区| aa国产精品| 久久精品一区二区| 亚洲欧洲在线播放| 欧美一区亚洲二区| 亚洲国产精品福利| 午夜视频在线观看一区二区三区| 狠狠久久婷婷| 亚洲一区久久久| 影音欧美亚洲| 亚洲天堂久久| 伊人色综合久久天天| 亚洲网友自拍| 极品av少妇一区二区| 亚洲视频精选在线| 精品99一区二区| 亚洲久久一区二区| 国产一区二区欧美日韩| 亚洲精品视频在线| 国产欧美精品xxxx另类| 亚洲精品欧美精品| 国产日本欧美在线观看| 99国产精品| 国语自产在线不卡| 亚洲综合三区| 亚洲韩日在线| 久久久久久夜精品精品免费| av不卡免费看| 欧美成人午夜影院| 香港成人在线视频| 欧美视频在线播放| 亚洲人成毛片在线播放女女| 国产模特精品视频久久久久 | 欧美 日韩 国产精品免费观看| 亚洲综合欧美日韩| 欧美日韩精品一区二区| 亚洲国产精品毛片| 美女视频一区免费观看| 亚洲精品国产精品国产自| 久久青青草原一区二区|