From 29769e5268a2ac0f0985fd7d74ea080ff8830140 Mon Sep 17 00:00:00 2001 From: wangxx1809 Date: Tue, 16 Apr 2024 17:36:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=87=80=E5=8C=96=E5=99=A8=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PrintS/Communication/BaseClient.h | 2 +- PrintS/Communication/BaseData.h | 41 +- PrintS/Communication/G4PurifierClient.cpp | 188 +++--- PrintS/Communication/HBDPurifierG3Client.cpp | 186 +++--- PrintS/Communication/IPGLaserClient.h | 2 +- PrintS/Communication/OxygenClient.h | 2 +- PrintS/Communication/PurifierClient.cpp | 293 ++++++--- PrintS/Communication/PurifierClient.h | 601 +++++++++++++++---- PrintS/Communication/ScannerPowerClient.h | 6 +- PrintS/Controller/Controller.cpp | 36 +- PrintS/Controller/Controller.h | 9 +- PrintS/DataManage/DataHandle.cpp | 3 +- PrintS/Purifier/BasePurifier.cpp | 12 + PrintS/Purifier/BasePurifier.h | 10 + PrintS/main.cpp | 1 - 15 files changed, 941 insertions(+), 451 deletions(-) diff --git a/PrintS/Communication/BaseClient.h b/PrintS/Communication/BaseClient.h index f73698f..09510fc 100644 --- a/PrintS/Communication/BaseClient.h +++ b/PrintS/Communication/BaseClient.h @@ -83,7 +83,7 @@ protected: BaseStat m_BaseStat; unordered_map m_baseMp; //大部分使用这个 - unordered_map m_alarmCfgMp; // + unordered_map m_alarmCfgMp; }; class S7Client :public BaseClient diff --git a/PrintS/Communication/BaseData.h b/PrintS/Communication/BaseData.h index ce90d3b..1943737 100644 --- a/PrintS/Communication/BaseData.h +++ b/PrintS/Communication/BaseData.h @@ -14,12 +14,6 @@ public: virtual void SetValue(bool b) {} virtual void SetValue(const string& str) {} - //virtual void GetValue(DATATYPE& dataType, float& f) {} - //virtual void GetValue(DATATYPE& dataType, int& i) {} - //virtual void GetValue(DATATYPE& dataType, unsigned short& us) {} - //virtual void GetValue(DATATYPE& dataType, short& s) {} - //virtual void GetValue(DATATYPE& dataType, bool& b) {} - std::string GetCode() { return m_code; } virtual std::string GetValueStr() { return ""; } virtual DATATYPE GetDataType() { return UNKNOW; } @@ -31,19 +25,12 @@ private: class FloatData : public BaseData { public: - FloatData(const std::string& code, const std::string& context/*, float val*/) - : BaseData(code, context), m_value(0.0f) { - //if (m_baseMp.find(code) != m_baseMp.end()) { - // printf("%s is repeated...", code.c_str()); - //} - //else { - // m_baseMp.insert(make_pair(code, this)); - //} + FloatData(const std::string& code, const std::string& context, float val = 0.0f) + : BaseData(code, context), m_value(val) { } ~FloatData() {} void SetValue(float f) { m_value = f; } - //void GetValue(DATATYPE& dataType, float& f) { dataType = iFLOAT; f = m_value; } DATATYPE GetDataType() { return iFLOAT; } float GetValue() { return m_value; } virtual std::string GetValueStr() { return to_string(m_value); } @@ -54,8 +41,8 @@ private: class IntData : public BaseData { public: - IntData(const std::string& code, const std::string& context/*, int val*/) - : BaseData(code, context), m_value(0) { + IntData(const std::string& code, const std::string& context, int val = 0) + : BaseData(code, context), m_value(val) { //if (m_baseMp.find(code) != m_baseMp.end()) { // printf("%s is repeated...", code.c_str()); //} @@ -77,8 +64,8 @@ private: class ShortData : public BaseData { public: - ShortData(const std::string& code, const std::string& context/*, short val*/) - : BaseData(code, context), m_value(0) { + ShortData(const std::string& code, const std::string& context, short val = 0) + : BaseData(code, context), m_value(val) { //if (m_baseMp.find(code) != m_baseMp.end()) { // printf("%s is repeated...", code.c_str()); //} @@ -99,8 +86,8 @@ private: class UShortData : public BaseData { public: - UShortData(const std::string& code, const std::string& context/*, unsigned short val*/) - : BaseData(code, context), m_value(0) { + UShortData(const std::string& code, const std::string& context, unsigned short val = 0) + : BaseData(code, context), m_value(val) { //if (m_baseMp.find(code) != m_baseMp.end()) { // printf("%s is repeated...", code.c_str()); //} @@ -122,8 +109,8 @@ private: class BoolData : public BaseData { public: - BoolData(const std::string& code, const std::string& context/*, bool val*/) - : BaseData(code, context), m_value(0) { + BoolData(const std::string& code, const std::string& context, bool val = false) + : BaseData(code, context), m_value(val) { //if (m_baseMp.find(code) != m_baseMp.end()) { // printf("%s is repeated...", code.c_str()); //} @@ -145,8 +132,8 @@ private: class UcharData : public BaseData { public: - UcharData(const std::string& code, const std::string& context/*, bool val*/) - : BaseData(code, context), m_value(0) { + UcharData(const std::string& code, const std::string& context, UCHAR val = 0) + : BaseData(code, context), m_value(val) { //if (m_baseMp.find(code) != m_baseMp.end()) { // printf("%s is repeated...", code.c_str()); //} @@ -167,8 +154,8 @@ private: class StrData : public BaseData { public: - StrData(const std::string& code, const std::string& context) - : BaseData(code, context), m_value("") { + StrData(const std::string& code, const std::string& context,const string& val = "") + : BaseData(code, context), m_value(val) { } ~StrData() {} diff --git a/PrintS/Communication/G4PurifierClient.cpp b/PrintS/Communication/G4PurifierClient.cpp index 1844d70..494d4e8 100644 --- a/PrintS/Communication/G4PurifierClient.cpp +++ b/PrintS/Communication/G4PurifierClient.cpp @@ -198,67 +198,67 @@ void G4PurifierClient::G4ProcReadInfoXT(void* pobject, Command* pcommand) unsigned char* arr = (unsigned char*)pCtrl.pdata; bitset<8> M0(arr[0]); - ppw->m_Stat.isDedusting = M0[2]; - ppw->m_Stat.isBoxCleaning = M0[6]; + ppw->m_Stat.isDedusting->SetValue(M0[2]); + ppw->m_Stat.isBoxCleaning->SetValue(M0[6]); bitset<8> M1(arr[1]); - ppw->m_Stat.isBlowBack = M1[1]; - ppw->m_Stat.isFilterDiscarding = M1[4]; - ppw->m_Stat.isFilterCleaning = M1[7]; + ppw->m_Stat.isBlowBack->SetValue(M1[1]); + ppw->m_Stat.isFilterDiscarding->SetValue(M1[4]); + ppw->m_Stat.isFilterCleaning->SetValue(M1[7]); bitset<8> M2(arr[2]); - ppw->m_Stat.isHopperCleaning = M2[5]; + ppw->m_Stat.isHopperCleaning->SetValue(M2[5]); bitset<8> M5(arr[5]); - ppw->m_Stat.isPurifying = M5[0]; + ppw->m_Stat.isPurifying->SetValue(M5[0]); } if (pPresure.Result == 0) { unsigned char* pchar = (unsigned char*)pPresure.pdata; - ppw->m_Stat.midPressureValue = FLOATDATA(false, &pchar[0]).fValue; - ppw->m_Stat.midPressureDifValue = FLOATDATA(false, &pchar[4]).fValue; - ppw->m_Stat.midTemperatureValue = FLOATDATA(false, &pchar[8]).fValue; - ppw->m_Stat.highPressureDifValue = FLOATDATA(false, &pchar[12]).fValue; - //ppw->m_Stat.anemometerActualValue = FLOATDATA(false, &pchar[16]).fValue; - ppw->m_Stat.printPressureValue = FLOATDATA(false, &pchar[20]).fValue; - ppw->m_Stat.boxPressureUpLimit = FLOATDATA(false, &pchar[28]).fValue; - ppw->m_Stat.boxPressureDownLimit = FLOATDATA(false, &pchar[32]).fValue; - ppw->m_Stat.filterOxygenValue = FLOATDATA(false, &pchar[48]).fValue; - ppw->m_Stat.printOxygenValue = FLOATDATA(false, &pchar[60]).fValue; - ppw->m_Stat.midPressureDifAlarmValue = FLOATDATA(false, &pchar[64]).fValue; - ppw->m_Stat.highPressureDifAlarmValue = FLOATDATA(false, &pchar[68]).fValue; - ppw->m_Stat.printOxygenUpSetValue = FLOATDATA(false, &pchar[76]).fValue; - ppw->m_RunCfg->m_WarnOxygen = ppw->m_Stat.printOxygenUpSetValue; + ppw->m_Stat.midPressureValue->SetValue(FLOATDATA(false, &pchar[0]).fValue); + ppw->m_Stat.midPressureDifValue->SetValue(FLOATDATA(false, &pchar[4]).fValue); + ppw->m_Stat.midTemperatureValue->SetValue(FLOATDATA(false, &pchar[8]).fValue); + ppw->m_Stat.highPressureDifValue->SetValue(FLOATDATA(false, &pchar[12]).fValue); + //ppw->m_Stat.anemometerActualValue ->SetValue( FLOATDATA(false, &pchar[16]).fValue; + ppw->m_Stat.printPressureValue->SetValue(FLOATDATA(false, &pchar[20]).fValue); + ppw->m_Stat.boxPressureUpLimit->SetValue(FLOATDATA(false, &pchar[28]).fValue); + ppw->m_Stat.boxPressureDownLimit->SetValue(FLOATDATA(false, &pchar[32]).fValue); + ppw->m_Stat.filterOxygenValue->SetValue(FLOATDATA(false, &pchar[48]).fValue); + ppw->m_Stat.printOxygenValue->SetValue(FLOATDATA(false, &pchar[60]).fValue); + ppw->m_Stat.midPressureDifAlarmValue->SetValue(FLOATDATA(false, &pchar[64]).fValue); + ppw->m_Stat.highPressureDifAlarmValue->SetValue(FLOATDATA(false, &pchar[68]).fValue); + ppw->m_Stat.printOxygenUpSetValue->SetValue(FLOATDATA(false, &pchar[76]).fValue); + ppw->m_RunCfg->m_WarnOxygen = ppw->m_Stat.printOxygenUpSetValue->GetValue(); - ppw->m_Stat.boxWashTime = ((pchar[110] & 0xff) << 8) + (pchar[111] & 0xff); - ppw->m_Stat.filterWashTime = ((pchar[112] & 0xff) << 8) + (pchar[113] & 0xff); - ppw->m_Stat.boxWashDelayTime = ((pchar[114] & 0xff) << 8) + (pchar[115] & 0xff); - ppw->m_Stat.dedustingWashDelayTime = ((pchar[116] & 0xff) << 8) + (pchar[117] & 0xff); - ppw->m_Stat.hopperCleanRemind = ((pchar[118] & 0xff) << 8) + (pchar[119] & 0xff); + ppw->m_Stat.boxWashTime->SetValue(((pchar[110] & 0xff) << 8) + (pchar[111] & 0xff)); + ppw->m_Stat.filterWashTime->SetValue(((pchar[112] & 0xff) << 8) + (pchar[113] & 0xff)); + ppw->m_Stat.boxWashDelayTime->SetValue(((pchar[114] & 0xff) << 8) + (pchar[115] & 0xff)); + ppw->m_Stat.dedustingWashDelayTime->SetValue(((pchar[116] & 0xff) << 8) + (pchar[117] & 0xff)); + ppw->m_Stat.hopperCleanRemind->SetValue(((pchar[118] & 0xff) << 8) + (pchar[119] & 0xff)); - ppw->m_Stat.printCleanOxygenSetValue = FLOATDATA(false, &pchar[142]).fValue; - ppw->m_Stat.windSetValue = FLOATDATA(false, &pchar[146]).fValue; - ppw->m_Stat.windActualValue = FLOATDATA(false, &pchar[150]).fValue; - ppw->m_Stat.filterCleanOxygenSetValue = FLOATDATA(false, &pchar[158]).fValue; - ppw->m_Stat.midTempHighSetValue = FLOATDATA(false, &pchar[166]).fValue; - ppw->m_Stat.midTempUltraSetValue = FLOATDATA(false, &pchar[170]).fValue; - ppw->m_Stat.oxygenAlarmValue = FLOATDATA(false, &pchar[190]).fValue; - ppw->m_RunCfg->SetOxygenAlarmValue(ppw->m_Stat.oxygenAlarmValue); - ppw->m_RunCfg->SetOxygenTargeValue(ppw->m_Stat.printCleanOxygenSetValue); + ppw->m_Stat.printCleanOxygenSetValue->SetValue(FLOATDATA(false, &pchar[142]).fValue); + ppw->m_Stat.windSetValue->SetValue(FLOATDATA(false, &pchar[146]).fValue); + ppw->m_Stat.windActualValue->SetValue(FLOATDATA(false, &pchar[150]).fValue); + ppw->m_Stat.filterCleanOxygenSetValue->SetValue(FLOATDATA(false, &pchar[158]).fValue); + ppw->m_Stat.midTempHighSetValue->SetValue(FLOATDATA(false, &pchar[166]).fValue); + ppw->m_Stat.midTempUltraSetValue->SetValue(FLOATDATA(false, &pchar[170]).fValue); + ppw->m_Stat.oxygenAlarmValue->SetValue(FLOATDATA(false, &pchar[190]).fValue); + ppw->m_RunCfg->SetOxygenAlarmValue(ppw->m_Stat.oxygenAlarmValue->GetValue()); + ppw->m_RunCfg->SetOxygenTargeValue(ppw->m_Stat.printCleanOxygenSetValue->GetValue()); FanFit* al = ppw->m_ExtCfg->m_FanWindFit[ppw->m_ExtCfg->m_SelectedFanWindFit]; - if (al->alarmWind > ppw->m_Stat.windSetValue) { - al->alarmWind = (ppw->m_Stat.windSetValue > 50.0f) ? (ppw->m_Stat.windSetValue - 50.0f) : 1.0f; + if (al->alarmWind > ppw->m_Stat.windSetValue->GetValue()) { + al->alarmWind = (ppw->m_Stat.windSetValue->GetValue() > 50.0f) ? (ppw->m_Stat.windSetValue->GetValue() - 50.0f) : 1.0f; } - ppw->m_Stat.filterTotalUseTime = ((pchar[194] & 0xff) << 8) + (pchar[195] & 0xff); - ppw->m_Stat.usedTimeFromlastBowBack = ((pchar[196] & 0xff) << 8) + (pchar[197] & 0xff); - ppw->m_Stat.bowBackTimes = ((pchar[198] & 0xff) << 8) + (pchar[199] & 0xff); - ppw->m_Stat.hopperTimeLastClean = ((pchar[204] & 0xff) << 8) + (pchar[205] & 0xff); + ppw->m_Stat.filterTotalUseTime->SetValue(((pchar[194] & 0xff) << 8) + (pchar[195] & 0xff)); + ppw->m_Stat.usedTimeFromlastBowBack->SetValue(((pchar[196] & 0xff) << 8) + (pchar[197] & 0xff)); + ppw->m_Stat.bowBackTimes->SetValue(((pchar[198] & 0xff) << 8) + (pchar[199] & 0xff)); + ppw->m_Stat.hopperTimeLastClean->SetValue(((pchar[204] & 0xff) << 8) + (pchar[205] & 0xff)); if (ppw->m_AlarmCfgWrapper->m_PurifierOxygenAlarm) { - if (ppw->m_Stat.filterOxygenValue > ppw->m_RunCfg->m_FilterOxygenAlarmValue) { + if (ppw->m_Stat.filterOxygenValue->GetValue()> ppw->m_RunCfg->m_FilterOxygenAlarmValue) { if (ppw->m_AlarmCfgWrapper->m_PurifierOxygenAlarm->m_AlarmContinueTick > ppw->m_AlarmCfgWrapper->m_PurifierOxygenAlarm->m_CheckAlarmSetTick) { - ppw->m_AlarmCfgWrapper->m_PurifierOxygenAlarm->m_AlarmInfo = to_string(ppw->m_Stat.filterOxygenValue); + ppw->m_AlarmCfgWrapper->m_PurifierOxygenAlarm->m_AlarmInfo = to_string(ppw->m_Stat.filterOxygenValue->GetValue()); SignalService::GetInstance().SetAlarm(ppw->m_AlarmCfgWrapper->m_PurifierOxygenAlarm, true); } else { @@ -273,8 +273,8 @@ void G4PurifierClient::G4ProcReadInfoXT(void* pobject, Command* pcommand) } if (ppCtrl.Result == 0) { unsigned char* arr = (unsigned char*)ppCtrl.pdata; - ppw->m_Stat.ProtectionPressuring = ((arr[0] & 0x10) > 0 ? true : false); - ppw->m_Stat.protectionPressureEnable = ((arr[0] & 0x40) > 0 ? true : false); + ppw->m_Stat.ProtectionPressuring->SetValue((arr[0] & 0x10) > 0 ? true : false); + ppw->m_Stat.protectionPressureEnable->SetValue((arr[0] & 0x40) > 0 ? true : false); } LeaveCriticalSection(&ppw->m_ValueCS); @@ -307,115 +307,115 @@ void G4PurifierClient::G4ProcReadInfoXT_2(void* pobject, Command* pcommand) unsigned char pdata3 = arr[2]; bitset<8> V389(arr[0]); - ppw->m_Stat.midTempOverLimitAlarm = V389[0]; //中效高温报警,请注意 - ppw->m_Stat.midHighTempOverLimitAlarm = V389[1]; //中效超高温报警,已经很危险请停机检查 - ppw->m_Stat.hopperUseLongTimeAlarm = V389[2]; //料斗使用时间过长,请进行清理 - ppw->m_Stat.highPressureLackValveAlarm = V389[3]; //高压气气压不足,导致阀门异常关闭,请使用稳定气压 - ppw->m_Stat.protectionTestFail = V389[4]; - ppw->m_Stat.inverterAlarm = V389[5]; //变频器报警,请检查电机是否正常 - ppw->m_Stat.whirlwindJarIsFull = V389[6]; - ppw->m_Stat.midInValveOpenAlarm = V389[7]; + ppw->m_Stat.midTempOverLimitAlarm->SetValue(V389[0]); //中效高温报警,请注意 + ppw->m_Stat.midHighTempOverLimitAlarm->SetValue(V389[1]); //中效超高温报警,已经很危险请停机检查 + ppw->m_Stat.hopperUseLongTimeAlarm->SetValue(V389[2]); //料斗使用时间过长,请进行清理 + ppw->m_Stat.highPressureLackValveAlarm->SetValue(V389[3]); //高压气气压不足,导致阀门异常关闭,请使用稳定气压 + ppw->m_Stat.protectionTestFail->SetValue(V389[4]); + ppw->m_Stat.inverterAlarm->SetValue(V389[5]); //变频器报警,请检查电机是否正常 + ppw->m_Stat.whirlwindJarIsFull->SetValue(V389[6]); + ppw->m_Stat.midInValveOpenAlarm->SetValue(V389[7]); bitset<8> V390(arr[1]); - ppw->m_Stat.cycleInValveOpenAlarm = V390[0]; //循环进气阀打开异常,请检查阀门与感应器是否正常 - ppw->m_Stat.cycleOutValueOpenAlarm = V390[1]; //循环出气阀打开异常,请检查阀门与感应器是否正常 - ppw->m_Stat.highPressureLackAlarm = V390[2]; //高压气气压不足,无法启动设备请补充压力 - ppw->m_Stat.protectedPressureLackAlarm = V390[3]; //保护气气压不足,无法启动设备请补充压力 - ppw->m_Stat.midConnectException = V390[4]; //中效室连接异常,请检查是否连接完毕 - ppw->m_Stat.carbinDoorOpenException = V390[5]; //舱门打开异常,请检查关闭好舱门与舱门感应器 - ppw->m_Stat.midFilterBlockAlarm = V390[6]; //中效滤芯堵塞严重,请执行清理工作 - ppw->m_Stat.busOutValveNotOpenAlarm = V390[7]; //总排气阀未打开,请检查总排气阀工作状态 + ppw->m_Stat.cycleInValveOpenAlarm->SetValue(V390[0]); //循环进气阀打开异常,请检查阀门与感应器是否正常 + ppw->m_Stat.cycleOutValueOpenAlarm->SetValue(V390[1]); //循环出气阀打开异常,请检查阀门与感应器是否正常 + ppw->m_Stat.highPressureLackAlarm->SetValue(V390[2]); //高压气气压不足,无法启动设备请补充压力 + ppw->m_Stat.protectedPressureLackAlarm->SetValue(V390[3]); //保护气气压不足,无法启动设备请补充压力 + ppw->m_Stat.midConnectException->SetValue(V390[4]); //中效室连接异常,请检查是否连接完毕 + ppw->m_Stat.carbinDoorOpenException->SetValue(V390[5]); //舱门打开异常,请检查关闭好舱门与舱门感应器 + ppw->m_Stat.midFilterBlockAlarm->SetValue(V390[6]); //中效滤芯堵塞严重,请执行清理工作 + ppw->m_Stat.busOutValveNotOpenAlarm->SetValue(V390[7]); //总排气阀未打开,请检查总排气阀工作状态 bitset<8> V391(arr[2]); - ppw->m_Stat.busOutValveNotCloseAlarm = V391[0]; //总排气阀未关闭,请检查总排气阀工作状态 - ppw->m_Stat.busOutValveNotInPosAlarm = V391[1]; //总排气阀处于不到位状态,请检查总排气阀工作状态 - ppw->m_Stat.printOutValveNotOpenAlarm = V391[2]; //打印室排气阀未打开,请检查打印室排气阀工作状态 - ppw->m_Stat.printOutValveNotCloseAlarm = V391[3]; //打印室排气阀未关闭,请检查打印室排气阀工作状态 - ppw->m_Stat.printOutValveNotInPosAlarm = V391[4]; //打印室排气阀处于不到位状态,请检查打印室排气阀工作状态 - ppw->m_Stat.inverterComException = V391[5]; - ppw->m_Stat.anemometerException = V391[6]; - ppw->m_Stat.midOutValveOpenAlarm = V391[7]; + ppw->m_Stat.busOutValveNotCloseAlarm->SetValue(V391[0]); //总排气阀未关闭,请检查总排气阀工作状态 + ppw->m_Stat.busOutValveNotInPosAlarm->SetValue(V391[1]); //总排气阀处于不到位状态,请检查总排气阀工作状态 + ppw->m_Stat.printOutValveNotOpenAlarm->SetValue(V391[2]); //打印室排气阀未打开,请检查打印室排气阀工作状态 + ppw->m_Stat.printOutValveNotCloseAlarm->SetValue(V391[3]); //打印室排气阀未关闭,请检查打印室排气阀工作状态 + ppw->m_Stat.printOutValveNotInPosAlarm->SetValue(V391[4]); //打印室排气阀处于不到位状态,请检查打印室排气阀工作状态 + ppw->m_Stat.inverterComException->SetValue(V391[5]); + ppw->m_Stat.anemometerException->SetValue(V391[6]); + ppw->m_Stat.midOutValveOpenAlarm->SetValue(V391[7]); bitset<8> V393(arr[4]); - ppw->m_Stat.oxygenSelfTestFail = V393[0]; - ppw->m_Stat.purifierSevereAbnormalExhaust = V393[1]; + ppw->m_Stat.oxygenSelfTestFail->SetValue(V393[0]); + ppw->m_Stat.purifierSevereAbnormalExhaust->SetValue(V393[1]); if (ppw->m_AlarmCfgWrapper->m_PurifierMidTempAlarm) SignalService::GetInstance().SetAlarm(ppw->m_AlarmCfgWrapper->m_PurifierMidTempAlarm, ppw->m_Stat.midTempOverLimitAlarm); } if (pMaxWind.Result == 0) { unsigned char* pchar = (unsigned char*)pMaxWind.pdata; - ppw->m_Stat.maxWindSetValue = FLOATDATA(false, &pchar[0]).fValue; + ppw->m_Stat.maxWindSetValue->SetValue(FLOATDATA(false, &pchar[0]).fValue); bitset<8> V557(pchar[7]); - ppw->m_Stat.shieldMonitorPrintPressure = V557[0]; + ppw->m_Stat.shieldMonitorPrintPressure->SetValue(V557[0]); - ppw->m_Stat.useArgon = V557[1]; + ppw->m_Stat.useArgon->SetValue(V557[1]); ppw->m_ExtCfg->m_SelectedFanWindFit = ppw->m_Stat.useArgon ? 1 : 0; - ppw->m_Stat.isCoverWind = V557[4]; + ppw->m_Stat.isCoverWind->SetValue(V557[4]); bitset<8> V558(pchar[8]); - ppw->m_Stat.inverterDonotWorkWhenDedust = V558[0]; - ppw->m_Stat.printOxygenExceptWhenDedust = V558[1]; - ppw->m_Stat.tempExceptWhenDedust = V558[2]; - ppw->m_Stat.highPressureExceptWhenDedust = V558[3]; - ppw->m_Stat.windExceptWhenDedust = V558[4]; + ppw->m_Stat.inverterDonotWorkWhenDedust->SetValue(V558[0]); + ppw->m_Stat.printOxygenExceptWhenDedust->SetValue(V558[1]); + ppw->m_Stat.tempExceptWhenDedust->SetValue(V558[2]); + ppw->m_Stat.highPressureExceptWhenDedust->SetValue(V558[3]); + ppw->m_Stat.windExceptWhenDedust->SetValue(V558[4]); } if (pCoverWindOffset.Result == 0) { unsigned char* pchar = (unsigned char*)pCoverWindOffset.pdata; - ppw->m_Stat.coverWindSpeedOffset = FLOATDATA(false, &pchar[0]).fValue; + ppw->m_Stat.coverWindSpeedOffset->SetValue(FLOATDATA(false, &pchar[0]).fValue); } if (pWindAct.Result == 0) { unsigned char* pchar = (unsigned char*)pWindAct.pdata; - ppw->m_Stat.anemometerActualValue = FLOATDATA(false, &pchar[0]).fValue; + ppw->m_Stat.anemometerActualValue->SetValue(FLOATDATA(false, &pchar[0]).fValue); } if (pKeepAlive.Result == 0) { char* pchar = (char*)pKeepAlive.pdata; - ppw->m_Stat.purifierType = ((pchar[0] & 0xff) << 8) + (pchar[1] & 0xff); - ppw->m_Stat.keepAlive = ((pchar[2] & 0xff) << 8) + (pchar[3] & 0xff); + ppw->m_Stat.purifierType->SetValue(((pchar[0] & 0xff) << 8) + (pchar[1] & 0xff)); + ppw->m_Stat.keepAlive->SetValue(((pchar[2] & 0xff) << 8) + (pchar[3] & 0xff)); } if (pFreq.Result == 0) { unsigned char* pchar = (unsigned char*)pFreq.pdata; - ppw->m_Stat.fanFreq = FLOATDATA(false, &pchar[0]).fValue; + ppw->m_Stat.fanFreq->SetValue(FLOATDATA(false, &pchar[0]).fValue); } if (pSignal.Result == 0) { char* pchar = (char*)pSignal.pdata; bitset<8> V594(pchar[0]); - ppw->m_Stat.coverWindSlowFinish = V594[6]; - ppw->m_Stat.coverWindResumeFinish = V594[7]; + ppw->m_Stat.coverWindSlowFinish->SetValue(V594[6]); + ppw->m_Stat.coverWindResumeFinish->SetValue(V594[7]); } if (testRel.Result == 0) { unsigned char* arr = (unsigned char*)testRel.pdata; - ppw->m_Stat.ProtectionPressureSetTime = ((arr[0] & 0xff) << 8) + (arr[1] & 0xff); + ppw->m_Stat.ProtectionPressureSetTime->SetValue(((arr[0] & 0xff) << 8) + (arr[1] & 0xff)); if (arr[2] == 2) { - ppw->m_Stat.ProtectionPressureTestRelFail = true; + ppw->m_Stat.ProtectionPressureTestRelFail->SetValue(true); } - else ppw->m_Stat.ProtectionPressureTestRelFail = false; + else ppw->m_Stat.ProtectionPressureTestRelFail->SetValue(false); if (arr[3] == 2) { - ppw->m_Stat.oxygenSelfTestRelFail = true; + ppw->m_Stat.oxygenSelfTestRelFail->SetValue(true); } - else ppw->m_Stat.oxygenSelfTestRelFail = false; + else ppw->m_Stat.oxygenSelfTestRelFail->SetValue(false); } if (pBlowRel.Result == 0) { unsigned char* arr = (unsigned char*)pBlowRel.pdata; - ppw->m_Stat.blowBackBlowTime = ((arr[0] & 0xff) << 8) + (arr[1] & 0xff); - ppw->m_Stat.blowBackSetTimes = ((arr[4] & 0xff) << 8) + (arr[5] & 0xff); + ppw->m_Stat.blowBackBlowTime->SetValue(((arr[0] & 0xff) << 8) + (arr[1] & 0xff)); + ppw->m_Stat.blowBackSetTimes->SetValue(((arr[4] & 0xff) << 8) + (arr[5] & 0xff)); } LeaveCriticalSection(&ppw->m_ValueCS); } diff --git a/PrintS/Communication/HBDPurifierG3Client.cpp b/PrintS/Communication/HBDPurifierG3Client.cpp index b2084cf..66ad55d 100644 --- a/PrintS/Communication/HBDPurifierG3Client.cpp +++ b/PrintS/Communication/HBDPurifierG3Client.cpp @@ -1,4 +1,4 @@ -#include "HBDPurifierG3Client.h" +#include "HBDPurifierG3Client.h" #include "S7Command.h" #include "../SystemInfo.h" #include "../utils/DataByte.h" @@ -27,7 +27,7 @@ void HBDPurifierG3Client::InitCommand() items[itemFlag].Amount = 6; items[itemFlag].pdata = new unsigned char[6]; - //VD_Чѹʵֵ + //VD_中效过滤器压力实值 itemFlag = 1; items[itemFlag].Area = S7AreaDB; items[itemFlag].WordLen = S7WLByte; @@ -52,7 +52,7 @@ void HBDPurifierG3Client::InitCommand() S7Command* pcommand2 = new S7Command(S7_COMMAND_READ_INFO, READ_ITEM_COUNT_2); TS7DataItem* items2 = pcommand2->getDataItems(); itemFlag = 0; - //Ϣ + //报警信息 items2[itemFlag].Area = S7AreaDB; items2[itemFlag].WordLen = S7WLByte; items2[itemFlag].DBNumber = 1; @@ -61,7 +61,7 @@ void HBDPurifierG3Client::InitCommand() items2[itemFlag].pdata = new unsigned char[5]; itemFlag = 1; - // + //最大风速 items2[itemFlag].Area = S7AreaDB; items2[itemFlag].WordLen = S7WLByte; items2[itemFlag].DBNumber = 1; @@ -130,7 +130,7 @@ void HBDPurifierG3Client::InitCommand() pcommand2->m_Fun = &HBDPurifierG3Client::G3ProcReadInfoXT_2; pcommand2->isNeedDel = false; - //дֵ + //写测氧值 S7Command* oxygenPressureCom = new S7Command(S7_COMMAND_WRITE, 2); TS7DataItem* dataItem = oxygenPressureCom->getDataItems(); dataItem[0].Area = S7AreaDB; @@ -203,61 +203,61 @@ void HBDPurifierG3Client::G3ProcReadInfoXT(void *pobject, Command* pcommand) unsigned char mdata3 = arr[3]; unsigned char mdata4 = arr[4]; unsigned char mdata5 = arr[5]; - ppw->m_Stat.isPurifying = ((mdata5 & 0x1)>0 ? true : false); - ppw->m_Stat.isDedusting = ((mdata0 & 0x4) ? true : false); - ppw->m_Stat.isBoxCleaning = ((mdata0 & 0x40) ? true : false); - ppw->m_Stat.isBlowBack = ((mdata1 & 0x2) ? true : false); - ppw->m_Stat.isFilterDiscarding = ((mdata1 & 0x10) ? true : false); - ppw->m_Stat.isFilterCleaning = ((mdata1 & 0x80) ? true : false); - ppw->m_Stat.isHopperCleaning = ((mdata2 & 0x20) ? true : false); + ppw->m_Stat.isPurifying ->SetValue ((mdata5 & 0x1)>0 ? true : false); + ppw->m_Stat.isDedusting ->SetValue ((mdata0 & 0x4) ? true : false); + ppw->m_Stat.isBoxCleaning ->SetValue ((mdata0 & 0x40) ? true : false); + ppw->m_Stat.isBlowBack ->SetValue ((mdata1 & 0x2) ? true : false); + ppw->m_Stat.isFilterDiscarding ->SetValue ((mdata1 & 0x10) ? true : false); + ppw->m_Stat.isFilterCleaning ->SetValue ((mdata1 & 0x80) ? true : false); + ppw->m_Stat.isHopperCleaning ->SetValue ((mdata2 & 0x20) ? true : false); } if (pPresure.Result == 0) { unsigned char* pchar = (unsigned char*)pPresure.pdata; - ppw->m_Stat.midPressureValue = FLOATDATA(false, &pchar[0]).fValue; - ppw->m_Stat.midPressureDifValue = FLOATDATA(false, &pchar[4]).fValue; - ppw->m_Stat.midTemperatureValue = FLOATDATA(false, &pchar[8]).fValue; - ppw->m_Stat.highPressureDifValue = FLOATDATA(false, &pchar[12]).fValue; - //ppw->m_Stat.anemometerActualValue = FLOATDATA(false, &pchar[16]).fValue; - ppw->m_Stat.printPressureValue = FLOATDATA(false, &pchar[20]).fValue; - ppw->m_Stat.boxPressureUpLimit = FLOATDATA(false, &pchar[28]).fValue; - ppw->m_Stat.boxPressureDownLimit = FLOATDATA(false, &pchar[32]).fValue; - ppw->m_Stat.filterOxygenValue = FLOATDATA(false, &pchar[48]).fValue; - ppw->m_Stat.printOxygenValue = FLOATDATA(false, &pchar[60]).fValue; - ppw->m_Stat.midPressureDifAlarmValue = FLOATDATA(false, &pchar[64]).fValue; - ppw->m_Stat.highPressureDifAlarmValue = FLOATDATA(false, &pchar[68]).fValue; - ppw->m_Stat.printOxygenUpSetValue = FLOATDATA(false, &pchar[76]).fValue; - ppw->m_RunCfg->m_WarnOxygen = ppw->m_Stat.printOxygenUpSetValue; + ppw->m_Stat.midPressureValue->SetValue(FLOATDATA(false, &pchar[0]).fValue); + ppw->m_Stat.midPressureDifValue->SetValue(FLOATDATA(false, &pchar[4]).fValue); + ppw->m_Stat.midTemperatureValue->SetValue(FLOATDATA(false, &pchar[8]).fValue); + ppw->m_Stat.highPressureDifValue->SetValue(FLOATDATA(false, &pchar[12]).fValue); + //ppw->m_Stat.anemometerActualValue ->SetValue( FLOATDATA(false, &pchar[16]).fValue; + ppw->m_Stat.printPressureValue->SetValue(FLOATDATA(false, &pchar[20]).fValue); + ppw->m_Stat.boxPressureUpLimit->SetValue(FLOATDATA(false, &pchar[28]).fValue); + ppw->m_Stat.boxPressureDownLimit->SetValue(FLOATDATA(false, &pchar[32]).fValue); + ppw->m_Stat.filterOxygenValue->SetValue(FLOATDATA(false, &pchar[48]).fValue); + ppw->m_Stat.printOxygenValue->SetValue(FLOATDATA(false, &pchar[60]).fValue); + ppw->m_Stat.midPressureDifAlarmValue->SetValue(FLOATDATA(false, &pchar[64]).fValue); + ppw->m_Stat.highPressureDifAlarmValue->SetValue(FLOATDATA(false, &pchar[68]).fValue); + ppw->m_Stat.printOxygenUpSetValue->SetValue(FLOATDATA(false, &pchar[76]).fValue); + ppw->m_RunCfg->m_WarnOxygen = ppw->m_Stat.printOxygenUpSetValue->GetValue(); - ppw->m_Stat.boxWashTime = ((pchar[110] & 0xff) << 8) + (pchar[111] & 0xff); - ppw->m_Stat.filterWashTime = ((pchar[112] & 0xff) << 8) + (pchar[113] & 0xff); - ppw->m_Stat.boxWashDelayTime = ((pchar[114] & 0xff) << 8) + (pchar[115] & 0xff); - ppw->m_Stat.dedustingWashDelayTime = ((pchar[116] & 0xff) << 8) + (pchar[117] & 0xff); - ppw->m_Stat.hopperCleanRemind = ((pchar[118] & 0xff) << 8) + (pchar[119] & 0xff); + ppw->m_Stat.boxWashTime->SetValue(((pchar[110] & 0xff) << 8) + (pchar[111] & 0xff)); + ppw->m_Stat.filterWashTime->SetValue(((pchar[112] & 0xff) << 8) + (pchar[113] & 0xff)); + ppw->m_Stat.boxWashDelayTime->SetValue(((pchar[114] & 0xff) << 8) + (pchar[115] & 0xff)); + ppw->m_Stat.dedustingWashDelayTime->SetValue(((pchar[116] & 0xff) << 8) + (pchar[117] & 0xff)); + ppw->m_Stat.hopperCleanRemind->SetValue(((pchar[118] & 0xff) << 8) + (pchar[119] & 0xff)); - ppw->m_Stat.printCleanOxygenSetValue = FLOATDATA(false, &pchar[142]).fValue; - ppw->m_Stat.windSetValue = FLOATDATA(false, &pchar[146]).fValue; - ppw->m_Stat.windActualValue = FLOATDATA(false, &pchar[150]).fValue; - ppw->m_Stat.filterCleanOxygenSetValue = FLOATDATA(false, &pchar[158]).fValue; - ppw->m_Stat.midTempHighSetValue = FLOATDATA(false, &pchar[166]).fValue; - ppw->m_Stat.midTempUltraSetValue = FLOATDATA(false, &pchar[170]).fValue; - ppw->m_Stat.oxygenAlarmValue = FLOATDATA(false, &pchar[190]).fValue; - ppw->m_RunCfg->SetOxygenAlarmValue(ppw->m_Stat.oxygenAlarmValue); - ppw->m_RunCfg->SetOxygenTargeValue(ppw->m_Stat.printCleanOxygenSetValue); + ppw->m_Stat.printCleanOxygenSetValue->SetValue(FLOATDATA(false, &pchar[142]).fValue); + ppw->m_Stat.windSetValue->SetValue(FLOATDATA(false, &pchar[146]).fValue); + ppw->m_Stat.windActualValue->SetValue(FLOATDATA(false, &pchar[150]).fValue); + ppw->m_Stat.filterCleanOxygenSetValue->SetValue(FLOATDATA(false, &pchar[158]).fValue); + ppw->m_Stat.midTempHighSetValue->SetValue(FLOATDATA(false, &pchar[166]).fValue); + ppw->m_Stat.midTempUltraSetValue->SetValue(FLOATDATA(false, &pchar[170]).fValue); + ppw->m_Stat.oxygenAlarmValue->SetValue(FLOATDATA(false, &pchar[190]).fValue); + ppw->m_RunCfg->SetOxygenAlarmValue(ppw->m_Stat.oxygenAlarmValue->GetValue()); + ppw->m_RunCfg->SetOxygenTargeValue(ppw->m_Stat.printCleanOxygenSetValue->GetValue()); FanFit* al = ppw->m_ExtCfg->m_FanWindFit[ppw->m_ExtCfg->m_SelectedFanWindFit]; - if (al->alarmWind > ppw->m_Stat.windSetValue) { - al->alarmWind = (ppw->m_Stat.windSetValue > 50.0f) ? (ppw->m_Stat.windSetValue - 50.0f) : 1.0f; + if (al->alarmWind > ppw->m_Stat.windSetValue->GetValue()) { + al->alarmWind = (ppw->m_Stat.windSetValue->GetValue() > 50.0f) ? (ppw->m_Stat.windSetValue->GetValue() - 50.0f) : 1.0f; } - ppw->m_Stat.filterTotalUseTime = ((pchar[194] & 0xff) << 8) + (pchar[195] & 0xff); - ppw->m_Stat.usedTimeFromlastBowBack = ((pchar[196] & 0xff) << 8) + (pchar[197] & 0xff); - ppw->m_Stat.bowBackTimes = ((pchar[198] & 0xff) << 8) + (pchar[199] & 0xff); - ppw->m_Stat.hopperTimeLastClean = ((pchar[204] & 0xff) << 8) + (pchar[205] & 0xff); + ppw->m_Stat.filterTotalUseTime->SetValue(((pchar[194] & 0xff) << 8) + (pchar[195] & 0xff)); + ppw->m_Stat.usedTimeFromlastBowBack->SetValue(((pchar[196] & 0xff) << 8) + (pchar[197] & 0xff)); + ppw->m_Stat.bowBackTimes->SetValue(((pchar[198] & 0xff) << 8) + (pchar[199] & 0xff)); + ppw->m_Stat.hopperTimeLastClean->SetValue(((pchar[204] & 0xff) << 8) + (pchar[205] & 0xff)); if (ppw->m_AlarmCfgWrapper->m_PurifierOxygenAlarm) { - if (ppw->m_Stat.filterOxygenValue > ppw->m_RunCfg->m_FilterOxygenAlarmValue) { + if (ppw->m_Stat.filterOxygenValue->GetValue() > ppw->m_RunCfg->m_FilterOxygenAlarmValue) { if (ppw->m_AlarmCfgWrapper->m_PurifierOxygenAlarm->m_AlarmContinueTick > ppw->m_AlarmCfgWrapper->m_PurifierOxygenAlarm->m_CheckAlarmSetTick) { - ppw->m_AlarmCfgWrapper->m_PurifierOxygenAlarm->m_AlarmInfo = to_string(ppw->m_Stat.filterOxygenValue); + ppw->m_AlarmCfgWrapper->m_PurifierOxygenAlarm->m_AlarmInfo = to_string(ppw->m_Stat.filterOxygenValue->GetValue()); SignalService::GetInstance().SetAlarm(ppw->m_AlarmCfgWrapper->m_PurifierOxygenAlarm, true); } else { @@ -272,8 +272,8 @@ void HBDPurifierG3Client::G3ProcReadInfoXT(void *pobject, Command* pcommand) } if (ppCtrl.Result == 0) { unsigned char* arr = (unsigned char*)ppCtrl.pdata; - ppw->m_Stat.ProtectionPressuring = ((arr[0] & 0x10) > 0 ? true : false); - ppw->m_Stat.protectionPressureEnable = ((arr[0] & 0x40) > 0 ? true : false); + ppw->m_Stat.ProtectionPressuring->SetValue((arr[0] & 0x10) > 0 ? true : false); + ppw->m_Stat.protectionPressureEnable ->SetValue((arr[0] & 0x40) > 0 ? true : false); } LeaveCriticalSection(&ppw->m_ValueCS); @@ -305,33 +305,33 @@ void HBDPurifierG3Client::G3ProcReadInfoXT_2(void* pobject, Command* pcommand) unsigned char pdata2 = arr[1]; unsigned char pdata3 = arr[2]; - ppw->m_Stat.midTempOverLimitAlarm = ((pdata1 & 0x1) > 0 ? true : false); //Ч±,ע - ppw->m_Stat.midHighTempOverLimitAlarm = ((pdata1 & 0x2) > 0 ? true : false); //Ч±,ѾΣͣ - ppw->m_Stat.hopperUseLongTimeAlarm = ((pdata1 & 0x4) > 0 ? true : false); //϶ʹʱ, - ppw->m_Stat.highPressureLackValveAlarm = ((pdata1 & 0x8) > 0 ? true : false); //ѹѹ㣬·쳣رգʹȶѹ - ppw->m_Stat.protectionTestFail = ((pdata1 & 0x10) > 0 ? true : false); - ppw->m_Stat.inverterAlarm = ((pdata1 & 0x20) > 0 ? true : false); //Ƶ,Ƿ - ppw->m_Stat.whirlwindJarIsFull = ((pdata1 & 0x40) > 0 ? true : false); - ppw->m_Stat.midInValveOpenAlarm = ((pdata1 & 0x80) > 0 ? true : false); + ppw->m_Stat.midTempOverLimitAlarm->SetValue(((pdata1 & 0x1) > 0 ? true : false)); //中效高温报警,请注意 + ppw->m_Stat.midHighTempOverLimitAlarm->SetValue(((pdata1 & 0x2) > 0 ? true : false)); //中效超高温报警,已经很危险请停机检查 + ppw->m_Stat.hopperUseLongTimeAlarm->SetValue(((pdata1 & 0x4) > 0 ? true : false)); //料斗使用时间过长,请进行清理 + ppw->m_Stat.highPressureLackValveAlarm->SetValue(((pdata1 & 0x8) > 0 ? true : false)); //高压气气压不足,导致阀门异常关闭,请使用稳定气压 + ppw->m_Stat.protectionTestFail->SetValue(((pdata1 & 0x10) > 0 ? true : false)); + ppw->m_Stat.inverterAlarm->SetValue(((pdata1 & 0x20) > 0 ? true : false)); //变频器报警,请检查电机是否正常 + ppw->m_Stat.whirlwindJarIsFull->SetValue(((pdata1 & 0x40) > 0 ? true : false)); + ppw->m_Stat.midInValveOpenAlarm->SetValue(((pdata1 & 0x80) > 0 ? true : false)); - ppw->m_Stat.cycleInValveOpenAlarm = ((pdata2 & 0x1) > 0 ? true : false); //ѭ쳣,鷧ӦǷ - ppw->m_Stat.cycleOutValueOpenAlarm = ((pdata2 & 0x2) > 0 ? true : false); //ѭ쳣鷧ӦǷ - ppw->m_Stat.highPressureLackAlarm = ((pdata2 & 0x4) > 0 ? true : false); //ѹѹ㣬޷豸벹ѹ - ppw->m_Stat.protectedPressureLackAlarm = ((pdata2 & 0x8) > 0 ? true : false); //ѹ㣬޷豸벹ѹ - ppw->m_Stat.midConnectException = ((pdata2 & 0x10) > 0 ? true : false); //Ч쳣Ƿ - ppw->m_Stat.carbinDoorOpenException = ((pdata2 & 0x20) > 0 ? true : false); //Ŵ쳣,رպòŸӦ - ppw->m_Stat.midFilterBlockAlarm = ((pdata2 & 0x40) > 0 ? true : false); //Чо,ִ - ppw->m_Stat.busOutValveNotOpenAlarm = ((pdata2 & 0x80) > 0 ? true : false); //δ򿪣״̬ + ppw->m_Stat.cycleInValveOpenAlarm->SetValue((pdata2 & 0x1) > 0 ? true : false); //循环进气阀打开异常,请检查阀门与感应器是否正常 + ppw->m_Stat.cycleOutValueOpenAlarm->SetValue((pdata2 & 0x2) > 0 ? true : false); //循环出气阀打开异常,请检查阀门与感应器是否正常 + ppw->m_Stat.highPressureLackAlarm->SetValue((pdata2 & 0x4) > 0 ? true : false); //高压气气压不足,无法启动设备请补充压力 + ppw->m_Stat.protectedPressureLackAlarm->SetValue((pdata2 & 0x8) > 0 ? true : false); //保护气气压不足,无法启动设备请补充压力 + ppw->m_Stat.midConnectException->SetValue((pdata2 & 0x10) > 0 ? true : false); //中效室连接异常,请检查是否连接完毕 + ppw->m_Stat.carbinDoorOpenException ->SetValue((pdata2 & 0x20) > 0 ? true : false); //舱门打开异常,请检查关闭好舱门与舱门感应器 + ppw->m_Stat.midFilterBlockAlarm ->SetValue((pdata2 & 0x40) > 0 ? true : false); //中效滤芯堵塞严重,请执行清理工作 + ppw->m_Stat.busOutValveNotOpenAlarm ->SetValue((pdata2 & 0x80) > 0 ? true : false); //总排气阀未打开,请检查总排气阀工作状态 - ppw->m_Stat.busOutValveNotCloseAlarm = ((pdata3 & 0x01) > 0 ? true : false); //δرգ״̬ - ppw->m_Stat.busOutValveNotInPosAlarm = ((pdata3 & 0x02) > 0 ? true : false); //ڲλ״̬״̬ - ppw->m_Stat.printOutValveNotOpenAlarm = ((pdata3 & 0x04) > 0 ? true : false); //ӡδ򿪣ӡ״̬ - ppw->m_Stat.printOutValveNotCloseAlarm = ((pdata3 & 0x08) > 0 ? true : false); //ӡδرգӡ״̬ - ppw->m_Stat.printOutValveNotInPosAlarm = ((pdata3 & 0x10) > 0 ? true : false); //ӡڲλ״̬ӡ״̬ - ppw->m_Stat.inverterComException = ((pdata3 & 0x20) > 0 ? true : false); - ppw->m_Stat.anemometerException = ((pdata3 & 0x40) > 0 ? true : false); - ppw->m_Stat.midOutValveOpenAlarm = ((pdata3 & 0x80) > 0 ? true : false); //ӡڲλ״̬ӡ״̬ - ppw->m_Stat.oxygenSelfTestFail = ((arr[4] & 0x01) > 0 ? true : false); + ppw->m_Stat.busOutValveNotCloseAlarm->SetValue((pdata3 & 0x01) > 0 ? true : false); //总排气阀未关闭,请检查总排气阀工作状态 + ppw->m_Stat.busOutValveNotInPosAlarm->SetValue((pdata3 & 0x02) > 0 ? true : false); //总排气阀处于不到位状态,请检查总排气阀工作状态 + ppw->m_Stat.printOutValveNotOpenAlarm->SetValue((pdata3 & 0x04) > 0 ? true : false); //打印室排气阀未打开,请检查打印室排气阀工作状态 + ppw->m_Stat.printOutValveNotCloseAlarm->SetValue((pdata3 & 0x08) > 0 ? true : false); //打印室排气阀未关闭,请检查打印室排气阀工作状态 + ppw->m_Stat.printOutValveNotInPosAlarm->SetValue((pdata3 & 0x10) > 0 ? true : false); //打印室排气阀处于不到位状态,请检查打印室排气阀工作状态 + ppw->m_Stat.inverterComException->SetValue((pdata3 & 0x20) > 0 ? true : false); + ppw->m_Stat.anemometerException->SetValue((pdata3 & 0x40) > 0 ? true : false); + ppw->m_Stat.midOutValveOpenAlarm->SetValue((pdata3 & 0x80) > 0 ? true : false); //打印室排气阀处于不到位状态,请检查打印室排气阀工作状态 + ppw->m_Stat.oxygenSelfTestFail->SetValue((arr[4] & 0x01) > 0 ? true : false); if (ppw->m_AlarmCfgWrapper->m_PurifierMidTempAlarm) SignalService::GetInstance().SetAlarm(ppw->m_AlarmCfgWrapper->m_PurifierMidTempAlarm, ppw->m_Stat.midTempOverLimitAlarm); @@ -344,12 +344,12 @@ void HBDPurifierG3Client::G3ProcReadInfoXT_2(void* pobject, Command* pcommand) maxWindSetValue.data[1] = pchar[2]; maxWindSetValue.data[2] = pchar[1]; maxWindSetValue.data[3] = pchar[0]; - ppw->m_Stat.maxWindSetValue = maxWindSetValue.fValue; - ppw->m_Stat.shieldMonitorPrintPressure = ((pchar[7] & 0x1) > 0 ? true : false); - ppw->m_Stat.useArgon = ((pchar[7] & 0x2) > 0 ? true : false); + ppw->m_Stat.maxWindSetValue->SetValue(maxWindSetValue.fValue); + ppw->m_Stat.shieldMonitorPrintPressure->SetValue((pchar[7] & 0x1) > 0 ? true : false); + ppw->m_Stat.useArgon->SetValue((pchar[7] & 0x2) > 0 ? true : false); ppw->m_ExtCfg->m_SelectedFanWindFit = ppw->m_Stat.useArgon ? 1 : 0; - ppw->m_Stat.isCoverWind = ((pchar[7] & 0x10) > 0 ? true : false); + ppw->m_Stat.isCoverWind->SetValue((pchar[7] & 0x10) > 0 ? true : false); } if (pCoverWindOffset.Result == 0) { @@ -361,20 +361,20 @@ void HBDPurifierG3Client::G3ProcReadInfoXT_2(void* pobject, Command* pcommand) coverWindOffset.data[1] = pchar[2]; coverWindOffset.data[2] = pchar[1]; coverWindOffset.data[3] = pchar[0]; - ppw->m_Stat.coverWindSpeedOffset = coverWindOffset.fValue; + ppw->m_Stat.coverWindSpeedOffset->SetValue(coverWindOffset.fValue); } if (pWindAct.Result == 0) { unsigned char* pchar = (unsigned char*)pWindAct.pdata; - ppw->m_Stat.anemometerActualValue = FLOATDATA(false, &pchar[0]).fValue; + ppw->m_Stat.anemometerActualValue->SetValue(FLOATDATA(false, &pchar[0]).fValue); } if (pKeepAlive.Result == 0) { char* pchar = (char*)pKeepAlive.pdata; - ppw->m_Stat.purifierType = ((pchar[0] & 0xff) << 8) + (pchar[1] & 0xff); - ppw->m_Stat.keepAlive = ((pchar[2] & 0xff) << 8) + (pchar[3] & 0xff); + ppw->m_Stat.purifierType->SetValue(((pchar[0] & 0xff) << 8) + (pchar[1] & 0xff)); + ppw->m_Stat.keepAlive->SetValue(((pchar[2] & 0xff) << 8) + (pchar[3] & 0xff)); } if (pFreq.Result == 0) @@ -385,37 +385,37 @@ void HBDPurifierG3Client::G3ProcReadInfoXT_2(void* pobject, Command* pcommand) freq.data[1] = pchar[2]; freq.data[2] = pchar[1]; freq.data[3] = pchar[0]; - ppw->m_Stat.fanFreq = freq.fValue; + ppw->m_Stat.fanFreq->SetValue(freq.fValue); } if (pSignal.Result == 0) { char* pchar = (char*)pSignal.pdata; - ppw->m_Stat.coverWindSlowFinish = ((pchar[0] & 0x1) > 0 ? true : false); - ppw->m_Stat.coverWindResumeFinish = ((pchar[0] & 0x2) > 0 ? true : false); + ppw->m_Stat.coverWindSlowFinish->SetValue((pchar[0] & 0x1) > 0 ? true : false); + ppw->m_Stat.coverWindResumeFinish->SetValue((pchar[0] & 0x2) > 0 ? true : false); } if (testRel.Result == 0) { unsigned char* arr = (unsigned char*)testRel.pdata; - ppw->m_Stat.ProtectionPressureSetTime = ((arr[0] & 0xff) << 8) + (arr[1] & 0xff); + ppw->m_Stat.ProtectionPressureSetTime->SetValue(((arr[0] & 0xff) << 8) + (arr[1] & 0xff)); if (arr[2] == 2) { - ppw->m_Stat.ProtectionPressureTestRelFail = true; + ppw->m_Stat.ProtectionPressureTestRelFail->SetValue(true); } - else ppw->m_Stat.ProtectionPressureTestRelFail = false; + else ppw->m_Stat.ProtectionPressureTestRelFail->SetValue(false); if (arr[3] == 2) { - ppw->m_Stat.oxygenSelfTestRelFail = true; + ppw->m_Stat.oxygenSelfTestRelFail->SetValue(true); } - else ppw->m_Stat.oxygenSelfTestRelFail = false; + else ppw->m_Stat.oxygenSelfTestRelFail->SetValue(false); } if (pBlowRel.Result == 0) { unsigned char* arr = (unsigned char*)pBlowRel.pdata; - ppw->m_Stat.blowBackBlowTime = ((arr[0] & 0xff) << 8) + (arr[1] & 0xff); - ppw->m_Stat.blowBackSetTimes = ((arr[4] & 0xff) << 8) + (arr[5] & 0xff); + ppw->m_Stat.blowBackBlowTime->SetValue(((arr[0] & 0xff) << 8) + (arr[1] & 0xff)); + ppw->m_Stat.blowBackSetTimes->SetValue(((arr[4] & 0xff) << 8) + (arr[5] & 0xff)); } LeaveCriticalSection(&ppw->m_ValueCS); } diff --git a/PrintS/Communication/IPGLaserClient.h b/PrintS/Communication/IPGLaserClient.h index 6698e1e..e947de8 100644 --- a/PrintS/Communication/IPGLaserClient.h +++ b/PrintS/Communication/IPGLaserClient.h @@ -100,7 +100,7 @@ public: IPGLaserStateV1() : currentSetpoint(new FloatData("currentSetpoint", u8"激光二极管电流设置")) , laserTemperature(new FloatData("laserTemperature", u8"内部实际温度")) - , outputPower(new StrData("outputPower", u8"输出功率W")) + , outputPower(new StrData("outputPower", u8"输出功率W","OFF")) , moduleErrorCode(new IntData("moduleErrorCode", u8"模块错误代码")) , isCommandBufferOverload(new BoolData("isCommandBufferOverload", u8"指令溢出")) , isOverheat(new BoolData("isOverheat", u8"温度过热")) diff --git a/PrintS/Communication/OxygenClient.h b/PrintS/Communication/OxygenClient.h index e05b3f0..5df0018 100644 --- a/PrintS/Communication/OxygenClient.h +++ b/PrintS/Communication/OxygenClient.h @@ -11,7 +11,7 @@ public: explicit Oxygenstat() : concentrationValue(new FloatData("concentrationValue",u8"浓度值")) , valueUnit(new StrData("valueUnit",u8"浓度单位")) - , scale(new IntData("scale",u8"数值放大倍数")) + , scale(new IntData("scale",u8"数值放大倍数",1)) , tempValue(new FloatData("tempValue",u8"温度值")) , humidityValue(new FloatData("humidityValue",u8"湿度值")) , concentrationAgValue(new FloatData("concentrationAgValue",u8"模拟量")) diff --git a/PrintS/Communication/PurifierClient.cpp b/PrintS/Communication/PurifierClient.cpp index c11b4fd..b3d270e 100644 --- a/PrintS/Communication/PurifierClient.cpp +++ b/PrintS/Communication/PurifierClient.cpp @@ -1,4 +1,4 @@ -#include "PurifierClient.h" +#include "PurifierClient.h" #include "S7Command.h" #include "../global.h" #include "../SystemInfo.h" @@ -29,7 +29,7 @@ void PurifierClient::InitCommand() items[itemFlag].Amount = 6; items[itemFlag].pdata = new unsigned char[6]; - //VD_Чѹʵֵ + //VD_中效过滤器压力实值 itemFlag = 1; items[itemFlag].Area = S7AreaDB; items[itemFlag].WordLen = S7WLByte; @@ -44,10 +44,10 @@ void PurifierClient::InitCommand() S7Command* pcommand2 = new S7Command(S7_COMMAND_READ_INFO, READ_ITEM_COUNT2); TS7DataItem* items2 = pcommand2->getDataItems(); - //Ϣ + //报警信息 itemFlag = 0; - //Ϣ + //报警信息 items2[itemFlag].Area = S7AreaDB; items2[itemFlag].WordLen = S7WLByte; items2[itemFlag].DBNumber = 1; @@ -55,7 +55,7 @@ void PurifierClient::InitCommand() items2[itemFlag].Amount = 2; items2[itemFlag].pdata = new unsigned char[2]; - // + //最大风速 itemFlag = 1; items2[itemFlag].Area = S7AreaDB; items2[itemFlag].WordLen = S7WLByte; @@ -100,7 +100,7 @@ void PurifierClient::InitCommand() pcommand2->isNeedDel = false; - //дֵ + //写测氧值 S7Command* oxygenPressureCom = new S7Command(S7_COMMAND_WRITE,2); TS7DataItem* dataItem = oxygenPressureCom->getDataItems(); dataItem[0].Area = S7AreaDB; @@ -174,64 +174,64 @@ void PurifierClient::ProcReadInfoXT(void *pobject, Command* pcommand) unsigned char mdata3 = arr[3]; unsigned char mdata4 = arr[4]; unsigned char mdata5 = arr[5]; - ppw->m_Stat.isPurifying =((mdata5 & 0x1)>0?true:false); - ppw->m_Stat.isDedusting = ((mdata0 & 0x4) ? true : false); - ppw->m_Stat.isBoxCleaning = ((mdata0 & 0x40) ? true : false); - ppw->m_Stat.isBlowBack = ((mdata1 & 0x2) ? true : false); - ppw->m_Stat.isFilterDiscarding = ((mdata1 & 0x10) ? true : false); - ppw->m_Stat.isFilterCleaning = ((mdata1 & 0x80) ? true : false); - ppw->m_Stat.isHopperCleaning = ((mdata2 & 0x20 )?true:false); + ppw->m_Stat.isPurifying->SetValue(((mdata5 & 0x1) > 0 ? true : false)); + ppw->m_Stat.isDedusting->SetValue(((mdata0 & 0x4) ? true : false)); + ppw->m_Stat.isBoxCleaning->SetValue(((mdata0 & 0x40) ? true : false)); + ppw->m_Stat.isBlowBack->SetValue(((mdata1 & 0x2) ? true : false)); + ppw->m_Stat.isFilterDiscarding->SetValue(((mdata1 & 0x10) ? true : false)); + ppw->m_Stat.isFilterCleaning->SetValue(((mdata1 & 0x80) ? true : false)); + ppw->m_Stat.isHopperCleaning->SetValue(((mdata2 & 0x20) ? true : false)); } if (pPresure.Result == 0) { unsigned char* pchar = (unsigned char*)pPresure.pdata; - ppw->m_Stat.midPressureValue = FLOATDATA(false, &pchar[0]).fValue; - ppw->m_Stat.midPressureDifValue = FLOATDATA(false, &pchar[4]).fValue; - ppw->m_Stat.midTemperatureValue = FLOATDATA(false, &pchar[8]).fValue; - ppw->m_Stat.highPressureDifValue = FLOATDATA(false, &pchar[12]).fValue; - ppw->m_Stat.anemometerActualValue = FLOATDATA(false, &pchar[16]).fValue; - ppw->m_Stat.printPressureValue = FLOATDATA(false, &pchar[20]).fValue; - ppw->m_Stat.boxPressureUpLimit = FLOATDATA(false, &pchar[28]).fValue; - ppw->m_Stat.boxPressureDownLimit = FLOATDATA(false, &pchar[32]).fValue; - ppw->m_Stat.filterOxygenValue = FLOATDATA(false, &pchar[48]).fValue; - ppw->m_Stat.printOxygenValue = FLOATDATA(false, &pchar[60]).fValue; - ppw->m_Stat.midPressureDifAlarmValue = FLOATDATA(false, &pchar[64]).fValue; - ppw->m_Stat.highPressureDifAlarmValue = FLOATDATA(false, &pchar[68]).fValue; - ppw->m_Stat.printOxygenUpSetValue = FLOATDATA(false, &pchar[76]).fValue; - ppw->m_RunCfg->m_WarnOxygen = ppw->m_Stat.printOxygenUpSetValue; + ppw->m_Stat.midPressureValue->SetValue(FLOATDATA(false, &pchar[0]).fValue); + ppw->m_Stat.midPressureDifValue->SetValue(FLOATDATA(false, &pchar[4]).fValue); + ppw->m_Stat.midTemperatureValue->SetValue(FLOATDATA(false, &pchar[8]).fValue); + ppw->m_Stat.highPressureDifValue->SetValue(FLOATDATA(false, &pchar[12]).fValue); + ppw->m_Stat.anemometerActualValue->SetValue(FLOATDATA(false, &pchar[16]).fValue); + ppw->m_Stat.printPressureValue->SetValue(FLOATDATA(false, &pchar[20]).fValue); + ppw->m_Stat.boxPressureUpLimit->SetValue(FLOATDATA(false, &pchar[28]).fValue); + ppw->m_Stat.boxPressureDownLimit->SetValue(FLOATDATA(false, &pchar[32]).fValue); + ppw->m_Stat.filterOxygenValue->SetValue(FLOATDATA(false, &pchar[48]).fValue); + ppw->m_Stat.printOxygenValue->SetValue(FLOATDATA(false, &pchar[60]).fValue); + ppw->m_Stat.midPressureDifAlarmValue->SetValue(FLOATDATA(false, &pchar[64]).fValue); + ppw->m_Stat.highPressureDifAlarmValue->SetValue(FLOATDATA(false, &pchar[68]).fValue); + ppw->m_Stat.printOxygenUpSetValue->SetValue(FLOATDATA(false, &pchar[76]).fValue); + ppw->m_RunCfg->m_WarnOxygen = ppw->m_Stat.printOxygenUpSetValue->GetValue(); - ppw->m_Stat.boxWashTime = ((pchar[110] & 0xff) << 8) + (pchar[111] & 0xff); - ppw->m_Stat.filterWashTime = ((pchar[112] & 0xff) << 8) + (pchar[113] & 0xff); - ppw->m_Stat.boxWashDelayTime = ((pchar[114] & 0xff) << 8) + (pchar[115] & 0xff); - ppw->m_Stat.dedustingWashDelayTime = ((pchar[116] & 0xff) << 8) + (pchar[117] & 0xff); - ppw->m_Stat.hopperCleanRemind = ((pchar[118] & 0xff) << 8) + (pchar[119] & 0xff); + ppw->m_Stat.boxWashTime->SetValue(((pchar[110] & 0xff) << 8) + (pchar[111] & 0xff)); + ppw->m_Stat.filterWashTime->SetValue(((pchar[112] & 0xff) << 8) + (pchar[113] & 0xff)); + ppw->m_Stat.boxWashDelayTime->SetValue(((pchar[114] & 0xff) << 8) + (pchar[115] & 0xff)); + ppw->m_Stat.dedustingWashDelayTime->SetValue(((pchar[116] & 0xff) << 8) + (pchar[117] & 0xff)); + ppw->m_Stat.hopperCleanRemind->SetValue(((pchar[118] & 0xff) << 8) + (pchar[119] & 0xff)); - ppw->m_Stat.printCleanOxygenSetValue = FLOATDATA(false, &pchar[142]).fValue; - ppw->m_Stat.windSetValue = FLOATDATA(false, &pchar[146]).fValue; - ppw->m_Stat.windActualValue = FLOATDATA(false, &pchar[150]).fValue; - ppw->m_Stat.filterCleanOxygenSetValue = FLOATDATA(false, &pchar[158]).fValue; - ppw->m_Stat.midTempHighSetValue = FLOATDATA(false, &pchar[166]).fValue; - ppw->m_Stat.midTempUltraSetValue = FLOATDATA(false, &pchar[170]).fValue; - ppw->m_Stat.oxygenAlarmValue = FLOATDATA(false, &pchar[190]).fValue; + ppw->m_Stat.printCleanOxygenSetValue->SetValue(FLOATDATA(false, &pchar[142]).fValue); + ppw->m_Stat.windSetValue->SetValue(FLOATDATA(false, &pchar[146]).fValue); + ppw->m_Stat.windActualValue->SetValue(FLOATDATA(false, &pchar[150]).fValue); + ppw->m_Stat.filterCleanOxygenSetValue->SetValue(FLOATDATA(false, &pchar[158]).fValue); + ppw->m_Stat.midTempHighSetValue->SetValue(FLOATDATA(false, &pchar[166]).fValue); + ppw->m_Stat.midTempUltraSetValue->SetValue(FLOATDATA(false, &pchar[170]).fValue); + ppw->m_Stat.oxygenAlarmValue->SetValue(FLOATDATA(false, &pchar[190]).fValue); //ppw->m_RunCfg->SetOxygenAlarmValue(ppw->m_Stat.oxygenAlarmValue); //ppw->m_RunCfg->SetOxygenTargeValue(ppw->m_Stat.printCleanOxygenSetValue); - ppw->m_RunCfg->m_AlarmOxygen = ppw->m_Stat.oxygenAlarmValue; - ppw->m_RunCfg->m_TargeOxygen = ppw->m_Stat.printCleanOxygenSetValue + 50; + ppw->m_RunCfg->m_AlarmOxygen = ppw->m_Stat.oxygenAlarmValue->GetValue(); + ppw->m_RunCfg->m_TargeOxygen = ppw->m_Stat.printCleanOxygenSetValue->GetValue() + 50; FanFit* al = ppw->m_ExtCfg->m_FanWindFit[ppw->m_ExtCfg->m_SelectedFanWindFit]; - al->alarmWind = (ppw->m_Stat.windSetValue > 10.0f) ? (ppw->m_Stat.windSetValue - 10.0f) : 0.0f; + al->alarmWind = (ppw->m_Stat.windSetValue->GetValue() > 10.0f) ? (ppw->m_Stat.windSetValue->GetValue() - 10.0f) : 0.0f; - ppw->m_Stat.filterTotalUseTime = ((pchar[194] & 0xff) << 8) + (pchar[195] & 0xff); - ppw->m_Stat.usedTimeFromlastBowBack = ((pchar[196] & 0xff) << 8) + (pchar[197] & 0xff); - ppw->m_Stat.bowBackTimes = ((pchar[198] & 0xff) << 8) + (pchar[199] & 0xff); - ppw->m_Stat.hopperTimeLastClean = ((pchar[204] & 0xff) << 8) + (pchar[205] & 0xff); + ppw->m_Stat.filterTotalUseTime->SetValue(((pchar[194] & 0xff) << 8) + (pchar[195] & 0xff)); + ppw->m_Stat.usedTimeFromlastBowBack->SetValue(((pchar[196] & 0xff) << 8) + (pchar[197] & 0xff)); + ppw->m_Stat.bowBackTimes->SetValue(((pchar[198] & 0xff) << 8) + (pchar[199] & 0xff)); + ppw->m_Stat.hopperTimeLastClean->SetValue(((pchar[204] & 0xff) << 8) + (pchar[205] & 0xff)); if (ppw->m_AlarmCfgWrapper->m_PurifierOxygenAlarm) { - if (ppw->m_Stat.filterOxygenValue > ppw->m_RunCfg->m_FilterOxygenAlarmValue) { + if (ppw->m_Stat.filterOxygenValue->GetValue() > ppw->m_RunCfg->m_FilterOxygenAlarmValue) { if (ppw->m_AlarmCfgWrapper->m_PurifierOxygenAlarm->m_AlarmContinueTick > ppw->m_AlarmCfgWrapper->m_PurifierOxygenAlarm->m_CheckAlarmSetTick) { - ppw->m_AlarmCfgWrapper->m_PurifierOxygenAlarm->m_AlarmInfo = to_string(ppw->m_Stat.filterOxygenValue); + ppw->m_AlarmCfgWrapper->m_PurifierOxygenAlarm->m_AlarmInfo = to_string(ppw->m_Stat.filterOxygenValue->GetValue()); SignalService::GetInstance().SetAlarm(ppw->m_AlarmCfgWrapper->m_PurifierOxygenAlarm, true); } else { @@ -249,22 +249,22 @@ void PurifierClient::ProcReadInfoXT(void *pobject, Command* pcommand) unsigned char* arr = (unsigned char*)pAlarm.pdata; unsigned char pdata1 = arr[0]; unsigned char pdata2 = arr[1]; - ppw->m_Stat.midTempOverLimitAlarm = ((pdata1 & 0x1) > 0 ? true : false); - ppw->m_Stat.midHighTempOverLimitAlarm = ((pdata1 & 0x2) > 0 ? true : false); - ppw->m_Stat.hopperUseLongTimeAlarm = ((pdata1 & 0x4) > 0 ? true : false); - ppw->m_Stat.highPressureLackValveAlarm = ((pdata1 & 0x8) > 0 ? true : false); - ppw->m_Stat.inverterPowerBreak = ((pdata1 & 0x10) > 0 ? true : false); - ppw->m_Stat.inverterAlarm = ((pdata1 & 0x20) > 0 ? true : false); - ppw->m_Stat.innerfilterOpenAlarm = ((pdata1 & 0x40) > 0 ? true : false); - ppw->m_Stat.inverterComException = ((pdata1 & 0x80) > 0 ? true : false); - ppw->m_Stat.cycleInValveOpenAlarm = ((pdata2 & 0x1) > 0 ? true : false); - ppw->m_Stat.cycleOutValueOpenAlarm = ((pdata2 & 0x2) > 0 ? true : false); - ppw->m_Stat.midHighValveOpenAlarm = ((pdata2 & 0x4) > 0 ? true : false); - ppw->m_Stat.innerFilterInValveException = ((pdata2 & 0x8) > 0 ? true : false); - ppw->m_Stat.midUnionValveException = ((pdata2 & 0x10) > 0 ? true : false); - ppw->m_Stat.innerFilterOutValveException = ((pdata2 & 0x20) > 0 ? true : false); - ppw->m_Stat.midFilterBlockAlarm = ((pdata2 & 0x40) > 0 ? true : false); - ppw->m_Stat.highFilterBlockAlarm = ((pdata2 & 0x80) > 0 ? true : false); + ppw->m_Stat.midTempOverLimitAlarm->SetValue(((pdata1 & 0x1) > 0 ? true : false)); + ppw->m_Stat.midHighTempOverLimitAlarm->SetValue(((pdata1 & 0x2) > 0 ? true : false)); + ppw->m_Stat.hopperUseLongTimeAlarm->SetValue(((pdata1 & 0x4) > 0 ? true : false)); + ppw->m_Stat.highPressureLackValveAlarm->SetValue(((pdata1 & 0x8) > 0 ? true : false)); + ppw->m_Stat.inverterPowerBreak->SetValue(((pdata1 & 0x10) > 0 ? true : false)); + ppw->m_Stat.inverterAlarm->SetValue(((pdata1 & 0x20) > 0 ? true : false)); + ppw->m_Stat.innerfilterOpenAlarm->SetValue(((pdata1 & 0x40) > 0 ? true : false)); + ppw->m_Stat.inverterComException->SetValue(((pdata1 & 0x80) > 0 ? true : false)); + ppw->m_Stat.cycleInValveOpenAlarm->SetValue(((pdata2 & 0x1) > 0 ? true : false)); + ppw->m_Stat.cycleOutValueOpenAlarm->SetValue(((pdata2 & 0x2) > 0 ? true : false)); + ppw->m_Stat.midHighValveOpenAlarm->SetValue(((pdata2 & 0x4) > 0 ? true : false)); + ppw->m_Stat.innerFilterInValveException->SetValue(((pdata2 & 0x8) > 0 ? true : false)); + ppw->m_Stat.midUnionValveException->SetValue(((pdata2 & 0x10) > 0 ? true : false)); + ppw->m_Stat.innerFilterOutValveException->SetValue(((pdata2 & 0x20) > 0 ? true : false)); + ppw->m_Stat.midFilterBlockAlarm->SetValue(((pdata2 & 0x40) > 0 ? true : false)); + ppw->m_Stat.highFilterBlockAlarm->SetValue(((pdata2 & 0x80) > 0 ? true : false)); if (ppw->m_AlarmCfgWrapper->m_PurifierMidTempAlarm) SignalService::GetInstance().SetAlarm(ppw->m_AlarmCfgWrapper->m_PurifierMidTempAlarm, ppw->m_Stat.midTempOverLimitAlarm); @@ -307,52 +307,52 @@ void PurifierClient::ProcReadInfoXT2(void *pobject, Command* pcommand) unsigned char* arr = (unsigned char*)pAlarm.pdata; unsigned char pdata1 = arr[0]; unsigned char pdata2 = arr[1]; - ppw->m_Stat.midTempOverLimitAlarm = ((pdata1 & 0x1) > 0 ? true : false); - ppw->m_Stat.midHighTempOverLimitAlarm = ((pdata1 & 0x2) > 0 ? true : false); - ppw->m_Stat.hopperUseLongTimeAlarm = ((pdata1 & 0x4) > 0 ? true : false); - ppw->m_Stat.highPressureLackValveAlarm = ((pdata1 & 0x8) > 0 ? true : false); - ppw->m_Stat.inverterPowerBreak = ((pdata1 & 0x10) > 0 ? true : false); - ppw->m_Stat.inverterAlarm = ((pdata1 & 0x20) > 0 ? true : false); - ppw->m_Stat.innerfilterOpenAlarm = ((pdata1 & 0x40) > 0 ? true : false); - ppw->m_Stat.inverterComException = ((pdata1 & 0x80) > 0 ? true : false); - ppw->m_Stat.cycleInValveOpenAlarm = ((pdata2 & 0x1) > 0 ? true : false); - ppw->m_Stat.cycleOutValueOpenAlarm = ((pdata2 & 0x2) > 0 ? true : false); - ppw->m_Stat.midHighValveOpenAlarm = ((pdata2 & 0x4) > 0 ? true : false); - ppw->m_Stat.innerFilterInValveException = ((pdata2 & 0x8) > 0 ? true : false); - ppw->m_Stat.midUnionValveException = ((pdata2 & 0x10) > 0 ? true : false); - ppw->m_Stat.innerFilterOutValveException = ((pdata2 & 0x20) > 0 ? true : false); - ppw->m_Stat.midFilterBlockAlarm = ((pdata2 & 0x40) > 0 ? true : false); - ppw->m_Stat.highFilterBlockAlarm = ((pdata2 & 0x80) > 0 ? true : false); + ppw->m_Stat.midTempOverLimitAlarm->SetValue(((pdata1 & 0x1) > 0 ? true : false)); + ppw->m_Stat.midHighTempOverLimitAlarm->SetValue(((pdata1 & 0x2) > 0 ? true : false)); + ppw->m_Stat.hopperUseLongTimeAlarm->SetValue(((pdata1 & 0x4) > 0 ? true : false)); + ppw->m_Stat.highPressureLackValveAlarm->SetValue(((pdata1 & 0x8) > 0 ? true : false)); + ppw->m_Stat.inverterPowerBreak->SetValue(((pdata1 & 0x10) > 0 ? true : false)); + ppw->m_Stat.inverterAlarm->SetValue(((pdata1 & 0x20) > 0 ? true : false)); + ppw->m_Stat.innerfilterOpenAlarm->SetValue(((pdata1 & 0x40) > 0 ? true : false)); + ppw->m_Stat.inverterComException->SetValue(((pdata1 & 0x80) > 0 ? true : false)); + ppw->m_Stat.cycleInValveOpenAlarm->SetValue(((pdata2 & 0x1) > 0 ? true : false)); + ppw->m_Stat.cycleOutValueOpenAlarm->SetValue(((pdata2 & 0x2) > 0 ? true : false)); + ppw->m_Stat.midHighValveOpenAlarm->SetValue(((pdata2 & 0x4) > 0 ? true : false)); + ppw->m_Stat.innerFilterInValveException->SetValue(((pdata2 & 0x8) > 0 ? true : false)); + ppw->m_Stat.midUnionValveException->SetValue(((pdata2 & 0x10) > 0 ? true : false)); + ppw->m_Stat.innerFilterOutValveException->SetValue(((pdata2 & 0x20) > 0 ? true : false)); + ppw->m_Stat.midFilterBlockAlarm->SetValue(((pdata2 & 0x40) > 0 ? true : false)); + ppw->m_Stat.highFilterBlockAlarm->SetValue(((pdata2 & 0x80) > 0 ? true : false)); } if (pMaxWind.Result == 0) { unsigned char* pchar = (unsigned char*)pMaxWind.pdata; - ppw->m_Stat.maxWindSetValue = FLOATDATA(false, &pchar[0]).fValue; - ppw->m_Stat.useArgon = ((pchar[7] & 0x2) > 0 ? true : false); - ppw->m_ExtCfg->m_SelectedFanWindFit = ppw->m_Stat.useArgon ? 1 : 0; - ppw->m_Stat.isCoverWind = ((pchar[7] & 0x40) > 0 ? true : false); + ppw->m_Stat.maxWindSetValue->SetValue(FLOATDATA(false, &pchar[0]).fValue); + ppw->m_Stat.useArgon->SetValue((pchar[7] & 0x2) > 0 ? true : false); + ppw->m_ExtCfg->m_SelectedFanWindFit = ppw->m_Stat.useArgon->GetValue() ? 1 : 0; + ppw->m_Stat.isCoverWind->SetValue(((pchar[7] & 0x40) > 0 ? true : false)); } if (pSignal.Result == 0) { unsigned char* pchar = (unsigned char*)pSignal.pdata; - ppw->m_Stat.coverWindSlowFinish = ((pchar[0] & 0x40) > 0 ? true : false); - ppw->m_Stat.coverWindResumeFinish = ((pchar[0] & 0x80) > 0 ? true : false); + ppw->m_Stat.coverWindSlowFinish->SetValue(((pchar[0] & 0x40) > 0 ? true : false)); + ppw->m_Stat.coverWindResumeFinish->SetValue(((pchar[0] & 0x80) > 0 ? true : false)); } if (pType.Result == 0) { unsigned char* pchar = (unsigned char*)pType.pdata; - ppw->m_Stat.purifierType = ((pchar[0] & 0xff) << 8) + (pchar[1] & 0xff); - ppw->m_Stat.keepAlive = ((pchar[2] & 0xff) << 8) + (pchar[3] & 0xff); + ppw->m_Stat.purifierType->SetValue(((pchar[0] & 0xff) << 8) + (pchar[1] & 0xff)); + ppw->m_Stat.keepAlive->SetValue(((pchar[2] & 0xff) << 8) + (pchar[3] & 0xff)); } if (pCoverWindOffset.Result == 0) { unsigned char* pchar = (unsigned char*)pCoverWindOffset.pdata; - ppw->m_Stat.coverWindSpeedOffset = FLOATDATA(false, &pchar[0]).fValue; + ppw->m_Stat.coverWindSpeedOffset->SetValue(FLOATDATA(false, &pchar[0]).fValue); } if (pFreq.Result == 0) { unsigned char* pchar = (unsigned char*)pFreq.pdata; - ppw->m_Stat.fanFreq = FLOATDATA(false, &pchar[0]).fValue; + ppw->m_Stat.fanFreq->SetValue(FLOATDATA(false, &pchar[0]).fValue); } LeaveCriticalSection(&ppw->m_ValueCS); @@ -426,7 +426,7 @@ void PurifierClient::SetMKBit(int dindex, unsigned int waittime) void PurifierClient::SetDedust(bool bvalue) { if (g_isDebug) { - m_Stat.isDedusting = bvalue; + m_Stat.isDedusting->SetValue(bvalue); } if (!IsServerConnected())return; if (bvalue)SetMKBit(10 * 8 + 0,500); @@ -472,7 +472,7 @@ void PurifierClient::SetHopperClean(bool bvalue) void PurifierClient::SetPurify(bool bvalue) { if (g_isDebug) { - m_Stat.isPurifying = bvalue; + m_Stat.isPurifying->SetValue(bvalue); } if (!IsServerConnected())return; if (bvalue)SetMKBit(4 * 8 + 6, 3000); @@ -568,7 +568,7 @@ void PurifierClient::SetPrintCleanOxygenSetValue(float fvalue) void PurifierClient::SetWindValue(float fvalue) { - if (g_isDebug)m_Stat.windActualValue = fvalue; + if (g_isDebug)m_Stat.windActualValue->SetValue(fvalue); if (!IsServerConnected())return; SetDBFloat(146, fvalue); } @@ -686,7 +686,110 @@ void PurifierClient::SetDedustingWashDelayTime(unsigned short value) void PurifierClient::GetStat(Purifierstat_XT& stat) { EnterCriticalSection(&m_ValueCS); - memcpy_s(&stat, sizeof(Purifierstat_XT), &m_Stat, sizeof(Purifierstat_XT)); + //memcpy_s(&stat, sizeof(Purifierstat_XT), &m_Stat, sizeof(Purifierstat_XT)); + stat.isPurifying = m_Stat.isPurifying->GetValue(); + stat.isDedusting = m_Stat.isDedusting->GetValue(); + stat.isBoxCleaning = m_Stat.isBoxCleaning->GetValue(); + stat.isBlowBack = m_Stat.isBlowBack->GetValue(); + stat.isFilterDiscarding = m_Stat.isFilterDiscarding->GetValue(); + stat.isFilterCleaning = m_Stat.isFilterCleaning->GetValue(); + stat.isHopperCleaning = m_Stat.isHopperCleaning->GetValue(); + + stat.midPressureValue = m_Stat.midPressureValue->GetValue(); + stat.midPressureDifValue = m_Stat.midPressureDifValue->GetValue(); + stat.midTemperatureValue = m_Stat.midTemperatureValue->GetValue(); + stat.highPressureDifValue = m_Stat.highPressureDifValue->GetValue(); + stat.anemometerActualValue = m_Stat.anemometerActualValue->GetValue(); + stat.printPressureValue = m_Stat.printPressureValue->GetValue(); + stat.boxPressureUpLimit = m_Stat.boxPressureUpLimit->GetValue(); + stat.boxPressureDownLimit = m_Stat.boxPressureDownLimit->GetValue(); + stat.filterOxygenValue = m_Stat.filterOxygenValue->GetValue(); + stat.printOxygenValue = m_Stat.printOxygenValue->GetValue(); + stat.midPressureDifAlarmValue = m_Stat.midPressureDifAlarmValue->GetValue(); + stat.highPressureDifAlarmValue = m_Stat.highPressureDifAlarmValue->GetValue(); + + stat.filterTotalUseTime = m_Stat.filterTotalUseTime->GetValue(); + stat.usedTimeFromlastBowBack = m_Stat.usedTimeFromlastBowBack->GetValue(); + stat.bowBackTimes = m_Stat.bowBackTimes->GetValue(); + stat.hopperTimeLastClean = m_Stat.hopperTimeLastClean->GetValue(); + + stat.boxWashTime = m_Stat.boxWashTime->GetValue(); + stat.filterWashTime = m_Stat.filterWashTime->GetValue(); + stat.boxWashDelayTime = m_Stat.boxWashDelayTime->GetValue(); + stat.dedustingWashDelayTime = m_Stat.dedustingWashDelayTime->GetValue(); + stat.hopperCleanRemind = m_Stat.hopperCleanRemind->GetValue(); + stat.printCleanOxygenSetValue = m_Stat.printCleanOxygenSetValue->GetValue(); + stat.windSetValue = m_Stat.windSetValue->GetValue(); + stat.windActualValue = m_Stat.windActualValue->GetValue(); + stat.maxWindSetValue = m_Stat.maxWindSetValue->GetValue(); + stat.useArgon = m_Stat.useArgon->GetValue(); + stat.printOxygenUpSetValue = m_Stat.printOxygenUpSetValue->GetValue(); + stat.oxygenAlarmValue = m_Stat.oxygenAlarmValue->GetValue(); + stat.filterCleanOxygenSetValue = m_Stat.filterCleanOxygenSetValue->GetValue(); + stat.midTempHighSetValue = m_Stat.midTempHighSetValue->GetValue(); + stat.midTempUltraSetValue = m_Stat.midTempUltraSetValue->GetValue(); + stat.pressureRangeUpLimit = m_Stat.pressureRangeUpLimit->GetValue(); + stat.pressureRangeDownLimit = m_Stat.pressureRangeDownLimit->GetValue(); + stat.fanFreq = m_Stat.fanFreq->GetValue(); + stat.midTempOverLimitAlarm = m_Stat.midTempOverLimitAlarm->GetValue(); + stat.midHighTempOverLimitAlarm = m_Stat.midHighTempOverLimitAlarm->GetValue(); + stat.hopperUseLongTimeAlarm = m_Stat.hopperUseLongTimeAlarm->GetValue(); + stat.highPressureLackValveAlarm = m_Stat.highPressureLackValveAlarm->GetValue(); + stat.protectionTestFail = m_Stat.protectionTestFail->GetValue(); + stat.inverterPowerBreak = m_Stat.inverterPowerBreak->GetValue(); + stat.inverterAlarm = m_Stat.inverterAlarm->GetValue(); + stat.whirlwindJarIsFull = m_Stat.whirlwindJarIsFull->GetValue(); + stat.midInValveOpenAlarm = m_Stat.midInValveOpenAlarm->GetValue(); + stat.midOutValveOpenAlarm = m_Stat.midOutValveOpenAlarm->GetValue(); + stat.anemometerException = m_Stat.anemometerException->GetValue(); + stat.oxygenSelfTestFail = m_Stat.oxygenSelfTestFail->GetValue(); + stat.innerfilterOpenAlarm = m_Stat.innerfilterOpenAlarm->GetValue(); + stat.inverterComException = m_Stat.inverterComException->GetValue(); + stat.purifierSevereAbnormalExhaust = m_Stat.purifierSevereAbnormalExhaust->GetValue(); + + stat.cycleInValveOpenAlarm = m_Stat.cycleInValveOpenAlarm->GetValue(); + stat.cycleOutValueOpenAlarm = m_Stat.cycleOutValueOpenAlarm->GetValue(); + stat.midHighValveOpenAlarm = m_Stat.midHighValveOpenAlarm->GetValue(); + stat.innerFilterInValveException = m_Stat.innerFilterInValveException->GetValue(); + stat.midUnionValveException = m_Stat.midUnionValveException->GetValue(); + stat.innerFilterOutValveException = m_Stat.innerFilterOutValveException->GetValue(); + stat.midFilterBlockAlarm = m_Stat.midFilterBlockAlarm->GetValue(); + stat.highFilterBlockAlarm = m_Stat.highFilterBlockAlarm->GetValue(); + stat.highPressureLackAlarm = m_Stat.highPressureLackAlarm->GetValue(); + stat.protectedPressureLackAlarm = m_Stat.protectedPressureLackAlarm->GetValue(); + stat.midConnectException = m_Stat.midConnectException->GetValue(); + stat.carbinDoorOpenException = m_Stat.carbinDoorOpenException->GetValue(); + stat.busOutValveNotOpenAlarm = m_Stat.busOutValveNotOpenAlarm->GetValue(); + + stat.busOutValveNotCloseAlarm = m_Stat.busOutValveNotCloseAlarm->GetValue(); + stat.busOutValveNotInPosAlarm = m_Stat.busOutValveNotInPosAlarm->GetValue(); + stat.printOutValveNotOpenAlarm = m_Stat.printOutValveNotOpenAlarm->GetValue(); + stat.printOutValveNotCloseAlarm = m_Stat.printOutValveNotCloseAlarm->GetValue(); + stat.printOutValveNotInPosAlarm = m_Stat.printOutValveNotInPosAlarm->GetValue(); + + stat.inverterDonotWorkWhenDedust = m_Stat.inverterDonotWorkWhenDedust->GetValue(); + stat.printOxygenExceptWhenDedust = m_Stat.printOxygenExceptWhenDedust->GetValue(); + stat.tempExceptWhenDedust = m_Stat.tempExceptWhenDedust->GetValue(); + stat.highPressureExceptWhenDedust = m_Stat.highPressureExceptWhenDedust->GetValue(); + stat.windExceptWhenDedust = m_Stat.windExceptWhenDedust->GetValue(); + + stat.coverWindSpeedOffset = m_Stat.coverWindSpeedOffset->GetValue(); + stat.isCoverWind = m_Stat.isCoverWind->GetValue(); + stat.shieldMonitorPrintPressure = m_Stat.shieldMonitorPrintPressure->GetValue(); + + stat.coverWindSlowFinish = m_Stat.coverWindSlowFinish->GetValue(); + stat.coverWindResumeFinish = m_Stat.coverWindResumeFinish->GetValue(); + stat.purifierType = m_Stat.purifierType->GetValue(); + stat.keepAlive = m_Stat.keepAlive->GetValue(); + stat.protectionPressureEnable = m_Stat.protectionPressureEnable->GetValue(); + + stat.ProtectionPressureTestRelFail = m_Stat.ProtectionPressureTestRelFail->GetValue(); + stat.oxygenSelfTestRelFail = m_Stat.oxygenSelfTestRelFail->GetValue(); + stat.ProtectionPressuring = m_Stat.ProtectionPressuring->GetValue(); + stat.ProtectionPressureSetTime = m_Stat.ProtectionPressureSetTime->GetValue(); + stat.blowBackSetTimes = m_Stat.blowBackSetTimes->GetValue(); + stat.blowBackBlowTime = m_Stat.blowBackBlowTime->GetValue(); + memcpy_s(&stat.baseStat, sizeof(BaseStat), &m_BaseStat, sizeof(BaseStat)); LeaveCriticalSection(&m_ValueCS); } @@ -746,7 +849,7 @@ void PurifierClient::SetCoverWindOffset(float offset) } void PurifierClient::SetShieldMonitorPrintPressure(bool bvalue) { - if (g_isDebug)m_Stat.shieldMonitorPrintPressure = bvalue; + if (g_isDebug)m_Stat.shieldMonitorPrintPressure->SetValue(bvalue); if (!IsServerConnected())return; SetBit(557 * 8, bvalue); } diff --git a/PrintS/Communication/PurifierClient.h b/PrintS/Communication/PurifierClient.h index cd77974..1295f23 100644 --- a/PrintS/Communication/PurifierClient.h +++ b/PrintS/Communication/PurifierClient.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #include "BaseClient.h" #include "../config/ConfigManager.h" #include "Snap7/s7_client.h" @@ -64,16 +64,16 @@ public: keepAlive = 0; - cycleInValveOpenAlarm = false; //ѭ쳣,鷧ӦǷ - cycleOutValueOpenAlarm = false; //ѭ쳣鷧ӦǷ - highPressureLackAlarm = false; //ѹѹ㣬޷豸벹ѹ - protectedPressureLackAlarm = false; //ѹ㣬޷豸벹ѹ - midFilterBlockAlarm = false; //Чо,ִ - midTempOverLimitAlarm = false; //Ч±,ע - midHighTempOverLimitAlarm = false; //Ч±,ѾΣͣ - hopperUseLongTimeAlarm = false; //϶ʹʱ, - highPressureLackValveAlarm = false; //ѹѹ㣬·쳣رգʹȶѹ - inverterAlarm = false; //Ƶ,Ƿ + cycleInValveOpenAlarm = false; //循环进气阀打开异常,请检查阀门与感应器是否正常 + cycleOutValueOpenAlarm = false; //循环出气阀打开异常,请检查阀门与感应器是否正常 + highPressureLackAlarm = false; //高压气气压不足,无法启动设备请补充压力 + protectedPressureLackAlarm = false; //保护气气压不足,无法启动设备请补充压力 + midFilterBlockAlarm = false; //中效滤芯堵塞严重,请执行清理工作 + midTempOverLimitAlarm = false; //中效高温报警,请注意 + midHighTempOverLimitAlarm = false; //中效超高温报警,已经很危险请停机检查 + hopperUseLongTimeAlarm = false; //料斗使用时间过长,请进行清理 + highPressureLackValveAlarm = false; //高压气气压不足,导致阀门异常关闭,请使用稳定气压 + inverterAlarm = false; //变频器报警,请检查电机是否正常 protectionTestFail = false; inverterPowerBreak = false; shieldMonitorPrintPressure = false; @@ -92,23 +92,23 @@ public: coverWindSlowFinish = false; coverWindResumeFinish = true; anemometerException = false; - midConnectException = false; //Ч쳣Ƿ - carbinDoorOpenException = false; //Ŵ쳣,رպòŸӦ - busOutValveNotOpenAlarm = false; //δ򿪣״̬ + midConnectException = false; //中效室连接异常,请检查是否连接完毕 + carbinDoorOpenException = false; //舱门打开异常,请检查关闭好舱门与舱门感应器 + busOutValveNotOpenAlarm = false; //总排气阀未打开,请检查总排气阀工作状态 - busOutValveNotCloseAlarm = false; //δرգ״̬ - busOutValveNotInPosAlarm = false; //ڲλ״̬״̬ - printOutValveNotOpenAlarm = false; //ӡδ򿪣ӡ״̬ - printOutValveNotCloseAlarm = false; //ӡδرգӡ״̬ - printOutValveNotInPosAlarm = false; //ӡڲλ״̬ӡ״̬ + busOutValveNotCloseAlarm = false; //总排气阀未关闭,请检查总排气阀工作状态 + busOutValveNotInPosAlarm = false; //总排气阀处于不到位状态,请检查总排气阀工作状态 + printOutValveNotOpenAlarm = false; //打印室排气阀未打开,请检查打印室排气阀工作状态 + printOutValveNotCloseAlarm = false; //打印室排气阀未关闭,请检查打印室排气阀工作状态 + printOutValveNotInPosAlarm = false; //打印室排气阀处于不到位状态,请检查打印室排气阀工作状态 //fanFrequency = 0.0f; purifierSevereAbnormalExhaust = false; - inverterDonotWorkWhenDedust = false; //ѭ̣Ƶ쳣 - printOxygenExceptWhenDedust = false; //ѭ̣ӡ쳣 - tempExceptWhenDedust = false; //ѭ̣иЧ쳣 - highPressureExceptWhenDedust = false; //ѭ̣иЧ쳣 - windExceptWhenDedust = false; //ѭ̣쳣 + inverterDonotWorkWhenDedust = false; //循环过程,变频器不运行异常 + printOxygenExceptWhenDedust = false; //循环过程,打印室氧含量超限异常 + tempExceptWhenDedust = false; //循环过程,中高效超温异常 + highPressureExceptWhenDedust = false; //循环过程,中高效超温异常 + windExceptWhenDedust = false; //循环过程,风速异常报警 protectionPressureEnable = false; ProtectionPressureTestRelFail = false; @@ -126,99 +126,99 @@ public: public: BaseStat baseStat; - bool isPurifying; //һϴ - bool isDedusting; //ڳ - bool isBoxCleaning; //ϴ - bool isBlowBack; //ڷ - bool isFilterDiscarding; //оϴ - bool isFilterCleaning; //ϴ - bool isHopperCleaning; //϶ϴ + bool isPurifying; //在一键清洗 + bool isDedusting; //在除尘 + bool isBoxCleaning; //箱体在清洗 + bool isBlowBack; //在反吹 + bool isFilterDiscarding; //滤芯废处理 + bool isFilterCleaning; //过滤器在清洗 + bool isHopperCleaning; //料斗在清洗 - float midPressureValue; //Чѹʵֵ - float midPressureDifValue; //Чѹֵ - float midTemperatureValue; //Ч¶ֵ - float highPressureDifValue; //Чѹֵ - float anemometerActualValue; //ټʵֵ - float printPressureValue; //ӡѹ - float boxPressureUpLimit; //ѹ趨 - float boxPressureDownLimit; //ѹ趨 - float filterOxygenValue; // ʵֵ - float printOxygenValue; //ӡ - float midPressureDifAlarmValue; //Чѹ - float highPressureDifAlarmValue; //Чѹ + float midPressureValue; //中效过滤器压力实值 + float midPressureDifValue; //中效过滤器压差值 + float midTemperatureValue; //中效过滤器温度值 + float highPressureDifValue; //高效过滤器压差值 + float anemometerActualValue; //风速计实际值 + float printPressureValue; //打印室压力 + float boxPressureUpLimit; //箱体压力上限设定 + float boxPressureDownLimit; //箱体压力下限设定 + float filterOxygenValue; //过滤器氧含量 实际值 + float printOxygenValue; //打印室氧含量 + float midPressureDifAlarmValue; //中效过滤器压差报警设 + float highPressureDifAlarmValue; //高效过滤器压差报警设 - unsigned short filterTotalUseTime; //оʹʱ - unsigned short usedTimeFromlastBowBack; //ϴηʹʱ - unsigned short bowBackTimes; //ܴ - unsigned short hopperTimeLastClean; //϶ϴʹʱ + unsigned short filterTotalUseTime; //滤芯使用总时间 + unsigned short usedTimeFromlastBowBack; //上次反吹后已使用时间 + unsigned short bowBackTimes; //反吹总次数 + unsigned short hopperTimeLastClean; //料斗上次清理后已使用时间 - unsigned short boxWashTime; //屾ϴʱ - unsigned short filterWashTime; //ϴʱ - unsigned short boxWashDelayTime; // ӡϴͺ - unsigned short dedustingWashDelayTime; //ϵͳϴͺ - unsigned short hopperCleanRemind; //϶趨 + unsigned short boxWashTime; //箱体本次清洗时间 + unsigned short filterWashTime; //过滤器清洗时间 + unsigned short boxWashDelayTime; // 打印机清洗滞后分钟 + unsigned short dedustingWashDelayTime; //除尘系统清洗滞后分钟 + unsigned short hopperCleanRemind; //清理料斗提醒设定 - float printCleanOxygenSetValue; //ӡϴ - float windSetValue; //趨 - float windActualValue; //ʵֵ - float maxWindSetValue; //ֵ - bool useArgon; //ʹ + float printCleanOxygenSetValue; //打印室氧清洗氧含量设 + float windSetValue; //风速设定 + float windActualValue; //风速实际值 + float maxWindSetValue; //风速最大值 + bool useArgon; //使用氩气 - float printOxygenUpSetValue; //ӡ趨 - float oxygenAlarmValue; //ӡ趨 - float filterCleanOxygenSetValue; //ϴ趨 - float midTempHighSetValue; //Ч±趨 - float midTempUltraSetValue; //Ч±趨 - float pressureRangeUpLimit; //ѹ趨 - float pressureRangeDownLimit; //ѹ趨 + float printOxygenUpSetValue; //打印氧上限设定 + float oxygenAlarmValue; //打印氧超上限设定 + float filterCleanOxygenSetValue; //过滤器清洗氧含量设定 + float midTempHighSetValue; //中效高温报警设定 + float midTempUltraSetValue; //中效超高温报警设定 + float pressureRangeUpLimit; //压力量程上限设定 + float pressureRangeDownLimit; //压力量程下限设定 - float fanFreq; //Ƶ + float fanFreq; //风机频率 - bool midTempOverLimitAlarm; //Ч±,ע - bool midHighTempOverLimitAlarm; //Ч±,ѾΣͣ - bool hopperUseLongTimeAlarm; //϶ʹʱ, - bool highPressureLackValveAlarm; //ѹѹ㣬·쳣رգʹȶѹ - bool protectionTestFail; //ѹʧ - bool inverterPowerBreak; //ƵԴϿ - bool inverterAlarm; //Ƶ,Ƿ - bool whirlwindJarIsFull; //װۣ - bool midInValveOpenAlarm; //Ч쳣 - bool midOutValveOpenAlarm; //Ч쳣 - bool anemometerException; //쳣 - bool oxygenSelfTestFail; //Բʧ - bool innerfilterOpenAlarm; //ڹ˴ӡҷ쳣,鷧ӦǷ - bool inverterComException; //ƵͨѶ쳣 - bool purifierSevereAbnormalExhaust; //쳣 + bool midTempOverLimitAlarm; //中效高温报警,请注意 + bool midHighTempOverLimitAlarm; //中效超高温报警,已经很危险请停机检查 + bool hopperUseLongTimeAlarm; //料斗使用时间过长,请进行清理 + bool highPressureLackValveAlarm; //高压气气压不足,导致阀门异常关闭,请使用稳定气压 + bool protectionTestFail; //保压测试失败 + bool inverterPowerBreak; //变频器电源断开 + bool inverterAlarm; //变频器报警,请检查电机是否正常 + bool whirlwindJarIsFull; //旋风罐装满粉,请清理 + bool midInValveOpenAlarm; //中效进气阀打开异常 + bool midOutValveOpenAlarm; //中效出气阀打开异常 + bool anemometerException; //风速仪异常 + bool oxygenSelfTestFail; //氧自测试失败 + bool innerfilterOpenAlarm; //内过滤打印室废气阀打开异常,请检查阀门与感应器是否正常 + bool inverterComException; //变频器通讯异常 + bool purifierSevereAbnormalExhaust; //净化器排气严重异常 - bool cycleInValveOpenAlarm; //ѭ쳣,鷧ӦǷ - bool cycleOutValueOpenAlarm; //ѭ쳣鷧ӦǷ - bool midHighValveOpenAlarm; //иЧ쳣鷧ӦǷ - bool innerFilterInValveException; //ڹѭ쳣鷧ӦǷ - bool midUnionValveException; //ڹЧͨ쳣,鷧ӦǷ - bool innerFilterOutValveException; //ڹѭ쳣,鷧ӦǷ - bool midFilterBlockAlarm; //Чо,ִ - bool highFilterBlockAlarm; //Чо,ִ - bool highPressureLackAlarm; //ѹѹ㣬޷豸벹ѹ - bool protectedPressureLackAlarm; //ѹ㣬޷豸벹ѹ - bool midConnectException; //Ч쳣Ƿ - bool carbinDoorOpenException; //Ŵ쳣,رպòŸӦ - bool busOutValveNotOpenAlarm; //δ򿪣״̬ + bool cycleInValveOpenAlarm; //循环进气阀打开异常,请检查阀门与感应器是否正常 + bool cycleOutValueOpenAlarm; //循环出气阀打开异常,请检查阀门与感应器是否正常 + bool midHighValveOpenAlarm; //中高效阀打开异常,请检查阀门与感应器是否正常 + bool innerFilterInValveException; //内过滤循环进气阀门异常,请检查阀门与感应器是否正常 + bool midUnionValveException; //内过滤中效联通阀打开异常,请检查阀门与感应器是否正常 + bool innerFilterOutValveException; //内过滤循环出气阀打开异常,请检查阀门与感应器是否正常 + bool midFilterBlockAlarm; //中效滤芯堵塞严重,请执行清理工作 + bool highFilterBlockAlarm; //高效滤芯堵塞严重,请执行清理工作 + bool highPressureLackAlarm; //高压气气压不足,无法启动设备请补充压力 + bool protectedPressureLackAlarm; //保护气气压不足,无法启动设备请补充压力 + bool midConnectException; //中效室连接异常,请检查是否连接完毕 + bool carbinDoorOpenException; //舱门打开异常,请检查关闭好舱门与舱门感应器 + bool busOutValveNotOpenAlarm; //总排气阀未打开,请检查总排气阀工作状态 - bool busOutValveNotCloseAlarm; //δرգ״̬ - bool busOutValveNotInPosAlarm; //ڲλ״̬״̬ - bool printOutValveNotOpenAlarm; //ӡδ򿪣ӡ״̬ - bool printOutValveNotCloseAlarm; //ӡδرգӡ״̬ - bool printOutValveNotInPosAlarm; //ӡڲλ״̬ӡ״̬ + bool busOutValveNotCloseAlarm; //总排气阀未关闭,请检查总排气阀工作状态 + bool busOutValveNotInPosAlarm; //总排气阀处于不到位状态,请检查总排气阀工作状态 + bool printOutValveNotOpenAlarm; //打印室排气阀未打开,请检查打印室排气阀工作状态 + bool printOutValveNotCloseAlarm; //打印室排气阀未关闭,请检查打印室排气阀工作状态 + bool printOutValveNotInPosAlarm; //打印室排气阀处于不到位状态,请检查打印室排气阀工作状态 - bool inverterDonotWorkWhenDedust; //ѭ̣Ƶ쳣 - bool printOxygenExceptWhenDedust; //ѭ̣ӡ쳣 - bool tempExceptWhenDedust; //ѭ̣иЧ쳣 - bool highPressureExceptWhenDedust; //ѭ̣иЧ쳣 - bool windExceptWhenDedust; //ѭ̣쳣 + bool inverterDonotWorkWhenDedust; //循环过程,变频器不运行异常 + bool printOxygenExceptWhenDedust; //循环过程,打印室氧含量超限异常 + bool tempExceptWhenDedust; //循环过程,中高效超温异常 + bool highPressureExceptWhenDedust; //循环过程,中高效超温异常 + bool windExceptWhenDedust; //循环过程,风速异常报警 - float coverWindSpeedOffset; //̷۷ٲֵ - bool isCoverWind; //̷轵 - bool shieldMonitorPrintPressure; //μӡѹ + float coverWindSpeedOffset; //铺粉风速差值 + bool isCoverWind; //铺粉骤降风速 + bool shieldMonitorPrintPressure; //屏蔽监测打印压力 bool coverWindSlowFinish; bool coverWindResumeFinish; @@ -235,6 +235,344 @@ public: unsigned short blowBackBlowTime; }; +#pragma pack(1) +class PurifierParam +{ +public: + PurifierParam() + : isPurifying(new BoolData("isPurifying", u8"在一键清洗")) + , isDedusting(new BoolData("isDedusting", u8"在除尘")) + , isBoxCleaning(new BoolData("isBoxCleaning", u8"箱体在清洗")) + , isBlowBack(new BoolData("isBlowBack", u8"在反吹")) + , isFilterDiscarding(new BoolData("isFilterDiscarding", u8"滤芯废处理")) + , isFilterCleaning(new BoolData("isFilterCleaning", u8"过滤器在清洗")) + , isHopperCleaning(new BoolData("isHopperCleaning", u8"料斗在清洗")) + , midPressureValue(new FloatData("midPressureValue", u8"中效过滤器压力实值")) + , midPressureDifValue(new FloatData("midPressureDifValue", u8"中效过滤器压差值")) + , midTemperatureValue(new FloatData("midTemperatureValue", u8"中效过滤器温度值")) + , highPressureDifValue(new FloatData("highPressureDifValue", u8"高效过滤器压差值")) + , anemometerActualValue(new FloatData("anemometerActualValue", u8"风速计实际值")) + , printPressureValue(new FloatData("printPressureValue", u8"打印室压力")) + , boxPressureUpLimit(new FloatData("boxPressureUpLimit", u8"箱体压力上限设定")) + , boxPressureDownLimit(new FloatData("boxPressureDownLimit", u8"箱体压力下限设定")) + , filterOxygenValue(new FloatData("filterOxygenValue", u8"过滤器氧含量 实际值")) + , printOxygenValue(new FloatData("printOxygenValue", u8"打印室氧含量")) + , midPressureDifAlarmValue(new FloatData("midPressureDifAlarmValue", u8"中效过滤器压差报警设")) + , highPressureDifAlarmValue(new FloatData("highPressureDifAlarmValue", u8"高效过滤器压差报警设")) + , filterTotalUseTime(new UShortData("filterTotalUseTime", u8"滤芯使用总时间")) + , usedTimeFromlastBowBack(new UShortData("usedTimeFromlastBowBack", u8"上次反吹后已使用时间")) + , bowBackTimes(new UShortData("bowBackTimes", u8"反吹总次数")) + , hopperTimeLastClean(new UShortData("hopperTimeLastClean", u8"料斗上次清理后已使用时间")) + , boxWashTime(new UShortData("boxWashTime", u8"箱体本次清洗时间")) + , filterWashTime(new UShortData("filterWashTime", u8"过滤器清洗时间")) + , boxWashDelayTime(new UShortData("boxWashDelayTime", u8"打印机清洗滞后分钟")) + , dedustingWashDelayTime(new UShortData("dedustingWashDelayTime", u8"除尘系统清洗滞后分钟")) + , hopperCleanRemind(new UShortData("hopperCleanRemind", u8"清理料斗提醒设定")) + + , printCleanOxygenSetValue(new FloatData("printCleanOxygenSetValue", u8"打印室氧清洗氧含量设")) + , windSetValue(new FloatData("windSetValue", u8"风速设定")) + , windActualValue(new FloatData("windActualValue", u8"风速实际值")) + , maxWindSetValue(new FloatData("maxWindSetValue", u8"风速最大值")) + , useArgon(new BoolData("useArgon", u8"使用氩气")) + + , printOxygenUpSetValue(new FloatData("printOxygenUpSetValue", u8"打印氧上限设定")) + , oxygenAlarmValue(new FloatData("oxygenAlarmValue", u8"打印氧超上限设定")) + , filterCleanOxygenSetValue(new FloatData("filterCleanOxygenSetValue", u8"过滤器清洗氧含量设定")) + , midTempHighSetValue(new FloatData("midTempHighSetValue", u8"中效高温报警设定")) + , midTempUltraSetValue(new FloatData("midTempUltraSetValue", u8"中效超高温报警设定")) + , pressureRangeUpLimit(new FloatData("pressureRangeUpLimit", u8"压力量程上限设定")) + , pressureRangeDownLimit(new FloatData("pressureRangeDownLimit", u8"压力量程下限设定")) + , fanFreq(new FloatData("fanFreq", u8"风机频率")) + , midTempOverLimitAlarm(new BoolData("midTempOverLimitAlarm", u8"中效高温报警,请注意")) + , midHighTempOverLimitAlarm(new BoolData("midHighTempOverLimitAlarm", u8"中效超高温报警,已经很危险请停机检查")) + , hopperUseLongTimeAlarm(new BoolData("hopperUseLongTimeAlarm", u8"料斗使用时间过长,请进行清理")) + , highPressureLackValveAlarm(new BoolData("highPressureLackValveAlarm", u8"高压气气压不足,导致阀门异常关闭,请使用稳定气压")) + , protectionTestFail(new BoolData("protectionTestFail", u8"保压测试失败")) + , inverterPowerBreak(new BoolData("inverterPowerBreak", u8"变频器电源断开")) + , inverterAlarm(new BoolData("inverterAlarm", u8"变频器报警,请检查电机是否正常")) + , whirlwindJarIsFull(new BoolData("whirlwindJarIsFull", u8"旋风罐装满粉,请清理")) + , midInValveOpenAlarm(new BoolData("midInValveOpenAlarm", u8"中效进气阀打开异常")) + , midOutValveOpenAlarm(new BoolData("midOutValveOpenAlarm", u8"中效出气阀打开异常")) + , anemometerException(new BoolData("anemometerException", u8"风速仪异常")) + , oxygenSelfTestFail(new BoolData("oxygenSelfTestFail", u8"氧自测试失败")) + , innerfilterOpenAlarm(new BoolData("innerfilterOpenAlarm", u8"内过滤打印室废气阀打开异常,请检查阀门与感应器是否正常")) + , inverterComException(new BoolData("inverterComException", u8"变频器通讯异常")) + , purifierSevereAbnormalExhaust(new BoolData("purifierSevereAbnormalExhaust", u8"净化器排气严重异常")) + , cycleInValveOpenAlarm(new BoolData("cycleInValveOpenAlarm", u8"循环进气阀打开异常,请检查阀门与感应器是否正常")) + , cycleOutValueOpenAlarm(new BoolData("cycleOutValueOpenAlarm", u8"循环出气阀打开异常,请检查阀门与感应器是否正常")) + , midHighValveOpenAlarm(new BoolData("midHighValveOpenAlarm", u8"中高效阀打开异常,请检查阀门与感应器是否正常")) + , innerFilterInValveException(new BoolData("innerFilterInValveException", u8"内过滤循环进气阀门异常,请检查阀门与感应器是否正常")) + , midUnionValveException(new BoolData("midUnionValveException", u8"内过滤中效联通阀打开异常,请检查阀门与感应器是否正常")) + , innerFilterOutValveException(new BoolData("innerFilterOutValveException", u8"内过滤循环出气阀打开异常,请检查阀门与感应器是否正常")) + , midFilterBlockAlarm(new BoolData("midFilterBlockAlarm", u8"中效滤芯堵塞严重,请执行清理工作")) + , highFilterBlockAlarm(new BoolData("highFilterBlockAlarm", u8"高效滤芯堵塞严重,请执行清理工作")) + , highPressureLackAlarm(new BoolData("highPressureLackAlarm", u8"高压气气压不足,无法启动设备请补充压力")) + , protectedPressureLackAlarm(new BoolData("protectedPressureLackAlarm", u8"保护气气压不足,无法启动设备请补充压力")) + , midConnectException(new BoolData("midConnectException", u8"中效室连接异常,请检查是否连接完毕")) + , carbinDoorOpenException(new BoolData("carbinDoorOpenException", u8"舱门打开异常,请检查关闭好舱门与舱门感应器")) + , busOutValveNotOpenAlarm(new BoolData("busOutValveNotOpenAlarm", u8"总排气阀未打开,请检查总排气阀工作状态")) + , busOutValveNotCloseAlarm(new BoolData("busOutValveNotCloseAlarm", u8"总排气阀未关闭,请检查总排气阀工作状态")) + , busOutValveNotInPosAlarm(new BoolData("busOutValveNotInPosAlarm", u8"总排气阀处于不到位状态,请检查总排气阀工作状态")) + , printOutValveNotOpenAlarm(new BoolData("printOutValveNotOpenAlarm", u8"打印室排气阀未打开,请检查打印室排气阀工作状态")) + , printOutValveNotCloseAlarm(new BoolData("printOutValveNotCloseAlarm", u8"打印室排气阀未关闭,请检查打印室排气阀工作状态")) + , printOutValveNotInPosAlarm(new BoolData("printOutValveNotInPosAlarm", u8"打印室排气阀处于不到位状态,请检查打印室排气阀工作状态")) + , inverterDonotWorkWhenDedust(new BoolData("inverterDonotWorkWhenDedust", u8"循环过程,变频器不运行异常")) + , printOxygenExceptWhenDedust(new BoolData("printOxygenExceptWhenDedust", u8"循环过程,打印室氧含量超限异常")) + , tempExceptWhenDedust(new BoolData("tempExceptWhenDedust", u8"循环过程,中高效超温异常")) + , highPressureExceptWhenDedust(new BoolData("highPressureExceptWhenDedust", u8"循环过程,中高效超温异常")) + , windExceptWhenDedust(new BoolData("windExceptWhenDedust", u8"循环过程,风速异常报警")) + , coverWindSpeedOffset(new FloatData("coverWindSpeedOffset", u8"铺粉风速差值")) + , isCoverWind(new BoolData("isCoverWind", u8"铺粉骤降风速")) + , shieldMonitorPrintPressure(new BoolData("shieldMonitorPrintPressure", u8"屏蔽监测打印压力")) + , coverWindSlowFinish(new BoolData("coverWindSlowFinish", u8"")) + , coverWindResumeFinish(new BoolData("coverWindResumeFinish", u8"")) + , purifierType(new ShortData("purifierType", u8"")) + , keepAlive(new ShortData("keepAlive", u8"")) + , protectionPressureEnable(new BoolData("protectionPressureEnable", u8"protectionPressureEnable")) + , ProtectionPressureTestRelFail(new BoolData("ProtectionPressureTestRelFail", u8"ProtectionPressureTestRelFail")) + , oxygenSelfTestRelFail(new BoolData("oxygenSelfTestRelFail", u8"oxygenSelfTestRelFail")) + , ProtectionPressuring(new BoolData("ProtectionPressuring", u8"ProtectionPressuring")) + , ProtectionPressureSetTime(new ShortData("ProtectionPressureSetTime", u8"保护压力设定时间", 1)) + , blowBackSetTimes(new UShortData("blowBackSetTimes", u8"反吹设置时间", 1)) + , blowBackBlowTime(new UShortData("blowBackBlowTime", u8"保护压力设定时间", 10)) + { + //isPurifying = false; + //isDedusting = false; + //isBoxCleaning = false; + //isBlowBack = false; + //isFilterDiscarding = false; + //isFilterCleaning = false; + //isHopperCleaning = false; + + //midPressureValue = 0; + //midPressureDifValue = 0; + //midTemperatureValue = 0; + //highPressureDifValue = 0; + //anemometerActualValue = 0.0f; + //printPressureValue = 0; + //boxPressureUpLimit = 0; + //boxPressureDownLimit = 0; + //filterOxygenValue = 0; + //printOxygenValue = 0; + //midPressureDifAlarmValue = 0; + //highPressureDifAlarmValue = 0; + + //filterTotalUseTime = 0; + //bowBackTimes = 0; + //usedTimeFromlastBowBack = 0; + //boxWashTime = 0; + //filterWashTime = 0; + //boxWashDelayTime = 0; + //dedustingWashDelayTime = 0; + + //hopperCleanRemind = 0; + //hopperTimeLastClean = 0; + //printCleanOxygenSetValue = 0; + //windSetValue = 0; + //maxWindSetValue = 0.0f; + //windActualValue = 0; + //// printOxygenDownSetValue=0; + //printOxygenUpSetValue = 0; + //filterCleanOxygenSetValue = 0; + ////highTempValue=0; + //midTempHighSetValue = 0; + //midTempUltraSetValue = 0; + ////highTempHighSetValue=0; + ////highTempUltraSetValue = 0; + //pressureRangeUpLimit = 0; + //pressureRangeDownLimit = 0; + //oxygenAlarmValue = 0; + //useArgon = false; + + //fanFreq = 0.0f; + //coverWindSpeedOffset = 0.0f; + //isCoverWind = false; + + //purifierType = 0; + //keepAlive = 0; + + + //cycleInValveOpenAlarm = false; //循环进气阀打开异常,请检查阀门与感应器是否正常 + //cycleOutValueOpenAlarm = false; //循环出气阀打开异常,请检查阀门与感应器是否正常 + //highPressureLackAlarm = false; //高压气气压不足,无法启动设备请补充压力 + //protectedPressureLackAlarm = false; //保护气气压不足,无法启动设备请补充压力 + //midFilterBlockAlarm = false; //中效滤芯堵塞严重,请执行清理工作 + //midTempOverLimitAlarm = false; //中效高温报警,请注意 + //midHighTempOverLimitAlarm = false; //中效超高温报警,已经很危险请停机检查 + //hopperUseLongTimeAlarm = false; //料斗使用时间过长,请进行清理 + //highPressureLackValveAlarm = false; //高压气气压不足,导致阀门异常关闭,请使用稳定气压 + //inverterAlarm = false; //变频器报警,请检查电机是否正常 + //protectionTestFail = false; + //inverterPowerBreak = false; + //shieldMonitorPrintPressure = false; + //innerfilterOpenAlarm = false; + //inverterComException = false; + //midHighValveOpenAlarm = false; + //innerFilterInValveException = false; + //midUnionValveException = false; + //innerFilterOutValveException = false; + //highFilterBlockAlarm = false; + + //whirlwindJarIsFull = false; + //midInValveOpenAlarm = false; + //midOutValveOpenAlarm = false; + //oxygenSelfTestFail = false; + //coverWindSlowFinish = false; + //coverWindResumeFinish = true; + //anemometerException = false; + //midConnectException = false; //中效室连接异常,请检查是否连接完毕 + //carbinDoorOpenException = false; //舱门打开异常,请检查关闭好舱门与舱门感应器 + //busOutValveNotOpenAlarm = false; //总排气阀未打开,请检查总排气阀工作状态 + + //busOutValveNotCloseAlarm = false; //总排气阀未关闭,请检查总排气阀工作状态 + //busOutValveNotInPosAlarm = false; //总排气阀处于不到位状态,请检查总排气阀工作状态 + //printOutValveNotOpenAlarm = false; //打印室排气阀未打开,请检查打印室排气阀工作状态 + //printOutValveNotCloseAlarm = false; //打印室排气阀未关闭,请检查打印室排气阀工作状态 + //printOutValveNotInPosAlarm = false; //打印室排气阀处于不到位状态,请检查打印室排气阀工作状态 + ////fanFrequency = 0.0f; + //purifierSevereAbnormalExhaust = false; + + //inverterDonotWorkWhenDedust = false; //循环过程,变频器不运行异常 + //printOxygenExceptWhenDedust = false; //循环过程,打印室氧含量超限异常 + //tempExceptWhenDedust = false; //循环过程,中高效超温异常 + //highPressureExceptWhenDedust = false; //循环过程,中高效超温异常 + //windExceptWhenDedust = false; //循环过程,风速异常报警 + + //protectionPressureEnable = false; + //ProtectionPressureTestRelFail = false; + //oxygenSelfTestRelFail = false; + //ProtectionPressuring = false; + //ProtectionPressureSetTime = 1; + //blowBackSetTimes = 1; + //blowBackBlowTime = 10; + + + } + ~PurifierParam() {} + virtual bool IsAlarm() { + + return false; + } + +public: + BaseStat baseStat; + char m_startFlag; + BoolData* isPurifying; //在一键清洗 + BoolData* isDedusting; //在除尘 + BoolData* isBoxCleaning; //箱体在清洗 + BoolData* isBlowBack; //在反吹 + BoolData* isFilterDiscarding; //滤芯废处理 + BoolData* isFilterCleaning; //过滤器在清洗 + BoolData* isHopperCleaning; //料斗在清洗 + + + FloatData* midPressureValue; //中效过滤器压力实值 + FloatData* midPressureDifValue; //中效过滤器压差值 + FloatData* midTemperatureValue; //中效过滤器温度值 + FloatData* highPressureDifValue; //高效过滤器压差值 + FloatData* anemometerActualValue; //风速计实际值 + FloatData* printPressureValue; //打印室压力 + FloatData* boxPressureUpLimit; //箱体压力上限设定 + FloatData* boxPressureDownLimit; //箱体压力下限设定 + FloatData* filterOxygenValue; //过滤器氧含量 实际值 + FloatData* printOxygenValue; //打印室氧含量 + FloatData* midPressureDifAlarmValue; //中效过滤器压差报警设 + FloatData* highPressureDifAlarmValue; //高效过滤器压差报警设 + + UShortData* filterTotalUseTime; //滤芯使用总时间 + UShortData* usedTimeFromlastBowBack; //上次反吹后已使用时间 + UShortData* bowBackTimes; //反吹总次数 + UShortData* hopperTimeLastClean; //料斗上次清理后已使用时间 + + + UShortData* boxWashTime; //箱体本次清洗时间 + UShortData* filterWashTime; //过滤器清洗时间 + UShortData* boxWashDelayTime; // 打印机清洗滞后分钟 + UShortData* dedustingWashDelayTime; //除尘系统清洗滞后分钟 + UShortData* hopperCleanRemind; //清理料斗提醒设定 + + FloatData* printCleanOxygenSetValue; //打印室氧清洗氧含量设 + FloatData* windSetValue; //风速设定 + FloatData* windActualValue; //风速实际值 + FloatData* maxWindSetValue; //风速最大值 + BoolData* useArgon; //使用氩气 + + FloatData* printOxygenUpSetValue; //打印氧上限设定 + FloatData* oxygenAlarmValue; //打印氧超上限设定 + FloatData* filterCleanOxygenSetValue; //过滤器清洗氧含量设定 + FloatData* midTempHighSetValue; //中效高温报警设定 + FloatData* midTempUltraSetValue; //中效超高温报警设定 + FloatData* pressureRangeUpLimit; //压力量程上限设定 + FloatData* pressureRangeDownLimit; //压力量程下限设定 + + FloatData* fanFreq; //风机频率 + + BoolData* midTempOverLimitAlarm; //中效高温报警,请注意 + BoolData* midHighTempOverLimitAlarm; //中效超高温报警,已经很危险请停机检查 + BoolData* hopperUseLongTimeAlarm; //料斗使用时间过长,请进行清理 + BoolData* highPressureLackValveAlarm; //高压气气压不足,导致阀门异常关闭,请使用稳定气压 + BoolData* protectionTestFail; //保压测试失败 + BoolData* inverterPowerBreak; //变频器电源断开 + BoolData* inverterAlarm; //变频器报警,请检查电机是否正常 + BoolData* whirlwindJarIsFull; //旋风罐装满粉,请清理 + BoolData* midInValveOpenAlarm; //中效进气阀打开异常 + BoolData* midOutValveOpenAlarm; //中效出气阀打开异常 + BoolData* anemometerException; //风速仪异常 + BoolData* oxygenSelfTestFail; //氧自测试失败 + BoolData* innerfilterOpenAlarm; //内过滤打印室废气阀打开异常,请检查阀门与感应器是否正常 + BoolData* inverterComException; //变频器通讯异常 + BoolData* purifierSevereAbnormalExhaust; //净化器排气严重异常 + + + + BoolData* cycleInValveOpenAlarm; //循环进气阀打开异常,请检查阀门与感应器是否正常 + BoolData* cycleOutValueOpenAlarm; //循环出气阀打开异常,请检查阀门与感应器是否正常 + BoolData* midHighValveOpenAlarm; //中高效阀打开异常,请检查阀门与感应器是否正常 + BoolData* innerFilterInValveException; //内过滤循环进气阀门异常,请检查阀门与感应器是否正常 + BoolData* midUnionValveException; //内过滤中效联通阀打开异常,请检查阀门与感应器是否正常 + BoolData* innerFilterOutValveException; //内过滤循环出气阀打开异常,请检查阀门与感应器是否正常 + BoolData* midFilterBlockAlarm; //中效滤芯堵塞严重,请执行清理工作 + BoolData* highFilterBlockAlarm; //高效滤芯堵塞严重,请执行清理工作 + BoolData* highPressureLackAlarm; //高压气气压不足,无法启动设备请补充压力 + BoolData* protectedPressureLackAlarm; //保护气气压不足,无法启动设备请补充压力 + BoolData* midConnectException; //中效室连接异常,请检查是否连接完毕 + BoolData* carbinDoorOpenException; //舱门打开异常,请检查关闭好舱门与舱门感应器 + BoolData* busOutValveNotOpenAlarm; //总排气阀未打开,请检查总排气阀工作状态 + + BoolData* busOutValveNotCloseAlarm; //总排气阀未关闭,请检查总排气阀工作状态 + BoolData* busOutValveNotInPosAlarm; //总排气阀处于不到位状态,请检查总排气阀工作状态 + BoolData* printOutValveNotOpenAlarm; //打印室排气阀未打开,请检查打印室排气阀工作状态 + BoolData* printOutValveNotCloseAlarm; //打印室排气阀未关闭,请检查打印室排气阀工作状态 + BoolData* printOutValveNotInPosAlarm; //打印室排气阀处于不到位状态,请检查打印室排气阀工作状态 + + BoolData* inverterDonotWorkWhenDedust; //循环过程,变频器不运行异常 + BoolData* printOxygenExceptWhenDedust; //循环过程,打印室氧含量超限异常 + BoolData* tempExceptWhenDedust; //循环过程,中高效超温异常 + BoolData* highPressureExceptWhenDedust; //循环过程,中高效超温异常 + BoolData* windExceptWhenDedust; //循环过程,风速异常报警 + + FloatData* coverWindSpeedOffset; //铺粉风速差值 + BoolData* isCoverWind; //铺粉骤降风速 + BoolData* shieldMonitorPrintPressure; //屏蔽监测打印压力 + + BoolData* coverWindSlowFinish; + BoolData* coverWindResumeFinish; + ShortData* purifierType; + ShortData* keepAlive; + BoolData* protectionPressureEnable; + + BoolData* ProtectionPressureTestRelFail; + BoolData* oxygenSelfTestRelFail; + BoolData* ProtectionPressuring; + ShortData* ProtectionPressureSetTime; + UShortData* blowBackSetTimes; + UShortData* blowBackBlowTime; + + char m_endFlag; +}; +#pragma pack() + + class PurifierClient :public S7Client { public: @@ -243,36 +581,36 @@ public: void GetStat(Purifierstat_XT& stat); - void SetDedust(bool bvalue); //ֹͣ - void SetBlowBack(bool bvalue); //ֹͣ - void SetFilterDiscard(bool bvalue); //оϴ - void SetFilterClean(bool bvalue); //оϴ - void SetHopperClean(bool bvalue); //϶ϴֹͣ - void SetPurify(bool bvalue); //һϴ + void SetDedust(bool bvalue); //除尘启动或停止 + void SetBlowBack(bool bvalue); //反吹启动或停止 + void SetFilterDiscard(bool bvalue); //滤芯废处理 + void SetFilterClean(bool bvalue); //滤芯清洗 + void SetHopperClean(bool bvalue); //料斗清洗启动或停止 + void SetPurify(bool bvalue); //一键清洗(除氧) void SetBoxClean(bool bvalue); void ResetFilterTime(); void ClearHopperAlarm(); - void SetBoxPressureUpLimit(float fvalue); //ѹ趨 - void SetBoxPressureDownLimit(float fvalue); //ѹ趨 - void SetMidPressureDifAlarmValue(float fvalue); //Чѹ - void SetHighPressureDifAlarmValue(float fvalue); //Чѹ - void SetPrintCleanOxygenSetValue(float fvalue); //ӡϴ - void SetWindValue(float fvalue); //趨 - void SetMaxWindValue(float fvalue); //趨 - void SetPrintOxygenDownSetValue(float fvalue); //ӡ趨 - void SetPrintOxygenUpSetValue(float fvalue); //ӡ趨 - void SetfilterCleanOxygenSetValue(float fvalue); //ϴ趨 - void SetMidTempHighSetValue(float fvalue); //Ч±趨 - void SetMidTempUltraSetValue(float fvalue); //Ч±趨 - void SetHighTempHighSetValue(float fvalue); //Ч±趨 -// void SetHighTempUltraSetValue(float fvalue); //Ч±趨 - void SetHopperCleanRemind(unsigned short value); //϶趨 + void SetBoxPressureUpLimit(float fvalue); //箱体压力上限设定 + void SetBoxPressureDownLimit(float fvalue); //箱体压力下限设定 + void SetMidPressureDifAlarmValue(float fvalue); //中效过滤器压差报警设 + void SetHighPressureDifAlarmValue(float fvalue); //高效过滤器压差报警设 + void SetPrintCleanOxygenSetValue(float fvalue); //打印室氧清洗氧含量设 + void SetWindValue(float fvalue); //风速设定 + void SetMaxWindValue(float fvalue); //最大风速设定 + void SetPrintOxygenDownSetValue(float fvalue); //打印氧下限设定 + void SetPrintOxygenUpSetValue(float fvalue); //打印氧上限设定 + void SetfilterCleanOxygenSetValue(float fvalue); //过滤器清洗氧含量设定 + void SetMidTempHighSetValue(float fvalue); //中效高温报警设定 + void SetMidTempUltraSetValue(float fvalue); //中效超高温报警设定 + void SetHighTempHighSetValue(float fvalue); //高效高温报警设定 +// void SetHighTempUltraSetValue(float fvalue); //高效超高温报警设定 + void SetHopperCleanRemind(unsigned short value); //清理料斗提醒设定 void SetBoxWashDelayTime(unsigned short value); void SetDedustingWashDelayTime(unsigned short value); - void SetPressureRangeUpLimit(float value); //ѹ趨 - void SetPressureRangeDownLimit(float value); //ѹ趨 - void SetOxygenAlarmValue(float value); //ӡ趨 + void SetPressureRangeUpLimit(float value); //压力量程上限设定 + void SetPressureRangeDownLimit(float value); //压力量程下限设定 + void SetOxygenAlarmValue(float value); //打印氧超上限设定 void SetUseArgon(bool buse); void SetBlowBackBlowTime(unsigned short value); @@ -305,7 +643,8 @@ protected: protected: unsigned char* m_OxygenWriteValue; unsigned char* m_PressureWriteValue; - Purifierstat_XT m_Stat; + //Purifierstat_XT m_Stat; + PurifierParam m_Stat; RunCfg* m_RunCfg; ExtCfg* m_ExtCfg; AlarmCfgWrapper* m_AlarmCfgWrapper; diff --git a/PrintS/Communication/ScannerPowerClient.h b/PrintS/Communication/ScannerPowerClient.h index 3f0e144..7f10805 100644 --- a/PrintS/Communication/ScannerPowerClient.h +++ b/PrintS/Communication/ScannerPowerClient.h @@ -10,12 +10,12 @@ class ScannerPowerBean { public: ScannerPowerBean() + : m_Voltage(new FloatData("Voltage", u8"电压值")) + , m_Current(new FloatData("Current", u8"电流值")) + , m_VoltageAlarm(new BoolData("VoltageAlarm", u8"电压报警")) { m_Log = new ScannerPowerLog(); m_LogTick = GetTickCount64(); - m_Voltage = new FloatData("Voltage",u8"电压值"); - m_Current = new FloatData("Current",u8"电流值"); - m_VoltageAlarm = new BoolData("VoltageAlarm", u8"电压报警"); m_VoltageAlarmTick = m_LogTick; } diff --git a/PrintS/Controller/Controller.cpp b/PrintS/Controller/Controller.cpp index 3b362ed..6a5219f 100644 --- a/PrintS/Controller/Controller.cpp +++ b/PrintS/Controller/Controller.cpp @@ -13,13 +13,16 @@ Controller::Controller() , m_StateCtrlWrapper(nullptr) , m_SysParamWrapper(nullptr) , m_AxisRecordWrapper(nullptr) - , m_SignalStateWrapper(nullptr){ - + , m_SignalStateWrapper(nullptr) + , m_sendTdExitFlag(false){ + } Controller::~Controller() { + StopSend(); + DELP(m_CoreCommunication); DELP(m_Axis); DELP(m_StateCtrlWrapper); @@ -30,6 +33,9 @@ Controller::~Controller() { } + + + void Controller::Init(){ BaseCtrl::SInit(); jc.SInit(); @@ -98,4 +104,30 @@ void Controller::Init(){ m_Purifier = new XTPurifier(m_ScannerCtrl); } m_Purifier->Init(); + + +} + + +void Controller::StartSend() { + + if (!m_sendParamThread.joinable()) { + m_sendParamThread = std::thread([this] { + while (!m_sendTdExitFlag) { + m_ComServer->SendToClients(); + + int count = 8; + while (!m_sendTdExitFlag && count--) { + this_thread::sleep_for(std::chrono::milliseconds(10)); + } + } + }); + } + +} + +void Controller::StopSend() { + m_sendTdExitFlag = true; + if (m_sendParamThread.joinable()) m_sendParamThread.join(); + } diff --git a/PrintS/Controller/Controller.h b/PrintS/Controller/Controller.h index f096a27..14540cf 100644 --- a/PrintS/Controller/Controller.h +++ b/PrintS/Controller/Controller.h @@ -7,6 +7,7 @@ #include "../Communication/ComServer.h" #include "../remote/RemoteClient.h" #include "../Purifier/BasePurifier.h" +#include class Controller { public: @@ -15,7 +16,8 @@ public: void Init(); - + void StartSend(); + void StopSend(); public: Machine* m_Machine; CoreCommunication* m_CoreCommunication; @@ -34,4 +36,9 @@ public: ScannerCtrl* m_ScannerCtrl; MachineCfg* m_MachineCfg; + + +private: + bool m_sendTdExitFlag; + thread m_sendParamThread; }; \ No newline at end of file diff --git a/PrintS/DataManage/DataHandle.cpp b/PrintS/DataManage/DataHandle.cpp index 30befc9..23ed670 100644 --- a/PrintS/DataManage/DataHandle.cpp +++ b/PrintS/DataManage/DataHandle.cpp @@ -62,12 +62,13 @@ void DataHandle::Init() { void DataHandle::Run() { if (m_streamServer) m_streamServer->Run(); + if(m_controller) m_controller->StartSend(); } void DataHandle::Stop() { if(m_streamServer) m_streamServer->Stop(); - + if (m_controller) m_controller->StopSend(); } diff --git a/PrintS/Purifier/BasePurifier.cpp b/PrintS/Purifier/BasePurifier.cpp index c74b902..c30dd88 100644 --- a/PrintS/Purifier/BasePurifier.cpp +++ b/PrintS/Purifier/BasePurifier.cpp @@ -66,4 +66,16 @@ void BasePurifier::WorkRun() Sleep(m_CycleTick); } +} + +void BasePurifier::InsertMp(void* startPtr, size_t count, const string& suff) { + size_t ptrSize = sizeof(nullptr); //指针大小 + for (size_t i = 0; i < count; ++i) { + BaseData* bd = *((BaseData**)((char*)startPtr + ptrSize * i)); + string key = bd->GetCode() + suff; + if (m_baseMp.find(key) != m_baseMp.end()) { + printf("%s is repeated...\n", key.data()); + } + else { m_baseMp.insert(make_pair(key, bd)); } + } } \ No newline at end of file diff --git a/PrintS/Purifier/BasePurifier.h b/PrintS/Purifier/BasePurifier.h index 79a992b..3fedc01 100644 --- a/PrintS/Purifier/BasePurifier.h +++ b/PrintS/Purifier/BasePurifier.h @@ -4,6 +4,8 @@ #include #include "../config/bean/IOCfg.h" #include "../config/bean/AlarmCfg.h" +#include "../Communication/BaseData.h" + class BasePurifier { @@ -50,6 +52,8 @@ public: virtual void DrawFinishReportRel() {} virtual int GetFilterUseTime() { return 0; } + + void SendToClients(WRITETYPE type, const string& addKey = ""); private: static DWORD WINAPI WorkProc(BasePurifier* _this); void WorkRun(); @@ -57,6 +61,9 @@ private: public: bool m_PurifierWinShow; +protected: + void InsertMp(void* startPtr, size_t count, const string& suff); + protected: ExtCfg* m_ExtCfg; HANDLE m_Thread; @@ -65,5 +72,8 @@ protected: AlarmCfgWrapper* m_AlarmCfgWrapper; int m_CycleTick; //MachineCfg::PulifierType m_Type; + + unordered_map m_baseMp; //大部分使用这个 + //unordered_map m_alarmCfgMp; // }; diff --git a/PrintS/main.cpp b/PrintS/main.cpp index 6cf23ba..049b408 100644 --- a/PrintS/main.cpp +++ b/PrintS/main.cpp @@ -2,7 +2,6 @@ #include - int main(int argc, char** argv) { HBDSystem* hbd = new HBDSystem(); hbd->Init();