Что-то у меня не то с твоими вычислениями на давлении 50 тор. То-ли я накосячил, то-ли у тебя бага.RudyУ меня вот что получается - см. скриншоты во вложении. А у тебя что?
Теория фазового состояния водно-спиртовой смеси: температура, давление, концентрация
OldBean
Доцент
Красноярск
1K 1.4K
Отв.160 18 Дек. 16, 18:49
Rudy
Академик
Питер
5.8K 1K
Отв.161 18 Дек. 16, 19:39, через 50 мин
Ага, проверил и нашел свою багу - стоял вызов не той функции.
Посмотрел разницу с VLE-саlc (в отдельных точках) - вроде довольно прилично, по температуре порядка 0.5*С, по концентрации в паре - несколько сотых (молярная доля).
Но, по скорости, получается довольно медленно за счет поиска корня. Большой разницы с интерполяцией нет.
Добавлено через 3ч. 29мин.:
За каждую запятую приходится бороться с матом и дикими затратами времени. Нужно несколько дней, чтобы перекосячить мозги на этот кретинизм.
Посмотрел разницу с VLE-саlc (в отдельных точках) - вроде довольно прилично, по температуре порядка 0.5*С, по концентрации в паре - несколько сотых (молярная доля).
Но, по скорости, получается довольно медленно за счет поиска корня. Большой разницы с интерполяцией нет.
Добавлено через 3ч. 29мин.:
Может ты знаешь. Можно конечно самоучитель по VBA скачать... Но сам понимаешь...Чапаев1945, 18 Дек. 16, 18:40Лучше скачать. Т.е. я что-то могу нарисовать в VBA, но его логика со мной абсолютно несовместима.
За каждую запятую приходится бороться с матом и дикими затратами времени. Нужно несколько дней, чтобы перекосячить мозги на этот кретинизм.
Чапаев1945
Научный сотрудник
Петрозаводск
1.9K 1.4K
Отв.162 18 Дек. 16, 23:48
Rudy, понятно))) Тогда это на период свободного времени отложу. Сейчас в цейтноте полном. Смысл этого действа представляю, стратегию тоже, а вот воплощение и детали, нужно глянуть литературу. Еще раз повторюсь - языками не владею, поэтому буду с нуля))) Но... придется
Тебе же спасибо за помощь. У нас просто очень разный уровень, я влезаю в область мне абсолютно несвойственную, но вот ведь парадокс необходимую... Поимей немного терпения и направь если пойду не тем путем)))) Пока тогда основной буду иметь тему по уточнению К рект. А остальное второй эшелон.
За каждую запятую приходится бороться с матом и дикими затратами времени.Rudy, 18 Дек. 16, 19:39ибо не привык к другому языку и буду воспринимать этот как базу))) Когда писал моды к любимой игре, разобрался в коде. Тут тоже постараюсь.
Тебе же спасибо за помощь. У нас просто очень разный уровень, я влезаю в область мне абсолютно несвойственную, но вот ведь парадокс необходимую... Поимей немного терпения и направь если пойду не тем путем)))) Пока тогда основной буду иметь тему по уточнению К рект. А остальное второй эшелон.
Esc
Профессор
Москва
2.1K 2.1K
Отв.163 16 Янв. 17, 11:18
... Во вложении варианты утилит для расчета концентрации спирта в паровой фазе и температуры кипения для бинарной смеси этанол - вода в зависимости от спиртуозности жидкой фазы и давления...И на других модельках ардуинок, табличка для 50мм.рт.ст. бьется с твоей.
... скетч для ардуинок...
... Проверял на UNO...
... неплохо, если бы кто-нибудь попроверял на других моделях...OldBean, 18 Дек. 16, 16:14
... И написал бы, если что не так...OldBean, 18 Дек. 16, 16:14Сущий пустяк, ... лишняя "фи" в имени математической функции возведения в заданную степень.
Добавлено через 13мин.:
Еще бы понять, как это применить на практике?
OldBean
Доцент
Красноярск
1K 1.4K
Отв.164 17 Янв. 17, 05:24
Esc, спасибо за информацию! В обычном Си буква f в конце функции из стандартной библиотеки (с math.h) подразумевает линковку функции с типом float, а без буквы - double. Видимо разработчики ардуино еще что-то лишнее наворотили? Для упрощения жизни одним программистам и усложнения другим :)))) А что, powf не линкуется?
Еще бы понять, как это применить на практике?Esc, 16 Янв. 17, 11:18Можно попытаться реализовать алгоритм управления ректификацией по спиртуозности. Ну, для начала, может быть что-нибудь типа старт-стопа, только не по температуре, а по спиртуозности флегмы в нижней части колонны. Правда не знаю что из этого получится - сам еще не пробовал. Пока только такие совсем "сырые" задумки.
Kotische
Академик
Саратов
8.1K 2.5K
Отв.165 17 Янв. 17, 05:43, через 20 мин
В обычном Си буква f в конце функции из стандартной библиотеки (с math.h) подразумевает линковку функции с типом float, а без буквы - double.OldBean, 17 Янв. 17, 05:24С буквой f - float,
С буквами lf - double,
Без букв - integer.
Не?
Esc
Профессор
Москва
2.1K 2.1K
Отв.166 17 Янв. 17, 09:39
Видимо разработчики ардуино еще что-то лишнее наворотили? Для упрощения жизни одним программистам и усложнения другим ))) А что, powf не линкуется?OldBean, 17 Янв. 17, 05:24Угу.
"Ардуиновский" компилятор понимает встроенную функцию pow.
powf для него банальная переменная. А раз она не объявлена в нужной области - компилятор ругается.
Добавлено через 2ч. 15мин.:
Можно попытаться реализовать алгоритм управления ректификацией по спиртуозности. Ну, для начала, может быть что-нибудь типа старт-стопа, только не по температуре, а по спиртуозности флегмы в нижней части колонны. Правда не знаю что из этого получится - сам еще не пробовал. Пока только такие совсем "сырые" задумки.OldBean, 17 Янв. 17, 05:24
Я попробую пофантазировать, а ты да линейкой по моим шаловливым ручкам. Идет?
В твою утилитку с соответствующих датчиков вводим:
• Атмосферное давление;
• ИМХО наверное стоить учесть и давление в контролируемой точке колоны (например оттолкнувшись от кубового);
• По кубовой температуре вычисляем (кстати как?) переменную ха(мольная концентрация этанола в жидкой фазе, или раствор этанола в воде). Все переменные из кода предоставленного тобою чуть выше;
На выходе утилиты имеем:
• Значение переменной ya (мольная концентрация этанола в паре нижней части колонны). Которая нам в алгоритме управления особо и не нужна, просто приятный показометр;
• Значение переменной Tb (температура пара в колонне на интересующем нас участке);
Имея расчетные данные по температуре в "нижней части колонны" и реальные с температурного датчика в "нижней части колонны" мутим:
• простецкий старт-стоп (температура с датчика подошла к расчетной - стопорим отбор, опустилась - возобновляем);
• или плавно манипулируя ФЧ (например изменяя отбор продукта ШИМом) держим в низу колоны "правильную" спиртуозность пара (та же температура с датчика).
И предваряя вопросы: - "Мол, а зачем такой изврат, если есть проверенная веками, добрая дельта?"
ИМХО скажу: - "К сожалению дельта не учитывает изменчивое атмосферное давление".
А для солидности тисну реальный график мониторинга атмосферы во время двух, последовательных погонов браги (время погонов отметил на оси абсцисс).
Что характерно?
Из-за низкой атмосферы температура кипения оставшейся в кубе воды естественно снизилась. Тупо, без попугая, дожидаясь заветных 100˚С, около получаса дистиллировал в приемную емкость воду. Этот атмосферный глюк и сподвиг меня изменить алгоритм завершения погона бражки в моей автоматике. [сообщение #12916957]
OldBean
Доцент
Красноярск
1K 1.4K
Отв.167 17 Янв. 17, 13:18
С буквой f - float,Не. Если говорить о стандартной библиотеке языка Си (не C++, а просто С, где мы подключаем заголовочный файл math.h), то там просто имя функции (например, pow, sin, exp и т.д.) означает double (и аргумент функции и возвращаемое значение), если постфикс f (например, powf, sinf, expf), то и аргумент и возвращаемое значение должно быть float, а l - означает long double. Целочисленных значений там нет (точнее, только для некоторых функций).
С буквами lf - double,
Без букв - integer.
Не?Kotische, 17 Янв. 17, 05:43
В C++ там иначе, там есть полиморфизм и такой проблемы не возникает. Имя одно и то же, без постфиксов. Компоновщик по типу аргумента уже сам подключает нужный вариант (тип) функции.
А вот как это реализовано в ардуинке - точно не знаю. Что там пришло на ум разработчикам? Про заголовочные файлы, похоже, они вообще гордо забыли. Поэтому и непонятно, что и как они подключают. Отдельно разбираться надо.
Добавлено через 47мин.:
powf для него банальная переменная. А раз она не объявлена в нужной области - компилятор ругается.Esc, 17 Янв. 17, 09:39Странно. У меня-то все собирается нормально (с powf). Одна гипотеза есть. Но сначала уточним - Вы в какой операционной системе (на рабочей станции) работаете?
ИМХО скажу: - "К сожалению дельта не учитывает изменчивое атмосферное давление".Esc, 17 Янв. 17, 09:39Дельта действительно зависит от давления. Но, при колебаниях атмосферного давления в пределах разумного (для сохранения жизни на земле ))), зависит линейно и очень-очень слабо. Поэтому дельта - вполне приемлемый способ контроля. Другое дело, если дельта мала, а сами температуры не очень стабильны (скажем, датчики установлены неудачно). Управлять установкой при помощи малой разности двух относительно больших и зашумленных величин уже не так просто.
ИМХО, в управлении установкой не по температуре, а по спиртуозности что-то есть интересное. Но тут поэкспериментировать нужно - пока трудно судить какие грабли могут там валяться. Но в любом случае датчик атомосферного давления на установке - вещь полезная. Снимает много вопросов при непонятках. Как при дистилляции, так и при ректификации.
Kotische
Академик
Саратов
8.1K 2.5K
Отв.168 21 Марта 19, 23:27
Котище, глянь на такой вариантRudy, 24 Нояб. 16, 19:48
игорь223, я не знаю в чем могут быть сложности в работе именно с PDF-файлами, ???
но, проверка Рудиной формулы посредством Exel-я дает довольно красивые цыфирки и графики.
Лайфхак заключается только в том, что в самой формуле используется функция exp по натуральному основанию ( e=2.71828 ),
а ось Х масштабируется при помощи десятичного логарифма. ::)
По оси Х - абсолютное давление в атмосферах (масштаб логарифмический).
По оси Y - температура в °С (масштаб линейный).
Сверил цыфирьки с калькулятором Руди, вроде бьются вполне прилично. ;D
Обрати внимание, что в логарифмических координатах график выглядит как почти что прямая линия,
с уменьшением давления на каждый градус температуры приходится всё меньшая дельта абсолютного давления,
т.е. с понижением давления потребная точность измерение давления экспоненциально увеличивается.
игорь223
Академик
таганрог
30.5K 20.7K
Отв.169 27 Марта 19, 16:51
Kotische, есть вопросы, точнее просьба.
1. Твой эксель не работает, везде пишет "имя" вместо цифр. Что включай макросы, что не включай.
Поэтому не могу проверить твою формулу, к сожалению, по таблицам.
2. Можно ли не в уродских атмосферах получить ФОРМУЛУ (график мне не нужен абсолютно), а в мм. рт. и температуру в гр. Цельсия.
И в линейном, а не в логарифмическом масштабе.
Просто формулу С=F(D)
где С - это температура кипения воды, в градусах Цельсия а D это давление, в мм. рт.?
в пределах 0-900 мм.рт. или 0-120кПа если угодно
П.С. Проверил формулу OldBean - она не бьется с данными импортного калькулятора, не бьется с новым калькулятором Руди - бьется со старым, который забракован.
OldBean, можешь ли ты поправить программу, в соответствии с более точными табличными данными?
1. Твой эксель не работает, везде пишет "имя" вместо цифр. Что включай макросы, что не включай.
Поэтому не могу проверить твою формулу, к сожалению, по таблицам.
2. Можно ли не в уродских атмосферах получить ФОРМУЛУ (график мне не нужен абсолютно), а в мм. рт. и температуру в гр. Цельсия.
И в линейном, а не в логарифмическом масштабе.
Просто формулу С=F(D)
где С - это температура кипения воды, в градусах Цельсия а D это давление, в мм. рт.?
в пределах 0-900 мм.рт. или 0-120кПа если угодно
П.С. Проверил формулу OldBean - она не бьется с данными импортного калькулятора, не бьется с новым калькулятором Руди - бьется со старым, который забракован.
OldBean, можешь ли ты поправить программу, в соответствии с более точными табличными данными?
Kotische
Академик
Саратов
8.1K 2.5K
Отв.170 27 Марта 19, 21:07
эксель не работает, везде пишет "имя" вместо цифр. Что включай макросы, что не включай.игорь223, 27 Марта 19, 16:51Функция написана на VBA, по этому разрешать нужно не только макросы но и VBA.
Можно ли не в уродских атмосферах получить ФОРМУЛУигорь223, 27 Марта 19, 16:51Чтоб было не в барах, а в мм.рт.ст нужно всего лишь поделить Р в мм на 750.062.
Дано:
p - давление в [мм.р.ст.]
Промежуточные коэфициенты:
X = Ln(p/750.062) / 2.3025850929940456840179914546844
y0 = 276.746755631476
A1 = 4.38311612462968
t1 = -1.27045912745992
s1 = 17.6509622174426
A2 = 92.0915477688405
t2 = -0.467303402782173
s2 = 0.644728101630264
Конечная формула которую ты алчешь:
Tкип.воды = y0 + A1 * Exp(-t1 * X) + A2 * Exp(-t2 * X) + s1 * X + s2 * X ^ 2 - 273.16
где Ln - натуральный логарифм, а Exp - экспонента т.е. е в степени
Вот тебе для проверки несколько значений по формуле:
P(бар) | P(мм.рт) | Tформ(°C) | TCalc(°C) |
0,100 | 75,006 | 45,524 | 45.5233 |
0,115 | 86,257 | 48,278 | 48.1045 |
0,120 | 90,007 | 49,129 | 48.9649 |
0,130 | 97,508 | 50,744 | 50.6856 |
0,140 | 105,009 | 52,258 | 52.1127 |
0,150 | 112,509 | 53,683 | 53.3935 |
0,200 | 150,012 | 59,798 | 59.7971 |
0,300 | 225,019 | 68,917 | 68.5961 |
0,400 | 300,025 | 75,773 | 75.7718 |
0,500 | 375,031 | 81,329 | 80.6649 |
справа по калькулятору Руди
Kotische
Академик
Саратов
8.1K 2.5K
Отв.171 27 Марта 19, 22:55
Залез на сайт VLE-calc, взял из первоисточника данные для воды,
запихнул их в MSExcel и построил две апроксимации P(T) и T(P)
Вот тебе две формулы, для воды, которые ты так хотел:
P = Exp( 9,875587 - 2546,932/T - 425144/(T^2) )
T = 1000/( 2,679512 - 0,205959*Ln(P) - 0,002989*Ln(P)^2 )
где T[°K], P[бар]
Вроде с калькулятором Руди неплохо бъется
Как ты помнишь:
T[°K] = 273,2 + T[°C]
P[мм.р.с] = 750,061246 * P[бар]
Exp() это экспонента, ex
Ln() это натуральный логарифм, по основанию e
А шоб совсем как ты хочешь:
P = 750,061246 * Exp( 9,875587 - 2546,932/(T+273,2) - 425144/((T+273,2)^2) )
T = 1000/( 2,679512 - 0,205959*Ln(P/750,061246) - 0,002989*Ln(P/750,061246)^2 ) - 273,2
где T[°С], P[мм.рт.ст]
На втором скрине сделал проверку этих [°С]/[мм.рт.ст] формул. Вроде кузяво получилось.
ЗЫ: рекомендую считать функцию Т(Р) она даст большую точность чем Р(Т)
запихнул их в MSExcel и построил две апроксимации P(T) и T(P)
Вот тебе две формулы, для воды, которые ты так хотел:
P = Exp( 9,875587 - 2546,932/T - 425144/(T^2) )
T = 1000/( 2,679512 - 0,205959*Ln(P) - 0,002989*Ln(P)^2 )
где T[°K], P[бар]
Вроде с калькулятором Руди неплохо бъется
Как ты помнишь:
T[°K] = 273,2 + T[°C]
P[мм.р.с] = 750,061246 * P[бар]
Exp() это экспонента, ex
Ln() это натуральный логарифм, по основанию e
А шоб совсем как ты хочешь:
P = 750,061246 * Exp( 9,875587 - 2546,932/(T+273,2) - 425144/((T+273,2)^2) )
T = 1000/( 2,679512 - 0,205959*Ln(P/750,061246) - 0,002989*Ln(P/750,061246)^2 ) - 273,2
где T[°С], P[мм.рт.ст]
На втором скрине сделал проверку этих [°С]/[мм.рт.ст] формул. Вроде кузяво получилось.
ЗЫ: рекомендую считать функцию Т(Р) она даст большую точность чем Р(Т)
Kotische
Академик
Саратов
8.1K 2.5K
Отв.172 28 Марта 19, 20:11
Полазил по сайту VLE-calc
Нашел готовую формулу для воды (нижние 4 строки).
И не нужно мудохаться и интерполяцию по точкам строить!!!
Гы, если сравнить погрешность их формулы и их же данных,
то погрешность получается гораздо меньше, нежели у моей
интерполяционной формулы
Нашел готовую формулу для воды (нижние 4 строки).
И не нужно мудохаться и интерполяцию по точкам строить!!!
Гы, если сравнить погрешность их формулы и их же данных,
то погрешность получается гораздо меньше, нежели у моей
интерполяционной формулы
m16
Научный сотрудник
Тамбов
1.9K 1K
Отв.173 28 Марта 19, 21:05, через 54 мин
Залез на сайт VLE-calc, взял из первоисточника данные для воды,Kotische, 27 Марта 19, 22:55всем хорош VLE-calc но смущает расчёт температуры кипения воды = 100.497°C при атмосферном = 760мм ртути.
есть мысли?
Kotische
Академик
Саратов
8.1K 2.5K
Отв.174 28 Марта 19, 21:14, через 10 мин
при атмосферном = 760мм ртути.m16, 28 Марта 19, 21:05Дык а кто сказал что атмосферное именно 760мм? ::)
m16
Научный сотрудник
Тамбов
1.9K 1K
Отв.175 28 Марта 19, 21:36, через 23 мин
Дык а кто сказалKotische, 28 Марта 19, 21:14к чему разговоры? это как бы аксиома - темп. кип. воды = 100°C при атм. давл. = 760мм ртути, не?
Kotische
Академик
Саратов
8.1K 2.5K
Отв.176 28 Марта 19, 21:57, через 21 мин
В химии стандартным атмосферным давлением с 1982 года по рекомендации IUPAC считается давление, равное 100 кПа[11]. Атмосферное давление является одной из наиболее существенных характеристик состояния атмосферы. В покоящейся атмосфере давление в любой точке равно весу вышележащего столба воздуха с единичным сечением.https://ru.wikipedia.org/wiki/Атмосферное_давление
В системе СГС 760 мм рт. ст. эквивалентно 1,01325 бар (1013,25 мбар) или 101 325 Па в Международной системе единиц (СИ).
это как бы аксиомаm16, 28 Марта 19, 21:36Это "мифы и легенды древней греции"
m16
Научный сотрудник
Тамбов
1.9K 1K
Отв.177 28 Марта 19, 22:13, через 16 мин
ок, 100кпа говоришь, пусть будет по твоему. темп кип воды = 100.118°C при Р=100кпа. и что там в Греции?
ок-2, калькулятор Руди
ок-2, калькулятор Руди
игорь223
Академик
таганрог
30.5K 20.7K
Отв.178 28 Марта 19, 22:51, через 39 мин
Есть две таблицы, одна из Стабникова, вторая из импортного калькулятора.
Кое-где они сходятся, кое - где прилично отличаются.
Меня это уже порядком заебало, если честно; у меня в контроллере их уже две, грубо говоря и четвертая, и пятая версия калькулятора Руди.
И по какой мерять я не знаю, потому что нет калиброванного термометра под рукой...
Добавлено через 2мин.:
Самое смешное, что твою формулу, Котище, мы забили в контроллер, и она показывает третьи значения, не попадающие ни в один, ни в другой калькулятор)))
А ту новую, что ты нашел, я даже не открывал, потому что она не та, которая мне нужна. Не С=F(t) и не в мм ртути а в барах(((
Что касаемо нормальных условий
с этим бьется как раз старый калькулятор
И на 10 мм ртути, и на 100мм ртути тоже бьется.
Блядь...придется включать куб с водой внутри...скажем на 10кпа, шоб долго не ждать...
Кое-где они сходятся, кое - где прилично отличаются.
Меня это уже порядком заебало, если честно; у меня в контроллере их уже две, грубо говоря и четвертая, и пятая версия калькулятора Руди.
И по какой мерять я не знаю, потому что нет калиброванного термометра под рукой...
Добавлено через 2мин.:
Самое смешное, что твою формулу, Котище, мы забили в контроллер, и она показывает третьи значения, не попадающие ни в один, ни в другой калькулятор)))
А ту новую, что ты нашел, я даже не открывал, потому что она не та, которая мне нужна. Не С=F(t) и не в мм ртути а в барах(((
Что касаемо нормальных условий
с этим бьется как раз старый калькулятор
И на 10 мм ртути, и на 100мм ртути тоже бьется.
Блядь...придется включать куб с водой внутри...скажем на 10кпа, шоб долго не ждать...
игорь223
Академик
таганрог
30.5K 20.7K
Отв.179 29 Марта 19, 00:08
Провел эксперимент.
Взял кастрюлю, налил воды, и начал кипятить на разных давлениях.
В качестве датчиков использованы:
- примерно калиброванный аналоговый промышленный китаец
- и автомобильный китаец, о котором расскажу чуть позже в другой ветке
В качестве термометра мой серийный ЭТС 223 с нулевым смещением (со склада)
Регулятор и термометр рисовали температуру, регулятор вычисленную по таблице старого калькулятора, термометр по факту в паре
Калькулятором вычислял значения по старому и новому (без галочки и с галочкой)
Вот что получилось
Добавлено через 6мин.:
Регулятор ошибся в одном измерении, НО! мой автомобильный датчик работает точно от 10 кПа, так что в том диапазоне ему не место. Хотя есть огрех видимо формулы, все же, но 0,3-0,4С терпимо
На моем рабочем диапазоне 10-30 кПа (и выше) разница между вычисленным регулятором и реального термометра, которому я ввел в мозг поправку 0,1С - практически нулевая.
По СТАРОМУ калькулятору Руди - разница в округлениях, грубо говоря и на нужды винокура не влияет.
Фух, неужели конец моим метаниям?!)))
Осталось молярные доли перевести в проценты спиртуозности куба и пара, и (вроде) все идет к тому, что я получу очередной электронный попугай)))
Взял кастрюлю, налил воды, и начал кипятить на разных давлениях.
В качестве датчиков использованы:
- примерно калиброванный аналоговый промышленный китаец
- и автомобильный китаец, о котором расскажу чуть позже в другой ветке
В качестве термометра мой серийный ЭТС 223 с нулевым смещением (со склада)
Регулятор и термометр рисовали температуру, регулятор вычисленную по таблице старого калькулятора, термометр по факту в паре
Калькулятором вычислял значения по старому и новому (без галочки и с галочкой)
Вот что получилось
Добавлено через 6мин.:
Регулятор ошибся в одном измерении, НО! мой автомобильный датчик работает точно от 10 кПа, так что в том диапазоне ему не место. Хотя есть огрех видимо формулы, все же, но 0,3-0,4С терпимо
На моем рабочем диапазоне 10-30 кПа (и выше) разница между вычисленным регулятором и реального термометра, которому я ввел в мозг поправку 0,1С - практически нулевая.
По СТАРОМУ калькулятору Руди - разница в округлениях, грубо говоря и на нужды винокура не влияет.
Фух, неужели конец моим метаниям?!)))
Осталось молярные доли перевести в проценты спиртуозности куба и пара, и (вроде) все идет к тому, что я получу очередной электронный попугай)))