Создание и открытие функционального блока более
| |||||||||||||||||
![]() |
В папке Блоки создайте новый функциональный блок. В окне Properties замените имя блока на FB10 и выберите нужный язык программирования. Активизируйте Multiple instance FB [Мультиэкземплярный FB], остальные параметры оставьте по умолчанию. |
| Вы можете создавать мультиэкземпляры для любого функционального блока. Если вы хотите работать с мультиэкземплярами, то учтите, что как вызывающие, так и вызываемые функциональные блоки должны обладать способностью работать с мультиэкземплярами. | |
Для вызова FB1 в качестве "локального экземпляра" FB10 должна быть описана статическая переменная с индивидуальным именем для каждого запланированного вызова FB1. Тип данных здесь FB1 ("Engine [Двигатель]").
В таблице описания переменных в окне для программирования LAD/STL/FBD. Опишите следующие переменные для вызова FB1:
Перевод комментариев (в порядке следования):
Оба двигателя достигли заданной скорости
Первый локальный экземпляр FB1
Второй локальный экземпляр FB1
Заданная скорость достигнута (бензиновый двигатель)
Заданная скорость достигнута (дизельный двигатель)
Описанные локальные экземпляры затем появятся в каталоге
элементов программы в разделе "Multiple Instances [Мультиэкземпляры]".
Программирование FB10 в контактном плане
Вставьте вызов "Petrol_Engine [Бензиновый_двигатель]" как мультиэкземплярного
блока
"Petrol_Engine" в сегмент 1. Затем вставьте требуемые нормально
открытые контакты и завершите вызов символическими именами.
Значение "Actual_Speed [Фактическая_скорость]" для двигателей берется не из битовой памяти (см. раздел), а из совместно используемого блока данных (см. раздел). Назначение общих адресов следующее: "Data_Block".<адрес>, например: "S Data".PE Actual Speed."
Вставьте новый сегмент и запрограммируйте вызов для другого двигателя. Действуйте так же, как для сегмента 1.

Вставьте новый сегмент и запрограммируйте последовательную цепь с соответствующими адресами. Затем сохраните свою программу и закройте блок.

Временные переменные ("PE_Preset_Speed_Reached" и "DE_ Preset_Speed_Reached") подводятся к выходному параметру "Preset_Speed_Reached", который затем далее обрабатывается в OB1.
Программирование FB10 в списке операторов
![]() |
Выделите в новом сегменте область ввода и введите показанные здесь операторы STL |
Программирование FB10 в функциональном плане
Для программирования в FBD введите следующие команды в новом сегменте:


Для редактирования обоих вызовов FB1 в FB10 сам FB10 должен
быть вызван.
Мультиэкземпляры могут программироваться только для функциональных блоков.
Создание мультиэкземпляров для функций (FC) невозможно.
Генерирование DB10 и установка
фактического
значения
Новый блок данных DB10 заменит блоки данных DB1 и DB2. Данные для первого и второго двигателя хранятся в DB10 и потребуются в дальнейшем для вызова FB10 в OB1 (см. раздел)
![]() |
Создайте блок данных DB10 в окне новый блок данных активизируйте опцию Data block referencing a function block [Блок данных, ссылающийся на функциональный блок] и выберите FB10 и подтвердите настройки. |
![]() |
Открывается блок данных DB10. Выберите команду меню View >
Data View [Вид > Представление данных]. В представлении данных отображается каждая отдельная переменная в DB10, включая "внутренние" переменные двух вызовов FB1 ("локальные экземпляры"). В представлении описаний (declaration view) переменные отображаются так, как они описаны в FB10. |
| Замените фактическое значение (Actual Value) для дизельного двигателя на "1300", сохраните блок, а затем закройте его. | |
![]() |
|
Все переменные теперь хранятся в таблице описания переменных DB10. В
первой половине можно видеть переменные для вызова функционального блока
"Petrol_Engine [Бензиновый_двигатель]", а во второй половине
переменные для вызова функционального блока "Diesel_Engine [Дизельный_двигатель]".
"Внутренние" переменные FB1 сохраняют свои символические имена,
например,
"Switch_On [Включить]". Перед этими именами теперь помещается
имя локального
экземпляра; например, "Petrol_Engine.Switch_On".
В нашем примере вызов FB10 производится в OB1. Это вызов представляет ту же самую функцию, которую вы изучили при программировании и вызове FB1 в OB1 (см. далее раздел 8.6). Используя мультиэкземпляры, вы можете далее заменить запрограммированные сегменты 4 и 5 из этого раздела.
Откройте ваш ОВ1. Откройте таблицу символов с помощью команды меню Options > Symbol Table [Параметры > таблица символов] и вставьте в таблицу символов символические имена для функционального блока FB10 и блока данных DB10.

Программирование вызова в контактном плане
Вставьте новый сегмент в конце OB1 и добавьте вызов для FB10 ("Engines
[Двигатели]"). Завершите показанный ниже вызов соответствующими символическими
именами.
Удалите вызов для FB1 в OB1 (далее сегменты 4 и 5 из раздела 5.6), так
как мы теперь вызываем FB1 централизованно через FB10. Затем сохраните
свою программу и закройте блок.
![Выходной сигнал "Preset_Speed_Reached"
для FB10 ("Engines [Двигатели]") передается
переменной в совместно используемом
блоке данных.](fi10/15.gif)
Программирование вызова в списке операторов
Если вы программируете в списке операторов, выделите в новом сегменте область ввода и введите команды STL, приведенные ниже. Для этого используйте FB Blocks > FB10 Engines в каталоге элементов программы.
Удалите вызов для FB1 в OB1 (далее сегменты 4 и 5 из раздела 8.6), так как мы теперь вызываем FB1 централизованно через FB10. Затем сохраните свою программу и закройте блок.
![]()
Программирование вызова в функциональном плане
При программировании в функциональном плане, выделите в новом сегменте
область ввода и введите команды FBD, показанные ниже. Для этого используйте
FB Blocks > FB10 Engines в каталоге элементов программы.
Удалите вызов для FB1 в OB1

Если вам потребуется программа для управления дополнительными двигателями опишите дополнительные двигатели, как было показано, в таблице описания переменных FB10 ("Engines [Двигатели]") и запрограммируйте вызов FB1 в FB10 (мультиэкземпляр в каталоге элементов программы). Затем вы можете определить в таблице символов новые символические имена, например, для процедур включения и выключения.
| <--Предыдущая статья | Следующая статья --> |