public void AccessDataModelClientServer() { IedModel iedModel = ConfigFileParser.CreateModelFromConfigFile("../../model.cfg"); ModelNode ind1 = iedModel.GetModelNodeByShortObjectReference("GenericIO/GGIO1.Ind1.stVal"); Assert.IsTrue(ind1.GetType().Equals(typeof(IEC61850.Server.DataAttribute))); IedServer iedServer = new IedServer(iedModel); iedServer.Start(10002); iedServer.UpdateBooleanAttributeValue((IEC61850.Server.DataAttribute)ind1, true); IedConnection connection = new IedConnection(); connection.Connect("localhost", 10002); bool stVal = connection.ReadBooleanValue("simpleIOGenericIO/GGIO1.Ind1.stVal", FunctionalConstraint.ST); Assert.IsTrue(stVal); iedServer.UpdateBooleanAttributeValue((IEC61850.Server.DataAttribute)ind1, false); stVal = connection.ReadBooleanValue("simpleIOGenericIO/GGIO1.Ind1.stVal", FunctionalConstraint.ST); Assert.IsFalse(stVal); connection.Abort(); iedServer.Stop(); iedServer.Destroy(); }
public dynamic GetValue(Item61850 item) { dynamic val; switch (item.typeMMS) { case MmsType.MMS_BIT_STRING: val = _connection.ReadBitStringValue(item.path, item.typeFC); break; case MmsType.MMS_BOOLEAN: val = _connection.ReadBooleanValue(item.path, item.typeFC); break; case MmsType.MMS_FLOAT: val = _connection.ReadFloatValue(item.path, item.typeFC); break; case MmsType.MMS_INTEGER: val = _connection.ReadIntegerValue(item.path, item.typeFC); break; case MmsType.MMS_UNSIGNED: val = _connection.ReadValue(item.path, item.typeFC); break; case MmsType.MMS_STRING: val = _connection.ReadStringValue(item.path, item.typeFC); break; case MmsType.MMS_UTC_TIME: val = _connection.ReadTimestampValue(item.path, item.typeFC); break; default: val = _connection.ReadValue(item.path, item.typeFC); break; } return(val); }
public ResultValueModel ReadVariableValue(string hostip, Int32 port, string datatype, string FC, string valueaddress) { //instance IedConnection con = new IedConnection(); try { //connection con.Connect(hostip, port); //extract fc data_extract dataExtract = new data_extract(); var FunctionCode = dataExtract.ExtractFC(FC); dynamic mmsresult = null; //validate datatype if (datatype == "BOOLEAN") { mmsresult = con.ReadBooleanValue(valueaddress, FunctionCode); } else if (datatype == "FLOAT") { mmsresult = con.ReadFloatValue(valueaddress, FunctionCode); } else if (datatype == "INT") { mmsresult = con.ReadIntegerValue(valueaddress, FunctionCode); } else if (datatype == "STRING") { mmsresult = con.ReadStringValue(valueaddress, FunctionCode); } else if (datatype == "BITSTRING") { mmsresult = con.ReadBitStringValue(valueaddress, FunctionCode); } //con close con.Abort(); //extract value dynamic ValueTuple = null; ValueTuple = dataExtract.ExtractValue(mmsresult); //result Value_Result listresult = new Value_Result { Address = valueaddress, Value = ValueTuple, }; ResultValueModel result = new ResultValueModel { data = listresult, error = false, errormessage = null }; //destroy instance con.Dispose(); //result return(result); } catch (IedConnectionException e) { ResultValueModel result = new ResultValueModel() { data = null, error = true, errormessage = e.Message.ToString() }; //insert logs into db Submission dbinsert = new Submission { CreatedAt = DateTime.Now, Content = e.Message.ToString() }; _subSvc.Create(dbinsert); //destroy result con.Dispose(); //result return(result); } }