📄 alm.c
字号:
#include"include.h"
uint8 bdata AlarmET;
uint8 bdata AlarmVh0; //1~ 8只电池过压告警
uint8 bdata AlarmVh1; //9~15只电池过压告警
uint8 bdata AlarmVl0; //1~ 8只电池欠压告警
uint8 bdata AlarmVl1; //9~15只电池欠压告警
uint8 bdata AlarmScCTh; //1~15只电池充电过温
uint8 bdata AlarmScCTl; //1~15只电池充电欠温
uint8 bdata AlarmSDcTh; //1~15只电池放电过温
uint8 bdata AlarmSDcTl; //1~15只电池放电欠温
uint8 bdata TemperaSensor; //1~ 8路温度传感器失效
uint8 bdata VoltageSensor0; //电压传感器失效
sbit C_01_OV_Alarm = AlarmVh0^0; sbit C_09_OV_Alarm = AlarmVh1^0; //电池过压告警量
sbit C_02_OV_Alarm = AlarmVh0^1; sbit C_10_OV_Alarm = AlarmVh1^1;
sbit C_03_OV_Alarm = AlarmVh0^2; sbit C_11_OV_Alarm = AlarmVh1^2;
sbit C_04_OV_Alarm = AlarmVh0^3; sbit C_12_OV_Alarm = AlarmVh1^3;
sbit C_05_OV_Alarm = AlarmVh0^4; sbit C_13_OV_Alarm = AlarmVh1^4;
sbit C_06_OV_Alarm = AlarmVh0^5; sbit C_14_OV_Alarm = AlarmVh1^5;
sbit C_07_OV_Alarm = AlarmVh0^6; sbit C_15_OV_Alarm = AlarmVh1^6;
sbit C_08_OV_Alarm = AlarmVh0^7; sbit C_TV_OV_Alarm = AlarmVh1^7; //总电压过压
sbit C_01_UV_Alarm = AlarmVl0^0; sbit C_09_UV_Alarm = AlarmVl1^0; //电池欠压告警量
sbit C_02_UV_Alarm = AlarmVl0^1; sbit C_10_UV_Alarm = AlarmVl1^1;
sbit C_03_UV_Alarm = AlarmVl0^2; sbit C_11_UV_Alarm = AlarmVl1^2;
sbit C_04_UV_Alarm = AlarmVl0^3; sbit C_12_UV_Alarm = AlarmVl1^3;
sbit C_05_UV_Alarm = AlarmVl0^4; sbit C_13_UV_Alarm = AlarmVl1^4;
sbit C_06_UV_Alarm = AlarmVl0^5; sbit C_14_UV_Alarm = AlarmVl1^5;
sbit C_07_UV_Alarm = AlarmVl0^6; sbit C_15_UV_Alarm = AlarmVl1^6;
sbit C_08_UV_Alarm = AlarmVl0^7; sbit C_TV_UV_Alarm = AlarmVl1^7; //总电压欠压
sbit C_01_02_C_OT = AlarmScCTh^0; sbit C_01_02_C_UT = AlarmScCTl^0;//充电过欠温告警量
sbit C_03_04_C_OT = AlarmScCTh^1; sbit C_03_04_C_UT = AlarmScCTl^1;
sbit C_05_06_C_OT = AlarmScCTh^2; sbit C_05_06_C_UT = AlarmScCTl^2;
sbit C_07_08_C_OT = AlarmScCTh^3; sbit C_07_08_C_UT = AlarmScCTl^3;
sbit C_09_10_C_OT = AlarmScCTh^4; sbit C_09_10_C_UT = AlarmScCTl^4;
sbit C_11_12_C_OT = AlarmScCTh^5; sbit C_11_12_C_UT = AlarmScCTl^5;
sbit C_13_14_C_OT = AlarmScCTh^6; sbit C_13_14_C_UT = AlarmScCTl^6;
sbit C_15_15_C_OT = AlarmScCTh^7; sbit C_15_15_C_UT = AlarmScCTl^7;
sbit C_01_02_Dc_OT = AlarmSDcTh^0; sbit C_01_02_Dc_UT = AlarmSDcTl^0;//放电过欠温告警
sbit C_03_04_Dc_OT = AlarmSDcTh^1; sbit C_03_04_Dc_UT = AlarmSDcTl^1;
sbit C_05_06_Dc_OT = AlarmSDcTh^2; sbit C_05_06_Dc_UT = AlarmSDcTl^2;
sbit C_07_08_Dc_OT = AlarmSDcTh^3; sbit C_07_08_Dc_UT = AlarmSDcTl^3;
sbit C_09_10_Dc_OT = AlarmSDcTh^4; sbit C_09_10_Dc_UT = AlarmSDcTl^4;
sbit C_11_12_Dc_OT = AlarmSDcTh^5; sbit C_11_12_Dc_UT = AlarmSDcTl^5;
sbit C_13_14_Dc_OT = AlarmSDcTh^6; sbit C_13_14_Dc_UT = AlarmSDcTl^6;
sbit C_15_15_Dc_OT = AlarmSDcTh^7; sbit C_15_15_Dc_UT = AlarmSDcTl^7;
sbit TSensor_01_Bro = TemperaSensor^0; sbit TSensor_05_Bro = TemperaSensor^4; //温度感器失效
sbit TSensor_02_Bro = TemperaSensor^1; sbit TSensor_06_Bro = TemperaSensor^5;
sbit TSensor_03_Bro = TemperaSensor^2; sbit TSensor_07_Bro = TemperaSensor^6;
sbit TSensor_04_Bro = TemperaSensor^3; sbit TSensor_08_Bro = TemperaSensor^7;
sbit VSensorBroken = VoltageSensor0^0; //电压传感器失效
/*******************************************************************
AlarmET告警位说明
*******************************************************************/
/* --------------------------------------------------------------
| bit7 | bit6 | bit5 | bit4 | bit3 | bit2 | bit1 | bit0 | |
--------------------------------------------------------------
| ETSB | CSB | PDOC | PCOC | ENUT| EVOT | PDOT | PCOT | |
--------------------------------------------------------------*/
sbit Pack_C_OT_Alarm = AlarmET^0; //电池组充电过温
sbit Pack_D_OT_Alarm = AlarmET^1; //电池组放电过温
sbit Envi_OT_Alarm = AlarmET^2; //环境温度过温
sbit Envi_UT_Alarm = AlarmET^3; //环境温度欠温
sbit Pack_C_OC_Alarm = AlarmET^4; //电池组充电过流
sbit Pack_D_OC_Alarm = AlarmET^5; //电池组放电过流
sbit CurrentSensorBr = AlarmET^6; //电流传感器失效
sbit EnviTemSensorBr = AlarmET^7; //环境温度传感器失效
/*********************************************************************************************************
** 函数名称: void AlarmInitiate(void)
** 功能描述: 告警初始化
** 输 入: 无
** 输 出: 无
** 全局变量:
** 调用模块:
**
** 作 者: 李伟
** 日 期: 2008年12月15日
**-------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void AlarmInitiate(void)
{
AlarmET = 0;
AlarmVh0 = 0; //1~ 8只电池过压告警
AlarmVh1 = 0; //9~15只电池过压告警
AlarmVl0 = 0; //1~ 8只电池欠压告警
AlarmVl1 = 0; //9~15只电池欠压告警
AlarmScCTh = 0; //1~15只电池充电过温
AlarmScCTl = 0; //1~15只电池充电欠温
AlarmSDcTh = 0; //1~15只电池放电过温
AlarmSDcTl = 0; //1~15只电池放电欠温
}
/*********************************************************************************************************
** 函数名称: void SignalCellT(uint8 *Buf,uint8 width,uint8 WorkMode)
** 功能描述:
** 输 入: 无
** 输 出: 无
** 全局变量:
** 调用模块:
**
** 作 者: 李伟
** 日 期: 2008年12月15日
**-------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void SignalCellT(uint8 *Buf,uint8 width,uint8 WorkMode)
{
uint8 i;
uint8 *buf;
buf = Buf;
for(i = 0;i < width;i++)
{
if(WorkMode == ChargeStep)
{
if(buf[i] > ModeTempCofing[1]) //45摄氏度ChargeThigh
{
if(i == 0)C_01_02_C_OT = 1; //产生充电过温告警
if(i == 1)C_03_04_C_OT = 1;
if(i == 2)C_05_06_C_OT = 1;
if(i == 3)C_07_08_C_OT = 1;
if(i == 4)C_09_10_C_OT = 1;
if(i == 5)C_11_12_C_OT = 1;
if(i == 6)C_13_14_C_OT = 1;
if(i == 7)C_15_15_C_OT = 1;
}
else if(buf[i] < ModeTempCofing[9]) //43摄氏度ReChargeThigh
{
if(i == 0)C_01_02_C_OT = 0; //消除充电过温告警
if(i == 1)C_03_04_C_OT = 0;
if(i == 2)C_05_06_C_OT = 0;
if(i == 3)C_07_08_C_OT = 0;
if(i == 4)C_09_10_C_OT = 0;
if(i == 5)C_11_12_C_OT = 0;
if(i == 6)C_13_14_C_OT = 0;
if(i == 7)C_15_15_C_OT = 0;
}
if(buf[i] < ModeTempCofing[0]) //5摄氏度ChargeTlow
{
if(i == 0)C_01_02_C_UT = 1; //产生充电欠温告警
if(i == 1)C_03_04_C_UT = 1;
if(i == 2)C_05_06_C_UT = 1;
if(i == 3)C_07_08_C_UT = 1;
if(i == 4)C_09_10_C_UT = 1;
if(i == 5)C_11_12_C_UT = 1;
if(i == 6)C_13_14_C_UT = 1;
if(i == 7)C_15_15_C_UT = 1;
}
else if(buf[i] > ModeTempCofing[8]) //7摄氏度ReChargeTlow
{
if(i == 0)C_01_02_C_UT = 0;//消除充电欠温告警
if(i == 1)C_03_04_C_UT = 0;
if(i == 2)C_05_06_C_UT = 0;
if(i == 3)C_07_08_C_UT = 0;
if(i == 4)C_09_10_C_UT = 0;
if(i == 5)C_11_12_C_UT = 0;
if(i == 6)C_13_14_C_UT = 0;
if(i == 7)C_15_15_C_UT = 0;
}
if((AlarmScCTh & 0xFF) == 0xFF)Pack_C_OT_Alarm = 1; else Pack_C_OT_Alarm = 0; //充电电池组过温
}
if(WorkMode == DisChargeStep)
{
if(buf[i] > ModeTempCofing[3]) //55摄氏度DisChargeThigh
{
if(i == 0)C_01_02_Dc_OT = 1; //产生放电过温告警
if(i == 1)C_03_04_Dc_OT = 1;
if(i == 2)C_05_06_Dc_OT = 1;
if(i == 3)C_07_08_Dc_OT = 1;
if(i == 4)C_09_10_Dc_OT = 1;
if(i == 5)C_11_12_Dc_OT = 1;
if(i == 6)C_13_14_Dc_OT = 1;
if(i == 7)C_15_15_Dc_OT = 1;
}
else if(buf[i] < ModeTempCofing[11]) //53摄氏度ReDisChargeThigh
{
if(i == 0)C_01_02_Dc_OT = 0;//消除放电过温告警
if(i == 1)C_03_04_Dc_OT = 0;
if(i == 2)C_05_06_Dc_OT = 0;
if(i == 3)C_07_08_Dc_OT = 0;
if(i == 4)C_09_10_Dc_OT = 0;
if(i == 5)C_11_12_Dc_OT = 0;
if(i == 6)C_13_14_Dc_OT = 0;
if(i == 7)C_15_15_Dc_OT = 0;
}
if(buf[i] < ModeTempCofing[2]) //-10摄氏度DisChargeTlow
{
if(i == 0)C_01_02_Dc_UT = 1; //产生放电欠温告警
if(i == 1)C_03_04_Dc_UT = 1;
if(i == 2)C_05_06_Dc_UT = 1;
if(i == 3)C_07_08_Dc_UT = 1;
if(i == 4)C_09_10_Dc_UT = 1;
if(i == 5)C_11_12_Dc_UT = 1;
if(i == 6)C_13_14_Dc_UT = 1;
if(i == 7)C_15_15_Dc_UT = 1;
}
else if(buf[i] > ModeTempCofing[10]) //-8摄氏度ReDisChargeTlow
{
if(i == 0)C_01_02_Dc_UT = 0;//消除放电欠温告警
if(i == 1)C_03_04_Dc_UT = 0;
if(i == 2)C_05_06_Dc_UT = 0;
if(i == 3)C_07_08_Dc_UT = 0;
if(i == 4)C_09_10_Dc_UT = 0;
if(i == 5)C_11_12_Dc_UT = 0;
if(i == 6)C_13_14_Dc_UT = 0;
if(i == 7)C_15_15_Dc_UT = 0;
}
if(buf[i] == -30)
{
if(i == 0)TSensor_01_Bro = 1; //温度传感器失效告警
if(i == 1)TSensor_02_Bro = 1;
if(i == 2)TSensor_03_Bro = 1;
if(i == 3)TSensor_04_Bro = 1;
if(i == 4)TSensor_05_Bro = 1;
if(i == 5)TSensor_06_Bro = 1;
if(i == 6)TSensor_07_Bro = 1;
if(i == 7)TSensor_08_Bro = 1;
}
else
{
if(i == 0)TSensor_01_Bro = 0;
if(i == 1)TSensor_02_Bro = 0;
if(i == 2)TSensor_03_Bro = 0;
if(i == 3)TSensor_04_Bro = 0;
if(i == 4)TSensor_05_Bro = 0;
if(i == 5)TSensor_06_Bro = 0;
if(i == 6)TSensor_07_Bro = 0;
if(i == 7)TSensor_08_Bro = 0;
}
if((AlarmSDcTh & 0xFF) == 0xFF)Pack_D_OT_Alarm = 1; else Pack_D_OT_Alarm = 0; //放电电池组过温
}
}
if(buf[width-1] > ModeTempCofing[4]) Envi_OT_Alarm = 1; //产生环境温度过温告警 EnvironmentOT
else if(buf[width-1] < ModeTempCofing[6])Envi_OT_Alarm = 0; //消除温度欠温告警 ReEnvironmentOT
if(buf[width-1] < ModeTempCofing[5]) Envi_UT_Alarm = 1; //产生环境温度欠温告警 EnvironmentUT
else if(buf[width-1] > ModeTempCofing[7])Envi_UT_Alarm = 0; //消除环境温度欠温告警 ReEnvironmentUT
if(buf[width-1] == -30) EnviTemSensorBr = 1; //环境温度传感器失效
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -