@@ -184,7 +184,7 @@ void closeChannel(chnl_usr_t *chnl_usr)
ret = mms_disconnectFromServer ( chnl_usr - > net_info , & chnl_usr - > m_reqCtrl ) ;
echo_warn ( " ---------end disconnectFromServer! \n " ) ;
DIY_WARNLOG ( full_key_t_c , " 【WARN】前置与终端%s - ip端口%s:%d 断开连接 " , ( ( ied_usr_t * ) ( chnl_usr - > chnl - > ied - > usr_ext ) ) - > terminal_id , chnl_usr - > ip_str , chnl_usr - > chnl - > port ) ;
DIY_WARNLOG_CODE ( full_key_t_c , LOG_CODE_COMM , " 【WARN】前置与终端%s - ip端口%s:%d 断开连接 " , ( ( ied_usr_t * ) ( chnl_usr - > chnl - > ied - > usr_ext ) ) - > terminal_id , chnl_usr - > ip_str , chnl_usr - > chnl - > port ) ;
if ( ret ! = SD_SUCCESS ) {
echo_warn ( " ---------disconnectFromServer success! \n " ) ;
@@ -368,14 +368,14 @@ void ChannelCheckIECReports(chnl_usr_t *chnl_usr)
LD_info - > registcount + + ;
if ( LD_info - > registcount < = 5 ) {
DIY_WARNLOG ( full_key_m_c , " 【WARN】监测点:%s - id:%s注册报告失败,报告名:%s " ,
DIY_WARNLOG_CODE ( full_key_m_c , LOG_CODE_REPORT , " 【WARN】监测点:%s - id:%s注册报告失败,报告名:%s " ,
LD_info - > name , LD_info - > mp_id , rpt_inst_name ) ;
}
// 到5次就不再打印, 并标记
if ( LD_info - > registcount > 5 ) {
LD_info - > has_logged_regist = true ;
DIY_WARNLOG ( full_key_m_c , " 【WARN】监测点:%s - id:%s注册报告失败日志已达本次注册上限, 不再输出, 请检查装置icd和映射文件是否匹配或者装置存在过多连接 " ,
DIY_WARNLOG_CODE ( full_key_m_c , LOG_CODE_REPORT , " 【WARN】监测点:%s - id:%s注册报告失败日志已达本次注册上限, 不再输出, 请检查装置icd和映射文件是否匹配或者装置存在过多连接 " ,
LD_info - > name , LD_info - > mp_id ) ;
}
}
@@ -398,7 +398,7 @@ void ChannelCheckIECReports(chnl_usr_t *chnl_usr)
//mq日志
LD_info - > has_logged_regist = FALSE ;
LD_info - > registcount = 0 ;
DIY_WARNLOG ( full_key_m_c , " 【WARN】监测点:%s - id:%s注册报告成功,报告名:%s " , LD_info - > name , LD_info - > mp_id , rpt_inst_name ) ;
DIY_WARNLOG_CODE ( full_key_m_c , LOG_CODE_REPORT , " 【WARN】监测点:%s - id:%s注册报告成功,报告名:%s " , LD_info - > name , LD_info - > mp_id , rpt_inst_name ) ;
// add here to GI not the same time
GIoffset = 0.5 * g_pt61850app - > giTime ;
@@ -426,7 +426,7 @@ void ChannelCheckIECReports(chnl_usr_t *chnl_usr)
APR_EGENERAL , LD_info - > ied - > id , LD_info - > cpuno , LD_info - > LD_name , rpt_inst_name , chnl_usr - > ip_str , chnl_usr - > chnl_id ) ;
//mq日志
DIY_WARNLOG ( full_key_m_c , " 【WARN】监测点:%s - id:%s注销报告失败,报告名:%s " , LD_info - > name , LD_info - > mp_id , rpt_inst_name ) ;
DIY_WARNLOG_CODE ( full_key_m_c , LOG_CODE_REPORT , " 【WARN】监测点:%s - id:%s注销报告失败,报告名:%s " , LD_info - > name , LD_info - > mp_id , rpt_inst_name ) ;
}
else {
@@ -515,11 +515,11 @@ void ChannelCheckIECLogs(chnl_usr_t *chnl_usr)
if ( strcmp ( cfg1 . ValueOfTimeUnit , " utc " ) = = 0 ) { //装置时间是utc还是北京
utc_or_beijing = 28800 ; //秒
DIY_WARNLOG ( full_key_m_c , " 【WARN】监测点:%s - id:%s开始补招数据,下发补招时间为utc时间,监测点对应装置型号:%s " , LD_info - > name , LD_info - > mp_id , ied_usr - > dev_type ) ;
DIY_WARNLOG_CODE ( full_key_m_c , LOG_CODE_RECALL , " 【WARN】监测点:%s - id:%s开始补招数据,下发补招时间为utc时间,监测点对应装置型号:%s " , LD_info - > name , LD_info - > mp_id , ied_usr - > dev_type ) ;
}
else {
utc_or_beijing = 0 ;
DIY_WARNLOG ( full_key_m_c , " 【WARN】监测点:%s - id:%s开始补招数据,下发补招时间为beijing时间,监测点对应装置型号:%s " , LD_info - > name , LD_info - > mp_id , ied_usr - > dev_type ) ;
DIY_WARNLOG_CODE ( full_key_m_c , LOG_CODE_RECALL , " 【WARN】监测点:%s - id:%s开始补招数据,下发补招时间为beijing时间,监测点对应装置型号:%s " , LD_info - > name , LD_info - > mp_id , ied_usr - > dev_type ) ;
}
//////////////////////////////////////////////////////////////
@@ -559,7 +559,7 @@ void ChannelCheckIECLogs(chnl_usr_t *chnl_usr)
LD_info - > ied - > id , LD_info - > cpuno , LD_info - > LD_name , loginfo - > logName , chnl_usr - > ip_str , chnl_usr - > chnl_id ) ;
//mq日志
DIY_ERRORLOG ( full_key_m_c , " 【ERROR】监测点:%s - id:%s补招数据失败 - 失败时间点:%lld 至 %lld " , LD_info - > name , LD_info - > mp_id , loginfo - > start_time , loginfo - > end_time ) ;
DIY_ERRORLOG_CODE ( full_key_m_c , LOG_CODE_RECALL , " 【ERROR】监测点:%s - id:%s补招数据失败 - 失败时间点:%lld 至 %lld " , LD_info - > name , LD_info - > mp_id , loginfo - > start_time , loginfo - > end_time ) ;
failed_count + + ;
}
@@ -582,7 +582,7 @@ void ChannelCheckIECLogs(chnl_usr_t *chnl_usr)
//不管是否成功, 这个补招文件必须删除, 可能出现一直失败, 循环读取文件和循环补招导致程序崩溃202050724lnk
//if (failed_count==0) {//成功
Delete_recall_Xml ( LD_info - > mp_id ) ;
DIY_WARNLOG ( full_key_m_c , " 【WARN】监测点:%s - id:%s结束补招数据 " , LD_info - > name , LD_info - > mp_id ) ;
DIY_WARNLOG_CODE ( full_key_m_c , LOG_CODE_RECALL , " 【WARN】监测点:%s - id:%s结束补招数据 " , LD_info - > name , LD_info - > mp_id ) ;
//}
}
@@ -1387,13 +1387,13 @@ void check_disk_quota()
//printf("Current user disk free size: %dMB ,total size: %dMB \n",freeSizeMB,totalSizeMB);
if ( freeSizeMB < g_min_free_size ) {
echo_warn2 ( " Current user disk free size: %dMB < %dMB, please check! \n " , freeSizeMB , g_min_free_size ) ;
DIY_WARNLOG ( " process " , " 【WARN】前置磁盘检测: 当前磁盘的可用空间为%dMB,小于最小可用空间%dMB,请检查磁盘 " , freeSizeMB , g_min_free_size ) ;
DIY_WARNLOG_CODE ( " process " , LOG_CODE_SPACE_ALARM , " 【WARN】前置磁盘检测: 当前磁盘的可用空间为%dMB,小于最小可用空间%dMB,请检查磁盘 " , freeSizeMB , g_min_free_size ) ;
}
if ( ( freeSizeMB / ( totalSizeMB / 100 + 1 ) ) < 10 ) {
echo_warn2 ( " Current user disk free size percent < 10%%, free size: %dMB ,total size: %dMB ,please check! \n " ,
freeSizeMB , totalSizeMB ) ;
DIY_WARNLOG ( " process " , " 【WARN】前置磁盘检测: 当前磁盘的可用空间的百分比小于10%%,可用空间为%dMB,总空间为%dMB,请检查磁盘 " , freeSizeMB , totalSizeMB ) ;
DIY_WARNLOG_CODE ( " process " , LOG_CODE_SPACE_ALARM , " 【WARN】前置磁盘检测: 当前磁盘的可用空间的百分比小于10%%,可用空间为%dMB,总空间为%dMB,请检查磁盘 " , freeSizeMB , totalSizeMB ) ;
}
}
@@ -1544,7 +1544,7 @@ void CheckNextNotConnectedChannel()
//mq日志
( ( ied_usr_t * ) ( chnl_usr - > chnl - > ied - > usr_ext ) ) - > lastconnectstat = true ;
( ( ied_usr_t * ) ( chnl_usr - > chnl - > ied - > usr_ext ) ) - > has_logged_disconnect = false ;
DIY_WARNLOG ( full_key_t_c , " 【WARN】终端%s - ip端口:%s:%d连接成功 " , ( ( ied_usr_t * ) ( chnl_usr - > chnl - > ied - > usr_ext ) ) - > terminal_id , chnl_usr - > ip_str , chnl_usr - > chnl - > port ) ;
DIY_WARNLOG_CODE ( full_key_t_c , LOG_CODE_COMM , " 【WARN】终端%s - ip端口:%s:%d连接成功 " , ( ( ied_usr_t * ) ( chnl_usr - > chnl - > ied - > usr_ext ) ) - > terminal_id , chnl_usr - > ip_str , chnl_usr - > chnl - > port ) ;
mvl_free_req_ctrl ( chnl_usr - > m_reqCtrl ) ;
chnl_usr - > m_reqCtrl = NULL ;
@@ -1591,11 +1591,11 @@ void CheckNextNotConnectedChannel()
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 ) ) - > has_logged_disconnect = true ;
DIY_WARNLOG ( full_key_t_c , " 【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 - 识别码/秘钥:%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 ) ;
}
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 ;
DIY_WARNLOG ( full_key_t_c , " 【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 - 识别码/秘钥:%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 ) ;
}
mvl_free_req_ctrl ( chnl_usr - > m_reqCtrl ) ;
@@ -1618,11 +1618,11 @@ void CheckNextNotConnectedChannel()
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 ) ) - > has_logged_disconnect = true ;
DIY_WARNLOG ( full_key_t_c , " 【WARN】终端%s - ip端口:%s:%d,从开始连接到目前已经300秒,未能获取连接响应,断开连接! " , ( ( ied_usr_t * ) ( chnl_usr - > chnl - > ied - > usr_ext ) ) - > terminal_id , chnl_usr - > ip_str , chnl_usr - > chnl - > port ) ;
DIY_WARNLOG_CODE ( full_key_t_c , LOG_CODE_COMM , " 【WARN】终端%s - ip端口:%s:%d,从开始连接到目前已经300秒,未能获取连接响应,断开连接! " , ( ( ied_usr_t * ) ( chnl_usr - > chnl - > ied - > usr_ext ) ) - > terminal_id , chnl_usr - > ip_str , chnl_usr - > chnl - > port ) ;
}
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 ;
DIY_WARNLOG ( full_key_t_c , " 【WARN】终端%s - ip端口:%s:%d,从开始连接到目前已经300秒,未能获取连接响应,断开连接! " , ( ( ied_usr_t * ) ( chnl_usr - > chnl - > ied - > usr_ext ) ) - > terminal_id , chnl_usr - > ip_str , chnl_usr - > chnl - > port ) ;
DIY_WARNLOG_CODE ( full_key_t_c , LOG_CODE_COMM , " 【WARN】终端%s - ip端口:%s:%d,从开始连接到目前已经300秒,未能获取连接响应,断开连接! " , ( ( ied_usr_t * ) ( chnl_usr - > chnl - > ied - > usr_ext ) ) - > terminal_id , chnl_usr - > ip_str , chnl_usr - > chnl - > port ) ;
}
@@ -1706,7 +1706,7 @@ void CheckNextNotConnectedChannel()
connectlog_pgsql ( ied_usr - > terminal_id , convertMsToDateTimeString ( t_now ) , 0 ) ;
//mq日志
DIY_WARNLOG ( full_key_t_c , " 【WARN】终端%s - ip端口:%s:%d 断连完成,关闭连接通道 " , ( ( ied_usr_t * ) ( chnl_usr - > chnl - > ied - > usr_ext ) ) - > terminal_id , chnl_usr - > ip_str , chnl_usr - > chnl - > port ) ;
DIY_WARNLOG_CODE ( full_key_t_c , LOG_CODE_COMM , " 【WARN】终端%s - ip端口:%s:%d 断连完成,关闭连接通道 " , ( ( ied_usr_t * ) ( chnl_usr - > chnl - > ied - > usr_ext ) ) - > terminal_id , chnl_usr - > ip_str , chnl_usr - > chnl - > port ) ;
}
else
@@ -1733,7 +1733,7 @@ void CheckNextNotConnectedChannel()
connectlog_pgsql ( ied_usr - > terminal_id , convertMsToDateTimeString ( t_now ) , 0 ) ;
//mq日志
DIY_WARNLOG ( full_key_t_c , " 【WARN】终端%s - ip端口:%s:%d 断连未完成,但是已经超时180秒,关闭连接通道 " , ( ( ied_usr_t * ) ( chnl_usr - > chnl - > ied - > usr_ext ) ) - > terminal_id , chnl_usr - > ip_str , chnl_usr - > chnl - > port ) ;
DIY_WARNLOG_CODE ( full_key_t_c , LOG_CODE_COMM , " 【WARN】终端%s - ip端口:%s:%d 断连未完成,但是已经超时180秒,关闭连接通道 " , ( ( ied_usr_t * ) ( chnl_usr - > chnl - > ied - > usr_ext ) ) - > terminal_id , chnl_usr - > ip_str , chnl_usr - > chnl - > port ) ;
}
}
@@ -1848,6 +1848,30 @@ apr_status_t prepare_call_cn_wavelist(LD_info_t *LD_info, int FltNum)
return APR_SUCCESS ;
}
//判断暂态记录非空, lnk20250818
int ld_has_qvvr_nonempty ( const LD_info_t * info )
{
if ( ! info ) return 0 ;
/* 规则1: 索引计数 > 0 直接认为非空 */
if ( info - > qvvr_idx > 0 ) return 1 ;
/* 规则2: 扫描数组, 任意一项出现被使用/有时间/有名称/有数值 即认为非空 */
int i ;
for ( i = 0 ; i < QVVR_NUM ; + + i ) {
const QVVR_t * it = & info - > qvvr [ i ] ;
/* 只要有任一“有效迹象”就视为非空 */
if ( it - > used_status ! = 0 )
{
return 1 ;
}
}
/* 都没有则为空 */
return 0 ;
}
apr_status_t call_cn_wavelist ( LD_info_t * LD_info )
{
int ret ;
@@ -1909,7 +1933,9 @@ apr_status_t call_cn_wavelist(LD_info_t *LD_info )
//WW 2023-11-01 end
if ( ret2 ! = APR_SUCCESS ) {
//mq日志
DIY_WARNLOG ( full_key_m_c , " 【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前置记录的录波事件上传的录波号段%d与从装置获取的录波文件列表匹配失败,装置没有对应的号段的录波文件,前置清除这个录波号段 " , LD_info - > name , LD_info - > mp_id , LD_info - > FltNum [ i ] );
//lnk20250819装置没有对应的文件时清除录波号段
LD_info - > FltNum [ i ] = - 1 ;
return ret2 ;
}
@@ -2142,9 +2168,9 @@ apr_status_t call_cn_wavelist(LD_info_t *LD_info )
}
else
else if ( ld_has_qvvr_nonempty ( LD_info ) ) //防止手动录波日志还一直上送
{
DIY_ERRORLOG ( full_key_m_c , " 【NORMAL 】监测点:%s - id:%s匹配录波文件失败, 请检查装置的暂态时间是秒还是毫秒, 并修改映射文件 " , LD_info - > name , LD_info - > mp_id ) ;
DIY_ERRORLOG_CODE ( full_key_m_c , LOG_CODE_COMTRADE_FILE , " 【ERROR 】监测点:%s - id:%s匹配录波文件失败, 请检查装置的暂态时间是秒还是毫秒, 并根据实际 修改映射文件;也有可能装置触发了手动录波而不是发生暂态事件 " , LD_info - > name , LD_info - > mp_id ) ;
}
}
@@ -2155,7 +2181,8 @@ apr_status_t call_cn_wavelist(LD_info_t *LD_info )
if ( ied & & chnl_usr ) {
echo_warn2 ( " mms_mvla_fdir Failed: IED [%d] %s \n " , ied - > id , chnl_usr - > ip_str ) ;
//mq日志
DIY_WARNLOG ( full_key_m_c , " 【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 ;
}
return APR_EAGAIN ;