|
@@ -82,12 +82,12 @@ void SerialInfo::on_Check_PDUStatus()
|
|
|
on_Parse_PDUStatus(SendString,RecString,_SWITCH_T_AC_IN_L3_INFO);
|
|
on_Parse_PDUStatus(SendString,RecString,_SWITCH_T_AC_IN_L3_INFO);
|
|
|
QThread::msleep(QUERYSTAMP);
|
|
QThread::msleep(QUERYSTAMP);
|
|
|
|
|
|
|
|
- /*
|
|
|
|
|
- //查询相信息
|
|
|
|
|
|
|
+
|
|
|
|
|
+ //查询相信息1
|
|
|
OrderArray[2] = (_SWITCH_T_AC_CH_PHASE_INFO >> 8) & 0xFF; // High byte
|
|
OrderArray[2] = (_SWITCH_T_AC_CH_PHASE_INFO >> 8) & 0xFF; // High byte
|
|
|
OrderArray[3] = _SWITCH_T_AC_CH_PHASE_INFO & 0xFF; // Low byte
|
|
OrderArray[3] = _SWITCH_T_AC_CH_PHASE_INFO & 0xFF; // Low byte
|
|
|
- OrderArray[4]=0x01;
|
|
|
|
|
- OrderArray[5]=0xA4;
|
|
|
|
|
|
|
+ OrderArray[4]=0x00;
|
|
|
|
|
+ OrderArray[5]=0x96;
|
|
|
crc = crc16_ccitt(OrderArray, 6);
|
|
crc = crc16_ccitt(OrderArray, 6);
|
|
|
OrderArray[6] = crc & 0xFF; // Low byte
|
|
OrderArray[6] = crc & 0xFF; // Low byte
|
|
|
OrderArray[7] = (crc >> 8) & 0xFF; // High byte
|
|
OrderArray[7] = (crc >> 8) & 0xFF; // High byte
|
|
@@ -95,7 +95,32 @@ void SerialInfo::on_Check_PDUStatus()
|
|
|
RecString=on_Rec_PDUStatus();
|
|
RecString=on_Rec_PDUStatus();
|
|
|
on_Parse_PDUStatus(SendString,RecString,_SWITCH_T_AC_CH_PHASE_INFO);
|
|
on_Parse_PDUStatus(SendString,RecString,_SWITCH_T_AC_CH_PHASE_INFO);
|
|
|
QThread::msleep(QUERYSTAMP);
|
|
QThread::msleep(QUERYSTAMP);
|
|
|
- */
|
|
|
|
|
|
|
+
|
|
|
|
|
+ //查询相信息2
|
|
|
|
|
+ OrderArray[2] = ((_SWITCH_T_AC_CH_PHASE_INFO + _SWITCH_CH_DIV)>> 8) & 0xFF; // High byte
|
|
|
|
|
+ OrderArray[3] = (_SWITCH_T_AC_CH_PHASE_INFO + _SWITCH_CH_DIV) & 0xFF; // Low byte
|
|
|
|
|
+ OrderArray[4]=0x00;
|
|
|
|
|
+ OrderArray[5]=0x96;
|
|
|
|
|
+ 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+_SWITCH_CH_DIV);
|
|
|
|
|
+ QThread::msleep(QUERYSTAMP);
|
|
|
|
|
+
|
|
|
|
|
+ //查询相信息3
|
|
|
|
|
+ OrderArray[2] = ((_SWITCH_T_AC_CH_PHASE_INFO + _SWITCH_CH_DIV*2 )>> 8) & 0xFF; // High byte
|
|
|
|
|
+ OrderArray[3] = (_SWITCH_T_AC_CH_PHASE_INFO + _SWITCH_CH_DIV*2 ) & 0xFF; // Low byte
|
|
|
|
|
+ OrderArray[4]=0x00;
|
|
|
|
|
+ OrderArray[5]=0x96;
|
|
|
|
|
+ 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+_SWITCH_CH_DIV*2);
|
|
|
|
|
+ QThread::msleep(QUERYSTAMP);
|
|
|
|
|
|
|
|
//查询通道状态
|
|
//查询通道状态
|
|
|
OrderArray[2] = (_SWITCH_T_AC_CH_STATUS >> 8) & 0xFF; // High byte
|
|
OrderArray[2] = (_SWITCH_T_AC_CH_STATUS >> 8) & 0xFF; // High byte
|
|
@@ -109,7 +134,7 @@ void SerialInfo::on_Check_PDUStatus()
|
|
|
RecString=on_Rec_PDUStatus();
|
|
RecString=on_Rec_PDUStatus();
|
|
|
on_Parse_PDUStatus(SendString,RecString,_SWITCH_T_AC_CH_STATUS);
|
|
on_Parse_PDUStatus(SendString,RecString,_SWITCH_T_AC_CH_STATUS);
|
|
|
QThread::msleep(QUERYSTAMP);
|
|
QThread::msleep(QUERYSTAMP);
|
|
|
- /*
|
|
|
|
|
|
|
+
|
|
|
//查询modbus传感器
|
|
//查询modbus传感器
|
|
|
OrderArray[2] = (_SWITCH_T_AC_SENSOR_INFO >> 8) & 0xFF; // High byte
|
|
OrderArray[2] = (_SWITCH_T_AC_SENSOR_INFO >> 8) & 0xFF; // High byte
|
|
|
OrderArray[3] = _SWITCH_T_AC_SENSOR_INFO & 0xFF; // Low byte
|
|
OrderArray[3] = _SWITCH_T_AC_SENSOR_INFO & 0xFF; // Low byte
|
|
@@ -135,7 +160,7 @@ void SerialInfo::on_Check_PDUStatus()
|
|
|
RecString=on_Rec_PDUStatus();
|
|
RecString=on_Rec_PDUStatus();
|
|
|
on_Parse_PDUStatus(SendString,RecString,_SWITCH_T_AC_SENSOR_INFO1);
|
|
on_Parse_PDUStatus(SendString,RecString,_SWITCH_T_AC_SENSOR_INFO1);
|
|
|
QThread::msleep(QUERYSTAMP);
|
|
QThread::msleep(QUERYSTAMP);
|
|
|
- */
|
|
|
|
|
|
|
+
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
void SerialInfo::on_Parse_PDUStatus(const QString &Sendstr,const QString &Recstr,uint16_t infoType)
|
|
void SerialInfo::on_Parse_PDUStatus(const QString &Sendstr,const QString &Recstr,uint16_t infoType)
|
|
@@ -179,7 +204,102 @@ void SerialInfo::on_Parse_PDUStatus(const QString &Sendstr,const QString &Recstr
|
|
|
}
|
|
}
|
|
|
else if(_SWITCH_T_AC_CH_PHASE_INFO==infoType)
|
|
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)
|
|
else if(_SWITCH_T_AC_CH_STATUS==infoType)
|
|
|
{
|
|
{
|
|
@@ -192,11 +312,19 @@ void SerialInfo::on_Parse_PDUStatus(const QString &Sendstr,const QString &Recstr
|
|
|
}
|
|
}
|
|
|
else if(_SWITCH_T_AC_SENSOR_INFO==infoType)
|
|
else if(_SWITCH_T_AC_SENSOR_INFO==infoType)
|
|
|
{
|
|
{
|
|
|
-
|
|
|
|
|
|
|
+ QVector<quint16> pRecVector=parseModbusResponse(Recstr,16);
|
|
|
|
|
+ if(pRecVector.size()<16) return;
|
|
|
|
|
+ m_PDUAllInfo.Sensor_Temperature = ((pRecVector[1] << 16) + pRecVector[0] )/1000.0f;
|
|
|
|
|
+ m_PDUAllInfo.Sensor_Humidity = ((pRecVector[3] << 16) + pRecVector[2] )/1000.0f;
|
|
|
|
|
+ m_PDUAllInfo.Sensor_CO2 = ((pRecVector[5] << 16) + pRecVector[4] )/1000.0f;
|
|
|
|
|
+ m_PDUAllInfo.Sensor_INTemperature = ((pRecVector[9] << 16)+ pRecVector[8])/1000.0f;
|
|
|
|
|
+ m_PDUAllInfo.Sensor_OUTTemperature = ((pRecVector[13] << 16)+ pRecVector[12])/1000.0f;
|
|
|
}
|
|
}
|
|
|
else if(_SWITCH_T_AC_SENSOR_INFO1==infoType)
|
|
else if(_SWITCH_T_AC_SENSOR_INFO1==infoType)
|
|
|
{
|
|
{
|
|
|
-
|
|
|
|
|
|
|
+ QVector<quint16> pRecVector=parseModbusResponse(Recstr,4);
|
|
|
|
|
+ if(pRecVector.size()<4) return;
|
|
|
|
|
+ m_PDUAllInfo.Sensor_WaterImmersion = pRecVector[0] & 0xFFFF; // Low byte
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if(m_printflag) emit addPDUInfo(Sendstr, Recstr);
|
|
if(m_printflag) emit addPDUInfo(Sendstr, Recstr);
|