GrpcPrint/PrintS/Communication/PurifierClient.h
2024-03-19 17:45:12 +08:00

318 lines
12 KiB
C++

#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;
};