GrpcPrint/PrintS/Communication/PowderSupplySimpleClient.h

457 lines
16 KiB
C
Raw Normal View History

2024-03-19 17:45:12 +08:00
#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;
};