Тривалість циклу виконання завдання — один із практичних показників, за якими інженери можуть оцінювати роботу програми контролера під час її виконання. Якщо виконання завдання триває довше, ніж очікувалося, це може вплинути на часові параметри технологічного процесу, синхронізацію, пошук і усунення несправностей та стабільність роботи системи.

CODESYS — це середовище розробки для програмування керування відповідно до стандарту IEC 61131-3. Його використовують у системах автоматизації та керування, де завдання мають надійно виконуватися з дотриманням установлених часових обмежень.

У проєктах CODESYS контроль фактичної тривалості циклу виконання завдань допомагає інженерам оптимізувати продуктивність, виявляти вузькі місця та відхилення часових параметрів, які можуть впливати на послідовність роботи машини. Це особливо важливо, коли завдання керування, обміну даними або функції керування рухом мають виконуватися в межах визначеного часового інтервалу.

У цьому навчальному посібнику розглянуто два способи вимірювання фактичної тривалості циклу виконання завдання в CODESYS:

  • Використання вбудованої функції TIME()
  • Використання бібліотеки CmpIecTask

Обидва методи можуть бути корисними. Вибір оптимального методу залежить від необхідної точності вимірювання та глибини аналізу виконання завдання.

Тривалість циклу виконання завдання показує, скільки часу потрібно для виконання певного завдання або операції в системі керування. У застосунку керування цей показник допомагає зрозуміти, чи виконується код у межах очікуваного часового діапазону.

Контроль тривалості циклу виконання завдання може бути корисним для розв’язання низки інженерних завдань:

  • Перевірка дотримання заданої тривалості циклу виконання завдання
  • Виявлення ділянок коду, які збільшують час виконання
  • Виявлення неочікуваних коливань часу виконання
  • Допомога у виявленні й усуненні несправностей під час введення в експлуатацію
  • Покращення синхронізації процесів
  • Сприяння стабільній роботі системи керування

Стабільна тривалість циклу виконання завдання не усуває всіх проблем керування, але дає інженерам корисну відправну точку для їх розв’язання. Якщо фактична тривалість циклу виконання завдання перевищує очікувану або істотно коливається, може знадобитися детальніший аналіз роботи програми.

У CODESYS завдання визначає, коли та як виконується програма або функція. Тривалість циклу виконання завдання — це час, необхідний для одного повного циклу його виконання.

Наприклад, циклічне завдання можна налаштувати на виконання кожні кілька мілісекунд. Якщо виконання програмного коду в межах завдання триває надто довго, контролер може не встигнути завершити завдання в межах заданого часового інтервалу. Це може вплинути на продуктивність, синхронізацію процесів або характер руху.

Вимірювання тривалості циклу виконання завдання може бути складним, оскільки на фактичне значення можуть впливати кілька чинників:

  • Навантаження на систему
  • Затримка передачі даних у мережі
  • Продуктивність апаратного забезпечення
  • Конфігурація завдання
  • Програмне забезпечення: архітектура
  • Особливості обміну даними
  • Обсяг і структура коду в завданні

Саме тому важливо правильно вибрати метод вимірювання. Для базових перевірок може бути достатньо простого методу вимірювання часу виконання. Якщо потрібна часова роздільна здатність до мікросекунд або докладні дані про виконання конкретного завдання, може знадобитися точніший метод вимірювання.

Один із простих способів вимірювання тривалості виконання операцій у CODESYS — використання вбудованої функції TIME().

Основна логіка проста:
1. Зафіксуйте час початку перед виконанням відповідної ділянки коду
2. Виконайте код, час виконання якого потрібно виміряти
3. Зафіксуйте час завершення після виконання відповідної ділянки коду
4. Відніміть час початку від часу завершення
5. Використовуйте отриманий результат як виміряне значення тривалості виконання

У прикладі для імітації завдання, виконання якого потребує значного часу, використано два цикли FOR. Функція TIME() фіксує час до та після виконання ділянки програми з циклами, а різниця між цими значеннями дає змогу приблизно визначити тривалість виконання завдання.

Цей метод корисний, коли потрібно швидко оцінити тривалість виконання певної ділянки програмного коду.

У прикладі виміряна тривалість циклу виконання завдання зазвичай становить 6 до 8 мілісекунд. Для відстеження зміни вимірюваної величини з часом можна додати трасування. У наведеному прикладі тривалість циклу виконання завдання іноді різко зростає до 10 мілісекунд.

Такі коливання мають значення. Якщо для завдання програмного керування рухом задано тривалість циклу 4 мілісекунди або менше, перевищення цього значення може призвести до виникнення виняткових ситуацій. Тому часові параметри виконання завдань особливо важливі для застосувань із жорсткими вимогами до керування рухом або синхронізації.

Перевага функції TIME() полягає в її простоті. Для її використання потрібно написати лише невеликий обсяг коду. Вона проста для розуміння, і її можна швидко додати до наявного проєкту.

Це може бути вдалим рішенням у таких випадках:

  • Вам потрібно швидко перевірити часові параметри
  • Достатньо часової роздільної здатності до мілісекунд
  • Ви хочете виміряти час виконання певної ділянки коду
  • Застосунок не потребує високоточних даних про часові параметри виконання завдань

Однак функція TIME() також має свої обмеження. Вона забезпечує часову роздільну здатність до мілісекунд. Такої точності може бути недостатньо для застосувань, що потребують аналізу часових параметрів із роздільною здатністю до мікросекунд.

Цей метод також потребує відстеження часу вручну. Необхідно визначити початок і кінець вимірювання, а також спосіб обчислення тривалості проміжку часу між ними. Для простих перевірок цього достатньо, але такий підхід може бути менш зручним, коли потрібно отримувати дані про тривалість виконання окремих завдань у великій програмі.

Для точнішого вимірювання тривалості циклу виконання завдання зазвичай краще використовувати бібліотеку CmpIecTask.

Бібліотека CmpIecTask входить до складу CODESYS. Ця бібліотека містить функції для отримання інформації з диспетчера завдань IEC.

Після додавання бібліотеки до проєкту CODESYS для ініціалізації потрібен лише невеликий обсяг коду. Після ініціалізації програма може отримати доступ до структури з докладною інформацією про завдання, зокрема до значень фактичної та середньої тривалості циклу його виконання.

Цей підхід дає змогу отримувати дані про часові параметри конкретного завдання, на відміну від ручного вимірювання часу до та після виконання окремої ділянки коду. Замість розробки власного алгоритму вимірювання часу можна використовувати інформацію про виконання завдань, яку надає бібліотека.

У вихідному прикладі для порівняння методів вимірювання використано однакове імітоване робоче навантаження. Відмінність полягає в тому, що бібліотека CmpIecTask забезпечує більш безпосередній доступ до інформації про тривалість циклу виконання завдання.

Бібліотека CmpIecTas має низку переваг, коли потрібне точніше вимірювання часу виконання завдань.

По-перше, бібліотеку можна гнучко інтегрувати в різні частини програми. Це спрощує доступ до інформації про виконання завдань, оскільки не потрібно вручну додавати вимірювання часу початку й завершення до кожної ділянки програмного коду.

По-друге, бібліотека забезпечує реєстрацію та обчислення даних про тривалість циклу виконання завдання. Це зменшує обсяг ручної роботи та ризик помилок у логіці вимірювання.

По-третє, бібліотека надає значення з часовою роздільною здатністю до мікросекунд. Ці значення точніші за результати, отримані за допомогою функції TIME(), що може бути важливим для застосувань із жорсткішими вимогами до часових параметрів.

Основний недолік полягає в тому, що бібліотеку потрібно додати до проєкту CODESYS. Однак для багатьох застосувань цей недолік є незначним порівняно з перевагами вищої точності та додаткової інформації про часові параметри виконання конкретного завдання.

Обидва методи допомагають аналізувати часові параметри виконання завдань, проте не однаково добре підходять для всіх ситуацій.

Використовуйте функцію TIME(), якщо потрібно швидко виконати просту перевірку й достатньо часової роздільної здатності до мілісекунд. Цей метод простий у реалізації та підходить для базового порівняння часових параметрів.

Використовуйте бібліотеку CmpIecTask, якщо вам потрібна точніша інформація про виконання завдань, ви хочете уникнути ручного програмування вимірювання часу або потребуєте часової роздільної здатності до мікросекунд для аналізу продуктивності.

Для завдань керування рухом, синхронізації та застосувань із жорсткішими вимогами до часових параметрів зазвичай краще використовувати бібліотеку CmpIecTask.

Часові параметри виконання завдань у CODESYS особливо важливі, коли під час введення обладнання в експлуатацію або пошуку несправностей потрібно оцінити продуктивність контролера, характер руху чи синхронізацію роботи машини.

У програмному середовищі Festo система CODESYS може бути частиною комплексного процесу інженерного проєктування та керування. Festo AX Controls підтримує детерміноване керування в реальному часі з використанням стандартних засобів програмування відповідно до IEC 61131-3, зокрема CODESYS, а також мов програмування високого рівня, як-от C/C++, C# і Python.

Festo Automation Suite підтримує введення в експлуатацію, програмування та діагностику. Вона дає змогу переносити пристрої AX Controls, зокрема CEPE, із топології до середовища програмування CODESYS без додаткових етапів налаштування, щоб користувачі могли відразу перейти до програмування послідовності роботи машини.

Скористайтеся цим навчальним посібником, щоб на практиці опанувати метод перевірки часових параметрів виконання завдань у CODESYS. Після цього перейдіть до програмного забезпечення Festo, інформації про ліцензування або навчальних матеріалів, які відповідають вашим подальшим інженерним завданням.

  • Тривалість циклу виконання завдання показує, скільки часу потрібно для виконання певного завдання або операції в системі керування
  • Контроль тривалості циклу виконання завдань допомагає інженерам оптимізувати продуктивність, виявляти вузькі місця та підвищувати стабільність роботи системи
  • Функція TIME() проста у використанні та не потребує складного впровадження, проте забезпечує часову роздільну здатність лише до мілісекунд
  • Бібліотека CmpIecTask надає інформацію про окремі завдання та забезпечує часову роздільну здатність до мікросекунд.
  • Використовуйте функцію TIME() для простих перевірок, а бібліотеку CmpIecTask — для точнішого аналізу тривалості циклу
  • Завдання точного керування рухом або синхронізації часто потребують ретельнішого врахування фактичних часових параметрів виконання завдань
  • Програмне забезпечення та довідкові матеріали Festo допомагають користувачам перейти від діагностики й усунення несправностей у CODESYS до введення обладнання в експлуатацію, ліцензування та впровадження периферійного керування