Bladeren bron

调整,并修复小缺陷

guoqiang 2 jaren geleden
bovenliggende
commit
748748241c
9 gewijzigde bestanden met toevoegingen van 128 en 54 verwijderingen
  1. 32 24
      PageMain.qml
  2. 2 1
      PageSetting.qml
  3. 21 10
      RecoveryValve.qml
  4. 62 12
      TestService.cpp
  5. 1 0
      TestService.h
  6. 2 1
      ValveTest.pro.user
  7. 2 2
      report.cpp
  8. 5 3
      tank.cpp
  9. 1 1
      tank.h

+ 32 - 24
PageMain.qml

@@ -15,6 +15,7 @@ Rectangle{
     Item{
         id:rootitem
         anchors.fill:parent
+        property int max_compartment_num:4
 
         enum Page_Type {
             Page_Type_Settings,
@@ -55,7 +56,8 @@ Rectangle{
             function changePages(compartment_num){
                 console.log("changePages num : "+compartment_num)
                 removePage(pagetest)
-
+                removePage(pagecalibration)
+/*
                 if(compartment_num>7){
                     addPage(page_recoveryvalve1)
                     addPage(page_recoveryvalve2)
@@ -92,38 +94,40 @@ Rectangle{
                     addPage(page_recoveryvalve3)
                     addPage(page_recoveryvalve4)
                     addPage(page_recoveryvalve5)
-                }else if(compartment_num>3){
-                    removePage(page_recoveryvalve8)
-                    removePage(page_recoveryvalve7)
-                    removePage(page_recoveryvalve6)
-                    removePage(page_recoveryvalve5)
+                }else
+                    */
+                if(compartment_num>3){
+                    //removePage(page_recoveryvalve8)
+                    //removePage(page_recoveryvalve7)
+                    //removePage(page_recoveryvalve6)
+                    //removePage(page_recoveryvalve5)
                     addPage(page_recoveryvalve1)
                     addPage(page_recoveryvalve2)
                     addPage(page_recoveryvalve3)
                     addPage(page_recoveryvalve4)
                 }else if(compartment_num>2){
-                    removePage(page_recoveryvalve8)
-                    removePage(page_recoveryvalve7)
-                    removePage(page_recoveryvalve6)
-                    removePage(page_recoveryvalve5)
+                    //removePage(page_recoveryvalve8)
+                    //removePage(page_recoveryvalve7)
+                    //removePage(page_recoveryvalve6)
+                    //removePage(page_recoveryvalve5)
                     removePage(page_recoveryvalve4)
                     addPage(page_recoveryvalve1)
                     addPage(page_recoveryvalve2)
                     addPage(page_recoveryvalve3)
                 }else if(compartment_num>1){
-                    removePage(page_recoveryvalve8)
-                    removePage(page_recoveryvalve7)
-                    removePage(page_recoveryvalve6)
-                    removePage(page_recoveryvalve5)
+                    //removePage(page_recoveryvalve8)
+                    //removePage(page_recoveryvalve7)
+                    //removePage(page_recoveryvalve6)
+                    //removePage(page_recoveryvalve5)
                     removePage(page_recoveryvalve4)
                     removePage(page_recoveryvalve3)
                     addPage(page_recoveryvalve1)
                     addPage(page_recoveryvalve2)
                 }else if(compartment_num>0){
-                    removePage(page_recoveryvalve8)
-                    removePage(page_recoveryvalve7)
-                    removePage(page_recoveryvalve6)
-                    removePage(page_recoveryvalve5)
+                    //removePage(page_recoveryvalve8)
+                    //removePage(page_recoveryvalve7)
+                    //removePage(page_recoveryvalve6)
+                    //removePage(page_recoveryvalve5)
                     removePage(page_recoveryvalve4)
                     removePage(page_recoveryvalve3)
                     removePage(page_recoveryvalve2)
@@ -131,6 +135,7 @@ Rectangle{
                 }
 
                 addPage(pagetest)
+                addPage(pagecalibration)
             }
 
             function addPage(page){
@@ -216,6 +221,7 @@ Rectangle{
          visible: false
 
     }
+    /*
     RecoveryValve {
         id:page_recoveryvalve5
          compartment_id: 5
@@ -244,7 +250,7 @@ Rectangle{
          visible: false
 
     }
-
+*/
     //PageStandard {
     //    id:pagestandard
     //    visible: false
@@ -338,6 +344,7 @@ Rectangle{
             break
         case 4:page_var = page_recoveryvalve4
             break
+            /*
         case 5:page_var = page_recoveryvalve5
             break
         case 6:page_var = page_recoveryvalve6
@@ -346,6 +353,7 @@ Rectangle{
             break
         case 8:page_var = page_recoveryvalve8
             break
+            */
         default:
             page_var = page_recoveryvalve1
             break;
@@ -366,7 +374,7 @@ Rectangle{
 
         //console.log("main.qml qmlProcessPressure :",textstring.toString() )
 
-        if((id >= 1) &&(id<=8)){
+        if((id >= 1) &&(id<=rootitem.max_compartment_num)){
             var page_var = getTestPage(id)
 
             //page_var.pressure = str
@@ -383,7 +391,7 @@ Rectangle{
     }
 
     function qmlProcessState(id, str1, str2){
-        if((id >= 1) &&(id<=8)){
+        if((id >= 1) &&(id<=rootitem.max_compartment_num)){
             var page_var = getTestPage(id)
             page_var.update_runstate(str1, str2)
         }else if(id === 0){
@@ -394,7 +402,7 @@ Rectangle{
     }
 
     function qmlProcessSystemResult(id, str, bPassed){
-        if((id >= 1) &&(id<=8)){
+        if((id >= 1) &&(id<=rootitem.max_compartment_num)){
             var page_var = getTestPage(id)
             page_var.show_systemresult(str, bPassed)
         }
@@ -403,7 +411,7 @@ Rectangle{
 
     function qmlProcessValveResult(id, str, bPassed){
 
-        if((id >= 1) &&(id<=8)){
+        if((id >= 1) &&(id<=rootitem.max_compartment_num)){
             var page_var = getTestPage(id)
             page_var.show_valveresult(str, bPassed)
         }
@@ -428,7 +436,7 @@ Rectangle{
 
 
     function qmlProcessStop(id){
-        if((id >= 1) &&(id<=8)){
+        if((id >= 1) &&(id<=rootitem.max_compartment_num)){
             var page_var = getTestPage(id)
             page_var.test_stoped()
         }else if(id === 0){

+ 2 - 1
PageSetting.qml

@@ -710,6 +710,7 @@ Item{
                                             page_recoveryvalve4.carplate = licenseplate
                                             page_recoveryvalve4.total_volume = total_volume
                                             break
+                                            /*
                                         case 4:
                                             page_recoveryvalve5.volume = volume_arry[n]
                                             page_recoveryvalve5.organize = company
@@ -734,7 +735,7 @@ Item{
                                             page_recoveryvalve8.carplate = licenseplate
                                             page_recoveryvalve8.total_volume = total_volume
                                             break
-
+*/
                                         }
 
                                     }

+ 21 - 10
RecoveryValve.qml

@@ -74,6 +74,7 @@ Item{
         //textstring += pressure_map.step.toString()+":"
         console.debug("avans 1111 update_pressure: ", pressure_map.pressure)
 
+
         pressure = pressure_map.pressure
         add_record(pressure_map.pressure)
         pressureDisplayInput(Number(pressure_map.pressure))
@@ -160,6 +161,9 @@ Item{
             resulttable.systemPressure_fontcolor="red"
             resulttable.systemPressure_pass = "超标";
         }
+
+        console.log("sysTestGeneratePicture")
+        groupbox.sysTestGeneratePicture()
     }
 
     function show_valveresult(delta, bPassed)
@@ -173,6 +177,10 @@ Item{
             resulttable.valvePressure_fontcolor="red"
             resulttable.valvePressure_pass = "超标";
         }
+
+        console.log("valveTestGeneratePicture")
+        groupbox.valveTestGeneratePicture()
+
     }
 
     function update_runstate(str1, str2)
@@ -183,6 +191,9 @@ Item{
 
     function test_stoped(){
         startStopButton.running = false;
+
+        console.log("allTestGeneratePicture")
+        groupbox.allTestGeneratePicture()
     }
 
 
@@ -211,18 +222,18 @@ Item{
 
             function allTestGeneratePicture(){
                 var filename = root.carplate+"_"+root.compartment_id+"_all"
-                reportPicture_all.delayms = 300
+                reportPicture_all.delayms = 100
                 reportPicture_all.generatePicture(filename, allArray)
             }
             function sysTestGeneratePicture(){
                 var filename = root.carplate+"_"+root.compartment_id+"_sys"
-                reportPicture_sys.delayms = 500
+                reportPicture_sys.delayms = 100
                 reportPicture_sys.generatePicture(filename, syskpArray)
             }
 
             function valveTestGeneratePicture(){
                 var filename = root.carplate+"_"+root.compartment_id+"_valve"
-                reportPicture_valve.delayms = 800
+                reportPicture_valve.delayms = 100
                 reportPicture_valve.generatePicture(filename, valvekpArray)
             }
 
@@ -254,22 +265,22 @@ Item{
                 onUserClicked:{
 
                     //if(allArray.length > 0){
-                        console.log("allTestGeneratePicture")
-                        groupbox.allTestGeneratePicture()
+                        //console.log("allTestGeneratePicture")
+                        //groupbox.allTestGeneratePicture()
                    // }
 
                     //if(syskpArray.length > 0){
-                        console.log("sysTestGeneratePicture")
-                        groupbox.sysTestGeneratePicture()
+                        //console.log("sysTestGeneratePicture")
+                        //groupbox.sysTestGeneratePicture()
                    // }
 
                    // if(valvekpArray.length > 0){
-                        console.log("valveTestGeneratePicture")
-                        groupbox.valveTestGeneratePicture()
+                   //     console.log("valveTestGeneratePicture")
+                   //     groupbox.valveTestGeneratePicture()
                    // }
 
 
-                    testService.reportpic_Ready(compartment_id);
+                    //testService.reportpic_Ready(compartment_id);
 
                     if(testService.check_alltest_ok()){
                         var fileName = root.carplate

+ 62 - 12
TestService.cpp

@@ -50,7 +50,7 @@ void TestService::init()
      connect(m_pTimer_1, SIGNAL(timeout()), this, SLOT(OnTimer1()));
 
      //m_pTimer_2 = new QTimer(this);
-     // connect(m_pTimer_2, SIGNAL(timeout()), this, SLOT(OnTimer2()));
+     //connect(m_pTimer_2, SIGNAL(timeout()), this, SLOT(OnTimer2()));
 
 
       if(!m_SerialUi3.serialConnect("COM3", "9600", "8", "0", "1")){
@@ -295,7 +295,7 @@ bool TestService::tstop(int compartmentid)
 bool TestService::reportpic_Ready(int compartmentid)
 {
     Compartment& com = m_tank.get_compartment(compartmentid-1);
-    com.m_bpicReady = true;
+    com.m_testfinished = true;
     return true;
 }
 
@@ -304,7 +304,7 @@ bool TestService::check_alltest_ok()
     bool ret_flag = true;
     for(int i=0; i< m_tank.compartment_num; i++){
         Compartment& com = m_tank.get_compartment(i);
-        if(com.m_bpicReady == false ){
+        if(com.m_testfinished == false ){
             ret_flag = false;
             break;
         }
@@ -339,15 +339,18 @@ void TestService::receive_reportprogress(QString qstr)
 
 bool TestService::genReport(QString word_path, QString pic_dir)
 {
+    bool ret = false;
+
     if(word_path.contains(".doc")){
-        return m_report.make_Word(m_tank, word_path, pic_dir);
+        ret = m_report.make_Word(m_tank, word_path, pic_dir);
     }else if(word_path.contains(".pdf")){
-        return m_report.make_PDF(m_tank, word_path, pic_dir);
+        ret = m_report.make_PDF(m_tank, word_path, pic_dir);
+    }else{
+        QString str = "word_path invalid!";
+        qDebug() << str;
     }
 
-    QString str = "word_path invalid!";
-    qDebug() << str;
-    return false;
+    return ret;
 }
 
 QJsonObject TestService::get_vrs_items()
@@ -536,6 +539,7 @@ void TestService::OnTimer1()
     float pressure = 0.00;
     static int timeout_count =0;
     static int times_count = 0;
+
     PressureSensor ps(&m_SerialUi4);
     if(ps.Read(pressure)){
 
@@ -631,6 +635,7 @@ Ret_Value  TestService::PositivePressure_Add(const TestExpect& expect, bool bSav
    PID* pPIDouter = NULL;
    PID* pPIDinner = NULL;
    double speed_target = 0.0;
+   QList<float>  _pressurelist;
 
 
     ParaItem pid_para;
@@ -707,6 +712,11 @@ Ret_Value  TestService::PositivePressure_Add(const TestExpect& expect, bool bSav
                         exceed_times++;
                     }
                         //bOpen_intake = false;
+                }else{
+                    // 过充了,压力下不来。 主要是系统自测会出现这种情况
+                    if((1 == exceed_times) && (stable_count > keep_times)){
+                        count = keep_times+10;
+                    }
                 }
 
 #if 1
@@ -719,6 +729,14 @@ Ret_Value  TestService::PositivePressure_Add(const TestExpect& expect, bool bSav
                     delay_count =5*(1000/interval_time);
                 }
 
+                if(expect.volume < 200){ // 电磁阀与球阀之间的气管内有高压气体,对压力影响较大
+                    if(bvposition != 0){
+                        qDebug(" PositivePressure_Add, position : %d", 0);
+                        if(bv.SetPosition(0))
+                            bvposition = 0;
+                    }
+                }
+
 
 #endif
 
@@ -730,9 +748,9 @@ Ret_Value  TestService::PositivePressure_Add(const TestExpect& expect, bool bSav
                 if(current_pressure >= expect.target && current_pressure < expect.target + 0.01){
                     count++;
 
-                    if(((false == bOpen_intake) && count >=10*(1000/interval_time))||((stable_count > keep_times)&&(false == bOpen_intake))){
-                        count = keep_times+10;
-                    }
+                    //if(((false == bOpen_intake) && count >=10*(1000/interval_time))||((stable_count > keep_times)&&(false == bOpen_intake))){
+                    //    count = keep_times+10;
+                    //}
 
                     if(false == bOpen_intake){
                         //在进气阀关闭,压力回落过程中,两种情况触发加压过程退出
@@ -798,6 +816,27 @@ Ret_Value  TestService::PositivePressure_Add(const TestExpect& expect, bool bSav
             }
         }
 
+        //判断是否有泄露(球阀开度值打到最大, 连续20秒压力不上升,切达不到目标压力)
+        if(bvposition == bvoffset+pid_para.innermax){
+            _pressurelist.push_back(current_pressure);
+            if(_pressurelist.size()  == 20*(1000/interval_time)){
+                float first = _pressurelist.front();
+                if((current_pressure - first) <= 0.2){  //20秒了, 压力上升小于0.2,判为漏气,退出
+                    ret_v = Ret_Excepion;
+                    break;
+                }
+
+                _pressurelist.removeFirst();
+
+            }
+        }else{
+            if(true != _pressurelist.isEmpty()){
+                _pressurelist.clear();
+            }
+        }
+
+
+
         if(count >= keep_times){ //about 60s
             break;
         }
@@ -1239,6 +1278,9 @@ int TestService::make_messagebox(Test_Direction direction, Test_Step step, Ret_V
             }else if(Ret_Failed == ret_v){
                 notice_str = "继电器通信失败, 和序终止";
                 ret_btn = m_msgbox.information(NULL, "提示:", notice_str, QMessageBox::Ok,  QMessageBox::Ok);
+            }else if(Ret_Excepion == ret_v){
+                notice_str = "持续性压力不上升,请检测是否有漏气或阀门未关";
+                ret_btn = m_msgbox.information(NULL, "提示:", notice_str, QMessageBox::Ok,  QMessageBox::Ok);
             }
 
             break;
@@ -1306,6 +1348,9 @@ void TestService::run()
                          case QMessageBox::Ok:
                              m_step = Test_Step_AddPressure;
                              break;
+                         case QMessageBox::Abort:
+                             bQuit = true;
+                             break;
                          default:
                              break;
                          }
@@ -1585,7 +1630,7 @@ void TestService::run()
 
                              texpect.volume = 0;
                              texpect.target = 4.50;
-                             texpect.timeout = 3*60; //3分钟
+                             texpect.timeout = 5*60; //3分钟
                              ret_v = PositivePressure_Add(texpect);
 
                              if(Ret_Exit == ret_v){
@@ -1731,6 +1776,11 @@ void TestService::run()
 
     if(m_bRunning){
         m_bRunning = false;
+        if(m_compartmentid >= 0){ //不是系统自测
+            if(true == m_tank.m_comparts[m_compartmentid].m_result.sys_test_finished){
+                m_tank.m_comparts[m_compartmentid].m_testfinished = true;
+            }
+        }
         emit sigStop(m_compartmentid+1);
     }
 

+ 1 - 0
TestService.h

@@ -22,6 +22,7 @@
 #define AVERAGE_PRESSURE_COUNT (1)   //5个不代表5秒, 要看采样频率
 
 typedef enum _Ret_Value{
+    Ret_Excepion = -3,  //特指漏气严重
     Ret_Failed = -2,
     Ret_Timeout = -1,
     Ret_OK = 0,

+ 2 - 1
ValveTest.pro.user

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE QtCreatorProject>
-<!-- Written by QtCreator 8.0.0, 2023-05-15T11:32:56. -->
+<!-- Written by QtCreator 8.0.0, 2023-05-16T18:47:39. -->
 <qtcreator>
  <data>
   <variable>EnvironmentId</variable>
@@ -246,6 +246,7 @@
     <value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
     <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
     <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
+    <value type="QString" key="RunConfiguration.WorkingDirectory.default">D:/Code/QTapps/build-ValveTest-Desktop_Qt_5_15_2_MinGW_32_bit-Release</value>
    </valuemap>
    <value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
   </valuemap>

+ 2 - 2
report.cpp

@@ -273,7 +273,7 @@ bool Report::make_Word(Tanker& tanker, QString word_path, QString pic_dir)
        }
 
 
-       if(comp.m_bpicReady){
+       if(comp.m_testfinished){
 
            // 获取文档中名字为pic的标签
            QAxObject*bookmark_pic=document->querySubObject("Bookmarks(QVariant)",g_bookmark_test_picture[i]);
@@ -693,7 +693,7 @@ bool Report::make_PDF(Tanker& tanker, QString word_path, QString pic_dir)
        }
 
 
-       if(comp.m_bpicReady){
+       if(comp.m_testfinished){
 
            // 获取文档中名字为pic的标签
            QAxObject*bookmark_pic=document->querySubObject("Bookmarks(QVariant)",g_bookmark_test_picture[i]);

+ 5 - 3
tank.cpp

@@ -35,7 +35,7 @@ Compartment::Compartment()
     m_result.pass_sys_pressure = false;
     m_result.delta_valve_pressure = 0.0;
     m_result.pass_valve_pressure = false;
-    m_bpicReady=false;
+    m_testfinished=false;
 
 }
 Compartment::~Compartment()
@@ -47,7 +47,9 @@ int Compartment::get_addpressure_timeout()
 {
     int timeout = 0;
 
-    if(m_volume > 5000){
+    if(m_volume > 10000){
+        timeout = 15*60;
+    }else if(m_volume > 5000){
         timeout = 10*60;
     }else if(m_volume > 1000){
         timeout = 5*60;
@@ -87,7 +89,7 @@ void Compartment::clear_result()
     m_result.pass_valve_pressure = false;
     m_result.sys_test_finished = false;
     m_result.valve_test_finished = false;
-    m_bpicReady = false;
+    m_testfinished = false;
 }
 
 

+ 1 - 1
tank.h

@@ -52,7 +52,7 @@ public:
     double m_currentpressure;
 
     TestResult  m_result;
-    bool m_bpicReady;
+    bool m_testfinished;
 
     StandardItem m_standarditem;