Просмотр полной версии : Журнал в MasterScada
Александр Приходько
09.10.2012, 00:11
Здравствуйте, SCADAMaster.
Есть вопрос у меня небольшой.
Помогаю клиенту диспетчеризацию делать.
Есть порядка 200 переменных - состояния оборудования.
У каждой переменной есть 4 значения:
0 - не активна
1 - включен
2 - выключен
3 - авария
В скаде нарисован план здания, эти переменные на плане отображаются в виде кружков, у которых меняется заливка в зависимости от состояния. С этой частью проблем нет.
Т.к. здание большое 14 этажей, то просматривать все данные сразу нереально.
Собственно у клиента вопрос. Можно ли в скаде сделать некий журнал, в котором бы при изменении любой переменной, в журнал записывалось имя этой переменной и состояние. Состояние должно быть прописано словом (не активен/вкл/выкл/авария).
например:
19:28:00 PLC2.Etag3_KPP61 Выключен
19:20:00 PLC1.Etagm2_KPP11 Включен
...
собственно в самой скаде это означает
PLC2.Etag3_KPP61=2
PLC1.Etagm2_KPP11=1
С журналами опыт работы нулевой. Что можно в нашей ситуации сделать?
Александр Приходько
09.10.2012, 01:38
Задача несколько упростилась.
Нашел я так называемые перечислимы типы. Теперь вместо цифр вижу состояния.
Как эти состояния записать в журнал?
Полазив инете, нашел понятие событий, которые можно делать вручную и прописывать там что угодно. Но у меня 200 переменных и под каждую расписывать состояние ... должно быть проще!
SCADAMaster
09.10.2012, 07:22
С журналами опыт работы нулевой. Что можно в нашей ситуации сделать?
Про журналы, систему сообщений и события есть видеопример:
http://www.masterscada.ru/?additional_section_id=233
Задача несколько упростилась.
Нашел я так называемые перечислимы типы. Теперь вместо цифр вижу состояния.
Как эти состояния записать в журнал?
Событием и записать. Перетаскиваете в таблицу под полем "Сообщение" перечислимую переменную и добавляете ее в текст.
В режиме исполнения, вместо нее будет подставлено значение в режиме исполнения.
Александр Приходько
11.10.2012, 02:43
Вот тут я по сути и засел. Для того, чтобы выводился текст, должно сработать условие. Как прописать условие не совсем ясно. Мне нужно чтоб при смене состояния любой из 200 переменных выводилось сообщение о том, что и куда переключилось. Конечно можно пойти в лоб и написать вот так: (х=0) или (х=1) или(х=2) или (х=3). И в сообщении выводить "Здание.Этаж-1.Кл_ПП {x}".
В таком виде оно как бы срабатывает при условии, что выводимые сообщения будут удаляться! Но это на мой взляд как то не верно.
Пробовал вариант 2
В формулу ставил константу "истина", по сути аналогично моей формуле - такая же ерунда.
Пробовал вариант 3
Как Вы и написали просто добавить переменную в таблицу для сообщений, и выводить ее. Но ни чего не работает, т.к. нет условия для срабатывания.
Вот скрин по методу который вы предложили:
7135
P.S. за ссылку спасибо, перед тем как задать вопрос я все видео про журналы посмотрел. Благо гугл сразу вывел на эти материалы.
Хотелось бы верить, что я в чем то ошибаюсь.
Александр Приходько
11.10.2012, 23:33
Проблему решил. Если кому интересно:
http://www.owen.ru/forum/showpost.php?p=33588&postcount=5
Но в моем случае это ну очень не удобно оказалось. Жаль что нет возможности получше.
SCADAMaster
12.10.2012, 09:00
Есть одно решение. В модуле событие есть специальная функция для определения метки времени - TimeStamp. Если используется опрос по изменению (а он по умолчанию используется), то метка времени меняется при изменении значения. В событии можно сравнивать метку времени нужного значения с меткой времени самого значения, и при отличиии - выдавать сообщение.
TimeStamp( Команда_1 )>TimeStamp( Событие_1)
У события нужно включить наследование метки времени от команды.
В приложении пример.
Также мы рассмотрим вариант создания специальной функции в расчете и событии которая бы определяла изменение переменной.
Александр Приходько
12.10.2012, 10:05
Есть одно решение. В модуле событие есть специальная функция для определения метки времени - TimeStamp. Если используется опрос по изменению (а он по умолчанию используется), то метка времени меняется при изменении значения. В событии можно сравнивать метку времени нужного значения с меткой времени самого значения, и при отличиии - выдавать сообщение.
TimeStamp( Команда_1 )>TimeStamp( Событие_1)
У события нужно включить наследование метки времени от команды.
В приложении пример.
Ну скажем так, конечно это чуть удобнее, но все равно очень долго таким образом настроить систему.
Также мы рассмотрим вариант создания специальной функции в расчете и событии которая бы определяла изменение переменной.
На мой взгляд нужен модуль в самом событии, который позволял бы отслеживать изменение и фиксировать его в базе(для дискретов, логики или целых типов). Для аналогов тут уже сложнее.
Ну или сделать отдельный журнал, для фиксации переменных. Что-то похожее на тренд.
Ну скажем так, конечно это чуть удобнее, но все равно очень долго таким образом настроить систему.
На мой взгляд нужен модуль в самом событии, который позволял бы отслеживать изменение и фиксировать его в базе(для дискретов, логики или целых типов). Для аналогов тут уже сложнее.
Ну или сделать отдельный журнал, для фиксации переменных. Что-то похожее на тренд.
Актуальный вопрос.
А в чём проблема с аналоговыми переменными? Я вот столкнулся с тем, что даже если её не трогать, то каждые 5 секунд выводится сообщение об изменении (5.5; 5.5; 5.5; 5.5 и т.д.). С чем это связано? С переменными других видов такого не наблюдается.
SCADAMaster
24.04.2015, 09:03
Возможно у вас меняется метка времени. Например если у вас включен полный опрос ОРС сервера.
Возможно, полный опрос OPC сервера стоит 120 сек. Примерно с таким периодом и происходит вывод сообщений. Как можно это исправить? И тогда непонятно почему не присходит присвоение метки другим переменным http://www.owen.ru/forum/showthread.php?t=21134&p=168983&viewfull=1#post168983
Соврал, галочка не стоит на полном опросе.
При этом раз в минуту происходит сообщение об изменении переменной
SCADAMaster
24.04.2015, 19:16
Пришлите ваш проект, выполните Проект - Экспортировать.
Укажите путь к переменной которая генерирует это сообщение.
Проект в приложении. Путь: События -- Смена Рдень -- Смена уставки
17898
SCADAMaster
25.04.2015, 13:45
Мы запустили проект вместе с конфигурацией в режим исполнения - ошибка не проявляется.
Может у вас переменная меняется? Попробуйте включить у нее архивацию (можно еще у выхода скрипта "Сравнение") - посмотрите генерируются ли в архиве данных новые записи.
В общем убрал скрипт, переделал на обычном сравнении меток времени, вроде нормально работает
Подскажите пожалуйста два момента по журналам. Первый- как сделать так чтобы в журнале отображалось время квитирования. Второй момент- Может ли одно событие поддерживать два сообщения. А именно. Есть например событие которое отображает состояние крана. можно сделать так чтобы при вкл.события было сообщенеи кран открыт, а при выкл. события генерировалось сообщение кран закрыт. Спасибо.
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot