#ifndef __PTZ_FAULT_DETECT_H_ #define __PTZ_FAULT_DETECT_H_ #include "Usart.h" #include "ptz_default_value.h" #include "ptz_type_select.h" #define ROTATE_FAULT_MAX_NUM 10 // 8 //判断转动故障连续最大次数 // 判断无法转动的模拟电压等级阈值电压 #define PTZ_HORI_VOLTAGE_LEVEL 1900.0 #define PTZ_VERT_VOLTAGE_LEVEL 1900.0 // 判断无法转动速度的阈值速度 #define PTZ_HORI_DETECT_SPEED (PTZ_HORI_MIN_SPEED / 3.0) #define PTZ_VERT_DETECT_SPEED (PTZ_VERT_MIN_SPEED / 3.0) // 故障标志 #define FAULT 1 // 故障 #define NO_FAULT 0 // 没有故障 /*故障指令代号*/ #define HORI_ROT 0X21 #define HORI_HALL 0X22 #define HORI_PDE 0X23 #define VERT_ROT 0X24 #define VERT_HALL 0X25 #define VERT_PDE 0X26 #define WORK_TEMP 0X27 // 温度故障 #define WORK_VOLT 0X28 // 电压故障 #define CAMERA_POWER 0X29 // 电源状态 #define NTC_HORI 0X2B // 水平NTC温度 #define NTC_VERT 0X2C // 垂直NTC温度 #define Phase_Curr_H 0X2D // 水平相电流 #define Phase_Curr_V 0X2E // 垂直相电流 #define ALL_FAULT_STATE 0X20 // 所有都故障 #define WORK_ELECTRIC_CURRENT 0x2A // 工作电流 #define VERT_PHOTOELECT_SWITCH 0x2F // 垂直光电开关 // 上传云台转动方向 #define PTZ_UP 1 // 上 #define PTZ_DOWN 2 // 下 #define PTZ_LEFT 3 // 左 #define PTZ_RIGHT 4 // 右 /******************************云台工作状态判断*****************************/ #define SELF_CHECKING 1 // 云台自检中 #define AREA_SCANING 2 // 区域扫描中 #define AREA_PAUSING 3 // 区域扫描暂停中 #define AREA_RECOING 4 // 区域扫描恢复中 #define AREA_CLOSING 5 // 区域扫描关闭中 #define PP_SCANING 6 // 预置位扫描中 #define PP_PAUSING 7 // 预置位扫描暂停中 #define PP_RECOING 8 // 预置位扫描恢复中 #define PP_CLOSING 9 // 预置位扫描关闭中 #define HORI_VREF_SAMP 10 // 正在进行水平电压采集 #define VERT_VREF_SAMP 11 // 正在进行垂直电压采集 #define HOVE_VREF_SAMP 12 // 水平电压采集和垂直电压同时采集 #define HORI_PD_ERROR 13 // 水平位置更新出错 #define VERT_PD_ERROR 14 // 垂直位置更新出错 #define HOVE_PD_ERROR 15 // 水平垂直位置更新都出错 #define MOTOR_COLD_CANNOT_ROT 16 // 电机低温无法转动,加热中 #define MOTOR_HORI_COLD_CANNOT_ROT 0xfa // 云台水平电机无法转动,转动故障 #define MOTOR_VERT_COLD_CANNOT_ROT 0xfb // 云台垂直电机无法转动,转动故障 #define MOTOR_HORI_CANNOT_ROT 0xfc // 云台水平电机无法转动,转动故障 #define MOTOR_VERT_CANNOT_ROT 0xfd // 云台垂直电机无法转动,转动故障 #define MOTOR_HOVE_CANNOT_ROT 0xfe // 云台所有电机无法转动,转动故障 #define OTHER_MODE 0 // 其他模式 // 直齿轻型云台 #ifdef PTZ_LIGHT_GEAR_L6235D_AS5047D // 工作温度阈值 #define PTZ_TEMP_DETECT_MAX 70.0 // 65.0 #define PTZ_TEMP_DETECT_MIN -40.0 //-25.0 //山火云台温度阈值-40-70 // 工作电压阈值 #define PTZ_VOLT_DETECT_MAX 30.0 // 30.0 #define PTZ_VOLT_DETECT_MIN 18.0 // 30.0 // 工作电流阈值 #define PTZ_CURRENT_DETECT 6.0 // 5.0 // 霍尔故障阈值 #define PTZ_HALL_DETECT 30 // 30 // 相电流运行最大值 #define PHASE_CURRENT 6.0 #endif // L6235D蜗轮蜗杆中型云台 #ifdef PTZ_MEDIUM_WORM_L6235D_AS5047D // 工作温度阈值 #define PTZ_TEMP_DETECT_MAX 65.0 // 70.0 #define PTZ_TEMP_DETECT_MIN -25.0 // 70.0 // 工作电压阈值 #define PTZ_VOLT_DETECT_MAX 30.0 // 30.0 #define PTZ_VOLT_DETECT_MIN 18.0 // 30.0 // 工作电流阈值 #define PTZ_CURRENT_DETECT 6.0 // 5.0 // 霍尔故障阈值 #define PTZ_HALL_DETECT 30 // 30 // 相电流运行最大值 #define PHASE_CURRENT 3.5 #endif // L6235D涡轮蜗杆重型云台 #ifdef PTZ_HEAVY_WORM_L6235D_AS5047D // 工作温度阈值 #define PTZ_TEMP_DETECT_MAX 65.0 // 70.0 #define PTZ_TEMP_DETECT_MIN -25.0 // 70.0 // 工作电压阈值 #define PTZ_VOLT_DETECT_MAX 30.0 // 30.0 #define PTZ_VOLT_DETECT_MIN 18.0 // 30.0 // 工作电流阈值 #define PTZ_CURRENT_DETECT 6.0 // 5.0 // 霍尔故障阈值 #define PTZ_HALL_DETECT 30 // 30 // 相电流运行最大值 #define PHASE_CURRENT 5.0 #endif #ifdef PTZ_SUPER_LIGHT_WORM_L6235D_AS5047D_12V // 工作温度阈值 #define PTZ_TEMP_DETECT_MAX 65.0 // 70.0 #define PTZ_TEMP_DETECT_MIN -25.0 // 70.0 // 工作电压阈值 #define PTZ_VOLT_DETECT_MAX 14.0 // 30.0 #define PTZ_VOLT_DETECT_MIN 9.0 // 30.0 // 工作电流阈值 #define PTZ_CURRENT_DETECT 6.0 // 5.0 // 霍尔故障阈值 #define PTZ_HALL_DETECT 30 // 30 // 相电流运行最大值 #define PHASE_CURRENT 3.0 #endif #ifdef PTZ_SUPER_LIGHT_WORM_L6235D_AS5047D_24V // 工作温度阈值 #define PTZ_TEMP_DETECT_MAX 65.0 // 70.0 #define PTZ_TEMP_DETECT_MIN -25.0 // 70.0 // 工作电压阈值 #define PTZ_VOLT_DETECT_MAX 30.0 // 30.0 #define PTZ_VOLT_DETECT_MIN 18.0 // 30.0 // 工作电流阈值 #define PTZ_CURRENT_DETECT 6.0 // 5.0 // 霍尔故障阈值 #define PTZ_HALL_DETECT 30 // 30 // 相电流运行最大值 #define PHASE_CURRENT 3.0 #endif // 步进电机 #ifdef PTZ_SUPER_LIGHT_WORM_STEP_DRV8711_AS5047D_12V // 工作温度阈值 #define PTZ_TEMP_DETECT_MAX 65.0 // 70.0 #define PTZ_TEMP_DETECT_MIN -25.0 // 70.0 // 工作电压阈值 #define PTZ_VOLT_DETECT_MAX 14.0 // 30.0 #define PTZ_VOLT_DETECT_MIN 9.0 // 30.0 // 工作电流阈值 #define PTZ_CURRENT_DETECT 6.0 // 5.0 #endif // 步进电机 #ifdef PTZ_SUPER_LIGHT_WORM_STEP_DRV8711_AS5047D_24V // 工作温度阈值 #define PTZ_TEMP_DETECT_MAX 65.0 // 70.0 #define PTZ_TEMP_DETECT_MIN -25.0 // 70.0 // 工作电压阈值 #define PTZ_VOLT_DETECT_MAX 30.0 // 30.0 #define PTZ_VOLT_DETECT_MIN 9.0 // 30.0 // 工作电流阈值 #define PTZ_CURRENT_DETECT 6.0 // 5.0 #endif // 步进电机 #ifdef PTZ_SUPER_LIGHT_WORM_STEP_TMC2160_AS5047D_24V // 工作温度阈值 #define PTZ_TEMP_DETECT_MAX 65.0 // 70.0 #define PTZ_TEMP_DETECT_MIN -25.0 // 70.0 // 工作电压阈值 #define PTZ_VOLT_DETECT_MAX 30.0 // 30.0 #define PTZ_VOLT_DETECT_MIN 9.0 // 30.0 // 工作电流阈值 #define PTZ_CURRENT_DETECT 6.0 // 5.0 #endif // 中型步进电机 #ifdef PTZ_MEDIUM_WORM_STEP_TMC2160_AS5047D_24V // 工作温度阈值 #define PTZ_TEMP_DETECT_MAX 65.0 // 70.0 #define PTZ_TEMP_DETECT_MIN -25.0 // 70.0 // 工作电压阈值 #define PTZ_VOLT_DETECT_MAX 30.0 // 30.0 #define PTZ_VOLT_DETECT_MIN 9.0 // 30.0 // 工作电流阈值 #define PTZ_CURRENT_DETECT 6.0 // 5.0 #endif // 伺服电机 #ifdef PTZ_MEDIUM_WORM_SERVO_MOTOR_24V // 工作温度阈值 #define PTZ_TEMP_DETECT_MAX 65.0 // 70.0 #define PTZ_TEMP_DETECT_MIN -25.0 // 70.0 // 工作电压阈值 #define PTZ_VOLT_DETECT_MAX 30.0 // 30.0 #define PTZ_VOLT_DETECT_MIN 9.0 // 30.0 // 工作电流阈值 #define PTZ_CURRENT_DETECT 10.0 // 5.0 #endif /// 需要判断能否执行的指令 typedef struct _PtzCmdType_ { // 当参数为1时表示该指令能够执行,0表示不能够被执行 char manual_control; // 手动控制,包括上下左右等方向控制,和角度控制 char manual_stop; // 手动停止指令 char preset_bit_set; // 预置位设置 char preset_bit_del; // 预置位删除 char preset_bit_call; // 预置位调用 char preset_bit_scan_start; // 预置位扫描启动 char preset_bit_scan_pause; // 预置位扫描暂停 char preset_bit_scan_recovery; // 预置位扫描恢复 char preset_bit_scan_close; // 预置位扫描关闭 char area_set; // 区域数据设置 char area_scan_start; // 区域扫描启动 char area_scan_pause; // 区域扫描暂停 char area_scan_recovery; // 区域扫描恢复 char area_scan_close; // 区域扫描关闭 char set_zero; // 设置0位 } PtzCmdType; // 云台工作模式判断 typedef struct _PtzWorkMode_ { char mode; char data_a; char data_b; } PtzWorkMode; PtzWorkMode ptz_work_mode_judge(); PtzCmdType ptz_cmd_execute_judge(); void ptz_send_work_mode(char dev); void init_status_monitor_module(); void ptz_send_fault_state(char dev, unsigned char FaultState); #endif