/* * AttCtrlMain.h * Created: 2022/11/4 11:02:40 * Author: wangzk zhengmengxing */ #ifndef _ATTCTRLMAIN_H_ #define _ATTCTRLMAIN_H_ #include "AttMath.h" #include "..\PrjCommon\CommonDef.h" #include "..\PrjCommon\BlockRing.h" #include "..\PrjCommon\DataStorDefine.h" #include "..\PrjCommon\ModTask.h" #include "..\PrjCommon\DevDefine.h" #include "..\PrjCommon\DevDrvs.h" #include "..\PrjTaskMng\TaskMng.h" #include "..\PrjTelCtrlMng\TelCtrlMng.h" #include "..\PrjOrbitMng\OrbitMng.h" #include "..\PrjCollectMng\CollectMng.h" #include "..\PrjSadaCtrlMng\SadaMng.h" #include "..\PrjCommon\TypeDef.h" //姿控数据地址分配 #define ATTCLT_DATA1_ADDR (ATTCTL_BASE_ADDR ) #define SIZE_RECVDATA_BUF1 (0x2000) /*数据区8k*/ #define ATTCLT_DATA2_ADDR (ATTCLT_DATA1_ADDR + SIZE_RECVDATA_BUF1) /*控制参数区*/ #define SIZE_RECVDATA_BUF2 (0x1000) /* 数据区4k */ #define ATTCLT_DATA3_ADDR (ATTCLT_DATA2_ADDR + SIZE_RECVDATA_BUF2) /*4k轨道控制数据注数区*/ #define SIZE_RECVDATA_BUF3 (0x1000) /*数据区4k*/ #define ATTCLT_DATA4_ADDR (ATTCLT_DATA3_ADDR + SIZE_RECVDATA_BUF3) /*接收来自遥控注入的目标定向数据,2k字节*/ #define SIZE_RECVDATA_BUF4 (0x800) /*数据区2k*/ #define ATTCLT_DATA5_ADDR (ATTCLT_DATA4_ADDR+ SIZE_RECVDATA_BUF4) /*接收来自遥控注入的轨道数据,4k字节*/ #define SIZE_RECVDATA_BUF5 (0x1000) /*数据区4k*/ #define ATTCLT_DATA6_ADDR (ATTCLT_DATA5_ADDR + SIZE_RECVDATA_BUF5) /*目标定向数据,2k字节*/ #define SIZE_RECVDATA_BUF6 (0x800) /*数据区2k*/ /***********************************遥控指令注数***********************************/ //软指令 #define ATT_SAFEMODE_SAFE1 (0xC600) //整星安全模式1 #define ATT_SAFEMODE_SAFE2 (0xC601) //整星安全模式2 #define ATT_SAFEMODE_SAFE3 (0xC602) //整星安全模式3 //模式控制注数区 #define ATT_CMDMODE_MODSUNCAP (0x3600) //进入速率阻尼 #define ATT_CMDMODE_WhlTOSUN (0x3601) //进入轮控对日定向 #define ATT_CMDMODE_MagTOSUN (0x3602) //磁控对日定向 #define ATT_CMDMODE_ONLTOEARTH (0x3603) //对地定向*/ #define ATT_CMDMODE_WHEELTOEARTH (0x3604) //稳态对地*/ #define ATT_CMDMODE_UNCTL (0x3605) //无控模式*/ #define ATT_WORKMODE_ORBITCTLPRE (0xA606) //轨控前调姿*/ #define ATT_WORKMODE_ORBITCTL (0xA607) //轨控*/ #define ATT_WORKMODE_ATTAJUST (0xA611) //定向调姿*/ #define ATT_WORKMODE_ONLTOTAR (0xA612) //目标定向*/ #define ATT_CMDMODE_ORBITCTL (0xC304) //轨道控制数据上注*/ #define ATT_CMDMODE_ONLTOTAR (0xC303) //对目标定向数据上注*/ #define ATT_CMDMODE_ORBITCTLREQ (0x3609) //轨控异步包请求 //准禁开关 #define ATT_CMDMODE_MODECHANG (0x360A) //允许工作模式自主切换 #define ATT_CMDMODE_NOMODECHANG (0x360B) //禁止工作模式自主切换 #define ATT_CMDMODE_AllowCThr (0x360C) //允许自主单机间互校验 #define ATT_CMDMODE_NOAllowCThr (0x360D) //禁止自主单机间互校验 #define ATT_CMDOBITRESET (0x360E) //清轨控包 #define ATT_CMDATTRESET (0x360F) //清目标定向包 #define ATT_CMDMODE_ATTLOSE (0x3618) //姿态基准丢失判断开指令 #define ATT_CMDMODE_NOATTLOSE (0x3619) //姿态基准丢失判断关指令 #define ATT_CMDMODE_ATTEx (0x361A) //姿态超差判断开指令 #define ATT_CMDMODE_NOATTEx (0x361B) //姿态超差判断关指令 #define ATT_CMDMODE_AttUnSta (0x361C) //姿态不稳定判断开指令 #define ATT_CMDMODE_NOAttUnSta (0x361D) //姿态不稳定判断关指令 //参数指令 #define ATT_CMDCODE_MODPARAM (0x361E) //模式切换相关参数更改 //模拟太敏相关注数 #define ATT_CMDCODE_ASS (0x361F) //模拟太敏故障诊断参数(电压) //单机系统级互校 #define ATT_CMDCROSSCHECKTHR (0x3620) //单机异常状态 #define ATT_CMDCROSSERR (0x3621) //单机使用状态 #define ATT_CMDCROSSUSE (0x3622) //单机优先级状态 #define ATT_CMDCROSS (0x3623) //单机重构 #define ATT_CMDCREUSE (0x3624) //单机故障诊断条件 #define ATT_CMDCROSSDIG (0x3625) //PPU故障诊断条件 #define ATT_CMDCPPUDIG (0x3626) //单机故障诊断时间 #define ATT_CMDCDIGTIME (0x3627) //基准丢失故障诊断条件 #define ATT_CMDCDIGLOSE (0x3628) //超差故障诊断条件 #define ATT_CMDCDIGEX (0x3629) //姿态不稳定故障诊断条件 #define ATT_CMDCDIGNOSTATE (0x362A) //配平轮转速力矩阈值 #define ATT_CMDWHLSLIMT (0x362B) //星敏安装矩阵注入 #define ATT_CMDCODE_SSMAT (0x362C) //太敏安装矩阵注入 #define ATT_CMDCODE_ASSMAT (0x362D) //磁强计安装矩阵注入 #define ATT_CMDCODE_MAGMAT (0x362E) //陀螺安装矩阵注入 #define ATT_CMDCODE_GyroMAT (0x362F) //反作用轮安装矩阵注入 #define ATT_CMDCODE_WHLMAT (0x3630) //磁力矩器安装矩阵注入 #define ATT_CMDCODE_MTMAT (0x3631) //磁阻尼控制器注入 #define ATT_CMDCODE_DMPPARA (0x3632) //磁控对日控制器参数注入 #define ATT_CMDCODE_TOSUNPARA (0x3633) //磁卸载控制器参数注入 #define ATT_CMDCODE_MTCTRLPARA (0x3634) //飞轮PD控制器参数注入 #define ATT_CMDCODE_PDCTRLPARA (0x3635) //飞轮PID控制器参数注入 #define ATT_CMDCODE_PIDCTRLPARA (0x3636) //陀螺零偏注入 #define ATT_CMDCODE_GyroBIAS (0x3637) //陀螺标度因数注入 #define ATT_CMDCODE_GyroPH (0x3638) //卫星进出影判断值参数注入 #define ATT_CMDCODE_BetaAng (0x3639) //飞轮ID选择参数注入 #define ATT_CMDCODE_WhlID (0x363A) //磁力矩器分配-磁矩限值 #define ATT_CMDCODE_MTCTRL (0x363B) //磁强计标定系数 #define ATT_CMDCODE_MTBD (0x363C) //卫星推力器产生本体系加速度 #define ATT_CMDMODE_PPUAB (0x363D) //PPU标定系数 #define ATT_CMDCODE_PPUBD (0x363E) //陀螺积分限幅注入 #define ATT_CMDCODE_GyroINTTLimt (0x363F) //安全模式PPU使用状态 #define ATT_CMDCODE_SafePPU (0x3640) //飞轮偏置动量 #define ATT_CMDCODE_WHLCENT (0x3641) //在轨编程宏预留1 #define ATT_CMDCODE_RESET1 (0x3642) //在轨编程宏预留2 #define ATT_CMDCODE_RESET2 (0x3643) //在轨编程宏预留3 #define ATT_CMDCODE_RESET3 (0x3644) //在轨编程宏预留4 #define ATT_CMDCODE_RESET4 (0x3645) //在轨编程宏预留5 #define ATT_CMDCODE_RESET5 (0x3646) //在轨编程宏预留6 #define ATT_CMDCODE_RESET6 (0x3647) //在轨编程宏预留7 #define ATT_CMDCODE_RESET7 (0x3648) //在轨编程宏预留8 #define ATT_CMDCODE_RESET8 (0x3649) //在轨编程宏预留9 #define ATT_CMDCODE_RESET9 (0x364A) //在轨编程宏预留10 #define ATT_CMDCODE_RESET10 (0x364B) /***************单机配置宏定义*****************/ //优先级定义 #define PriorHig (0xAA) //优先级高 #define PriorMid (0x55) //优先级中 #define PriorLow (0x00) //优先级低 //说明:磁力矩器数据结构体 #define MT_NUM (4) //磁力矩器个数 #define MT_ON (0x55) #define MT_OFF (0x00) #define MT_DIRECT_POS (0x55) //Positive正向 #define MT_DIRECT_NEG (0xAA) //negative负向 //说明:星敏遥测数据结构体 #define STAR_NUM (3) //星敏总个数 #define STARAB_HEAD (0x8AA1) #define STARAB_ID (0x0000) #define STARAB_LEN (64) #define STARC_HEAD (0xEB50) #define STARC_ID (0x0022) #define STARC_LEN (53) //说明:陀螺数据结构体 //A:华芯 B:华芯 C:开拓 //20230810 #define GYRO_NUM (3) //陀螺单机数量 #define GYRO_DATA_HEADA (0xEB90) //陀螺A遥测422数据包头 #define GYRO_DATA_LENA (0x28) //陀螺A遥测422数据包长(总包长) #define GYRO_DATA_HEADC (0xEB90) //陀螺C遥测422数据包头 #define GYRO_DATA_LENC (0x1A) //陀螺C遥测422数据包长 #define GYRO_DATA_UNIT (0.000001) //陀螺B角速度量纲 #define GYRO_TMPER_UNIT (0.008) //陀螺B温度量纲 //说明:模拟太敏数据结构体 #define ASS_NUM (6) //ASS单机数量 ///说明:磁强计数据结构体 #define MAG_NUM (2) //磁强计总个数 #define MAG_Vect_A (0x55) //选择磁强计A #define MAG_Vect_B (0xAA) //选择磁强计B //说明:飞轮数据结构体 #define WHEEL_NUM (4) //飞轮总个数 #define WHL_CMD_CODE_REQ (0xD9) //飞轮单机遥测请求指令码 #define WHL_CMD_CODE_CURR (0xCA) //飞轮单机控制指令码:电流控制指令码 #define WHL_CMD_CODE_RATE (0xD4) //飞轮单机控制指令码:转数控制指令码 #define WHL_CMD_CODE_TRQ (0xEA) //飞轮单机控制指令码:力矩控制指令码 #define WHL_DATA_END (0xAA55) //飞轮遥测422数据包尾(中科) #define WHL_DATA_LEN (0x23) //中辰新威飞轮遥测422数据包长 //说明:PPU数据结构体 #define PPU_CMD_LEN (0x1E) //PPU单机遥测请求指令码 /***************单机互校验宏定义*****************/ #define NO_CC (0x00) //未参加互校验(0) #define CC_CORRECT (0x55) //互校验成功(1) #define CC_ERROR (0xAA) //互校验异常(2) #define CC_UNCERTAIN (0xFF) //互校验无法判断(3) /*******************姿轨控工作模式*******************/ #define ATTMOD_BREAKPRE (0x00) //星箭分离前 #define ATTMOD_NOCOLL (0x11) //碰撞规避模式 #define ATTMOD_RATEDMP (0x22) //速率阻尼 #define ATTMOD_WhlTOSUN (0x33) //轮控对日定向 #define ATTMOD_MagTOSUN (0x44) //磁控对日定向 #define ATTMOD_ONLTOEARTH (0x55) //对地定向 #define ATTMOD_WHEELTOEARTH (0x66) //稳态对地 #define ATTMOD_ATTAJUSTPRE (0x77) //轨控前调姿 #define ATTMOD_ORBITCTL (0x88) //轨道控制 #define ATTMOD_ATTAJUST (0x99) //定向前调姿 #define ATTMOD_ONLTOTAR (0xAA) //对目标定向 #define ATTMOD_UNCTL (0xBB) //无控模式 /***************环境计算*****************/ #define GST_OFFSET (1.7474554283454f) // GST偏移量 #define EATHWE (7.29211514667e-5) // 地球自转角速度 #define GMEARTH (3.986004E14) //引力常数 #define EarthRad (6378040) //地球半径(米) #define EarthRad2MAG (6371200) //地球平均半径(米) //数据回复类型 #define BACKUP_TYPE_ATTFLASH (0x5511) /* 备份数据类型: Flash */ //#define BACKUP_TYPE_PLDSRAM (0x5522) /* 备份数据类型:SRAM */ #define BACKUP_TYPE_ATTFIFO (0x5533) /* 备份数据类型:双机FIFO。【注意不能是0和0xFF】 */ /*********************************************** 说明: 姿控Flash区 ***********************************************/ typedef struct AttCmdFlash_s{ TYPE_CAL M_SSA[3][3]; //星敏A安装矩阵(1,1) TYPE_CAL M_SSB[3][3]; //星敏B安装矩阵(1,1) TYPE_CAL M_SSC[3][3]; //星敏C安装矩阵(1,1) TYPE_CAL M_GYRO[3][3][3]; //陀螺A\B\C安装矩阵(1,1) TYPE_CAL M_aSSA[3][3]; //模拟太敏A安装矩阵(1,1) TYPE_CAL M_aSSB[3][3]; //模拟太敏B安装矩阵(1,1) TYPE_CAL M_aSSC[3][3]; //模拟太敏C安装矩阵(1,1) TYPE_CAL M_aSSD[3][3]; //模拟太敏D安装矩阵(1,1) TYPE_CAL M_aSSE[3][3]; //模拟太敏E安装矩阵(1,1) TYPE_CAL M_aSSF[3][3]; //模拟太敏F安装矩阵(1,1) F为太阳阵上模拟太阳敏感器安装矩阵 TYPE_CAL M_Wheel[3][4]; //飞轮安装矩阵 TYPE_CAL M_MAG[MAG_NUM][3][3]; //磁强计安装矩阵 TYPE_CAL M_MAGCtrl[3][4]; //磁力矩器分配矩阵 //陀螺故障诊断参数 TYPE_CAL Gyro_Comd_Bias[GYRO_NUM][3]; //陀螺零偏 TYPE_CAL Gyro_Comd_K[GYRO_NUM][3][3]; //标度因数 UINT8 Gyro_ComRESW[3]; //陀螺表头重构状态字 //PPU TYPE_CAL PPUPVK; //阳极电源电压比例系数K TYPE_CAL PPUPVB; //阳极电源电压比例系数B TYPE_CAL PPUPAK; //阳极电源电流比例系数K TYPE_CAL PPUPAB; //阳极电源电流比例系数B //磁强计 TYPE_CAL MAG_LK[MAG_NUM][3]; //模拟磁强计拟合系数k TYPE_CAL MAG_LB[MAG_NUM][3]; //模拟磁强计电压零位 UINT8 Mag_ComRESW[3]; //磁强计表头重构状态字 //星敏校磁强 TYPE_CAL SS_MAG_CThr; //星敏校磁强计阈值,单位° UINT16 judgeWait_time; //轮控对日定向持续 //飞轮PD控制 TYPE_CAL kp_ToSun_PD[3]; //飞轮PD控制-比例kpxyz TYPE_CAL kd_ToSun_PD[3]; //飞轮PD控制-微分kdxyz TYPE_CAL w0max_PD; //最大旋转角速度,单位°/s TYPE_CAL PD_Ts; //飞轮PD控制-时间常数 //飞轮PID控制 TYPE_CAL kp_PID[3]; //PID控制-比例kpxyz TYPE_CAL ki_PID[3]; //PID控制-积分kixyz TYPE_CAL kd_PID[3]; //PID控制-微分kdxyz TYPE_CAL w0max_PID; //最大旋转角速度,单位°/s TYPE_CAL PID_Ts; //飞轮PID控制-时间常数 //三批次增加数据 UINT8 WorkModeChangeAuto; //二次点火使能标志 UINT32 PPUT_FIR_EndLast; //最后一次熄火时刻 UINT16 PPUTALimit; //电推过流故障阈值 UINT16 PPUTVLimit; //电推过压故障阈值 UINT16 PPUTFireLimit; //电推点火故障阈值 UINT16 PPUHTemperLimit; //电推温度故障上限阈值 UINT16 PPULTemperLimit; //电推温度故障下限阈值 //FLASH区在轨编程预留 UINT8 FLASH_RESET1; UINT8 FLASH_RESET2; UINT8 FLASH_RESET3; UINT16 FLASH_RESET4; UINT16 FLASH_RESET5; UINT16 FLASH_RESET6; TYPE_CAL FLASH_RESET7; TYPE_CAL FLASH_RESET8; TYPE_CAL FLASH_RESET9; } AttCmdFlash_t; /*********************************************** 说明:安装矩阵 ***********************************************/ typedef struct { //Flash区 AttCmdFlash_t AttCmdFlashPara; //模拟太敏 TYPE_CAL Ass_MinFour_limt[2]; //4片模拟太敏电压阈最小值 TYPE_CAL Ass_MaxFour_limt[2]; //4片模拟太敏电压阈最大值 //磁强计 TYPE_CAL Mag_Bb_CtrlMax; //磁力矩器最大输出磁矩 TYPE_CAL Mag_Kp[3]; TYPE_CAL Mag_Kd[3]; TYPE_CAL Mag_KpFBZK[3]; TYPE_CAL Mag_KdFBZK[3]; TYPE_CAL Mag_DampBdotMin; //磁控阻尼死区 //UINT8 Mag_ComRESW[3]; //磁强计表头重构状态字 //目标角速度 TYPE_CAL Mag_WTOSUN; //磁控对日目标角 TYPE_CAL Mag_FBZKWTOSUN; //磁控对日目标角 TYPE_CAL Mag_ATTTOSUN; //磁控对日对日磁矩角 //飞轮 UINT8 Whl_ID[WHEEL_NUM]; // 飞轮控制指令:飞轮工作模式 //磁力矩器 UINT8 MTCtrlTIME; //磁力矩器控制时间 TYPE_CAL MTOutXYZLimit[4]; //三轴控制最大此举100/100/50/50 //飞轮磁卸载 TYPE_CAL k1_dump; //卸载角动量开阈值,单位Nms TYPE_CAL k2_dump; TYPE_CAL ku_dump; TYPE_CAL MTAtt_dump; //互校验阈值(可上注修改) UINT8 Allow_Sensor_CThr; //自主单机间互校验准禁标志 TYPE_CAL SS_SS_CThr; //星敏间校验阈值,单位° TYPE_CAL SS_ASS_CThr; //星敏校太敏阈值,单位° TYPE_CAL SS_ASS_CCThr; //星敏太敏互校验阈值,单位° TYPE_CAL SS_GYRO_CThr; //星敏校陀螺阈值,单位°/s //TYPE_CAL SS_MAG_CThr; //星敏校磁强计阈值,单位° TYPE_CAL MAG_MAG_CThr; //磁强计互校阈值,单位nT TYPE_CAL GYRO_GYRO_CThr; //陀螺互校阈值,单位°/s //模式切换相关参数 //UINT8 WorkModeUp; //工作模式注数选择 //UINT8 WorkModeChange; //工作模式切换允许标志 //UINT8 WorkModeChangeAuto; //工作模式自主切换允许标志 UINT16 judge_time0; //0、星箭分离前 UINT16 judge_time1; //1、碰撞规避模式 UINT16 judge_time2; //2、速率阻尼 UINT16 judge_time3; //3、轮控对日定向 UINT16 judge_time4; //4、磁控对日定向 UINT16 judge_time5; //5、对地定向 UINT16 judge_time6; //6、稳态对地 UINT16 judge_time7; //7、轨控前调姿 UINT16 judge_time8; //8、轨道控制 UINT16 judge_time9; //10、定向前调姿 UINT16 judge_timeA; //11、对目标定向 UINT16 judge_timeB; //12、无控模式 //UINT16 judgeWait_time; //轮控对日定向持续 TYPE_CAL RateThr_2T3; //速率阻尼转对日定向角速度阈值 TYPE_CAL HWHLThr_2T3; //速率阻尼转对日定向角动量阈值 TYPE_CAL AngThr_3TB; //对日定向转无控模式角度阈值 TYPE_CAL RateThr_3TB; //对日定向转无控模式角速度阈值 TYPE_CAL AngThr_5T6; //对地定向模式切换到稳定对地模式角度阈值 TYPE_CAL RateThr_5T6; //对地定向模式切换到稳定对地角速度阈值 TYPE_CAL AngThr_9TA; //定向前调姿切换到目标定向模式角度阈值 TYPE_CAL RateThr_9TA; //定向前调姿切换到目标定向模式角速度阈值 //控制相关参数 TYPE_CAL SAT_J[3][3]; //整星转动惯量xx,yy,zz 单位kgm2 TYPE_CAL Whl_J[WHEEL_NUM]; //飞轮的角动量转换系数 TYPE_CAL Whl_HCent[WHEEL_NUM]; //飞轮的标称角动量 //飞轮PD控制 //TYPE_CAL kp_ToSun_PD[3]; //飞轮PD控制-比例kpxyz //TYPE_CAL kd_ToSun_PD[3]; //飞轮PD控制-微分kdxyz TYPE_CAL kp_NoToSun_PD[3]; //帆板未展开飞轮PD控制-比例kpxyz TYPE_CAL kd_NoToSun_PD[3]; //帆板未展开飞轮PD控制-微分kdxyz //TYPE_CAL w0max_PD; //最大旋转角速度,单位°/s TYPE_CAL w0max_NoPD; //最大旋转角速度,单位°/s //TYPE_CAL PD_Ts; //飞轮PD控制-时间常数 TYPE_CAL PDNo_Ts; //飞轮PD控制-时间常数 //飞轮PID控制 //TYPE_CAL kp_PID[3]; //PID控制-比例kpxyz //TYPE_CAL ki_PID[3]; //PID控制-积分kixyz //TYPE_CAL kd_PID[3]; //PID控制-微分kdxyz TYPE_CAL kp_NoPID[3]; //PID控制-比例kpxyz TYPE_CAL ki_NoPID[3]; //PID控制-积分kixyz TYPE_CAL kd_NoPID[3]; //PID控制-微分kdxyz //TYPE_CAL w0max_PID; //最大旋转角速度,单位°/s TYPE_CAL w0max_NoPID; //最大旋转角速度,单位°/s //TYPE_CAL PID_Ts; //飞轮PID控制-时间常数 TYPE_CAL PIDNo_Ts; //飞轮PID控制-时间常数 //指令分配 TYPE_CAL WheelD_NomSpeed; //配平轮标称转速,单位rad/s 可上注 TYPE_CAL WheelD_SpeedErrThr; //配平轮转速偏差阈值,单位rad/s 可上注 TYPE_CAL WheelD_Default; //配平轮力矩指令默认值,净力矩阈值.单位Nm 可上注 TYPE_CAL WheelD_AllDefault; //配平轮力矩指令默认值,合力矩阈值.单位Nm 可上注 //故障处理模块参数 //环境模块 TYPE_CAL BetaAngLimit; //卫星进出影判断值 //陀螺异常 UINT16 GyroDiagThr; //判断时间阈值,单位s,可上注 UINT8 AllowGyroONOFF[GYRO_NUM]; //星敏重构允许标志 UINT16 Gyro_Delay_CntLimt; //陀螺开机异常延迟判断计数 UINT16 Gyro_Err_CntLimt; //陀螺异常判断计数 UINT16 Gyro_OK_CntLimt; //陀螺正常判断计数 UINT16 Gyro_ReSet_CntLimt; //陀螺重启总次数 UINT16 Gyro_ReSetGAP_CntLimt; //陀螺重启间隔拍数 UINT8 GyroUsePrior[GYRO_NUM]; //陀螺使用优先级 //UINT8 Gyro_ComRESW[3]; //陀螺表头重构状态字 //星敏异常 UINT8 AllowssONOFF[STAR_NUM]; //星敏重启允许标志 UINT16 ssDiagThr; //判断时间阈值,单位s,可上注 UINT16 Ss_Delay_CntLimt; //星敏开机异常延迟判断计数 UINT16 Ss_Err_CntLimt; //星敏异常判断计数 UINT16 Ss_OK_CntLimt; //星敏正常判断计数 UINT16 Ss_ReSet_CntLimt; //星敏重启总次数 UINT16 Ss_ReSetGAP_CntLimt; //星敏重启间隔拍数 UINT8 SSUsePrior[STAR_NUM]; //星敏使用优先级 //磁强计异常 UINT8 AllowMagONOFF[MAG_NUM]; //磁强计重启允许标志 UINT16 MagDiagThr; //判断时间阈值,单位s,可上注 UINT16 Mag_Delay_CntLimt; //磁强计开机异常延迟判断计数 UINT16 Mag_Err_CntLimt; //磁强计异常判断计数 UINT16 Mag_ReSet_CntLimt; //磁强计重启总次数 UINT16 Mag_OK_CntLimt; //磁强计正常判断计数 UINT16 Mag_ReSetGAP_CntLimt; //磁强计重启间隔拍数 //飞轮异常 UINT8 AllowWhlONOFF[WHEEL_NUM]; //反作用重构允许标志 UINT16 WhlTemperDiagThr; //飞轮温度过高温度阈值,单位°C,可上注 UINT16 WhlDiag_TimeThr; //飞轮温度过高计数阈值,可上注 UINT16 WhlDiag_ErrThr; //飞轮数据异常计数阈值,单位,可上注 UINT16 Whl_Delay_CntLimt; //飞轮开机异常延迟判断计数 UINT16 Whl_Err_CntLimt; //飞轮异常判断计数 UINT16 Whl_OK_CntLimt; //飞轮正常判断计数 UINT16 Whl_ReSet_CntLimt; //飞轮重启总次数 UINT16 Whl_ReSetGAP_CntLimt; //飞轮重启间隔拍数 //PPU UINT8 AllowPPUONOFF; //PPU重构允许标志 UINT16 PPU_Delay_CntLimt; //磁强计开机异常延迟判断计数 UINT16 PPU_Err_CntLimt; //磁强计异常判断计数 UINT16 PPU_ReSet_CntLimt; //磁强计重启总次数 UINT16 PPU_OK_CntLimt; //磁强计正常判断计数 UINT16 PPU_ReSetGAP_CntLimt; //磁强计重启间隔拍数 UINT16 PPUTXTimeLimit; //电推通信故障时间阈值 UINT16 PPUTATimeLimit; //电推过流故障时间阈值 //UINT16 PPUTALimit; //电推过流故障阈值 UINT16 PPUTVTimeLimit; //电推过压故障时间阈值 //UINT16 PPUTVLimit; //电推过压故障阈值 //UINT16 PPUTFireLimit; //电推点火故障阈值 UINT16 PPUTemperTimeLimit; //电推温度故障时间阈值 //UINT16 PPUHTemperLimit; //电推温度故障上限阈值 //UINT16 PPULTemperLimit; //电推温度故障下限阈值 //推力器产生卫星本体系推力加速度 TYPE_CAL AccThru_Up[3]; //推力引力加速度上注值 //姿态确定 UINT16 GyroINT_TLimt; //陀螺积分限幅值 ////姿态基准丢失 UINT8 AllowAttLoseDiagFlg; //姿态基准丢失判断开允许标志 UINT16 TimeThr_AttLoseDiag[9]; //姿态丢失时间阈值,单位s //姿态超差判断 UINT8 AllowAttExDiagFlg; //姿态超差判断允许标志 UINT16 TimeThr_AttEx[10]; //姿态超差用到的时间阈值,单位s TYPE_CAL AngThr_AttEx[9]; //角度阈值 TYPE_CAL RateThr_AttEx[9]; //角速度阈值 UINT16 YawCntLimit; //对地偏航/对目标偏航下偏航姿态超差计数 //姿态不稳定判断 UINT8 AllowAttStaDiagFlg; //姿态不稳定判断允许标志 UINT16 TimeThr_AttUnSta[6]; //姿态不稳定用到的时间阈值,单位s UINT16 TimeMod_AttUnSta[6]; //姿态不稳定用到的时间阈值,单位s TYPE_CAL AngThr_AttUnSta[6]; //角度阈值 TYPE_CAL RateThr_AttUnSta[6]; //角速度阈值 UINT8 ZK_Reserver111; UINT8 ZK_Reserver222; }AttCtrlConst_t; /*星敏数据*/ /*********************************************** 说明:星敏遥测数据结构体 ***********************************************/ //A:803 B:803 C:北京 typedef struct SsPara_s{ //敏感器输入数据 UINT8 ssIn_AttVld; //星敏姿态有效标志 UINT8 ssIn_DataSta; //星敏数据状态 TYPE_CAL ssIn_Q[4]; //星敏姿态四元数 TYPE_CAL ssIn_W[3]; //星敏角速度 TYPE_CAL ssExpose_Qbi[4]; //星敏A惯性系姿态四元数 TYPE_CAL ssExpose_Wbi[3]; //星敏A惯性系角速度 UINT8 ssCrCheckFlg; //星敏互校验标志 UINT8 ssAvailableFlg; //星敏可用标志 UINT8 ssPrior; //星敏使用优先级 UINT8 ssExpose_cnt; //星敏输出四元数不变计数 TYPE_CAL ssIn_Qpre[4]; //前一拍星敏姿态四元数 } SsPara_t; /*********************************************** 说明:陀螺数据结构体 ***********************************************/ //A:开拓 B:利可夫 C:华芯 typedef struct Gyrodata_s{ UINT8 GyroIn_AttVld; //Gyro有效标志 UINT8 GyroIn_DataSta; //Gyro数据无效原因 UINT8 Gyro_ComTHUse[3]; //单套陀螺表头可用标志 TYPE_CAL GyroIn_Speed[3]; //陀螺三轴角速度 TYPE_CAL GyroIn_SpeedPre[3]; //陀螺上一拍三轴角速度 TYPE_CAL GyroIn_Tmper[3]; //陀螺三轴角温度 TYPE_CAL Gyro_Wi[3]; //惯性系陀螺角速度 UINT8 GyroCrCheckFlg; //陀螺互校验标志 UINT8 Gyro_AvailableFlg; //单套陀螺可用标志 UINT8 GyroPrior; //陀螺使用优先级 UINT16 Gyro_ComCnt[3]; //陀螺上下拍数据比较有效计数 } GyroPara_t; /*********************************************** 说明:模拟太敏数据结构体 ***********************************************/ typedef struct AssPara_s{ UINT8 AssIn_AttVld[ASS_NUM]; //Ass数据有效标志 TYPE_CAL AssIn_sensor[ASS_NUM][4]; //模拟太敏电压 UINT8 AssCrCheckFlg; //模拟太敏互校验标志 TYPE_CAL Ass_SunATT[2]; //帆板模拟太敏方位角θ、虚余仰角r TYPE_CAL Ass_SunVecbF[3]; //模拟太敏本体系太阳矢量XYZ UINT8 Ass_SunOK; //帆板模拟太敏方位角可用标志 TYPE_CAL Ass_SunVecb[3]; //模拟太敏本体系太阳矢量XYZ UINT8 Ass_SunVecVld; //模拟太敏太阳矢量有效标志 UINT8 ADIn_Date; } AssPara_t; /*********************************************** 说明:磁强计数据结构体 ***********************************************/ typedef struct MagPara_s /* 磁强计数据结构体 */ { UINT8 MagIn_Valid[3]; //模拟磁强计A/B有效标志 UINT8 MagIn_DataSta; //单机数据有效状态 UINT8 MagCrCheckFlg[MAG_NUM]; //星敏校验磁强计标志 UINT8 MagAvailableFlg[MAG_NUM]; UINT8 Mag_Use; //选择的磁强计数据有效 UINT8 Mag_UsePre; UINT8 MagUseSwich; //磁源选择 TYPE_CAL Mag_Bb_MeaAB[MAG_NUM][3]; //本体系磁强计磁矢量 TYPE_CAL Mag_Bb_MeaZH[3]; //本体系磁强计磁矢量(表头组合) TYPE_CAL Mag_Bc_MeaAB[MAG_NUM][3]; //测量系磁强计A磁矢量 TYPE_CAL Mag_Bb[3]; //磁强计本体系磁矢量输出 TYPE_CAL Mag_BbPre[3]; //上一周期磁矢量 TYPE_CAL Mag_UBb[3]; //归一化磁矢量 } MagPara_t; /*********************************************** 说明:飞轮数据结构体 ***********************************************/ typedef struct WhlPara_s{ UINT8 WhlIn_Valid[WHEEL_NUM]; //飞轮数据有效标志 UINT8 WhlIn_DataSta[WHEEL_NUM]; //Rcw 数据无效原因 TYPE_CAL Whl_Rate[WHEEL_NUM]; //飞轮当前实际转速,单位rpm TYPE_CAL Whl_RatePre[WHEEL_NUM]; //飞轮当前实际转速,单位rpm INT16 Whl_Current[WHEEL_NUM]; //飞轮电流 TYPE_CAL Whl_Tmper[WHEEL_NUM]; //电机温度 UINT32 Whl_Time[WHEEL_NUM]; //内部时间 UINT32 Whl_TimePRE[WHEEL_NUM]; //内部时间 //UINT8 Whl_OK; //飞轮组合可用标志 TYPE_CAL Whl_Momentum[WHEEL_NUM]; //四个飞轮的角动量 TYPE_CAL Whl_Momentum_Sum ; //反作用轮卸载角动量和 TYPE_CAL Whl_Momentum_XYZ[3]; //本体下飞轮三轴角动量 UINT8 Whl_UseCnt; //可用飞轮计数 UINT8 Whl_WorkMode[WHEEL_NUM]; //飞轮控制指令:飞轮工作模式 } WhlPara_t; /*********************************************** 说明:PPU数据结构体 ***********************************************/ typedef struct PPUPara_s{ UINT8 PPUIn_Valid; //PPU数据有效标志 UINT8 PPUIn_DataSta; //PPU 数据无效原因 UINT8 PPUOUT_Sta; //PPU指令开关状态 UINT8 PPUIn_ReCnt; //PPU遥测请求计数 UINT8 PPUNoUse_Cnt; //PPU不使用计数 UINT8 PPUIn_ReCntPre; //PPU上一拍遥测请求计数 TYPE_CAL PPUIn_AVoltage; //推进阳极电源电压 TYPE_CAL PPUIn_ACurrent; //推进阳极电源电流 UINT8 PPUIn_FIREOK; //点火成功标志 UINT8 PPUIn_FIREOKPre; //点火成功标志 UINT32 PPUT_FIR_Start[50]; UINT32 PPUT_FIR_End[50]; //UINT32 PPUT_FIR_EndLast; UINT32 PPUT_FIR_Sum; UINT8 PPUT_FIR_Cnt; UINT8 PPUT_FIR_CntS; UINT16 PPUT_FIR_SumCnt; TYPE_CAL PPUT_BOTTLE_Tmper1; TYPE_CAL PPUT_BOTTLE_Tmper2; TYPE_CAL PPUT_PIPE_Tmper1; TYPE_CAL PPUT_PIPE_Tmper2; UINT8 PPU_OrbitCtl_Quit_OK_Flag; /*轨控正常退出标志*/ UINT8 PPU_OrbitCtl_Quit_OK_Cnt; /*轨控正常退出节拍计数*/ UINT8 PPU_OrbitCtl_Quit_Err_Flag; /*轨控正常退出标志*/ UINT8 PPU_OrbitCtl_Quit_Err_Cnt; /*轨控正常退出节拍计数*/ } PPUPara_t; /*********************************************** 说明:磁力矩器数据结构体 ***********************************************/ typedef struct MtPara_s /* 磁强计数据结构体 */ { TYPE_CAL MTCtrlOutP0[MT_NUM]; //磁力矩器输出占控比 UINT8 MTDirect[MT_NUM]; //磁控方向 UINT8 MTOnOff[MT_NUM]; //开关磁力矩器开关 UINT32 MTCtrlTime; //磁力矩器控制时间计数 UINT8 MTStatus; //磁力矩开关状态 20230713 } MtPara_t; /*数据预处理参数*/ typedef struct { //单机数据结构 SsPara_t SsPara[3]; //星敏数据,012对应ABC GyroPara_t GyroPara[3]; //陀螺 AssPara_t AssPara; //模拟太敏 MagPara_t MagPara; //磁强计 WhlPara_t WhlPara; //飞轮 MtPara_t MtPara; //磁力矩器 PPUPara_t PPUPara; //PPU //陀螺表头组合 UINT8 GyroIn_Comb; //陀螺表头组合可用标志 TYPE_CAL GyroIn_CombWi[3]; //惯性系陀螺角速度 TYPE_CAL Gyro_ATTWi[3]; //陀螺定姿角速度 TYPE_CAL Ss_Qi[4]; //星敏惯性系姿态四元数1234 TYPE_CAL Ss_Wi[3]; //星敏惯性系角速度123 }sAttDataPrePara_t; //当前定姿参数 typedef struct { UINT8 AttDeter_Type; //闭环定姿模式 //闭环定姿 TYPE_CAL Qi[4]; //卫星惯性系姿态四元数1234 TYPE_CAL Wi[3]; //卫星惯性系角速度123 TYPE_CAL Ai[3]; //卫星惯性系轨控加速度123 UINT8 PPUVld; //PPU加速度有效标志 UINT32 SatTime[2]; //星上时 秒/微妙 UINT8 Qi_Vld; //卫星惯性系四元数有效标志 UINT8 Wi_Vld; //卫星惯性系角速度有效标志 TYPE_CAL QiPre[4]; TYPE_CAL WiPre[3]; UINT8 QiPre_Vld; UINT32 GyroINT_Time; //陀螺积分时间 //对日太阳角 TYPE_CAL SunVecb[3]; //卫星本体系太阳矢量XYZ TYPE_CAL AngToSun[3]; //卫星对日太阳角XY UINT8 AngToSun_ValidFlg; //卫星太阳角有效标志 UINT8 CalAngToSun_Source; //计算太阳角数据源标志 //轨道系姿态 TYPE_CAL Qo[4]; //卫星轨道系姿态四元数1234 TYPE_CAL AttRateOrb[3]; //卫星轨道系姿态角速度XYZ TYPE_CAL AttAngTar[3]; //卫星轨道系目标姿态 TYPE_CAL AttAngOrb[3]; //卫星轨道系调整姿态 TYPE_CAL SunVeco[3]; //卫星轨道系太阳矢量XYZ UINT8 AttOrb_Vld; //卫星轨道系姿态有效标志 //目标参考系姿态 TYPE_CAL AttAngTarRe[3]; //卫星目标参考系姿态角XYZ TYPE_CAL AttRateTarRe[3]; //卫星目标参考系姿态角速度 UINT8 AttTarRe_Vld; //卫星目标参考系姿态有效标志 //轨控参考系姿态 TYPE_CAL AttAngOrbCtrl[3]; //卫星轨控参考系姿态角XYZ TYPE_CAL AttRateOrbCtrl[3]; //卫星轨控参考系姿态角速度XYZ UINT8 AttOrbCtrl_Vld; //卫星轨控参考系系姿态有效标志 //闭环控制姿态 TYPE_CAL CLPAttAng[3]; //闭环姿态角XYZ TYPE_CAL CLPAttAngRat[3]; //闭环姿态角速度XYZ TYPE_CAL CLPAttAngRatPre[3]; //前一拍闭环姿态角速度XYZ UINT8 CLPAttValid; //闭环姿态数据有效标志 }sAttDeterPara_t; //导引率模块参数 typedef struct { UINT8 AttGuid_Type; //导引律模式 TYPE_CAL TargAng[3]; //目标姿态角XYZ TYPE_CAL TargAngRat[3]; //目标姿态角速度XYZ UINT32 CaptureSunCnt; //卫星太阳角有效计数 }sAttGuidLawPara_t; /*轨控数据包*/ typedef struct { //轨控包 UINT8 OrbCtrlPcak_ID; //轨控数据编号ID UINT32 OrbAttAjustTime; //调姿时刻,单位s+ms TYPE_CAL OrbCtrAng[3]; //轨控调姿目标姿态 UINT32 OrbCtrl_StartTime; //轨控时刻,单位s UINT16 OrbCtrl_TimeLength; //轨控时长 UINT8 OrbCtrl_Mod; //轨控后目标工作模式 UINT16 OrbDateSum; //该组轨控数据和校验 }AttOrbCtrlPara_t; /*当前轨控数据*/ typedef struct { UINT8 CurOrbCtrlPcak_ID; //轨控数据编号ID UINT8 CurOrbCtrlPcak_PreID; //轨控数据编号ID UINT8 OrbCtrlPcak_ReceiveFlg[50]; //收到轨控包标志 AttOrbCtrlPara_t OrbCtrlPackCur; //当前使用的轨控数据包 UINT8 OrbDataIn_OK; //轨控数据上注成功标志 UINT16 OrbDataIn_OKCnt; }sAttOrbitCtlInfo_t; //轨道控制数据包 typedef struct { //轨道控制数据包 AttOrbCtrlPara_t OrbCtrlPack[50]; //轨控数据包 }sAttOrbitCtlData_t; /*目标定向,注意数据不是与注入包对齐*/ typedef struct { UINT8 TARCtrlPcak_ID; //目标定向数据编号ID //目标数据包 UINT32 TARCtrl_JustTime; //目标定向开始时刻,单位s TYPE_CAL TARCtrAng[3]; //目标定向调姿目标姿态 UINT32 TARCtrl_StartTime; //目标定向开始时刻,单位s UINT16 TARCtrl_TimeLength; //目标定向结束时刻,单位s UINT16 TARCtrlDateSum; //目标定向数据和校验 }sAttTARCCtlPara_t; /*目标定向,注意数据不是与注入包对齐*/ typedef struct { UINT8 CurTARCtrlPcak_ID; //目标定向数据编号ID UINT8 CurTARCtrlPcak_PreID; //目标定向数据编号ID UINT8 TARCtrlPcak_ReceiveFlg[30]; //收到目标定向包标志 sAttTARCCtlPara_t TARCtrlPackCur; UINT8 TARDataIn_OK; //目标定向数据上注成功标志 UINT16 TARDataIn_OKCnt; }sAttTARCCtlInfo_t; typedef struct { //目标定向数据包 sAttTARCCtlPara_t TARCtrlPack[30]; //目标定向轨控数据包 }sAttTARCCtlData_t; /*轨道确认进程输入数据*/ typedef struct { UINT8 OrbitVld; //轨道外推有效标志 TYPE_CAL JPos[3]; //位置 TYPE_CAL JVel[3]; //速度 TYPE_CAL GAST; TYPE_CAL MJC; //儒略世纪 TYPE_CAL MJCLv; //儒略有效性 }sAttOrbitGetPara_t; //当前控制参数 typedef struct { //UINT8 AttCtrl_TypeTEST; //磁卸载算法 UINT8 IsDump; //飞轮卸载状态(三轴) //PID控制 TYPE_CAL SumAerrPre[3]; //角度偏差积分 UINT16 PD2PIDCnt; //PD转PID计数 UINT8 CtrlPD2PID; // //输出 TYPE_CAL MagCtrlResult[3]; //推力器控制器控制指令XYZ,正负表示控制力矩 TYPE_CAL MagCtrlXYZZ[MT_NUM]; TYPE_CAL Mag_DeltBb[3]; //磁速率 TYPE_CAL WheelCtrlResult[3]; //飞轮控制器控制指令XYZ,单位Nm TYPE_CAL WheelCtrlResultPre[3]; TYPE_CAL ZK_Ctrl_Reserver111; TYPE_CAL ZK_Ctrl_Reserver222; UINT16 ZK_Ctrl_Reserver333; UINT16 ZK_Ctrl_Reserver444; UINT8 ZK_Ctrl_Reserver555; UINT8 ZK_Ctrl_Reserver666; }sAttCtlPara_t; //指令分配模块参数 typedef struct { //控制轮 TYPE_CAL Wheel_TwcCmd[3]; //三个控制轮的控制指令 //配平轮 TYPE_CAL WheelD_MomOfForce_Cmd; //飞轮D力矩指令,单位Nm TYPE_CAL WheelD_RotatSpd_Cmd; //飞轮D转速指令,单位rad/s //飞轮指令(最终整理) TYPE_CAL Whl_Torque[WHEEL_NUM]; //飞轮控制指令:转速 TYPE_CAL Wheel_LJCmd[WHEEL_NUM]; //飞轮控制指令:力矩 UINT16 Wheel_Cmd_Cnt; //飞轮电流指令发送计数 }AttCmdDsp_t; /*姿控模式选择参数*/ typedef struct { UINT8 WorkMode; //当前工作模式 UINT8 MiniDataSet; //最小模式进入后,恢复一次数据使用 UINT8 WorkModePre; //上一工作模式 UINT8 WModSadaOpen; //帆板展开标志 UINT8 ZKSadaOpen; //帆板展开标志(重启用) UINT8 WModSadaOpenPre; //帆板展开标志 UINT8 ModeSwitchFlg; //模式切换标志, UINT8 Mod2UnctlFirst; //首次近无控标志 UINT8 ZKPowOnFirst; //首次分离/计算机冷启动 UINT8 ZKPowOnStep; //首次分离/计算机冷启动加电序列 UINT16 WModCnt1; //1、碰撞规避模式 UINT16 WModCnt2[2]; //2、速率阻尼 UINT16 WModCnt3; //3、轮控对日定向 UINT16 WModCnt4; //4、磁控对日定向 UINT16 WModCnt5; //5、对地定向 UINT16 WModCnt6; //6、稳态对地 UINT16 WModCnt7; //7、轨控前调姿 UINT16 WModCnt8; //8、轨道控制 UINT16 WModCnt9; //9、定向前调姿 UINT16 WModCntA; //10、对目标定向 UINT16 WModCntB; //11、无控模式 UINT8 ReDataBK; //姿控数据备份成功标准 UINT8 ATTFlashSwitch; //Flash数据更新标志 }sAttModPara_t; //环境模型参数 typedef struct { UINT32 SatTime_s; //星上时 UINT32 SatTime_ms; //太阳矢量 TYPE_CAL SunVecI[3]; //惯性系太阳矢量XYZ(单位矢量) TYPE_CAL SunPosVecI[3]; //惯性系太阳位置矢量XYZ UINT8 bInOutShadow; //进出地影标志 //地影判断 TYPE_CAL BetaAng; //beta角 UINT8 BetaShadow; //卫星进出影设置,0x55阴影区0阳照区 UINT32 BetaAngCntIn; //卫星进影判断计数 初始值为0 UINT32 BetaAngCntOut; //卫星出影判断计数 初始值为0 //磁场 TYPE_CAL fvBe[3]; //地东南系磁矢量 TYPE_CAL fvBi[3]; //惯性系磁矢量 TYPE_CAL fvBo[3]; //轨道系磁矢量 TYPE_CAL fvBb[3]; //本体系磁矢量输出 TYPE_CAL fLonLat[3]; //经纬度 ,地心距 UINT8 fvIn_Valid; //磁场公式有效标志 //轨道角速度 TYPE_CAL OrbAttRate_Wo; //轨道系下轨道角速度 }sAttEnvPara_t; //故障处理模块参数 typedef struct { //陀螺异常 UINT8 GyroIn_PowerOn[GYRO_NUM]; //陀螺加电状态 UINT32 Gyro_PowerOnCnt[GYRO_NUM]; //陀螺加电状态计数 UINT16 GyroErrCnt[GYRO_NUM]; //陀螺异常诊断计数,上限60000 UINT32 Gyro_Err_Cnt1[GYRO_NUM]; //陀螺数据异常计数 UINT32 Gyro_Err_Cnt2[GYRO_NUM]; //陀螺故障重启计数 UINT32 Gyro_Err_Cnt3[GYRO_NUM]; //陀螺数据正常计数 UINT8 Gyro_err[GYRO_NUM]; //陀螺异常状态 UINT8 Gyro_Diag[GYRO_NUM]; //陀螺故障标志 //星敏异常 UINT8 ssIn_PowerOn[STAR_NUM]; //星敏加电状态 UINT32 ss_PowerOnCnt[STAR_NUM]; //星敏加电状态计数 UINT16 ssErrCnt[STAR_NUM]; //星敏异常诊断计数,上限60000 UINT32 ss_Err_Cnt1[STAR_NUM]; //星敏数据异常计数 UINT32 ss_Err_Cnt2[STAR_NUM]; //星敏故障重启计数 UINT32 ss_Err_Cnt3[STAR_NUM]; //星敏数据正常计数 UINT8 SS_err[STAR_NUM] ; //星敏数据异常状态 UINT8 ss_Diag[STAR_NUM]; //星敏故障标志 //磁强计异常 UINT8 MagIn_PowerOn[MAG_NUM]; //模拟磁强计A/B加电状态 UINT32 Mag_PowerOnCnt[MAG_NUM]; //模拟磁强计加电状态计数 UINT16 MagErrCnt[MAG_NUM]; //模拟磁强计异常诊断计数,上限60000 UINT16 MagNoErrCnt[MAG_NUM]; //模拟磁强计正常诊断计数,上限60000 UINT32 Mag_Err_Cnt1[MAG_NUM]; //模拟磁强计数据异常计数 UINT32 Mag_Err_Cnt2[MAG_NUM]; //模拟磁强计故障重启计数 UINT32 Mag_Err_Cnt3[MAG_NUM]; //模拟磁强计数据正常计数 UINT8 Mag_err[MAG_NUM] ; //模拟磁强计异常状态 UINT8 Mag_Diag[MAG_NUM]; //模拟磁强计故障标志 //飞轮异常 UINT8 WhlUseState; //飞轮使用状态 UINT8 WhlIn_PowerOn[WHEEL_NUM]; //飞轮加电状态 UINT32 Whl_PowerOnCnt[WHEEL_NUM]; //飞轮加电状态计数 UINT16 WhlTemErrCnt[WHEEL_NUM]; //轴温不正常计数 UINT16 WhlOutErrCnt[WHEEL_NUM]; //飞轮输出不正常计数 UINT32 Whl_Err_Cnt1[WHEEL_NUM]; //飞轮数据异常计数 UINT32 Whl_Err_Cnt2[WHEEL_NUM]; //飞轮故障重启计数 UINT32 Whl_Err_Cnt3[WHEEL_NUM]; //飞轮数据正常计数 UINT8 Whl_Err[WHEEL_NUM]; //飞轮异常状态 UINT8 Whl_Diag[WHEEL_NUM]; //飞轮故障标志 //PPU UINT8 PPUIn_PowerOn; //电推加电状态 UINT32 PPU_PowerOnCnt; //电推加电状态计数 UINT8 PPU_Err; //PPU异常状态 //UINT8 PPUTXT_Err; //PPU异常状态 UINT8 PPU_Diag; //PPU故障标志 UINT16 PPUOutErrCnt; //PPU输出不正常计数 UINT16 PPUIn_ACurCnt; //阳极电源电流计数 UINT16 PPUIn_VCurCnt; //阳极电源电压计数 UINT16 PPUOUT_FIRECnt; //开机点火计数 UINT16 PPUOUT_TemperECnt; //气瓶管路四路测温点温度 UINT32 PPU_Err_Cnt1; //PPU数据异常计数 UINT32 PPU_Err_Cnt2; //PPU故障重启计数 UINT32 PPU_Err_Cnt3; //PPU数据正常计数 ////姿态基准丢失 UINT16 AttLoseCnt; //姿态丢失计数 //姿态超差判断 UINT8 AttExFlg[3]; //三轴姿态超差标志YZ UINT16 AttExCnt; //姿态超差计数 TYPE_CAL AngRateMod_RATEDMP[61]; //碰撞规避\速率阻尼下的角速度矢量模值 UINT16 YawCnt; //对地偏航/对目标偏航下偏航姿态超差计数 //姿态不稳定判断 UINT8 AttUnSta[3]; //X轴姿态不稳定标志YZ UINT16 AttUnStaCnt; //姿态不稳定计数 UINT16 AttModCnt; //姿态不稳定计数 ///*电推 需两拍 开关机操作标志 */ //UINT8 AttPPUOnReq; //PPU下一拍开动作标志默认0X00:没有操作,0x55:需下一拍开动作 //UINT8 AttPPUOffReq; //PPU下一拍关动作标志默认0X00:没有操作,0x55:需下一拍关动作 }sAttErrCtlPara_t; //单机使用状态 typedef struct { UINT8 SSUseState[STAR_NUM]; //星敏使用状态, UINT8 GyroUseState[GYRO_NUM]; //陀螺使用状态, UINT8 Whl_Use[WHEEL_NUM]; //飞轮使用状态 UINT8 MagUseState[MAG_NUM]; //磁强计/表使用状态 UINT8 AssUseState[ASS_NUM]; //单个太敏可用标志 UINT8 MTUseStatus[MT_NUM]; //磁力矩使用状态 UINT8 PPUUseStatus; //PPU使用状态 UINT8 PPUSafeStatus; //PPU使用状态(整星安全使用) }AttIMPTPara_t; //重要数据备份区 typedef struct { sSaveDataHead sBKHead; //校验头部 UINT8 BK_WorkMode; UINT8 BK_WorkModeChangeAuto; UINT8 BK_SS_err[STAR_NUM]; UINT8 BK_Mag_err[MAG_NUM]; UINT8 BK_Gyro_err[GYRO_NUM]; UINT8 BK_Whl_Err[WHEEL_NUM]; UINT8 BK_PPU_Err; UINT8 BK_SSUseState[STAR_NUM]; UINT8 BK_GyroUseState[GYRO_NUM]; UINT8 BK_Whl_Use[WHEEL_NUM]; UINT8 BK_MagUseState[MAG_NUM]; UINT8 BK_AssUseState[ASS_NUM]; UINT8 BK_MTUseStatus[MT_NUM]; UINT8 BK_PPUUseStatus; UINT8 BK_Gyro_ComRESW[3]; UINT8 BK_Mag_ComRESW[3]; UINT8 BK_ssPrior[STAR_NUM]; UINT8 BK_GyroPrior[GYRO_NUM]; UINT8 BK_ss_Diag[STAR_NUM]; UINT8 BK_Mag_Diag[MAG_NUM]; UINT8 BK_Gyro_Diag[GYRO_NUM]; UINT8 BK_Whl_Diag[WHEEL_NUM]; UINT8 BK_Allow_Sensor_CThr; UINT8 BK_AllowAttLoseDiagFlg; UINT8 BK_AllowAttExDiagFlg; UINT8 BK_AllowAttStaDiagFlg; UINT8 BK_AllowssONOFF[STAR_NUM]; UINT8 BK_AllowGyroONOFF[GYRO_NUM]; UINT8 BK_AllowMagONOFF[MAG_NUM]; UINT8 BK_AllowWhlONOFF[WHEEL_NUM]; UINT8 BK_AllowPPUONOFF; UINT32 iVldFlag; //有效标记,0x55555555为有效 }AttBKPara_t; typedef struct { //UINT8 AttCtlBKFlag; //重要数据备份区的数据是否准备就绪 UINT8 WorkModeBK[3]; UINT8 WorkModeChangeAutoBK[3]; UINT8 SS_errBK[STAR_NUM][3]; UINT8 Mag_errBK[MAG_NUM][3]; UINT8 Gyro_errBK[GYRO_NUM][3]; UINT8 Whl_ErrBK[WHEEL_NUM][3]; UINT8 PPU_ErrBK[3]; UINT8 SSUseStateBK[STAR_NUM][3]; UINT8 AssUseStateBK[ASS_NUM][3]; UINT8 MagUseStateBK[MAG_NUM][3]; UINT8 GyroUseStateBK[GYRO_NUM][3]; UINT8 Whl_UseBK[WHEEL_NUM][3]; UINT8 MTUseStatusBK[MT_NUM][3]; UINT8 PPUUseStatusBK[3]; UINT8 Gyro_ComRESWBK[3][3]; UINT8 Mag_ComRESWBK[3][3]; UINT8 ssPriorBK[STAR_NUM][3]; UINT8 GyroPriorBK[GYRO_NUM][3]; UINT8 Allow_Sensor_CThrBK[3]; UINT8 AllowAttLoseDiagFlgBK[3]; UINT8 AllowAttExDiagFlgBK[3]; UINT8 AllowAttStaDiagFlgBK[3]; UINT8 AllowssONOFFBK[STAR_NUM][3]; UINT8 AllowGyroONOFFBK[GYRO_NUM][3]; UINT8 AllowMagONOFFBK[MAG_NUM][3]; UINT8 AllowWhlONOFFBK[WHEEL_NUM][3]; UINT8 AllowPPUONOFFBK[3]; }AttCtlData3T2_t; typedef struct { UINT16 SHDepartCntlimt1; //FLASH区在轨编程预留 UINT8 SADAFLASH_RESET1; UINT8 SADAFLASH_RESET2; UINT8 SADAFLASH_RESET3; UINT16 SADAFLASH_RESET4; UINT16 SADAFLASH_RESET5; UINT16 SADAFLASH_RESET6; TYPE_CAL SADAFLASH_RESET7; TYPE_CAL SADAFLASH_RESET8; TYPE_CAL SADAFLASH_RESET9; }SadaCmdFlash_t; /*********************************************** 说明: Flash区 ***********************************************/ typedef struct AttBackupFlash_s{ sSaveDataHead sBKHead; //校验头部 //姿控写入Flash数据 AttCmdFlash_t AttFlashPara; //SADA写入Flash数据 SadaCmdFlash_t SadaFlashPara; UINT32 iVldFlag; //有效标记,0x55555555为有效 } AttBackupFlash_t; /*********************************************** 说明: 在轨编程预留区 ***********************************************/ typedef struct AttCmdRESET_s{ UINT8 ZGBCU8_Reset1; UINT8 ZGBCU8_Reset2; UINT8 ZGBCU8_Reset3; UINT8 ZGBCU8_Reset4; UINT8 ZGBCU8_Reset5; UINT16 ZGBCU16_Reset1; UINT16 ZGBCU16_Reset2; UINT16 ZGBCU16_Reset3; UINT16 ZGBCU16_Reset4; UINT16 ZGBCU16_Reset5; TYPE_CAL ZGBCF_Reset1; TYPE_CAL ZGBCF_Reset2; TYPE_CAL ZGBCF_Reset3; TYPE_CAL ZGBCF_Reset4; TYPE_CAL ZGBCF_Reset5; } AttCmdRESET_t; //姿控内部数据结构定义 typedef struct { sAttOrbitGetPara_t sOrbitPara; //轨道输入参数,数据预处理获取 sAttDataPrePara_t sPerPara; //数据据预处理参数 sAttDeterPara_t sDeterPara; //当前定姿参数 sAttCtlPara_t sCtlPara; //当前控制参数 sAttEnvPara_t sEnvPara; //当前环境模型参数 sAttGuidLawPara_t sGuidLawPara; //导引率模块参数 sAttModPara_t sModePara; //模式式参数,用于模式选择 sAttOrbitCtlInfo_t sOrbitInp; //轨控包数据 sAttTARCCtlInfo_t sTARCInp; //目标定向包数据 sAttErrCtlPara_t sErrCtlPara; //故障处理模块参数 AttCmdDsp_t sCmdDspPara; //指令分配 AttIMPTPara_t sIMPTPara; //单机使用状态 AttBKPara_t AttBKPara; //重要数据备份区 AttCtlData3T2_t AttData3T2Para; //三取二数据区 SadaCmdFlash_t ATSFlashPara; //sadaflash数据 AttCmdRESET_t sAttRESETPara; //在轨编程区预留 }sAttPriData; //void ZKDev_PPU_OnOffProcess(UINT8 OnState);/*PPU开关机处理*/ void SetWheel(UINT8 WheelId, TYPE_CAL Value, UINT8 CmdType); BOOL AttCtrlInit(UINT8 taskID); void ZKPreAction(void); void ZKPowerState(void); void ZKCtrlReinitBK(void); void ZKModInit(void); void ZKDYInit(void); void ZKMINICmdResolve(UINT8 *tmpCmd); void ATTImportDataBackup(void); void ATTSetBase3ToBuff(UINT8 *pTDATA, UINT8 *pSDATA); void ZKDPAction(void); void ZKPGAct(void); void ZKDYAction(void); void ZKCmdDspAct(void); void ATTRestoreFromFlash(void); /*AttRECheck.c文件的头文件*/ void ZKREInit(void); void ImuPowerOnOff( UINT8 ChlON,UINT8 ChlOFF,UINT8 ONOFF, UINT32 *Cnt1 , UINT32 *Cnt2, UINT32 *Cnt3,UINT32 Cnt1Limt , UINT32 Cnt2Limt , UINT32 Cnt3Limt ,UINT32 Cnt4Limt ,UINT8 err, UINT8 *state); void GyroImuErrJudge(void); void SsImuErrJudge(void); void MagImuErrJudge(void); void WhlImuErrJudge(void); void PPUImuErrJudge(void); UINT8 AttLose(UINT8 i); void AttLoseJudge(void); void AttExJudge(void); void AttUnStaJudge(void); void ZKREAction(void); /*AttPoseGet.c文件的头文件*/ void ZKPGInit(void); void Gyro_AttChoice(void); void Gyro_AttDeter(void); void QuatDiffCal(TYPE_CAL * pQ_now, TYPE_CAL * pQ_pre, TYPE_CAL * pW); void SsGyro_AngDeter(void); void SsGyro_AttDeter(void); void Cal_AngToSun(void); void DertCalcBb(void); void AttDeterOrb(void); void AttDeterOrbCtrl(void); void AttDeterTarRe(void); void LoopAttDeter(void); /*AttPoseCtrl.c文件的头文件*/ void ZKPosCtlInit(void); void ZKPosCtlOutInit(void); void MagDataDeltaProc(TYPE_CAL *cMagBb, TYPE_CAL *cMagBbPre, TYPE_CAL *cMagDelta, TYPE_CAL cDeltaT); void CtrlMagBdotDamp(TYPE_CAL *cDeltBb, TYPE_CAL *cMagT); void MagDmpMomentCal(void); void MagSunMomentCal(void); void WheelCalc_PD(void); void WheelCalc_PID(void); void Whl_Momentum_Count(void); void CtrlWheelReleaseProc(void); void CtrlModPD2PID(void); void ZKPosCtlAct(sAttDeterPara_t *pAttDet, sAttGuidLawPara_t *pAttGuid, sAttCtlPara_t *pAttCtrl); /*AttModeSel.c文件的头文件*/ void ZKModChgInit(void); void ZKModDoSet(UINT8 newWMode); void ZKDoModCal(void); void ZKModeSel_Auto(void); void ZKModeSel_Up(void); void ZKDoModeAct(void); /*AttEnvMod.c文件的头文件*/ void ZKEnvInit(void); void ZKEnvCycInit(void); void MJD_CAL_ATT(UINT32 sat_time, TYPE_CAL *pMjd); void MJC_CAL_ATT(TYPE_CAL mjd, TYPE_CAL *pMjc, UINT8 *MJCLv); void ObtSunVecI(TYPE_CAL JulC, TYPE_CAL *pSunVI, TYPE_CAL *pSunPVI); void Cal_OrbAttRate_Wo(void); void ShadowFlgCal(void); void MagMath(TYPE_CAL *rLonLat, TYPE_CAL cgst, TYPE_CAL *B); BOOL EarthLonLatCal(TYPE_CAL *cuR, TYPE_CAL *clonlat); void TransMatrixIE(TYPE_CAL *clonlat, TYPE_CAL *cAie); void ZKEnvAct(void); /*AttDataPre.c文件的头文件*/ void ZKDPInit(void); void Ss_DataGet(void ); #endif