Esempio n. 1
0
        public static bool StopServer()
        {
            try
            {
                UpdateModBus.CloseModBus();

                if (_iedServer != null)
                {
                    if (_iedServer.IsRunning())
                    {
                        _iedServer.Stop();
                        _iedServer.Destroy();
                        _iedServer = null;
                    }
                }

                ServerModel.Model?.Clear();
                UpdateServer.Clear();

                Log.Log.Write(@"ServerIEC61850.StopServer: ServerIEC61850 stoped", @"Stop");
            }
            catch
            {
                Log.Log.Write(@"ServerIEC61850.StopServer: No valid ServerIEC61850 found!", @"Error");
                Log.Log.Write(@"ServerIEC61850.StopServer: ServerIEC61850 stoped", @"Stop");
                return(false);
            }
            return(true);
        }
Esempio n. 2
0
 public static void InitUpdate(IedServer iedServer, IedModel iedModel)
 {
     foreach (var item in UpdateDataObj.UpdateListDestination)
     {
         item.BaseClass.InitServer(item.NameDataObj, iedServer, iedModel);
     }
 }
Esempio n. 3
0
        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();
        }
Esempio n. 4
0
        public override void UpdateServer(string path, IedServer iedServer, IedModel iedModel)
        {
            try
            {
                var vendorPath = (DataAttribute)iedModel.GetModelNodeByShortObjectReference(path + @".vendor");
                var vendorVal  = vendor;
                iedServer.UpdateVisibleStringAttributeValue(vendorPath, vendorVal);

                var swRevPath = (DataAttribute)iedModel.GetModelNodeByShortObjectReference(path + @".swRev");
                var swRevVal  = swRev;
                iedServer.UpdateVisibleStringAttributeValue(swRevPath, swRevVal);

                var configRevPath = (DataAttribute)iedModel.GetModelNodeByShortObjectReference(path + @".configRev");
                var configRevVal  = configRev;
                iedServer.UpdateVisibleStringAttributeValue(configRevPath, configRevVal);

                var dPath = (DataAttribute)iedModel.GetModelNodeByShortObjectReference(path + @".d");
                var dVal  = d;
                iedServer.UpdateVisibleStringAttributeValue(dPath, dVal);
            }
            catch
            {
                // ignored
            }
        }
Esempio n. 5
0
        public override void UpdateServer(string path, IedServer iedServer, IedModel iedModel)
        {
            try
            {
                var vendorPath = (DataAttribute)iedModel.GetModelNodeByShortObjectReference(path + @".vendor");
                var vendorVal  = vendor;
                iedServer.UpdateVisibleStringAttributeValue(vendorPath, vendorVal);

                var serNumPath = (DataAttribute)iedModel.GetModelNodeByShortObjectReference(path + @".serNum");
                var serNumVal  = serNum;
                iedServer.UpdateVisibleStringAttributeValue(serNumPath, serNumVal);

                var modelPath = (DataAttribute)iedModel.GetModelNodeByShortObjectReference(path + @".model");
                var modelVal  = model;
                iedServer.UpdateVisibleStringAttributeValue(modelPath, modelVal);

                var locationPath = (DataAttribute)iedModel.GetModelNodeByShortObjectReference(path + @".location");
                var locationVal  = location;
                iedServer.UpdateVisibleStringAttributeValue(locationPath, locationVal);

                var hwRevPath = (DataAttribute)iedModel.GetModelNodeByShortObjectReference(path + @".hwRev");
                var hwRevVal  = hwRev;
                iedServer.UpdateVisibleStringAttributeValue(hwRevPath, hwRevVal);

                var swRevPath = (DataAttribute)iedModel.GetModelNodeByShortObjectReference(path + @".swRev");
                var swRevVal  = vendor;
                iedServer.UpdateVisibleStringAttributeValue(swRevPath, swRevVal);
            }
            catch
            {
                // ignored
            }
        }
Esempio n. 6
0
        public override void InitServer(string path, IedServer iedServer, IedModel iedModel)
        {
            UpdateServer(path, iedServer, iedModel);

            SetCtlModel(path + @".ctlModel", ctlModel, iedModel, iedServer);
            SetStringValue(path + @".d", d, iedModel, iedServer);
        }
Esempio n. 7
0
        public void UpdateServerData(NodeData data, NodeData quality, bool updateQuality, NodeData time, bool updateTimestamp)
        {
            DataAttribute da     = (DataAttribute)data.SCLServerModelObject;
            IedServer     iedSvr = GetIedServer();

            if (da != null && iedSvr != null)
            {
                iedSvr.LockDataModel();
                if (quality != null && updateQuality)
                {
                    DataAttribute daq = (DataAttribute)quality.SCLServerModelObject;
                    if (daq != null)
                    {
                        daq.UpdateValue(iedSvr, quality.DataValue);
                    }
                }
                if (time != null && updateTimestamp)
                {
                    DataAttribute dat = (DataAttribute)time.SCLServerModelObject;
                    time.DataValue = DateTime.Now;
                    if (dat != null)
                    {
                        dat.UpdateValue(iedSvr, Util.GetTimeInMs());
                    }
                }
                da.UpdateValue(iedSvr, data.DataValue);
                iedSvr.UnlockDataModel();
            }
        }
Esempio n. 8
0
            internal ControlAction(IntPtr self, IedServer.ControlHandlerInfo info, IedServer iedServer)
            {
                this.self = self;

                this.info      = info;
                this.iedServer = iedServer;
            }
Esempio n. 9
0
        private void TestServer(object obj)
        {
            SCLServer self  = (SCLServer)obj;
            IedModel  model = new IedModel("bubak");

            LogicalDevice ldevice1 = new LogicalDevice("strasidlo", model);

            LogicalNode lln0 = new LogicalNode("LLN0", ldevice1);

            DataObject lln0_mod    = CDCFactory.CDC_ENG("Mod", lln0, CDCOptions.NONE);
            DataObject lln0_health = CDCFactory.CDC_ENG("Health", lln0, CDCOptions.NONE);

            SettingGroupControlBlock sgcb = new SettingGroupControlBlock(lln0, 1, 1);

            /* Add a temperature sensor LN */
            LogicalNode ttmp1       = new LogicalNode("TTMP1", ldevice1);
            DataObject  ttmp1_tmpsv = CDCFactory.CDC_SAV("TmpSv", ttmp1, 0, false);

            DataAttribute temperatureValue     = ttmp1_tmpsv.GetChild_DataAttribute("instMag.f");
            DataAttribute temperatureTimestamp = ttmp1_tmpsv.GetChild_DataAttribute("t");

            IEC61850.Server.DataSet dataSet = new IEC61850.Server.DataSet("events", lln0);
            DataSetEntry            dse     = new DataSetEntry(dataSet, "TTMP1$MX$TmpSv$instMag$f", -1, null);

            IEC61850.Common.ReportOptions rptOptions = IEC61850.Common.ReportOptions.SEQ_NUM | IEC61850.Common.ReportOptions.TIME_STAMP | IEC61850.Common.ReportOptions.REASON_FOR_INCLUSION;

            IEC61850.Server.ReportControlBlock rcb1 = new IEC61850.Server.ReportControlBlock("events01", lln0, "events01", false, null, 1, IEC61850.Common.TriggerOptions.DATA_CHANGED, rptOptions, 50, 0);
            IEC61850.Server.ReportControlBlock rcb2 = new IEC61850.Server.ReportControlBlock("events02", lln0, "events02", true, null, 1, IEC61850.Common.TriggerOptions.DATA_CHANGED | IEC61850.Common.TriggerOptions.GI, rptOptions, 50, 0);

            IedServer server = new IedServer(model);

            server.Start(tcpPort);

            logger.LogInfo(String.Format("SCL Server Started at port 102!!!"));

            float val = 0.0f;

            while (_run)
            {
                server.LockDataModel();
                temperatureValue.MmsValue.SetFloat(val);
                temperatureTimestamp.MmsValue.SetUtcTimeMs(Util.GetTimeInMs());
                server.UnlockDataModel();

                val += 0.1f;

                int waitres = WaitHandle.WaitAny(_waitHandles, 500);
                switch (waitres)
                {
                case 0:         // endthread
                    self._run = false;
                    break;

                case WaitHandle.WaitTimeout:
                    break;
                }
            }
            logger.LogInfo(String.Format("SCL Server Finished!!!"));
        }
