全功能逆变/假负载61850通信程序
V10.204 edit lijun at 2024-07-02
1.新增全功能61850点位中的告警遥调设置命令
2.新增全功能61850点位中的告警遥信数据读取以及更新至数据库
1个文件已添加
28个文件已修改
664 ■■■■■ 已修改文件
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_RamDB_Thread_SQL.class 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/bin/com/battdata_rt/BattData_RT_SQL.class 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/bin/com/battdata_rt/MonVolData.class 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/bin/com/dec/fbs9100/BTS61851_Task_Thread_SQL.class 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/bin/com/dec/fbs9100/BTS_61851_SocketClient.class 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/bin/com/dec/fbs9100/FBS9100_ComBase.class 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/bin/com/dec/fbs9100/FBS9100_StatAndParam.class 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/bin/com/dec/fbs9100/FBS9100_Task_Thread_SQL.class 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/bin/com/dec/fbs9100/FBS9100_VCData.class 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/bin/com/dec/fbs9100/Sql_Mysql.class 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/bin/com/dec/fbs9100/main_BTS_APP_IEC61852.class 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/bin/com/version_inf/version_inf.txt 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/bin/config.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/config.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/src/com/battdata_rt/BattData_RT.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/src/com/battdata_rt/BattData_RT_SQL.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/src/com/battdata_rt/MonVolData.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/src/com/dec/fbs9100/BTS61851_Task_Thread_SQL.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/src/com/dec/fbs9100/BTS_61851_SocketClient.java 302 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/src/com/dec/fbs9100/FBS9100_AlarmParam.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/src/com/dec/fbs9100/FBS9100_ComBase.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/src/com/dec/fbs9100/FBS9100_StatAndParam.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/src/com/dec/fbs9100/FBS9100_Task_Thread_SQL.java 136 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/src/com/dec/fbs9100/FBS9100_VCData.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/src/com/dec/fbs9100/Sql_Mysql.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/src/com/dec/fbs9100/main_BTS_APP_IEC61852.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
iec61852_forQGN/src/com/version_inf/version_inf.txt 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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_RamDB_Thread_SQL.class
Binary files differ
iec61852_forQGN/bin/com/battdata_rt/BattData_RT_SQL.class
Binary files differ
iec61852_forQGN/bin/com/battdata_rt/MonVolData.class
Binary files differ
iec61852_forQGN/bin/com/dec/fbs9100/BTS61851_Task_Thread_SQL.class
Binary files differ
iec61852_forQGN/bin/com/dec/fbs9100/BTS_61851_SocketClient.class
Binary files differ
iec61852_forQGN/bin/com/dec/fbs9100/FBS9100_ComBase.class
Binary files differ
iec61852_forQGN/bin/com/dec/fbs9100/FBS9100_StatAndParam.class
Binary files differ
iec61852_forQGN/bin/com/dec/fbs9100/FBS9100_Task_Thread_SQL.class
Binary files differ
iec61852_forQGN/bin/com/dec/fbs9100/FBS9100_VCData.class
Binary files differ
iec61852_forQGN/bin/com/dec/fbs9100/Sql_Mysql.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,9 @@
全功能逆变假负载设备带61850 通信程序
    设备ID  618520001
V10.204 edit lijun at 2024-07-02
    1.新增全功能61850点位中的告警遥调设置命令
    2.新增全功能61850点位中的告警遥信数据读取以及更新至数据库
V10.203 edit lijun at 2023-11-15
    1.核容参数点位修改
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.79</mysql_server_ip>
  <mysql_server_ip>127.0.0.1</mysql_server_ip>
  <!--SOURCE_BATTDATA_TYPE_FBSDEV = 0-->
  <!--SOURCE_BATTDATA_TYPE_SQLSERVER = 1-->
  <!--SOURCE_BATTDATA_TYPE_C_INTERFACE = 2-->
iec61852_forQGN/config.xml
@@ -2,7 +2,7 @@
<root>
  <mysql_ramdb_recreate_en>false</mysql_ramdb_recreate_en>
  <mysql_server_ip>192.168.10.79</mysql_server_ip>
  <mysql_server_ip>127.0.0.1</mysql_server_ip>
  <!--SOURCE_BATTDATA_TYPE_FBSDEV = 0-->
  <!--SOURCE_BATTDATA_TYPE_SQLSERVER = 1-->
  <!--SOURCE_BATTDATA_TYPE_C_INTERFACE = 2-->
iec61852_forQGN/src/com/battdata_rt/BattData_RT.java
@@ -102,6 +102,10 @@
        BattData_RT_SQL.updateBattData_RT_RamDB_Table(m_Conn_Pool, this);
    }
    /*********************************************************************************/
    public void updata_BattRtAlARM_To_RamDb() {
        BattData_RT_SQL.updateBattAlarm_RT_RamDB_Table(m_Conn_Pool, this);
    }
    /*********************************************************************************/
    public BattData_RT updata_SetIp() {
        return BattData_RT_SQL.selectRT_BttInf_Table(m_Conn_Pool, this);
    }
