whyclj
2020-12-11 960d564458fe15f28179aeed833913a85fab1c74
电池组告警监测修复
9个文件已修改
148 ■■■■ 已修改文件
BattMonitor_FBS9600SMore/bin/com/battmonitor/data/BattData_RT_SQL.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9600SMore/config.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9600SMore/src/com/battmonitor/data/BattAlarmData.java 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9600SMore/src/com/battmonitor/data/BattAlarmParam.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9600SMore/src/com/battmonitor/data/BattData_RT.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9600SMore/src/com/battmonitor/data/BattData_RT_SQL.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9600SMore/src/com/battmonitor/data/MonVolData.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9600SMore/src/com/dev_fbs9600s/data/FBS9600S_BattAlarm_Thread.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9600SMore/src/com/dev_fbs9600s/data/FBS9600S_BattAlarm_Thread_SQL.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9600SMore/bin/com/battmonitor/data/BattData_RT_SQL.class
Binary files differ
BattMonitor_FBS9600SMore/config.xml
@@ -31,7 +31,7 @@
  <batt_alarm_fn_config>
    <batt_alarm_fn_en>true</batt_alarm_fn_en>
    <batt_alarm_fn_start_delay>10</batt_alarm_fn_start_delay>
    <batt_alarm_cleared_delay>600</batt_alarm_cleared_delay>
    <batt_alarm_cleared_delay>10</batt_alarm_cleared_delay>
    <batt_alarm_data_daycount_max>400</batt_alarm_data_daycount_max>
  </batt_alarm_fn_config>
  <batt_res_store_fn_config>
BattMonitor_FBS9600SMore/src/com/battmonitor/data/BattAlarmData.java
@@ -93,6 +93,23 @@
        ALM_level_low = alm_level_low_t;
    }
    
    public BattAlarmData(int dt_count_max,
            int bg_id_t, int mon_num_t, int alm_id_t,int alm_signal_id_t ,
            int alm_signal_id_high_t, int alm_signal_id_low_t,
            int alm_level_high_t, int alm_level_low_t)
    {
    ALM_TAG_DELAY_COUNT_MAX = dt_count_max;
    battgroup_id = bg_id_t;
    mon_num = mon_num_t;
    alm_id = alm_id_t;
    alm_signal_id = alm_signal_id_t;
    ALM_signal_id_high = alm_signal_id_high_t;
    ALM_signal_id_low = alm_signal_id_low_t;
    ALM_level_high = alm_level_high_t;
    ALM_level_low = alm_level_low_t;
    }
    public BattAlarmData() {
        
    }
