FBS9600通信程序,带了均衡电压版本
Administrator
2021-12-27 03e9f67b82f4883395cec49b72a53ea03a4c8da6
V1.104 lijun edit at 2021-12-27
1.修复单体温度没有-10℃ bug
15个文件已修改
159 ■■■■ 已修改文件
BattMonitor_FBS9600S/bin/.gitignore 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9600S/bin/com/battdata_rt/BattData_RT_Array.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9600S/bin/com/dev/fbs9009/BattResStorePro_Thread.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9600S/bin/com/dev/fbs9600s/FBS9600S_ServerSocket_Thread.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9600S/bin/com/dev/fbs9600s/FBS9600S_SocketClient_Thread.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9600S/bin/com/dev/fbs9600s/FBS9600S_SocketClient_Thread_SQL.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9600S/bin/com/dev/fbs9600s/FBS9600S_SystemState.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9600S/bin/com/version_inf/version_inf.txt 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9600S/src/com/battdata_rt/BattData_RT_Array.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9600S/src/com/dev/fbs9009/BattResStorePro_Thread.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9600S/src/com/dev/fbs9600s/FBS9600S_ServerSocket_Thread.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9600S/src/com/dev/fbs9600s/FBS9600S_SocketClient_Thread.java 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9600S/src/com/dev/fbs9600s/FBS9600S_SocketClient_Thread_SQL.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9600S/src/com/dev/fbs9600s/FBS9600S_SystemState.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9600S/src/com/version_inf/version_inf.txt 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_FBS9600S/bin/.gitignore
@@ -1,2 +1 @@
/com/
/main/
BattMonitor_FBS9600S/bin/com/battdata_rt/BattData_RT_Array.class
Binary files differ
BattMonitor_FBS9600S/bin/com/dev/fbs9009/BattResStorePro_Thread.class
Binary files differ
BattMonitor_FBS9600S/bin/com/dev/fbs9600s/FBS9600S_ServerSocket_Thread.class
Binary files differ
BattMonitor_FBS9600S/bin/com/dev/fbs9600s/FBS9600S_SocketClient_Thread.class
Binary files differ
BattMonitor_FBS9600S/bin/com/dev/fbs9600s/FBS9600S_SocketClient_Thread_SQL.class
Binary files differ
BattMonitor_FBS9600S/bin/com/dev/fbs9600s/FBS9600S_SystemState.class
Binary files differ
BattMonitor_FBS9600S/bin/com/version_inf/version_inf.txt
@@ -4,4 +4,10 @@
    当前版本为直接与FBS通讯程序,目前协议中只添加了单体数据读取和内阻测试控制以及单体内阻数据记录等等
    
V1.102
    1.为兼容老版本fuguang.war平台和fg.war平台的控制功能
    1.为兼容老版本fuguang.war平台和fg.war平台的控制功能
V1.103 lijun edit at 2021-08-26
    1.修改当前设备的内阻设备状态响应策略
V1.104 lijun edit at 2021-12-27
    1.修复单体温度没有-10℃ bug
