999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于QT的壓裂液摩阻測定軟件設計

2024-09-26 00:00:00李小寧
現(xiàn)代信息科技 2024年14期

摘 要:文章對如何在壓裂作業(yè)中提高作業(yè)效率進行了研究,在壓裂作業(yè)中,下位機AD采集到的信息,需要實時傳輸到上位機軟件,以波形或者圖像的方式展現(xiàn)在屏幕上;同時,上位機軟件根據采集到的信息對操作進行調整,要發(fā)送相應的命令到下位機,下位機做出相應的采集調整,以便操作人員更好地操作壓裂作業(yè)。因此,實際的工程應用對數據的采集系統(tǒng)和上位機接收數據和發(fā)送命令提出了更高的要求。根據此需求,提出了基于AD采集系統(tǒng)的壓裂液摩阻測定軟件設計。軟件以QT為開發(fā)工具,達到上位機通過發(fā)送命令控制下位機和下位機發(fā)送數據到上位機并進行顯示的目的,可應用于實驗室、工業(yè)項目測試中。

關鍵詞:下位機;上位機;QT;數據傳輸

中圖分類號:TP311 文獻標識碼:A 文章編號:2096-4706(2024)14-0085-05

Design of Friction Measurement Software for Fracturing Fluid Based on QT

LI Xiaoning

(School of Electronic Information and Electrical Engineering, Yangtze University, Jingzhou 434023, China)

Abstract: This paper studies how to improve the operation efficiency in the fracturing operation. In the fracturing operation, the information collected by the lower computer AD needs to be transmitted to the upper computer software in real time and displayed on the screen in the form of waveform or image. At the same time, the upper computer software adjusts the operation according to the collected information, and sends the corresponding command to the lower computer, which makes the corresponding collection adjustment, so that the operator can operate the fracturing operation better. Therefore, the actual engineering application has higher requirements for the data acquisition system and the upper computer to receive data and send commands. According to this requirement, this paper puts forward the friction measurement software design of fracturing fluid based on AD acquisition system. The software uses QT as the development tool to achieve the purpose that the upper computer can control the lower computer by sending commands and and the lower computer can send data to the upper computer and display it. It can be used in laboratory and industrial project testing.

Keywords: lower computer; upper computer; QT; data transmission

DOI:10.19850/j.cnki.2096-4706.2024.14.017

0 引 言

近年來,隨著壓裂技術的逐漸進步,為了可以更好根據下位機AD采集到的數據更好的控制下位機的電機,加熱等功能,對方便,實用的上位機的需求越來越迫切[1-4]。因此本文設計了針對AD采集系統(tǒng)的壓裂液摩阻測定軟件系統(tǒng),以QT為開發(fā)軟件,通過多線程,數據庫,串口通信,通信算法,UI界面設計等完成了一個擁有實時顯示AD采集數據,并實時繪圖,將采集的數據處理并存入數據庫并打印,可以下發(fā)命令控制下位機的軟件系統(tǒng)[5-7]。達到了既可以實時顯示采集的數據,并可以根據采集到的指標隨時控制下位機的采集的目的[8-10]。

1 系統(tǒng)的開發(fā)與設計

1.1 系統(tǒng)的開發(fā)

系統(tǒng)采用C++進行編程,通過借助應用于開發(fā)圖形用戶界面的跨平臺C++框架QT來編寫并運行打包程序。Qt是完全面向對象的,很容易擴展,并且允許真正地組件編程。經過多年發(fā)展,Qt不但擁有了完備的C++圖形庫,而且近年來的版本逐漸集成了數據庫、OpenGL庫、多媒體庫、網絡、腳本庫、XML庫、WebKit庫,等等,其核心庫也加入了進程間通信、多線程等模塊,極大地豐富了Qt開發(fā)大規(guī)模復雜跨平臺應用程序的能力。

1.2 系統(tǒng)的設計

本文介紹的針對AD采集系統(tǒng)的壓裂液摩阻測定軟件系統(tǒng)按照功能劃分為四個模塊:數據顯示和控制命令模塊,繪圖模塊,傳感器控制模塊,串口設置模塊。每個模塊都有其獨立的UI界面并可以互相切換。每個模塊有獨立的事件函數,函數之間互相關聯(lián)。此軟件系統(tǒng)擁有以下功能:

