Внимание! Общение в этой теме закрыто. Все обсуждения – в СООТВЕТСТВУЮЩЕЙ теме.
Все чаще к нам обращаются клиенты с просьбой помочь разобраться почему в его программе большое время цикла.
Обычно для такого рода задач используют так называемые профилировщики (CODESYS Profiler например).
Для небольших проектов их функционал избыточен и мы предлагаем Вам использовать библиотеку OwenDebugTools.
На текущий момент в ней всего 2 ФБ:
1) TaskInfo, позволяет отображать статистику задачи на визуализации (или использовать ее в коде программы);
2) ExecutionTimer, позволяет измерить время выполнения участка кода и, например, отобразить на визуализации.
Использование ФБ TaskInfo в проекте:
1.1) Для начала необходимо объявить экземпляр ФБ (в глобальных переменных), следующим кодом
g_fbMainTaskInfo : OwenDebug.TaskInfo ('Application','MainTask');
где:
Application - имя приложения («1» на рис. 1.1);
MainTask - имя задачи («2» на рис. 1.1), статистику которой необходимо отслежи-вать (не зависит от регистра).
g_fbMainTaskInfo.png
Рисунок 1.1
1.2) Добавить отдельную задачу, которая будет вызывать ФБ мониторинга задач
add task.png
Рисунок 1.2
задать для нее имя
Task name.png
Рисунок 1.3
и добавить в нее вызов ФБ (рис 1.4, 1.5).
Programm call.png
Рисунок 1.4 Добавление вызова ФБ
PouToCall.png
Рисунок 1.5 POU для вызова
Для отображения статистики на визуализации выполните следующие шаги:
1.3) Добавьте в проект визуализацию;
1.4) Добавьте на необходимую визуализацию фрейм frm_TaskInfo из библиотеки OwenDebug (рисунок 1.6);
Add frame.png
Рисунок 1.6
1.5) Укажите экземпляр ФБ, статистику которого необходимо отображать рис. (1.7).
VisuTaskInfo.png
Рисунок 1.6
1.6) Если имя приложения и задачи указаны верно, то после загрузки проекта в контроллер Вы увидите информацию как на рисунке 1.8.
VisuTaskInfoRunning.png
Рисунок 1.7
Если информация указана не верно – увидите сообщение о том, что задача не найдена.
Использование ФБ ExecutionTimer в проекте:
2.1) Объявить экземпляр таймера
Для начала необходимо объявить экземпляр таймера, следующим кодом
m_fb_ExternalTmer : OwenDebug.ExecutionTimer ('External timer');
В кавычках указывается имя таймера, отображаемое на визуализации. Если использование таймера с визуализацией не планируется – оставьте пустые кавычки.
2.2)
До участка кода, время выполнения которого необходимо отслеживать, напишите код
m_fb_ExternalTmer.start();
а после участка кода, время выполнения которого необходимо отслеживать, напишите код
m_fb_ExternalTmer.stop();
Для отображения статистики на визуализации выполните шаги 1.3-1.6, но вместо фрейма frm_TaskInfo добавляйте
Ниже Вы сможете найти пример, который демонстрирует все описанное выше.
OwenDebug Example_v.3.5.5.01.zip
В дальнейшем мы будем дорабатывать библиотеку, добавляя в нее новые функции и функциональные блоки для того, чтобы упростить Вам написание программ.
|
Скачать последнюю версию:
|