• Авторизация


LABVIEW. ИСПОЛЬЗОВАНИЕ CASE-СТРУКТУРЫ В ЛОГИЧЕСКОМ РЕЖИМЕ 02-05-2019 00:42 к комментариям - к полной версии - понравилось!


Как и было заявлено ранее, для демонстрации работы CASE-структуры откажемся от операндов "Операнд 1" и "Операнд 2", чтобы сделать акцент на логике работы виртуального прибора (см. рисунок).

0001 (572x354, 11Kb)
Пример заготовки на блок-диаграмме фрагмента "Умного калькулятора", не требующего участия каких-либо операндов

Для вывода на числовой индикатор только одного из адекватных ответов лишь одна кнопка из трёх должна быть нажата, а другие, соответственно, не нажаты. То есть:

- либо кнопка "Один" нажата, а кнопки "Два" и "Три" не нажаты,
- либо кнопка "Два" нажата, а кнопки "Один" и "Три" не нажаты,
- либо кнопка "Три" нажата, а кнопки "Один" и "Два" не нажаты.

Построим схему на блок-диаграмме в соответствии со сформулированной выше логикой. Начнём с первого условия: сигналы "Два" и "Три" логически перемножаются и инвертируются функцией объединённой арифметики. Полученный результат логически умножается на сигнал "Один" (см. рисунок).

0002 (696x446, 13Kb)
Составление логики для нажатой кнопки "Один" и не нажатых кнопок "Два" и "Три"

По аналогии строится схема для второго условия: сигналы "Один" и "Три" логически перемножаются и инвертируются функцией объединённой арифметики. Полученный результат логически умножается на сигнал "Два" (см. рисунок).

0003 (700x383, 62Kb)
Добавление логики для нажатой кнопки "Два" и не нажатых кнопок "Один" и "Три"

Схема дополняется учётом третьего условия (см. рисунок).

0004 (700x382, 16Kb)
Добавление логики для нажатой кнопки "Три" и не нажатых кнопок "Один" и "Два"

Решение задачи контроля нажатия одной единственной кнопки из трёх при составлении данной логической цепочки - это тот редкий случай, когда уместно применение операции исключающего ИЛИ ("XOR"). Это трудно принять с первого прочтения, поскольку само по себе в рассуждениях напрашивается обыкновенное логическое сложение, но это не так. Для доказательства составим таблицу истинности по логическому сложению (Таблица 1) и таблицу истинности для исключающего ИЛИ (Таблица 2).

Таблица 1 – Истинность объединения трёх операндов по логике ИЛИ

"Один""Два""Три""OR"
falsefalsefalsefalse
falsefalsetruetrue
falsetruefalsetrue
falsetruetruetrue
truefalsefalsetrue
truefalsetruetrue
truetruefalsetrue
truetruetruetrue

Таблица 2 – Истинность объединения трёх операндов по логике исключающего ИЛИ

"Один""Два""Три""XOR"
falsefalsefalsefalse
falsefalsetruetrue
falsetruefalsetrue
falsetruetruefalse
truefalsefalsetrue
truefalsetruefalse
truetruefalsefalse
truetruetruefalse

Хорошо видно, что объединение по ИЛИ – это наличие истины в ХОТЯ БЫ ОДНОМ из трёх сигналов. Иначе: если хотя бы один элемент из множества отвечает истиной, то всё логическое выражение отвечает истиной. Такая логика для работы с одной единственной нажатой кнопкой не подходит. Логика исключающего ИЛИ утверждает следующее: ТОЛЬКО ОДИН из элементов множества должен ответить истиной, тогда и всё выражение ответит истиной.

Объединение ранее сформулированных условий по исключающему ИЛИ посредством использования блока объединённой арифметики National Insruments LabView представлено на следующем рисунке. Вместе с тем для тестирования виртуального прибора в блок истинного результата CASE-структуры по итогам составления расчётной схемы для всего логического выражения устанавливается константа "плюс бесконечность".

0005 (616x386, 19Kb)
Объединение условий по исключающему ИЛИ ("XOR"). Проверка работоспособности составленной схемы: если условие выполняется – выводится "бесконечность" ("Inf")

В блоке ложного результата CASE-структуры (см. следующий рисунок) для всего логического выражения выставляется константа "не числового значения" ("NaN"). Для создания константы не числового значения на блок-диаграмме размещается обыкновенная целочисленная константа и в ней вручную записывается с клавиатуры "NaN" при строгом учёте верхнего и нижнего регистра символов (две заглавных "N" объединяются между собой строчной "a").

0006 (624x386, 16Kb)
Проверка работоспособности составленной схемы: если условие не выполняется – выводится "не числовое значение" ("NaN")

После настройки содержимого всех блоков CASE-структуры на забудьте соединить её объединённый выход с численным индикатором "Ответ", как это показано на нижеследующем рисунке. Это довольно частая ошибка, которая препятствует запуску виртуального прибора на исполнение.

0007 (620x382, 16Kb)
Передача сформированного CASE-структурой результата на интерфейсный элемент, выводящий ответ

Запуск виртуального прибора при всех не нажатых кнопках даёт в результате не числовое значение – произошло попадание в блок ложного результата. Согласно составленной ранее таблице истинности так и должно быть.

0008 (356x198, 10Kb)
Проверка работоспособности составленной логики: ничего не нажато – результат отрицательный

Запуск виртуального прибора при всех нажатых кнопках тоже даёт в результате не числовое значение в связи с попаданием в блок ложного результата CASE-структуры по результату выполнения объединённых логических операций. Согласно составленной ранее таблице истинности, опять же, так и должно быть.

0009 (360x186, 9Kb)
Проверка работоспособности составленной логики: нажаты все три кнопки сразу – результат отрицательный

Запуск с нажатыми кнопками "Один" и "Три" – шестая строчка таблицы истинности (не считая заголовка). В ответе ложный результат, но так и должно быть.

0010 (356x190, 11Kb)
Проверка работоспособности составленной логики: нажаты сразу две кнопки – результат отрицательный

Запуск с нажатыми кнопками "Один" и "Два" – седьмая строчка таблицы истинности (не считая заголовка). В ответе ложный результат. Адекватно.

0011 (360x194, 11Kb)
Проверка работоспособности составленной логики: нажаты сразу две другие кнопки – результат отрицательный

Наконец, встречается только "Один" – это пятая строчка таблицы. В ответе "плюс бесконечность" вместо "не числового значения" – попали в блок истинного результата. Тоже адекватно.

0012 (356x186, 11Kb)
Проверка работоспособности составленной логики: нажата только одна кнопка – результат положительный

После нехитрого тестирования продолжим развитие кода заготовки виртуального прибора "Умный калькулятор" в направлении желаемого результата. В блоке ложного результата контрольной (внешней) CASE-структуры оставляем константу не числового значения, а в блоке истинного результата размещаем ещё одну, вложенную CASE-структуру. На логический вход вложенной CASE-структуры подаём ветвь логики, отвечающей за нажатие на кнопку "Один" и не нажатие на кнопки "Два" и "Три". Итого, если нажата кнопка "Один", то в блоке истинного результата должна зарождаться численная константа, равная "1". Но если "Один" не нажата, то остаётся ещё два возможных варианта, которые необходимо проверить (либо нажата кнопка "Два", либо нажата кнопка "Три"). Это ещё одна вложенная CASE-структура.

0013 (620x382, 15Kb)
Развитие структуры программы: в случае, если нажата только одна кнопка, и эта кнопка – "Один", то должно выводиться в качестве ответа целочисленное значение, равное "1"

На логический вход новой CASE-структуры подаём проверку условия нажатия на кнопку "Два". Если, действительно, нажата кнопка "Два", то должна генерироваться константа, равная "2".

0014 (620x382, 17Kb)
Развитие структуры программы: в случае, если нажата только одна кнопка, и эта кнопка не "Один", а "Два" – должно выводиться в качестве ответа целочисленное значение, равное "2"

Но если не "Два", то остаётся один единственный вариант, что нажата кнопка "Три", потому его дополнительной CASE-структурой контролировать не нужно, константу со значением "3" генерирует оставшийся незаполненным блок ложного результата. Неопытные программисты могут захотеть надстроить ещё одну CASE-структуру с целью проверки условия для ветки "Три" по аналогии. Это не будет ошибкой, но в этом случае останется пустой блок ложного результата, в который никогда, ни при каких условиях курсор виртуального прибора не попадёт. Это случай так называемой кодовой избыточности, с которой необходимо бороться.

0015 (620x386, 16Kb)
Развитие структуры программы: в случае, если нажата только одна кнопка, и эта кнопка не "Один" и не "Два", а заключительный вариант – нажата кнопка "Три" и, соответственно, должно выводиться в качестве ответа целочисленное значение, равное "3"

Нижеследующие иллюстрации демонстрируют адекватность работы созданного фрагмента виртуального прибора "Умный калькулятор" с учётом ранее проведенных тестов по защите от одновременного выбора нескольких операций.

0016 (356x190, 11Kb)
Проверка работоспособности программного обеспечения: нажата кнопка "Один" и в качестве ответа выдаётся значение, равное "1"
0017 (360x158, 11Kb)
Проверка работоспособности программного обеспечения: нажата кнопка "Два" и в качестве ответа выдаётся значение, равное "2"
0018 (360x162, 11Kb)
Проверка работоспособности программного обеспечения: нажата кнопка "Три" и в качестве ответа выдаётся значение, равное "3"

вверх^ к полной версии понравилось! в evernote


Вы сейчас не можете прокомментировать это сообщение.

Дневник LABVIEW. ИСПОЛЬЗОВАНИЕ CASE-СТРУКТУРЫ В ЛОГИЧЕСКОМ РЕЖИМЕ | Flash_A - Каждый день не без метро | Лента друзей Flash_A / Полная версия Добавить в друзья Страницы: раньше»