Создание и открытие функций (FC)
Функции, как и функциональные блоки, расположены в иерархии программы ниже организационного блока. Чтобы функция обрабатывалась CPU, она должна быть вызвана в блоке, расположенном в иерархии выше нее. Однако, в отличие от функционального блока, блок данных не нужен.
У функций параметры тоже перечисляются в таблице описания переменных, но статические локальные данные не разрешаются.
Создать функцию можно с помощью контекстного меню Insert New Object >Function [Вставить новый блок > Функция]. В диалоговом окне выберете язык программирования.
В отличие функционального блока, в таблице описания переменных для функции не могут быть определены никакие статические переменные. Статические данные, определенные в функциональном блоке, сохраняются, когда блок закрывается. Статическими данными могут быть, например, биты памяти, используемые, например, в качестве предельных значений скорости. Для программирования функции вы можете использовать символические имена из таблицы символов.
Программирование функций
Запрограммируем функцию таймера. В качестве примера возьмем вентилятор для охлаждения двигателя, функция таймера дает возможность вентилятору включиться, как только включается двигатель, а затем вентилятор продолжает работать в течение четырех секунд после выключения двигателя (задержка выключения).
Вы должны указать входные и выходные параметры функции (описание "in" и "out") в таблице описания переменных. Вы работаете с таблицей описания переменных таким же образом, как и с таблицей для функционального блока.

Программирование функции таймера в контактном плане
![]() |
Из каталога элементов программы вставьте эелемент S_OFFDT(запуск таймера с задержкой выключения) |
![]() |
Не забудьте вставить нормально открытый контакт перед входом S и катушку после выхода Q |
![]() |
|
Установите время задержки на входе TV функции S_OFFDT. Здесь S5T#4s означает, что определена константа, относящаяся к типу данных S5Time# (S5T#), определяющая длительность в четыре секунды (4s). Более подробнее об этой функции и о формате времяни вы можете узнать здесь(программирование таймеров) |
|
Функция таймера "#Timer_Function" запускается входным параметром "#Engine_On [Включить_двигатель]". Позднее, когда эта функция вызывается в OB1, она один раз будет снабжена параметрами для бензинового двигателя и один раз параметрами для дизельного двигателя (например, Т1 для "PE_Follow_on"). Символические имена этих параметров вы позднее введете в таблицу символов. |
|
Программирование функции таймера в списке операторов | |
![]() |
Выделите в сегменте область ввода и введите операторы, как здесь показано. Сохраните и закройте окно. |
Программирование функции таймера в функциональном плане | |
выделите в сегменте область ввода и введите показанную ниже программу FBD для функции таймера. Более подробнее об этой функции и о формате времяни вы можете узнать здесь(программирование таймеров) | |
![]() |
Чтобы функция таймера обрабатывалась, вам нужно вызвать эту функцию в блоке, расположенном более высоко в иерархии блоков (например, в OB1).
Вызов функции в OB1
Вызов функции FC1 в OB1 выполняется таким же способом, как и вызов функционального блока. Все параметры функции снабжаются в OB1 соответствующими адресами вашего двигателя. Так как эти адреса еще не определены в таблице символов, то символические имена этих адресов не будут добавлены.
Откройте OB1 и в окне для программирования с помощью команды меню Options > Symbol Table [Параметры > Таблица символов]
В Конце таблицы добавьте следующие символы:

Перевод комментариев (в порядке следования):
Время "последействия" для вентилятора дизельного двигателя
Время "последействия" для вентилятора бензинового двигателя
Управление вентилятором
Команда для включения вентилятора бензинового двигателя
Команда для включения вентилятора дизельного двигателя
Программирование вызова в контактном плане
Вставьте новый сегмент, а затем в катологе элементов программы выберете и вставьте функцию FC1. Вставьте нормально открытый контакт перед "Engine_On [Включить_двигатель]". и присвойте символические имена.
Точно также в новом сегменте можно вызвать функцию FC1 но для другого двигателя , назначив другие адреса.
Сохраните и закройте блок.
Программирование вызова в списке операторов
Здесь показано все тоже самое , только в виде списка операторов
Программирование вызова в функциональном плане
При программировании в FBD введите в новом сегменте следующие команды:
Вызов функций в нашем примере был запрограммирован как безусловный; т.е. функция будет обрабатываться всегда. В зависимости от требований вашей задачи автоматизации, вы можете сделать вызов функции или функционального блока зависящим от определенных условий; например, от входа или предшествующей логической операции.
Вход EN и выход ENO в блоке предоставляются для программирования условий.
<--Предыдущая статья | Следующая статья --> |