iec61852_forQGN/src/com/battdata_rt/BattData_RT_SQL.java
@@ -1054,4 +1054,79 @@
        }
    }
    /************************************************************************************************/
    /************************************************************************************************/
    public static void updateBattAlarm_RT_RamDB_Table(MysqlConnPool conn_pool, BattData_RT bd_rt)
    {
        Sql_Mysql sql = new Sql_Mysql(conn_pool);
        try
        {
            String sql_str = "UPDATE " + Sql_Mysql.BattRtAlarm_Table
                    + " SET "
                    + " record_time='" + Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms) + "'";
            boolean tmp_dt = false;
            String sql_str_vol = " ";
            for(int n=0; n<bd_rt.MonCount; n++) {
                tmp_dt = bd_rt.al_MonVol.get(n).monvol_alm;
                sql_str_vol += " WHEN " + (n+1) + " THEN " +  tmp_dt;
            }
            if(sql_str_vol.trim().length() > 1) {
                sql_str_vol = ", monvol_alm = CASE mon_num " + sql_str_vol + " ELSE monvol_alm END ";
            }
            String sql_str_tmp = " ";
            for(int n=0; n<bd_rt.MonCount; n++) {
                tmp_dt = bd_rt.al_MonVol.get(n).montmp_alm;
                sql_str_tmp += " WHEN " + (n+1) + " THEN " + tmp_dt;
            }
            if(sql_str_tmp.trim().length() > 1) {
                sql_str_tmp = ", montmp_alm = CASE mon_num " + sql_str_tmp + " ELSE montmp_alm END ";
            }
            String sql_str_res = " ";
            for(int n=0; n<bd_rt.MonCount; n++) {
                tmp_dt = bd_rt.al_MonVol.get(n).monres_alm;
                sql_str_res += " WHEN " + (n+1) + " THEN " +  tmp_dt;
            }
            if(sql_str_res.trim().length() > 1) {
                sql_str_res = ", monres_alm = CASE mon_num " + sql_str_res + " ELSE monres_alm END ";
            }
            String sql_str_cap = " ";
            for(int n=0; n<bd_rt.MonCount; n++) {
                tmp_dt = bd_rt.al_MonVol.get(n).monrestcap_alm;
                sql_str_cap += " WHEN " + (n+1) + " THEN " + tmp_dt;
            }
            if(sql_str_cap.trim().length() > 1) {
                sql_str_cap = ", monrestcap_alm = CASE mon_num " + sql_str_cap + " ELSE monrestcap_alm END ";
            }
            String sql_str_2 = sql_str_vol + sql_str_tmp + sql_str_res + sql_str_cap ;
            if(sql_str_2.trim().length() > 1) {
                sql_str_2 += " WHERE BattGroupId=" + bd_rt.BattGroupId;
                /*
                          + " AND mon_num IN (";
                for(int n=0; n<brt.MonCount; n++) {
                    if(n > 0) {
                        sql_str_2 += ",";
                    }
                    sql_str_2 += (n+1);
                }
                sql_str_2 += ")";
                */
            } else {
                sql_str_2 = " WHERE BattGroupId=" + bd_rt.BattGroupId;
            }
            sql_str += sql_str_2;
            //System.out.println(bd_rt.MonCount);
            //System.out.println(sql_str);
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            sql.logger.error("updateBattAlarm_RT_RamDB_Table():" + e.toString(), e);
        } finally {
            sql.close_con();
        }
    }
    /************************************************************************************************/
}
iec61852_forQGN/src/com/battdata_rt/MonVolData.java
@@ -12,7 +12,14 @@
    public float monRes = 0;
    public float monSer = 0;
    public float connRes = 0;
    public float mon_JH_curr = 0;
    public float mon_JH_curr = 0;                //均衡电流
    public float mon_LY_vol = 0;                //漏液电压
    public float mon_rest_cap = 0;                //剩余容量
    public boolean monvol_alm;                    //单体电压告警
    public boolean monres_alm;                    //单体内阻告警
    public boolean montmp_alm;                    //单体温度告警
    public boolean monrestcap_alm;                //单体剩余容量告警
    //--------------------------------//
    public MonVolData()
    {
@@ -44,6 +51,14 @@
        vdata.monRes = monRes;
        vdata.connRes = connRes;
        vdata.mon_JH_curr = mon_JH_curr;
        vdata.mon_LY_vol = mon_LY_vol;                    //漏液电压
        vdata.mon_rest_cap = mon_rest_cap;                //单体剩余容量
        vdata.monvol_alm = monvol_alm;                    //单体电压告警
        vdata.monres_alm = monres_alm;                    //单体内阻告警
        vdata.montmp_alm = montmp_alm;                    //单体温度告警
        vdata.monrestcap_alm = monrestcap_alm;            //单体剩余容量告警
        return vdata;
    }
}
iec61852_forQGN/src/com/dec/fbs9100/BTS61851_Task_Thread_SQL.java
@@ -4,6 +4,7 @@
import java.sql.SQLException;
import java.util.Date;
import com.base.Com;
import com.battdata_rt.BattData_RT;
public class BTS61851_Task_Thread_SQL {
@@ -133,4 +134,28 @@
            sql.close_con();
        }
    }
    public static void updateBattRtState_Table(MysqlConnPool pool,FBS9100_VCData vc_data,BattData_RT[] battdata) {
        for(int i=0;i<battdata.length;i++) {
            if(null == battdata[i]) {
                continue;
            }
            String sql_str = " UPDATE " + Sql_Mysql.BattRsAlarm_Table + ""
                    + " SET record_time = '"+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms)+"'"
                    + ",groupvol_alm = " + vc_data.groupvolalm[i]
                    + ",test_end_cap=" + vc_data.test_end_cap[i]
                    + ",test_end_vol=" + vc_data.test_end_vol[i]
                    + ",test_timelong= " + vc_data.test_timelong[i] +
                    " WHERE BattGroupId = " + battdata[i].BattGroupId;
            Sql_Mysql sql = new Sql_Mysql(pool);
            try {
                sql.sqlMysqlExecute(sql_str);
            } catch (SQLException e) {
                sql.logger.error("BTS61850_Task_Thread_SQL.updateBattRtState_Table():" + e.toString(), e);
            } finally {
                sql.close_con();
            }
        }
    }
}
iec61852_forQGN/src/com/dec/fbs9100/BTS_61851_SocketClient.java
@@ -43,6 +43,10 @@
    private FBS9100_VCData m_FBS_VCData = null;
    private FBS9100_ParamDischarge m_FBS_DiscParam = null;
    private FBS9100_ParamDischarge m_FBS_DiscParamFromDev = null;
    private FBS9100_AlarmParam m_FBS_AlmParam = null;
    private FBS9100_AlarmParam m_FBS_AlmParamFromDev = null;
    private FBS9100_SysParam m_FBS_SysParam = null;
    private FBS9100_StatAndParam m_StatAndParam = null;
    FBS9100_JHPowerState fbs9100_jhpowerState = null;
@@ -80,6 +84,8 @@
    private ServerModel m_ServerModel;
    
    private Logger logger = null;
    private int bg_num = 1;
    /*********************************************************************************************/
    /*********************************************************************************************/
@@ -102,6 +108,9 @@
        test_Param = m_StatAndParam.test_Param;
        test_Param.dev_id = m_FBSDevId;
        m_FBS_AlmParam = m_StatAndParam.m_FBS_AlmParam;
        m_FBS_AlmParamFromDev = m_StatAndParam.m_FBS_AlmParamFromDev;
        
        events = new ArrayList<BTS61851_EventRecord>();
        
@@ -168,9 +177,13 @@
            if(this.FBSDeviceName.indexOf("BTSE")>0) {
                //适配各个不同协议名称的61851设备通信[读取放电参数时用到]
                ZJDYCPSS = this.FBSDeviceName.replace("BTSE", "CPSS");
                if(ZJDYCPSS.contains("2")) {
                    //标识第二组
                    bg_num = 2;
                }
            }
            logger.debug("Successfully connected to ied server " + FBSDeviceIp + " " + FBSDeviceName + "\t CPSS:"+ZJDYCPSS);
            logger.info("Successfully connected to ied server " + FBSDeviceIp + " " + FBSDeviceName + "\t CPSS:"+ZJDYCPSS);
            logger.debug("IP:" + FBSDeviceIp + " - BTS_IEC61851_Client retrieving model...");
            /*
            try {
@@ -201,6 +214,8 @@
            
            m_FBS_VCData.m_SysState.resetErrCommCount();
            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);
            FBS9100_Task_Thread_SQL.queryBTS61851OffLineyhPlanOnRam(m_ConnPool, m_StatAndParam);
            
@@ -222,6 +237,8 @@
                            FBS9100_Task_Thread_SQL.queryFbsCL9100SetParamBydev_id(m_ConnPool, m_StatAndParam); // 查询离线养护参数
    
                            FBS9100_Task_Thread_SQL.queryFBS9100SysParamBydev_id(m_ConnPool, m_StatAndParam); // 查询系统参数
                            FBS9100_Task_Thread_SQL.queryDev6185AlmParamBydev_id(m_ConnPool, m_StatAndParam); // 查询告警参数
                        }
                    }
                    
@@ -371,6 +388,28 @@
                        }
                        FBS9100_Task_Thread_SQL.updateCL9100SetParamCmdBydev_id(m_ConnPool, m_StatAndParam);
                    }
                    if (FBS9100_ComBase.CMD_NULL != m_FBS_AlmParam.op_cmd) {
                        if (FBS9100_ComBase.CMD_ReadAlarmParam == m_FBS_AlmParam.op_cmd) {
                            System.out.println("读取告警参数"+m_FBS_AlmParam.op_cmd);
                            //读取告警参数
                            if (true == BTS_IEC61851_SocketComm(FBS9100_ComBase.CMD_ReadAlarmParam)) {
                                m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_ReadAlarmParam_ACK;
                                FBS9100_Task_Thread_SQL.UpdateDev61850AlmParam(m_ConnPool,m_StatAndParam.m_FBS_AlmParamFromDev, m_StatAndParam);
                            }else {
                                m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_Fail;
                            }
                        }else if(FBS9100_ComBase.CMD_WriteAlarmParam == m_FBS_AlmParam.op_cmd) {
                            //设置告警参数
                            if (true == BTS_IEC61851_SocketComm(FBS9100_ComBase.CMD_WriteAlarmParam)) {
                                m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_WriteAlarmParam_ACK;
                            }else {
                                m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_Fail;
                            }
                        }
                        FBS9100_Task_Thread_SQL.updateDev61850AlmParamCmdBydev_id(m_ConnPool, m_StatAndParam);
                    }
                    // -----------------------------------------------------------------------------------//
                    // -----------------------------------------------------------------------------------//
@@ -869,9 +908,11 @@
                            }
                            
                        }            
                    }
                    //m_FBS_VCData.m_SysState.AlarmState = (int)readInt64NodeData(FBSDeviceName + "/btgGGIO1.AnIn28.mag.i",Fc.MX);                //核容启动失败原因
                    }
                    //操作失败原因
                    m_FBS_VCData.m_SysState.AlarmState = (int)readInt64NodeData(FBSDeviceName + "/btgGGIO1.AnIn28.mag.i",Fc.MX);                //核容启动失败原因
                    //System.out.println("AlarmState:"+m_FBS_VCData.m_SysState.AlarmState);
                    m_FBS_VCData.m_SysState.setCommCountInc();
                    ds = null;
                }
@@ -1222,6 +1263,185 @@
                    //----------------- 读到状态数据后再更新数据库数据 --------------------//
                    getFBS9100MonVolData(m_FBS_VCData);
                    ds = null;
                }
                if(0 == (numberDevState%6)) {
                    //---------------------------------Log Level.TRACE-------------------------------------//
                    logger.printf(Level.TRACE, "m_ServerModel.getDataSet(%s/LLN0.dsDevAlarm1)", FBSDeviceName);
                    //-------------------------------------------------------------------------------------//
                    comm_res = true;
                    DataSet ds = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsDevAlarm1");
                    if(null == ds) {
                        return false;
                    }
                    DataSet ds_stat = ds.copy();
                    boolean[] alm  = new boolean[] {false,false,false,false,false};
                    int size_cnt_stat = ds.getMembers().size();
                    m_Association.getDataSetValues(ds_stat);
                    int mon_alm_idx = 0;
                    for (int n = 0; n < size_cnt_stat; n++) {
                        if(null == ds_stat.getMembers().get(n).getChild("stVal")) {
                            System.err.println(ds_stat.getMembers().get(n).getChild("mag").toString1());
                            continue;
                        }
                        FcModelNode fc_mode = (FcModelNode) ds_stat.getMembers().get(n).getChild("stVal");
                        if(fc_mode instanceof BdaBoolean) {
                            //JTextField tf_t = (JTextField) data.getValueField();
                            String fc_mode_str = fc_mode.toString1();
                            //System.out.println("n:"+n+" "+fc_mode_str+"=="+((BdaBoolean)fc_mode).getValue());
                            if(fc_mode_str.contains(FBSDeviceName + "/ncdGGIO1.Alm1")){
                                //通信蓄电池远程核容装置常闭接触器K1告警
                                alm[0] = ((BdaBoolean)fc_mode).getValue();
                            }else if(fc_mode_str.contains(FBSDeviceName + "/ncdGGIO1.Alm2")){
                                //通信蓄电池远程核容装置通讯告警
                                alm[1] = ((BdaBoolean)fc_mode).getValue();
                            }else if(fc_mode_str.contains(FBSDeviceName + "/ncdGGIO1.Alm3")){
                                //通信蓄电池远程核容装置过温告警
                                alm[2] = ((BdaBoolean)fc_mode).getValue();
                            }else if(fc_mode_str.contains(FBSDeviceName + "/ncdGGIO1.Alm4")){
                                //通信蓄电池远程核容装置二极管D1告警
                                alm[3] = ((BdaBoolean)fc_mode).getValue();
                            }else if(fc_mode_str.contains(FBSDeviceName + "/ncdGGIO") && fc_mode_str.contains(".Alm5")){
                                //干接点输入故障-10个干接点点位有一个告警即触发干接点告警
                                alm[4] = (alm[4] || ((BdaBoolean)fc_mode).getValue());
                            }else if(fc_mode_str.contains(FBSDeviceName + "/btgGGIO1.Alm1")) {
                                //电池组端电压告警
                                m_FBS_VCData.groupvolalm[0] = ((BdaBoolean)fc_mode).getValue();
                            }else if(fc_mode_str.contains(FBSDeviceName + "/celGGIO1.Alm")) {
                                //System.out.println("mon_alm_idx:"+mon_alm_idx+" "+fc_mode_str+"=="+((BdaBoolean)fc_mode).getValue());
                                //电池组单体告警
                                if(0 <= mon_alm_idx && mon_alm_idx < 120) {
                                    //单体电压告警
                                    m_FBS_VCData.monvol_alm[mon_alm_idx] = ((BdaBoolean)fc_mode).getValue();
                                }
                                mon_alm_idx ++;
                            }
                        }
                    }
                    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;
                    checkEventChange(); // 记录当前的告警
                    m_FBS_VCData.m_SysState.setCommCountInc();
                    ds_stat = null;
                    //System.out.println("alm:" + Arrays.toString(alm));
                }
                if(1 == (numberDevState%6)) {
                    //---------------------------------Log Level.TRACE-------------------------------------//
                    logger.printf(Level.TRACE, "m_ServerModel.getDataSet(%s/LLN0.dsDevAlarm2)", FBSDeviceName);
                    //-------------------------------------------------------------------------------------//
                    comm_res = true;
                    DataSet ds = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsDevAlarm2");
                    if(null == ds) {
                        return false;
                    }
                    DataSet ds_stat = ds.copy();
                    int size_cnt_stat = ds_stat.getMembers().size();
                    m_Association.getDataSetValues(ds_stat);
                    int mon_alm_idx = 0;
                    for (int n = 0; n < size_cnt_stat; n++) {
                        if(null == ds_stat.getMembers().get(n).getChild("stVal")) {
                            System.err.println(ds_stat.getMembers().get(n).getChild("mag").toString1());
                            continue;
                        }
                        FcModelNode fc_mode = (FcModelNode) ds_stat.getMembers().get(n).getChild("stVal");
                        if(fc_mode instanceof BdaBoolean) {
                            //JTextField tf_t = (JTextField) data.getValueField();
                            String fc_mode_str = fc_mode.toString1();
                            //System.out.println("n:"+n+" "+fc_mode_str+"=="+((BdaBoolean)fc_mode).getValue());
                            if(fc_mode_str.contains(FBSDeviceName + "/celGGIO2.Alm")) {
                                //System.out.println("mon_alm_idx:"+mon_alm_idx+" "+fc_mode_str+"=="+((BdaBoolean)fc_mode).getValue());
                                //电池组单体内阻告警
                                if(0 <= mon_alm_idx && mon_alm_idx < 120) {
                                    //单体内阻告警
                                    m_FBS_VCData.monres_alm[mon_alm_idx] = ((BdaBoolean)fc_mode).getValue();
                                }
                                mon_alm_idx ++;
                            }
                        }
                    }
                    //System.out.println("alm:" + Arrays.toString(alm));
                    m_FBS_VCData.m_SysState.setCommCountInc();
                    ds_stat = null;
                }
                if(2 == (numberDevState%6)) {
                    //---------------------------------Log Level.TRACE-------------------------------------//
                    logger.printf(Level.TRACE, "m_ServerModel.getDataSet(%s/LLN0.dsDevAlarm3)", FBSDeviceName);
                    //-------------------------------------------------------------------------------------//
                    comm_res = true;
                    DataSet ds = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsDevAlarm3");
                    if(null == ds) {
                        return false;
                    }
                    DataSet ds_stat = ds.copy();
                    int size_cnt_stat = ds_stat.getMembers().size();
                    m_Association.getDataSetValues(ds_stat);
                    int mon_alm_idx = 0;
                    for (int n = 0; n < size_cnt_stat; n++) {
                        if(null == ds_stat.getMembers().get(n).getChild("stVal")) {
                            System.err.println(ds_stat.getMembers().get(n).getChild("mag").toString1());
                            continue;
                        }
                        FcModelNode fc_mode = (FcModelNode) ds_stat.getMembers().get(n).getChild("stVal");
                        if(fc_mode instanceof BdaBoolean) {
                            //JTextField tf_t = (JTextField) data.getValueField();
                            String fc_mode_str = fc_mode.toString1();
                            //System.out.println("n:"+n+" "+fc_mode_str+"=="+((BdaBoolean)fc_mode).getValue());
                            if(fc_mode_str.contains(FBSDeviceName + "/celGGIO3.Alm")) {
                                //System.out.println("mon_alm_idx:"+mon_alm_idx+" "+fc_mode_str+"=="+((BdaBoolean)fc_mode).getValue());
                                //电池组单体内阻告警
                                if(0 <= mon_alm_idx && mon_alm_idx < 120) {
                                    //单体内阻告警
                                    m_FBS_VCData.montmp_alm[mon_alm_idx] = ((BdaBoolean)fc_mode).getValue();
                                }
                                mon_alm_idx ++;
                            }
                        }
                    }
                    //System.out.println("alm:" + Arrays.toString(alm));
                    m_FBS_VCData.m_SysState.setCommCountInc();
                    ds_stat = null;
                }
                if(3 == (numberDevState%6)) {
                    //---------------------------------Log Level.TRACE-------------------------------------//
                    logger.printf(Level.TRACE, "m_ServerModel.getDataSet(%s/LLN0.dsDevAlarm4)", FBSDeviceName);
                    //-------------------------------------------------------------------------------------//
                    comm_res = true;
                    DataSet ds = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsDevAlarm4");
                    if(null == ds) {
                        return false;
                    }
                    DataSet ds_stat = ds.copy();
                    int size_cnt_stat = ds_stat.getMembers().size();
                    m_Association.getDataSetValues(ds_stat);
                    int mon_alm_idx = 0;
                    for (int n = 0; n < size_cnt_stat; n++) {
                        if(null == ds_stat.getMembers().get(n).getChild("stVal")) {
                            System.err.println(ds_stat.getMembers().get(n).getChild("mag").toString1());
                            continue;
                        }
                        FcModelNode fc_mode = (FcModelNode) ds_stat.getMembers().get(n).getChild("stVal");
                        if(fc_mode instanceof BdaBoolean) {
                            //JTextField tf_t = (JTextField) data.getValueField();
                            String fc_mode_str = fc_mode.toString1();
                            //System.out.println("n:"+n+" "+fc_mode_str+"=="+((BdaBoolean)fc_mode).getValue());
                            if(fc_mode_str.contains(FBSDeviceName + "/celGGIO4.Alm")) {
                                //System.out.println("mon_alm_idx:"+mon_alm_idx+" "+fc_mode_str+"=="+((BdaBoolean)fc_mode).getValue());
                                //电池组单体内阻告警
                                if(0 <= mon_alm_idx && mon_alm_idx < 120) {
                                    //单体内阻告警
                                    m_FBS_VCData.moncap_alm[mon_alm_idx] = ((BdaBoolean)fc_mode).getValue();
                                }
                                mon_alm_idx ++;
                            }
                        }
                    }
                    getFBS9100MonAlmData(m_FBS_VCData);
                    //System.out.println("alm:" + Arrays.toString(alm));
                    m_FBS_VCData.m_SysState.setCommCountInc();
                    ds_stat = null;
                }
                //m_FBS_VCData.m_SysState.resetErrCommCount();
                
@@ -1776,6 +1996,51 @@
                //均衡停止电流阀值
                writeNodeData(FBSDeviceName + "/btgGGIO1.Para5.setMag.f", "SP",(float)m_FBS_SysParam.JunHeng_StCurr);
            
            }else if(FBS9100_ComBase.CMD_ReadAlarmParam == cmd) {
                //读取告警参数
                m_FBS_AlmParamFromDev.groupvol_high_val = readFloatNodeData(ZJDYCPSS + "/cheGGIO" + bg_num + ".Para1.setMag.f", Fc.SP);
                m_FBS_AlmParamFromDev.groupvol_low_val = readFloatNodeData(ZJDYCPSS + "/cheGGIO" + bg_num + ".Para2.setMag.f", Fc.SP);
                m_FBS_AlmParamFromDev.monvol_high_val = readFloatNodeData(ZJDYCPSS + "/cheGGIO" + bg_num + ".Para3.setMag.f", Fc.SP);
                m_FBS_AlmParamFromDev.monvol_low_val = readFloatNodeData(ZJDYCPSS + "/cheGGIO" + bg_num + ".Para4.setMag.f", Fc.SP);
                m_FBS_AlmParamFromDev.monres_high_val = readFloatNodeData(ZJDYCPSS + "/cheGGIO" + bg_num + ".Para5.setMag.f", Fc.SP);
                m_FBS_AlmParamFromDev.monres_low_val = readFloatNodeData(ZJDYCPSS + "/cheGGIO" + bg_num + ".Para6.setMag.f", Fc.SP);
                m_FBS_AlmParamFromDev.montmp_high_val = readFloatNodeData(ZJDYCPSS + "/cheGGIO" + bg_num + ".Para7.setMag.f", Fc.SP);
                m_FBS_AlmParamFromDev.montmp_low_val = readFloatNodeData(ZJDYCPSS + "/cheGGIO" + bg_num + ".Para8.setMag.f", Fc.SP);
                m_FBS_AlmParamFromDev.moncap_high_val = readFloatNodeData(ZJDYCPSS + "/cheGGIO" + bg_num + ".Para9.setMag.f", Fc.SP);
                m_FBS_AlmParamFromDev.moncap_low_val = readFloatNodeData(ZJDYCPSS + "/cheGGIO" + bg_num + ".Para10.setMag.f", Fc.SP);
                System.out.println(m_FBS_AlmParamFromDev);
            }else if(FBS9100_ComBase.CMD_WriteAlarmParam == cmd) {
                //设置告警参数
                if(!setBTSPublicKeyY("CPSS/cheGGIO" + bg_num + ".Para1.setMag.f"));
                writeNodeData(ZJDYCPSS + "/cheGGIO" + bg_num + ".Para1.setMag.f", "SP", m_FBS_AlmParam.groupvol_high_val);
                if(!setBTSPublicKeyY("CPSS/cheGGIO" + bg_num + ".Para2.setMag.f"));
                writeNodeData(ZJDYCPSS + "/cheGGIO" + bg_num + ".Para2.setMag.f", "SP", m_FBS_AlmParam.groupvol_low_val);
                if(!setBTSPublicKeyY("CPSS/cheGGIO" + bg_num + ".Para3.setMag.f"));
                writeNodeData(ZJDYCPSS + "/cheGGIO" + bg_num + ".Para3.setMag.f", "SP", m_FBS_AlmParam.monvol_high_val);
                if(!setBTSPublicKeyY("CPSS/cheGGIO" + bg_num + ".Para4.setMag.f"));
                writeNodeData(ZJDYCPSS + "/cheGGIO" + bg_num + ".Para4.setMag.f", "SP", m_FBS_AlmParam.monvol_low_val);
                if(!setBTSPublicKeyY("CPSS/cheGGIO" + bg_num + ".Para5.setMag.f"));
                writeNodeData(ZJDYCPSS + "/cheGGIO" + bg_num + ".Para5.setMag.f", "SP", m_FBS_AlmParam.monres_high_val);
                if(!setBTSPublicKeyY("CPSS/cheGGIO" + bg_num + ".Para6.setMag.f"));
                writeNodeData(ZJDYCPSS + "/cheGGIO" + bg_num + ".Para6.setMag.f", "SP", m_FBS_AlmParam.monres_low_val);
                if(!setBTSPublicKeyY("CPSS/cheGGIO" + bg_num + ".Para7.setMag.f"));
                writeNodeData(ZJDYCPSS + "/cheGGIO" + bg_num + ".Para7.setMag.f", "SP", m_FBS_AlmParam.montmp_high_val);
                if(!setBTSPublicKeyY("CPSS/cheGGIO" + bg_num + ".Para8.setMag.f"));
                writeNodeData(ZJDYCPSS + "/cheGGIO" + bg_num + ".Para8.setMag.f", "SP", m_FBS_AlmParam.montmp_low_val);
                if(!setBTSPublicKeyY("CPSS/cheGGIO" + bg_num + ".Para9.setMag.f"));
                writeNodeData(ZJDYCPSS + "/cheGGIO" + bg_num + ".Para9.setMag.f", "SP", m_FBS_AlmParam.moncap_high_val);
                if(!setBTSPublicKeyY("CPSS/cheGGIO" + bg_num + ".Para10.setMag.f"));
                writeNodeData(ZJDYCPSS + "/cheGGIO" + bg_num + ".Para10.setMag.f", "SP", m_FBS_AlmParam.moncap_low_val);
            }
            comm_res = true;
        } catch (Exception e) {
@@ -2198,7 +2463,36 @@
    public static void main(String[] args) {
        System.out.println(getUKEYRootDomStr("ZJDYBTSE2"));
    }
    /**
     *     更新电池组数据
     *
     * @param vc_data
     */
    private void getFBS9100MonAlmData(FBS9100_VCData vc_data) {
        {
            int mon_index = 0;
            for (int n = 0; n < FBS9100_ComBase.BattGroupCountMax; n++) {
                if (null != m_RTData[n]) {
                    for (int index = 0; index < m_RTData[n].MonCount; index++) {
                        if (mon_index >= FBS9100_ComBase.MonomerCountMax) {
                            break;
                        }
                        m_RTData[n].al_MonVol.get(index).monvol_alm =  vc_data.monvol_alm[mon_index];
                        m_RTData[n].al_MonVol.get(index).monres_alm =  vc_data.monres_alm[mon_index];
                        m_RTData[n].al_MonVol.get(index).montmp_alm =  vc_data.montmp_alm[mon_index];
                        m_RTData[n].al_MonVol.get(index).monrestcap_alm = vc_data.moncap_alm[mon_index];
                        mon_index++;
                    }
                    m_RTData[n].updata_BattRtAlARM_To_RamDb();
                    BTS61851_Task_Thread_SQL.updateBattRtState_Table(m_ConnPool,vc_data,m_RTData);
                    // ---------------------------------------------------------------------------//
                }
            }
        }
    }
    /*********************************************************************************************/
}
/*********************************
iec61852_forQGN/src/com/dec/fbs9100/FBS9100_AlarmParam.java
New file
@@ -0,0 +1,61 @@
package com.dec.fbs9100;
public class FBS9100_AlarmParam implements Cloneable
{
    private final int BYTE_LEN = 44;
    public int op_cmd;
    public float groupvol_high_val;        //'组端电压高阈值',
    public float groupvol_low_val;        //'组端电压低阈值',
    public float monvol_high_val;        //'单体电压高阈值',
    public float monvol_low_val;        //'单体电压低阈值',
    public float montmp_high_val;        //'单体温度高阈值',
    public float montmp_low_val;        //'单体温度低阈值',
    public float monres_high_val;        //'单体内阻高阈值',
    public float monres_low_val;        //'单体内阻低阈值',
    public float moncap_high_val;        //'单体容量高阈值',
    public float moncap_low_val;        //'单体容量低阈值',
    public FBS9100_AlarmParam clone()
    {
        FBS9100_AlarmParam obj = null;
        try
        {
            obj = (FBS9100_AlarmParam)super.clone();
        }
        catch(CloneNotSupportedException e)
        {
            e.printStackTrace();
        }
        return obj;
    }
    public void clear()
    {
        this.groupvol_high_val = 0;        //'组端电压高阈值',
        this.groupvol_low_val = 0;        //'组端电压低阈值',
        this.monvol_high_val = 0;        //'单体电压高阈值',
        this.monvol_low_val = 0;        //'单体电压低阈值',
        this.montmp_high_val = 0;        //'单体温度高阈值',
        this.montmp_low_val = 0;        //'单体温度低阈值',
        this.monres_high_val = 0;        //'单体内阻高阈值',
        this.monres_low_val = 0;        //'单体内阻低阈值',
        this.moncap_high_val = 0;        //'单体容量高阈值',
        this.moncap_low_val = 0;        //'单体容量低阈值',
    }
    @Override
    public String toString() {
        return "FBS9100_ParamCharge [BYTE_LEN=" + BYTE_LEN + ", op_cmd=" + op_cmd + ", groupvol_high_val="
                + groupvol_high_val + ", groupvol_low_val=" + groupvol_low_val + ", monvol_high_val=" + monvol_high_val
                + ", monvol_low_val=" + monvol_low_val + ", montmp_high_val=" + montmp_high_val + ", montmp_low_val="
                + montmp_low_val + ", monres_high_val=" + monres_high_val + ", monres_low_val=" + monres_low_val
                + ", moncap_high_val=" + moncap_high_val + ", moncap_low_val=" + moncap_low_val + "]";
    }
}
/***************************************************************************************
**************************** end of file (FBS_ChargeParam) *****************************
***************************************************************************************/
iec61852_forQGN/src/com/dec/fbs9100/FBS9100_ComBase.java
@@ -6,6 +6,7 @@
    public static final int     MonomerCountMax                    =    480;
    //----------------------------------------------------------------------------
    public static final int     CMD_NULL                        =    0x00;
    public static final int     CMD_Fail                        =    -1;
    //----------------------------------------------------------------------------
    //------------ ������������FBS9100������ ------------------------------------------------
    public static final int     CMD_ResetSystem                    =     0x10;
@@ -169,6 +170,15 @@
    public static final int        CMD_ClearSysAlarm               =   0xB8;                    //清除告警            
    public static final int        CMD_ClearSysAlarm_ACK           =   0xB9;                    //清除告警成功
    
    //------------------------------------------------------------------------
    //------------- 核容6185专属告警参数 -----------------------------------------------------------
    public static final int        CMD_ReadAlarmParam               =   0xC5;                    //读取告警
    public static final int        CMD_ReadAlarmParam_ACK           =   0xC6;                    //读取告警成功
    public static final int        CMD_WriteAlarmParam              =   0xC7;                    //设置告警
    public static final int        CMD_WriteAlarmParam_ACK          =   0xC8;                    //设置告警成功
    //------------------------------------------------------------------------
    //------------------------------------------------------------------------------
    public static byte changeIntToByte(int data)
    {
iec61852_forQGN/src/com/dec/fbs9100/FBS9100_StatAndParam.java
@@ -19,6 +19,10 @@
    public FBS9100_SysParam m_FBS_SysParam = null;
    public BTS61850_OffLineYHPlan bts61850_OffLineYHPlan = null;
    
    public FBS9100_AlarmParam m_FBS_AlmParam = null;
    public FBS9100_AlarmParam m_FBS_AlmParamFromDev = null;
    public FBS9100_batt_testparam test_Param = null;    //当前设置成功的充放电参数
    
    public String m_DevVersion = "";
@@ -50,6 +54,9 @@
        clParam = new CL_Param();
        
        test_Param = new FBS9100_batt_testparam();
        m_FBS_AlmParam = new FBS9100_AlarmParam();
        m_FBS_AlmParamFromDev = new FBS9100_AlarmParam();
    }
    
    @Override
