System_Status_Monitor.h 12.6 KB
Newer Older
崔立宝's avatar
崔立宝 committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216

#ifndef _SYSTEM_STATUS_MONITOR_H_
#define _SYSTEM_STATUS_MONITOR_H_

#include "CRG.h"
#include "API.h"
#include "Communication_Over_CAN.h"
#include "Analog_Signal_Conversion.h"
#include "CAN_Communication_Matrix.h"
#include "Non_volatile_Memorys.h"
extern volatile uint8_t SysPowerStatus;
extern volatile uint8_t SysOperatingStatus;

/******************************************************************************
系统状态列表
******************************************************************************/

/*=================================================================================================================================
             电源状态            |               运行状态                |                        |
         (SysPowerStatus)        |         (SysOperatingStatus)          |        系统状态        |              说明
  -------------------------------+---------------------------------------|                        |
    OVP  |  LVP  |  LIM  |  RUN  |  OFF  |  ACC  |  IGN  |  CRK  |  ERR  |                        |
  -------+-------+-------+-------+-------+-------+-------+-------+-------+------------------------+--------------------------------
         |       |       |   X   |       |       |       |       |       | SYS_PWR_STAT_NORMAL    | 电源电压正常
  -------+-------+-------+-------+-------+-------+-------+-------+-------+------------------------+--------------------------------
     X   |   X   |   X   |       |       |       |       |       |       | SYS_PWR_STAT_ABNORMAL  | 电源电压异常
  -------+-------+-------+-------+-------+-------+-------+-------+-------+------------------------+--------------------------------
         |       |   X   |       |       |       |       |       |       | SYS_PWR_STAT_LIMIT     | 电源电压低,部分功能受限
  -------+-------+-------+-------+-------+-------+-------+-------+-------+------------------------+--------------------------------
         |   X   |       |       |       |       |       |       |       | SYS_PWR_STAT_LVP       | 电源电压过低,低压保护状态
  -------+-------+-------+-------+-------+-------+-------+-------+-------+------------------------+--------------------------------
     X   |       |       |       |       |       |       |       |       | SYS_PWR_STAT_OVP       | 电源电压过高,过压保护状态
  -------+-------+-------+-------+-------+-------+-------+-------+-------+------------------------+--------------------------------
     X   |   X   |       |       |       |       |       |       |       | SYS_PWR_STAT_PROTECT   | 电源电压过高或过低,保护状态
  -------+-------+-------+-------+-------+-------+-------+-------+-------+------------------------+--------------------------------
         |       |   X   |   X   |       |       |       |       |       | SYS_PWR_STAT_UNPROTECT | 非保护状态
  -------+-------+-------+-------+-------+-------+-------+-------+-------+------------------------+--------------------------------
         |       |       |       |   X   |   X   |   X   |   X   |       | SYS_OPR_STAT_RUN       | 系统正常运行
  -------+-------+-------+-------+-------+-------+-------+-------+-------+------------------------+--------------------------------
         |       |       |       |       |       |       |       |   X   | SYS_OPR_STAT_HALT      | 系统停止运行
  -------+-------+-------+-------+-------+-------+-------+-------+-------+------------------------+--------------------------------
         |       |       |       |   X   |       |       |       |       | SYS_OPR_STAT_OFF       | 所有电源关闭
  -------+-------+-------+-------+-------+-------+-------+-------+-------+------------------------+--------------------------------
         |       |       |       |       |   X   |   X   |       |       | SYS_OPR_STAT_ACC_ON    | ACC电源开启
  -------+-------+-------+-------+-------+-------+-------+-------+-------+------------------------+--------------------------------
         |       |       |       |       |       |   X   |   X   |       | SYS_OPR_STAT_IGN_ON    | IGN电源开启
  -------+-------+-------+-------+-------+-------+-------+-------+-------+------------------------+--------------------------------
         |       |       |       |   X   |   X   |       |       |       | SYS_OPR_STAT_IGN_OFF   | IGN电源关闭
  -------+-------+-------+-------+-------+-------+-------+-------+-------+------------------------+--------------------------------
         |       |       |       |       |       |       |   X   |       | SYS_OPR_STAT_CRANK     | 发动机点火
  ---------------------------------------------------------------------------------------------------------------------------------
  1. 仅在电源电压处于正常运行范围内,才进入[SYS_PWR_STAT_NORMAL]状态,包括受限状态和保护状态均计入[SYS_PWR_STAT_ABNORMAL]状态
  2. [SYS_PWR_STAT_UNPROTECT]状态包含电源电压正常状态及受限状态,相对的[SYS_PWR_STAT_PROTECT]状态则包含低压及过压保护状态
  3. [SYS_OPR_STAT_RUN]状态可以是仅在电源电压正常情况下进入,也可以是电源电压正常状态及受限状态均可进入,这取决于系统运行状态的设置,
     这一状态直接体现了在当前设置下系统是否正常运行,当不满足系统正常运行条件时,进入[SYS_OPR_STAT_HALT]状态
  4. [SYS_OPR_STAT_OFF]状态反映钥匙处于OFF位置,与[SYS_OPR_STAT_IGN_OFF]状态不同的是,如果ACC状态检测被使能时,钥匙转到ACC位置后,即退
     出[SYS_OPR_STAT_OFF]状态,而此时由于IGN电源未开启[SYS_OPR_STAT_IGN_OFF]状态仍有效
  5. [SYS_OPR_STAT_RUN]状态是指电源电压正常,系统可以正常运行,并非单指IGN开启的状态
  6. 如果需要检测 ACC 及 CRANK 状态,必须在系统运行状态的设置中使能相关的检测功能
  =================================================================================================================================*/
#define   SYS_PWR_STAT_NORMAL               (SysPowerStatus & 0x01)
#define   SYS_PWR_STAT_ABNORMAL             (SysPowerStatus & 0x0E)
#define   SYS_PWR_STAT_LIMIT                (SysPowerStatus & 0x02)
#define   SYS_PWR_STAT_LVP                  (SysPowerStatus & 0x04)
#define   SYS_PWR_STAT_OVP                  (SysPowerStatus & 0x08)
#define   SYS_PWR_STAT_PROTECT              (SysPowerStatus & 0x0C)
#define   SYS_PWR_STAT_UNPROTECT            (SysPowerStatus & 0x03)

#define   SYS_OPR_STAT_RUN                  (SysOperatingStatus & 0x0F)
#define   SYS_OPR_STAT_HALT                 (SysOperatingStatus & 0x80)
#define   SYS_OPR_STAT_OFF                  (SysOperatingStatus & 0x01)
#define   SYS_OPR_STAT_ACC_ON               (SysOperatingStatus & 0x06)
#define   SYS_OPR_STAT_IGN_ON               (SysOperatingStatus & 0x0C)
#define   SYS_OPR_STAT_IGN_OFF              (SysOperatingStatus & 0x03)
#define   SYS_OPR_STAT_CRANK                (SysOperatingStatus & 0x08)

/******************************************************************************
系统状态更新模式
******************************************************************************/
#define   SYS_STAT_UPDATE_MODE_NORMAL       0x00
#define   SYS_STAT_UPDATE_MODE_WAKEUP       0x01
#define   SYS_STAT_UPDATE_MODE_RECOVERY     0x02
#define   SYS_STAT_UPDATE_MODE_INIT         0x03

/******************************************************************************
电源状态位定义
******************************************************************************/

/*====================================================================
     Bit 0   | SYS_PWR_STATUS_BIT_RUN | 正常运行状态
  -----------+------------------------+-------------------------------
     Bit 1   | SYS_PWR_STATUS_BIT_LIM | 电压低,受限电源状态
  -----------+------------------------+-------------------------------
     Bit 2   | SYS_PWR_STATUS_BIT_LVP | 低压保护状态
  -----------+------------------------+-------------------------------
     Bit 3   | SYS_PWR_STATUS_BIT_OVP | 过压保护状态
  -----------+------------------------+-------------------------------
   Bit 4 - 7 | RSVD.                  | 保留位
  ====================================================================*/

#define   SYS_PWR_STATUS_BIT_RUN            0x01
#define   SYS_PWR_STATUS_BIT_LIM            0x02
#define   SYS_PWR_STATUS_BIT_LVP            0x04
#define   SYS_PWR_STATUS_BIT_OVP            0x08

/******************************************************************************
电源模式
******************************************************************************/
#define   SYS_PWR_NORMAL_MODE               0x00
#define   SYS_PWR_LVP_MODE                  0x01
#define   SYS_PWR_LIMIT_MODE                0x02
#define   SYS_PWR_OVP_MODE                  0x03

/******************************************************************************
电源状态设置
******************************************************************************/
/*#if (Power_Mod == Power_Version_24)
#define   SYS_LVP_ENTER_THRESHOLD           15500      //进入低压保护阈值  6500
#define   SYS_LVP_EXIT_THRESHOLD            16000      //退出低压保护阈值  7000

#define   SYS_LIMIT_ENTER_THRESHOLD         17000      //系统低压关闭阈值
#define   SYS_LIMIT_EXIT_THRESHOLD          18000      //系统正常工作阈值

#define   SYS_OVP_EXIT_THRESHOLD            32200     //退出过压保护阈值   17500
#define   SYS_OVP_ENTER_THRESHOLD           32000     //进入过压保护阈值

#else
#define   SYS_LVP_ENTER_THRESHOLD           6500      //进入低压保护阈值  6500
#define   SYS_LVP_EXIT_THRESHOLD            7000      //退出低压保护阈值  7000

#define   SYS_LIMIT_ENTER_THRESHOLD         9000      //系统低压关闭阈值
#define   SYS_LIMIT_EXIT_THRESHOLD          9500      //系统正常工作阈值

#define   SYS_OVP_EXIT_THRESHOLD            18200     //退出过压保护阈值   17500
#define   SYS_OVP_ENTER_THRESHOLD           18000     //进入过压保护阈值
#endif
*/
#define   SYS_PWR_DEBOUNCE_TIME              2000     //电源状态消抖时间(ms)

#define   SYS_POWERED_BY_KL30_ONLY            0       //0 - KL15 和 KL30 同时用于供电
//1 - 仅由 KL30 供电

/******************************************************************************
信号状态
******************************************************************************/
#define   SYS_SIG_STAT_INACTIVE             0x00
#define   SYS_SIG_STAT_ACTIVE               0x01

/******************************************************************************
运行状态位定义
******************************************************************************/

/*====================================================================
     Bit 0   | SYS_OPR_STATUS_BIT_OFF | 所有电源关闭
  -----------+------------------------+-------------------------------
     Bit 1   | SYS_OPR_STATUS_BIT_ACC | ACC电源开启
  -----------+------------------------+-------------------------------
     Bit 2   | SYS_OPR_STATUS_BIT_IGN | IGN电源开启
  -----------+------------------------+-------------------------------
     Bit 3   | SYS_OPR_STATUS_BIT_CRK | 发动机点火
  -----------+------------------------+-------------------------------
   Bit 4 - 6 | RSVD.                  | 保留位
  -----------+------------------------+-------------------------------
     Bit 7   | SYS_OPR_STATUS_BIT_ERR | 运行状态错误(例如,电源电压异常)
  ====================================================================*/

#define   SYS_OPR_STATUS_BIT_OFF            0x01
#define   SYS_OPR_STATUS_BIT_ACC            0x02
#define   SYS_OPR_STATUS_BIT_IGN            0x04
#define   SYS_OPR_STATUS_BIT_CRK            0x08
#define   SYS_OPR_STATUS_BIT_ERR            0x80

/******************************************************************************
运行状态设置
******************************************************************************/
#define   SYS_OFF_THRESHOLD                 5500      //电源(KL15)关闭阈值
#define   SYS_ON_THRESHOLD                  6000      //电源(KL15)开启阈值

#define   SYS_OPR_DEBOUNCE_TIME             120       //运行状态检测消抖时间(ms)

#define   SYS_RUNNING_IN_LIMIT_MODE         1         //电源受限模式下持续运行
#define   SYS_ACC_MODE_DET_ENABLE           0         //ACC模式检测使能(IGN OFF时)
#define   SYS_CRANK_MODE_DET_ENABLE         0         //CRANK模式检测使能

/******************************************************************************
电源模式监控结构声明
******************************************************************************/
typedef struct
{
  uint8_t   Mode;
  uint8_t   LVPTimer;
  uint8_t   LimitTimer;
  uint8_t   NormalTimer;
  uint8_t   OVPTimer;
} SysPwrModeStruct;

/******************************************************************************
信号状态检测结构声明
******************************************************************************/
typedef struct
{
  uint8_t   Status;
  uint8_t   Timer;
} SysSignalStatusStruct;

/******************************************************************************
函数声明
******************************************************************************/
void Sys_Status_Init(void);
void Sys_Status_Update_Mode_Set(uint8_t Mode);
void Sys_Status_Update_Service(void);

uint8_t Sys_ACC_Status_Detect(void);
uint8_t Sys_Crank_Status_Detect(void);

#endif