|
@@ -224,7 +224,7 @@ bool TestService::tselfstart(int compartmentid, int direction)
|
|
|
{
|
|
|
case QMessageBox::Ok:
|
|
|
qDebug()<<"Ok";
|
|
|
- m_pTimer_1->start(1*1000); // 1s
|
|
|
+ m_pTimer_1->start(1*500); // 1s
|
|
|
m_bRunning = true;
|
|
|
start();
|
|
|
break;
|
|
@@ -404,9 +404,6 @@ QString TestService::read_PressureValue()
|
|
|
PressureSensor ps(&m_SerialUi4);
|
|
|
if(ps.Read(pressure)){
|
|
|
|
|
|
- int _ipressure = pressure*100;
|
|
|
- pressure = _ipressure/100.0;
|
|
|
-
|
|
|
push_pressurelist(pressure);
|
|
|
timeout_count=0;
|
|
|
|
|
@@ -423,6 +420,9 @@ QString TestService::read_PressureValue()
|
|
|
|
|
|
}
|
|
|
|
|
|
+ int _ipressure = pressure*100;
|
|
|
+ pressure = _ipressure/100.0;
|
|
|
+
|
|
|
QString pressure_str = QString("%1").arg(pressure, 4,'f',2,QLatin1Char('0'));
|
|
|
return pressure_str;
|
|
|
|
|
@@ -486,60 +486,19 @@ QJsonObject TestService::ballvalve_status()
|
|
|
return rootObj;
|
|
|
}
|
|
|
|
|
|
-#if 0
|
|
|
-bool TestService::OpenSerial3()
|
|
|
+void TestService::dump_comstatistic()
|
|
|
{
|
|
|
- m_SerialPort3 = new QSerialPort();
|
|
|
- m_SerialPort3->setPortName("COM3");
|
|
|
- m_SerialPort3->setBaudRate(9600, QSerialPort::AllDirections);
|
|
|
- m_SerialPort3->setDataBits(QSerialPort::Data8);
|
|
|
- m_SerialPort3->setParity(QSerialPort::NoParity);
|
|
|
- m_SerialPort3->setStopBits(QSerialPort::OneStop);
|
|
|
- //m_SerialPort3->setFlowControl(QSerialPort::NoFlowControl);//Set to no flow control
|
|
|
-
|
|
|
- if (m_SerialPort3->open(QIODevice::ReadWrite) == false){
|
|
|
- qDebug("open COM3 failed");
|
|
|
- //QMessageBox::warning(this, "警告", "打开串口COM3失败");
|
|
|
-
|
|
|
- QString str = "打开串口COM3失败";
|
|
|
- emit onNotice(str);
|
|
|
- return false;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- //controlserial->close();
|
|
|
- //connect(m_SerialPort3,SIGNAL(readyRead()),this,SLOT(ReadSerialport3()));
|
|
|
- return true;
|
|
|
- }
|
|
|
-}
|
|
|
+ QString filepath = "D:/VaporRecoverySystemTest/comstatistic.txt";
|
|
|
+ Valve in_v(&m_SerialUi3, VALVE_INTAKE);
|
|
|
+ in_v.Dump_Statistics(filepath);
|
|
|
|
|
|
-bool TestService::OpenSerial4()
|
|
|
-{
|
|
|
- m_SerialPort4 = new QSerialPort();
|
|
|
- m_SerialPort4->setPortName("COM4");
|
|
|
- m_SerialPort4->setBaudRate(9600, QSerialPort::AllDirections);
|
|
|
- m_SerialPort4->setDataBits(QSerialPort::Data8);
|
|
|
- m_SerialPort4->setParity(QSerialPort::EvenParity);
|
|
|
- m_SerialPort4->setStopBits(QSerialPort::OneStop);
|
|
|
- m_SerialPort4->setFlowControl(QSerialPort::NoFlowControl);//Set to no flow control
|
|
|
-
|
|
|
- if (m_SerialPort4->open(QIODevice::ReadWrite) == false){
|
|
|
- qDebug("open COM4 failed");
|
|
|
- //QMessageBox::warning(this, "警告", "打开串口COM4失败");
|
|
|
-
|
|
|
- QString str = "打开串口COM4失败,无法读取压力";
|
|
|
- emit onNotice(str);
|
|
|
- return false;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- //readserial->close();
|
|
|
- //connect(m_SerialPort4,SIGNAL(readyRead()),this,SLOT(ReadSerialport4()));
|
|
|
- return true;
|
|
|
- }
|
|
|
-}
|
|
|
+ PressureSensor ps(&m_SerialUi4);
|
|
|
+ ps.Dump_Statistics(filepath);
|
|
|
|
|
|
-#endif
|
|
|
+ BallValve bv(&m_SerialUi4);
|
|
|
+ bv.Dump_Statistics(filepath);
|
|
|
+
|
|
|
+}
|
|
|
|
|
|
void TestService::OnTimer1()
|
|
|
{
|
|
@@ -569,13 +528,13 @@ void TestService::OnTimer1()
|
|
|
}
|
|
|
|
|
|
int _ipressure = 0;
|
|
|
- if(pressure >= 4.5){
|
|
|
- _ipressure = pressure*10;
|
|
|
- pressure = _ipressure/10.0;
|
|
|
- }else{
|
|
|
+ //if(pressure >= 4.5){
|
|
|
+ // _ipressure = pressure*10;
|
|
|
+ // pressure = _ipressure/10.0;
|
|
|
+ //}else{
|
|
|
_ipressure = pressure*100;
|
|
|
pressure = _ipressure/100.0;
|
|
|
- }
|
|
|
+ //}
|
|
|
|
|
|
//int _ipressure = pressure*100;
|
|
|
//pressure = _ipressure/100.0;
|
|
@@ -615,7 +574,7 @@ void TestService::OnTimer2()
|
|
|
//qDebug("OnTimer2 >>>leave ");
|
|
|
}
|
|
|
|
|
|
-Ret_Value TestService::PositivePressure_Add(const TestExpect& expect)
|
|
|
+Ret_Value TestService::PositivePressure_Add(const TestExpect& expect, bool bSavedata)
|
|
|
{
|
|
|
Ret_Value ret_v = Ret_OK;
|
|
|
int count = 0;
|
|
@@ -641,12 +600,13 @@ Ret_Value TestService::PositivePressure_Add(const TestExpect& expect)
|
|
|
|
|
|
PID* pPIDouter = NULL;
|
|
|
PID* pPIDinner = NULL;
|
|
|
+ double speed_target = 0.0;
|
|
|
|
|
|
//pPIDouter = new PID(1, 0.2, 0, 0.2, 0, 0);
|
|
|
|
|
|
- if(expect.volume <= 1000){
|
|
|
- pPIDouter = new PID(1, 0.2, 0, 0.2, 0, 0);
|
|
|
- pPIDinner = new PID(1, 200, 0, 1000, 50, 20, 40, 2);
|
|
|
+ if(expect.volume <= 500){
|
|
|
+ pPIDouter = new PID(0.5, 0.2, 0, 0.2, 0, 0);
|
|
|
+ pPIDinner = new PID(0.5, 200, 0, 1000, 50, 20, 50, 2);
|
|
|
holding_time = 30;
|
|
|
}else if(expect.volume <= 5000){
|
|
|
pPIDouter = new PID(1, 0.2, 0, 0.2, 0, 0);
|
|
@@ -668,6 +628,17 @@ Ret_Value TestService::PositivePressure_Add(const TestExpect& expect)
|
|
|
bool bOpen_intake = false;
|
|
|
//bOpen_intake = in_v.Open();
|
|
|
|
|
|
+ //
|
|
|
+ QDateTime datetime = QDateTime::currentDateTime();
|
|
|
+ QString timestr = datetime.toString("ddHHmmzzz");
|
|
|
+ QString filepath = "D:/VaporRecoverySystemTest/";
|
|
|
+ QFile datafile(filepath+timestr+"_PIDdata.csv");
|
|
|
+ bool datafile_opened = false;
|
|
|
+ if(true == bSavedata){
|
|
|
+ datafile_opened = datafile.open(QFile::WriteOnly | QFile::Truncate);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
//等待压力达到目标值附近
|
|
|
while(m_bRunning){
|
|
|
|
|
@@ -702,7 +673,7 @@ Ret_Value TestService::PositivePressure_Add(const TestExpect& expect)
|
|
|
|
|
|
qDebug(" PositivePressure_Add, current_pressure : %f target: %f", current_pressure, expect.target);
|
|
|
|
|
|
- if(current_pressure > expect.target+0.05){
|
|
|
+ if(current_pressure >= expect.target+0.01){
|
|
|
|
|
|
count++;
|
|
|
if(bOpen_intake){
|
|
@@ -716,7 +687,6 @@ Ret_Value TestService::PositivePressure_Add(const TestExpect& expect)
|
|
|
//bOpen_intake = false;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
if(exceed_times <= 1){
|
|
|
stable_counts = 15;
|
|
|
}else if(2 == exceed_times){
|
|
@@ -744,7 +714,7 @@ Ret_Value TestService::PositivePressure_Add(const TestExpect& expect)
|
|
|
|
|
|
}else{
|
|
|
|
|
|
- if(current_pressure >= expect.target && current_pressure <= expect.target + 0.05 ){
|
|
|
+ if(current_pressure >= expect.target && current_pressure < expect.target + 0.01){
|
|
|
count++;
|
|
|
}else{
|
|
|
count=0;
|
|
@@ -763,10 +733,10 @@ Ret_Value TestService::PositivePressure_Add(const TestExpect& expect)
|
|
|
|
|
|
if(NULL != pPIDouter && NULL != pPIDinner && 0 == stable_counts){
|
|
|
|
|
|
- double speed_target = pPIDouter->calculate(expect.target+0.02, current_pressure);
|
|
|
+ speed_target = pPIDouter->calculate(expect.target+0.01, current_pressure);
|
|
|
|
|
|
qDebug(" PositivePressure_Add, pPIDinner speed_target:%f, current_speed:%f", speed_target, current_speed);
|
|
|
- double inc = pPIDinner->calculate(speed_target+0.009, current_speed);
|
|
|
+ double inc = pPIDinner->calculate(speed_target, current_speed);
|
|
|
|
|
|
unsigned short position = bvoffset +inc;
|
|
|
|
|
@@ -795,7 +765,26 @@ Ret_Value TestService::PositivePressure_Add(const TestExpect& expect)
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
- QThread::msleep(1000);
|
|
|
+ if(true == bSavedata && true == datafile_opened){
|
|
|
+
|
|
|
+ QTextStream out(&datafile); // 输入流
|
|
|
+
|
|
|
+ QString str1 = QString("%1").arg(expect.target, 8,'f',6,QLatin1Char('0'));
|
|
|
+ QString str2 = QString("%1").arg(current_pressure, 8,'f',6,QLatin1Char('0'));
|
|
|
+
|
|
|
+ //out << QString::number(expect.target) << "," << QString::number(current_pressure) << ",";
|
|
|
+ out << str1 << "," << str2 << ",";
|
|
|
+
|
|
|
+ str1 = QString("%1").arg(speed_target, 8,'f',6,QLatin1Char('0'));
|
|
|
+ str2 = QString("%1").arg(current_speed, 8,'f',6,QLatin1Char('0'));
|
|
|
+
|
|
|
+ //out << QString::number(speed_target) << "," << QString::number(current_speed) << ",";
|
|
|
+ out << str1 << "," << str2 << ",";
|
|
|
+ out << QString::number(bvposition) << "\n";
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ QThread::msleep(500);
|
|
|
|
|
|
int remainingtime = expect.timeout*1000 - timer.elapsed();
|
|
|
if(remainingtime <= 0){
|
|
@@ -823,6 +812,9 @@ Ret_Value TestService::PositivePressure_Add(const TestExpect& expect)
|
|
|
in_v.Close();
|
|
|
bv.SetPosition(0);
|
|
|
|
|
|
+ if(true == bSavedata && true == datafile_opened){
|
|
|
+ datafile.close();
|
|
|
+ }
|
|
|
|
|
|
return ret_v;
|
|
|
|
|
@@ -1548,7 +1540,7 @@ void TestService::run()
|
|
|
texpect.volume = 0;
|
|
|
texpect.target = 4.50;
|
|
|
texpect.timeout = 3*60; //5分钟
|
|
|
- ret_v = PositivePressure_Add(texpect);
|
|
|
+ ret_v = PositivePressure_Add(texpect, true);
|
|
|
|
|
|
if(Ret_Exit == ret_v){
|
|
|
bQuit = true;
|
|
@@ -1699,6 +1691,8 @@ void TestService::run()
|
|
|
Valve all_v(&m_SerialUi3, ALL_VALVE);
|
|
|
all_v.Close();
|
|
|
|
|
|
+ dump_comstatistic();
|
|
|
+
|
|
|
|
|
|
qDebug("doTest >>>leave ");
|
|
|
|