Конечный автомат (программирование в LabVIEW) - State machine (LabVIEW programming)

А Государственный аппарат это тип техники программирования, который используется в большинстве различных языков программирования. Конечный автомат - особенно важный и гибкий инструмент, который используется в LabVIEW программирование, потому что кодирование очень легко поддерживать, документировать и повторно использовать.[1]

Введение в конечные автоматы

Конечные автоматы вращаются вокруг трех концепций: состояния, события и действия. Состояние - это позиция или статус, в котором находится программа, когда она работает над проблемой. Например, состояние может ожидать, пока пользователь что-то сделает, или выполнить вычисление. Состояния работают, чтобы разбить общую картину и сделать все более гладким. Их разумная разработка поможет повысить эффективность работы конечного автомата. События - это события, которые имеют особое значение для самой программы. Пример, который мы будем строить, - это торговый автомат, который выдает товар после того, как пользователь вставил правильную сумму денег. Событием для этой программы может быть внесение денег или нажатие кнопки запуска. Действие - это то, как программа отреагирует на конкретное событие, которое произошло.[1]

Конечные автоматы в LabVIEW

В LabVIEW, конечные автоматы еще мощнее. Конечный автомат может помочь программе разумно реагировать на различные типы данных, которые может ввести пользователь.[1] Чтобы объяснить эту функцию, мы будем использовать простую программу для торгового автомата, чтобы проиллюстрировать эту технику.

Общие устройства конечного автомата

Простой цикл while, расположенный в цикле while, с использованием пронумерованных констант и регистров сдвига

В LabVIEW конечные автоматы можно запустить, просто создав цикл while со структурой case, расположенной внутри цикла. Цикл while может иметь привязанную к нему специальную константу, называемую перечисляемой константой. Перечислимая константа - это постоянное слово или фраза, заменяемая на простое целое число от 0 до п - 1, где п это количество дел, которое пользователь хотел бы иметь. Это значительно упрощает программирование для пользователя, потому что вместо того, чтобы смотреть на цифровые коды, они смотрят на несколько слов, описывающих, что происходит. Конечный автомат также сильно зависит от регистров сдвига. Сдвиговый регистр используется для передачи информации в цикле while. Например, сдвиговый регистр будет начинаться с информации, которая будет обрабатываться в цикле. После завершения работы новое значение может быть сохранено в регистре сдвига, чтобы использовать его в начале цикла в следующий раз.[2] Далее все, что нужно сделать программисту, - это добавить задачи для каждого случая индивидуально. После того, как начальная нумерованная константа создана, часто имеет смысл преобразовать ее в определение типа (обычно называемое определением типа). Превращение перечисляемой константы в тип def. позволяет пользователю продолжить копирование оригинала и повторно использовать его в программе, как обычный элемент управления, за исключением типа def. изменение одного экземпляра изменяет их все. Тип def. позволяет программе быть более надежной и упрощает ее изменение, если нужно добавить что-то новое.

Пример простого торгового автомата

Пример конечного автомата LabVIEW (Начальный случай) .png

В примере с торговым автоматом мы используем регистры сдвига для передачи общей суммы денег в автомате и перечисляемых констант, которые контролируют, в каком случае мы находимся. Когда мы смотрим на нашу картинку начального случая, мы можем видеть регистры сдвига слева и справа, а пронумерованные константы посередине. мы также можем видеть внизу изображения вкладку, которая используется для отображения каждого отдельного раздела, записываемого в качестве индикатора. Делая это, мы исключаем возможность выхода пользователя из цикла и блокирования его в том случае, в котором он должен находиться. Когда мы находимся на начальном этапе программы, мы хотим убедиться, что пользователь прав. там с программой.

Пример конечного автомата LabVIEW (стартовая блок-схема) .png

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

Пример конечного автомата LabVIEW (Insert Money Case) .png

Оказавшись в случае «Вставить деньги», пользователь снова будет здесь, чтобы продолжить добавлять деньги к общей сумме, которая у него была до сих пор, с помощью регистров сдвига и кнопок, которые добавляют деньги каждый раз, когда вы их нажимаете. Это основной случай, когда большая часть работы выполняется и где торговый автомат максимально реален, без добавления реальных монет, в каждом другом случае большая часть работы выполняется в фоновом режиме. После того, как пользователь закончил добавление денег, он нажимает кнопку «Завершение ввода денег», чтобы перейти к случаю «Выдача».

Пример конечного автомата LabVIEW (Вставить блок-схему изменения) .png

«Вставить денежный ящик» также меняет, какая вкладка отображается на вкладке «Вставить сдачу» на блок-диаграмме. Здесь пользователь может вставить деньги, а также увидеть, сколько денег было на экране «Общее внесенное изменение».

Пример конечного автомата LabVIEW (Диспенсер) .png

Случай «Раздача» начинается с первой проверки, чтобы убедиться, что пользователь вложил достаточно денег для покупки предмета. В этом случае существует вторая структура кейса для обработки двух вариантов: достаточно денег или недостаточно денег. Если в системе достаточно денег, появится окно сообщения с благодарностью за покупку предмета, а затем сумма денег, необходимая для покупки предмета, вычитается из общей суммы денег в системе. Если в системе недостаточно денег, программа выводит новое сообщение о том, что денег недостаточно, и отправляет все деньги, которые были ранее вставлены, прежде чем перейти к «завершающему» случаю.

Пример конечного автомата LabVIEW (блок-схема изменения дозирования) .png

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

Пример конечного автомата LabVIEW (конечный случай) .png

«Конечный» случай - это очень простой случай, который работает, просто задерживая программу, чтобы дать пользователю достаточно времени, чтобы убедиться, что он получил свою сдачу и взял свой предмет. Через 5000 миллисекунд (5 секунд) таймер ожидания используется, увеличивается, и программа возвращается на начальную страницу, ожидая, пока другой пользователь не придет и начнет процесс заново.

Преимущества

Конечный автомат часто используется, потому что его легко быстро запустить и добавить или удалить части программы. Конечные машины работают таким образом, чтобы помочь разработчику организовать работу.[3]

Рекомендации

  1. ^ а б c Горький, Рик. Расширенные методы программирования LabVIEW. Бока-Ратон: CRC Press LLC, 2001.
  2. ^ Страница справки LabVIEW из LabVIEW 2011.
  3. ^ «Учебник: Государственные машины», www.ni.com, 2014.