全功能逆变/假负载61850通信程序
V10.206 edit lijun at 2025-02-18
1.兼容1托4全功能假负载-这种类型设备需将电话号码字段修改位设备ICD文件-zjdy_zk-qgn_1T4.icd
16个文件已修改
6个文件已添加
78447 ■■■■■ 已修改文件
iec61852_forQGN/bin/batt_61852_dev_x64_logs/error-20241125-1.log.gz 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/bin/batt_61852_dev_x64_logs/info-20241125-1.log.gz 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/bin/com/battdata_rt/BattData_RT$InsertDataToMysql_Task.class 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/bin/com/battdata_rt/BattData_RT.class 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/bin/com/battdata_rt/BattData_RT_Array.class 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/bin/com/battdata_rt/BattData_RT_RamDB_Thread_SQL.class 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/bin/com/dec/fbs9100/BTS61851_Task_Thread.class 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/bin/com/dec/fbs9100/BTS_61851_SocketClient.class 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/bin/com/dec/fbs9100/main_BTS_APP_IEC61852.class 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/bin/com/version_inf/version_inf.txt 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/bin/config.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/bin/icdsource/zjdy_zk-qgn.icd 19880 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/bin/icdsource/zjdy_zk-qgn_1T4.icd 19281 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/config.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/icdsource/zjdy_zk-qgn.icd 19880 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/icdsource/zjdy_zk-qgn_1T4.icd 19281 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/src/com/battdata_rt/BattData_RT.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/src/com/battdata_rt/BattData_RT_Array.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/src/com/dec/fbs9100/BTS61851_Task_Thread.java 73 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/src/com/dec/fbs9100/BTS_61851_SocketClient.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/src/com/dec/fbs9100/main_BTS_APP_IEC61852.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/src/com/version_inf/version_inf.txt 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/bin/batt_61852_dev_x64_logs/error-20241125-1.log.gz
Binary files differ
iec61852_forQGN/bin/batt_61852_dev_x64_logs/info-20241125-1.log.gz
Binary files differ
iec61852_forQGN/bin/com/battdata_rt/BattData_RT$InsertDataToMysql_Task.class
Binary files differ
iec61852_forQGN/bin/com/battdata_rt/BattData_RT.class
Binary files differ
iec61852_forQGN/bin/com/battdata_rt/BattData_RT_Array.class
Binary files differ
iec61852_forQGN/bin/com/battdata_rt/BattData_RT_RamDB_Thread_SQL.class
Binary files differ
iec61852_forQGN/bin/com/dec/fbs9100/BTS61851_Task_Thread.class
Binary files differ
iec61852_forQGN/bin/com/dec/fbs9100/BTS_61851_SocketClient.class
Binary files differ
iec61852_forQGN/bin/com/dec/fbs9100/main_BTS_APP_IEC61852.class
Binary files differ
iec61852_forQGN/bin/com/version_inf/version_inf.txt
@@ -1,6 +1,10 @@
全功能逆变假负载设备带61850 通信程序
    设备ID  618520001
V10.206 edit lijun at 2025-02-18
    1.兼容1托4全功能假负载-这种类型设备需将电话号码字段修改位设备ICD文件-zjdy_zk-qgn_1T4.icd
V10.205    edit lijun at 2024-09-06 
    1.修复通信程序在异常情况下,MSQL异常导致通信线程异常结束,无法重新连接bug
    2.新增自定义通信端口,可通过电池信息配置中的通信端口连接指定的端口号
iec61852_forQGN/bin/config.xml
@@ -2,7 +2,7 @@
<root>
  <mysql_ramdb_recreate_en>false</mysql_ramdb_recreate_en>
  <mysql_server_ip>192.168.10.82</mysql_server_ip>
  <mysql_server_ip>192.168.10.79</mysql_server_ip>
  <!--SOURCE_BATTDATA_TYPE_FBSDEV = 0-->
  <!--SOURCE_BATTDATA_TYPE_SQLSERVER = 1-->
  <!--SOURCE_BATTDATA_TYPE_C_INTERFACE = 2-->
iec61852_forQGN/bin/icdsource/zjdy_zk-qgn.icd
New file
Diff too large
iec61852_forQGN/bin/icdsource/zjdy_zk-qgn_1T4.icd
New file
Diff too large
iec61852_forQGN/config.xml
@@ -2,7 +2,7 @@
<root>
  <mysql_ramdb_recreate_en>false</mysql_ramdb_recreate_en>
  <mysql_server_ip>192.168.10.82</mysql_server_ip>
  <mysql_server_ip>192.168.10.79</mysql_server_ip>
  <!--SOURCE_BATTDATA_TYPE_FBSDEV = 0-->
  <!--SOURCE_BATTDATA_TYPE_SQLSERVER = 1-->
  <!--SOURCE_BATTDATA_TYPE_C_INTERFACE = 2-->
iec61852_forQGN/icdsource/zjdy_zk-qgn.icd
New file
Diff too large
iec61852_forQGN/icdsource/zjdy_zk-qgn_1T4.icd
New file
Diff too large
iec61852_forQGN/src/com/battdata_rt/BattData_RT.java
@@ -79,6 +79,7 @@
    private int commPort = 102;
    
    Logger logger = null;
    public String icdName = " ";         //icd文件名称
    /*********************************************************************************/
    /*********************************************************************************/
    public BattData_RT(AppConfig cfg, AppParam param, MysqlConnPool pool)
iec61852_forQGN/src/com/battdata_rt/BattData_RT_Array.java
@@ -83,7 +83,7 @@
            sql.sqlMysqlUseDB(Sql_Mysql.DB_BATT_INF);
            
            String sql_str = "SELECT DISTINCT "
                            + " FBSDeviceId,FBSDeviceIp,BattGroupName6,GroupIndexInFBSDevice,FBSDeviceName,comm_port,"
                            + " FBSDeviceId,FBSDeviceIp,BattGroupName6,GroupIndexInFBSDevice,FBSDeviceName,comm_port,station_phone,"
                            + " BattGroupId,BattGroupNum,MonCount,BattFloatCurrent,FloatVolLevel,MonCapStd,MonVolStd"
                            + " FROM " + Sql_Mysql.BattInf_Table
                            + " WHERE FLOOR(FBSDeviceId/10000)=61852"
@@ -102,6 +102,8 @@
                }
                boolean batt_group_exist = false;
                String reg_code = res.getString("BattGroupName6").trim();
                String station_phone = res.getString("station_phone").trim();
                String dev_ip = res.getString("FBSDeviceIp").trim();
                float float_vol_lev = res.getFloat("FloatVolLevel");
                float float_curr_lev = res.getFloat("BattFloatCurrent");
@@ -139,6 +141,12 @@
                            param_changed = true;
                        }
                        
                        if(false == station_phone.equals(brt.icdName)) {
                            //更新icd文件
                            brt.icdName = station_phone;
                            param_changed = true;
                        }
                        if(GroupIndexInFBSDevice != brt.GroupIndexInFBSDevice) {
                            brt.GroupIndexInFBSDevice = GroupIndexInFBSDevice;
                            param_changed = true;
@@ -171,6 +179,8 @@
                    rtdata.FBSDeviceName = res.getString("FBSDeviceName").trim();
                    rtdata.setDevRegCode(res.getString("BattGroupName6").trim());
                    rtdata.GroupIndexInFBSDevice = res.getInt("GroupIndexInFBSDevice");
                    rtdata.icdName = station_phone;
                    if(rtdata.GroupIndexInFBSDevice > 3) {
                        rtdata.GroupIndexInFBSDevice = 3;
                    }
iec61852_forQGN/src/com/dec/fbs9100/BTS61851_Task_Thread.java
@@ -1,7 +1,10 @@
package com.dec.fbs9100;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -15,6 +18,11 @@
    
    private MysqlConnPool m_ConnPool = null;
    private BattData_RT_Array m_Al_Data;
    /**
     *     预加载的公共模型文件
     */
    private static Map<String,ServerModel> al_ServerModel = new HashMap<>();
    
    private ArrayList<String> AL_BTS_IEC61851_DeviceIp = new ArrayList<String>();
    private ArrayList<Integer> AL_BTS_IEC61851_DeviceId = new ArrayList<Integer>();
@@ -32,17 +40,17 @@
        m_ConnPool = pool;
        m_Al_Data = data;
        
        logger.info("reading model from file...");
        try {
            //加载模型文件
            List<ServerSap> serverSaps = ServerSap.getSapsFromSclFile("zjdy_zk-qgn.icd");
            m_ServerModel = serverSaps.get(0).serverModel;
        } catch (Exception e1) {
            logger.error("Error parsing SCL file: " + e1.getMessage());
            return;
        }
        logger.info("successfully read model");
//        logger.info("reading model from file...");
//        try {
//            //加载模型文件
//            List<ServerSap> serverSaps = ServerSap.getSapsFromSclFile("zjdy_zk-qgn.icd");
//            m_ServerModel = serverSaps.get(0).serverModel;
//        } catch (Exception e1) {
//            logger.error("Error parsing SCL file: " + e1.getMessage());
//            return;
//        }
//
//        logger.info("successfully read model");
    }
    
    public void reInitClient() {
@@ -58,10 +66,37 @@
    
    private void createClient() {
        
        if(null == m_ServerModel) {
            logger.error("error, the iec61852 server model is null....");
            return;
//        if(null == m_ServerModel) {
//            logger.error("error, the iec61852 server model is null....");
//            return;
//        }
        al_ServerModel.clear();
        logger.info("BTS61850_Task_Thread Start Parse ICD Source");
        try {
            File icdsource = new File("icdsource");
            if(!icdsource.exists()) {
                icdsource.mkdir();
            }
            File[] icdfiles = icdsource.listFiles();
            for (File file : icdfiles) {
                //System.out.println(file.getName() + " == " +file.getAbsolutePath());
                try {
                    //加载模型文件
                    List<ServerSap> serverSaps = ServerSap.getSapsFromSclFile(file.getAbsolutePath());
                    ServerModel tmp_Model = serverSaps.get(0).serverModel;
                    if(null != tmp_Model) {
                        logger.info("预加载'" + file.getName() + "'协议文件成功");
                        al_ServerModel.put(file.getName(), tmp_Model);
                    }
                } catch (Exception e1) {
                    logger.error("Error parsing SCL file:" + file.getName() + e1.getMessage());
                }
            }
        } catch (Exception e) {
            logger.error(e.toString(), e);
        }
        
        AL_BTS_IEC61851_DeviceIp.clear();
        AL_BTS_IEC61851_DeviceId.clear();
@@ -114,4 +149,14 @@
            }
        }
    }
    /**
     *     获取ICD模型文件
     * @param icdName
     * @return
     */
    public static ServerModel getServerModel(String icdName) {
        //System.out.println("icdName:"+icdName);;
        return al_ServerModel.get(icdName);
    }
}
iec61852_forQGN/src/com/dec/fbs9100/BTS_61851_SocketClient.java
@@ -181,6 +181,29 @@
                logger.debug("BTS_IEC61851_Client Unable to connect to device IP:" + FBSDeviceIp);
                continue;
            }
            if(null != m_Association) {
                try {
                    m_ServerModel = BTS61851_Task_Thread.getServerModel(m_RTData[0].icdName);
                    logger.info("DevId:" + m_FBSDevId + "; FBSDEVIP:" + FBSDeviceIp + ";Dev_BASE:"+m_RTData[0].icdName);
                    if(null == m_ServerModel) {
                        //读取设备上的模型文件
                        m_ServerModel = m_Association.retrieveModel();
                    } else {
                        logger.debug("DevId:" + m_FBSDevId + " FBSDEVIP:" + FBSDeviceIp + "使用模型文件" + m_RTData[0].icdName);
                    }
                    logger.info("DevId:" + m_FBSDevId + "; FBSDEVIP:" + FBSDeviceIp + "; Dev_BASE: " + m_ServerModel.getBaseDevName());
                } catch (ServiceError |IOException e) {
                    m_ServerModel = BTS61851_Task_Thread.getServerModel("zjdy_zk-qgn.icd");
                    logger.error(e.toString(),e);
                } finally {
                    if(null == m_ServerModel) {
                        logger.info("DevId:" + m_FBSDevId + "; FBSDEVIP:" + FBSDeviceIp + "; Fail Parse Device ServerModel ... ");
                        continue;
                    }
                }
            }
            if(this.FBSDeviceName.indexOf("BTSE")>0) {
                //适配各个不同协议名称的61851设备通信[读取放电参数时用到]
                ZJDYCPSS = this.FBSDeviceName.replace("BTSE", "CPSS");
@@ -221,7 +244,7 @@
                logger.debug("IP:" + FBSDeviceIp + " - BTS_IEC61851_VersionInf: " + m_StatAndParam.m_DevVersion);
                
                m_FBS_VCData.m_SysState.resetErrCommCount();
                FBS9100_Task_Thread_SQL.inseartOrUpdateFBS9100SFODParam(m_ConnPool, m_StatAndParam.clParam, m_StatAndParam);
                //FBS9100_Task_Thread_SQL.inseartOrUpdateFBS9100SFODParam(m_ConnPool, m_StatAndParam.clParam, m_StatAndParam);
                
                FBS9100_Task_Thread_SQL.inseartDev_6185_AlmParam(m_ConnPool, m_StatAndParam.dev_id);
iec61852_forQGN/src/com/dec/fbs9100/main_BTS_APP_IEC61852.java
@@ -28,7 +28,7 @@
    /**************************************************************************/
    /**************************************************************************/
    public final static boolean app_debug = false;
    public final static double m_VersionNum = 10.205;
    public final static double m_VersionNum = 10.206;
    public final static String m_Version = "Welcome To Use BattMonitor_BTS_IEC61851 V" 
                                            + m_VersionNum + " RC_20201003";
    /**************************************************************************/
iec61852_forQGN/src/com/version_inf/version_inf.txt
@@ -1,6 +1,10 @@
全功能逆变假负载设备带61850 通信程序
    设备ID  618520001
V10.206 edit lijun at 2025-02-18
    1.兼容1托4全功能假负载-这种类型设备需将电话号码字段修改位设备ICD文件-zjdy_zk-qgn_1T4.icd
V10.205    edit lijun at 2024-09-06 
    1.修复通信程序在异常情况下,MSQL异常导致通信线程异常结束,无法重新连接bug
    2.新增自定义通信端口,可通过电池信息配置中的通信端口连接指定的端口号