📄 relay.c
字号:
/***************************************************************************************
** 文件信息---------------------------------------------------------------------------------
** 文 件 名: Relay.C
** 描 述: 保护定值判断和继电器遥控与动作
*******************************************************************************************/
#include "sfr16_lb.h" /*以16位形式定义的特殊寄存器*/
#include "calculate.h"
#include "system.h"
#include "GMUDef.h"
#include "key.h"
#include "comdata_converse.h"
#include "Menus.h"
//============================================================
//过量型保护模型可用于:速断、堵转、过负荷、零序过流、负序过流
void bh_model_over(float i_set,float t_set,float i_real,unsigned char l_phase,
unsigned char *bh_state,unsigned char *start_counter,float *action_counter,
unsigned char *action_val,unsigned char bh_type,unsigned char Relay_S_I);
//============================================================
//欠量型保护模型可用于空载
void bh_model_low(float i_set,float t_set,float i_real,unsigned char l_phase,
unsigned char *bh_state,unsigned char *start_counter,float *action_counter,
unsigned char *action_val,unsigned char bh_type);
//============================================
//各种保护进程函数
void bh_I_1(float i_set,float t_set,float i_real,unsigned char l_phase); //堵转
void bh_I_2(float i_set,float t_set,float i_real,unsigned char l_phase); //过负荷
void bh_I_3(unsigned char curve_index,float i_set,float t_set,float i_real,unsigned char l_phase); //反时限
void bh_I_4(float i_set,float t_set,float i_real,unsigned char l_phase); //零序过流
void bh_I_5(float i_set,float t_set,float i_real,unsigned char l_phase); //负序过流
void bh_I_6(float i_set,float t_set,float i_real,unsigned char l_phase); //空载
void bh_I_7(float i_set,float t_set,float i_real,unsigned char l_phase); //速断
void bh_I_9(float i_set,float t_set,float i_real,unsigned char l_phase); //负序2段
//=============================================
//供外部调用的保护函数
void init_bh(void); //保护初始化
void run_bh(void); //保护进程的运行,保护判断,在calculate()函数中调用.
void relay_action(unsigned char *var1,unsigned char *var2); //继电器开出,在采样中断sample()中调用
void exlink_event(void); //联锁事件
char phase_change(unsigned char phase_num);
//模块函数
void save_bh_to_ram(unsigned char t_type,unsigned char t_phase,float t_action); //保存保护事件到内存中
float lookfortable(float fVal); //X的0.02次方的查表函数
float computer_iep_t(unsigned char curve_num,float i_set,float i_real); //反时限值的计算
float time_counters=0;
unsigned char test_bis=0;
unsigned char exlink_in=1; //联锁标志位
unsigned int bh_sum_temp;
unsigned char relay_action_val=0x00; //继电器的动作值
extern float get_max(float temp1,float temp2,float temp3,unsigned char *temp4);
//=================================================================================================
extern unsigned char revert_sign; //遥信复归信号
extern xdata float I_act_Temp[3],i_over;
extern unsigned char t_counter,t_counter_s,t_counter_m;
extern unsigned char Time_year,Time_month,Time_day,Time_hour,Time_minute,Time_second,real_time_counter;//实际时间
extern unsigned char Relay_S_I1,Relay_S_I2,Relay_S_I3,Relay_S_I4,Relay_S_I5,Relay_S_I6,Relay_S_I7,Relay_S_I9;
//============================================
/*******************************************************************************************
** 函数原型
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -