Data_BtyPckCrt.c 1.43 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
#include "Data_BtyPckCrt.h"
#include "CAN_Communication_Matrix.h"
#include "Communication_Over_CAN.h"
#include "System_Monitor.h"

uint16_t BtyPckCrt_Value;
uint8_t  BtyPckCrt_Sign;
uint8_t  BtyPckCrt_Valid;

void BtyPckCrt_Reset(void)
{
    BtyPckCrt_Value = 0;
    BtyPckCrt_Sign  = 0;
    BtyPckCrt_Valid = 0;
}

void BtyPckCrt_KL30_Init(void)
{
    BtyPckCrt_Reset();
}

void BtyPckCrt_KL15_ON_Init(void)
{
    BtyPckCrt_Reset();
}

void BtyPckCrt_Processing_Service(void)
{
    uint16_t u16Result = 0u;
    
    if (SYS_OPR_STAT_IGN_OFF) //下电
    {
        BtyPckCrt_Reset();
        return;
    }

    u16Result = Get_ID_18F13DF3_Sig_BMS_BtyPckCrt();
    
    if ((u16Result >= 0xFFFE) || (CAN_MSG_Status(ID_BMS_BMSSts_Msg_Count) != CAN_SIG_RECEIVE))
    {
        BtyPckCrt_Valid = 0;
        BtyPckCrt_Sign  = 0;
        u16Result       = 0;
    }
    else
    {
        BtyPckCrt_Valid = 1;
    }
    
    if (u16Result < 10000)  //0.1A 
    {
        u16Result      = 10000 - u16Result;
        BtyPckCrt_Sign = 1;
    }
    else
    {
        u16Result     -= 10000;
        BtyPckCrt_Sign = 0;
    }
    
    if (u16Result <= 10000)
    {
        BtyPckCrt_Value = u16Result;
    }
    else
    {
        //超过有效范围保持原值
    }
}

uint16_t BtyPckCrt_Get_Value(void)
{
    return BtyPckCrt_Value;
}

uint8_t BtyPckCrt_Get_Sign(void)
{
    return BtyPckCrt_Sign;
}

uint8_t BtyPckCrt_Get_Valid(void)
{
    return BtyPckCrt_Valid;
}