PDA

Просмотр полной версии : SQL зачем поле FLAGS



S.A.D.
22.09.2015, 16:40
Добрый день. Прикрутил Firebird к мастерскаде и полез ковыряться в БД. В SQL я не силён, но понимаю, что можно добавить руками запись в таблицу и данные отобразятся в тренде. В связи с этим есть 2 вопроса:
таблица MASDATARAW:
Каковы правила записи значений в поля LAYER и FLAGS? дело в том, что значения в них явно влияют yа кооректность отображения информации в мастерскаде, а вот что туда писать и почему мастерскада пишет именно то что пишет понять не могу. Подскажите пожалуйста.

SCADAMaster
22.09.2015, 17:55
Что вообще вы хотите сделать? Вручную писать архив?

S.A.D.
23.09.2015, 09:29
вообще хочу писать архив в ПЛК и при потере связи, после её восстановления вычитывать его 20 функцией модбаса через лектус и класть в БД, чтобы небыло провалов памяти в скаде. Для этого надо знать как правильно заполнить поля в БД, что я и пытаюсь выяснить)

SCADAMaster
23.09.2015, 09:43
А зачем? Читайте их по HDA с помощью нашего ОРС сервера:
http://www.insat.ru/products/Universal_MasterOPC/ExportDevice/OwenPLC/owenplc_readme.pdf
Архивацию можно назначить в базу данных.

S.A.D.
23.09.2015, 10:21
Ок, в принципе вариант подходящий, однако как настроить архивацию в базу туда же куда архивируются текущие прочитанные значения и как настроить вычитывание архива по условию?

SCADAMaster
23.09.2015, 10:47
Архивация настраивается как обычно - задаете место хранения у компьютера и все. Посмотрите вот эту документацию - в ней все описано:
http://www.masterscada.ru/services/support/art_step_by_step/BD/BD_Part_1.pdf
http://www.masterscada.ru/?additional_section_id=141

Что значит вычитывание архива по условию?

S.A.D.
23.09.2015, 11:07
спасибо, буду изучать.
По условию имеется ввиду, что мне не нужно чтобы архив читался с какой-то переодичностью. В случае когда данные и так опрашиваются каждые несколько минут - это бесполезный перерасход мобильного трафика. Мне интересно запрашивать архив только если обнаружено отсутствие связи. Лектус это позволяет реализовать через системный тег принудительного опроса, а в Insat OPC такой возможности насколько я знаю нет (только если опросом после записи, но тут оно не прокатит).

SCADAMaster
23.09.2015, 11:54
В Modbus OPC тоже можно.
Ставите у подустройства период опроса - 0, тогда он выключается из периодического опроса.
Создаете вне подустроуства тег типа ServerOnly который будет выполнять опрос (можно и в подустройстве, но тогда нужно править код скрипта). В теге в скрипте после записи выполняете опрос вашего подустройства с помощью функции server.PollSubDeviceByName:
server.PollSubDeviceByName("Node1.Device1.SubDevice1");

S.A.D.
23.09.2015, 12:54
В Modbus OPC тоже можно.
Ставите у подустройства период опроса - 0, тогда он выключается из периодического опроса.
Создаете вне подустроуства тег типа ServerOnly который будет выполнять опрос (можно и в подустройстве, но тогда нужно править код скрипта). В теге в скрипте после записи выполняете опрос вашего подустройства с помощью функции server.PollSubDeviceByName:
server.PollSubDeviceByName("Node1.Device1.SubDevice1");
О, спасибо! Буду пробовать всё это собрать в кучу

S.A.D.
12.10.2015, 13:19
server.PollSubDeviceByName("Node1.Device1.SubDevice1");
что-то не выходит. Скрипт можно выполнить только перед записью и такой функции нет. Есть только server.PollCurrentDevice() Попробовал засунуть переменную в архивное подустройство и опрашивать этой функцией, записывая туда какое либо число - не работает. В переменную опроса число записывается, но опроса архивного подустройства нет.

SCADAMaster
12.10.2015, 13:58
Скрипт можно выполнить только перед записью и такой функции нет. Есть только server.PollCurrentDevice()
Должна быть.
Возможно у вас старая версия - обновите до текущей.