Скрипт для группы разделов.

FORUM_NAME: АРМ Орион Про версии до 1.20
Описание: АРМ "Орион Про" — пакет программного обеспечения для аппаратно-программного комплекса ИСО "Орион", на котором реализуются системы охранной сигнализации, контроля и управления доступом, охранного видеонаблюдения, автоматика противопожарных систем, сопряженные с инженерными системами объектов.
Справочная информация, руководства для АРМ Орион Про версии до 1.20
Модератор: Модераторы
Vladimir -
Автор темы
Vladimir -
Автор темы
Репутация: 0
Сообщения: 6
Зарегистрирован: 01.02.2013
С нами: 10 лет 7 месяцев
Профессия: наладчик

Непрочитанное сообщение #1 Vladimir - » 01.02.2013, 12:47

Добрый день! Никак не разрешу проблему и прошу Вас мне помочь. Необходимо составить скрипт выполняющий следующее:
Есть группа разделов №11. В ней два раздела №№ 111 и 121 в которых по одному пожарному шлейфу. Имеется еще один раздел №90 с технологическим шлейфом, и прибор КПБ с адресом 11.
Необходимо посредством скрипта при сработке ТОЛЬКО обоих разделов группы в состояние "пожар" включить реле 1 прибора адрес 11 (КПБ) при условии что технологический шлейф в норме.
Уже два дня пытаю свою голову - не получается.

Vladimir -
Автор темы
Vladimir -
Автор темы
Репутация: 0
Сообщения: 6
Зарегистрирован: 01.02.2013
С нами: 10 лет 7 месяцев
Профессия: наладчик

Непрочитанное сообщение #2 Vladimir - » 02.02.2013, 12:33

как приятно видеть столько отзывчивых людей :( . если бы не безысходость разве я отягащал бы вас своей проблемой? неужели нет человека который мог бы мне помочь?

AlexRuden
AlexRuden
Возраст: 45
Репутация: 0
Сообщения: 1091
Зарегистрирован: 13.01.2012
С нами: 11 лет 8 месяцев
Профессия: Наёмник.
Откуда: Россия.

Непрочитанное сообщение #3 AlexRuden » 02.02.2013, 14:20

Vladimir - писал(а):Уже два дня пытаю свою голову - не получается.
Вы хоть покажите, что за 2 дня наломали))
Сделать то можно такой скрипт, вариантов несколько.

Vladimir - писал(а):В ней два раздела №№ 111 и 121 в которых по одному пожарному шлейфу. Имеется еще один раздел №90 с технологическим шлейфом

И вообщето это стандартная тактика АСПТ
---
Вот вам кусок кода для события ПОЖАР гр. раздела, остальное надеюсь додумаете сами ))

Спойлер

Код: Выделить всё

Если ( Разделы1.ПолучитьПоИндексу( 111 ).Состояние() == "ПОЖАР" ) ИЛИ ( Разделы1.ПолучитьПоИндексу( 121 ).Состояние() == "ПОЖАР" ) Тогда
  Счетчик1 = 0;
  Пока Счетчик1 < 1 Цикл
    Состояние1 = 0;
    Если Разделы1.ПолучитьПоИндексу( 111 ).Состояние() == "ПОЖАР" Тогда
       Состояние1 = Состояние1 + 1;
    КонецЕсли;
    Если Разделы1.ПолучитьПоИндексу( 121 ).Состояние() == "ПОЖАР" Тогда
       Состояние1 = Состояние1 + 1;
    КонецЕсли;
    Если ( Состояние1 == 2 )И( Разделы1.ПолучитьПоИндексу( 90 ).Состояние() == "ВОССТАНОВЛЕНИЕ ТЕХНОЛОГИЧЕСКОГО" ) Тогда
      ВыходыКПБ.ПолучитьПоАдресу( "?.?.11.1" ).Включить( "0" );
      //Счетчик1 = 1;
      Прервать;
    КонецЕсли;
    Если  Состояние1 == 0 Тогда
      //Счетчик1 = 1;
      Прервать;
    КонецЕсли;
   КонецЦикла;
КонецЕсли;
Курите man'ы , господа.

Vladimir -
Автор темы
Vladimir -
Автор темы
Репутация: 0
Сообщения: 6
Зарегистрирован: 01.02.2013
С нами: 10 лет 7 месяцев
Профессия: наладчик

Непрочитанное сообщение #4 Vladimir - » 02.02.2013, 15:37

Спасибо други! Собственно я сам по себе ничего не сделал. все пытался на основе готового соорудить что то под себя. судя по предложенному варианту я творил полную ерунду. Спасибо вам огромное. В понедельник сделаю испытание. Если что не пойдет думаю также обратится в вашему опыту.

Vladimir -
Автор темы
Vladimir -
Автор темы
Репутация: 0
Сообщения: 6
Зарегистрирован: 01.02.2013
С нами: 10 лет 7 месяцев
Профессия: наладчик

Непрочитанное сообщение #5 Vladimir - » 02.02.2013, 15:57

AlexRuden писал(а):
Vladimir - писал(а):Уже два дня пытаю свою голову - не получается.
Вы хоть покажите, что за 2 дня наломали))
Сделать то можно такой скрипт, вариантов несколько.

Vladimir - писал(а):В ней два раздела №№ 111 и 121 в которых по одному пожарному шлейфу. Имеется еще один раздел №90 с технологическим шлейфом

И вообщето это стандартная тактика АСПТ
---
Вот вам кусок кода для события ПОЖАР гр. раздела, остальное надеюсь додумаете сами ))

Если бы я все переменные смог додумать самостоятельно - то я и скрипт смог бы написать. Но я реально в этом НУБ.



Спойлер

Код: Выделить всё

Если ( Разделы1.ПолучитьПоИндексу( 111 ).Состояние() == "ПОЖАР" ) ИЛИ ( Разделы1.ПолучитьПоИндексу( 121 ).Состояние() == "ПОЖАР" ) Тогда
  Счетчик1 = 0;
  Пока Счетчик1 < 1 Цикл
    Состояние1 = 0;
    Если Разделы1.ПолучитьПоИндексу( 111 ).Состояние() == "ПОЖАР" Тогда
       Состояние1 = Состояние1 + 1;
    КонецЕсли;
    Если Разделы1.ПолучитьПоИндексу( 121 ).Состояние() == "ПОЖАР" Тогда
       Состояние1 = Состояние1 + 1;
    КонецЕсли;
    Если ( Состояние1 == 2 )И( Разделы1.ПолучитьПоИндексу( 90 ).Состояние() == "ВОССТАНОВЛЕНИЕ ТЕХНОЛОГИЧЕСКОГО" ) Тогда
      ВыходыКПБ.ПолучитьПоАдресу( "?.?.11.1" ).Включить( "0" );

[b]? - номер ком-порта  - у меня №1.
второй ? номер адреса компа - это адрес 127 ?[/b]
то есть должно получиться  ВыходыКПБ.ПолучитьПоАдресу( "1.127.11.1" ).Включить( "0" );   ?




      //Счетчик1 = 1;
      Прервать;
    КонецЕсли;
    Если  Состояние1 == 0 Тогда
      //Счетчик1 = 1;
      Прервать;
    КонецЕсли;
   КонецЦикла;
КонецЕсли;

AlexRuden
AlexRuden
Возраст: 45
Репутация: 0
Сообщения: 1091
Зарегистрирован: 13.01.2012
С нами: 11 лет 8 месяцев
Профессия: Наёмник.
Откуда: Россия.

Непрочитанное сообщение #6 AlexRuden » 02.02.2013, 16:08

Vladimir - писал(а):Если бы я все переменные смог додумать самостоятельно - то я и скрипт смог бы написать. Но я реально в этом НУБ.

Код: Выделить всё

      ВыходыКПБ.ПолучитьПоАдресу( "?.?.11.1" ).Включить( "0" );

? - номер ком-порта - у меня №1.
второй ? номер адреса компа - это адрес 127 ?

то есть должно получиться ВыходыКПБ.ПолучитьПоАдресу( "1.127.11.1" ).Включить( "0" ); ?
Тогда кто вам поручил писать сценарий?)) Остается только платить бабло)) хехе

(компорт).(адрес пульта rs485).(адрес КПБ).(номер выхода)

Спойлер

Код: Выделить всё

Сценарий
   Переменные
      Перем Счетчик1;
      Перем ВыходыКПБ;
      Перем Разделы1;
      Перем Состояние1;      
