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






