В общем, у меня мистика. В другом FB, который отлично работал на заказе в CodeSys 2.3 ПОЧЕМУ-ТО пришлось заменить F_TRIG на R_TRIG, и он заработал ВДРУГ в Owen Logic. Я НЕ понимаю, почему так. Чувствую себя сыном Индуса и Туземца, который перепутал камень с айфоном, что-то там нажал и оно вдруг заработало.
Прям вот всё. С CodeSys я был уверен, а тут - ни в чём не уверен и даже не понимаю, как что работает, почему и зачем.
Окей! Значится, CSDrvPwrDir - это крутой FB, который нужен для управления какими-либо механизмами, которые управляются сигналами "Питание" и "Направление": Шторы, РольСтавни, Краны воды для защиты от протечек и так далее.
Суть такая:
* Есть команды моментального управления по значению: пока команда TRUE - привод работает, пока FALSE - не работает.
Это можно использовать для кнопок: пока держишь - штора открывается или закрывается.
* Есть команды управления по времени: ткнул импульс в TRUE, и привод работает заданное время. Например, подал импульс "Закрыть" - и штора закрывается в течение минуты.
Основная заморочка - с сигналами Pwr/Dir: Dir должен включаться раньше Pwr, а выключаться позже. Но только тогда, когда он задействован (Dir = TRUE - открытие).
Дополнительно там есть выдержка между противоположными командами: если подать Open и сразу Close - то все сигналы выключатся, пройдёт выдержка времени, и потом они включатся в другом положении.
Обе этих заморочки спасают коммутационные реле в щите, если пользователь начинает тыркать кнопки Открыть-Закрыть.
И вот на CodeSys 3.5 всё ОК, а тут - косяк. Без отладки я не могу понять НИЧЕГО.
ДОПОЛНЮ. Полный исходник его я из форума убрал. Не хочу прям вот сильно распространять код.





Ответить с цитированием