//Connecter private void button2_Click(object sender, EventArgs e) { if (!String.IsNullOrEmpty(IpBox.Text)) { hostname = IpBox.Text.ToString(); } if (!String.IsNullOrEmpty(PortBox.Text)) { port = Convert.ToInt32(PortBox.Text); } if (!String.IsNullOrEmpty(PassBox.Text)) { password = Convert.ToString(PassBox.ToString()); } if (checkBox1.Checked && firspass) { param.UsePasswordAuthentication(password); firspass = false; } bool retry = true; while (retry) { try { ConnectToIED.Connect(hostname, port); Disconnect_button.Enabled = true; Connect_button.Enabled = false; Exit_button.Enabled = false; CreateButton.Enabled = true; Get_reports.Enabled = true; IpBox.Clear(); PortBox.Clear(); PassBox.Clear(); retry = false; toolStatus.Text = "Connected"; IEDConnected = true; int i = 1; for (i = 1; i < 65; i++) { refer.Add("GEDeviceF650/vinGGIO1.SPCSO" + i.ToString() + ""); control.Add(ConnectToIED.CreateControlObject(refer[i - 1])); } } catch (IedConnectionException ex) { IEDConnected = false; toolStatus.Text = "Failed to connect"; if (MessageBox.Show(ex.Message + "for the following reason" + ex.GetIedClientError(), "Erreur", MessageBoxButtons.RetryCancel) == DialogResult.Cancel) { retry = false; } else { retry = true; } } } }
private void DirectWithNormalSecurity(dynamic value, ulong operTm, string path, bool test, bool cheakInterlock, bool cheakSynchro, string originator, OrCat orCat) { if (GetPathDA($"{path}.Oper.ctlVal") == null) { return; } var controlObject = _connection.CreateControlObject(path); controlObject.EnableInterlockCheck(); controlObject.SetInterlockCheck(cheakInterlock); controlObject.EnableSynchroCheck(); controlObject.SetSynchroCheck(cheakSynchro); controlObject.SetTestMode(test); if (originator != null) { controlObject.SetOrigin(originator, orCat); } controlObject.SetTestMode(false); controlObject.Operate(value, operTm); }
public void ControlHandler() { IedModel iedModel = ConfigFileParser.CreateModelFromConfigFile("../../model.cfg"); DataObject spcso1 = (DataObject)iedModel.GetModelNodeByShortObjectReference("GenericIO/GGIO1.SPCSO1"); Assert.IsNotNull(spcso1); int handlerCalled = 0; IedServer iedServer = new IedServer(iedModel); iedServer.SetControlHandler(spcso1, delegate(ControlAction action, object parameter, MmsValue ctlVal, bool test) { byte [] orIdent = action.GetOrIdent(); string orIdentStr = System.Text.Encoding.UTF8.GetString(orIdent, 0, orIdent.Length); Assert.AreEqual("TEST1234", orIdentStr); Assert.AreEqual(OrCat.MAINTENANCE, action.GetOrCat()); Assert.AreSame(spcso1, action.GetControlObject()); handlerCalled++; return(ControlHandlerResult.OK); }, null); iedServer.Start(10002); IedConnection connection = new IedConnection(); connection.Connect("localhost", 10002); ControlObject controlClient = connection.CreateControlObject("simpleIOGenericIO/GGIO1.SPCSO1"); controlClient.SetOrigin("TEST1234", OrCat.MAINTENANCE); Assert.IsNotNull(controlClient); controlClient.Operate(true); connection.Abort(); Assert.AreEqual(1, handlerCalled); iedServer.Stop(); iedServer.Destroy(); }
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); string objectReference = "IEDM1CPUBHKW/DRCC1.DERStr"; ControlObject control = con.CreateControlObject(objectReference); ControlModel controlModel = control.GetControlModel(); Console.WriteLine(objectReference + " has control model " + controlModel.ToString()); if (!control.Operate(true)) { Console.WriteLine("operate failed!"); } con.Abort(); } catch (IedConnectionException e) { Console.WriteLine(e.Message); } }
public void ControlHandler() { IedModel iedModel = ConfigFileParser.CreateModelFromConfigFile("../../model.cfg"); DataObject spcso1 = (DataObject)iedModel.GetModelNodeByShortObjectReference("GenericIO/GGIO1.SPCSO1"); Assert.IsNotNull(spcso1); int handlerCalled = 0; IedServer iedServer = new IedServer(iedModel); iedServer.SetControlHandler(spcso1, delegate(DataObject controlObject, object parameter, MmsValue ctlVal, bool test) { handlerCalled++; return(ControlHandlerResult.OK); }, null); iedServer.Start(10002); IedConnection connection = new IedConnection(); connection.Connect("localhost", 10002); ControlObject controlClient = connection.CreateControlObject("simpleIOGenericIO/GGIO1.SPCSO1"); Assert.IsNotNull(controlClient); controlClient.Operate(true); connection.Abort(); Assert.AreEqual(1, handlerCalled); iedServer.Stop(); iedServer.Destroy(); }
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); /* direct control with normal security or SBO with normal security */ string objectReference = "simpleIOGenericIO/GGIO1.SPCSO1"; ControlObject control = con.CreateControlObject(objectReference); ControlModel controlModel = control.GetControlModel(); Console.WriteLine(objectReference + " has control model " + controlModel.ToString()); switch (controlModel) { case ControlModel.STATUS_ONLY: Console.WriteLine("Control is status-only!"); break; case ControlModel.DIRECT_NORMAL: case ControlModel.DIRECT_ENHANCED: if (!control.Operate(true)) { Console.WriteLine("operate failed!"); } else { Console.WriteLine("operated successfully!"); } break; case ControlModel.SBO_NORMAL: case ControlModel.SBO_ENHANCED: if (control.Select()) { if (!control.Operate(true)) { Console.WriteLine("operate failed!"); } else { Console.WriteLine("operated successfully!"); } } else { Console.WriteLine("Select failed!"); } break; } /* direct control with enhanced security */ objectReference = "simpleIOGenericIO/GGIO1.SPCSO3"; control = con.CreateControlObject(objectReference); controlModel = control.GetControlModel(); Console.WriteLine(objectReference + " has control model " + controlModel.ToString()); if (controlModel == ControlModel.DIRECT_ENHANCED) { control.SetCommandTerminationHandler(commandTerminationHandler, null); control.Operate(true); Thread.Sleep(1000); } con.Abort(); } catch (IedConnectionException e) { Console.WriteLine(e.Message); } // 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 = "localhost"; Console.WriteLine("Connect to " + hostname); try { con.Connect(hostname, 102); /* direct control with normal security or SBO with normal security */ string objectReference = "simpleIOGenericIO/GGIO1.SPCSO1"; ControlObject control = con.CreateControlObject(objectReference); ControlModel controlModel = control.GetControlModel(); Console.WriteLine(objectReference + " has control model " + controlModel.ToString()); switch (controlModel) { case ControlModel.STATUS_ONLY: Console.WriteLine("Control is status-only!"); break; case ControlModel.DIRECT_NORMAL: case ControlModel.DIRECT_ENHANCED: if (!control.Operate(true)) Console.WriteLine("operate failed!"); else Console.WriteLine("operated successfully!"); break; case ControlModel.SBO_NORMAL: case ControlModel.SBO_ENHANCED: if (control.Select()) { if (!control.Operate(true)) Console.WriteLine("operate failed!"); else Console.WriteLine("operated successfully!"); } else Console.WriteLine("Select failed!"); break; } /* direct control with enhanced security */ objectReference = "simpleIOGenericIO/GGIO1.SPCSO3"; control = con.CreateControlObject(objectReference); controlModel = control.GetControlModel(); Console.WriteLine(objectReference + " has control model " + controlModel.ToString()); if (controlModel == ControlModel.DIRECT_ENHANCED) { control.SetCommandTerminationHandler(commandTerminationHandler, null); control.Operate(true); Thread.Sleep(1000); } con.Abort(); } catch (IedConnectionException e) { Console.WriteLine(e.Message); } }
public ResultValueModel WriteCMD(string hostip, Int32 port, bool operate, string cmdaddress) { //instance IedConnection con = new IedConnection(); try { //connection con.Connect(hostip, port); //create control object ControlObject control = con.CreateControlObject(cmdaddress); ControlModel controlModel = control.GetControlModel(); //result variable dynamic ValueTuple = null; //validate control model type if (controlModel == ControlModel.DIRECT_ENHANCED) { control.SetCommandTerminationHandler(commandTerminationHandler, null); ValueTuple = control.Operate(operate); } else if (controlModel == ControlModel.DIRECT_NORMAL) { control.SetCommandTerminationHandler(commandTerminationHandler, null); ValueTuple = control.Operate(operate); } else if (controlModel == ControlModel.SBO_ENHANCED) { //set handler control.SetCommandTerminationHandler(commandTerminationHandler, null); //set SynchroCheck control.SetSynchroCheck(true); //set InterlockCheck control.SetInterlockCheck(true); //validate cmd select if (control.SelectWithValue(true)) { //operate cmd ValueTuple = control.Operate(operate); } else if (control.SelectWithValue(false)) { //operate cmd ValueTuple = control.Operate(operate); } else if (control.Select()) { //operate cmd ValueTuple = control.Operate(operate); } else { ValueTuple = "SBO cmd not selected!"; //insert logs into db Submission dbinsert = new Submission { CreatedAt = DateTime.Now, Content = ValueTuple }; _subSvc.Create(dbinsert); } } else { ValueTuple = "CMD type is not DIRECT_ENHANCED or DIRECT_NORMAL or SBO_ENHANCED kindly Check!"; //insert logs into db Submission dbinsert = new Submission { CreatedAt = DateTime.Now, Content = ValueTuple }; _subSvc.Create(dbinsert); } //con close con.Abort(); //result Value_Result listresult = new Value_Result { Address = cmdaddress, 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); } }
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); /* direct control with normal security */ string objectReference = "simpleIOGenericIO/GGIO1.SPCSO1"; ControlObject control = con.CreateControlObject(objectReference); ControlModel controlModel = control.GetControlModel(); Console.WriteLine(objectReference + " has control model " + controlModel.ToString()); if (controlModel != ControlModel.CONTROL_MODEL_STATUS_ONLY) { control.Operate(true); } if (!control.Operate(true)) { Console.WriteLine("operate failed!"); } /* direct control with enhanced security */ objectReference = "simpleIOGenericIO/GGIO1.SPCSO3"; control = con.CreateControlObject(objectReference); controlModel = control.GetControlModel(); Console.WriteLine(objectReference + " has control model " + controlModel.ToString()); if (controlModel == ControlModel.CONTROL_MODEL_DIRECT_ENHANCED) { control.SetCommandTerminationHandler(commandTerminationHandler, null); control.Operate(true); Thread.Sleep(1000); } con.Abort(); } catch (IedConnectionException e) { Console.WriteLine(e.Message); } }