📄 prlimplgethisdata.c
字号:
//******************************************************************
//
// 文件名称:PrlImplGetHisData.c
// 文件内容:104协议项--基本电量数据获取实现文件
// 结构定义规则:见文档《变量定义规范》
// 创建者:
// 创建时间:2007-8-1
//******************************************************************
//*************************头文件包含区*****************************
#include "DefPrl.h"
#include "DefDispData.h"
#include "ShareMemDebugOut.h"
#include "ShareMemOp.h"
#include "PrlFuncDeclare.h"
//******************************************************************
#define FILL_TIME(obj, src) FillTime(&obj, &src)
//长期电压变动(电压偏差)
int PrlGetLngTmVltVrtn(TPrlFrame *PrlFrame, void *Param1, void *Param2)
{
unsigned int LineID = PrlFrame->UserData.DeviceAddress.ThreadID+1;
TLineParam LineParam;
TLineDataStatis *LineDataStatis = (TLineDataStatis *)Param1;
struct LngTmVrtn_LCD *Data = (struct LngTmVrtn_LCD *)PrlFrame->UserData.Data;
TimeYS curtime;
GetMainLineParam(LineID, &LineParam);
GetTimeYS(&curtime);
strncpy(Data->Name, LineParam.LineDspSet.LineName, STR_LINE_NAME_LEN);
Data->Stat = (unsigned int)Param2;
if(LineParam.MonitorType.UConnectionType == CT_V)
{
Data->LineFlag=1;
}
else
{
Data->LineFlag=0;
}
Data->UnDvtn_A=LineDataStatis->AvgVlt.VltDvtn.AN;
Data->UnDvtn_B=LineDataStatis->AvgVlt.VltDvtn.BN;
Data->UnDvtn_C=LineDataStatis->AvgVlt.VltDvtn.CN;
Data->PstvUnDvtnExtrm_A=LineDataStatis->ExtrVltRes.VltPstvDvtnExtr.MxAN;
FILL_TIME(Data->PstvUnDvtn_A_T, LineDataStatis->ExtrVltRes.VltPstvDvtnExtr.MxTmAN);
Data->PstvUnDvtnExtrm_B=LineDataStatis->ExtrVltRes.VltPstvDvtnExtr.MxBN;
FILL_TIME(Data->PstvUnDvtn_B_T, LineDataStatis->ExtrVltRes.VltPstvDvtnExtr.MxTmBN);
Data->PstvUnDvtnExtrm_C=LineDataStatis->ExtrVltRes.VltPstvDvtnExtr.MxCN;
FILL_TIME(Data->PstvUnDvtn_C_T, LineDataStatis->ExtrVltRes.VltPstvDvtnExtr.MxTmCN);
Data->NgtvUnDvtnExtrm_A=LineDataStatis->ExtrVltRes.VltNgtvDvtnExtr.MxAN;
FILL_TIME(Data->NgtvUnDvtn_A_T,LineDataStatis->ExtrVltRes.VltNgtvDvtnExtr.MxTmAN);
Data->NgtvUnDvtnExtrm_B=LineDataStatis->ExtrVltRes.VltNgtvDvtnExtr.MxBN;
FILL_TIME(Data->NgtvUnDvtn_B_T,LineDataStatis->ExtrVltRes.VltNgtvDvtnExtr.MxTmBN);
Data->NgtvUnDvtnExtrm_C=LineDataStatis->ExtrVltRes.VltNgtvDvtnExtr.MxCN;
FILL_TIME(Data->NgtvUnDvtn_C_T,LineDataStatis->ExtrVltRes.VltNgtvDvtnExtr.MxTmCN);
Data->UnQlfctnRt_A=LineDataStatis->QlfcRtVlt.PhsVltRmsQlfcRt.QtAN;
Data->UnQlfctnRt_B=LineDataStatis->QlfcRtVlt.PhsVltRmsQlfcRt.QtBN;
Data->UnQlfctnRt_C=LineDataStatis->QlfcRtVlt.PhsVltRmsQlfcRt.QtCN;
Data->OvrUnRt_A=LineDataStatis->QlfcRtVlt.PhsVltRmsQlfcRt.UpAN;
Data->OvrUnRt_B=LineDataStatis->QlfcRtVlt.PhsVltRmsQlfcRt.UpBN;
Data->OvrUnRt_C=LineDataStatis->QlfcRtVlt.PhsVltRmsQlfcRt.UpCN;
Data->UdrUnRt_A=LineDataStatis->QlfcRtVlt.PhsVltRmsQlfcRt.DwnAN;
Data->UdrUnRt_B=LineDataStatis->QlfcRtVlt.PhsVltRmsQlfcRt.DwnBN;
Data->UdrUnRt_C=LineDataStatis->QlfcRtVlt.PhsVltRmsQlfcRt.DwnCN;
if(CheckTimeMatch(Data->Stat, LineDataStatis->TimeStatis, curtime) == 0)
{
Data->UnDvtn_A=0;
Data->UnDvtn_B=0;
Data->UnDvtn_C=0;
Data->PstvUnDvtnExtrm_A=0;
memset(&Data->PstvUnDvtn_A_T, 0, sizeof(Time_s));
Data->PstvUnDvtnExtrm_B=0;
memset(&Data->PstvUnDvtn_B_T, 0, sizeof(Time_s));
Data->PstvUnDvtnExtrm_C=0;
memset(&Data->PstvUnDvtn_C_T, 0, sizeof(Time_s));
Data->NgtvUnDvtnExtrm_A=0;
memset(&Data->NgtvUnDvtn_A_T, 0, sizeof(Time_s));
Data->NgtvUnDvtnExtrm_B=0;
memset(&Data->NgtvUnDvtn_B_T, 0, sizeof(Time_s));
Data->NgtvUnDvtnExtrm_C=0;
memset(&Data->NgtvUnDvtn_C_T, 0, sizeof(Time_s));
Data->UnQlfctnRt_A=0;
Data->UnQlfctnRt_B=0;
Data->UnQlfctnRt_C=0;
Data->OvrUnRt_A=0;
Data->OvrUnRt_B=0;
Data->OvrUnRt_C=0;
Data->UdrUnRt_A=0;
Data->UdrUnRt_B=0;
Data->UdrUnRt_C=0;
}
PrlFrame->UserData.DataLen = sizeof(struct LngTmVrtn_LCD);
return PRL_EXECUTE_OK;
}
//长期频率变动(频率偏差)
int PrlGetLngTmFrqVrtn(TPrlFrame *PrlFrame, void *Param1, void *Param2)
{
unsigned int LineID = PrlFrame->UserData.DeviceAddress.ThreadID+1;
TLineParam LineParam;
TLineDataStatis *LineDataStatis = (TLineDataStatis *)Param1;
struct LngTmFrqVrtn_LCD *Data = (struct LngTmFrqVrtn_LCD *)PrlFrame->UserData.Data;
TimeYS curtime;
Data->Stat = (unsigned int)Param2;
GetMainLineParam(LineID, &LineParam);
GetTimeYS(&curtime);
strncpy(Data->Name, LineParam.LineDspSet.LineName, STR_LINE_NAME_LEN);
if(LineParam.MonitorType.UConnectionType == CT_V)
{
Data->LineFlag=1;
}
else
{
Data->LineFlag=0;
}
Data->FrqDvtn_A = LineDataStatis->AvgVlt.FrqDvtn.AN;
Data->FrqDvtn_B = LineDataStatis->AvgVlt.FrqDvtn.BN;
Data->FrqDvtn_C = LineDataStatis->AvgVlt.FrqDvtn.CN;
Data->HghFrqDvtnExtrm_A = LineDataStatis->ExtrVltRes.FrqPstvDvtnExtr.MxAN;
FILL_TIME(Data->HghFrqDvtn_A_T, LineDataStatis->ExtrVltRes.FrqPstvDvtnExtr.MxTmAN);
Data->HghFrqDvtnExtrm_B = LineDataStatis->ExtrVltRes.FrqPstvDvtnExtr.MxBN;
FILL_TIME(Data->HghFrqDvtn_B_T, LineDataStatis->ExtrVltRes.FrqPstvDvtnExtr.MxTmBN);
Data->HghFrqDvtnExtrm_C = LineDataStatis->ExtrVltRes.FrqPstvDvtnExtr.MxCN;
FILL_TIME(Data->HghFrqDvtn_C_T, LineDataStatis->ExtrVltRes.FrqPstvDvtnExtr.MxTmCN);
Data->LwFrqDvtnExtrm_A = LineDataStatis->ExtrVltRes.FrqNgtvDvtnExtr.MxAN;
FILL_TIME(Data->LwFrqDvtn_A_T, LineDataStatis->ExtrVltRes.FrqNgtvDvtnExtr.MxTmAN);
Data->LwFrqDvtnExtrm_B = LineDataStatis->ExtrVltRes.FrqNgtvDvtnExtr.MxBN;
FILL_TIME(Data->LwFrqDvtn_B_T, LineDataStatis->ExtrVltRes.FrqNgtvDvtnExtr.MxTmBN);
Data->LwFrqDvtnExtrm_C = LineDataStatis->ExtrVltRes.FrqNgtvDvtnExtr.MxCN;
FILL_TIME(Data->LwFrqDvtn_C_T, LineDataStatis->ExtrVltRes.FrqNgtvDvtnExtr.MxTmCN);
Data->FrqQlfctnRt_A = LineDataStatis->QlfcRtVlt.FrqQlfcRt.QtAN;
Data->FrqQlfctnRt_B = LineDataStatis->QlfcRtVlt.FrqQlfcRt.QtBN;
Data->FrqQlfctnRt_C = LineDataStatis->QlfcRtVlt.FrqQlfcRt.QtCN;
Data->HghFrqTm_A = LineDataStatis->QlfcRtVlt.FrqQlfcRt.UpAN;
Data->HghFrqTm_B = LineDataStatis->QlfcRtVlt.FrqQlfcRt.UpBN;
Data->HghFrqTm_C = LineDataStatis->QlfcRtVlt.FrqQlfcRt.UpCN;
Data->LwFrqTm_A = LineDataStatis->QlfcRtVlt.FrqQlfcRt.DwnAN;
Data->LwFrqTm_B = LineDataStatis->QlfcRtVlt.FrqQlfcRt.DwnBN;
Data->LwFrqTm_C = LineDataStatis->QlfcRtVlt.FrqQlfcRt.DwnCN;
if(CheckTimeMatch(Data->Stat, LineDataStatis->TimeStatis, curtime) == 0)
{
Data->FrqDvtn_A = 0;
Data->FrqDvtn_B = 0;
Data->FrqDvtn_C = 0;
Data->HghFrqDvtnExtrm_A = 0;
memset(&Data->HghFrqDvtn_A_T, 0, sizeof(Time_s));
Data->HghFrqDvtnExtrm_B = 0;
memset(&Data->HghFrqDvtn_B_T, 0, sizeof(Time_s));
Data->HghFrqDvtnExtrm_C = 0;
memset(&Data->HghFrqDvtn_C_T, 0, sizeof(Time_s));
Data->LwFrqDvtnExtrm_A = 0;
memset(&Data->LwFrqDvtn_A_T, 0, sizeof(Time_s));
Data->LwFrqDvtnExtrm_B = 0;
memset(&Data->LwFrqDvtn_B_T, 0, sizeof(Time_s));
Data->LwFrqDvtnExtrm_C = 0;
memset(&Data->LwFrqDvtn_C_T, 0, sizeof(Time_s));
Data->FrqQlfctnRt_A = 0;
Data->FrqQlfctnRt_B = 0;
Data->FrqQlfctnRt_C = 0;
Data->HghFrqTm_A = 0;
Data->HghFrqTm_B = 0;
Data->HghFrqTm_C = 0;
Data->LwFrqTm_A = 0;
Data->LwFrqTm_B = 0;
Data->LwFrqTm_C = 0;
}
PrlFrame->UserData.DataLen = sizeof(struct LngTmFrqVrtn_LCD);
return PRL_EXECUTE_OK;
}
//总谐波电压数值表
int PrlGetTtlHarUn(TPrlFrame *PrlFrame, void *Param1, void *Param2)
{
unsigned int LineID = PrlFrame->UserData.DeviceAddress.ThreadID+1;
TLineParam LineParam;
TLineDataStatis *LineDataStatis = (TLineDataStatis *)Param1;
struct TtlHarUn_LCD *Data = (struct TtlHarUn_LCD *)PrlFrame->UserData.Data;
TimeYS curtime;
Data->Stat = (unsigned int)Param2;
GetMainLineParam(LineID, &LineParam);
GetTimeYS(&curtime);
strncpy(Data->Name, LineParam.LineDspSet.LineName, STR_LINE_NAME_LEN);
if(LineParam.MonitorType.UConnectionType == CT_V)
{
Data->LineFlag=1;
}
else
{
Data->LineFlag=0;
}
Data->TtlHarUnEffctv_A=LineDataStatis->AvgVlt.TtlHrmnVltCnt.AN;
Data->TtlHarUnEffctv_B=LineDataStatis->AvgVlt.TtlHrmnVltCnt.BN;
Data->TtlHarUnEffctv_C=LineDataStatis->AvgVlt.TtlHrmnVltCnt.CN;
Data->MxTtlHarUnEffctv_A=LineDataStatis->ExtrVltRes.TtlHrmnVltCntExtr.MxAN;
FILL_TIME(Data->MxTtlHarUnEffctv_A_T,LineDataStatis->ExtrVltRes.TtlHrmnVltCntExtr.MxTmAN);
Data->MxTtlHarUnEffctv_B=LineDataStatis->ExtrVltRes.TtlHrmnVltCntExtr.MxBN;
FILL_TIME(Data->MxTtlHarUnEffctv_B_T,LineDataStatis->ExtrVltRes.TtlHrmnVltCntExtr.MxTmBN);
Data->MxTtlHarUnEffctv_C=LineDataStatis->ExtrVltRes.TtlHrmnVltCntExtr.MxCN;
FILL_TIME(Data->MxTtlHarUnEffctv_C_T,LineDataStatis->ExtrVltRes.TtlHrmnVltCntExtr.MxTmCN);
Data->MnTtlHarUnEffctv_A=LineDataStatis->ExtrVltRes.TtlHrmnVltCntExtr.MnAN;
FILL_TIME(Data->MnTtlHarUnEffctv_A_T,LineDataStatis->ExtrVltRes.TtlHrmnVltCntExtr.MnTmAN);
Data->MnTtlHarUnEffctv_B=LineDataStatis->ExtrVltRes.TtlHrmnVltCntExtr.MnBN;
FILL_TIME(Data->MnTtlHarUnEffctv_B_T,LineDataStatis->ExtrVltRes.TtlHrmnVltCntExtr.MnTmBN);
Data->MnTtlHarUnEffctv_C=LineDataStatis->ExtrVltRes.TtlHrmnVltCntExtr.MnCN;
FILL_TIME(Data->MnTtlHarUnEffctv_C_T,LineDataStatis->ExtrVltRes.TtlHrmnVltCntExtr.MnTmCN);
Data->AvTtlUnDstrtnRt_A=LineDataStatis->AvgVlt.TtlHrmnVltDstRt.AN;
Data->MxTtlUnDstrtnRt_A=LineDataStatis->ExtrVltRes.TtlHrmnVltDstRtExtr.MxAN;
Data->MnTtlUnDstrtnRt_A=LineDataStatis->ExtrVltRes.TtlHrmnVltDstRtExtr.MnAN;
Data->AvTtlUnDstrtnRt_B=LineDataStatis->AvgVlt.TtlHrmnVltDstRt.BN;
Data->MxTtlUnDstrtnRt_B=LineDataStatis->ExtrVltRes.TtlHrmnVltDstRtExtr.MxBN;
Data->MnTtlUnDstrtnRt_B=LineDataStatis->ExtrVltRes.TtlHrmnVltDstRtExtr.MnBN;
Data->AvTtlUnDstrtnRt_C=LineDataStatis->AvgVlt.TtlHrmnVltDstRt.CN;
Data->MxTtlUnDstrtnRt_C=LineDataStatis->ExtrVltRes.TtlHrmnVltDstRtExtr.MxCN;
Data->MnTtlUnDstrtnRt_C=LineDataStatis->ExtrVltRes.TtlHrmnVltDstRtExtr.MnCN;
Data->TtlUnDstrtnRt_A=LineDataStatis->QlfcRtVlt.TtlVltDstRtQlfcRt.QtAN;
Data->TtlUnDstrtnRt_B=LineDataStatis->QlfcRtVlt.TtlVltDstRtQlfcRt.QtBN;
Data->TtlUnDstrtnRt_C=LineDataStatis->QlfcRtVlt.TtlVltDstRtQlfcRt.QtCN;
if(CheckTimeMatch(Data->Stat, LineDataStatis->TimeStatis, curtime) == 0)
{
Data->TtlHarUnEffctv_A=0;
Data->TtlHarUnEffctv_B=0;
Data->TtlHarUnEffctv_C=0;
Data->MxTtlHarUnEffctv_A=0;
memset(&Data->MxTtlHarUnEffctv_A_T, 0, sizeof(Time_s));
Data->MxTtlHarUnEffctv_B=0;
memset(&Data->MxTtlHarUnEffctv_B_T, 0, sizeof(Time_s));
Data->MxTtlHarUnEffctv_C=0;
memset(&Data->MxTtlHarUnEffctv_C_T, 0, sizeof(Time_s));
Data->MnTtlHarUnEffctv_A=0;
memset(&Data->MnTtlHarUnEffctv_A_T, 0, sizeof(Time_s));
Data->MnTtlHarUnEffctv_B=0;
memset(&Data->MnTtlHarUnEffctv_B_T, 0, sizeof(Time_s));
Data->MnTtlHarUnEffctv_C=0;
memset(&Data->MnTtlHarUnEffctv_C_T, 0, sizeof(Time_s));
Data->AvTtlUnDstrtnRt_A=0;
Data->MxTtlUnDstrtnRt_A=0;
Data->MnTtlUnDstrtnRt_A=0;
Data->AvTtlUnDstrtnRt_B=0;
Data->MxTtlUnDstrtnRt_B=0;
Data->MnTtlUnDstrtnRt_B=0;
Data->AvTtlUnDstrtnRt_C=0;
Data->MxTtlUnDstrtnRt_C=0;
Data->MnTtlUnDstrtnRt_C=0;
Data->TtlUnDstrtnRt_A=0;
Data->TtlUnDstrtnRt_B=0;
Data->TtlUnDstrtnRt_C=0;
}
PrlFrame->UserData.DataLen = sizeof(struct TtlHarUn_LCD);
return PRL_EXECUTE_OK;
}
//总谐波电流数值表
int PrlGetTtlHarIn(TPrlFrame *PrlFrame, void *Param1, void *Param2)
{
unsigned int LineID = PrlFrame->UserData.DeviceAddress.ThreadID+1;
TLineParam LineParam;
TLineDataStatis *LineDataStatis = (TLineDataStatis *)Param1;
struct TtlHarIn_LCD *Data = (struct TtlHarIn_LCD *)PrlFrame->UserData.Data;
TimeYS curtime;
Data->Stat = (unsigned int)Param2;
GetMainLineParam(LineID, &LineParam);
GetTimeYS(&curtime);
strncpy(Data->Name, LineParam.LineDspSet.LineName, STR_LINE_NAME_LEN);
if(LineParam.MonitorType.UConnectionType == CT_V)
{
Data->LineFlag=1;
}
else
{
Data->LineFlag=0;
}
Data->TtlHarInEffctv_A = LineDataStatis->AvgCrrn.TtlHrmnCrrnCnt.AN;
Data->TtlHarInEffctv_B = LineDataStatis->AvgCrrn.TtlHrmnCrrnCnt.BN;
Data->TtlHarInEffctv_C = LineDataStatis->AvgCrrn.TtlHrmnCrrnCnt.CN;
Data->MxTtlHarInEffctv_A = LineDataStatis->ExtrCrrnRes.TtlHrmnCrrnCntExtr.MxAN;
FILL_TIME(Data->MxTtlHarInEffctv_A_T,LineDataStatis->ExtrCrrnRes.TtlHrmnCrrnCntExtr.MxTmAN);
Data->MxTtlHarInEffctv_B=LineDataStatis->ExtrCrrnRes.TtlHrmnCrrnCntExtr.MxBN;
FILL_TIME(Data->MxTtlHarInEffctv_B_T,LineDataStatis->ExtrCrrnRes.TtlHrmnCrrnCntExtr.MxTmBN);
Data->MxTtlHarInEffctv_C=LineDataStatis->ExtrCrrnRes.TtlHrmnCrrnCntExtr.MxCN;
FILL_TIME(Data->MxTtlHarInEffctv_C_T,LineDataStatis->ExtrCrrnRes.TtlHrmnCrrnCntExtr.MxTmCN);
Data->MnTtlHarInEffctv_A=LineDataStatis->ExtrCrrnRes.TtlHrmnCrrnCntExtr.MnAN;
FILL_TIME(Data->MnTtlHarInEffctv_A_T,LineDataStatis->ExtrCrrnRes.TtlHrmnCrrnCntExtr.MnTmAN);
Data->MnTtlHarInEffctv_B=LineDataStatis->ExtrCrrnRes.TtlHrmnCrrnCntExtr.MnBN;
FILL_TIME(Data->MnTtlHarInEffctv_B_T,LineDataStatis->ExtrCrrnRes.TtlHrmnCrrnCntExtr.MnTmBN);
Data->MnTtlHarInEffctv_C=LineDataStatis->ExtrCrrnRes.TtlHrmnCrrnCntExtr.MnCN;
FILL_TIME(Data->MnTtlHarInEffctv_C_T,LineDataStatis->ExtrCrrnRes.TtlHrmnCrrnCntExtr.MnTmCN);
Data->AvTtlInDstrtnRt_A=LineDataStatis->ExtrCrrnRes.TtlHrmnCrrnDstRtExtr.AvgAN;
Data->MxTtlInDstrtnRt_A=LineDataStatis->ExtrCrrnRes.TtlHrmnCrrnDstRtExtr.MxAN;
Data->MnTtlInDstrtnRt_A=LineDataStatis->ExtrCrrnRes.TtlHrmnCrrnDstRtExtr.MnAN;
Data->AvTtlInDstrtnRt_B=LineDataStatis->ExtrCrrnRes.TtlHrmnCrrnDstRtExtr.AvgBN;
Data->MxTtlInDstrtnRt_B=LineDataStatis->ExtrCrrnRes.TtlHrmnCrrnDstRtExtr.MxBN;
Data->MnTtlInDstrtnRt_B=LineDataStatis->ExtrCrrnRes.TtlHrmnCrrnDstRtExtr.MnBN;
Data->AvTtlInDstrtnRt_C=LineDataStatis->ExtrCrrnRes.TtlHrmnCrrnDstRtExtr.AvgCN;
Data->MxTtlInDstrtnRt_C=LineDataStatis->ExtrCrrnRes.TtlHrmnCrrnDstRtExtr.MxCN;
Data->MnTtlInDstrtnRt_C=LineDataStatis->ExtrCrrnRes.TtlHrmnCrrnDstRtExtr.MnCN;
Data->TtlInDstrtnRt_A=LineDataStatis->QlfcRtCrrn.TtlHrmnCrrnDstRtQlfcRt.QtAN;
Data->TtlInDstrtnRt_B=LineDataStatis->QlfcRtCrrn.TtlHrmnCrrnDstRtQlfcRt.QtBN;
Data->TtlInDstrtnRt_C=LineDataStatis->QlfcRtCrrn.TtlHrmnCrrnDstRtQlfcRt.QtCN;
if(CheckTimeMatch(Data->Stat, LineDataStatis->TimeStatis, curtime) == 0)
{
Data->TtlHarInEffctv_A = LineDataStatis->AvgCrrn.TtlHrmnCrrnCnt.AN;
Data->TtlHarInEffctv_B = LineDataStatis->AvgCrrn.TtlHrmnCrrnCnt.BN;
Data->TtlHarInEffctv_C = LineDataStatis->AvgCrrn.TtlHrmnCrrnCnt.CN;
Data->MxTtlHarInEffctv_A = 0;
memset(&Data->MxTtlHarInEffctv_A_T, 0, sizeof(Time_s));
Data->MxTtlHarInEffctv_B=0;
memset(&Data->MxTtlHarInEffctv_B_T, 0, sizeof(Time_s));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -