Example #1
0
        public static void Init(IJournal journal, ISignalsFactory signals)
        {
            mRelay = new Relay(journal, RelayName.Kv4, signals);

            mOnTimeout           = signals.GetSignal("soundalarm.on.timeout");
            mOnTimeout.OnUpdate += signal =>
            {
                var rv = signal.ValueAsInt < 1500 ? 1500 : signal.ValueAsInt > 6000 ? 6000 : signal.ValueAsInt;
                journal.Debug(string.Format("Таймер вкл. сирены установлен в {0} мс", rv), MessageLevel.System);
                mTask.SetTimeout(rv);
            };

            mOffTimeout           = signals.GetSignal("soundalarm.off.timeout");
            mOffTimeout.OnUpdate += signal =>
            {
                var rv = signal.ValueAsInt < 2500 ? 2500 : signal.ValueAsInt > 10000 ? 10000 : signal.ValueAsInt;
                journal.Debug(string.Format("Таймер выкл. сирены установлен в {0} мс", rv), MessageLevel.System);
                mUnlockInterval = rv;
            };

            // values by default
            mTask           = new DelayedTask(mOnTimeout.ValueAsInt); // 1500
            mUnlockInterval = mOffTimeout.ValueAsInt;                 // 5000

            mTask.OnTimeout += ProcessTimerEvent;
        }
Example #2
0
        public Relay(IJournal journal, RelayName name, ISignalsFactory signals)
        {
            mJournal = journal;
            mOutput  = signals.GetSignal(SensorName.Relay(name));

            // TODO: uncomment
            mFeedback = signals.GetSignal(SensorName.Relay(name, SignalName.Feedback));

            if (mFeedback != null)
            {
                mFeedback.OnChange += FeedbackOnChange;
            }

            if (mOnTimeout == null)
            {
                mOnTimeout = signals.GetSignal("relay.feedback.on.timeout");
            }

            if (mFeedback != null)
            {
                mOnTimeout.OnUpdate += signal =>
                {
                    var rv = signal.ValueAsInt < 1500 ? 1500 : signal.ValueAsInt > 6000 ? 6000 : signal.ValueAsInt;
                    mJournal.Debug(string.Format("Таймер реле (ОС) установлен в {0} мс для {1}", rv, mOutput.Specification.Id), MessageLevel.System);
                    mTask.SetTimeout(rv);
                };
            }

            // задержка на контроль обратной связи по контактору по умолчанию
            mTask            = new DelayedTask(mOnTimeout == null ? 3000 : mOnTimeout.ValueAsInt < 1500 ? 1500 : mOnTimeout.ValueAsInt > 6000 ? 6000 : mOnTimeout.ValueAsInt);
            mTask.OnTimeout += Checkout;
        }
Example #3
0
        /// <summary>
        /// Останавливаем насос и частотники
        /// </summary>
        /// <param name="timeout">Задержка перед отключением насоса</param>
        public static void Stop(ushort timeout = 0)
        {
            SoundAlarm.Off();
            if (OnStop != null)
            {
                OnStop(mState);
            }

            mTaskPumpStop.SetTimeout(timeout);
            mTaskPumpStop.Start();
        }
Example #4
0
 public static void Stop(ushort timeout = 0)
 {
     mTaskEngineStop.SetTimeout(timeout);
     mTaskEngineStop.Start();
 }