iec61852_forQGN/src/com/dec/fbs9100/FBS9100_Task_Thread_SQL.java
@@ -821,7 +821,7 @@
        }
    }
    
/****************************************************************************************************/
    /****************************************************************************************************/
    public static void inseartOrUpdateFBS9100SFODParam(MysqlConnPool con_pool,CL_Param fodparam,FBS9100_StatAndParam param){
        String sql_str_base = Sql_Mysql.FBS9100SetDLParam_Table 
                + " SET "
@@ -873,6 +873,67 @@
                    sql.logger.error("FBS9100_Task_Thread_SQL.inseartOrUpdateFBS9100SFODParam():" + e.toString(), e);
                }
            }
            sql.close_con();
        }
    }
    /****************************************************************************************************/
    public static void inseartDev_6185_AlmParam(MysqlConnPool con_pool,int dev_id){
        String sql_str_base = Sql_Mysql.Dev_6185_AlmParam
                + " SET "
                + " dev_id=" + dev_id;
        String sql_str_ins = " insert into " + Sql_Mysql.Dev_6185_AlmParam+ "(dev_id) values(" + dev_id +");";
        Sql_Mysql sql = new Sql_Mysql(con_pool);
        ResultSet res = null;
        try {
            res = sql.sqlMysqlQuery("SELECT num FROM " + Sql_Mysql.Dev_6185_AlmParam
                    + " WHERE dev_id = " + dev_id);
            if(!res.next()) {
                sql.sqlMysqlExecute(sql_str_ins);
            }
        } catch (SQLException e) {
            sql.logger.error("FBS9100_Task_Thread_SQL.inseartDev_6185_AlmParam():" + e.toString(), e);
        } finally {
            if(null != res) {
                try {
                    res.close();
                } catch (SQLException e) {
                    sql.logger.error("FBS9100_Task_Thread_SQL.inseartOrUpdateFBS9100SFODParam():" + e.toString(), e);
                }
            }
            sql.close_con();
        }
    }
    /****************************************************************************************************/
    public static void UpdateDev61850AlmParam(MysqlConnPool con_pool,FBS9100_AlarmParam almparam,FBS9100_StatAndParam param){
        String sql_str_base = Sql_Mysql.Dev_6185_AlmParam
                + " SET "
                + "dev_id=" + param.dev_id + ", "
                + "groupvol_high_val=" + almparam.groupvol_high_val + ", "
                + "groupvol_low_val=" + almparam.groupvol_low_val + ", "
                + "monvol_high_val=" + almparam.monvol_high_val + ", "
                + "monvol_low_val=" + almparam.monvol_low_val + ", "
                + "montmp_high_val=" + almparam.montmp_high_val + ", "
                + "montmp_low_val=" + almparam.montmp_low_val + ", "
                + "monres_high_val=" + almparam.monres_high_val + ", "
                + "monres_low_val=" + almparam.monres_low_val + ", "
                + "moncap_high_val=" + almparam.moncap_high_val + ", "
                + "moncap_low_val=" + almparam.moncap_low_val ;
        String sql_str_update = "UPDATE " + sql_str_base + " WHERE dev_id=" + param.dev_id;
        Sql_Mysql sql = new Sql_Mysql(con_pool);
        ResultSet res = null;
        try {
            sql.sqlMysqlExecute(sql_str_update);
        } catch (SQLException e) {
            sql.logger.error("FBS9100_Task_Thread_SQL.inseartOrUpdateFBS9100SFODParam():" + e.toString(), e);
        } finally {
            sql.close_con();
        }
    }