@@ -131,8 +148,11 @@
    {
        if(true == param.alm_High_EN)
        {
            //System.out.println("alm_High:"+param.alm_High+"\t alm_Low:"+param.alm_Low);
            if(data_value > param.alm_High)
            {
                //System.out.println("mon_num:"+mon_num+"\t alm_signal_id:"+alm_signal_id);
                if(ALM_signal_id_high != alm_signal_id && ALM_signal_id_low != alm_signal_id)
                {
                    
@@ -151,13 +171,15 @@
                    AL_alarmdata.add(cloneBattAlarmData());
                }
            } else {
                //System.out.println("mon_num:"+mon_num+"\t alm_signal_id:"+alm_signal_id);
                if(ALM_signal_id_high == alm_signal_id)
                {
                    //System.out.println("isOld:"+ALM_signal_id_high+"\t"+alarm_high_delay_count);
                    
                    if(alarm_high_delay_count < (ALM_TAG_DELAY_COUNT_MAX+2))
                    if(alarm_high_delay_count < (ALM_TAG_DELAY_COUNT_MAX+2)) {
                        alarm_high_delay_count += 1;
                        //System.out.println(mon_num+"高告警取消"+alarm_low_delay_count+"---"+ALM_TAG_DELAY_COUNT_MAX);
                    }
                    if(alarm_high_delay_count >= ALM_TAG_DELAY_COUNT_MAX)
                    {
                        alm_cleared_type = ALM_CLEARED_TYPE_AUTO;
@@ -194,9 +216,10 @@
            } else {
                if(ALM_signal_id_low == alm_signal_id)
                {
                    if(alarm_low_delay_count < (ALM_TAG_DELAY_COUNT_MAX+2))
                    if(alarm_low_delay_count < (ALM_TAG_DELAY_COUNT_MAX+2)) {
                        alarm_low_delay_count += 1;
                        //System.out.println(mon_num+"低告警取消"+alarm_low_delay_count+"---"+ALM_TAG_DELAY_COUNT_MAX);
                    }
                    if(alarm_low_delay_count >= ALM_TAG_DELAY_COUNT_MAX)
                    {
                        alm_cleared_type = ALM_CLEARED_TYPE_AUTO;
BattMonitor_FBS9600SMore/src/com/battmonitor/data/BattAlarmParam.java
@@ -77,5 +77,20 @@
            alm_High_EN = high_en;
            alm_Low_EN = low_en;
        }
        @Override
        public String toString() {
            return "AlarmParamCell [alm_Id=" + alm_Id + ", alm_Name=" + alm_Name + ", alm_High=" + alm_High
                    + ", alm_Low=" + alm_Low + ", alm_High_Level=" + alm_High_Level + ", alm_Low_Level=" + alm_Low_Level
                    + ", alm_High_EN=" + alm_High_EN + ", alm_Low_EN=" + alm_Low_EN + "]";
        }
    }
    @Override
    public String toString() {
        return "BattAlarmParam [alm_MonVol=" + alm_MonVol + ", alm_MonTmp=" + alm_MonTmp + ", alm_MonRes=" + alm_MonRes
                + ", update_en=" + update_en + "]";
    }
}
BattMonitor_FBS9600SMore/src/com/battmonitor/data/BattData_RT.java
@@ -94,7 +94,7 @@
        
        initTestDataSaveRunable();
    }
    public void initAlarmParam(int dt_count_max, BattAlarmParam alm_param)
    public void initAlarmParam(int dt_count_max, BattAlarmParam alm_param,boolean reload)
    {
        /***********************************************************************************/
//        float std_group_vol = MonStdVol * MonCount;
@@ -119,9 +119,17 @@
//        alm_param.setAlarmParamCellValue(std_connres, m_AlarmParam.alm_ConnRes, alm_param.alm_ConnRes);
        
        //TestData.initAlarmData(dt_count_max, BattGroupId, m_AlarmParam);
        for(int n=0; n<al_MonVol.size(); n++)
        {
            al_MonVol.get(n).initAlarmData(dt_count_max, BattGroupId, n+1, m_AlarmParam);
        if(reload) {
            //System.out.println("重新加载告警参数");
            for(int n=0; n<al_MonVol.size(); n++)
            {
                al_MonVol.get(n).reloadAlarmData(dt_count_max, BattGroupId, n+1, m_AlarmParam);
            }
        }else {
            for(int n=0; n<al_MonVol.size(); n++)
            {
                al_MonVol.get(n).initAlarmData(dt_count_max, BattGroupId, n+1, m_AlarmParam);
            }
        }
    }
    
BattMonitor_FBS9600SMore/src/com/battmonitor/data/BattData_RT_SQL.java
@@ -209,10 +209,10 @@
            String sql_str_vol = " ";
            for(int n=0; n<bd_rt.MonCount; n++) {
                tmp_dt = bd_rt.al_MonVol.get(n).monVol;
                if(bd_rt.al_MonVol_RtOld.get(n).monVol != tmp_dt) {
                //if(bd_rt.al_MonVol_RtOld.get(n).monVol != tmp_dt) {
                    bd_rt.al_MonVol_RtOld.get(n).monVol = tmp_dt;
                    sql_str_vol += " WHEN " + (n+1) + " THEN " + String.format("%1.3f", tmp_dt);
                }
                //}
            }
            if(sql_str_vol.trim().length() > 1) {
                sql_str_vol = ", mon_vol = CASE mon_num " + sql_str_vol + " ELSE mon_vol END ";
@@ -221,10 +221,10 @@
            String sql_str_tmp = " ";
            for(int n=0; n<bd_rt.MonCount; n++) {
                tmp_dt = bd_rt.al_MonVol.get(n).monTmp;
                if(bd_rt.al_MonVol_RtOld.get(n).monTmp != tmp_dt) {
                //if(bd_rt.al_MonVol_RtOld.get(n).monTmp != tmp_dt) {
                    bd_rt.al_MonVol_RtOld.get(n).monTmp = tmp_dt;
                    sql_str_tmp += " WHEN " + (n+1) + " THEN " + String.format("%1.3f", tmp_dt);
                }
                //}
            }
            if(sql_str_tmp.trim().length() > 1) {
                sql_str_tmp = ", mon_tmp = CASE mon_num " + sql_str_tmp + " ELSE mon_tmp END ";
@@ -233,10 +233,10 @@
            String sql_str_res = " ";
            for(int n=0; n<bd_rt.MonCount; n++) {
                tmp_dt = bd_rt.al_MonVol.get(n).monRes;
                if(bd_rt.al_MonVol_RtOld.get(n).monRes != tmp_dt) {
                //if(bd_rt.al_MonVol_RtOld.get(n).monRes != tmp_dt) {
                    bd_rt.al_MonVol_RtOld.get(n).monRes = tmp_dt;
                    sql_str_res += " WHEN " + (n+1) + " THEN " + String.format("%1.3f", tmp_dt);
                }
                //}
            }
            if(sql_str_res.trim().length() > 1) {
                sql_str_res = ", mon_res = CASE mon_num " + sql_str_res + " ELSE mon_res END ";
@@ -245,10 +245,10 @@
            String sql_str_ser = " ";
            for(int n=0; n<bd_rt.MonCount; n++) {
                tmp_dt = bd_rt.al_MonVol.get(n).monSer;
                if(bd_rt.al_MonVol_RtOld.get(n).monSer != tmp_dt) {
                //if(bd_rt.al_MonVol_RtOld.get(n).monSer != tmp_dt) {
                    bd_rt.al_MonVol_RtOld.get(n).monSer = tmp_dt;
                    sql_str_ser += " WHEN " + (n+1) + " THEN " + String.format("%1.3f", tmp_dt);
                }
                //}
            }
            if(sql_str_ser.trim().length() > 1) {
                sql_str_ser = ", mon_ser = CASE mon_num " + sql_str_ser + " ELSE mon_ser END ";
@@ -257,10 +257,10 @@
            String sql_str_jh_curr = " ";
            for(int n=0; n<bd_rt.MonCount; n++) {
                tmp_dt = bd_rt.al_MonVol.get(n).monJHcurr;
                if(bd_rt.al_MonVol_RtOld.get(n).monJHcurr != tmp_dt) {
                //if(bd_rt.al_MonVol_RtOld.get(n).monJHcurr != tmp_dt) {
                    bd_rt.al_MonVol_RtOld.get(n).monJHcurr = tmp_dt;
                    sql_str_jh_curr += " WHEN " + (n+1) + " THEN " + String.format("%1.3f", tmp_dt);
                }
                //}
            }
            if(sql_str_jh_curr.trim().length() > 1) {
                sql_str_jh_curr = ", mon_JH_curr = CASE mon_num " + sql_str_jh_curr + " ELSE mon_JH_curr END ";
BattMonitor_FBS9600SMore/src/com/battmonitor/data/MonVolData.java
@@ -58,6 +58,35 @@
    }
    
    /**
     *     重载各类告警对象
     * @param dt_count_max
     * @param battgroup_id
     * @param mon_num
     * @param param
     */
    public void reloadAlarmData(int dt_count_max, int battgroup_id, int mon_num, BattAlarmParam param)
    {
        monVol_AlarmData = new BattAlarmData(dt_count_max,
                battgroup_id, mon_num, monVol_AlarmData.alm_id,monVol_AlarmData.alm_signal_id,
                BattAlarmData.ALM_SIGNAL_ID_MonVolHigh, BattAlarmData.ALM_SIGNAL_ID_MonVolLow,
                param.alm_MonVol.alm_High_Level, param.alm_MonVol.alm_Low_Level);
        monVol_AlarmData.alm_signal_id = monVol_AlarmData.alm_signal_id;
        monTmp_AlarmData = new BattAlarmData(dt_count_max,
                battgroup_id, mon_num, monTmp_AlarmData.alm_id,monTmp_AlarmData.alm_signal_id,
                BattAlarmData.ALM_SIGNAL_ID_MonTmpHigh, BattAlarmData.ALM_SIGNAL_ID_MonTmpLow,
                param.alm_MonTmp.alm_High_Level, param.alm_MonTmp.alm_Low_Level);
        monRes_AlarmData = new BattAlarmData(dt_count_max,
                battgroup_id, mon_num, monRes_AlarmData.alm_id,monRes_AlarmData.alm_signal_id,
                BattAlarmData.ALM_SIGNAL_ID_MonResHigh, BattAlarmData.ALM_SIGNAL_ID_MonResLow,
                param.alm_MonRes.alm_High_Level, param.alm_MonRes.alm_Low_Level);
    }
    /**
     * 克隆当前对象并返回
     */
    public MonVolData clone()
BattMonitor_FBS9600SMore/src/com/dev_fbs9600s/data/FBS9600S_BattAlarm_Thread.java
@@ -12,14 +12,14 @@
import com.battmonitor.sql.MysqlConnPool;
public class FBS9600S_BattAlarm_Thread implements Runnable{
    public final static int BattAlarmClearedDelay = 30;
    public final static int BattAlarmClearedDelay = 10;
    
    public final static int ALM_TYPE_MonVol_High_ID = 139001;        //单体电压高                        
    public final static int ALM_TYPE_MonVol_Low_ID = 139002;        //单体电压低
    public final static int ALM_TYPE_MonVol_Low_ID     = 139002;        //单体电压低
    public final static int ALM_TYPE_MonTmp_High_ID = 139003;        //单体温度高
    public final static int ALM_TYPE_MonTmp_Low_ID = 139004;        //单体温度低
    public final static int ALM_TYPE_MonTmp_Low_ID     = 139004;        //单体温度低
    public final static int ALM_TYPE_MonRes_High_ID = 139005;        //单体内阻高
    public final static int ALM_TYPE_MonRes_Low_ID = 139006;        //单体内阻低
    public final static int ALM_TYPE_MonRes_Low_ID     = 139006;        //单体内阻低
    
    public BattData_RT_Array batts;
    public MysqlConnPool pool;
@@ -35,14 +35,22 @@
    @Override
    public void run() {
        System.out.println("FBS9600S_BattAlarm_Thread Start at " + Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
        try {
            for(int dt=0; dt<30; dt++)
            {
                //等待30秒设备通讯后启动
                Thread.sleep(1000);
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        FBS9600S_BattAlarm_Thread_SQL.queryBattAlarmParam(pool,param);
        for(int n=0; n<batts.getItemCount(); n++)
        {
            //设置告警参数
            //m_AL_Data.getItem(n).initAlarmParam(m_AppCfg.getBattAlarmClearedDelay(), m_AlarmParam_COE);
            //设置各个告警参数
            batts.getItem(n).initAlarmParam(BattAlarmClearedDelay, param);
            batts.getItem(n).initAlarmParam(BattAlarmClearedDelay, param,false);
        
            //查询历史实时告警记录,并设值
            FBS9600S_BattAlarm_Thread_SQL.searchLastHistoryBattAlarm(pool,batts.getItem(n));                //录入线程启动之前的告警数据
@@ -58,7 +66,8 @@
                for(int i=0;i<batts.getItemCount();i++) {
                    if(param.update_en) {
                        //当电池组的告警参数变化时需要更新所有的告警对象
                        batts.getItem(i).initAlarmParam(BattAlarmClearedDelay, param);
                        batts.getItem(i).initAlarmParam(BattAlarmClearedDelay, param,true);
                        //System.out.println(param);
                    }
                    BattData_RT rt_data = batts.getItem(i);
                    al_alm = rt_data.makeAlarmData();
BattMonitor_FBS9600SMore/src/com/dev_fbs9600s/data/FBS9600S_BattAlarm_Thread_SQL.java
@@ -41,22 +41,22 @@
                    param.update_en = true;
                }
                val_pam = param.alm_MonTmp.alm_High;
                param.alm_MonTmp.alm_High = res.getFloat("mon_vol_high");
                param.alm_MonTmp.alm_High = res.getFloat("mon_tmp_high");
                if(val_pam != param.alm_MonTmp.alm_High) {
                    param.update_en = true;
                }
                val_pam = param.alm_MonTmp.alm_Low;
                param.alm_MonTmp.alm_Low = res.getFloat("mon_vol_low");
                param.alm_MonTmp.alm_Low = res.getFloat("mon_tmp_low");
                if(val_pam != param.alm_MonTmp.alm_Low) {
                    param.update_en = true;
                }
                val_pam = param.alm_MonRes.alm_High;
                param.alm_MonRes.alm_High = res.getFloat("mon_vol_high");
                param.alm_MonRes.alm_High = res.getFloat("mon_res_high");
                if(val_pam != param.alm_MonRes.alm_High) {
                    param.update_en = true;
                }
                val_pam = param.alm_MonRes.alm_Low;
                param.alm_MonRes.alm_Low = res.getFloat("mon_vol_low");
                param.alm_MonRes.alm_Low = res.getFloat("mon_res_low");
                if(val_pam != param.alm_MonRes.alm_Low) {
                    param.update_en = true;
                }
@@ -120,7 +120,7 @@
                            if(alarm.mon_num > battdata.al_MonVol.size()) {
                                continue;
                            }
                            battdata.al_MonVol.get(alarm.mon_num-1).monVol_AlarmData.alm_id = alarm.alm_id;
                            battdata.al_MonVol.get(alarm.mon_num-1).monTmp_AlarmData.alm_id = alarm.alm_id;
                            battdata.al_MonVol.get(alarm.mon_num-1).monTmp_AlarmData.alm_cleared_type = alarm.alm_cleared_type;
                            battdata.al_MonVol.get(alarm.mon_num-1).monTmp_AlarmData.alm_signal_id = alarm.alm_signal_id;
                        }break;
@@ -130,7 +130,7 @@
                            if(alarm.mon_num > battdata.al_MonVol.size()) {
                                continue;
                            }
                            battdata.al_MonVol.get(alarm.mon_num-1).monVol_AlarmData.alm_id = alarm.alm_id;
                            battdata.al_MonVol.get(alarm.mon_num-1).monRes_AlarmData.alm_id = alarm.alm_id;
                            battdata.al_MonVol.get(alarm.mon_num-1).monRes_AlarmData.alm_cleared_type = alarm.alm_cleared_type;
                            battdata.al_MonVol.get(alarm.mon_num-1).monRes_AlarmData.alm_signal_id = alarm.alm_signal_id;
                        }break;