Beispiel #1
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;
        }
Beispiel #2
0
        public static string Relay(RelayName channel, SignalName sensor)
        {
            var rv = sensor.ToString();

            switch (sensor)
            {
            case SignalName.Feedback:
            {
                switch (channel)
                {
                case RelayName.Kv1:
                    rv = "k3";
                    break;

                case RelayName.Kv2:
                    rv = "k2";
                    break;

                case RelayName.Kv8:
                    rv = "k4";
                    break;

                case RelayName.Kv9:
                    rv = "k6";
                    break;

                case RelayName.Kv10:
                    //rv = "k6";
                    rv = "k5";
                    break;

                case RelayName.Kv11:
                    rv = "k1";
                    break;
                }
            }
            break;
            }

            const string kParent = "relay";

            return((sensor == SignalName.Empty ? string.Format("{0}.{1}", kParent, channel) : string.Format("{0}.{1}.{2}", kParent, channel, rv)).ToLower());
        }
Beispiel #3
0
 public static string Relay(RelayName channel)
 {
     return(Relay(channel, SignalName.Empty));
 }