#pragma once #include "BaseClient.h" #include "../config/ConfigManager.h" #include "Snap7/s7_client.h" class Purifierstat_XT { public: Purifierstat_XT() { 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; } ~Purifierstat_XT() {} virtual bool IsAlarm() { return false; } public: BaseStat baseStat; 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; //高效过滤器压差报警设 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; //清理料斗提醒设定 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 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 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 inverterDonotWorkWhenDedust; //循环过程,变频器不运行异常 bool printOxygenExceptWhenDedust; //循环过程,打印室氧含量超限异常 bool tempExceptWhenDedust; //循环过程,中高效超温异常 bool highPressureExceptWhenDedust; //循环过程,中高效超温异常 bool windExceptWhenDedust; //循环过程,风速异常报警 float coverWindSpeedOffset; //铺粉风速差值 bool isCoverWind; //铺粉骤降风速 bool shieldMonitorPrintPressure; //屏蔽监测打印压力 bool coverWindSlowFinish; bool coverWindResumeFinish; short purifierType; short keepAlive; bool protectionPressureEnable; bool ProtectionPressureTestRelFail; bool oxygenSelfTestRelFail; bool ProtectionPressuring; short ProtectionPressureSetTime; unsigned short blowBackSetTimes; unsigned short blowBackBlowTime; }; class PurifierClient :public S7Client { public: PurifierClient(CommunicationCfg* pconfig); ~PurifierClient(); 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 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 SetBoxWashDelayTime(unsigned short value); void SetDedustingWashDelayTime(unsigned short value); void SetPressureRangeUpLimit(float value); //压力量程上限设定 void SetPressureRangeDownLimit(float value); //压力量程下限设定 void SetOxygenAlarmValue(float value); //打印氧超上限设定 void SetUseArgon(bool buse); void SetBlowBackBlowTime(unsigned short value); void SetBlowBackSetTimes(unsigned short value); void SetProtectionPressureSetTime(unsigned short value); void SetUnLock(); virtual void SetCoverWind(bool bvalue); virtual void SetCoverWindOffset(float offset); virtual void SetWindSlowFinishSignal(bool bvalue); virtual void SetWindResumeFinishSignal(bool bvalue); virtual void SetShieldMonitorPrintPressure(bool bvalue); virtual void SetProtectionPressure(bool bvalue) {} //virtual void ResetWindSlowFinishSignal(); //virtual void ResetWindResumeFinishSignal(); //void SetAirRenewalCtrl(bool bctrl); protected: void InitCommand(); //static DWORD WINAPI ThreadProc(PurifierClient* pclient); static void ProcReadInfoXT(void *pobject,Command* pcommand); static void ProcReadInfoXT2(void *pobject, Command* pcommand); static void ProcWriteValueXT(void *pobject, Command* pcommand); void SetMKBit(int dindex,unsigned int waittime=0); void SetDBFloat(int dindex,float fvalue); void SetBit(int dindex, bool v); static void ProcSetOxygenValue(void *pobject, Command* pcommand); protected: unsigned char* m_OxygenWriteValue; unsigned char* m_PressureWriteValue; Purifierstat_XT m_Stat; RunCfg* m_RunCfg; ExtCfg* m_ExtCfg; AlarmCfgWrapper* m_AlarmCfgWrapper; private: static const unsigned int READ_ITEM_COUNT = 2; static const unsigned int READ_ITEM_COUNT2 = 6; };