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

Тема: "Преобразование" указателей на тип FB или как определить тип FB в runtime

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Question "Преобразование" указателей на тип FB (полиморфизм FB)

    Привет коллеги!
    В общем задача относится не столько к ПЛК 73, как к CDS2.3 в целом.
    Использую в своих проектах такой механизм, как "настраиваемые входы". Не в прямом смысле, конечно.
    Например, есть несколько датчиков. Но в одной компоновке оборудования одни ИСПОЛЬЗУЮТСЯ, в другой - эти же НЕ используются.
    Понятно, что если датчик отключен, то будет ошибка (программно обрабатываю, разумеется). Поэтому в настройках можно включать и отключать датчики.
    С датчиками все ОЧЕНЬ легко - структура с флагом "использовать = true/false" и переменная - указатель на вход, где брать значение.
    При запуске инициализируем в соответствии с настройками из энергонезависимой памяти и вперед...
    Даже показывать не буду.

    Для дальнейшего развития беседы следующая аксиома: сам процесс одинаково протекает, "компоновка оборудования" означает что в одном случае нагреваем и кипятим в одной посудине, а в другом - в 2х разных, вот отсюда 1-2 датчика и 1-2 нагревателя. А управление абсолютно одинаковое.

    Ну и чем дальше в лес, тем толще партизаны.
    При очередном апгрейде проекта решил я заморочиться с настраиваемыми выходами. Сделал по полной аналогии с входами.
    Идея проста: есть несколько "функциональных выходов", например: 2 нагревателя, 2 выключателя-реле.
    В одной компоновке оборудования есть ОБА НАГРЕВАТЕЛЯ и ОБА ВЫКЛЮЧАТЕЛЯ. В другой, например, по одному.
    На каждый ТИП выхода свой тип Function Block. В "конфигурационной структуре" задаем типы выходов, указатели на "обработчик" выхода = function block.
    Сделал И... УПЕРСЯ в тот факт, что "обработчик выхода" не может быть вызван т.к. типы FB РАЗНЫЕ...

    Понимаю, что "привести" (изменить) указатель на FB не получится. Либо за много лет я так и не узнал Как...
    Сделал очень сухую выжимку из проекта, точнее сгенерировал примерчик того, что хочу достичь, обозвал все так, чтобы и понятно было по смыслу что происходит.
    Буду признателен за подсказку либо как, все-таки, определить какой FB используется и как вызвать разные FB в runtime,
    или, как вариант, кто-то может предложит альтернативный механизм конфигурации "набора выходов".

    Да, добавлю, чтобы ясность была: понятно, что каждая функция выхода "привязана" к конкретному выходу ПЛК, то есть функция(ВЫХОД) может НЕ использоваться в
    изделии (тогда выход не управляется и отключен), но заранее известно к какому выходу какая функция привязана!
    Проект во вложении
    Вложения Вложения
    Последний раз редактировалось dorofeevms; 14.07.2025 в 11:34.

Похожие темы

  1. Ответов: 3
    Последнее сообщение: 02.07.2025, 10:46
  2. Работа входов "Старт/Стоп" и "Зима/Лето" в ТРМ1032М-01.ХХ.Р
    от itor в разделе Контроллеры для систем отопления и ГВС
    Ответов: 1
    Последнее сообщение: 24.12.2024, 09:20
  3. Март 2020. Свежая подборка статей на "Дзене" от "Датчиков ОВЕН"!
    от Алексей Сидорцев в разделе Трёп (Курилка)
    Ответов: 1
    Последнее сообщение: 18.04.2020, 17:32
  4. Ответов: 0
    Последнее сообщение: 02.02.2020, 21:44
  5. Ответов: 16
    Последнее сообщение: 15.02.2017, 11:39

Ваши права

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