Esempio n. 10
0
        public override void InitServer(string path, IedServer iedServer, IedModel iedModel)
        {
            UpdateServer(path, iedServer, iedModel);

            SetStringValue(path + @".addr", d, iedModel, iedServer);
            SetStringValue(path + @".addInfo", d, iedModel, iedServer);
            SetStringValue(path + @".d", d, iedModel, iedServer);
        }
Esempio n. 11
0
        public override void UpdateServer(string path, IedServer iedServer, IedModel iedModel)
        {
            QualityCheckClass();

            SetInt32Value(path + @".stVal", stVal, iedModel, iedServer);
            SetDataTimeValue(path + @".t", t, iedModel, iedServer);
            SetQualityValue(path + @".q", q.Validity, iedModel, iedServer);
        }
Esempio n. 12
0
 internal void SetSingleValue(string name, Single?value, IedModel iedModel, IedServer iedServer)
 {
     if (value != null)
     {
         var namePath = (DataAttribute)iedModel.GetModelNodeByShortObjectReference(name);
         var val      = Convert.ToSingle(value);
         iedServer.UpdateAttributeValue(namePath, new MmsValue(val));
     }
 }
Esempio n. 13
0
 internal void SetInt32Value(string name, Int32?value, IedModel iedModel, IedServer iedServer)
 {
     if (value != null)
     {
         var namePath = (DataAttribute)iedModel.GetModelNodeByShortObjectReference(name);
         var val      = Convert.ToInt32(value);
         iedServer.UpdateInt32AttributeValue(namePath, val);
     }
 }
Esempio n. 14
0
 internal void SetStringValue(string name, String value, IedModel iedModel, IedServer iedServer)
 {
     if (!string.IsNullOrEmpty(value))
     {
         var namePath = (DataAttribute)iedModel.GetModelNodeByShortObjectReference(name);
         var val      = value;
         iedServer.UpdateVisibleStringAttributeValue(namePath, val);
     }
 }
Esempio n. 15
0
 internal void SetQualityValue(string name, UInt16?value, IedModel iedModel, IedServer iedServer)
 {
     if (value != null)
     {
         var namePath = (DataAttribute)iedModel.GetModelNodeByShortObjectReference(name);
         var val      = Convert.ToUInt16(value);
         iedServer.UpdateQuality(namePath, val);
     }
 }
Esempio n. 16
0
        public override void InitServer(string path, IedServer iedServer, IedModel iedModel)
        {
            UpdateServer(path, iedServer, iedModel);

            var dPath = (DataAttribute)iedModel.GetModelNodeByShortObjectReference(path + @".d");
            var dVal  = d;

            iedServer.UpdateVisibleStringAttributeValue(dPath, dVal);
        }
Esempio n. 17
0
        public override void UpdateServer(string path, IedServer iedServer, IedModel iedModel)
        {
            QualityCheckClass();

            SetSingleValue(path + @".instMag.f", instMag.f, iedModel, iedServer);

            SetDataTimeValue(path + @".t", t, iedModel, iedServer);
            SetQualityValue(path + @".q", q.Validity, iedModel, iedServer);
        }
