FLProg
Вход на сайт
Логин:
Пароль:
Поиск
...
Статистика
Четверг, 13.12.2018, 20:03
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход

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


Внимание всем пользователям программы FLProg! В течении ближайших двух дней будет осуществляться переход на новую платформу
Чтобы продолжить общение на форуме вы можете перейти сюда
Сообщения оставленные на старом форуме будут утеряны безвозвратно
Приятного Вам Нового года и до встречи в новом 2018 году
С уважением Администрация flprog.ru
Форум
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум » Песочница » Начинающим » Подход новичка к программированию на примерах Графика ГВС (Вопрос знатокам: в том хоть направлении?)
Подход новичка к программированию на примерах Графика ГВС
Alias Дата: Понедельник, 11.12.2017, 15:07 | Сообщение # 1
Сержант
Группа: Проверенные
Сообщений: 40
Награды: 0
Репутация: 0
Статус: Offline
Доброго всем времени суток!
Три недели назад набрел я на эту замечательную программу, хотя еще год назад на нее смотрел, но не зацепился. Давно собирался изучить вопрос Ардуино, как конструктора самодельщика, ибо в сети всего полно, но не алгоритмов под тебя. Но С++ не мое даже без плюсов и с маленькой буквы. Видео уважаемого Грачика и других сломали все психологические барьеры и, насмотревшись всяких видео понял, что пора начинать.
В сети очень много схем термостатирования. Но я ни одной не видел, чтобы применялся график для того же бытового водонагревателя. Как правило, все сводится к примитиву: выставил температуру и вперед! Но нет учета разбора воды потребителями в часы пик. Кроме того, крайне желательны периодические профилактические меры, среди которых - термическая дезинфекция.
Я на ютубе двум гуру закинул удочку на сей счет, но пока реакции нет и я попробовал разобраться сам. Дебют. Нужно же с чего-то начать. Пусть это будет не мигающий LED.
Итак, проект во вложении. Прошу гуру прокомментировать его и помочь с некоторыми вещами.
В общем - правильный ли подход в плане использования такого количества переменных для небольшой задачи? Это как-то сказывается на ресурсах Ардуино или переменные - просто для удобства программирования?
В частности - как преобразовать бинарное значение в число и как их складывать?
Никак, наверное.
Но я первоначально хотел именно это и использовать. Например, есть у нас три блока логики, на выходе которых нули или единицы. И я хотел использовать переменную, значение которой равно общему количеству единиц на этих выходах.
Допустим, если на всех трех выходах 1, то значение переменной - 3. Выкрутился с помощью аналогового переключателя. Это очень криво?
Для выбора уставки из трех значений применил мультиплексор. Может, правильно это сделать как-то иначе?
Для управления триггером часто рекомендуют применять не постоянный уровень, а одиночные импульсы. Насколько это оправданно? Ведь каждый блок - ресурсы микроконтроллера, хочется понапрасну не растрачивать их.
И, если кто-то будет смотреть схему, проверьте, пожалуйста, программу flprog на баг. Попробуйте удалить из первой платы последние три датчика, относящиеся к котлу и улице. Это я сначала на погодозависимость замахнулся. У меня после этого удаления отказываются сворачиваться все следующие платы, не выделяются и не редактируются в них элементы и связи. Перезагрузка программы, винды и прочего уже ничего не меняют и хорошо, если есть резервная копия. От версии не зависит.
Буду признателен за отклики!
Прикрепления: 2343311.flp(447.7 Kb)


Сообщение отредактировал Alias - Среда, 13.12.2017, 20:39
 
pan Дата: Понедельник, 11.12.2017, 15:38 | Сообщение # 2
Генерал-полковник
Группа: Проверенные
Сообщений: 1425
Награды: 44
Репутация: 42
Статус: Offline
первое , что хочется сказать...
 модеры, закрепите эту тему с вопросом как эталон  thumb 

по проекту. в принципе всё сделано правильно. каждый конечно сделает одно и то же по разному. поэтому
тут как кому удобнее и понятнее.

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

если нужно будет наскрести немного памяти (при нехватке) то замените переменные integer  на byte там где это возможно.
 
