FB_Init() — неявный метод в Codesys.

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

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

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

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

Ответить