Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Практическое занятие 14




Обработка информации файла цифрового осциллографа TDS 1002B

Цель занятия

Знакомство с представлением информации о проведённых экспериментах в файлах цифрового осциллографа TDS 1002B; взаимодействием программ Delphi и таблиц Excel; обработкой строковой информации и формой импульсов частичных разрядов.

Цифровой осциллограф TDS 1002B позволяет сохранять информацию о быстропротекающих процессах в виде файла таблиц Excel с максимальной частотой выборки 2 ГГц. Каждый файл содержит 2500 последовательных значений напряжения (выборок), расстояние между которыми зависит от задаваемого диапазона времени измерения. Например, при заданном масштабе времени 5мкс/клетку на экране осциллографа отобразится процесс длительностью в 10 раз больше (по числу больших клеток), т.е. 50 мкс. Интервал времени между отдельными выборками составит 50мкс/2500 = 20 нс, а при масштабе 2,5 мс/клетку на экране будет 25 мс с выборкой через 10 мкс. Если задан такой масштаб времени, что на экране будет отображаться процесс длительностью менее 1,25 мкс (масштабы 100 н/клетку и меньше) то расстояние между выборками будет 0,5 нс, а число точек менее 2500.

При подаче повышающегося отрицательного напряжения на электроде с малым радиусом кривизны, начиная с некоторого напряжения, возникают самостоятельные разряды наносекундного диапазона в воздухе вблизи электрода. Частота следования этих разрядов увеличивается при повышении напряжения. Такие импульсы впервые наблюдал Тричел и теперь они называются импульсы Тричела. Импульсы Тричела наблюдаются при более низком напряжении, по сравнению с коронными разрядами. Один из импульсов Тричела, зарегистрированный на осциллографе TDS 1002B показан на рис. 14.1.

Рис. 14.1. Импульс Тричела на экране осциллографа TDS 1002B

В памяти осциллографа можно сохранить файл с массивом данных экрана и использовать его в вычислениях или отчетах. Файл данных сохраняется в формате таблиц Excel и содержит строковую информацию в виде столбца и одной ячейкой в строке. Пример начала такого файла данных цифрового осциллографа TDS 1002B показан в табл. 14.1.

Таблица 14.1. Начало файла данных осциллографа TDS 1002B

Record Length,2.500000e+03,, -0.000050000000, -0.02800,

Sample Interval,4.000000e-08,, -0.000049960000, -0.04000

Trigger Point,1.250000000000e+03,, -0.000049920000, -0.04000,

,,, -0,000049880000, -0.04000,

,,, -0.000049840000, -0.04000,

,,, -0.000049800000, -0.03600,

Source,CH1,, -0.000049760000, -0.04400,

Vertical Units,V,, -0.000049720000, -0.03200,

Vertical Scale,1.000000e-01,, -0.000049680000, -0.03200,

Vertical Offset,3.680000e-01,, -0.000049640000, -0.04000,

Horizontal Units,s,, -0.000049600000, -0.03600,

Horizontal Scale,1.000000e-05,, -0.000049560000, -0.04000,

Pt Fmt,Y,, -0.000049520000, -0.03200,

Yzero,0.000000e+00,, -0.000049480000, -0.03600,

Probe Atten,1.000000e+00,, -0.000049440000, -0.03600,

Model Number, TDS 1002 B,, -0.000049400000, -0.03600,

Serial Number,C062351,, -0.000049360000, -0.03600,

Firmware Version,FV: v 22.01,, -0.000049320000, -0.03600,

,,,-00.000049280000, -0.04000,

,,,-00.000049240000, -0.03600,

,,, -0.000049800000, -0.03600,

 

В первых 18 строках содержится информация об установках масштаба по горизонтальной и вертикальной осям осциллографа и типе измерительного прибора. Предпоследнее и последнее числа в строке представляют собой текущее время измерения (t) и напряжение (U). Начиная с 19 строки, файл становится однородным и содержит только t и U.

Задание 1

ЗапуститеДельфи. Создайте заголовок формы «Обработка информации о частичном разряде с осциллографа TDS 1002 B». Сохраните программу в папке практика 14. Проверьте число сохранённых файлов (должно быть не менее 6).

Положите на форму компонент Panel, удалите её заголовок и измените цвет на clSkyBlue.

Положите на панель следующие компоненты: а) две кнопки запуска Button и измените их заголовок на «Чтение файла данных» и «Расчёт»; б) 4 компонента LabeledEdit из дополнительной палитры компонентов и измените их заголовки на следующие: «t 0, нс», «tk, нс», «R, Ом» и «q, пКл». В каждое поля текст запишите значения 0, 500, 5, 100. Измените размеры панели так, чтобы компоненты занимали большую часть площади панели, а саму панель с компонентами переместите в верхний левый угол формы.

Поместите в правый верхний угол формы компонент OpenDialog (из набора Dialogs). Положите на форму ниже панели отладочное поле Memo и вставьте линейки прокрутки. Положите на форму компонент Chart и подготовьте его к выводу 1 графика типа «Быстрая линия». Запустите таблицы Excel.

Задание 2

Двойным щелчком на компоненте button1 «Чтение файла данных» создайте процедуру button1Click.

В разделе описания глобальных переменных после описания формы опишите массивы времени и напряжения как массивы из 2600 переменных с плавающей запятой; число данных в файле (Ni) как целочисленную переменную и две переменные типа real. Пример раздела глобальных переменных:

var

Form1: TForm 1;

t,u: array [1..2600] of double;

ni: word;

stepT,h:double;

В разделе описания локальных переменных функции чтения данных опишите такие переменные:

var

str,s: string [80];

i,j,k: word;

VExcel: Variant;

a 1: real;

В тело процедуры вставьте следующий набор команд для получения доступа их программы Delphi к данным таблиц Excel:

//Для чтения данных следует запустить Excel

Try

//Проверка, нет ли запущенного Excel

VExcel:= GetActiveOleObject ('Excel.Application ');

Except

//если нет, то запускаем

on EOLESysError do

VExcel:= CreateOleObject ('Excel.Application ');

end; { try }

VExcel.Visible:= false;

//Открыть Excel на полный экран

VExcel.WindowState:= -4137;

//не показывать предупреждающие сообщения

VExcel.DisplayAlerts:= False;

//открыть рабочую книгу

{ strPath:= ExtractFilePath (Application.ExeName);

strPath:= strPath + '\ test.xls ';}

if OpenDialog 1. Execute then

str:= OpenDialog 1. FileName;

VExcel.WorkBooks.Open (str);

//Становимся на первый лист

// VExcel.WorkSheets [1]. Activate;

memo 1. Clear;

Вставьте проверочную строку:

memo 1. Lines.Add ('Пока ошибок нет');

Запустите программу на исполнение и убедитесь, что последняя строка появляется в поле вывода memo 1. Закомментируйте проверочную строку при отсутствии ошибок.

Задание 3. Работа со строковыми переменными

В тело процедуры запишите команду присвоения переменной str значения строки, содержащейся в первой ячейки таблицы:

str:= VExcel.WorkSheets [1]. Cells [1,1];

Строка в первой ячейке файла данных выглядит так:

Record Length, 2.500000e+03,, -0.000050000000, -0.02800,

Из всей строки нам понадобятся только значения числа записей в файле, выделенные жирным шрифтом. Чтобы выделить эту часть текста из строки и преобразовать строковую переменную в число, нужно выполнить следующие действия:

1. определить номер буквы 2 в исходной строке и присвоить эту букву новой строковой переменной, например s: s:= str [номер буквы 2];

2. Вместо точки, которая используется в файле данных в строку s добавить запятую: s:= s+ ',';

3. Определить номера букв начиная с буквы 5 и заканчивая буквой 3 и записать цикл побуквенного чтения части строки, выделенной жирным шрифтом: for j:= номер буквы 5 to номер буквы 3 do s:= s + str [ j ];

4. Преобразовать строку в число с плавающей запятой: a 1:= strTofloat (s);

5. Преобразовать число с плавающей запятой в целое число: ni:= Trunc (a1);

Вывести значения переменных s, a1, ni в поле мемо. Запустить программу и убедиться, что выделение из строки было проделано правильно. После отладки строки вывода закомментировать.

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

Sample Interval, 4.000000e-08,, -0.000049960000, -0.04000

Выполняя пункты аналогичные 1 - 4 выделить шаг по времени (интервал между выборками) и приписать после выделения строки и преобразования получившееся число с плавающей запятой переменной StepT. Вывести выделенную строку и значение шага по времени в отладочное поле вывода и убедиться в правильности выделения из файла данных.

Из девятой строки выделить масштаб по вертикальной шкале осциллографа и приписать его переменной h. Вывести выделенную строку и значение масштаба по напряжению в отладочное поле вывода и убедиться в правильности выделения из файла данных.

Создать заготовку цикла для чтения из файла значений напряжения:

for i:=1 to ni do

begin

end;{ for }

Алгоритм чтения состоит в следующих действиях:

1. перейти на 1 строку файла данных:

str:= VExcel.WorkSheets [1]. Cells [i,1];

2. обнулить строковую переменную: s:=' ';

3. определить номер символа в строке, с которого начинается запись напряжения. Значение напряжения в файле записывается в последней части строки:

Record Length,2.500000e+03,, -0.000050000000, -0.02800,

Поскольку в начале файла строки имеют различную длину, то для унификации определения позиции начала записи напряжения удобно использовать функцию длины строки: length (str):

k:= length (str)-10;

4. Создать цикл чтения части исходной строки, содержащей значение напряжения:

for j:= k to length (str)-1 do if str [ j ]='.' then s:= s +',' else s:= s + str [ j ];

5. Преобразовать полученную строку в элемент массива напряжений:

u [ i ]:= strTofloat (s);

и вычислить время от начала измерения, соответствующее этому напряжению:

t [ i ]:= i * stepT;

6. Вывести полученную точку на график:

Chart 1.Series[0]. AddXY (t [ i ]*1e6, u [ i ]);

Запустить программу на исполнение и убедиться в отсутствии ошибок и появлении графика. От момента запуска программы до появления графика может пройти несколько секунд.

Задание 4.

Двойным щелчком на компоненте button 2 «Расчёт» создайте процедуру button 2 Click.

В разделе описания переменных этой процедуры опишите следующие переменные:

var i,i 1 ,i 2: word;

t 1 ,t 2 ,R,sum,q: double;

В теле процедуры введите команды очистки графика, обнуления переменной sum и чтения данных из трёх компонент LabeledEdit:

t 1:=1e-6* StrToFloat (LabeledEdit 1. Text);

t 2:=1e-6* StrToFloat (LabeledEdit 2. Text);

R:= StrToFloat (LabeledEdit 3. Text);

Для того, чтобы импульс Тричела занимал почти всё поле элемента Chart нужно изменить значения t 1 и t 2. Задайте значения начала построения графика (t 1), конца (t 2) и цикл определения начальных и конечных номеров элементов массивов времени и напряжения.

Определение начального номера можно сделать следующим образом:

for i:=1 to ni do

if t [ i ]>= t 1 then

begin

i 1:= i;

Memo 1. Lines.Add (' i 1= '+ inttostr (i 1));

Break;

end;

Аналогичным образом можно определить конечный номер:

for i:=1 to ni do

if t [ i ]>= t 2 then

begin

i 2:= i;

Memo 1. Lines.Add (' i 1= '+ inttostr (i 2));

Break;

end;

Создайте цикл построения графика в уточнённых границах:

for i:= i 1+1 to i 2 do

begin

Chart 1. Series [0]. AddXY (t [ i ]*1e6, u [ i ]);

end;

Добавьте в тело этого цикла определение площади под графиком импульса Тричела по методу Гаусса.

Для вычисления площади по этому методу вся площадь разбивается вертикальными линиями на элементарные фигуры. Если заменить линию, соединяющую значения ближайших точек напряжения, то фигура превращается в прямоугольную трапецию с основаниями l 1 = u [ i ]- u [ i 1] и l 2 = u [ i-1 ]- u [ i 1], где значение напряжения в начале графика u [ i 1] принимается за нулевую линию. Площадь элементарной трапеции равна полусумме оснований умноженной на высоту. Высота трапеции равна шагу по времени выборки (StepT). Тогда вычисление площади выглядит в виде следующей строки в цикле:

sum:= sum +0.5*(u [ i ]+ u [ i -1]-2* u [ i 1])* StepT;

После выхода из цикла переменная sum содержит значение площади под импульсом Тричела. Если площадь под графиком разделить на сопротивление, с которого снимается напряжение u [ i ], то можно получить значение заряда, перенесённого в импульсе:

q:= sum / R;.

Выведите полученное значение в компонент LabeledEdit 4:

LabeledEdit 4. Text:=FloatToStrF (q,ffFixed,7,4);

Запустите программу и проверьте значения вычисляемого заряда при различных значениях начала и конца интергрирования.

 

Оглавление

Название лабораторной работы Стр.
  Создание интерфейса программы в среде «Delphi»  
  Процедуры и способы создания заготовок процедур. Меню  
  Вывод информации в поле мемо  
  Ввод дискретной информации из компонента ComboBox. ListBox  
  Работа с таблицами в среде «Delphi»  
  Многостраничные программы  
  Работа с картинками в среде «Delphi». Расчёт простых заземлителей.  
  Канва и работа с ней. Разложение цвета на составляющие в координатах RGB.  
  Компонент Chart: его свойства. Представление экспериментальных данных на графиках.  
  Построение и сохранение графика функции. Аппроксимация результатов.  
  Численное интегрирование.  
  Решение уравнения методом половинного деления отрезка.  
  Корреляционный анализ данных.  
  Обработка информации файла цифрового осциллографа TDS 1002B.  

 

 

Александр Евгеньевич Усачев

Методы расчёта электростатических полей

Учебное пособие

Кафедра электрических станций КГЭУ

 

Редактор

Компьютерная вёрстка

Изд.лиц. ИД №03480 от 08.12.00 Темплан издания КГЭУ 2013 г.

Подписано к печати Формат 60х84/16

Гарнитура «Times» Вид печати РОМ Бумага “Business’

Физ.печ.л. Усл.печ.л. Уч.-изд.л.

Тираж Заказ

Издательский отдел КГЭУ

430066, Казань, Красносельская, 51

Типография КГЭУ 430066, Казань, Красносельская, 51

 

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных