Пример #1
0
        private void DataAcquisition()
        {
            while (true)
            {
                LogHelper.Log(LogTarget.File, LogService.SCADACrunching, " INFO - SCADACrunching.cs - Data acquisition, new measurement ciclus.");
                timestamp = DateTime.Now;

                lock (SCADAModel.Instance.Lock2PC)
                {
                    foreach (var analogValue in scadaModel.AnalogValues)
                    {
                        var value = client.ReadHoldingRegisters2(analogValue.Address, 1);

                        SynchronousMachine syncMachine = adapter.GetSyncMachineByGid(analogValue.SynchronousMachine);

                        if (syncMachine == null)
                        {
                            LogHelper.Log(LogTarget.File, LogService.SCADACrunching, " ERROR - SCADACrunching.cs - Data acquisition, Synchronous machine is not assigned to analog value.");
                            throw new Exception("Synchronous machine is not assigned to analog value.");
                        }

                        analogValue.Value = RawValuesConverter.ConvertRange(value[0], RAW_MIN, RAW_MAX, EGU_MIN, EGU_MAX);

                        analogValue.Timestamp = timestamp.Ticks;
                    }

                    SCADASubscriber.Instance.NotifySubscribers(DMSType.ANALOGVALUE);
                }

                Thread.Sleep(3000);
            }
        }
Пример #2
0
        public HistoryDataChartViewModel(long selectedObjectGid)
        {
            //New active chart data
            HistorianDataActive_Y = new SeriesCollection();
            HistorianDataActive_Y.Add(
                new LineSeries
            {
                Values         = new ChartValues <float>(),
                LineSmoothness = 1,
                Stroke         = Brushes.Blue
            }
                );

            //New reactive chart data
            HistorianDataReactive_Y = new SeriesCollection();
            HistorianDataReactive_Y.Add(
                new LineSeries
            {
                Values         = new ChartValues <float>(),
                LineSmoothness = 1,
                Stroke         = Brushes.Red
            }
                );

            InitGUIElements();
            SelectedDER      = selectedObjectGid;
            ShowChartCommand = new RelayCommand(() => ShowChartCommandExecute(), () => true);


            if (selectedObjectGid == -1)
            {
                SelectedObject = "Entire network";
            }
            else
            {
                switch (((DMSType)ModelCodeHelper.ExtractTypeFromGlobalId(selectedObjectGid)))
                {
                case DMSType.REGION:
                    SelectedObject = rdAdapter.GetRegionByGid(selectedObjectGid).Name;
                    break;

                case DMSType.SUBREGION:
                    SelectedObject = rdAdapter.GetSubRegionByGid(selectedObjectGid).Name;
                    break;

                case DMSType.SUBSTATION:
                    SelectedObject = rdAdapter.GetSubstation(selectedObjectGid).Name;
                    break;

                case DMSType.SYNCMACHINE:
                    SelectedObject = rdAdapter.GetSyncMachineByGid(selectedObjectGid).Name;
                    break;
                }
            }

            Year  = DateTime.Now.Year;
            Month = Months[DateTime.Now.Month - 1];
        }