Машина состояний: взаимодействие While Loop и Case

Обсуждение, связанное с разработкой ПО верхнего уровня

Машина состояний: взаимодействие While Loop и Case

Postby LEO_NIK on 15 Dec 2016, 15:46

Здравствуйте! Разрабатывая модель радиостанции с использованием МАШИНЫ СОСТОЯНИЙ для разных режимов работы, столкнулся с вопросами. Привожу простой пример, на котором покажу свои вопросы. В примере нужно сделать так, чтобы после нажатия на кнопку ВКЛ на лицевой панели появилось идущее вперёд время и дальше две ситуации: либо регулятор звука в нулевом, либо в каком-то другом положении от предыдущего включения ВП. Если регулятор звука в нулевом положении, то мигает предупредительная надпись и надо регулятор звука (пока самого звука нет, но для вопроса это и не важно) поставить в любое положение (1, 2...). Исчезнет мигающее предупреждение и появится индикация выставленного уровня в виде прямоугольников, пропорционально положению регулятора. Вот на этом надо бы остановиться, но чтобы и время двигалось вперёд и была возможность выставить на лицевой панели любой другой уровень. Это дежурный режим, в котором и уровень звука должен регулироваться с описанным выше условием, и время должно "идти", и чтобы можно было выключить прибор. Как остановить выполнение программы на дежурном режиме? Куда надо отправить программу селектором Case Structure после выполнения в моём примере селектора "Индикатор звука"? На лицевой панели будет ещё несколько кнопок и они должны быть доступны в дежурном режиме для работы, т.е. программа должна отслеживать состояние элементов на лицевой панели. Намеренно делал маленькими фрагменты машины состояний, чтобы быть близко к реальному проекту, где внутри каждых Case содержится фрагмент кода.
И более мелкий вопрос. После первого же положения регулятора звука перестаёт мигать надпись и программа идёт дальше. А как сделать так, чтобы программа выжидала, когда закончится вращение потенциометра (пользователь может вращать регулятор как на увеличение, так и на уменьшение: 2-й, 3-й, ... ЛЮБОЙ уровень) и только потом выходила из этого цикла, отображая соответствующее количество "прямоугольников" установленного уровня. Спасибо.
Attachments
Машина состояний. Взаимодействие Case и While Loop.rar
(23.94 KiB) Downloaded 71 times
LEO_NIK
user
user
 
Posts: 86
Joined: 09 Sep 2016, 20:09
LabVIEW Version: 2013
Karma: 0

Re: Машина состояний: взаимодействие While Loop и Case

Postby Artem.spb on 15 Dec 2016, 19:36

самое банальное - поменять местами case и event.
события-кнопки что-то желают, всё остальное происходит в таймауте, там и будет case по машине состояний.
В нынешней конфигурации система очень опасна. Попробуйте в состоянии "звук" выключить рубильник. Подозреваю, что вы опечалитесь тем фактом, что с программой больше ничего нельзя сделать, потому что она не заблокировала все контролы (точнее, панель управления).
Artem.spb
expert
expert
 
Posts: 1419
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 246
CLD hardware I/O VIP freelance

Re: Машина состояний: взаимодействие While Loop и Case

Postby LEO_NIK on 15 Dec 2016, 20:22

Artem.spb wrote:... поменять местами case и event

Спасибо. Проверю. А не автоматом ли появляется очередной case в машине состояний? Это к тому, что можно ли поменять местами case и event? Попробую.

Artem.spb wrote:... Попробуйте в состоянии "звук" выключить рубильник

Спасибо, учту замечание. Пробовал. Да, система ни на что не реагирует и при повторном нажатии, если не ошибаюсь, весь цикл загрузки повторялся. Отключал RUN. Но я как-то на это не обратил внимания, поскольку кнопку ВКЛ/ВЫКЛ для ВЫКЛ собирался кодировать в самом конце программирования. Она должна выключать радиостанцию при нажатии на неё (если точно, то при отжатии) и удержании в нажатом состоянии не менее 3 сек. А если меньше, то она никак не должна проявлять себя.
LEO_NIK
user
user
 
Posts: 86
Joined: 09 Sep 2016, 20:09
LabVIEW Version: 2013
Karma: 0

Re: Машина состояний: взаимодействие While Loop и Case

Postby Blackman on 15 Dec 2016, 20:39

Пример
Attachments
Simplest SB State Machine.vi
(24.22 KiB) Downloaded 92 times
Blackman
leader
leader
 
Posts: 798
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 234
VIP

Re: Машина состояний: взаимодействие While Loop и Case

Postby LEO_NIK on 15 Dec 2016, 21:25

Спасибо, Blackman. Запустил программу, просто конфетка! Но пока не нашел, где устанавливаются цвета мигания Sound Volume? Если не ошибаюсь, то желтый/красный - это "по умолчанию"? А если поменять?
Как я понял, мне надо разобраться, как в деталях работает Event Structure. Спасибо ещё раз!
LEO_NIK
user
user
 
Posts: 86
Joined: 09 Sep 2016, 20:09
LabVIEW Version: 2013
Karma: 0


Return to Лицевая панель

Who is online

Users browsing this forum: No registered users and 7 guests

cron