Esempio n. 18
0
        public void ControlWriteAccessToServer()
        {
            IedModel iedModel = ConfigFileParser.CreateModelFromConfigFile("../../model.cfg");

            IEC61850.Server.DataAttribute opDlTmms = (IEC61850.Server.DataAttribute)iedModel.GetModelNodeByShortObjectReference("GenericIO/PDUP1.OpDlTmms.setVal");
            IEC61850.Server.DataAttribute rsDlTmms = (IEC61850.Server.DataAttribute)iedModel.GetModelNodeByShortObjectReference("GenericIO/PDUP1.RsDlTmms.setVal");

            IedServer iedServer = new IedServer(iedModel);

            int opDlTmmsValue = 0;

            iedServer.HandleWriteAccess(opDlTmms, delegate(IEC61850.Server.DataAttribute dataAttr, MmsValue value, ClientConnection con, object parameter) {
                opDlTmmsValue = value.ToInt32();
                return(MmsDataAccessError.SUCCESS);
            }, null);

            iedServer.HandleWriteAccess(rsDlTmms, delegate(IEC61850.Server.DataAttribute dataAttr, MmsValue value, ClientConnection con, object parameter) {
                if (value.ToInt32() > 1000)
                {
                    return(MmsDataAccessError.OBJECT_VALUE_INVALID);
                }
                else
                {
                    return(MmsDataAccessError.SUCCESS);
                }
            }, null);

            iedServer.Start(10002);

            IedConnection connection = new IedConnection();

            connection.Connect("localhost", 10002);

            connection.WriteValue("simpleIOGenericIO/PDUP1.OpDlTmms.setVal", FunctionalConstraint.SP, new MmsValue((int)1234));


            try {
                connection.WriteValue("simpleIOGenericIO/PDUP1.RsDlTmms.setVal", FunctionalConstraint.SP, new MmsValue((int)1234));
            }
            catch (IedConnectionException e) {
                Assert.AreEqual(IedClientError.IED_ERROR_OBJECT_VALUE_INVALID, e.GetIedClientError());
            }

            connection.WriteValue("simpleIOGenericIO/PDUP1.RsDlTmms.setVal", FunctionalConstraint.SP, new MmsValue((int)999));

            MmsValue rsDlTmmsValue = iedServer.GetAttributeValue(rsDlTmms);

            Assert.AreEqual(999, rsDlTmmsValue.ToInt32());

            connection.Abort();

            iedServer.Stop();

            Assert.AreEqual((int)1234, opDlTmmsValue);

            iedServer.Destroy();
        }
Esempio n. 19
0
        public override void UpdateServer(string path, IedServer iedServer, IedModel iedModel)
        {
            QualityCheckClass();

            SetInt64Value(path + @".actVal", actVal, iedModel, iedServer);
            SetSingleValue(path + @".pulsQty", pulsQty / actVal, iedModel, iedServer);

            SetDataTimeValue(path + @".t", t, iedModel, iedServer);
            SetQualityValue(path + @".q", q.Validity, iedModel, iedServer);
        }
Esempio n. 20
0
        public override void UpdateServer(string path, IedServer iedServer, IedModel iedModel)
        {
            QualityCheckClass();

            SetUInt32Value(path + @".cnt", cnt, iedModel, iedServer);
            SetSecurityviolationValue(path + @".sev", sev, iedModel, iedServer);

            SetDataTimeValue(path + @".t", t, iedModel, iedServer);
            SetQualityValue(path + @".q", q.Validity, iedModel, iedServer);
        }
Esempio n. 21
0
        public void ConnectionHandler()
        {
            IedModel iedModel = ConfigFileParser.CreateModelFromConfigFile("../../model.cfg");

            int handlerCalled   = 0;
            int connectionCount = 0;

            IedServer iedServer = new IedServer(iedModel);

            string ipAddress = null;

            iedServer.SetConnectionIndicationHandler(delegate(IedServer server, ClientConnection clientConnection, bool connected, object parameter) {
                handlerCalled++;
                if (connected)
                {
                    connectionCount++;
                }
                else
                {
                    connectionCount--;
                }

                ipAddress = clientConnection.GetPeerAddress();
            }, null);

            iedServer.Start(10002);

            IedConnection con1 = new IedConnection();

            con1.Connect("localhost", 10002);

            Assert.AreEqual(1, handlerCalled);
            Assert.AreEqual(1, connectionCount);

            IedConnection con2 = new IedConnection();

            con2.Connect("localhost", 10002);

            Assert.AreEqual(2, handlerCalled);
            Assert.AreEqual(2, connectionCount);

            con1.Abort();
            con2.Abort();

            Assert.AreEqual(4, handlerCalled);
            Assert.AreEqual(0, connectionCount);

            Assert.AreEqual("127.0.0.1:", ipAddress.Substring(0, 10));

            iedServer.Stop();

            iedServer.Dispose();
        }
