733 lines
36 KiB
C++
733 lines
36 KiB
C++
|
#include "ChillerClient.h"
|
|||
|
//#include "Modbus.h"
|
|||
|
//#include "../SystemInfo.h"
|
|||
|
#include "../external/imgui/imgui_custom.h"
|
|||
|
#include "../Toast.h"
|
|||
|
|
|||
|
ChillerClient::ChillerClient(void* pconfig,int* tp) :TcpClient(pconfig)
|
|||
|
{
|
|||
|
m_Freq = 150;
|
|||
|
m_Type = tp;
|
|||
|
|
|||
|
size_t ptrSize = sizeof(nullptr); //指针大小
|
|||
|
void* startPtr = &m_DoluyoChillerStat.m_startFlag + 1;
|
|||
|
size_t count = ((size_t)&m_DoluyoChillerStat.m_endFlag - (size_t)startPtr) / ptrSize;
|
|||
|
InsertMp(startPtr, count);
|
|||
|
|
|||
|
startPtr = &m_HansChillerstat.m_startFlag + 1;
|
|||
|
count = ((size_t)&m_HansChillerstat.m_endFlag - (size_t)startPtr) / ptrSize;
|
|||
|
InsertMp(startPtr, count);
|
|||
|
|
|||
|
startPtr = &m_TongFeiStat.m_startFlag + 1;
|
|||
|
count = ((size_t)&m_TongFeiStat.m_endFlag - (size_t)startPtr) / ptrSize;
|
|||
|
InsertMp(startPtr, count);
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
ChillerClient::~ChillerClient()
|
|||
|
{
|
|||
|
Shutdown();
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
//void ChillerClient::InitCommand()
|
|||
|
//{
|
|||
|
// if ((*m_Type) == ExtCfg::DOLUYO)
|
|||
|
// {
|
|||
|
// Command* pCommand = new ReadModbus(m_Config->m_Addr, 0x2D, 38);
|
|||
|
// pCommand->m_Fun = &ChillerClient::ProcDoluyoInfo;
|
|||
|
// pCommand->m_Ref = this;
|
|||
|
// pCommand->isNeedDel = false;
|
|||
|
//
|
|||
|
// Command* pReadTarge = new ReadModbus(m_Config->m_Addr, 0x8E, 1);
|
|||
|
// pReadTarge->m_Fun = &ChillerClient::ProcDoluyoReadTargeValue;
|
|||
|
// pReadTarge->m_Ref = this;
|
|||
|
// pReadTarge->isNeedDel = false;
|
|||
|
//
|
|||
|
// m_CycleCommands.push_back(pCommand);
|
|||
|
// m_CycleCommands.push_back(pReadTarge);
|
|||
|
// }
|
|||
|
// else if((*m_Type)==ExtCfg::HANS) {
|
|||
|
// Command* pCommand = new ReadModbus(m_Config->m_Addr, 0x100, 16);
|
|||
|
// pCommand->m_Fun = &ChillerClient::ProcHansInfo;
|
|||
|
// pCommand->m_Ref = this;
|
|||
|
// pCommand->isNeedDel = false;
|
|||
|
// m_CycleCommands.push_back(pCommand);
|
|||
|
// }
|
|||
|
// else if ((*m_Type) == ExtCfg::TONGFEI) {
|
|||
|
// Command* alarmInput = new ReadCoilModbus(m_Config->m_Addr, 0x01, 20);
|
|||
|
// alarmInput->m_Fun = &ChillerClient::ProcTongfeiAlarmInputInfo;
|
|||
|
// alarmInput->m_Ref = this;
|
|||
|
// alarmInput->isNeedDel = false;
|
|||
|
//
|
|||
|
// Command* alarmState = new ReadModbus(m_Config->m_Addr, 57, 1);
|
|||
|
// alarmState->m_Fun = &ChillerClient::ProcTongfeiAlarmStateInfo;
|
|||
|
// alarmState->m_Ref = this;
|
|||
|
// alarmState->isNeedDel = false;
|
|||
|
//
|
|||
|
// Command* userParams = new ReadModbus(m_Config->m_Addr, 0x02, 5);
|
|||
|
// userParams->m_Fun = &ChillerClient::ProcTongfeiUserParamsInfo;
|
|||
|
// userParams->m_Ref = this;
|
|||
|
// userParams->isNeedDel = false;
|
|||
|
//
|
|||
|
// Command* anaShow = new ReadModbus(m_Config->m_Addr, 150, 9);
|
|||
|
// anaShow->m_Fun = &ChillerClient::ProcTongfeiAnaShowInfo;
|
|||
|
// anaShow->m_Ref = this;
|
|||
|
// anaShow->isNeedDel = false;
|
|||
|
//
|
|||
|
// Command* anaShow2 = new ReadModbus(m_Config->m_Addr, 720, 4);
|
|||
|
// anaShow2->m_Fun = &ChillerClient::ProcTongfeiAnaShowInfo2;
|
|||
|
// anaShow2->m_Ref = this;
|
|||
|
// anaShow2->isNeedDel = false;
|
|||
|
//
|
|||
|
// Command* anaShow3 = new ReadModbus(m_Config->m_Addr, 741, 5);
|
|||
|
// anaShow3->m_Fun = &ChillerClient::ProcTongfeianaShowInfo3;
|
|||
|
// anaShow3->m_Ref = this;
|
|||
|
// anaShow3->isNeedDel = false;
|
|||
|
//
|
|||
|
// m_CycleCommands.push_back(alarmInput);
|
|||
|
// m_CycleCommands.push_back(alarmState);
|
|||
|
// m_CycleCommands.push_back(userParams);
|
|||
|
// m_CycleCommands.push_back(anaShow);
|
|||
|
// m_CycleCommands.push_back(anaShow2);
|
|||
|
// m_CycleCommands.push_back(anaShow3);
|
|||
|
// }
|
|||
|
//
|
|||
|
//}
|
|||
|
|
|||
|
//void ChillerClient::SetDoluyoTargetTempValue(float value)
|
|||
|
//{
|
|||
|
// short realvalue = (short)(value * 10);
|
|||
|
// WriteModbus* pSet = new WriteModbus(m_Config->m_Addr, 0x8E);
|
|||
|
// pSet->AddShort(realvalue);
|
|||
|
// pSet->m_Fun = &ChillerClient::ProcDoluyoSettingValue;
|
|||
|
// pSet->m_Ref = this;
|
|||
|
//
|
|||
|
// EnterCriticalSection(&m_RtcCS);
|
|||
|
// m_RTCommands.push(pSet);
|
|||
|
// LeaveCriticalSection(&m_RtcCS);
|
|||
|
//}
|
|||
|
|
|||
|
//void ChillerClient::ProcDoluyoInfo(void* pobject, Command* pcommand)
|
|||
|
//{
|
|||
|
// if (pobject == NULL)return;
|
|||
|
// ChillerClient* pDlc = (ChillerClient*)pobject;
|
|||
|
// unsigned char* rseq = pcommand->m_RespSeq;
|
|||
|
// unsigned char addr = rseq[0];
|
|||
|
//
|
|||
|
// short watertempValue = (((rseq[3] & 0xff) << 8) + (rseq[4] & 0xff));
|
|||
|
// unsigned short runinfo = (((rseq[63] & 0xff) << 8) + (rseq[64] & 0xff));
|
|||
|
// unsigned short runs = (((rseq[65] & 0xff) << 8) + (rseq[66] & 0xff));
|
|||
|
// unsigned short alarminfo = (((rseq[67] & 0xff) << 8) + (rseq[68] & 0xff));
|
|||
|
// unsigned short levelalarm = (((rseq[77] & 0xff) << 8) + (rseq[78] & 0xff));
|
|||
|
// //short tempSetValue = (((rseq[197] & 0xff) << 8) + (rseq[198] & 0xff));
|
|||
|
//
|
|||
|
// //pDlc->m_ValueMutex.lock();
|
|||
|
//
|
|||
|
// EnterCriticalSection(&pDlc->m_ValueCS);
|
|||
|
// pDlc->m_DoluyoChillerStat.m_tempRealtimeValue->SetValue((float)watertempValue / 10.0f);
|
|||
|
// pDlc->m_DoluyoChillerStat.m_runInfo->SetValue(runinfo);
|
|||
|
// switch (runs) {
|
|||
|
// case 0:pDlc->m_DoluyoChillerStat.m_isRun->SetValue(false); break;
|
|||
|
// case 1:pDlc->m_DoluyoChillerStat.m_isRun->SetValue(true); break;
|
|||
|
// case 2:pDlc->m_DoluyoChillerStat.m_isRun->SetValue(false); break;
|
|||
|
// }
|
|||
|
// pDlc->m_DoluyoChillerStat.m_alarmInfo->SetValue(alarminfo);
|
|||
|
// pDlc->m_DoluyoChillerStat.m_isLevelAlarm->SetValue(((levelalarm == 0) ? false : true));
|
|||
|
// //stat->tempSettingValue = (float)tempSetValue / 10.0f;
|
|||
|
// LeaveCriticalSection(&pDlc->m_ValueCS);
|
|||
|
//}
|
|||
|
|
|||
|
//void ChillerClient::ProcDoluyoReadTargeValue(void* pobject, Command* pcommand)
|
|||
|
//{
|
|||
|
// if (pobject == NULL)return;
|
|||
|
// ChillerClient* pDlc = (ChillerClient*)pobject;
|
|||
|
// unsigned char* rseq = pcommand->m_RespSeq;
|
|||
|
// unsigned char addr = rseq[0];
|
|||
|
//
|
|||
|
// //unsigned char* rseq = pcommand->m_RespSeq;
|
|||
|
// short tempValue = (((rseq[3] & 0xff) << 8) + (rseq[4] & 0xff));
|
|||
|
// EnterCriticalSection(&pDlc->m_ValueCS);
|
|||
|
// pDlc->m_DoluyoChillerStat.m_tempSettingValue->SetValue((float)tempValue / 10.0f);
|
|||
|
// LeaveCriticalSection(&pDlc->m_ValueCS);
|
|||
|
//}
|
|||
|
|
|||
|
//void ChillerClient::ProcDoluyoSettingValue(void* pobject, Command* pcommand)
|
|||
|
//{
|
|||
|
// ChillerClient* pDlc = (ChillerClient*)pobject;
|
|||
|
// WriteModbus* setCommand =(WriteModbus*) pcommand;
|
|||
|
// WriteModbus* pSave = new WriteModbus(setCommand->m_addr, 0x19);
|
|||
|
// pSave->AddShort(0x0500);
|
|||
|
// pSave->m_Ref = pDlc;
|
|||
|
// EnterCriticalSection(&pDlc->m_RtcCS);
|
|||
|
// pDlc->m_RTCommands.push(pSave);
|
|||
|
// LeaveCriticalSection(&pDlc->m_RtcCS);
|
|||
|
//}
|
|||
|
|
|||
|
|
|||
|
void ChillerClient::GetDoluyoStat(DoluyoChillerstat& stat1)
|
|||
|
{
|
|||
|
EnterCriticalSection(&m_ValueCS);
|
|||
|
stat1.baseStat = m_BaseStat;
|
|||
|
stat1.alarmInfo = m_DoluyoChillerStat.m_alarmInfo->GetValue();
|
|||
|
stat1.isRun = m_DoluyoChillerStat.m_isRun->GetValue();
|
|||
|
stat1.runInfo = m_DoluyoChillerStat.m_runInfo->GetValue();
|
|||
|
stat1.tempRealtimeValue = m_DoluyoChillerStat.m_tempRealtimeValue->GetValue();
|
|||
|
stat1.tempSettingValue = m_DoluyoChillerStat.m_tempSettingValue->GetValue();
|
|||
|
stat1.isLevelAlarm = m_DoluyoChillerStat.m_isLevelAlarm->GetValue();
|
|||
|
LeaveCriticalSection(&m_ValueCS);
|
|||
|
}
|
|||
|
|
|||
|
void ChillerClient::GetHansStat(HansChillerstat& stat)
|
|||
|
{
|
|||
|
EnterCriticalSection(&m_ValueCS);
|
|||
|
/*stat.baseStat = m_BaseStat;
|
|||
|
stat.alarmInfo = m_Stat.alarmInfo;
|
|||
|
stat.isRun = m_Stat.isRun;
|
|||
|
stat.runInfo = m_Stat.runInfo;
|
|||
|
stat.tempRealtimeValue = m_Stat.tempRealtimeValue;
|
|||
|
stat.tempSettingValue = m_Stat.tempSettingValue;
|
|||
|
stat.isLevelAlarm = m_Stat.isLevelAlarm;*/
|
|||
|
stat.baseStat = m_BaseStat;
|
|||
|
stat.m_WaterOutTemp = m_HansChillerstat.m_WaterOutTemp->GetValue();
|
|||
|
stat.m_Flow = m_HansChillerstat.m_Flow->GetValue();
|
|||
|
stat.m_SettingTemp = m_HansChillerstat.m_SettingTemp->GetValue();
|
|||
|
stat.m_RunIndicate = m_HansChillerstat.m_RunIndicate->GetValue();
|
|||
|
stat.m_WorkIndicate = m_HansChillerstat.m_WorkIndicate->GetValue();
|
|||
|
stat.m_CompressorIndicate = m_HansChillerstat.m_CompressorIndicate->GetValue();
|
|||
|
stat.m_WaterPumpIndicate = m_HansChillerstat.m_WaterPumpIndicate->GetValue();
|
|||
|
stat.m_HeaterIndicate = m_HansChillerstat.m_HeaterIndicate->GetValue();
|
|||
|
stat.m_FanIndicate = m_HansChillerstat.m_FanIndicate->GetValue();
|
|||
|
stat.m_SolenoidValveIndicate = m_HansChillerstat.m_SolenoidValveIndicate->GetValue();
|
|||
|
stat.m_LowTempErrorIndicate = m_HansChillerstat.m_LowTempErrorIndicate->GetValue();
|
|||
|
stat.m_TempUndulateIndicate = m_HansChillerstat.m_TempUndulateIndicate->GetValue();
|
|||
|
stat.m_HeaterExceptionIndicate = m_HansChillerstat.m_HeaterExceptionIndicate->GetValue();
|
|||
|
stat.m_IOSignalIndicate = m_HansChillerstat.m_IOSignalIndicate->GetValue();
|
|||
|
stat.m_IsAlarm = m_HansChillerstat.m_IsAlarm->GetValue();
|
|||
|
stat.m_FlowAlarm = m_HansChillerstat.m_FlowAlarm->GetValue();
|
|||
|
stat.m_TempAlarm = m_HansChillerstat.m_TempAlarm->GetValue();
|
|||
|
stat.m_PressureAlarm = m_HansChillerstat.m_PressureAlarm->GetValue();
|
|||
|
stat.m_WaterLevelAlarm = m_HansChillerstat.m_WaterLevelAlarm->GetValue();
|
|||
|
stat.m_TempSensorAlarm = m_HansChillerstat.m_TempSensorAlarm->GetValue();
|
|||
|
stat.m_SolenoidValveAlarm = m_HansChillerstat.m_SolenoidValveAlarm->GetValue();
|
|||
|
stat.m_PhaseSeqAlarm = m_HansChillerstat.m_PhaseSeqAlarm->GetValue();
|
|||
|
stat.m_CompressorStartFreqAlarm = m_HansChillerstat.m_CompressorStartFreqAlarm->GetValue();
|
|||
|
stat.m_IO0Alarm = m_HansChillerstat.m_IO0Alarm->GetValue();
|
|||
|
stat.m_IO1Alarm = m_HansChillerstat.m_IO1Alarm->GetValue();
|
|||
|
stat.m_IO2Alarm = m_HansChillerstat.m_IO2Alarm->GetValue();
|
|||
|
stat.m_IO3Alarm = m_HansChillerstat.m_IO3Alarm->GetValue();
|
|||
|
stat.m_IO4Alarm = m_HansChillerstat.m_IO4Alarm->GetValue();
|
|||
|
LeaveCriticalSection(&m_ValueCS);
|
|||
|
}
|
|||
|
|
|||
|
void ChillerClient::GetTongFeiStat(TongFeiStat& stat)
|
|||
|
{
|
|||
|
EnterCriticalSection(&m_ValueCS);
|
|||
|
stat.m_BaseStat = m_BaseStat;
|
|||
|
stat.m_IsLowVoltageAlarm = m_TongFeiStat.m_IsLowVoltageAlarm->GetValue();
|
|||
|
stat.m_IsHydraulicFailure = m_TongFeiStat.m_IsHydraulicFailure->GetValue();
|
|||
|
stat.m_IsLevelFailure = m_TongFeiStat.m_IsLevelFailure->GetValue();
|
|||
|
stat.m_IsLiquidPumpAlarm = m_TongFeiStat.m_IsLiquidPumpAlarm->GetValue();
|
|||
|
stat.m_IsPressAlarm = m_TongFeiStat.m_IsPressAlarm->GetValue();
|
|||
|
stat.m_IsElectricHeatingFailure = m_TongFeiStat.m_IsElectricHeatingFailure->GetValue();
|
|||
|
stat.m_IsAntifreezeAlarm = m_TongFeiStat.m_IsAntifreezeAlarm->GetValue();
|
|||
|
stat.m_IsLiquidTempTooHigh = m_TongFeiStat.m_IsLiquidTempTooHigh->GetValue();
|
|||
|
stat.m_IsLiquidTempProbeFailure = m_TongFeiStat.m_IsLiquidTempProbeFailure->GetValue();
|
|||
|
stat.m_IsEffluentTempProbeFailure = m_TongFeiStat.m_IsEffluentTempProbeFailure->GetValue();
|
|||
|
stat.m_IsAmbientTempProbeFailure = m_TongFeiStat.m_IsAmbientTempProbeFailure->GetValue();
|
|||
|
stat.m_IsCondensationTempProbeFailure = m_TongFeiStat.m_IsCondensationTempProbeFailure->GetValue();
|
|||
|
stat.m_IsEvaporationInletTempProbeFailure = m_TongFeiStat.m_IsEvaporationInletTempProbeFailure->GetValue();
|
|||
|
stat.m_IsEvaporationOutletTempProbeFailure = m_TongFeiStat.m_IsEvaporationOutletTempProbeFailure->GetValue();
|
|||
|
stat.m_IsCondensationTempTooHigh = m_TongFeiStat.m_IsCondensationTempTooHigh->GetValue();
|
|||
|
stat.m_IsPhaseOrderError = m_TongFeiStat.m_IsPhaseOrderError->GetValue();
|
|||
|
stat.m_IsPowerFailure = m_TongFeiStat.m_IsPowerFailure->GetValue();
|
|||
|
stat.m_IsCompressorFailure = m_TongFeiStat.m_IsCompressorFailure->GetValue();
|
|||
|
stat.m_IsAmbientTempTooHigh = m_TongFeiStat.m_IsAmbientTempTooHigh->GetValue();
|
|||
|
stat.m_IsAmbientTempException = m_TongFeiStat.m_IsAmbientTempException->GetValue();
|
|||
|
|
|||
|
stat.m_AlarmState = m_TongFeiStat.m_AlarmState->GetValue();
|
|||
|
stat.m_RoomTempSettingValue = m_TongFeiStat.m_RoomTempSettingValue->GetValue();
|
|||
|
stat.m_ConstantTempSettingValue = m_TongFeiStat.m_ConstantTempSettingValue->GetValue();
|
|||
|
stat.m_WorkMode = m_TongFeiStat.m_WorkMode->GetValue();
|
|||
|
stat.m_RefrigerationMethod = m_TongFeiStat.m_RefrigerationMethod->GetValue();
|
|||
|
stat.m_LiquidAlarmTemp = m_TongFeiStat.m_LiquidAlarmTemp->GetValue();
|
|||
|
stat.m_UnitStatus = m_TongFeiStat.m_UnitStatus->GetValue();
|
|||
|
|
|||
|
stat.m_LiquidTempProbe = m_TongFeiStat.m_LiquidTempProbe->GetValue();
|
|||
|
stat.m_EffluentTempProbe = m_TongFeiStat.m_EffluentTempProbe->GetValue();
|
|||
|
stat.m_AmbientTempProbe = m_TongFeiStat.m_AmbientTempProbe->GetValue();
|
|||
|
stat.m_CondensationTempProbe = m_TongFeiStat.m_CondensationTempProbe->GetValue();
|
|||
|
stat.m_EvaporationInletTempProbe = m_TongFeiStat.m_EvaporationInletTempProbe->GetValue();
|
|||
|
stat.m_EvaporationOutletTempProbe = m_TongFeiStat.m_EvaporationOutletTempProbe->GetValue();
|
|||
|
|
|||
|
stat.m_WorkingFrequency = m_TongFeiStat.m_WorkingFrequency->GetValue();
|
|||
|
stat.m_OverHeatingValue = m_TongFeiStat.m_OverHeatingValue->GetValue();
|
|||
|
stat.m_EEV1 = m_TongFeiStat.m_EEV1->GetValue();
|
|||
|
stat.m_EEV2 = m_TongFeiStat.m_EEV2->GetValue();
|
|||
|
stat.m_CondensingFanRatio = m_TongFeiStat.m_CondensingFanRatio->GetValue();
|
|||
|
stat.m_ElectricHeatingRatio = m_TongFeiStat.m_ElectricHeatingRatio->GetValue();
|
|||
|
stat.m_FlowRate = m_TongFeiStat.m_FlowRate->GetValue();
|
|||
|
LeaveCriticalSection(&m_ValueCS);
|
|||
|
}
|
|||
|
|
|||
|
//void ChillerClient::ProcHansInfo(void* pobject, Command* pcommand)
|
|||
|
//{
|
|||
|
// if (pobject == NULL)return;
|
|||
|
// ChillerClient* pDlc = (ChillerClient*)pobject;
|
|||
|
// unsigned char* rseq = pcommand->m_RespSeq;
|
|||
|
//
|
|||
|
// short state1 = (((rseq[3] & 0xff) << 8) + (rseq[4] & 0xff));
|
|||
|
// short state2 = (((rseq[5] & 0xff) << 8) + (rseq[6] & 0xff));
|
|||
|
//
|
|||
|
// float waterOutTemp = (float)(((rseq[9] & 0xff) << 8) + (rseq[10] & 0xff)) / 10.0f;
|
|||
|
// float flow = (float)(((rseq[23] & 0xff) << 8) + (rseq[24] & 0xff)) / 10.0f;
|
|||
|
// float settingTemp = (float)(((rseq[33] & 0xff) << 8) + (rseq[34] & 0xff)) / 10.0f;
|
|||
|
//
|
|||
|
// EnterCriticalSection(&pDlc->m_ValueCS);
|
|||
|
// pDlc->m_HansChillerstat.m_WaterOutTemp->SetValue(waterOutTemp);
|
|||
|
// pDlc->m_HansChillerstat.m_Flow->SetValue(flow);
|
|||
|
// pDlc->m_HansChillerstat.m_SettingTemp->SetValue(settingTemp);
|
|||
|
// pDlc->m_HansChillerstat.m_RunIndicate->SetValue((state1 & 0x01) ? true : false); //运行指示
|
|||
|
// pDlc->m_HansChillerstat.m_WorkIndicate->SetValue((state1 & 0x02) ? true : false); //工作正常指示
|
|||
|
// pDlc->m_HansChillerstat.m_IsAlarm->SetValue((state1 & 0x04) ? true : false); //报警
|
|||
|
// pDlc->m_HansChillerstat.m_CompressorIndicate->SetValue((state1 & 0x08) ? true : false); //压缩机指示
|
|||
|
// pDlc->m_HansChillerstat.m_WaterPumpIndicate->SetValue((state1 & 0x10) ? true : false); //水泵指示
|
|||
|
// pDlc->m_HansChillerstat.m_HeaterIndicate->SetValue((state1 & 0x20) ? true : false); //加热器指示
|
|||
|
// pDlc->m_HansChillerstat.m_FanIndicate->SetValue((state1 & 0x40) ? true : false); //风机指示
|
|||
|
// pDlc->m_HansChillerstat.m_SolenoidValveIndicate->SetValue((state1 & 0x80) ? true : false); //电磁阀指示
|
|||
|
// pDlc->m_HansChillerstat.m_FlowAlarm->SetValue((state1 & 0x100) ? true : false); //流量报警
|
|||
|
// pDlc->m_HansChillerstat.m_TempAlarm->SetValue((state1 & 0x200) ? true : false); //温度报警
|
|||
|
// pDlc->m_HansChillerstat.m_PressureAlarm->SetValue((state1 & 0x400) ? true : false); //压力报警
|
|||
|
// pDlc->m_HansChillerstat.m_WaterLevelAlarm->SetValue((state1 & 0x800) ? true : false); //液位报警
|
|||
|
// pDlc->m_HansChillerstat.m_LowTempErrorIndicate->SetValue((state1 & 0x1000) ? true : false); //低温错误指示
|
|||
|
// pDlc->m_HansChillerstat.m_TempUndulateIndicate->SetValue((state1 & 0x2000) ? true : false); //温度波动指示
|
|||
|
//
|
|||
|
// pDlc->m_HansChillerstat.m_TempSensorAlarm->SetValue((state2 & 0x01) ? true : false); //温度传感器故障报警
|
|||
|
// pDlc->m_HansChillerstat.m_SolenoidValveAlarm->SetValue((state2 & 0x02) ? true : false); //电磁阀故障报警
|
|||
|
// pDlc->m_HansChillerstat.m_HeaterExceptionIndicate->SetValue((state2 & 0x04) ? true : false); //加热器异常指示
|
|||
|
// pDlc->m_HansChillerstat.m_IOSignalIndicate->SetValue((state2 & 0x08) ? true : false); //IO信号指示
|
|||
|
// pDlc->m_HansChillerstat.m_PhaseSeqAlarm->SetValue((state2 & 0x10) ? true : false); //相序报警
|
|||
|
// pDlc->m_HansChillerstat.m_CompressorStartFreqAlarm->SetValue((state2 & 0x20) ? true : false); //压缩机起动频繁报警
|
|||
|
// pDlc->m_HansChillerstat.m_IO0Alarm->SetValue((state2 & 0x100) ? true : false); //IO0错误报警
|
|||
|
// pDlc->m_HansChillerstat.m_IO1Alarm->SetValue((state2 & 0x200) ? true : false); //IO0错误报警
|
|||
|
// pDlc->m_HansChillerstat.m_IO2Alarm->SetValue((state2 & 0x400) ? true : false); //IO0错误报警
|
|||
|
// pDlc->m_HansChillerstat.m_IO3Alarm->SetValue((state2 & 0x800) ? true : false); //IO0错误报警
|
|||
|
// pDlc->m_HansChillerstat.m_IO4Alarm->SetValue((state2 & 0x1000) ? true : false); //IO0错误报警
|
|||
|
// LeaveCriticalSection(&pDlc->m_ValueCS);
|
|||
|
//
|
|||
|
// //g_SystemInfo->LockInfo();
|
|||
|
// //g_SystemInfo->m_WaterTemp = waterOutTemp;
|
|||
|
// //g_SystemInfo->UnlockInfo();
|
|||
|
//}
|
|||
|
|
|||
|
//void ChillerClient::SetHansTargetTempValue(float value)
|
|||
|
//{
|
|||
|
// short realvalue = (short)(value * 10);
|
|||
|
// WriteModbus* pSet = new WriteModbus(m_Config->m_Addr, 271);
|
|||
|
// pSet->AddShort(realvalue);
|
|||
|
// pSet->m_Ref = this;
|
|||
|
// EnterCriticalSection(&m_RtcCS);
|
|||
|
// m_RTCommands.push(pSet);
|
|||
|
// LeaveCriticalSection(&m_RtcCS);
|
|||
|
//}
|
|||
|
|
|||
|
void ChillerClient::DrawUI()
|
|||
|
{
|
|||
|
if (!m_IsShowUI) return;
|
|||
|
if(1/*m_Config->m_ClientCode=="LASER_CHILLER"*/)ImGui::Begin(_(u8"激光器冷水机").c_str(), &m_IsShowUI, ImGuiWindowFlags_NoDocking | ImGuiWindowFlags_NoNav);
|
|||
|
else if(0/*m_Config->m_ClientCode == "PURIFIER_CHILLER"*/)ImGui::Begin(_(u8"净化器冷水机").c_str(), &m_IsShowUI, ImGuiWindowFlags_NoDocking | ImGuiWindowFlags_NoNav);
|
|||
|
else ImGui::Begin(_(u8"冷水机").c_str(), &m_IsShowUI, ImGuiWindowFlags_NoDocking | ImGuiWindowFlags_NoNav);
|
|||
|
if ((*m_Type) == ExtCfg::DOLUYO)
|
|||
|
{
|
|||
|
DoluyoChillerstat stat;
|
|||
|
GetDoluyoStat(stat);
|
|||
|
if (stat.baseStat.isConnected)ImGui::TextColored(ImVec4(0.0, 1.0, 0.0, 1.0), _(u8"冷水机通讯连接:正常").c_str());
|
|||
|
else ImGui::TextColored(ImVec4(1.0, 0.0, 0.0, 1.0), _(u8"冷水机通讯连接:断开").c_str());
|
|||
|
ImGui::Text(_(u8"冷水机水温:%.1f ℃").c_str(), stat.tempRealtimeValue);
|
|||
|
ImGui::Text(_(u8"冷水机设定水温:%.1f ℃").c_str(), stat.tempSettingValue);
|
|||
|
ImGui::Text(_(u8"冷水机运行状态:%s").c_str(), stat.GetRunInfo().c_str());
|
|||
|
ImGui::Text(_(u8"冷水机故障信息:%s").c_str(), stat.GetAlarmInfo().c_str());
|
|||
|
if (!stat.isLevelAlarm) ImGui::TextColored(ImVec4(0.0, 1.0, 0.0, 1.0), _(u8"冷水机液位:正常").c_str());
|
|||
|
else ImGui::TextColored(ImVec4(1.0, 0.0, 0.0, 1.0), _(u8"冷水机液位:报警").c_str());
|
|||
|
}
|
|||
|
else if ((*m_Type) == ExtCfg::HANS) {
|
|||
|
|
|||
|
HansChillerstat cs;
|
|||
|
GetHansStat(cs);
|
|||
|
|
|||
|
ImGui::BeginGroup();
|
|||
|
if (IsServerConnected()) {
|
|||
|
ImGui::TextColored(ImVec4(0.0, 1.0, 0.0, 1.0), _(u8"端口连接:正常").c_str());
|
|||
|
}
|
|||
|
else {
|
|||
|
ImGui::TextColored(ImVec4(1.0, 0.0, 0.0, 1.0), _(u8"端口连接:断开").c_str());
|
|||
|
}
|
|||
|
if (IsComConnected()) {
|
|||
|
ImGui::TextColored(ImVec4(0.0, 1.0, 0.0, 1.0), _(u8"通讯连接:正常").c_str());
|
|||
|
}
|
|||
|
else {
|
|||
|
ImGui::TextColored(ImVec4(1.0, 0.0, 0.0, 1.0), _(u8"通讯连接:断开").c_str());
|
|||
|
}
|
|||
|
|
|||
|
ImGui::Dummy(ImVec2(0, 10));
|
|||
|
ImGui::Text(_(u8"冷水机水温:%.1f ℃").c_str(), cs.m_WaterOutTemp);
|
|||
|
ImGui::Text(_(u8"流量:%.1f L/min").c_str(), cs.m_Flow);
|
|||
|
ImGui::Text(_(u8"设置温度:%.1f ℃").c_str(), cs.m_SettingTemp);
|
|||
|
|
|||
|
ImGui::EndGroup();
|
|||
|
|
|||
|
ImGui::SameLine();
|
|||
|
ImGui::SeparatorEx(ImGuiSeparatorFlags_Vertical);
|
|||
|
ImGui::SameLine();
|
|||
|
|
|||
|
ImGui::BeginGroup();
|
|||
|
ImGui::Text(_(u8"运行指示:%s").c_str(), cs.m_RunIndicate ? _(u8"是").c_str() : _(u8"否").c_str());
|
|||
|
ImGui::Text(_(u8"工作正常指示:%s").c_str(), cs.m_WorkIndicate ? _(u8"是").c_str() : _(u8"否").c_str());
|
|||
|
ImGui::Text(_(u8"压缩机指示:%s").c_str(), cs.m_CompressorIndicate ? _(u8"是").c_str() : _(u8"否").c_str());
|
|||
|
ImGui::Text(_(u8"水泵指示:%s").c_str(), cs.m_WaterPumpIndicate ? _(u8"是").c_str() : _(u8"否").c_str());
|
|||
|
ImGui::Text(_(u8"加热器指示:%s").c_str(), cs.m_HeaterIndicate ? _(u8"是").c_str() : _(u8"否").c_str());
|
|||
|
ImGui::Text(_(u8"风机指示:%s").c_str(), cs.m_FanIndicate ? _(u8"是").c_str() : _(u8"否").c_str());
|
|||
|
ImGui::Text(_(u8"电磁阀指示:%s").c_str(), cs.m_SolenoidValveIndicate ? _(u8"是").c_str() : _(u8"否").c_str());
|
|||
|
ImGui::Text(_(u8"低温错误指示:%s").c_str(), cs.m_LowTempErrorIndicate ? _(u8"是").c_str() : _(u8"否").c_str());
|
|||
|
ImGui::Text(_(u8"温度波动指示:%s").c_str(), cs.m_TempUndulateIndicate ? _(u8"是").c_str() : _(u8"否").c_str());
|
|||
|
ImGui::Text(_(u8"加热器异常指示:%s").c_str(), cs.m_HeaterExceptionIndicate ? _(u8"是").c_str() : _(u8"否").c_str());
|
|||
|
ImGui::Text(_(u8"IO信号指示:%s").c_str(), cs.m_IOSignalIndicate ? _(u8"是").c_str() : _(u8"否").c_str());
|
|||
|
ImGui::EndGroup();
|
|||
|
|
|||
|
ImGui::SameLine();
|
|||
|
ImGui::SeparatorEx(ImGuiSeparatorFlags_Vertical);
|
|||
|
ImGui::SameLine();
|
|||
|
|
|||
|
ImGui::BeginGroup();
|
|||
|
|
|||
|
if (cs.m_IsAlarm)ImGui::TextColored(Toast::COLOR_RED, _(u8"报警:%s").c_str(), _(u8"是").c_str());
|
|||
|
else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"报警:%s").c_str(), _(u8"否").c_str());
|
|||
|
|
|||
|
if (cs.m_FlowAlarm)ImGui::TextColored(Toast::COLOR_RED, _(u8"流量报警:%s").c_str(), _(u8"是").c_str());
|
|||
|
else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"流量报警:%s").c_str(), _(u8"否").c_str());
|
|||
|
|
|||
|
if (cs.m_TempAlarm)ImGui::TextColored(Toast::COLOR_RED, _(u8"温度报警:%s").c_str(), _(u8"是").c_str());
|
|||
|
else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"温度报警:%s").c_str(), _(u8"否").c_str());
|
|||
|
|
|||
|
if (cs.m_PressureAlarm)ImGui::TextColored(Toast::COLOR_RED, _(u8"压力报警:%s").c_str(), _(u8"是").c_str());
|
|||
|
else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"压力报警:%s").c_str(), _(u8"否").c_str());
|
|||
|
|
|||
|
if (cs.m_WaterLevelAlarm)ImGui::TextColored(Toast::COLOR_RED, _(u8"液位报警:%s").c_str(), _(u8"是").c_str());
|
|||
|
else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"液位报警:%s").c_str(), _(u8"否").c_str());
|
|||
|
|
|||
|
if (cs.m_TempSensorAlarm)ImGui::TextColored(Toast::COLOR_RED, _(u8"温度传感器故障报警:%s").c_str(), _(u8"是").c_str());
|
|||
|
else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"温度传感器故障报警:%s").c_str(), _(u8"否").c_str());
|
|||
|
|
|||
|
if (cs.m_SolenoidValveAlarm)ImGui::TextColored(Toast::COLOR_RED, _(u8"电磁阀故障报警:%s").c_str(), _(u8"是").c_str());
|
|||
|
else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"电磁阀故障报警:%s").c_str(), _(u8"否").c_str());
|
|||
|
|
|||
|
if (cs.m_PhaseSeqAlarm)ImGui::TextColored(Toast::COLOR_RED, _(u8"相序报警:%s").c_str(), _(u8"是").c_str());
|
|||
|
else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"相序报警:%s").c_str(), _(u8"否").c_str());
|
|||
|
|
|||
|
if (cs.m_CompressorStartFreqAlarm)ImGui::TextColored(Toast::COLOR_RED, _(u8"压缩机起动频繁报警:%s").c_str(), _(u8"是").c_str());
|
|||
|
else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"压缩机起动频繁报警:%s").c_str(), _(u8"否").c_str());
|
|||
|
|
|||
|
if (cs.m_IO0Alarm)ImGui::TextColored(Toast::COLOR_RED, _(u8"IO0错误报警:%s").c_str(), _(u8"是").c_str());
|
|||
|
else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"IO0错误报警:%s").c_str(), _(u8"否").c_str());
|
|||
|
|
|||
|
if (cs.m_IO1Alarm)ImGui::TextColored(Toast::COLOR_RED, _(u8"IO1错误报警:%s").c_str(), _(u8"是").c_str());
|
|||
|
else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"IO1错误报警:%s").c_str(), _(u8"否").c_str());
|
|||
|
|
|||
|
if (cs.m_IO2Alarm)ImGui::TextColored(Toast::COLOR_RED, _(u8"IO2错误报警:%s").c_str(), _(u8"是").c_str());
|
|||
|
else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"IO2错误报警:%s").c_str(), _(u8"否").c_str());
|
|||
|
|
|||
|
if (cs.m_IO3Alarm)ImGui::TextColored(Toast::COLOR_RED, _(u8"IO3错误报警:%s").c_str(), _(u8"是").c_str());
|
|||
|
else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"IO3错误报警:%s").c_str(), _(u8"否").c_str());
|
|||
|
|
|||
|
if (cs.m_IO4Alarm)ImGui::TextColored(Toast::COLOR_RED, _(u8"IO4错误报警:%s").c_str(), _(u8"是").c_str());
|
|||
|
else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"IO4错误报警:%s").c_str(), _(u8"否").c_str());
|
|||
|
ImGui::EndGroup();
|
|||
|
}
|
|||
|
else if ((*m_Type) == ExtCfg::TONGFEI) {
|
|||
|
TongFeiStat tfs;
|
|||
|
GetTongFeiStat(tfs);
|
|||
|
|
|||
|
ImGui::BeginGroup();
|
|||
|
if (IsServerConnected()) {
|
|||
|
ImGui::TextColored(ImVec4(0.0, 1.0, 0.0, 1.0), _(u8"端口连接:正常").c_str());
|
|||
|
}
|
|||
|
else {
|
|||
|
ImGui::TextColored(ImVec4(1.0, 0.0, 0.0, 1.0), _(u8"端口连接:断开").c_str());
|
|||
|
}
|
|||
|
if (IsComConnected()) {
|
|||
|
ImGui::TextColored(ImVec4(0.0, 1.0, 0.0, 1.0), _(u8"通讯连接:正常").c_str());
|
|||
|
}
|
|||
|
else {
|
|||
|
ImGui::TextColored(ImVec4(1.0, 0.0, 0.0, 1.0), _(u8"通讯连接:断开").c_str());
|
|||
|
}
|
|||
|
|
|||
|
ImGui::Dummy(ImVec2(0, 10));
|
|||
|
ImGui::Text(_(u8"室温同调预设温度:%.1f ℃").c_str(), tfs.m_RoomTempSettingValue);
|
|||
|
ImGui::Text(_(u8"恒温预设温度:%.1f ℃").c_str(), tfs.m_ConstantTempSettingValue);
|
|||
|
string workModeStr = _(u8"未知").c_str();
|
|||
|
if (tfs.m_WorkMode==0) {
|
|||
|
workModeStr = _(u8"手动").c_str();
|
|||
|
}
|
|||
|
else if (tfs.m_WorkMode == 1) {
|
|||
|
workModeStr = _(u8"自动").c_str();
|
|||
|
}
|
|||
|
else if (tfs.m_WorkMode == 2) {
|
|||
|
workModeStr = _(u8"机外").c_str();
|
|||
|
}
|
|||
|
|
|||
|
ImGui::Text(_(u8"工作模式:%s").c_str(), workModeStr.c_str());
|
|||
|
string refrigerationMethod = _(u8"未知").c_str();
|
|||
|
if (tfs.m_RefrigerationMethod == 0) {
|
|||
|
refrigerationMethod = _(u8"室温同调").c_str();
|
|||
|
}
|
|||
|
else if (tfs.m_RefrigerationMethod == 1) {
|
|||
|
refrigerationMethod = _(u8"恒温控制").c_str();
|
|||
|
}
|
|||
|
ImGui::Text(_(u8"制冷方式:%s").c_str(), refrigerationMethod.c_str());
|
|||
|
ImGui::Text(_(u8"出液报警温度:%.1f ℃").c_str(), tfs.m_LiquidAlarmTemp);
|
|||
|
|
|||
|
string unitStatus = _(u8"未知").c_str();
|
|||
|
if (tfs.m_UnitStatus == 0) {
|
|||
|
unitStatus = _(u8"停止").c_str();
|
|||
|
}
|
|||
|
else if (tfs.m_UnitStatus == 1) {
|
|||
|
unitStatus = _(u8"运行").c_str();
|
|||
|
}
|
|||
|
else if (tfs.m_UnitStatus == 2) {
|
|||
|
unitStatus = _(u8"停机中").c_str();
|
|||
|
}
|
|||
|
else if (tfs.m_UnitStatus == 3) {
|
|||
|
unitStatus = _(u8"防冻中").c_str();
|
|||
|
}
|
|||
|
else if (tfs.m_UnitStatus == 4) {
|
|||
|
unitStatus = _(u8"无流量").c_str();
|
|||
|
}
|
|||
|
ImGui::Text(_(u8"机组状态:%s").c_str(), unitStatus.c_str());
|
|||
|
|
|||
|
ImGui::Text(_(u8"液温温度探头:%.2f ℃").c_str(), tfs.m_LiquidTempProbe);
|
|||
|
ImGui::Text(_(u8"出液温度探头:%.1f ℃").c_str(), tfs.m_EffluentTempProbe);
|
|||
|
ImGui::Text(_(u8"环境温度探头:%.1f ℃").c_str(), tfs.m_AmbientTempProbe);
|
|||
|
ImGui::Text(_(u8"冷凝温度探头:%.1f ℃").c_str(), tfs.m_CondensationTempProbe);
|
|||
|
ImGui::Text(_(u8"蒸发进口温度探头:%.1f ℃").c_str(), tfs.m_EvaporationInletTempProbe);
|
|||
|
ImGui::Text(_(u8"蒸发出口温度探头:%.1f ℃").c_str(), tfs.m_EvaporationOutletTempProbe);
|
|||
|
|
|||
|
ImGui::Text(_(u8"运行频率:%.1f Hz").c_str(), tfs.m_WorkingFrequency);
|
|||
|
ImGui::Text(_(u8"过热度:%.1f ℃").c_str(), tfs.m_OverHeatingValue);
|
|||
|
ImGui::Text(_(u8"戴流EEV:%.1f").c_str(), tfs.m_EEV1);
|
|||
|
ImGui::Text(_(u8"旁通EEV:%.1f").c_str(), tfs.m_EEV2);
|
|||
|
ImGui::Text(_(u8"冷凝风机比例:%.1f").c_str(), tfs.m_CondensingFanRatio);
|
|||
|
ImGui::Text(_(u8"电加热比例:%.1f").c_str(), tfs.m_ElectricHeatingRatio);
|
|||
|
ImGui::Text(_(u8"流量:%.1f").c_str(), tfs.m_FlowRate);
|
|||
|
|
|||
|
ImGui::EndGroup();
|
|||
|
|
|||
|
ImGui::SameLine();
|
|||
|
ImGui::SeparatorEx(ImGuiSeparatorFlags_Vertical);
|
|||
|
ImGui::SameLine();
|
|||
|
|
|||
|
ImGui::BeginGroup();
|
|||
|
string alarmStateStr = _(u8"未知").c_str();
|
|||
|
if (tfs.m_AlarmState == 0) {
|
|||
|
alarmStateStr = _(u8"正常").c_str();
|
|||
|
}
|
|||
|
else if (tfs.m_AlarmState == 1) {
|
|||
|
alarmStateStr = _(u8"故障").c_str();
|
|||
|
}
|
|||
|
else if (tfs.m_AlarmState == 2) {
|
|||
|
alarmStateStr = _(u8"信号等待").c_str();
|
|||
|
}
|
|||
|
ImGui::Text(_(u8"故障状态:%s").c_str(), alarmStateStr.c_str());
|
|||
|
|
|||
|
if (tfs.m_IsLowVoltageAlarm)ImGui::TextColored(Toast::COLOR_RED, _(u8"低压报警:是").c_str());
|
|||
|
else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"低压报警:否").c_str());
|
|||
|
|
|||
|
if (tfs.m_IsHydraulicFailure)ImGui::TextColored(Toast::COLOR_RED, _(u8"液路故障:是").c_str());
|
|||
|
else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"液路故障:否").c_str());
|
|||
|
|
|||
|
if (tfs.m_IsLevelFailure)ImGui::TextColored(Toast::COLOR_RED, _(u8"液位故障:是").c_str());
|
|||
|
else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"液位故障:否").c_str());
|
|||
|
|
|||
|
if (tfs.m_IsLiquidPumpAlarm)ImGui::TextColored(Toast::COLOR_RED, _(u8"液泵热继电器报警:是").c_str());
|
|||
|
else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"液泵热继电器报警:否").c_str());
|
|||
|
|
|||
|
if (tfs.m_IsPressAlarm)ImGui::TextColored(Toast::COLOR_RED, _(u8"压机热继电器报警:是").c_str());
|
|||
|
else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"压机热继电器报警:否").c_str());
|
|||
|
|
|||
|
if (tfs.m_IsElectricHeatingFailure)ImGui::TextColored(Toast::COLOR_RED, _(u8"电加热故障:是").c_str());
|
|||
|
else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"电加热故障:否").c_str());
|
|||
|
|
|||
|
if (tfs.m_IsAntifreezeAlarm)ImGui::TextColored(Toast::COLOR_RED, _(u8"防冻报警:是").c_str());
|
|||
|
else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"防冻报警:否").c_str());
|
|||
|
|
|||
|
if (tfs.m_IsLiquidTempTooHigh)ImGui::TextColored(Toast::COLOR_RED, _(u8"液温太高:是").c_str());
|
|||
|
else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"液温太高:否").c_str());
|
|||
|
|
|||
|
if (tfs.m_IsLiquidTempProbeFailure)ImGui::TextColored(Toast::COLOR_RED, _(u8"液温温度探头故障:是").c_str());
|
|||
|
else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"液温温度探头故障:否").c_str());
|
|||
|
|
|||
|
if (tfs.m_IsEffluentTempProbeFailure)ImGui::TextColored(Toast::COLOR_RED, _(u8"出液温度探头故障:是").c_str());
|
|||
|
else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"出液温度探头故障:否").c_str());
|
|||
|
|
|||
|
if (tfs.m_IsAmbientTempProbeFailure)ImGui::TextColored(Toast::COLOR_RED, _(u8"环境温度探头故障:是").c_str());
|
|||
|
else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"环境温度探头故障:否").c_str());
|
|||
|
|
|||
|
if (tfs.m_IsCondensationTempProbeFailure)ImGui::TextColored(Toast::COLOR_RED, _(u8"冷凝温度探头故障:是").c_str());
|
|||
|
else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"冷凝温度探头故障:否").c_str());
|
|||
|
|
|||
|
if (tfs.m_IsEvaporationInletTempProbeFailure)ImGui::TextColored(Toast::COLOR_RED, _(u8"蒸发进口温度探头故障:是").c_str());
|
|||
|
else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"蒸发进口温度探头故障:否").c_str());
|
|||
|
|
|||
|
if (tfs.m_IsEvaporationOutletTempProbeFailure)ImGui::TextColored(Toast::COLOR_RED, _(u8"蒸发出口温度探头故障:是").c_str());
|
|||
|
else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"蒸发出口温度探头故障:否").c_str());
|
|||
|
|
|||
|
if (tfs.m_IsCondensationTempTooHigh)ImGui::TextColored(Toast::COLOR_RED, _(u8"冷凝温度过高:是").c_str());
|
|||
|
else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"冷凝温度过高:否").c_str());
|
|||
|
|
|||
|
if (tfs.m_IsPhaseOrderError)ImGui::TextColored(Toast::COLOR_RED, _(u8"相序错误:是").c_str());
|
|||
|
else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"相序错误:否").c_str());
|
|||
|
|
|||
|
if (tfs.m_IsPowerFailure)ImGui::TextColored(Toast::COLOR_RED, _(u8"电源故障:是").c_str());
|
|||
|
else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"电源故障:否").c_str());
|
|||
|
|
|||
|
if (tfs.m_IsCompressorFailure)ImGui::TextColored(Toast::COLOR_RED, _(u8"压缩机故障:是").c_str());
|
|||
|
else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"压缩机故障:否").c_str());
|
|||
|
|
|||
|
if (tfs.m_IsAmbientTempTooHigh)ImGui::TextColored(Toast::COLOR_RED, _(u8"环境温度太高:是").c_str());
|
|||
|
else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"环境温度太高:否").c_str());
|
|||
|
|
|||
|
if (tfs.m_IsAmbientTempException)ImGui::TextColored(Toast::COLOR_RED, _(u8"环境温度异常:是").c_str());
|
|||
|
else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"环境温度异常:否").c_str());
|
|||
|
|
|||
|
ImGui::EndGroup();
|
|||
|
}
|
|||
|
ImGui::End();
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
//void ChillerClient::ProcTongfeiAlarmInputInfo(void* pobject, Command* pcommand)
|
|||
|
//{
|
|||
|
// if (pobject == NULL)return;
|
|||
|
// ChillerClient* cc = (ChillerClient*)pobject;
|
|||
|
// unsigned char* rseq = pcommand->m_RespSeq;
|
|||
|
//
|
|||
|
// bitset<8> arr1(rseq[3]);
|
|||
|
// bitset<8> arr2(rseq[4]);
|
|||
|
// bitset<8> arr3(rseq[5]);
|
|||
|
// EnterCriticalSection(&cc->m_ValueCS);
|
|||
|
// cc->m_TongFeiStat.m_IsLowVoltageAlarm->SetValue(arr1[0]);
|
|||
|
// cc->m_TongFeiStat.m_IsHydraulicFailure->SetValue(arr1[1]);
|
|||
|
// cc->m_TongFeiStat.m_IsLevelFailure->SetValue(arr1[2]);
|
|||
|
// cc->m_TongFeiStat.m_IsLiquidPumpAlarm->SetValue(arr1[3]);
|
|||
|
// cc->m_TongFeiStat.m_IsPressAlarm->SetValue(arr1[4]);
|
|||
|
// cc->m_TongFeiStat.m_IsElectricHeatingFailure->SetValue(arr1[5]);
|
|||
|
// cc->m_TongFeiStat.m_IsAntifreezeAlarm->SetValue(arr1[6]);
|
|||
|
// cc->m_TongFeiStat.m_IsLiquidTempTooHigh->SetValue(arr1[7]);
|
|||
|
//
|
|||
|
// cc->m_TongFeiStat.m_IsLiquidTempProbeFailure->SetValue(arr2[0]);
|
|||
|
// cc->m_TongFeiStat.m_IsEffluentTempProbeFailure->SetValue(arr2[1]);
|
|||
|
// cc->m_TongFeiStat.m_IsAmbientTempProbeFailure->SetValue(arr2[2]);
|
|||
|
// cc->m_TongFeiStat.m_IsCondensationTempProbeFailure->SetValue(arr2[3]);
|
|||
|
// cc->m_TongFeiStat.m_IsEvaporationInletTempProbeFailure->SetValue(arr2[4]);
|
|||
|
// cc->m_TongFeiStat.m_IsEvaporationOutletTempProbeFailure->SetValue(arr2[5]);
|
|||
|
// cc->m_TongFeiStat.m_IsCondensationTempTooHigh->SetValue(arr2[6]);
|
|||
|
// cc->m_TongFeiStat.m_IsPhaseOrderError->SetValue(arr2[7]);
|
|||
|
//
|
|||
|
// cc->m_TongFeiStat.m_IsPowerFailure->SetValue(arr3[0]);
|
|||
|
// cc->m_TongFeiStat.m_IsCompressorFailure->SetValue(arr3[1]);
|
|||
|
// cc->m_TongFeiStat.m_IsAmbientTempTooHigh->SetValue(arr3[2]);
|
|||
|
// cc->m_TongFeiStat.m_IsAmbientTempException->SetValue(arr3[3]);
|
|||
|
// LeaveCriticalSection(&cc->m_ValueCS);
|
|||
|
//}
|
|||
|
//
|
|||
|
//void ChillerClient::ProcTongfeiAlarmStateInfo(void* pobject, Command* pcommand)
|
|||
|
//{
|
|||
|
// if (pobject == NULL)return;
|
|||
|
// ChillerClient* cc = (ChillerClient*)pobject;
|
|||
|
// unsigned char* rseq = pcommand->m_RespSeq;
|
|||
|
//
|
|||
|
// short state1 = (((rseq[3] & 0xff) << 8) + (rseq[4] & 0xff));
|
|||
|
// EnterCriticalSection(&cc->m_ValueCS);
|
|||
|
// cc->m_TongFeiStat.m_AlarmState->SetValue(state1);
|
|||
|
// LeaveCriticalSection(&cc->m_ValueCS);
|
|||
|
//}
|
|||
|
//
|
|||
|
//void ChillerClient::ProcTongfeiUserParamsInfo(void* pobject, Command* pcommand)
|
|||
|
//{
|
|||
|
// if (pobject == NULL)return;
|
|||
|
// ChillerClient* cc = (ChillerClient*)pobject;
|
|||
|
// unsigned char* rseq = pcommand->m_RespSeq;
|
|||
|
//
|
|||
|
// short roomTempSettingValue = (((rseq[3] & 0xff) << 8) + (rseq[4] & 0xff));
|
|||
|
// short constantTempSettingValue = (((rseq[5] & 0xff) << 8) + (rseq[6] & 0xff));
|
|||
|
// short workMode = (((rseq[7] & 0xff) << 8) + (rseq[8] & 0xff));
|
|||
|
// short refrigerationMethod = (((rseq[9] & 0xff) << 8) + (rseq[10] & 0xff));
|
|||
|
// short liquidAlarmTemp = (((rseq[11] & 0xff) << 8) + (rseq[12] & 0xff));
|
|||
|
//
|
|||
|
// EnterCriticalSection(&cc->m_ValueCS);
|
|||
|
// cc->m_TongFeiStat.m_RoomTempSettingValue->SetValue((float)roomTempSettingValue/10.0f);
|
|||
|
// cc->m_TongFeiStat.m_ConstantTempSettingValue->SetValue((float)constantTempSettingValue / 10.0f);
|
|||
|
// cc->m_TongFeiStat.m_WorkMode->SetValue((int)workMode);
|
|||
|
// cc->m_TongFeiStat.m_RefrigerationMethod->SetValue(refrigerationMethod);
|
|||
|
// cc->m_TongFeiStat.m_LiquidAlarmTemp->SetValue((float)liquidAlarmTemp / 10.0f);
|
|||
|
// LeaveCriticalSection(&cc->m_ValueCS);
|
|||
|
//}
|
|||
|
//void ChillerClient::ProcTongfeiAnaShowInfo(void* pobject, Command* pcommand)
|
|||
|
//{
|
|||
|
// if (pobject == NULL)return;
|
|||
|
// ChillerClient* cc = (ChillerClient*)pobject;
|
|||
|
// unsigned char* rseq = pcommand->m_RespSeq;
|
|||
|
//
|
|||
|
// short liquidTempProbe = (((rseq[3] & 0xff) << 8) + (rseq[4] & 0xff));
|
|||
|
// short effluentTempProbe = (((rseq[5] & 0xff) << 8) + (rseq[6] & 0xff));
|
|||
|
// short ambientTempProbe = (((rseq[7] & 0xff) << 8) + (rseq[8] & 0xff));
|
|||
|
// short condensationTempProbe = (((rseq[9] & 0xff) << 8) + (rseq[10] & 0xff));
|
|||
|
// short evaporationInletTempProbe = (((rseq[11] & 0xff) << 8) + (rseq[12] & 0xff));
|
|||
|
// short evaporationOutletTempProbe = (((rseq[13] & 0xff) << 8) + (rseq[14] & 0xff));
|
|||
|
//
|
|||
|
// short unitStatus = (((rseq[19] & 0xff) << 8) + (rseq[20] & 0xff));
|
|||
|
// EnterCriticalSection(&cc->m_ValueCS);
|
|||
|
// cc->m_TongFeiStat.m_LiquidTempProbe->SetValue((float)liquidTempProbe/10.0f);
|
|||
|
// cc->m_TongFeiStat.m_EffluentTempProbe->SetValue((float)effluentTempProbe / 10.0f);
|
|||
|
// cc->m_TongFeiStat.m_AmbientTempProbe->SetValue((float)ambientTempProbe / 10.0f);
|
|||
|
// cc->m_TongFeiStat.m_CondensationTempProbe->SetValue((float)condensationTempProbe / 10.0f);
|
|||
|
// cc->m_TongFeiStat.m_EvaporationInletTempProbe->SetValue((float)evaporationInletTempProbe / 10.0f);
|
|||
|
// cc->m_TongFeiStat.m_EvaporationOutletTempProbe->SetValue((float)evaporationOutletTempProbe / 10.0f);
|
|||
|
// cc->m_TongFeiStat.m_UnitStatus->SetValue(unitStatus);
|
|||
|
// LeaveCriticalSection(&cc->m_ValueCS);
|
|||
|
//}
|
|||
|
|
|||
|
//void ChillerClient::ProcTongfeiAnaShowInfo2(void* pobject, Command* pcommand)
|
|||
|
//{
|
|||
|
// if (pobject == NULL)return;
|
|||
|
// ChillerClient* cc = (ChillerClient*)pobject;
|
|||
|
// unsigned char* rseq = pcommand->m_RespSeq;
|
|||
|
//
|
|||
|
// short WorkingFrequency = (((rseq[3] & 0xff) << 8) + (rseq[4] & 0xff));
|
|||
|
// short OverHeatingValue = (((rseq[5] & 0xff) << 8) + (rseq[6] & 0xff));
|
|||
|
// short EEV1 = (((rseq[7] & 0xff) << 8) + (rseq[8] & 0xff));
|
|||
|
// short EEV2 = (((rseq[9] & 0xff) << 8) + (rseq[10] & 0xff));
|
|||
|
//
|
|||
|
// EnterCriticalSection(&cc->m_ValueCS);
|
|||
|
// cc->m_TongFeiStat.m_WorkingFrequency->SetValue((float)WorkingFrequency / 10.0f);
|
|||
|
// cc->m_TongFeiStat.m_OverHeatingValue->SetValue((float)OverHeatingValue / 10.0f);
|
|||
|
// cc->m_TongFeiStat.m_EEV1->SetValue((float)EEV1/10.0f);
|
|||
|
// cc->m_TongFeiStat.m_EEV2->SetValue((float)EEV2/10.0f);
|
|||
|
// LeaveCriticalSection(&cc->m_ValueCS);
|
|||
|
//}
|
|||
|
|
|||
|
//void ChillerClient::ProcTongfeianaShowInfo3(void* pobject, Command* pcommand)
|
|||
|
//{
|
|||
|
// if (pobject == NULL)return;
|
|||
|
// ChillerClient* cc = (ChillerClient*)pobject;
|
|||
|
// unsigned char* rseq = pcommand->m_RespSeq;
|
|||
|
//
|
|||
|
// short CondensingFanRatio = (((rseq[3] & 0xff) << 8) + (rseq[4] & 0xff));
|
|||
|
// short ElectricHeatingRatio = (((rseq[5] & 0xff) << 8) + (rseq[6] & 0xff));
|
|||
|
// short FlowRate = (((rseq[11] & 0xff) << 8) + (rseq[12] & 0xff));
|
|||
|
//
|
|||
|
// EnterCriticalSection(&cc->m_ValueCS);
|
|||
|
// cc->m_TongFeiStat.m_CondensingFanRatio->SetValue((float)CondensingFanRatio / 10.0f);
|
|||
|
// cc->m_TongFeiStat.m_ElectricHeatingRatio->SetValue((float)ElectricHeatingRatio / 10.0f);
|
|||
|
// cc->m_TongFeiStat.m_FlowRate->SetValue((float)FlowRate/10.0f);
|
|||
|
// LeaveCriticalSection(&cc->m_ValueCS);
|
|||
|
//}
|