Подход новичка к программированию на примерах Графика ГВС
- Alias
- Лейтенант
- Сообщения: 481
- Зарегистрирован: 27 ноя 2017, 13:15
- Откуда: Rus44
- Имя: Michael
- Контактная информация:
Подход новичка к программированию на примерах Графика ГВС
Доброго всем времени суток!
Три недели назад набрел я на эту замечательную программу, хотя еще год назад на нее смотрел, но не зацепился. Давно собирался изучить вопрос Ардуино, как конструктора самодельщика, ибо в сети всего полно, но не алгоритмов под тебя. Но С++ не мое даже без плюсов и с маленькой буквы. Видео уважаемого Грачика и других сломали все психологические барьеры и, насмотревшись всяких видео понял, что пора начинать.
В сети очень много схем термостатирования. Но я ни одной не видел, чтобы применялся график для того же бытового водонагревателя. Как правило, все сводится к примитиву: выставил температуру и вперед! Но нет учета разбора воды потребителями в часы пик. Кроме того, крайне желательны периодические профилактические меры, среди которых - термическая дезинфекция.
Я на ютубе двум гуру закинул удочку на сей счет, но пока реакции нет и я попробовал разобраться сам. Дебют. Нужно же с чего-то начать. Пусть это будет не мигающий LED.
Итак, проект во вложении. Прошу гуру прокомментировать его и помочь с некоторыми вещами.
В общем - правильный ли подход в плане использования такого количества переменных для небольшой задачи? Это как-то сказывается на ресурсах Ардуино или переменные - просто для удобства программирования?
В частности - как преобразовать бинарное значение в число и как их складывать?
Никак, наверное.
Но я первоначально хотел именно это и использовать. Например, есть у нас три блока логики, на выходе которых нули или единицы. И я хотел использовать переменную, значение которой равно общему количеству единиц на этих выходах.
Допустим, если на всех трех выходах 1, то значение переменной - 3. Выкрутился с помощью аналогового переключателя. Это очень криво?
Для выбора уставки из трех значений применил мультиплексор. Может, правильно это сделать как-то иначе?
Для управления триггером часто рекомендуют применять не постоянный уровень, а одиночные импульсы. Насколько это оправданно? Ведь каждый блок - ресурсы микроконтроллера, хочется понапрасну не растрачивать их.
И, если кто-то будет смотреть схему, проверьте, пожалуйста, программу flprog на баг. Попробуйте удалить из первой платы последние три датчика, относящиеся к котлу и улице. Это я сначала на погодозависимость замахнулся. У меня после этого удаления отказываются сворачиваться все следующие платы, не выделяются и не редактируются в них элементы и связи. Перезагрузка программы, винды и прочего уже ничего не меняют и хорошо, если есть резервная копия. От версии не зависит.
Буду признателен за отклики!
Три недели назад набрел я на эту замечательную программу, хотя еще год назад на нее смотрел, но не зацепился. Давно собирался изучить вопрос Ардуино, как конструктора самодельщика, ибо в сети всего полно, но не алгоритмов под тебя. Но С++ не мое даже без плюсов и с маленькой буквы. Видео уважаемого Грачика и других сломали все психологические барьеры и, насмотревшись всяких видео понял, что пора начинать.
В сети очень много схем термостатирования. Но я ни одной не видел, чтобы применялся график для того же бытового водонагревателя. Как правило, все сводится к примитиву: выставил температуру и вперед! Но нет учета разбора воды потребителями в часы пик. Кроме того, крайне желательны периодические профилактические меры, среди которых - термическая дезинфекция.
Я на ютубе двум гуру закинул удочку на сей счет, но пока реакции нет и я попробовал разобраться сам. Дебют. Нужно же с чего-то начать. Пусть это будет не мигающий LED.
Итак, проект во вложении. Прошу гуру прокомментировать его и помочь с некоторыми вещами.
В общем - правильный ли подход в плане использования такого количества переменных для небольшой задачи? Это как-то сказывается на ресурсах Ардуино или переменные - просто для удобства программирования?
В частности - как преобразовать бинарное значение в число и как их складывать?
Никак, наверное.
Но я первоначально хотел именно это и использовать. Например, есть у нас три блока логики, на выходе которых нули или единицы. И я хотел использовать переменную, значение которой равно общему количеству единиц на этих выходах.
Допустим, если на всех трех выходах 1, то значение переменной - 3. Выкрутился с помощью аналогового переключателя. Это очень криво?
Для выбора уставки из трех значений применил мультиплексор. Может, правильно это сделать как-то иначе?
Для управления триггером часто рекомендуют применять не постоянный уровень, а одиночные импульсы. Насколько это оправданно? Ведь каждый блок - ресурсы микроконтроллера, хочется понапрасну не растрачивать их.
И, если кто-то будет смотреть схему, проверьте, пожалуйста, программу flprog на баг. Попробуйте удалить из первой платы последние три датчика, относящиеся к котлу и улице. Это я сначала на погодозависимость замахнулся. У меня после этого удаления отказываются сворачиваться все следующие платы, не выделяются и не редактируются в них элементы и связи. Перезагрузка программы, винды и прочего уже ничего не меняют и хорошо, если есть резервная копия. От версии не зависит.
Буду признателен за отклики!
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Alias 13 дек 2017, 20:39, всего редактировалось 1 раз.
Подход новичка к программированию на примерах Графика ГВС
первое , что хочется сказать...
модеры, закрепите эту тему с вопросом как эталон
по проекту. в принципе всё сделано правильно. каждый конечно сделает одно и то же по разному. поэтому
тут как кому удобнее и понятнее.
по поводу триггера и одиночных импульсов:
лучше использовать в таких случаях не одновибратор из генератора а Rtrig .
оправданность зависит от каждой конкретной схемы.
иногда не принципиально, иногда он необходим.
если нужно будет наскрести немного памяти (при нехватке) то замените переменные integer на byte там где это возможно.
модеры, закрепите эту тему с вопросом как эталон
по проекту. в принципе всё сделано правильно. каждый конечно сделает одно и то же по разному. поэтому
тут как кому удобнее и понятнее.
по поводу триггера и одиночных импульсов:
лучше использовать в таких случаях не одновибратор из генератора а Rtrig .
оправданность зависит от каждой конкретной схемы.
иногда не принципиально, иногда он необходим.
если нужно будет наскрести немного памяти (при нехватке) то замените переменные integer на byte там где это возможно.
Подход новичка к программированию на примерах Графика ГВС
Даю на_водку... Соответственно, бойлер должен выдавать вам пиковый расход, считали наверное... Нужно больше? Пожалуйста... Греем бойлер до 90°С, на выходе бойлера ставим 3х-ходовой термосмеситель, выставляем на нем 45-50°С и получаем больше ГВС за счет подмеса холодной. И термообработка постоянная. Без термосмесителя не советую греть до 90
Win10-64 FLProg v7.5.2 Portable ![Стыдно :fie:](./images/smilies/ucoz_fie.gif)
![Стыдно :fie:](./images/smilies/ucoz_fie.gif)
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Контактная информация:
Подход новичка к программированию на примерах Графика ГВС
Немного необходимо изменить плату 3.
Если оставить как есть - при отсутствии сигнала дезинфекция переменным "Режим бойлер_х" будут пере-присваиваться 0, т.к. это будет происходить перезапись переменной после "ДОГРЕВА". Посмотрите, проанализируйте, увидите.
Так-же можно, по Вашей схеме, уменьшить код, немного..
Если оставить как есть - при отсутствии сигнала дезинфекция переменным "Режим бойлер_х" будут пере-присваиваться 0, т.к. это будет происходить перезапись переменной после "ДОГРЕВА". Посмотрите, проанализируйте, увидите.
Так-же можно, по Вашей схеме, уменьшить код, немного..
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Подход новичка к программированию на примерах Графика ГВС
Это баг. Писал об этом. Автор вроде должен был устранить, но видно не успел.Alias писал(а):проверьте, пожалуйста, программу flprog на баг.
Уберите с нижнего датчика, на 1 плате, надпись к блоку, или передвиньте ее выше датчика, и все будет ок.
Последний раз редактировалось rw6cm 11 дек 2017, 17:37, всего редактировалось 1 раз.
Win10-64, FLProg (portable)
- Alias
- Лейтенант
- Сообщения: 481
- Зарегистрирован: 27 ноя 2017, 13:15
- Откуда: Rus44
- Имя: Michael
- Контактная информация:
Подход новичка к программированию на примерах Графика ГВС
Спасибо откликнувшимся!
По порядку.
А вообще, насколько разумно доверять Ардуино такие вещи, как котел? Не с точки зрения газовой безопасности, там все штатное и котлу безразлично, что манипулирует его сознанием - жидкостный термостат или робот. У него своя группа безопасности. Я имею в виду зависания, ведь можно не только разморозить систему, но и заварить в ней чай
Сейчас у меня на котел завязан Овеновский погодозависимый ТРМ-151, но у него нет поправки на теплоинерционность здания, а это та еще беда. Пока справляюсь с ней с помощью силикатного кирпича. Но не то это, не то, буду писать свой блок внесения поправки, чтобы все учесть. Может и получится.
В любом случае, спасибо за помощь!
По порядку.
Спасибо за одобрение, но перебор. Максимум - перенести в другой раздел, если будет польза.pan писал(а):закрепите эту тему
Чтобы температура воды не гуляла, нужен очень шустрый и точный смеситель. Иначе при переходных процессах тот же ПИД будет постоянно рыскать, отдаваясь в ощущениях. Я боюсь их, и трехходовиков, и ощущений, натерпелся на колонке С трех накопителей получается стабильная температура, пока не будет исчерпан весь запас, и если один из них на дезинфекции, риск ошпариться невелик. Постоянно высокая температура - это потери как энергии, так и ресурса ТЭНов.Dev1 писал(а):3х-ходовой термосмеситель
Да, видел, оставил на десерт, пока схема действительно реализована без обработки этого подмножества, поскольку пересечения нет: догрев идет до полуночи, дезинфекция - следом за ней. Но мысль Вашу понял, интересная. Успел даже ее часть применить, пока ждал ответов, во вложении. Чуть позже изучу, спасибо!Sancho писал(а):проанализируйте, увидите
Не нашел темы и не сообразил в редакторе. Потому откатился до не самой свежей копии. Но нет худа без добра - пока снова рисовал, перо легло иначе и получилось даже лучше. Прав был:rw6cm писал(а):и все будет ок
Думаю, с третьего раза нарисую иначе. Но "Я не волшебник, я только учусь" (с)pan писал(а):каждый конечно сделает одно и то же по разному
А вообще, насколько разумно доверять Ардуино такие вещи, как котел? Не с точки зрения газовой безопасности, там все штатное и котлу безразлично, что манипулирует его сознанием - жидкостный термостат или робот. У него своя группа безопасности. Я имею в виду зависания, ведь можно не только разморозить систему, но и заварить в ней чай
Сейчас у меня на котел завязан Овеновский погодозависимый ТРМ-151, но у него нет поправки на теплоинерционность здания, а это та еще беда. Пока справляюсь с ней с помощью силикатного кирпича. Но не то это, не то, буду писать свой блок внесения поправки, чтобы все учесть. Может и получится.
В любом случае, спасибо за помощь!
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- support
- Супермодератор
- Сообщения: 1902
- Зарегистрирован: 03 янв 2018, 11:45
- Откуда: Астрахань
- Имя: Сергей
- Контактная информация:
Подход новичка к программированию на примерах Графика ГВС
Исправил, в следующей версии её не будет.rw6cm писал(а):Это баг. Писал об этом. Автор вроде должен был устранить, но видно не успел.
Автор программы FLProg.
Подход новичка к программированию на примерах Графика ГВС
Вообще то он термостатический и никакого привода, а тем более ПИД регуляторов не требует.Alias писал(а):Чтобы температура воды не гуляла, нужен очень шустрый и точный смеситель. Иначе при переходных процессах тот же ПИД будет постоянно рыскать, отдаваясь в ощущениях.
Win10-64 FLProg v7.5.2 Portable ![Стыдно :fie:](./images/smilies/ucoz_fie.gif)
![Стыдно :fie:](./images/smilies/ucoz_fie.gif)
Подход новичка к программированию на примерах Графика ГВС
Есть такой блок Дешифратор.Alias писал(а):Допустим, если на всех трех выходах 1, то значение переменной - 3.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Контактная информация:
Подход новичка к программированию на примерах Графика ГВС
Увы, не он. Прочитайте внимательнее. Нужно преобразовать bool в integ, а затем сложить.krom23 писал(а):Цитата Alias ()Допустим, если на всех трех выходах 1, то значение переменной - 3.
Есть такой блок Дешифратор.
Или таблицу, или ...
Проще, как есть в проекте, на selector
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Подход новичка к программированию на примерах Графика ГВС
Может быть шифратор...Sancho писал(а):Увы, не он. Прочитайте внимательнее. Нужно преобразовать bool в integ, а затем сложить.Или таблицу, или ...
СпойлерSPOILER_SHOW
Блок "Номер входа"
[img]file:///E:/SOFT/FLProg_beta/FLProg_3-0-2/Help_html/rus/images/InputNumberBlock1.PNG[/img]
Блок служит для определения входа, на котором присутствует высокий логический уровень. На выходе блока будет значение соответствующее номеру такого входа. Если высокого уровня не будет ни на одном входе блока, на выходе будет 0.
[img]file:///E:/SOFT/FLProg_beta/FLProg_3-0-2/Help_html/rus/images/InputNumberBlock1.PNG[/img]
Блок служит для определения входа, на котором присутствует высокий логический уровень. На выходе блока будет значение соответствующее номеру такого входа. Если высокого уровня не будет ни на одном входе блока, на выходе будет 0.
Win10-64 FLProg v7.5.2 Portable ![Стыдно :fie:](./images/smilies/ucoz_fie.gif)
![Стыдно :fie:](./images/smilies/ucoz_fie.gif)
- Alias
- Лейтенант
- Сообщения: 481
- Зарегистрирован: 27 ноя 2017, 13:15
- Откуда: Rus44
- Имя: Michael
- Контактная информация:
Подход новичка к программированию на примерах Графика ГВС
Действительно! Ведь я смотрел на него и что-то упустил. Мало того, этот вариант меньше отнимает ресурсов. Я правильно оцениваю эффективность? Скопировать нужную плату в новый проект, "Компилировать проект" -> в IDE "Проверить" и сравнить в нижнем черном окне цифры для разных вариантов.Dev1 писал(а):Может быть шифратор
В моем случае с Аналоговым переключателем и Шифратором разница соответственно такая:
Скетч использует 474 байт / 466 байт
Глобальные переменные используют 15 байт / 13 байт
Считаю правильным сразу по возможности оптимизировать схему, спасибо за подсказку! Скриншот платы с двумя вариантами для удобства сравнения в приложении.
И еще можно вопрос по подходу к проектированию? На анализе логики не настаиваю, но если будут ошибки, готов к советам. Схема тоже во вложении. Я создал массивы, указав им конкретный тип, однако, судя по цвету связей, пошла пересортица. Как этого избежать, нужно ли конвертировать или пусть как есть остается?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Подход новичка к программированию на примерах Графика ГВС
Вы верно не прочли описание блока. И входы там bool, и выход integ, мало того и для каждой комбинации "1" и "0" на входах своё число на выходе, одним словом классический двоично-шестнацетиричный дешифратор. Если надо уменьшить число(разрядность) входов, то на входе старшего разряда(D4(8)) устанавливаем "0" и получаем восьмеричный дешифратор. А с числами полученными на выходе можно производить любые операции.Sancho писал(а):Увы, не он. Прочитайте внимательнее. Нужно преобразовать bool в integ, а затем сложить.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Контактная информация:
Подход новичка к программированию на примерах Графика ГВС
по скрину - Нижние компараторы(сравнение) заменить на один ==23, убрав заодно &.
По шифратору - попробуйте ещё раз прочитать мой пост 10, и ответить по Вашему шифратору - какой номер графика будет ночью вечером при ветре?
По горелкам - зачёт.
krom23,
То, что описывает топикастер изображено на моём аватаре!!!! Только четырёх-разрядный(на аватаре).
А потом уже шифраторы....
P.S. Если Вы узнаете сами, без инета, то, что изображено на нём, то Ваши вопросы касательно моих знаний шифраторов/дешифраторов должны отпасть...
Добавлено (13.12.2017, 13:02)
---------------------------------------------
P.S. Дополню насчёт селекторов.
Не смотрел( не создавал повтор платы из картинки топикастера с sel и шифратором), но при правильном расположении строк в коде при "ветре" вычисления, укладывается ли время в диапазон, выполнятся не будут, вообще, т.к. они будут не нужны, т.е. будут стоять после else в части кода sel .....
По шифратору - попробуйте ещё раз прочитать мой пост 10, и ответить по Вашему шифратору - какой номер графика будет ночью вечером при ветре?
По горелкам - зачёт.
krom23,
Вам также нужно ответить на мой выше озвученный вопрос.krom23 писал(а):Вы верно не прочли описание блока. И входы там bool, и выход integ, мало того и для каждой комбинации "1" и "0" на входах своё число на выходе, одним словом классический двоично-шестнацетиричный дешифратор. Если надо уменьшить число(разрядность) входов, то на входе старшего разряда(D4(8)) устанавливаем "0" и получаем восьмеричный дешифратор. А с числами полученными на выходе можно производить любые операции.
То, что описывает топикастер изображено на моём аватаре!!!! Только четырёх-разрядный(на аватаре).
А потом уже шифраторы....
P.S. Если Вы узнаете сами, без инета, то, что изображено на нём, то Ваши вопросы касательно моих знаний шифраторов/дешифраторов должны отпасть...
это всё-таки ШИФРАТОР , т.к. при преобразовании нескольких единичных сигналов в более сложные штучные (byte,int) происходит их "шифрование"И входы там bool, и выход integ, мало того и для каждой комбинации "1" и "0" на входах своё число на выходе, одним словом классический двоично-шестнацетиричный дешифратор.
Добавлено (13.12.2017, 13:02)
---------------------------------------------
P.S. Дополню насчёт селекторов.
Не смотрел( не создавал повтор платы из картинки топикастера с sel и шифратором), но при правильном расположении строк в коде при "ветре" вычисления, укладывается ли время в диапазон, выполнятся не будут, вообще, т.к. они будут не нужны, т.е. будут стоять после else в части кода sel .....
Последний раз редактировалось Sancho 13 дек 2017, 12:44, всего редактировалось 1 раз.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
- Alias
- Лейтенант
- Сообщения: 481
- Зарегистрирован: 27 ноя 2017, 13:15
- Откуда: Rus44
- Имя: Michael
- Контактная информация:
Подход новичка к программированию на примерах Графика ГВС
Я пока оставил так на случай, если придется расширить интервал, например, 22-23. Хотел было сделать на какой-нибудь таблице состояний, но как-то громоздко получается. Возможно, и переделаю. Найду более красивое решение - покажу.Sancho писал(а):заменить на один ==23
Второй. Тот, что добавит температуры теплоносителя. Если ветер сильный, тут уже не до экономного режима. Хотел добавить логику, чтобы при ветре ночью вместо первого был дневной нулевой режим, а днем - усиленный второй, но пока оставил. Тем более, что вообще не знаю, на чем сделать датчик ветра. Понятно, что это будет на герконе или оптике с большой интегрирующей цепочкой. Поэтому хвост и подвис. Но спасибо за беспокойство!Sancho писал(а):какой номер графика будет
Про аватарку заинтриговали, но слишком мелко, чтобы понять:)
Вы про уже скомпилированный код? Недопонял, о каком времени речь. Про то, что до того, как дойдет до опроса переменной Ветер, на выходе платы уже будет принято решение о Режиме? Мне всегда было слегка не понятно, как компилируется код, но если в блоке есть входы, все они должны ведь учитываться?Sancho писал(а):т.е. будут стоять после else в части кода sel
ЗЫ Перерисовал, если правильно понял
ЗЫ2 Во вложении два варианта - на компараторах и таблице Номера режимов поплыли, но это не критично. Несмотря на то, что элементов поубавилось, ресурсов поубавилось тоже:
Скетч использует 466 / 498 байт
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Alias 13 дек 2017, 14:16, всего редактировалось 1 раз.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Контактная информация:
Подход новичка к программированию на примерах Графика ГВС
Немного не правильно. Я имел ввиду вариант с селекторами. На скрине здесь всё было верно.Alias писал(а):Перерисовал, если правильно понял
Каюсь, не читал. А если Вы нажмёте описание и сумеете мне показать, что это шифратор, слово такое в тексте или на скринах, - буду должен.... Даже в справке - номер входа, что, конечно, понятнее.krom23 писал(а):Вы верно не прочли описание блока
Хотя по описанию это приоритетный шифратор (или шифратор приоритета). Думал, такого в FLProg нет
Была мысль, что ЭТОТ ШИФРАТОР упаковывает биты в integer, что иногда НАМНОГО НУЖНЕЕ....
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Sancho 13 дек 2017, 14:43, всего редактировалось 1 раз.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
- Alias
- Лейтенант
- Сообщения: 481
- Зарегистрирован: 27 ноя 2017, 13:15
- Откуда: Rus44
- Имя: Michael
- Контактная информация:
Подход новичка к программированию на примерах Графика ГВС
Совсем запутался Который же вариант более надежен?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Контактная информация:
Подход новичка к программированию на примерах Графика ГВС
Ок, начнём с простого.Alias писал(а):Совсем запутался
Как должна вести себя система(график) по случаю двух слагаемых ветер и время?
1. всего 3 режима: эконом, норма, тепло. По времени = эконом/норма, ветер + по времени = норма/тепло.
2. ... ?
Последний раз редактировалось Sancho 13 дек 2017, 14:57, всего редактировалось 1 раз.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
- Alias
- Лейтенант
- Сообщения: 481
- Зарегистрирован: 27 ноя 2017, 13:15
- Откуда: Rus44
- Имя: Michael
- Контактная информация:
Подход новичка к программированию на примерах Графика ГВС
Вообще, днем нормальный режим. Ночью - экономный. Однако, в случае сильного ветра - тепло. Сейчас реализовано по логике с приоритетом во ветру, то есть при ветре уже не важно, ночь сейчас или день.
Позже введу избирательность, то есть +1 к любому режиму при ветре.
Я то недопонял и переспросил про схему в плане компиляции кода, мол, одна из цепочек логики на плате может просто проигнорироваться по непонятной мне причине.
На скриншоте в предыдущем сообщении опечатка в блоке CD - перепутаны входы. Просто рисовал иллюстрацию и не заметил сразую
Позже введу избирательность, то есть +1 к любому режиму при ветре.
Я то недопонял и переспросил про схему в плане компиляции кода, мол, одна из цепочек логики на плате может просто проигнорироваться по непонятной мне причине.
На скриншоте в предыдущем сообщении опечатка в блоке CD - перепутаны входы. Просто рисовал иллюстрацию и не заметил сразую
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Контактная информация:
Подход новичка к программированию на примерах Графика ГВС
Опечатку видел, догадался. На нижнем - при ветре 0 2.
Итого, схемы по функционалу равнозначны, смотрите размер.
По коду. При генерации кода для IDE почему-то всегда flprog пытается вставить в IF максимальное условие, а в else минимальное, а не наоборот. Если сделать наоборот, то при определённых условиях, if=true, время цикла заметно сократится.
Примеры:
С switch оригинал от FLProg
С switch переделан в минимум
Чуть позже попробую ещё один вариант...
P.S. Правильный вариант от FLProg но с рисунка внизу поста
Итого, схемы по функционалу равнозначны, смотрите размер.
По коду. При генерации кода для IDE почему-то всегда flprog пытается вставить в IF максимальное условие, а в else минимальное, а не наоборот. Если сделать наоборот, то при определённых условиях, if=true, время цикла заметно сократится.
Примеры:
С switch оригинал от FLProg
СпойлерSPOILER_SHOW
Код: Выделить всё
bool _gtv6; //Ветер
int _gtv13 = 0; //Режим
int _gtv14; //Текущий Час
int _swi3;
int _swi4;
void setup()
{
}
void loop()
{
//Плата:1
//Наименование:Режим ГВС
if(( (( ((_gtv14) >= (18)) && ((_gtv14) <= (23)) )) || (( ((_gtv14) >= (0)) && ((_gtv14) <= (7)) )) || (( ((_gtv14) >= (0)) && ((_gtv14) <= (7)) )) ))
{_swi3=1;}
else
{_swi3=0;}
if(_gtv6)
{_swi4=2;}
else
{_swi4=_swi3;}
_gtv13 = _swi4;
}
СпойлерSPOILER_SHOW
Код: Выделить всё
bool _gtv6; //Ветер
int _gtv13 = 0; //Режим
int _gtv14; //Текущий Час
void setup()
{
}
void loop()
{
//Плата:1
//Наименование:Режим ГВС
if(_gtv6)
{_gtv13=2;}
else
if(( (( ((_gtv14) >= (18)) && ((_gtv14) <= (23)) )) || (( ((_gtv14) >= (0)) && ((_gtv14) <= (7)) )) || (( ((_gtv14) >= (0)) && ((_gtv14) <= (7)) )) ))
{_gtv13=1;}
else
{_gtv13=0;}
}
P.S. Правильный вариант от FLProg но с рисунка внизу поста
СпойлерSPOILER_SHOW
Код: Выделить всё
bool _gtv6; //Ветер
int _gtv13 = 0; //Режим
int _gtv14; //Текущий Час
int _swi1;
void setup()
{
}
void loop()
{
//Плата:1
//Наименование:Режим ГВС
if (_gtv6) {
_gtv13 = 2;
}
//Плата:2
//Наименование:Time
//Комментарии:Временные режимы
if (_gtv6 == 0) {
if(( (( ((_gtv14) >= (18)) && ((_gtv14) <= (23)) )) || (( ((_gtv14) >= (0)) && ((_gtv14) <= (7)) )) || (( ((_gtv14) >= (0)) && ((_gtv14) <= (7)) )) ))
{_swi1=1;}
else
{_swi1=0;}
_gtv13 = _swi1;
}
}
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Sancho 13 дек 2017, 16:12, всего редактировалось 1 раз.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость