Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Инициализация и OnDataChange  (Прочитано 6512 раз)

kknm

  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
Инициализация и OnDataChange
« : 04 Октября 2017, 09:09:01 »
Проясните ситуацию. Есть поле и внутренняя переменная( состояние 1 или 2) с событием  OnDataChange или OnDataChangeEx. При запуске проекта всегда происходит это событие - хоть инициализируй при запуске клиента, хоть нет. Как избавиться от этого момента ? Событие нужно в процессе работы, а не при включении.
« Изменён: 04 Октября 2017, 09:13:37 от Simple_Scada »

Teodor

  • Старожил
  • ****
  • Сообщений: 256
    • Просмотр профиля
Re: Инициализация и OnDataChange
« Ответ #1 : 04 Октября 2017, 10:08:29 »
Нарисовать переменную varInit, которую установить в тру после первого OnDataChange (с 0 на 1 или 2)  если она тру, то исполнить скрипт.

kknm

  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
Re: Инициализация и OnDataChange
« Ответ #2 : 04 Октября 2017, 10:22:17 »
Это напрашивалось само собой, но ,мне кажется ,правильнее было бы по OnInit установить все переменные (как обычно при программировании) ,а потом начинать опрос и нормальную работу.
Еще не ясен момент, когда с датчиков данные еще не пришли при начале работы - также возникает неопределенная ситуация.
« Изменён: 04 Октября 2017, 10:36:40 от kknm »

Teodor

  • Старожил
  • ****
  • Сообщений: 256
    • Просмотр профиля
Re: Инициализация и OnDataChange
« Ответ #3 : 04 Октября 2017, 16:46:40 »
У переменных есть свойство "качество". Если данные не пришли, нет связи или еще кака фигня, то и качество фальшивое. Это можно учитывать в скриптах. Например, если качество плохое, то значение переменной игнорировать, или не писать в нее, чтобы не срабатывал он ченж.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3214
    • Просмотр профиля
    • Simple-Scada
Re: Инициализация и OnDataChange
« Ответ #4 : 06 Октября 2017, 15:31:59 »
Цитировать
При запуске проекта всегда происходит это событие - хоть инициализируй при запуске клиента, хоть нет. Как избавиться от этого момента ?
Верно, т.к. переменная принимает свое первое значение. Переменные-числа инициализируются 0, а строки пустой строкой. Чтобы проигнорировать первое изменение можно создать дополнительную виртуальную переменную с типом Boolean и выставлять её значение в true когда изменилась основная переменная. Тогда по значению этой доп. переменной можно будет понять первое изменение это (=false), или нет (=true).