优化波形文件匹配逻辑和日志提示
This commit is contained in:
@@ -760,10 +760,10 @@ void processQVVR_end(LD_info_t* LD_info)
|
||||
|
||||
//mq日志
|
||||
if(strcmp(cfg.UnitOfTimeUnit, "1") == 0){//持续时间上送的是秒1还是毫秒0
|
||||
DIY_WARNLOG_CODE(LD_info->mp_id,2,LOG_CODE_TRANSIENT,"【WARN】监测点:%s - id:%s记录了一个暂态事件但是没有匹配到事件的发生时间,装置型号:%s 配置的暂态持续时间单位是秒",LD_info->name,LD_info->mp_id,ied_usr->dev_type);
|
||||
DIY_WARNLOG_CODE(LD_info->mp_id,2,LOG_CODE_TRANSIENT,"【WARN】监测点:%s - id:%s发生了暂态事件但是没有记录,可能是配置的暂态持续时间不匹配,当前装置型号:%s ,当前使用的配置的暂态持续时间单位是s",LD_info->name,LD_info->mp_id,ied_usr->dev_type);
|
||||
}
|
||||
else{
|
||||
DIY_WARNLOG_CODE(LD_info->mp_id,2,LOG_CODE_TRANSIENT,"【WARN】监测点:%s - id:%s记录了一个暂态事件但是没有匹配到事件的发生时间,装置型号:%s 配置的暂态持续时间单位是毫秒",LD_info->name,LD_info->mp_id,ied_usr->dev_type);
|
||||
DIY_WARNLOG_CODE(LD_info->mp_id,2,LOG_CODE_TRANSIENT,"【WARN】监测点:%s - id:%s发生了暂态事件但是没有记录,可能是配置的暂态持续时间不匹配,当前装置型号:%s ,当前使用的配置的暂态持续时间单位是ms",LD_info->name,LD_info->mp_id,ied_usr->dev_type);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -782,27 +782,45 @@ void processQVVR_end(LD_info_t* LD_info)
|
||||
// - 如果没有找到符合条件的 QVVR 数据,返回 NULL。
|
||||
QVVR_t* find_qvvr_by_trig_tm(LD_info_t* LD_info, long long trig_tm)
|
||||
{
|
||||
long long diff; // 用于计算时间戳差异
|
||||
int i; // 循环计数器
|
||||
const long long EIGHT_HOURS_MS = 8LL * 60 * 60 * 1000;
|
||||
|
||||
// 遍历 LD_info 中的 QVVR 数据数组
|
||||
for (i = 0; i < QVVR_NUM; i++) {
|
||||
// 计算当前 QVVR 数据的时间戳与触发时间戳之间的差异
|
||||
diff = abs(LD_info->qvvr[i].QVVR_time - trig_tm);
|
||||
long long candidates[3] = {
|
||||
trig_tm,
|
||||
trig_tm - EIGHT_HOURS_MS,
|
||||
trig_tm + EIGHT_HOURS_MS
|
||||
};
|
||||
|
||||
//调试用
|
||||
printf("QVVRTIME:%lld >>>>> COMTRADE trig_tm:%lld >>>>> diff:%lld\n",LD_info->qvvr[i].QVVR_time,trig_tm,diff);
|
||||
for (int c = 0; c < 3; ++c) {
|
||||
|
||||
// 如果该 QVVR 数据的状态是 "已配对"(QVVR_DATA_PAIRED)并且时间差小于等于 1(单位:毫秒)
|
||||
if ((LD_info->qvvr[i].used_status == QVVR_DATA_PAIRED) && (diff <= 1)) {
|
||||
// 如果匹配,返回该 QVVR 数据的指针
|
||||
printf(">>>>> pair QVVR success>>>>>> \n");
|
||||
return &(LD_info->qvvr[i]);
|
||||
long long cmp_tm = candidates[c];
|
||||
|
||||
printf("===== try trig_tm:%lld offset:%lld =====\n",
|
||||
cmp_tm,
|
||||
cmp_tm - trig_tm);
|
||||
|
||||
for (int i = 0; i < QVVR_NUM; i++) {
|
||||
|
||||
long long diff =
|
||||
llabs(LD_info->qvvr[i].QVVR_time - cmp_tm);
|
||||
|
||||
printf("QVVRTIME:%lld >>>>> COMTRADE trig_tm:%lld >>>>> diff:%lld\n",
|
||||
LD_info->qvvr[i].QVVR_time,
|
||||
cmp_tm,
|
||||
diff);
|
||||
|
||||
if ((LD_info->qvvr[i].used_status == QVVR_DATA_PAIRED)
|
||||
&& (diff <= 1))
|
||||
{
|
||||
printf(">>>>> pair QVVR success>>>>>> offset=%lld\n",
|
||||
cmp_tm - trig_tm);
|
||||
|
||||
return &(LD_info->qvvr[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
printf(">>>>> pair QVVR fail>>>>>> \n");
|
||||
// 如果没有找到匹配的 QVVR 数据,返回 NULL
|
||||
printf(">>>>> pair QVVR fail>>>>>>\n");
|
||||
|
||||
return NULL;
|
||||
}
|
||||
#if 0
|
||||
|
||||
Reference in New Issue
Block a user