НачалоСценария
   ВыходыКПБ    = СоздатьОбъект( "Выходы" );
   Разделы1    = СоздатьОбъект("Разделы");

Если ( Разделы1.ПолучитьПоИндексу( 111 ).Состояние() == "ПОЖАР" ) ИЛИ ( Разделы1.ПолучитьПоИндексу( 121 ).Состояние() == "ПОЖАР" ) Тогда
  Счетчик1 = 0;
  Пока Счетчик1 < 1 Цикл
    Состояние1 = 0;
    Если Разделы1.ПолучитьПоИндексу( 111 ).Состояние() == "ПОЖАР" Тогда
       Состояние1 = Состояние1 + 1;
    КонецЕсли;
    Если Разделы1.ПолучитьПоИндексу( 121 ).Состояние() == "ПОЖАР" Тогда
       Состояние1 = Состояние1 + 1;
    КонецЕсли;
    Если ( Состояние1 == 2 )И( Разделы1.ПолучитьПоИндексу( 90 ).Состояние() == "ВОССТАНОВЛЕНИЕ ТЕХНОЛОГИЧЕСКОГО" ) Тогда
      ВыходыКПБ.ПолучитьПоАдресу( "?.?.11.1" ).Включить( "0" );
      //Счетчик1 = 1;
      Прервать;
    КонецЕсли;
    Если  Состояние1 == 0 Тогда
      //Счетчик1 = 1;
      Прервать;
    КонецЕсли;
   КонецЦикла;
КонецЕсли;
КонецСценария
Курите man'ы , господа.

Vladimir -
Автор темы
Vladimir -
Автор темы
Репутация: 0
Сообщения: 6
Зарегистрирован: 01.02.2013
С нами: 10 лет 7 месяцев
Профессия: наладчик

Непрочитанное сообщение #7 Vladimir - » 02.02.2013, 17:10

тот кто поручил написать сценарий собственно проектировщик. я бы ему руки повыдергивал за такой проект. вс можно было сделать проще и дешевле, а теперь приходится выпендриваться. Спасибо еще раз за посильную помощь. Завтра у меня получается рабочий день. пойду пробовать.

AlexRuden
AlexRuden
Возраст: 45
Репутация: 0
Сообщения: 1091
Зарегистрирован: 13.01.2012
С нами: 11 лет 8 месяцев
Профессия: Наёмник.
Откуда: Россия.

Непрочитанное сообщение #8 AlexRuden » 02.02.2013, 23:15

Vladimir - писал(а):тот кто поручил написать сценарий собственно проектировщик. я бы ему руки повыдергивал за такой проект. вс можно было сделать проще и дешевле, а теперь приходится выпендриваться.
Я еще не встретил идеально продуманного проекта системы "Умный Дом", думается мне, что проектировщики не советуются с монтажниками и пусконаладчиками, а зачастую даже не выезжают на объект будущих работ.
Курите man'ы , господа.

AlexRuden
AlexRuden
Возраст: 45
Репутация: 0
Сообщения: 1091
Зарегистрирован: 13.01.2012
С нами: 11 лет 8 месяцев
Профессия: Наёмник.
Откуда: Россия.

Непрочитанное сообщение #9 AlexRuden » 08.02.2013, 21:09

Я смотрю тут тех.поддержка занимается плагиатством? )))

Тогда вот вам (тех.поддержке) скрипт, чтоб взяли как образец :-)

Спойлер

Код: Выделить всё


Сценарий
  Переменные
    Перем     Динамит;
    Перем     ВасяДелаетРазминирование;
    Перем     ЭквивалентТротила;
    Перем     Запал;
    Перем     МинноеПоле;
    Перем     ЧертоваМина;
    Перем     МинаВзорвалась;
    Перем     КрасныйИЛИсиний;
    Перем     ПоказательЖизниВаси;
    Перем     Взрыватель;
    Перем     Муляж;

