PDA

Просмотр полной версии : Не работает наследование. Первый раз сталкиваюсь



Jolly
12.07.2025, 14:06
84792

Всем привет! Проблема с наследованием! Создал ФБ FB_MY EXTENDS ETrigA.

84793

Теперь если я в PLC_PRG создаю экземпляр ФБ ETrigA - то он работает как нужно,
а если я создаю экземпляр FB_MY (который унаследован от ETrigA) - то он никак не реагирует на вход xExecute.

Первый раз в ООП, в чем проблема?

melky
12.07.2025, 14:35
а что, наследникам уже не надо задавать переменные ? не знаю, как тут в ST, в C# пустого наследника не создашь (Студия начнет ругаться, что нет того или этого). Думаю тут так же, просто такого функционала проверок нет.

Jolly
12.07.2025, 14:51
В дочернем ФБ добавлял переменные, но это ситуацию не меняет. Единственный момент - это то, что в материнском ФБ есть методы private. Но я пробовал их делать public - ситуация не меняется

melky
12.07.2025, 14:59
https://dzen.ru/a/YQPuMEz3UwHwx1x4

Может поможет, не разбирался

Валенок
13.07.2025, 22:21
а что, наследникам уже не надо задавать переменные ? .
Зачем? Необязательно


...Создал ФБ FB_MY EXTENDS ETrigA...
Теперь если я в PLC_PRG создаю экземпляр ФБ ETrigA - то он работает как нужно,
а если я создаю экземпляр FB_MY (который унаследован от ETrigA) - то он никак не реагирует на вход xExecute...
А кто будет реагировать? Вы же небось новый пустой код (";") объявили? Вот он и выполняется. Пишите свою реакцию.
Или вы хотите что-то своё и использовать код родителя? Тогда делайте свое и вызывайте в нужном месте код родителя*. Всё просто.

*
SUPER^();

ГИГАВОЛЬТ
19.10.2025, 16:29
Единственный момент - это то, что в материнском ФБ есть методы private...

Которые будут недоступны в наследниках, используйте protected. Хотя, похоже у вас и не в этом проблема, но тем не менее.