1)可以通過USB串口與下位機進行連接,接收和發(fā)送數據。可以選擇與下位機溝通對應的串口號,波特率,停止位,數據位,奇偶校驗位等串口溝通的設置。詳細描述為在此頁面對連接的串口名稱進行選擇,對數據傳輸速率(波特率)進行設置,數據的格式(數據位,奇偶校驗位)進行設置,根據下位機發(fā)送的數據類型,進行合理的設置和選擇。

2)將串口接收到的數據放入緩存區(qū)中,將數據按照項目的要求,進行公式運算,實時顯示在UI界面。讓使用的工作人員更直觀的了解到壓裂采集系統(tǒng)的各個參數,和壓裂系統(tǒng)的狀態(tài)。

3)可以實時把串口數據存入數據庫,并隨時記錄主頁面工作人員填寫的實驗記錄和數據,以數據流引入文件中,并打印成表格。

4)工作人員可以根據頁面的按鈕,例如:記錄間隔、記錄時間等按鈕,隨時控制數據每組存入數據庫的時間間隔和數據數量,并將數據庫內的數據在UI界面實時顯示出來,可以讓工作人員更為直觀的看到。

5)可以根據要求,將下位機采集系統(tǒng)采集的數據經過項目的公式處理,實時繪制在UI界面,可以直觀的觀察看到數據的變化,并可以實時保存為圖片放置在文件夾中。

6)工作人員可以根據數據的變化,使用功能按鈕,生成對應的命令行,通過串口發(fā)送給下位機,達到對采集系統(tǒng)下位機的實時調控。例如:主頁面可以對,模型管道的粗、細進行選擇,循環(huán)、攪拌、加熱、排液的開始和停止進行選擇,對溫度、轉速設定一個合適的額定值,這些信息都可以通過串口發(fā)送特定的命令給下位機進行AD采集系統(tǒng)的控制。

7)可以顯示壓力傳感器、壓差傳感器、溫度傳感器的示數,還可以通過按鈕下發(fā)命令對下位機的傳感器進行零點標定和量程標定。

2 軟件設計

2.1 軟件總體設計

軟件中按照軟件構成可分為七大部分:串口通信部分;繪圖部分;傳感器部分;數據顯示部分;數據存入數據庫部分;命令行部分;多線程部分。總體構成如圖1所示。

在此軟件設計中,要同時完成串口通信,頁面繪圖,傳感器和主UI界面實時顯示示數,數據庫存入數據等功能同時進行且不能有數據丟失的情況發(fā)生,需要以多線程為大框架,將串口收發(fā)數據、UI界面按鈕生成命令行、Qcustom plot繪圖、數據庫存入和導出數據,此四個比較耗時且占用CPU的功能分別放入單獨的子線程中,在主線程中只保留對子線程任務的安排和UI界面觸發(fā)子線程的方式與UI界面的示數更新。

多線程:是指從軟件或者硬件上實現(xiàn)多個線程并發(fā)執(zhí)行的技術。具有多線程能力的計算機因有硬件支持而能夠在同一時間執(zhí)行多于一個線程,進而提升整體處理性能。簡單來說:線程是程序中一個單一的順序控制流程;而多線程就是在單個程序中同時運行多個線程來完成不同的工作。多線程是為了同步完成多項任務,不是為了提高運行效率,而是為了提高資源使用效率來提高系統(tǒng)的效率。多線程是在同一時間需要完成多項任務的時候實現(xiàn)的。

多線程有以下優(yōu)點:

1)多線程技術可以加快程序的運行速度,使程序的響應速度更快,因為用戶界面可以在進行其他工作的同時一直處于活動狀態(tài)。

2)可以把占據長時間的程序中的任務放到后臺去處理,同時執(zhí)行其他操作,提高效率。

3)當前沒有進行處理的任務時可以將處理器時間讓給其他任務。

4)可以讓同一個程序的不同部分并發(fā)執(zhí)行,釋放一些珍貴的資源如內存占用等。

5)可以隨時停止任務。

6)可以分別設置各個任務的優(yōu)先級以優(yōu)化性能。

為了在上位機頁面同時運行多個功能,且功能可以同時響應,多線程是上位機編程必不可少的。

在此文章設計的上位機中,我在主線程中主要完成了以下工作:完成了頁面的UI元件的排版和格式設置,更新UI界面的示數;將串口收發(fā)數據、UI界面按鈕生成命令行、Qcustom plot繪圖、數據庫存入和導出數據四個耗時長,CPU占用率高的四個功能,分別分配在四個子線程中,以槽函數觸發(fā)的方式開始子線程和刪除子線程,并在線程中加入線程鎖,防止出現(xiàn)出現(xiàn)線程死鎖的情況;通過槽函數實現(xiàn)子線程與主線程之間的通信與數據傳遞。

