Example #1
0
		public void AddStandardTurning(XBase xBase)
		{
			Add(FormulaOperationType.DUP);
			AddGetBit(XStateBit.Norm, xBase);
			Add(FormulaOperationType.AND, comment: "Смешивание с битом Дежурный Устройства");
			AddPutBit(XStateBit.TurnOn_InAutomatic, xBase);
			Add(FormulaOperationType.COM);
			AddGetBit(XStateBit.Norm, xBase);
			Add(FormulaOperationType.AND, comment: "Смешивание с битом Дежурный Устройства");
			AddPutBit(XStateBit.TurnOff_InAutomatic, xBase);
		}
Example #2
0
		public void AddGetBitOff(XStateBit stateBit, XBase xBase)
		{
			Add(FormulaOperationType.GETBIT,
				(byte)stateBit,
				xBase.GKDescriptorNo);
			Add(FormulaOperationType.GETBIT,
				(byte)XStateBit.Ignore,
				xBase.GKDescriptorNo);
			Add(FormulaOperationType.COM);
			Add(FormulaOperationType.AND);
		}
Example #3
0
		public static void SendControlCommandMRO(XBase xBase, byte code, byte code2)
		{
			var bytes = new List<byte>();
			var databaseNo = xBase.GKDescriptorNo;
			bytes.AddRange(BytesHelper.ShortToBytes(databaseNo));
			bytes.Add(code);
			bytes.Add(code2);
			if (xBase.GkDatabaseParent != null)
			{
				WatcherManager.Send(OnCompleted, xBase.GkDatabaseParent, 3, 13, 0, bytes);
			}
		}
		public void Parse(List<byte> bytes, XBase xBase)
		{
			XBase = xBase;
			ushort controllerAddress = BytesHelper.SubstructShort(bytes, 2);
			AddressOnController = BytesHelper.SubstructShort(bytes, 4);
			PhysicalAddress = BytesHelper.SubstructShort(bytes, 6);
			Description = BytesHelper.BytesToStringDescription(bytes);
			int serialNo = BytesHelper.SubstructInt(bytes, 40);
			int state = BytesHelper.SubstructInt(bytes, 44);

			TypeNo = BytesHelper.SubstructShort(bytes, 0);
			StateBits = XStatesHelper.StatesFromInt(state);
			ParseAdditionalParameters(bytes, xBase);
			CheckConnectionLost(xBase);
		}
Example #5
0
		public static void SendControlCommand(XBase xBase, byte code, string description)
		{
			var bytes = new List<byte>();
			var databaseNo = xBase.GKDescriptorNo;
			bytes.AddRange(BytesHelper.ShortToBytes(databaseNo));
			bytes.Add(code);
			if (xBase.GkDatabaseParent != null)
			{
				WatcherManager.Send(new Action<SendResult>(sendResult =>
					{
						if (sendResult.HasError)
						{
							GKProcessorManager.AddGKMessage(EventName.Ошибка_при_выполнении_команды, description, xBase, null);
						}
					}),
					xBase.GkDatabaseParent, 3, 13, 0, bytes);
			}
		}
Example #6
0
		public static OperationResult<List<XProperty>> GetSingleParameter(XBase xBase)
		{
			try
			{
				var commonDatabase = GetCommonDatabase(xBase);
				if (commonDatabase != null)
				{
					var descriptor = commonDatabase.Descriptors.FirstOrDefault(x => x.XBase.BaseUID == xBase.BaseUID);
					if (descriptor != null)
					{
						var result = GetDeviceParameters(commonDatabase, descriptor);
						return result;
					}
				}
			}
			catch (Exception e)
			{
				Logger.Error(e, "ParametersHelper.GetSingleParameter");
			}
			return new OperationResult<List<XProperty>>("Непредвиденная ошибка");
		}
Example #7
0
		public static string SetSingleParameter(XBase xBase, List<byte> parameterBytes)
		{
			try
			{
				var commonDatabase = GetCommonDatabase(xBase);
				if (commonDatabase != null)
				{
					var descriptor = commonDatabase.Descriptors.FirstOrDefault(x => x.XBase.BaseUID == xBase.BaseUID);
					if (descriptor != null)
					{
						var result = SetDeviceParameters(commonDatabase, descriptor, parameterBytes);
						if (result != null)
						{
							return "Ошибка";
						}
					}
				}
			}
			catch (Exception e)
			{
				Logger.Error(e, "ParametersHelper.SetSingleParameter");
			}
			return null;
		}
Example #8
0
		public static void GKStop(XBase xBase, string userName)
		{
			Watcher.SendControlCommand(xBase, XStateBit.Stop_InManual, "Остановка пуска");
            AddGKMessage(EventName.Команда_оператора, EventDescription.Остановка_пуска, xBase, userName);
		}
Example #9
0
		public static void AddGKMessage(EventName message, EventDescription description, XBase xBase, string userName, bool isAdministrator = false)
		{
            AddGKMessage(message, description.ToDescription(), xBase, userName, isAdministrator);
        }
Example #10
0
		public static void GKTurnOn(XBase xBase, string userName)
		{
			Watcher.SendControlCommand(xBase, XStateBit.TurnOn_InManual, "Включить");
            AddGKMessage(EventName.Команда_оператора, EventDescription.Включить, xBase, userName);
		}
Example #11
0
		public static void GKTurnOffNow(XBase xBase, string userName)
		{
			Watcher.SendControlCommand(xBase, XStateBit.TurnOffNow_InManual, "Выключить немедленно");
            AddGKMessage(EventName.Команда_оператора, EventDescription.Выключить_немедленно, xBase, userName);
		}
Example #12
0
		public static void GKSetManualRegime(XBase xBase, string userName)
		{
			Watcher.SendControlCommand(xBase, XStateBit.SetRegime_Manual, "Перевод в ручной режим");
            AddGKMessage(EventName.Команда_оператора, EventDescription.Перевод_в_ручной_режим, xBase, userName);
		}
Example #13
0
		public static void GKSetIgnoreRegime(XBase xBase, string userName)
		{
			Watcher.SendControlCommand(xBase, XStateBit.SetRegime_Off, "Перевод в отключенный режим");
			AddGKMessage(EventName.Команда_оператора, EventDescription.Перевод_в_отключенный_режим, xBase, userName);
		}
		static void AddInputOutputObject(List<XBase> objects, XBase newObject)
		{
			if (!objects.Contains(newObject))
				objects.Add(newObject);
		}
Example #15
0
		void CheckServiceRequired(XBase xBase, JournalItem journalItem)
		{
			if (journalItem.Name == "Запыленность" || journalItem.Name == "Запыленность устранена")
			{
				if (xBase is XDevice)
				{
					var device = xBase as XDevice;
					if (journalItem.Name == "Запыленность")
						device.BaseState.IsService = true;
					if (journalItem.Name == "Запыленность устранена")
						device.BaseState.IsService = false;
				}
			}
		}
Example #16
0
		public void AddPutBit(XStateBit stateBit, XBase xBase)
		{
			Add(FormulaOperationType.PUTBIT,
				(byte)stateBit,
				xBase.GKDescriptorNo);
		}
		void CheckConnectionLost(XBase xBase)
		{
			if (xBase is XDevice)
			{
				var connectionLostParameter = additionalShortParameters[9];
				var connectionLostCount = connectionLostParameter / 256;

				XDevice xDevice = xBase as XDevice;
				XDevice connectionLostParent = xDevice.KAUParent;
				if (xDevice.Driver.IsKauOrRSR2Kau)
				{
					connectionLostParent = xDevice.GKParent;
					connectionLostCount = connectionLostParameter % 256;
				}
				if (connectionLostParent != null)
				{
					var property = connectionLostParent.Properties.FirstOrDefault(x => x.Name == "ConnectionLostCount");
					if (property != null)
					{
						if (connectionLostCount >= property.Value)
						{
							AdditionalStates = new List<XAdditionalState>()
							{
								new XAdditionalState()
								{
									StateClass = XStateClass.Failure,
									Name = "Потеря связи"
								}
							};
						}
					}
				}
			}
		}
		public void GKStop(XBase xBase)
		{
			if (IsGKAsAService)
			{
				SafeOperationCall(() => { FiresecService.GKStop(xBase.BaseUID, xBase.ObjectType); }, "GKStop");
			}
			else
			{
				GKProcessorManager.GKStop(xBase, FiresecManager.CurrentUser.Name);
			}
		}
		public OperationResult<List<XProperty>> GKGetSingleParameter(XBase xBase)
		{
			if (IsGKAsAService)
			{
				return SafeOperationCall<List<XProperty>>(() => { return FiresecService.GKGetSingleParameter(xBase.BaseUID); }, "GetSingleParameter");
			}
			else
			{
				return GKProcessorManager.GKGetSingleParameter(xBase);
			}
		}
		public OperationResult<bool> GKSetSingleParameter(XBase xBase, List<byte> parameterBytes)
		{
			if (IsGKAsAService)
			{
				return SafeOperationCall<bool>(() => { return FiresecService.GKSetSingleParameter(xBase.BaseUID, parameterBytes); }, "SetSingleParameter");
			}
			else
			{
				return GKProcessorManager.GKSetSingleParameter(xBase, parameterBytes);
			}
		}