Dev1 Дата: Понедельник, 11.12.2017, 16:05 | Сообщение # 3
Генерал-лейтенант
Группа: Проверенные
Сообщений: 700
Награды: 14
Репутация: 18
Статус: Offline
Даю на_водку... Соответственно, бойлер должен выдавать вам пиковый расход, считали наверное... Нужно больше? Пожалуйста... Греем бойлер до 90°С, на выходе бойлера ставим 3х-ходовой термосмеситель, выставляем на нем 45-50°С и получаем больше ГВС за счет подмеса холодной. И термообработка постоянная. Без термосмесителя не советую греть до 90  cool

Win7/10-64 FLProg v3.0.3 external IDE 1.8.5 + Last Libs

 
Sancho Дата: Понедельник, 11.12.2017, 17:13 | Сообщение # 4
Генерал-лейтенант
Группа: Проверенные
Сообщений: 605
Награды: 18
Репутация: 20
Статус: Offline
Немного необходимо изменить плату 3.
Если оставить как есть - при отсутствии сигнала дезинфекция переменным "Режим бойлер_х" будут пере-присваиваться 0, т.к. это будет происходить перезапись переменной после "ДОГРЕВА". Посмотрите, проанализируйте, увидите.
Так-же можно, по Вашей схеме, уменьшить код, немного..
Прикрепления: 8489865.png(30.3 Kb)


Если не получится на контроллере - сделаю на тразисторах и 155/176...
 
rw6cm Дата: Понедельник, 11.12.2017, 17:34 | Сообщение # 5
Генерал-полковник
Группа: Проверенные
Сообщений: 1034
Награды: 89
Репутация: 68
Статус: Offline
Цитата Alias ()
проверьте, пожалуйста, программу flprog на баг.
Это баг. Писал об этом. Автор вроде должен был устранить, но видно не успел.

Уберите с нижнего датчика, на 1 плате, надпись к блоку, или передвиньте ее выше датчика, и все будет ок.


Win7-32, FLProg (portable)

Сообщение отредактировал rw6cm - Понедельник, 11.12.2017, 17:37
 
Alias Дата: Понедельник, 11.12.2017, 18:26 | Сообщение # 6
Сержант
Группа: Проверенные
Сообщений: 40
Награды: 0
Репутация: 0
Статус: Offline
Спасибо откликнувшимся!
По порядку.
Цитата pan ()
закрепите эту тему
Спасибо за одобрение, но перебор. Максимум - перенести в другой раздел, если будет польза.
Цитата Dev1 ()
3х-ходовой термосмеситель
Чтобы температура воды не гуляла, нужен очень шустрый и точный смеситель. Иначе при переходных процессах тот же ПИД будет постоянно рыскать, отдаваясь в ощущениях. Я боюсь их, и трехходовиков, и ощущений, натерпелся на колонке smile С трех накопителей получается стабильная температура, пока не будет исчерпан весь запас, и если один из них на дезинфекции, риск ошпариться невелик. Постоянно высокая температура - это потери как энергии, так и ресурса ТЭНов.
Цитата Sancho ()
проанализируйте, увидите
Да, видел, оставил на десерт, пока схема действительно реализована без обработки этого подмножества, поскольку пересечения нет: догрев идет до полуночи, дезинфекция - следом за ней. Но мысль Вашу понял, интересная. Успел даже ее часть применить, пока ждал ответов, во вложении. Чуть позже изучу, спасибо!
Цитата rw6cm ()
и все будет ок
Не нашел темы и не сообразил в редакторе. Потому откатился до не самой свежей копии. Но нет худа без добра - пока снова рисовал, перо легло иначе и получилось даже лучше. Прав был:
Цитата pan ()
каждый конечно сделает одно и то же по разному

Думаю, с третьего раза нарисую иначе. Но "Я не волшебник, я только учусь" (с)

А вообще, насколько разумно доверять Ардуино такие вещи, как котел? Не с точки зрения газовой безопасности, там все штатное и котлу безразлично, что манипулирует его сознанием - жидкостный термостат или робот. У него своя группа безопасности. Я имею в виду зависания, ведь можно не только разморозить систему, но и заварить в ней чай smile
Сейчас у меня на котел завязан Овеновский погодозависимый ТРМ-151, но у него нет поправки на теплоинерционность здания, а это та еще беда. Пока справляюсь с ней с помощью силикатного кирпича. Но не то это, не то, буду писать свой блок внесения поправки, чтобы все учесть. Может и получится.
В любом случае, спасибо за помощь!
Прикрепления: 1694112.png(15.1 Kb)
 
support Дата: Понедельник, 11.12.2017, 18:31 | Сообщение # 7
Автор программы
Группа: Администраторы
Сообщений: 1004
Награды: 46
Репутация: 28
Статус: Offline
Цитата rw6cm ()
Это баг. Писал об этом. Автор вроде должен был устранить, но видно не успел.
Исправил, в следующей версии её не будет.


Разработчик программы FLProg
 
Dev1 Дата: Понедельник, 11.12.2017, 21:01 | Сообщение # 8
Генерал-лейтенант
Группа: Проверенные
Сообщений: 700
Награды: 14
Репутация: 18
Статус: Offline
Цитата Alias ()
Чтобы температура воды не гуляла, нужен очень шустрый и точный смеситель. Иначе при переходных процессах тот же ПИД будет постоянно рыскать, отдаваясь в ощущениях.

Вообще то он термостатический и никакого привода, а тем более ПИД регуляторов не требует.


Win7/10-64 FLProg v3.0.3 external IDE 1.8.5 + Last Libs

 
krom23 Дата: Вторник, 12.12.2017, 11:35 | Сообщение # 9
Подполковник
Группа: Проверенные
Сообщений: 276
Награды: 4
Репутация: 3
Статус: Offline
Цитата Alias ()
Допустим, если на всех трех выходах 1, то значение переменной - 3.
Есть такой блок Дешифратор.
 
Sancho Дата: Вторник, 12.12.2017, 12:03 | Сообщение # 10
Генерал-лейтенант
Группа: Проверенные
Сообщений: 605
Награды: 18
Репутация: 20
Статус: Offline
Цитата krom23 ()
Цитата Alias ()Допустим, если на всех трех выходах 1, то значение переменной - 3.
Есть такой блок Дешифратор.
Увы, не он. Прочитайте внимательнее. Нужно преобразовать bool в integ, а затем сложить.
Или таблицу, или ...
Проще, как есть в проекте, на selector


Если не получится на контроллере - сделаю на тразисторах и 155/176...
 
Dev1 Дата: Вторник, 12.12.2017, 12:43 | Сообщение # 11
Генерал-лейтенант
Группа: Проверенные
Сообщений: 700
Награды: 14
Репутация: 18
Статус: Offline
Цитата Sancho ()
Увы, не он. Прочитайте внимательнее. Нужно преобразовать bool в integ, а затем сложить.Или таблицу, или ...

Может быть шифратор...




Win7/10-64 FLProg v3.0.3 external IDE 1.8.5 + Last Libs

 
Alias Дата: Среда, 13.12.2017, 11:03 | Сообщение # 12
Сержант
Группа: Проверенные
Сообщений: 40
Награды: 0
Репутация: 0
Статус: Offline
Цитата Dev1 ()
Может быть шифратор
Действительно! Ведь я смотрел на него и что-то упустил. Мало того, этот вариант меньше отнимает ресурсов. Я правильно оцениваю эффективность? Скопировать нужную плату в новый проект, "Компилировать проект" -> в IDE "Проверить" и сравнить в нижнем черном окне цифры для разных вариантов.
В моем случае с Аналоговым переключателем и Шифратором разница соответственно такая:
Скетч использует 474 байт / 466 байт
Глобальные переменные используют 15 байт / 13 байт
Считаю правильным сразу по возможности оптимизировать схему, спасибо за подсказку! Скриншот платы с двумя вариантами для удобства сравнения в приложении.
И еще можно вопрос по подходу к проектированию? На анализе логики не настаиваю, но если будут ошибки, готов к советам. Схема тоже во вложении. Я создал массивы, указав им конкретный тип, однако, судя по цвету связей, пошла пересортица. Как этого избежать, нужно ли конвертировать или пусть как есть остается?
Прикрепления: 2231191.png(110.8 Kb) · Kn.flp(160.8 Kb)
 
krom23 Дата: Среда, 13.12.2017, 12:19 | Сообщение # 13
Подполковник
Группа: Проверенные
Сообщений: 276
Награды: 4
Репутация: 3
Статус: Offline
Цитата Sancho ()
Увы, не он. Прочитайте внимательнее. Нужно преобразовать bool в integ, а затем сложить.
Вы верно не прочли описание блока. И входы там bool, и выход integ, мало того и для каждой комбинации "1" и "0" на входах своё число на выходе, одним словом классический двоично-шестнацетиричный дешифратор. Если надо уменьшить число(разрядность) входов, то на входе старшего разряда(D4(8)) устанавливаем "0" и получаем восьмеричный дешифратор. А с числами полученными на выходе можно производить любые операции.
 
Sancho Дата: Среда, 13.12.2017, 13:02 | Сообщение # 14
Генерал-лейтенант
Группа: Проверенные
Сообщений: 605
Награды: 18
Репутация: 20
Статус: Offline
по скрину - Нижние компараторы(сравнение) заменить на один ==23, убрав заодно &.
По шифратору - попробуйте ещё раз прочитать мой пост 10, и ответить по Вашему шифратору - какой номер графика будет ночью вечером при ветре?
По горелкам - зачёт.
krom23,
Цитата krom23 ()
Вы верно не прочли описание блока. И входы там bool, и выход integ, мало того и для каждой комбинации "1" и "0" на входах своё число на выходе, одним словом классический двоично-шестнацетиричный дешифратор. Если надо уменьшить число(разрядность) входов, то на входе старшего разряда(D4(8)) устанавливаем "0" и получаем восьмеричный дешифратор. А с числами полученными на выходе можно производить любые операции.
Вам также нужно ответить на мой выше озвученный вопрос.
То, что описывает топикастер изображено на моём аватаре!!!! Только четырёх-разрядный(на аватаре).
А потом уже шифраторы....
P.S. Если Вы узнаете сами, без инета, то, что изображено на нём, то Ваши вопросы касательно моих знаний шифраторов/дешифраторов должны отпасть...
Цитата
И входы там bool, и выход integ, мало того и для каждой комбинации "1" и "0" на входах своё число на выходе, одним словом классический двоично-шестнацетиричный дешифратор.
это всё-таки ШИФРАТОР smile , т.к. при преобразовании нескольких единичных сигналов в более сложные штучные (byte,int) происходит их "шифрование"

Добавлено (13.12.2017, 13:02)
---------------------------------------------
P.S. Дополню насчёт селекторов.
Не смотрел( не создавал повтор платы из картинки топикастера с sel и шифратором), но при правильном расположении строк в коде при "ветре" вычисления, укладывается ли время в диапазон, выполнятся не будут, вообще, т.к. они будут не нужны, т.е. будут стоять после else в части кода sel .....


Если не получится на контроллере - сделаю на тразисторах и 155/176...

Сообщение отредактировал Sancho - Среда, 13.12.2017, 12:44
 
Alias Дата: Среда, 13.12.2017, 13:48 | Сообщение # 15
Сержант
Группа: Проверенные
Сообщений: 40
Награды: 0
Репутация: 0
Статус: Offline
Цитата Sancho ()
заменить на один ==23
Я пока оставил так на случай, если придется расширить интервал, например, 22-23. Хотел было сделать на какой-нибудь таблице состояний, но как-то громоздко получается. Возможно, и переделаю. Найду более красивое решение - покажу.
Цитата Sancho ()
какой номер графика будет
Второй. Тот, что добавит температуры теплоносителя. Если ветер сильный, тут уже не до экономного режима. Хотел добавить логику, чтобы при ветре ночью вместо первого был  дневной нулевой режим, а днем - усиленный второй, но пока оставил. Тем более, что вообще не знаю, на чем сделать датчик ветра. Понятно, что это будет на герконе или оптике с большой интегрирующей цепочкой. Поэтому хвост и подвис. Но спасибо за беспокойство!
Про аватарку заинтриговали, но слишком мелко, чтобы понять:)
Цитата Sancho ()
т.е. будут стоять после else в части кода sel
Вы про уже скомпилированный код? Недопонял, о каком времени речь. Про то, что до того, как дойдет до опроса переменной Ветер, на выходе платы уже будет принято решение о Режиме? Мне всегда было слегка не понятно, как компилируется код, но если в блоке есть входы, все они должны ведь учитываться?
ЗЫ Перерисовал, если правильно понял shy
ЗЫ2 Во вложении два варианта - на компараторах и таблице Номера режимов поплыли, но это не критично. Несмотря на то, что элементов поубавилось, ресурсов поубавилось тоже:
Скетч использует 466 / 498 байт
Прикрепления: 8090997.png(104.3 Kb) · 1807360.flp(168.1 Kb)


Сообщение отредактировал Alias - Среда, 13.12.2017, 14:16
 
Форум » Песочница » Начинающим » Подход новичка к программированию на примерах Графика ГВС (Вопрос знатокам: в том хоть направлении?)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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