@@ -1024,6 +1085,31 @@
            }
            
            param.clParam.op_cmd = param.op_cmd;
            param.op_cmd = FBS9100_ComBase.CMD_NULL;
        }
    }
    public static void updateDev61850AlmParamCmdBydev_id(MysqlConnPool con_pool, FBS9100_StatAndParam param)
    {
        if((param.op_cmd == FBS9100_ComBase.CMD_ReadAlarmParam_ACK)
                || (param.op_cmd == FBS9100_ComBase.CMD_Fail)
                || (param.op_cmd == FBS9100_ComBase.CMD_WriteAlarmParam_ACK))
        {
            String sql_str_base = Sql_Mysql.Dev_6185_AlmParam + " SET "
                    + " dev_id=" + param.dev_id + ", "
                    + " op_cmd=" + param.op_cmd + " "
                    + " where dev_id = "+param.dev_id;
            String sql_str_update = "UPDATE " + sql_str_base;
            Sql_Mysql sql = new Sql_Mysql(con_pool);
            try {
                sql.sqlMysqlExecute(sql_str_update);
            } catch (SQLException e) {
                sql.logger.error("FBS9100_Task_Thread_SQL.updateDev61850AlmParamCmdBydev_id():" + e.toString(), e);
            } finally {
                sql.close_con();
            }
            param.m_FBS_AlmParam.op_cmd = param.op_cmd;
            param.op_cmd = FBS9100_ComBase.CMD_NULL;
        }
    }
@@ -1389,6 +1475,54 @@
        } catch (SQLException e) {
            sql.logger.error("FBS9100_Task_Thread_SQL.queryFBS9100SysParamBydev_id():" + e.toString(), e);
        } finally {
            if(null != res) {
                try {
                    res.close();
                } catch (SQLException e) {
                    sql.logger.error("FBS9100_Task_Thread_SQL.queryFBS9100SysParamBydev_id():" + e.toString(), e);
                }
            }
            sql.close_con();
        }
    }
    /**
     * 查询设备的告警参数
     * @param con_pool
     * @param param
     */
    public static void queryDev6185AlmParamBydev_id(MysqlConnPool con_pool, FBS9100_StatAndParam param) {
        String sql_str = "SELECT * FROM " + Sql_Mysql.Dev_6185_AlmParam + " where dev_id = " + param.dev_id;
        Sql_Mysql sql = new Sql_Mysql(con_pool);
        ResultSet res = sql.sqlMysqlQuery(sql_str);
        try {
            if(res.next())
            {
                if(null != param) {
                    param.m_FBS_AlmParam.op_cmd = res.getInt("op_cmd");
                    param.m_FBS_AlmParam.groupvol_high_val = res.getFloat("groupvol_high_val");;    //'组端电压高阈值',
                    param.m_FBS_AlmParam.groupvol_low_val = res.getFloat("groupvol_low_val");        //'组端电压低阈值',
                    param.m_FBS_AlmParam.monvol_high_val = res.getFloat("monvol_high_val");            //'单体电压高阈值',
                    param.m_FBS_AlmParam.monvol_low_val = res.getFloat("monvol_low_val");            //'单体电压低阈值',
                    param.m_FBS_AlmParam.montmp_high_val = res.getFloat("montmp_high_val");            //'单体温度高阈值',
                    param.m_FBS_AlmParam.montmp_low_val = res.getFloat("montmp_low_val");            //'单体温度低阈值',
                    param.m_FBS_AlmParam.monres_high_val = res.getFloat("monres_high_val");            //'单体内阻高阈值',
                    param.m_FBS_AlmParam.monres_low_val = res.getFloat("monres_low_val");            //'单体内阻低阈值',
                    param.m_FBS_AlmParam.moncap_high_val = res.getFloat("moncap_high_val");            //'单体容量高阈值',
                    param.m_FBS_AlmParam.moncap_low_val = res.getFloat("moncap_low_val");            //'单体容量低阈值',
                }
            }
        } catch (SQLException e) {
            sql.logger.error("FBS9100_Task_Thread_SQL.queryDev6185AlmParamBydev_id():" + e.toString(), e);
        } finally {
            if(null != res) {
                try {
                    res.close();
                } catch (SQLException e) {
                    sql.logger.error("FBS9100_Task_Thread_SQL.queryDev6185AlmParamBydev_id():" + e.toString(), e);
                }
            }
            sql.close_con();
        }
    }
iec61852_forQGN/src/com/dec/fbs9100/FBS9100_VCData.java
@@ -40,6 +40,16 @@
    public double tmp[] = new double[FBS9100_ComBase.MonomerCountMax];
    public double mon_JH[] = new double[FBS9100_ComBase.MonomerCountMax];
    
    public boolean[] groupvolalm = new boolean[FBS9100_ComBase.BattGroupCountMax];        //组端电压告警
    public double[] test_end_vol = new double[FBS9100_ComBase.BattGroupCountMax];        //测试终止电压
    public double[] test_end_cap = new double[FBS9100_ComBase.BattGroupCountMax];        //测试终止容量
    public double[] test_timelong = new double[FBS9100_ComBase.BattGroupCountMax];        //测试终止时间
    public boolean[] monvol_alm = new boolean[FBS9100_ComBase.MonomerCountMax];            //单体电压告警
    public boolean[] monres_alm = new boolean[FBS9100_ComBase.MonomerCountMax];            //单体内阻告警
    public boolean[] montmp_alm = new boolean[FBS9100_ComBase.MonomerCountMax];            //单体温度告警
    public boolean[] moncap_alm = new boolean[FBS9100_ComBase.MonomerCountMax];            //单体容量告警
    public FBS9100_VCData clone()
    {
        FBS9100_VCData obj = new FBS9100_VCData();  
iec61852_forQGN/src/com/dec/fbs9100/Sql_Mysql.java
@@ -54,6 +54,10 @@
    public final static String BattRtData_Table = DB_RamDB + ".`tb_batt_rtdata`";
    public final static String BattRtState_Table = DB_RamDB + ".`tb_batt_rtstate`";
    
    public final static String BattRtAlarm_Table = DB_RamDB + ".`tb_batt_rtalarm`";
    public final static String BattRsAlarm_Table = DB_RamDB + ".`tb_batt_rsalarm`";
    public final static String CInterfaceState_Table = DB_RamDB + ".`tb_cinterface_state`";
    
    public final static String HardDevSmsState_Table = DB_RamDB + ".`tb_hard_dev_sms_state`";
@@ -76,6 +80,7 @@
    public final static String FBS9100_61850_jhstate_Table = DB_RamDB + ".`tb_61850_jhstate`";
    
    public final static String FBS9100_offlineyhplan = DB_RamDB + ".tb_fbs9100_offlineyhplan";                        //61850离线养护计划参数表
    public final static String Dev_6185_AlmParam = DB_RamDB + ".tb_dev_6185_almparam";                            //6185告警参数表
    //--------------------------------------------------------------------------------------------//
    //--------------------------------------------------------------------------------------------//
    public final static String AppSys_Table = DB_AppSys + ".`tb_app_sys`";
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.203;
    public final static double m_VersionNum = 10.204;
    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,9 @@
全功能逆变假负载设备带61850 通信程序
    设备ID  618520001
V10.204 edit lijun at 2024-07-02
    1.新增全功能61850点位中的告警遥调设置命令
    2.新增全功能61850点位中的告警遥信数据读取以及更新至数据库
V10.203 edit lijun at 2023-11-15
    1.核容参数点位修改