예제 #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);
            }
        }