/********************************* head of file SocketClient.java ***********************************/ package com.dec.fbs9100; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.InetAddress; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; import javax.swing.JTextField; import org.apache.logging.log4j.Level; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.openmuc.openiec61850.BdaBitString; import org.openmuc.openiec61850.BdaBoolean; import org.openmuc.openiec61850.BdaFloat32; import org.openmuc.openiec61850.BdaInt64; import org.openmuc.openiec61850.BdaVisibleString; import org.openmuc.openiec61850.ClientAssociation; import org.openmuc.openiec61850.ClientSap; import org.openmuc.openiec61850.DataSet; import org.openmuc.openiec61850.Fc; import org.openmuc.openiec61850.FcModelNode; import org.openmuc.openiec61850.ModelNode; import org.openmuc.openiec61850.ServerModel; import org.openmuc.openiec61850.ServiceError; import org.openmuc.openiec61850.clientgui.BasicDataBind; import org.openmuc.openiec61850.clientgui.databind.Float32DataBind; import org.openmuc.openiec61850.clientgui.databind.Int64DataBind; import org.openmuc.openiec61850.clientgui.databind.VisibleStringDataBind; import com.base.AppConfig; import com.base.Com; import com.battdata_rt.BattData_RT; import com.battdata_rt.BattData_RT_Array; import com.dec.fbs9100.FBS9100_TestTime; /****************************************************************************************************/ public class BTS_61850_SocketClient extends Thread { public static final int Sign_Type_Default = 0; public static final int Sign_Type_InTow = 1; //正常1托2 private boolean m_App_IsAlive = true; private FBS9100_VCData m_FBS_VCData = null; private FBS9100_ParamDischarge m_FBS_DiscParam = null; private FBS9100_ParamDischarge m_FBS_DiscParamFromDev = null; private FBS9100_SysParam m_FBS_SysParam = null; private FBS9100_StatAndParam m_StatAndParam = null; FBS9100_JHPowerState fbs9100_jhpowerState = null; private FBS9100s_Fod_State fod_state = null; private CL_Param cl_param = null; private BattData_RT[] m_RTData = new BattData_RT[FBS9100_ComBase.BattGroupCountMax]; private FBS9100_batt_testparam test_Param; private int m_FBSDevId = 0; private int m_BattMonCount = 0; private MysqlConnPool m_ConnPool = null; private int DevReadCount = 0; private static final String TAG = "SocketClient_Thread"; private int CapType_Rest = 0; // 当查询剩余容量时传递 private int CapType_Real = 1; // 当查询实际容量时传递 //private int beforeWorkState = 0; float MonStdCap = 0; float MonVolStd = 0; float tmp = 0; Date logData = new Date(); private int numberDevState = 0; String FBSDeviceName = null; String FBSDeviceIp = "192.168.0.18"; private List events; // 事件记录表 private String ZJDYCPSS = "ZJDYCPSS"; /*********************************************************************************************/ /********************** * IEC61850 partical ****************************************************/ private ClientSap m_ClientSap; private ClientAssociation m_Association; private ServerModel m_ServerModel; private Logger logger = null; /*********************************************************************************************/ /*********************************************************************************************/ public BTS_61850_SocketClient(MysqlConnPool m_cp, FBS9100_StatAndParam stat_param, BattData_RT_Array AL_RTdata, ServerModel s_m) { logger = LogManager.getLogger(this.getClass()); m_ServerModel = s_m; m_ConnPool = m_cp; m_StatAndParam = stat_param; m_FBS_VCData = m_StatAndParam.m_FBS_VCData; m_FBS_DiscParam = m_StatAndParam.m_FBS_DiscParam; m_FBS_DiscParamFromDev = m_StatAndParam.m_FBS_DiscParamFromDev; fbs9100_jhpowerState = m_StatAndParam.fbs9100_jhpowerState; cl_param = stat_param.clParam; m_FBS_SysParam = stat_param.m_FBS_SysParam; fod_state = stat_param.fbs9100s_fod_state; FBSDeviceIp = m_StatAndParam.dev_ipaddr; m_FBSDevId = m_StatAndParam.dev_id; test_Param = m_StatAndParam.test_Param; test_Param.dev_id = m_FBSDevId; events = new ArrayList(); int group_max = FBS9100_ComBase.BattGroupCountMax; for (int n = 0; n < group_max; n++) { m_RTData[n] = null; } for (int n = 0; n < AL_RTdata.getItemCount(); n++) { if (AL_RTdata.getItem(n).FBSDeviceId == m_FBSDevId) { m_RTData[AL_RTdata.getItem(n).GroupIndexInFBSDevice % group_max] = AL_RTdata.getItem(n); m_BattMonCount += AL_RTdata.getItem(n).MonCount; MonStdCap = AL_RTdata.getItem(n).MonStdCap; MonVolStd = AL_RTdata.getItem(n).MonStdVol; FBSDeviceName = AL_RTdata.getItem(n).FBSDeviceName; m_StatAndParam.BattGroupId = AL_RTdata.getItem(n).BattGroupId; //FBSDeviceIp = AL_RTdata.getItem(n).FBSDeviceIp; } } if (m_BattMonCount > (FBS9100_ComBase.MonomerCountMax - 120)) { m_BattMonCount = (FBS9100_ComBase.MonomerCountMax - 120); } } public void Set_AppAliveState(boolean stat) { m_App_IsAlive = stat; } public boolean Get_AppAliveState() { return m_App_IsAlive; } /*********************************************************************************************/ public void run() { this.setName(TAG); logger.debug("IP:" + FBSDeviceIp + " - BTS_IEC61850_ClientThread Started ..."); Set_AppAliveState(true); while (true == Get_AppAliveState()) { logger.error("IP:" + FBSDeviceIp + " BTSE:" + FBSDeviceName + "- BTS_IEC61850_ClientThread Started ..."); // FBS9100_Task_Thread_SQL.runinsertime(m_ConnPool); try { Thread.sleep(5000); } catch (InterruptedException e) { // TODO Auto-generated catch block logger.error(e.toString(), e); } try { m_ClientSap = new ClientSap(); m_Association = m_ClientSap.associate(InetAddress.getByName(FBSDeviceIp), 102, null, null); // if(!FBSDeviceName.contains(m_ServerModel.getBaseDevName())) { // System.err.println("SSSSSSSSSSS"); // //与预加载的模型文件不一致时 m_ServerModel = m_Association.retrieveModel(); // } System.err.println("Dev_BASE:"+m_ServerModel.getBaseDevName());; } catch (Exception e) { logger.debug("BTS_IEC61850_Client Unable to connect to device IP:" + FBSDeviceIp); continue; } if(this.FBSDeviceName.indexOf("BTSE")>0) { //适配各个不同协议名称的61850设备通信[读取放电参数时用到] ZJDYCPSS = this.FBSDeviceName.replace("BTSE", "CPSS"); } logger.debug("Successfully connected to ied server " + FBSDeviceIp + " " + FBSDeviceName + "\t CPSS:"+ZJDYCPSS); logger.debug("IP:" + FBSDeviceIp + " - BTS_IEC61850_Client retrieving model..."); /* try { m_ServerModel = m_Association.retrieveModel(); } catch (ServiceError | IOException e) { logger.error(e.toString(), e); continue; } */ /* System.out.println("reading model from file..."); try { m_ServerModel = m_Association.getModelFromSclFile("zjdy_bts_1_2G.icd"); //serverModel = association.getModelFromSclFile(modelFileParam.getValue()); } catch (SclParseException e1) { System.out.println("Error parsing SCL file: " + e1.getMessage()); return; } System.out.println("successfully read model"); */ /************************* read m_DevVersion first *************************/ m_StatAndParam.m_DevVersion = readVersionStringNodeData(FBSDeviceName + "/ncdGGIO1.DevVersion.d", Fc.DC); /***************************************************************************/ logger.debug("IP:" + FBSDeviceIp + " - BTS_IEC61850_VersionInf: " + m_StatAndParam.m_DevVersion); m_FBS_VCData.m_SysState.resetErrCommCount(); FBS9100_Task_Thread_SQL.inseartOrUpdateFBS9100SFODParam(m_ConnPool, m_StatAndParam.clParam, m_StatAndParam); FBS9100_Task_Thread_SQL.queryBTS61850OffLineyhPlanOnRam(m_ConnPool, m_StatAndParam); m_StatAndParam.keyID = readStringNodeData(FBSDeviceName+"/btgGGIO1.ukeyID.d",Fc.DC); m_StatAndParam.serialNumber = readStringNodeData(FBSDeviceName+"/btgGGIO1.Bts_ID.d",Fc.DC); //唯一序列号 BTS61850_Task_Thread_SQL.UpdateBattInfTable(m_ConnPool, m_StatAndParam); //更新当前参数 //读取主从机功能使能 m_FBS_VCData.m_SysState.MasterSlave_en = (int) (readFloatNodeData(FBSDeviceName + "/btgGGIO1.AnIn29.mag.f",Fc.MX)); //读取干接点功能使能 m_FBS_VCData.m_SysState.DryContact_en = (int) (readFloatNodeData(FBSDeviceName + "/btgGGIO1.AnIn30.mag.f",Fc.MX)); while (true == Get_AppAliveState()) { try { if (m_StatAndParam != null) { if (0 == (DevReadCount % 2)) { FBS9100_Task_Thread_SQL.queryFbs9100SetParamBydev_id(m_ConnPool, m_StatAndParam); // 查询放电参数表 FBS9100_Task_Thread_SQL.queryFbsCL9100SetParamBydev_id(m_ConnPool, m_StatAndParam); // 查询离线养护参数 FBS9100_Task_Thread_SQL.queryFBS9100SysParamBydev_id(m_ConnPool, m_StatAndParam); // 查询系统参数 } } if (FBS9100_ComBase.CMD_NULL == m_StatAndParam.op_cmd) { if (FBS9100_ComBase.CMD_SetDischargeParm == m_StatAndParam.m_FBS_DiscParam.op_cmd) { logger.printf(Level.DEBUG, "FBS9100_ComBase.CMD_SetDischargeParm for Dev ip:%s", FBSDeviceIp); if (true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_SetDischargeParm)) { m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_SetDischargeParmAck; test_Param.copyBTS61850Param(m_StatAndParam.m_FBS_DiscParam); } } else if (FBS9100_ComBase.CMD_Start == m_FBS_DiscParam.op_cmd) { logger.printf(Level.DEBUG, "FBS9100_ComBase.CMD_Start for Dev ip:%s", FBSDeviceIp); 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)); logger.debug("Dev ip:"+m_StatAndParam.dev_ipaddr + ": failed to start cap test, errcode:" + errcode); } } } 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; } } else if (FBS9100_ComBase.CMD_GetDischargeParm == m_FBS_DiscParam.op_cmd) { if (true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_GetDischargeParm)) { m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_GetDischargeParmAck; FBS9100_Task_Thread_SQL.updateFbs9100SetParamBydev_id(m_ConnPool, m_StatAndParam); //保留当前读取的参数 test_Param.copyBTS61850Param(m_FBS_DiscParamFromDev); //读取一次ukey m_StatAndParam.keyID = readStringNodeData(FBSDeviceName+"/btgGGIO1.ukeyID.d",Fc.DC); m_StatAndParam.serialNumber = readStringNodeData(FBSDeviceName+"/btgGGIO1.Bts_ID.d",Fc.DC); //唯一序列号 } } else if (FBS9100_ComBase.CMD_SetIp == m_FBS_DiscParam.op_cmd) { if (true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_SetIp)) { m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_SetIpAck; } } else if (FBS9100_ComBase.CMD_SetIpNow == m_FBS_DiscParam.op_cmd) { if (true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_SetIpNow)) { m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_SetIpAck; } } else if (FBS9100_ComBase.CMD_GetOffLineYHParam == m_FBS_DiscParam.op_cmd) { // 读取离线养护参数 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.updateBTS61850OffLineyhPlanOnRam(m_ConnPool, m_StatAndParam); logger.debug("Dev ip:"+m_StatAndParam.dev_ipaddr + ",读取离线养护参数成功"); } } else if (FBS9100_ComBase.CMD_SetOffLineYHParam == m_FBS_DiscParam.op_cmd) { // 设置离线养护参数 if (true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_SetOffLineYHParam)) { // 获取当前设置的离线养护计划任务的参数 m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_SetOffLineYHParam_ACK; m_StatAndParam.bts61850_OffLineYHPlan.copyOffLineYHData(m_FBS_DiscParam); m_StatAndParam.bts61850_OffLineYHPlan.successCount = 0; // 重置成功次数 FBS9100_Task_Thread_SQL.updateBTS61850OffLineyhPlanOnRam(m_ConnPool, m_StatAndParam); } } else if (FBS9100_ComBase.CMD_StartOffLineYH == m_FBS_DiscParam.op_cmd) { // 启动离线养护 if (true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_StartOffLineYH)) { m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_StartOffLineYH_ACK; } } else if (FBS9100_ComBase.CMD_StopOffLineYH == m_FBS_DiscParam.op_cmd) { // 停止离线养护 if (true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_StopOffLineYH)) { m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_StopOffLineYH_ACK; } } else if (FBS9100_ComBase.CMD_ResetSystem == m_FBS_DiscParam.op_cmd) { // 重启系统 if (true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_ResetSystem)) { m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_ResetSystemAck; } } else if(FBS9100_ComBase.CMD_UpdateXZTime == m_FBS_DiscParam.op_cmd) { if (true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_UpdateXZTime)) { m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_UpdateXZTimeAck; } } FBS9100_Task_Thread_SQL.updateFbs9100SetParamCmdBydev_id(m_ConnPool, m_StatAndParam); } if (FBS9100_ComBase.CMD_NULL == m_StatAndParam.op_cmd) { if (FBS9100_ComBase.CMD_GetSYSSetParam == m_FBS_SysParam.op_cmd) { // 获取系统参数 if (true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_GetSYSSetParam)) { m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_GetSYSSetParamAck; FBS9100_Task_Thread_SQL.updateFbs9100SysParamParamBydev_id(m_ConnPool, m_StatAndParam); } } else if (FBS9100_ComBase.CMD_SetSYSSetParam == m_FBS_SysParam.op_cmd) { // 设置系统参数 if (true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_SetSYSSetParam)) { m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_SetSYSSetParamAck; } } else if (FBS9100_ComBase.CMD_ClearSysAlarm == m_FBS_SysParam.op_cmd) { // 清除告警 if (true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_ClearSysAlarm)) { m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_ClearSysAlarm_ACK; } } else if(FBS9100_ComBase.CMD_GetJuHengParam == m_FBS_SysParam.op_cmd) { //获取均衡参数 if(true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_GetJuHengParam)) { m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_GetJuHengParamAck; FBS9100_Task_Thread_SQL.updateFbs9100SysParamParamBydev_id(m_ConnPool, m_StatAndParam); } } else if(FBS9100_ComBase.CMD_SetJuHengParam == m_FBS_SysParam.op_cmd) { //设置均衡参数 if(true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_SetJuHengParam)) { m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_SetJuHengParamAck; } } FBS9100_Task_Thread_SQL.updateFbs9100SysParamCmdBydev_id(m_ConnPool, m_StatAndParam); } if (FBS9100_ComBase.CMD_NULL != cl_param.op_cmd) { 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); m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_ReadFodParamSus; // System.out.println("doing read"); } } else if (FBS9100_ComBase.CMD_WriteFodParam == cl_param.op_cmd) { if (true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_WriteFodParam)) { m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_WriteFodParamSus; } } else if (FBS9100_ComBase.CMD_Start_FODCL_test == cl_param.op_cmd) { if (true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_Start_FODCL_test)) { m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_Start_FODCL_testSus; } } else if (FBS9100_ComBase.CMD_Stop_FOD_test == cl_param.op_cmd) { if (true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_Stop_FOD_test)) { m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_Stop_FOD_testSus; } } else if (FBS9100_ComBase.CMD_Start_FODYH_test == cl_param.op_cmd) { if (true == BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_Start_FODYH_test)) { m_StatAndParam.op_cmd = FBS9100_ComBase.CMD_Start_FODYH_testSus; } } FBS9100_Task_Thread_SQL.updateCL9100SetParamCmdBydev_id(m_ConnPool, m_StatAndParam); } // -----------------------------------------------------------------------------------// // -----------------------------------------------------------------------------------// sleep(100); // -----------------------------------------------------------------------------------// // -----------------------------------------------------------------------------------// if (0 == (DevReadCount % 3)) { //System.out.println("DevId:"+m_StatAndParam.dev_id+"=Start="+((numberDevState%3))+"___"+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms)); BTS_IEC61850_SocketComm(FBS9100_ComBase.CMD_GetVIData); //System.out.println("DevId:"+m_StatAndParam.dev_id+"=End="+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms)); numberDevState += 1; if (numberDevState >= 5000) { numberDevState = 0; } 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.insertOrUpdateJhStateTable(m_ConnPool, m_StatAndParam); FBS9100_Task_Thread_SQL.insertBTSEventRecordTable(m_ConnPool, events); // 记录历史事件和告警 events.clear(); } } // ---------------------------------------------------------------------------------// /* * 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 % 20)) { //每隔一定时间读取版本,有可能和设备通信上时,协转还没读取到设备上的版本号 m_StatAndParam.m_DevVersion = readVersionStringNodeData(FBSDeviceName + "/ncdGGIO1.DevVersion.d", Fc.DC); } // 离线养护计划监测-------------------------------------------------------------------------------// if(0 == (DevReadCount % 19)) { RunOffLineYHPlan(); } //---------------------------------------------------------------------------------// DevReadCount += 1; if (DevReadCount >= 19) { DevReadCount = 0; } //---------------------------------------------------------------------------------// if (m_FBS_VCData.m_SysState.ErrCommCount > 20) { logger.printf(Level.DEBUG, "DevId:%d, DevIp:%s, ComErrorCnt:%d, CommThread break now.", m_StatAndParam.dev_id, m_StatAndParam.dev_ipaddr, m_FBS_VCData.m_SysState.ErrCommCount); m_Association.close(); //m_ServerModel = null; break; } // ---------------------------------------------------------------------------------// } catch (InterruptedException e) { logger.error(e.toString(), e); try { sleep(1000); } catch (InterruptedException e1) { // TODO Auto-generated catch block logger.error(e1.toString(), e1); } } } } try { m_Association.disconnect(); Thread.sleep(1000); m_Association.close(); //m_ServerModel = null; } catch (Exception e) { logger.error(e.toString(), e); } logger.debug("IP:" + FBSDeviceIp + " " + this.getName() + " - BTS_IEC61850_ClientThread Stopped ..."); } // 离线养护计划 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); // 和计划时间相差秒数 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) { // 离线养护已启动 plan.successCount = circle + 1; // 当前成功次数 return; } if (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 = checkMakeSuccess(5); if(flag) { logger.warn("启动离线养护计划成功"); } } } } } /*********************************************************************************************/ private boolean BTS_IEC61850_Write_CO_Node(String objectReference, boolean val) { boolean res_op = false; FcModelNode fcModelNode = (FcModelNode) m_ServerModel.findModelNode(objectReference, Fc.CO).copy(); if (null == fcModelNode) { logger.error("BTS_IEC61850_Write_CO_Node error, no modenode was found....."); return false; } ModelNode fc_mode = fcModelNode.getChild("ctlVal"); if (null == fc_mode) { logger.error("fcModelNode.getChild('ctlVal') error, no child was found....."); return false; } if (null != fcModelNode) { try { ((BdaBoolean)fc_mode).setValue(val); m_Association.setDataValues(fcModelNode); m_FBS_VCData.m_SysState.resetErrCommCount(); res_op = true; } catch (ServiceError | IOException e) { // TODO Auto-generated catch block res_op = false; m_FBS_VCData.m_SysState.addErrCommCount(); logger.error(e.toString(), e); } } return res_op; } /** * @throws IOException * @throws ServiceError *******************************************************************************************/ public void writeNodeData(String reference, String fc_str, double disCurr) { FcModelNode fcModelNode = (FcModelNode) m_ServerModel.findModelNode(reference, Fc.fromString(fc_str)); if (null == fcModelNode) { logger.error(reference+"writeNodeData error, no modenode was found....." + reference); return; } try { BasicDataBind data = new Float32DataBind((BdaFloat32) fcModelNode); JTextField tf_t = (JTextField) data.getValueField(); String parm = String.valueOf(disCurr); tf_t.setText(parm); data.write(); m_Association.setDataValues(fcModelNode); m_FBS_VCData.m_SysState.resetErrCommCount(); } catch (ServiceError | IOException e) { logger.error(e.toString(), e); m_FBS_VCData.m_SysState.addErrCommCount(); return; } } /** * @throws IOException * @throws ServiceError *******************************************************************************************/ public void writeNodeData_Float(String reference, String fc_str, Float dat) { FcModelNode fcModelNode = (FcModelNode) m_ServerModel.findModelNode(reference, Fc.fromString(fc_str)).copy(); if (null == fcModelNode) { logger.error("writeNodeData error, no modenode was found....."); return; } try { ((BdaFloat32)fcModelNode).setFloat(dat); m_Association.setDataValues(fcModelNode); } catch (ServiceError | IOException e) { logger.error(e.toString(), e); return; } } public void writeNodeData_Int64(String reference, String fc_str, long dat) { FcModelNode fcModelNode = (FcModelNode) m_ServerModel.findModelNode(reference, Fc.fromString(fc_str)).copy(); if (null == fcModelNode) { logger.error("writeNodeDataInt error, no modenode was found....."); return; } try { ((BdaInt64)fcModelNode).setValue(dat); m_Association.setDataValues(fcModelNode); } catch (ServiceError | IOException e) { logger.error(e.toString(), e); return; } } /** * 写入字符串类型数据 * @throws IOException * @throws ServiceError *******************************************************************************************/ public void writeNodeDataString(String reference, String fc_str, String str) { FcModelNode fcModelNode = (FcModelNode) m_ServerModel.findModelNode(reference, Fc.fromString(fc_str)); if (null == fcModelNode) { System.err.println("writeNodeDataString error, no modenode was found....."+reference); return; } try { BasicDataBind data = new VisibleStringDataBind((BdaVisibleString) fcModelNode); JTextField tf_t = (JTextField) data.getValueField(); tf_t.setText(str); //System.err.println(str+"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"); data.write(); m_Association.setDataValues(fcModelNode); m_FBS_VCData.m_SysState.resetErrCommCount(); } catch (ServiceError | IOException e) { System.err.println(e); m_FBS_VCData.m_SysState.addErrCommCount(); return; } } public void writeNodeDataInt(String reference, String fc_str, long disCurr) { FcModelNode fcModelNode = (FcModelNode) m_ServerModel.findModelNode(reference, Fc.fromString(fc_str)); if (null == fcModelNode) { logger.error("writeNodeDataInt error, no modenode was found....."); m_FBS_VCData.m_SysState.addErrCommCount(); return; } try { BasicDataBind data = new Int64DataBind((BdaInt64) fcModelNode); JTextField tf_t = (JTextField) data.getValueField(); String parm = String.valueOf(disCurr); tf_t.setText(parm); data.write(); m_Association.setDataValues(fcModelNode); m_FBS_VCData.m_SysState.resetErrCommCount(); } catch (ServiceError | IOException e) { logger.error(e.toString(), e); m_FBS_VCData.m_SysState.addErrCommCount(); return; } } /*********************************************************************************************/ private float readFloatNodeData(String reference, Fc fc) { float res_val = 0; FcModelNode fcModelNode = (FcModelNode) m_ServerModel.findModelNode(reference, fc); if (null == fcModelNode) { logger.error(reference+"readFloatNodeData error, no modenode was found....."); return 0; } try { m_Association.getDataValues(fcModelNode); //BasicDataBind data = new Float32DataBind((BdaFloat32) fcModelNode); //JTextField tf_t = (JTextField) data.getValueField(); //res_val = Float.parseFloat(tf_t.getText()); res_val = ((BdaFloat32) fcModelNode).getFloat(); } catch (Exception e) { logger.error(e.toString(), e); } m_FBS_VCData.m_SysState.setCommCountInc(); return res_val; } private float readInt64NodeData(String reference, Fc fc) { float res_val = 0; FcModelNode fcModelNode = (FcModelNode) m_ServerModel.findModelNode(reference, fc).copy(); if (null == fcModelNode) { logger.error("readInt64NodeData error, no modenode was found....."); return 0; } try { m_Association.getDataValues(fcModelNode); BasicDataBind data = new Int64DataBind((BdaInt64) fcModelNode); JTextField tf_t = (JTextField) data.getValueField(); res_val = Float.parseFloat(tf_t.getText()); } catch (ServiceError | IOException e) { logger.error(e.toString(), e); } m_FBS_VCData.m_SysState.setCommCountInc(); return res_val; } /*********************************************************************************************/ /*********************************************************************************************/ /*private String readStringNodeData(String reference, Fc fc) { String res_val = null; FcModelNode fcModelNode = (FcModelNode) m_ServerModel.findModelNode(reference, fc).copy(); if (null == fcModelNode) { logger.error("readStringNodeData error, no modenode was found....."); return null; } try { m_Association.getDataValues(fcModelNode); } catch (ServiceError | IOException e) { logger.error(e.toString(), e); return null; } String resul = ""; try { ModelNode fc_mode = fcModelNode; String a[] = null; a = new String[5]; a = (fc_mode.toString()).split(": "); res_val = a[2]; // System.out.println(a[3]); String split[] = null; split = new String[5]; split = (res_val.toString()).split(", "); String result[] = null; result = new String[2]; result[0] = split[0]; result[1] = a[3]; resul = null; resul = String.format("%s,%s", (Object[])result); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return resul; // 控制节点TRUE FALSE }*/ /*********************************************************************************************/ private String readStringNodeData(String reference,Fc fc) { String res_val = null; FcModelNode fcModelNode = (FcModelNode)m_ServerModel.findModelNode(reference, fc); if(null == fcModelNode) { return null; } //System.out.println("Sending GetDataValues request..."); try { m_Association.getDataValues(fcModelNode); m_FBS_VCData.m_SysState.resetErrCommCount(); //System.out.println("Successfully read data."); ModelNode fc_mode = fcModelNode; //System.out.println(fc_mode.toString()); String[] a = new String[2]; a = (fc_mode.toString()).split(": "); res_val = a[1]; } catch (ServiceError e) { m_FBS_VCData.m_SysState.addErrCommCount(); System.out.println("Service error: " + e.getMessage()); return null; } catch (IOException e) { m_FBS_VCData.m_SysState.addErrCommCount(); System.out.println("Fatal error: " + e.getMessage()); return null; } return res_val; //控制节点TRUE FALSE } /*********************************************************************************************/ private String readVersionStringNodeData(String reference,Fc fc) { String resul = ""; String res_val = null; FcModelNode fcModelNode = (FcModelNode)m_ServerModel.findModelNode(reference, fc); if(null == fcModelNode) { return null; } //System.out.println("Sending GetDataValues request..."); try { m_Association.getDataValues(fcModelNode); m_FBS_VCData.m_SysState.resetErrCommCount(); ModelNode fc_mode = fcModelNode; if(fc_mode instanceof BdaVisibleString) { resul = new String(((BdaVisibleString)fc_mode).getValue()); } } catch (ServiceError e) { System.out.println("Service error: " + e.getMessage()); m_FBS_VCData.m_SysState.addErrCommCount(); return null; } catch (Exception e) { m_FBS_VCData.m_SysState.addErrCommCount(); System.out.println("Fatal error: " + e.getMessage()); return null; } //System.out.println("Successfully read data."); //System.out.println(resul); return resul; //控制节点TRUE FALSE } /*********************************************************************************************/ public boolean BTS_IEC61850_SocketComm(int cmd) throws InterruptedException { boolean comm_res = false; try { if (FBS9100_ComBase.CMD_GetVIData == cmd) { events.clear(); if(0 == (numberDevState%3)) { //---------------------------------Log Level.TRACE-------------------------------------// logger.printf(Level.TRACE, "m_ServerModel.getDataSet(%s/LLN0.dsBtseYc)", FBSDeviceName); //-------------------------------------------------------------------------------------// ///-------------------------------------------------------------------------------------// DataSet ds = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsBtseYc").copy(); int size_cnt = ds.getMembers().size(); m_Association.getDataSetValues(ds); int m = 0; boolean isStartReadMonData = true; for (int n = 0; n= m) && (n < (m + 24 * 1))) { m_FBS_VCData.vol[n - m] = ((BdaFloat32) fc_mode).getFloat(); } else if ((n >= (m + 24 * 1)) && (n < (m + 24 * 2))) { m_FBS_VCData.res[n - (m + 24 * 1)] = ((BdaFloat32) fc_mode).getFloat(); } else if ((n >= (m + 24 * 2)) && (n < (m + 24 * 3))) { m_FBS_VCData.tmp[n - (m + 24 * 2)] = ((BdaFloat32) fc_mode).getFloat(); } //跳过剩余剩余容量 else if ((n >= (m + 24 * 4)) && (n < (m + 24 * 5))) { m_FBS_VCData.mon_JH[n - (m + 24 * 4)] = ((BdaFloat32) fc_mode).getFloat(); } } /*for(int i=0;i<24;i++) { m_FBS_VCData.vol[i] = readFloatNodeData(FBSDeviceName + "/celGGIO1.AnIn"+mon_index+++".mag.f", Fc.MX); //单体电压 } for(int i=0;i<24;i++) { m_FBS_VCData.res[i] = readFloatNodeData(FBSDeviceName + "/celGGIO1.AnIn"+mon_index+++".mag.f", Fc.MX); //单体内阻 } for(int i=0;i<24;i++) { m_FBS_VCData.tmp[i] = readFloatNodeData(FBSDeviceName + "/celGGIO1.AnIn"+mon_index+++".mag.f", Fc.MX); //单体温度 } mon_index += 24; //跳过单体剩余容量读取 for(int i=0;i<24;i++) { m_FBS_VCData.mon_JH[i] = readFloatNodeData(FBSDeviceName + "/celGGIO1.AnIn"+mon_index+++".mag.f", Fc.MX); //均衡电流 }*/ }else if(null != fc_mode_i) { String fc_model_str = fc_mode_i.toString1(); //System.out.println("n:" + n + "\t" + fc_model_str); // 新添加用于提示告警(不启动核容原因) if (fc_model_str.contains(FBSDeviceName + "/btgGGIO1.AnIn28.mag.i")) { m_FBS_VCData.m_SysState.AlarmState = (int) ((BdaInt64) fc_mode_i).getValue(); //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); //核容启动失败原因 m_FBS_VCData.m_SysState.setCommCountInc(); ds = null; } //System.err.println(m_FBS_VCData.m_SysState.ErrCommCount); if(1 == (numberDevState%3)) { //---------------------------------Log Level.TRACE-------------------------------------// logger.printf(Level.TRACE, "m_ServerModel.getDataSet(%s/LLN0.dsBtseYx)", FBSDeviceName); //-------------------------------------------------------------------------------------// String c[] = null; DataSet ds_stat = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsBtseYx"); int size_cnt_stat = ds_stat.getMembers().size(); boolean[] alm = new boolean[] {false,false,false,false,false}; int size_cnt = ds_stat.getMembers().size(); //System.out.println(FBSDeviceName + "/LLN0.dsDevState 节点数:"+size_cnt); m_Association.getDataSetValues(ds_stat); // 屏蔽当前根节点下新添加的ukey内容 for (int n = 0; n < size_cnt; n++) { if(null == ds_stat.getMembers().get(n).getChild("stVal")) { //System.err.println(ds.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(); //System.out.println("n:"+n+" "+fc_mode.toString1()); String fc_mode_str = fc_mode.toString1(); if(fc_mode_str.contains(FBSDeviceName + "/ncdGGIO1.Alm1")){ 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")){ alm[3] = ((BdaBoolean)fc_mode).getValue(); }else if(fc_mode_str.contains(FBSDeviceName + "/ncdGGIO1.Alm5")){ alm[4] = ((BdaBoolean)fc_mode).getValue(); } }else{ } } // c = new String[size_cnt_stat]; // String[] split = null; // split = new String[2]; // m_Association.getDataSetValues(ds_stat); // String sb = null; // String temp = "%s"; // //限制当前告警个数 // size_cnt_stat = 5; // for (int n = 0; n < size_cnt_stat; n++) { // //System.err.println(ds_stat.getMembers().get(n).getName()); // 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(temp, (Object[])c); 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(); // 记录当前的告警 //System.out.println(sb); m_FBS_VCData.m_SysState.setCommCountInc(); ds_stat = null; } if(2 == (numberDevState%3)) { //---------------------------------Log Level.TRACE-------------------------------------// logger.printf(Level.TRACE, "m_ServerModel.getDataSet(%s/LLN0.dsDevState )", FBSDeviceName); //-------------------------------------------------------------------------------------// comm_res = true; DataSet ds = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsDevState"); if(null == ds) { //兼容老版本协转数据 ds = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsBtseYc"); } if(null == ds) { return false; } int size_cnt = ds.getMembers().size(); //System.out.println(FBSDeviceName + "/LLN0.dsDevState 节点数:"+size_cnt); m_Association.getDataSetValues(ds); // 屏蔽当前根节点下新添加的ukey内容 for (int n = 0; n < size_cnt; n++) { if(null == ds.getMembers().get(n).getChild("mag") || null == ds.getMembers().get(n).getChild("mag").getChild("f")) { //System.err.println(ds.getMembers().get(n).getChild("mag").toString1()); continue; } FcModelNode fc_mode = (FcModelNode) ds.getMembers().get(n).getChild("mag").getChild("f"); BasicDataBind data = new Float32DataBind((BdaFloat32) fc_mode); //JTextField tf_t = (JTextField) data.getValueField(); //System.out.println("n:"+n+" "+fc_mode.toString1()+"==="+((BdaFloat32) fc_mode).getFloat().intValue()); String fc_mode_str = fc_mode.toString1(); if(fc_mode_str.contains(FBSDeviceName + "/ncdGGIO1.StaNum.mag.f")){ int st = ((BdaFloat32) fc_mode).getFloat().intValue(); //int st = (int)readFloatNodeData(FBSDeviceName + "/ncdGGIO1.StaNum.mag.f", Fc.MX); if (m_FBS_VCData.m_SysState.WorkState != st) { BTS61850_EventRecord event = new BTS61850_EventRecord(m_FBSDevId, m_FBS_VCData.m_SysState.WorkState, st, BTS61850_EventRecord.Event_WorkState_Type); events.add(event); m_FBS_VCData.m_SysState.WorkState = st; if (st > 0) { FBS9100_TestTime.starttime(); } else if (st == 0) { sleep(3000); FBS9100_TestTime.restarttime(); } } }else if(fc_mode_str.contains(FBSDeviceName + "/ncdGGIO1.AnIn1.mag.f")){ m_FBS_VCData.m_SysState.CapTestStopType = ((BdaFloat32) fc_mode).getFloat().intValue(); //m_FBS_VCData.m_SysState.CapTestStopType = (int)readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn1.mag.f", Fc.MX); }else if(fc_mode_str.contains(FBSDeviceName + "/ncdGGIO1.AnIn2.mag.f")){ m_FBS_VCData.battcap[0] = ((BdaFloat32) fc_mode).getFloat(); //m_FBS_VCData.battcap[0] = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn2.mag.f", Fc.MX); }else if(fc_mode_str.contains(FBSDeviceName + "/ncdGGIO1.AnIn59.mag.f")){ m_FBS_VCData.m_SysState.temp = ((BdaFloat32) fc_mode).getFloat(); //m_FBS_VCData.m_SysState.temp = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn59.mag.f", Fc.MX); }else if(fc_mode_str.contains(FBSDeviceName + "/ncdGGIO1.AnIn55.mag.f")){ m_FBS_VCData.m_SysState.conresist = ((BdaFloat32) fc_mode).getFloat(); //m_FBS_VCData.m_SysState.conresist = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn55.mag.f", Fc.MX);; }else if(fc_mode_str.contains(FBSDeviceName + "/ncdGGIO1.AnIn56.mag.f")){ m_FBS_VCData.m_SysState.concurr = ((BdaFloat32) fc_mode).getFloat(); //m_FBS_VCData.m_SysState.concurr = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn56.mag.f", Fc.MX);; }else if(fc_mode_str.contains(FBSDeviceName + "/ncdGGIO1.AnIn57.mag.f")){ m_FBS_VCData.m_SysState.condvoldp = ((BdaFloat32) fc_mode).getFloat(); //m_FBS_VCData.m_SysState.condvoldp = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn57.mag.f", Fc.MX);; }else if (fc_mode_str.contains(FBSDeviceName + "/ncdGGIO1.AnIn59.mag.f")){ m_FBS_VCData.m_SysState.temp = ((BdaFloat32) fc_mode).getFloat(); //m_FBS_VCData.m_SysState.temp = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn59.mag.f", Fc.MX); }else if (fc_mode_str.contains(FBSDeviceName + "/ncdGGIO1.AnIn58.mag.f")) { m_FBS_VCData.m_SysState.condcurr = ((BdaFloat32) fc_mode).getFloat(); //m_FBS_VCData.m_SysState.condcurr = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn58.mag.f", Fc.MX);; }else if(fc_mode_str.contains(FBSDeviceName+"/ncdGGIO1.AnIn60.mag.f")) { //m_FBS_VCData.m_SysState.resttest_count = readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn60.mag.f", Fc.MX); }else if (fc_mode_str.contains(FBSDeviceName+"/ncdGGIO1.AnIn103.mag.f")) { fod_state.WorkState_one = (int)((float)((BdaFloat32)fc_mode).getFloat()); //fod_state.WorkState_one = (int)readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn103.mag.f", Fc.MX); }else if (fc_mode_str.contains(FBSDeviceName+"/ncdGGIO1.AnIn104.mag.f")) { fod_state.RestTime_one = ((BdaFloat32) fc_mode).getFloat(); //fod_state.RestTime_one = (int)readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn104.mag.f", Fc.MX); }else if (fc_mode_str.contains(FBSDeviceName+"/ncdGGIO1.AnIn105.mag.f")) { fod_state.WorkState_two = (int)((float)((BdaFloat32)fc_mode).getFloat()); //fod_state.WorkState_two = (int)readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn105.mag.f", Fc.MX); }else if (fc_mode_str.contains(FBSDeviceName+"/ncdGGIO1.AnIn106.mag.f")) { fod_state.RestTime_two = ((BdaFloat32) fc_mode).getFloat(); //fod_state.RestTime_two = (int)readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn106.mag.f", Fc.MX); }else if (fc_mode_str.contains(FBSDeviceName+"/ncdGGIO1.AnIn107.mag.f")) { fod_state.WorkState_three = (int)((float)((BdaFloat32)fc_mode).getFloat()); //fod_state.WorkState_three = (int)readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn107.mag.f", Fc.MX); }else if (fc_mode_str.contains(FBSDeviceName+"/ncdGGIO1.AnIn108.mag.f")) { fod_state.RestTime_three = ((BdaFloat32) fc_mode).getFloat(); //fod_state.RestTime_three = (int)readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn108.mag.f", Fc.MX); }else if (fc_mode_str.contains(FBSDeviceName+"/ncdGGIO1.AnIn109.mag.f")) { fod_state.WorkState_four = (int)((float)((BdaFloat32)fc_mode).getFloat()); //fod_state.WorkState_four = (int)readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn109.mag.f", Fc.MX); }else if (fc_mode_str.contains(FBSDeviceName+"/ncdGGIO1.AnIn110.mag.f")) { fod_state.RestTime_four = ((BdaFloat32) fc_mode).getFloat(); //fod_state.RestTime_four = (int)readFloatNodeData(FBSDeviceName+"/ncdGGIO1.AnIn110.mag.f", Fc.MX); } } m_FBS_VCData.m_SysState.setCommCountInc(); //----------------- 读到状态数据后再更新数据库数据 -------------------// getFBS9100MonVolData(m_FBS_VCData); ds = null; } //m_FBS_VCData.m_SysState.resetErrCommCount(); } else if (FBS9100_ComBase.CMD_SetDischargeParm == cmd) { boolean write_res_t = true; /****************************************************************************** if(true == write_res_t) { try { write_res_t = BTS_IEC61850_Write_SetMag_Node(FBSDeviceName+"/ncdGGIO1.Para1.setMag.f", m_StatAndParam.m_FBS_DiscParam); } catch (ServiceError e) { // TODO Auto-generated catch block e.printStackTrace(); } } sleep(1500); **************************************************************************/ if (true == write_res_t) { if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para1.setMag.f")) return false; 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; if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para2.setMag.f")) return false; writeNodeData(FBSDeviceName + "/ncdGGIO1.Para2.setMag.f", "SP", (float) dis_hour_t); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para3.setMag.f")) return false; writeNodeData(FBSDeviceName + "/ncdGGIO1.Para3.setMag.f", "SP", (float) m_StatAndParam.m_FBS_DiscParam.DisCap); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para4.setMag.f")) return false; writeNodeData(FBSDeviceName + "/ncdGGIO1.Para4.setMag.f", "SP", (float) m_StatAndParam.m_FBS_DiscParam.getMonomerLowCount()); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para5.setMag.f")) return false; writeNodeData(FBSDeviceName + "/ncdGGIO1.Para5.setMag.f", "SP", (float) m_StatAndParam.m_FBS_DiscParam.GroupVol_LOW); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para6.setMag.f")) return false; writeNodeData(FBSDeviceName + "/ncdGGIO1.Para6.setMag.f", "SP", (float) m_StatAndParam.m_FBS_DiscParam.MonomerVol_LOW); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para7.setMag.f")) return false; writeNodeData(FBSDeviceName + "/ncdGGIO1.Para7.setMag.f", "SP", (float) m_StatAndParam.m_FBS_DiscParam.MonomerTmp_High); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/btgGGIO1.Para1.setMag.f")) return false; writeNodeData(FBSDeviceName + "/btgGGIO1.Para1.setMag.f", "SP", (float) m_StatAndParam.m_FBS_DiscParam.ChargeCurrSet); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/btgGGIO1.Para2.setMag.f")) return false; writeNodeData(FBSDeviceName + "/btgGGIO1.Para2.setMag.f", "SP", (float) m_StatAndParam.m_FBS_DiscParam.DCVolHighLimit); //sleep(2000); } //---------------------------------Log Level.WARN-------------------------------------// logger.printf(Level.WARN, "DevIp:%s operate FBS9100_ComBase.CMD_SetDischargeParm, \n param:%s", FBSDeviceIp, m_FBS_DiscParamFromDev); //-------------------------------------------------------------------------------------// comm_res = true; } else if (FBS9100_ComBase.CMD_GetDischargeParm == cmd) { DataSet ds_pm = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsBtseYc"); if(null != ds_pm && null != ds_pm.getMembers()) { int size_cnt = ds_pm.getMembers().size(); m_Association.getDataSetValues(ds_pm); // logger.printf(Level.DEBUG, "开始读取放电参数"); for (int n = 0; n < size_cnt; n++) { if(null == ds_pm.getMembers().get(n).getChild("mag")) { continue; } FcModelNode fc_mode = (FcModelNode) ds_pm.getMembers().get(n).getChild("mag").getChild("f"); BasicDataBind data = new Float32DataBind((BdaFloat32) fc_mode); JTextField tf_t = (JTextField) data.getValueField(); String fc_model_str = fc_mode.toString1(); //logger.error(fc_model_str+"==:"+tf_t.getText()); if (fc_model_str.contains(FBSDeviceName + "/ncdGGIO1.TestCurr.mag.f")) { m_FBS_DiscParamFromDev.DisCurr = Float.parseFloat(tf_t.getText()); //m_FBS_DiscParamFromDev.DisCurr = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.TestCurr.mag.f", Fc.MX); ///*/*兼容点集中的组2参数为组1*/*/}else if (fc_model_str.contains(ZJDYCPSS + "/cheGGIO1.HiTestTmhour.mag.f")) { }else if (fc_model_str.contains("/cheGGIO1.HiTestTmhour.mag.f")) { float dis_hour_t = Float.parseFloat(tf_t.getText()); dis_hour_t = dis_hour_t * 60; m_FBS_DiscParamFromDev.DisTime = (int) dis_hour_t; //m_FBS_DiscParamFromDev.DisTime = (int)(readFloatNodeData(ZJDYCPSS + "/cheGGIO1.HiTestTmhour.mag.f", Fc.MX)*60); }else if (fc_model_str.contains(FBSDeviceName + "/ncdGGIO1.HiTestBatAh.mag.f")) { m_FBS_DiscParamFromDev.DisCap = Float.parseFloat(tf_t.getText()); //m_FBS_DiscParamFromDev.DisCap = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.HiTestBatAh.mag.f", Fc.MX); }else if (fc_model_str.contains(FBSDeviceName + "/ncdGGIO1.HiCelTemp.mag.f")) { m_FBS_DiscParamFromDev.MonomerTmp_High = Float.parseFloat(tf_t.getText()); //m_FBS_DiscParamFromDev.MonomerTmp_High = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.HiCelTemp.mag.f", Fc.MX); // /*兼容点集中的组2参数为组1*/ }else if (fc_model_str.contains(ZJDYCPSS + "/cheGGIO1.LoBatVal.mag.f")) { }else if (fc_model_str.contains("/cheGGIO1.LoBatVal.mag.f")) { m_FBS_DiscParamFromDev.GroupVol_LOW = Float.parseFloat(tf_t.getText()); //m_FBS_DiscParamFromDev.GroupVol_LOW = readFloatNodeData(ZJDYCPSS + "/cheGGIO1.LoBatVal.mag.f", Fc.MX); }else if (fc_model_str.contains(FBSDeviceName + "/ncdGGIO1.LoCelVol.mag.f")) { m_FBS_DiscParamFromDev.MonomerVol_LOW = Float.parseFloat(tf_t.getText()); //m_FBS_DiscParamFromDev.MonomerVol_LOW= readFloatNodeData(FBSDeviceName + "/ncdGGIO1.LoCelVol.mag.f", Fc.MX); }else if(fc_model_str.contains(FBSDeviceName + "/ncdGGIO1.DCVolLimit.mag.f")) { m_FBS_DiscParamFromDev.DCVolHighLimit = Float.parseFloat(tf_t.getText()); //m_FBS_DiscParamFromDev.DCVolHighLimit = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.DCVolLimit.mag.f", Fc.MX); }else if(fc_model_str.contains(FBSDeviceName + "/ncdGGIO1.ChargeCurr.mag.f")) { m_FBS_DiscParamFromDev.ChargeCurrSet = Float.parseFloat(tf_t.getText()); //m_FBS_DiscParamFromDev.ChargeCurrSet = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.ChargeCurr.mag.f", Fc.MX); }else { //System.out.println(fc_model_str); } } //测试时长 m_FBS_DiscParamFromDev.DisTime = (int)(readFloatNodeData(ZJDYCPSS + "/cheGGIO1.HiTestTmhour.mag.f", Fc.MX)*60); //组端下限 m_FBS_DiscParamFromDev.GroupVol_LOW = readFloatNodeData(ZJDYCPSS + "/cheGGIO1.LoBatVal.mag.f", Fc.MX); ds_pm = null; }else { m_FBS_DiscParamFromDev.DisCurr = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.TestCurr.mag.f", Fc.MX); m_FBS_DiscParamFromDev.DisTime = (int)(readFloatNodeData(ZJDYCPSS + "/cheGGIO1.HiTestTmhour.mag.f", Fc.MX)*60); m_FBS_DiscParamFromDev.DisCap = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.HiTestBatAh.mag.f", Fc.MX); m_FBS_DiscParamFromDev.MonomerTmp_High = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.HiCelTemp.mag.f", Fc.MX); m_FBS_DiscParamFromDev.GroupVol_LOW = readFloatNodeData(ZJDYCPSS + "/cheGGIO1.LoBatVal.mag.f", Fc.MX); m_FBS_DiscParamFromDev.MonomerVol_LOW= readFloatNodeData(FBSDeviceName + "/ncdGGIO1.LoCelVol.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); } comm_res = true; //---------------------------------Log Level.DEBUG-------------------------------------// logger.printf(Level.DEBUG, "DevIp:%s operate FBS9100_ComBase.CMD_GetDischargeParm, \n param:%s", FBSDeviceIp, m_FBS_DiscParamFromDev); //-------------------------------------------------------------------------------------// } else if (FBS9100_ComBase.CMD_Stop == cmd) { if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.SPCSO1")) return false; comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO1.Oper", false); int count = 1; if (m_FBS_VCData.m_SysState.WorkState == 2 || m_FBS_VCData.m_SysState.WorkState == 3) { count = 6; } else if (m_FBS_VCData.m_SysState.WorkState == 1) { count = 7; } else if (m_FBS_VCData.m_SysState.WorkState == 5) { count = 8; } //comm_res = checkMakeSuccess(count); //---------------------------------Log Level.WARN-------------------------------------// logger.printf(Level.WARN, "DevIp:%s operate FBS9100_ComBase.CMD_Stop, res:%b", FBSDeviceIp, comm_res); //-------------------------------------------------------------------------------------// } else if (FBS9100_ComBase.CMD_StartDischarge == cmd) { if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.SPCSO1")) return false; comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO1.Oper", true); //comm_res = checkMakeSuccess(0); //---------------------------------Log Level.WARN-------------------------------------// logger.printf(Level.WARN, "DevIp:%s DevId:%d operate FBS9100_ComBase.CMD_StartDischarge, res:%b", FBSDeviceIp,m_FBSDevId, comm_res); //-------------------------------------------------------------------------------------// } else if (FBS9100_ComBase.CMD_StartResDischarge == cmd) { if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.SPCSO2")) return false; comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO2.Oper", true); //comm_res = checkMakeSuccess(2); //---------------------------------Log Level.WARN-------------------------------------// logger.printf(Level.WARN, "DevIp:%s operate FBS9100_ComBase.CMD_StartResDischarge, res:%b", FBSDeviceIp, comm_res); //-------------------------------------------------------------------------------------// } else if (FBS9100_ComBase.CMD_StartKIDI == cmd) { if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.SPCSO3")) return false; comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO3.Oper", true); //comm_res = checkMakeSuccess(1); //---------------------------------Log Level.WARN-------------------------------------// logger.printf(Level.WARN, "DevIp:%s operate FBS9100_ComBase.CMD_StartKIDI, res:%b", FBSDeviceIp, comm_res); //-------------------------------------------------------------------------------------// } else if ((FBS9100_ComBase.CMD_SetIp == cmd) || (FBS9100_ComBase.CMD_SetIpNow == cmd)) { setip(); //DecimalFormat df = new DecimalFormat("000"); String[] Arrip = m_RTData[0].FBSDeviceIp.split("\\."); String[] ArripWG = m_RTData[0].FBSDeviceIp_WG.split("\\."); String[] ArripYM = m_RTData[0].FBSDeviceIp_YM.split("\\."); StringBuffer Stringip = new StringBuffer(); StringBuffer StringipWG = new StringBuffer(); StringBuffer StringipYM = new StringBuffer(); // System.out.println(Arrip.length); for (int i = 0; i < Arrip.length; i++) { if (Arrip[i].trim().length() < 3) { int length = Arrip[i].trim().length(); for (int j = 1; j <= 3 - length; j++) { Arrip[i] = "0" + Arrip[i].trim(); } } if (ArripWG[i].trim().length() < 3) { int length = ArripWG[i].trim().length(); for (int j = 1; j <= 3 - length; j++) { ArripWG[i] = "0" + ArripWG[i].trim(); } } if (ArripYM[i].trim().length() < 3) { int length = ArripYM[i].trim().length(); for (int j = 1; j <= 3 - length; j++) { ArripYM[i] = "0" + ArripYM[i].trim(); } } } for (int i = 0; i < Arrip.length; i++) { Stringip.append(Arrip[i]); StringipWG.append(ArripWG[i]); StringipYM.append(ArripYM[i]); } String a = Stringip.toString(); Stringip = new StringBuffer("1" + a); long ipYM = Long.parseLong(StringipYM.toString()); long ip = Long.parseLong(Stringip.toString()); // System.out.println("ip:"+ip); long ipWG = Long.parseLong(StringipWG.toString()); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para8.setMag.i")) return false; writeNodeDataInt(FBSDeviceName + "/ncdGGIO1.Para8.setMag.i", "SP", ip); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para9.setMag.i")) return false; writeNodeDataInt(FBSDeviceName + "/ncdGGIO1.Para9.setMag.i", "SP", ipWG); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para10.setMag.i")) return false; writeNodeDataInt(FBSDeviceName + "/ncdGGIO1.Para10.setMag.i", "SP", ipYM); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.SPCSO5")) return false; comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO5.Oper", (FBS9100_ComBase.CMD_SetIp==cmd)); //---------------------------------Log Level.WARN-------------------------------------// logger.printf(Level.WARN, "DevIp:%s operate FBS9100_ComBase.CMD_SetIp, op_bool:%b, " + "newip:%ld, netmask:%ld, gateway:%ld", FBSDeviceIp, (FBS9100_ComBase.CMD_SetIp==cmd), ip,ipYM,ipWG); //-------------------------------------------------------------------------------------// } else if (FBS9100_ComBase.CMD_ReadFodParam == cmd) { //读取除硫参数信息 m_StatAndParam.clParam.STDCap_one = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn80.mag.f", Fc.MX); // 除硫1标称容量 m_StatAndParam.clParam.FloatVol_one = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn81.mag.f", Fc.MX); // 浮充电压 m_StatAndParam.clParam.Strength_one = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn82.mag.f", Fc.MX); // 除硫强度 m_StatAndParam.clParam.YHStrength_one = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn83.mag.f", Fc.MX); // 养护强度 m_StatAndParam.clParam.TimeLong_one = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn84.mag.f", Fc.MX); // 除硫时间 m_StatAndParam.clParam.STDCap_two = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn86.mag.f", Fc.MX);; m_StatAndParam.clParam.FloatVol_two = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn87.mag.f", Fc.MX); m_StatAndParam.clParam.Strength_two = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn88.mag.f", Fc.MX); m_StatAndParam.clParam.YHStrength_two = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn89.mag.f", Fc.MX); m_StatAndParam.clParam.TimeLong_two = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn90.mag.f", Fc.MX); m_StatAndParam.clParam.STDCap_three = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn92.mag.f", Fc.MX); m_StatAndParam.clParam.FloatVol_three = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn93.mag.f", Fc.MX); m_StatAndParam.clParam.Strength_three = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn94.mag.f", Fc.MX); m_StatAndParam.clParam.YHStrength_three = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn95.mag.f", Fc.MX); m_StatAndParam.clParam.TimeLong_three = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn96.mag.f", Fc.MX); m_StatAndParam.clParam.STDCap_four = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn98.mag.f", Fc.MX); m_StatAndParam.clParam.FloatVol_four = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn99.mag.f", Fc.MX); m_StatAndParam.clParam.Strength_four = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn100.mag.f", Fc.MX); m_StatAndParam.clParam.YHStrength_four = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn101.mag.f", Fc.MX); m_StatAndParam.clParam.TimeLong_four = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn102.mag.f", Fc.MX); /*DataSet ds = null; ds = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsDevState"); int size_cnt = ds.getMembers().size(); m_Association.getDataSetValues(ds); for (int n = 86;size_cnt>n && n < 109; n++) { FcModelNode fc_mode = (FcModelNode) ds.getMembers().get(n).getChild("mag").getChild("f"); 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) { case 86:{ //m_StatAndParam.clParam.STDCap_one = (int) Double.parseDouble(tf_t.getText());// 除硫1标称容量 m_StatAndParam.clParam.STDCap_one = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn80.mag.f", Fc.MX);// 除硫1标称容量 }break; case 87: m_StatAndParam.clParam.FloatVol_one = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn81.mag.f", Fc.MX);// 浮充电压 break; case 88: m_StatAndParam.clParam.Strength_one = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn82.mag.f", Fc.MX);// 除硫强度 break; case 89: m_StatAndParam.clParam.YHStrength_one = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn83.mag.f", Fc.MX);// 养护强度 break; case 90: m_StatAndParam.clParam.TimeLong_one = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn84.mag.f", Fc.MX);// 除硫时间 break; // case 85: // m_StatAndParam.clParam.STDCap_two=Double.parseDouble(tf_t.getText());///除硫2标称容量 // break; case 92: m_StatAndParam.clParam.STDCap_two = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn86.mag.f", Fc.MX);; break; case 93: m_StatAndParam.clParam.FloatVol_two = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn87.mag.f", Fc.MX); break; case 94: m_StatAndParam.clParam.Strength_two = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn88.mag.f", Fc.MX); break; case 95: m_StatAndParam.clParam.YHStrength_two = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn89.mag.f", Fc.MX); break; case 96: m_StatAndParam.clParam.TimeLong_two = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn90.mag.f", Fc.MX); break; // case 91: // Double.parseDouble(tf_t.getText()); // break; case 98: m_StatAndParam.clParam.STDCap_three = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn92.mag.f", Fc.MX); break; case 99: m_StatAndParam.clParam.FloatVol_three = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn93.mag.f", Fc.MX); break; case 100: m_StatAndParam.clParam.Strength_three = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn94.mag.f", Fc.MX); break; case 101: m_StatAndParam.clParam.YHStrength_three = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn95.mag.f", Fc.MX); break; case 102: m_StatAndParam.clParam.TimeLong_three = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn96.mag.f", Fc.MX); break; // case 97: // Double.parseDouble(tf_t.getText()); // break; case 104: m_StatAndParam.clParam.STDCap_four = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn98.mag.f", Fc.MX); break; case 105: m_StatAndParam.clParam.FloatVol_four = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn99.mag.f", Fc.MX); break; case 106: m_StatAndParam.clParam.Strength_four = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn100.mag.f", Fc.MX); break; case 107: m_StatAndParam.clParam.YHStrength_four = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn101.mag.f", Fc.MX); break; case 108: m_StatAndParam.clParam.TimeLong_four = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn102.mag.f", Fc.MX); break; } }*/ comm_res = true; //---------------------------------Log Level.DEBUG-------------------------------------// logger.printf(Level.DEBUG, "DevIp:%s operate FBS9100_ComBase.CMD_ReadFodParam, \n param:%s", FBSDeviceIp, m_StatAndParam.clParam); //-------------------------------------------------------------------------------------// } else if (FBS9100_ComBase.CMD_WriteFodParam == cmd) { if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para12.setMag.f")); writeNodeData(FBSDeviceName + "/ncdGGIO1.Para12.setMag.f", "SP", (float) m_StatAndParam.clParam.STDCap_one); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para13.setMag.f")); writeNodeData(FBSDeviceName + "/ncdGGIO1.Para13.setMag.f", "SP", (float) m_StatAndParam.clParam.FloatVol_one); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para14.setMag.f")); writeNodeData(FBSDeviceName + "/ncdGGIO1.Para14.setMag.f", "SP", (float) m_StatAndParam.clParam.Strength_one); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para15.setMag.f")); writeNodeData(FBSDeviceName + "/ncdGGIO1.Para15.setMag.f", "SP", (float) m_StatAndParam.clParam.YHStrength_one); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para16.setMag.f")); writeNodeData(FBSDeviceName + "/ncdGGIO1.Para16.setMag.f", "SP", (float) m_StatAndParam.clParam.TimeLong_one); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para18.setMag.f")); writeNodeData(FBSDeviceName + "/ncdGGIO1.Para18.setMag.f", "SP", (float) m_StatAndParam.clParam.STDCap_two); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para19.setMag.f")); writeNodeData(FBSDeviceName + "/ncdGGIO1.Para19.setMag.f", "SP", (float) m_StatAndParam.clParam.FloatVol_two); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para20.setMag.f")); writeNodeData(FBSDeviceName + "/ncdGGIO1.Para20.setMag.f", "SP", (float) m_StatAndParam.clParam.Strength_two); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para21.setMag.f")); writeNodeData(FBSDeviceName + "/ncdGGIO1.Para21.setMag.f", "SP", (float) m_StatAndParam.clParam.YHStrength_two); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para22.setMag.f")); writeNodeData(FBSDeviceName + "/ncdGGIO1.Para22.setMag.f", "SP", (float) m_StatAndParam.clParam.TimeLong_two); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para24.setMag.f")); writeNodeData(FBSDeviceName + "/ncdGGIO1.Para24.setMag.f", "SP", (float) m_StatAndParam.clParam.STDCap_three); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para25.setMag.f")); writeNodeData(FBSDeviceName + "/ncdGGIO1.Para25.setMag.f", "SP", (float) m_StatAndParam.clParam.FloatVol_three); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para26.setMag.f")); writeNodeData(FBSDeviceName + "/ncdGGIO1.Para26.setMag.f", "SP", (float) m_StatAndParam.clParam.Strength_three); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para27.setMag.f")); writeNodeData(FBSDeviceName + "/ncdGGIO1.Para27.setMag.f", "SP", (float) m_StatAndParam.clParam.YHStrength_three); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para28.setMag.f")); writeNodeData(FBSDeviceName + "/ncdGGIO1.Para28.setMag.f", "SP", (float) m_StatAndParam.clParam.TimeLong_three); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para30.setMag.f")); writeNodeData(FBSDeviceName + "/ncdGGIO1.Para30.setMag.f", "SP", (float) m_StatAndParam.clParam.STDCap_four); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para31.setMag.f")); writeNodeData(FBSDeviceName + "/ncdGGIO1.Para31.setMag.f", "SP", (float) m_StatAndParam.clParam.FloatVol_four); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para32.setMag.f")); writeNodeData(FBSDeviceName + "/ncdGGIO1.Para32.setMag.f", "SP", (float) m_StatAndParam.clParam.Strength_four); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para33.setMag.f")); writeNodeData(FBSDeviceName + "/ncdGGIO1.Para33.setMag.f", "SP", (float) m_StatAndParam.clParam.YHStrength_four); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para34.setMag.f")); writeNodeData(FBSDeviceName + "/ncdGGIO1.Para34.setMag.f", "SP", (float) m_StatAndParam.clParam.TimeLong_four); comm_res = true; //---------------------------------Log Level.WARN-------------------------------------// logger.printf(Level.WARN, "DevIp:%s operate FBS9100_ComBase.CMD_WriteFodParam, \n param:%s", FBSDeviceIp, m_StatAndParam.clParam); //------------------------------------------------------------------------------------// } 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); // System.out.println(m_StatAndParam.clParam.num); switch (m_StatAndParam.clParam.GroupNum) { case 1:{ if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.SPCSO6")) return false; comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO6.Oper", true); // 模块1除硫 }break; case 2:{ if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.SPCSO7")) return false; comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO7.Oper", true); // 模块21除硫 }break; case 3:{ if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.SPCSO8")) return false; comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO8.Oper", true); // 模块31除硫 }break; case 4:{ if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.SPCSO9")) return false; comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO9.Oper", true); // 模块41除硫 }break; } //comm_res = checkMakeSuccess(3); //---------------------------------Log Level.WARN-------------------------------------// logger.printf(Level.WARN, "DevIp:%s operate FBS9100_ComBase.CMD_Start_FODCL_test, " + "battgroup_num:%d, res:%b", FBSDeviceIp, m_StatAndParam.clParam.GroupNum, comm_res); //------------------------------------------------------------------------------------// } else if (FBS9100_ComBase.CMD_Stop_FOD_test == cmd) { // System.out.println(m_StatAndParam.clParam.GroupNum); switch (m_StatAndParam.clParam.GroupNum) { case 1:{ if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.SPCSO6")); comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO6.Oper", false); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.SPCSO10")); comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO10.Oper", false); }break; case 2:{ if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.SPCSO7")); comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO7.Oper", false); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.SPCSO11")); comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO11.Oper", false); }break; case 3:{ if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.SPCSO8")) return false; comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO8.Oper", false); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.SPCS12")); comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCS12.Oper", false); }break; case 4:{ if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.SPCSO9")) return false; comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO9.Oper", false); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.SPCSO13")); comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO13.Oper", false); }break; } //comm_res = checkMakeSuccess(9); //---------------------------------Log Level.WARN-------------------------------------// logger.printf(Level.WARN, "DevIp:%s operate FBS9100_ComBase.CMD_Stop_FOD_test, " + "battgroup_num:%d, res:%b", FBSDeviceIp, m_StatAndParam.clParam.GroupNum, comm_res); //------------------------------------------------------------------------------------// } else if (FBS9100_ComBase.CMD_Start_FODYH_test == cmd) { switch (m_StatAndParam.clParam.GroupNum) { case 1:{ if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.SPCSO10")) return false; comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO10.Oper", true); }break; case 2:{ if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.SPCSO11")) return false; comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO11.Oper", true); }break; case 3:{ if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.SPCSO12")) return false; comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO12.Oper", true); }break; case 4:{ if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.SPCSO13")) return false; comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO13.Oper", true); }break; } //comm_res = checkMakeSuccess(4); //---------------------------------Log Level.WARN-------------------------------------// logger.printf(Level.WARN, "DevIp:%s operate FBS9100_ComBase.CMD_Start_FODYH_test, " + "battgroup_num:%d, res:%b", FBSDeviceIp, m_StatAndParam.clParam.GroupNum, comm_res); //------------------------------------------------------------------------------------// } else if (FBS9100_ComBase.CMD_GetOffLineYHParam == cmd) { // System.err.println("读取离线养护参数"); // 读取离线养护参数 // 获取单体温度上限阀值 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_FBS_DiscParamFromDev.copyOfflineYHData(m_StatAndParam.bts61850_OffLineYHPlan); // 获取在线电压低阀值 m_FBS_DiscParamFromDev.OnLineVol_Low = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.AnIn112.mag.f", Fc.MX); comm_res = true; //---------------------------------Log Level.DEBUG-------------------------------------// logger.printf(Level.DEBUG, "DevIp:%s operate FBS9100_ComBase.CMD_GetOffLineYHParam, " + "\n m_StatAndParam.bts61850_OffLineYHPlan param:%s " + "\n m_FBS_DiscParamFromDev param:%s", FBSDeviceIp, m_StatAndParam.bts61850_OffLineYHPlan, m_FBS_DiscParamFromDev); //------------------------------------------------------------------------------------// } else if (FBS9100_ComBase.CMD_SetOffLineYHParam == cmd) { // System.err.println("设置离线养护参数" + // m_StatAndParam.m_FBS_DiscParam.MonomerTmp_High); // 设置离线养护参数 boolean write_res_t = true; if (true == write_res_t) { if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para35.setMag.f")) return false; // 离线养护周期 writeNodeData(FBSDeviceName + "/ncdGGIO1.Para35.setMag.f", "SP", (float) m_StatAndParam.m_FBS_DiscParam.OffLineYH_Cycle); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para36.setMag.f")); // 在线压低 writeNodeData(FBSDeviceName + "/ncdGGIO1.Para36.setMag.f", "SP", (float) m_StatAndParam.m_FBS_DiscParam.OnLineVol_Low); sleep(1500); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para7.setMag.f")); // 单体温度上限 writeNodeData(FBSDeviceName + "/ncdGGIO1.Para7.setMag.f", "SP", (float) m_StatAndParam.m_FBS_DiscParam.MonomerTmp_High); } comm_res = true; //---------------------------------Log Level.WARN-------------------------------------// logger.printf(Level.WARN, "DevIp:%s operate FBS9100_ComBase.CMD_SetOffLineYHParam:" + " OffLineYH_Cycle:%d, OnLineVol_Low:%1.1fV, MonomerTmp_High:%1.3f℃", FBSDeviceIp, m_StatAndParam.m_FBS_DiscParam.OffLineYH_Cycle, m_StatAndParam.m_FBS_DiscParam.OnLineVol_Low, m_StatAndParam.m_FBS_DiscParam.MonomerTmp_High); //------------------------------------------------------------------------------------// } else if (FBS9100_ComBase.CMD_StartOffLineYH == cmd) { if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.SPCSO14")) return false; comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO14.Oper", true); //comm_res = checkMakeSuccess(5); //---------------------------------Log Level.WARN-------------------------------------// logger.printf(Level.WARN, "DevIp:%s operate FBS9100_ComBase.CMD_StartOffLineYH, res:%b", FBSDeviceIp, comm_res); //------------------------------------------------------------------------------------// } else if (FBS9100_ComBase.CMD_StopOffLineYH == cmd) { if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.SPCSO14")) return false; comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO14.Oper", false); //comm_res = checkMakeSuccess(10); //---------------------------------Log Level.WARN-------------------------------------// logger.printf(Level.WARN, "DevIp:%s operate FBS9100_ComBase.CMD_StopOffLineYH, res:%b", FBSDeviceIp, comm_res); //------------------------------------------------------------------------------------// } else if (FBS9100_ComBase.CMD_ResetSystem == cmd) { if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.SPCSO4")) return false; comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO4.Oper", true); //---------------------------------Log Level.WARN-------------------------------------// logger.printf(Level.WARN, "DevIp:%s operate FBS9100_ComBase.CMD_ResetSystem, res:%b", FBSDeviceIp, comm_res); //------------------------------------------------------------------------------------// } 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.LoaderCount = (int) (readFloatNodeData(FBSDeviceName + "/btgGGIO1.AnIn29.mag.f",Fc.MX)); // 主从机使能 m_FBS_SysParam.DtCardCount = (int) (readFloatNodeData(FBSDeviceName + "/btgGGIO1.AnIn30.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; //---------------------------------Log Level.DEBUG-------------------------------------// logger.printf(Level.DEBUG, "DevIp:%s operate FBS9100_ComBase.CMD_GetSYSSetParam, " + "\n m_FBS_SysParam param:%s ", FBSDeviceIp, m_FBS_SysParam); //-------------------------------------------------------------------------------------// } else if (FBS9100_ComBase.CMD_SetSYSSetParam == cmd) { if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para37.setMag.f")); // 电压过低阀值 writeNodeData(FBSDeviceName + "/ncdGGIO1.Para37.setMag.f", "SP", (float) m_FBS_SysParam.POF_BG_Boost_VolStart); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para38.setMag.f")); // 电压过高阀值 writeNodeData(FBSDeviceName + "/ncdGGIO1.Para38.setMag.f", "SP", (float) m_FBS_SysParam.POF_BG_Boost_VolStop); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para39.setMag.f")); // 电流异常阀值 writeNodeData(FBSDeviceName + "/ncdGGIO1.Para39.setMag.f", "SP", (float) m_FBS_SysParam.PowerBreakChargeCurr); sleep(1500); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para40.setMag.f")); // 浮充电流阀值 writeNodeData(FBSDeviceName + "/ncdGGIO1.Para40.setMag.f", "SP", ((float) m_FBS_SysParam.CurrentTyte) / 10); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para41.setMag.f")); // 在线电压低阀值 writeNodeData(FBSDeviceName + "/ncdGGIO1.Para41.setMag.f", "SP", ((float) m_FBS_SysParam.GroupVolSorce) / 10); sleep(1500); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.Para42.setMag.f")); // 设置主从机模式 writeNodeData(FBSDeviceName + "/ncdGGIO1.Para42.setMag.f", "SP", ((float) m_FBS_SysParam.MonomerOrder)); comm_res = true; //---------------------------------Log Level.WARN-------------------------------------// logger.printf(Level.WARN, "DevIp:%s operate FBS9100_ComBase.CMD_SetSYSSetParam: %s", FBSDeviceIp, m_FBS_SysParam); //------------------------------------------------------------------------------------// } else if (FBS9100_ComBase.CMD_ClearSysAlarm == cmd) { if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.SPCSO15")) return false; // 清除设备告警 comm_res = BTS_IEC61850_Write_CO_Node(FBSDeviceName + "/ncdGGIO1.SPCSO15.Oper", true); //---------------------------------Log Level.WARN-------------------------------------// logger.printf(Level.WARN, "DevIp:%s operate FBS9100_ComBase.CMD_ClearSysAlarm, res:%b", FBSDeviceIp, comm_res); //------------------------------------------------------------------------------------// }else if(FBS9100_ComBase.CMD_GetJuHengParam == cmd) { //读取均衡参数 /** * 2021-08-30 edit @lijun 佛山二期新增点位用户判断均衡功能启用状态以及对应阀值 */ m_FBS_SysParam.JunHeng_Enabled = readFloatNodeData(FBSDeviceName + "/btgGGIO1.AnIn31.mag.f",Fc.MX)/1000; //均衡启用状态 m_FBS_SysParam.JunHeng_StVol = readFloatNodeData(FBSDeviceName + "/btgGGIO1.AnIn32.mag.f",Fc.MX); //均衡停止电压阀值 m_FBS_SysParam.JunHeng_StCurr = readFloatNodeData(FBSDeviceName + "/btgGGIO1.AnIn33.mag.f",Fc.MX); //均衡停止电流阀值 //System.out.println("JunHeng_Enabled;"+m_FBS_SysParam.JunHeng_Enabled + "\t" + // "JunHeng_StVol;"+m_FBS_SysParam.JunHeng_StVol + "\t"+ // "JunHeng_StCurr;"+m_FBS_SysParam.JunHeng_StCurr + "\t"); }else if(FBS9100_ComBase.CMD_SetJuHengParam == cmd) { if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/btgGGIO1.Para3.setMag.f")); //均衡功能启用状态 writeNodeData(FBSDeviceName + "/btgGGIO1.Para3.setMag.f", "SP", m_FBS_SysParam.JunHeng_Enabled*1000); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/btgGGIO1.Para4.setMag.f")); //均衡停止电压阀值 writeNodeData(FBSDeviceName + "/btgGGIO1.Para4.setMag.f", "SP",(float)m_FBS_SysParam.JunHeng_StVol); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/btgGGIO1.Para5.setMag.f")); //均衡停止电流阀值 writeNodeData(FBSDeviceName + "/btgGGIO1.Para5.setMag.f", "SP",(float)m_FBS_SysParam.JunHeng_StCurr); }else if(FBS9100_ComBase.CMD_UpdateXZTime == cmd) { long time_l = Long.parseLong(Com.get_DTF(m_StatAndParam.m_FBS_DiscParam.OffLineYHstarttime, Com.DTFYMDhms)); if(!setBTSPublicKeyY(getUKEYRootDomStr(FBSDeviceName)+"/ncdGGIO1.SysTime_SYS.setMag.i")); writeNodeData_Int64(FBSDeviceName + "/ncdGGIO1.SysTime_SYS.setMag.i", "SP",time_l); logger.printf(Level.WARN, "DevIp:%s operate FBS9100_ComBase.CMD_UpdateXZTime , SetTime:"+Com.getDateTimeFormat(m_StatAndParam.m_FBS_DiscParam.OffLineYHstarttime, Com.DTFYMDhms), FBSDeviceIp); } comm_res = true; } catch (Exception e) { // TODO Auto-generated catch block logger.error(e.toString(), e); m_FBS_VCData.m_SysState.setErrCommCountInc(0); comm_res = false; } return comm_res; } public boolean checkMakeSuccess(int count) { boolean success = false; try { Thread.sleep(4500); } catch (InterruptedException e1) { logger.error(e1.toString(), e1); } int okcount = 0; for (int i = 0; i < 85; i++) { //南瑞中间协转无当前点位注释调用 //System.out.println("验签校验返回signOpRes:" + readInt64NodeData(FBSDeviceName + "/btgGGIO1.signOpRes.mag.i", Fc.MX)); int value = (int) (readInt64NodeData(FBSDeviceName + "/ncdGGIO1.AnIn119.mag.i", Fc.MX)); if ((value & MyUtil.power(2, count)) == MyUtil.power(2, count)) { // System.out.println("操作结果:" + value+"==="+MyUtil.power(2, count)); okcount++; if (okcount >= 8) { // System.out.println("校验成功===="+i); success = true; break; } } else { okcount = 0; } try { sleep(100); } catch (InterruptedException e) { logger.error(e.toString(), e); } } return success; } // int min = Arrays.stream(m_FBS_VCData.vol).min().getAsInt(); // System.out.println(min); private void checkEventChange() { try{ if (m_FBS_VCData.m_SysState.last_dev_61850alam != m_FBS_VCData.m_SysState.dev_61850alam) { // 告警状态变化 String[] last_alarm = m_FBS_VCData.m_SysState.last_dev_61850alam.split(","); String[] now_alarm = m_FBS_VCData.m_SysState.dev_61850alam.split(","); // 依次判断每个告警的状态是否相同 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); events.add(event); } } } } catch(Exception e) { logger.error(e.toString(), e); } } /** * 设置公钥Y 生成对应的签名 * @param publicKeyY */ public boolean setBTSPublicKeyY(String moderoot) { try { //System.out.println("YKey:"+m_StatAndParam.Crc32publicKeyY); //writeNodeDataString(FBSDeviceName+"/ncdGGIO1.key.setMag.i", "SP",m_StatAndParam.publicKeyY); //System.err.println("BTSID:"+m_StatAndParam.serialNumber+moderoot); //System.err.println(m_StatAndParam.serialNumber); //System.err.println("UKYID:"+m_StatAndParam.keyID); //System.err.println("签名:"+signature); if(m_StatAndParam.serialNumber.trim().length() > 0 && m_StatAndParam.keyID.trim().length() > 0) { String signature = createSignature(m_StatAndParam.serialNumber+moderoot, m_StatAndParam.keyID); //生成签名 //String signature = createSignature(m_StatAndParam.serialNumber, m_StatAndParam.keyID,moderoot); //生成签名 /** * 佛山版ukey值btg中,南网标准版在ncdg */ logger.info("写入签名:"+signature); writeNodeDataString(FBSDeviceName+"/btgGGIO1.sign.setVal", "SP",signature); //writeNodeDataString(FBSDeviceName+"/ncdGGIO1.sign.setVal", "SP",signature); Thread.sleep(1500); return true; } //writeNodeDataString(FBSDeviceName+"/ncdGGIO1.sign.setVal", "SP",m_StatAndParam.publicKeyY); } catch (Exception e) { e.printStackTrace(); } return false; } /** * 生成SM2数据签名 * @return */ public static String createSignature(String BTSID,String UkeyID) { String str = ""; BufferedReader stdout = null; try { String OS = System.getProperty("os.name").toLowerCase(); String cmd = ""; if(OS.contains("window")) { cmd = "sign_test.exe"; }else { cmd = "./sign_test.exe"; } Process proc=Runtime.getRuntime().exec(cmd + " "+BTSID+" "+UkeyID); //Process proc=Runtime.getRuntime().exec("sign_calukey_x64.exe "+BTSID+" "+UkeyID); stdout = new BufferedReader(new InputStreamReader(proc.getInputStream())); str = stdout.readLine(); System.out.println("内部验签计算签名:"+str); //System.out.println("调试----:"+stdout.readLine()); } catch (Exception e) { main_BTS_APP_IEC61850.logger.error(e.toString(), e); } finally { if(null != stdout) { try { stdout.close(); } catch (IOException e) { e.printStackTrace(); } } } return str; } /** * 生成SM2数据签名 * @return */ public static String createSignature(String BTSID,String UkeyID,String CMD) { String str = ""; BufferedReader stdout = null; try { Process proc=Runtime.getRuntime().exec("sign_test_lic.exe "+BTSID+" "+UkeyID + " " + CMD + " " + UkeyID); //Process proc=Runtime.getRuntime().exec("sign_calukey_x64.exe "+BTSID+" "+UkeyID); stdout = new BufferedReader(new InputStreamReader(proc.getInputStream())); str = stdout.readLine(); System.out.println("广州验签计算签名:"+str); //System.out.println("调试----:"+stdout.readLine()); } catch (Exception e) { e.printStackTrace(); } finally { if(null != stdout) { try { stdout.close(); } catch (IOException e) { e.printStackTrace(); } } } return str; } // min = Collections.min(Arrays.asList(ArrayUtils.toObject(a))); // System.out.println(min); // vc_data.vol // 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:当前电池组的最低单体电压 // MonomerVolType:电池标称电压 CapType:容量类型(定值是常量) // MaxMonomerVol = m_FBS_VCData.getMonomerVol(); // 获取放电小时率 stdah:标纯容量 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 <= 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); } } } 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) SumAH *= (-1); float tmp_cap; tmp_cap = (float) (MonomerVol - MonomerVolType * 0.9); tmp_cap *= (STDAH - SumAH * N_TO_10H(HourRate)); float dt_vol = (float) (MaxMonomerVol - MonomerVolType * 0.9); if (dt_vol < 0.01) dt_vol = (float) 0.01; tmp_cap = tmp_cap / dt_vol; if (tmp_cap < 0) tmp_cap = 0; if (CapType == CapType_Rest) return tmp_cap; else if (CapType == CapType_Real) return (float) (tmp_cap + SumAH * N_TO_10H(HourRate)); else return (float) ((tmp_cap + SumAH * N_TO_10H(HourRate)) * 100 / STDAH); } 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); } return 1.0; } public double getMinMonomerVol(double vol[]) { // vol[] double min = vol[0]; int len = 24;// 24节电池 for (int i = 1; i < len; i++) { // System.out.println("vol[i]:"+i+vol[i]); if (min > vol[i]) { min = vol[i]; } else { } } return min; } public double getMaxMonomerVol(double vol[]) { // vol[] double max = vol[0]; int len = 24; for (int i = 1; i < len; i++) { if (max < vol[i]) { max = vol[i]; // System.out.println(vol[i]); } else { } } return max; } /*********************************************************************************************/ /** * 更新电池组数据 * * @param vc_data */ private void getFBS9100MonVolData(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 = (float) vc_data.vol[mon_index]; m_RTData[n].al_MonVol.get(index).monRes = (float) vc_data.res[mon_index]; m_RTData[n].al_MonVol.get(index).monTmp = (float) vc_data.tmp[mon_index]; m_RTData[n].al_MonVol.get(index).mon_JH_curr = (float) vc_data.mon_JH[mon_index]; mon_index++; } m_RTData[n].mTestData.setDevFBS9100S_WorkState(vc_data.m_SysState.CapTestStopType, 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.test_param.clone(test_Param); if(2 == vc_data.m_SysState.WorkState) { /** * 2022-07-08 @lijun 不用从设备读取的测试容量,根据平台这边自己统计的测试容量显示以及计算 */ //m_RTData[n].mTestData.updataCapTest((float) vc_data.battcap[n]); } byte test_type = 1; switch (m_FBS_VCData.m_SysState.WorkState) { case 0: test_type = 1; break; case 1: test_type = 2; break; case 2: test_type = 3; break; case 3: test_type = 3; break; case 4: test_type = 1; break; case 5: test_type = 3; break; } m_RTData[n].mTestData.upDatebattState(test_type); m_RTData[n].mTestData.updateGroupCurrFrom_FBSDev((float) vc_data.battcurr[n]); m_RTData[n].mTestData.updateGroupTmp(vc_data.m_SysState.temp); // 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); */ double maxvol = getMaxMonomerVol(vc_data.vol); double minvol = getMinMonomerVol(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); // System.out.println("restcap"+restcap); // System.out.println("realcap"+realcap); m_RTData[n].mTestData.updatebattRestCap(restcap); m_RTData[n].mTestData.updatebattRealCap(realcap); // System.out.println(mTestData.battRestCap); m_RTData[n].updata_BattRtData_To_RamDb(); m_RTData[n].updata_BattRtSate_To_RamDb(); // ---------------------------------------------------------------------------// } } } } private BattData_RT[] setip() { for (int n = 0; n < FBS9100_ComBase.BattGroupCountMax; n++) { if (null != m_RTData[n]) { // m_RTData[n].updata_SetIp(); // System.out.println(n+""+m_RTData[n].updata_SetIp()); m_RTData[n].updata_SetIp(); // 取0 // ---------------------------------------------------------------------------// } } return m_RTData; } // 返回指定时间间隔间的秒数 public static long calculTimelong(Date start, Date end) { return (end.getTime() - start.getTime()) / 1000; } /** * 根据协议名称截取对应ukey点位 * @param agree * @return */ public String getUKEYRootDomStr(String agree) { String str1=agree.substring(0, agree.indexOf("BTSE")); /** * @lijun 兼容佛山三期版本,签名中的BTSE路径一拖一和一拖二均为BTSE */ // if(str1.length() > 0) { // return "BTSE"; // } //兼容正常1托2 if((null != m_RTData[0]) && (m_RTData[0].sign_type == Sign_Type_InTow)) { return agree.substring(str1.length(), agree.length()); }else { return "BTSE"; } } public static void main(String[] args) { //System.out.println(getUKEYRootDomStr("ZJDYBTSE2")); String btsid = "1234567890BTSE/ncdGGIO1.SPCSO2"; String keyid = "37395256AD72043037395256AD720430"; System.out.println(createSignature(btsid, keyid)); MysqlConnPool pool = new MysqlConnPool("127.0.0.1", 3360, 10); BTS_61850_SocketClient ce = new BTS_61850_SocketClient(pool, new FBS9100_StatAndParam("127.0.01", 618500001), new BattData_RT_Array(new AppConfig(), new AppParam(), pool) , null); ce.m_RTData[0] = new BattData_RT(new AppConfig(), new AppParam(), pool); ce.m_RTData[0].sign_type = 0; System.out.println(ce.getUKEYRootDomStr("ZJDYBTSE2")); boolean[] a = new boolean[] {false,true,false}; String format1 = String.format("%b,%b,%b",a[0],a[1],a[2] ); System.out.println(format1); } /*********************************************************************************************/ } /********************************* * end of file SocketClient.java *************************************/