| | |
| | | import org.openmuc.openiec61850.FcModelNode;
|
| | | import org.openmuc.openiec61850.ModelNode;
|
| | | import org.openmuc.openiec61850.ServerModel;
|
| | | import org.openmuc.openiec61850.ServerSap;
|
| | | import org.openmuc.openiec61850.ServiceError;
|
| | | import org.openmuc.openiec61850.clientgui.BasicDataBind;
|
| | | import org.openmuc.openiec61850.clientgui.databind.Float32DataBind;
|
| | |
| | | Set_AppAliveState(true);
|
| | |
|
| | | while (true == Get_AppAliveState()) {
|
| | | logger.error("IP:" + FBSDeviceIp + " BTSE:" + FBSDeviceName + "- BTS_IEC61850_ClientThread Started ...");
|
| | | logger.error("IP:" + FBSDeviceIp + " ID:" + m_FBSDevId + " BTSE:" + FBSDeviceName + "- BTS_IEC61850_ClientThread Started ...");
|
| | | // FBS9100_Task_Thread_SQL.runinsertime(m_ConnPool);
|
| | | try {
|
| | | Thread.sleep(5000);
|
| | |
| | | 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");
|
| | | // //与预加载的模型文件不一致时
|
| | |
| | |
|
| | |
|
| | | } catch (Exception e) {
|
| | | logger.debug("BTS_IEC61850_Client Unable to connect to device IP:" + FBSDeviceIp);
|
| | | logger.error(e.toString(), e);
|
| | | }
|
| | | if(null == m_ServerModel && FBSDeviceName.contains("ZJDY")) {
|
| | | //紫晶协转若直连连接不上时解析icd文件
|
| | | try {
|
| | | List<ServerSap> serverSaps = ServerSap.getSapsFromSclFile("zjdy_bts_LiBatt.icd");
|
| | | m_ServerModel = serverSaps.get(0).serverModel;
|
| | | } catch (Exception e) {
|
| | | logger.error(e.toString(), e);
|
| | | }
|
| | | } |
| | | |
| | | if(null == m_ServerModel) {
|
| | | logger.info("BTS_IEC61850_Client Unable to connect to device IP:" + FBSDeviceIp +" ID:"+m_FBSDevId);
|
| | | continue;
|
| | | }
|
| | | //System.out.println(m_ServerModel);
|
| | | |
| | | if(this.FBSDeviceName.indexOf("BTSE2")>0) {
|
| | | //适配各个不同协议名称的61850设备通信[读取放电参数时用到]
|
| | | ZJDYCPSS = this.FBSDeviceName.replace("BTSE2", "CPSS");
|
| | |
| | | numberDevState = 0;
|
| | | }
|
| | |
|
| | | // System.err.println(m_StatAndParam);
|
| | | 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);
|
| | |
| | | //---------------------------------Log Level.TRACE-------------------------------------//
|
| | | logger.printf(Level.TRACE, "m_ServerModel.getDataSet(%s/LLN0.dsBtseYc)", FBSDeviceName);
|
| | | //-------------------------------------------------------------------------------------//
|
| | | DataSet ds = null;
|
| | | DataSet ds_tmp;
|
| | | int BattMonCount = 24;
|
| | | if(null != m_RTData[0]) {
|
| | | if(m_RTData[0].MonCount > 24) {
|
| | | BattMonCount = m_RTData[0].MonCount;
|
| | | }
|
| | | }
|
| | | if(FBSDeviceName.contains("ZJDY")) {
|
| | | //紫晶协转
|
| | | ds_tmp = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsMeasure"); |
| | | //System.out.println(m_ServerModel.getDataSet(FBSDeviceName)+"@@");
|
| | | }else {
|
| | | //共济协转
|
| | | ds_tmp = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsBtseYc");
|
| | | }
|
| | | //System.out.println(ds_tmp);
|
| | | if(null == ds_tmp) {
|
| | | return false;
|
| | | }
|
| | | ds = ds_tmp.copy();
|
| | | ///-------------------------------------------------------------------------------------//
|
| | | 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<size_cnt; n++) {
|
| | | if(null == ds.getMembers().get(n).getChild("mag")) {
|
| | | continue;
|
| | |
| | | m = n;
|
| | | isStartReadMonData = false;
|
| | | }
|
| | | //单体数据 |
| | | if ((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 * 3)) && (n < (m + 24 * 4))) {
|
| | | m_FBS_VCData.mon_restcap[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();
|
| | | |
| | | if(FBSDeviceName.contains("ZJDY")) {
|
| | | //锂电单体数目
|
| | | BattMonCount = 80;
|
| | | //锂电BTS
|
| | | if ((n >= m) && (n < (m + BattMonCount * 1))) {
|
| | | m_FBS_VCData.vol[n - m] = ((BdaFloat32) fc_mode).getFloat();
|
| | | }
|
| | | else if ((n >= (m + BattMonCount * 1)) && (n < (m + BattMonCount * 2))) {
|
| | | m_FBS_VCData.tmp[n - (m + BattMonCount * 1)] = ((BdaFloat32) fc_mode).getFloat();
|
| | | }
|
| | | else if ((n >= (m + BattMonCount * 2)) && (n < (m + BattMonCount * 3))) {
|
| | | m_FBS_VCData.mon_restcap[n - (m + BattMonCount * 2)] = ((BdaFloat32) fc_mode).getFloat();
|
| | | }
|
| | | }else {
|
| | | //单体数据[南瑞协转] |
| | | if ((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 * 3)) && (n < (m + 24 * 4))) {
|
| | | m_FBS_VCData.mon_restcap[n - (m + 24 * 3)] = ((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();
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | }
|
| | |
|
| | | //m_FBS_VCData.m_SysState.AlarmState = (int)readInt64NodeData(FBSDeviceName + "/btgGGIO1.AnIn28.mag.i",Fc.MX); //核容启动失败原因
|
| | | |
| | | //System.err.println("############");
|
| | | m_FBS_VCData.m_SysState.setCommCountInc();
|
| | | ds = null;
|
| | | ds = null;ds_tmp = 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").copy();
|
| | | int size_cnt_stat = ds_stat.getMembers().size();
|
| | | DataSet ds_stat = null;
|
| | | DataSet ds_tmp = null;
|
| | | |
| | | if(FBSDeviceName.contains("ZJDY")) {
|
| | | //紫晶协转
|
| | | ds_tmp = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsDevAlarm"); |
| | | }else {
|
| | | //共济协转
|
| | | ds_tmp = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsBtseYx").copy();
|
| | | }
|
| | | if(null == ds_tmp) {
|
| | | return false;
|
| | | }
|
| | | ds_stat = ds_tmp.copy(); |
| | | |
| | | boolean[] alm = new boolean[] {false,false,false,false,false};
|
| | | int size_cnt = ds_stat.getMembers().size();
|
| | | //System.out.println(FBSDeviceName + "/LLN0.dsDevState 节点数:"+size_cnt);
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | // 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;
|
| | | ds_stat = null;ds_tmp = null; //清空内存数据
|
| | | }
|
| | |
|
| | | if(2 == (numberDevState%3)) {
|
| | |
| | | logger.printf(Level.TRACE, "m_ServerModel.getDataSet(%s/LLN0.dsDevState )", FBSDeviceName);
|
| | | //-------------------------------------------------------------------------------------//
|
| | | comm_res = true;
|
| | | DataSet ds = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsDevState").copy();
|
| | | if(null == ds) {
|
| | | //兼容老版本协转数据
|
| | | ds = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsBtseYc"); |
| | | DataSet ds = null;
|
| | | DataSet ds_tmp = null;
|
| | | if(FBSDeviceName.contains("ZJDY")) {
|
| | | //紫晶协转
|
| | | ds_tmp = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsDevState"); |
| | | }else {
|
| | | //共济协转
|
| | | ds_tmp = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsDevState");
|
| | | if(null == ds_tmp) {
|
| | | //兼容老版本协转数据
|
| | | ds_tmp = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsBtseYc"); |
| | | }
|
| | | }
|
| | | if(null == ds) {
|
| | | if(null == ds_tmp) {
|
| | | return false;
|
| | | }
|
| | | ds = ds_tmp.copy();
|
| | | int size_cnt = ds.getMembers().size();
|
| | | //System.out.println(FBSDeviceName + "/LLN0.dsDevState 节点数:"+size_cnt);
|
| | | m_Association.getDataSetValues(ds);
|
| | |
| | | m_FBS_VCData.m_SysState.setCommCountInc();
|
| | | //----------------- 读到状态数据后再更新数据库数据 -------------------//
|
| | | getFBS9100MonVolData(m_FBS_VCData);
|
| | | ds = null;
|
| | | ds = null;ds_tmp = null;
|
| | | }
|
| | | //m_FBS_VCData.m_SysState.resetErrCommCount();
|
| | |
|
| | |
| | | //-------------------------------------------------------------------------------------//
|
| | | comm_res = true;
|
| | | } else if (FBS9100_ComBase.CMD_GetDischargeParm == cmd) {
|
| | | DataSet ds_pm = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsBtseYc").copy();
|
| | | DataSet ds_pm = null;
|
| | | DataSet ds_tmp = null;
|
| | | if(FBSDeviceName.contains("ZJDY")) {
|
| | | //紫晶协转
|
| | | ds_tmp = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsDevState"); |
| | | }else {
|
| | | //共济协转
|
| | | ds_tmp = m_ServerModel.getDataSet(FBSDeviceName + "/LLN0.dsBtseYc");
|
| | | }
|
| | | |
| | | if(null == ds_tmp) {
|
| | | return false;
|
| | | }
|
| | | ds_pm = ds_tmp.copy();
|
| | | if(null != ds_pm && null != ds_pm.getMembers()) {
|
| | | int size_cnt = ds_pm.getMembers().size();
|
| | | m_Association.getDataSetValues(ds_pm);
|
| | | // logger.printf(Level.DEBUG, "开始读取放电参数");
|
| | | logger.printf(Level.DEBUG, "开始读取放电参数");
|
| | | for (int n = 0; n < size_cnt; n++) {
|
| | | if(null == ds_pm.getMembers().get(n).getChild("mag")) {
|
| | | if(null == ds_pm.getMembers().get(n).getChild("mag").getChild("f")) {
|
| | | System.out.println(ds_pm.getMembers().get(n).getChild("mag").toString());
|
| | | continue;
|
| | | }
|
| | |
|
| | |
| | | //System.out.println(fc_model_str);
|
| | | }
|
| | | }
|
| | | //System.out.println("m_FBS_DiscParamFromDev.DisTime:"+m_FBS_DiscParamFromDev.DisTime);
|
| | | if(FBSDeviceName.contains("BTSE2")) {
|
| | | //测试时长[第二套]
|
| | | m_FBS_DiscParamFromDev.DisTime = (int)(readFloatNodeData(ZJDYCPSS + "/cheGGIO2.HiTestTmhour.mag.f", Fc.MX)*60);
|
| | |
| | | m_FBS_DiscParamFromDev.GroupVol_LOW = readFloatNodeData(ZJDYCPSS + "/cheGGIO1.LoBatVal.mag.f", Fc.MX);
|
| | | }
|
| | |
|
| | | ds_pm = null;
|
| | | ds_pm = null;ds_tmp = null;
|
| | | }else {
|
| | |
|
| | | m_FBS_DiscParamFromDev.DisCurr = readFloatNodeData(FBSDeviceName + "/ncdGGIO1.TestCurr.mag.f", Fc.MX);
|