📄 alarm.c
字号:
/**********************************************
公司名称:
文 件 名:Alarm.c
版 本 号:
程序设计:
说 明:
完成日期:
修改日期:
功能摘要:
***********************************************/
#define _Alarm
#include "includes.h"
uint8 fH_Alarm;
uint8 fL_Alarm;
static uint16 LagVal; //报警回滞量:额定值的5%
WAIT_TIME_STRUCT SwitchOutDelay = {0,_1S};
void WatchDataTask(void);
void CountLag(void);
void WatchDataTask(void)
{
static uint8 H_Alarm_step = 0;
static uint8 L_Alarm_step = 0;
uint16 Display_V = Ps/1000;
if ((Rest5460A_Time == 0) && (SwitchOutDelay.fGetTime))
{
SwitchOutDelay.fGetTime = 0;
SwitchOutDelay.WaitTime = _1S;
if((H_Alarm<L_Alarm)||(AlarmSwitch & 0x01))
{
IO_HighAlarm = ON;
fH_Alarm = OFF;
IO_LowAlarm = ON;
fL_Alarm = OFF;
return;
}
switch(H_Alarm_step)
{
case 0:
if (Display_V > H_Alarm)
{ H_Alarm_step++; }
break;
case 1:
if (Display_V > H_Alarm)
{ H_Alarm_step++; }
else
{ H_Alarm_step = 0; }
break;
case 2:
if (Display_V > H_Alarm)
{
H_Alarm_step++;
IO_HighAlarm = OFF;
fH_Alarm = ON; //报警
}
else
{ H_Alarm_step = 0;}
break;
case 3:
if ((Display_V +LagVal) < H_Alarm ) //此处存在问题,数值设置太小时会出错
{ H_Alarm_step++; }
break;
case 4:
if ((Display_V +LagVal) < H_Alarm )
{ H_Alarm_step++; }
else
{ H_Alarm_step = 3; }
break;
case 5:
if ((Display_V +LagVal) < H_Alarm )
{
H_Alarm_step = 0;
IO_HighAlarm = ON;
fH_Alarm = OFF; //取消高报警
}
else
{ H_Alarm_step = 3; }
break;
default:
break;
}
//---------------------------
switch(L_Alarm_step)
{
case 0:
if (Display_V < L_Alarm)
{ L_Alarm_step++; }
break;
case 1:
if (Display_V < L_Alarm)
{ L_Alarm_step++; } //延时,防抖动
else
{ L_Alarm_step = 0; }
break;
case 2:
if (Display_V < L_Alarm)
{
IO_LowAlarm = OFF;
fL_Alarm = ON;
L_Alarm_step++;
}
else
{ L_Alarm_step = 0; }
break;
case 3:
if (Display_V >(L_Alarm+LagVal ))
{ L_Alarm_step++; }
break;
case 4:
if (Display_V >(L_Alarm+LagVal ))
{ L_Alarm_step++; } //延时,防抖动
else
{ L_Alarm_step = 3; }
break;
case 5:
if (Display_V >(L_Alarm+LagVal ))
{
L_Alarm_step = 0;
IO_LowAlarm = ON;
fL_Alarm = OFF; //取消低报警
}
else
{ L_Alarm_step = 3; }
break;
default:
break;
}
}
}
//---------------------------------------------------
void CountLag(void)
{
LagVal = (uint32) PtVal * 5; //回滞量是额定值的5%
}
//---------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -