Показано с 1 по 2 из 2

Тема: Температура насыщения воды

  1. #1
    Пользователь
    Регистрация
    12.08.2021
    Адрес
    Санкт-Петербург
    Сообщений
    12

    По умолчанию Температура насыщения воды

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

    Стоит задача вычислить температуру насыщения воды по давлению.

    Пробежавшись по библиотекам в разделе "Библиотеки и компоненты" не нашёл нужных мне блоков, например:
    1 - блока, который бы считал Тнасыщения (что было бы идеально);
    2 - блока, задающего табличную функцию x-y, в которой можно было бы задать таблицу насыщенного пара;

    Чтобы не писать данную функцию самому, не могли бы опытные форумчане подсказать, где у овена искать подобные функции?

    Спасибо.

  2. #2
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,825

    По умолчанию

    Цитата Сообщение от brmatvey Посмотреть сообщение
    Здравствуйте.

    Стоит задача вычислить температуру насыщения воды по давлению.

    Пробежавшись по библиотекам в разделе "Библиотеки и компоненты" не нашёл нужных мне блоков, например:
    1 - блока, который бы считал Тнасыщения (что было бы идеально);
    2 - блока, задающего табличную функцию x-y, в которой можно было бы задать таблицу насыщенного пара;

    Чтобы не писать данную функцию самому, не могли бы опытные форумчане подсказать, где у овена искать подобные функции?

    Спасибо.
    Чтобы не писать данную функцию самому
    Возьмите, например, мою https://owen.ru/forum/showthread.php...l=1#post220263
    Хотя она написана в КДС 2.3 , думаю будет работать и в 3.5
    Код:
    FUNCTION MyGraf_p : REAL
    VAR_INPUT
    	IN: REAL;	(*Входной сигнал*)
    	pt : POINTER TO ARRAY[0..99] OF Point_GR;	(*Массив точек графика, не более 100 пар точек X,Y*)
    	size : UINT;
    END_VAR
    VAR
    	a: INT;	(*Начало интервала поиска*)
    	b: INT;	(*Конец интервала поиска*)
    	N: INT;	(*Число точек в графике*)
    	i: INT;
    END_VAR
    
    N:= SHR(size,3)-1;	(*Число точек в графике*)
    (*Начальные значения интнрвала поиска*)
    a:=0;
    b:=N-1;
    
    (*Обрезание графика для крайних точек*)
    IF IN<=pt^[0].X THEN
    	MyGraf_p:=pt^[0].Y;
    ELSIF IN>=pt^[N-1].X THEN
    	MyGraf_p:=pt^[N-1].Y;
    (*Теперь можно начать поиск*)
    ELSE
    	WHILE (b-a) <> 1 DO (*В конце концов, входной сигнал ТОЧНО попадет между двумя соседними точками X(a) и Х(а+1)*)
    	i:=(a+b)/2;	(*Делим интервал поиска пополам*)
    	IF IN=pt^[i+1].X THEN	(*Может нам повезло, и мы сразу нашли точку? *)
    	a:=i; b:=i+1;			(*Бинго! прекращаем итераций, нечего в пустую молотить :) *)
    	(*мимо :( ,тогда посмотрим в какую половину интервала попали*)
    	ELSIF IN>pt^[i].X THEN	(*Если входной сигнал больше середины интервала поиска,*)
    	a:=i;					 (*то следующий поиск будем делать начиная от середины и до конца массива*)
    	ELSE					(*А если входной сигнал меньше середины интервала поиска,*)
    	b:=i;					 (*то следующий поиск будем делать начиная от начала и до середины массива*)
    	END_IF
    (*Таким образом на каждой итерации отбрасываем из поиска заведомо ненужную половину значений
    две соседние координаты X(a) и Х(а+1), меду которыми попадает входной сигнал найдем очень быстро
    для 8 точек графика нужно не более 3 итераций
    при 9..16 точек в графике нужно не более 4 итераций
    при 17..32 точек в графике нужно не более 5 итераций
    при 33..64 точек в графике нужно не более 6 итераций
    при 65..128 точек в графике нужно не более 7 итераций
    инфа точная - 100% ;) *)
    END_WHILE
    (*Теперь самое простое - сделать линейную аппроксимацию по двум точкам ;) *)
    MyGraf_p:=pt^[b].Y-(pt^[b].X-IN)*(pt^[b].Y-pt^[a].Y)/(pt^[b].X-pt^[a].X);
    END_IF
    Пример использования - см. ссылку выше

    ЗЫ.
    для таблицы используется пользовательский тип данных - Point_GR
    Код:
    TYPE Point_GR :
    STRUCT
    	X,Y: REAL;
    END_STRUCT
    END_TYPE
    Максимальное кол. точек в график ограничил сотней (100). Хотя если надо можно и больше, только не знаю, где такой график может понадобиться. Если реально будет меньше точек, то в функции ничего не менять! Все само подстроится под нужный размер.
    Последний раз редактировалось petera; 16.08.2021 в 11:06.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

Похожие темы

  1. ТРМ 251 и максимальная температура.
    от евген 12 в разделе Эксплуатация
    Ответов: 3
    Последнее сообщение: 18.01.2018, 19:19
  2. температура ПЛК
    от lomtik в разделе ПЛК1хх
    Ответов: 14
    Последнее сообщение: 12.01.2016, 12:29
  3. ТРМ 151 и температура
    от SLYDER в разделе Эксплуатация
    Ответов: 4
    Последнее сообщение: 03.05.2011, 15:07
  4. Температура обратки ТРМ-33
    от fedylka11 в разделе Эксплуатация
    Ответов: 5
    Последнее сообщение: 14.02.2011, 14:58
  5. температура воды и температура и влажность воздуха
    от Michaell в разделе Подбор Оборудования
    Ответов: 3
    Последнее сообщение: 14.11.2009, 10:47

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •