Полигон предоставляет возможность описания алгоритма работы блока при помощи языка Structured Text (ST) МЭК 61131-3.
Структура блока на ST
Рассмотрим структуру кода блока на ST через функционал Редактора кода:
- Область автоматического заголовка находится напротив графического представления блока. Код, содержащийся в этой области генерируется на основе заданных параметров входов и выходов блока и недоступен для редактирования. Не передается компилятору и предназначен для удобства при написании кода блока.
- Область переменных функционального блока (Переменные ФБ), код из которой включается в заголовочный файл класса. Используется для объявления и инициализации дополнительных переменных и констант.
- Область работы алгоритма блока (Работа), код из которой включается в функцию Work, вызываемой при каждом вызове блока в ходе выполнения программы.
Функции для доступа к системной информации
- nsAbsTime() возвращает значение ULINT равное количеству нс прошедших от 01.01.1970, можно использовать как абсолютное время в UTC, например, для меток времени. Может подстраиваться NTP клиентом, поэтому не стоит использовать это значение при измерениях интервалов. Обновляется в потоке Таймер, если он один, или в потоке Входы, один раз за цикл.
- nsMonotonic() возвращает значение ULINT равномерно меняющегося счетчика нс. Не подстраивается NTP и при изменении системного времени, поэтому
можно использовать для измерения интервалов, больших таймерного цикла. Обновляется в потоке Таймер, если он один, или в потоке Входы, один раз за цикл.
- timerCycle() возвращает значение типа REAL равное циклу таймерного потока, в котором выполняется блок, в мс. Если блок выполняется в фоновом потоке, то значение не определено.
- cpuCoresNum() возвращает значение типа UINT равное количеству ядер процессора
Важно
Код блока, написанный пользователем, сохраняется в файле проекта.