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

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

Автор Тема: Работа кнопки без фиксации  (Прочитано 9651 раз)

tonyk

  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Работа кнопки без фиксации
« : 11 Июля 2017, 19:07:56 »
Здравствуйте!

Столкнулся со странной работой кнопок без фиксации. Если где-то уже дан ответ на такой же вопрос, то не ругайтесь, а ткните пальцем где читать.

Имеется Simple-SCADA 2.2.2.0 (CC), Fastwel Modbus OPC Server 1.29 и моя программа в контроллере.

Кнопка без фиксации привязана к биту в регистре хранения. При нажатии на кнопку в привязанном бите появляется 1, при отпускании 0. Так должно быть, по-моему. На практике же при отпущенной кнопке бит очень часто не обнуляется. У меня в программе сделана защита на случай дисконекта между контроллером и сервером, которая каждую секунду просто пишет в этот регистр 0 и отображает в логе, естественно, нулевое значение. Но в следующем цикле OPC сервер всё равно записывает в этот регистр ненулевое значение. Бит не сбрасывается вне зависимости от того, запущен СС-клиент или нет. Последующие щёлканья по кнопке проходят с переменным успехом, иногда бит сбросится, а иногда по кнопке долго и без результат бегает полоса ожидания.

Вопрос: как мне гарантировано добиться, чтобы при отпущенной кнопке в привязанном к ней бите всегда был 0, а при нажатом 1?

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3129
    • Просмотр профиля
    • Simple-Scada
Re: Работа кнопки без фиксации
« Ответ #1 : 12 Июля 2017, 14:26:10 »
Здравствуйте.
Проверим работу с битами у кнопки без фиксации с данным OPC-сервером. В Вашем случае, т.к. контроллер обнуляет переменную каждую секунду, можно просто использовать кнопку с фиксацией, но у неё нужно оставить только одно состояние с значением = 1. Тогда при нажатии будет присвоена единица, а контроллер возьмёт на себя обнуление переменной.

Цитировать
Но в следующем цикле OPC сервер всё равно записывает в этот регистр ненулевое значение. Бит не сбрасывается вне зависимости от того, запущен СС-клиент или нет.
Это очень подозрительно. Кнопка не может просто так постоянно писать единицу в переменную. Может быть у Вас в каких-то скриптах идёт работа с этой переменной и присвоение единицы? Можете ли Вы выслать текущую версию проекта на почту поддержки support@simple-scada.com?

tonyk

  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Re: Работа кнопки без фиксации
« Ответ #2 : 12 Июля 2017, 15:36:14 »
В проекте нет ни каких скриптов.

Проект, диструбутив ОРС сервера и конфигурацию к ему выслал на почту.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3129
    • Просмотр профиля
    • Simple-Scada
Re: Работа кнопки без фиксации
« Ответ #3 : 14 Июля 2017, 09:43:29 »
tonyk, спасибо за проект, вчера сделали большое количество тестов с этим проектом и OPC-сервером. Кнопка без фиксации при работе с битами при нажатии берёт текущее значение переменной, например 000000, меняет в нём соответствующий бит (допустим второй) на 1 и отправляет OPC-серверу на присвоение 010000. При отпускании кнопки происходит обратный процесс. Скада учитывает то, что OPC-сервер может не сразу выполнить присвоение, а пользователь при этом может продолжить нажимать на другие кнопки, которые работают с другими битами той же переменной. На этот случай скада некоторое время хранит последнее значение в оперативной памяти и все присвоения получаются корректными, даже если OPC-сервер выполняет их не сразу. Разумеется, скада не может вечно работать со значением из оперативной памяти и есть лимит времени после которого это значение сбросится на то, что предлагает OPC-сервер, иначе могла бы произойти рассинхронизация значений в скаде и на OPC-сервере. Но данный OPC-сервер по каким-то причинам выполняет присвоения чрезмерно долго, в наших вчерашних тестах бывало, что присвоение проходило более чем через 5 секунд (смена значения в контроллере может выполниться быстрее, но скада получает результат только через 5 сек.) после отправки значения со скады. Соответственно, если нажать кнопку несколько раз, или нажать несколько кнопок, то последнее присвоение выполнится через 20 секунд и более. Возможно OPC-сервер выполняет присвоения с такой задержкой из-за отсутствия связи с конечным устройством, или из-за того что он слишком старый и работает по OPC DA 2, или ещё по каким-то причинам. И здесь, конечно, никакие лимиты по времени и работа со значением из оперативной памяти не спасают, т.к. это слишком долгий интервал присвоения, если учесть, что частота опроса тега равна одной секунде. Поэтому правильным решением было бы сменить OPC-сервер на более современный, например arOPC, Insat Modbus OPC, или даже Lectus. Второй вариант: использовать тот же OPC-сервер, но все кнопки заменить на кнопки с фиксацией с одним состоянием (со значением = 1), а сброс на 0 выполнять на контроллере. Третий вариант: объявить отдельные битовые переменные и каждой кнопке назначить свою переменную.

tonyk

  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Re: Работа кнопки без фиксации
« Ответ #4 : 14 Июля 2017, 18:00:49 »
Благодарю за ответ!

Были у нас подозрения всвязи со странным поведением этого ОРС-сервера. Вы их по большей части подтвердили. Буду искать замену.

Я использую бесплатную версию вашей СКАДА для отладки и тестирования своего ПО для контроллеров. В качестве компенсации за бесплатное использование вашего труда пишу о результатах его применения и свои предложения по улучшению. Очень приятна оперативная реакция на выявленные проблемы у пользователей, пусть даже в итоге их причина и не в С-С. В последней редакции даже кнопочку в одном из диалогов по моей просьбе сделали! :) Чувствуется у вас желание и видна серьёзная работа по доводке продукта до высоких кондиций, уже поэтому приятно пользоваться им, даже сталкиваясь с мелкими недоработками и ошибками.

