Вход

Просмотр полной версии : ПЛК и мультимедиа (управление звуком)



Нестеров Станислав
04.06.2017, 17:51
Здравствуйте товарищи!

Нужна помощь в решении одного очень интересного вопроса.

Мне предложили автоматизировать квест – рум (игра такая, бродить по комнате и решать загадки) в программировании алгоритма проблем нет. Но вот беда заказчику необходимо музыкальное оформление, а именно: 4 комнаты в каждой своя музыка (аудио система на все комнаты одна) т.е. игроки находятся в комнате А – играет один трек. Игроки перешли в комнату Б, сработал датчик движения в комнате Б – музыка первой комнаты А отключилась, включилась музыка комнаты Б. Это получается общий фон.
По мимо этого необходимо воспроизвести какой либо короткий звук, по сигналу контроллера. Например нажали кнопку, и в колонках раздался крик совы (условно).

Можно было бы прикрутить к контроллеру несколько MP3 плееров, но мне как то раз приходилось собирать квест по готовому проекту. И там это решалось при помощи SCADA системы. Какую SCADA систему можно выбать под такую задачу? Или решить это каким либо другим способом.

Евгений Кислов
04.06.2017, 18:10
Добрый день. Один из вариантов решения - использовать панельный контроллер СПК207, который имеет аудиовыход:
http://www.owen.ru/catalog/panelnij_programmiruemij_logicheskij_kontroller_ov en_spk207/opisanie

Уже есть примеры реализации квест-румов на их базе:
http://www.owen.ru/projects/11999645/about
http://www.owen.ru/projects/44433177/about (здесь использовался СПК110 без аудиовыхода)

SA104
04.06.2017, 18:46
Добрый день.
Давно занимаюсь квестами.
Для проигрывания звука по событию использовал разные варианты.
Если дорого, то СПК207, на нем одном можно весь квест сделать, только модули ввода-вывода добавить.
Применял его уже в четырех квестах, работает без нареканий.
Если бюджетно, то модуль MP112 от МастерКит - 5 входов, 5 звуков. Выход есть линейный и на динамики.

Нестеров Станислав
04.06.2017, 20:58
Большое спасибо Вам SA104, и Вам Евгений Кислов.
Оба варианта хороши, у товарища есть СПК207 в личном пользовании, завтра попробую с ним поработать.
О результатах отпишусь!
Еще раз спасибо! Тему пока не закрывайте пожалуйста, чувствую по СПК будут вопросы.

SA104
04.06.2017, 21:45
Удачи! )

Нестеров Станислав
06.06.2017, 14:12
Добрый день. Один из вариантов решения - использовать панельный контроллер СПК207, который имеет аудиовыход:
http://www.owen.ru/catalog/panelnij_programmiruemij_logicheskij_kontroller_ov en_spk207/opisanie

Уже есть примеры реализации квест-румов на их базе:
http://www.owen.ru/projects/11999645/about
http://www.owen.ru/projects/44433177/about (здесь использовался СПК110 без аудиовыхода)

Такой вопрос: тестирую аудиовыход СПК207, программу написал, но, компилятор предлагает заменить функцию SysExecute на THEN, не заливает программу в контроллер, библиотеку подключил к проекту. Как мне скомпилировать программу?

Евгений Кислов
06.06.2017, 15:45
Лучше использовать свежую прошивку и таргет-файлы, там работа со звуком происходит через конфигурацию - это гораздо проще и надежнее.
http://www.owen.ru/forum/showthread.php?t=25756

См. документ СПК. Описание таргет-файлов, узел Sound.

Нестеров Станислав
06.06.2017, 18:40
Глупый вопрос, но все же. Для управления старт и стоп в узле Sound я могу использовать переменную типа BOOL. Для включения необходимого трека (как я понял их может быть максимум 80, из ходя из количества каналов) мне необходимо использовать переменную типа STRING. Я к сожалению не очень селен в других языках, могу писать на LD и немного на FB. Как мне сделать так чтобы переменная "A" типа BOOL, включала нужный трек (нужный к***** допустим Wav-file path {1}).

Вопрос второй: включение и отключение аудио фаила (или выхода?) происходит только одной переменной в канале Start/Stop, возможно ли сделать так: играет фоновая музыка по каналу Wav-file path {1}, затем по другой переменной на некоторое время включается Wav-file path {2}, издает резкий звук, и Wav-file path {2} отключается, но Wav-file path {1} продолжает играть как и играл, не отключаясь. Т.е. два звука в какой то момент времени проигрываются вместе.

Спасибо!

Евгений Кислов
06.06.2017, 20:35
80 - это размер (в символах) строковой переменной, которая содержит имя трека. В принципе, число треков ограничено только свободным дисковым пространством.

Вся работа со звуком ведется через две переменные - имя трека и сигнал управления (играть этот трек/перестать). Соответственно, если надо время от времени играть разные треки - то останавливаем проигрывание (если запущено), меняем имя трека, запускаем проигрывание трека. Плюс управление громкостью, если необходимо.

1. Вот упрощенный пример на CFC для одного трека. Пока переменная xTrack01 имеет значение TRUE, проигрывается трек с названием Track01.wav, лежащий в папке /mnt/ufs/root. Загрузить треки можно через утилиту WinSCP (см. подробнее в документе СПК. FAQ). Соответственно, в ситуации с несколькими треками можно просто растиражировать приведенный пример и, при необходимости, реализовать систему приоритетов (если, например, возможна ситуация, при которой условия проигрывания разных треков начнут выполняться одновременно).
31567 31568

2. Одновременное проигрывание нескольких треков не поддержано, так же как и пауза.

Нестеров Станислав
07.06.2017, 13:32
31586
31588
Написал программу по Вашему примеру. Не получается запустить аудиофаил :confused:. При включении переменной kot присваивается путь '/mnt/ufs/root/kot.wav' к фаилу, и происходит включение трека переменной xPlayTreck01. При положительной переменной А, переменной С (тип BYTE) присваивается значение 100 (уровень громкости). Но воспроизведение фаила не происходит. Подскажите где я ошибся?

Прошивку обновил с 3.951 до 3.954, аудио выход рабочий (при включении контроллера издается характерный щелчек при подключении)

Евгений Кислов
07.06.2017, 13:39
31586
31588
Написал программу по Вашему примеру. Не получается запустить аудиофаил :confused:. При включении переменной kot присваивается путь '/mnt/ufs/root/kot.wav' к фаилу, и происходит включение трека переменной xPlayTreck01. При положительной переменной А, переменной С (тип BYTE) присваивается значение 100 (уровень громкости). Но воспроизведение фаила не происходит. Подскажите где я ошибся?

Версия прошивки 3.951, аудио выход рабочий (при включении контроллера издается характерный щелчек при подключении)

У вас порядок действий нарушен (сначала запускается трек, а только потом указывается путь к нему). Можно поменять вручную: ПКМ на элемент - Порядок действий.

Нестеров Станислав
07.06.2017, 14:40
Порядок действий не помог.
Поменял прошивку на 3.954, заменил аудио фаилы на другие, переместил в другую папку. Есть следующие предупреждения (Скрин).
Значение 100 просто присваивается к переменной С ее тип BYTE, это верно?

Аудио не воспроизводится :(

31590

Евгений Кислов
07.06.2017, 18:06
Таргеты версии 3.5.4.25 рассчитаны на использование прошивки 5.331.
Я уже давал ссылку:
http://www.owen.ru/forum/showthread.php?t=25756

Нестеров Станислав
07.06.2017, 22:00
Результата нет (( звук не воспроизводится.
Сменил прошивку на 5.331, обновил все пакеты CODESYS.
Разобрался почему требовало заменить SysExecute на THEN, устранил, но и такой способ не запустил аудио фаил (скрин)

31595

Выкладываю свою программу в CFC, и аудио фаилы которые я использую (архив). Не могу понять где я ошибся?
Пытаюсь прослушать трек с СПК обычными наушниками с плеера, слушаю с них музыку с ноута, наушники рабочие.
Уже начинаю грешить на аудио выход.
Я в отчаянии :(.

Ссылка на архив с программой: https://ru.files.fm/u/3pydcnx2

Евгений Кислов
08.06.2017, 07:09
Ваши файлы действительно не проигрываются. Но с моим файлом ваша программа работает нормально.
http://rgho.st/6grzRcW7j

Каким образом были получены ваши wav-файлы? СПК поддерживает PCM и IEEE Float Audio, вероятно, в ваших файлах использовалось что-то другое (очень похоже на mp3 внутри wav-контейнера).

Нестеров Станислав
08.06.2017, 18:00
Большое спасибо за помощь. Ваш фаил - музыка для моих ушей, наконец то мой СПК 207 заиграл ))).
Фаил скачал из интернета, в преть буду лучше выбирать ресурс для скачивания.

Большое спасибо за Ваш труд, и терпеливое отношение к нам - пользователям ))).

Тему можно закрывать, истина установлена! )))