Codesys, как среда разработки, имеет очень много сахара, который не всегда требуется, но позволяет прям в полет фантазии.
Так что затронем немного ООП. да и то, как работает вся эта компиляция и рантайм под капотом.
Метод FB_Init() доступен неявно и используется для инициализации. Этот метод можно спокойно расширить и написать в нем свою реализацию.
Вот интерфейс для реализации
METHOD FB_Init : BOOL VAR_INPUT bInitRetains : BOOL; // TRUE: хранимые(retain) значения инициализированы (reset warm / reset cold) bInCopyCode : BOOL; // TRUE: код экзепляра будет скопирован позже (online change) END_VAR
Сейчас покажу как этот метод работает.
1)Стандартно создаем ФБ. Называем как хотим.
2) Через ПКМ по ФБ создаем метод. Который называем FB_Init, возвращаемое значение BOOL;
Логика работы моего метода простая. В ФБ я объявил переменную тип DINT куда я, при инициализации хочу поместить адрес ячейки с которой это все творчество стартует.

Тут у нас еще есть немного сахара — это слово THIS, которые буквально является POINTER TO [наш фб]
3)Для того, чтобы убедиться, что этот метод работает сам по себе в теле самого фб мы пропишем принудительную запись числа в объявленную переменную.

4) Дальше наша задача где-нибудь их объявить и в основной программе я вывожу переменную MyAdr

Загружаем запускаем и смотрим….

Вот и все. У нас готов результат выполнения, нашего метода, который вызывается при инициализации. Если бы у нас выполнилось тело ФБ, то результат был бы следующим.

Всем большое спасибо за внимание.
