Показано с 1 по 6 из 6

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

  1. #1

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

    1.png

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

    1.png

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

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

  2. #2
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    12,991

    По умолчанию

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

  3. #3

    По умолчанию

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

  4. #4
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    12,991

    По умолчанию

    https://dzen.ru/a/YQPuMEz3UwHwx1x4

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

  5. #5
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    3,054

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    а что, наследникам уже не надо задавать переменные ? .
    Зачем? Необязательно

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

    *
    SUPER^();

  6. #6

    По умолчанию

    Цитата Сообщение от Jolly Посмотреть сообщение
    Единственный момент - это то, что в материнском ФБ есть методы private...
    Которые будут недоступны в наследниках, используйте protected. Хотя, похоже у вас и не в этом проблема, но тем не менее.

Похожие темы

  1. Первый проект на ST
    от EVGEN_ в разделе ПЛК1хх
    Ответов: 75
    Последнее сообщение: 04.12.2024, 08:54
  2. ПЛК150-220.А-М (master) СП307Б (slave): работает write, но не работает read
    от программист_с_паяльником в разделе ПЛК1хх
    Ответов: 19
    Последнее сообщение: 24.01.2022, 09:38
  3. Первый пуск трм 251
    от Денис Кораблев в разделе Эксплуатация
    Ответов: 1
    Последнее сообщение: 19.02.2017, 07:22
  4. Первый раз с ТРМ 132М-01
    от Venya в разделе Сервисное обслуживание приборов ОВЕН
    Ответов: 1
    Последнее сообщение: 23.12.2014, 10:20
  5. Первый пришел первый вышел...
    от kanava в разделе Помощь Разработчикам
    Ответов: 1
    Последнее сообщение: 01.12.2008, 14:00

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •