Расчёт плотности нефтепродуктов по ГОСТ Р 50.2.076

Автор diehard71, 29.10.2017, 15:25

« назад - далее »

diehard71

Здравствуйте,

Друзья, поддержите, если возможно советом. За последние неск. дней все мозги сломал, но так и не нашёл ошибки. Подозреваю, что банально замылился глаз и не вижу того, что лежит под носом.

Итак, есть http://u.to/GB9REA. В нём приведены чёткие уравнения и алгоритмы расчёта плотности нефтепродуктов, в зависимости от температуры/давления. Вот примерная схема расчётов:

http://i89.fastpic.ru/big/2017/1029/c2/248616be79a64d2ea8832255df1f7dc2.png

С этим вроде как всё ясно и понятно. Изначальная задача:  вывести р15 из замеров топлива, находящегося в произвольном состоянии. На основании вышепривёдённых данных, родился следующий текст в VBA:


Function P_to_15(dens, temp, Optional p)
k0 = 613.9723
k1 = 0
k2 = 0
If IsMissing(p) = True Then
    p = 0
End If

old_dens = 0
new_dens = dens

Do Until Abs(new_dens - old_dens) = 0
    b15 = ((k0 + k1 * new_dens) / new_dens ^ 2) + k2
    Yt = 10 ^ -3 * Exp(-1.6208 + 0.00021592 * temp + ((0.87096 * 10 ^ 6) / new_dens ^ 2) + ((4.2092 * temp * 10 ^ 3) / new_dens ^ 2))
    old_dens = new_dens
    new_dens = (dens * Exp(-b15 * (temp - 15) * (1 + 0.8 * b15 * (temp - 15)))) / (1 - Yt * p)
Loop
P_to_15 = Application.Round(new_dens, 2)
End Function

И вроде бы всё хорошо. Но, не всё хорошо. Считает не правильно. В том же стандарте приводится пример для расчёта. Следуя которому - мною написанное даёт иные результаты. Вот пример:

http://i91.fastpic.ru/big/2017/1029/f6/8ed7217855040fd4ca8bd1882fe0f5f6.png

Грубо говоря, при пересчёте из более высокой температуры в более низкую - плотность должна возрастать (что, как минимум, логично), а она - уменьшается. Другими словами: если при температуре +27, плотность солярки 840, то при +15 она должна быть +845, а не - 835.

Если взять конкретный пример: при t=27,3 плотность = 836,15
в результате первого приближения, при приведении к t=15 - формула должна выдать - 843,62, а она выдаёт - 827.31.... в чём собственно и состоит затык...

Прицепил файлик, в котором играюсь. Буду крайне признателен, если ткнёте носом в ошибку!

vikttur


kuklp

Я, как всегда, чертовски адекватен... Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771