
АМ-212_Ткаченко_№4
.pdf
21
Функція WORD_TO_REAL — перетворення двійкового слова в дійсне число. DIV — функція ділення. REAL_TO_INT — перетворення з речового числа в ціле число. Зібрана схема потенціометра на FBD показана на рисунку 1.32.
Рисунок 1.32 — Реалізація потенціометра на FBD
Для реалізації потенціометру на ST потрібно спочатку додати змінні у файл
Potentiometr_STV. Потім, необхідно написати програмний код з використанням функцій, які були описані вище. Використані змінні та програмний код ST наведено на рисунку 1.33.
Рисунок 1.33 — Реалізація потенціометра на ST
Робота потенціометра на мовах ST та FBD, показана на рисунку 1.34.
Рисунок 1.34 — Робота потенціометра на мовах ST та FBD у симуляції

22
1.10 Реалізація функції «виключає АБО» на мові ST
Таблиця істинності для функції «виключає АБО» (XOR) наведена у таблиці 1. Для реалізації XOR необхідно створити функцію на ST, як показано на рисунку 1.35.
Рисунок 1.35 — Створення функції на мові ST
Також необхідно додати три вхідні змінні та написати логіку функції XOR у вигляді програмного коду на мові ST. Обов’язково потрібно назвати значення, яке повертається, так само, як й назву самої функції.
Таблиця №1 — Таблиця істинності XOR
X1 |
X2 |
X3 |
Y |
|
|
|
|
0 |
0 |
0 |
1 |
|
|
|
|
0 |
0 |
1 |
0 |
|
|
|
|
0 |
1 |
0 |
0 |
|
|
|
|
0 |
1 |
1 |
1 |
|
|
|
|
1 |
0 |
0 |
0 |
|
|
|
|
1 |
0 |
1 |
1 |
|
|
|
|
1 |
1 |
0 |
1 |
|
|
|
|
1 |
1 |
1 |
1 |
|
|
|
|
Використані змінні та програмний код ST для реалізації функції XOR, продемонстровано на рисунку 1.36.

23
Рисунок 1.36 — Реалізація функції «виключає АБО» на ST
Щоб протестувати створену функцію XOR_ST_FU, можна додати стандартну функцію XOR й порівняти їх роботу. Перевірка роботи функції показана на рисунку 1.37.
Рисунок 1.37 — Перевірка роботи функції «виключає АБО» на мові ST

24
1.11 Програма, що перетворює кольори, на мовах FBD та ST
Конвертація кольорів буде виконуватися з використанням RGB стандарту. Для представлення кожного кольору використовуватиметься шість цифр у шістнадцятковій системі числення, однак тип даних WORD не може обробляти такі великі числа. Тому треба використовувати спрощений RGB стандарт, який використовує три цифри для кожного кольору. Принцип переведення числа 16# у RGB відображено на рисунку 1.38.
Рисунок 1.38 — Принцип переведення числа 16# у RGB для трьох цифр Після отримання значень для червоного, зеленого і синього кольорів, можна
визначити діапазони, в яких будуть перебувати кольори. Наприклад,
для помаранчевого кольору діапазон буде таким: червоний (R): 200-255,
зелений (G): 70-200, синій (B): 0-150.
Для зручності розробки переводу чисел 16# у RGB буде використовуватися тип даних STRING. Для того, щоб перевести значення WORD у STRING, необхідно скористатися функцією WORD_TO_STRING. На вхід FORMAT потрібно передати значення ‘%x’, яке призначається для чисел у форматі HEX.
Щоб усі числа мали однакову кількість цифр (4), потрібно спочатку визначити, скільки символів в кожному числі за допомогою функції LEN. Після цього можна додавати нулі до початкових чисел так, щоб кількість цифр у кожному числі стала рівною 4. Щоб «додати» нуль для строки, необхідно використати функцію конкатенації CONCAT, яка з’єднує строки. Схема для переведення числа типу WORD в тип STRING та її робота продемонстровано на рисунку 1.39.

25
Рисунок 1.39 — Переведення числа типу WORD в STRING та «додавання» нуля На рисунку 1.40 показана частина схеми, яка відповідає за трансформацію
чисел типу WORD, що мають лише одну або дві цифри.
Рисунок 1.40 — Частина схеми для обробки чисел 16#, які мають 1,2,3 цифри

26
Згідно принципу, який наведений на рисунку 1.38, треба розділити число на окремі три числа. Щоб розділити числа потрібно використати функцію DELETE,
яке видаляє символи з строки відповідно до виставлених параметрів: L — кількість символів, які потрібно видалити; P — Позиція першого символу, який буде видалено. Потім, отримані числа потрібно дублювати за допомогою функції
CONCAT. Далі, треба приєднати символи ‘16#’, які відповідають за систему числення та перевести строку із типу STRING в INT за допомогою функції
STRING_TO_INT. Реалізація принципу переведення числа 16# в RGB на схемі,
показано на рисунку 1.41.
Рисунок 1.41 — Частина схеми для реалізації принципу переведення в RGB
Тепер, необхідно інтерпретувати значення змінних RED, GREEN, BLUE у
різні кольори, а саме: чорний, білий, червоний, оранжевий, жовтий, зелений,
голубий та фіолетовий. Для кожного кольору встановлено різний діапазон чисел
RGB. Частина схеми для виявлення білого та чорного кольорів наведена на рисунку 1.42.
Рисунок 1.42 — Частина схеми для виявлення білого та чорного кольорів

27
Схеми для виявлення інших кольорів наведені на рисунку 1.43.
Рисунок 1.43 — Частина схеми для виявлення кольорів

28
Для того, щоб реалізувати цю програму на мові ST, необхідно спочатку додати усі необхідні змінні та ФБ, а вже потім прописати програмний код. Потрібні змінні для функціювання програми показано на рисунку 1.44.
Рисунок 1.44 — Перелік змінних та ФБ для роботи програми кольорів Програмна реалізація для переведення числа 16# типу WORD у строку типу
STRING та приєднання нулів до числа, показана на рисунку 1.45.
Рисунок 1.45 — Переведення числа 16# типу WORD у строку

29
Для реалізації принципу переведення строки в стандарт RGB (рисунок 1.38),
потрібно використати програмний код, який наведено на рисунку 1.46.
Рисунок 1.46 — Приведення строки до стандарту RGB
Виявлення кольорів за діапазоном значень змінних RED, GREEN, BLUE,
показано на рисунку 1.47.
Рисунок 1.47 — Виявлення кольорів за діапазоном RGB
Щоб перевірити роботу двох програм, необхідно додати на схему два ФБ
HEX4_TO_COLOR_RGB_FBD та HEX4_TO_COLOR_RGB_ST. Зібрана схема блоків продемонстрована на рисунку 1.48.

30
Рисунок 1.48 — Запущені блоки для виявлення кольорів у режимі симуляції Тепер, необхідно подавати різні числа 16# на вхід analog_in. Результат роботи
цих ФБ наведено на рисунках 1.49 — 1.54.
Рисунок 1.49 — Введення числа для красного кольору
Рисунок 1.50 — Введення числа для помаранчевого кольору