山西太原电源的通信程序【在用】
V1.007  2023-06-12
1.新增电源告警根据通信电源规范新增上上限告警以及下下限告警[平台显示时标识的紧急告警即为上上限或下下限告警]
6个文件已修改
62 ■■■■ 已修改文件
IEC61850_ForPowerSupply/src/com/main/main_PowerDev_IEC61850.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
IEC61850_ForPowerSupply/src/com/power/alarm/PwrDeviceAarmParam.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IEC61850_ForPowerSupply/src/com/power/alarm/PwrDeviceAlarm_Data.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IEC61850_ForPowerSupply/src/com/power/alarm/PwrDeviceAlarm_Thread.java 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IEC61850_ForPowerSupply/src/com/power/mysql/Sql_Mysql.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IEC61850_ForPowerSupply/src/com/version_inf/version_inf.txt 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IEC61850_ForPowerSupply/src/com/main/main_PowerDev_IEC61850.java
@@ -17,7 +17,7 @@
public class main_PowerDev_IEC61850 {
    
    public final static boolean app_debug = false;
    public final static double m_VersionNum = 1.006;
    public final static double m_VersionNum = 1.007;
    public final static String m_Version = "Welcome To Use Monitor_PowerDev_IEC61850 V" 
                                            + m_VersionNum + " RC_20201216";
    
IEC61850_ForPowerSupply/src/com/power/alarm/PwrDeviceAarmParam.java
@@ -13,6 +13,9 @@
    public int alarm_type;                //'0-上下限有效  1-上限有效  2-下限有效',
    public int alarm_en_node;            //告警来源是点位时告警使能[0:不启用;1:启用]
    
    public float alarm_limitH_upper;    //告警上上限阈值
    public float alarm_limitL_lower;    //告警下下限阈值
    public PwrDeviceAarmParam() {
        
    }
IEC61850_ForPowerSupply/src/com/power/alarm/PwrDeviceAlarm_Data.java
@@ -168,9 +168,13 @@
    public final static int Alm_Trigger_Node        = 0;                            //来源于点表
    public final static int Alm_Trigger_Param       = 1;                            //来源于告警参数
    
    public final static int Alm_Severity_Importance = 0;                            //重要告警
    public final static int Alm_Severity_Exigency   = 1;                            //紧急告警
    public final static int    Alm_Effect_Total        = 0;                            //上下限有效
    public final static int    Alm_Effect_High         = 1;                            //上限有效
    public final static int    Alm_Effect_Lower        = 2;                            //下限有效
    
    
    public final static int COMM_ERR_TIME_INTERVAL = 180; //S
@@ -188,6 +192,7 @@
     */
    public int alm_trigger = Alm_Trigger_Node;                    //告警来源[0-来源于点表;1-来源于电源告警参数]
    
    public int alm_severity = Alm_Severity_Importance;            //告警重要等级[0:重要;1:紧急]
    
    public int getPwrDev_id() {
        return pwrdev_id;
@@ -225,4 +230,13 @@
        this.alm_type = alm_type;
    }
    public int getAlm_severity() {
        return alm_severity;
    }
    public void setAlm_severity(int alm_severity) {
        this.alm_severity = alm_severity;
    }
}
IEC61850_ForPowerSupply/src/com/power/alarm/PwrDeviceAlarm_Thread.java
@@ -11,7 +11,6 @@
import com.base.AppConfig;
import com.base.Com;
import com.main.main_PowerDev_IEC61850;
import com.power.data.PowerData_RT;
import com.power.data.PowerData_RT_Array;
import com.power.mysql.MysqlConnPool;
@@ -40,7 +39,7 @@
        
    }
    
    private void InsertPwrDevAlarmToTable(long record_id_t, int dev_id, int alm_type_id, int alm_level,float alm_value, Sql_Mysql sql,int alm_trigger) throws SQLException {
    private void InsertPwrDevAlarmToTable(long record_id_t, int dev_id, int alm_type_id, int alm_level,float alm_value, Sql_Mysql sql,int alm_trigger,int alm_severity) throws SQLException {
            
        //Sql_Mysql sql = new Sql_Mysql(m_Conn_Pool.getConn());
        
@@ -59,6 +58,7 @@
                        + "alm_is_confirmed, "
                        + "alm_confirmed_time,"
                        + "alm_trigger, "
                        + "alm_severity, "
                        + "alm_cleared_type) "
                
                        + " VALUES "
@@ -73,6 +73,7 @@
                        + false + ", "
                        + "'" + Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms) + "', " 
                        + "'" + alm_trigger + "', " 
                        + "" + alm_severity + ", "
                        + PwrDeviceAlarm_Data.ALM_CLEARED_TYPE_NULL + " "
                        + ")";
                
@@ -103,7 +104,7 @@
                    + " WHERE PowerDeviceId=" + dev_id + " AND alm_type= "+ alm_type_id;
            
            //将当前设备实时告警表中的历史告警记录插入到设备历史告警表中
            String sql_str2 = " INSERT INTO " + Sql_Mysql.TB_PWRDEV_ALARM_HISTORY+"(record_id,PowerDeviceId,alm_type,alm_level,alm_start_time,alm_end_time,alm_value,alm_is_confirmed,alm_confirmed_time,alm_cleared_type,alm_trigger)  (SELECT record_id,PowerDeviceId,alm_type,alm_level,alm_start_time,alm_end_time,alm_value,alm_is_confirmed,alm_confirmed_time,alm_cleared_type,alm_trigger from "+Sql_Mysql.TB_PWRDEV_ALARM+" WHERE PowerDeviceId="+dev_id+" AND alm_cleared_type!="+PwrDeviceAlarm_Data.ALM_CLEARED_TYPE_NULL+ " AND alm_type= "+ alm_type_id+")";
            String sql_str2 = " INSERT INTO " + Sql_Mysql.TB_PWRDEV_ALARM_HISTORY+"(record_id,PowerDeviceId,alm_type,alm_level,alm_start_time,alm_end_time,alm_value,alm_is_confirmed,alm_confirmed_time,alm_cleared_type,alm_trigger,alm_severity)  (SELECT record_id,PowerDeviceId,alm_type,alm_level,alm_start_time,alm_end_time,alm_value,alm_is_confirmed,alm_confirmed_time,alm_cleared_type,alm_trigger,alm_severity from "+Sql_Mysql.TB_PWRDEV_ALARM+" WHERE PowerDeviceId="+dev_id+" AND alm_cleared_type!="+PwrDeviceAlarm_Data.ALM_CLEARED_TYPE_NULL+ " AND alm_type= "+ alm_type_id+")";
            
            //将实时告警表中的非实时告警删除
            String sql_str3 = " DELETE FROM " + Sql_Mysql.TB_PWRDEV_ALARM +" WHERE PowerDeviceId = " + dev_id+" AND alm_cleared_type != "+ PwrDeviceAlarm_Data.ALM_CLEARED_TYPE_NULL+ " AND alm_type= "+ alm_type_id;
@@ -137,7 +138,7 @@
        
        //try {
            sql.sqlMysqlUseDB(Sql_Mysql.DB_PWRDEV_ALARM);
            String sql_str = " SELECT PowerDeviceId,record_id,alm_level,alm_type,alm_cleared_type,alm_start_time "
            String sql_str = " SELECT PowerDeviceId,record_id,alm_level,alm_type,alm_cleared_type,alm_start_time,alm_severity "
                        + " FROM " + Sql_Mysql.TB_PWRDEV_ALARM
                        + " WHERE PowerDeviceId= "+ dev_id +" AND alm_type = "+alm_type_id
                        + " ORDER BY alm_start_time DESC ";
@@ -151,6 +152,9 @@
                adata.setAlm_level(rs.getInt("alm_level"));
                adata.setAlm_cleared_type(rs.getInt("alm_cleared_type"));
                adata.setAlm_type(rs.getInt("alm_type"));
                adata.setAlm_type(rs.getInt("alm_type"));
                adata.setAlm_severity(rs.getInt("alm_severity"));
            }
            
        //} catch (SQLException e) {
@@ -382,8 +386,8 @@
            
            /************************************************************/        
        }    
        int alm_trigger = PwrDeviceAlarm_Data.Alm_Trigger_Node;        //默认告警来源
        int alm_severity = PwrDeviceAlarm_Data.Alm_Severity_Importance;        //默认为重要告警
        int alm_trigger = PwrDeviceAlarm_Data.Alm_Trigger_Node;                //默认告警来源
        if(null != almParam) {
            //default_almlevel = almParam.alm_level;        //当前告警等级
            if(PwrDeviceAlarm_Data.Alm_Trigger_Param == almParam.alarm_source) {
@@ -392,8 +396,14 @@
                    //上下限有效
                    if(almParam.alarm_limitH_EN && alm_val > almParam.alarm_limitH) {
                        alm_st = true;
                        if(alm_val > almParam.alarm_limitH_upper) {
                            alm_severity = PwrDeviceAlarm_Data.Alm_Severity_Exigency;
                        }
                    }else if(almParam.alarm_limitL_EN && alm_val < almParam.alarm_limitL) {
                        alm_st = true;
                        if(alm_val < almParam.alarm_limitL_lower) {
                            alm_severity = PwrDeviceAlarm_Data.Alm_Severity_Exigency;
                        }
                    }else {
                        alm_st = false;
                    }
@@ -401,6 +411,9 @@
                    //上限有效
                    if(almParam.alarm_limitH_EN && alm_val > almParam.alarm_limitH) {
                        alm_st = true;
                        if(alm_val > almParam.alarm_limitH_upper) {
                            alm_severity = PwrDeviceAlarm_Data.Alm_Severity_Exigency;
                        }
                    } else {
                        alm_st = false;
                    }
@@ -408,6 +421,9 @@
                    //下限有效
                    if(almParam.alarm_limitL_EN && alm_val < almParam.alarm_limitL) {
                        alm_st = true;
                        if(alm_val < almParam.alarm_limitL_lower) {
                            alm_severity = PwrDeviceAlarm_Data.Alm_Severity_Exigency;
                        }
                    }else {
                        alm_st = false;
                    }
@@ -431,12 +447,15 @@
            if(0 == RecId) {
                RecId = UUID.randomUUID().getLeastSignificantBits();
            }
            InsertPwrDevAlarmToTable(RecId,dev_id,alm_type_id,default_almlevel,alm_val,sql,alm_trigger);
            InsertPwrDevAlarmToTable(RecId,dev_id,alm_type_id,default_almlevel,alm_val,sql,alm_trigger,alm_severity);
            
        }else if((adata != null) && (alm_st == false)) {
            ChangeRT_AlarmToHistoryAlarm(dev_id,alm_type_id,sql);
        }else if((adata!=null) && (adata.alm_level != default_almlevel)) {
            updatePwrDevAlarmLevelToTable( m_Conn_Pool,adata ,default_almlevel);
        }else if((adata != null) && (alm_severity != adata.alm_severity) && (alm_st)) {
            //当前告警存在,但是告警重要等级不一致时,下次告警检测再触发
            ChangeRT_AlarmToHistoryAlarm(dev_id,alm_type_id,sql);
        }
    }
    
@@ -727,6 +746,11 @@
                param.alarm_type = res.getInt("alarm_type");                //'0-上下限有效  1-上限有效  2-下限有效',
                param.alarm_en_node = res.getInt("alarm_en_node");            //告警来源是点位时告警使能[0:不启用;1:启用]
                
                param.alarm_limitH_upper = res.getFloat("alarm_limitH_upper");            //'告警上上限阈值',
                param.alarm_limitL_lower = res.getFloat("alarm_limitL_lower");            //'告警下下限阈值',
                rtpd.almParams.put(param.alm_id, param);
            }
        } catch (SQLException e) {
IEC61850_ForPowerSupply/src/com/power/mysql/Sql_Mysql.java
@@ -471,6 +471,8 @@
                        + "`alm_confirmed_time` DATETIME NOT NULL DEFAULT '1982-01-01 00:00:00', "
                        + "`alm_cleared_type` INT NOT NULL DEFAULT 0, "
                        + "`usr_Id` INT NOT NULL DEFAULT 0, "
                        + "`alm_trigger` int(11) NOT NULL DEFAULT '0' COMMENT '告警来源[0-来源于点表;1-来源于电源告警参数]' "
                        + "`alm_severity` int(11) NOT NULL DEFAULT '0' COMMENT '告警重要等级[0:重要;1:紧急]' "
                        + "INDEX index_record_id (`record_id`), "
                        + "INDEX index_pwrdev_id (`PowerDeviceId`), "
                        + "INDEX index_alm_type (`alm_type`), "
IEC61850_ForPowerSupply/src/com/version_inf/version_inf.txt
@@ -1,5 +1,8 @@
山西太原   电源通信程序
V1.007  2023-06-12
    1.新增电源告警根据通信电源规范新增上上限告警以及下下限告警[平台显示时标识的紧急告警即为上上限或下下限告警]
V1.006  2023-05-22
    1.新增所有电源告警参数以及使能配置功能
    2.web_site.tb_thread_util 表中 可让当前线程自动加载电源告警参数