Beispiel #1
0
        public void SetStopCount(int value, bool remoted)
        {
            var stoped = value > _stopCount && RiserMode > RiserState.Waiting;

            _stopCount = value;
            if (!stoped)
            {
                return;
            }
            FillingEnded = DateTime.Now;
            FilledKind   = (StopCause & 0x2000) > 0;
            FilledLevel  = CurrentLevel;
            //------------------------------------------------
            var masks = new[]
            {
                0x01,
                0x02,
                0x04,
                0x08,
                0x10,
                0x20,
                0x40,
                0x80,
                0x0100,
                0x0200,
                0x0400,
                0x0800,
                0x1000,
                0x2000,
                0x4000,
                0x8000
            };
            var messages = new[]
            {
                "Налив завершен аварийно. Сработал сигнализатор аварийный",
                "Налив завершен кнопкой \"СТОП\" пульта управления",
                "Налив завершен аварийно. Неисправность цепи готовности",
                "Налив завершен аварийно. Неисправность сигнализатора уровня",
                "Налив завершен аварийно. Истекло время работы без связи",
                "Налив завершен аварийно. Заземление отсутствует",
                "Налив завершен аварийно. Ошибка клапана большого прохода",
                "Налив завершен аварийно. Ошибка клапана малого прохода",
                "Налив завершен аварийно. Ток сигнализатора уровня меньше минимального",
                "Налив завершен аварийно. Ток сигнализатора уровня больше максимального",
                "Налив завершен аварийно. Ток сигнализатора аварийного меньше минимального",
                "Налив завершен аварийно. Ток сигнализатора аварийного больше максимального",
                "Налив завершен аварийно. Нет рабочего положения",
                "Налив завершен автоматически",
                "Налив завершен оператором АРМ",
                "Налив завершен аварийно. Неверные данные налива"
            };
            string stopcause = null;

            for (var i = 0; i < masks.Length; i++)
            {
                if ((StopCause & masks[i]) <= 0)
                {
                    continue;
                }
                if (!remoted)
                {
                    Data.SendToSystemLog(messages[i], Address, WaggonData);
                }
                if (stopcause == null)
                {
                    stopcause = messages[i];
                }
            }
            if (stopcause != null && !remoted)
            {
                Data.SendToFillingLog(FillingStarted, Address, WaggonData, FillingEnded, FillingUser, stopcause);
            }
        }