0

Задачи и контроль времени выполнения в CoDeSys

Слово ‘задача’ в CoDeSys служит исключительно для организации планирования вычислительного процесса. На практике мы имеем дело с задачами только в ‘Конфигураторе задач’. Здесь мы создаем задачи, назначаем им имена и настраиваем их параметры. Для выполнения полезной работы с каждой задачей связывается как минимум одна программа (POU типа PROGRAM). Когда мы создаем новый проект в CoDeSys, то в нем неявно организуется одна задача, содержащая вызов одной программы PLC_PRG.

Данная задача всегда выполняется циклически. В зависимости от типа ПЛК могут быть два способа ее вызова. Обычно она запускается так часто как это только можно. Как только программа отрабатывает один цикл вызова, система исполнения выполняет обслуживание входов/выходов и снова запускает прикладную задачу. Очевидно, период вызова такой задачи не стабилен и может плавать в зависимости от того, по какой ветви работает программа в данный момент. Обслуживание системой исполнения аппаратных устройств, коммуникационных каналов, работа отладчика также могут влиять на периодичность такой задачи. В окне ‘Конфигурация ПЛК’ задача такого типа называется ‘свободная’ (freewheeling). Второй способ состоит в поддержке стабильного интервала выполнения единственной задачи. Даже если программа пуста, то она не будет вызываться чаще, чем задано. В окне ‘Конфигурация ПЛК’ такая задача называется ‘циклическая’.

Например, в ПЛК-150 компании Овен по умолчанию единственная задача вызывается циклически с интервалом 1 мс. Время рабочего цикла можно изменять от 0 до 50 мс (параметр MinCycleLength в конфигурации ПЛК). При задании нулевого времени контроль отключается и задача превращается в ‘свободную’. Такой встроенный механизм настройки ПЛК достаточно удобен для начинающих пользователей.

Для любых типов ПЛК мы можем открыть в CoDeSys диалоговое окно ‘Конфигурация ПЛК’, создать новую задачу и настроить ее параметры так, как нам нужно. Обратите внимание на то, что если мы беремся за самостоятельное определение задач в CoDeSys и создаем в конфигураторе хотя бы одну задачу, то действовавший по умолчанию вызов PLC_PRG отключается. Нам нужно будет вручную добавить вызов этой программы в одну из задач, даже если она всего одна. См. рис. 1.

Задачи и контроль времени выполнения в CoDeSys, image0024

Рис 1. Настройка циклической задачи с вызовом программы PLC_PRG

 

При задании интервала циклической задачи нужно быть реалистом и не задавать физически недостижимых величин. Так, если используемая вами модель ПЛК имеет системный таймер, который ‘тикает’ раз в 10 мс, то установка интервала не кратного 10 мс не имеет смысла. Если в конфигурации ПЛК Овен вы задали время рабочего цикла 50мс, то чтобы вы не задали в конфигураторе задач, никакая задача не будет вызываться чаще.

При малых значениях интервала задачи весьма вероятно написать программу с настолько большим числом вычислений в одном цикле ее вызова, что она не будет ‘помещаться’ в заданный интервал. При этом интервал вызова программы будет нестабилен, что может быть нежелательно. Но как это проверить при отладке?

В ПЛК компании Овен для этой цели реализован встроенный механизм контроля времени рабочего цикла. В конфигурацию ПЛК необходимо добавить модуль статистики, который включает вход Cycle time. Здесь вы получите число, содержащее измеренное время цикла в сотнях миллисекунд.

Задачи и контроль времени выполнения в CoDeSys, image0043

Рис 2. Измерение длительности цикла в ПЛК 150 Овен

 

Универсальным способом измерения коротких интервалов является использование точного таймера из системной библиотеки SysLibTime.lib. Библиотека содержит функциональный блок CurTime, который дает время системного таймера в микросекундах. Естественно, практически нельзя рассчитывать, что системный таймер любого ПЛК ‘тикает’ каждую микросекунду. Поэтому прежде чем полагаться на результаты этого способа измерения, уточните частоту его работы. Данная библиотека является не обязательной и может неподдерживаться для определенных типов ПЛК. На рисунке 2 показан результат прогона на ПЛК-150 Овен простой программы, которая измеряет интервал своего вызова в мкс, при установленном рабочем цикле 10мс. Для контроля приведены результаты измерений с использованием модуля статистики. С учетом дискретности таймера 100мкс мы получаем одинаковые результаты для обоих способов измерения.

Диалоговое окно ‘Конфигурация задач’ CoDeSys имеет свой встроенный диагностический инструмент. Для его работы необходимо включить в проект библиотеки SysLibTime и SysTaskInfo. Учтите что, они поддержаны не для всех типов ПЛК. На рисунке 3 показана информация о работе одной циклической задачи (5 мс), включающей программу, выполняющую сто тысяч операций с переменной типа REAL в CoDeSys SP RTE. На диаграмме видна заданная длительность цикла (светлая полоса) и реальное время вычислений. Оно занимает до 3.3 мс. Очевидно, что для данной задачи задавать интервал менее 4мс нет смысла.

Задачи и контроль времени выполнения в CoDeSys, image0062

Рис 3. Конфигурация ПЛК в режиме онлайн.

 

Далеко не в каждом ПЛК удается напрямую измерить длительность выполнения программы. Часто она меньше или сравнима с дискретностью системного таймера.

Раздел: CoDeSys. Теория. Метки: , ,

Оставить комментарий

Отправить сообщение

CoDeSys GSM/GPRS модем Lectus OPC MasterSCADA Modbus MX110 Omron OPC-сервер owen owen logic PLC Configuration PROFIBUS s-200 SCADA scada системы siemens siemens plc SIMATIC Simplight SMS step7 TRACE MODE Динамизация ИП-320 МЭК 1131–3 ОВЕН ОВЕН ПЛК ОВЕН ПЧВ ПЛК ПЛК ОВЕН ПР 110 Панель оператора Программируемое реле Частотный преобразователь библиотека в CoDeSys визуализация диспетчеризация конфигурация панели программирование ПЛК серия NS сименс плк частотник частотное управление язык CFC язык ST
.