Это баг. Писал об этом. Автор вроде должен был устранить, но видно не успел.Alias писал(а):проверьте, пожалуйста, программу flprog на баг.
Спасибо за одобрение, но перебор. Максимум - перенести в другой раздел, если будет польза.pan писал(а):закрепите эту тему
Чтобы температура воды не гуляла, нужен очень шустрый и точный смеситель. Иначе при переходных процессах тот же ПИД будет постоянно рыскать, отдаваясь в ощущениях. Я боюсь их, и трехходовиков, и ощущений, натерпелся на колонке С трех накопителей получается стабильная температура, пока не будет исчерпан весь запас, и если один из них на дезинфекции, риск ошпариться невелик. Постоянно высокая температура - это потери как энергии, так и ресурса ТЭНов.Dev1 писал(а):3х-ходовой термосмеситель
Да, видел, оставил на десерт, пока схема действительно реализована без обработки этого подмножества, поскольку пересечения нет: догрев идет до полуночи, дезинфекция - следом за ней. Но мысль Вашу понял, интересная. Успел даже ее часть применить, пока ждал ответов, во вложении. Чуть позже изучу, спасибо!Sancho писал(а):проанализируйте, увидите
Не нашел темы и не сообразил в редакторе. Потому откатился до не самой свежей копии. Но нет худа без добра - пока снова рисовал, перо легло иначе и получилось даже лучше. Прав был:rw6cm писал(а):и все будет ок
Думаю, с третьего раза нарисую иначе. Но "Я не волшебник, я только учусь" (с)pan писал(а):каждый конечно сделает одно и то же по разному
Исправил, в следующей версии её не будет.rw6cm писал(а):Это баг. Писал об этом. Автор вроде должен был устранить, но видно не успел.
Вообще то он термостатический и никакого привода, а тем более ПИД регуляторов не требует.Alias писал(а):Чтобы температура воды не гуляла, нужен очень шустрый и точный смеситель. Иначе при переходных процессах тот же ПИД будет постоянно рыскать, отдаваясь в ощущениях.
Есть такой блок Дешифратор.Alias писал(а):Допустим, если на всех трех выходах 1, то значение переменной - 3.
Увы, не он. Прочитайте внимательнее. Нужно преобразовать bool в integ, а затем сложить.krom23 писал(а):Цитата Alias ()Допустим, если на всех трех выходах 1, то значение переменной - 3.
Есть такой блок Дешифратор.
Может быть шифратор...Sancho писал(а):Увы, не он. Прочитайте внимательнее. Нужно преобразовать bool в integ, а затем сложить.Или таблицу, или ...
Действительно! Ведь я смотрел на него и что-то упустил. Мало того, этот вариант меньше отнимает ресурсов. Я правильно оцениваю эффективность? Скопировать нужную плату в новый проект, "Компилировать проект" -> в IDE "Проверить" и сравнить в нижнем черном окне цифры для разных вариантов.Dev1 писал(а):Может быть шифратор
Вы верно не прочли описание блока. И входы там bool, и выход integ, мало того и для каждой комбинации "1" и "0" на входах своё число на выходе, одним словом классический двоично-шестнацетиричный дешифратор. Если надо уменьшить число(разрядность) входов, то на входе старшего разряда(D4(8)) устанавливаем "0" и получаем восьмеричный дешифратор. А с числами полученными на выходе можно производить любые операции.Sancho писал(а):Увы, не он. Прочитайте внимательнее. Нужно преобразовать bool в integ, а затем сложить.
Вам также нужно ответить на мой выше озвученный вопрос.krom23 писал(а):Вы верно не прочли описание блока. И входы там bool, и выход integ, мало того и для каждой комбинации "1" и "0" на входах своё число на выходе, одним словом классический двоично-шестнацетиричный дешифратор. Если надо уменьшить число(разрядность) входов, то на входе старшего разряда(D4(8)) устанавливаем "0" и получаем восьмеричный дешифратор. А с числами полученными на выходе можно производить любые операции.
это всё-таки ШИФРАТОР , т.к. при преобразовании нескольких единичных сигналов в более сложные штучные (byte,int) происходит их "шифрование"И входы там bool, и выход integ, мало того и для каждой комбинации "1" и "0" на входах своё число на выходе, одним словом классический двоично-шестнацетиричный дешифратор.
Я пока оставил так на случай, если придется расширить интервал, например, 22-23. Хотел было сделать на какой-нибудь таблице состояний, но как-то громоздко получается. Возможно, и переделаю. Найду более красивое решение - покажу.Sancho писал(а):заменить на один ==23
Второй. Тот, что добавит температуры теплоносителя. Если ветер сильный, тут уже не до экономного режима. Хотел добавить логику, чтобы при ветре ночью вместо первого был дневной нулевой режим, а днем - усиленный второй, но пока оставил. Тем более, что вообще не знаю, на чем сделать датчик ветра. Понятно, что это будет на герконе или оптике с большой интегрирующей цепочкой. Поэтому хвост и подвис. Но спасибо за беспокойство!Sancho писал(а):какой номер графика будет
Вы про уже скомпилированный код? Недопонял, о каком времени речь. Про то, что до того, как дойдет до опроса переменной Ветер, на выходе платы уже будет принято решение о Режиме? Мне всегда было слегка не понятно, как компилируется код, но если в блоке есть входы, все они должны ведь учитываться?Sancho писал(а):т.е. будут стоять после else в части кода sel
Немного не правильно. Я имел ввиду вариант с селекторами. На скрине здесь всё было верно.Alias писал(а):Перерисовал, если правильно понял
Каюсь, не читал. А если Вы нажмёте описание и сумеете мне показать, что это шифратор, слово такое в тексте или на скринах, - буду должен.... Даже в справке - номер входа, что, конечно, понятнее.krom23 писал(а):Вы верно не прочли описание блока
Ок, начнём с простого.Alias писал(а):Совсем запутался
Код: Выделить всё
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;
}
Код: Выделить всё
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;}
}
Код: Выделить всё
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;
}
}