《電子技術應用》
您所在的位置:首頁 > 測試測量 > 業界動態 > 基于虛擬儀器的綜合測控系統程序設計

基于虛擬儀器的綜合測控系統程序設計

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

  摘? 要: 介紹了使用虛擬儀器技術及PLC構成的綜合測控系統" title="測控系統">測控系統,重點闡述了大型多線程LabVIEW程序的構建、通訊協議的算法實現以及外部函數的調用、動畫的顯示等。
  關鍵詞: 虛擬儀器; PLC; 測控系統; LabVIEW; RS-232

?

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

?

  系統的核心是PC機與PLC的協同工作。在工作時PC機與PLC進行雙向對等式通信,都可以向對方主動發數據。PC機負責人機交互" title="人機交互">人機交互、數據分析存儲以及根據收到的信息進行一些邏輯判斷,向PLC發送各種數據及命令。PLC負責將收到的命令轉換成具體的動作,收集現場信息傳給PC,以及實現安全保護的邏輯判斷。
2 主機程序總體結構
  程序主要結構如圖2所示。主循環由2個線程組成,一個負責監視通信;一個負責邏輯分析以及人機交互。通信線程包括數據收包解包、幀打包發送。人機交互線程包括面板操作響應、數據分析及畫圖演示、發送命令、響應PLC的請求等。線程間通信通過LabVIEW中有互斥保護機制的隊列類型(queue)交換數據,避免不同線程同時搶占公共資源或讀寫順序混亂產生錯誤。線程內部不同子循環間通過“通知/消息”結構(notifier)交換有時間性要求的數據。最后為正常退出的處理程序,進行設置存盤等操作。數據的存儲與讀取使用ACCESS數據庫。

?

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

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

?


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

?


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

?


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

?


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

?


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

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

?


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


參考文獻
[1] ?楊樂平,李海濤,楊磊.LabVIEW程序設計與應用.北京:電子工業出版社,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

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:[email protected]
主站蜘蛛池模板: 高清黄色毛片 | 日韩色在线| 国产精选莉莉私人影院 | 欧美最刺激好看的一级毛片 | 在线精品播放 | 俄罗斯18videosex性欧美成人 | 成人做爰视频www网站 | 一级一片一_级一片一 | 亚洲国产人成中文幕一级二级 | 欧美三级在线观看视频 | 欧美成人性毛片免费版 | 九九视频在线观看视频 | 亚洲美女在线观看播放 | 最新亚洲精品 | 欧美自拍另类 | 免费手机黄色网址 | 偷柏自拍亚洲欧美综合在线图 | 日本高清不卡在线观看 | 亚洲爽妇网 | 萌白酱香蕉白丝护士服喷浆 | 中文字幕人成不卡一区 | 国产欧美在线不卡 | 80岁色老头69av | 香蕉国产人午夜视频在线观看 | 97影院在线午夜 | 日韩制服诱惑 | 伊人网五月天 | 日本免费大黄在线观看 | 中国国产一级毛片 | 国产一区二区三区四区波多野结衣 | 亚洲国产成人综合精品2020 | 亚洲资源在线播放 | 日韩乱淫 | 99草精品视频 | 大片国产片日本观看免费视频 | 精品在线看 | 亚洲图片偷拍区 | 男人的天堂欧美精品色偷偷 | 久久最新免费视频 | 成人禁在线观看午夜亚洲 | 亚洲成人免费网址 |