TSI_Config/data_config.h
2025-08-08 21:59:34 +08:00

820 lines
20 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef DATA_CONFIG_H
#define DATA_CONFIG_H
#include <QString>
#include <QPushButton>
#include <QLabel>
#include <QList>
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
#define SLOT_NUM 15
#define CHANNEL_COUNT 4
#define RELAY_COUNT 16
typedef struct {
bool used[4]; // 是否已配置
int channel;
}ChannelUsed;
extern QString g_strServerIp; // 服务端IP
extern QString g_version;
extern ChannelUsed ch_used[SLOT_NUM][22];
struct ExprNode {
QString value;
QList<ExprNode*> children;
};
struct ExprValidationResult {
bool isValid;
int errorPos;
QString errorMsg;
};
typedef enum {
kCardNone = 0,
kCardCpu = 1,
kCardVibSingle = 10,
kCardVibTMRPrimary = 11,
kCardVibTMRBackup = 12,
kCardVibDoublePrimary = 13,
kCardVibDoubleBackup = 14,
kCardSpeedSingle = 20,
kCardSpeedTMRPrimary = 21,
kCardSpeedTMRBackup = 22,
kCardKeyphaseSingle = 30,
kCardKeyphaseDouble = 31,
kCardRelaySingle = 32,
kCardRelayTMRPrimary = 33,
kCardRelayTMRBackup = 34,
kCardRelaySingleNOK = 35,
} CardType;
// 振动板通道类型
typedef enum {
kVibRadial = 0, // 径向位移
kVibAcc = 1, // 加速度
kVibVelocity = 2, // 速度
kVibThrust = 3, //轴向位移
kVibPressurePulsation = 4 //动态压力脉动
} VibChannelType;
enum TotalCalcValueType {
// 转速
kSpeedRpm = 0,
// 轴向位移
kThrustGap = 2,
// 径向位移
kRadialPk = 4,
kRadialPk2Pk = 5,
kRadialRmsScaledPeak = 6,
kRadialRmsScaledPk2Pk = 7,
// 速度
kVelPeak = 11,
kVelRmsScaledPeak = 12,
kVelRms = 13,
kVelDisPeak = 17,
kVelDisPk2Pk = 18,
kVelDisRmsScaledPeak = 19,
kVelDisRmsScaledPk2Pk = 20,
// 加速度
kAccPeak = 21,
kAccRmsScaledPeak = 22,
kAccRms = 23,
kAccVelPeak = 26,
kAccVelRmsScaledPeak = 27,
kAccVelRms = 28,
kAccDisPeak = 31,
kAccDisPk2Pk = 32,
kAccDisRmsScaledPeak = 33,
kAccDisRmsScaledPk2Pk = 34,
// 压力脉动
kPressPulsationPeak = 41,
kPressPulsationRmsScaledPeak = 42,
kPressPulsationRms = 43,
// kTriggerPressurePulsationLow = 11, // [10, 40]
// kTriggerPressurePulsationMID1 = 12, // (40, 120]
// kTriggerPressurePulsationMID2 = 13, // (120, 190]
// kTriggerPressurePulsationHIGH1 = 14, // (190, 290]
// kTriggerPressurePulsationHIGH2 = 15, // (290, 500]
// kTriggerPressurePulsationHH1 = 16, // (500, 2000]
// kTriggerPressurePulsationHH2 = 17, // (2000, 3200]
// kTriggerPressurePulsationHH3 = 18, // (3200, 4200]
// kTriggerPressurePulsationHH4 = 19, // (4200, 4600]
// kTriggerPressurePulsationOA = 20, // [5, 500]
// 复合运算
kSmax = 81, // 径向位移运算
kDifferentialHousingExpansion = 82, // 差胀,针对轴向位移,做减法
kRelativeShaftTaper = 83, // 径向位移,根据公式进行计算
kRelativeShaftCollar = 84, // 径向位移,根据公式进行计算
kDualMathematicalFunction = 85, // 公式计算
kDCValue = 100,
};
typedef enum{
kTruePeak = 0,
kTruePeakToPeak = 1,
kRMSScalePeak = 2,
kRMSScalePeakToPeak = 3,
kAVG = 4,
kRMSScaleAVG = 5,
kRMS = 6
} RectifierFuntion;
typedef enum{
kUnit1 = 0, // g
kUnit2 = 1, // m/s**2
kUnit3 = 2, // mm/s
kUnit4 = 3, // inch/s
kUnit5 = 4, // um
kUnit6 = 5, // mm
kUnit7 = 6, // mils
kUnit8 = 7, // inch/s**2
kUnit9 = 9, // mbar
kUnit10 = 10, // bar
kUnit11 = 11, // psi
kUnit12 = 12, // pa
kUnit13 = 13 // user defined
} EngineeringUnit;
typedef enum{
kCh1Output1 = 0, // 通道1 输出1
kCh2Output2 = 1, // 通道2 输出1
kCh3Output3 = 2, // 通道3 输出1
kCh4Output4 = 3, // 通道4 输出1
kCh1Ch2 = 4, // 通道1 & 通道2
kCh3Ch4 = 5, // 通道3 & 通道4
kCh1FreBand1 = 6, // 通道1 分频段1
kCh1FreBand2 = 7, // 通道1 分频段2
kCh1FreBand3 = 8, // 通道1 分频段3
kCh1FreBand4 = 9, // 通道1 分频段4
kCh2FreBand1 = 10, // 通道2 分频段1
kCh2FreBand2 = 11, // 通道2 分频段2
kCh2FreBand3 = 12, // 通道2 分频段3
kCh2FreBand4 = 13, // 通道2 分频段4
kCh3FreBand1 = 14, // 通道3 分频段1
kCh3FreBand2 = 15, // 通道3 分频段2
kCh3FreBand3 = 16, // 通道3 分频段3
kCh3FreBand4 = 17, // 通道3 分频段4
kCh4FreBand1 = 18, // 通道4 分频段1
kCh4FreBand2 = 19, // 通道4 分频段2
kCh4FreBand3 = 20, // 通道4 分频段3
kCh4FreBand4 = 21 // 通道4 分频段4
} DCOutputChannel;
typedef struct SlotConfig_{
int slot;
QString slot_type;
QPushButton *slot_btn;
QLabel *slot_label;
SlotConfig_(){
slot_type = "";
}
} SlotConfig;
enum CMTCommand {
kEigenvalueCmd = 1,
kExceptionInfo = 2,
kUpgradeCard = 3,
kGetVersionInfo = 4,
kRelaySetting = 5,
kRelayStatus = 6,
kUpgradeProgress = 7,
kCalibrationMode = 8,
kGetDcValue = 9,
kSetCalibrationCoe = 10,
kGetCalibrationCoe = 11,
kClearCalibrationCoe = 12,
kGetWaveData = 13,
kUploadConfigFile = 14,
kDownloadConfigFile = 15,
kConfigSubCard = 16, // 请求无包体,响应有包体
kRS485BaudrateSet = 17, // RS485波特率配置
kRS485BaudrateGet = 18, // RS485波特率获取
kConfigIPv4 = 19, // 配置IP地址
kConfigMac = 20, // 配置Mac地址
kRebootCard = 21, // 重启板卡
kGetCardDcValue = 22, // 获取子板平均值
kGetRelayStatus = 23, // 获取继电器状态
kGetKeyphaseInfo = 24, // 获取键相信息
kConfigProgress = 25, // 配置进度
kTimingCmd = 26, // 校时
kGetTimeInfo = 27, // 获取时间信息
kGetLogInfo = 28, // 获取子板日志信息
kCleanSubCardCfg = 29, // 清理子板配置
kCleanSubCardLatch = 30, // 清理子板特定通道的Latch状态
kConfigMQTTBrokerInfo = 31, // 配置与获取MQTT broker信息
kConfigDeviceID = 32, // 配置设备编号编号范围为1~99
};
enum RS485Baudrate {
kBaudrate2400 = 0,
kBaudrate4800 = 1,
kBaudrate9600 = 2, // 默认值
kBaudrate19200 = 3,
kBaudrate38400 = 4,
kBaudrate57600 = 5,
kBaudrate115200 = 6
};
// 振动板采样率
typedef enum {
kVibSR16K = 0, // 16k
kVibSR32K = 1, // 32k
kVibSR64k = 2, // 64k
kVibSR128K = 3, // 128k
} VibSamplingRate;
// 振动板机架类型
typedef enum {
kVibRackSingle = 0, // 单一
kVibRackTMR = 1 // 三冗余
} VibRackType;
typedef struct SeismicMonitor_{
int id;
QString point_name;
QString chan_id;
bool standby;
bool active;
int rack_type; // VibRackType
// char tmr_group[32];
int channel_type; // VibChannelType
int transducer_id;
float scale_factor;
int sampling_rate; // VibSamplingRate
float normal_voltage_low;
float normal_voltage_high;
bool power;
bool keyphase;
int keyphase_slot;
int keyphase_ch;
int sensitivity_unit;
float signal_sensitivity;
SeismicMonitor_(){
standby = false;
active = false;
normal_voltage_high = 20;
normal_voltage_low = -20;
signal_sensitivity = 8;
}
} SeismicMonitor;
typedef enum {
kFilterTypeLowPass = 0,
kFilterTypeHighPass = 1,
kFilterTypeBandPass = 2,
} FilterType;
typedef struct {
int low;
int high;
bool checked;
} Filter;
typedef struct{
bool output_used;
int engineering_unit;
int rectifier_function;
}General;
typedef struct{
float level;
float hysteresis;
float delay;
bool enable;
bool latch;
}AlarmDangerHigh,AlarmAlertHigh,AlarmDangerLow,AlarmAlertLow ;
typedef struct FrequencybandOutput_{
bool enable;
int start;
int end;
FrequencybandOutput_()
{
enable = false;
start = 0;
end = 0;
}
}FrequencybandOutput ;
typedef struct DCOutput_{
int output_channel;
float minmum;
float maxmum;
DCOutput_(){
output_channel = -1;
minmum = 0;
maxmum = 0;
}
} DCOutput;
//typedef struct {
// Filter filter[3]; // 0: kFilterTypeLowPass, 1: kFilterTypeHighPass, 2: kFilterTypeBandPass
//} AllFilter;
typedef struct {
QString type;
int full_sacle_range;
int bias_voltage;
float clamp_value;
int phase_lag;
bool checked;
float custom;
} Variables;
typedef struct {
int full_scale_range;
float clamp_value;
float custom;
} DirectImpl;
typedef struct{
int full_scale_range;
float custom;
}GapRange;
typedef struct {
bool checked;
int full_scale_range;
float clamp_value;
float custom;
int phase_lag;
} XImpl;
typedef struct {
bool checked;
int full_scale_range;
float clamp_value;
float custom;
} RadialImpl;
typedef struct {
int alert;
float danger;
bool active_100ms;
} Delay;
typedef struct {
float value;
bool negation;
} ZeroPosition;
typedef struct {
bool rms_active;
bool integrate_active;
bool alert_latching;
bool danger_latching;
bool timed_ok;
int recorder_output;
bool two_ma_clamp;
float trip_multiply;
QString comparision;
int comparision_percentage;
} Alert_Variables;
typedef struct {
int recorder_output;
bool two_ma_clamp;
float trip_multiply;
int comparision;
int percentage;
} RecorderOut;
typedef struct {
int id;
QString point_name;
bool active;
float normal_voltage_low;
float normal_voltage_high;
int speed_peek;
int default_speed;
bool automatic_threshold;
float threshold;
float hysteresis;
int events_per_revolution;
int record_output;
bool two_ma_clamp;
bool alert_latching;
bool overspeed_latching;
bool normal_latching;
} TachometerVariables;
typedef struct {
bool active;
float normal_voltage_low;
float normal_voltage_high;
bool automatic_threshold;
float threshold;
float hysteresis;
int events_per_revolution;
} KeyphaseVariables;
typedef struct {
QString transducer_name;
double scale_factor;
} Transducer;
typedef struct VibAlertDanger_{
float direct_upper;
bool direct_enable;
float x1_ampl_upper;
float x1_ampl_lower;
bool x1_ampl_enable;
float x2_ampl_upper;
float x2_ampl_lower;
bool x2_ampl_enable;
int danger_param; //0 直接值1 1倍频幅值2 2倍频幅值
float danger_upper;
bool danger_enable;
VibAlertDanger_(){
direct_upper = 0.0;
direct_enable = false;
x1_ampl_upper = 0.0;
x1_ampl_lower = 0.0;
x1_ampl_enable = false;
x2_ampl_upper = 0.0;
x2_ampl_lower = 0.0;
x2_ampl_enable = false;
danger_upper = 0.0;
danger_enable = false;
}
} VibAlertDanger;
typedef struct VibAlertDangerPress_{
float low_upper;
bool low_enable;
float mid1_upper;
bool mid1_enable;
float mid2_upper;
bool mid2_enable;
int danger_param; //0 全频段OA
float danger_upper;
bool danger_enable;
VibAlertDangerPress_(){
low_upper = 0.0;
low_enable = false;
mid1_upper = 0.0;
mid1_enable = false;
mid2_upper = 0.0;
mid2_enable = false;
danger_upper = 0.0;
danger_enable = false;
}
} VibAlertDangerPress;
typedef struct SpeedAlert_{
int speed_upper;
int speed_lower;
bool speed_upper_enable;
bool speed_lower_enable;
int danger_speed_upper;
SpeedAlert_(){
speed_upper = 0;
speed_lower = 0;
danger_speed_upper = 0;
speed_upper_enable = false;
speed_lower_enable = false;
}
} SpeedAlert;
typedef struct SingleRelayNOK_{
QString logic_expression;
bool active;
SingleRelayNOK_(){
logic_expression = "";
active = false;
}
} SingleRelayNOK;
typedef struct TMRRelay_{
QString logic_expression;
TMRRelay_(){
logic_expression = "";
}
} TMRRelay;
#pragma pack(1)
// kUpgradeCard
typedef struct {
uint8_t head[3]; // 固定值0xAA55AA
uint8_t cmd;
uint8_t version; // 版本号默认为1
int len;
uint8_t card_id;
uint8_t crc;
char data[0];
} UpgradeCardReq;
typedef struct {
uint8_t head[3]; // 固定值0xAA55AA
uint8_t cmd;
uint8_t version; // 版本号默认为1
uint8_t code; // 0: 上传成功
} UpgradeRsp;
// kUpgradeProgress
typedef struct {
uint8_t head[3]; // 固定值0xAA55AA
uint8_t cmd;
uint8_t version; // 版本号默认为1
uint8_t progress;
} UpgradeProgress;
// kGetVersionInfo
typedef struct {
uint8_t head[3]; // 固定值0xAA55AA
uint8_t cmd;
uint8_t version; // 版本号默认为1
uint8_t card_id;
} GetVersionReq;
typedef struct {
uint8_t head[3]; // 固定值0xAA55AA
uint8_t cmd;
uint8_t version; // 版本号默认为1
uint8_t fpga; // fpga版本号
uint8_t sw; // 软件版本号
char fpga_date[9]; // fpga版本日期
} VersionRsp;
// kRelaySetting
typedef struct {
uint8_t head[3]; // 固定值0xAA55AA
uint8_t cmd;
uint8_t version; // 版本号默认为1
uint8_t card_id; // 0xff是本机其它子卡是115
uint8_t led_id; // ok 灯 0xff,rx/tx 灯 0xf1,板卡测试模式 0xee,板卡状态 0xe1,其他 1 ~ 16
uint8_t led_operate; // 0 OFF,1 ON,2 红色,3 绿色,4 红色1Hz闪烁,5 红色2Hz闪烁,6 绿色闪烁,7 测试状态,8 手动状态,9 工作状态
} RelaySettingReq;
typedef struct {
uint8_t head[3]; // 固定值0xAA55AA
uint8_t cmd;
uint8_t version; // 版本号默认为1
uint8_t code;
} RelaySettingRsp;
// kRelayStatus
typedef struct {
uint8_t head[3]; // 固定值0xAA55AA
uint8_t cmd;
uint8_t version; // 版本号默认为1
uint8_t card_id;
} RelayStatusReq;
typedef struct {
uint8_t head[3]; // 固定值0xAA55AA
uint8_t cmd;
uint8_t version; // 版本号默认为1
uint8_t code; // 0: 成功 其它:失败
uint8_t status; // 7 测试状态,8 手动状态,9 工作状态
} RelayStatusRsp;
// kUploadConfigFile
typedef struct {
uint8_t head[3]; // 固定值0xAA55AA
uint8_t cmd;
uint8_t version; // 版本号默认为1
int len;
uint8_t sub_cmd; // 0: 仅上传配置文件,不配置子板 1配置所有子板
uint8_t crc;
char data[0];
} UploadConfigReq;
typedef struct {
uint8_t head[3]; // 固定值0xAA55AA
uint8_t cmd;
uint8_t version; // 版本号默认为1
uint8_t code;
} UploadConfigRsp;
typedef struct {
uint8_t head[3]; // 固定值0xAA55AA
uint8_t cmd;
uint8_t version; // 版本号默认为1
uint8_t code; // 子板配置错误码
uint8_t subcard_id; // 子板编号从1开始
uint8_t stage; // 0: 配置开始 1配置结束
} UploadConfigProgress;
// kDownloadConfigFile
typedef struct {
uint8_t head[3]; // 固定值0xAA55AA
uint8_t cmd;
uint8_t version; // 版本号默认为1
} DownloadConfigReq;
typedef struct {
uint8_t head[3]; // 固定值0xAA55AA
uint8_t cmd;
uint8_t version; // 版本号默认为1
uint8_t code;
int len;
uint8_t crc;
char data[0];
} DownloadConfigRsp;
// kConfigSubCard = 16
typedef struct {
uint8_t head[3]; // 固定值0xAA55AA
uint8_t cmd;
uint8_t version; // 版本号默认为1
uint8_t card_id;
} ConfigSubCardReq;
typedef struct {
uint8_t head[3]; // 固定值0xAA55AA
uint8_t cmd;
uint8_t version; // 版本号默认为1
uint8_t card_id;
uint8_t code; // 0: 成功 1: 没有配置文件
} ConfigSubCardRsp;
typedef struct {
uint8_t head[3]; // 固定值0xAA55AA
uint8_t cmd;
uint8_t version; // 版本号默认为1
uint8_t code; // 子板配置错误码
uint8_t subcard_id; // 子板编号从1开始
uint8_t stage; // 0: 配置开始 1配置结束
} ConfigSubCardProgress;
// kRS485BaudrateGet
typedef struct {
uint8_t head[3]; // 固定值0xAA55AA
uint8_t cmd;
uint8_t version; // 版本号默认为1
} BaudrateGetReq;
typedef struct {
uint8_t head[3]; // 固定值0xAA55AA
uint8_t cmd;
uint8_t version; // 版本号默认为1
uint8_t baudrate;
} BaudrateGetRsp;
//kRS485BaudrateSet
typedef struct {
uint8_t head[3]; // 固定值0xAA55AA
uint8_t cmd;
uint8_t version; // 版本号默认为1
uint8_t baudrate;
} BaudrateSetReq;
typedef struct {
uint8_t head[3]; // 固定值0xAA55AA
uint8_t cmd;
uint8_t version; // 版本号默认为1
uint8_t code;
} BaudrateSetRsp;
//kConfigIPv4
typedef struct {
uint8_t head[3]; // 固定值0xAA55AA
uint8_t cmd;
uint8_t version; // 版本号默认为1
uint8_t ethn; // 0: eth0, 1: eth1
char ip[16];
char netmask[16];
char gw[16];
} ConfigIPv4Req;
typedef struct {
uint8_t head[3]; // 固定值0xAA55AA
uint8_t cmd;
uint8_t version; // 版本号默认为1
uint8_t code;
} ConfigIPv4Rsp;
//ConfigMacReq
typedef struct {
uint8_t head[3]; // 固定值0xAA55AA
uint8_t cmd;
uint8_t version; // 版本号默认为1
uint8_t ethn; // 0: eth0, 1: eth1
char mac[18];
} ConfigMacReq;
typedef struct {
uint8_t head[3]; // 固定值0xAA55AA
uint8_t cmd;
uint8_t version; // 版本号默认为1
uint8_t code;
} ConfigMacRsp;
// kGetLogInfo = 28
typedef struct {
uint8_t head[3]; // 固定值0xAA55AA
uint8_t cmd;
uint8_t version; // 版本号默认为1
uint8_t card_id;
uint8_t level;
} GetSubCardLogReq;
typedef struct {
uint8_t head[3]; // 固定值0xAA55AA
uint8_t cmd;
uint8_t version; // 版本号默认为1
uint8_t card_id;
uint8_t code;
uint32_t len;
char data[0]; // 请保存为.tar.gz文件
} GetSubCardLogRsp;
// cmd: kTimingCmd = 26
typedef struct {
uint8_t head[3]; // 固定值0xAA55AA
uint8_t cmd;
uint8_t version; // 版本号默认为1
uint32_t ts; // 时间戳
} SetTimingReq;
typedef struct {
uint8_t head[3]; // 固定值0xAA55AA
uint8_t cmd;
uint8_t version; // 版本号默认为1
uint8_t code; // 0: 成功 其它:失败
} SetTimingRsp;
// cmd: kGetTimeInfo = 27
typedef struct {
uint8_t head[3]; // 固定值0xAA55AA
uint8_t cmd;
uint8_t version; // 版本号默认为1
} GetTimeInfoReq;
typedef struct {
uint8_t head[3]; // 固定值0xAA55AA
uint8_t cmd;
uint8_t version; // 版本号默认为1
uint32_t ts; // 时间戳
} GetTimeInfoRsp;
typedef struct {
uint8_t head[3]; // 固定值0xAA55AA
uint8_t cmd; // kConfigMQTTBrokerInfo
uint8_t version; // 版本号默认为1
uint8_t sub_cmd; // 0: get, 1: set
char ip[16]; // mqtt broker地址
uint16_t port;
} MQTTBrokerConfigInfoReq;
typedef struct {
uint8_t head[3]; // 固定值0xAA55AA
uint8_t cmd; // kConfigMQTTBrokerInfo
uint8_t version; // 版本号默认为1
uint8_t code; // success:0, failure: others
uint8_t sub_cmd; // 0: get, 1: set
char ip[16]; // mqtt broker地址
uint16_t port;
} MQTTBrokerConfigInfoRsp;
// 子命令无响应,可观察灯板变化
typedef struct {
uint8_t head[3]; // 固定值0xAA55AA
uint8_t cmd; // kCleanSubCardLatch
uint8_t version; // 版本号默认为1
uint8_t card_id; // 子板编号1-15
uint8_t sid; // 通道编号1-4
} CleanLatchStatusReq;
typedef struct {
uint8_t head[3]; // 固定值0xAA55AA
uint8_t cmd; // kConfigDeviceID
uint8_t version; // 版本号默认为1
uint8_t sub_cmd; // 0: get, 1: set
uint8_t device_id; // 设备编号 0~99
} DeviceIDConfigReq;
typedef struct {
uint8_t head[3]; // 固定值0xAA55AA
uint8_t cmd; // kConfigDeviceID
uint8_t version; // 版本号默认为1
uint8_t code; // success:0, failure: others
uint8_t sub_cmd; // 0: get, 1: set
uint8_t device_id; // 设备编号
} DeviceIDConfigRsp;
struct BaseHeader {
uint8_t head[3]; // 固定 0xAA 0x55 0xAA
uint8_t cmd;
};
struct LargeHeaderExtra {
uint8_t version;
uint8_t code;
int32_t len;
};
#pragma pack()
#endif // DATA_CONFIG_H