示例#1
0
 public ProcessingManager(IFunctionExecutor functionExecutor)
 {
     this.functionExecutor = functionExecutor;
     applicationSequence   = 0;
     transportSequence     = 0;
     dom     = new DomServiceProxy(ConfigurationManager.AppSettings["Dom"]);
     log     = new LogServiceProxy(ConfigurationManager.AppSettings["Log"]);
     storage = new SF.Common.Proxies.ScadaStorageProxy(ConfigurationManager.AppSettings["Storage"]);
 }
示例#2
0
        public async Task <bool> Commit()
        {
            ServiceEventSource.Current.ServiceMessage(_context, "SCADA Transaction - Commit!");
            ScadaStorageProxy proxy = new ScadaStorageProxy(ConfigurationReader.ReadValue(_context, "Settings", "Storage"));
            await proxy.SetModel(await proxy.GetTransactionModel());

            var model = await proxy.GetModel();

            ushort aiCount = (ushort)(model.Values.Where(x => !String.IsNullOrEmpty(x.Mrid) && x.RegisterType == SCADA.Common.DataModel.RegisterType.ANALOG_INPUT).Count());
            ushort aoCount = (ushort)(model.Values.Where(x => !String.IsNullOrEmpty(x.Mrid) && x.RegisterType == SCADA.Common.DataModel.RegisterType.ANALOG_OUTPUT).Count());
            ushort biCount = (ushort)(model.Values.Where(x => !String.IsNullOrEmpty(x.Mrid) && x.RegisterType == SCADA.Common.DataModel.RegisterType.BINARY_INPUT).Count());
            ushort boCount = (ushort)(model.Values.Where(x => !String.IsNullOrEmpty(x.Mrid) && x.RegisterType == SCADA.Common.DataModel.RegisterType.BINARY_OUTPUT).Count());

            try
            {
                SimulatorProxy sim = new SimulatorProxy();
                sim.UpdateConfig(Tuple.Create <ushort, ushort, ushort, ushort>(biCount, boCount, aiCount, aoCount), result.MridIndexPairs);
            } catch { }
            DomServiceProxy dom = new DomServiceProxy(ConfigurationReader.ReadValue(_context, "Settings", "Dom"));
            await dom.Add((await proxy.GetModel()).Values.ToList().ToDbModel());

            return(true);
        }
示例#3
0
        private void Update()
        {
            var            domService     = new DomServiceProxy(ConfigurationReader.ReadValue(Context, "Settings", "Dom"));
            var            historyService = new HistoryServiceProxy(ConfigurationReader.ReadValue(Context, "Settings", "History"));
            var            storageService = new ScadaStorageProxy(ConfigurationReader.ReadValue(Context, "Settings", "Storage"));
            var            domData        = domService.GetAll().GetAwaiter().GetResult();
            DomUpdateEvent dom            = new DomUpdateEvent()
            {
                DomData = domData.ToSwitchingEquipment()
            };
            HistoryUpdateEvent history = new HistoryUpdateEvent()
            {
                History = historyService.GetAll().GetAwaiter().GetResult()
            };
            HistoryGraphicalEvent graph = new HistoryGraphicalEvent()
            {
                Graph = historyService.GetGraph().GetAwaiter().GetResult()
            };
            ScadaUpdateEvent ev = new ScadaUpdateEvent()
            {
                Points = new List <SCADA.Common.DataModel.ScadaPointDto>()
            };

            var all      = (storageService.GetModel().GetAwaiter().GetResult()).Values.ToList();
            var analogs  = all.Where(x => x.RegisterType == RegisterType.ANALOG_INPUT || x.RegisterType == RegisterType.ANALOG_OUTPUT).Cast <AnalogPoint>().ToList();
            var binaries = all.Where(x => x.RegisterType == RegisterType.BINARY_INPUT || x.RegisterType == RegisterType.BINARY_OUTPUT).Cast <DiscretePoint>().ToList();

            ev.Points.AddRange(Mapper.MapCollection <AnalogPoint, ScadaPointDto>(analogs));
            ev.Points.AddRange(Mapper.MapCollection <DiscretePoint, ScadaPointDto>(binaries));

            Subscription subs      = new Subscription();
            Publisher    publisher = new Publisher(subs.Topic, subs.ConnectionString);

            if (ev.Points.Count > 0)
            {
                publisher.SendMessage(new PubSubMessage()
                {
                    ContentType = ContentType.SCADA_UPDATE,
                    Sender      = Sender.SCADA,
                    Content     = JsonTool.Serialize <ScadaUpdateEvent>(ev)
                }).ConfigureAwait(false);
            }
            if (dom.DomData.Count > 0)
            {
                publisher.SendMessage(new PubSubMessage()
                {
                    ContentType = ContentType.SCADA_DOM,
                    Sender      = Sender.SCADA,
                    Content     = JsonTool.Serialize <DomUpdateEvent>(dom)
                }).ConfigureAwait(false);
            }
            if (history.History.Count > 0)
            {
                publisher.SendMessage(new PubSubMessage()
                {
                    ContentType = ContentType.SCADA_HISTORY,
                    Sender      = Sender.SCADA,
                    Content     = JsonTool.Serialize <HistoryUpdateEvent>(history)
                }).ConfigureAwait(false);
            }
            publisher.SendMessage(new PubSubMessage()
            {
                ContentType = ContentType.SCADA_HISTORY_GRAPH,
                Sender      = Sender.SCADA,
                Content     = JsonTool.Serialize <HistoryGraphicalEvent>(graph)
            }).ConfigureAwait(false);
        }