Конечный автомат, помогите

Простейшие вопросы в области инженерной разработки
Ответить
Supersilver3310
interested
interested
Сообщения: 3
Зарегистрирован: 23 окт 2016, 16:19
Версия LabVIEW: 2013
Контактная информация:

Конечный автомат, помогите

Сообщение Supersilver3310 »

Всем добрый вечер, день, утром, ну в общем у кого как) У меня небольшая проблема, нужно сделать в labview конечный автомат, а именно - автомобильная коробка передач. Лекций по Лабвью не было, в интернете найти информацию на русском языке оказалось трудно, особенно по конечным автоматам. В общем попытался вникнуть сам, вроде получилось, да данная программа просто "зависает" я никак не могу осуществить переходы( не пойму в чём ошибка, помогите пожалуйста разобраться, условие задачи и свой вариант программы я кинул в файлы.
Также есть небольшие примечания к этой программе : В каждый момент работы программы на лицевой панели должно отображаться текущее состояние
системы. Во время работы системы необходимо эмулировать сцепление. Значения спидометра и тахометра
вводятся пользователем через лицевую панель.
Но их я пока не учитывал, т.к. ещё не разобрался с переходами состояний.
P.S. И да, если кто знает хорошие книжки по конечным автоматам в Лабвью, или просто видеоуроки на русском, просьба скинуть ссылки=)
Вложения
Mechanic.zip
(76.06 КБ) 129 скачиваний
Alex Dem
assistant
assistant
Сообщения: 119
Зарегистрирован: 06 май 2015, 22:24
Версия LabVIEW: 2014, 2018
Благодарил (а): 1 раз
Поблагодарили: 1 раз
Контактная информация:

Re: Конечный автомат, помогите

Сообщение Alex Dem »

Попробуйте посмотреть http://www.labviewportal.org/viewtopic.php?f=21&t=8424.
Переход между состояниями можно осуществить, как на картинке в приложении.
Вложения
П1.png
П1.png (5.82 КБ) 4590 просмотров
Artem.spb

Activity Автор
professor
professor
Сообщения: 3406
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 176 раз
Контактная информация:

Re: Конечный автомат, помогите

Сообщение Artem.spb »

В :labview: конечный автомат называется "машина состояний", так информацию найти проще.
Есть хорошая книга "LabVIEW: стиль программирования", Блюм П., там в том числе и разные реализации машины состояний описаны, но не уверен, что начинающему будет с ней просто.
Конкретно в вашем случае проблема в том, что event-структуры распиханы по разным кейсам, получается, что я не могу из какой-нибудь первой передачи перейти сразу в 3ю.
И не ошибка, а особенность event в том, что при наступлении события панель блокируется до тех пор, пока событие не будет обработано (это меняется в настройках). Именно поэтому ваши переходы не осуществляются, а программа при этом не реагирует больше.
Я бы сделал так:
event.png
переходы могут происходить как в таймауте при обработке текущего состояния (по времени например), так и в обработке нажатий пользователем на кнопки.
Supersilver3310
interested
interested
Сообщения: 3
Зарегистрирован: 23 окт 2016, 16:19
Версия LabVIEW: 2013
Контактная информация:

Re: Конечный автомат, помогите

Сообщение Supersilver3310 »

Artem.spb, спасибо большое за развёрнутый ответ, а не могли бы пожалуйста по подробней рассказать, как в настройках убрать вот эту блокировку интерефейса при использовании event-ов?
Supersilver3310
interested
interested
Сообщения: 3
Зарегистрирован: 23 окт 2016, 16:19
Версия LabVIEW: 2013
Контактная информация:

Re: Конечный автомат, помогите

Сообщение Supersilver3310 »

Alex Dem, старался делать так, как вы предложили, да вот пока не понимаю, как сделать переход сразу в несколько состояний, оператор select позволяет выбрать либо одно, либо другое, а в моём случае, нужно, что-бы он переходил в один из пяти кейсов по моему усмотрению, хотя я может ещё тот чайник ещё, мало что понимаю) попытаюсь разобраться, в любом случае, спасибо за ответ)
Artem.spb

Activity Автор
professor
professor
Сообщения: 3406
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 176 раз
Контактная информация:

Re: Конечный автомат, помогите

Сообщение Artem.spb »

Supersilver3310 писал(а):Artem.spb, спасибо большое за развёрнутый ответ, а не могли бы пожалуйста по подробней рассказать, как в настройках убрать вот эту блокировку интерефейса при использовании event-ов?
lock.png
Но я настоятельно не рекомендую убирать эту настройку в вашем случае, иначе вы получите совсем неадекватное поведение программы. Если нажата кнопка, обработчик которой в другом кейсе, то событие поставится в очередь, и как только до кейса дойдёт цикл, оно (событие) будет обработано, и машина "вдруг сама" переключит передачу.
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2211
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 27 раз

Re: Конечный автомат, помогите

Сообщение Borjomy_1 »

да вот пока не понимаю, как сделать переход сразу в несколько состояний
Переход сразу в несколько состояний сделать невозможно. Это противоречит самому понятию "конечный автомат". Текущее состояние может быть только одно. Другое дело, что несколько состояний можно "пройти", от одного к следующему и так далее.
rbl
assistant
assistant
Сообщения: 122
Зарегистрирован: 09 дек 2014, 10:14
Версия LabVIEW: 7-2015
Откуда: Санкт-Петербург
Контактная информация:

Re: Конечный автомат, помогите

Сообщение rbl »

Supersilver3310 писал(а):Alex Dem, старался делать так, как вы предложили, да вот пока не понимаю, как сделать переход сразу в несколько состояний, оператор select позволяет выбрать либо одно, либо другое, а в моём случае, нужно, что-бы он переходил в один из пяти кейсов по моему усмотрению, хотя я может ещё тот чайник ещё, мало что понимаю) попытаюсь разобраться, в любом случае, спасибо за ответ)
Переход сразу в несколько состояний _одновременно_ нереализуем поскольку конечный автомат это набор детерминированных состояний.
Если же у Вас проблемы с описанием перехода в одно из 5и состояний, то для начала нужно обратится к изучению булевой алгребры, а уже потом приступать к программированию.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Для чайников»