fix 7-8 recall and better log
This commit is contained in:
@@ -1462,7 +1462,7 @@ int parse_rpt_log_ini()
|
|||||||
//添加判断,有的监测点没有cpuno为2,直接申请了LD_info[1],没申请LD_info[0]
|
//添加判断,有的监测点没有cpuno为2,直接申请了LD_info[1],没申请LD_info[0]
|
||||||
if(ied_usr->LD_info[cpuno].LD_name == NULL){
|
if(ied_usr->LD_info[cpuno].LD_name == NULL){
|
||||||
printf("this ld_info didn't palloc space ,maybe this ledger has problem!");
|
printf("this ld_info didn't palloc space ,maybe this ledger has problem!");
|
||||||
DIY_ERRORLOG_CODE("process",LOG_CODE_RPTINIT,"【ERROR】终端%s的监测点序号为%d的监测点没有在写入台账时申请空间,所以无法初始化报告,跳过这个监测点的报告初始化。操作台账可能存在缺失,请检查台账的监测点序号是否从1开始",ied_usr->terminal_id,cpuno + 1);
|
DIY_ERRORLOG_CODE("process",LOG_CODE_RPTINIT,"【ERROR】终端%s的监测点序号为%d的监测点无法初始化报告,这个装置的台账存在缺失,请检查装置台账的监测点总数和各监测点的序号",ied_usr->terminal_id,cpuno + 1);
|
||||||
continue;//跳过防止崩溃
|
continue;//跳过防止崩溃
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5860,7 +5860,7 @@ int parse_rpt_log_ini_one(ied_t* ied)
|
|||||||
//添加判断,有的监测点没有cpuno为2,直接申请了LD_info[2-1],没申请LD_info[0]
|
//添加判断,有的监测点没有cpuno为2,直接申请了LD_info[2-1],没申请LD_info[0]
|
||||||
if(ied_usr->LD_info[cpuno].LD_name == NULL){
|
if(ied_usr->LD_info[cpuno].LD_name == NULL){
|
||||||
printf("this ld_info didn't palloc space ,maybe this ledger has problem!");
|
printf("this ld_info didn't palloc space ,maybe this ledger has problem!");
|
||||||
DIY_ERRORLOG_CODE("process",LOG_CODE_RPTINIT,"【ERROR】终端%s的监测点序号为%d的监测点没有在写入台账时申请空间,所以无法初始化报告,跳过这个监测点的报告初始化。操作台账可能存在缺失,请检查台账的监测点序号是否从1开始",ied_usr->terminal_id,cpuno + 1);
|
DIY_ERRORLOG_CODE("process",LOG_CODE_RPTINIT,"【ERROR】终端%s的监测点序号为%d的监测点无法初始化报告,这个装置的台账存在缺失,请检查装置台账的监测点总数和各监测点的序号",ied_usr->terminal_id,cpuno + 1);
|
||||||
continue;//跳过防止崩溃
|
continue;//跳过防止崩溃
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3090,16 +3090,17 @@ static void getDirectoryFilesInfo(const std::string &dirPath, std::vector<FileIn
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 将 JSON 字符串写入指定文件
|
// 将 JSON 字符串写入指定文件
|
||||||
static void writeJsonToFile(const char* filePath, const char* jsonString)
|
static bool writeJsonToFile(const char* filePath, const char* jsonString)
|
||||||
{
|
{
|
||||||
FILE* fp = fopen(filePath, "w");
|
FILE* fp = fopen(filePath, "w");
|
||||||
if (!fp) {
|
if (!fp) {
|
||||||
DIY_ERRORLOG_CODE("process",LOG_CODE_TRANSIENT_COMM,"【ERROR】无法将暂态事件写入本地缓存");
|
//DIY_ERRORLOG_CODE("process",LOG_CODE_TRANSIENT_COMM,"【ERROR】无法将暂态事件写入本地缓存");
|
||||||
std::cerr << "Failed to write in file : " << filePath << std::endl;
|
std::cerr << "Failed to write in file : " << filePath << std::endl;
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
fprintf(fp, "%s", jsonString);
|
fprintf(fp, "%s", jsonString);
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 检查 qvvr 目录下文件总大小,若超过 10M 则删除最老的一个文件
|
// 检查 qvvr 目录下文件总大小,若超过 10M 则删除最老的一个文件
|
||||||
@@ -3344,7 +3345,9 @@ char* mp_id,char* Qvvr_rptname,char* devtype)
|
|||||||
fileName += ".txt";
|
fileName += ".txt";
|
||||||
|
|
||||||
// 把 json_string 写入文件
|
// 把 json_string 写入文件
|
||||||
writeJsonToFile(fileName.c_str(), json_string);
|
if(!writeJsonToFile(fileName.c_str(), json_string)){
|
||||||
|
DIY_ERRORLOG_CODE(full_key_m_d,LOG_CODE_TRANSIENT_COMM,"【ERROR】监测点:%s无法将暂态时间为%lld的暂态事件写入本地缓存",start_tm,mp_id);
|
||||||
|
}
|
||||||
|
|
||||||
checkAndRemoveOldestIfNeeded(qvvrDir, 10LL * 1024 * 1024);
|
checkAndRemoveOldestIfNeeded(qvvrDir, 10LL * 1024 * 1024);
|
||||||
}
|
}
|
||||||
@@ -3390,7 +3393,9 @@ char* mp_id,char* Qvvr_rptname,char* devtype)
|
|||||||
fileName += buf;
|
fileName += buf;
|
||||||
fileName += ".txt";
|
fileName += ".txt";
|
||||||
// 把 json_string 写入文件
|
// 把 json_string 写入文件
|
||||||
writeJsonToFile(fileName.c_str(), json_string);
|
if(!writeJsonToFile(fileName.c_str(), json_string)){
|
||||||
|
DIY_ERRORLOG_CODE(full_key_m_d,LOG_CODE_TRANSIENT_COMM,"【ERROR】监测点:%s无法将暂态时间为%lld的暂态事件写入本地缓存",start_tm,mp_id);
|
||||||
|
}
|
||||||
|
|
||||||
checkAndRemoveOldestIfNeeded(qvvrDir, 10LL * 1024 * 1024);
|
checkAndRemoveOldestIfNeeded(qvvrDir, 10LL * 1024 * 1024);
|
||||||
|
|
||||||
|
|||||||
@@ -590,7 +590,7 @@ void ChannelCheckIECLogs(chnl_usr_t *chnl_usr)
|
|||||||
loginfo->need_steady = LD_info->autorecall[i]->need_steady; loginfo->need_voltage = LD_info->autorecall[i]->need_voltage;
|
loginfo->need_steady = LD_info->autorecall[i]->need_steady; loginfo->need_voltage = LD_info->autorecall[i]->need_voltage;
|
||||||
|
|
||||||
loginfo->start_time = apr_time_from_sec(LD_info->autorecall[i]->start - 5);//保证时间开头
|
loginfo->start_time = apr_time_from_sec(LD_info->autorecall[i]->start - 5);//保证时间开头
|
||||||
loginfo->end_time = apr_time_from_sec(LD_info->autorecall[i]->end + 5);//不保证时间结尾,可以+5保证时间结尾
|
loginfo->end_time = apr_time_from_sec(LD_info->autorecall[i]->end - 5);//不保证时间结尾
|
||||||
|
|
||||||
/////////////////////////////////////////////////////根据配置文件控制下发补招时间为北京时间还是utc时间,上送的数据61850库会转换成北京时间?
|
/////////////////////////////////////////////////////根据配置文件控制下发补招时间为北京时间还是utc时间,上送的数据61850库会转换成北京时间?
|
||||||
loginfo->start_time = loginfo->start_time - utc_or_beijing * APR_USEC_PER_SEC;//下发utc时间需要减去8小时-秒
|
loginfo->start_time = loginfo->start_time - utc_or_beijing * APR_USEC_PER_SEC;//下发utc时间需要减去8小时-秒
|
||||||
@@ -1679,11 +1679,11 @@ void CheckNextNotConnectedChannel()
|
|||||||
if(true == ((ied_usr_t*)(chnl_usr->chnl->ied->usr_ext))->lastconnectstat){
|
if(true == ((ied_usr_t*)(chnl_usr->chnl->ied->usr_ext))->lastconnectstat){
|
||||||
((ied_usr_t*)(chnl_usr->chnl->ied->usr_ext))->lastconnectstat = false;
|
((ied_usr_t*)(chnl_usr->chnl->ied->usr_ext))->lastconnectstat = false;
|
||||||
((ied_usr_t*)(chnl_usr->chnl->ied->usr_ext))->has_logged_disconnect = true;
|
((ied_usr_t*)(chnl_usr->chnl->ied->usr_ext))->has_logged_disconnect = true;
|
||||||
DIY_WARNLOG_CODE(full_key_t_c,LOG_CODE_COMM,"【WARN】终端%s - ip/端口:%s:%d - 识别码/秘钥:%s/%s,从开始连接到目前已经%i秒,连接失败,断开连接!", ((ied_usr_t*)(chnl_usr->chnl->ied->usr_ext))->terminal_id,chnl_usr->ip_str,chnl_usr->chnl->port,((ied_usr_t*)(chnl_usr->chnl->ied->usr_ext))->dev_series,((ied_usr_t*)(chnl_usr->chnl->ied->usr_ext))->dev_key,secsSince);
|
DIY_WARNLOG_CODE(full_key_t_c,LOG_CODE_COMM,"【WARN】终端%s - ip/端口:%s:%d,从开始连接到目前已经%i秒,连接失败,断开连接!", ((ied_usr_t*)(chnl_usr->chnl->ied->usr_ext))->terminal_id,chnl_usr->ip_str,chnl_usr->chnl->port,secsSince);
|
||||||
}
|
}
|
||||||
else if(false == ((ied_usr_t*)(chnl_usr->chnl->ied->usr_ext))->lastconnectstat && false == ((ied_usr_t*)(chnl_usr->chnl->ied->usr_ext))->has_logged_disconnect){
|
else if(false == ((ied_usr_t*)(chnl_usr->chnl->ied->usr_ext))->lastconnectstat && false == ((ied_usr_t*)(chnl_usr->chnl->ied->usr_ext))->has_logged_disconnect){
|
||||||
((ied_usr_t*)(chnl_usr->chnl->ied->usr_ext))->has_logged_disconnect = true;
|
((ied_usr_t*)(chnl_usr->chnl->ied->usr_ext))->has_logged_disconnect = true;
|
||||||
DIY_WARNLOG_CODE(full_key_t_c,LOG_CODE_COMM,"【WARN】终端%s - ip/端口:%s:%d - 识别码/秘钥:%s/%s,从开始连接到目前已经%i秒,连接失败,断开连接!", ((ied_usr_t*)(chnl_usr->chnl->ied->usr_ext))->terminal_id,chnl_usr->ip_str,chnl_usr->chnl->port,((ied_usr_t*)(chnl_usr->chnl->ied->usr_ext))->dev_series,((ied_usr_t*)(chnl_usr->chnl->ied->usr_ext))->dev_key,secsSince);
|
DIY_WARNLOG_CODE(full_key_t_c,LOG_CODE_COMM,"【WARN】终端%s - ip/端口:%s:%d,从开始连接到目前已经%i秒,连接失败,断开连接!", ((ied_usr_t*)(chnl_usr->chnl->ied->usr_ext))->terminal_id,chnl_usr->ip_str,chnl_usr->chnl->port,secsSince);
|
||||||
}
|
}
|
||||||
|
|
||||||
mvl_free_req_ctrl(chnl_usr->m_reqCtrl);
|
mvl_free_req_ctrl(chnl_usr->m_reqCtrl);
|
||||||
@@ -1971,7 +1971,6 @@ int ld_has_qvvr_nonempty(const LD_info_t* info)
|
|||||||
for (i = 0; i < QVVR_NUM; ++i) {
|
for (i = 0; i < QVVR_NUM; ++i) {
|
||||||
const QVVR_t* it = &info->qvvr[i];
|
const QVVR_t* it = &info->qvvr[i];
|
||||||
|
|
||||||
/* 只要有任一“有效迹象”就视为非空 */
|
|
||||||
if (it->used_status != 0 && it->QVVR_time != 0 && it->QVVR_PerTime != 0)
|
if (it->used_status != 0 && it->QVVR_time != 0 && it->QVVR_PerTime != 0)
|
||||||
{
|
{
|
||||||
return 1;
|
return 1;
|
||||||
@@ -2045,7 +2044,7 @@ apr_status_t call_cn_wavelist(LD_info_t *LD_info )
|
|||||||
//mq日志
|
//mq日志
|
||||||
//DIY_WARNLOG_CODE(full_key_m_c,LOG_CODE_COMTRADE_FILE,"【WARN】监测点:%s - id:%s前置记录的录波事件上传的录波号段%d与从装置获取的录波文件列表匹配失败,装置没有对应的号段的录波文件,清除该记录", LD_info->name,LD_info->mp_id,LD_info->FltNum[i]);
|
//DIY_WARNLOG_CODE(full_key_m_c,LOG_CODE_COMTRADE_FILE,"【WARN】监测点:%s - id:%s前置记录的录波事件上传的录波号段%d与从装置获取的录波文件列表匹配失败,装置没有对应的号段的录波文件,清除该记录", LD_info->name,LD_info->mp_id,LD_info->FltNum[i]);
|
||||||
//lnk20250819装置没有对应的文件时清除录波号段
|
//lnk20250819装置没有对应的文件时清除录波号段
|
||||||
printf("【WARN】监测点:%s - id:%s前置记录的录波事件上传的录波号段%d与从装置获取的录波文件列表匹配失败,装置没有对应的号段的录波文件,清除该记录", LD_info->name,LD_info->mp_id,LD_info->FltNum[i]);
|
printf("监测点:%s - id:%s前置记录的录波事件上传的录波号段%d与从装置获取的录波文件列表匹配失败,装置没有对应的号段的录波文件,清除该记录", LD_info->name,LD_info->mp_id,LD_info->FltNum[i]);
|
||||||
LD_info->FltNum[i] = -1;
|
LD_info->FltNum[i] = -1;
|
||||||
return ret2;
|
return ret2;
|
||||||
}
|
}
|
||||||
@@ -2281,18 +2280,33 @@ apr_status_t call_cn_wavelist(LD_info_t *LD_info )
|
|||||||
|
|
||||||
else if(ld_has_qvvr_nonempty(LD_info))//防止手动录波日志还一直上送
|
else if(ld_has_qvvr_nonempty(LD_info))//防止手动录波日志还一直上送
|
||||||
{
|
{
|
||||||
DIY_ERRORLOG_CODE(full_key_m_c,LOG_CODE_COMTRADE_FILE,"【ERROR】监测点:%s - id:%s匹配录波文件失败,请检查装置的暂态时间是秒还是毫秒,并根据实际修改映射文件;也有可能装置触发了手动录波而不是发生暂态事件", LD_info->name,LD_info->mp_id);
|
//获取时间类型lnk20250520
|
||||||
|
XmlConfigC cfg;
|
||||||
|
if (get_xml_config_by_dev_type(ied_usr->dev_type, &cfg)) {
|
||||||
|
} else {
|
||||||
|
printf("读取失败,未找到 dev_type\n");
|
||||||
|
}
|
||||||
|
if(strcmp(cfg.UnitOfTimeUnit, "1") == 0){//持续时间上送的是秒1还是毫秒0
|
||||||
|
DIY_ERRORLOG_CODE(full_key_m_c,LOG_CODE_COMTRADE_FILE,"【ERROR】监测点:%s - id:%s 匹配录波文件失败,录波号段:%d,录波文件的开始时间:%lld,触发时间:%lld,映射配置的暂态持续时间单位是秒", LD_info->name,LD_info->mp_id,LD_info->FltNum[i],start_tm,trig_tm);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
DIY_ERRORLOG_CODE(full_key_m_c,LOG_CODE_COMTRADE_FILE,"【ERROR】监测点:%s - id:%s 匹配录波文件失败,录波号段:%d,录波文件的开始时间:%lld,触发时间:%lld,映射配置的暂态持续时间单位是毫秒", LD_info->name,LD_info->mp_id,LD_info->FltNum[i],start_tm,trig_tm);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
else{
|
||||||
|
DIY_ERRORLOG_CODE(full_key_m_c,LOG_CODE_COMTRADE_FILE,"【ERROR】监测点:%s - id:%s 下载录波文件%s和%s失败,录波号段:%d", LD_info->name,LD_info->mp_id,filenames[cfg_idx],filenames[dat_idx],LD_info->FltNum[i]);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (ied && chnl_usr){
|
if (ied && chnl_usr){
|
||||||
echo_warn2("mms_mvla_fdir Failed: IED [%d] %s \n", ied->id , chnl_usr->ip_str) ;
|
echo_warn2("mms_mvla_fdir Failed: IED [%d] %s \n", ied->id , chnl_usr->ip_str) ;
|
||||||
//mq日志
|
//mq日志
|
||||||
DIY_WARNLOG_CODE(full_key_m_c,LOG_CODE_COMTRADE_FILE,"【WARN】监测点:%s - id:%s召唤录波文件失败,放弃这个号段", LD_info->name,LD_info->mp_id);
|
DIY_WARNLOG_CODE(full_key_m_c,LOG_CODE_COMTRADE_FILE,"【WARN】监测点:%s - id:%s召唤录波文件列表失败,放弃这个号段", LD_info->name,LD_info->mp_id);
|
||||||
LD_info->FltNum[i] = -1;
|
LD_info->FltNum[i] = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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].used_status = QVVR_DATA_RECEIVED;//这个点标记为收到暂态数据
|
||||||
LD_info->qvvr[LD_info->qvvr_idx].QVVR_type = 0; //类型未定
|
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);
|
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;
|
long long utc_or_beijing;
|
||||||
if(strcmp(cfg.UnitOfTimeUnit, "1") == 0){//持续时间上送的是秒1还是毫秒0
|
if(strcmp(cfg.UnitOfTimeUnit, "1") == 0){//持续时间上送的是秒1还是毫秒0
|
||||||
s_or_ms = 0.001;
|
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{
|
else{
|
||||||
s_or_ms = 1.0;
|
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还是北京
|
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++) { //暂降/暂升/中断等进入处理,遍历所有波动位置
|
for (i=0;i<QVVR_NUM;i++) { //暂降/暂升/中断等进入处理,遍历所有波动位置
|
||||||
if (i==LD_info->qvvr_idx) //跳过监测点当前波动位置,第一次记录波形后,第一次的第三个事件会让0号点为QVVR_DATA_RECEIVED,
|
if (i==LD_info->qvvr_idx) //跳过监测点当前波动位置,不会和自己做匹配。第一次记录波形后,第一次的第一个事件会让0号点为QVVR_DATA_RECEIVED,
|
||||||
//第二次记录波形,第二次的第一个事件qvvr_idx=1,1号中为QVVR_DATA_RECEIVED,QVVR_start=1,跳过记录,
|
//第二次qvvr_idx=1,1号中为QVVR_DATA_RECEIVED,QVVR_start=0,会和0点做匹配
|
||||||
//第二次的第二个事件qvvr_idx=1,QVVR_start=0,记录到0中,0为QVVR_DATA_PAIRED
|
|
||||||
//第二次的第三个事件qvvr_idx=2,2号中为QVVR_DATA_RECEIVED,QVVR_start=1,跳过记录
|
|
||||||
//第二次录波匹配文件时应该匹配到1号的qvvrtime,但是1没有QVVR_DATA_PAIRED所以对不上,需要修改逻辑
|
|
||||||
{
|
{
|
||||||
printf("skip this index\n");
|
printf("skip this index\n");
|
||||||
continue;
|
continue;
|
||||||
@@ -638,7 +635,11 @@ void processQVVR_end(LD_info_t* LD_info)
|
|||||||
|
|
||||||
//匹配后再发qvvr,起始时间要填暂态触发的时间,就是第一次事件上送时只有时间没有值的那个时间
|
//匹配后再发qvvr,起始时间要填暂态触发的时间,就是第一次事件上送时只有时间没有值的那个时间
|
||||||
//mq日志
|
//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, //这个参数没有使用
|
ret = transfer_json_qvvr_data(g_node_id, //这个参数没有使用
|
||||||
LD_info->line_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; //全都没有匹配上直接释放这个点,下次事件可以直接在这个点上使用
|
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",
|
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);
|
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);
|
printf("\n~~~~~~~~~~~~~~~~~ processQVVR_end: line_id=%d \n",LD_info->line_id);
|
||||||
|
|||||||
Reference in New Issue
Block a user