#pragma once #include "BaseClient.h" #include "../config/bean/RunCfg.h" #include "../config/bean/ExtCfg.h" #include "../config/bean/IOCfg.h" #include "../config/bean/PowderEstimateCfg.h" class PowderSupplySimpleStat { public: PowderSupplySimpleStat() { m_RequestDropPowder = false; m_DropPowderEnable = false; m_OpenDropPowderValve = false; m_DeoxygenActive = false; m_RequestSupplyPowder = false; m_PcCtrlSupply = false; m_ReactiveMetals = false; m_SupplyPowderDeoxygenEnable = false; m_EnableHammer = false; m_EnableNewPowderDorpFreq = false; m_MachineOxygenTarge = 0.0f; m_MachineOxygenAlarm = 0.0f; m_MachineOxygenRealtime = 0.0f; m_PowderValveOpenTime = 0; m_PowderValveCloseTime = 0; m_AirHammerOpenTime = 0; m_AirHammerCloseTime = 0; m_PressureDif = 0.0f; m_OxygenSensorUpLimit = 0.0f; m_SupplyPowderPressureDifUpLimit = 0.0f; m_SupplyPowderPressureDifDownLimit = 0.0f; m_SupplyPowderPressureDifValue = 0.0f; m_FilterPressureDifUpLimit = 0.0f; m_FilterPressureDifDownLimit = 0.0f; m_FilterPressureDifValue = 0.0f; m_SupplyPowderBlockPressureValue = 0.0f; m_FilterBlockPressureValue = 0.0f; m_SupplyPowderBlockWarnValue = 0.0f; m_BlowbackTimes = 0; m_BlowbackValveOpenTime = 0.0f; m_PocketAerateTime = 0.0f; m_WorkFanStopDelayTime = 0.0f; m_DropPowderValveOpenKeepTime = 0.0f; m_AddPowderUpLimitSenseTime = 0.0f; m_Version = 0; //版本 m_SupplyBlockAlarm = false; m_SupplyFilterBlockAlarm = false; m_SupplyJarHangUpPowderAlarm = false; m_OxygenOverLimitAlarm = false; m_DeoxygenStartupFailed = false; m_SupplyPowderStartupFailed = false; m_OxygenDetectorOfflineAlarm = false; m_FanForceRunAlarm = false; m_FanOverHeatAlarm = false; m_SupplyPowderTempAlarm = false; m_NewJarNoPowerAlarm = false; m_SupplyPowderFilterAlarm = false; m_AddPowderJarFullBlowbackAlarm = false; m_FanBlowbackAlarm = false; m_SupplyBlockStopMinute = 0; m_FanWorkTiming = 0; m_FanWorkStopTime = 0; m_FanCoolTime = 0; m_SupplyBlockPreProcValue = 0.0f; m_PowerCarNoPowderValue = 0.0f; m_SupplyReleasePressureValue = 0.0f; m_SupplyStopReleasePressureValue = 0.0f; m_InverterFreqSetValue = 0.0f; m_DropPowderNeedDeoxygenValue = 0.0f; m_DropPowderDeoxygenTargetValue = 0.0f; m_SupplyDifPressureWarnValue = 0.0f; m_BlowbackActive = false; m_SupplyPressure = 0.0f; m_SupplyJarPressure = 0.0f; m_PowderCarWeight = 0.0f; m_WorkGasPressure = 0.0f; m_CompressGasPressure = 0.0f; m_SupplyDifPressure = 0.0f; m_DropDifPressure = 0.0f; m_SupplyJarEnterValveOpenAlarm = false; m_SupplyJarReturnValveOpenAlarm = false; m_ExhaustOpenAlarm = false; m_FanRevTurnAlarm = false; m_CompressGasPressureLeakAlarm = false; m_WorkGasPressureLeakAlarm = false; m_NoPowderWarn = false; m_InverterAlarm = false; m_SupplyJarFilterBlockAlarm = false; m_FanEnterValveOpenAlarm = false; m_SupplyJarDropValveCloseAlarm = false; m_StopButtonPressDown = false; m_NoDropPowderWarn = false; } ~PowderSupplySimpleStat() {} public: bool m_RequestDropPowder; //请求供粉 (落粉) bool m_DropPowderEnable; //允许供粉 bool m_OpenDropPowderValve; //开启下粉阀 bool m_DeoxygenActive; //送粉机除氧 bool m_RequestSupplyPowder; //启动送粉 bool m_PcCtrlSupply; //PC控制送粉 bool m_ReactiveMetals; //活泼金属 bool m_SupplyPowderDeoxygenEnable; //启用送粉除氧 bool m_EnableHammer; //启用气锤 bool m_EnableNewPowderDorpFreq; //启用新粉下粉阀频率 bool m_DorpPowderPressureCompensateEnable; //启用下粉补压 float m_MachineOxygenTarge; //送粉机除氧目标值 float m_MachineOxygenAlarm; //送粉机氧报警值 float m_MachineOxygenRealtime; //送粉机氧含量 float m_PowderValveOpenTime; //下粉阀打开时间 float m_PowderValveCloseTime; //下粉阀关闭时间 float m_AirHammerOpenTime; //气锤打开时间 float m_AirHammerCloseTime; //气锤关闭时间 float m_PressureDif; //下粉与粉仓压差 float m_OxygenSensorUpLimit; //测氧仪上限 float m_SupplyPowderPressureDifUpLimit; //送粉压差上限 float m_SupplyPowderPressureDifDownLimit; //送粉压差下限 float m_SupplyPowderPressureDifValue; //送粉压差实际值 float m_FilterPressureDifUpLimit; //滤芯压差上限 float m_FilterPressureDifDownLimit; //滤芯压差下限 float m_FilterPressureDifValue; //滤压差实际值 float m_SupplyPowderBlockPressureValue; //送粉堵塞压力值 float m_FilterBlockPressureValue; //滤芯堵塞压力值 float m_SupplyPowderBlockWarnValue; //送粉堵塞预警值 bool m_SupplyBlockAlarm; //送粉堵塞报警 bool m_SupplyFilterBlockAlarm; //送粉滤芯堵塞报警 bool m_SupplyJarHangUpPowderAlarm; //加粉罐挂粉 bool m_OxygenOverLimitAlarm; //氧含量越限报警 bool m_DeoxygenStartupFailed; //除氧功能启动失败报警 bool m_SupplyPowderStartupFailed; //送粉功能启动失败报警 bool m_OxygenDetectorOfflineAlarm; //测氧仪离线报警 bool m_FanForceRunAlarm; //冷却风机强制运行报警 bool m_FanOverHeatAlarm; //风机过热报警 bool m_SupplyPowderTempAlarm; //送粉温度报警 bool m_NewJarNoPowerAlarm; //新粉罐无粉报警 bool m_SupplyPowderFilterAlarm; //送粉滤芯报警 bool m_AddPowderJarFullBlowbackAlarm; //粉罐满粉无法反吹报警 bool m_FanBlowbackAlarm; //风机反吹报警 unsigned short m_SupplyBlockStopMinute; //送粉堵塞停止时间 unsigned char m_FanWorkTiming; //运行风机计时 unsigned char m_FanWorkStopTime; //风机运行停机时间 unsigned char m_FanCoolTime; //风机冷却时间 unsigned short m_BlowbackTimes; //反吹次数 float m_BlowbackValveOpenTime; //反吹阀打开时间 float m_PocketAerateTime; //气包充气时间 float m_WorkFanStopDelayTime; //运行风机停止延时 float m_DropPowderValveOpenKeepTime; //加粉下粉阀打开保持时间 float m_AddPowderUpLimitSenseTime; //加粉上限感应时间 char m_Version; //版本 float m_SupplyBlockPreProcValue; //送粉堵塞预处理KPA float m_PowerCarNoPowderValue; //小车无粉值KG float m_SupplyReleasePressureValue; //供粉机泄压值Kpa float m_SupplyStopReleasePressureValue; //供粉机压力停止泄压值 float m_InverterFreqSetValue; //变频器频率设定值 float m_DropPowderNeedDeoxygenValue; //下粉时需要除氧值 float m_DropPowderDeoxygenTargetValue; //下粉除氧目标值 float m_SupplyDifPressureWarnValue; //送粉压差堵塞预警值 bool m_BlowbackActive; //反吹启动 float m_SupplyPressure; //送粉压力 float m_SupplyJarPressure; //上加粉罐压力 float m_PowderCarWeight; //小车称重 float m_WorkGasPressure; //工作气压力 float m_CompressGasPressure; //压缩气压力 float m_SupplyDifPressure; //送粉压差值 float m_DropDifPressure; //落粉压差值 bool m_SupplyJarEnterValveOpenAlarm; //上加粉罐进粉阀打开失败报警 bool m_SupplyJarReturnValveOpenAlarm; //上加粉罐回气阀打开失败报警 bool m_ExhaustOpenAlarm; //排气挡板打开失败报警 bool m_FanRevTurnAlarm; //风机反转报警 bool m_CompressGasPressureLeakAlarm; //压缩气压力不足报警 bool m_WorkGasPressureLeakAlarm; //工作气压力不足 bool m_NoPowderWarn; //无粉警告 bool m_InverterAlarm; //变频器报警 bool m_SupplyJarFilterBlockAlarm; //加粉罐滤芯堵塞 bool m_FanEnterValveOpenAlarm; //风机进风阀打开失败报警 bool m_SupplyJarDropValveCloseAlarm; //上加粉罐落粉阀关闭失败报警 bool m_StopButtonPressDown; //紧急开关已按下 bool m_NoDropPowderWarn; //无落粉警告 }; class PowderSupplySimpleAssist { public: PowderSupplySimpleAssist() { m_RequestDropPowder = false; m_OpenDropPowderValve = false; m_DeoxygenActive = false; m_RequestSupplyPowder = false; m_PcCtrlSupply = false; m_ReactiveMetals = false; m_DropPowderEnable = false; m_EnableHammer = false; m_EnableNewPowderDorpFreq = false; m_DorpPowderPressureCompensateEnable = false; m_MachineOxygenTarge = 0.0f; m_MachineOxygenAlarm = 0.0f; m_MachineOxygenRealtime = 0.0f; m_PowderValveOpenTime = 0; m_PowderValveCloseTime = 0; m_AirHammerOpenTime = 0; m_AirHammerCloseTime = 0; m_SupplyBlockStopMinute = 0; m_FanWorkTiming = 0; m_FanCoolTime = 0; m_FanWorkStopTime = 0; m_OxygenSensorUpLimit = 0.0f; m_SupplyPowderPressureDifUpLimit = 0.0f; m_SupplyPowderPressureDifDownLimit = 0.0f; m_SupplyPowderPressureDifValue = 0.0f; m_FilterPressureDifUpLimit = 0.0f; m_FilterPressureDifDownLimit = 0.0f; m_FilterPressureDifValue = 0.0f; m_SupplyPowderBlockPressureValue = 0.0f; m_FilterBlockPressureValue = 0.0f; m_SupplyPowderBlockWarnValue = 0.0f; m_BlowbackTimes = 0; m_BlowbackValveOpenTime = 0.0f; m_PocketAerateTime = 0.0f; m_WorkFanStopDelayTime = 0.0f; m_DropPowderValveOpenKeepTime = 0.0f; m_AddPowderUpLimitSenseTime = 0.0f; m_BlowbackActive = false; m_SupplyBlockPreProcValue = 0.0f; m_PowerCarNoPowderValue = 0.0f; m_SupplyReleasePressureValue = 0.0f; m_SupplyStopReleasePressureValue = 0.0f; m_InverterFreqSetValue = 0.0f; m_DropPowderNeedDeoxygenValue = 0.0f; m_DropPowderDeoxygenTargetValue = 0.0f; m_SupplyDifPressureWarnValue = 0.0f; } ~PowderSupplySimpleAssist() {} public: bool m_RequestDropPowder; bool m_DropPowderEnable; //允许供粉 bool m_OpenDropPowderValve; //开启下粉阀 bool m_DeoxygenActive; //送粉机除氧 bool m_RequestSupplyPowder; //启动送粉 bool m_PcCtrlSupply; //PC控制送粉 bool m_ReactiveMetals; //活泼金属 bool m_EnableHammer; //启用气锤 bool m_EnableNewPowderDorpFreq; //启用新粉下粉阀频率 bool m_DorpPowderPressureCompensateEnable; //启用下粉补压 float m_MachineOxygenTarge; //送粉机除氧目标值 float m_MachineOxygenAlarm; //送粉机氧报警值 float m_MachineOxygenRealtime; //送粉机氧含量 float m_PowderValveOpenTime; //下粉阀打开时间 float m_PowderValveCloseTime; //下粉阀关闭时间 float m_AirHammerOpenTime; //气锤打开时间 float m_AirHammerCloseTime; //气锤关闭时间 float m_OxygenSensorUpLimit; //测氧仪上限 float m_SupplyPowderPressureDifUpLimit; //送粉压差上限 float m_SupplyPowderPressureDifDownLimit; //送粉压差下限 float m_SupplyPowderPressureDifValue; //送粉压差实际值 float m_FilterPressureDifUpLimit; //滤芯压差上限 float m_FilterPressureDifDownLimit; //滤芯压差下限 float m_FilterPressureDifValue; //滤压差实际值 float m_SupplyPowderBlockPressureValue; //送粉堵塞压力值 float m_FilterBlockPressureValue; //滤芯堵塞压力值 float m_SupplyPowderBlockWarnValue; //送粉堵塞预警值 unsigned short m_SupplyBlockStopMinute; //送粉堵塞停止时间 unsigned char m_FanWorkTiming; //运行风机计时 unsigned char m_FanCoolTime; //风机冷却时间 unsigned char m_FanWorkStopTime; unsigned short m_BlowbackTimes; //反吹次数 float m_BlowbackValveOpenTime; //反吹阀打开时间 float m_PocketAerateTime; //气包充气时间 float m_WorkFanStopDelayTime; //运行风机停止延时 float m_DropPowderValveOpenKeepTime; //加粉下粉阀打开保持时间 float m_AddPowderUpLimitSenseTime; //加粉上限感应时间 bool m_BlowbackActive; float m_SupplyBlockPreProcValue; float m_PowerCarNoPowderValue; float m_SupplyReleasePressureValue; float m_SupplyStopReleasePressureValue; float m_InverterFreqSetValue; float m_DropPowderNeedDeoxygenValue; float m_DropPowderDeoxygenTargetValue; float m_SupplyDifPressureWarnValue; }; class PowderSupplySimpleClient :public S7Client { public: PowderSupplySimpleClient(CommunicationCfg* pconfig); virtual ~PowderSupplySimpleClient(); void GetStat(PowderSupplySimpleStat& stat); //virtual void DrawUI(bool* isshow); virtual void SetDeoxygenActive(bool enable); virtual void SetSupplyEnable(bool enable); void SetPCCtrlSupply(bool enable); void SetReactiveMetals(bool enable); virtual void SetMachineDeoxygenTarge(float fvalue); virtual void SetMachineOxygenAlarm(float fvalue); void SetPowderValveOpenTime(unsigned short value); void SetPowderValveCloseTime(unsigned short value); void SetAirHammerOpenTime(unsigned short value); void SetAirHammerCloseTime(unsigned short value); void SetSupplyBlockStopMinute(unsigned short value); void SetFanWorkTiming(unsigned char value); void SetFanCoolTime(unsigned char value); void SetFanWorkStopTime(unsigned char value); virtual void SetOpenDropPowderValve(bool enable); void SetStartHammer(bool enable); void SetStartNewPowderDorpFreq(bool enable); void RequestSupplyStart(); virtual void RequestSupplyStop(); virtual void RequestStart() { if (!m_ClientState.m_RequestDropPowder) { RequestSupplyStart(); Sleep(500); } if (!m_ClientState.m_RequestSupplyPowder) { SetSupplyEnable(true); Sleep(500); } } void AutoSupply(); bool IsAutoSuppling(); void StopAutoSupply(); protected: virtual void InitCommand(); void SetBit(int dindex, bool flag); void SetDBFloat(int dindex, float fvalue); void SetDBWord(int dindex, unsigned short fvalue); void SetDBByte(int dindex, unsigned char fvalue); static void ProcSetPressureValue(void *pobject, Command* pcommand); static DWORD WINAPI AutoSupplyProc(PowderSupplySimpleClient* _this); void AutoSupplyRun(); bool IsPowderEnough(); private: static void ProcReadInfo(void *pobject, Command* pcommand); protected: HANDLE m_AutoSupplyThread; bool m_AutoSupplyFlag; unsigned char* m_PressureWriteValue; PowderSupplySimpleStat m_ClientState; RunCfg* m_RunCfg; ExtCfg* m_ExtCfg; PowderSupplySimpleAssist m_ShowAssist; IOCfgWrapper* m_IOCfgWrapper; PowderEstimateCfg* m_PowderEstimateCfg; uint64_t m_InfoTick; private: static const unsigned int READ_ITEM_COUNT = 3; }; class PowderSupplySimpleClient2 :public PowderSupplySimpleClient { public: PowderSupplySimpleClient2(CommunicationCfg* pconfig) :PowderSupplySimpleClient(pconfig) {} ~PowderSupplySimpleClient2() { } void InitCommand(); //void DrawUI(bool* isshow); void SetStartDorpPowderPressureCompensateEnable(bool enable); void SetOxygenSensorUpLimit(float fvalue); void SetSupplyPowderPressureDifUpLimit(float fvalue); void SetSupplyPowderPressureDifDownLimit(float fvalue); void SetFilterPressureDifUpLimit(float fvalue); void SetFilterPressureDifDownLimit(float fvalue); void SetSupplyPowderBlockPressureValue(float fvalue); void SetFilterBlockPressureValue(float fvalue); void SetSupplyPowderBlockWarnValue(float fvalue); void SetBlowbackTimes(unsigned short svalue); void SetBlowbackValveOpenTime(unsigned short svalue); void SetPocketAerateTime(unsigned short svalue); void SetWorkFanStopDelayTime(unsigned short svalue); void SetDropPowderValveOpenKeepTime(unsigned short svalue); void SetAddPowderUpLimitSenseTime(unsigned short svalue); private: static void ProcReadInfo(void *pobject, Command* pcommand); private: static const unsigned int READ_ITEM_COUNT = 4; }; class PowderSupplySimpleClient3 :public PowderSupplySimpleClient { public: PowderSupplySimpleClient3(CommunicationCfg* pconfig) :PowderSupplySimpleClient(pconfig) {} ~PowderSupplySimpleClient3() { } void InitCommand(); //void DrawUI(bool* isshow); void SetDeoxygenActive(bool enable); void SetSupplyEnable(bool enable); void SetBlowbackActive(bool enable); void SetOpenDropPowderValve(bool enable); void SetSupplyBlockPreProcValue(float fvalue); void SetPowerCarNoPowderValue(float fvalue); void SetMachineDeoxygenTarge(float fvalue); void SetMachineOxygenAlarm(float fvalue); void SetSupplyReleasePressureValue(float fvalue); void SetSupplyStopReleasePressureValue(float fvalue); void SetInverterFreqSetValue(float fvalue); void SetDropPowderNeedDeoxygenValue(float fvalue); void SetDropPowderDeoxygenTargetValue(float fvalue); void SetSupplyDifPressureWarnValue(float fvalue); void ResetAlarm(); void RequestStart(); void RequestSupplyStop(); private: static void ProcReadInfo(void *pobject, Command* pcommand); private: static const unsigned int READ_ITEM_COUNT = 6; };