在子線程中完成了以下工作:接到主線程通過槽函數傳輸的數據,按照子線程的功能劃分,高效的處理數據,數據處理完后,發(fā)送信號或數據至主線程,將占用的CPU讓出來,使數據處理更加高效。

本文的多線程使用的繼承QObject的多線程實現(xiàn),默認就支持事件循環(huán),是使用信號和槽函數開啟,關閉多線程,使用信號和槽函數進行線程之間數據溝通,的最優(yōu)解。

本文用C++實現(xiàn)多線程,部分關鍵代碼如下:

//繪圖自定義類的聲明

worker0 = new my_task();//不能指定父對象

thread0 = new QThread(this);

worker0->moveToThread(thread0);

thread0->start();

//按鍵信號與槽函數的連接

connect(btndraw,SIGNAL(clicked(bool)),this,SLOT(on_btnDraw_clicked()));

connect(pushbutton,SIGNAL(clicked(bool)),this,SLOT(on_pushButton_clicked()));

//主線程與子線程之間信息的傳遞

connect(this,SIGNAL(startdraw0_signals(QCustomPlot*,QCPGraph*,QCPGraph* )),

worker0,SLOT(task_draw0(QCustomPlot*,QCPGraph*,QCPGraph* )));

connect(this,SIGNAL(filePath_signal(QString)),

worker0,SLOT(on_filePath_signal(QString)));

connect(worker0,SIGNAL(task_0_signals(QCustomPlot*)),this,SLOT(draw0_slot(QCustomPlot*)));

//子線程任務的結束

connect(this,&QWidget::destroyed,thread0,&QThread::deleteLater);

//主線程與子線程之間信息的傳遞

connect(worker0,SIGNAL(task_draw2End_signal

(QVector<double>,QVector<double>,double,double,

QColor)),this,SLOT(draw2(QVector<double> ,QVector

<double> ,double,double,QColor)));

//線程任務的開始與結束

connect(this,SIGNAL(startdrw2_signals()),worker0,

SLOT(task_draw2()));

connect(thread0,&QThread::finished,worker0,&QObject::deleteLater);

//串口子線程的定義

serialworker *serialWorker = new serialworker(&

serial_1);

serialWorker->moveToThread(&serialThread_1);

//連接信號和槽:線程的開始和結束,主線程與子線程之間的數據溝通

connect(&serialThread_1, &QThread::finished,

serialWorker, &QObject::deleteLater); // 線程結束,自動刪除對象

connect(this, &Widget::serialDataSend,

serialWorker, &serialworker::doDataSendWork); // 主線程串口數據發(fā)送的信號

connect(&serial_1, &QSerialPort::readyRead,

serialWorker, &serialworker::doDataReciveWork); // 主線程通知子線程接收數據的信號

connect(serialWorker, &serialworker::

sendResultToGui,

this, &Widget::handleResults); // 主線程收到數據結果的信號

// 開始運行子線程

serialThread_1.start();

2.2 軟件功能

在此部分,根據UI界面分類,將上位機軟件分為:串口通信部分,繪圖波形部分,傳感器示數與設置部分,數據顯示與記錄部分,通信命令控制部分五大部分,根據UI界面進行功能上的具體介紹。

2.2.1 串口通信設計

串口通信設計分為三個部分:串口數據參數的設置與連接,串口數據的接收,串口數據的發(fā)送。上位機軟件通過USB串口與下位機通信,達到數據雙向傳輸的目的。在串口數據參數的設置與連接部分,軟件將電腦已經識別的串口放在下拉列表中,方便選擇正確的串口號;并根據傳輸的數據類型和數據傳輸的速度,選擇合適的波特率,停止位,數據位,奇偶校驗位。在USB數據的接收部分,由于USB串口在數據傳輸過程中會有數據的丟失,下位機在給上位機發(fā)送數據時,在每組數據的開頭和結尾設置標志位。軟件在接收到數據時,設置一塊臨時儲存區(qū)域用作數據緩沖區(qū),每次接收到數據,先將數據存放在緩沖區(qū)內,只有識別到數據的開頭標志位和結尾標志位,將這段數據截取出來,并判斷這段數據不為空,截取這段數據內的一組完整數據,將這段數據通過驗證位驗證數據的正確性,然后將接收到的數據分解,處理。在串口發(fā)送命令部分,每當功能控制按鈕狀態(tài)發(fā)生改變,都會生成一個全新的命令,每當一個新的命令生成,命令都會通過USB串口發(fā)送到下位機。

如圖2串口頁面所示,根據串口連接選擇串口號為COM2,波特率為115 200,停止位為1,數據位為6,沒有奇偶校驗,打開串口,當打開串口成功,打開串口鍵會變?yōu)殛P閉串口鍵,方便下次操作。下面的start鍵和stop按下會控制串口傳輸數據的開始和停止。

2.2.2 繪圖波形設計

在串口接收到的數據,經過處理得到AD采集得到的數據。將采集到的數據經過處理得到繪圖所需的數據,繪圖界面采用QCustomPlot圖庫進行繪制(如圖3繪圖頁面所示)。可以實時的將串口內接收的數據以圖像繪制在UI界面上,并且還以隨時保存圖像以便進行歷史數據查詢。采集到的數據還會存儲在數據庫內,數據庫內的數據會顯示在UI界面上,以便使用者更加方面的查看數據,同時數據庫內的數據表格也可以隨時保存為表格。

在圖3中,頁面左側為記錄在數據庫中的數據(id,系統(tǒng)時間、實驗時間、流量、剪切速率等),頁面右側為功能需要繪圖的數據,分別為以時間為x軸,摩阻值為y軸的上圖,以時間為x軸,減阻率為y軸的中圖,以流量為x軸,減阻率為y軸的下圖。

2.2.3 傳感器示數與設置設計

如圖4所示,經過處理后得到的傳感器數據會實時顯示在傳感器的UI界面上,同時可以通過按鈕發(fā)送特定的命令給下位機,對傳感器的零點、量程進行標定。

2.2.4 數據顯示與記錄設計

如圖5所示,經過處理后得到的數據(流量,壓力,差壓),實時顯示在UI界面對應的元件上。UI界面背景對應項目的要求,每當串口接收到新的數據,UI界面的數據都會更新,以便實時監(jiān)測下位機的數據。

2.3 通信命令控制設計

UI界面的右側為通信命令控制按鈕,在基礎數據部分將實驗名稱、流體名稱、實驗編號、流體粘度、流體濃度、實驗人員、實驗日期等信息錄入,當鎖定鍵按下時存入數據庫并生成表格存入電腦。在實驗設定部分可以設置每次流量、壓力、壓差等數據信息錄入數據庫的時間間隔和總共錄入的時間,記錄實驗管道的管徑。當操作人員填入了確定的數據后,再按下開始記錄按鈕,數據庫按照記錄間隔,每10 s錄入一個數據,一共錄入5分鐘。在控制選項部分,每一個按鈕,例如:排液的開始、停止、流量設定、開始循環(huán)、停止循環(huán),等等,每個按鈕的變化都會對改變串口向下位機傳輸的命令。

3 結 論

本文采用QT軟件設計了基于QT的壓裂液摩阻測定軟件設計,在軟件中完成了USB串口的數據傳輸、數據庫數據的儲存、繪制數據的實時圖像、UI界面的設計及數據的實時顯示等功能。完成了配置串口連接,在軟件主界面中通過控制按鈕配置相關控制命令,并通過USB串口向下傳輸至下位機,數據庫采集系統(tǒng)根據命令做出相應反應,達到了通過上位機軟件下發(fā)的指令控制數據采集系統(tǒng)工作狀態(tài)的預期效果。同時,上位機軟件一直接收采集系統(tǒng)發(fā)送的數據,并將數據實時顯示、繪圖并儲存。在更好的記錄了采集的數據的同時,還能讓操作人根據數據的變化,隨時在上位機發(fā)送命令對采集系統(tǒng)進行操作調整,讓AD采集系統(tǒng)的操作更加方便、快捷。

此軟件設計以多線程為設計框架,大大提高的CPU的使用效率,有效的避免了系統(tǒng)功能不能及時響應的缺陷,達到了多功能同時運行相應的目的,大大提高了采集系統(tǒng)的效率。

參考文獻:

[1] 李琳琳,王紀奎,趙捷.基于Qt設計心電信號管理系統(tǒng) [J].電子技術,2015,44(4):49-52.

[2] 嚴海玉,楊會成,宋一博,等.基于ARM的非接觸式安全駕駛預警系統(tǒng) [J].電子技術,2014,43(9):70-73.

[3] 李章兵,李俊,谷文彥.基于優(yōu)先級調度策略的應急照明監(jiān)控系統(tǒng) [J].電子技術,2014,43(5):48-52.

[4] 澹臺運龍,李俊,李卓.基于ARM的應急電源集成監(jiān)控系統(tǒng)設計與實現(xiàn) [J].電子技術,2013,42(8):58-60+54.

[5] 陳冬靈.基于QT和Wi-Fi的室內環(huán)境檢測系統(tǒng)設計 [J].信息技術與信息化,2019(11):22-25.

[6] 蔣昕祎,辜鵬,顧少華,等.基于Qt框架的信息接口模擬器的開發(fā)及應用 [J].軟件,2023,44(1):113-115.

[7] 談聰,董添奇.基于超聲流量計的動態(tài)阻抗匹配系統(tǒng)設計 [J].信息技術與信息化,2023(1):54-57.

[8] 李金科,宋潔.基于數據采集系統(tǒng)的上位機軟件設計 [J].信息技術與信息化,2022(5):110-112+116.

[9] 劉宏偉.基于Qt的多通道振動信號采集儀上位機軟件設計 [J].現(xiàn)代信息科技,2023,7(3):24-28+32.

[10] 王屬靈,宋磊,張一嘉,等.基于Qt的通信信號分析軟件的設計與實現(xiàn) [J].航天電子對抗,2023,39(3):26-32.

作者簡介:李小寧(1999.09—),男,漢族,河北保定人,碩士在讀,研究方向:嵌入式軟件開發(fā)。

收稿日期:2024-01-04

主站蜘蛛池模板: 啪啪免费视频一区二区| 国产欧美在线| 免费黄色国产视频| 视频在线观看一区二区| 69av免费视频| 第九色区aⅴ天堂久久香| 99re在线观看视频| 国产69精品久久久久孕妇大杂乱| 亚洲美女一区| 国产在线拍偷自揄拍精品| 成人亚洲国产| 午夜色综合| 伊人查蕉在线观看国产精品| 国产专区综合另类日韩一区| 欧美成人日韩| 欧美精品在线看| 亚洲欧洲日韩久久狠狠爱| 波多野结衣一级毛片| 日韩欧美国产成人| 毛片大全免费观看| 亚洲性影院| 亚洲色图在线观看| 手机精品视频在线观看免费| 114级毛片免费观看| 在线观看91香蕉国产免费| 午夜精品国产自在| 无码网站免费观看| 国产精品成人观看视频国产| 无码视频国产精品一区二区| 色有码无码视频| 亚洲av日韩av制服丝袜| 亚洲无限乱码一二三四区| 久久综合国产乱子免费| 国产高潮流白浆视频| 91精品情国产情侣高潮对白蜜| 亚洲人妖在线| 精品偷拍一区二区| 欧美高清国产| 亚洲国产成人超福利久久精品| 亚洲高清在线天堂精品| 亚国产欧美在线人成| 爆乳熟妇一区二区三区| 久草视频中文| 91网红精品在线观看| 国内精品视频在线| 白浆视频在线观看| 免费一看一级毛片| 国产网站免费看| 亚洲国产午夜精华无码福利| 自慰高潮喷白浆在线观看| 婷婷中文在线| 中日韩欧亚无码视频| 国产一级片网址| 国产在线精彩视频二区| 精品一区二区无码av| 国禁国产you女视频网站| 在线欧美国产| 麻豆精品国产自产在线| 在线亚洲小视频| 亚洲av无码片一区二区三区| 欧美国产日本高清不卡| 国产三级国产精品国产普男人| 91久久精品日日躁夜夜躁欧美| 久久99国产综合精品1| 亚洲区欧美区| 东京热一区二区三区无码视频| 色婷婷狠狠干| 久久黄色一级片| 影音先锋丝袜制服| 欧美日本在线| 五月天在线网站| 91在线丝袜| 国产亚洲精品自在久久不卡| 伊人欧美在线| 一本久道热中字伊人| 无码福利日韩神码福利片| 一本大道视频精品人妻| 亚洲精品手机在线| 日韩高清在线观看不卡一区二区| 91在线视频福利| 国产成人在线无码免费视频| 在线精品亚洲国产|