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

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

Автор Тема: Потеря связи с оборудованием в Simple-Scada  (Прочитано 2526 раз)

razorqhex

  • Пользователь
  • **
  • Сообщений: 79
    • Просмотр профиля
Здравствуйте.

Есть некое оборудование, которое прикрепляется к скважине, называется оно преобразователь частот.

Есть 4 скважины на объекте и собственно 4 преобразователя частоты. Проблема в том, что ПЛК сигнализирует потерю связи с преобразователем частоты на скважине 1, а скада выводит, что потеря связи происходит по всем скважинам при том, что теги, которые отвечают за остальные скважины на ОРС сервере отключены. Скрипт, который за это отвечает использует событие "Изменились переменные".

Код: (delphi)
begin  
  //Скважина 1
  if Danfoss_disconnect_flag.AsBool = TRUE then
  begin
    AddMessage(Now, mkMessage, 'Зв''язок з перетворювачем частоти відновлено [Свердловина 1]', TRUE, FALSE);
  end
  else
    AddMessage(Now, mkAlarm, 'Зв''язок з перетворювачем частоти втрачено [Свердловина 1]', TRUE, FALSE);

  //Скважина 2
  if Danfoss_disconnect_flag_1.AsBool = TRUE then
  begin
    AddMessage(Now, mkMessage, 'Зв''язок з перетворювачем частоти відновлено [Свердловина 2]', TRUE, FALSE);
  end
  else
    AddMessage(Now, mkAlarm, 'Зв''язок з перетворювачем частоти втрачено [Свердловина 2]', TRUE, FALSE);

  //Скважина 3
  if Danfoss_disconnect_flag_2.AsBool = TRUE then
  begin
    AddMessage(Now, mkMessage, 'Зв''язок з перетворювачем частоти відновлено [Свердловина 3]', TRUE, FALSE);
  end
  else
    AddMessage(Now, mkAlarm, 'Зв''язок з перетворювачем частоти втрачено [Свердловина 3]', TRUE, FALSE);

  //Скважина 8
  if Danfoss_disconnect_flag_3.AsBool = TRUE then
  begin
    AddMessage(Now, mkMessage, 'Зв''язок з перетворювачем частоти відновлено [Свердловина 8]', TRUE, FALSE);
  end
  else
    AddMessage(Now, mkAlarm, 'Зв''язок з перетворювачем частоти втрачено [Свердловина 8]', TRUE, FALSE);
end.

Переменные тоже подключены (закрепил скриншот)
« Изменён: 13 Ноября 2019, 11:39:41 от Simple-Scada »

pan2000

  • Постоялец
  • ***
  • Сообщений: 225
    • Просмотр профиля
Re: Потеря связи с оборудованием в Simple-Scada
« Ответ #1 : 13 Ноября 2019, 13:01:02 »
Здравструйте!

Каждый оператор IF должен выполнятся только при изменении "своей" переменной, например:
Код: (delphi)
 . . .
  //Скважина 1
  if Variable.Name = 'Danfoss_disconnect_flag' then   // проверка на "свою" переменную
    if Danfoss_disconnect_flag.AsBool then
      AddMessage(Now, mkMessage, 'Зв''язок з перетворювачем частоти відновлено [Свердловина 1]', TRUE, FALSE)
    else
      AddMessage(Now, mkAlarm, 'Зв''язок з перетворювачем частоти втрачено [Свердловина 1]', TRUE, FALSE);
 . . .

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3210
    • Просмотр профиля
    • Simple-Scada
Re: Потеря связи с оборудованием в Simple-Scada
« Ответ #2 : 13 Ноября 2019, 13:12:54 »
Здравствуйте.

Каждый оператор IF должен выполнятся только при изменении "своей" переменной, например:
Именно, иначе будут выдаваться лишние сообщения. Но проверять лучше по указателю на переменную, например так:
Код: (delphi)
. . .
  //Скважина 1
  if Variable = Danfoss_disconnect_flag then   // проверка на "свою" переменную
    if Danfoss_disconnect_flag.AsBool then
      AddMessage(Now, mkMessage, 'Зв''язок з перетворювачем частоти відновлено [Свердловина 1]', TRUE, FALSE)
    else
      AddMessage(Now, mkAlarm, 'Зв''язок з перетворювачем частоти втрачено [Свердловина 1]', TRUE, FALSE);
 . . .

Здесь также возникает вопрос: почему Вы сделали выдачу сообщений через скрипты? Ведь проще и лучше по производительности было бы добавить сообщения через меню сообщений (если нет каких-то уникальных условий). Тогда и описанная проблема не возникла бы.
« Изменён: 13 Ноября 2019, 13:14:13 от Simple-Scada »

razorqhex

  • Пользователь
  • **
  • Сообщений: 79
    • Просмотр профиля
Re: Потеря связи с оборудованием в Simple-Scada
« Ответ #3 : 14 Ноября 2019, 00:12:57 »
Спасибо, помогло  :)

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

Тэг Danfoss_disconnect_flag является булевой переменной и в зависимости от его состояния я вывожу ту или иную информацию.

UPD: Там есть свойства такие как: Значение (от) и Значение (до) и если я Вас правильно понял, то по тэгу Danfoss_disconnect_flag я могу выставить значения ОТ 0 и ДО 1? Потому что true и false туда не вписать. Скада сможет определить true и false как 1 и 0?
« Изменён: 14 Ноября 2019, 00:17:05 от razorqhex »

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1385
    • Просмотр профиля
Re: Потеря связи с оборудованием в Simple-Scada
« Ответ #4 : 14 Ноября 2019, 11:33:35 »
Здравствуйте.

Цитировать
Тэг Danfoss_disconnect_flag является булевой переменной и в зависимости от его состояния я вывожу ту или иную информацию.
Вам нужно создать сообщение в редакторе сообщений и добавить в него два состояния: для значения переменной 0(False) и 1(True) - см. скриншот во вложении.

Цитировать
Там есть свойства такие как: Значение (от) и Значение (до) и если я Вас правильно понял, то по тэгу Danfoss_disconnect_flag я могу выставить значения ОТ 0 и ДО 1?
Значение (до) – используется для указания диапазона значений или битов для данного состояния. "-1" - не использовать диапазон. В Вашем случае переменная типа Boolean может принимать два значения(0/1), значит свойство "Значение (до)" не нужно использовать. В первом состоянии в свойстве "Значение (от)" нужно указать 0 и задать необходимый текст сообщения, во втором состоянии указать 1 - см. скриншот.

Цитировать
Скада сможет определить true и false как 1 и 0?
Да, 1 соответствует True, 0 соответствует False.

razorqhex

  • Пользователь
  • **
  • Сообщений: 79
    • Просмотр профиля
Re: Потеря связи с оборудованием в Simple-Scada
« Ответ #5 : 15 Ноября 2019, 10:36:08 »
Simple_Scada, большое спасибо  :)