2015-02-03 1 views
0

Я пытаюсь решить упражнение с помощью машины Мура, но я немного смущен. Я не знаю, сколько штатов нужно.Как бы вы решили эту конечную машину (Мур)?

Входы:

  • A (переключатель): Переключение между автоматическим и ручным режимом.
  • P (кнопка): нажимайте высокий уровень при нажатии.
  • D (детектор движения): дает высокий уровень, если детектировать движение

Выходы:

  • L (лампа).

Условия:

  • Если мы в ручном режиме, L изменится (от 0 до 1) или (1 до 0), если нажать "P". Нам нужно снова нажать кнопку, чтобы снова изменить L (это не верно, удерживайте палец).
  • Если мы находимся в автоматическом режиме, L будет включен, а «D» обнаружит движение.
  • Пользователь никогда не будет нажимать «A» и «P» одновременно.
  • Когда вы переключаетесь с автоматического на ручной или ручной на автоматический, лампа должна проходить на низком уровне.
  • Когда вы переключаетесь с автоматического на ручной, лампа будет оставаться на высоком уровне при обнаружении движения.

Большие проблемы - это последние условия. Я не знаю, как я могу справиться с ними. Нужно ли создавать дополнительные состояния для этих условий? Какие шаги вы предпримете для решения этой задачи?

Заранее спасибо

+0

Что вы подразумеваете под вторым по последнему условию? Что произойдет, если переключатель A переключится во время включения лампы? – augurar

+0

@augurar При переходе лампа должна пройти через состояние выключения, а затем снова нормально работать –

ответ

1

Во-первых, дизайн отдельные конечные автоматы для автоматического и ручного случае. Для автоматического случая требуется только два состояния (включение или выключение лампы). Для случая руководства необходимо 4 состояния, чтобы отслеживать, была ли кнопка выпущена с момента последнего нажатия.

Затем добавьте переходы между этими машинами на основе значения переключателя A. Добавляйте только переходы между состояниями, в которых лампа выключена. Это обеспечит сохранение двух последних условий. Если лампа горит, когда A переключается, ничего не произойдет, пока машина не перейдет в состояние «выключено».

+0

Спасибо, что я это делаю. –

+0

Чтобы выполнить второе-последнее условие, мне нужно будет создать переход от ручного (выключенного) к авто (выключен), а другой переход из ручного (включен) в автоматический (выключен). Это верно? Чтобы сохранить последнее условие, мне нужно будет создать переход от первого и третьего состояний авто к включенному состоянию ручного режима. Это верно? Я хорошо объяснил? Еще раз спасибо. –

+0

@ AlbertoFernández Переключатель «auto» не должен изменять состояние лампы. И мы знаем, что нам нужно переходить между режимами, когда лампа выключена. Таким образом, переходы между авто и ручным должны только подключать «выключенные» состояния в каждом режиме. – augurar

Смежные вопросы