Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Вычисления по градуировочным таблицам  (Прочитано 451 раз)

lystas

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Добрый день!
Прошу помощи в поиске наиболее эффективного метода вычисления параметра по калибровочным таблицам с двумя аргументами.
Если точнее, то нужно вычислять энтальпию пара/воды по давлению и температуре. Пример таблицы приложил.

У существующей функции GetCalibrationValue есть поддержка только одной пары "Ключ-значение". Ключ при этом целочисленный, что не совсем удобно.
« Изменён: 20 Октября 2024, 09:21:20 от lystas »

pan2000

  • Постоялец
  • ***
  • Сообщений: 210
    • Просмотр профиля
Re: Вычисления по градуировочным таблицам
« Ответ #1 : 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     // разделитель чисел - пробел, пробелы перед числом игнорируются, для всех строк обязательно одинаковое количество чисел

Пример во вложении. Вывод отладочной информации позволяет изучить алгоритм проекта.

lystas

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Вычисления по градуировочным таблицам
« Ответ #2 : 21 Октября 2024, 20:29:38 »
Благодарю Вас!

pan2000

  • Постоялец
  • ***
  • Сообщений: 210
    • Просмотр профиля
Re: Вычисления по градуировочным таблицам
« Ответ #3 : 22 Октября 2024, 05:33:29 »
Здраствуйте.

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