Успехов вам!

tonyk

  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Re: Работа кнопки без фиксации
« Ответ #5 : 14 Июля 2017, 21:46:29 »
Хм, решил по вашей рекомендации сделать управление через кнопку с фиксацией и одним состоянием. Видать, перемудрил. Теперь при попытки нажать кнопку проект просто падает. Ссылка на падающий проект:

https://yadi.sk/d/kwIRGvG_3KzHjJ

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3129
    • Просмотр профиля
    • Simple-Scada
Re: Работа кнопки без фиксации
« Ответ #6 : 15 Июля 2017, 09:16:47 »
Цитировать
Очень приятна оперативная реакция на выявленные проблемы у пользователей, пусть даже в итоге их причина и не в С-С. В последней редакции даже кнопочку в одном из диалогов по моей просьбе сделали!
Спасибо за хороший отзыв, стараемся.

Видать, перемудрил. Теперь при попытки нажать кнопку проект просто падает. Ссылка на падающий проект:
Это происходит при нажатии на любую кнопку? Запустили Ваш проект, нажали вроде бы на все кнопки, всё работает. У Вас проблема возникает сразу при нажатии на кнопку? При этом выводится ли что-нибудь на сервере скады в Журнале?

tonyk

  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Re: Работа кнопки без фиксации
« Ответ #7 : 16 Июля 2017, 10:20:38 »
Проект падал при нажатии на любую кнопку с фиксацией.

А потом проект падать перестал.

Выяснилось, что после очередного обновления по умолчанию MySQL, в Windows перестала запускаться служба, связанная с ним. На это указывала запись в логе С-С о невозможности подключения к БД. Удалил базу (именно файлы самой базы), запустил переконфигурацию сервера, зашёл в редактор проекта и проверил связь с БД. Связь с БД появилась, а вместе с ней перестал падать проект. Вот такая ситуация, однако. Ещё наблюдение: такое же отваливание сервера MySQL происходило неоднократно и на рабочем компьютере после обновлений MySQL, там помогало удаление базы и запуск переконфигурирования MySQL через Workbench. Заметна корреляция между обновлениями MySQL, его запуском после обновления и падучестью С-С. Всё ПО ставилось с настройками по умолчанию. Может я что-то где-то не учёл в настройках?

Напрашивается следующее:

а) запретить автоматическое обновление MySQL, а после выполнения ручного проверять его работу в связке с С-С. Можно так делать, и как это делать- нужны рекомендации от вас как от разработчиков С-С;

б) при старте клиента С-С сразу отображать на экране сообщение о потери связи с сервером БД, если она настраивалась в проекте. А то пока не включишь тренды, не увидишь есть связь или нет.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3129
    • Просмотр профиля
    • Simple-Scada
Re: Работа кнопки без фиксации
« Ответ #8 : 17 Июля 2017, 09:30:40 »
tonyk, проверим и по возможности улучшим работу проекта при перезапусках службы MySQL и при обновлениях. Если сейчас нужна стабильная работа без переконфигурации БД, то можно отключить обновления MySQL (как показано на скринах во вложении) и проводить обновление СУБД и (при необходимости) переконфигурацию баз данных в подходящее для этого время.

Mishail

  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: Работа кнопки без фиксации
« Ответ #9 : 24 Августа 2017, 06:38:29 »
Добрый день!

Чтоб не плодить темы задам вопрос сюда.
Есть кнопка без фиксации, необходимо при нажатии на неё выдавать окно запроса пароля(некое подтверждение с паролем). Можно это как то реализовать в свойствах кнопки или только через скрипты делать?

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3129
    • Просмотр профиля
    • Simple-Scada
Re: Работа кнопки без фиксации
« Ответ #10 : 24 Августа 2017, 14:30:43 »
Здравствуйте.

Можно создать новое окно в проекте, разместить на нём любые компоненты и сохранить его. Затем у кнопки в свойстве "Окно" выбрать только что созданное окно. Теперь при нажатии на кнопку это окно будет отображаться.

Mishail

  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: Работа кнопки без фиксации
« Ответ #11 : 25 Августа 2017, 13:12:11 »
Тогда просьба для объекта "Поле" сделать пункт "ItsPassword", который скрывал вводимые символы под знаком *

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3129
    • Просмотр профиля
    • Simple-Scada
Re: Работа кнопки без фиксации
« Ответ #12 : 28 Августа 2017, 16:01:28 »
Mishail, а вариант с созданием страницы защищенной паролем Вам не подходит? См. Демо-проект, страница "С паролем".

Mishail

  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: Работа кнопки без фиксации
« Ответ #13 : 29 Августа 2017, 09:55:57 »
Приведу реальный пример использование пароля на кнопки управления(см.вложение)
На объекте потребовали реализовать управление КРУВ. На включение или отключение по подстанциям требуется выбрать КРУВ  и ввести пароль(пароль может быть уникальный для каждого КРУВ). Если пароль совпадал с заданным, то активируются кнопки в зависимости от текущего состояния КРУВ.
Так вот чтоб такое можно было реализовать на Вашей СКАДА системе не хватает возможности скрывать вводимые символы в объекте "Поле".

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3129
    • Просмотр профиля
    • Simple-Scada
Re: Работа кнопки без фиксации
« Ответ #14 : 29 Августа 2017, 10:01:02 »
Спасибо за пример. В ближайшем обновлении добавим такую возможность.