Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

АМ-212_Ткаченко_№4

.pdf
Скачиваний:
1
Добавлен:
23.08.2024
Размер:
4.95 Mб
Скачать

11

Зупинка горизонтального крану продемонстрована на рисунку 1.13.

Рисунок 1.13 — Зупинка крану

1.5 Створення сейфу на мові FBD

Згідно завдання 1-Б, потрібно використовувати ручку потенціометра, як периферійний пристрій для введення комбінацій чисел. Для симуляції можна використати лічильник CTUD_10, який буде імітувати стрілку потенціометра.

Щоб почати крутити стрілку в різні сторони потрібно задіяти RS-тригер, який буде постійно генерувати сигнал кожні дві секунди. Напрямок обертання стрілки визначається сигналами LEFT та RIGHT. Змінна KEY_VALUE представляє собою значення, на яке вказує стрілка потенціометра.

Якщо «активний» сигнал LEFT, тоді тригер RS_111 починає генерувати перемикаючий сигнал для входу лічильника CD (зменшення значення змінної

KEYVALUE на 1). Якщо «активний» сигнал RIGHT, тоді тригер RS_110 починає генерувати сигнал для входу лічильника CU (збільшення значення змінної

KEYVALUE на 1). Схема для роботи обертання ручки в різні сторони наведена на рисунку 1.14.

Рисунок 1.14 — Схема для імітації обертання ручки в симуляції

12

Згідно завдання, правильний код повинен містити чотири цифри. Для цього,

потрібно створити змінні code0, code1….code4. Щоб записати поточне значення змінної KEYVALUE, треба додати змінну SET_VALUE, яка буде посилати сигнал лічильнику CTU_20, для того, щоб він інкримінував значення змінної count. Змінна count вказує на код codeX, який буде зрівнюватися зі значенням KEYVALUE. Якщо значення змінної KEYVALUE дорівнює значенню codeX, то тоді це значення зберігається у змінну Qx за допомогою тригера RS_10X. Якщо усі сигнали Q1, Q2, Q3, Q4 приймають значення логічної «1», то тоді сейф відчиняється, тобто змінна open приймає логічне значення «1». Схема для перевірки правильності введення коду показана на рисунку 1.15.

Рисунок 1.15 — Частина схеми для перевірки правильності введення коду сейфу Згідно завдання 1-Б, також потрібно реалізувати блокування введення коду

через три спроби. Для цього, потрібно створити лічильник CTU_30, який буде рахувати кількість неправильних вводів. Якщо комбінація введена неправильно, то тоді змінна false_enter приймає логічне значення «1» та посилає цей сигнал на вхід

CU лічильника CTU_30. Для обмеження рахунку лічильника потрібно встановити константу 3 на вхід PV. Значення змінної counts_false_enter вказує на кількість неправильно введених комбінацій. Якщо ця кількість дорівнює 3, то тоді лічильник посилає сигнал Q на вхід IN ФБ TP_40. TP_40 — це блок, який генерує сигнал

13

блокування (відповідає значенню змінної BLOCKED) на 10 секунд. Схема для блокування сигналу SET_VALUE наведена на рисунку 1.16.

Рисунок 1.16 — Частина схеми для блокування сигналу SET_VALUE на 10 секунд Щоб зачинити сейф, потрібно виконати скидання тригерів та лічильників.

Для цього потрібно додати на схему змінну LOCK. Схема скидання наведена на рисунку 1.17.

Рисунок 1.17 — Схема для скидання лічильників та тригерів

14

1.6 Перевірка роботи сейфу на мові FBD

Запущений ФБ (FBD) сейфу у режимі симуляції показана на рисунку 1.18.

Рисунок 1.18 — ФБ сейфу на мові FBD у режимі симуляції

Тепер, необхідно прокрутити ручку та встановити стрілку на значення 10.

Встановлення стрілки на відповідне значення наведено на рисунку 1.19.

Рисунок 1.19 — Встановлення стрілки на значення 10

15

Щоб вести поточне значення на яке вказує стрілка, потрібно подати сигнал на вхід SET_VALUE та перевірити правильність введення першої цифри коду (Q1). На рисунку 1.20 продемонстровано введення першої цифри коду.

Рисунок 1.20 — Перше число коду введено правильно Правильне введення комбінації та відкриття сейфу продемонстровано на

рисунку 1.21.

Рисунок 1.21 — Правильне введення комбінації

Далі, для замикання сейфу, потрібно надіслати сигнал close, як показано на рисунку 1.22. Якщо комбінація введена не правильно, то тоді змінна counts_false

інкримінується. Коли буде введено три неправильні комбінації, тоді буде блокування введення значення key_value, що подремонтировано на рисунку 1.23.

16

Рисунок 1.22 — Закриття сейфу

Рисунок 1.23 — Блокування введення комбінацій

1.7 Створення сейфу на мові ST

Щоб почати програмувати сейф на мові ST, потрібно додати спочатку необхідні змінні та ФБ, як показано на рисунку 1.24. Потім, потрібно присвоїти значення змінних для входів ФБ. Усі використанні змінні та ФБ повністю збігаються зі схемою, яка була створена на FBD. Загальний опис змінних вже наведено у пункті 1.6. Програмний код для реалізації сейфу продемонстрований на рисунку 1.25.

17

Рисунок 1.24 — Змінні та ФБ для реалізації сейфу на мові ST

Рисунок 1.25 — Реалізація сейфу на мові ST

18

1.8 Перевірка роботи схеми сейфа на мові ST

Запущений ФБ (ST) сейфу у режимі симуляції показана на рисунку 1.26.

Рисунок 1.26 — ФБ сейфу на мові ST у режимі симуляції

Тепер, необхідно прокрутити ручку та встановити стрілку на значення 10.

Встановлення стрілки на відповідне значення наведено на рисунку 1.27.

Рисунок 1.27 — Встановлення стрілки на значення 10

19

Щоб вести поточне значення на яке вказує стрілка, потрібно подати сигнал на вхід SET_VALUE та перевірити правильність введення першої цифри коду (Q1). На рисунку 1.28 продемонстровано введення першої цифри коду.

Рисунок 1.28 — Перше число коду введено правильно Правильне введення комбінації та відкриття сейфу продемонстровано на

рисунку 1.29.

Рисунок 1.29 — Правильне введення комбінації

Далі, для замикання сейфу, потрібно надіслати сигнал close, як показано на рисунку 1.30. Якщо комбінація введена не правильно, то тоді змінна counts_false

інкримінується. Коли буде введено три неправильні комбінації, тоді буде блокування введення значення key_value, що подремонтировано на рисунку 1.31.

20

Рисунок 1.30 — Закриття сейфу

Рисунок 1.31 — Блокування введення комбінацій

1.9 Створення потенціометру на мові FBD та ST

Щоб створити потенціометр, необхідно використати такі функції: SHR, AND, WORD_TO_REAL, DIV, REAL_TO_INT. Функція SHR виконує операцію порозрядного зсуву вправо на операнді, підключеному до входу IN. N визначає кількість бітів, які потрібно зсунути. Порожні бітові позиції заповнюються нулями.

Соседние файлы в предмете Системы реального времени