/********************************* 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.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<BTS61850_EventRecord> 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<BTS61850_EventRecord>();
|
|
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;
|
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 = String.format("%s,%s", result);
|
} 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<size_cnt; n++) {
|
if(null == ds.getMembers().get(n).getChild("mag")) {
|
continue;
|
}
|
FcModelNode fc_mode = (FcModelNode) ds.getMembers().get(n).getChild("mag").getChild("f");
|
|
FcModelNode fc_mode_i = (FcModelNode) ds.getMembers().get(n).getChild("mag").getChild("i");
|
|
if(null != fc_mode){
|
String fc_model_str = fc_mode.toString1();
|
//System.out.println("n:" + n + "\t" + fc_model_str);
|
if (fc_model_str.contains(FBSDeviceName + "/btgGGIO1.AnIn1.mag.f")) {//第一组组端电压
|
m_FBS_VCData.groupvol[0] = ((BdaFloat32) fc_mode).getFloat();
|
//m_FBS_VCData.groupvol[0] = readFloatNodeData(FBSDeviceName + "/btgGGIO1.AnIn1.mag.f", Fc.MX); //组端电压
|
}
|
else if (fc_model_str.contains(FBSDeviceName + "/btgGGIO1.AnIn2.mag.f")) {//第一组组端电流
|
m_FBS_VCData.battcurr[0] = ((BdaFloat32) fc_mode).getFloat();
|
//m_FBS_VCData.battcurr[0] = readFloatNodeData(FBSDeviceName + "/btgGGIO1.AnIn2.mag.f", Fc.MX); //组端电流
|
}
|
else if (fc_model_str.contains(FBSDeviceName + "/btgGGIO1.AnIn3.mag.f")) {//第一组在线电压
|
m_FBS_VCData.onlinevol[0] = ((BdaFloat32) fc_mode).getFloat();
|
//m_FBS_VCData.onlinevol[0] = readFloatNodeData(FBSDeviceName + "/btgGGIO1.AnIn3.mag.f", Fc.MX); //在线电压
|
}
|
else if (fc_model_str.contains(FBSDeviceName + "/btgGGIO1.AnIn4.mag.f")) {//第一组除硫模块组端电压
|
fod_state.VGroupVol_one = ((BdaFloat32) fc_mode).getFloat();
|
//fod_state.VGroupVol_one = readFloatNodeData(FBSDeviceName + "/btgGGIO1.AnIn4.mag.f", Fc.MX); //除硫模块1组端电压值
|
}
|
else if (fc_model_str.contains(FBSDeviceName + "/btgGGIO1.AnIn5.mag.f")) {//第一组除硫模块峰值电压
|
fod_state.VpeakVol_one = ((BdaFloat32) fc_mode).getFloat();
|
//fod_state.VpeakVol_one = readFloatNodeData(FBSDeviceName + "/btgGGIO1.AnIn5.mag.f", Fc.MX); //除硫模块1峰端电压值
|
}
|
else if (fc_model_str.contains(FBSDeviceName + "/btgGGIO1.AnIn6.mag.f")) {//第二组除硫模块组端电压
|
fod_state.VGroupVol_two = ((BdaFloat32) fc_mode).getFloat();
|
//fod_state.VGroupVol_two = readFloatNodeData(FBSDeviceName + "/btgGGIO1.AnIn6.mag.f", Fc.MX); //除硫模块2组端电压值
|
}
|
else if (fc_model_str.contains(FBSDeviceName + "/btgGGIO1.AnIn7.mag.f")) {//第二组除硫模块峰值电压
|
fod_state.VpeakVol_two = ((BdaFloat32) fc_mode).getFloat();
|
//fod_state.VpeakVol_two = readFloatNodeData(FBSDeviceName + "/btgGGIO1.AnIn7.mag.f", Fc.MX); //除硫模块2峰端电压值
|
}
|
else if (fc_model_str.contains(FBSDeviceName + "/btgGGIO1.AnIn8.mag.f")) {//第三组除硫模块组端电压
|
fod_state.VGroupVol_three = ((BdaFloat32) fc_mode).getFloat();
|
//fod_state.VGroupVol_three = readFloatNodeData(FBSDeviceName + "/btgGGIO1.AnIn8.mag.f", Fc.MX); //除硫模块3组端电压值
|
}
|
else if (fc_model_str.contains(FBSDeviceName + "/btgGGIO1.AnIn9.mag.f")) {//第三组除硫模块峰值电压
|
fod_state.VpeakVol_three = ((BdaFloat32) fc_mode).getFloat();
|
//fod_state.VpeakVol_three = readFloatNodeData(FBSDeviceName + "/btgGGIO1.AnIn9.mag.f", Fc.MX); //除硫模块3峰端电压值
|
}
|
else if (fc_model_str.contains(FBSDeviceName + "/btgGGIO1.AnIn10.mag.f")) {//第四组除硫模块组端电压
|
fod_state.VGroupVol_four = ((BdaFloat32) fc_mode).getFloat();
|
//fod_state.VGroupVol_four = readFloatNodeData(FBSDeviceName + "/btgGGIO1.AnIn10.mag.f", Fc.MX); //除硫模块4组端电压值
|
}
|
else if (fc_model_str.contains(FBSDeviceName + "/btgGGIO1.AnIn11.mag.f")) {//第四组除硫模块峰值电压
|
fod_state.VpeakVol_four = ((BdaFloat32) fc_mode).getFloat();
|
//fod_state.VpeakVol_four = readFloatNodeData(FBSDeviceName + "/btgGGIO1.AnIn11.mag.f", Fc.MX); //除硫模块4峰端电压值
|
}
|
|
/**************************** 读取均衡供电模块信息 ****************************************/
|
|
else if (fc_model_str.contains(FBSDeviceName + "/btgGGIO1.AnIn12.mag.f")) { //供电模块版本号
|
fbs9100_jhpowerState.setDev_version(String.valueOf(((BdaFloat32) fc_mode).getFloat()));
|
//fbs9100_jhpowerState.setDev_version(String.valueOf(readFloatNodeData(FBSDeviceName + "/btgGGIO1.AnIn12.mag.f", Fc.MX))); //均衡供电版本号
|
}
|
|
else if (fc_model_str.contains(FBSDeviceName + "/btgGGIO1.AnIn13.mag.f")) {//供电模块总输入电压
|
fbs9100_jhpowerState.setInput_vol_total(((BdaFloat32) fc_mode).getFloat());
|
//fbs9100_jhpowerState.setInput_vol_total(readFloatNodeData(FBSDeviceName + "/btgGGIO1.AnIn13.mag.f", Fc.MX));
|
}
|
|
else if (fc_model_str.contains(FBSDeviceName + "/btgGGIO1.AnIn14.mag.f")) {//供电模块总输入电流
|
fbs9100_jhpowerState.setInput_curr_total(((BdaFloat32) fc_mode).getFloat());
|
//fbs9100_jhpowerState.setInput_curr_total(readFloatNodeData(FBSDeviceName + "/btgGGIO1.AnIn14.mag.f", Fc.MX)); //总输入电流
|
|
}
|
|
else if (fc_model_str.contains(FBSDeviceName + "/btgGGIO1.AnIn15.mag.f")) {//供电模块总输出电压
|
fbs9100_jhpowerState.setOutput_vol_total(((BdaFloat32) fc_mode).getFloat());
|
//fbs9100_jhpowerState.setOutput_vol_total(readFloatNodeData(FBSDeviceName + "/btgGGIO1.AnIn15.mag.f", Fc.MX)); //总输出电压
|
}
|
|
else if (fc_model_str.contains(FBSDeviceName + "/btgGGIO1.AnIn16.mag.f")) {//供电模块总输出电流
|
fbs9100_jhpowerState.setOutput_curr_total(((BdaFloat32) fc_mode).getFloat());
|
//fbs9100_jhpowerState.setOutput_curr_total(readFloatNodeData(FBSDeviceName + "/btgGGIO1.AnIn16.mag.f", Fc.MX)); //总输出电流
|
}
|
|
else if (fc_model_str.contains(FBSDeviceName + "/btgGGIO1.AnIn17.mag.f")) {//供电模块输出电压1
|
fbs9100_jhpowerState.setOutput_vol_one(((BdaFloat32) fc_mode).getFloat());
|
//fbs9100_jhpowerState.setOutput_vol_one(readFloatNodeData(FBSDeviceName + "/btgGGIO1.AnIn17.mag.f", Fc.MX)); //总输出电压1
|
}
|
else if (fc_model_str.contains(FBSDeviceName + "/btgGGIO1.AnIn18.mag.f")) {//供电模块输出电压2
|
fbs9100_jhpowerState.setOutput_vol_two(((BdaFloat32) fc_mode).getFloat());
|
//fbs9100_jhpowerState.setOutput_vol_two(readFloatNodeData(FBSDeviceName + "/btgGGIO1.AnIn18.mag.f", Fc.MX)); //总输出电压2
|
}
|
else if (fc_model_str.contains(FBSDeviceName + "/btgGGIO1.AnIn19.mag.f")) {//供电模块输出电压3
|
fbs9100_jhpowerState.setOutput_vol_three(((BdaFloat32) fc_mode).getFloat());
|
//fbs9100_jhpowerState.setOutput_vol_three(readFloatNodeData(FBSDeviceName + "/btgGGIO1.AnIn19.mag.f", Fc.MX)); //总输出电压3
|
}
|
else if (fc_model_str.contains(FBSDeviceName + "/btgGGIO1.AnIn20.mag.f")) {//供电模块输出电压4
|
fbs9100_jhpowerState.setOutput_vol_four(((BdaFloat32) fc_mode).getFloat());
|
//fbs9100_jhpowerState.setOutput_vol_four(readFloatNodeData(FBSDeviceName + "/btgGGIO1.AnIn20.mag.f", Fc.MX)); //总输出电压4
|
}
|
else if (fc_model_str.contains(FBSDeviceName + "/btgGGIO1.AnIn21.mag.f")) {//供电模块输出电压5
|
fbs9100_jhpowerState.setOutput_vol_five(((BdaFloat32) fc_mode).getFloat());
|
//fbs9100_jhpowerState.setOutput_vol_five(readFloatNodeData(FBSDeviceName + "/btgGGIO1.AnIn21.mag.f", Fc.MX)); //总输出电压5
|
}
|
else if (fc_model_str.contains(FBSDeviceName + "/btgGGIO1.AnIn22.mag.f")) {//供电模块输出电压6
|
fbs9100_jhpowerState.setOutput_vol_six(((BdaFloat32) fc_mode).getFloat());
|
//fbs9100_jhpowerState.setOutput_vol_six(readFloatNodeData(FBSDeviceName + "/btgGGIO1.AnIn22.mag.f", Fc.MX)); //总输出电压6
|
}
|
else if (fc_model_str.contains(FBSDeviceName + "/btgGGIO1.AnIn23.mag.f")) {//供电模块输出电压7
|
fbs9100_jhpowerState.setOutput_vol_seven(((BdaFloat32) fc_mode).getFloat());
|
//fbs9100_jhpowerState.setOutput_vol_seven(readFloatNodeData(FBSDeviceName + "/btgGGIO1.AnIn23.mag.f", Fc.MX)); //总输出电压7
|
}
|
else if (fc_model_str.contains(FBSDeviceName + "/btgGGIO1.AnIn24.mag.f")) {//供电模块输出电压8
|
fbs9100_jhpowerState.setOutput_vol_eight(((BdaFloat32) fc_mode).getFloat());
|
//fbs9100_jhpowerState.setOutput_vol_eight(readFloatNodeData(FBSDeviceName + "/btgGGIO1.AnIn24.mag.f", Fc.MX)); //总输出电压8
|
}
|
else if (fc_model_str.contains(FBSDeviceName + "/btgGGIO1.AnIn25.mag.f")) {//供电模块输出电压9
|
fbs9100_jhpowerState.setOutput_vol_nine(((BdaFloat32) fc_mode).getFloat());
|
//fbs9100_jhpowerState.setOutput_vol_nine(readFloatNodeData(FBSDeviceName + "/btgGGIO1.AnIn25.mag.f", Fc.MX)); //总输出电压9
|
}
|
else if (fc_model_str.contains(FBSDeviceName + "/btgGGIO1.AnIn26.mag.f")) {//供电模块输出电压10
|
fbs9100_jhpowerState.setOutput_vol_ten(((BdaFloat32) fc_mode).getFloat());
|
//fbs9100_jhpowerState.setOutput_vol_ten(readFloatNodeData(FBSDeviceName + "/btgGGIO1.AnIn26.mag.f", Fc.MX)); //总输出电压10
|
}
|
else if (fc_model_str.contains(FBSDeviceName + "/btgGGIO1.AnIn27.mag.f")) {//供电模块环境温度
|
fbs9100_jhpowerState.setDev_temp(((BdaFloat32) fc_mode).getFloat() - 10);
|
//fbs9100_jhpowerState.setDev_temp(readFloatNodeData(FBSDeviceName + "/btgGGIO1.AnIn27.mag.f", Fc.MX)); //均衡模块温度
|
}
|
if (fc_model_str.contains(FBSDeviceName + "/btgGGIO1.AnIn28.mag.f")) {
|
//南瑞当前点位值为float格式
|
m_FBS_VCData.m_SysState.AlarmState = Math.round(((BdaFloat32)fc_mode).getFloat());
|
//m_FBS_VCData.m_SysState.AlarmState = (int)readInt64NodeData(FBSDeviceName + "/btgGGIO1.AnIn28.mag.i",Fc.MX);
|
}
|
else if(fc_model_str.contains(FBSDeviceName + "/celGGIO1.AnIn")) {
|
if(isStartReadMonData) {
|
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 * 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
|
*************************************/
|