244 lines
12 KiB
C++
244 lines
12 KiB
C++
#pragma once
|
|
#include "../LanguageManager.h"
|
|
#include "../Controller/Base.h"
|
|
|
|
struct IntelliScanStateSCT {
|
|
bool m_GalvanometerScannerTempOK; //振镜预热完成
|
|
float m_ActualPosition; //真实位置
|
|
float m_SetPosition; //设值位置
|
|
float m_PositionError; //位置误差
|
|
float m_GalvanometerScannerTemp; //振镜温度
|
|
float m_ServoBoardTemp; //伺服板卡温度
|
|
float m_PDSupplyVoltage; //PD供电电压
|
|
float m_DSPCoreSupplyVoltage; //DSP核心供电电压
|
|
float m_DSPIOVoltage; //DSP输入输出电压
|
|
float m_AnalogSectionVoltage; //模拟区电压
|
|
float m_ADConverterSupplyVoltage; //AD转换供电电压
|
|
float m_PDSupplyCurrent; //PD供电电流
|
|
bool m_IsGalvanometerScannerOutputStageOn; //振镜输出级生效
|
|
bool m_IsGalvanometerScannerHeaterOutputStageOn; //振镜加热器输出级生效
|
|
bool m_IsInternalVoltagesNormal; //内部电压正常
|
|
bool m_IsPositionErrorNormalRange; //位置误差正常
|
|
bool m_IsScannerAndServoBoradTempNormal; //振镜和伺服温度正常
|
|
bool m_IsBootingProcessCompleted; //启动处理完成
|
|
bool m_IsCriticalError; //发生严重错误
|
|
bool m_IsExternalPowderLow; //外部电压欠压
|
|
bool m_IsScanSystemTempOverLimit; //扫描系统超温
|
|
bool m_IsADConverterSuccessfullyInit; //AD转换初始化成功
|
|
bool m_IsScannerReachedCriticalEdgePos; //振镜到达临界边缘位置
|
|
bool m_IsAllControlParametersValid; //允许控制参数
|
|
bool m_IsADConverterVoltageOK; //AD转换供电正常
|
|
bool m_IsAnalogSetionVoltageOK; //模拟区电压正常
|
|
bool m_IsDSPIOVoltageOK; //DSP 输入输出电压正常
|
|
bool m_IsDSPCoreVoltageOK; //DSP核心供电正常
|
|
bool m_IsAGCVoltageOK; //AGC电压正常
|
|
bool m_IsServoBoradOperationTempNormal; //伺服板卡操作温度正常
|
|
bool m_IsGalvanometerScannerOperationTempNormal; //振镜操作温度正常
|
|
int m_LowState;
|
|
int m_HighState;
|
|
int m_StopEven;
|
|
|
|
};
|
|
|
|
#pragma pack(1)
|
|
class IntelliScanState{
|
|
|
|
public:
|
|
IntelliScanState()
|
|
: m_GalvanometerScannerTempOK(new BoolData("GalvanometerScannerTempOK", u8"振镜预热完成"))
|
|
, m_ActualPosition(new FloatData("m_ActualPosition", u8"真实位置"))
|
|
, m_SetPosition(new FloatData("SetPosition", u8"设值位置"))
|
|
, m_PositionError(new FloatData("PositionError", u8"位置误差"))
|
|
, m_GalvanometerScannerTemp(new FloatData("GalvanometerScannerTemp", u8"振镜温度"))
|
|
, m_ServoBoardTemp(new FloatData("ServoBoardTemp", u8"伺服板卡温度"))
|
|
, m_PDSupplyVoltage(new FloatData("PDSupplyVoltage", u8"PD供电电压"))
|
|
, m_DSPCoreSupplyVoltage(new FloatData("DSPCoreSupplyVoltage", u8"DSP核心供电电压"))
|
|
, m_DSPIOVoltage(new FloatData("DSPIOVoltage", u8"DSP输入输出电压"))
|
|
, m_AnalogSectionVoltage(new FloatData("AnalogSectionVoltage", u8"模拟区电压"))
|
|
, m_ADConverterSupplyVoltage(new FloatData("ADConverterSupplyVoltage", u8"AD转换供电电压"))
|
|
, m_PDSupplyCurrent(new FloatData("PDSupplyCurrent", u8"PD供电电流"))
|
|
, m_IsGalvanometerScannerOutputStageOn(new BoolData("IsGalvanometerScannerOutputStageOn", u8"振镜输出级生效"))
|
|
, m_IsGalvanometerScannerHeaterOutputStageOn(new BoolData("IsGalvanometerScannerHeaterOutputStageOn", u8"振镜加热器输出级生效"))
|
|
, m_IsInternalVoltagesNormal(new BoolData("IsInternalVoltagesNormal", u8"内部电压正常"))
|
|
, m_IsPositionErrorNormalRange(new BoolData("IsPositionErrorNormalRange", u8"位置误差正常"))
|
|
, m_IsScannerAndServoBoradTempNormal(new BoolData("IsScannerAndServoBoradTempNormal", u8"振镜和伺服温度正常"))
|
|
, m_IsBootingProcessCompleted(new BoolData("IsBootingProcessCompleted", u8"启动处理完成"))
|
|
, m_IsCriticalError(new BoolData("IsCriticalError", u8"发生严重错误"))
|
|
, m_IsExternalPowderLow(new BoolData("IsExternalPowderLow", u8"外部电压欠压"))
|
|
, m_IsScanSystemTempOverLimit(new BoolData("IsScanSystemTempOverLimit", u8"扫描系统超温"))
|
|
, m_IsADConverterSuccessfullyInit(new BoolData("IsADConverterSuccessfullyInit", u8"AD转换初始化成功"))
|
|
, m_IsScannerReachedCriticalEdgePos(new BoolData("IsScannerReachedCriticalEdgePos", u8"振镜到达临界边缘位置"))
|
|
, m_IsAllControlParametersValid(new BoolData("IsAllControlParametersValid", u8"允许控制参数"))
|
|
, m_IsADConverterVoltageOK(new BoolData("IsADConverterVoltageOK", u8"AD转换供电正常"))
|
|
, m_IsAnalogSetionVoltageOK(new BoolData("IsAnalogSetionVoltageOK", u8"模拟区电压正常"))
|
|
, m_IsDSPIOVoltageOK(new BoolData("IsDSPIOVoltageOK", u8"DSP 输入输出电压正常"))
|
|
, m_IsDSPCoreVoltageOK(new BoolData("IsDSPCoreVoltageOK", u8"DSP核心供电正常"))
|
|
, m_IsAGCVoltageOK(new BoolData("IsAGCVoltageOK", u8"AGC电压正常"))
|
|
, m_IsServoBoradOperationTempNormal(new BoolData("IsServoBoradOperationTempNormal", u8"伺服板卡操作温度正常"))
|
|
, m_IsGalvanometerScannerOperationTempNormal(new BoolData("IsGalvanometerScannerOperationTempNormal", u8"振镜操作温度正常"))
|
|
, m_LowState(new IntData("LowState"))
|
|
, m_HighState(new IntData("HighState"))
|
|
, m_StopEven(new IntData("StopEven")){
|
|
|
|
}
|
|
|
|
~IntelliScanState() {}
|
|
|
|
void GetState(IntelliScanStateSCT& intelS) {
|
|
intelS.m_GalvanometerScannerTempOK = m_GalvanometerScannerTempOK->GetValue();
|
|
intelS.m_ActualPosition = m_ActualPosition->GetValue();
|
|
intelS.m_SetPosition = m_SetPosition->GetValue();
|
|
intelS.m_PositionError = m_PositionError->GetValue();
|
|
intelS.m_GalvanometerScannerTemp = m_GalvanometerScannerTemp->GetValue();
|
|
intelS.m_ServoBoardTemp = m_ServoBoardTemp->GetValue();
|
|
intelS.m_PDSupplyVoltage = m_PDSupplyVoltage->GetValue();
|
|
intelS.m_DSPCoreSupplyVoltage = m_DSPCoreSupplyVoltage->GetValue();
|
|
intelS.m_DSPIOVoltage = m_DSPIOVoltage->GetValue();
|
|
intelS.m_AnalogSectionVoltage = m_AnalogSectionVoltage->GetValue();
|
|
intelS.m_ADConverterSupplyVoltage = m_ADConverterSupplyVoltage->GetValue();
|
|
intelS.m_PDSupplyCurrent = m_PDSupplyCurrent->GetValue();
|
|
intelS.m_IsGalvanometerScannerOutputStageOn = m_IsGalvanometerScannerOutputStageOn->GetValue();
|
|
intelS.m_IsGalvanometerScannerHeaterOutputStageOn = m_IsGalvanometerScannerHeaterOutputStageOn->GetValue();
|
|
intelS.m_IsInternalVoltagesNormal = m_IsInternalVoltagesNormal->GetValue();
|
|
intelS.m_IsPositionErrorNormalRange = m_IsPositionErrorNormalRange->GetValue();
|
|
intelS.m_IsScannerAndServoBoradTempNormal = m_IsScannerAndServoBoradTempNormal->GetValue();
|
|
intelS.m_IsBootingProcessCompleted = m_IsBootingProcessCompleted->GetValue();
|
|
intelS.m_IsCriticalError = m_IsCriticalError->GetValue();
|
|
intelS.m_IsExternalPowderLow = m_IsExternalPowderLow->GetValue();
|
|
intelS.m_IsScanSystemTempOverLimit = m_IsScanSystemTempOverLimit->GetValue();
|
|
intelS.m_IsADConverterSuccessfullyInit = m_IsADConverterSuccessfullyInit->GetValue();
|
|
intelS.m_IsScannerReachedCriticalEdgePos = m_IsScannerReachedCriticalEdgePos->GetValue();
|
|
intelS.m_IsAllControlParametersValid = m_IsAllControlParametersValid->GetValue();
|
|
intelS.m_IsADConverterVoltageOK = m_IsADConverterVoltageOK->GetValue();
|
|
intelS.m_IsAnalogSetionVoltageOK = m_IsAnalogSetionVoltageOK->GetValue();
|
|
intelS.m_IsDSPIOVoltageOK = m_IsDSPIOVoltageOK->GetValue();
|
|
intelS.m_IsDSPCoreVoltageOK = m_IsDSPCoreVoltageOK->GetValue();
|
|
intelS.m_IsAGCVoltageOK = m_IsAGCVoltageOK->GetValue();
|
|
intelS.m_IsServoBoradOperationTempNormal = m_IsServoBoradOperationTempNormal->GetValue();
|
|
intelS.m_IsGalvanometerScannerOperationTempNormal = m_IsGalvanometerScannerOperationTempNormal->GetValue();
|
|
intelS.m_LowState = m_LowState->GetValue();
|
|
intelS.m_HighState = m_HighState->GetValue();
|
|
intelS.m_StopEven = m_StopEven->GetValue();
|
|
}
|
|
|
|
static string GetStopEventInfo(int ivalue, bool& bvalue)
|
|
{
|
|
string info = g_LngManager->Scan_None->ShowText();
|
|
bvalue = false;
|
|
switch (ivalue) {
|
|
case 0x10: {
|
|
info = g_LngManager->Scan_CriticalEdgePosInfo->ShowText();
|
|
bvalue = true;
|
|
}break;
|
|
case 0x20: {
|
|
info = g_LngManager->Scan_ADConverterErrorInfo->ShowText();
|
|
bvalue = true;
|
|
}break;
|
|
case 0x30: {
|
|
info = g_LngManager->Scan_TemperatureOverLimitInfo->ShowText();
|
|
bvalue = true;
|
|
}break;
|
|
case 0x40: {
|
|
info = g_LngManager->Scan_ExtPowerLowerLimitInfo->ShowText();
|
|
bvalue = true;
|
|
}break;
|
|
case 0x50: {
|
|
info = g_LngManager->Scan_FlagsAreNotValidInfo->ShowText();
|
|
bvalue = true;
|
|
}break;
|
|
case 0xD0: {
|
|
info = g_LngManager->Scan_WatchdogTimeOut->ShowText();
|
|
bvalue = true;
|
|
}break;
|
|
case 0xE0: {
|
|
info = g_LngManager->Scan_PositionReachTimeout->ShowText();
|
|
bvalue = true;
|
|
}break;
|
|
}
|
|
return info;
|
|
}
|
|
public:
|
|
char m_startFlag; //开始标记
|
|
|
|
//bool m_IsInternalVoltagesNormal; //内部电压正常
|
|
BoolData* m_GalvanometerScannerTempOK; //振镜预热完成
|
|
FloatData* m_ActualPosition; //真实位置
|
|
FloatData* m_SetPosition; //设值位置
|
|
FloatData* m_PositionError; //位置误差
|
|
//FloatData* m_ActualCurrent; //真实电流
|
|
//FloatData* m_ActualVelocity; //真实速度
|
|
FloatData* m_GalvanometerScannerTemp; //振镜温度
|
|
FloatData* m_ServoBoardTemp; //伺服板卡温度
|
|
FloatData* m_PDSupplyVoltage; //PD供电电压
|
|
FloatData* m_DSPCoreSupplyVoltage; //DSP核心供电电压
|
|
FloatData* m_DSPIOVoltage; //DSP输入输出电压
|
|
FloatData* m_AnalogSectionVoltage; //模拟区电压
|
|
FloatData* m_ADConverterSupplyVoltage; //AD转换供电电压
|
|
FloatData* m_PDSupplyCurrent; //PD供电电流
|
|
BoolData* m_IsGalvanometerScannerOutputStageOn; //振镜输出级生效
|
|
BoolData* m_IsGalvanometerScannerHeaterOutputStageOn; //振镜加热器输出级生效
|
|
BoolData* m_IsInternalVoltagesNormal; //内部电压正常
|
|
BoolData* m_IsPositionErrorNormalRange; //位置误差正常
|
|
BoolData* m_IsScannerAndServoBoradTempNormal; //振镜和伺服温度正常
|
|
BoolData* m_IsBootingProcessCompleted; //启动处理完成
|
|
BoolData* m_IsCriticalError; //发生严重错误
|
|
BoolData* m_IsExternalPowderLow; //外部电压欠压
|
|
BoolData* m_IsScanSystemTempOverLimit; //扫描系统超温
|
|
BoolData* m_IsADConverterSuccessfullyInit; //AD转换初始化成功
|
|
BoolData* m_IsScannerReachedCriticalEdgePos; //振镜到达临界边缘位置
|
|
BoolData* m_IsAllControlParametersValid; //允许控制参数
|
|
BoolData* m_IsADConverterVoltageOK; //AD转换供电正常
|
|
BoolData* m_IsAnalogSetionVoltageOK; //模拟区电压正常
|
|
BoolData* m_IsDSPIOVoltageOK; //DSP 输入输出电压正常
|
|
BoolData* m_IsDSPCoreVoltageOK; //DSP核心供电正常
|
|
BoolData* m_IsAGCVoltageOK; //AGC电压正常
|
|
BoolData* m_IsServoBoradOperationTempNormal; //伺服板卡操作温度正常
|
|
BoolData* m_IsGalvanometerScannerOperationTempNormal; //振镜操作温度正常
|
|
IntData* m_LowState;
|
|
IntData* m_HighState;
|
|
IntData* m_StopEven;
|
|
|
|
char m_endFlag; //开始标记
|
|
};
|
|
#pragma pack()
|
|
|
|
|
|
class ScanStateXY :public Base {
|
|
public:
|
|
ScanStateXY() :m_IsConnected(false), m_LastError(0)
|
|
, m_ScanStateUpdateTime(new StrData("ScanStateUpdateTime","更新时间")) {
|
|
size_t ptrSize = sizeof(nullptr); //指针大小
|
|
void* startPtr = &m_X.m_startFlag + 1;
|
|
size_t count = ((size_t)&m_X.m_endFlag - (size_t)startPtr) / ptrSize;
|
|
InsertMp(startPtr, count, "_X");
|
|
|
|
startPtr = &m_Y.m_startFlag + 1;
|
|
count = ((size_t)&m_Y.m_endFlag - (size_t)startPtr) / ptrSize;
|
|
InsertMp(startPtr, count, "_Y");
|
|
|
|
startPtr = &m_Focus.m_startFlag + 1;
|
|
count = ((size_t)&m_Focus.m_endFlag - (size_t)startPtr) / ptrSize;
|
|
InsertMp(startPtr, count, "_Focus");
|
|
|
|
InsertMp(&m_ScanStateUpdateTime, 1);
|
|
}
|
|
~ScanStateXY() {}
|
|
|
|
|
|
public:
|
|
bool m_IsConnected;
|
|
UINT m_LastError;
|
|
IntelliScanState m_X;
|
|
IntelliScanState m_Y;
|
|
IntelliScanState m_Focus;
|
|
StrData* m_ScanStateUpdateTime; //time_t用string表示
|
|
};
|
|
|
|
|
|
struct ScanStateXYSCT {
|
|
public:
|
|
IntelliScanStateSCT m_X;
|
|
IntelliScanStateSCT m_Y;
|
|
IntelliScanStateSCT m_Focus;
|
|
|
|
}; |