А разницы и нет, все тоже самое на выходе. Просто этот механизм позволяет использовать один код для разных ФБ в их одинаковой части. Кому-то проще копи паст, я для себя решил что лучше заморочиться этим способом но потом изменять можно только в одном месте. Когда код живет и развивается от проекта к проекту то это имеет смысл. Если подход лишь бы сдать и забыть то смотреть в сторону ООП от CoDeSys смысла нет совсем, лишние танцы с бубном. Ну и как бонус ООП это еще более универсальная визуализация - опять из проекта в проект проще перетаскивать.
Попробую накидать что-то упрощеное, чтобы не влезать в лишние дебри не имеющие отношение к вопросу.
Подскажите, как реализовать импульсное изменение переменной для ПЛК на языке ST, чем оно отличается от изменения моностабильной кнопкой?
alex2021 Раз ты спрашиваешь, "КАК" реализовать - то значит ты на ST умеешь.
Так вот делаешь FB, в котором на вход кнопки вешаешь R_TRIG, чтобы при длинном считывании кнопки всё срабатывало один раз, пока кнопку снова не отпустят и не нажмут. А потом по выходу этого R_TRIG фигачишь изменение переменной (да хотя бы bOut := NOT bOut.
Отличается от моностабильного тем, что импульсное реле - бистабильное.
Представьте СУ, с 8 (например) аналоговыми входами, у которой 2 типа аналоговых датчиков. Локальные и удаленные (например, modbus), При этом, эти 2 типа еще и подразделяются на, например, температурные и уровня.
И у вас по ТЗ есть необходимость, что бы к каждому из входов СУ можно было подключить любой из датчиков, любого типа, сконфигурировав их в интерфейсе пользователя.
Используя интерфейсы, вы создаете 8 входов СУ, используя наследование (раздельно для modbus и локальных) и интерфейсы - создаете датчики.
Профит, все красиво, читаемо, рабочее.
У ООП много плюсов. Но насчет все красиво, читаемо - это не главное. Инкапсуляция, полиморфизм - да. Защитить данные объекта от некорректной записи, быстро создать множество однотипных сущностей с различными реализациями интерфейсов - тысячу раз да. Но есть один нюанс в работе на ПЛК. Если Ваше приложение не требует быстрой реакции на воздействия - можно творить что угодно, вызывать функции в функции. А вот если время реакции важно сократить, нужно учитывать что есть временные затраты на загрузку/выгрузку в/из стека при вызовах функционального блока, функции, задачи. Я пока новичок в ПЛК. И мне интересно - кто-нибудь оценивал как влияют временные задержки при вызовах функций, блоков и т.д. например на джиттер?
Время реакции зависит от времени цикла и скорости связи с модулями ввода/вывода.