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

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

Автор Тема: Кнопка "зависла"?  (Прочитано 312 раз)

Серега

  • Постоялец
  • ***
  • Сообщений: 249
    • Просмотр профиля
Кнопка "зависла"?
« : 10 Января 2025, 11:51:18 »
Добрый день!
Кнопка без фиксации, привязка к биту внешней переменной как бы "зависла" в одном состоянии. При повторном нажатии "отвисла" со слов очевидцев. Остальные кнопки, построенные по такому же принципу в момент зависания работали.
Понимаю Ваши рекомендации об использовании кнопок с фиксацией и их использовании.
Сейчас хотелось бы понять из за чего это происходит? Это проблема клиента, сервера скады или среды передачи?
Жду вопросов и предложений.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3156
    • Просмотр профиля
    • Simple-Scada
Re: Кнопка "зависла"?
« Ответ #1 : 12 Января 2025, 11:38:22 »
Здравствуйте.

Все кнопки, независимо от типа, всегда отображают состояние, которое соответствует значению переменной. Если кнопка осталась в нажатом состоянии, значит бит с которым связана переменная остался в значении = 1 и не сбросился на 0. Для кнопок без фиксации при нажатии на кнопку в бит записывается 1, при отпускании 0. Можно предположить, что по каким-то причинам запись 0 не выполнилась (из-за разрыва связи с OPC-сервером в момент присвоения, из-за перезаписи переменной в программе ПЛК и т.п.). Мы всегда рекомендуем полностью исключить использование кнопок без фиксации во всех проектах, т.к. они никогда не будут полностью безопасными, всегда есть вероятность сбоя ПК (или сбоя связи) после нажатия на кнопку и отпускание уже не выполнится.

Второй вариант: значение бита перезаписалось другой кнопкой, которая работает с другим битом той же переменной. Процесс присвоения значений значительно усложняется, когда несколько кнопок работают с битами одной переменной, ведь со стороны скады нельзя изменить в переменной только один бит. Т.к. переменная одна, нужно всегда взять все биты (например, 00000000), изменить нужный бит (например, второй: 00000100) и отправить все биты на запись. В результате такого присвоения можно "затереть" значения других битов. И эта проблема является нерешаемой, так как скада и ПЛК работают в разных циклах (не синхронно). Со стороны скады можно только значительно уменьшить вероятность каких-либо проблем с перезаписью битов, выставив частоту опроса переменной равной 100 мс., чтобы циклы скады и ПЛК приблизились друг к другу.
Ещё одно решение: вместо работы с битами одной переменной, сделать отдельные Boolean переменные на ПЛК и импортировать их в скаду, чтобы в скаде также каждый бит был отдельной Boolean-переменной.

Серега

  • Постоялец
  • ***
  • Сообщений: 249
    • Просмотр профиля
Re: Кнопка "зависла"?
« Ответ #2 : 13 Января 2025, 08:55:04 »
Добрый день!
Ну в принципе экспериментируя убедились в проблеме на стороне ОРС.
Спасибо за разъяснения. Будем думать.