Страница 392 из 478 ПерваяПервая ... 292342382390391392393394402442 ... ПоследняяПоследняя
Показано с 3,911 по 3,920 из 4973

Тема: Области применения ПР110(примеры реализации)

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Цитата Сообщение от Василий Кашуба Посмотреть сообщение
    Ваш макрос избыточен, мой гораздо проще, а выполняет туже работу. Когда можно проще, зачем такие сложности?
    Он простой, спору нет. Жалко только, не работает После А=18:00 и включения B в полночь(ну или например А=23:00 B=01:00) он ошибку показывает, хотя все правильно по алгоритму и режим В завершает работу в пределах режима А. Я примерно такой уже пробовал сделать, с "костылями"(как раз обслуживающими кусок времени с 18:00 до 0:00) он даже правильно работает, выкладывал его. Но он получился не универсальным, а лучше один раз сделать хорошо, чтобы потом не переделывать каждый раз "костыли" под очередную уставку.
    Теперь про Ваш. По состоянию выходов двух макросов видно, что они по-разному работают, а должны одинаково, если алгоритм один и тот же отрабатывается. Ну и если другие промежутки поставить(не 1080 минут и 720), то и время ошибочное другое будет. Повторюсь, мой по задумке считает адекватно при любых уставках интервалов и времени старта режимов, хотя скорее всего его и упростить можно было бы. Но повторюсь еще раз, я только учусь...
    P.S. Спасибо, что занимаетесь моей проблемой, я во время этих попыток разобраться в алгоритмах узнаю для себя что-то новое постоянно
    Последний раз редактировалось Budka; 30.11.2013 в 01:06.

  2. #2
    Пользователь
    Регистрация
    21.01.2011
    Адрес
    еБург
    Сообщений
    890

    По умолчанию

    Цитата Сообщение от Budka Посмотреть сообщение
    Он простой, спору нет. Жалко только, не работает После А=18:00 и включения B в полночь(ну или например А=23:00 B=01:00) он ошибку показывает, хотя все правильно по алгоритму и режим В завершает работу в пределах режима А.
    Мой вариант, "с костылями".
    Вложения Вложения
    начинающий профессионал

  3. #3
    Пользователь Аватар для Василий Кашуба
    Регистрация
    20.11.2011
    Адрес
    Ставрополь
    Сообщений
    2,552

    По умолчанию

    Цитата Сообщение от AI! Посмотреть сообщение
    Мой вариант, "с костылями".
    Как всегда преклоняюсь перед вашим талантом и снимаю шляпу.

  4. #4
    Пользователь Аватар для rovki
    Регистрация
    03.01.2010
    Адрес
    Чехов
    Сообщений
    12,153

    По умолчанию

    Тогда вставляем ваш макрос в мой проект ....
    Вложения Вложения
    электронщик до мозга костей и не только

  5. #5

    По умолчанию

    Прекрасно понимая, что у всех есть своя работа и свои дела, не прошу готового решения. Но может кто-нибудь из уважаемого сообщества хотя бы с алгоритмом поможет? Таймеры двух видов уже есть, проверку тоже осилили, а вот то самое переключение по полчаса в день двенадцать дней подряд - не могу алгоритм простой придумать. Но понимаю, что нужно плясать от реальной даты(номер дня в году), чтобы энергонезависимость была, и при этом только одну переменную энергонезависимую использовать(дату переключения). Пока задумка такая: в момент переключения записываем в энергонезависимую переменную номер дня, дальше считаем от него. Берем номер дня, прибавляем 1, в минутах А и В проверяем, можно ли с одной стороны отнять 30 минут, чтобы не вылезти за допустимые пределы, и назначаем на этот день А-30минут(если с одной стороны нельзя, проверяем с другой стороны и отнимаем). Берем опять номер дня, прибавляем 2, повторяем с 60 минутами, если не проходит - отнимаем 30 с одной, 30 с другой и т.д., пока не останется меньше 30 минут с каждой стороны, их не обрабатываем в последний день, а уже включаем режим В, потому что это и есть последние 30 минут. Но очень громоздко получается, на каждый день свой блок проверок и расчетов. Или я не в ту сторону думаю? Может, как-то проще можно сделать?
    Последний раз редактировалось Budka; 30.11.2013 в 12:20.

  6. #6
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,634

    По умолчанию

    У мегя вот было пару свободных часов, решил сесть и написать какой нить пример, но так и не понял что нужно сделать, как дохожу до места где про "обрезание" какие то циклы, так и всё,каша в голове

  7. #7

    По умолчанию

    Так. Попробую еще раз. Есть два интервала, А+18 и В+12 часов. Моменты А и В произвольные, но интервал В+12 должен всегда лежать внутри интервала А+18. То есть, если проще, на линейной временнОй шкале(например в секундах с 1970 года) В всегда должно быть от А до А+6. Готовый макрос проверки выше я выкладывал, вроде бы он правильно проверяет в любое время суток.
    Переход от режима А+18 к режиму В+12 должен происходить за 12 циклов, в каждом из которых убирается по полчаса. То есть, в первый день перехода мы должны сократить 18-часовой интервал до 17,5 часов, на следующий день до 17, дальше до 16,5, и так далее до 12,5, после чего следующим циклом включить В+12. При этом, В+12 должно всегда лежать внутри этого сокращающегося интервала. Интервал мы можем сокращать произвольно с любой стороны до совпадения его со строго заданными В+12.
    Если все еще не очень понятно, напишите. Попробую какие-нибудь графики порисовать.
    Изображения Изображения
    • Тип файла: jpg 1.JPG (30.2 Кб, Просмотров: 31)
    • Тип файла: jpg 2.JPG (30.5 Кб, Просмотров: 20)
    • Тип файла: jpg 3.JPG (39.8 Кб, Просмотров: 21)
    Последний раз редактировалось Budka; 30.11.2013 в 16:08.

  8. #8
    Пользователь Аватар для Василий Кашуба
    Регистрация
    20.11.2011
    Адрес
    Ставрополь
    Сообщений
    2,552

    По умолчанию

    Цитата Сообщение от Budka Посмотреть сообщение
    Так. Попробую еще раз. Есть два интервала, А+18 и В+12 часов. Моменты А и В произвольные, но интервал В+12 должен всегда лежать внутри интервала А+18. То есть, если проще, на линейной временнОй шкале(например в секундах с 1970 года) В всегда должно быть от А до А+6. Готовый макрос проверки выше я выкладывал, вроде бы он правильно проверяет в любое время суток.
    Переход от режима А+18 к режиму В+12 должен происходить за 12 циклов, в каждом из которых убирается по полчаса. То есть, в первый день перехода мы должны сократить 18-часовой интервал до 17,5 часов, на следующий день до 17, дальше до 16,5, и так далее до 12,5, после чего следующим циклом включить В+12. При этом, В+12 должно всегда лежать внутри этого сокращающегося интервала. Интервалк мы можем сокращать произвольно с любой стороны до совпадения его со строго заданными В+12.
    Если все еще не очень понятно, напишите. Попробую какие-нибудь графики порисовать.
    Так В+12 - неизменяемый интервал? А начинается он всегда в одно время, или в разное? И ещё, если между А и В интервал меньше 0,5 часа, и между
    А+12,5 и В+12 то же меньше, то как в следующем цикле получить А+12?

  9. #9
    Пользователь
    Регистрация
    21.01.2011
    Адрес
    еБург
    Сообщений
    890

    По умолчанию

    Цитата Сообщение от Budka Посмотреть сообщение
    Если все еще не очень понятно, напишите. Попробую какие-нибудь графики порисовать.
    мне не понятен момент изменения параметров А и Б, кто их меняет? есть какая то логика изменения?
    если происходит сброс питания - как мы узнаем предыдущее значение и сколько суток назад вступили в силу новые значения?
    начинающий профессионал

  10. #10

    По умолчанию

    А и В задается один раз, перед полным циклом событий. Полный цикл - это:
    А+18 какое-то количество суток(от 1 до 30, например).
    Далее идет переход от (А+18) к (В+12) 11 суток сокращение по полчаса
    И на 12-е сутки начинается режим В+12, который продолжается какое-то количество суток(от 5 до 30, грубо)

    При задаче А и В они проверяются на тупость персонала.

    Так В+12 - неизменяемый интервал? А начинается он всегда в одно время, или в разное?
    Он задан перед полным циклом событий, и не меняется до следующего полного цикла. Цикл я описал выше.

    И ещё, если между А и В интервал меньше 0,5 часа, и между
    А+12,5 и В+12 то же меньше, то как в следующем цикле получить А+12?
    У нас нет задачи получить А+12, а есть задача В+12 получить. Потому что если (В+12) начинается в (А+5) например, то нужно убирать время работы, включая позже, а не выключая раньше. Когда осталось менее 30 минут с каждой из сторон, значит осталось ровно полчаса. Просто включаем В+12, и переход завершен.

    если происходит сброс питания - как мы узнаем предыдущее значение и сколько суток назад вступили в силу новые значения?
    Думаю, в энергонезависимую память писать номер дня от начала года, когда переключился режим, и от него уже считать.
    P.S. Графики выложил несколькими постами выше, может понятнее будет
    Последний раз редактировалось Budka; 30.11.2013 в 16:28.

Страница 392 из 478 ПерваяПервая ... 292342382390391392393394402442 ... ПоследняяПоследняя

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •