Упражнение S4. Кодовый замок

Замок открывается при наборе кода, состоящего из нескольких цифр. Открытие имитируется лампой Н1.

При ошибке набора должна загореться красная лампа Н2, которая блокирует дальнейший набор кода. Для снятия блокировки или при ошибке набора использовать кнопку RESET.

 

Рис. 1. Схема устройства.

 

Спецификация.

Таблица 1. Используемые элементы и переменные.

Входы

Выходы

S1 – S6 кнопки набора;

S8 – с фиксатором, выбор кода: КОД1 или КОД2;

S7 – сброс блокировки (RESET) и переменной MW0 (присвоение начального значения «0»), выключение ламп

Н1 – лампа (зелёная): замок открыт исходного положения;

Н2 – блокировка набора, включение аварии (вариант 2)

Переменные

MW0 переменная (результат арифметических действий).

 

Пояснение. Код состоит из цифр (PIN-ов), набирать которые необходимо с помощью кнопок. Номер кнопки соответствует цифре (PIN) кода. Нажатие каждой кнопки приводит к изменению переменной МW0, т.к. каждой кнопке присвоена какая-либо арифметическая операция с переменной МW0.

Если конечное содержание переменной МW0 совпадет с заранее просчитанным результатом, то загорится лампа Н1.

 

Задание. Вариант 1.

Создать программу без блокировки: при неправильном наборе лампа Н2 не включается и можно нажимать кнопки неограниченное количество раз и в разной последовательности. Программа содержит возможность выбора одного кода из 2-х имеющихся подпрограмм с помощью кнопки S8. Контрольная сумма должна превышать 1000.

Возможное решение. Пример. Код 1425.

 

1. Присвоить всем кнопкам пульта конкретное арифметическое действие с переменной МW0.

Таблица 2. Произвольно присвоенные арифметические операции всем кнопкам.

Кнопка

Обозначение

Действие

S1

ADD

MW0 + 5 = MW0

S2

SUB

MW0 - 4 = MW0

S3

ADD

MW0 + 5 = MW0

S4

MUL

MW0 x 20 = MW0

S5

DIV

MW0 : 3 = MW0

S6

ADD

MW0 + 5 = MW0

 

 

 

 

 

 

 

 

 

 

Например, нажав кнопку S1 (использовать импульсную функцию Р), совершить действие: MW0 + 5 = MW0. К предыдущему числу будет прибавлено число 5, а содержимое переменной МW0 будет переписано.

Рис. 2. Операция сложения.

2. Просчитать результат согласно выбранному коду (например, Код 1425). Первое действие не должно начинаться с умножения или деления (иначе это не приводит к изменению результата).

Таблица 3. Расчет результата. Начальное значение MW0 = 0. Код 1425.

Кн.

Обозначение

Действие

Расчёт

Результаты, MW0

1

S1

ADD

MW0 + 5 = MW0

0 + 5 = 5

5

2

S4

MUL

MW0 x 20 = MW0

5 x 20 = 100

100

3

S2

SUB

MW0 - 4 = MW0

100 - 4 = 96

96

4

S5

DIV

MW0 : 3 = MW0

96 : 3 = 32

Конечный результат: 32

 


Замок откроется (загорится лампа Н1), если совпадет конечный результат (блок сравнения).

Рис. 3. Блоки сравнения.

 

3. Программировать выключение ламп и обнуление MW0 при нажатии кнопки RESET.

Рис. 4. Выключение ламп и обнуление MW0.

 

 

Ход работы.

1. Составить таблицы присвоенных кнопкам операций. Произвести расчет конечной суммы и промежуточных результатов для двух кодов. Промежуточный результат должен, хоть однажды превысить 1000. Диапазон значений переменной MW0: -32768 до +32767 (может быть отрицательным).

2. Структура программы.

Таблица 2.

Nr

Адрес

Пояснение

2

OB1

1.Вызов подпрограммы FC1 и присвоить номера PIN-ов кода КОД1, если кнопка S8 не нажата.

2.Вызов подпрограммы FC1 и присвоить номера PIN-ов кода КОД2, если кнопка S8 нажата.

3. Управление лампой Н1 и Н2

4.Сброс содержания переменной MW0 и выключение ламп.

3

FC1

Арифметические действия с переменной MW0

 

Номера PIN-ов присваивается в основной программе.

Рис. 5. Присвоение номеров PIN-ов кодам.

Локальные переменные декларируются в части INTERFACE блока подпрограммы как входные (PIN1, PIN2, PIN3, PIN4) или как выходные переменные.

 

Рис. 6. Объявление локальных переменных.

 

3. Электрическая схема. Подключить кнопки и лампы в произвольном порядке.

Рис. 7. Электрическая схема, предложение .

 

4. Адреса и символы переменных. Заполнить таблицу символов TAGS.

Таблица 7. Добавить адреса переменных.

Символ

Адрес

Комментарий

Входы

1

S1


Кнопка набора

2

S2


Кнопка набора

3

S3


Кнопка набора

4

S4


Кнопка набора

5

S5


Кнопка набора

6

S6


Кнопка набора


S7


Кнопка сброса, RESET

7

S7


Кнопка выбора кодов

Выходы

1

H1


Код верен

2

H2


Код не верен. Включение аварийной сигнализации.

Переменные

MW0 - Промежуточные и конечный результаты набора кода.

 

5. Контроль работы устройства.

В случае возникновения ошибок наблюдать состояние переменной MW0 в таблице WATCH.

 

 

Вариант 2.

Контролировать набор PIN-кода (промежуточного результата) при выполнении каждого шага.

Лампа Н2 загорится, если результат данного шага не совпадет с контрольной суммой. Лампа блокирует дальнейший набор кода.

Необходимо сравнивать значение MW0 с контрольным числом после выполнения каждого арифметического действия.

Рис. 8. Если MW0 не равен промежуточному результату, то включить аварийную лампу.

 

 

Вариант 3.

Одновременно имеются 2 кода (один пользователя, другой – администратора).