Вопросы по скриптам в Simple-Scada 2

Автор Simple-Scada, 29 января 2016, 15:19:20

Timothy Clement

Здравствуйте! Помогите разобраться с работой процедуры PlayUserSound. Хотел сделать скрипт "Изменились переменные", в котором в цикле пробегаются все биты слова хранящего состояние датчиков уровня, и если бит true, загорается лампочка и проигрывается моё сообщение "Бункер заполнен". Сделал тестовый проект с одной лампочкой и скриптом + на лампочку для пробы звука сделал скрипт по OnClick c кодом
Код: pascal
PlayUserSound('KHP','du1_0.ogg',false);
. При нажатии на лампочку звук проигрывается, всё хорошо. Когда ставлю бит в 1, лампочка загорается зелёным, но звук не проигрывается почему-то. Но самое интересное, что если закрыть клиент и запустить его снова когда бит в 1 - лампочка становиться зелёной и звук проигрывается. Если после этого снова сбросить бит в 0 и поставить в 1, опять только загорается лампочка. Не могу понять почему всё работает только однократно при запуске проекта. Код скрипта прилагаю.

Simple-Scada

Здравствуйте.

Взяли Ваш код без изменений. Проигрывание работает как на клик, так и на OnDataChange. Может быть в первом случае в качестве имени клиента используются русские буквы "КНР" (ка, эн, эр), а во втором английские (кей, эйч, пи)? Тогда будет работать только один скрипт. Если же все имена заданы в одной и той же раскладке, то вышлите нам проект на support@simple-scada.com для проверки.

Timothy Clement

Добрый день. Разобрался, всё оказалось ещё проще. Я не знал что в фоне звук не воспроизводится  :-[ Открывал клиента, вызывал окно симулятора ПЛК, устанавливал бит в 1 и просто наблюдал как загорается лампочка, звук не слышал т.к. активным было окно симулятора а не клиент. Теперь всё понятно, спасибо за помощь! Теперь операторы не смогут сериалы смотреть во время работы - аварию не услышат  ;D

Миханик

Цитата: Timofei от 19 февраля 2018, 17:37:50Я не знал что в фоне звук не воспроизводится
А вот это кстати плохо, что в фоне не воспроизводится

Victor_P.

Миханик, ИМХО, сворачивание скады в фон равнозначно уходу оператора с рабочего места. Этого нельзя делать.

AndreiKov

Victor_P., а может оператор отчёт в Экселе просматривает, звук в фоне однозначно должен быть.

Миханик

Цитата: AndreiKov от 20 февраля 2018, 13:23:07Victor_P., а может оператор отчёт в Экселе просматривает, звук в фоне однозначно должен быть.
поддерживаю. Либо разработчику должен быть предоставлен выбор: воспроизводить звук в фоне или нет.

serg

При открытой скаде звук работает , согласно скрипту , согласно значению переменной . Если окно свернуть , звук пропадает .
Как сделать , чтобы воспроизведение звука было слышно и при свёрнутой программе ?

Simple-Scada

#593
serg, звуки не воспроизводятся когда окно скады не в фокусе.

UPD: Начиная с версии 2.3.6.11 звук на клиентах воспроизводится всегда (независимо от состояния окна).

serg

Подскажите . На скаде хочу сделать 3 кнопки без фикации и одно поле . При нажатии кнопок в поле должно показывать номер кнопки 1 - 3 и отправлять в контроллер .  Не могу разобраться с тем как это сделать . Я так понял нужно три виртуальных переменных для каждой кнопки и привязать их к переменной поля . А как написать скрипт не разберусь .

AndreiKov

#595
serg, для описанной задачи не требуются ни три виртуальных переменных, ни скрипт. Нужна только одна переменная, связанная с соответствующим OPC-тегом.
Поле и три кнопки с фиксацией! (читайте Руководство) привязываете к этой переменной. У кнопок оставляете по одному состоянию со значениями 1,2,3 соответственно. Всё.

serg

AndreiKov. Спасибо за помощь ! Всё получилось .

Ragnarok

Помогите с кодом. Есть 6 переменных типа Smallint. Задача: если значение хотя бы одной переменной равно -1, то должно выполниться действие, изменить цвет или вывести сообщение. Неважно какое действие, важен сам скрипт.

Пишу диплом

Пишу дипломный проект, в котором присутствует автоматизированное управление котлоагрегатом и параметрическая диагностика.
Возник вопрос: как написать скрипт для управления над заслонкой?
еcolor=red]Есть заслонка, к нему прикрепил Поля(Field)- значения параметров и  три кнопки ( Откр, Стоп, Закр) - нужно чтобы заслонка меняла цвет в зависимости от нажатия кнопок и значение в Поле(Field) увеличивалась/уменьшалась при открытии/закрытии заслонки, а при нажатии СТОП сохраняла последнее значение. СКРИНШОТ 1

Victor_P.

#599
Цитата: Ragnarok от 01 марта 2018, 12:10:48Помогите с кодом.
Создаем скрипт с запуском по изменению переменной. Добавляем в него все необходимые переменные, как описано здесь.
Создаем в нем процедуру с необходимым кодом.
Код скрипта:
Код: pascal
    { Variable - это та переменная, которая изменилась }
    if Variable.AsInt = -1 then
    begin
      // ...
    end;
, код между begin...end будет выполняться каждый раз когда любая переменная из заданного списка стала равна -1.