[mV-Pa calibration]

FitMethod = Polynom

TransformX = Line

TransformY = Line

Power = 1

Center = 0

Scale = 1

Data mV Pa Weight

0.065 0 1

21.210 1383 1

40.203 2624 1

End Data

Здесь TransformX, TransformY задают тождественное преобразование (40), Power, Center, Scale - параметры (41), а секция Data задает массив точек калибровки, взятых с весами Weight.

Пример 2: Калибровка термопарного канала.

Пусть - код АЦП термопары [mV], - температура термопары [°C], - температура холодного спая [°C]. Зависимость напряжения «идеальной» термопары от ее температуры и температуры холодного спая записывается как

(

42

)

где - стандартная термопарная зависимость, построенная по таблицам ГОСТ. Для интерполяции этой таблицы используется сглаживающий сплайн (10).

Зависимость напряжения термопары от кода АЦП линейна и определяется усилением измерительного канала, то есть описывается полиномом . Поэтому функции линеаризации могут быть записаны в виде:

, , ,

(

43

)

где - термопарная таблица, - обратная к ней функция. В новых линеаризованных переменных зависимость описывается полиномом с параметрами , , . Когда оптимальные коэффициенты полинома найдены, зависимость записывается как

(

44

)

Описание этой калибровки в калибровочном файле имеет примерно такой вид:

[U(mV)-T calibration]

FitMethod = Polynom

TransformX = Line

TransformY = HRCP

Power = 1

Center = 0

Scale = 1

Data U(mV) T Weight Tc

-9.724 -209 1 0

0 0 1 0

67.222 809 1 0

End Data

Notice Text

Стандартная калибровка хромель-копель

ГОСТ Р 50431-92 (МЭК 584-1-77)

End Notice Text

Отметим, что хранение в файлах исходных данных калибровки вместо калибровочных коэффициентов позволяет впоследствии легко изменять параметры калибровки (степень полинома, тип шкалы и т. д.) без потери точности. Кроме того, файлы калибровки тем самым документируют калибровочные измерения (часто дорогостоящие) и позволяют точно зафиксировать их условия, что важно для проверки достоверности измерений при обработке данных эксперимента.

НЕ нашли? Не то? Что вы ищете?

3. Интерпретатор языка DaqScript

Одним из инструментов offline обработки данных в пакете CRW-DAQ являются программы на C-подобном языке DAQ Script (раздел 1.4.2.5), работающие подобно динамическим расширениям DPE (Рис.61), но вместо компиляции и загрузки DLL создается экземпляр интерпретатора, непосредственно исполняющий код. Несмотря на замедление обработки при интерпретации, его использование оправдано повышением отказоустойчивости программ, так как интерпретатор хорошо защищен от ошибок в прикладных программах.

Интерпретатор DaqScript разрабатывался как основа для командного языка главной консоли пакета CRW-DAQ (Рис.60.1). Позже он нашел другие применения.

Интерпретатор имеет один тип данных – вещественный (double), целые числа считаются его подмножеством. Строки, хотя и не являются типом данных, могут служить аргументом команд. Кроме арифметических выражений, включающих операторы +, -, *, /, %, = и скобки (), поддерживаются переменные, встроенные константы, функции и команды. Переменные объявляются оператором «var», а также создаются и уничтожаются оператором присвоения «=». Так, выражения «x=1», «var x» создают переменную x, а пустое присвоение «x=» уничтожает ее. Функции отличаются скобками после имени, например, «sin(x)», а команды распознаются по первому символу «@», например, «@echo Hello, World». Остаток строки после имени команды считается ее аргументом и позволяет интерпретировать строковые данные. В интерпретаторе имеются также условный оператор «if(…) then …», символьные метки, оператор перехода к метке «goto …», вызова метки «gosub …» и возврата «return», что позволяет создавать несложные программы, именуемые макросами. Отметим, что метки заканчиваются двоеточием «:», а комментарии отделяются точкой с запятой «;».

Поскольку DAQ Script был задуман как командный язык для консольного интерпретатора, он носит директивный характер, и в нем нет многих привычных конструкций процедурного программирования. Так, в нем есть встроенные функции и команды, определяемые при компиляции пакета, но нет декларации новых функций и команд при интерпретации. Нет также операторов цикла, которые, однако, можно заменить комбинацией операторов «if», «gosub», «goto». Так, для вывода в консоль ряда чисел можно написать макрос:

i=0

Loop:

if(ge(i,10)) then goto Quit

gosub PrintNumber

i=i+1

goto Loop

PrintNumber:

@echo “i” value is %i%

return

Quit: exit

Приведем примеры применения DaqScript (Рис.60). Он используется как командный язык в главной консоли (1) и реализует много команд, недоступных в графическом режиме, причем все эти команды может инициировать как оператор в консоли, так и прикладная программа АСКУ, написанная на языке DAQ Pascal. Он используется в интерактивном калькуляторе формульных выражений (2), в диалоговом графопострои, позволяющем строить графики заданных формулами функций (4). Он используется в макросах окон кривых (раздел 1.4.2) для первичной обработки экспериментальных данных, сглаживания и фильтрации. Наконец, DaqScript работает в прикладных программах АСКУ, причем каждый интерпретатор имеет свой программный поток, который периодически (с периодом 1÷5000 мс) вызывает макрос DaqScript, выполняющий сбор или обработку данных.

Рис.60. Применения DAQ Script: консоль, калькулятор, графопостроитель.

Хотя интерпретатор не отличается высокой скоростью исполнения (~ 105 операторов в секунду), но он незаменим, когда вычисляемое выражение неизвестно в момент создания системы, а вводится оператором интерактивно. Кроме того, он хорошо защищен от ошибок в прикладном коде, что повышает надежность систем управления. Наконец, в интерпретатор легко добавлять новые встроенные функции без снижения уровня защищенности пакета, что позволяет резко сократить затраты на его разработку. Поэтому многие функции пакета, не требующие высокой скорости исполнения, реализованы как команды DaqScript.

Отметим, что идея создания DaqScript родилась при работе с программой Expression Evaluator (Mark Morley, 1992) на языке C. Реализация интерпретатора на языке Pascal и его дальнейшее развитие полностью принадлежит автору.

4. Реализация динамических расширений DPE

Наиболее мощным средством обработки данных в пакете CRW-DAQ являются динамические расширения DPE (Dynamic Plug-in Extension). Имеется библиотека готовых DPE расширений, но главное, что эти расширения могут создаваться и редактироваться в пакете в любое время, не требуя компиляции всего пакета и позволяя расширять его функции по мере потребности.

Обычно фазы разработки и исполнения программ явно разделены (Рис.61,а). Исходный код программы PAS на языке PASCAL редактируется, компилируется в исполняемый EXE файл и запускается на выполнение. Запускаемая программа считывает входные данные и по команде оператора вызывает процедуру обработки, возвращающую ее результат. У этой простой схемы есть недостатки. При изменении процедуры обработки нужно завершать программу, компилировать и запускать снова, многократно повторяя запуск программы, ввод данных и команды оператора для вызова процедуры обработки. При этом «под рукой» необходимо иметь компилятор, что не всегда доступно.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37