Przeglądaj źródła

优化参数,曲线框 坐标更新,程序退出串口要关掉

guoqiang 2 lat temu
rodzic
commit
382f3ee4f8
12 zmienionych plików z 140 dodań i 260 usunięć
  1. 5 5
      Calibrationpara.cpp
  2. 6 4
      CurveDisplay.qml
  3. 16 7
      PageSelfTest.qml
  4. 4 6
      PageStandard.qml
  5. 24 11
      RecoveryValve.qml
  6. 14 6
      ReportPicture.qml
  7. 55 211
      TestService.cpp
  8. 2 7
      TestService.h
  9. 1 1
      ValveTest.pro.user
  10. 9 0
      main.qml
  11. 2 2
      pid.cpp
  12. 2 0
      serialport.cpp

+ 5 - 5
Calibrationpara.cpp

@@ -351,7 +351,7 @@ void CalibrationPara::add_default()
     para.innermax = 200;
     para.innermin = -50;
     para.innerkp = 1000;
-    para.innerki = 20;
+    para.innerki = 80;
     para.innerkd = 60;
     para.innermaxI = 10;
     para.innerIstep = 1;
@@ -372,7 +372,7 @@ void CalibrationPara::add_default()
     para.innermax = 200;
     para.innermin = -40;
     para.innerkp = 1000;
-    para.innerki = 20;
+    para.innerki = 80;
     para.innerkd = 60;
     para.innermaxI = 10;
     para.innerIstep = 1;
@@ -393,7 +393,7 @@ void CalibrationPara::add_default()
     para.innermax = 800;
     para.innermin = -30;
     para.innerkp = 3000;
-    para.innerki = 25;
+    para.innerki = 80;
     para.innerkd = 60;
     para.innermaxI = 15;
     para.innerIstep = 1;
@@ -414,7 +414,7 @@ void CalibrationPara::add_default()
     para.innermax = 800;
     para.innermin = -20;
     para.innerkp = 5000;
-    para.innerki = 60;
+    para.innerki = 80;
     para.innerkd = 60;
     para.innermaxI = 30;
     para.innerIstep = 2;
@@ -435,7 +435,7 @@ void CalibrationPara::add_default()
     para.innermax = 800;
     para.innermin = 0;
     para.innerkp = 8000;
-    para.innerki = 60;
+    para.innerki = 80;
     para.innerkd = 60;
     para.innermaxI = 40;
     para.innerIstep = 5;

+ 6 - 4
CurveDisplay.qml

@@ -57,17 +57,19 @@ Item {
 
         ScatterSeries {
                id: scatter
-               name: "阶段分割点"
+               name: "保压分割点"
                axisX: axisx
                axisY: axisy
 
                color: Qt.rgba(0,0,255,1)
                borderColor: Qt.rgba(0,0,255,1)
                borderWidth: 0
-               markerSize: 3
+               markerSize: 4
 
-               //pointLabelsVisible:true
-               //pointLabelsFormat:"@yPoint"
+               pointLabelsVisible:true
+               pointLabelsFormat:"@yPoint"
+               pointLabelsColor: Qt.rgba(0,0,255,1)
+               //pointLabelsFont:
 
            }
 

+ 16 - 7
PageSelfTest.qml

@@ -119,6 +119,9 @@ Item {
     function curveDisplay_refresh(date){
         curveDisplay.spline.clear()
         curveDisplay.scatter_clear()
+        curveDisplay.setRange_X(0, 180)
+        curveDisplay.setRange_Y(0, 14)
+
         pressureCnt =0
         current_step = 0;
 
@@ -239,7 +242,7 @@ Item {
         m_maxY = (m_maxY < number)? number:m_maxY
         m_minY = (m_minY > number)? number:m_minY
 
-        curveDisplay.setRange_Y(m_minY-2.0, m_maxY+2.0)
+        curveDisplay.setRange_Y(m_minY-1.0, m_maxY+1.0)
 
         if(pressureCnt <= 180){
             curveDisplay.spline.append(pressureCnt-1,number)
@@ -251,9 +254,13 @@ Item {
         }
 
         if(current_step !== value.step){
+            if(2 == current_step){
+                curveDisplay.scatter_add(pressureCnt-1,number)
+            }
+
             current_step = value.step
 
-            if(current_step < 5 & current_step > 0){
+            if(2 == current_step){
                 curveDisplay.scatter_add(pressureCnt-1,number)
             }
 
@@ -269,6 +276,8 @@ Item {
         pressureCnt =0
         current_step=0
         curveDisplay.scatter_clear()
+        curveDisplay.setRange_X(0, 180)
+        curveDisplay.setRange_Y(0, 14)
 
 
         pressure = "0.00"
@@ -781,12 +790,12 @@ Item {
                     TableViewColumn{role: "idx"; title: "ID"; width: 40;delegate: itemDelegateText}
                     TableViewColumn{role: "date"; title: "自检日期"; width: 120;delegate: itemDelegateText}
                     TableViewColumn{role: "time"; title: "完成时间"; width: 120;delegate: itemDelegateText}
-                    TableViewColumn{role: "target"; title: "目标压力(Kpa)"; width: 120;delegate: itemDelegateText}
+                    TableViewColumn{role: "target"; title: "目标压力(kPa)"; width: 120;delegate: itemDelegateText}
                     TableViewColumn{role: "interval"; title: "检测时间(秒)"; width: 120;delegate: itemDelegateText}
-                    TableViewColumn{role: "threshold"; title: "变化限值(Kpa)"; width: 120;delegate: itemDelegateText}
-                    TableViewColumn{role: "start"; title: "开始压力(Kpa)"; width: 120;delegate: itemDelegateText}
-                    TableViewColumn{role: "end"; title: "结束压力(Kpa)"; width: 120;delegate: itemDelegateText}
-                    TableViewColumn{role: "delta"; title: "压力变化(Kpa)"; width: 120;delegate: itemDelegateText}
+                    TableViewColumn{role: "threshold"; title: "变化限值(kPa)"; width: 120;delegate: itemDelegateText}
+                    TableViewColumn{role: "start"; title: "开始压力(kPa)"; width: 120;delegate: itemDelegateText}
+                    TableViewColumn{role: "end"; title: "结束压力(kPa)"; width: 120;delegate: itemDelegateText}
+                    TableViewColumn{role: "delta"; title: "压力变化(kPa)"; width: 120;delegate: itemDelegateText}
                     TableViewColumn{role: "result"; title: "自测结果"; width: 80;delegate: itemDelegateText}
                     TableViewColumn{role: "detail"; title: "操作"; width: 130;delegate: itemDelegateButton}
 

+ 4 - 6
PageStandard.qml

@@ -309,7 +309,7 @@ Item {
 
                             InputLine{
                                 id:std_positive_target
-                                paraName: "正压目标值(Kpa):"
+                                paraName: "正压目标值(kPa):"
                                 paraLength: 60
                                 onTextChanged: {
                                     std_PTV = Number(text)
@@ -318,7 +318,7 @@ Item {
 
                             InputLine{
                                 id:std_negative_target
-                                paraName: "负压目标值(Kpa):"
+                                paraName: "负压目标值(kPa):"
                                 paraLength: 60
                                 onTextChanged: {
                                     std_NTV = Number(text)
@@ -343,11 +343,9 @@ Item {
                         rows:5
                         rowSpacing: 10
 
-
-
                         Text { text: "单个油仓容积V(L)"; font.bold: true;  font.pointSize: 12; wrapMode: Text.WrapAnywhere; Layout.maximumWidth: 180}
-                        Text { text: "油气回收系统压力变动限值(Kpa)"; font.bold: true; font.pointSize: 12; wrapMode: Text.WrapAnywhere; Layout.maximumWidth: 180}
-                        Text { text: "油气回收阀压力变动限值(Kpa)"; font.bold: true; font.pointSize: 12; wrapMode: Text.WrapAnywhere; Layout.maximumWidth: 180}
+                        Text { text: "油气回收系统压力变动限值(kPa)"; font.bold: true; font.pointSize: 12; wrapMode: Text.WrapAnywhere; Layout.maximumWidth: 180}
+                        Text { text: "油气回收阀压力变动限值(kPa)"; font.bold: true; font.pointSize: 12; wrapMode: Text.WrapAnywhere; Layout.maximumWidth: 180}
 
                         //level 1
                         InputLine{

+ 24 - 11
RecoveryValve.qml

@@ -41,6 +41,7 @@ Item{
     property  real m_maxY: 0.0
     property  real m_minY: 0.0
     property  bool bStart: false;
+    property  bool test_end: false;
 
 
 
@@ -74,7 +75,7 @@ Item{
         //textstring += pressure_map.direction.toString()+":"
         //textstring += pressure_map.stage.toString()+":"
         //textstring += pressure_map.step.toString()+":"
-        console.debug("avans 1111 update_pressure: ", pressure_map.pressure)
+        //console.debug("avans 1111 update_pressure: ", pressure_map.pressure)
 
 
         pressure = pressure_map.pressure
@@ -89,6 +90,7 @@ Item{
         //if(pressure_map.step === 3){  // keep pressure
             if(pressure_map.stage === 0){  //sys test
                 //syskpArray.push(Number(pressure_map.pressure))
+
                 syskpArray.push(data)
 
             }else if(pressure_map.stage === 1){  //valve test
@@ -116,6 +118,8 @@ Item{
         pressureCnt =0
         current_step=0
         curveDisplay.scatter_clear()
+        curveDisplay.setRange_X(0, 180)
+        curveDisplay.setRange_Y(0, 14)
 
 
         resulttable.systemPressure_delta = "  ";
@@ -137,7 +141,7 @@ Item{
         m_maxY = (m_maxY < number)? number:m_maxY
         m_minY = (m_minY > number)? number:m_minY
 
-        curveDisplay.setRange_Y(m_minY-2.0, m_maxY+2.0)
+        curveDisplay.setRange_Y(m_minY-1.0, m_maxY+1.0)
 
         if(pressureCnt <= 180){
             curveDisplay.spline.append(pressureCnt-1,number)
@@ -149,9 +153,12 @@ Item{
         }
 
         if(current_step !== value.step){
+            if(2 == current_step){
+                curveDisplay.scatter_add(pressureCnt-1,number)
+            }
             current_step = value.step
 
-            if(current_step < 5 & current_step > 0){
+            if(2 == current_step){
                 curveDisplay.scatter_add(pressureCnt-1,number)
             }
 
@@ -172,8 +179,8 @@ Item{
             resulttable.systemPressure_pass = "超标";
         }
 
-        console.log("sysTestGeneratePicture")
-        groupbox.sysTestGeneratePicture()
+        //console.log("sysTestGeneratePicture")
+        //groupbox.sysTestGeneratePicture()
     }
 
     function show_valveresult(delta, bPassed)
@@ -188,8 +195,8 @@ Item{
             resulttable.valvePressure_pass = "超标";
         }
 
-        console.log("valveTestGeneratePicture")
-        groupbox.valveTestGeneratePicture()
+        //console.log("valveTestGeneratePicture")
+        //groupbox.valveTestGeneratePicture()
 
     }
 
@@ -202,6 +209,12 @@ Item{
     function test_stoped(){
         startStopButton.running = false;
 
+        console.log("sysTestGeneratePicture")
+        groupbox.sysTestGeneratePicture()
+
+        console.log("valveTestGeneratePicture")
+        groupbox.valveTestGeneratePicture()
+
         console.log("allTestGeneratePicture")
         groupbox.allTestGeneratePicture()
     }
@@ -237,13 +250,13 @@ Item{
             }
             function sysTestGeneratePicture(){
                 var filename = root.carplate+"_"+root.compartment_id+"_sys"
-                reportPicture_sys.delayms = 100
+                reportPicture_sys.delayms = 300
                 reportPicture_sys.generatePicture(filename, syskpArray)
             }
 
             function valveTestGeneratePicture(){
                 var filename = root.carplate+"_"+root.compartment_id+"_valve"
-                reportPicture_valve.delayms = 100
+                reportPicture_valve.delayms = 500
                 reportPicture_valve.generatePicture(filename, valvekpArray)
             }
 
@@ -600,8 +613,8 @@ Item{
 
         Timer {
             id: timer;
-            interval: 300;//设置定时器定时时间为500ms,默认1000ms
-            repeat: true //是否重复定时,默认为false
+            interval: 1000;//设置定时器定时时间为500ms,默认1000ms
+            repeat: false //是否重复定时,默认为false
             running: false //是否开启定时,默认是false,当为true的时候,进入此界面就开始定时
             triggeredOnStart: false // 是否开启定时就触发onTriggered,一些特殊用户可以用来设置初始值。
             onTriggered: {

+ 14 - 6
ReportPicture.qml

@@ -28,24 +28,32 @@ Rectangle {
         }
 
         curveDisplay_pic.spline.clear()
+        curveDisplay_pic.scatter_clear()
 
-        m_minY = (m_minY-2) < 0?  0:(m_minY-2)
-        m_maxY = m_maxY+2
+        //m_minY = (m_minY-2) < 0?  0:(m_minY-2)
+        //m_maxY = m_maxY+2
+        console.log("generatePicture dataArray.length:"+dataArray.length)
 
-        curveDisplay_pic.setRange_Y(m_minY, m_maxY)
+        curveDisplay_pic.setRange_Y(m_minY-1.0, m_maxY+1.0)
         curveDisplay_pic.setRange_X(0, dataArray.length-1)
 
         for(var j=0; j<dataArray.length; j++){
-            //curveDisplay.charView.series(j).replace(j,dataArray[j])
+
             curveDisplay_pic.spline.append(j,dataArray[j].pressure)
 
             if(current_step !== dataArray[j].step){
-                current_step = dataArray[j].step
 
-                if(current_step < 5 & current_step > 0){
+                if(2 == current_step ){
                     curveDisplay_pic.scatter_add(j, dataArray[j].pressure)
+                    console.log("generatePicture keep end j:"+j)
                 }
 
+                current_step = dataArray[j].step
+
+                if(2 == current_step ){
+                    curveDisplay_pic.scatter_add(j, dataArray[j].pressure)
+                    console.log("generatePicture keep begin j:"+j)
+                }
             }
         }
 

+ 55 - 211
TestService.cpp

@@ -39,7 +39,9 @@ TestService::TestService(QThread *parent)
 
 TestService::~TestService()
 {
-
+    qDebug()<<"TestService destory";
+    m_SerialUi3.closeConnect();
+    m_SerialUi4.closeConnect();
 }
 
 void TestService::init()
@@ -625,6 +627,10 @@ void TestService::OnTimer1()
         int _ipressure = 0;
         double d_pressure = 0.00;
 
+        if(fabs(pressure) < 0.01){
+            pressure = 0.0;
+        }
+
         _ipressure = pressure*1000;
         _ipressure = (_ipressure/PRESSURE_DIVISION_VALUE)*PRESSURE_DIVISION_VALUE;
         d_pressure = _ipressure/1000.0;
@@ -763,7 +769,7 @@ Ret_Value  TestService::PositivePressure_Add(const TestExpect& expect, bool bSav
             current_speed = current_pressure - prev_pressure;
             prev_pressure = current_pressure;
 
-            qDebug(" PositivePressure_Add, current_pressure : %f target: %f", current_pressure, expect.target);
+            //qDebug(" PositivePressure_Add, current_pressure : %f target: %f", current_pressure, expect.target);
 
             if(current_pressure >=  expect.target+0.01){
 
@@ -856,14 +862,14 @@ Ret_Value  TestService::PositivePressure_Add(const TestExpect& expect, bool bSav
 
                         speed_target = pPIDouter->calculate(expect.target, current_pressure);
 
-                        qDebug(" PositivePressure_Add, pPIDinner speed_target:%f, current_speed:%f", speed_target, current_speed);
+                        //qDebug(" PositivePressure_Add, pPIDinner speed_target:%f, current_speed:%f", speed_target, current_speed);
                         double inc = pPIDinner->calculate(speed_target, current_speed);
 
                         unsigned short  position = bvoffset +inc;
 
                         //qDebug(" PositivePressure_Add, position : %d", position);
                         if(bvposition != position){
-                            qDebug(" PositivePressure_Add, position : %d", position);
+                            //qDebug(" PositivePressure_Add, position : %d", position);
                             if(bv.SetPosition(position))
                                 bvposition = position;
                         }
@@ -963,171 +969,6 @@ Ret_Value  TestService::PositivePressure_Add(const TestExpect& expect, bool bSav
 
 }
 
-Ret_Value  TestService::PositivePressure_Add_V2(const TestExpect& expect)
-{
-    Ret_Value ret_v = Ret_OK;
-    int count = 0;
-
-
-   QElapsedTimer  timer;
-   timer.start();
-   double current_pressure = 0;
-   unsigned char bvstatus;
-   unsigned short bvposition;
-   unsigned short bvoffset = 120;
-   int holding_time = 60;
-
-   PressureSensor ps(&m_SerialUi4);
-   BallValve bv(&m_SerialUi4);
-   bool bv_ready = false;
-
-   bv.SetPosition(bvoffset);
-
-   PID* pPID = NULL;
-   if(expect.volume <= 200){
-        pPID = new PID(1, 200, 0, 0, 2, 0.4);
-        holding_time = 60;
-   }else if(expect.volume <= 4000){
-        pPID = new PID(1, 500, 0, 0, 5, 0.6);
-        holding_time = 60;
-   }else if(expect.volume <= 6000){
-       pPID = new PID(1, 800, 0, 0, 6, 1.0);
-       holding_time = 120;
-   }else if(expect.volume <= 8000){
-       pPID = new PID(1, 800, 0, 0, 7, 2);
-       holding_time = 180;
-   }else{
-        pPID = new PID(1, 800, 0, 0, 8, 3);
-        holding_time = 180;
-   }
-
-   Valve in_v(&m_SerialUi3, VALVE_INTAKE);
-   bool bOpen_intake = false;
-   //bOpen_intake = in_v.Open();
-
-   //等待压力达到目标值附近
-   while(m_bRunning){
-
-        //等待球阀,到达指定位置 100
-        if(false == bv_ready){
-            if(false == bv.GetSP(bvstatus, bvposition)){
-                qDebug(" PositivePressure_Add, bv.GetSP failed");
-            }else{
-
-                if(BALLVALVE_STATUS_FAULT == bvstatus){
-                    ret_v = Ret_Failed;
-                    break;
-                }
-
-                if((BALLVALVE_STATUS_OPENEND == bvstatus) || (BALLVALVE_STATUS_CLOSEEND == bvstatus) ){
-                    int ps_offset = bvoffset;
-                    int cu_position = bvposition;
-                    if(abs(cu_position-ps_offset) < 10){
-                        bv_ready=true;
-                    }
-                }else{
-                      bv.SetPosition(bvoffset);
-                }
-
-
-            }
-        }else{
-
-            current_pressure = calculate_averagepressure();
-            qDebug(" PositivePressure_Add, current_pressure : %f target: %f", current_pressure, expect.target);
-
-            if(current_pressure >=  expect.target+0.05){
-
-                count++;
-                if(bOpen_intake){
-                     qDebug(" PositivePressure_Add, in_v.Close ");
-
-                    if(in_v.Close())
-                        bOpen_intake = false;
-                }
-
-                //系统自测及容积较小时,球阀最好归零,否则因球阀不太紧漏气, 进气阀与球阀之间的气体会压向系统,导致压力升高
-                //当容器过大时, 如果压力超出后又降下来或系统存在漏气,需要重新加压,设置 bvoffset,能让重新加压速度快起来。
-                if(expect.volume < 100){
-                    if(bv.SetPosition(0))
-                        bvposition = 0;
-                    qDebug(" PositivePressure_Add, bv.SetPosition 0");
-                }else {
-                    if(bvoffset != bvposition){
-                        if(bv.SetPosition(bvoffset))
-                            bvposition = bvoffset;
-                        qDebug(" PositivePressure_Add, bv.SetPosition bvoffset");
-                    }
-                }
-
-
-            }else if((current_pressure < expect.target+0.05) & (current_pressure >= expect.target) ){
-                count++;
-            }else{
-
-                count = 0;
-                if(false == bOpen_intake){
-                    bOpen_intake = in_v.Open();
-                    qDebug(" PositivePressure_Add, in_v.Open ");
-
-                    pPID->reset();
-
-                }else{
-
-                    if(NULL != pPID){
-
-                        double inc = pPID->calculate_v2(expect.target+0.05, current_pressure);
-                        unsigned short  position = bvoffset +inc;
-
-                        //qDebug(" PositivePressure_Add, position : %d", position);
-                        if(bvposition != position){
-                            qDebug(" PositivePressure_Add, position : %d", position);
-                            if(bv.SetPosition(position))
-                                bvposition = position;
-                        }
-
-
-                    }else{
-                        qDebug(" PositivePressure_Add, NULL = pPID ");
-                    }
-                }
-
-            }
-        }
-
-        if(count >= holding_time){ //about 60s
-            break;
-        }
-
-        QThread::msleep(1000);
-
-        int remainingtime = expect.timeout*1000 - timer.elapsed();
-        if(remainingtime <= 0){
-
-            qDebug(" add_pressure timeout, Rough valve will colse");
-            ret_v = Ret_Timeout;
-            break;
-        }
-
-   }
-
-   if(!m_bRunning){
-       // be stoped
-       ret_v = Ret_Exit;
-   }
-
-   if(NULL != pPID){
-        delete pPID;
-   }
-
-   in_v.Close();
-   bv.SetPosition(0);
-
-
-   return ret_v;
-
-}
-
 
 //将打开泄压阀,等待压力归零 (小于 0.01Kpa )。
 Ret_Value  TestService::Pressure_Relief(const TestExpect& expect)
@@ -1142,6 +983,7 @@ Ret_Value  TestService::Pressure_Relief(const TestExpect& expect)
     QElapsedTimer  timer;
     timer.start();
     int count = 0;
+    int count2 = 0;
 
     //打开泄压阀
     bOpen_ventv = vent_v.Open();
@@ -1165,7 +1007,13 @@ Ret_Value  TestService::Pressure_Relief(const TestExpect& expect)
             last_pressure = current_pressure;
         }
 
-        if((count > 20) ||(fabs(current_pressure) < 0.01)){
+        if(fabs(current_pressure) < 0.01){
+            count2++;
+        }else{
+            count2=0;
+        }
+
+        if((count > 20) ||(count > 20)){
             //关闭泄压阀
             vent_v.Close();
              break;
@@ -1357,17 +1205,6 @@ int TestService::make_messagebox(Test_Direction direction, Test_Step step, Ret_V
                 ret_btn = m_msgbox.information(NULL, "提示:", notice_str, QMessageBox::Ok,  QMessageBox::Ok);
             }
 
-            break;
-        case Test_Step_AdjustPressure:
-            if( Ret_Timeout == ret_v ){
-                notice_str = "比例阀调压精调超时, 是否重试?";
-                ret_btn = m_msgbox.information(NULL, "提示:", notice_str, QMessageBox::Retry|QMessageBox::Abort,  QMessageBox::Retry);
-                //emit onNotice(notice_str);
-            }else if(Ret_Failed == ret_v){
-                notice_str = "继电器通信失败, 程序终止";
-                ret_btn = m_msgbox.information(NULL, "提示:", notice_str, QMessageBox::Ok,  QMessageBox::Ok);
-                //emit onNotice(notice_str);
-            }
             break;
         default:
             break;
@@ -1414,7 +1251,7 @@ void TestService::run()
                           ret_btn = m_msgbox.information(NULL, "提示:", "通信故障,请终止检测", QMessageBox::Abort, QMessageBox::Abort);
                         }else{
                            test_init();
-                          ret_btn = m_msgbox.information(NULL, "提示:", "请确认已经打开旋拧阀", QMessageBox::Ok, QMessageBox::Ok);
+                          ret_btn = m_msgbox.information(NULL, "提示:", "请确认已经打开气源总阀", QMessageBox::Ok, QMessageBox::Ok);
                         }
 
                          switch (ret_btn)
@@ -1434,9 +1271,9 @@ void TestService::run()
                 case Test_Step_AddPressure:
                     {
                         if(m_stage == Test_Stage_SysTest){
-                            emit sigState(m_compartmentid+1, "回收系统测试,开始加压", "");
+                            emit sigState(m_compartmentid+1, "回收系统检测, 加压", "");
                         }else{
-                            emit sigState(m_compartmentid+1, "回收阀测试,开始加压", "");
+                            emit sigState(m_compartmentid+1, "回收阀检测, 加压", "");
                         }
 
                         texpect.target = m_standard.positive_target;
@@ -1483,9 +1320,9 @@ void TestService::run()
                 case Test_Step_KeepPressure:
                     {
                         if(m_stage == Test_Stage_SysTest){
-                            emit sigState(m_compartmentid+1, "油气回收系统测试,开始保压", "");
+                            emit sigState(m_compartmentid+1, "油气回收系统检测, 保压", "");
                         }else{
-                            emit sigState(m_compartmentid+1, "油气回收阀测试,开始保压", "");
+                            emit sigState(m_compartmentid+1, "油气回收阀检测, 保压", "");
                         }
 
                         // 检测 5分钟都没超限,就是通过了
@@ -1505,6 +1342,7 @@ void TestService::run()
                         if(m_stage == Test_Stage_SysTest){
 
                             ret_v = Pressure_Keep(m_standard.interval_time, start_value, end_value);
+                            m_step = Test_Step_KeepEnd;
 
                             m_tank.m_comparts[m_compartmentid].m_result.sysstart_pressure = start_value;
                             m_tank.m_comparts[m_compartmentid].m_result.sysend_pressure = end_value;
@@ -1530,7 +1368,7 @@ void TestService::run()
 
                                 QString delta_str = QString("%1").arg(delta, 4,'f',2,QLatin1Char('0'));
                                 emit sigSystemResult(m_compartmentid+1, delta_str, bPassed);
-                                emit sigState(m_compartmentid+1, "油气回收系统检测,结束", "");
+                                emit sigState(m_compartmentid+1, "油气回收系统检测,已完成", "");
 
                                 ret_btn = QMessageBox::NoButton;
                                 notice_str = "系统密闭性已经检测完成,是否进行阀门密闭性检测?";
@@ -1561,6 +1399,7 @@ void TestService::run()
                         }else{
 
                             ret_v = Pressure_Keep(m_standard.interval_time, start_value, end_value);
+                            m_step = Test_Step_KeepEnd;
 
                             float offset = 0;
                             //修正 强制初始压力为 0
@@ -1590,7 +1429,7 @@ void TestService::run()
 
                                 QString delta_str = QString("%1").arg(delta, 4,'f',2,QLatin1Char('0'));
                                 emit sigValveResult(m_compartmentid+1, delta_str, bPassed);
-                                emit sigState(m_compartmentid+1, "油气回收阀测试,结束", "");
+                                emit sigState(m_compartmentid+1, "油气回收阀检测,已完成", "");
 
                                 m_step = Test_Step_End;
                             }
@@ -1602,9 +1441,9 @@ void TestService::run()
                 case Test_Step_reliefPressure:
                     {
                         if(m_stage == Test_Stage_SysTest){
-                            emit sigState(m_compartmentid+1, "油气回收系统测试结束,开始泄压", "");
+                            emit sigState(m_compartmentid+1, "油气回收系统检测结束, 泄压", "");
                         }else if(m_stage == Test_Stage_ValveTest){
-                            emit sigState(m_compartmentid+1, "油气回收阀测试,开始泄压", "");
+                            emit sigState(m_compartmentid+1, "油气回收阀检测结束, 泄压", "");
                         }
 
                         texpect.volume = 0;
@@ -1656,19 +1495,20 @@ void TestService::run()
             }
 
             if(Test_Step_End == m_step){
-                ret_btn = m_msgbox.information(NULL, "提示:", "检测结束,是否要泄压? 此过程可能需要很长时间", QMessageBox::Yes|QMessageBox::No, QMessageBox::Yes);
+                ret_btn = m_msgbox.information(NULL, "提示:", "检测结束,是否要泄压? 此过程可能耗费很长时间", QMessageBox::Yes|QMessageBox::No, QMessageBox::Yes);
             }else{
 
                 ret_btn = QMessageBox::NoButton;
                 if(true == bQuit){
-                    ret_btn = m_msgbox.information(NULL, "提示:", "程序即将退出,是否要泄压? 此过程可能需要很长时间", QMessageBox::Yes|QMessageBox::No, QMessageBox::Yes);
+                    ret_btn = m_msgbox.information(NULL, "提示:", "程序即将退出,是否要泄压? 此过程可能耗费很长时间", QMessageBox::Yes|QMessageBox::No, QMessageBox::Yes);
                 }
             }
 
             switch (ret_btn)
             {
             case QMessageBox::Yes:
-                if(m_step == Test_Step_reliefPressure){
+
+                if( m_stage == Test_Stage_ValveTest && m_step >= Test_Step_reliefPressure){
                     m_msgbox.information(NULL, "提示:", "即将对罐仓内压力进行泄放,请确认已打开油气回收阀", QMessageBox::Yes, QMessageBox::Yes);
                 }
                 Pressure_Relief();
@@ -1777,6 +1617,7 @@ void TestService::run()
                              bool bPassed = true;
 
                              ret_v = Pressure_Keep(m_devinfo.m_testinfo.m_interval, start_value, end_value);
+                             m_step = Test_Step_KeepEnd;
 
                              if(Ret_Exit == ret_v){
                                 bQuit = true;
@@ -1808,34 +1649,37 @@ void TestService::run()
                                  info_str += QString("%1").arg(delta, 4,'f',2,QLatin1Char('0'));
 
                                  emit sigSelfTestResult(m_compartmentid+1, info_str, bPassed);
-                                 emit sigState(m_compartmentid+1, "结束", "");
+                                 emit sigState(m_compartmentid+1, "已完成", "");
 
-                                 m_step = Test_Step_reliefPressure;
-                             }
+                                 ret_btn = m_msgbox.information(NULL, "提示:", "栓测任务结束,是否要泄压?", QMessageBox::Yes|QMessageBox::No, QMessageBox::Yes);
 
+                                 switch (ret_btn)
+                                 {
+                                 case QMessageBox::Yes:
+                                     //qDebug()<<"Yes";
+                                     m_step = Test_Step_reliefPressure;
+                                     break;
+                                 case QMessageBox::No:
+                                     m_step = Test_Step_End;
+                                     break;
+                                 default:
+                                     break;
+                                 }
+
+                             }
 
 
                          }
                          break;
                      case Test_Step_reliefPressure:
                           {
-                              ret_btn = m_msgbox.information(NULL, "提示:", "栓测任务结束,是否要泄压?", QMessageBox::Yes|QMessageBox::No, QMessageBox::Yes);
+                             ret_v = Pressure_Relief();
+                             if(Ret_Exit == ret_v){
+                                bQuit = true;
+                             }
+
                               m_step = Test_Step_End;
-                              switch (ret_btn)
-                              {
-                              case QMessageBox::Yes:
-                                  qDebug()<<"Yes";
-                                  {
-                                      ret_v = Pressure_Relief();
-                                      if(Ret_Exit == ret_v){
-                                         bQuit = true;
-                                      }
 
-                                  }
-                                  break;
-                              default:
-                                  break;
-                              }
                           }
                          break;
                       default:

+ 2 - 7
TestService.h

@@ -39,8 +39,8 @@ enum Valve_OP{
 enum Test_Step{
     Test_Step_Start,
     Test_Step_AddPressure,
-    Test_Step_AdjustPressure,
     Test_Step_KeepPressure,
+    Test_Step_KeepEnd,
     Test_Step_reliefPressure,
     Test_Step_End,
 };
@@ -48,7 +48,7 @@ enum Test_Step{
 enum Test_Stage{
     Test_Stage_SysTest,
     Test_Stage_ValveTest,
-    Test_Step_UNKown,
+    Test_Stage_UNKown,
 };
 
 enum Test_Direction{
@@ -146,11 +146,6 @@ private:
     // -2  error
     Ret_Value  PositivePressure_Add(const TestExpect& expect, bool bSavedata = false);
 
-    // 0   ok
-    // -1  timeout
-    // -2  error
-    Ret_Value  PositivePressure_Add_V2(const TestExpect& expect);
-
     // 0   ok
     // -1  timeout
     // -2  error

+ 1 - 1
ValveTest.pro.user

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE QtCreatorProject>
-<!-- Written by QtCreator 8.0.0, 2023-07-04T09:24:33. -->
+<!-- Written by QtCreator 8.0.0, 2023-07-07T09:15:14. -->
 <qtcreator>
  <data>
   <variable>EnvironmentId</variable>

+ 9 - 0
main.qml

@@ -82,6 +82,15 @@ Window {
         }
     }
 
+    Text {
+        id: ver_text
+        anchors.left: parent.left
+        anchors.bottom: parent.bottom
+        anchors.leftMargin: 30
+        anchors.bottomMargin: 70
+        text: qsTr("SoftWare Version:  V2.1.2")
+        font.bold: true
+    }
 
 
     Item {

+ 2 - 2
pid.cpp

@@ -178,7 +178,7 @@ double PIDImpl::calculate( double setpoint, double pv )
     double derivative = (error - _pre_error) / _dt;
     double Dout = _Kd * derivative;
 
-     qDebug("calculate : pOut : %f, Iout: %f, Dout: %f ", Pout, Iout, Dout);
+     //qDebug("calculate : pOut : %f, Iout: %f, Dout: %f ", Pout, Iout, Dout);
     // Calculate total output
     //double output = Pout + Iout + Dout;
     double output = Pout + Iout ;//+ Dout;
@@ -221,7 +221,7 @@ double PIDImpl::calculate_v2( double setpoint, double pv )
     double derivative = (error - _pre_error) / _dt;
     double Dout = _Kd * derivative;
 
-     qDebug("calculate_V2 : pOut : %f, Iout: %f, Dout: %f ", Pout, Iout, Dout);
+     //qDebug("calculate_V2 : pOut : %f, Iout: %f, Dout: %f ", Pout, Iout, Dout);
     // Calculate total output
     //double output = Pout + Iout + Dout;
     double output = Pout + Iout ;//+ Dout;

+ 2 - 0
serialport.cpp

@@ -22,6 +22,7 @@ void SerialPort::receiveInit()
 
 SerialPort::~SerialPort()
 {
+    qDebug()<<"SerialPort destory";
     if(m_serial->isOpen())
     {
         m_serial->clear();
@@ -109,6 +110,7 @@ bool SerialPort::serialConnect(QString port, QString baudrate, QString databits,
 
 void SerialPort::closeConnect()
 {
+    qDebug()<<"SerialPort closeConnect";
     if(m_serial->isOpen())
     {
         m_serial->clear();