PDA

Просмотр полной версии : Учет топлива ПР200+поплавковый датчик уровня



Ruslan Bort
17.12.2020, 21:49
Добрый день, коллеги. Начинающий разработчик. Прошу помощи в решении следующей проблемы:
Дано: ПР200, Жидкотопливный котел, основной топливный бак и расходная емкость с поплавковым аналоговым (4-20) датчиком. Между основным баком и расходной емкостью стоит насос. Насос включается для перекачки топлива из основного бака в расходный по алгоритму двухпозиционного регулирования (уставки низкого и высокого уровня не константы и должны меняться из меню при необходимости). Не могу решить 2 проблемы:
1. Счетчик расхода топлива. Нужно определять разницу в уровней расходного бака в начале и в конце цикла работы насоса и плюсовать ее к накопленному остатку
2. Защита от сухого хода насоса (на случай, если в основной емкости закончится топливо) но не через таймаут а через контроль изменения уровня в расходном баке в течение цикла работы насоса. Т.е. если уровень топлива не изменяется в баке на определенную величину в течение определенного периода времени.
Может кто-то сталкивался с чем-то подобным?
Заранее благодарю)

melky
18.12.2020, 09:38
Опишите где и для чего это делается?
по 1. если солярка, она подвержена изменению от температуры окружающей среды. Так что если погрешность не пугает то можно. У меня правда стоит датчик давления, а не уровня, но особой разницы не вижу. Просто у вас расчет будет от других параметров. У емкости есть площадь, 1 см уровня даст определенный объем, далее считайте. Так же на 1 см уровня датчик у вас покажет разные значения.
по 2. интересно, как это вы без таймаута обойдетесь ? :)

Ruslan Bort
18.12.2020, 14:43
1. Да, это солярка. И я понимаю как посчитать объем от уровня. Не могу найти решение как в fbd описать накапливаемый остаток и к нему прибавлять новую "порцию"
2. Простой таймаут смысла не имеет, т.к. расходный бак 600 литров и его заполнение занимает около 15 минут. Если поставить таймаут 15 мин, то в случае, если основная емкость окажется пустой на старте работы насоса, то он будет молотить 15 минут вхолостую, что не гуд. Горахдо проще реагировать на отсутствие изменения уровня, на мой взгляд. А как это сделать, опять же, дилемма

Cs-Cs
18.12.2020, 15:23
Я на FBD пробовал суммирование через SEL делать. Скриншот не приведу, попробую описать:
а) Положим, переменная для суммирования зовётся wSum.
б) Нам нужен какой-то триггер (R_TRIG / F_TRIG), по импульсу которого за один цикл задачи будет выполняться прибавление к остатку. Пусть будет trgSum : R_TRIG;
в) Дальше я делал такую конструкцию на базе блока SEL:
* На вход выбора (первый, если считать сверху) подаём выход с trgSum
* На вход FALSE (второй, если считать сверу) подаём переменную iSum как есть
* На вход TRUE (третий сверху) подаём выражение iSum + xx (xx - это что надо прибавить)
* Выход блока SEL снова пихаем в переменную iSum

То есть если у нас на входе SEL будет FALSE, то получается iSum := iSum;
А если будет TRUE то получим iSum := iSum + xx;

melky
18.12.2020, 15:28
Ruslan Bort
1. Да, через SEL импульс по выключению насоса после расчета сколько перекачали.
2. Таймер будет не на все время объема а на изменение, но таймер все равно нужен, не 15 минут а скажем 20 сек или 30 сек, по которому вы сможете понять изменение объема. При включении насоса запомнили показания датчика, через 20 сек сравнили. и каждые 20 сек сравниваете.

Сергей0308
18.12.2020, 15:58
Товарищу надо в первый класс сходить, только не говорите первоклашкам зачем, а то они со смеху животики надорвут!
Короче высоту(уровень) топлива можно легко пересчитать в объём для цилиндра такая формула: V = π ⋅ R2 ⋅ H

melky
18.12.2020, 16:19
Сергей0308 судя по посту автора, он уже был в 1-ом классе но что-то я не помню, чтобы именно в нем проходили подобные формулы, у вас была какая-то элитная школа за большие бабосы ? :)

Сергей0308
18.12.2020, 16:37
Сергей0308 судя по посту автора, он уже был в 1-ом классе но что-то я не помню, чтобы именно в нем проходили подобные формулы, у вас была какая-то элитная школа за большие бабосы ? :)

Это я образно выражаюсь! Какая разница: 1, 2, 3 или 4 класс, это принципиально ничего не меняет!

https://mnogoformul.ru/obem-cilindra

melky
18.12.2020, 16:53
Опять вы читать не умеете :)

Сергей0308
18.12.2020, 17:03
Опять вы читать не умеете :)

Вы думаете моя безграмотность передалась товарищу, можно сказать он от меня "заразился"?

Сергей0308
18.12.2020, 17:17
а где то описано что емкость строго цилиндрической формы, речь то ведь о 600 литрах это может быть конус, а может бак в виде параллелепипеда, вариантов много и посылать в первый класс, из-за того что Вам померещился цилиндр не предусмотрительно

Это предположение, автор же не предусматривает, что форма ёмкости имеет значение, я и выложил наиболее распространённую форму бочки, если Вы думаете что там конус, можете формулу для объёма конуса выложить, короче, Вас тоже никто в предположениях не ограничивает, особенно ТС!

Вы то сами что думаете, если автор хочет вычислить объём топлива в ёмкости по уровню, умалчивая форму ёмкости?

Сергей0308
18.12.2020, 17:44
мне вобще фиолетово форма емкости, я вижу что есть насос, скорее всего без частотника, значит качает с постоянной производительностью, высчитав сколько литров в секунду он дает, в программе плюсовать каждую секунду тот расчетный литраж пока включен насос, как Вам такое Сергей 308 ?

Тогда зачем он в ёмкость датчик уровня установил?
Короче, по уровню будет точней, ваш способ менее точный, плюс-минус полкилометра! И защиту по сухому ходу нормально не сделаешь!

Сергей0308
18.12.2020, 18:06
прежде чем отправлять в школу, сами из неё выйдите. Перед Вами на два сообщающихся сосуда, а рабочая установка, из одного постоянно берет топливо котел, поплавки нужны чтоб этот бак не осушался и еще есть основная емкость в которую в любой момент может котельщик долить топлива на свое усмотрение чтоб подольше поспать

Какие Вы там объемы собрались мерять?


ЗЫ Проблемы сухого хода решаются датчиком сухого хода

Ну вот видите, у Вас свои предположения и совсем всё не так, как ТС писал!
Хоть конкурс проводи, кто чуднее понял как сделано у ТС!

Сергей0308
18.12.2020, 19:11
это как? Есть котел, об этом написано? Он с какого бака запитан, неужто с основного, вроде как написано что с расходного. Далее описан насос который стоит между основным баком и расходным, в расходном есть аналоговый датчик на поплавке, значит уровень измеряется только в нем и придумать какое то другое назначение кроме как поддержание уровня для этого датчика трудно, другими словами чтоб не осушался. Обсуждать изменение значений точек верхнего и нижнего уровня смысла нет, подбирается индивидуально, чтоб хватило запаса подать топливо и бак не успел завоздушить котел. Насос работает по гистерезису, значит когда он включен идет перекачка из основного в расходный, в это время и считается объем перекачанного. Второй вопрос про сухой ход, ну видимо нужен чтоб не проспали когда опустошиться основная емкость. Раз написано что при включенном насосе нижний уровень не показатель, значит с большой долей вероятности идет задержка от включения насоса до попадания в расходный бак, тогда зачем изменение уставок, если проблема в чем то еще, тогда датчик потока дал бы однозначный ответ насос включен расхода нет значит пора бить тревогу и кстати обратная ситуация тоже требует внимания, может там шланг сорвало, насос не включен о весь основной бак убежал в ближайший водоем, а у кого то контроллер продолжает считать объем по формуле

Ну вот, совсем другое дело, теперь понятно что Вы прочитали, что ТС писал и от себя добавлю, вероятно Вы ещё не всё поняли, что он хочет?! Он дополнительно хочет иметь защиту от сухого хода насоса, вероятно производительность насоса перекачивающего из основной ёмкости в расходную больше расхода топлива котлом при работе котла и при работе насоса уровень в расходной ёмкости будет увеличиваться, на этом принципе он и хочет сделать защиту по сухому ходу, насколько я смог понять!

Сергей0308
18.12.2020, 19:38
У меня имеется макрос ограничения скорости изменения параметра, на его основе можно сделать защиту сухого хода насоса. Для этого нужно знать минимальную рабочую скорость изменения(увеличения) уровня в расходной ёмкости при работе насоса, если эта скорость ниже минимальной, предполагается сухой ход, всё!

52570

https://owen.ru/forum/showthread.php?t=32153&page=6

Сергей0308
18.12.2020, 20:09
вот в этом всё Ваше амплуа на форуме, что в данной ситуации что по жизни. Сперва выкладываете проект так как поняли сами, когда оппонент говорит что хотел не то выкладываете второй проект со словами: "нет, сынок, ты хотел именно это". Потом всё таки вникаете в суть задачи выкладываете третий проект, уже похожий на суть задачи. В четвертом устраняете ошибки, потому что наспех сделано, в пятом появляется оптимизация.

Так что, ждем четвертого и пятого варианта?

Практически всегда существует множество вариантов решения той или иной проблемы, жаль что Вы этого не замечаете!
Даже в частном текущем случае Вы предлагаете объём топлива считать по времени работы насоса(насколько смог понять) перекачки из основной ёмкости в расходную, а мне кажется предпочтительным по количеству включений насоса!

Сергей0308
18.12.2020, 20:32
ну вот даже началась некая оптимизация или устранение ошибок(хотя это моя версия) как я и говорил, осталось только выяснить по словам
время работы насоса будет одинаковым при наполнении бака от нижнего уровня до верхнего если котел потребляет топливо или во втором случае остановился?

Расход котла в обеих случаях не учитывается, наверно можно учитывать(приблизительно) расход отдельным пунктом за время работы насоса, я так понимаю расход может меняться!

Сергей0308
18.12.2020, 20:48
для меня это открытие, что в наполняемой емкости из которой одновременно может выливаться некий объем, а может и не выливаться, верхний уровень достигается за одно и тоже время, срочно надо идти удалять все модели подобных резервуаров, оказывается тестирование шло с нарушениями законов физики

Вот видите сколько открытий! Давайте сначала по вашему варианту, назовём его так для того, чтобы понятно было, по времени работы насоса перекачки из основной ёмкости в расходную, здесь и не требуется это учитывать, проработал к примеру насос 30 секунд - 100 литров топлива поступило! В моём случае, если учитывать по количеству включений насоса, для точности подсчёта можно учитывать средний расход за время работы насоса, всё!
Всё равно, учёт по количеству включений насоса будет точнее!

melky
18.12.2020, 22:32
От вы фигней маетесь... У мощных котлов достаточной мощности насосы, чтобы заниматься фигней в виде промежуточных емкостей и дополнительных перекачивающих насосов. Так что ждем пояснений автора.

melky
19.12.2020, 11:01
Так все-таки, что за котел, для чего измерение расхода потребовалось ?

Ruslan Bort
19.12.2020, 11:10
Так все-таки, что за котел, для чего измерение расхода потребовалось ?

Измерение расхода, как ни странно, нужно для того, чтобы его (расход) учитывать. По уровню расход рассчитывать получается точнее, т.к. показания магистрального расходомера сильно зависят от вида топлива (летнее/зимнее) и от температуры окружающей среды. Иными словами его нужно калибровать под каждый новый вид. Это раз. Вторая причина почему решено было использовать ПДУ для такого расчета - наличие самого ПДУ. Чисто экономически гораздо проще решить проблему имеющимися средствами - система проще и дешевле получается.

melky
19.12.2020, 11:12
А про котел ни слова... почему промежуточная емкость ?
Да, я тоже вижу разницу от температуры, но у меня в емкости датчик давления ПДИ-100 стоит.
Показания пляшут от температуры очень сильно. Летом, легко пару литров погрешность между ночью и днем. Думаю погрешность будет даже с измерением уровня.

Ruslan Bort
19.12.2020, 11:21
По-моему все довольно подробно описал:
Защита от сухого хода по таймауту не будет здесь эффективной, т.к. объем, перекачиваемый из основной емкости в расходную за один раз достаточно большой (около 500 литров) и если поставить простую отсечку по превышению времени работы, то насос выйдет из строя раньше, чем время отсечки будет достигнуто. Поэтому и было принято решение реализовать защиту от сухого хода через контроль изменения уровня в расходном баке во время работы насоса. Т.е.: работает насос - уровень в баке соответственно растет. Допустим на 50 литров/мин. Пусть будет коэффициент погрешности на колебания уровня за счет напора поступаемого топлива. Допустим 0,5. Т.е. если за 2 минуты уровень в баке не увеличился, например, на 50 литров, то значит топливо не поступает. Вроде все логично

melky
19.12.2020, 11:25
Т.е. если за 2 минуты уровень в баке не увеличился - вам про это и говорят всю дорогу, чем это не таймер ? только не на весь объем а на его изменение...

Таймер хоть вы тресните будет после включения насоса.
1. включение насоса - сохранение текущего уровня
2. Таймер на Х секунд - проверка уровня, изменился, работаем дальше
3. не изменился - остановка насоса и аларма.

Ruslan Bort
19.12.2020, 11:32
Потому, что основная емкость установлена достаточно далеко от котла. В данном случае, потребовалось бы интегрировать дополнительный насос, постоянно работающий во время работы горелки. Такое решение менее отказоустойчиво и гораздо более сложное чем питание через доп расходную емкость из которой горелочный насос берет топливо сам. Дополнительно проще расход топлива учитывать и много еще других факторов: менее сложная чистка, например. Гораздо проще слить 500 литров некачественного топлива из расходной емкости, и быстро заправить ее из резервного "кубика" например, чем выкачивать основной танк и чистить его. В общем, коллеги, решение с доп емкостью было выстрадано и принималось не просто так))

Ruslan Bort
19.12.2020, 11:36
Так я и не говорил про таймер)))
я говорил :"не через таймаут а через контроль изменения уровня в расходном баке в течение цикла работы насоса" - т.е. не через такое стандартное решение как простая отсечка по времени

melky
19.12.2020, 11:37
Блин, вы так и не озвучили котел, или не хотите. Дальность установки емкости как правило пофигу, важна глубина установки, не все котлы могут забирать с метра глубины даже.

Макрос делал для другого. Первое сохранение по TON1, вам надо сразу после запуска насоса.
И сравнение у меня на больше-меньше, вам надо на изменение, если его не произошло в каком-то диапазоне, значит стоп.

Ну или то, что Сергей308 предлагал, если нет скорости изменения за какой-то промежуток времени, то стоп.

Ruslan Bort
19.12.2020, 11:42
Попробую другими словами.
Проблема решение которой я пытаюсь найти в следующем. Как в FBD сравнить текущее значение с тем, которое было в прошлом (60 секунд назад, допустим). Как "запомнить" а потом "записать" значение переменной float в функцию сравнения

Ruslan Bort
19.12.2020, 11:42
Спасибо вам огромное, добрый человек

Ruslan Bort
19.12.2020, 11:47
[QUOTE=melky;345741]Блин, вы так и не озвучили котел, или не хотите. Дальность установки емкости как правило пофигу, важна глубина установки, не все котлы могут забирать с метра глубины даже.

Котел я для простоты написал, т.к. знаю что возникнут сразу вопросы))) Там печь специальная, но сути это не меняет. Там во-первых дальность установки сильно влияет на диаметр магистрали, а во-вторых, как вы правильно заметили, глубина играет роль. Так вот расходная емкость как раз выше уровня горелок стоит, а основной танк ниже.

Еще раз спасибо за помощь