DELL
2024-07-27 831953352ea4df0ebaa2f47fb6b82b082883d6b5
兼容锂电BTS设备读取
12个文件已修改
2个文件已添加
85654 ■■■■■ 已修改文件
iec61850_forFoShanAES_Model/bin/com/battdata_rt/BattData_RT_SQL.class 补丁 | 查看 | 原始文档 | blame | 历史
iec61850_forFoShanAES_Model/bin/com/dec/fbs9100/BTS61850_Task_Thread.class 补丁 | 查看 | 原始文档 | blame | 历史
iec61850_forFoShanAES_Model/bin/com/dec/fbs9100/BTS_61850_SocketClient.class 补丁 | 查看 | 原始文档 | blame | 历史
iec61850_forFoShanAES_Model/bin/com/dec/fbs9100/BattRealDataPro_Thread.class 补丁 | 查看 | 原始文档 | blame | 历史
iec61850_forFoShanAES_Model/bin/com/dec/fbs9100/main_BTS_APP_IEC61850.class 补丁 | 查看 | 原始文档 | blame | 历史
iec61850_forFoShanAES_Model/bin/com/version_inf/version_inf.txt 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iec61850_forFoShanAES_Model/bin/zjdy_bts_LiBatt.icd 42726 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iec61850_forFoShanAES_Model/src/com/battdata_rt/BattData_RT_SQL.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iec61850_forFoShanAES_Model/src/com/dec/fbs9100/BTS61850_Task_Thread.java 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iec61850_forFoShanAES_Model/src/com/dec/fbs9100/BTS_61850_SocketClient.java 151 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iec61850_forFoShanAES_Model/src/com/dec/fbs9100/BattRealDataPro_Thread.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iec61850_forFoShanAES_Model/src/com/dec/fbs9100/main_BTS_APP_IEC61850.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iec61850_forFoShanAES_Model/src/com/version_inf/version_inf.txt 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iec61850_forFoShanAES_Model/zjdy_bts_LiBatt.icd 42726 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iec61850_forFoShanAES_Model/bin/com/battdata_rt/BattData_RT_SQL.class
Binary files differ
iec61850_forFoShanAES_Model/bin/com/dec/fbs9100/BTS61850_Task_Thread.class
Binary files differ
iec61850_forFoShanAES_Model/bin/com/dec/fbs9100/BTS_61850_SocketClient.class
Binary files differ
iec61850_forFoShanAES_Model/bin/com/dec/fbs9100/BattRealDataPro_Thread.class
Binary files differ
iec61850_forFoShanAES_Model/bin/com/dec/fbs9100/main_BTS_APP_IEC61850.class
Binary files differ
iec61850_forFoShanAES_Model/bin/com/version_inf/version_inf.txt
@@ -5,6 +5,9 @@
     
    注意当前版本在设置南瑞的61850协转签名时用的     BTSE2/
    
V2.1043 edit by lijun   @  2024-07-24
    1.兼容读取紫晶锂电BTS核容数据
V2.103 edit by lijun    @  2024-04-08
    1.修复前一版本核容参数中的组端下限和核容时长读取的点位为第一组的参数bug
    
iec61850_forFoShanAES_Model/bin/zjdy_bts_LiBatt.icd
New file
Diff too large
iec61850_forFoShanAES_Model/src/com/battdata_rt/BattData_RT_SQL.java
@@ -264,11 +264,11 @@
                tmp_dt = bd_rt.al_MonVol.get(n).mon_rest_cap;
                //if(bd_rt.al_MonVol_RtOld.get(n).mon_rest_cap != tmp_dt) {
                    bd_rt.al_MonVol_RtOld.get(n).mon_rest_cap = tmp_dt;
                    sql_str_JH += " WHEN " + (n+1) + " THEN " + String.format("%1.1f", tmp_dt);
                    sql_str_rest_cap += " WHEN " + (n+1) + " THEN " + String.format("%1.1f", tmp_dt);
                //}
            }
            if(sql_str_rest_cap.trim().length() > 1) {
                sql_str_rest_cap = ", mon_rest_cap = CASE mon_num " + sql_str_JH + " ELSE mon_rest_cap END ";
                sql_str_rest_cap = ", mon_rest_cap = CASE mon_num " + sql_str_rest_cap + " ELSE mon_rest_cap END ";
            }
            
            
