private static void reportHandler(Report report, object parameter) { Console.WriteLine("Received report:\n----------------"); if (report.HasTimestamp()) { Console.WriteLine(" timestamp: " + MmsValue.MsTimeToDateTimeOffset(report.GetTimestamp()).ToString()); } MmsValue values = report.GetDataSetValues(); Console.WriteLine(" report dataset contains " + values.Size() + " elements"); for (int i = 0; i < values.Size(); i++) { if (report.GetReasonForInclusion(i) != ReasonForInclusion.REASON_NOT_INCLUDED) { Console.WriteLine(" element " + i + " included for reason " + report.GetReasonForInclusion(i).ToString() + " " + values.GetElement(i)); } } ReportControlBlock rcb = (ReportControlBlock)parameter; Console.WriteLine("Buffered: " + rcb.IsBuffered()); }
public void MmsValueArray() { MmsValue val = MmsValue.NewEmptyArray(3); val.SetElement(0, new MmsValue(1)); val.SetElement(1, new MmsValue(2)); val.SetElement(2, new MmsValue(3)); Assert.AreEqual(val.GetType(), MmsType.MMS_ARRAY); Assert.AreEqual(val.Size(), 3); MmsValue elem0 = val.GetElement(0); Assert.AreEqual(elem0.GetType(), MmsType.MMS_INTEGER); Assert.AreEqual(elem0.ToInt32(), 1); MmsValue elem2 = val.GetElement(2); Assert.AreEqual(elem2.GetType(), MmsType.MMS_INTEGER); Assert.AreEqual(elem2.ToInt32(), 3); val.SetElement(0, null); val.SetElement(1, null); val.SetElement(2, null); }
private static void reportHandler(Report report, object parameter) { Console.WriteLine("Received report:\n----------------"); Console.WriteLine(" for RCB: " + report.GetRcbReference()); if (report.HasTimestamp()) { Console.WriteLine(" timestamp: " + MmsValue.MsTimeToDateTimeOffset(report.GetTimestamp()).ToString()); } MmsValue values = report.GetDataSetValues(); byte[] entryId = report.GetEntryId(); if (entryId != null) { SoapHexBinary shb = new SoapHexBinary(entryId); Console.WriteLine(" entryID: " + shb.ToString()); } if (report.HasDataSetName()) { Console.WriteLine(" report data set: " + report.GetDataSetName()); } Console.WriteLine(" report dataset contains " + values.Size() + " elements"); for (int i = 0; i < values.Size(); i++) { if (report.GetReasonForInclusion(i) != ReasonForInclusion.REASON_NOT_INCLUDED) { Console.WriteLine(" element " + i + " included for reason " + report.GetReasonForInclusion(i).ToString() + " " + values.GetElement(i)); } if (report.HasDataReference()) { Console.WriteLine(" data-ref: " + report.GetDataReference(i)); } } ReportControlBlock rcb = (ReportControlBlock)parameter; Console.WriteLine(" For RCB: " + rcb.GetObjectReference() + " Buffered: " + rcb.IsBuffered() + " data-set: " + rcb.GetDataSetReference()); }
public bool MoveNext() { index++; if (index >= value.Size()) { return(false); } else { return(true); } }
private static void gooseListener (GooseSubscriber subscriber, object parameter) { Console.WriteLine ("Received GOOSE message:\n-------------------------"); Console.WriteLine (" stNum: " + subscriber.GetStNum ()); Console.WriteLine (" sqNum: " + subscriber.GetSqNum ()); MmsValue values = subscriber.GetDataSetValues (); Console.WriteLine (" values: " +values.Size ().ToString ()); foreach (MmsValue value in values) { Console.WriteLine (" value: " + value.ToString ()); } }
public void MmsValueStructure() { MmsValue val = MmsValue.NewEmptyStructure(2); val.SetElement(0, new MmsValue(true)); val.SetElement(1, MmsValue.NewBitString(10)); Assert.AreEqual(val.GetType(), MmsType.MMS_STRUCTURE); Assert.AreEqual(val.Size(), 2); MmsValue elem0 = val.GetElement(0); Assert.AreEqual(elem0.GetType(), MmsType.MMS_BOOLEAN); Assert.AreEqual(elem0.GetBoolean(), true); MmsValue elem1 = val.GetElement(1); Assert.AreEqual(elem1.GetType(), MmsType.MMS_BIT_STRING); }
//reading values of every private void ReadingValues(MmsValue v, Report report) { string x = report.GetRcbReference(); x = x.Replace("GEDeviceF650/LLN0", ""); for (int i = 1; i < v.Size(); i++) { string name = report.GetDataReference(i); name = name.Replace("GEDeviceF650/", ""); if (!(v.GetElement(i).GetType() == MmsType.MMS_STRUCTURE)) { AddIfNotExist(v.GetElement(i).ToFloat(), name, x); } else { ReadingValues(v.GetElement(i), report); } } }
/// <summary> /// Gets the reason for inclusion of data set member with the given index /// </summary> /// <returns> /// The reason for inclusion. /// </returns> /// <param name='index'> /// index of the data set member in the data set /// </param> public ReasonForInclusion GetReasonForInclusion(int index) { if (values == null) { GetDataSetValues(); if (values == null) { throw new IedConnectionException("No ReasonForInclusion available yet"); } } int dataSetSize = values.Size(); if (index >= dataSetSize) { throw new IedConnectionException("data set index out of range (count = " + dataSetSize + ")"); } return((ReasonForInclusion)ClientReport_getReasonForInclusion(self, index)); }
public static void Main(string[] args) { IedConnection con = new IedConnection(); string hostname; if (args.Length > 0) { hostname = args[0]; } else { hostname = "10.0.2.2"; } Console.WriteLine("Connect to " + hostname); try { con.Connect(hostname, 102); List <string> serverDirectory = con.GetServerDirectory(false); foreach (string entry in serverDirectory) { Console.WriteLine("LD: " + entry); } List <string> lnDirectory = con.GetLogicalNodeDirectory("simpleIOGenericIO/LLN0", ACSIClass.ACSI_CLASS_DATA_SET); foreach (string entry in lnDirectory) { Console.WriteLine("Dataset: " + entry); } string vendor = con.ReadStringValue("simpleIOGenericIO/LLN0.NamPlt.vendor", FunctionalConstraint.DC); Console.WriteLine("Vendor: " + vendor); /* read FCDO */ MmsValue value = con.ReadValue("simpleIOGenericIO/GGIO1.AnIn1", FunctionalConstraint.MX); if (value.GetType() == MmsType.MMS_STRUCTURE) { Console.WriteLine("Value is of complex type"); for (int i = 0; i < value.Size(); i++) { Console.WriteLine(" element: " + value.GetElement(i).GetType()); if (value.GetElement(i).GetType() == MmsType.MMS_UTC_TIME) { Console.WriteLine(" -> " + value.GetElement(i).GetUtcTimeAsDateTimeOffset()); } } } DataSet dataSet = con.ReadDataSetValues("simpleIOGenericIO/LLN0.Events", null); Console.WriteLine("Read data set " + dataSet.GetReference()); con.Abort(); } catch (IedConnectionException e) { Console.WriteLine(e.Message); } System.Threading.Thread.Sleep(2000); // release all resources - do NOT use the object after this call!! con.Dispose(); }
public static void Main(string[] args) { IedConnection con = new IedConnection(); string hostname; if (args.Length > 0) { hostname = args[0]; } else { hostname = "10.0.2.2"; } Console.WriteLine("Connect to " + hostname); try { con.Connect(hostname, 102); List <string> serverDirectory = con.GetServerDirectory(false); foreach (string entry in serverDirectory) { Console.WriteLine("LD: " + entry); } // create a new data set List <string> dataSetElements = new List <string>(); dataSetElements.Add("IEDM1CPUBHKW/DRCS1.ModOnConn.stVal[ST]"); dataSetElements.Add("IEDM1CPUBHKW/DRCS1.ModOnConn.t[ST]"); con.CreateDataSet("IEDM1CPUBHKW/LLN0.ds1", dataSetElements); // get the directory of the data set List <string> dataSetDirectory = con.GetDataSetDirectory("IEDM1CPUBHKW/LLN0.ds1"); foreach (string entry in dataSetDirectory) { Console.WriteLine("DS element: " + entry); } // read the values of the newly created data set DataSet dataSet = con.ReadDataSetValues("IEDM1CPUBHKW/LLN0.ds1", null); MmsValue dataSetValues = dataSet.GetValues(); Console.WriteLine("Data set contains " + dataSetValues.Size() + " elements"); foreach (MmsValue value in dataSetValues) { Console.WriteLine(" DS value: " + value + " type: " + value.GetType()); } // delete the data set con.DeleteDataSet("IEDM1CPUBHKW/LLN0.ds1"); con.Abort(); } catch (IedConnectionException e) { Console.WriteLine(e.Message); } }
public ResultSingleModel ReadSingleGroup(string hostip, Int32 port, string FC, string vargroup) { //instance IedConnection con = new IedConnection(); try { //connection con.Connect(hostip, port); //exctract fc data_extract dataExtract = new data_extract(); var FunctionCode = dataExtract.ExtractFC(FC); //read group MmsValue mmsresult = con.ReadValue(vargroup, FunctionCode); //con close con.Abort(); //result list dynamic ValueTuple = mmsresult; Read_Result listresult = null; Int16 Quality; DateTimeOffset Timestamp; List <dynamic> valueArray = new List <dynamic>(); if (mmsresult.GetType() == MmsType.MMS_STRUCTURE) { if (mmsresult.Size() == 4) { ValueTuple = dataExtract.ExtractValue(mmsresult.GetElement(0)); Quality = dataExtract.ExtractValue(mmsresult.GetElement(2)); Timestamp = dataExtract.ExtractValue(mmsresult.GetElement(3)); } else { ValueTuple = dataExtract.ExtractValue(mmsresult.GetElement(0)); Quality = dataExtract.ExtractValue(mmsresult.GetElement(1)); Timestamp = dataExtract.ExtractValue(mmsresult.GetElement(2)); } listresult = new Read_Result { Address = vargroup, Value = ValueTuple, Quality = Quality, Timestamp = Timestamp }; } ResultSingleModel result = new ResultSingleModel() { data = listresult, error = false, errormessage = null }; //destroy instance con.Dispose(); //result return(result); } catch (IedConnectionException e) { ResultSingleModel result = new ResultSingleModel() { 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 instance con.Dispose(); //error result return(result); } }
public static void Main(string[] args) { IedConnection con = new IedConnection(); string hostname; if (args.Length > 0) { hostname = args[0]; } else { hostname = "localhost"; } Console.WriteLine("Connect to " + hostname); try { con.Connect(hostname, 102); List <string> serverDirectory = con.GetServerDirectory(false); foreach (string entry in serverDirectory) { Console.WriteLine("LD: " + entry); } // create a new data set List <string> dataSetElements = new List <string>(); dataSetElements.Add("simpleIOGenericIO/GGIO1.AnIn1.mag.f[MX]"); dataSetElements.Add("simpleIOGenericIO/GGIO1.AnIn2.mag.f[MX]"); con.CreateDataSet("simpleIOGenericIO/LLN0.ds1", dataSetElements); // get the directory of the data set List <string> dataSetDirectory = con.GetDataSetDirectory("simpleIOGenericIO/LLN0.ds1"); foreach (string entry in dataSetDirectory) { Console.WriteLine("DS element: " + entry); } // read the values of the newly created data set DataSet dataSet = con.ReadDataSetValues("simpleIOGenericIO/LLN0.ds1", null); MmsValue dataSetValues = dataSet.GetValues(); Console.WriteLine("Data set contains " + dataSetValues.Size() + " elements"); foreach (MmsValue value in dataSetValues) { Console.WriteLine(" DS value: " + value + " type: " + value.GetType()); } // delete the data set con.DeleteDataSet("simpleIOGenericIO/LLN0.ds1"); con.Abort(); } catch (IedConnectionException e) { Console.WriteLine(e.Message + " reason: " + e.GetIedClientError().ToString()); } }
public static void Main(string[] args) { TLSConfiguration tlsConfig = new TLSConfiguration(); tlsConfig.SetOwnCertificate(new X509Certificate2("client1.cer")); tlsConfig.SetOwnKey("client1-key.pem", null); // Add a CA certificate to check the certificate provided by the server - not required when ChainValidation == false tlsConfig.AddCACertificate(new X509Certificate2("root.cer")); // Check if the certificate is signed by a provided CA tlsConfig.ChainValidation = true; // Check that the shown server certificate is in the list of allowed certificates tlsConfig.AllowOnlyKnownCertificates = false; IedConnection con = new IedConnection(tlsConfig); string hostname; if (args.Length > 0) { hostname = args[0]; } else { hostname = "127.0.0.1"; } int port = -1; if (args.Length > 1) { port = Int32.Parse(args [1]); } Console.WriteLine("Connect to " + hostname); try { con.Connect(hostname, port); List <string> serverDirectory = con.GetServerDirectory(false); foreach (string entry in serverDirectory) { Console.WriteLine("LD: " + entry); } List <string> lnDirectory = con.GetLogicalNodeDirectory("simpleIOGenericIO/LLN0", ACSIClass.ACSI_CLASS_DATA_SET); foreach (string entry in lnDirectory) { Console.WriteLine("Dataset: " + entry); } string vendor = con.ReadStringValue("simpleIOGenericIO/LLN0.NamPlt.vendor", FunctionalConstraint.DC); Console.WriteLine("Vendor: " + vendor); /* read FCDO */ MmsValue value = con.ReadValue("simpleIOGenericIO/GGIO1.AnIn1", FunctionalConstraint.MX); if (value.GetType() == MmsType.MMS_STRUCTURE) { Console.WriteLine("Value is of complex type"); for (int i = 0; i < value.Size(); i++) { Console.WriteLine(" element: " + value.GetElement(i).GetType()); if (value.GetElement(i).GetType() == MmsType.MMS_UTC_TIME) { Console.WriteLine(" -> " + value.GetElement(i).GetUtcTimeAsDateTimeOffset()); } } } DataSet dataSet = con.ReadDataSetValues("simpleIOGenericIO/LLN0.Events", null); Console.WriteLine("Read data set " + dataSet.GetReference()); con.Abort(); } catch (IedConnectionException e) { Console.WriteLine(e.Message); } System.Threading.Thread.Sleep(2000); // release all resources - do NOT use the object after this call!! con.Dispose(); }
public static void Main(string[] args) { IedConnection con = new IedConnection(); string hostname; if (args.Length > 0) { hostname = args[0]; } else { hostname = "127.0.0.1"; } int port = 102; if (args.Length > 1) { port = Int32.Parse(args [1]); } Console.WriteLine("Connect to " + hostname); try { con.Connect(hostname, port); List <string> serverDirectory = con.GetServerDirectory(false); foreach (string entry in serverDirectory) { Console.WriteLine("LD: " + entry); } List <string> lnDirectory = con.GetLogicalNodeDirectory("simpleIOGenericIO/LLN0", ACSIClass.ACSI_CLASS_DATA_SET); foreach (string entry in lnDirectory) { Console.WriteLine("Dataset: " + entry); } string vendor = con.ReadStringValue("simpleIOGenericIO/LLN0.NamPlt.vendor", FunctionalConstraint.DC); Console.WriteLine("Vendor: " + vendor); /* read FCDO */ MmsValue value = con.ReadValue("simpleIOGenericIO/GGIO1.AnIn1", FunctionalConstraint.MX); if (value.GetType() == MmsType.MMS_STRUCTURE) { Console.WriteLine("Value is of complex type"); for (int i = 0; i < value.Size(); i++) { Console.WriteLine(" element: " + value.GetElement(i).GetType()); if (value.GetElement(i).GetType() == MmsType.MMS_UTC_TIME) { Console.WriteLine(" -> " + value.GetElement(i).GetUtcTimeAsDateTimeOffset()); } } } DataSet dataSet = con.ReadDataSetValues("simpleIOGenericIO/LLN0.Events", null); Console.WriteLine("Read data set " + dataSet.GetReference()); /* read multiple variables (WARNING: this is not IEC 61850 standard compliant but might * be supported by most servers). */ MmsConnection mmsConnection = con.GetMmsConnection(); MmsValue result = mmsConnection.ReadMultipleVariables("simpleIOGenericIO", new List <string>() { "GGIO1$ST$Ind1", "GGIO1$ST$Ind1", "GGIO1$ST$Ind1", "GGIO1$ST$Ind1" }); Console.WriteLine(result.ToString()); con.Abort(); } catch (IedConnectionException e) { Console.WriteLine(e.Message); } System.Threading.Thread.Sleep(2000); // release all resources - do NOT use the object after this call!! con.Dispose(); }
//Testing private static void reportHandler(Report report, object parameter) { IndexModel viewdata = new IndexModel(); MmsValue values = report.GetDataSetValues(); for (int i = 0; i < values.Size(); i++) { if (report.GetReasonForInclusion(i) != ReasonForInclusion.REASON_NOT_INCLUDED) { if (i == 0) { viewdata.ViewData["VphaseA"] = values.GetElement(i); } if (i == 1) { viewdata.ViewData["VphaseB"] = values.GetElement(i); } if (i == 2) { viewdata.ViewData["VphaseC"] = values.GetElement(i); } if (i == 3) { viewdata.ViewData["VphaseAB"] = values.GetElement(i); } if (i == 4) { viewdata.ViewData["VphaseBC"] = values.GetElement(i); } if (i == 5) { viewdata.ViewData["VphaseCA"] = values.GetElement(i); } if (i == 7) { viewdata.ViewData["AphaseA"] = values.GetElement(i); } if (i == 8) { viewdata.ViewData["AphaseB"] = values.GetElement(i); } if (i == 9) { viewdata.ViewData["AphaseC"] = values.GetElement(i); } if (i == 15) { viewdata.ViewData["Power"] = values.GetElement(i); } if (i == 16) { viewdata.ViewData["Vars"] = values.GetElement(i); } if (i == 17) { viewdata.ViewData["Truepower"] = values.GetElement(i); } if (i == 18) { viewdata.ViewData["Pf"] = values.GetElement(i); } if (i == 19) { viewdata.ViewData["Freq"] = values.GetElement(i); } } } }