Программы с функциональными блоками и блоками данных
Функциональный блок (FB*) содержит часть программы которая может многократно вызываться OB1. Все формальные параметры и статические данные функционального блока сохраняются в отдельном блоке данных (DB*), назначаемом функциональному блоку.
![]() |
В папке Blocks [Блоки ], выбирете в контекстном меню Insert New Object>Function Blocks [Вставить новый обьект> Функциональный Блок] |
![]() |
Откройте FB1 и в диалоговом окне "Properties –Function Block [Свойства – Функциональный блок]" выберите язык, на котором вы хотите создавать этот блок, активизируйте триггерную кнопку "Multiple instance FB [Мультиэкземплярный FB]" и подтвердите остальные параметры настройки, щелкнув на OK. |
Программирование FB1 в виде контактного плана
Теперь запрограммируем FB1 который может управлять двумя различными двигателями с помощью двух блоков данных (DB)
Все сигналы, "специфические для двигателей", передаются функциональному блоку из организационного блока как параметры блока и поэтому должны быть перечислены в таблице описания переменных как входные и выходные параметры (описание "in" и "out").
![]() |
Введите описания в таблицу описания переменных. Тип можно выбрать с помощью команды всплывающего меню Elementary Types [Элементарные типы], используя правую кнопку мыши. При нажатии Enter курсор переходит в следующий столбец, или вставляется новаястрока. |
Программирование включения и выключения двигателя
|
|
![]() |
Вставьте нормально открытый контакт, нормально замкнутый контакт и элемент SR последовательно в сегменте 1(Network 1). Затем выделите путь тока непосредственно перед входом R и вставьте нормально открытый контакт. Выделите путь тока непосредственно перед открытым контактом и вставьте нормально закрытый контакт параллельно открытому контакту. |
![]() |
У вас должна получиться вот такая цепь, введите имена из таблицы описания переменных ( знак # присваеваеться автоматически). Сохраните программу. Локальные переменные блока помечаются знаком # и действительны |
Программирование контроля скорости
|
|
![]() |
Вставьте новый сегмент, и найдите в катологе элементов программы функцию Compare [Сравнение], и вставьте GE_I. Вставьте также в путь тока катушку. |
![]() |
назначте имена из таблицы описания переменных. как это работает |
Программирование FB1 в виде списка операторов |
|
Сделайте описание таблицы переменных точно также как это было описано выше
|
|
Программирование включения и выключения двигателя | |
![]() |
вставьте в сегмент следующие операторы и сохраните блок. |
Программирование контроля скорости | |
![]() |
Вставьте новый сегмент и введите следующие команды, не забудьте сохранить. |
Программирование FB1 в виде функционального
плана
Сделайте описание таблицы переменных точно также как это было описано выше | |
Программирование включения и выключения двигателя
|
|
![]() |
Вставьте в сегменте 1 (Network 1) функцию SR, используя каталог элементов программы (папка Bit Logic [битовая логика]). Добавьте блок AND [И] у входа S и блок OR [ИЛИ] у входа R. Назначьте символические имена везде где есть ??.? |
![]() |
Инвертируйте входы "Automatic_Mode" и #Failure [Неисправность] соответствующей кнопкой из панели инструментов. |
Программирование контроля скорости | |
![]() |
Вставьте новый сегмент и выделите область ввода. |
![]() |
Присоедините к блоку сравнения блок присваивания значения выходу и адресуйте входы именами из таблицы описания переменных. Ваша программа готова. |
Генерирование экземплярных блоков данных и
изменение фактических значений
Чтобы в будущем получить возможность вызова функционального блока в OB1, вы должны сгенерировать соответствующий блок данных. Экземплярный блок данных (DB) всегда ставится в соответствие функциональному блоку.
Функциональный блок должен управлять и контролировать работу обоих двигателей. Различные заданные скорости двигателей хранятся в двух отдельных блоках данных, в которых изменяется фактическое значение (#Preset_Speed [заданная_скорость]).
Централизованно программируя функциональный блок один раз, вы можете сократить объем программирования.
Создайте блок данных DB в папке Блоки и примите все параметры отображаемые в диалоговом окне Propeties.
Программирование вызова блока в контактном плане
Всё что вы сделали, бесполезно пока вы не вызовите функциональный блок из OB1. Для каждого вызова функционального блока используется блок данных, и вы, таким образом, можете управлять обоими двигателями.
Откройте ОВ1 и вставьте сигмент 4. В катологе элементов программы выберете и вставьте FB1
![]() |
Вставьте нормально открытый контакт перед каждым из следующих входов: Switch_On [Включить], Switch_Off [Выключить] и Fault [Неисправность]. Щелкните на знаке ??? и в контекстном меню выберете Insert Symbol [Вставить символ]. |
![]() |
Выберете блок DB1 Этот блок затем автоматически вводится в рамку ввода в кавычках. |
![]() |
Щелкайте на вопросительных знаках и назначьте адреса всем остальным параметрам функционального блока, используя соответствующие символические имена из прокручиваемого списка. |
Запрограммируйте в новом сегменте вызов для функционального блока "Engine [Двигатель]" (FB1) с блоком данных "Diesel [Дизельный]" (DB2) и используйте соответствующие адреса из прокручивающегося списка. сохраните и закройте ваш блок. | |
![]() |
|
Когда вы создаете структуры программ с организационными блоками, функциональными блоками и блоками данных, вы должны программировать вызов для подчиненных блоков (таких, как FB1) в блоке, расположенном в иерархии более высоко (например, OB1). Эта процедура всегда одна и та же. Вы можете также давать различным блокам символические имена в таблице символов (например, FB1 имеет имя "Engine [Двигатель]", а DB1 – имя "Petrol [Бензиновый]"). Вы можете в любое время заархивировать или распечатать запрограммированные блоки. Соответствующие функции можно найти в SIMATIC Manager с помощью команд меню File > Archive [Файл > Архивировать] или File > Print [Файл > Печатать]. |
Программирование вызова блока в списке операторов
В ОВ1 создайте новый сегмент
![]() |
В разделе кодов напечатайте CALL "Engine", "Petrol", а затем нажмите Enter. Отображаются все параметры функционального блока "Engine [Двигатель]". Откройте контекстное меню в поле Switch_On и выберете Insert Symbol [Вставить символ]. |
![]() |
Щелкните на имени Switch_On_PE. Оно берется из контекстного меню и автоматически добавляется в кавычках. Назначьте все требуемые адреса переменным функционального блока, используя контекстное меню. |
Запрограммируйте в новом сегменте вызов для функционального блока "Engine [Двигатель]" (FB1) с блоком данных "Diesel [Дизельный]" (DB2). Действуйте таким же образом, как и для другого вызова. Сохраните ваш блок. |
Программирование вызова блока в функциональном плане
Здесь действуйте так же как и варианте с LAD c той лишь разницей что вам не нужно ставить нормально открытые контакты.
Не забудьте назначить всем остальным параметрам функционального блока, используя соответствующие символические имена из контекстного меню. Точно также сделайте и для второго двигателя. Сохраните блок и закройте его.
<--Предыдущая статья | Следующая статья --> |