Simple-Scada forum
Simple-Scada 2 => Ваши вопросы => Тема начата: AndreyShilov от 31 Июля 2025, 17:46:50
-
Добрый вечер, хочу, чтобы по нажатию кнопки "Подтвердить" квитировать сообщения и отправить сигнал квитирования в контроллер, как мне это можно сделать? К примеру активно сейчас сообщение "Авария насоса". Пользователь нажмет "Подтвердить" и в этот момент пропадет сообщение и одновременно отправится сигнал квитирования в контроллер. Возможно к этой кнопке можно как-то привязать сигнал bool значением которой управляла бы эта кнопка?
-
Здравствуйте.
Чтобы при подтверждении (квитировании) сообщения (https://simple-scada.com/help/manual/client.html?anchor=confbtn) в переменную, с которой связано сообщение, записывался ноль, можно использовать свойство сообщения "Сброс (https://clck.ru/3NQDzK)".
Если сигнал квитирования на ПЛК реализован через одну переменную, то вместо штатной панели сообщений можно создать свою (https://simple-scada.com/help/script/buttons-instead-pages.html?anchor=ex2). Кнопку подтверждения нужно связать с требуемой переменной и оставить у кнопки одно состояние со значением 0. Тогда при нажатии на нее в переменную будет записываться значение 0.
-
Добрый день.
Похожая проблема с квитированием, не стал делать новую тему.
Алармы формируются в ПЛК, поэтому для ПЛК нужен признак квитирования каждого аларма в отдельности от scada. Изначально собрал алармы в word (биты 1-4). В свойствах сообщения взвел Сброс (Message 1 на скрине). Если алармы квитировать по одному, то все работает.
Если будут одновременно активны несколько алармов, и нажать Квитировать все, то у меня в слове алармов сбрасывается только один бит, самый старший по номеру из активных. Т.е. если биты 1 и 2 были в 1, то при нажатии Квитировать все, сбрасывается только бит 2. В ПЛК сделал логику в начале функционального блока по отлову и запоминанию падающего фронта битов алармов (запоминание факта квитирования от scada), дальше эти биты опять переписывается в 1, т.к. условия алармов еще активны.
Пробовал делать тестовый word, который не переписывается постоянно в ПЛК, привязывал алармы к его битам. Работало нормально, все биты сбрасывались при нажатии Квитировать все.
Пока остановился на варианте передачи алармов на scada отдельными битовыми переменными, не собранными в word (Message 2...5 на скрине). Так кнопка Квитировать все работает.
Было бы хорошо у сообщения иметь поле Квитировано, которое можно было бы привязать к параметру и передавать в ПЛК.
-
Здравствуйте.
Спасибо за информацию, причину выявили, добавим исправление в ближайшее обновление.
-
Когда примерно выйдет обновление?
Надо решить как проект делать.
-
Включили исправление в обновление 2.7.4.0. Скачать можно по прежним ссылкам.
Надо решить как проект делать.
Рекомендуем работать с битами внешних переменных (получаемых с OPC-сервера) только на чтение (если ваш OPC-сервер и ПЛК не поддерживает прямую адресацию на уровне битов).
Для записи значений в биты переменной лучше всегда использовать отдельные Boolean переменные, вместо работы с битами. Это касается не только скады, но и любого другого ПО, которое может менять биты во внешней (опрашиваемой) переменной. Причина в следующем:
- Скада и ПЛК всегда работают с разной частотой и не синхронизированы;
- При изменении любого бита, скада передаст в ПЛК не сам бит, а целиком число, которому принадлежит этот бит (затирая остальные биты). То же самое с чтением;
В результате всегда возможны конфликты:
- Скада читает значение 0001 и пытается сбросить бит, т.е. записать 0000;
- В этот момент на ПЛК значение меняется на 1111;
- Скада отправляет свою версию 0000;
- В результате на ПЛК затираются четыре бита, а планировалось сбросить только один.
Поэтому, менять биты должен только источник данных, все остальные должны только читать биты.
-
Частенько встречается этот вопрос на форумах, желаю поделиться своим мнением.
Для чего вообще отправлять в ПЛК сигнал квитирования сообщения (аварии)?
Квитирование - это "подтверждение приёма-передачи структурной единицы информации". Т.е. квитирование требуется только в Скаде для гашения сообщения об произошедшем событии (ворнинге, аларме), а главное - для сохранения в логи факта подтверждения ознакомления оператора с данным событием. Чтобы впоследствии оператора можно было наказать по причине "знал и бездействовал" и прикрыть опу программиста.
А при возникновении условий, приведших к останову единицы оборудования, то бишь "аварии", взводить отдельный бит в ПЛК, блокирующий повторный запуск неисправного узла. Вот этот бит сбрасывать отдельной кнопкой "Сброс аварии" в Скаде. И у каждого исполнительного механизма должен быть такой персональный бит в ПЛК, персональный индикатор аварии и персональная кнопка в Скаде (наравне с прочими кнопками управления механизма).
Возлагать сброс бита аварии на кнопку "квитирование" - значит вводить действия, не согласующиеся с определением надписи на кнопке.
Разумеется, дополнительно можно нарисовать кнопки, квитирующие все сообщения разом и сбрасывающие все аварии всех узлов (и эти кнопки пользуются большой популярностью у операторов), но эти кнопки отдельные с соответствующими надписями.
И лучше применять однозначно понимаемое слово "Подтвердить" вместо "Квитировать" (от нем. quittieren).