Функциональные блоки вещь удобная, но для его использования требуется
дополнительная память программы, т.е. при написании программы с использованием
FB её размер значительно увеличивается. Но не во всех
случаях, иногда можно даже экономить объем программы благодаря FB.
FB по своим свойствам очень похож на подпрограмму.
т.е. создав в таблице символ для какого нибудь блока мы уже прописываем его код
где-то в памяти программы. Далее описывая программу мы вызываем его в какой-либо
строке со своими входными и выходными данными. Фишка в том что один и тот-же
блок, с одним и тем-же именем символа как; и подпрограмму можно вызывать
несколько раз, с разными входными данными, почти как старинную функцию
MCRO. но это возможно только для простых FB,
в которых вычисляется что-то за один проход и блоку не требуется внутренних
переменных для хранения данных для следующего цикла работы.
Самый простой пример такого блока: fb1.cxp
Вычисляется расход газа и воздуха одним и тем-же блоком.
Но большинству блоков все-таки требуются адреса для хранения данных, вроде
как в этом случае нельзя его использовать несколько раз в программе. Можно, если
внутренние переменные которые используются для хранения вывести наружу как
переменные In Out. например как здесь fb2.cxp счётчик отвесов и количества
отдозированного материала за смену по разным рецептам. Вынести таймер наружу
подобным образом конечно не получится, но его можно описать и математикой.
Совет: Программу мы можем редактировать до бесконечности, добавляя и
удаляя FB, иногда возникает ситуация, когда блок в
программе удалён, но остался в таблице символов, в этом случае размер программы
практически не уменьшится, т.е. удалив блок в программе, удалите и его символ в
таблице.