📄 protectoc3_current.c
字号:
/********************************************************************************/
/* */
/* 程序名: */
/* */
/* OC_III_Direction.C */
/* */
/* 功能: */
/* */
/* */
/********************************************************************************/
#include "BaseVariable.h"
#include "ProOC_III_Direction.h"
//--------------------------------------//
#define ON 1
#define OFF 0
#define SIGNALTRIP ON // ON=跳闸 OFF=告警//
#define KUIXIAN OFF
#define XIANLU ON
//--------------------------------------//
// 功能类型
#define CTYPE XIANLU
// 保护单元件退出
#define SWITCH_DRECTION OFF
#define SWITCH_VOLTAGE OFF
//--------------------------------------//
///////////////////////////////////////////
////////////////保护初始化函数///////////////
///////////////////////////////////////////
void OC_III_Direction_Initialize(PROTECT *ptr)
{
PROTECT *pProtect;
SETTING *pSets;
SOE *pSoe;
VALUE *pValue;
JUMPER *pJumper;
REPORT *pReport;
int i;
// ----------------------------------------------------- //
//保护结构体指针赋值
pProtect = ptr;
//保护缓冲区指针赋值
pProtect->pro_jumper = OC_III_jumper;
pProtect->pro_setting = OC_III_setting;
pProtect->pro_run_data = OC_III_rundata;
//保护ID号
pProtect->pro_id = PRO_Total_Protect;
//保护装置名
pProtect->ppro_device_name = "WXH-821";
//保护名
pProtect->ppro_name = "过流Ⅲ段保护";
//跳闸位
pProtect->pro_trip = 0x1;
//////模拟通道
// ----------------------------------------------------- //
//相电流
pProtect->pro_analog_channel[0] = PIa_Chn;
pProtect->pro_analog_channel[1] = PIb_Chn;
pProtect->pro_analog_channel[2] = PIc_Chn;
#if CTYPE
//电压
pProtect->pro_analog_channel[3] = Ua_Chn;
pProtect->pro_analog_channel[4] = Ub_Chn;
pProtect->pro_analog_channel[5] = Uc_Chn;
#endif
//////压板
// ----------------------------------------------------- //
//压板个数
pProtect->pro_jumper_number = 0;
//指针赋值
pJumper = pProtect->pro_jumper;
//ID号
pJumper->pro_id = pProtect->pro_id;
//序号
pJumper->jum_id = pProtect->pro_jumper_number;
//INF
pJumper->jum_inf = 186;
//CONTROLINF
pJumper->jum_ctrl = 50;
//压板名称
pJumper->pjum_name = "过流Ⅲ段投退";
pJumper->pjum_alias = "GL3";
//压板状态
pJumper->jum_status = 1;
//赋值增量
pJumper++;
pProtect->pro_jumper_number++;
//////定值
// ----------------------------------------------------- //
//定值个数
pProtect->pro_setting_number = 0;
//指针赋值
pSets = pProtect->pro_setting;
//电流
pSets->pro_id = pProtect->pro_id;
pSets->set_id = ++(pProtect->pro_setting_number);
pSets->pset_name = (CHAR*)strcpy(pSets->set_name,"Ⅲ段电流值");
pSets->pset_alias = "I3zd";
pSets->pset_dimension = "A";
pSets->set_lower_limit = 0.5;
pSets->set_high_limit = 100.0;
pSets->set_calculate_style = CHL_FOURIER1_;
pSets->set_calculate_coefficient = CHL_CONSTANT_1;
for(i=0;i<SET_ZONE;i++)
pSets->set_value_zone[i] = 400.0*CHL_CONSTANT_1;
pSets++;
//------------------------------------------------//
//时限
pSets->pro_id = pProtect->pro_id;
pSets->set_id = ++(pProtect->pro_setting_number);
pSets->pset_name = (CHAR*)strcpy(pSets->set_name,"Ⅲ段时间值");
pSets->pset_alias = "T3";
pSets->pset_dimension = "S";
pSets->set_lower_limit = 0.00;
pSets->set_high_limit = 100;
pSets->set_calculate_style = CHL_MUL_;
pSets->set_calculate_coefficient = CHL_CONSTANT_1;
for(i=0;i<SET_ZONE;i++)
pSets->set_value_zone[i] = 0.0*CHL_CONSTANT_1;
pSets++;
//------------------------------------------------//
#if CTYPE
//电压
pSets->pro_id = pProtect->pro_id;
pSets->set_id = ++(pProtect->pro_setting_number);
pSets->pset_name = (CHAR*)strcpy(pSets->set_name,"Ⅲ段电压值");
pSets->pset_alias = "U3zd";
pSets->pset_dimension = "V";
pSets->set_lower_limit = 2;
pSets->set_high_limit = 100;
pSets->set_calculate_style = CHL_FOURIER1_;
pSets->set_calculate_coefficient = CHL_CONSTANT_1;
for(i=0;i<SET_ZONE;i++)
pSets->set_value_zone[i] = 1.0*CHL_CONSTANT_1;
pSets++;
//------------------------------------------------//
//方向角
pSets->pro_id = pProtect->pro_id;
pSets->set_id = ++(pProtect->pro_setting_number);
pSets->pset_name = (CHAR*)strcpy(pSets->set_name,"灵敏角模式");
pSets->pset_alias = "Agl";
pSets->pset_dimension = " ";
pSets->set_lower_limit = 0.00;
pSets->set_high_limit = 1.00;
pSets->set_calculate_style = MODE_;
pSets->set_calculate_coefficient = CHL_CONSTANT_1;
for(i=0;i<SET_ZONE;i++)
pSets->set_value_zone[i] = 1.0*CHL_CONSTANT_1;
pSets++;
//------------------------------------------------//
//////保护投退控制字
// ----------------------------------------------------- //
//电压元件
pSets->pro_id = pProtect->pro_id;
pSets->set_id = ++(pProtect->pro_setting_number);
pSets->pset_name = (CHAR*)strcpy(pSets->set_name,"电压元件");
pSets->pset_alias = "UBL3";
pSets->pset_dimension = " ";
pSets->set_lower_limit = 0.00;
pSets->set_high_limit = 1.00;
pSets->set_calculate_style = MODE_;
pSets->set_calculate_coefficient = CHL_CONSTANT_1;
for(i=0;i<SET_ZONE;i++)
pSets->set_value_zone[i] = 1.0*CHL_CONSTANT_1;
pSets++;
//------------------------------------------------//
//方向元件
pSets->pro_id = pProtect->pro_id;
pSets->set_id = ++(pProtect->pro_setting_number);
pSets->pset_name = (CHAR*)strcpy(pSets->set_name,"方向元件");
pSets->pset_alias = "FBL3";
pSets->pset_dimension = " ";
pSets->set_lower_limit = 0.00;
pSets->set_high_limit = 1.00;
pSets->set_calculate_style = MODE_;
pSets->set_calculate_coefficient = CHL_CONSTANT_1;
for(i=0;i<SET_ZONE;i++)
pSets->set_value_zone[i] = 1.0*CHL_CONSTANT_1;
pSets++;
//------------------------------------------------//
#endif
//////实时参数
// ----------------------------------------------------- //
pProtect->pro_run_data_number = 0;
pValue = pProtect->pro_run_data;
//------------------------------------------------//
pValue->value_index_number = ++(pProtect->pro_run_data_number);
pValue->pvalue_name =(CHAR *)strcpy(pValue -> value_name,"A相电流");
pValue->pvalue_alias = "Ia";
pValue->value_calculate_style = CHL_FOURIER1_;
pValue->pvalue_dimension = "A";
pValue->value_calculate_coefficient = 1;
pValue->value_measure = 0.0;
pValue++;
//------------------------------------------------//
pValue->value_index_number = ++(pProtect->pro_run_data_number);
pValue->pvalue_name =(CHAR *)strcpy(pValue -> value_name,"B相电流");
pValue->pvalue_alias = "Ib";
pValue->value_calculate_style = CHL_FOURIER1_;
pValue->pvalue_dimension = "A";
pValue->value_calculate_coefficient = 1;
pValue->value_measure = 0.0;
pValue++;
//------------------------------------------------//
pValue->value_index_number = ++(pProtect->pro_run_data_number);
pValue->pvalue_name =(CHAR *)strcpy(pValue -> value_name,"C相电流");
pValue->pvalue_alias = "Ic";
pValue->value_calculate_style = CHL_FOURIER1_;
pValue->pvalue_dimension = "A";
pValue->value_calculate_coefficient = 1;
pValue->value_measure = 0.0;
pValue++;
//------------------------------------------------//
#if CTYPE
pValue->value_index_number = ++(pProtect->pro_run_data_number);
pValue->pvalue_name =(CHAR *)strcpy(pValue -> value_name,"AB线电压");
pValue->pvalue_alias = "Uab";
pValue->value_calculate_style = CHL_FOURIER1_;
pValue->pvalue_dimension = "V";
pValue->value_calculate_coefficient = 1;
pValue->value_measure = 0.0;
pValue++;
//------------------------------------------------//
pValue->value_index_number = ++(pProtect->pro_run_data_number);
pValue->pvalue_name =(CHAR *)strcpy(pValue -> value_name,"BC线电压");
pValue->pvalue_alias = "Ubc";
pValue->value_calculate_style = CHL_FOURIER1_;
pValue->pvalue_dimension = "V";
pValue->value_calculate_coefficient = 1;
pValue->value_measure = 0.0;
pValue++;
//------------------------------------------------//
pValue->value_index_number = ++(pProtect->pro_run_data_number);
pValue->pvalue_name =(CHAR *)strcpy(pValue -> value_name,"CA线电压");
pValue->pvalue_alias = "Uca";
pValue->value_calculate_style = CHL_FOURIER1_;
pValue->pvalue_dimension = "V";
pValue->value_calculate_coefficient = 1;
pValue->value_measure = 0.0;
pValue++;
//------------------------------------------------//
#endif
//////报告
// ----------------------------------------------------- //
pReport = &OC3_Report;
pReport->pro_report_flag = 2;
//SOE
pSoe = &pReport->pro_report_soe;
//------------------------------------------------//
pSoe->pSOE_name = "过流Ⅲ段动作";
strcpy(pSoe->SOE_name,pSoe->pSOE_name);
pSoe->SOE_Inf = 94;
pSoe->DPI = 2;
//动作值
pReport->pro_report_data_number = 0;
pReport->pro_report_data = OC_III_reportdata;
pValue = pReport->pro_report_data;
//------------------------------------------------//
pValue->pvalue_name =(CHAR *)strcpy(pValue -> value_name,"A相动作电流");
pValue->pvalue_alias = "Ia";
pValue->value_calculate_style = CHL_FOURIER1_;
pValue->pvalue_dimension = "A";
pValue->value_calculate_coefficient = CHL_FOURIER_CURRENT;
pValue->value_index_number = pReport->pro_report_data_number;
pValue++;
pReport->pro_report_data_number++;
//------------------------------------------------//
pValue->pvalue_name =(CHAR *)strcpy(pValue -> value_name,"B相动作电流");
pValue->pvalue_alias = "Ib";
pValue->value_calculate_style = CHL_FOURIER1_;
pValue->pvalue_dimension = "A";
pValue->value_calculate_coefficient = CHL_FOURIER_CURRENT;
pValue->value_index_number = pReport->pro_report_data_number;
pValue++;
pReport->pro_report_data_number++;
//------------------------------------------------//
pValue->pvalue_name =(CHAR *)strcpy(pValue -> value_name,"C相动作电流");
pValue->pvalue_alias = "Ic";
pValue->value_calculate_style = CHL_FOURIER1_;
pValue->pvalue_dimension = "A";
pValue->value_calculate_coefficient = CHL_FOURIER_CURRENT;
pValue->value_index_number = pReport->pro_report_data_number;
pValue++;
pReport->pro_report_data_number++;
//------------------------------------------------//
//报告通道
//pReport->pro_channel_number = 1;
//------------------------------------------------//
//////保护私用变量
// ----------------------------------------------------- //
pProtect->pro_startup_flag = 0;
pProtect->pro_pickup_flag = 0;
pProtect->pro_reserve1 = 0;
pProtect->pro_reserve4 = TMD_System_Clock;
}
///////////////////////////////////////////
/////////////// 保护执行函数 ////////////////
///////////////////////////////////////////
VOID OC_III_Direction_Routine(PROTECT *ptr)
{
PROTECT *pProtect;
SETTING *pSets;
SOE *pSoe;
VALUE *pValue;
REPORT *pReport;
JUMPER *pJumper;
TIME *pTime;
INT SetZoneNum;
float Ia_Value,Ib_Value,Ic_Value;
float Current_Set;
float Time_Set;
#if CTYPE
float Voltage_Set;
float Voltage_Word;
float Direct_Word;
UNSIGNED i,j;
extern float Uab,Ubc,Uca;
float Ua_real,Ua_imaginary,Ub_real,Ub_imaginary,Uc_real,Uc_imaginary;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -