iec61852_forQGN/bin/batt_61852_dev_x64_logs/error-20241125-1.log.gzBinary files differ
iec61852_forQGN/bin/batt_61852_dev_x64_logs/info-20241125-1.log.gzBinary files differ
iec61852_forQGN/bin/com/battdata_rt/BattData_RT$InsertDataToMysql_Task.classBinary files differ
iec61852_forQGN/bin/com/battdata_rt/BattData_RT.classBinary files differ
iec61852_forQGN/bin/com/battdata_rt/BattData_RT_Array.classBinary files differ
iec61852_forQGN/bin/com/battdata_rt/BattData_RT_RamDB_Thread_SQL.classBinary files differ
iec61852_forQGN/bin/com/dec/fbs9100/BTS61851_Task_Thread.classBinary files differ
iec61852_forQGN/bin/com/dec/fbs9100/BTS_61851_SocketClient.classBinary files differ
iec61852_forQGN/bin/com/dec/fbs9100/main_BTS_APP_IEC61852.classBinary 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.新增自定义通信端口,可通过电池信息配置中的通信端口连接指定的端口号