BattMonitor_FBS9600S/src/com/battdata_rt/BattData_RT_Array.java
@@ -158,19 +158,19 @@
            {
                BattData_RT rtdata = Data_Array.get(n);
                if(true == std_SignalName) {
                    sql_str = "SELECT DISTINCT DeviceId,SignalId,SignalName,CInterFaceId "
                    sql_str = " SELECT DISTINCT DeviceId,SignalId,SignalName,CInterFaceId "
                            + " FROM " + Sql_Mysql.BattInf_Table
                            + " WHERE BattGroupId=" + rtdata.BattGroupId 
                            + " ORDER BY SignalName ASC";
                } else {
                    sql_str = "SELECT DISTINCT DeviceId,SignalId,SignalName,CInterFaceId "
                    sql_str = " SELECT DISTINCT DeviceId,SignalId,SignalName,CInterFaceId,DeviceName "
                            + " FROM " + Sql_Mysql.BattInf_Table
                            + " WHERE BattGroupId=" + rtdata.BattGroupId 
                            + " ORDER BY "
                            + " CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(DeviceName,'-',-2),'-',1)  AS SIGNED) ASC, "
                            + " CAST(TRIM('单体电压' FROM SignalName) AS SIGNED) ASC";
                }
                System.out.println(sql_str);
                res = sql.sqlMysqlQuery(sql_str);
                
                boolean mon_data_ready = false;
BattMonitor_FBS9600S/src/com/dev/fbs9009/BattResStorePro_Thread.java
@@ -226,7 +226,7 @@
                    
                    if(0x00 == rt_data.mTestData.batt_res_test_state) {
                        try {
                            if(rt_data.al_MonVol.get(0).monRes > 0) {
                            if(rt_data.al_MonVol.get(rt_data.al_MonVol.size()-1).monRes > 0) {
                                if(rt_data.mTestData.batt_res_test_cnt_last != rt_data.mTestData.batt_res_test_cnt) {
                                    rt_data.mTestData.batt_res_test_cnt_last = rt_data.mTestData.batt_res_test_cnt;
                                    if(rt_data.mTestData.batt_res_test_cnt > 0) {
BattMonitor_FBS9600S/src/com/dev/fbs9600s/FBS9600S_ServerSocket_Thread.java
@@ -22,7 +22,7 @@
        
        for(int n=0; n<m_Data.getItemCount(); n++)
        {
            if((9600 != (m_Data.getItem(n).FBSDeviceId/100000)) && (9611 != (m_Data.getItem(n).FBSDeviceId/100000)))
            if((96 != (m_Data.getItem(n).FBSDeviceId/10000000)) && (9611 != (m_Data.getItem(n).FBSDeviceId/100000)))
            {
                continue;
            }            
BattMonitor_FBS9600S/src/com/dev/fbs9600s/FBS9600S_SocketClient_Thread.java
@@ -65,20 +65,22 @@
    
    @Override
    public void run() {
        //System.out.println(" FBS9600S_SocketClient_Thread Start at " + Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
        System.out.println(" Dev_ID: " + systemState.dev_id + " \tBattGroupCount:" + m_BattCount +"\t MonCount:" + m_BattMonCount + Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
        int monCount = 0;                        //单体索引下标
        int runCount = 0;
        FBS9600S_SocketClient_Thread_SQL.insertOrUpdateFBS9600StateByDev_id(pool,systemState);
        FBS9600S_SocketClient_Thread_SQL.insertOrUpdateFBS9600SetParamByDev_id(pool,systemState);
        while(true) {
            try {
                if(runCount % 5 == 0) {
                if(runCount % 10 == 0) {
                    //读取系统状态以及版本
                    {
                        //m_cmd = new FBS9600S_Cmd(FBS9600S_ComBase.CMD_READ_MODBUS, FBS9600S_ComBase.CMD_SystemParam_Addr, 1);
                        //SocketComm(m_cmd, m_cmd.createByteBuffer(m_cmd.reg_count));
                        m_cmd = new FBS9600S_Cmd(FBS9600S_ComBase.CMD_READ_MODBUS, FBS9600S_ComBase.CMD_SystemVersion_Addr, FBS9600S_SystemState.REG_DEVVERSION_COUNT);
                        SocketComm(m_cmd, m_cmd.createByteBuffer(m_cmd.reg_count));
                    }
                    }
                    
                    //读取组端数据
                    {
@@ -86,15 +88,16 @@
                        SocketComm(m_cmd, m_cmd.createByteBuffer(m_cmd.reg_count));
                    }
                    
                }
                if(runCount %20 == 0){
                    //读取内阻测试次数
                    {
                        m_cmd = new FBS9600S_Cmd(FBS9600S_ComBase.CMD_READ_MODBUS, FBS9600S_ComBase.CMD_BattResCount_Addr, FBS9600S_ComBase.CMD_ControlRegCount);
                        SocketComm(m_cmd, m_cmd.createByteBuffer(m_cmd.reg_count));
                    }
                }
                }
            
                if(runCount %4 == 0) {
                if(runCount %25 == 0) {
                    //System.out.println("读取单体数据");
                    int readCount = (int)Math.ceil((double)m_BattMonCount/100);        //根据单体数判断当前读取单体信息读多少次
                    int regindex = (monCount%readCount)*100;
@@ -117,11 +120,11 @@
                        SocketComm(m_cmd, m_cmd.createByteBuffer(m_cmd.reg_count));
                    }
                    
                    {
                    /*{
                        //读取单体均衡电流
                        m_cmd = new FBS9600S_Cmd(FBS9600S_ComBase.CMD_READ_MODBUS, FBS9600S_ComBase.CMD_MonJHCurr_Start_Addr+regindex, FBS9600S_SystemState.REG_MONDATA_COUNT);
                        SocketComm(m_cmd, m_cmd.createByteBuffer(m_cmd.reg_count));
                    }
                    }*/
                    monCount ++;
                    if(monCount > 99999990) {
                        monCount = 0;
@@ -203,6 +206,25 @@
                    FBS9600S_SocketClient_Thread_SQL.updateFbs9600StateCmdBydev_id(pool, temp);
                    
                }
                FBS9600S_SystemState tmp = FBS9600S_SocketClient_Thread_SQL.queryFbs9100ParamCmdBydev_id(pool, systemState.dev_id);
                if(tmp.op_cmd == FBS9600S_ComBase.CMD_StartResTestNew) {
                    //System.out.println("DDDDDDDDDDDDDDDDDDDD");
                    //启动内阻测试
                    m_cmd = new FBS9600S_Cmd(FBS9600S_ComBase.CMD_SINGL_WRITE_MODBUS, FBS9600S_ComBase.CMD_StartResTest_Addr, FBS9600S_ComBase.CMD_ControlRegCount);
                    if(SocketComm(m_cmd, m_cmd.createByteBuffer(m_cmd.reg_count))) {
                        tmp.op_cmd = FBS9600S_ComBase.CMD_StartResTestNewAck;
                        //System.out.println("启动内阻测试成功");
                    }else {
                        //System.out.println("启动内阻测试失败");
                        tmp.op_cmd = FBS9600S_ComBase.DataType_Null;
                    }
                    FBS9600S_SocketClient_Thread_SQL.updateFbs9100ParamCmdBydev_id(pool, tmp);
                }
                //System.out.println("$$$$$$$$$$$$$$$");
                FBS9600S_SocketClient_Thread_SQL.UpdateFBS9600StateByDev_id(pool, systemState);
                
@@ -210,7 +232,7 @@
                if(runCount > 99999990) {
                    runCount = 0;
                }
                sleep(200);
                sleep(50);
            } catch (Exception e) {
                e.printStackTrace();
            }
@@ -281,7 +303,7 @@
                        }
                    } else { 
                        rx_read_time_out += 1;
                        if(bytebuffer_for_socket_RX.position() >= 7 && rx_read_time_out > 15){
                        if(bytebuffer_for_socket_RX.position() >= 8 && rx_read_time_out > 15){
                            break;
                        }
                        if(rx_read_time_out > 500) { 
@@ -309,6 +331,7 @@
                //System.err.println(data.cmd+"===="+data.data_addr+"读取报错");
                systemState.addErrorcount();
            }else{
                systemState.cleatErrorCount();
                systemState.addCommcount();    
            }
            if(in != null) {
@@ -454,6 +477,7 @@
                m_RTData[n].mTestData.updateCurrFrom_FBSDev((float) systemState.groupCurr[n]);
                //---------------------------------------------------------------------------//
                //设置内阻测试次数
                m_RTData[n].mTestData.batt_res_test_state = systemState.dev_res_test_state;
                m_RTData[n].mTestData.batt_res_test_cnt = systemState.resTestCount;
                //--------------------- 先更新单体数据,再更新电池状态数据 ----------------------//
                m_RTData[n].updata_BattRtData_To_RamDb();
@@ -488,8 +512,7 @@
                    }else if(FBS9600S_ComBase.DataType_MonJHCurr == datatype) {
                        //单体均衡电流
                        m_RTData[n].al_MonVol.get(i).monJHcurr = mondata[mon_index++];
                    }
                    }
                }
            }
        }
BattMonitor_FBS9600S/src/com/dev/fbs9600s/FBS9600S_SocketClient_Thread_SQL.java
@@ -24,6 +24,7 @@
                + " dev_version='V"+ systemState.sys_version+"',"
                + " record_datetime='"+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms)+"',"
                + " dev_workstate = '"+systemState.dev_workstate+"',"
                + " dev_res_test_state = '"+systemState.dev_res_test_state+"',"
                + " dev_captest_groupvol='"+systemState.getDeviceGroupVol()+"',"
                + " dev_captest_curr='"+systemState.getDeviceTestCurr()+"',"
                + " dev_captest_onlinevol = '"+systemState.getDeviceOnlineVol()+"',"
@@ -54,8 +55,8 @@
                  " SET dev_id = '"+ systemState.dev_id+"', "
                + " dev_ip='"+ systemState.dev_ip+"',"  
                + " dev_version='V"+ systemState.sys_version+"',"
                + " record_datetime='"+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms)+"',"
                + " dev_workstate = '"+systemState.dev_workstate+"',"
                + " dev_res_test_state = '"+systemState.dev_res_test_state+"',"
                + " dev_captest_groupvol='"+systemState.getDeviceGroupVol()+"',"
                + " dev_captest_curr='"+systemState.getDeviceTestCurr()+"',"
                + " dev_captest_onlinevol = '"+systemState.getDeviceOnlineVol()+"',"
@@ -65,6 +66,9 @@
                    
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        //String sql_str_replace = "REPLACE INTO " + sql_str_base;
        if(systemState.dev_errcommcount < 5) {
            sql_str_base +=  " ,record_datetime='"+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms)+"' ";
        }
        String sql_str_update = "UPDATE " + sql_str_base +" Where dev_id="+systemState.dev_id;
        try {
            sql.sqlMysqlExecute(sql_str_update);
@@ -152,9 +156,63 @@
        return sys;
    }
    
    public static void updateFbs9600StateCmdBydev_id(MysqlConnPool con_pool, FBS9600S_SystemState sysState)
    {
        String sql_str_base = Sql_Mysql.FBS9600State_Table + " SET "
                            + "dev_id=" + sysState.dev_id + ", "
                            + "op_cmd=" + sysState.op_cmd;
        String sql_str_update = "UPDATE " + sql_str_base + " WHERE dev_id = " + sysState.dev_id;
        //String sql_str_replace = "REPLACE INTO " + sql_str_base;
        Sql_Mysql sql = new Sql_Mysql(con_pool.getConn());
        try {
            sql.sqlMysqlExecute(sql_str_update);
        } catch (SQLException e) {
            //e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
    /**
     *     查询9600State
     * @param con_pool
     * @param sysState
     */
    public static FBS9600S_SystemState queryFbs9100ParamCmdBydev_id(MysqlConnPool con_pool, int dev_id)
    {
        FBS9600S_SystemState sys = new FBS9600S_SystemState("", dev_id);
        String sql_str = " select * from " + Sql_Mysql.FBS9100SetParam_Table + " "
                       + " where dev_id= " + dev_id;
        Sql_Mysql sql = new Sql_Mysql(con_pool.getConn());
        ResultSet res = null;
        try {
            //System.out.println(sql_str);
            res = sql.sqlMysqlQuery(sql_str);
            if(res.next()) {
                sys.op_cmd = res.getInt("op_cmd");
            }
        } catch (SQLException e) {
            //e.printStackTrace();
        } finally {
            if(null != res) {
                 try {
                    res.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            sql.close_con();
        }
        return sys;
    }
    public static void updateFbs9100ParamCmdBydev_id(MysqlConnPool con_pool, FBS9600S_SystemState sysState)
    {
        String sql_str_base = Sql_Mysql.FBS9100SetParam_Table + " SET "
                            + "dev_id=" + sysState.dev_id + ", "
                            + "op_cmd=" + sysState.op_cmd;
        String sql_str_update = "UPDATE " + sql_str_base + " WHERE dev_id = " + sysState.dev_id;
@@ -242,4 +300,11 @@
            sql.close_con();
        }
    }
    public static void main(String[] args) {
        MysqlConnPool pool = new MysqlConnPool("127.0.0.1", 3360, 5);
        FBS9600S_SystemState sys = new FBS9600S_SystemState("12.52.33.11", 960500001);
        UpdateFBS9600StateByDev_id(pool, sys);
    }
}
BattMonitor_FBS9600S/src/com/dev/fbs9600s/FBS9600S_SystemState.java
@@ -20,7 +20,7 @@
    public int sys_version;                                                        //系统版本号
    public int sys_state;                                                        //系统状态     0:常规模式        1:内阻模式        2:编码模式
    public int resTestCount = 0;
    public int dev_res_test_state;                                                //内阻测试状态
    
    public float groupVol[];                                                    //组端电压
    public float onlineVol[];                                                    //在线电压
@@ -83,9 +83,13 @@
    public void addErrorcount() {
        if(this.dev_errcommcount > 999999990) {
            this.dev_errcommcount = 0;
            this.dev_errcommcount = 10;
        }        
        this.dev_errcommcount ++;
    }
    public void cleatErrorCount() {
        this.dev_errcommcount = 0;
    }
    public void addCommcount() {
@@ -176,8 +180,12 @@
              }
          }
          if(FBS9600S_ComBase.SYS_STATE_RESMODE == this.sys_state) {
              workstate = FBS9600S_ComBase.SYS_WORKSTATE_RESTEST;
              //workstate = FBS9600S_ComBase.SYS_WORKSTATE_RESTEST;
              dev_res_test_state = 1;
          }else {
              dev_res_test_state = 0;
          }
          //System.out.println("state:"+this.dev_res_test_state);
          this.dev_workstate = workstate;  
        return true;
    }
@@ -230,7 +238,7 @@
            //单体温度
            mon_index = (data_addr - FBS9600S_ComBase.CMD_MonTMP_Start_Addr);
            for(int i = 0;i<REG_MONDATA_COUNT;i++) {
                mon_tmp[mon_index+i] = (float)ComBase.changeShortToDouble(bf.getShort())/10;
                mon_tmp[mon_index+i] = ((float)ComBase.changeShortToDouble(bf.getShort())/10) - 10;
            }
            
        }else if(FBS9600S_ComBase.CMD_MonRES_Start_Addr <= data_addr && FBS9600S_ComBase.CMD_MonRES_End_Addr >= data_addr) {
BattMonitor_FBS9600S/src/com/version_inf/version_inf.txt
@@ -4,4 +4,10 @@
    当前版本为直接与FBS通讯程序,目前协议中只添加了单体数据读取和内阻测试控制以及单体内阻数据记录等等
    
V1.102
    1.为兼容老版本fuguang.war平台和fg.war平台的控制功能
    1.为兼容老版本fuguang.war平台和fg.war平台的控制功能
V1.103 lijun edit at 2021-08-26
    1.修改当前设备的内阻设备状态响应策略
V1.104 lijun edit at 2021-12-27
    1.修复单体温度没有-10℃ bug