Esempio n. 22
0
        public override void InitServer(string path, IedServer iedServer, IedModel iedModel)
        {
            UpdateServer(path, iedServer, iedModel);

            SetInt32Value(path + @".units.SIUnit", Unit.SIUnit, iedModel, iedServer);
            SetInt32Value(path + @".units.multiplier", Unit.Multiplier, iedModel, iedServer);

            SetSingleValue(path + @".sVC.scaleFactor", sVC.ScaleFactor, iedModel, iedServer);
            SetSingleValue(path + @".sVC.offset", sVC.Offset, iedModel, iedServer);

            SetStringValue(path + @".d", d, iedModel, iedServer);
        }
Esempio n. 23
0
        public void ControlWriteAccessComplexDAToServer()
        {
            IedModel iedModel = ConfigFileParser.CreateModelFromConfigFile("../../model2.cfg");

            IEC61850.Server.DataAttribute setAnVal_setMag = (IEC61850.Server.DataAttribute)iedModel.GetModelNodeByShortObjectReference("GenericIO/LLN0.SetAnVal.setMag");

            IedServer iedServer = new IedServer(iedModel);

            int handlerCalled = 0;

            MmsValue receivedValue = null;

            iedServer.SetWriteAccessPolicy(FunctionalConstraint.SP, AccessPolicy.ACCESS_POLICY_DENY);

            iedServer.HandleWriteAccessForComplexAttribute(setAnVal_setMag, delegate(IEC61850.Server.DataAttribute dataAttr, MmsValue value, ClientConnection con, object parameter) {
                receivedValue = value;
                handlerCalled++;
                return(MmsDataAccessError.SUCCESS);
            }, null);

            iedServer.Start(10002);

            IedConnection connection = new IedConnection();

            connection.Connect("localhost", 10002);

            MmsValue complexValue = MmsValue.NewEmptyStructure(1);

            complexValue.SetElement(0, new MmsValue((float)1.0));

            connection.WriteValue("simpleIOGenericIO/LLN0.SetAnVal.setMag", FunctionalConstraint.SP, complexValue);

            Assert.NotNull(receivedValue);
            Assert.AreEqual(MmsType.MMS_STRUCTURE, receivedValue.GetType());
            Assert.AreEqual(1.0, receivedValue.GetElement(0).ToFloat());

            receivedValue.Dispose();

            receivedValue = null;

            connection.WriteValue("simpleIOGenericIO/LLN0.SetAnVal.setMag.f", FunctionalConstraint.SP, new MmsValue((float)2.0));

            Assert.NotNull(receivedValue);
            Assert.AreEqual(MmsType.MMS_FLOAT, receivedValue.GetType());
            Assert.AreEqual(2.0, receivedValue.ToFloat());

            connection.Abort();

            iedServer.Stop();

            iedServer.Dispose();
        }
Esempio n. 24
0
        public static void Main(string[] args)
        {
            bool running = true;

            /* run until Ctrl-C is pressed */
            Console.CancelKeyPress += delegate(object sender, ConsoleCancelEventArgs e) {
                e.Cancel = true;
                running  = false;
            };

            IedModel iedModel = ConfigFileParser.CreateModelFromConfigFile("../../model.cfg");

            if (iedModel == null)
            {
                Console.WriteLine("No valid data model found!");
                return;
            }

            DataObject spcso1 = (DataObject)iedModel.GetModelNodeByShortObjectReference("GenericIO/GGIO1.SPCSO1");

            IedServer iedServer = new IedServer(iedModel);

            iedServer.SetControlHandler(spcso1, delegate(DataObject controlObject, object parameter, MmsValue ctlVal, bool test) {
                bool val = ctlVal.GetBoolean();

                if (val)
                {
                    Console.WriteLine("received binary control command: on");
                }
                else
                {
                    Console.WriteLine("received binary control command: off");
                }

                return(ControlHandlerResult.OK);
            }, null);

            iedServer.Start(102);
            Console.WriteLine("Server started");

            GC.Collect();

            while (running)
            {
                Thread.Sleep(1);
            }

            iedServer.Stop();
            Console.WriteLine("Server stopped");

            iedServer.Destroy();
        }
Esempio n. 25
0
        public override void UpdateServer(string path, IedServer iedServer, IedModel iedModel)
        {
            QualityCheckClass();

            SetBooleanValue(path + @".general", general, iedModel, iedServer);
            SetBooleanValue(path + @".phsA", phsA, iedModel, iedServer);
            SetBooleanValue(path + @".phsB", phsB, iedModel, iedServer);
            SetBooleanValue(path + @".phsC", phsC, iedModel, iedServer);
            SetBooleanValue(path + @".neut", neut, iedModel, iedServer);

            SetDataTimeValue(path + @".t", t, iedModel, iedServer);
            SetQualityValue(path + @".q", q.Validity, iedModel, iedServer);
        }
Esempio n. 26
0
        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();
        }
Esempio n. 27
0
        private void WorkerThreadProc(object obj)
        {
            SCLServer self = (SCLServer)obj;

            logger.LogInfo(String.Format("SCL Server " + sclModel.iec.Name + " - Creating model. It takes a while..."));
            IedModel model = makeIecModel();

            server = new IedServer(model);
            InitializeValues(sclModel.iec);

            server.Start(tcpPort);
            //Thread.Sleep(100);
            if (!server.isRunning())
            {
                logger.LogError(String.Format("SCL Server " + sclModel.iec.Name + " Failed at port " + tcpPort.ToString() + "!!!"));
                self._run = false;
            }
            else
            {
                logger.LogInfo(String.Format("SCL Server " + sclModel.iec.Name + " Started at port " + tcpPort.ToString() + "!!!"));
            }

            while (self._run)
            {
                int waitres = WaitHandle.WaitAny(_waitHandles, 500);
                switch (waitres)
                {
                case 0:         // endthread
                    self._run = false;
                    break;

                case WaitHandle.WaitTimeout:
                    if (!server.isRunning())     //logger.LogInfo("Server not running???");
                    {
                        self._run = false;
                    }
                    break;
                }
            }
            server.Stop();
            resetModelObjects(sclModel.iec);
            server.Dispose();
            server = null;
            model.Dispose();
            model    = null;
            sclModel = null;
            logger.LogInfo(String.Format("SCL Server Stopped"));
        }
Esempio n. 28
0
        private static void UpdateDateTime(string path, string value, IedServer iedServer, IedModel iedModel)
        {
            iedServer.LockDataModel();

            try
            {
                DateTime str = Convert.ToDateTime(value);
                iedServer.UpdateUTCTimeAttributeValue((DataAttribute)iedModel.GetModelNodeByShortObjectReference(path), str);
            }
            catch
            {
                // ignored
            }

            iedServer.UnlockDataModel();
        }
Esempio n. 29
0
        private static void UpdateUshort(string path, string value, IedServer iedServer, IedModel iedModel)
        {
            iedServer.LockDataModel();

            try
            {
                ushort str = Convert.ToUInt16(value);
                iedServer.UpdateQuality((DataAttribute)iedModel.GetModelNodeByShortObjectReference(path), str);
            }
            catch
            {
                // ignored
            }

            iedServer.UnlockDataModel();
        }
Esempio n. 30
0
        public s61850(ILogger <s61850> logger, IServiceScopeFactory scopeFactory, IHubContext <SignalRHub, IHub> hub)
        {
            _logger       = logger;
            _scopeFactory = scopeFactory;
            _hub          = hub;
            iedModel      = ConfigFileParser.CreateModelFromConfigFile("model.cfg");
            if (iedModel == null)
            {
                _logger.LogError("SYSERR: No Valid DataModel Found!");
                return;
            }

            config = new IedServerConfig();
            config.ReportBufferSize = 100000;

            iedServer = new IedServer(iedModel, config);
        }