| | |
| | | /********************************* head of file SocketClient.java ***********************************/
|
| | | package com.dec.fbs9100;
|
| | |
|
| | | import java.io.IOException;
|
| | | import java.net.InetAddress;
|
| | | import java.text.DecimalFormat;
|
| | |
| | | import com.battdata_rt.BattStatData;
|
| | | import com.dec.fbs9100.FBS9100_TestTime;
|
| | | import com.dec.fbs9100.BTS61850_ResCapData;
|
| | |
|
| | | /****************************************************************************************************/
|
| | | public class BTS_61850_SocketClient extends Thread
|
| | | {
|
| | | public class BTS_61850_SocketClient extends Thread {
|
| | | private FBS9100_VCData m_FBS_VCData = null;
|
| | | private FBS9100_ParamDischarge m_FBS_DiscParam = null;
|
| | | private FBS9100_ParamDischarge m_FBS_DiscParamFromDev = null;
|
| | |
| | | private List<BTS61850_EventRecord> events; //事件记录表
|
| | |
|
| | | /*********************************************************************************************/
|
| | | /********************** IEC61850 partical ****************************************************/
|
| | | /**********************
|
| | | * IEC61850 partical
|
| | | ****************************************************/
|
| | | private volatile ClientAssociation m_Association;
|
| | | private ServerModel m_ServerModel;
|
| | |
|
| | | /*********************************************************************************************/
|
| | | /*********************************************************************************************/
|
| | | public BTS_61850_SocketClient(MysqlConnPool m_cp, FBS9100_StatAndParam stat_param, BattData_RT_Array AL_RTdata)
|
| | | {
|
| | | public BTS_61850_SocketClient(MysqlConnPool m_cp, FBS9100_StatAndParam stat_param, BattData_RT_Array AL_RTdata) {
|
| | | test_type = 1;
|
| | | m_ConnPool = m_cp;
|
| | | m_StatAndParam = stat_param;
|
| | |
| | | }
|
| | |
|
| | | /*********************************************************************************************/
|
| | | public void run()
|
| | | {
|
| | | public void run() {
|
| | | this.setName(TAG);
|
| | | System.out.println(this.getName() + " - BTS_IEC61850_ClientThread Started ...");
|
| | | while(true)
|
| | | {
|
| | | while (true) {
|
| | | //FBS9100_Task_Thread_SQL.runinsertime(m_ConnPool);
|
| | | try {
|
| | | Thread.sleep(5000);
|
| | |
| | | ClientSap clientSap = new ClientSap();
|
| | | m_Association = clientSap.associate(InetAddress.getByName(mDevIp), 102, null, null);
|
| | | } catch (IOException e) {
|
| | | System.out.println(Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms)+" IP:"+FBSDeviceIp+" - BTS_IEC61850_Client Unable to connect to remote host.");
|
| | | System.out.println(Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms) + " IP:" + FBSDeviceIp
|
| | | + " - BTS_IEC61850_Client Unable to connect to remote host.");
|
| | | continue;
|
| | | }
|
| | |
|
| | | System.out.println(Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms)+" IP:"+FBSDeviceIp+" - BTS_IEC61850_Client successfully connected to ied server"+FBSDeviceIp);
|
| | | System.out.println(Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms)+" IP:"+FBSDeviceIp+" - BTS_IEC61850_Client retrieving model...");
|
| | | System.out.println(Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms) + " IP:" + FBSDeviceIp
|
| | | + " - BTS_IEC61850_Client successfully connected to ied server" + FBSDeviceIp);
|
| | | System.out.println(Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms) + " IP:" + FBSDeviceIp
|
| | | + " - BTS_IEC61850_Client retrieving model...");
|
| | |
|
| | | try {
|
| | | m_ServerModel = m_Association.retrieveModel();
|
| | | } catch (ServiceError | IOException e) {
|
| | | System.out.println("**********************************");
|
| | | System.out.println("Service error: " + e.getMessage());
|
| | | System.out.println("**********************************");
|
| | | continue;
|
| | | }
|
| | | System.out.println(Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms)+" IP:"+FBSDeviceIp+" - BTS_IEC61850_Client successfully read model");
|
| | | System.out.println(Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms) + " IP:" + FBSDeviceIp
|
| | | + " - BTS_IEC61850_Client successfully read model");
|
| | | m_FBS_VCData.m_SysState.resetErrCommCount();
|
| | | FBS9100_Task_Thread_SQL.inseartOrUpdateFBS9100SFODParam(m_ConnPool,m_StatAndParam.clParam, m_StatAndParam);
|
| | |
|
| | |
| | | int cmd = m_FBS_DiscParam.test_cmd;
|
| | | if(true == BTS_IEC61850_SocketComm(cmd)) {
|
| | | m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_StartAck;
|
| | | }else {
|
| | | if(cmd == FBS9100_ComBase.CMD_StartDischarge) {
|
| | | int errcode = (int) (readInt64NodeData(FBSDeviceName + "/btgGGIO1.AnIn28.mag.i",Fc.MX));
|
| | | System.out.println("设备"+m_StatAndParam.dev_id+":启动核容测试失败;errcode:" + errcode+" at "+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
|
| | | }
|
| | | }
|
| | | |
| | | |
| | | } else if(FBS9100_ComBase.CMD_Stop == m_FBS_DiscParam.op_cmd) {
|
| | | if(true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_Stop)) {
|
| | | m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_StopAck;
|
| | |
| | | //读取离线养护参数
|
| | | if(true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_GetOffLineYHParam)) {
|
| | | m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_GetOffLineYHParam_ACK;
|
| | | FBS9100_Task_Thread_SQL.updateFbs9100SetParamOffLineYHParamBydev_id(m_ConnPool, m_StatAndParam);
|
| | | FBS9100_Task_Thread_SQL.updateFbs9100SetParamOffLineYHParamBydev_id(m_ConnPool,
|
| | | m_StatAndParam);
|
| | | //更新离线养护参数
|
| | | FBS9100_Task_Thread_SQL.updateBTS61850OffLineyhPlanOnRam(m_ConnPool,m_StatAndParam);
|
| | | System.out.println("读取离线养护参数成功");
|
| | |
| | | if(FBS9100_ComBase.CMD_ReadFodParam == cl_param.op_cmd) {
|
| | | //System.out.println(cl_param.op_cmd);
|
| | | if(true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_ReadFodParam)){
|
| | | FBS9100_Task_Thread_SQL.inseartOrUpdateFBS9100SFODParam(m_ConnPool,m_StatAndParam.clParam, m_StatAndParam);
|
| | | FBS9100_Task_Thread_SQL.inseartOrUpdateFBS9100SFODParam(m_ConnPool,
|
| | | m_StatAndParam.clParam, m_StatAndParam);
|
| | | m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_ReadFodParamSus;
|
| | | //System.out.println("doing read");
|
| | | }
|
| | |
| | | if(m_StatAndParam != null) {
|
| | | //System.err.println(m_StatAndParam);
|
| | | FBS9100_Task_Thread_SQL.updateFbs9100StateByDev_Id(m_ConnPool, m_StatAndParam);
|
| | | FBS9100_Task_Thread_SQL.inseartOrUpdateFBS9100SFODState(m_ConnPool, m_StatAndParam,m_StatAndParam.fbs9100s_fod_state);
|
| | | FBS9100_Task_Thread_SQL.inseartOrUpdateFBS9100SFODState(m_ConnPool, m_StatAndParam,
|
| | | m_StatAndParam.fbs9100s_fod_state);
|
| | |
|
| | | FBS9100_Task_Thread_SQL.insertOrUpdateJhStateTable(m_ConnPool, m_StatAndParam);
|
| | |
|
| | |
| | | }
|
| | | //---------------------------------------------------------------------------------//
|
| | | /*
|
| | | if(0 == (DevReadCount%7)) {
|
| | | BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_GetState, ByteBuffer.allocate(0));
|
| | | if(m_StatAndParam != null) {
|
| | | FBS9100_Task_Thread_SQL.updateFbs9100StateByDev_Id(m_ConnPool, m_StatAndParam);
|
| | | }
|
| | | }
|
| | | * if(0 == (DevReadCount%7)) {
|
| | | * BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_GetState,
|
| | | * ByteBuffer.allocate(0)); if(m_StatAndParam != null) {
|
| | | * FBS9100_Task_Thread_SQL.updateFbs9100StateByDev_Id(m_ConnPool,
|
| | | * m_StatAndParam); } }
|
| | | */
|
| | | //---------------------------------------------------------------------------------//
|
| | | |
| | | |
| | | |
| | |
|
| | | //离线养护计划监测-------------------------------------------------------------------------------//
|
| | | RunOffLineYHPlan();
|
| | |
| | | private void RunOffLineYHPlan() {
|
| | | BTS61850_OffLineYHPlan plan = m_StatAndParam.bts61850_OffLineYHPlan;
|
| | | long timelong = calculTimelong(plan.OffLineYHstarttime, new Date());
|
| | | if (plan.OffLineYHTimes > 0 && plan.OffLineYHOnceCycle > 0 && timelong >= 0) {
|
| | | //执行中的放电计划(包含已经完成的放电放电计划)
|
| | | int day_count =(int) timelong / (60*60*24); //和计划时间开始相差多少天
|
| | | int sec_count = (int) timelong%(60*60*24); //和计划时间相差秒数
|
| | | |
| | | if(plan.OffLineYHTimes > 0 && plan.OffLineYHOnceCycle >0) {
|
| | | int circle = day_count / plan.OffLineYHOnceCycle; //相隔多少周期
|
| | | int remain = day_count % plan.OffLineYHOnceCycle; //和整个周期相隔多少时长
|
| | | if(remain == 0 && circle < plan.OffLineYHTimes && sec_count < 120) {
|
| | | if(m_FBS_VCData.m_SysState.WorkState == 6) {
|
| | | System.out.println("启动离线养护计划成功"+Com.getDateTimeFormat(new Date(),Com.DTF_YMDhms));
|
| | | //离线养护已启动
|
| | | plan.successCount = circle+1; //当前成功次数
|
| | | return;
|
| | |
| | | if(m_FBS_VCData.m_SysState.WorkState == 0) {
|
| | | //只有设备在在线监测状态才能启动离线养护任务
|
| | | //启动离线养护
|
| | | BTS_IEC61850_Write_CO_Node(FBSDeviceName+"/ncdGGIO1.SPCSO13.Oper", true);
|
| | | boolean flag =BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO13.Oper", true);
|
| | | if(flag) {
|
| | | System.out.println("启动离线养护计划成功" + Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | |
| | | }
|
| | | return res_op;
|
| | | }
|
| | |
|
| | | /**
|
| | | * @throws IOException
|
| | | * @throws ServiceError *******************************************************************************************/
|
| | | * @throws ServiceError
|
| | | *******************************************************************************************/
|
| | | public void writeNodeData(String reference, String fc_str,double disCurr) {
|
| | | //String[] a =null;
|
| | | //a = new String[2];
|
| | |
| | | }
|
| | | // System.out.println("Successfully write data.");
|
| | | }
|
| | |
|
| | | public void writeNodeDataInt(String reference, String fc_str,long disCurr) {
|
| | | //String[] a =null;
|
| | | //a = new String[2];
|
| | |
| | | }
|
| | | // System.out.println("Successfully write data.");
|
| | | }
|
| | |
|
| | | private boolean BTS_IEC61850_Write_Singal_Node(String objectReference) {
|
| | | boolean res_op = false;
|
| | | //DataSet ds_pm1 = m_ServerModel.getDataSet(FBSDeviceName+"/ncdGGIO1");
|
| | |
| | | return res_op;
|
| | | }
|
| | |
|
| | | private boolean BTS_IEC61850_Write_SetMag_Node(String objectReference, FBS9100_ParamDischarge m_FBS_DiscParam) throws IOException, ServiceError {
|
| | | private boolean BTS_IEC61850_Write_SetMag_Node(String objectReference, FBS9100_ParamDischarge m_FBS_DiscParam)
|
| | | throws IOException, ServiceError {
|
| | | boolean res_op = false;
|
| | | DataSet ds_pm1 = m_ServerModel.getDataSet(FBSDeviceName+"/ncdGGIO1");
|
| | |
|
| | | //FcModelNode fcModelNode = (FcModelNode)m_ServerModel.findModelNode(objectReference, Fc.SP);
|
| | | // FcModelNode fcModelNode =
|
| | | // (FcModelNode)m_ServerModel.findModelNode(objectReference, Fc.SP);
|
| | | //ModelNode fc_mode = fcModelNode.getChild("ctlVal");
|
| | | // if(null != ds_pm1) {
|
| | | // try {
|
| | |
| | | //System.exit(0);
|
| | | return res_op;
|
| | | }
|
| | |
|
| | | /*********************************************************************************************/
|
| | | private float readFloatNodeData(String reference, Fc fc) {
|
| | | float res_val = 0;
|
| | |
| | | float res = Float.parseFloat(a[1]);
|
| | | return res;
|
| | | }
|
| | |
|
| | | /*********************************************************************************************/
|
| | | private String readStringNodeData(String reference,Fc fc) {
|
| | | String res_val = null;
|
| | |
| | | //System.out.println(resul);
|
| | | return resul; //控制节点TRUE FALSE
|
| | | }
|
| | |
|
| | | /*********************************************************************************************/
|
| | |
|
| | | public boolean BTS_IEC61850_SocketComm(int cmd) throws InterruptedException
|
| | | {
|
| | | public boolean BTS_IEC61850_SocketComm(int cmd) throws InterruptedException {
|
| | | boolean comm_res = false;
|
| | | try {
|
| | | if(FBS9100_ComBase.CMD_GetVIData == cmd) {
|
| | |
| | | int m = 28;
|
| | | for(int n=0; n<size_cnt; n++) {
|
| | | if(n == 27) {
|
| | | // 跳过新添加的设备不启动原因结果返回
|
| | | continue;
|
| | | }
|
| | | FcModelNode fc_mode = (FcModelNode) ds.getMembers().get(n).getChild("mag").getChild("f");
|
| | |
| | | m_FBS_VCData.battcurr[0] = Double.parseDouble(tf_t.getText());
|
| | | }
|
| | |
|
| | | /*switch(n) {
|
| | | case 3:
|
| | | fod_state.VGroupVol_one= Double.parseDouble(tf_t.getText());
|
| | | break;
|
| | | case 4:
|
| | | fod_state.VpeakVol_one = Double.parseDouble(tf_t.getText());
|
| | | break;
|
| | | case 5:
|
| | | fod_state.VGroupVol_two = Double.parseDouble(tf_t.getText());
|
| | | break;
|
| | | case 6:
|
| | | fod_state.VpeakVol_two = Double.parseDouble(tf_t.getText());
|
| | | break;
|
| | | case 7:
|
| | | fod_state.VGroupVol_three = Double.parseDouble(tf_t.getText());
|
| | | break;
|
| | | case 8:
|
| | | fod_state.VpeakVol_three = Double.parseDouble(tf_t.getText());
|
| | | break;
|
| | | case 9 :
|
| | | fod_state.VGroupVol_four = Double.parseDouble(tf_t.getText());
|
| | | break;
|
| | | case 10:
|
| | | fod_state.VpeakVol_four= Double.parseDouble(tf_t.getText());
|
| | | break;
|
| | | case 103:
|
| | | fod_state.RestTime_one = Double.parseDouble(tf_t.getText());
|
| | | //System.out.println(Double.parseDouble(tf_t.getText()));
|
| | | break;
|
| | | |
| | | }*/
|
| | | /*
|
| | | * switch(n) { case 3: fod_state.VGroupVol_one=
|
| | | * Double.parseDouble(tf_t.getText()); break; case 4: fod_state.VpeakVol_one =
|
| | | * Double.parseDouble(tf_t.getText()); break; case 5: fod_state.VGroupVol_two =
|
| | | * Double.parseDouble(tf_t.getText()); break; case 6: fod_state.VpeakVol_two =
|
| | | * Double.parseDouble(tf_t.getText()); break; case 7: fod_state.VGroupVol_three
|
| | | * = Double.parseDouble(tf_t.getText()); break; case 8: fod_state.VpeakVol_three
|
| | | * = Double.parseDouble(tf_t.getText()); break; case 9 :
|
| | | * fod_state.VGroupVol_four = Double.parseDouble(tf_t.getText()); break; case
|
| | | * 10: fod_state.VpeakVol_four= Double.parseDouble(tf_t.getText()); break; case
|
| | | * 103: fod_state.RestTime_one = Double.parseDouble(tf_t.getText());
|
| | | * //System.out.println(Double.parseDouble(tf_t.getText())); break;
|
| | | * |
| | | * }
|
| | | */
|
| | | if(3 == n) {
|
| | | fod_state.VGroupVol_one= Double.parseDouble(tf_t.getText());
|
| | |
|
| | |
| | |
|
| | | }
|
| | |
|
| | | |
| | | /**************************** 读取均衡供电模块信息 ****************************************/
|
| | | /****************************
|
| | | * 读取均衡供电模块信息
|
| | | ****************************************/
|
| | |
|
| | | if(11 == n) {
|
| | | fbs9100_jhpowerState.setDev_version(tf_t.getText());
|
| | |
| | | fbs9100_jhpowerState.setDev_temp(Double.parseDouble(tf_t.getText()) - 10);
|
| | | }
|
| | |
|
| | | |
| | | if((n >= m) && (n < (m+24*1))) {
|
| | | //System.out.println(n);
|
| | | //System.out.println(Double.parseDouble(tf_t.getText()));
|
| | |
| | | split =new String[2];
|
| | | m_Association.getDataSetValues(ds_stat);
|
| | | String sb= null;
|
| | | String temp = "%s";
|
| | | for(int n=0; n<size_cnt_stat; n++) {
|
| | | 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("%s,%s,%s,%s", c);
|
| | | }
|
| | | sb = String.format(temp, c);
|
| | | m_FBS_VCData.m_SysState.last_dev_61850alam = m_FBS_VCData.m_SysState.dev_61850alam; //记录上一次告警状态
|
| | | m_FBS_VCData.m_SysState.dev_61850alam = sb;
|
| | |
|
| | |
| | | //System.out.println("WorkState:"+WorkState);
|
| | | //System.out.println("m_FBS_VCData.m_SysState.WorkState"+m_FBS_VCData.m_SysState.WorkState);
|
| | | if(m_FBS_VCData.m_SysState.WorkState != WorkState) {
|
| | | BTS61850_EventRecord event = new BTS61850_EventRecord(m_FBSDevId, m_FBS_VCData.m_SysState.WorkState, WorkState, BTS61850_EventRecord.Event_WorkState_Type);
|
| | | BTS61850_EventRecord event = new BTS61850_EventRecord(m_FBSDevId, m_FBS_VCData.m_SysState.WorkState,
|
| | | WorkState, BTS61850_EventRecord.Event_WorkState_Type);
|
| | | events.add(event);
|
| | | |
| | |
|
| | | m_FBS_VCData.m_SysState.WorkState = WorkState;
|
| | | if(WorkState > 0) {
|
| | |
| | | FBS9100_TestTime.restarttime();
|
| | | }
|
| | | }
|
| | | // m_FBS_VCData.m_SysState.CapTestStopType = (int)readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn1.mag.f", Fc.MX);
|
| | | // m_FBS_VCData.m_SysState.CapTestStopType =
|
| | | // (int)readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn1.mag.f", Fc.MX);
|
| | | m_FBS_VCData.m_SysState.conresist = readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn55.mag.f", Fc.MX);
|
| | | m_FBS_VCData.m_SysState.concurr = readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn56.mag.f", Fc.MX);
|
| | | m_FBS_VCData.m_SysState.condvoldp = readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn57.mag.f", Fc.MX);
|
| | |
| | |
|
| | | m_FBS_VCData.m_SysState.condcurr = readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn58.mag.f", Fc.MX);
|
| | | m_FBS_VCData.battcap[0] = readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn2.mag.f", Fc.MX);
|
| | | m_FBS_VCData.m_SysState.CapTestStopType = (int) readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn1.mag.f", Fc.MX);
|
| | | //System.out.println("m_FBS_VCData.m_SysState.captest_stop_type = "+m_FBS_VCData.m_SysState.captest_stop_type);
|
| | | m_FBS_VCData.m_SysState.resttest_count = readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn60.mag.f", Fc.MX);
|
| | | m_FBS_VCData.m_SysState.CapTestStopType = (int) readFloatNodeData(
|
| | | FBSDeviceName + "/ncdGGIO1.AnIn1.mag.f", Fc.MX);
|
| | | // System.out.println("m_FBS_VCData.m_SysState.captest_stop_type =
|
| | | // "+m_FBS_VCData.m_SysState.captest_stop_type);
|
| | | m_FBS_VCData.m_SysState.resttest_count = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn60.mag.f",
|
| | | Fc.MX);
|
| | | //System.err.println(m_FBS_VCData.m_SysState.resttest_count);
|
| | | m_StatAndParam.m_DevVersion = readStringNodeData(FBSDeviceName+"/ncdGGIO1.DevVersion.d",Fc.DC);
|
| | | m_FBS_DiscParamFromDev.DCVolHighLimit = readFloatNodeData(FBSDeviceName+"/ncdGGIO1.DCVolLimit.mag.f", Fc.MX);
|
| | | m_FBS_DiscParamFromDev.ChargeCurrSet = readFloatNodeData(FBSDeviceName+"/ncdGGIO1.ChargeCurr.mag.f", Fc.MX); |
| | | m_FBS_DiscParamFromDev.DCVolHighLimit = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.DCVolLimit.mag.f",
|
| | | Fc.MX);
|
| | | m_FBS_DiscParamFromDev.ChargeCurrSet = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.ChargeCurr.mag.f",
|
| | | Fc.MX);
|
| | |
|
| | | //m_FBS_DiscParamFromDev.DCVolHighLimit = readFloatNodeData(FBSDeviceName+"/ncdGGIO1.DCVolLimi.mag.f", Fc.MX);
|
| | | // m_FBS_DiscParamFromDev.ChargeCurrSet = readFloatNodeData(FBSDeviceName+"/ncdGGIO1.ChargeCur.mag.f", Fc.MX);
|
| | | // m_FBS_DiscParamFromDev.DCVolHighLimit =
|
| | | // readFloatNodeData(FBSDeviceName+"/ncdGGIO1.DCVolLimi.mag.f", Fc.MX);
|
| | | // m_FBS_DiscParamFromDev.ChargeCurrSet =
|
| | | // readFloatNodeData(FBSDeviceName+"/ncdGGIO1.ChargeCur.mag.f", Fc.MX);
|
| | | // System.out.println("m_FBS_DiscParamFromDev.DCVolHighLimit"+m_FBS_DiscParamFromDev.DCVolHighLimit);
|
| | | //System.out.println("m_FBS_DiscParamFromDev.ChargeCurrSet"+m_FBS_DiscParamFromDev.ChargeCurrSet);
|
| | | switch(m_FBS_VCData.m_SysState.WorkState)
|
| | | { |
| | | switch (m_FBS_VCData.m_SysState.WorkState) {
|
| | | case 0:
|
| | | test_type = 1;
|
| | | break;
|
| | |
| | | // }
|
| | | // sleep(1500);
|
| | | if(true == write_res_t) {
|
| | | writeNodeData(FBSDeviceName+"/ncdGGIO1.Para1.setMag.f", "SP",(float)m_StatAndParam.m_FBS_DiscParam.DisCurr);
|
| | | writeNodeData(FBSDeviceName + "/ncdGGIO1.Para1.setMag.f", "SP",
|
| | | (float) m_StatAndParam.m_FBS_DiscParam.DisCurr);
|
| | | float dis_hour_t = m_StatAndParam.m_FBS_DiscParam.DisTime;
|
| | | dis_hour_t = dis_hour_t / 60;
|
| | | writeNodeData(FBSDeviceName+"/ncdGGIO1.Para2.setMag.f", "SP",(float)dis_hour_t);
|
| | | writeNodeData(FBSDeviceName+"/ncdGGIO1.Para3.setMag.f", "SP",(float)m_StatAndParam.m_FBS_DiscParam.DisCap);
|
| | | writeNodeData(FBSDeviceName+"/ncdGGIO1.Para4.setMag.f", "SP",(float)m_StatAndParam.m_FBS_DiscParam.MonomerTmp_High);
|
| | | writeNodeData(FBSDeviceName+"/ncdGGIO1.Para5.setMag.f", "SP",(float)m_StatAndParam.m_FBS_DiscParam.GroupVol_LOW);
|
| | | writeNodeData(FBSDeviceName+"/ncdGGIO1.Para6.setMag.f", "SP",(float)m_StatAndParam.m_FBS_DiscParam.MonomerVol_LOW);
|
| | | writeNodeData(FBSDeviceName + "/ncdGGIO1.Para3.setMag.f", "SP",
|
| | | (float) m_StatAndParam.m_FBS_DiscParam.DisCap);
|
| | | writeNodeData(FBSDeviceName + "/ncdGGIO1.Para4.setMag.f", "SP",
|
| | | (float) m_StatAndParam.m_FBS_DiscParam.MonomerTmp_High);
|
| | | writeNodeData(FBSDeviceName + "/ncdGGIO1.Para5.setMag.f", "SP",
|
| | | (float) m_StatAndParam.m_FBS_DiscParam.GroupVol_LOW);
|
| | | writeNodeData(FBSDeviceName + "/ncdGGIO1.Para6.setMag.f", "SP",
|
| | | (float) m_StatAndParam.m_FBS_DiscParam.MonomerVol_LOW);
|
| | | sleep(2000);
|
| | | }
|
| | | comm_res = true;
|
| | |
| | | BasicDataBind<?> data = new Float32DataBind((BdaFloat32)fc_mode);
|
| | | JTextField tf_t = (JTextField)data.getValueField();
|
| | | //str_out += String.format("#%02d: ", n+1) + tf_t.getText() + " ";
|
| | | switch(n)
|
| | | { |
| | | switch (n) {
|
| | | case 86:
|
| | | m_StatAndParam.clParam.STDCap_one=(int) Double.parseDouble(tf_t.getText());//除硫1标称容量
|
| | | break;
|
| | |
| | | }
|
| | | }else if(FBS9100_ComBase.CMD_WriteFodParam == cmd) {
|
| | | //System.out.println(m_StatAndParam.clParam.STDCap_two);
|
| | | writeNodeData(FBSDeviceName+"/ncdGGIO1.Para11.setMag.f", "SP",(float)m_StatAndParam.clParam.STDCap_one);
|
| | | writeNodeData(FBSDeviceName+"/ncdGGIO1.Para12.setMag.f", "SP",(float)m_StatAndParam.clParam.FloatVol_one);
|
| | | writeNodeData(FBSDeviceName+"/ncdGGIO1.Para13.setMag.f", "SP",(float)m_StatAndParam.clParam.Strength_one);
|
| | | writeNodeData(FBSDeviceName+"/ncdGGIO1.Para14.setMag.f", "SP",(float)m_StatAndParam.clParam.YHStrength_one);
|
| | | writeNodeData(FBSDeviceName+"/ncdGGIO1.Para15.setMag.f", "SP",(float)m_StatAndParam.clParam.TimeLong_one);
|
| | | writeNodeData(FBSDeviceName + "/ncdGGIO1.Para11.setMag.f", "SP",
|
| | | (float) m_StatAndParam.clParam.STDCap_one);
|
| | | writeNodeData(FBSDeviceName + "/ncdGGIO1.Para12.setMag.f", "SP",
|
| | | (float) m_StatAndParam.clParam.FloatVol_one);
|
| | | writeNodeData(FBSDeviceName + "/ncdGGIO1.Para13.setMag.f", "SP",
|
| | | (float) m_StatAndParam.clParam.Strength_one);
|
| | | writeNodeData(FBSDeviceName + "/ncdGGIO1.Para14.setMag.f", "SP",
|
| | | (float) m_StatAndParam.clParam.YHStrength_one);
|
| | | writeNodeData(FBSDeviceName + "/ncdGGIO1.Para15.setMag.f", "SP",
|
| | | (float) m_StatAndParam.clParam.TimeLong_one);
|
| | |
|
| | | writeNodeData(FBSDeviceName+"/ncdGGIO1.Para17.setMag.f", "SP",(float)m_StatAndParam.clParam.STDCap_two);
|
| | | writeNodeData(FBSDeviceName+"/ncdGGIO1.Para18.setMag.f", "SP",(float)m_StatAndParam.clParam.FloatVol_two);
|
| | | writeNodeData(FBSDeviceName+"/ncdGGIO1.Para19.setMag.f", "SP",(float)m_StatAndParam.clParam.Strength_two);
|
| | | writeNodeData(FBSDeviceName+"/ncdGGIO1.Para20.setMag.f", "SP",(float)m_StatAndParam.clParam.YHStrength_two);
|
| | | writeNodeData(FBSDeviceName+"/ncdGGIO1.Para21.setMag.f", "SP",(float)m_StatAndParam.clParam.TimeLong_two);
|
| | | writeNodeData(FBSDeviceName + "/ncdGGIO1.Para17.setMag.f", "SP",
|
| | | (float) m_StatAndParam.clParam.STDCap_two);
|
| | | writeNodeData(FBSDeviceName + "/ncdGGIO1.Para18.setMag.f", "SP",
|
| | | (float) m_StatAndParam.clParam.FloatVol_two);
|
| | | writeNodeData(FBSDeviceName + "/ncdGGIO1.Para19.setMag.f", "SP",
|
| | | (float) m_StatAndParam.clParam.Strength_two);
|
| | | writeNodeData(FBSDeviceName + "/ncdGGIO1.Para20.setMag.f", "SP",
|
| | | (float) m_StatAndParam.clParam.YHStrength_two);
|
| | | writeNodeData(FBSDeviceName + "/ncdGGIO1.Para21.setMag.f", "SP",
|
| | | (float) m_StatAndParam.clParam.TimeLong_two);
|
| | |
|
| | | writeNodeData(FBSDeviceName+"/ncdGGIO1.Para23.setMag.f", "SP",(float)m_StatAndParam.clParam.STDCap_three);
|
| | | writeNodeData(FBSDeviceName+"/ncdGGIO1.Para24.setMag.f", "SP",(float)m_StatAndParam.clParam.FloatVol_three);
|
| | | writeNodeData(FBSDeviceName+"/ncdGGIO1.Para25.setMag.f", "SP",(float)m_StatAndParam.clParam.Strength_three);
|
| | | writeNodeData(FBSDeviceName+"/ncdGGIO1.Para26.setMag.f", "SP",(float)m_StatAndParam.clParam.YHStrength_three);
|
| | | writeNodeData(FBSDeviceName+"/ncdGGIO1.Para27.setMag.f", "SP",(float)m_StatAndParam.clParam.TimeLong_three);
|
| | | writeNodeData(FBSDeviceName + "/ncdGGIO1.Para23.setMag.f", "SP",
|
| | | (float) m_StatAndParam.clParam.STDCap_three);
|
| | | writeNodeData(FBSDeviceName + "/ncdGGIO1.Para24.setMag.f", "SP",
|
| | | (float) m_StatAndParam.clParam.FloatVol_three);
|
| | | writeNodeData(FBSDeviceName + "/ncdGGIO1.Para25.setMag.f", "SP",
|
| | | (float) m_StatAndParam.clParam.Strength_three);
|
| | | writeNodeData(FBSDeviceName + "/ncdGGIO1.Para26.setMag.f", "SP",
|
| | | (float) m_StatAndParam.clParam.YHStrength_three);
|
| | | writeNodeData(FBSDeviceName + "/ncdGGIO1.Para27.setMag.f", "SP",
|
| | | (float) m_StatAndParam.clParam.TimeLong_three);
|
| | |
|
| | | writeNodeData(FBSDeviceName+"/ncdGGIO1.Para29.setMag.f", "SP",(float)m_StatAndParam.clParam.STDCap_four);
|
| | | writeNodeData(FBSDeviceName+"/ncdGGIO1.Para30.setMag.f", "SP",(float)m_StatAndParam.clParam.FloatVol_four);
|
| | | writeNodeData(FBSDeviceName+"/ncdGGIO1.Para31.setMag.f", "SP",(float)m_StatAndParam.clParam.Strength_four);
|
| | | writeNodeData(FBSDeviceName+"/ncdGGIO1.Para32.setMag.f", "SP",(float)m_StatAndParam.clParam.YHStrength_four);
|
| | | writeNodeData(FBSDeviceName+"/ncdGGIO1.Para33.setMag.f", "SP",(float)m_StatAndParam.clParam.TimeLong_four);
|
| | | writeNodeData(FBSDeviceName + "/ncdGGIO1.Para29.setMag.f", "SP",
|
| | | (float) m_StatAndParam.clParam.STDCap_four);
|
| | | writeNodeData(FBSDeviceName + "/ncdGGIO1.Para30.setMag.f", "SP",
|
| | | (float) m_StatAndParam.clParam.FloatVol_four);
|
| | | writeNodeData(FBSDeviceName + "/ncdGGIO1.Para31.setMag.f", "SP",
|
| | | (float) m_StatAndParam.clParam.Strength_four);
|
| | | writeNodeData(FBSDeviceName + "/ncdGGIO1.Para32.setMag.f", "SP",
|
| | | (float) m_StatAndParam.clParam.YHStrength_four);
|
| | | writeNodeData(FBSDeviceName + "/ncdGGIO1.Para33.setMag.f", "SP",
|
| | | (float) m_StatAndParam.clParam.TimeLong_four);
|
| | | comm_res = true;
|
| | | }else if(FBS9100_ComBase.CMD_Start_FODCL_test == cmd) {
|
| | | //System.out.println(m_StatAndParam.clParam.num);
|
| | | //comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName+"/ncdGGIO1.SPCSO5.Oper", true);
|
| | | // comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName+"/ncdGGIO1.SPCSO5.Oper",
|
| | | // true);
|
| | | //System.out.println(m_StatAndParam.clParam.num);
|
| | | switch(m_StatAndParam.clParam.GroupNum) {
|
| | | case 1:
|
| | |
| | | //System.err.println("读取离线养护参数");
|
| | | //读取离线养护参数
|
| | | //获取单体温度上限阀值
|
| | | m_FBS_DiscParamFromDev.MonomerTmp_High = readFloatNodeData(FBSDeviceName+"/ncdGGIO1.HiCelTemp.mag.f", Fc.MX);
|
| | | m_FBS_DiscParamFromDev.MonomerTmp_High = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.HiCelTemp.mag.f",
|
| | | Fc.MX);
|
| | | //获取离线养护周期
|
| | | m_StatAndParam.bts61850_OffLineYHPlan.OffLineYH_Cycle = (int)readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn111.mag.f", Fc.MX);
|
| | | m_StatAndParam.bts61850_OffLineYHPlan.OffLineYH_Cycle = (int) readFloatNodeData(
|
| | | FBSDeviceName + "/ncdGGIO1.AnIn111.mag.f", Fc.MX);
|
| | | m_FBS_DiscParamFromDev.copyOfflineYHData(m_StatAndParam.bts61850_OffLineYHPlan);
|
| | | //获取在线电压低阀值
|
| | | m_FBS_DiscParamFromDev.OnLineVol_Low = readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn112.mag.f", Fc.MX);;
|
| | | m_FBS_DiscParamFromDev.OnLineVol_Low = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn112.mag.f",
|
| | | Fc.MX);
|
| | | ;
|
| | |
|
| | | comm_res = true;
|
| | | }else if(FBS9100_ComBase.CMD_SetOffLineYHParam == cmd) {
|
| | | //System.err.println("设置离线养护参数" + m_StatAndParam.m_FBS_DiscParam.MonomerTmp_High);
|
| | | // System.err.println("设置离线养护参数" +
|
| | | // m_StatAndParam.m_FBS_DiscParam.MonomerTmp_High);
|
| | | //设置离线养护参数
|
| | | boolean write_res_t = true;
|
| | |
|
| | | if(true == write_res_t) {
|
| | | //离线养护周期
|
| | | writeNodeData(FBSDeviceName+"/ncdGGIO1.Para34.setMag.f", "SP", (float)m_StatAndParam.m_FBS_DiscParam.OffLineYH_Cycle);
|
| | | writeNodeData(FBSDeviceName + "/ncdGGIO1.Para34.setMag.f", "SP",
|
| | | (float) m_StatAndParam.m_FBS_DiscParam.OffLineYH_Cycle);
|
| | | //在线压低
|
| | | writeNodeData(FBSDeviceName+"/ncdGGIO1.Para35.setMag.f", "SP",(float)m_StatAndParam.m_FBS_DiscParam.OnLineVol_Low);
|
| | | writeNodeData(FBSDeviceName + "/ncdGGIO1.Para35.setMag.f", "SP",
|
| | | (float) m_StatAndParam.m_FBS_DiscParam.OnLineVol_Low);
|
| | | sleep(1500);
|
| | | //单体温度上限
|
| | | writeNodeData(FBSDeviceName+"/ncdGGIO1.Para4.setMag.f", "SP",(float)m_StatAndParam.m_FBS_DiscParam.MonomerTmp_High);
|
| | | writeNodeData(FBSDeviceName + "/ncdGGIO1.Para4.setMag.f", "SP",
|
| | | (float) m_StatAndParam.m_FBS_DiscParam.MonomerTmp_High);
|
| | | }
|
| | | comm_res = true;
|
| | | }else if(FBS9100_ComBase.CMD_StartOffLineYH == cmd) {
|
| | | //启动离线养护
|
| | | //System.err.println("启动离线养护");
|
| | | System.err.println("启动离线养护");
|
| | | comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName+"/ncdGGIO1.SPCSO13.Oper", true);
|
| | | comm_res = checkMakeSuccess(5);
|
| | | }else if(FBS9100_ComBase.CMD_StopOffLineYH == cmd) {
|
| | |
| | | comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName+"/ncdGGIO1.SPCSO14.Oper", true);
|
| | | }else if(FBS9100_ComBase.CMD_GetSYSSetParam == cmd) {
|
| | | //获取系统参数
|
| | | m_FBS_SysParam.POF_BG_Boost_VolStart = readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn113.mag.f", Fc.MX); //电压过低阀值
|
| | | m_FBS_SysParam.POF_BG_Boost_VolStop = readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn114.mag.f", Fc.MX); //电压过高阀值
|
| | | m_FBS_SysParam.PowerBreakChargeCurr = readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn115.mag.f", Fc.MX); //电流异常阀值
|
| | | m_FBS_SysParam.CurrentTyte = (int)(readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn116.mag.f", Fc.MX)*10); //浮充电流阀值
|
| | | m_FBS_SysParam.GroupVolSorce = (int)(readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn117.mag.f", Fc.MX)*10); //在线电压低阀值
|
| | | m_FBS_SysParam.MonomerOrder = (int)(readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn118.mag.f", Fc.MX)); //设置主从机模式
|
| | | m_FBS_SysParam.POF_BG_Boost_VolStart = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn113.mag.f",
|
| | | Fc.MX); // 电压过低阀值
|
| | | m_FBS_SysParam.POF_BG_Boost_VolStop = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn114.mag.f",
|
| | | Fc.MX); // 电压过高阀值
|
| | | m_FBS_SysParam.PowerBreakChargeCurr = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn115.mag.f",
|
| | | Fc.MX); // 电流异常阀值
|
| | | m_FBS_SysParam.CurrentTyte = (int) (readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn116.mag.f", Fc.MX)
|
| | | * 10); // 浮充电流阀值
|
| | | m_FBS_SysParam.GroupVolSorce = (int) (readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn117.mag.f",
|
| | | Fc.MX) * 10); // 在线电压低阀值
|
| | | m_FBS_SysParam.MonomerOrder = (int) (readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn118.mag.f",
|
| | | Fc.MX)); // 设置主从机模式
|
| | |
|
| | | //m_FBS_SysParam.LoaderCount = (int) (readInt64NodeData(FBSDeviceName + "/ncdGGIO1.AnIn120.mag.i",Fc.MX)); // 主从机使能
|
| | | //m_FBS_SysParam.DtCardCount = (int) (readInt64NodeData(FBSDeviceName + "/ncdGGIO1.AnIn121.mag.i",Fc.MX)); // 干接点使能
|
| | | comm_res = true;
|
| | | }else if(FBS9100_ComBase.CMD_SetSYSSetParam == cmd) {
|
| | | //电压过低阀值
|
| | | writeNodeData(FBSDeviceName+"/ncdGGIO1.Para36.setMag.f", "SP", (float)m_FBS_SysParam.POF_BG_Boost_VolStart); |
| | | writeNodeData(FBSDeviceName + "/ncdGGIO1.Para36.setMag.f", "SP",
|
| | | (float) m_FBS_SysParam.POF_BG_Boost_VolStart);
|
| | | //电压过高阀值
|
| | | writeNodeData(FBSDeviceName+"/ncdGGIO1.Para37.setMag.f", "SP",(float)m_FBS_SysParam.POF_BG_Boost_VolStop);
|
| | | writeNodeData(FBSDeviceName + "/ncdGGIO1.Para37.setMag.f", "SP",
|
| | | (float) m_FBS_SysParam.POF_BG_Boost_VolStop);
|
| | | //电流异常阀值
|
| | | writeNodeData(FBSDeviceName+"/ncdGGIO1.Para38.setMag.f", "SP",(float)m_FBS_SysParam.PowerBreakChargeCurr);
|
| | | writeNodeData(FBSDeviceName + "/ncdGGIO1.Para38.setMag.f", "SP",
|
| | | (float) m_FBS_SysParam.PowerBreakChargeCurr);
|
| | | sleep(1500);
|
| | | //浮充电流阀值
|
| | | writeNodeData(FBSDeviceName+"/ncdGGIO1.Para39.setMag.f", "SP",((float)m_FBS_SysParam.CurrentTyte)/10);
|
| | | writeNodeData(FBSDeviceName + "/ncdGGIO1.Para39.setMag.f", "SP",
|
| | | ((float) m_FBS_SysParam.CurrentTyte) / 10);
|
| | | //在线电压低阀值
|
| | | writeNodeData(FBSDeviceName+"/ncdGGIO1.Para40.setMag.f", "SP",((float)m_FBS_SysParam.GroupVolSorce)/10);
|
| | | writeNodeData(FBSDeviceName + "/ncdGGIO1.Para40.setMag.f", "SP",
|
| | | ((float) m_FBS_SysParam.GroupVolSorce) / 10);
|
| | | sleep(1500);
|
| | | //设置主从机模式
|
| | | writeNodeData(FBSDeviceName+"/ncdGGIO1.Para41.setMag.f", "SP",((float)m_FBS_SysParam.MonomerOrder));
|
| | |
| | | for(int i = 0;i < last_alarm.length && i < now_alarm.length;i++) {
|
| | | if(!last_alarm[i].equals(now_alarm[i])) {
|
| | | //System.out.println(last_alarm[i] +"===="+now_alarm[i]);
|
| | | BTS61850_EventRecord event = new BTS61850_EventRecord(m_FBSDevId, last_alarm[i].equals("true")?1:0, now_alarm[i].equals("true")?1:0, BTS61850_EventRecord.Event_RELAY_Error_Type+i);
|
| | | BTS61850_EventRecord event = new BTS61850_EventRecord(m_FBSDevId,
|
| | | last_alarm[i].equals("true") ? 1 : 0, now_alarm[i].equals("true") ? 1 : 0,
|
| | | BTS61850_EventRecord.Event_RELAY_Error_Type + i);
|
| | | events.add(event);
|
| | | }
|
| | | }
|
| | |
| | | // getResCapData(rtdata.MonStdCap,m_FBS_DiscParamFromDev.HourRate,m_FBS_VCData.battcap[0],m_FBS_VCData.getMaxMonomerVol,
|
| | | // m_FBS_VCData.getMonomerVol(),rtdata.MonStdCap,CapType_Rest);
|
| | | /*********************************************************************************************/
|
| | | //获取剩余容量 STDAH:标称容量 HourRate:放电小时率 SumAH:测试容量 MaxMonomerVol:最大电池电压 MonomerVol:当前电池组的最低单体电压
|
| | | // 获取剩余容量 STDAH:标称容量 HourRate:放电小时率 SumAH:测试容量 MaxMonomerVol:最大电池电压
|
| | | // MonomerVol:当前电池组的最低单体电压
|
| | | //MonomerVolType:电池标称电压 CapType:容量类型(定值是常量)
|
| | | //MaxMonomerVol = m_FBS_VCData.getMonomerVol();
|
| | |
|
| | | // 获取放电小时率 stdah:标纯容量 current:当前电流
|
| | | private float GetHourRate(float stdah,double current)
|
| | | {
|
| | | private float GetHourRate(float stdah, double current) {
|
| | | int index = 0;
|
| | | double[] value= {5.14, 3.06, 2.50, 2.00, 1.66, 1.46, 1.31, 1.18, 1.08, 1.00, 0.55, 0.40};
|
| | | float res;
|
| | | current = Math.abs(current);
|
| | | res = (float) (current/(stdah/10));
|
| | | if(res >= 5.14) return 1;
|
| | | else if(res <= 0.55) return 20;
|
| | | else
|
| | | {
|
| | | for(index=0; index<10; index++)
|
| | | {
|
| | | if (res >= 5.14)
|
| | | return 1;
|
| | | else if (res <= 0.55)
|
| | | return 20;
|
| | | else {
|
| | | for (index = 0; index < 10; index++) {
|
| | | if((res<=value[index]) && (res>value[index+1]))
|
| | | break;
|
| | | else continue;
|
| | | }
|
| | | if((value[index]-res) < (res-value[index+1]))
|
| | | {
|
| | | return (index+1);
|
| | | }
|
| | | else
|
| | | {
|
| | | if(index+2 > 10) return (20);
|
| | | else return (index+2);
|
| | | continue;
|
| | | }
|
| | | if ((value[index] - res) < (res - value[index + 1])) {
|
| | | return (index + 1);
|
| | | } else {
|
| | | if (index + 2 > 10)
|
| | | return (20);
|
| | | else
|
| | | return (index + 2);
|
| | | }
|
| | | }
|
| | | }
|
| | | private float getResCapData(float STDAH,int HourRate,double SumAH,double MaxMonomerVol,
|
| | | double MonomerVol,float MonomerVolType,int CapType) {
|
| | |
|
| | | private float getResCapData(float STDAH, int HourRate, double SumAH, double MaxMonomerVol, double MonomerVol,
|
| | | float MonomerVolType, int CapType) {
|
| | | if((MaxMonomerVol - MonomerVolType*0.9) <= 0)
|
| | | return 0;
|
| | | if(SumAH < 0)
|
| | |
| | |
|
| | | private double N_TO_10H(int n_H) {
|
| | | // TODO Auto-generated method stub
|
| | | switch(n_H)
|
| | | {
|
| | | case 1 : return(1/0.55);
|
| | | case 2 : return(1/0.61);
|
| | | case 3 : return(1/0.75);
|
| | | case 4 : return(1/0.79);
|
| | | case 5 : return(1/0.833);
|
| | | case 6 : return(1/0.876);
|
| | | case 7 : return(1/0.917);
|
| | | case 8 : return(1/0.944);
|
| | | case 9 : return(1/0.974);
|
| | | case 10: return(1/1);
|
| | | case 20: return(1/1.1);
|
| | | switch (n_H) {
|
| | | case 1:
|
| | | return (1 / 0.55);
|
| | | case 2:
|
| | | return (1 / 0.61);
|
| | | case 3:
|
| | | return (1 / 0.75);
|
| | | case 4:
|
| | | return (1 / 0.79);
|
| | | case 5:
|
| | | return (1 / 0.833);
|
| | | case 6:
|
| | | return (1 / 0.876);
|
| | | case 7:
|
| | | return (1 / 0.917);
|
| | | case 8:
|
| | | return (1 / 0.944);
|
| | | case 9:
|
| | | return (1 / 0.974);
|
| | | case 10:
|
| | | return (1 / 1);
|
| | | case 20:
|
| | | return (1 / 1.1);
|
| | | }
|
| | | return 1.0;
|
| | | }
|
| | |
|
| | | public double getMonomerVol(double vol[]) {
|
| | | //vol[]
|
| | | double min = vol[0];
|
| | |
| | | }
|
| | | return max;
|
| | | }
|
| | |
|
| | | /*********************************************************************************************/
|
| | | /**
|
| | | * 更新电池组数据
|
| | | * |
| | | * @param vc_data
|
| | | */
|
| | | private void getFBS9100MonVolData(FBS9100_VCData vc_data)
|
| | | {
|
| | | private void getFBS9100MonVolData(FBS9100_VCData vc_data) {
|
| | | if(beforeWorkState==2 && vc_data.m_SysState.WorkState!=2) {
|
| | | int mon_index = 0;
|
| | | for(int n=0; n<FBS9100_ComBase.BattGroupCountMax; n++) {
|
| | |
| | | m_RTData[n].mTestData.setDevFBS9100S_WorkState(vc_data.m_SysState.CapTestStopType,
|
| | | vc_data.m_SysState.WorkState);
|
| | |
|
| | | //m_RTData[n].mTestData.updateGroupCurrFrom_FBSDev((float) vc_data.battcurr[n]);
|
| | | m_RTData[n].mTestData.updateCurrFrom_FBSDev((float) vc_data.battcurr[n],vc_data.m_SysState.WorkState);
|
| | | // m_RTData[n].mTestData.updateGroupCurrFrom_FBSDev((float)
|
| | | // vc_data.battcurr[n]);
|
| | | m_RTData[n].mTestData.updateCurrFrom_FBSDev((float) vc_data.battcurr[n],
|
| | | vc_data.m_SysState.WorkState);
|
| | | m_RTData[n].updata_BattRtData_To_RamDb();
|
| | | m_RTData[n].updata_BattRtSate_To_RamDb();
|
| | |
|
| | |
| | | if(null != m_RTData[n]) {
|
| | | m_RTData[n].mTestData.updataCapTest((float)vc_data.battcap[n]);
|
| | | m_RTData[n].mTestData.upDatebattState(test_type);
|
| | | m_RTData[n].mTestData.updateCurrFrom_FBSDev((float) vc_data.battcurr[n],vc_data.m_SysState.WorkState);
|
| | | m_RTData[n].mTestData.updateCurrFrom_FBSDev((float) vc_data.battcurr[n],
|
| | | vc_data.m_SysState.WorkState);
|
| | | }
|
| | | }
|
| | | }
|
| | |
| | | vc_data.m_SysState.WorkState);
|
| | | m_RTData[n].mTestData.updateOnlineVolFrom_FBSDev((float) vc_data.onlinevol[n]);
|
| | | m_RTData[n].mTestData.updateGroupVolFrom_FBSDev((float) vc_data.groupvol[n]);
|
| | | m_RTData[n].mTestData.updateCurrFrom_FBSDev((float) vc_data.battcurr[n], vc_data.m_SysState.WorkState);
|
| | | m_RTData[n].mTestData.updateCurrFrom_FBSDev((float) vc_data.battcurr[n],
|
| | | vc_data.m_SysState.WorkState);
|
| | | m_RTData[n].mTestData.updataCapTest((float)vc_data.battcap[n]);
|
| | | m_RTData[n].mTestData.upDatebattState(test_type);
|
| | | m_RTData[n].mTestData.updateGroupCurrFrom_FBSDev((float) vc_data.battcurr[n]);
|
| | | m_RTData[n].mTestData.updateGroupTmp((float)readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn6.mag.f", Fc.MX));
|
| | | m_RTData[n].mTestData
|
| | | .updateGroupTmp((float) readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn6.mag.f", Fc.MX));
|
| | | //m_RTData[n].mTestData.updatetestTimeLong(vc_data.testTime.getSecondCount());
|
| | | //---------------------------------------------------------------------------//
|
| | |
|
| | | /*System.out.println("MonStdCap"+MonStdCap);
|
| | | System.out.println("m_FBS_DiscParamFromDev.HourRate"+m_FBS_DiscParamFromDev.HourRate);
|
| | | System.out.println("vc_data.battcap[n]"+vc_data.battcap[n]);
|
| | | System.out.println("vc_data.getMaxMonomerVol()"+vc_data.getMaxMonomerVol());
|
| | | System.out.println("vc_data.getMonomerVol()"+vc_data.getMonomerVol());
|
| | | System.out.println("MonVolStd"+MonVolStd);
|
| | | System.out.println("CapType_Rest"+CapType_Rest);*/
|
| | | /*
|
| | | * System.out.println("MonStdCap"+MonStdCap);
|
| | | * System.out.println("m_FBS_DiscParamFromDev.HourRate"+m_FBS_DiscParamFromDev.
|
| | | * HourRate); System.out.println("vc_data.battcap[n]"+vc_data.battcap[n]);
|
| | | * System.out.println("vc_data.getMaxMonomerVol()"+vc_data.getMaxMonomerVol());
|
| | | * System.out.println("vc_data.getMonomerVol()"+vc_data.getMonomerVol());
|
| | | * System.out.println("MonVolStd"+MonVolStd);
|
| | | * System.out.println("CapType_Rest"+CapType_Rest);
|
| | | */
|
| | | double maxvol = getMaxMonomerVol(vc_data.vol);
|
| | | double minvol = getMonomerVol(vc_data.vol);
|
| | | //System.out.println("maxvol:"+maxvol);
|
| | | //System.out.println("minvol:"+minvol);
|
| | | m_FBS_DiscParamFromDev.HourRate=(int) GetHourRate(MonVolStd,vc_data.battcurr[n]);
|
| | | float restcap = getResCapData(MonStdCap,m_FBS_DiscParamFromDev.HourRate,vc_data.battcap[n],maxvol,
|
| | | minvol,MonVolStd,CapType_Rest);
|
| | | float realcap = getResCapData(MonStdCap,m_FBS_DiscParamFromDev.HourRate,vc_data.battcap[n],maxvol,
|
| | | minvol,MonVolStd,CapType_Real);
|
| | | float restcap = getResCapData(MonStdCap, m_FBS_DiscParamFromDev.HourRate, vc_data.battcap[n],
|
| | | maxvol, minvol, MonVolStd, CapType_Rest);
|
| | | float realcap = getResCapData(MonStdCap, m_FBS_DiscParamFromDev.HourRate, vc_data.battcap[n],
|
| | | maxvol, minvol, MonVolStd, CapType_Real);
|
| | | //System.out.println("restcap"+restcap);
|
| | | //System.out.println("realcap"+realcap);
|
| | | m_RTData[n].mTestData.updatebattRestCap(restcap);
|
| | |
| | |
|
| | | }
|
| | |
|
| | | private BattData_RT[] setip()
|
| | | {
|
| | | private BattData_RT[] setip() {
|
| | | for(int n=0; n<FBS9100_ComBase.BattGroupCountMax; n++) {
|
| | | if(null != m_RTData[n]) {
|
| | | //m_RTData[n].updata_SetIp();
|
| | |
| | | return m_RTData;
|
| | | }
|
| | |
|
| | | |
| | | //返回指定时间间隔间的秒数
|
| | | public static long calculTimelong(Date start,Date end) {
|
| | | return (end.getTime() - start.getTime())/1000;
|
| | |
| | |
|
| | | /*********************************************************************************************/
|
| | | }
|
| | | /********************************* end of file SocketClient.java *************************************/ |
| | | /*********************************
|
| | | * end of file SocketClient.java
|
| | | *************************************/ |