Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: lystas от 19 Октября 2024, 16:32:06

Название: Вычисления по градуировочным таблицам
Отправлено: lystas от 19 Октября 2024, 16:32:06
Добрый день!
Прошу помощи в поиске наиболее эффективного метода вычисления параметра по калибровочным таблицам с двумя аргументами.
Если точнее, то нужно вычислять энтальпию пара/воды по давлению и температуре. Пример таблицы приложил.

У существующей функции GetCalibrationValue есть поддержка только одной пары "Ключ-значение". Ключ при этом целочисленный, что не совсем удобно.
Название: Re: Вычисления по градуировочным таблицам
Отправлено: pan2000 от 21 Октября 2024, 15:40:17
   Здравствуйте.

  Двумерная калибровка включает следующие действия:
- чтение таблицы калибровки из файла в динамический массив при запуске проекта. Значений параметров температуры и давления хранятся столбце и строке с нулевым индексом;
- поиск для давления и температуры пары индексов интервала значений параметров, включающих давление и температуру;
- вычисление интерполированного значения из таблицы: совпадение индексов в обоих парах - выборка из таблицы, при одной совпадающей паре индексов - линейная интерполяция, индексы в обоих парах различны - двумерная интерполяция. Значения температуры и/или давления вне таблицы считаютcя соответствующими граничными значениями. 

Пример таблицы калибровки, комментарии строк показаны исключительно для описания структуры, в файле комментарии не допускаются:                                                           
фрагмент таблицы из  https://studfile.net/html/2706/401/html_WtevgQQelM.i4K9/img-S7y52D.png    // заголовок, игнорируется при загрузке файла
000   1.0   1.1   1.5   2.0   5.0  15.0          // 000 - исключительно для сохранения числа переменных в строке, переменные это значения давления для соответствующего столбца
 60 219.1 213.9 218.6 218.5 216.6 208.0     // первое число - значение температуры, далее значения энтальпии для соответствующих значений температуры и давления
 70 223.5 223.3 223.0 222.9 221.1 213.3     // разделитель чисел - пробел, пробелы перед числом игнорируются, для всех строк обязательно одинаковое количество чисел

Пример во вложении. Вывод отладочной информации позволяет изучить алгоритм проекта.
Название: Re: Вычисления по градуировочным таблицам
Отправлено: lystas от 21 Октября 2024, 20:29:38
Благодарю Вас!
Название: Re: Вычисления по градуировочным таблицам
Отправлено: pan2000 от 22 Октября 2024, 05:33:29
Здраствуйте.

Во вложении проект исправленный для чтения из CSV-файла, имена параметров обезличены от физического смысла и называются "Параметр для верхней строки" и "Параметр для первого столбца".