Example #21
0
        public static void AddGKMessage(EventName message, string description, XBase xBase, string userName, bool isAdministrator = false)
        {
            Guid uid = Guid.Empty;
            var journalItemType = JournalItemType.System;
            if (xBase != null)
            {
                if (xBase is XDevice)
                {
                    uid = (xBase as XDevice).UID;
                    journalItemType = JournalItemType.Device;
                }
                if (xBase is XZone)
                {
                    uid = (xBase as XZone).UID;
                    journalItemType = JournalItemType.Zone;
                }
                if (xBase is XDirection)
                {
                    uid = (xBase as XDirection).UID;
                    journalItemType = JournalItemType.Direction;
                }
                if (xBase is XDelay)
                {
                    uid = (xBase as XDelay).UID;
                    journalItemType = JournalItemType.Delay;
                }
                if (xBase is XPim)
                {
                    uid = (xBase as XPim).UID;
                    journalItemType = JournalItemType.Pim;
                }
            }

            var journalItem = new JournalItem()
            {
                SystemDateTime = DateTime.Now,
                DeviceDateTime = DateTime.Now,
                JournalItemType = journalItemType,
                StateClass = EventNamesHelper.GetStateClass(message),
                Name = message.ToDescription(),
                Description = description,
                ObjectUID = uid,
                ObjectStateClass = XStateClass.Norm,
                UserName = userName,
                SubsystemType = XSubsystemType.System
            };
            if (xBase != null)
            {
                journalItem.ObjectName = xBase.PresentationName;
                journalItem.GKObjectNo = (ushort)xBase.GKDescriptorNo;
            }

            GKDBHelper.Add(journalItem);
            OnNewJournalItem(journalItem, isAdministrator);
            var gkCallbackResult = new GKCallbackResult();
            gkCallbackResult.JournalItems.Add(journalItem);
            OnGKCallbackResult(gkCallbackResult);
        }
		void ParseAdditionalParameters(List<byte> bytes, XBase xBase)
		{
			AdditionalStates = new List<XAdditionalState>();
			for (int i = 0; i < 10; i++)
			{
				var additionalShortParameter = BytesHelper.SubstructShort(bytes, bytes.Count - 20 + i * 2);
				additionalShortParameters.Add(additionalShortParameter);
			}

			var driver = XManager.DriversConfiguration.XDrivers.FirstOrDefault(x => x.DriverTypeNo == TypeNo);
			if (driver != null)
			{
                var driverType = driver.DriverType;
				if (driverType == XDriverType.GK && XBase.GKDescriptorNo > 1)
                    driverType = XDriverType.KAU;

                switch (driverType)
				{
					case XDriverType.KAU:
					case XDriverType.RSR2_KAU:
						var bitArray = new BitArray(new int[1] { additionalShortParameters[0] });
						if (bitArray[0])
							AddAdditionalState(XStateClass.Failure, "Питание 1");
						if (bitArray[1])
							AddAdditionalState(XStateClass.Failure, "Питание 2");
						if (bitArray[2])
							AddAdditionalState(XStateClass.Failure, "Отказ АЛС 1 или 2");
						if (bitArray[3])
							AddAdditionalState(XStateClass.Failure, "Отказ АЛС 3 или 4");
						if (bitArray[4])
							AddAdditionalState(XStateClass.Failure, "Отказ АЛС 5 или 6");
						if (bitArray[5])
							AddAdditionalState(XStateClass.Failure, "Отказ АЛС 7 или 8");
						if (bitArray[6])
                            AddAdditionalState(XStateClass.Failure, "Вскрытие корпуса");
						if (bitArray[8])
							AddAdditionalState(XStateClass.Failure, "КЗ АЛС 1");
						if (bitArray[9])
							AddAdditionalState(XStateClass.Failure, "КЗ АЛС 2");
						if (bitArray[10])
							AddAdditionalState(XStateClass.Failure, "КЗ АЛС 3");
						if (bitArray[11])
							AddAdditionalState(XStateClass.Failure, "КЗ АЛС 4");
						if (bitArray[12])
							AddAdditionalState(XStateClass.Failure, "КЗ АЛС 5");
						if (bitArray[13])
							AddAdditionalState(XStateClass.Failure, "КЗ АЛС 6");
						if (bitArray[14])
							AddAdditionalState(XStateClass.Failure, "КЗ АЛС 7");
						if (bitArray[15])
							AddAdditionalState(XStateClass.Failure, "КЗ АЛС 8");
						break;

					case XDriverType.GK:
						bitArray = new BitArray(new int[1] { additionalShortParameters[0] });
						if (bitArray[0])
							AddAdditionalState(XStateClass.Failure, "Питание 1");
						if (bitArray[1])
							AddAdditionalState(XStateClass.Failure, "Питание 2");
						if (bitArray[2])
							AddAdditionalState(XStateClass.Failure, "ОЛС");
						if (bitArray[3])
							AddAdditionalState(XStateClass.Failure, "РЛС");
						if (bitArray[6])
                            AddAdditionalState(XStateClass.Failure, "Вскрытие корпуса");
						break;

					case XDriverType.RSR2_Bush:
						var bushType = 1;
						if (XBase is XDevice)
						{
							XDevice device = XBase as XDevice;
							var property = device.Properties.FirstOrDefault(x => x.Name == "Type");
							if (property != null)
							{
								bushType = property.Value;
							}
						}
						var sensorBitArray = new BitArray(new int[1] { additionalShortParameters[4] % 256 });
						var breakBitArray = new BitArray(new int[1] { additionalShortParameters[5] % 256 });
						var kzBitArray = new BitArray(new int[1] { additionalShortParameters[6] % 256 });

						if (sensorBitArray[0])
							AddAdditionalState(XStateClass.Info, "Низкий уровень");
						if (sensorBitArray[1])
                            AddAdditionalState(XStateClass.Info, "Высокий уровень");
						if (sensorBitArray[2])
                            AddAdditionalState(XStateClass.Failure, "Аварийный уровень");

						if (bushType == 1)
						{
							if (breakBitArray[0] && !kzBitArray[0])
								AddAdditionalState(XStateClass.Failure, "Обрыв Низкий уровень");
							if (breakBitArray[1] && !kzBitArray[1])
								AddAdditionalState(XStateClass.Failure, "Обрыв Высокий уровень");
							if (breakBitArray[2] && !kzBitArray[2])
								AddAdditionalState(XStateClass.Failure, "Обрыв Аварийный уровень");

							if (kzBitArray[0])
								AddAdditionalState(XStateClass.Failure, "КЗ Низкий уровень");
							if (kzBitArray[1])
								AddAdditionalState(XStateClass.Failure, "КЗ Высокий уровень");
							if (kzBitArray[2])
								AddAdditionalState(XStateClass.Failure, "КЗ Аварийный уровень");
						}
						if (bushType == 2)
						{
							if (breakBitArray[0] && !kzBitArray[0])
								AddAdditionalState(XStateClass.Failure, "Обрыв Давление низкое");
							if (breakBitArray[1] && !kzBitArray[1])
								AddAdditionalState(XStateClass.Failure, "Обрыв Давление на выходе");
							if (breakBitArray[2] && !kzBitArray[2])
								AddAdditionalState(XStateClass.Failure, "Таймаут по давлению");

							if (kzBitArray[0])
								AddAdditionalState(XStateClass.Failure, "КЗ Давление низкое");
							if (kzBitArray[1])
								AddAdditionalState(XStateClass.Failure, "КЗ Давление на выходе");
						}
						if (bushType == 3)
						{
							if (breakBitArray[0] && !kzBitArray[0])
								AddAdditionalState(XStateClass.Failure, "Обрыв ДУ ПУСК");
							if (breakBitArray[1] && !kzBitArray[1])
								AddAdditionalState(XStateClass.Failure, "Обрыв ДУ ПУСК");

							if (kzBitArray[0])
								AddAdditionalState(XStateClass.Failure, "КЗ ДУ ПУСК");
							if (kzBitArray[1])
								AddAdditionalState(XStateClass.Failure, "КЗ ДУ СТОП");
						}

						var failureBitArray = new BitArray(new int[1] { additionalShortParameters[5] / 256 });
						if (failureBitArray[0])
							AddAdditionalState(XStateClass.Failure, "Вскрытие");
						if (failureBitArray[1])
							AddAdditionalState(XStateClass.Failure, "Неисправность контакта");
						if (failureBitArray[3])
							AddAdditionalState(XStateClass.Failure, "Питание силовое");
						if (failureBitArray[6])
							AddAdditionalState(XStateClass.Failure, "Неисправность одной или обеих фаз(контроль нагрузки)");
						if (failureBitArray[7])
							AddAdditionalState(XStateClass.Failure, "Несовместимость сигналов");

						failureBitArray = new BitArray(new int[1] { additionalShortParameters[5] % 256 });
						if (failureBitArray[7])
							AddAdditionalState(XStateClass.Failure, "Питание контроллера");
						break;

					case XDriverType.SmokeDetector:
					case XDriverType.HeatDetector:
					case XDriverType.CombinedDetector:
						bitArray = new BitArray(new int[1] { additionalShortParameters[1] });
						if (bitArray[1])
							AddAdditionalState(XStateClass.Failure, "Оптический канал или фотоусилитель");
						if (bitArray[2])
							AddAdditionalState(XStateClass.Failure, "Температурный канал");
						break;

					case XDriverType.RM_1:
						bitArray = new BitArray(new int[1] { additionalShortParameters[1] });
						if (bitArray[0])
							AddAdditionalState(XStateClass.Failure, "Контакт не переключается");
						if (bitArray[1])
							AddAdditionalState(XStateClass.Failure, "Напряжение запуска реле ниже нормы");
						if (bitArray[5])
							AddAdditionalState(XStateClass.Failure, "КЗ выхода");
						if (bitArray[6])
							AddAdditionalState(XStateClass.Failure, "Обрыв выхода");
						if (bitArray[7])
							AddAdditionalState(XStateClass.Failure, "Напряжение питания устройства не в норме");
						break;

					case XDriverType.AMP_1:
					case XDriverType.AM_1:
					case XDriverType.AM1_T:
						bitArray = new BitArray(new int[1] { additionalShortParameters[0] });
						if (bitArray[1])
							AddAdditionalState(XStateClass.Failure, "КЗ ШС");
						if (bitArray[2])
							AddAdditionalState(XStateClass.Failure, "Обрыв ШС");
						if (bitArray[7])
							AddAdditionalState(XStateClass.Failure, "Вскрытие корпуса");
						break;

					case XDriverType.MDU:
						bitArray = new BitArray(new int[1] { additionalShortParameters[1] });
						if (bitArray[0])
							AddAdditionalState(XStateClass.Failure, "Блокировка пуска");
						if (bitArray[1])
							AddAdditionalState(XStateClass.Failure, "Низкое напряжение питания привода");
						if (bitArray[2])
							AddAdditionalState(XStateClass.Failure, "Обрыв кнопки НОРМА");
						if (bitArray[3])
							AddAdditionalState(XStateClass.Failure, "КЗ кнопка НОРМА");
						if (bitArray[4])
							AddAdditionalState(XStateClass.Failure, "Обрыв кнопка ЗАЩИТА");
						if (bitArray[5])
							AddAdditionalState(XStateClass.Failure, "КЗ кнопки ЗАЩИТА");
						if (bitArray[6])
							AddAdditionalState(XStateClass.Failure, "Обрыв концевого выключателя ОТКРЫТО");
						if (bitArray[7])
							AddAdditionalState(XStateClass.Failure, "Обрыв концевого выключателя ЗАКРЫТО");
						if (bitArray[8 + 0])
							AddAdditionalState(XStateClass.Failure, "Обрыв цепи 2 ДВИГАТЕЛЯ");
						if (bitArray[8 + 1])
							AddAdditionalState(XStateClass.Failure, "Обрыв цепи 1 ДВИГАТЕЛЯ");
						if (bitArray[8 + 2])
							AddAdditionalState(XStateClass.Failure, "Замкнуты/разомкнуты оба концевика");
						if (bitArray[8 + 3])
							AddAdditionalState(XStateClass.Failure, "Превышение времени хода");
						break;

					case XDriverType.MRO_2:
						bitArray = new BitArray(new int[1] { additionalShortParameters[1] });
						if (bitArray[0])
							AddAdditionalState(XStateClass.Failure, "Обрыв кнопки ПУСК");
						if (bitArray[3])
							AddAdditionalState(XStateClass.Failure, "КЗ или обрыв выходной линии");
						if (bitArray[5])
							AddAdditionalState(XStateClass.Failure, "Напряжение питания устройства не в норме");
						if (bitArray[6])
							AddAdditionalState(XStateClass.Failure, "Обрыв кнопки СТОП");
						if (bitArray[8 + 0])
							AddAdditionalState(XStateClass.Failure, "Отсутствуют или испорчены сообщения для воспроизведения");
						if (bitArray[8 + 1])
							AddAdditionalState(XStateClass.Failure, "КЗ кнопки ПУСК");
						if (bitArray[8 + 2])
							AddAdditionalState(XStateClass.Failure, "КЗ кнопки СТОП");
						break;

					case XDriverType.MPT:
						bitArray = new BitArray(new int[1] { additionalShortParameters[0] });
						if (bitArray[2])
							AddAdditionalState(XStateClass.Failure, "Напряжение питания ШС ниже нормы");
						if (bitArray[3])
							AddAdditionalState(XStateClass.Failure, "Ошибка памяти");
						if (bitArray[5])
							AddAdditionalState(XStateClass.Failure, "КЗ ШС");
						if (bitArray[6])
							AddAdditionalState(XStateClass.Failure, "Обрыв ШС");
						if (bitArray[7])
							AddAdditionalState(XStateClass.Failure, "Напряжение питания устройства не в норме");

						bitArray = new BitArray(new int[1] { additionalShortParameters[1] });
						if (bitArray[0])
							AddAdditionalState(XStateClass.Failure, "КЗ выхода 1");
						if (bitArray[1])
							AddAdditionalState(XStateClass.Failure, "КЗ выхода 2");
						if (bitArray[2])
							AddAdditionalState(XStateClass.Failure, "КЗ выхода 3");
						if (bitArray[3])
							AddAdditionalState(XStateClass.Failure, "КЗ выхода 4");
						if (bitArray[4])
							AddAdditionalState(XStateClass.Failure, "КЗ выхода 5");

						bitArray = new BitArray(new int[1] { additionalShortParameters[2] });
						if (bitArray[0])
							AddAdditionalState(XStateClass.Failure, "Обрыв выхода 1");
						if (bitArray[1])
							AddAdditionalState(XStateClass.Failure, "Обрыв выхода 2");
						if (bitArray[2])
							AddAdditionalState(XStateClass.Failure, "Обрыв выхода 3");
						if (bitArray[3])
							AddAdditionalState(XStateClass.Failure, "Обрыв выхода 4");
						if (bitArray[4])
							AddAdditionalState(XStateClass.Failure, "Обрыв выхода 5");
						break;

					case XDriverType.FirePump:
                    case XDriverType.JockeyPump:
                    case XDriverType.DrainagePump:
						//bitArray = new BitArray(new int[1] { additionalShortParameters[0] });
						//    if (bitArray[8 + 0])
						//        AddAdditionalState(XStateClass.Failure, "Обрыв цепи питания двигателя");

						var pumpType = 0;
						if (xBase is XDevice)
						{
							XDevice device = xBase as XDevice;
							if (device != null && device.Driver.IsPump)
							{
								var pumpTypeProperty = device.Properties.FirstOrDefault(x => x.Name == "PumpType");
								if (pumpTypeProperty != null)
								{
									pumpType = pumpTypeProperty.Value;
								}
							}
						}
						bitArray = new BitArray(new int[1] { additionalShortParameters[3] });
						if (bitArray[1])
							AddAdditionalState(XStateClass.Failure, JournalStringsHelper.GetPumpFailureMessage("Обрыв входа 1", pumpType));
						if (bitArray[2])
							AddAdditionalState(XStateClass.Failure, JournalStringsHelper.GetPumpFailureMessage("КЗ входа 1", pumpType));
						if (bitArray[4])
							AddAdditionalState(XStateClass.Failure, JournalStringsHelper.GetPumpFailureMessage("Обрыв входа 2", pumpType));
						if (bitArray[5])
							AddAdditionalState(XStateClass.Failure, JournalStringsHelper.GetPumpFailureMessage("КЗ входа 2", pumpType));
						if (bitArray[7])
							AddAdditionalState(XStateClass.Failure, JournalStringsHelper.GetPumpFailureMessage("Обрыв входа 3", pumpType));
						if (bitArray[8 + 0])
							AddAdditionalState(XStateClass.Failure, JournalStringsHelper.GetPumpFailureMessage("КЗ входа 3", pumpType));
						//if (bitArray[8 + 2])
						//    AddAdditionalState(XStateClass.Failure, StringHelper.GetPumpFailureMessage("Обрыв входа 4", addressOnShleif));
						//if (bitArray[8 + 3])
						//    AddAdditionalState(XStateClass.Failure, StringHelper.GetPumpFailureMessage("КЗ входа 4", addressOnShleif));

						bitArray = new BitArray(new int[1] { additionalShortParameters[4] });
						if (!bitArray[3])
							AddAdditionalState(XStateClass.Failure, "Вскрытие корпуса");
						if (!bitArray[8 + 0])
							AddAdditionalState(XStateClass.Failure, "Не задан тип");
						if (!bitArray[8 + 2])
							AddAdditionalState(XStateClass.Failure, "Отказ ПН");
						if (!bitArray[8 + 3])
							AddAdditionalState(XStateClass.Failure, "Отказ ШУН");
						break;

					case XDriverType.Valve:
						//bitArray = new BitArray(new int[1] { additionalShortParameters[0] });
						//if (bitArray[7])
						//    AddAdditionalState(XStateClass.Failure, "Обрыв цепи питания двигателя");

						bitArray = new BitArray(new int[1] { additionalShortParameters[3] });
						if (bitArray[1])
							AddAdditionalState(XStateClass.Failure, "Обрыв концевого выключателя ОТКРЫТО");
						if (bitArray[2])
							AddAdditionalState(XStateClass.Failure, "КЗ концевого выключателя ОТКРЫТО");
						if (bitArray[4])
							AddAdditionalState(XStateClass.Failure, "Обрыв муфтового выключателя ОТКРЫТО");
						if (bitArray[5])
							AddAdditionalState(XStateClass.Failure, "КЗ муфтового выключателя ОТКРЫТО");
						if (bitArray[7])
							AddAdditionalState(XStateClass.Failure, "Обрыв концевого выключателя ЗАКРЫТО");
						if (bitArray[8 + 0])
							AddAdditionalState(XStateClass.Failure, "КЗ концевого выключателя ЗАКРЫТО");
						if (bitArray[8 + 2])
							AddAdditionalState(XStateClass.Failure, "Обрыв муфтового выключателя ЗАКРЫТО");
						if (bitArray[8 + 3])
							AddAdditionalState(XStateClass.Failure, "КЗ муфтового выключателя ЗАКРЫТО");
						if (bitArray[8 + 4])
							AddAdditionalState(XStateClass.Failure, "Обрыв кнопки Открыть УЗЗ/Закрыть УЗЗ");
						if (bitArray[8 + 5])
							AddAdditionalState(XStateClass.Failure, "КЗ кнопки Открыть УЗЗ/Закрыть УЗЗ");
						if (bitArray[8 + 6])
							AddAdditionalState(XStateClass.Failure, "Обрыв кнопки СТОП УЗЗ");
						if (bitArray[8 + 7])
							AddAdditionalState(XStateClass.Failure, "КЗ кнопки СТОП УЗЗ");

						bitArray = new BitArray(new int[1] { additionalShortParameters[4] });
						if (!bitArray[3])
							AddAdditionalState(XStateClass.Failure, "Вскрытие корпуса");
						if (!bitArray[5])
							AddAdditionalState(XStateClass.Failure, "Превышение времени хода");
						if (!bitArray[6])
							AddAdditionalState(XStateClass.Failure, "КВ/МВ");
						if (!bitArray[8 + 1])
							AddAdditionalState(XStateClass.Failure, "Не задан режим");
						if (!bitArray[8 + 3])
							AddAdditionalState(XStateClass.Failure, "Отказ ШУЗ");
						break;

					case XDriverType.Battery:
						bitArray = new BitArray(new int[1] { additionalShortParameters[0] / 256 });
						if (bitArray[1])
							AddAdditionalState(XStateClass.Failure, "Отсутствие сетевого напряжения");

						bitArray = new BitArray(new int[1] { additionalShortParameters[0] % 256 });
						if (!bitArray[0] && bitArray[1])
							AddAdditionalState(XStateClass.Failure, "КЗ Выхода 1");
						if (bitArray[0] && !bitArray[1])
							AddAdditionalState(XStateClass.Failure, "Перегрузка Выхода 1");
						if (bitArray[0] && bitArray[1])
							AddAdditionalState(XStateClass.Failure, "Напряжение Выхода 1 выше нормы");
						if (!bitArray[2] && bitArray[3])
							AddAdditionalState(XStateClass.Failure, "КЗ Выхода 2");
						if (bitArray[2] && !bitArray[3])
							AddAdditionalState(XStateClass.Failure, "Перегрузка Выхода 2");
						if (bitArray[2] && bitArray[3])
							AddAdditionalState(XStateClass.Failure, "Напряжение Выхода 2 выше нормы");
						if (!bitArray[4] && bitArray[5])
							AddAdditionalState(XStateClass.Failure, "АКБ 1 Разряд");
						if (bitArray[4] && !bitArray[5])
							AddAdditionalState(XStateClass.Failure, "АКБ 1 Глубокий Разряд");
						if (bitArray[4] && bitArray[5])
							AddAdditionalState(XStateClass.Failure, "АКБ 1 Отсутствие");
						if (!bitArray[6] && bitArray[7])
							AddAdditionalState(XStateClass.Failure, "АКБ 2 Разряд");
						if (bitArray[6] && !bitArray[7])
							AddAdditionalState(XStateClass.Failure, "АКБ 2 Глубокий Разряд");
						if (bitArray[6] && bitArray[7])
							AddAdditionalState(XStateClass.Failure, "АКБ 2 Отсутствие");
						break;
				}

                switch (driverType)
                {
                    case XDriverType.RSR2_MVK8:
                    case XDriverType.RSR2_RM_1:
                    case XDriverType.RSR2_Bush:
                        OnDelay = additionalShortParameters[0];
                        HoldDelay = additionalShortParameters[1];
                        OffDelay = additionalShortParameters[2];
                        break;
                }
			}
			else
			{
				if (TypeNo == 0x101 || TypeNo == 0x106)
				{
					OnDelay = additionalShortParameters[0];
					HoldDelay = additionalShortParameters[1];
				}
			}
		}
Example #23
0
		public static OperationResult<bool> GKSetSingleParameter(XBase xBase, List<byte> parameterBytes)
		{
			var error = ParametersHelper.SetSingleParameter(xBase, parameterBytes);
			return new OperationResult<bool>() { HasError = error != null, Error = error, Result = true };
		}
Example #24
0
		public static void SendControlCommand(XBase xBase, XStateBit stateBit, string description)
		{
			var code = 0x80 + (int)stateBit;
			SendControlCommand(xBase, (byte)code, description);
		}
Example #25
0
		public void AddArgumentPutBit(byte bit, XBase xBase)
		{
			Add(FormulaOperationType.PUTBIT,
				(byte)bit,
				xBase.GKDescriptorNo);
		}
Example #26
0
		public static OperationResult<List<XProperty>> GKGetSingleParameter(XBase xBase)
		{
			return ParametersHelper.GetSingleParameter(xBase);
		}
		public static void LinkXBases(XBase inputXBase, XBase outputXBase)
		{
			AddInputOutputObject(inputXBase.InputXBases, outputXBase);
			AddInputOutputObject(outputXBase.OutputXBases, inputXBase);
		}
Example #28
0
		public static void GKReset(XBase xBase, string userName)
		{
			Watcher.SendControlCommand(xBase, XStateBit.Reset, "Сброс");
            AddGKMessage(EventName.Команда_оператора, EventDescription.Сброс, xBase, userName);
		}
		static void LinkDeviceLogic(XBase xBase, List<XClause> clauses)
		{
			foreach (var clause in clauses)
			{
				foreach (var zone in clause.Zones)
				{
					LinkXBases(xBase, zone);
				}
				foreach (var clauseDevice in clause.Devices)
				{
					LinkXBases(xBase, clauseDevice);
				}
				foreach (var direction in clause.Directions)
				{
					LinkXBases(xBase, direction);
				}
			}
		}
Example #30
0
		public static void GKSetAutomaticRegime(XBase xBase, string userName)
		{
			Watcher.SendControlCommand(xBase, XStateBit.SetRegime_Automatic, "Перевод в автоматический режим");
            AddGKMessage(EventName.Команда_оператора, EventDescription.Перевод_в_автоматический_режим, xBase, userName);
		}