При розробці великих і складних програм рекомендується і частково є необхідно «структурувати» (розбивати) програми з виділенням блоків. Операційна система контролера пропонує користувачеві різні типи блоків для реалізації алгоритмів керування та зберігання даних. В залежності від вимог процесу, програма може бути реалізована в різних типах блоків (рис. 5.1).
Рисунок 5.1 – Типи програмних блоків
Організаційні блоки (OB) формують інтерфейс між операційною системою і програмою користувача. Вся програма може бути запрограмована в ОВ1, що викликається операційною системою циклічно (лінійне програмування). Або програма може бути розбита на кілька підпрограм і реалізована в декількох блоках (структурне програмування).
Функції (FC) містять окремі частини робочої програми. Функції дозволяють організувати роботу з ними через параметри, в результаті чого, функції дозволяють їх використовувати багаторазово для вирішення різних завдань, наприклад таких, як обчислення.
Системні функції (SFC) – це параметровані функції, вбудовані в операційну систему ЦПУ. За кожним номером SFC закріплені конкретні завдання.
Функціональні блоки (FB) виконують ті ж завдання, що і функції (FC). Але, крім цього, вони мають свою власну область пам'яті у формі екземплярних блоків даних. В результаті чого функціональні блоки підходять для керування різними процесами, наприклад такими, як задачі ПІД-керування.
Системні функціональні блоки (SFB) – це параметровані функціональні блоки вбудовані в операційну систему ЦПУ, за кожним номером SFВ закріплені конкретні завдання.
Блоки даних (DB) – це області пам'яті для збереження структурованих даних користувача.
При розробці програм звертання до змінних здійснюється з адресами; це входи, виходи, таймери, блоки. До всіх змінних можуть бути присвоєні абсолютні адреси (наприклад, I1.0) або символічні адреси (наприклад, Start signal). Символічна адресація використовує замість абсолютної адреси імена. Застосовуючи осмислені імена, програма буде більш зрозумілою користувачу.
У символічній адресації розрізняють локальні (local) і глобальні (global) символи. Локальні символи відомі тільки в тих блоках, в яких вони були визначені. При розробці програм можна використовувати однакові локальні символи в різних блоках для різних цілей. Глобальні символи присвоюються у всій програмі і мають однакові значення у всіх блоках. Глобальні символи призначаються в таблиці символів.
Використання програмних блоків та символьної адресації, при створенні програм, дозволяють значно спростити головну програму за рахунок розбивання її на складові елементи, та виклику аналогічних математичних операцій над змінними уже готовими блоками.
Програмне середовище WinPLC7 дозволяє працювати з різними типами даних, що обумовлюють характеристики даних, представлення змісту змінної та допустимі області значень. Основні типи даних наведено в таблиці 5.1.
При розробці різних програм часто використовуються числові функції, які дозволяють обробляти числові значення таких типів даних як INT (цілі числа), DINT (подвійні цілі числа) і REAL (дійсні) і, таким чином, розширюють функціональні можливості PLC. До числових функцій можна віднести:
– функції порівняння – формують бінарний результат порівняння двох значень. Вони дозволяють працюють з типами даних INT, DINT і REAL;
– арифметичні функції – використовуються для здійснення обчислень у створюваній програмі. Всі основні арифметичні дії проводяться над типами даних INT, DINT і REAL.
– математичні функції – розширюють можливості обчислювань за основні арифметичні функції, включаючи, наприклад, тригонометричні функції;
– функції перетворення – дозволяють привести числові значення до необхідного типу даних;
– функції зрушення – дозволяють вирівнювати вміст змінної шляхом зсуву вправо або вліво.
– побітові логічні операцій (числова логіка) – дозволяє маскувати цифрові значення, виділяючи (вказуючи) окремі біти і встановлюючи їх в «1» або «0».
Арифметичні функції комбінують два значення у відповідності з основними арифметичними операціями додавання, віднімання, множення і ділення. Арифметичні функції можливо застосовувати до змінних типів INT, DINT і REAL (таблиця 5.2).
Таблиця 5.2 – Арифметичні функції
Арифметична функція
Тип даних
INT
DINT
REAL
Додавання
ADD_I
ADD_DI
ADD_R
Віднімання
SUB_I
SUB_DI
SUB_R
Множення
MUL_I
MUL_DI
MUL_R
Ділення
DIV_I
DIV_DI
DIV_R
Ділення з залишком, в якості результату
–
MOD_DI
–
Блоковий елемент арифметичних функцій містить всі операції в формі функціональних входів і функціональних виходів (рис. 5.2).
а)
б)
Рисунок 5.2 – Графічне представлення арифметичної функції:
а) мова програмування LAD; б) мова програмування FBD
Крім дозволяючого входу (enable input) EN і дозволяючого виходу (enable output) ENO блоковий елемент арифметичної функції має два входи IN1 і IN2 і вихід OUT. «Заголовок» у блочному елементі ідентифікує виконувану арифметичну дію (ADD_I, наприклад, означає складання чисел типу INT).
Комбіновані значення подаються на входи IN1 і IN2, результат обчислення знаходиться на виході OUT. Входи і вихід можуть мати різні типи даних в залежності від арифметичної функції. Наприклад, у разі арифметичної функції ADD_R (складання чисел типу REAL) входи і вихід віднесені до типу REAL. Використовувані змінні повинні бути того ж типу даних, що і входи або вихід. Якщо для операндів використовуються абсолютні адреси, то розміри операндів повинні відповідати типам даних.
Арифметична функція виконується, якщо на дозволяючому вході присутня «1». Якщо під час обчислення виникає помилка, то дозволяючий вихід встановлюється в "0", в іншому випадку він встановлюється в «1». Якщо виконання функції не дозволено (EN = «0»), то обчислення не виконуєть, і ENO також обнуляється.
На рис. 5.3 наведено приклад арифметичної операції, в якій значення слова пам'яті (маркерів) MW 100 ділиться на 250; цілочисельний результат зберігається в слові пам'яті (маркер) MW 102.
Рисунок 5.3 – Приклад виконання арифметичної функції з типом даних INT
Мови програмування LAD і FBD дозволяють використовувати наступні математичні функції:
– синус, косинус, тангенс;
– арксинус, арккосинус, арктангенс;
– зведення в квадрат, визначення квадратного кореня;
– експоненціальна функція з основою е, натуральний логарифм.
Усі математичні функції працюють з числами типу даних REAL.
Блочний елемент математичної функції (рис. 5.4) має вхід IN і вихід OUT, а також дозволяючий вхід EN і дозволяючий вихід ENO. «Заголовок» у блочному елементі ідентифікує виконувану математичну функцію.
а)
б)
Рисунок 5.4 – Графічне представлення арифметичної функції:
а) мова програмування LAD; б) мова програмування FBD
Математична функція виконується, якщо на дозволяючому вході (EN) присутня «1», або якщо через вхід EN проходить «електричний струм». Якщо при обчисленні виникне помилка, то дозволяючий вихід встановлюється в "0"; інакше він встановлюється в «1». Якщо виконання функції не дозволено (EN = «0»), то обчислення не виконуються, і ENO також стає рівним «0».
На рис. 5.5 наведено приклад арифметичної операції, в якій квадратний корінь визначається з значення змінної «MathVal1» і зберігається в змінній «MathRoot».
Рисунок 5.5 – Приклад виконання математичної функції
Математичні блоки елементів можна з'єднати послідовно. Якщо вихід ENO попереднього блокового елемента з'єднаний з входом EN наступного, то останній спрацьовує тільки за умови, якщо попередній елемент був оброблений без помилок. Якщо необхідно використовувати результат з попереднього блокового елемента в якості вхідного значення для наступного блоку, то змінні з області тимчасових локальних даних надають зручні проміжні буфери.
Хід роботи
1. Ознайомитися з основними типами лічильників в програмному пакеті WinPLC7.
2. Створити функціональний блок для розрахунку математичної функції.
Створити функціональний блок можливо у вкладці «Вид – Управление блоками». При вибору даного пункту відкриється вікно показане на рис. 5.6.
Рисунок 5.6 – Створення функціонального блоку
У даному вікні створити новий блок.
3. У створеному блоці, згідно з варіантом завдання (табл.. 5.3), призначити локальні змінні необхідних параметрів (рис. 5.7).
Рисунок 5.7 – Завдання локальних змінних
4. Створити програму обчислення математичної функції.
Приклад 1. Скласти програму розв’язання рівняння:
.
При розв’язання рівняння спочатку знаходяться квадрати змінних a і b, потім вони складаються. Завершується приклад визначенням квадратного кореня з суми. Програма розв’язання зазначеного рівняння представлено на рис. 5.8.
Рисунок 5.8 – Приклад програми розв’язання рівняння
Приклад 2. Скласти програму розв’язання рівняння:
.
Програма розв’язання зазначеного рівняння представлено на рис. 5.9.
Рисунок 5.9 – Приклад програми розв’язання рівняння
Таблиця 5.3 – Варіанти завдань
№ п/п
Завдання
№ п/п
Завдання
Зміст звіту
1. Титульна сторінка.
2. Тема й мета роботи.
3. Опис проведеної роботи.
4. Структурна схема розробленої програми.
5. Висновки щодо роботи.
Контрольні питання
1. Охарактеризуйте типи програмних блоків.
2. Охарактеризуйте функції, що виконують організацій блоки.
3. Поясніть різницю між блоками функцій та системних функцій.
4. Яким чином здійснюється символьна адресація.
5. Поясніть різницю між глобальними та локальними змінними.
6. З якими типами даними дозволяють працювати числові функції.
7. Перерахуйте функції, що відносяться до числових функцій.
8. В чому полягає різниця між арифметичними та математичними функціями.
9. До яких типів змінних можливо застосовувати арифметичні функції?
10. Перерахуйте арифметичні функцій, що використовуються у пакеті WinPLC7.
11. Перерахуйте математичні функцій, що використовуються у пакеті WinPLC7.
12. За якої умови можливе виконання арифметичних та математичних функцій?
Література:[8, с. 153–167; 10, с. 35–39; 11, с. 26–53].