3.1.1. Установка функциональных блоков в программе
При установке функциональных блоков необходимо помнить правило, что очерёдность выполнения блоков в программе сверху вниз, слева направо, а точка привязки – левый верхний угол блока. Например, необходимо сложить переменные А, В (тип FLOAT), привести сумму к типу INTEGER, сравнить с переменной С (тип INTEGER)и результат переместить в переменную D. Блок EQU будет выполняться последним, т. к. его точка привязки расположена ниже точки привязки блока CMP (порядок выполнения блоков указан цифрами внутри блоков).
![]() |
3.1.2. Ветвление по нескольким условиям
Рассмотрим пример программы, в которой выполняются различные процедуры, в зависимости от значения переменной SW.
Программа на языке FBD будет выглядеть, как показано на рис.13.
![]() |
3.1.3. Организация циклов
Существует два принципиальных подхода к организации циклов: организация ''непрозрачного'' цикла, организация ''прозрачного'' цикла.
Во время ''прозрачного'' цикла в данной программе
другие программы системы исполнения также выполняются. Во время
''непрозрачного'' цикла – ожидают его окончания.
В ''непрозрачном'' цикле (рис.15) программа будет исполняться непрерывно за один цикл контроллера до тех пор, пока переменная i не примет значение true. Все остальные программы системы исполнения будут ожидать окончания цикла. В "прозрачном цикле'' (рис.16) программа будет исполняться один раз в полном цикле системы исполнения, пока переменная i имеет значение false. Выполнение других программ не зависит от окончания цикла. Очевидно, что подход, реализованный в ''непрозрачном'' цикле, не мешает работе других программ и является предпочтительным. Напротив, организация ''непрозрачных'' циклов может существенно снизить быстродействие системы исполнения и привести к потере управления процессом.
3.1.4. Ожидание события
Задача ожидания события также организуется как ''прозрачный'' цикл. Условием выполнения программы является наступление события. На рис. 17 приведён пример программы, ожидающей событие, когда переменная i примет значение 5. Таким же образом можно решить задачу выполнения программы через строго определённые промежутки времени. На рис.18 приведён пример программы, которая выполняется один раз в 10 секунд.
![]() |
Пока таймерная переменная t меньше 10s, исполняется оператор RETURN и выполнение тела программы не происходит. При достижении переменной t значения 10s оператор RETURN игнорируется, и программа выполняется полностью. Обратите внимание, что сразу после блока CMP стоит оператор TSTART. Чтобы обеспечить правильные промежутки времени между выполнениями программы, нужно инициализировать таймерную переменную t сразу после блока сравнения, а не в конце тела программы.
3.1.5. Подсчёт событий
Для реализации счётчика событий достаточно блока ADD.
На нём можно реализовать схему, ведущую счёт как в положительную, так и в
отрицательную стороны с произвольным шагом (рис. 19).
Эти функции можно реализовать и блоком SUB,
а также с переменным шагом, если вместо константы применить переменную. Для
примера можно посмотреть на реализацию библиотечного блока CPS
(библиотека LIB1 – разное). Значение переменной CURувеличивается
на 1 в каждом цикле системы исполнения, а раз в секунду копируется в переменную
CPS. По величине CPS можно судить
о производительности системы исполнения.
В примере, приведённом на рис. 20, переменная S увеличивает своё значение на +1, когда переменная tick изменит своё состояние из FALSE в TRUE. Переменная М увеличивает своё значение на +1, когда значение переменной S достигнет значения 60. По умолчанию все переменные равны нулю.
3.1.6. Установка таймерных переменных
Таймерные переменные являются простым инструментальным средством, позволяющим организовать счёт времени, элементы задержки, селекторы длительности и т.п. Таймерную переменную можно сравнить с секундомером, который запускается командой TSTART, а останавливается командой TSTOP. Количество таймерных переменных, как и переменных других типов, ограничено лишь ресурсами системы исполнения.
Рассмотрим несколько примеров использования таймерных переменных. На рис. 21, а приведена программа, в которой реализован селектор импульсов по длительности, а на рис 21, б – временная диаграмма работы программы.
Переменная Out примет значение переменной Inp
только в том случае, если переменная Inp не изменит своё состояние в
течение 1s. В секции INITпроисходит начальное задание
значения переменной Out (на выходе копируется состояние входа) и
инициализируется таймерная переменная Т. Далее в секции MAIN любое
значение Inp приводит к перезапуску таймерной переменной Т.
Значение переменной Т сравнивается с константой =1s. Если Т больше
1s, то значение переменной Inp копируется в
Out. Таким образом, осуществляется ''подавление
дребезга'' сигнала Inp. Время селекции можно сделать любым, если вместо
константы =1s использовать таймерную или другую константу.
На рис. 22 приведена программа управления насосом. Таймерные переменные (Твкл, Тоткл) используются для определения контрольных промежутков времени между сигналом на включение насоса (НАСОС) и приходом сигнала подтверждения включения от датчика обратной связи (ДАТЧИК). Этот блок включен в библиотеку ''LIB1-разное'' под названием PUMP.
После выдачи команды на включение насоса (ВКЛ=TRUE) и если нет аварии (АВАРИЯ=FALSE), устанавливается сигнал включения насоса (НАСОС=TRUE).
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.