Ну, так, у нас всего два насоса. Расписываем табличку состояний и реализуем
Безымянный.png
Ну, так, у нас всего два насоса. Расписываем табличку состояний и реализуем
Безымянный.png
В вашем примере при "авто" на одном насосе -> таймер не останавливается. И если до конца интервала остается пара секунд и включить "авто" на второй насос, то первый доработает эти пару секунд и переключится на второй. А в моем примере таймер запускается только при "авто" на обоих насосах и отсчитывает полный интервал переключения. На мой взгляд так лучше.
Сделал задание интервала по Modbus и вход аварий. Не могу придумать как считать с Blink сколько осталось до конца отсчета. Чтобы по Modbus прочитать что то типа: "до смены насоса осталось 10 часов".
Так с перспективой расширения до 8 насосов, в принципе можно расширить до 32 насосов без существенного усложнения программы(по ссылке).
На практике ему это на вряд ли понадобится, но он же не один в нашей галактике, в смысле, может у других больше насосов. Кто-то на форуме делал насосную станцию с 12 насосами с периодом ротации в единицы минут, я спросил где это требуется, но товарищ не смог ответить, в смысле, наверно ещё не придумал где такое требуется.
Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
справиться с проблемами, либо это не твои проблемы.
Может сделать ротацию раз в сутки, например в 9 часов или 2 раза в сутки, в 9 и 21 час или раз в неделю, например в понедельник в 10 часов, короче, суть в том, чтобы время ротации было всем известно, в смысле, не надо смотреть(высчитывать) когда произойдёт ротация.
Если не одумаетесь, таймер с прямым и обратным отсчётом времени здесь выкладывал: https://owen.ru/forum/showthread.php?t=33720&page=17
Последний раз редактировалось Сергей0308; 02.11.2024 в 23:05.
Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
справиться с проблемами, либо это не твои проблемы.
Во-первых это не так, в смысле, ротация останется, изменится только время ротации, а период сохранится.
Если важно и время ротации, что мешает менять батарейку раз в 5 лет?
В этом плане, мне тоже видны преимущества ПР200, в смысле, время можно настроить прямо с экрана ПР, как я понимаю, по сети Вы не планируете синхронизацию времени, иначе такой проблемы и возникнуть не может!
Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
справиться с проблемами, либо это не твои проблемы.
Пришла мне релюшка. Программа работает. И мне очень нравится. Сейчас чтобы сделать ротацию раз в сутки я выставил в blink "1 день". И если в 10:00 один из насосов перевести в "0" и обратно в "авто", то начнется отсчет "1 суток" и по истечении этого времени будет смена насоса. И так каждый день. Если пропадет питание, то отсчет "1 суток" начнется от времени включения. И вот этот момент мне не нравится. Хотя всё работает.
Да. Похоже так и надо делать.
Сейчас мне нужно заменить блок blink на такой блок:
- возможно задать время срабатывания и интервал в днях;
- должен быть вход Enable. Когда он не активен, то на выходе должен быть 0 и счетчик прошедших дней сброшен. При активации Enable начальное состояние выхода 0. По достижении заданного времени и количества дней переключаться в 1. Снова по достижении заданного времени и количества дней переключаться обратно в 0.
- один выход.
И вот тут я завис. Так и не смог сделать такой вот свой Blink. Проблема с фиксацией состояния на выходе согласно вышеописанного алгоритма. Т.е. как только системное время становится 10:00:00, то на 1 секунду появляется импульс счета. Как только насчитали 3 таких импульса -> переключили выход (для трех дней). Но блок ON_OFF сохраняет своё состояние при снятии Enable и как его при этом обнулить я не понимаю.
Сравнительно давно на форуме обсуждали назначение времени ротации, тему не помню(можете поискать), но проект сохранился, в смысле, там можно назначать время ротации:
Дата-Время-Уставка_5.owle
Кроме того делали проект командоаппарата реального времени с маской недели на 32 команды:
Командоаппарат реальногого времени с маской недели на 32 команды 8 канальный_00.owle
Хоть он и 8-и канальный, но память динамическая, в смысле, можно использовать все 32-е команды на один канал.
Здесь подобный, но одноканальный и без маски недели:
Звонок в школе_3.owle
Если просто надо энергонезависимый таймер, здесь выкладывал:
https://owen.ru/forum/showthread.php?t=33720&page=17
И, я так понимаю, Вы принципиально не смотрите, что вам предлагают, в смысле, чем не подходит, что я предлагал и ссылки давал в постах #2 и 8???
Какой тогда смысл, что-то спрашивать?
Последний раз редактировалось Сергей0308; 21.01.2025 в 02:58.
Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
справиться с проблемами, либо это не твои проблемы.
Всё у вас работает, вынес всё из макроса наружу, при записи в счётчик числа 3, переключение происходит на 3 сутки в 10 часов, как и положено.1 Схема 3 дня.jpg На скрине на счётчике число 2 и переключение через 4 секунды 1 Схема 3 дня 2.jpg Переключилось
Сброс сделал элементом OR перед блоком ON_OFF
Последний раз редактировалось kondor3000; 21.01.2025 в 14:24.
poligon вам надо использовать таймеры с выходом "время" и энергонезависимые. Это не про штатные FBD лоджика. Ищите реализации. Их есть и в FBD и в ST, народ выкладывал.
А разве часы в ПР перестают работать при мертвой батарейке? Время вроде не сохранят, но при включенном питании вроде будут считать время.
Ну и инициализацию переменных не забудьте. если за батарейку переживаете. Чтобы при выключении питания и включении заменить обнулившиеся сетевые переменные значениями по умолчанию.
Последний раз редактировалось melky; 03.11.2024 в 08:28.