|
|
@@ -9,7 +9,7 @@ void SerialInfo::on_startWork()
|
|
|
{
|
|
|
timer = new QTimer(this);
|
|
|
connect(timer, &QTimer::timeout, this, &SerialInfo::on_Check_PDUStatus);
|
|
|
- timer->start(2000); // Start the timer
|
|
|
+ timer->start(1000); // Start the timer
|
|
|
}
|
|
|
void SerialInfo::on_closeWork()
|
|
|
{
|
|
|
@@ -82,7 +82,24 @@ void SerialInfo::on_Check_PDUStatus()
|
|
|
on_Parse_PDUStatus(SendString,RecString,_SWITCH_T_AC_IN_L3_INFO);
|
|
|
QThread::msleep(QUERYSTAMP);
|
|
|
|
|
|
-
|
|
|
+ for(int i=0;i<m_TotalCHTemp;i++)
|
|
|
+ {
|
|
|
+ //查询相信息
|
|
|
+ OrderArray[2] = ((_SWITCH_T_AC_CH_PHASE_INFO + 30*i)>> 8) & 0xFF; // High byte
|
|
|
+ OrderArray[3] = (_SWITCH_T_AC_CH_PHASE_INFO + 30*i) & 0xFF; // Low byte
|
|
|
+ OrderArray[4]=0x00;
|
|
|
+ OrderArray[5]=0x1E;
|
|
|
+ crc = crc16_ccitt(OrderArray, 6);
|
|
|
+ OrderArray[6] = crc & 0xFF; // Low byte
|
|
|
+ OrderArray[7] = (crc >> 8) & 0xFF; // High byte
|
|
|
+ SendString=on_SendInfo(OrderArray,8);
|
|
|
+ RecString=on_Rec_PDUStatus();
|
|
|
+ on_Parse_PDUStatus(SendString,RecString,(_SWITCH_T_AC_CH_PHASE_INFO + 30*i));
|
|
|
+ QThread::msleep(QUERYSTAMP);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /*
|
|
|
//查询相信息1
|
|
|
OrderArray[2] = (_SWITCH_T_AC_CH_PHASE_INFO >> 8) & 0xFF; // High byte
|
|
|
OrderArray[3] = _SWITCH_T_AC_CH_PHASE_INFO & 0xFF; // Low byte
|
|
|
@@ -121,6 +138,7 @@ void SerialInfo::on_Check_PDUStatus()
|
|
|
RecString=on_Rec_PDUStatus();
|
|
|
on_Parse_PDUStatus(SendString,RecString,_SWITCH_T_AC_CH_PHASE_INFO+_SWITCH_CH_DIV*2);
|
|
|
QThread::msleep(QUERYSTAMP);
|
|
|
+ */
|
|
|
|
|
|
//查询通道状态
|
|
|
OrderArray[2] = (_SWITCH_T_AC_CH_STATUS >> 8) & 0xFF; // High byte
|
|
|
@@ -135,6 +153,7 @@ void SerialInfo::on_Check_PDUStatus()
|
|
|
on_Parse_PDUStatus(SendString,RecString,_SWITCH_T_AC_CH_STATUS);
|
|
|
QThread::msleep(QUERYSTAMP);
|
|
|
|
|
|
+
|
|
|
//查询modbus传感器
|
|
|
OrderArray[2] = (_SWITCH_T_AC_SENSOR_INFO >> 8) & 0xFF; // High byte
|
|
|
OrderArray[3] = _SWITCH_T_AC_SENSOR_INFO & 0xFF; // Low byte
|
|
|
@@ -202,105 +221,6 @@ void SerialInfo::on_Parse_PDUStatus(const QString &Sendstr,const QString &Recstr
|
|
|
m_PDUAllInfo.AllPower_L3 = ((pRecVector[5] << 16) + pRecVector[4] )/1000.0f; // Low byte
|
|
|
m_PDUAllInfo.AllConsumption_L3 = ((pRecVector[7] << 16)+ pRecVector[6])/1000.0f; // Low byte
|
|
|
}
|
|
|
- else if(_SWITCH_T_AC_CH_PHASE_INFO==infoType)
|
|
|
- {
|
|
|
- QVector<quint16> pRecVector=parseModbusResponse(Recstr,150);
|
|
|
- if(pRecVector.size()<150) return;
|
|
|
- for(int i=0;i<5;i++)
|
|
|
- {
|
|
|
- bool L1flag=pRecVector[i*30+9] & 0xFFFF; // Low byte
|
|
|
- bool L2flag=pRecVector[i*30+19] & 0xFFFF; // Low byte
|
|
|
- bool L3flag=pRecVector[i*30+29] & 0xFFFF; // Low byte
|
|
|
-
|
|
|
- if(L1flag)
|
|
|
- {
|
|
|
- m_PDUCHInfo[i].CHVoltage=((pRecVector[1] << 16) + pRecVector[0] )/1000.0f;
|
|
|
- m_PDUCHInfo[i].CHCurrent=((pRecVector[3] << 16) + pRecVector[2] )/1000.0f;
|
|
|
- m_PDUCHInfo[i].CHPower=((pRecVector[5] << 16) + pRecVector[4] )/1000.0f;
|
|
|
- m_PDUCHInfo[i].CHConsumption=((pRecVector[7] << 16) + pRecVector[6] )/1000.0f;
|
|
|
- }
|
|
|
- else if(L2flag)
|
|
|
- {
|
|
|
- m_PDUCHInfo[i].CHVoltage=((pRecVector[11] << 16) + pRecVector[10] )/1000.0f;
|
|
|
- m_PDUCHInfo[i].CHCurrent=((pRecVector[13] << 16) + pRecVector[12] )/1000.0f;
|
|
|
- m_PDUCHInfo[i].CHPower=((pRecVector[15] << 16) + pRecVector[14] )/1000.0f;
|
|
|
- m_PDUCHInfo[i].CHConsumption=((pRecVector[17] << 16) + pRecVector[16] )/1000.0f;
|
|
|
- }
|
|
|
- else if(L3flag)
|
|
|
- {
|
|
|
- m_PDUCHInfo[i].CHVoltage=((pRecVector[21] << 16) + pRecVector[20] )/1000.0f;
|
|
|
- m_PDUCHInfo[i].CHCurrent=((pRecVector[23] << 16) + pRecVector[22] )/1000.0f;
|
|
|
- m_PDUCHInfo[i].CHPower=((pRecVector[25] << 16) + pRecVector[24] )/1000.0f;
|
|
|
- m_PDUCHInfo[i].CHConsumption=((pRecVector[27] << 16) + pRecVector[26] )/1000.0f;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else if((_SWITCH_T_AC_CH_PHASE_INFO+_SWITCH_CH_DIV)==infoType)
|
|
|
- {
|
|
|
- QVector<quint16> pRecVector=parseModbusResponse(Recstr,150);
|
|
|
- if(pRecVector.size()<150) return;
|
|
|
- for(int i=0;i<5;i++)
|
|
|
- {
|
|
|
- bool L1flag=pRecVector[i*30+9] & 0xFFFF; // Low byte
|
|
|
- bool L2flag=pRecVector[i*30+19] & 0xFFFF; // Low byte
|
|
|
- bool L3flag=pRecVector[i*30+29] & 0xFFFF; // Low byte
|
|
|
-
|
|
|
- if(L1flag)
|
|
|
- {
|
|
|
- m_PDUCHInfo[i+5].CHVoltage=((pRecVector[1] << 16) + pRecVector[0] )/1000.0f;
|
|
|
- m_PDUCHInfo[i+5].CHCurrent=((pRecVector[3] << 16) + pRecVector[2] )/1000.0f;
|
|
|
- m_PDUCHInfo[i+5].CHPower=((pRecVector[5] << 16) + pRecVector[4] )/1000.0f;
|
|
|
- m_PDUCHInfo[i+5].CHConsumption=((pRecVector[7] << 16) + pRecVector[6] )/1000.0f;
|
|
|
- }
|
|
|
- else if(L2flag)
|
|
|
- {
|
|
|
- m_PDUCHInfo[i+5].CHVoltage=((pRecVector[11] << 16) + pRecVector[10] )/1000.0f;
|
|
|
- m_PDUCHInfo[i+5].CHCurrent=((pRecVector[13] << 16) + pRecVector[12] )/1000.0f;
|
|
|
- m_PDUCHInfo[i+5].CHPower=((pRecVector[15] << 16) + pRecVector[14] )/1000.0f;
|
|
|
- m_PDUCHInfo[i+5].CHConsumption=((pRecVector[17] << 16) + pRecVector[16] )/1000.0f;
|
|
|
- }
|
|
|
- else if(L3flag)
|
|
|
- {
|
|
|
- m_PDUCHInfo[i+5].CHVoltage=((pRecVector[21] << 16) + pRecVector[20] )/1000.0f;
|
|
|
- m_PDUCHInfo[i+5].CHCurrent=((pRecVector[23] << 16) + pRecVector[22] )/1000.0f;
|
|
|
- m_PDUCHInfo[i+5].CHPower=((pRecVector[25] << 16) + pRecVector[24] )/1000.0f;
|
|
|
- m_PDUCHInfo[i+5].CHConsumption=((pRecVector[27] << 16) + pRecVector[26] )/1000.0f;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else if((_SWITCH_T_AC_CH_PHASE_INFO+_SWITCH_CH_DIV*2)==infoType)
|
|
|
- {
|
|
|
- QVector<quint16> pRecVector=parseModbusResponse(Recstr,150);
|
|
|
- if(pRecVector.size()<150) return;
|
|
|
- for(int i=0;i<5;i++)
|
|
|
- {
|
|
|
- bool L1flag=pRecVector[i*30+9] & 0xFFFF; // Low byte
|
|
|
- bool L2flag=pRecVector[i*30+19] & 0xFFFF; // Low byte
|
|
|
- bool L3flag=pRecVector[i*30+29] & 0xFFFF; // Low byte
|
|
|
-
|
|
|
- if(L1flag)
|
|
|
- {
|
|
|
- m_PDUCHInfo[i+10].CHVoltage=((pRecVector[1] << 16) + pRecVector[0] )/1000.0f;
|
|
|
- m_PDUCHInfo[i+10].CHCurrent=((pRecVector[3] << 16) + pRecVector[2] )/1000.0f;
|
|
|
- m_PDUCHInfo[i+10].CHPower=((pRecVector[5] << 16) + pRecVector[4] )/1000.0f;
|
|
|
- m_PDUCHInfo[i+10].CHConsumption=((pRecVector[7] << 16) + pRecVector[6] )/1000.0f;
|
|
|
- }
|
|
|
- else if(L2flag)
|
|
|
- {
|
|
|
- m_PDUCHInfo[i+10].CHVoltage=((pRecVector[11] << 16) + pRecVector[10] )/1000.0f;
|
|
|
- m_PDUCHInfo[i+10].CHCurrent=((pRecVector[13] << 16) + pRecVector[12] )/1000.0f;
|
|
|
- m_PDUCHInfo[i+10].CHPower=((pRecVector[15] << 16) + pRecVector[14] )/1000.0f;
|
|
|
- m_PDUCHInfo[i+10].CHConsumption=((pRecVector[17] << 16) + pRecVector[16] )/1000.0f;
|
|
|
- }
|
|
|
- else if(L3flag)
|
|
|
- {
|
|
|
- m_PDUCHInfo[i+10].CHVoltage=((pRecVector[21] << 16) + pRecVector[20] )/1000.0f;
|
|
|
- m_PDUCHInfo[i+10].CHCurrent=((pRecVector[23] << 16) + pRecVector[22] )/1000.0f;
|
|
|
- m_PDUCHInfo[i+10].CHPower=((pRecVector[25] << 16) + pRecVector[24] )/1000.0f;
|
|
|
- m_PDUCHInfo[i+10].CHConsumption=((pRecVector[27] << 16) + pRecVector[26] )/1000.0f;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
else if(_SWITCH_T_AC_CH_STATUS==infoType)
|
|
|
{
|
|
|
QVector<quint16> pRecVector=parseModbusResponse(Recstr,14);
|
|
|
@@ -326,6 +246,59 @@ void SerialInfo::on_Parse_PDUStatus(const QString &Sendstr,const QString &Recstr
|
|
|
if(pRecVector.size()<4) return;
|
|
|
m_PDUAllInfo.Sensor_WaterImmersion = pRecVector[0] & 0xFFFF; // Low byte
|
|
|
}
|
|
|
+ else
|
|
|
+ {
|
|
|
+ for(int i=0;i<m_TotalCHTemp;i++)
|
|
|
+ {
|
|
|
+ if((_SWITCH_T_AC_CH_PHASE_INFO+30*i)==infoType)
|
|
|
+ {
|
|
|
+ QVector<quint16> pRecVector=parseModbusResponse(Recstr,30);
|
|
|
+ if(pRecVector.size()<30) return;
|
|
|
+
|
|
|
+ // bool L1flag=pRecVector[8] & 0xFFFF; // Low byte
|
|
|
+ //bool L2flag=pRecVector[18] & 0xFFFF; // Low byte
|
|
|
+ //bool L3flag=pRecVector[28] & 0xFFFF; // Low byte
|
|
|
+
|
|
|
+ float VL1=((pRecVector[1] << 16) + pRecVector[0] )/1000.0f;
|
|
|
+ float IL1=((pRecVector[3] << 16) + pRecVector[2] )/1000.0f;
|
|
|
+ float PL1=((pRecVector[5] << 16) + pRecVector[4] )/1000.0f;
|
|
|
+ float CL1=((pRecVector[7] << 16) + pRecVector[6] )/1000.0f;
|
|
|
+
|
|
|
+ float VL2=((pRecVector[11] << 16) + pRecVector[10] )/1000.0f;
|
|
|
+ float IL2=((pRecVector[13] << 16) + pRecVector[12] )/1000.0f;
|
|
|
+ float PL2=((pRecVector[15] << 16) + pRecVector[14] )/1000.0f;
|
|
|
+ float CL2=((pRecVector[17] << 16) + pRecVector[16] )/1000.0f;
|
|
|
+
|
|
|
+ float VL3=((pRecVector[21] << 16) + pRecVector[20] )/1000.0f;
|
|
|
+ float IL3=((pRecVector[23] << 16) + pRecVector[22] )/1000.0f;
|
|
|
+ float PL3=((pRecVector[25] << 16) + pRecVector[24] )/1000.0f;
|
|
|
+ float CL3=((pRecVector[27] << 16) + pRecVector[26] )/1000.0f;
|
|
|
+
|
|
|
+ if(VL1>=VL2 && VL1>=VL3)
|
|
|
+ {
|
|
|
+ m_PDUCHInfo[i].CHVoltage=VL1;
|
|
|
+ m_PDUCHInfo[i].CHCurrent=IL1;
|
|
|
+ m_PDUCHInfo[i].CHPower=PL1;
|
|
|
+ m_PDUCHInfo[i].CHConsumption=CL1;
|
|
|
+ }
|
|
|
+ if(VL2>=VL1 && VL2>=VL3)
|
|
|
+ {
|
|
|
+ m_PDUCHInfo[i].CHVoltage=VL2;
|
|
|
+ m_PDUCHInfo[i].CHCurrent=IL2;
|
|
|
+ m_PDUCHInfo[i].CHPower=PL2;
|
|
|
+ m_PDUCHInfo[i].CHConsumption=CL2;
|
|
|
+ }
|
|
|
+ if(VL3>=VL1 && VL3>=VL2)
|
|
|
+ {
|
|
|
+ m_PDUCHInfo[i].CHVoltage=VL3;
|
|
|
+ m_PDUCHInfo[i].CHCurrent=IL3;
|
|
|
+ m_PDUCHInfo[i].CHPower=PL3;
|
|
|
+ m_PDUCHInfo[i].CHConsumption=CL3;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
if(m_printflag) emit addPDUInfo(Sendstr, Recstr);
|
|
|
}
|