step7-pro
голосование
Чего не хватает сайту
поиска
новых статей
статей о подключении оборудования
примеров решения задач
форума
ничего не нужно
поиск


новости
Появился поиск по сайту. Обещаю его улучшить и сделать более адекватным
--------------11.10.11
Новая гостевая книга надеюсь избавит от спама. Еще немного и появится поис и многое другое
--------------11.07.11
C НАСТУПАЮЩИМ НОВЫМ ГОДОМ И РОЖДЕСТВОМ!
--------------30.12.10
Новые статьи по системным функциям и блокам
--------------25.12.10
Теперь у нас новый дизайн, конечно не супер но надеюсь всем понравиться
--------------05.12.10
Форум закрыт по причине ненадобности
--------------08.09.10
Гостевая книга временно отключена из спама
--------------15.10.10
Наш форум forum.step7-pro.ru общайтесь на здоровье!
--------------03.06.10
Наш сайт в twitter Вы сможете подписаться на рассылку новостей и узнавать о новых статьях на нашем сайте.
--------------20.03.10
После долгого перерыва наш сайт снова начал работать
--------------26.02.10
реклама

Создание и открытие функционального блока более высокого уровня

Представьте себе, что для решения вашей задачи вам требуется управлять не одним двигателем, а скажем 5 и более. Если бы вы действовали как обычно, то вам бы пришлось использовать FB1 для программы управления каждым дополнительным двигателем и назначали бы каждый раз новый блок данных с данными для этого двигателя; т.е. FB1 c DB1; FB1 c DB2; FB1 c DB3 и т.д. Количество блоков в этом случае сильно возрастет.

Работая же с мультиэкземплярами, можно сократить количество блоков. Для этого создайте новый функциональный блок более высокого уровня (например, FB10) и вызовите в нем неизменяемый FB1 в качестве "локального экземпляра". Для каждого вызова подчиненный FB1 хранит свои данные в блоке данных DB10 блока более высокого уровня FB10. Это значит, что вам не нужно назначать никаких блоков данных блоку FB1. Все функциональные блоки обращаются к единственному блоку данных (здесь DB10).

Блоки данных DB1 и DB2 встраиваются в DB10. Для этого вы должны описать FB1 в статических локальных данных FB10.

В папке Блоки создайте новый функциональный блок. В окне Properties замените имя блока на FB10 и выберите нужный язык программирования. Активизируйте Multiple instance FB [Мультиэкземплярный FB], остальные параметры оставьте по умолчанию.
Вы можете создавать мультиэкземпляры для любого функционального блока. Если вы хотите работать с мультиэкземплярами, то учтите, что как вызывающие, так и вызываемые функциональные блоки должны обладать способностью работать с мультиэкземплярами.

 

Программирование FB10

Для вызова 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

В нашем примере вызов FB10 производится в OB1. Это вызов представляет ту же самую функцию, которую вы изучили при программировании и вызове FB1 в OB1 (см. раздел программирование вызова блока в контактном плане). Используя мультиэкземпляры, вы можете далее заменить запрограммированные сегменты 4 и 5 из этого раздела.

Откройте ваш ОВ1. Откройте таблицу символов с помощью команды меню Options > Symbol Table [Параметры > таблица символов] и вставьте в таблицу символов символические имена для функционального блока FB10 и блока данных DB10.

Программирование вызова в контактном плане

Вставьте новый сегмент в конце OB1 и добавьте вызов для FB10 ("Engines [Двигатели]"). Завершите показанный ниже вызов соответствующими символическими именами.
Удалите вызов для FB1 в OB1 (далее сегменты 4 и 5 из раздела 5.6), так как мы теперь вызываем FB1 централизованно через FB10. Затем сохраните свою программу и закройте блок.

Программирование вызова в списке операторов

Если вы программируете в списке операторов, выделите в новом сегменте область ввода и введите команды STL, приведенные ниже. Для этого используйте FB Blocks > FB10 Engines в каталоге элементов программы.

Удалите вызов для FB1 в OB1 (далее сегменты 4 и 5 из раздела программирование вызова блока в контактном плане), так как мы теперь вызываем FB1 централизованно через FB10. Затем сохраните свою программу и закройте блок.

 

Программирование вызова в функциональном плане

При программировании в функциональном плане, выделите в новом сегменте область ввода и введите команды FBD, показанные ниже. Для этого используйте FB Blocks > FB10 Engines в каталоге элементов программы.
Удалите вызов для FB1 в OB1

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

 

<--Предыдущая статья   Следующая статья -->
сделано djoni политика конфидициальности Rambler's Top100