Тогда это косяк в программе. Если не задумано щёлкать этим реле, то оно и не должно так делать. Возможно где то надо поменять местами строки. Может ещё что. Возможно в ОЛ это связано с фишкой обратной связи с задержкой на цикл, чего в кодесисе нет.
Вид для печати
Тогда это косяк в программе. Если не задумано щёлкать этим реле, то оно и не должно так делать. Возможно где то надо поменять местами строки. Может ещё что. Возможно в ОЛ это связано с фишкой обратной связи с задержкой на цикл, чего в кодесисе нет.
1exan Такс... Пишу мысли:
1. Так как мне ща надо сдать проект, то я всё же перепишу на FBD простой блок управления и заставлю его работать.
2. Потом установлю свежий OWL в отдельную папку и буду разбираться.
3. Ага. У меня первой была мысль про разное время цикла. Но...:
а) В ПЛК эти задачи вообще вызываются раз в 100 мсек
б) В одном из проектов ПЛК вообще очень нагружен: загрузка процессора 80%.
И ни фига - работает нормально. Так что грешу на вычисления.
4. После опытов выложу сюда всё. И Максу Денисову напишу
МихаилГл Нейросеть, спасибо. Конечно, если не должно щёлкать, то не должно щёлкать.
В общем, у меня мистика. В другом 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 всё ОК, а тут - косяк. Без отладки я не могу понять НИЧЕГО.
ДОПОЛНЮ. Полный исходник его я из форума убрал. Не хочу прям вот сильно распространять код.
Тоже использую автоматы похожего вида и думаю перенести что-то с ПЛК, например на ПР103
1exan Ой! Мои комменты по параметрам:
* Выстави UseStopByFullSame и UseStopByFullRev в 1 - это чтобы в момент полных операций нажатия на ту же или противположную кнопку вырубали этот режим.
* Выстави TimeDelayITL в 500 (мсек)
* Выстави TimeDelayDIR в 250 (мсек)
(эти два времени должны быть небольшими, в диапазоне 100-250 мсек, поэтому они в мсек и задаются)
* Выведи для теста RelayPower тоже на выход Q1. Вдруг отдельно RelayDir работает, а вместе с RelayPower - нет.
Ожидаемое поведение: после подачи команды CmdOpenFull у нас врубается RelayDir, потом RelayPower. Если мы нажимаем CmdStop, то олжно вырубиться RelayPower, а потом RelayDir с задержкой.
ДА!!! ТЫ КЛАССНО оформляешь конечные автоматы и переменные!! Я ОЧЕНЬ рад, так как у нас на форуме дофига народа, которые переменные называют криво, и код не кооментируют.
Если писать на ПЛК, то я там ещё и номера шагов константами делаю, типа StateStop, StateWait и так далее. И эти константы прокатывают в качестве элементов CASE влёгкую! В ПРке констант нет (и в этом портированном FB пришлось цифрами их заменять)!
Дополню. Так вот на видео как раз же глюк и виден. Там RelayDir кратковременно вырубается. А должно работать без этого импульса, зараза. Я уж думаю, не мой баг ли это вообще в принципе.
Cs-Cs, если вы не видите ошибку в коде, это не значит, что её нет. Тем более это функциональный блок, и из кодесиса вы его в st вызываете? А в ОЛ скорее всего из FBD.
Да-да, я та нейросеть, которая 6 лет назад Вам показала, что в софт комфорте тоже можно сделать управление светом, чего вы так и не смогли.
МихаилГл 1. Чёёё? Я же всё писал. Стоит внимательно читать. В OWL это исполняется так же на ST.
2. Не помню ничего. У меня 6 или 7 статей про Logo. Всё делал, всё работает.
Сейчас на этом форуме все твои ответы ужасные, невпопад и выглядят как сборник ключевых слов без смысла в режиме "каждый бочке затычка". Был бы я тут администратором - забанил бы.
В ОЛ это макрос на СТ, который вы используете в ФБ в основной программе. Я это имел ввиду. И вы внимательно читали? Я спросил, в кодесисе вы запускаете из СТ этот модуль? Или он у вас в основном тексте программы? Это совершенно разное поведение можно получить.
Да-да, помню как у вас получилось. Ваш гневный опус что ОЛ это верх технической мысли, ну и ПЛК от Овена, а сименс шлак...
Приведите пример как это можно получить разное поведение кода с одинаковыми входными данными и одинаковым циклом вызова?
Добрый день.
Подскажите почему возникает задержка на цикл при передаче значения с выхода ФБ на вход другого ФБ и как её победить. Если присвоить сетевой переменной SetDuty GVL значение допустим 100, то импульс на выходе SET_CNT блока GT_CTRL достигнет входа R блока GT_ENC только на следующем цикле программы. Если делать на FBD такого не наблюдал.
0. ЦИКЛ. Изменили переменную
Вложение 75725
1. ЦИКЛ. Запись переменной
Вложение 75726
2. ЦИКЛ. Переменная попала на вход блока
Вложение 75727
Проект во вложении
С уважением Юрий.
В CoDESYS вот так.
1.
Вложение 75728
2.
Вложение 75729
3.
Вложение 75730
А есть ли ручное указание очередности исполнения блоков?Цитата:
У вас есть линия RUN - RUN_PUMP, которая определила порядок обработки блоков именно таким образом. Перерисуйте её как линию задержки и, думаю, порядок станет таким, как вам нужно
МОЙ ВОПРОС ПРО ГЛЮК FB Owen Logic СНЯТ. Всё-таки глюк был именно в моём исходном соде на CodeSys 3.5. Вот видео: https://cs-cs.net/ExxChange/CSDrvPwrDir-BugDemo.avi
На нём видно, что после выключения первого реле второе "мигает", а должно работать с задержкой.
Ааа (для тех, кто не в теме)! Речь идёт про сложное управления сценариями света: https://cs-cs.net/sh-knx-light-scenarios-owen-mone
Суть там в том, что на Logo и строго на FBD люди хотели сделать сложный механизм сценарного управления светом с кучей зависимых групп (ТехЗадание описано там, по ссылке). Можно сказать, что это мог быть бы аналог совковых кнопок П2К, где каждую можно нажать и отжать отдельно, но при нажатии любой другой кнопки происходит переключение на неё. При этом каждая "кнопка" включает свой набор из 6 групп света (и ещё и каждая группа света управляется отдельно).
За счёт убогости языка Logo и ограничения на число блоков на схеме я тогда взял ПЛК, ST и всё на нём сделал. Сейчас на ПРке я бы такое тоже родил, так как у OWL язык FBD (и количество памяти) гораздо лучше, чем у Logo.
См. сообщение выше. Мое другое предположение об незамеченной ошибке в коде было отвергнуто:
https://owen.ru/forum/showthread.php...l=1#post436815
https://owen.ru/forum/showthread.php...l=1#post436824
А с тем предположением я солидарен :-) Я просто так акцентируюсь на однозначности выполнения ST кода, чтобы не читать потом тут консперологические теории.
Добрый день!
Подскажите как пользоваться вызовом системных функций и ФБ внутри ФД на ST. Что то у меня не получается. Пишу в области Var SYS.Blink, выскакивает подсказка , и что дальше? Не пойму как привязаться к входам выходам. А если попробовать вызвать в области выполнения кода, то она не доступна.
Спасибо, это хорошая новость.
Можно тогда еще вопрос, раз уже все тут собрались. Сейчас сделал такую штуку. Проверяю сохранение моточасов в энергонезависимой памяти. Т.е. Включил отладку включил мотор, смотрю как насчитываются моточасы. Потом отключил отладку, выключил ПР103. Через 5 мин включил, пытаюсь подключиться онлайн, чтобы посмотреть сохранились ли данные. А он мне пишет "Программа не совпадает с ПР103. Загрузите программу". Собственно вопрос, это потому что отличаются счетчики? И как с этим жить, не хочется приехать на объект, и стереть им там все данные чтобы просто подключится онлайн))
Пришлите ваш проект на почту soft@owen.ru, проверим, звучит как баг
Добрый день. Прошу помощи, несколько дней уже ломаю голову, не пойму как решить проблему.
Описание: Управление осуществляется с помощью одного входа на который заведен gsm-модуль и дублирующая кнопка (по месту). Необходимо при первом нажатии активировать выход Q1, при втором, выход Q2. И так поочередно. Т.е. если сигнал поступил, всегда активен только один выход, если не вышло время и не сработал концевик. Задан интервал времени 40сек, на работу выходов, за это время должны сработать один из датчиков (концевики) и сбросить сигнал, повторным нажатием на кнопку возможно активировать только тот выход, на который не сработал датчик.
Сделал первый вариант, вроде бы все работало, но увеличил скорость работы двигателя и заготовка пролетела концевик, не сбросив цикл, а таймер еще не вышел, в общем последствия не очень!
Вложение 76006
Переключение выходов сделал в макросе через D триггер с отрицанием одного из выхода. Второй вариант сделал так же через D триггер на каждый выход и вроде бы все хорошо. выхода переключаются, концевики сбрасывают цикл и таймеры. Но, при активации выхода Q1 и входа I2 происходит переключение на выход Q2 и ни как не могу это победить, концевики должны делать полный сброс с выходов
Вложение 76007
Добавь rs триггеры
Добрый день! Плдскажите пожалуста: вот написан ФБ на ST, перенес его на холст и подключил переменные. Решил его отредактировать - отредактировал но изминения не появляются в ФБ размещённом на холсте. Приходиться его удалять и вновь перетаскивать на холст и по новой подключать переменные. Есть ли вариант чтобы изминения появлялись уже в блоке размещённом на холсте без предварительного удаления первой версии?
Если подключена на выход, хотя бы одна энергонезависимая переменная (или выход ПР), при изменении ФБ он становится красным с ошибкой, Вложение 76035
что блок модифицирован, ПКМ мыши обновляете ФБ и ошибка пропадает, ничего по новой не подключая.
Вот смотрите реальный пример.Выход ФБ должен быть типа BOOL но по невнимательности сделал ег целочисленым. Перетаскиваю,,хромой,, ФБ на холст и пытаюсь соединить выход ФБ с логичиским ИЛИ. Естествено ЛОДЖИК говорит что это сделать не возможно без преобразования. Я начинаю редактировать,,хромой ,,ФБ, исправля. его выход на BOOL. Возврощаюсь на холст но в там изминения не произошли, выход остался целочисленным. Я его сношу и вставляю по новому , тогда все в порядке, но приходиться по новому его комутировать на холсте. Вот так
Коллеги, здравствуйте!
Примите ещё пожелание к редактору ST:
Хотелось бы видеть подсветку всех обращений к переменной или функциональному блоку при её выделении в тексте программы (аналогично функции "Перейти к месту использования", только сразу в тексте программы).
Например, как это выглядит в Codesys:
в строке 2 выделен вызов ФБ tofBeepOFF и в 6-й строке подсвечено обращение к выходу этого ФБ
Вложение 76099