iec61850_forFoShanAES_Model/src/com/dec/fbs9100/BTS61850_Task_Thread.java
@@ -32,18 +32,18 @@
        m_ConnPool = pool;
        m_Al_Data = data;
        
        logger.info("reading model from file...");
        try {
            //加载模型文件
            List<ServerSap> serverSaps = ServerSap.getSapsFromSclFile("TEMPLATE.iid");
            m_ServerModel = serverSaps.get(0).serverModel;
            System.out.println("SSSS"+m_ServerModel.getBaseDevName());
        } catch (Exception e1) {
            logger.error("Error parsing SCL file:TEMPLATE.iid " + e1.getMessage());
            return;
        }
        logger.info("successfully read model");
//        logger.info("reading model from file...");
//        try {
//            //加载模型文件
//            List<ServerSap> serverSaps = ServerSap.getSapsFromSclFile("TEMPLATE.iid");
//            m_ServerModel = serverSaps.get(0).serverModel;
//            System.out.println("SSSS"+m_ServerModel.getBaseDevName());
//        } catch (Exception e1) {
//            logger.error("Error parsing SCL file:TEMPLATE.iid " + e1.getMessage());
//            return;
//        }
//
//        logger.info("successfully read model");
    }
    
    public void reInitClient() {
@@ -59,10 +59,10 @@
    
    private void createClient() {
        
        if(null == m_ServerModel) {
            logger.error("error, the iec61850 server model is null....");
            return;
        }
//        if(null == m_ServerModel) {
//            logger.error("error, the iec61850 server model is null....");
//            return;
//        }
        
        AL_BTS_IEC61850_DeviceIp.clear();
        AL_BTS_IEC61850_DeviceId.clear();
iec61850_forFoShanAES_Model/src/com/dec/fbs9100/BTS_61850_SocketClient.java
@@ -27,6 +27,7 @@
import org.openmuc.openiec61850.FcModelNode;
import org.openmuc.openiec61850.ModelNode;
import org.openmuc.openiec61850.ServerModel;
import org.openmuc.openiec61850.ServerSap;
import org.openmuc.openiec61850.ServiceError;
import org.openmuc.openiec61850.clientgui.BasicDataBind;
import org.openmuc.openiec61850.clientgui.databind.Float32DataBind;
@@ -145,7 +146,7 @@
        Set_AppAliveState(true);
        
        while (true == Get_AppAliveState()) {
            logger.error("IP:" + FBSDeviceIp + " BTSE:" + FBSDeviceName + "- BTS_IEC61850_ClientThread Started ...");
            logger.error("IP:" + FBSDeviceIp + " ID:" + m_FBSDevId + " BTSE:" + FBSDeviceName + "- BTS_IEC61850_ClientThread Started ...");
            // FBS9100_Task_Thread_SQL.runinsertime(m_ConnPool);
            try {
                Thread.sleep(5000);
@@ -157,8 +158,6 @@
                m_ClientSap = new ClientSap();
                m_Association = m_ClientSap.associate(InetAddress.getByName(FBSDeviceIp), 102, null, null);
                
//                if(!FBSDeviceName.contains(m_ServerModel.getBaseDevName())) {
//                    System.err.println("SSSSSSSSSSS");
//                    //与预加载的模型文件不一致时
@@ -168,9 +167,24 @@
                
               
            } catch (Exception e) {
                logger.debug("BTS_IEC61850_Client Unable to connect to device IP:" + FBSDeviceIp);
                logger.error(e.toString(), e);
            }
            if(null == m_ServerModel && FBSDeviceName.contains("ZJDY")) {
                //紫晶协转若直连连接不上时解析icd文件
                try {
                    List<ServerSap> serverSaps = ServerSap.getSapsFromSclFile("zjdy_bts_LiBatt.icd");
                    m_ServerModel = serverSaps.get(0).serverModel;
                } catch (Exception e) {
                    logger.error(e.toString(), e);
                }
            }
            if(null == m_ServerModel) {
                logger.info("BTS_IEC61850_Client Unable to connect to device IP:" + FBSDeviceIp +" ID:"+m_FBSDevId);
                continue;
            }
            //System.out.println(m_ServerModel);
            if(this.FBSDeviceName.indexOf("BTSE2")>0) {
                //适配各个不同协议名称的61850设备通信[读取放电参数时用到]
                ZJDYCPSS = this.FBSDeviceName.replace("BTSE2", "CPSS");
@@ -401,8 +415,8 @@
                            numberDevState = 0;
                        }
                        
                        if (m_StatAndParam != null) {
                            // System.err.println(m_StatAndParam);
                        if (m_StatAndParam != null) {
                            FBS9100_Task_Thread_SQL.updateFbs9100StateByDev_Id(m_ConnPool, m_StatAndParam);
                            FBS9100_Task_Thread_SQL.inseartOrUpdateFBS9100SFODState(m_ConnPool, m_StatAndParam,
                                    m_StatAndParam.fbs9100s_fod_state);
@@ -807,12 +821,33 @@
                    //---------------------------------Log Level.TRACE-------------------------------------//
                    logger.printf(Level.TRACE, "m_ServerModel.getDataSet(%s/LLN0.dsBtseYc)", FBSDeviceName);
                    //-------------------------------------------------------------------------------------//
                    DataSet ds = null;
                    DataSet ds_tmp;
                    int BattMonCount = 24;
                    if(null != m_RTData[0]) {
                        if(m_RTData[0].MonCount > 24) {
                            BattMonCount = m_RTData[0].MonCount;
                        }
                    }
                    if(FBSDeviceName.contains("ZJDY")) {
                        //紫晶协转
                        ds_tmp = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsMeasure");
                        //System.out.println(m_ServerModel.getDataSet(FBSDeviceName)+"@@");
                    }else {
                        //共济协转
                        ds_tmp = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsBtseYc");
                    }
                    //System.out.println(ds_tmp);
                    if(null == ds_tmp) {
                        return false;
                    }
                    ds = ds_tmp.copy();
                    ///-------------------------------------------------------------------------------------//
                    DataSet ds = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsBtseYc").copy();
                    int size_cnt = ds.getMembers().size();
                    m_Association.getDataSetValues(ds);
                    int m = 0;
                    boolean isStartReadMonData = true;
                    for (int n = 0; n<size_cnt; n++) {
                        if(null == ds.getMembers().get(n).getChild("mag")) {
                            continue;
@@ -951,7 +986,22 @@
                                    m = n;
                                    isStartReadMonData = false;
                                }
                                //单体数据
                                if(FBSDeviceName.contains("ZJDY")) {
                                    //锂电单体数目
                                    BattMonCount = 80;
                                    //锂电BTS
                                    if ((n >= m) && (n < (m + BattMonCount * 1))) {
                                        m_FBS_VCData.vol[n - m] = ((BdaFloat32) fc_mode).getFloat();
                                    }
                                    else if ((n >= (m + BattMonCount * 1)) && (n < (m + BattMonCount * 2))) {
                                        m_FBS_VCData.tmp[n - (m + BattMonCount * 1)] = ((BdaFloat32) fc_mode).getFloat();
                                    }
                                    else if ((n >= (m + BattMonCount * 2)) && (n < (m + BattMonCount * 3))) {
                                        m_FBS_VCData.mon_restcap[n - (m + BattMonCount * 2)] = ((BdaFloat32) fc_mode).getFloat();
                                    }
                                }else {
                                    //单体数据[南瑞协转]
                                if ((n >= m) && (n < (m + 24 * 1))) {
                                    m_FBS_VCData.vol[n - m] = ((BdaFloat32) fc_mode).getFloat();
                                }
@@ -962,10 +1012,11 @@
                                    m_FBS_VCData.tmp[n - (m + 24 * 2)] = ((BdaFloat32) fc_mode).getFloat();
                                }
                                else if ((n >= (m + 24 * 3)) && (n < (m + 24 * 4))) {
                                    m_FBS_VCData.mon_restcap[n - (m + 24 * 2)] = ((BdaFloat32) fc_mode).getFloat();
                                        m_FBS_VCData.mon_restcap[n - (m + 24 * 3)] = ((BdaFloat32) fc_mode).getFloat();
                                }
                                else if ((n >= (m + 24 * 4)) && (n < (m + 24 * 5))) {
                                    m_FBS_VCData.mon_JH[n - (m + 24 * 4)] = ((BdaFloat32) fc_mode).getFloat();
                                    }
                                }
                            }
                            
@@ -995,18 +1046,30 @@
                    }
                    
                    //m_FBS_VCData.m_SysState.AlarmState = (int)readInt64NodeData(FBSDeviceName + "/btgGGIO1.AnIn28.mag.i",Fc.MX);                //核容启动失败原因
                    //System.err.println("############");
                    m_FBS_VCData.m_SysState.setCommCountInc();
                    ds = null;
                    ds = null;ds_tmp = null;
                }
                //System.err.println(m_FBS_VCData.m_SysState.ErrCommCount);
                if(1 == (numberDevState%3)) {
                    //---------------------------------Log Level.TRACE-------------------------------------//
                    logger.printf(Level.TRACE, "m_ServerModel.getDataSet(%s/LLN0.dsBtseYx)", FBSDeviceName);
                    //-------------------------------------------------------------------------------------//
                    String c[] = null;
                    DataSet ds_stat = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsBtseYx").copy();
                    int size_cnt_stat = ds_stat.getMembers().size();
                    DataSet ds_stat = null;
                    DataSet ds_tmp = null;
                    if(FBSDeviceName.contains("ZJDY")) {
                        //紫晶协转
                        ds_tmp = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsDevAlarm");
                    }else {
                        //共济协转
                        ds_tmp = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsBtseYx").copy();
                    }
                    if(null == ds_tmp) {
                        return false;
                    }
                    ds_stat = ds_tmp.copy();
                    boolean[] alm  = new boolean[] {false,false,false,false,false};
                    int size_cnt = ds_stat.getMembers().size();
                    //System.out.println(FBSDeviceName + "/LLN0.dsDevState 节点数:"+size_cnt);
@@ -1038,24 +1101,6 @@
                        }
                    }                
                    
//                    c = new String[size_cnt_stat];
//                    String[] split = null;
//                    split = new String[2];
//                    m_Association.getDataSetValues(ds_stat);
//                    String sb = null;
//                    String temp = "%s";
//                    //限制当前告警个数
//                    size_cnt_stat = 5;
//                    for (int n = 0; n < size_cnt_stat; n++) {
//                        //System.err.println(ds_stat.getMembers().get(n).getName());
//                        FcModelNode fc_mode = (FcModelNode) ds_stat.getMembers().get(n).getChild("stVal");
//                        split = fc_mode.toString().split(": ");
//                        c[n] = split[1];
//                        if(n>0) {
//                            temp += ",%s";
//                        }
//                    }
//                    sb = String.format(temp, (Object[])c);
                    String sb = String.format("%b,%b,%b,%b,%b",alm[0],alm[1],alm[2],alm[3],alm[4]);
                    m_FBS_VCData.m_SysState.last_dev_61850alam = m_FBS_VCData.m_SysState.dev_61850alam; // 记录上一次告警状态
                    m_FBS_VCData.m_SysState.dev_61850alam = sb;
@@ -1063,7 +1108,7 @@
                    checkEventChange(); // 记录当前的告警
                    //System.out.println(sb);
                    m_FBS_VCData.m_SysState.setCommCountInc();
                    ds_stat = null;
                    ds_stat = null;ds_tmp = null;      //清空内存数据
                }
                
                if(2 == (numberDevState%3)) {
@@ -1071,14 +1116,23 @@
                    logger.printf(Level.TRACE, "m_ServerModel.getDataSet(%s/LLN0.dsDevState )", FBSDeviceName);
                    //-------------------------------------------------------------------------------------//
                    comm_res = true;
                    DataSet ds = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsDevState").copy();
                    if(null == ds) {
                    DataSet ds = null;
                    DataSet ds_tmp = null;
                    if(FBSDeviceName.contains("ZJDY")) {
                        //紫晶协转
                        ds_tmp = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsDevState");
                    }else {
                        //共济协转
                        ds_tmp = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsDevState");
                        if(null == ds_tmp) {
                        //兼容老版本协转数据
                        ds = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsBtseYc");
                            ds_tmp = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsBtseYc");
                    }
                    if(null == ds) {
                    }
                    if(null == ds_tmp) {
                        return false;
                    }
                    ds = ds_tmp.copy();
                    int size_cnt = ds.getMembers().size();
                    //System.out.println(FBSDeviceName + "/LLN0.dsDevState 节点数:"+size_cnt);
                    m_Association.getDataSetValues(ds);
@@ -1165,7 +1219,7 @@
                    m_FBS_VCData.m_SysState.setCommCountInc();
                    //----------------- 读到状态数据后再更新数据库数据 -------------------//
                    getFBS9100MonVolData(m_FBS_VCData);
                    ds = null;
                    ds = null;ds_tmp = null;
                }
                //m_FBS_VCData.m_SysState.resetErrCommCount();
                
@@ -1213,13 +1267,27 @@
                //-------------------------------------------------------------------------------------//
                comm_res = true;
            } else if (FBS9100_ComBase.CMD_GetDischargeParm == cmd) {
                DataSet ds_pm = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsBtseYc").copy();
                DataSet ds_pm = null;
                DataSet ds_tmp = null;
                if(FBSDeviceName.contains("ZJDY")) {
                    //紫晶协转
                    ds_tmp = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsDevState");
                }else {
                    //共济协转
                    ds_tmp = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsBtseYc");
                }
                if(null == ds_tmp) {
                    return false;
                }
                ds_pm = ds_tmp.copy();
                if(null != ds_pm && null !=  ds_pm.getMembers()) {
                    int size_cnt = ds_pm.getMembers().size();
                    m_Association.getDataSetValues(ds_pm);
//                    logger.printf(Level.DEBUG, "开始读取放电参数");
                    logger.printf(Level.DEBUG, "开始读取放电参数");
                    for (int n = 0; n < size_cnt; n++) {
                        if(null == ds_pm.getMembers().get(n).getChild("mag")) {
                        if(null == ds_pm.getMembers().get(n).getChild("mag").getChild("f")) {
                            System.out.println(ds_pm.getMembers().get(n).getChild("mag").toString());
                            continue;
                        }
                        
@@ -1268,6 +1336,7 @@
                            //System.out.println(fc_model_str);
                        }
                    }
                    //System.out.println("m_FBS_DiscParamFromDev.DisTime:"+m_FBS_DiscParamFromDev.DisTime);
                    if(FBSDeviceName.contains("BTSE2")) {
                        //测试时长[第二套]
                        m_FBS_DiscParamFromDev.DisTime = (int)(readFloatNodeData(ZJDYCPSS + "/cheGGIO2.HiTestTmhour.mag.f", Fc.MX)*60);
@@ -1280,7 +1349,7 @@
                        m_FBS_DiscParamFromDev.GroupVol_LOW = readFloatNodeData(ZJDYCPSS + "/cheGGIO1.LoBatVal.mag.f", Fc.MX);
                    }
                    
                    ds_pm = null;
                    ds_pm = null;ds_tmp = null;
                }else {
                    
                    m_FBS_DiscParamFromDev.DisCurr = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.TestCurr.mag.f", Fc.MX);
iec61850_forFoShanAES_Model/src/com/dec/fbs9100/BattRealDataPro_Thread.java
@@ -25,7 +25,7 @@
    Logger logger = null;
    
    public static int MinRecordTimeLong = 60;            //每次记录的最短时间间隔
    public static int MaxRecordTimeLong = 366;        //最大记录历史数据时间
    public static int MaxRecordTimeLong = 90;            //最大记录历史数据时间
    
    public BattRealDataPro_Thread(MysqlConnPool con_pool, AppConfig cfg, BattData_RT_Array data) {
        logger = LogManager.getLogger(this.getClass());
@@ -73,9 +73,9 @@
                     */
                    //获取指定天数之前的时间
                    Date critical = getDateBefore(nowTime, MaxRecordTimeLong);
                    logger.error("删除"+Com.get_DTF(critical, Com.DTF_YMDhms)+"之前创建的电池组历史实时数据库表");
                    logger.error("开始删除"+Com.get_DTF(critical, Com.DTF_YMDhms)+"之前创建的电池组历史实时数据库表");
                    BTS61850_Task_Thread_SQL.deleteHistoryData(con_pool, critical);
                    logger.error("删除结束。。。。。。");
                    //logger.error("删除结束。。。。。。");
                    
                    lastdelTime = nowTime;
                }
iec61850_forFoShanAES_Model/src/com/dec/fbs9100/main_BTS_APP_IEC61850.java
@@ -24,8 +24,7 @@
    public final static boolean is_app_for_fbs_free_only = false;
    public final static boolean is_app_for_bpm7100_only = false;
    public final static boolean is_app_for_FBS9100S_only = true;
    /**************************************************
     * ************************/
    /***************************************************************************/
    /**************************************************************************/
    /**************************************************************************/
    /**************************************************************************/
iec61850_forFoShanAES_Model/src/com/version_inf/version_inf.txt
@@ -5,6 +5,9 @@
     
    注意当前版本在设置南瑞的61850协转签名时用的     BTSE2/
    
V2.1043 edit by lijun   @  2024-07-24
    1.兼容读取紫晶锂电BTS核容数据
V2.103 edit by lijun    @  2024-04-08
    1.修复前一版本核容参数中的组端下限和核容时长读取的点位为第一组的参数bug
    
iec61850_forFoShanAES_Model/zjdy_bts_LiBatt.icd
New file
Diff too large