Функциональные блоки для реализации замеров времени
К функциональным блокам для реализации замеров времени относятся:
-
execute_time_check – функциональный блок для замера времени выполнения участка кода, расположенного между вызовом метода getTimeStamp() и вызовом блока execute_time_check.
-
timestampBeforeRead – функция получения метки времени на этапе работы среды выполнения «Before Read Inputs». Её необходимо вызывать в менеджере задач в системных событиях.
-
timestampDeltaRead – функция получения метки времени на этапе работы среды выполнения «After Read Inputs». Её необходимо вызывать в менеджере задач в системных событиях.
-
timestampBeforeWrite – функция получения метки времени на этапе работы среды выполнения «Before Write Ouputs». Её необходимо вызывать в менеджере задач в системных событиях.
-
timestampDeltaWrite – функция получения метки времени на этапе работы среды выполнения «After Write Ouputs». Её необходимо вызывать в менеджере задач в системных событиях.
Результаты работы функций записываются в глобальный список переменных библиотеки «profilerData». В проекте к этому списку можно обратиться через «AbakPLCUtils.ProfilerData». В этом списке хранится следующая информация:
-
time_before_read – LTIME – метка времени «До чтения входов»
-
time_after_read – LTIME – метка времени «После чтения входов»
-
time_before_write – LTIME – метка времени «До записи выходов»
-
time_after_write – LTIME – метка времени «После записи выходов»
-
delta_read – LTIME – последняя измеренная длительность этапа чтения входов
-
delta_write – LTIME – последняя измеренная длительность этапа записи выходов
-
max_delta_read – LTIME – максимальная длительность чтения входов
-
max_delta_write – LTIME – максимальная длительность записи выходов
-
delta_total – LTIME – длительность чтения входов + MainTask + последняя измеренная длительность записи выходов
-
max_delta_all – LTIME – максимальная длительность чтения входов + MainTask + длительность записи выходов
Функциональный блок «execute_time_check» имеет следующие выходные данные:
-
max_time – LTIME – максимальное время выполнения участка
-
min_time – LTIME – минимальное время выполнения участка
-
last_time – LTIME – время выполнения участка в последнем замере
-
max_time_cycle – LTIME – LTIME#0ns – максимальное время между вызовами блока (интервал последовательных вызовов)
-
min_time_cycle – LTIME – минимальное время между вызовами блока (интервал последовательных вызовов)
-
last_time_cycle – LTIME – время между вызовами блока в последнем замере (интервал последовательных вызовов)
Функциональный блок «execute_time_check» имеет следующие методы, необходимые при использовании:
-
метод «getTimeStamp» – вызывается для фиксации начальной временной точки перед контролируемым участком кода.
-
метод «resetData» – сбрасывает результаты измерений до начальных значений.
Пример использования описанного функционала с комментариями приведен в AbakController_v1.0.4.0.package в шаблонном проекте ABAKPLC_examples.project (устройство ex_profiler).