fix 7-8 recall and better log

This commit is contained in:
lnk
2025-09-04 16:26:00 +08:00
parent 2e4a599200
commit 79676aa90d
4 changed files with 52 additions and 23 deletions

View File

@@ -488,7 +488,7 @@ void processQVVR_start(LD_info_t* LD_info)
LD_info->qvvr[LD_info->qvvr_idx].used_status = QVVR_DATA_RECEIVED;//这个点标记为收到暂态数据
LD_info->qvvr[LD_info->qvvr_idx].QVVR_type = 0; //类型未定
LD_info->qvvr[LD_info->qvvr_idx].timestamp = apr_time_sec(apr_time_now());//记录当前时间为暂态时间
LD_info->qvvr[LD_info->qvvr_idx].timestamp = apr_time_sec(apr_time_now());//记录当前时间
printf("\n~~~~~~~~~~~~~~~~~ processQVVR_start: line_id=%d \n",LD_info->line_id);
}
@@ -562,11 +562,11 @@ void processQVVR_end(LD_info_t* LD_info)
long long utc_or_beijing;
if(strcmp(cfg.UnitOfTimeUnit, "1") == 0){//持续时间上送的是秒1还是毫秒0
s_or_ms = 0.001;
DIY_WARNLOG_CODE(full_key_m_c,LOG_CODE_TRANSIENT,"【WARN】监测点:%s - id:%s上送的暂态持续时间单位是秒,监测点对应装置型号:%s",LD_info->name,LD_info->mp_id,ied_usr->dev_type);
//DIY_WARNLOG_CODE(full_key_m_c,LOG_CODE_TRANSIENT,"【WARN】监测点:%s - id:%s上送的暂态持续时间单位是秒,监测点对应装置型号:%s",LD_info->name,LD_info->mp_id,ied_usr->dev_type);
}
else{
s_or_ms = 1.0;
DIY_WARNLOG_CODE(full_key_m_c,LOG_CODE_TRANSIENT,"【WARN】监测点:%s - id:%s上送的暂态持续时间单位是毫秒,监测点对应装置型号:%s",LD_info->name,LD_info->mp_id,ied_usr->dev_type);
//DIY_WARNLOG_CODE(full_key_m_c,LOG_CODE_TRANSIENT,"【WARN】监测点:%s - id:%s上送的暂态持续时间单位是毫秒,监测点对应装置型号:%s",LD_info->name,LD_info->mp_id,ied_usr->dev_type);
}
if(strcmp(cfg.ValueOfTimeUnit, "utc") == 0){//上送的是utc还是北京
@@ -578,11 +578,8 @@ void processQVVR_end(LD_info_t* LD_info)
for (i=0;i<QVVR_NUM;i++) { //暂降/暂升/中断等进入处理,遍历所有波动位置
if (i==LD_info->qvvr_idx) //跳过监测点当前波动位置,第一次记录波形后,第一次的第个事件会让0号点为QVVR_DATA_RECEIVED
//第二次记录波形,第二次的第一个事件qvvr_idx=11号中为QVVR_DATA_RECEIVEDQVVR_start=1跳过记录
//第二次的第二个事件qvvr_idx=1QVVR_start=0记录到0中0为QVVR_DATA_PAIRED
//第二次的第三个事件qvvr_idx=22号中为QVVR_DATA_RECEIVEDQVVR_start=1跳过记录
//第二次录波匹配文件时应该匹配到1号的qvvrtime但是1没有QVVR_DATA_PAIRED所以对不上需要修改逻辑
if (i==LD_info->qvvr_idx) //跳过监测点当前波动位置,不会和自己做匹配。第一次记录波形后,第一次的第个事件会让0号点为QVVR_DATA_RECEIVED
//第二次qvvr_idx=11号中为QVVR_DATA_RECEIVEDQVVR_start=0会和0点做匹配
{
printf("skip this index\n");
continue;
@@ -638,7 +635,11 @@ void processQVVR_end(LD_info_t* LD_info)
//匹配后再发qvvr起始时间要填暂态触发的时间就是第一次事件上送时只有时间没有值的那个时间
//mq日志
DIY_WARNLOG_CODE(full_key_m_d,LOG_CODE_TRANSIENT,"【WARN】监测点%s - id:%s 发生暂态事件",LD_info->name,LD_info->mp_id);
DIY_WARNLOG_CODE(full_key_m_d,LOG_CODE_TRANSIENT,"【WARN】监测点%s - id:%s 发生暂态事件,暂态时间:%lld暂态持续时间%f暂态幅值%f暂态类型%d",LD_info->name,LD_info->mp_id,
LD_info->qvvr[LD_info->qvvr_idx].QVVR_time,
LD_info->qvvr[LD_info->qvvr_idx].QVVR_PerTime,
LD_info->qvvr[LD_info->qvvr_idx].QVVR_Amg,
LD_info->qvvr[LD_info->qvvr_idx].QVVR_type);
ret = transfer_json_qvvr_data(g_node_id, //这个参数没有使用
LD_info->line_id, //监测点序号
@@ -665,6 +666,15 @@ void processQVVR_end(LD_info_t* LD_info)
LD_info->qvvr[LD_info->qvvr_idx].used_status = QVVR_DATA_NOT_USED; //全都没有匹配上直接释放这个点,下次事件可以直接在这个点上使用
printf("\nERROR:~~~~~~~~~~~~~ processQVVR qvvr returned to 0,but found no data to pair!, line_id=%d,QVVR_type=%d \n",
LD_info->line_id, LD_info->qvvr[LD_info->qvvr_idx].QVVR_type);
//mq日志
if(strcmp(cfg.UnitOfTimeUnit, "1") == 0){//持续时间上送的是秒1还是毫秒0
DIY_WARNLOG_CODE(full_key_m_c,LOG_CODE_TRANSIENT,"【WARN】监测点:%s - id:%s记录了一个暂态事件但是没有匹配到事件的发生时间装置型号:%s 配置的暂态持续时间单位是秒",LD_info->name,LD_info->mp_id,ied_usr->dev_type);
}
else{
DIY_WARNLOG_CODE(full_key_m_c,LOG_CODE_TRANSIENT,"【WARN】监测点:%s - id:%s记录了一个暂态事件但是没有匹配到事件的发生时间装置型号:%s 配置的暂态持续时间单位是毫秒",LD_info->name,LD_info->mp_id,ied_usr->dev_type);
}
}
printf("\n~~~~~~~~~~~~~~~~~ processQVVR_end: line_id=%d \n",LD_info->line_id);