партнерский раздел
ФорумЭксплуатацияПомогите правильно реализовать задачку

Эксплуатация » Помогите правильно реализовать задачку

Уважаемые форумчане! Позвольте подкинуть задачку)) Есть вопрос реализации технического, а точнее программного алгоритма работы. Суть в следующем:
Имеется шлюз, для доступа в спец помещение. Вход в шлюз, далее вход из шлюза в спецпомещение, а так же (обратное напрвление) выход из помещения в шлюз и из шлюза наружу осуществляется по считывателям. Никаких кнопок. Имеется 2 типа карт доступа: 1 - карта администратора и 2 - карта гостя. Карт каждого типа - несколько, ну в районе 10-15шт. Необходимо создать алгоритм: если никого нет внутри спецпомещения - карты гостя не имеют право зайти даже в шлюз. Как только карта администратора вошла в спецпомещение - карты гостя разблокируются и получают право прохода (и входа и выхода). И еще одно условие - пока в спецпомещении находится хоть одна карта гостя - последняя карта администратора (если их там было несколько) должна блокироваться на выход из спецпомещения. По сути смысл в двух словах - гость не имеет право входа пока нет администратора. И администратор не может выйти из спецпомещения если там есть хоть один гость.
Аппаратное обеспечение: дверь входа снаружи в шлюз - на С2000-2 +2 считки (вход/выход), дверь из шлюза в спецпомещение - так же. В системе есть С2000-М, и все это завязано на АРМ Орион ПРО.

7 лет 1 месяц назад

avatar
Можно попробовать сценарий накалякать, можно ли как то разбить сотрудников и гостей по уровням доступа или по подразделениям? Ну чтоб было либо два подразделения либо два уровня доступа? 
Для примера, считыватель на вход, подносим карту сотрудника, запускается сценарий, если УД сотрудника совпадает, то ничего не делать, а просто его пропустить, подносим карту гостя, если УД гостя совпадает, то проверить есть ли в этой зоне сотрудник с УД сотрудника, если да, то впустить, если нет то отказать в доступе. тоже самое только наоборот для сотрудника на выход, выпустить если нет гостей в зоне, не выпускать если гости есть, гость при это не проверятся, а просто выходит. Правильно ли я вас понял?

Тремасов Константин Александрович 7 лет 1 месяц назад

Или все сотрудники могут проходить? Только гостей проверять? Более подробно опишите, сколько у вас УД, какие могу ходить, какие нет, гости с какими из УД могут проходить в зону. 

Тремасов Константин Александрович 7 лет 1 месяц назад

И еще, шлюз реально шлюз, ну в смысле в конфигурации С2000-2 указано что шлюз или это просто две двери с тамбуром, два С2000-2 и четыре считывателя?

Тремасов Константин Александрович 7 лет 1 месяц назад

некоторые мысли. Считыватели на вход заблокировать. Админ машет картой на первом входе, получаем Запрет доступа, по этому событию запускаем сценарий "Предоставить доступ через 5 секунд, Восстановить доступ", админ машет картой на втором входе - тоже самое, гость теперь сможет зайти. На выходах админ запускает сценарии по блокированию входных считывателей. Гость на втором входном считывателе может запускать сценарий по блокированию второго выходного считывателя, тогда админ не сможет выйти, а гость на том же считывателе по Запрету доступа запускает сценарий "Предоставить доступ через 5 секунд, Восстановить доступ". Правда если два админа будет, то ни один не сможет выйти.

Волков Андрей 7 лет 1 месяц назад

Правда если два админа будет, то ни один не сможет выйти.

Атдушы ))).

Тремасов Константин Александрович 7 лет 1 месяц назад

это кстати диверсию можно делать, гость махнул картой, а заходить не стал, админы сами уже не выйдут))

либо админ зайдёт и махнёт картой на первом выходе, тогда кроме другого админа никто не сможет войти

Волков Андрей 7 лет 1 месяц назад

« …если никого нет внутри спецпомещения - карты гостя не имеют право зайти даже в шлюз… »
- Зубков Данил Александрович

А если, карта "гость" внутри?

Карпов Дмитрий 7 лет 1 месяц назад

Обычно «рамка по надзору за картами»
Т. е. если карта в кармане, передана («гость махнул картой, а заходить не стал – Волков Андрей »)...

Карпов Дмитрий 7 лет 1 месяц назад

А почему бы, не упростить.
Администратор вошёл, карты "гость" – проход.
Находясь внутри, администратор должен иметь чёткую информацию, наличие карт "гость", внутри.
 
Но странность в:
«Карт каждого типа - несколько, ну в районе 10-15шт.»
- Зубков Данил Александрович

Разве не:
Количество карт "гость", внутри = количество администраторов внутри.
Или 1 администратор сможет уследить за 15 гостями?

Карпов Дмитрий 7 лет 1 месяц назад

А если, карта "гость" внутри?

а как она там могла оказаться?
Или 1 администратор сможет уследить за 15 гостями?

ну один учитель может же как-то уследить за 20--30 учениками ;)

Волков Андрей 7 лет 1 месяц назад

«а как она там могла оказаться?»
 – Волков Андрей

Странный вопрос, на свой же вариант ответа!
« …гость махнул картой, а заходить не стал… »
Волков Андрей

Карпов Дмитрий 7 лет 1 месяц назад

так махнул и не зашёл, как она может оказаться внутри? только виртуально если, хотя тут может датчик прохода может помочь - не сталкивался

Волков Андрей 7 лет 1 месяц назад

Для добавления сообщений на форуме вам необходимо зарегистрироваться и указать мобильный телефон в своем профиле (зачем?)

7 ответов

Благодарю что откликнулись!
Итак, вношу уточнения согласно вашим вопросам.
  Админов и гостей можно (и нужно) разбить и по уровням доступа и, если будет необходимость для реализации алгоритма - по подразделениям.
  Никакие другие сотрудники не могут ходить. Ходить здесь смогут только админы и гости, всем остальным доступа не будет вообще. Для корректности можно назвать карту гостя помощник админа)))
  Шлюз - нереально шлюз, это 2 отдельные двери, каждая на С2000-2 в режиме вход/выход
  Карточек админ (как и пом.админ) будет несколько, то есть предложение "админ блокирует входные считки по выходу" в принципе правильное, но возникает необходимость отслеживать, что именно последний админ вышел и никто там не остался. А иначе условия алгоритма нарушаются - пока в спецпомещении есть хоть один админ - пом.админа должны иметь право входить, хоть по 5 штук. А иначе получается - 2 админа вошло - пом.админа заходят, один админ вышел - пом.админа больше входить не смогут.
   Карта "гость" внутри без админа оказаться не должна, никак)
  1 Администратор не сможет уследить за кучей гостей, но основная задача - не оставить гостей одних в спецпомещении, что они там делают при наличие там админа - никого не беспокоит))))

Мне нравится первое предложение по отслеживанию УД сторудника в зоне, однако как это реализовать скриптами - пока не представляю.

7 лет 1 месяц назад

avatar
предложение "админ блокирует входные считки по выходу" в принципе правильное, но возникает необходимость отслеживать, что именно последний админ вышел и никто там не остался

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

Волков Андрей 7 лет 1 месяц назад

А как реализуете вариант, когда например, три "гостя" сразу на выход (одновременно), и у кого то из них, карта окажется в кармане, или в шлюз физически сможет поместится только один человек?

Карпов Дмитрий 7 лет 1 месяц назад

Щя буду ваять,  только из загашника С2000-2 достану.

Тремасов Константин Александрович 7 лет 1 месяц назад

Для добавления сообщений на форуме вам необходимо зарегистрироваться и указать мобильный телефон в своем профиле (зачем?)

Промежуточный итог:

Столкнулся с рядом проблем:

1. Пока ключи не хранились в приборах, сначала приходило событие - "Идентификатор ХО", потом "Доступ предоставлен", привязал к событию ХО, синхронизировал, данное событие пропало и сразу стало выдаваться событие "Доступ предоставлен", к нему не привязать, так как доступ уже предоставлен и проверять система не успевает. Выход на данный момент один, заблокировать считыватели и по событию "Доступ закрыт" запускать сценарий проверки, сделал.

2. Так по событию "Доступ закрыт", для УД Сотрудники (я так у себя назвал этот уровень доступа) запускается сценарий, по которому все равно предоставляется доступ для УД Сотрудники, считыватель остается блокирован, а для УД Гости( мое название) сначала проверяется нахождение человека с УД Сотрудники в данной зоне доступа, а уже потом принимается решение, если есть хоть один, то предоставить доступ, если нет то отклонить, вроде бы все нормально, но вот действие в сценарии "Предоставить доступ" не переносит сотрудников в зону доступа, в журнале событий идут сообщения о предоставлении доступа по кнопке, в связи с этим невозможно отследить количество человек в данной зоне доступа.

В связи с вышеописанным, написал другой сценарий, который и переносит в зону доступа и проверят согласно условиям. Но, есть большое НО, чиркать приходиться два раза и при этом желательно видеть светодиод считывателя при этом считыватели всегда заблокированы и без Ориона сценарий не отработает, так что в помещение не попасть пока не запуститься Орион. А так же есть риск что за время восстановления доступа пройдет еще один УД Сотрудники без проверки, на вход нестрашно, у них есть полномочия, а вот на выход может быть такая ситуация, Гости гуляют по помещению, с УД Сотрудники в зоне два человека и они оба направились на выход, коснулся первый, доступ восстановлен, касается еще раз, доступ предоставлен, идет отсчет 5 сек. потом считыватель блокируется, вот если второй успеет за это время коснуться, то он выйдет, несмотря на то что там есть еще гости, но можно со временем поиграть.

Проверял на одном С2000-2.
Блокируем считыватели на входе в шлюз из вне и на выходе из помещения в шлюз (считыватели внутри шлюза нам не нужны, они работают в обычном режиме, так как если человек прошел в шлюз, то он как минимум должен выйти из него или пройти дальше), подносим карту с УД Сотрудники, получаем запрет но при этом восстанавливаем доступ на 5 сек.(время можно определить конкретно для каждого считывателя), светодиод считывателя перестает моргать и постоянно горит(поэтому желательно видеть светодиод), успеваем за это время поднести карту еще раз, так как доступ восстановлен, а не блокирован, и этот УД имеет право прохода, дверь открывается, человек проходит и в программе оказывается в нужной зоне доступа(пока не придумал как иначе), через заданное время считыватель опять блокируется. Далее, подходит человек с УД Гости, касается, получает запрет, но далее идет проверка условия, если есть человек с УД Сотрудники в зоне доступа, то восстановить доступ на  5 сек., светодиод считывателя горит постоянно, касается второй раз, получает доступ, считыватель опять блокируется. Если в зоне нет никого с УД Сотрудники, то считыватель остается блокирован, сколько бы раз не поднести карту. 
По выходу из шлюза, происходит так же проверка, так же необходимо чиркать два раза за отведенное время, только проверяем теперь УД Сотрудники на наличие в этой зоне доступа УД Гости, если есть то не выпускать, если нет то выпустить, Гости выходят без проверки, но так же с двойным касанием.


Орион ПРО 1.20.1 последний с сайта, С2000-2 версии 2.20.

Что касается названий, номер и прочего, это требует отладки на конкретном объекте

Считыватель на вход, событие Запрет доступа:

СЦЕНАРИЙ
Переменные
перем Событие1;
перем пароль1;
перем ГД1;
перем ЗД1;
перем считыватель1;

НАЧАЛОСЦЕНАРИЯ
Событие1 = ПолучитьСобытие();
пароль1 = Событие1.Пароль();
ГД1 = пароль1.ГруппаДоступа();
если ГД1.Название() == "Сотрудники" тогда
считыватель1 = Событие1.Элемент();
считыватель1.ВосстановитьДоступ();
Задержка(5000);
считыватель1.ЗаблокироватьСчитыватель();
КонецЕсли;
если ГД1.Название() == "Гости" тогда
Событие1.ЗонаДоступа();
ЗД1 = Событие1.ЗонаДоступа();
если ЗД1.КоличествоСотрудниковПоУровню(5) > 0 тогда
считыватель1 = Событие1.Элемент();
считыватель1.ВосстановитьДоступ();
Задержка(5000);
считыватель1.ЗаблокироватьСчитыватель();
КонецЕсли;
КонецЕсли;

КОНЕЦСЦЕНАРИЯ



Считыватель на выход, событие Запрет доступа:

СЦЕНАРИЙ
Переменные
перем Событие1;
перем пароль1;
перем ГД1;
перем ЗД1;
перем ЗД2;
перем считыватель1;

НАЧАЛОСЦЕНАРИЯ
Событие1 = ПолучитьСобытие();
пароль1 = Событие1.Пароль();
ГД1 = пароль1.ГруппаДоступа();
если ГД1.Название() == "Гости" тогда
считыватель1 = Событие1.Элемент();
считыватель1.ВосстановитьДоступ();
Задержка(5000);
считыватель1.ЗаблокироватьСчитыватель();
КонецЕсли;
если ГД1.Название() == "Сотрудники" тогда
Событие1.ЗонаДоступа();
ЗД1 = СоздатьОбъект("ЗоныДоступа");
ЗД2 = ЗД1.ПолучитьПоИндексу(1);
если (ЗД2.КоличествоСотрудниковПоУровню(5) == 1) и (ЗД2.КоличествоСотрудниковПоУровню(7) > 0) тогда
считыватель1.ЗаблокироватьСчитыватель();
иначе
считыватель1 = Событие1.Элемент();
считыватель1.ВосстановитьДоступ();
Задержка(5000);
считыватель1.ЗаблокироватьСчитыватель();
КонецЕсли;
КонецЕсли;

КОНЕЦСЦЕНАРИЯ


Пока так, так сказать, альфа версия, попробую додумать как содним касанием проходить, если это конечно возможно.

7 лет 1 месяц назад

avatar
проверяем теперь УД Сотрудники на наличие в этой зоне доступа УД Гости, если есть то не выпускать,
То есть ни один Сотрудник не сможет выйти если есть хоть один Гость?

Баулин Владимир Александрович 7 лет 1 месяц назад

Почему же? Вот тут проверяем:
уровень 5 это сотрудники, уровень 7 это гости
если (ЗД2.КоличествоСотрудниковПоУровню(5) == 1) и (ЗД2.КоличествоСотрудниковПоУровню(7) > 0) тогда
Если сотрудников в зоне один и при этом есть гости, то не выпускать сотрудника.
Не сможет выйти только последний сотрудник, если в зоне есть гости. 
 

Тремасов Константин Александрович 7 лет 1 месяц назад

Вообще если честно по началу так и было, я отписал на форум, потом обнаружил что сотрудников не выпускают, исправил текст сценария, а вот про описание забыл.

Тремасов Константин Александрович 7 лет 1 месяц назад

Ну все равно как по мне этот сценарий просто дикий костыль, больше спортивный интерес, пользоваться этим думаю не будут, ибо не удобно и обучать надо сотрудников куда смотреть, что делать.

Тремасов Константин Александрович 7 лет 1 месяц назад

Ну так, обучать надо всегда.

Баулин Владимир Александрович 7 лет 1 месяц назад

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

Тремасов Константин Александрович 7 лет 1 месяц назад

по хорошему надо вводить параметр "подтверждение прохода". т.е. авторизовался на входе - зашел- картой подтвердился. для гостей - только двухкарточная авторизация (гость+админ)

Докукин Игорь 7 лет 1 месяц назад

Вот если бы надо было чтоб гость без сопровождения админа не зашел и/или не вышел, то тут встроенного функционала достаточно, проход по двум, трем лицам. Но требуется другое.

Тремасов Константин Александрович 7 лет 1 месяц назад

Я если честно даже не представляю что начнется когда Орион отключится в процессе эксплуатации и как потом все вернуть на круги своя, это конечно если нет М.

Тремасов Константин Александрович 7 лет 1 месяц назад

Для добавления сообщений на форуме вам необходимо зарегистрироваться и указать мобильный телефон в своем профиле (зачем?)

В ближайшее время попробую то, то вы предлагаете, на практике. 
Но двукарточная авторизация недопустима... так что придется исходить из того, что есть.
По поводу отключения Ориона - ну в принципе никто не застрахован от программных сбоев, так что вероятность будет существовать всегда. Однако это не так страшно - во первых в шлюзе и спецпомещении есть переговорные устройства, кроме того в шлюзе есть камера, выводится все это на пост кпп, та что при аварийной ситуации народ сможет выйти, прибегнув к помощи. А переменные, учавствующие в процессе можно будет просто сбросить, повесив на них скажем скрипт при запуске АРМ Орион. 

7 лет 1 месяц назад

avatar
Для добавления сообщений на форуме вам необходимо зарегистрироваться и указать мобильный телефон в своем профиле (зачем?)

И снова доброго дня уважаемые! спустя продолжителное время вновь возвращаюсь сюда, в надежде, что еще есть интересующиеся))
Касаемо сценария и способов управления - превоначальная задача слегка упростилась)) как и появилась возможность "тыкать" карточкой дважды.
Итак, что осталось - гости не входят при отсутствии админа. Доработано - карты гостя имеют доступ лишь по этим двум дверям (вход/выход шлюз и вход/выход серверная. Реализовано оч просто - отслеживается присутствие людей в серверной (создана зоан доступа серверная, привязана к "пустому" разделу, т е просто шс с резистором, данный раздел берется по сценарию - выход последнего из зоны доступа.) На взятие раздела подвешен сценарий блокирования карты доступа (карт гостей всего 4шт, с боем вырывал))).Соотвественно пока админов в серверной нет - гости никуда не ходят. По входу админа в серверную - раздел снимается по сценарию - вход первого в заданную зону доступа, тем самым разблокирует гостей, которые теперь тоже могут заходить.
Изменения - в настоящий момент больше не требуется отслеживания количества админов, а посему вполне достаточно при входе хотя бы одного гостя - блокировать карту админа на выход из серверной. Наличие гсотей отслеживается тоже просто и хитро - есть еще один "пустой" раздел, который снимается с охраны при входе в определенную зону доступа определенного уровня доступа. На снятие раздела висит сценарий - блокировать выходную считку. Тем самым никто выйти уже не может.
Ну а далее - на событие выходной считки "доступ запрещен" вешается скрипт, который проверяет уровень доступа ткнувшего сотрудника и если это был гость - на 5 секунд восстанавливает работу считки, а если админ - то остается блокированным.
 Осталось дело за малым - после прохода гостя на выход необходимо запустить проверку состояния раздела, отвечающего за наличия гостей, и если раздел снят - считку снова заблокировать, если взят (т е выход последнего гостя состоялся) - оставить доступ восстановленным.
Остаются конечно подводные камни с диверсией - если гость со шлюза ткнул картой на вход в серверную, а сам не пошел - админы останутся заблокированными. Но это не особо страшно, хотя и неприятно)) на выходе есть переговорное устройство, админы если что "крикнут" охране, те их выпустят с помощью разблокирования дверей. Единственое - при все этом надо придумать "горячую" кнопку для охраны, которая будет обнулять все запущенные сценарии до исходного состояния "никого нет в серверной".

6 лет 9 месяцев назад

avatar
если гость со шлюза ткнул картой на вход в серверную, а сам не пошел
Учтите не только идентификацию, но и "проход".

Баулин Владимир Александрович 6 лет 9 месяцев назад

Для добавления сообщений на форуме вам необходимо зарегистрироваться и указать мобильный телефон в своем профиле (зачем?)

в этом тоже есть загвоздка... На вход в серверную стоит биометрический ситыватель, он не отслеживает фактический проход, а формирует событие проход сразу после удачной идентификации. Так что достаточно ткнуть картой и даже не трогать двери.

6 лет 9 месяцев назад

avatar
Для добавления сообщений на форуме вам необходимо зарегистрироваться и указать мобильный телефон в своем профиле (зачем?)

А вообще пробовали сценарий? Он хоть работает вообще на практике?

6 лет 9 месяцев назад

avatar
Для добавления сообщений на форуме вам необходимо зарегистрироваться и указать мобильный телефон в своем профиле (зачем?)

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

6 лет 9 месяцев назад

avatar
Мы про один и тот же сценарий говорим? Я про тот который я писал, вы про какой? 

Тремасов Константин Александрович 6 лет 9 месяцев назад

Для добавления сообщений на форуме вам необходимо зарегистрироваться и указать мобильный телефон в своем профиле (зачем?)

Добавить ответ

Для добавления сообщений на форуме вам необходимо зарегистрироваться и указать мобильный телефон в своем профиле (зачем?)

ПОКАЗАН

4670 раз

ЗАДАН

7 лет 1 месяц назад

ПРОДУКТЫ

С2000-2
С2000М

По каждому вопросу/ответу можно добавлять комментарии. Комментарии предназначены для уточнения вопроса/ответа.