Читал, честно, но к сожалению боженька не дал столько разума, сколько необходимо для осмысления прочитанногоlamyk писал(а):почитайте про сценарии пульта с2000 м вер 2,06
andrew717 писал(а):ну же, народ.
Пока пришлось пропустить клапан через 2 реле. первое реле (отрабатывает сигнал пожар) подает питание, второе реле переключает это питание на привод клапана по средствам технологического шлейфа (смк))
но блин, чтобы весь объект перевести на такую систему, надо еще около 70 с2000сп1 исп1 закупить Оо
Так что думаем, помогаем.
С меня пиво с чипсами за помощь ))))
AlexRuden писал(а):andrew717 писал(а):ну же, народ.
Пока пришлось пропустить клапан через 2 реле. первое реле (отрабатывает сигнал пожар) подает питание, второе реле переключает это питание на привод клапана по средствам технологического шлейфа (смк))
но блин, чтобы весь объект перевести на такую систему, надо еще около 70 с2000сп1 исп1 закупить Оо
Так что думаем, помогаем.
С меня пиво с чипсами за помощь ))))
Так вам нужно скрипт для пульта или для ОрионаПро ? В пульте может памяти не хватить для сценариев, если много клапанов.
Хотя в обоих случаях можно реализовать.
Для ОрионаПро всё просто - создаёте сервисные разделы и группы, скрываете их от лишних глаз и при нужных событиях парсите либо по названиям, либо по пользовательским ИД. Да как угодно.
Тут не совсем понятно какова роль СМК на двери, что за дверь? Напишите алгоритм на словах, будет вам образец скрипта. Например: Пожар (ДваПожара) в разделе №?, проверить что-то(?), включить реле.andrew717 писал(а):При сигнале пожар включается двигатель подпора воздуха, и соответственно от давления дверь не открыть (чуточку конечно она поддается). Для этого на двери стоит смк. В общем при сигнале пожара и только при нем, при сработке смк нужно открыть этот клапан. Может есть у кого скрипт управления приборов с 2 условиями? или кто просто подскажет как это написать!?
Код: Выделить всё
СобытиеОрион = ПолучитьСобытие();
Если ПустоеЗначение( СобытиеОрион )
Тогда
ЗагрузкаЯдра = "не первый";
Если Не ПустоеЗначение( ЯдроОрион.Шлейфы().Элемент( 0 ).Тег() )
Тогда
Если ЯдроОрион.Скрипты().ПолучитьПоИД( ИДСкрипта ).Тег() == 1
Тогда
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - Вызвано прерывание работы всех систем." , 2 );
ЯдроОрион.Скрипты().ПолучитьПоИД( ИДСкрипта ).ПоместитьВТег( 0 );
КонецЕсли;
Иначе
Сообщить( "Первый запуск ядра. Делаем проверку структуры БД и запоминаем параметры." , 0 );
Сообщить( " ;) " , 0 );
ЯдроОрион.Скрипты().ПолучитьПоИД( ИДСкрипта ).ПоместитьВТег( 0 );
ЗагрузкаЯдра = "первый";
КонецЕсли;
Иначе
ЗагрузкаЯдра = "не первый";
Пока ЯдроОрион.Скрипты().ПолучитьПоИД( ИДСкрипта ).Тег() <> 1
Цикл
Задержка( 500 );
КонецЦикла;
КонецЕсли;
КодСобытия = СобытиеОрион.Событие().ИД(); //
НазваниеСобытия = СобытиеОрион.Событие().Название();
Сообщить( "Код события : " + Строка( КодСобытия ), 0 );
Сообщить( "Название события : ' " + НазваниеСобытия + " ' ", 0 );
Если КодСобытия == 37 // "ПОЖАР"
Тогда
//- Нажали Ручник, проверим
...
Если КодСобытия == 36 // "НАРУШЕНИЕ ТЕХНОЛОГИЧЕСКОГО"
Тогда
.....
Если ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Название() == АббревиатураПодпорДыма
Тогда
Если ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().КоличествоЭлементов() > 0
Тогда
// Разрешено делать ВСЕ
// Откроем клапаны ПД везде
//-
Для Счетчик1 = 0 По ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().КоличествоЭлементов() - 1
Цикл
Если Лев( ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Название() , 8 ) == "Питание."
Тогда
Для Счетчик2 = 0 По ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().КоличествоЭлементов() - 1
Цикл
Если ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).ТипЭлемента() == "ВЫХОД"
Тогда
Если ТактикаРелеРабочийРежимПДКлапаны == "включить"
Тогда
ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).Включить( "0" );
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - ' " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Название() + " ' - Реле включили : " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).Адрес() , 0 );
Если ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).ЕстьСостояние( 401 ) == ИСТИНА
Тогда
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - ' " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Название() + " ' - Реле включено : " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).Адрес() , 0 );
КонецЕсли;
Иначе
ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).Выключить( "0" );
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - ' " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Название() + " ' - Реле включили : " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).Адрес() , 0 );
Если ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).ЕстьСостояние( 401 ) == ИСТИНА
Тогда
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - ' " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Название() + " ' - Реле включено : " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик2 ).Адрес() , 0 );
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
// ЯдроОрион.Шлейфы().Элемент( 5 ).ПоместитьВТег( 2 ); // Выполнено АСДУ.ПД.ВСЕ
Иначе
// АСДУ.ПД.ВСЕ - пустой
// Откроем клапаны ПД в отсеке
//-
Задержка( 500 );
КонецЕсли;
КонецЕсли;
Для Счетчик = 0 По ЯдроОрион.ГруппыРазделов().КоличествоЭлементов() - 1
Цикл
Если ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Название() == АббревиатураПодпорДыма
Тогда
Если ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().КоличествоЭлементов() > 0
Тогда
// Разрешено делать ВСЕ
// Включим двигатели вентиляторов ПД везде
//-
Для Счетчик1 = 0 По ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().КоличествоЭлементов() - 1
Цикл
Если Лев( ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Название() , 11 ) == "Вентилятор."
Тогда
Для Счетчик2 = 0 По ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().КоличествоЭлементов() - 1
Цикл
// если есть важный, то обработаем
Если ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик2 ).Название() == ( "Важный." + Прав( ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Название() , ДлинаСтроки( ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Название() ) - 11 ) )
Тогда
// найден важный
// проверить состояние ВАЖНОГО
Если ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик2 ).ЗначениеСостояния() == ЗначениеСостоянияКлапанаРабочийРежим
Тогда
// разрешено запускать двигатель
Для Счетчик3 = 0 По ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().КоличествоЭлементов() - 1
Цикл
Если ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик3 ).Название() == ( "Клапан." + Прав( ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Название() , ( ДлинаСтроки( ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Название() ) - 11 ) ) )
Тогда
// есть ли хотябы один открытый клапан
Для Счетчик4 = 0 По ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик3 ).Зоны().КоличествоЭлементов() - 1
Цикл
Если ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик3 ).Зоны().Элемент( Счетчик4 ).ТипЭлемента() == "ШЛЕЙФ"
Тогда
Если ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик3 ).Зоны().Элемент( Счетчик4 ).ЗначениеСостояния() == ЗначениеСостоянияКлапанаРабочийРежим
Тогда
// включить реле
Для Счетчик5 = 0 По ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().КоличествоЭлементов() - 1
Цикл
Если ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик5 ).ТипЭлемента() == "ВЫХОД"
Тогда
Если ТактикаРелеВключениеДвигателейПД == "включить"
Тогда
ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик5 ).Включить( "0" );
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - ' " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Название() + " ' - Реле включили : " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик5 ).Адрес() , 0 );
Если ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик5 ).ЕстьСостояние( 401 ) == ИСТИНА
Тогда
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - ' " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Название() + " ' - Реле включено : " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик5 ).Адрес() , 0 );
КонецЕсли;
Иначе
ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик5 ).Выключить( "0" );
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - ' " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Название() + " ' - Реле включили : " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик5 ).Адрес() , 0 );
Если ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик5 ).ЕстьСостояние( 401 ) == ИСТИНА
Тогда
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - ' " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Название() + " ' - Реле включено : " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик5 ).Адрес() , 0 );
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Прервать;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Прервать;
КонецЕсли;
КонецЦикла;
Иначе
// запрещено запускать двигатель
Сообщить( "Запрет включения двигателя '" + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Название() + "'", 2 );
КонецЕсли;
Прервать;
Иначе
Если Счетчик2 == ( ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().КоличествоЭлементов() - 1 )
Тогда
// Не найден важний
Для Счетчик3 = 0 По ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().КоличествоЭлементов() - 1
Цикл
Если ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик3 ).Название() == ( "Клапан." + Прав( ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Название() , ( ДлинаСтроки( ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Название() ) - 11 ) ) )
Тогда
// есть ли хотябы один открытый клапан
Для Счетчик4 = 0 По ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик3 ).Зоны().КоличествоЭлементов() - 1
Цикл
Если ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик3 ).Зоны().Элемент( Счетчик4 ).ТипЭлемента() == "ШЛЕЙФ"
Тогда
Если ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик3 ).Зоны().Элемент( Счетчик4 ).ЗначениеСостояния() == ЗначениеСостоянияКлапанаРабочийРежим
Тогда
// включить реле
Для Счетчик5 = 0 По ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().КоличествоЭлементов() - 1
Цикл
Если ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик5 ).ТипЭлемента() == "ВЫХОД"
Тогда
Если ТактикаРелеВключениеДвигателейПД == "включить"
Тогда
ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик5 ).Включить( "0" );
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - ' " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Название() + " ' - Реле включили : " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик5 ).Адрес() , 0 );
Если ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик5 ).ЕстьСостояние( 401 ) == ИСТИНА
Тогда
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - ' " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Название() + " ' - Реле включено : " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик5 ).Адрес() , 0 );
КонецЕсли;
Иначе
ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик5 ).Выключить( "0" );
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - ' " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Название() + " ' - Реле включили : " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик5 ).Адрес() , 0 );
Если ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик5 ).ЕстьСостояние( 401 ) == ИСТИНА
Тогда
Сообщить( ТекущаяДата() + " " + ТекущееВремя() + " - ' " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Название() + " ' - Реле включено : " + ЯдроОрион.ГруппыРазделов().Элемент( Счетчик ).Разделы().Элемент( Счетчик1 ).Зоны().Элемент( Счетчик5 ).Адрес() , 0 );
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Прервать;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
// ЯдроОрион.Шлейфы().Элемент( 5 ).ПоместитьВТег( 2 ); // Выполнено АСДУ.ПД.ВСЕ
Иначе
// АСДУ.ПД.ВСЕ - пустой
// Включим двигатели вентиляторов ПД в отсеке
//-
Задержка( 500 );
КонецЕсли;
Ну и так далее.....
Воу-воу, полегче :) Сейчас выскажу крамольную мысль, но дело в том, что АРМ Орион Про не имеет права управлять какой-бы то ни было пожарной автоматикой по причине отсутствия у АРМ пожарного сертификата. АРМ это, всего-навсего, очень продвинутый блок индикации, который показывает место возгорания с точностью до датчика и, таким образом, позволяет свести к минимуму время обнаружения места возгорания. На этом его функции заканчиваются. А запускать автоматику должен только сетевой контроллер С2000М или какой-либо ПКП при локальном управлении. И это совершенно логично и правильно, если принять во внимание, что комп с Орион Про может банально зависнуть, а может его просто выключит кто-нибудь. И ничего не сработает.А вся автоматика обязана сработать даже в том случае, если комп вообще выключен. При общении с техподдержкой Болида мне заявили, что в будущих версиях АРМ Орион Про будет исключена возможность централизованного управления тактиками реле. То есть, если сейчас это сделать можно, хоть Болид и настоятельно не рекомендует так делать, то в будущем даже гипотетически не получится. Так что прекращайте играться с АРМ. Учитесь реализовывать любые алгоритмы работы при помощи стандартного С2000М и прочих ПКП. Благо, стандартными средствами можно сделать все, что угодно. Да, в АРМ это проще. Иногда даже намного проще, но это неграмотно.Нужно для орион про.
Mozgolom писал(а):Воу-воу, полегче :)Нужно для орион про.
- Спойлер
- Сейчас выскажу крамольную мысль, но дело в том, что АРМ Орион Про не имеет права управлять какой-бы то ни было пожарной автоматикой по причине отсутствия у АРМ пожарного сертификата. АРМ это, всего-навсего, очень продвинутый блок индикации, который показывает место возгорания с точностью до датчика и, таким образом, позволяет свести к минимуму время обнаружения места возгорания. На этом его функции заканчиваются. А запускать автоматику должен только сетевой контроллер С2000М или какой-либо ПКП при локальном управлении. И это совершенно логично и правильно, если принять во внимание, что комп с Орион Про может банально зависнуть, а может его просто выключит кто-нибудь. И ничего не сработает.А вся автоматика обязана сработать даже в том случае, если комп вообще выключен. При общении с техподдержкой Болида мне заявили, что в будущих версиях АРМ Орион Про будет исключена возможность централизованного управления тактиками реле. То есть, если сейчас это сделать можно, хоть Болид и настоятельно не рекомендует так делать, то в будущем даже гипотетически не получится. Так что прекращайте играться с АРМ. Учитесь реализовывать любые алгоритмы работы при помощи стандартного С2000М и прочих ПКП. Благо, стандартными средствами можно сделать все, что угодно. Да, в АРМ это проще. Иногда даже намного проще, но это неграмотно.
Вернуться в «АРМ Орион Про версии до 1.20»
Сейчас этот раздел просматривают: 3 гостя
Боты: Bing [Bot]