Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: razorqhex от 13 Ноября 2019, 11:10:42

Название: Потеря связи с оборудованием в Simple-Scada
Отправлено: razorqhex от 13 Ноября 2019, 11:10:42
Здравствуйте.

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

Есть 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.

Переменные тоже подключены (закрепил скриншот)
Название: Re: Потеря связи с оборудованием в Simple-Scada
Отправлено: pan2000 от 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);
 . . .
Название: Re: Потеря связи с оборудованием в Simple-Scada
Отправлено: Simple-Scada от 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);
 . . .

Здесь также возникает вопрос: почему Вы сделали выдачу сообщений через скрипты? Ведь проще и лучше по производительности было бы добавить сообщения через меню сообщений (https://simple-scada.com/help/manual/edit-message.html) (если нет каких-то уникальных условий). Тогда и описанная проблема не возникла бы.
Название: Re: Потеря связи с оборудованием в Simple-Scada
Отправлено: razorqhex от 14 Ноября 2019, 00:12:57
Спасибо, помогло  :)

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

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

UPD: Там есть свойства такие как: Значение (от) и Значение (до) и если я Вас правильно понял, то по тэгу Danfoss_disconnect_flag я могу выставить значения ОТ 0 и ДО 1? Потому что true и false туда не вписать. Скада сможет определить true и false как 1 и 0?
Название: Re: Потеря связи с оборудованием в Simple-Scada
Отправлено: Simple_Scada от 14 Ноября 2019, 11:33:35
Здравствуйте.

Цитировать
Тэг Danfoss_disconnect_flag является булевой переменной и в зависимости от его состояния я вывожу ту или иную информацию.
Вам нужно создать сообщение в редакторе сообщений (https://simple-scada.com/help/manual/edit-message.html) и добавить в него два состояния (https://simple-scada.com/help/manual/index.html?edit-message.html#prop_sost): для значения переменной 0(False) и 1(True) - см. скриншот во вложении.

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

Цитировать
Скада сможет определить true и false как 1 и 0?
Да, 1 соответствует True, 0 соответствует False.
Название: Re: Потеря связи с оборудованием в Simple-Scada
Отправлено: razorqhex от 15 Ноября 2019, 10:36:08
Simple_Scada, большое спасибо  :)