Ну, так, у нас всего два насоса. Расписываем табличку состояний и реализуем
Вложение 79777
Вид для печати
Ну, так, у нас всего два насоса. Расписываем табличку состояний и реализуем
Вложение 79777
Так с перспективой расширения до 8 насосов, в принципе можно расширить до 32 насосов без существенного усложнения программы(по ссылке).
На практике ему это на вряд ли понадобится, но он же не один в нашей галактике, в смысле, может у других больше насосов. Кто-то на форуме делал насосную станцию с 12 насосами с периодом ротации в единицы минут, я спросил где это требуется, но товарищ не смог ответить, в смысле, наверно ещё не придумал где такое требуется.
В вашем примере при "авто" на одном насосе -> таймер не останавливается. И если до конца интервала остается пара секунд и включить "авто" на второй насос, то первый доработает эти пару секунд и переключится на второй. А в моем примере таймер запускается только при "авто" на обоих насосах и отсчитывает полный интервал переключения. На мой взгляд так лучше.
Сделал задание интервала по Modbus и вход аварий. Не могу придумать как считать с Blink сколько осталось до конца отсчета. Чтобы по Modbus прочитать что то типа: "до смены насоса осталось 10 часов".
Может сделать ротацию раз в сутки, например в 9 часов или 2 раза в сутки, в 9 и 21 час или раз в неделю, например в понедельник в 10 часов, короче, суть в том, чтобы время ротации было всем известно, в смысле, не надо смотреть(высчитывать) когда произойдёт ротация.
Если не одумаетесь, таймер с прямым и обратным отсчётом времени здесь выкладывал: https://owen.ru/forum/showthread.php?t=33720&page=17
poligon вам надо использовать таймеры с выходом "время" и энергонезависимые. Это не про штатные FBD лоджика. Ищите реализации. Их есть и в FBD и в ST, народ выкладывал.
А разве часы в ПР перестают работать при мертвой батарейке? Время вроде не сохранят, но при включенном питании вроде будут считать время.
Ну и инициализацию переменных не забудьте. если за батарейку переживаете. Чтобы при выключении питания и включении заменить обнулившиеся сетевые переменные значениями по умолчанию.
Во-первых это не так, в смысле, ротация останется, изменится только время ротации, а период сохранится.
Если важно и время ротации, что мешает менять батарейку раз в 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 и как его при этом обнулить я не понимаю.
Новые ПР100 поддерживают язык ST, готовые блоки на 2-4-8 выходов с ротацией по времени 10 часов, по минимальной наработке, время можно менять.
Последний, 4 насоса_Нараб_Ротация по времени_4 Уровня_7_____ https://owen.ru/forum/showthread.php?t=38920&page=2#13
Уровни можно выбросить, оставить константу 1.
Здесь доработанный Опер таймер с запоминанием наработки на языке ST______ https://owen.ru/forum/showthread.php?t=38721#8
А также блок текущего времени. ФБ (Функц. блоки) на ST, переносятся просто копипастом текста к себе в проект.
Блок ON_OFF - это R_Trig + XOR, первый импульс -включается, 2 -выключается, 3 -опять включается,
чтобы сбросить Блок ON_OFF можно на входе поставить OR, на второй вход OR переменную сброс.
Сравнительно давно на форуме обсуждали назначение времени ротации, тему не помню(можете поискать), но проект сохранился, в смысле, там можно назначать время ротации:
Вложение 81453
Кроме того делали проект командоаппарата реального времени с маской недели на 32 команды:
Вложение 81454
Хоть он и 8-и канальный, но память динамическая, в смысле, можно использовать все 32-е команды на один канал.
Здесь подобный, но одноканальный и без маски недели:
Вложение 81455
Если просто надо энергонезависимый таймер, здесь выкладывал:
https://owen.ru/forum/showthread.php?t=33720&page=17
И, я так понимаю, Вы принципиально не смотрите, что вам предлагают, в смысле, чем не подходит, что я предлагал и ссылки давал в постах #2 и 8???
Какой тогда смысл, что-то спрашивать?