НачалоСценария

    Запал = СоздатьОбъект("Выход");
    МинноеПоле = СоздатьОбъект("Раздел");
    КрасныйИЛИсиний = СоздатьОбъект("Шлейф");

    Динамит = "1.0.11.1";
    Взрыватель = "1.0.1.127";
    ВасяДелаетРазминирование = "ДА";
    МинаВзорвалась = "Нет";
    ЭквивалентТротила = 15;
    ЧертоваМина = 666;
    Муляж = "Нет";

    Пока ВасяДелаетРазминирование <> МинаВзорвалась  Цикл
      Если    ( Лев( МинноеПоле.ПолучитьПоИндексу( ЧертоваМина - 555 ).Состояние() , 1) +
                Сред( МинноеПоле.ПолучитьПоИндексу((ЧертоваМина+60)/6).Состояние() , 2 , 1) +
                Сред( МинноеПоле.ПолучитьПоИндексу( ЧертоваМина + 37 ).Состояние() , 3 , 1) +
                Сред( МинноеПоле.ПолучитьПоИндексу( ЧертоваМина + 38 ).Состояние() , 3 , 1 ) +
                Сред( МинноеПоле.ПолучитьПоИндексу( ЧертоваМина + 39 ).Состояние() , 6 , 1 ) +
                Сред( МинноеПоле.ПолучитьПоИндексу( ЧертоваМина + 5*8 ).Состояние() , 5 , 1 ) + "Ь !!!" ) == "ПОССАТЬ !!!"
      Тогда
         Для ПоказательЖизниВаси = 1 По 100 Цикл
             Если    ( Сред( КрасныйИЛИсиний.ПолучитьПоАдресу( Взрыватель ).Состояние() , 11 , 1 ) +
                       Сред( КрасныйИЛИсиний.ПолучитьПоАдресу( Взрыватель ).Состояние() , 3 , 2 ) + "П" )  == "ТРУП"
             Тогда
               Запал.ПолучитьПоАдресу( Динамит ).Включить( Строка(ЭквивалентТротила) );
               МинаВзорвалась = "ДА";
               Прервать;
             КонецЕсли;
             Задержка( 1800 );
         КонецЦикла;
       Иначе
         Муляж = "?";
         Если  ( Сред( МинноеПоле.ПолучитьПоИндексу( ЧертоваМина / 6 ).Состояние() , 3 , 1 ) + "ОПА" )  <> "ЖОПА"  Тогда
             Муляж = "Д";
         КонецЕсли;
         Если  ( "В" + Сред( МинноеПоле.ПолучитьПоИндексу( ( ЧертоваМина + 60 ) / 6 ).Состояние() , 4 , 1 ) + "СЕ" )  <> "ВАСЕ"  Тогда
             Муляж = Муляж + "А";
         КонецЕсли;
         Если  Муляж == ВасяДелаетРазминирование  Тогда
             Прервать;
         КонецЕсли;
       КонецЕсли;
    КонецЦикла;
КонецСценария
Вы всё ещё пользуетуесь стандартными тактиками? - тогда мы идем к Вам :hi_hi_hi:

Такие подлянки делаются в 1000 строк (универсальные скрипты) . Работать всё будет, но разберись ;;-)))
Курите man'ы , господа.

Vladimir -
Автор темы
Vladimir -
Автор темы
Репутация: 0
Сообщения: 6
Зарегистрирован: 01.02.2013
С нами: 10 лет 7 месяцев
Профессия: наладчик

Непрочитанное сообщение #10 Vladimir - » 15.02.2013, 12:23

Читаю. Разбираюсь. Объект то сдали но мне на будующее. Все таки классно у тебя этот скрипт выглядит!!! Я его распечатаю и на стенку повешу!!

AlexRuden
AlexRuden
Возраст: 45
Репутация: 0
Сообщения: 1091
Зарегистрирован: 13.01.2012
С нами: 11 лет 8 месяцев
Профессия: Наёмник.
Откуда: Россия.

Непрочитанное сообщение #11 AlexRuden » 15.02.2013, 20:02

Я вот думаю на суд общественности выложить уни-скрипт, обрабатывающий события "Пожар", "Два пожара", "Нарушение тех.ШС", для запуска систем дымоудаления, оповещения, эвакуации, пожаротушения. Скрипт требует правильной структуры БД. Если есть интерес и будут мнения и предложения по унификации и модернизации скрипта , то буду рад общению по этому вопросу)
Курите man'ы , господа.


  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «АРМ Орион Про версии до 1.20»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 4 гостя

forum-bolid.ru : Отказ от ответственности