Главная Обратная связь

Дисциплины:






Вызов функциональных блоков FB и DFB



Чтобы найти имена доступных функциональных блоков, следует обратиться к библиотекам блоков.

Перед вызовом блока FB/DFB он должен быть объявлен с использованием VAR и END_VAR.

Функциональные блоки и блоки DFB вызываются утверждением, которое состоит из имени экземпляра FB/DFB, и сопровождается списком распределения значений в скобках (фактические параметры) – формальными параметрами. Порядок распечатки формальных параметров в обращении функционального блока не имеет значения. Не требуется, чтобы всем формальным параметрам были распределены значения. Если формальному параметру не присвоено значение, начальное значение, определенное в редакторе переменных, используется при выполнении функционального блока. Если начальное значение не определено, используется значение по умолчанию (0).

Каждый экземпляр FB/DFB может вызываться только один раз.

Если функциональный блок не имеет входов или входы не параметризованы, функциональный блок вызывается до использования выходов.

Пример вызова функционального блока и блока DFB приведен на рисунке 10.10.

Рисунок 10.10 – Вызов функционального блока и блока DFB

Выходы функциональных блоков и блоков DFB могут использоваться всегда при использовании переменной предназначенной только для чтения.

Пример использования выхода функционального блока и DFB приведен на рисунке 10.11, а пример вызова функционального блока – на рисунке 10.12.

Рисунок 10.11 – Использование выхода функционального блока и блока DFB

Рисунок 10.12 – Вызов функционального блока

Пример на рисунке 10.12 показывает объявление и вызов функционального блока на языке ST и его вызов на языке FBD.

Обращение к функциям.Чтобы найти имена доступных функций, следует обратиться к библиотекам блоков.

Функции вызываются утверждением. Утверждение состоит из фактического параметра (переменной) выходов, следующего затем утверждения распределения «:=» и следующего за этим утверждением имени функции, сопровождаемого списком в скобках фактических параметров входов. Имеет значение порядок распечатки формальных параметров в обращении к функции.

Функция может также вызываться утверждением, состоящим из фактического параметра (переменной), утверждения распределения ”:=”, имени функции, сопровождаемой списком в скобках распределения значений (фактические параметры) формальным параметрам. Порядок, в котором формальные параметры перечислены в обращении к этому экземпляру функции, не имеет значения.

Пример обращения к функции приведен на рисунке 10.13.

Примеры обращения к функциям приведены на рисунке 10.14 и 10.15.

Пример на рисунке 10.15 показы­вает объявление и обращение к функции на языке ST и ее вызов на языке FBD.



Рисунок 10.13 – Обращение к функциям

Рисунок 10.14 – Обращение к функциям

Комментарии. В ST-редакторе комментарии начинаются с сим­вольной цепочки «(*» и заканчиваются с символьной цепочкой «*)» Любой комментарий может быть введен между этими двумя сим­вольными цепочками. Комментарии могут быть введены в любую позицию в ST-редакторе. Комментарии отображаются в цвете.

Рисунок 10.15 – Обращение к функции

Стандарт не разрешает вложение комментариев. Однако их вложение можно осуществить, используя опцию (команду) Options → Preferences → IЕС Extensions... → EEC Extensions → Allow nested comments.

Проверка синтаксиса и генерация объектного кода. Генерация объектного кода выполняется вместе с проверкой синтаксиса, когда секция закрывается. Любые найденные ошибки затем отобра­жаются в окне сообщений. Однако проверка синтаксиса с помо­щью команды Project → Analyze section может также осуществ­ляться во время создания программы или блока DFB.

Чтобы определить опции для проверки синтаксиса, используют команду меню Options → Preferences → IЕС Extensions... → IEC Ex­tensions.

Активизация опции (флажка) Allow case insensitive keywords разрешит доступ к верхнему и нижнему регистрам для всех клю­чевых слов.

Активизация флажка Allow nested comments разрешит ввод вложенных комментариев. Глубина вложения не имеет никаких ограничений.

Чтобы определить опции для генерации объектного кода, ис­пользуется команда меню Project → Code generation options.

Активизация опции Fastest code (restricted checking) генери­рует код, оптимизируемый во время выполнения программы. Эта оптимизация осуществляется реализацией арифметики це­лого числа, например «+» или «-», через простые команды про­цессора вместо обращений к блоку EFB. Команды процессора выполняются намного быстрее, чем вызовы EFB, но они не ге­нерируют сообщения об ошибках типа переполнения арифмети­ки или массива. Эта опция должна использоваться, только если Вы уверены, что не имеется никаких арифметических ошибок в программе.

Пример:

IF i <= max THEN (*i и max имеют тип данных INT *)

i:=i+l;

END_IF;

Если при решении этого примера выбрать опцию Fastest code (restricted checking), сложение i + 1 будет осуществляться коман­дой процессора add, а код будет выполняться быстрее, чем при вызове EFB ADD_INT. Однако ошибка во время работы програм­мы не сгенерируется, если значение max будет 32767. В этом слу­чае значение i переполнится из 32767 в -32768!

Стандарт допускает вызовы функций и функциональных бло­ков без распределения всех их входных параметров. Этим неис­пользуемым параметрам неявно назначен 0 или они поддержи­вают значение из последнего вызова (только функциональные блоки).

Активизация флажка Unassigned parameters cause warnings ото­бразит список неиспользуемых параметров в окне сообщений во время генерации объектного кода.

При активизации флажка Enable Loop Control осуществляется проверка внутри IL- и ST-секций для контуров, чтобы определить, будут ли эти контуры снова покидаться в течение некоторого пе­риода времени. Разрешенное время для контуров зависит от задан­ного времени сторожа. Разрешенное время всегда немного меньше, чем время сторожа. Это предотвращает появление бесконеч­ных контуров во время выполнения программы. Если обнаружива­ется бесконечный контур, обработка вызванной секции завершает­ся и обрабатывается следующая секция. Следующее сканирование будет обрабатывать секцию снова, пока бесконечный контур не будет обнаружен или пока секция правильно не завершится.

Пример 10.1. Согласно условиям примера 7.1 требуется реализовать решение на языке ST.

Решение на языке ST представлено ниже.

VAR

FBI_1_2 : RS;

FBI_1_3 : TON;

FBI_1_1 : RS;

END_VAR

 

FBI_1_1(S := vu, R1 := td);

FBI_1_3(IN := FBI_1_1.Q1, PT := t#3s);

td := FBI_1_3.Q;

FBI_1_2(S := FBI_1_3.Q, R1 := NOT nu);

zd := FBI_1_2.Q1;

Окно редактора переменных представлено на рисунке 10.16.

Рисунок 10.16 – Окно редактора переменных





sdamzavas.net - 2020 год. Все права принадлежат их авторам! В случае нарушение авторского права, обращайтесь по форме обратной связи...