FLProg
Вход на сайт
Логин:
Пароль:
Мы в VK
Поиск
Статистика


Яндекс.Метрика
Суббота, 03.12.2016, 22:41
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход

Поиск по сайту


Форум
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 2 из 3«123»
Модератор форума: support, Сергей 
Форум » Основной » Спросить у знатоков » Суточный таймер. Как сделать? (Как реализовать суточный таймер для искуственного освещения?)
Суточный таймер. Как сделать?
Vitez Дата: Вторник, 27.09.2016, 12:30 | Сообщение # 16
Лейтенант
Группа: Проверенные
Сообщений: 104
Награды: 4
Репутация: 0
Статус: Offline
Цитата slavas ()
Vitez, а Вы пробовали так делать? Этот блок срабатывает по совпадению, а если позже времени включения контроллер перезагрузится или был выключен событие будет пропущено. Это просто будильник.
Ок. Ваша правда.


Сообщение отредактировал Vitez - Вторник, 27.09.2016, 12:34
 
AlexRyzh Дата: Вторник, 27.09.2016, 14:37 | Сообщение # 17
Лейтенант
Группа: Проверенные
Сообщений: 107
Награды: 1
Репутация: 0
Статус: Offline
Думаю вот так должно получиться. Не проверял, т.к. Ардуину подключил к работе, не хочу снимать для проверки.

Получается так:
Переменную ВыклСветаН в каждом цикле передаю во временную переменную "Сутки". Далее проверяю, меньше времени включения и меньше текущего времени? Если меньше, значит идет переход через сутки, и чтобы небыло ложного срабатывания, временной переменной присваиваю значение, например 5000, что явно больше 2359. И далее проверка на  отключение идет по временной переменной.
Когда будет полночь, время будет 0000, условие не выполнится и переменная "Сутки" будет равна заданному значению времени отключения. И отключение произойдет в указанное время без ложных срабатываний.
Как-то так  smile

Добавлено (27.09.2016, 14:37)
---------------------------------------------
Вернее вот более правильная картинка включения и выключения света (таймера) по указанному времени, с переходом на новые сутки

 
eugeneb Дата: Вторник, 27.09.2016, 16:26 | Сообщение # 18
Лейтенант
Группа: Проверенные
Сообщений: 90
Награды: 3
Репутация: 1
Статус: Offline
AlexRyzh, инвертируйте логику.

У вас в сутках два интервала, когда свет должен гореть и два - когда не должен.
Все они чередуются. один интервал, когда должен, переходит через границу суток.
Вы ищете сигнал, который включает свет. Это усложняет программу.
А вы ищИте сигнал, который выключает свет. Потом его инвертируете.
У темных интервалов нет перехода через полночь.
Поэтому программа упростится.
 
Слимпер Дата: Вторник, 27.09.2016, 16:56 | Сообщение # 19
Генерал-лейтенант
Группа: Проверенные
Сообщений: 661
Награды: 25
Репутация: 23
Статус: Offline
AlexRyzh, Я уже в двух своих проектах использую такую схему

Позволяет включать выключать нагрузку по времени, при том не важно было или нет отключение контролера. Время начала может быть больше времени окончания, то есть например включение в 23.00, выключить в 1.00.
Дискретность одна минута, можно и с секундами сделать, но тип уже будет Long.

Делал еще во времена когда не было пользовательских блоков, сейчас упаковал бы в блок.
Прикрепления: 6637734.png(21Kb)


Сообщение отредактировал Слимпер - Вторник, 27.09.2016, 16:56
 
slavas Дата: Вторник, 27.09.2016, 18:34 | Сообщение # 20
Подполковник
Группа: Проверенные
Сообщений: 264
Награды: 6
Репутация: 5
Статус: Offline
Так я блок выкладывал сдесь, там это уже сделано.
 
Слимпер Дата: Вторник, 27.09.2016, 18:46 | Сообщение # 21
Генерал-лейтенант
Группа: Проверенные
Сообщений: 661
Награды: 25
Репутация: 23
Статус: Offline
slavas, ну да блок похожий но, как я понял, переход через 00:00 у вас не работает.

Добавлено (27.09.2016, 18:46)
---------------------------------------------
Да и к тому же, привел  свой работающий вариант, а нужен они или нет, пусть другие смотрят.

 
slavas Дата: Вторник, 27.09.2016, 18:57 | Сообщение # 22
Подполковник
Группа: Проверенные
Сообщений: 264
Награды: 6
Репутация: 5
Статус: Offline
Это да, чем больше вариантов решения тем проще учиться. А про мой блок только щас задумался.
 
AlexRyzh Дата: Вторник, 27.09.2016, 20:04 | Сообщение # 23
Лейтенант
Группа: Проверенные
Сообщений: 107
Награды: 1
Репутация: 0
Статус: Offline
Цитата eugeneb ()
Я уже в двух своих проектах использую такую схему
Лично мне не понятно как работать с этой схемой.
У меня сделано так: На экране ввода времени включения, я ввожу 2330 (т.е. включить в 23 часа 30 мин). То же самое и ввод отключения 215 (отключить в 2 часа 15 мин)
Для сравнения с текущим временем из модуля реального времени я получаю в переменную число, часы * 100 + минуты. Т.е. я получаю тот вид времени, который ввожу для контроля. По моему очень удобно.
В Вашем случае часы * 60 + минуты. Это 23:30 будет выглядеть не как 2330, а 1410. Так какую циферию загонять в память, если нужно включить в 23:30? Нужно ввести 1410 чтоб таймер работал как нужно?
А если мне нужно изменить на 22:15 включение, то нужно доставать калькулятор и высчитывать число, которое нужно ввести в память?
И я так понимаю этот блок для одного цикла Вкл-Откл? Если нужен еще цикл, то нужен такой же блок с другими параметрами Вкл.-Откл?
 
OlegAn1962 Дата: Вторник, 27.09.2016, 20:22 | Сообщение # 24
Лейтенант
Группа: Проверенные
Сообщений: 119
Награды: 0
Репутация: 0
Статус: Offline
Слимперslavas, ob`edinil washi bloki
Прикрепления: time_onoff-FBD-.ubi(145Kb)
 
Слимпер Дата: Вторник, 27.09.2016, 20:29 | Сообщение # 25
Генерал-лейтенант
Группа: Проверенные
Сообщений: 661
Награды: 25
Репутация: 23
Статус: Offline
Цитата AlexRyzh ()
А если мне нужно изменить на 22:15 включение, то нужно доставать калькулятор и высчитывать число, которое нужно ввести в память?
Ну зачем калькулятор, отратно на часы и минуты это раскадируется так:
А там уже на экран можно вывести

Добавлено (27.09.2016, 20:29)
---------------------------------------------
А то, что надо сохранить как уставку, упаковывается так же как переменная ТВ из скриншота в сообщении 19

Прикрепления: 0837898.png(2Kb)
 
AlexRyzh Дата: Вторник, 27.09.2016, 21:13 | Сообщение # 26
Лейтенант
Группа: Проверенные
Сообщений: 107
Награды: 1
Репутация: 0
Статус: Offline
В общем, почитав ветку, и благодаря вашим комментам, пришел к выводу, что сделать можно. И для себя "родил" такой метод:
Сделал блок проверки перехода через сутки. Входы - Вкл, Выкл и текущее время.

Блок проверяет, если время выключения меньше времени включения и при этом меньше текущего времени, то переменная выключения принимает значение 2400, что больше чем последняя минута суток 2359. Когда сутки меняются, то выставленное значение для отключения становится больше чем текущее время, и переменная не принимает значение 2400, а остается как назначено. ( в каждом цикле в переменную записывается установленное значение с памяти. Это в другой плате сделано, здесь не видно)
В итоге получается такая картинка:


Добавлено (27.09.2016, 21:13)
---------------------------------------------
Цитата OlegAn1962 ()
Ну зачем калькулятор, отратно на часы и минуты это раскадируется так:
Вы видимо неправильно поняли вопрос. Перевести обратно не проблема. Дело в другом.
Вот, например я подошел к устройству и решил изменить время включения (или выключения). Например было 21:17 ( а это 21*60+17=1277) Т.е чтоб включалось в 21:17, в память было забито число 1277)
И вот я решил изменить включение на 22:14. Как мне понять какое число ввести в память? Вычислять в уме? или калькулятор с собой носить? Как я должен узнать, что нужно ввести 1334, чтоб срабатывало в 22:14?
Или я что-то не понял? Что нужно ввести в память (ячейку включения), чтоб включение произошло именно в 22:14?
По моему умножение часов на 100 решает эту проблему. Для ввода включения в 22:14 вводим значение для переменной 2214!


Сообщение отредактировал AlexRyzh - Вторник, 27.09.2016, 21:16
 
slavas Дата: Вторник, 27.09.2016, 21:28 | Сообщение # 27
Подполковник
Группа: Проверенные
Сообщений: 264
Награды: 6
Репутация: 5
Статус: Offline
так вводить надо часы и минуты, а блок сам часы переведёт в минуты и прибавит минуты, время получится в минутах.
 
Слимпер Дата: Среда, 28.09.2016, 04:36 | Сообщение # 28
Генерал-лейтенант
Группа: Проверенные
Сообщений: 661
Награды: 25
Репутация: 23
Статус: Offline
AlexRyzh, хорошо, что нашил для себя удобный для себя вариант, это главное.
А slavas, все правильно написал, у меня отдельно выставляются минуты и часы, а программа, переводит и записывает в память, так что пользователь этого даже не видит.
Цитата AlexRyzh ()
в каждом цикле в переменную записывается установленное значение с памяти.
Надеюсь не в EEPROM?

Добавлено (28.09.2016, 04:36)
---------------------------------------------
Если не лень можете посмотреть мой проект Малая автоматизация выращивания цветов и рассады где по такому принципу сделано  . Правда я его уже разобрал, и сделал другой. Надо как то написать статью. 
Но как я уже писал выше, я его делал во времена когда не было еще пользовательских блоков, так что он громоздкий.

 
AlexRyzh Дата: Среда, 28.09.2016, 08:12 | Сообщение # 29
Лейтенант
Группа: Проверенные
Сообщений: 107
Награды: 1
Репутация: 0
Статус: Offline
Цитата Слимпер ()
Надеюсь не в EEPROM?
Так я написал "С ПАМЯТИ", а не в память  smile Т.е. читает из EEPROM, а не записывает.
Цитата Слимпер ()
у меня отдельно выставляются минуты и часы, а программа, переводит и записывает в память
Не стал я заморачиваться с таким вводом. Это дополнительный код... лишняя нагрузка на проц (а проц Нано...) Лишние блоки... 
Делал для себя, а мне и так понятно, что для ввода времени нужно вводить цифры, соответствующие времени. И кода меньше, и мне понятно и удобно  smile
 
slavas Дата: Среда, 28.09.2016, 12:25 | Сообщение # 30
Подполковник
Группа: Проверенные
Сообщений: 264
Награды: 6
Репутация: 5
Статус: Offline
Ну если для себя только.
 
Форум » Основной » Спросить у знатоков » Суточный таймер. Как сделать? (Как реализовать суточный таймер для искуственного освещения?)
Страница 2 из 3«123»
Поиск:

FLProg © 2016
Яндекс.Метрика