Попытаюсь поставить все на место. В ST есть два понятия функция и
функциональный блок. Функция это обычная функция такая как в Си,
также может оперировать переменными любым временем жизни и областью
действия. Глобальными, статическими, динамическими... А
функциональный блок это класс (или Си структура, называйте как
нравится), который имеет главный метод, определяющий поведение
этого объекта. Этому методу передается указатель на конкретный
экземпляр класса. Для того
чтобы </b>
объект "жил" надо вызывать его главный метод. Возможно создание дополнительных методов. Тогда сообщения объекту передаются не через поля класса (как вообще-то в ST принято), а через методы (реверанс в сторону классического ООП) Поля класса (по сишному поля структуры), могут быть приват и паблик, а также фишка языка, модификатор const внутри метода и снаружи, таким образом реализуются входы/выходы.
Экземпляр функционального блока надо объявить. Полный аналог объявления в Си.
Функциональный блок может содержать другие функциональные блоки. Это как полем структуры является другая структура.
Функциональный блок может адресоваться к глобальным переменным, входам выходам ПЛК, но где тогда бизнес, правильнее в написать функцию.