師阿香,宋 楠,黨 博,曾凡春
(1.西安石油大學光電油氣測井與檢測教育部重點實驗室,陜西西安,710065;2.勝利油田采油研究院淺海所,山東東營,257000)
基于VC++的潛油電泵井下參數可視化系統研究
師阿香1,宋 楠1,黨 博1,曾凡春2
(1.西安石油大學光電油氣測井與檢測教育部重點實驗室,陜西西安,710065;2.勝利油田采油研究院淺海所,山東東營,257000)
本文在描述潛油電泵井下數據通信實現原理的基礎上,通過VC++開發環境下的多線程技術來實現單片機與上位機之間的通信,并對采集的井下參數實時繪圖。
VC++;數據通信;多線程;實時繪圖
隨著計算機技術的不斷發展,自80年代中期至今多線程技術已相當成熟,在操作系統、數據庫管理系統和應用軟件中多線程的程序設計現已被廣泛應用。在很多監測系統中,采用多線程技術可以使數據采集與處理并行進行,從而提高監測系統效率,因此多線程使用在潛油電泵監測系統中是無可厚非的。由于潛油電泵井下需要采集的物理量有溫度,壓力,振動等,即該系統不但測量的參數多而且要求其測量速度快且精確度高,并且需要實時連續的數據采集,在采集的同時,還必須動態顯示信號波形,因此多線程技術成為該監測系統設計不可或缺的組成。本文介紹了在Win32環境下利用 VC++多線程技術,開發了一個實時性和穩定性較強的潛油電泵井下參數可視化監測系統。
1.1 潛油電泵井下參數的傳輸
潛油電泵試驗的實時數據采集是一個長時間數據采集的過程,系統進行數據采集的同時并且在顯示設備上實時繪制出這段時間內的信號波形。即邊采集數據邊觀測其參數的準確合理性,這樣便于在試驗過程中迅速了解潛油電泵設備的運行狀況,從而及時做出相應的判斷和決策,對井下工況的實時監測具有重大意義。
作為單片機和潛油電泵設備的通信使者,串口將單片機發送出去的字節數據轉換為串行的位,在接收數據時又將串行的位轉換為字節數據。Win32提供了相關的文件I/O函數與通信函數,通過對這些函數的正確使用,并根據實際情況的要求,就可以設計出我們需要的潛油電泵設備監測應用程序。要使用串口進行通信,必須在使用之前向操作系統提出資源申請要求即打開串口,其后進行配置串口、讀寫串口以及關閉串口等操作。
1.2 VC++多線程通訊的實現
在Win32下實現數據交互的方法有兩種,一種是使用ActiveX控件,這種方法使得程序編寫簡單,但是靈活性欠佳。另外一種則是較為自由靈活的調用Windows的API函數,這種方法可以清晰快捷的掌握串口通信的運行機制。潛油電泵監測系統
串口的操作可以有同步操作和重疊操作兩種操作方式。同步操作時,API函數會出現阻塞現象直到操作完成以后才能返回(在多線程方式中,雖然不會阻塞主線程,但是仍然會阻塞監聽線程)。然而重疊操作方式,API函數會立即返回,所有操作在后臺進行,從而避免了線程的阻塞。
Research on the visual system of the electric submersible pump well parameters based on VC++
Shi Axiang1,Song Nan1,Dang Bo1,Zeng Fanchun2
(1.Key Laboratory of opto electronic gas logging and detection of the Ministry of education,Xi'an Shiyou University,Shaanxi Xi'an,710065; 2.Institute of shallow water in Shengli Oilfield,Shandong Dongying,257000)
This paper describes the principle of electric submersible pump downhole data communication, the development environment of VC++ multi thread technology to realize the communication between MCU and PC, to achieve the real-time drawing downhole data acquisition.
VC++; data communication; multithreading; real-time drawing
TP311
B
陜西省2012年科技統籌創新工程計劃項目,項目編號:2012KTCL01-10便運用第二種方法來實現與PC機的串口通信部分。