РАЗРАБОТКА АВТОМАТИЗИРОВАННОЙ СИСТЕМЫ ИЗМЕРЕНИЯ БИЕНИЙ ВАЛА В РЕАЛЬНОМ ВРЕМЕНИ - Студенческий научный форум

XVI Международная студенческая научная конференция Студенческий научный форум - 2024

РАЗРАБОТКА АВТОМАТИЗИРОВАННОЙ СИСТЕМЫ ИЗМЕРЕНИЯ БИЕНИЙ ВАЛА В РЕАЛЬНОМ ВРЕМЕНИ

Чупринина А.С. 1, Еремин А.А. 1, Сахарнов Е.А. 1, Савин К.А. 1
1СамГТУ
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF
 

МИНОБРНАУКИ РОССИИ

федеральное государственное бюджетное образовательное учреждение

высшего образования

«Самарский государственный технический университет»

(ФГБОУ ВО «СамГТУ»)

1 ПОСТАНОВКА ЗАДАЧИ

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

Измерения необходимо производить в течение одного оборота вала на участке длиной с шагом . Предельная абсолютная погрешность измерения биений – , позиционирования вдоль вала – . Средняя квадратичная ошибка датчика измерения положения каретки – . Средняя ошибка датчика биения – . Шум процесса измерения биения – . Тренд процесса измерения биения – .

Рисунок 1 – Вал рабочего колеса

2 ОБЩЕЕ ОПИСАНИЕ СИСТЕМЫ

Датчик Д1, используемый для измерения «биений», располагается на подвижной каретке, способной двигаться по направляющим рейкам вдоль вала. Для перемещения каретки используются ролики, вращаемые электродвигателем постоянного тока ЭД. Контроль положения каретки выполняется при помощи датчика Д2. Выходные сигналы датчиков Д1 и Д2 имеют унифицированные пределы 0...10В, следовательно промежуточные преобразователи для подключения к АЦП не требуются. Для управления электродвигателем ЭД необходим электрический сигнал определенного уровня и определенной мощности, который генерируется специализированным управляющим контроллером УК, совмещенным с усилителем мощности. Функциональная схема представлена на рисунке 2.

Рисунок 2 – Функциональная схема АС

3 ПОИСК ИНФОРМАЦИИ

3.1 Создание проекта в Windows Forms

Начать работу стоит с создания проекта (команды Create project). Запускаем программу Visual Studio и выбираем «FILE», потом «New» и «Project», чтобы начать новый проект в Windows Forms (рис. 3).

Рисунок 3 – Создание проекта

3.2 Добавление ссылок

Далее нам понадобятся ссылки. Самый простой способ их создать — нажать правой кнопкой мыши на опцию «References» вотделе Solution Explorer ивыбрать «Manage NuGet Packages» (рис. 4).

Рисунок 4 – Создание ссылок

В разделе «Manage NuGet packages» ищем «OxyPlot» в правом верхнем углу панели. Далее нажимаем на вариант «OxyPlot.WindowsForms» и устанавливаем его (рис. 5).

Рисунок 5 – Установка «OxyPlot»

Также это можно сделать с помощью специальной консоли Package Manager по команде, представленной ниже:

PM> Install-Package 0xyPlot.Windows Forms

3.3 Создание модели

Всё это производится через команды в программе (лист. 1).

Листинг 1 – Команды для создания модели.

namespaceWindowsFormsApplication1

{

usingSystem;

usingSystem.Windows.Forms;

usingOxyPlot;

usingOxyPlot.Series;

publicpartialclassForm1 : Form

{

publicForm1()

{

this.InitializeComponent();

var myModel = new PlotModel { Title = "Example 1" };

myModel.Series.Add(new FunctionSeries(Math.Cos, 0, 10, 0.1, "cos(x)"));

this.plot1.Model = myModel;

}

}

}

Теперь у нас есть первый пример работы, и он должен выглядеть аналогичным образом, как представлено на рисунке 6.

Рисунок 6 – Пример работы

Изначальный код может быть найден в папке HelloWorld\WindowsFormsApplication1 в отделе примеров документации.

3.4 Visual Studio

Программа от Microsoft Visual Studio – это продукт, включающий в себя интегрированную среду разработки (IDE) программного обеспечения и ряд других инструментов (рис. 7). Она позволяет разрабатывать консольные приложения, приложения с графическим интерфейсом, в том числе с поддержкой технологии Windows Forms. Именно эта программа и помогает нам работать с данным заданием. Она написана на языке программирования С# и работает в операционной системе Windows.

Рисунок 7 – Visual Studio

Visual Studio включает в себя редактор исходного кода с поддержкой технологии IntelliSense. Встроенный отладчик может работать как на исходном уровне кода, так и на машинном. Остальные инструменты представляют редактор форм для упрощения создания графического интерфейса приложения, веб-редактор, дизайнер классов и дизайнер схемы базы данных. Программа позволяет создавать и подключать сторонние дополнения для расширения функциональности практически на каждом уровне, включая добавление поддержки систем контроля версий исходного кода, добавление новых наборов инструментов и прочих аспектов процесса разработки программного обеспечения.

4 ОПИСАНИЕ КОМПОНЕНТОВ УСО

4.1 Тросиковые датчики

Тросиковые датчики Д2 для измерения позиционирования каретки вдоль вала: модели, параметры и принцип действия.

При точном позиционировании каретки вдоль вала, использование соответствующих датчиков становится необходимостью. В данной статье мы изучим четыре существующие модели тросиковых датчиков Д2, которые используются для измерения позиционирования каретки. Рассмотрим их модели, параметры и принцип действия.

4.1.1 Тросиковый датчик ДПТ60

Параметры тросикового датчика ДПТ60 приведены в таблице 1.

Таблица 1 – Параметры тросикового датчика ДПТ60

Параметр

Диапазон измерения

Длина тросика

1 м

Диапазон измерений

0 – 100 мм

Точность измерения

±0.01 мм

Рабочая температура

-10°C … +60°C

Принцип действия: ДПТ60 (рис. 8) использует тросик, который прикреплен к каретке и намотан на шпулю. Перемещаясь вдоль вала, каретка изменяет натяжение тросика, что позволяет датчику определить текущую позицию каретки.

Рисунок 8 – Тросиковый датчик ДПТ60

4.1.2 Тросиковый датчик МН120

Параметры тросикового датчика МН120 приведены в таблице 2.

Таблица 2 – Параметры тросикового датчика МН120

Параметр

Диапазон измерения

Длина тросика

2 м

Диапазон измерений

0 – 200 мм

Точность измерения

±0.02 мм

Рабочая температура

-20°C … +70°C

Принцип действия: Датчик МН120 (рис. 9) имеет аналогичный принцип работы, что и ДПТ60. Однако, его большая длина тросика позволяет измерять большие перемещения каретки вдоль вала с высокой точностью.

Рисунок 9 – Тросиковый датчик МН120

4.1.3 Тросиковый датчик AWE220

Параметры тросикового датчика AWE220 приведены в таблице 3.

Таблица 3 – Параметры тросикового датчика AWE220

Параметр

Диапазон измерения

Длина тросика

0.5 м

Диапазон измерений

0 – 50 мм

Точность измерения

±0.005 мм

Рабочая температура

-5°C … +55°C

Принцип действия: Датчик AWE220 (рис. 10) отличается от предыдущих моделей улучшенной точностью измерений и компактными размерами. Он оснащен коротким тросиком, что позволяет использовать его в ограниченных пространствах.

Рисунок 10 – Тросиковый датчик AWE220

4.1.4 Тросиковый датчик RX80

Параметры тросикового датчика RX80 приведены в таблице 4.

Таблица 4 – Параметры тросикового датчика RX80

Параметр

Диапазон измерения

Длина тросика

3 м

Диапазон измерений

0 – 300 мм

Точность измерения

±0.003 мм

Рабочая температура

-15°C … +65°C

Принцип действия: Датчик RX80 (рис. 11) обладает длинным тросиком, что позволяет осуществлять измерения на больших расстояниях. Он может быть использован в приложениях, где требуется перемещение каретки на значительное расстояние.

Рисунок 11 – Тросиковый датчик RX80

Тросиковые датчики Д2 являются надежными средствами измерения позиционирования каретки вдоль вала. Модели ДПТ60, МН120, AWE220 и RX80 предлагают разные длины тросиков, диапазоны измерений и точности, что позволяет подобрать наиболее подходящую модель для конкретного применения. При использовании этих современных тросиковых датчиков Д2, вы сможете достичь высокой точности и надежности в позиционировании каретки, что особенно ценно для различных промышленных приложений. Получив дополнительную информацию о каждой модели, вы сможете выбрать тот датчик, который наилучшим образом соответствует вашим требованиям и улучшит эффективность вашего производства.

4.2 Вихретоковые датчики

Вихретоковые датчики работают на принципе воздействия электромагнитных вихрей на проводник, который движется вдоль вала. В результате этого вихри создаются в проводнике, и их параметры изменяются в зависимости от позиции проводника. С помощью специального датчика можно измерять эти изменения и определять позицию проводника, а следовательно, и «биений» вала.

Примеры четырех существующих моделей вихретоковых датчиков линейных перемещений:

4.2.1 Вихретоковый датчик EddySense LVD

Параметры вихретокового датчика EddySense LVD приведены в таблице 5.

Таблица 5 – Параметры вихретокового датчика EddySense LVD

Параметр

Диапазон измерения

Диапазон измерений

до 2 мм

Точность измерения

±0.1 мкм

Разрешение

1 нм

Рабочая температура

-40°C … +85°C

4.2.2 Вихретоковый датчик Micro-Epsilon eddyNCDT 3100

Параметры вихретокового датчика Micro-Epsilon eddyNCDT 3100 приведены в таблице 6.

Таблица 6 – Параметры вихретокового датчика Micro-Epsilon eddyNCDT 3100

Параметр

Диапазон измерения

Диапазон измерений

до 40 мм

Точность измерения

±0.03 мкм

Скорость измерения

100 кГц

Рабочая температура

-40°C … +70°C

4.2.3 Вихретоковый датчик Lion Precision CPL190

Параметры вихретокового датчика Lion Precision CPL190 приведены в таблице 7.

Таблица 7 – Параметры вихретокового датчика Lion Precision CPL190

Параметр

Диапазон измерения

Диапазон измерений

до 0.5 мм

Точность измерения

±0.15 мкм

Разрешение

0.03 мкм

Рабочая температура

-40°C … +85°C

4.2.4 Вихретоковый датчик Micro-Epsilon eddyNCDT 3001

Параметры вихретокового датчика Micro-Epsilon eddyNCDT 3001 приведены в таблице 8.

Таблица 8 – Параметры вихретокового датчика Micro-Epsilon eddyNCDT 3001

Параметр

Диапазон измерения

Диапазон измерений

до 10 мм

Точность измерения

±0.07 мкм

Скорость измерения

100 кГц

Рабочая температура

-30°C … +180°C

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

4.3 Мотор-редуктор

Современный мир окружает людей огромным количеством различных электронно-механических изделий, многие из которых работают при помощи мотор-редукторов. Некоторые люди думают, что мотор-редуктор используется только в больших механизмах, а сам агрегат является большим и тяжелым механическим узлом. На самом деле механические редукторы используются даже в бытовых приборах и компьютерной технике.

4.3.1 Планетарный мотор-редуктор постоянного тока МРП-71 1/16 12В

Параметры планетарного мотора-редуктора постоянного тока МРП-71 1/16 12В (рис. 12) приведены в таблице 9.

Таблица 9 – Параметры планетарного мотора-редуктора постоянного тока МРП-71 1/16 12В

Параметр

Диапазон измерения

Мощность

70 Вт

Скорость

112 Об/мин

Крутящий момент

15 кгс*см

Напряжение питания

12 В

Максимальный ток

5.8 А

Размеры

71x71x231 мм

Рисунок 12 – Планетарный мотор-редуктор постоянного тока МРП-71

4.3.2 Червячный мотор-редуктор постоянного тока WG5946 1/15 12В

Параметры червячного мотора-редуктора постоянного тока WG5946 1/15 12В (рис. 13) приведены в таблице 10.

Таблица 10 – Параметры червячного мотора-редуктора постоянного тока WG5946 1/15 12В

Параметр

Диапазон измерения

Мощность

67 Вт

Скорость

160 Об/мин

Крутящий момент

17.1 кгс*см

Напряжение питания

12 В

Максимальный ток

5.5 А

Размеры

98x124x185 мм

Рисунок 13 – Червячный мотор-редуктор постоянного тока WG5946

Принцип работы мотор-редуктора с коллекторным двигателем постоянного тока заключается в следующем:

Якорь электродвигателя передаёт вращательный момент на ведущий вал.

Через редуктор различного типа (цилиндрический, планетарный, червячный) приводится в действие ведомый вал.

Последний совершает определённый вид механической работы (например, заставляет крутиться колёса детской игрушки, вращает патрон шуруповерта или коленчатый вал автомобиля).

4.4 Автономный модуль

Автономные модули, подключаемые к ЭВМ по интерфейсу USB.

Модули формируют уровни различных интерфейсов и предназначены для организации связи между устройствами.

Интерфейсные модули конфигурируют интерфейсы последовательной связи в устройствах.

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

4.4.1 Автономный модуль ICP DAS BNET-5310

Параметры автономного модуля ICP DAS BNET-5310 (рис. 14) приведены в таблице 11.

Таблица 11 – Параметры автономного модуля ICP DAS BNET-5310

Параметр

Диапазон измерения

Тип интерфейса

USB 2.0 (12Mbps) (USB Type-B)

Количество дискретных каналов вывода

16

Тип дискретного вывода

Реле электромеханического типа А (замыкающий контакт)

Время включения реле максимальное

15 мс

Время выключения реле максимальное

10 мс

Нагрузка выхода постоянный ток при напряжении 5А

30 В

Нагрузка выхода переменный ток при напряжении 5А

250 В

Температура эксплуатации

-15°C … +65°C

Рисунок 14 – Автономный модуль BNET-5310

4.4.2 Автономный модуль USB-2051-32

Параметры автономного модуля USB-2051-32 (рис. 15) приведены в таблице 12.

Таблица 12 – Параметры автономного модуля USB-2051-32

Параметр

Диапазон измерения

Тип интерфейса

USB 2.0 (12Mbps) (USB Type-B)

Количество дискретных каналов вывода

32

Тип дискретного вывода

Реле электромеханического типа А (замыкающий контакт)

Время включения реле максимальное

10 мс

Время выключения реле максимальное

5 мс

Нагрузка выхода постоянный ток при напряжении 5А

30 В

Нагрузка выхода переменный ток при напряжении 5А

250 В

Температура эксплуатации

-25°C … +75°C

Рисунок 15 – Автономный модуль USB-2051-32

Производительность и эффективность ЭВМ определяются не только возможностями ее процессора и характеристиками ОП, но и составом ПФУ, их техническими данными и способами организации их совместной работы с ЭВМ.

5 АЛГОРИТМ СБОРА ДАННЫХ И УПРАВЛЕНИЯ

Алгоритм работы автоматизированной системы имеет циклический характер и может быть представлен схемой, изображенной на рисунке 16.

Рисунок 16 – Общий алгоритм

Для корректной работы программы необходимо произвести инициализацию (рис.17).

Рисунок 17 – Инициализация работы программы

Особенности реализации отдельных его частей пояснены ниже.

1. При сборе данных с датчиков возникает задача расчета значений измеряемых величин. Функции преобразования датчиков линейны Y=A⋅X, а функции преобразования АЦП имеют вид:

Где – разрядность АЦП; – входной диапазон АЦП; […] – операция выделения целой части.

Следовательно, полная функция преобразования измерительного канала будет иметь вид:

Приближенное значение можно вычислять по формуле:

Для датчика, измеряющего «биения» вала, чувствительность , а для датчика, измеряющего положение каретки, . АЦП, используемые в обоих измерительных каналах, идентичны, и имеют и В. Следовательно, формулы для расчетов значений измеряемых величин для канала измерения «биений» вала:

Для канала измерения положения каретки:

2. Измерение положения каретки выполняется многократно (n=30) с максимально возможной частотой, используется алгоритм П-регулятора. Этот алгоритм работает в дискретном времени, поскольку электродвигатель способен воспринимать управляющие воздействия, поступающие на его вход с периодом не меньше ∆t2=0.2 сек. Завершение перемещения каретки (блок 2.10) выполняется при одновременном достижении двух условий:

1. Абсолютное значение ошибки позиционирования не превышает ;

2) Абсолютное значение скорости перемещения не превышает .

Для достижения необходимой «точности» управления значение коэффициента пропорционального усиления П-регулятора должно выбираться из условия .

Алгоритм для расчета измерения положения каретки представлен на рисунке 18.

Рисунок 18 – Измерение положения каретки

3. Измерение «биений» вала (блок 3 алгоритма) в каждом сечении выполняется раз с периодом .

Алгоритм для расчета значений «биений» вала представлен на рисунке 19.

Рисунок 19 – Измерение «биений» вала

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

Алгоритм для обработки результатов измерения «биений» вала представлен на рисунке 20.

Рисунок 20 – Обработка результатов измерения «биений» вала

4. Перемещение каретки осуществляется на роликах радиусом , следовательно максимальная скорость перемещения составит , а обратная функция преобразования канала управления кареткой .

После того, как каретка изменила положение, необходимо сделать перерасчет нового положения каретки. Алгоритм для расчета нового положения каретки представлен на рисунке 21.

Рисунок 21 – Расчет нового положения каретки

6 ОПИСАНИЕ РАБОТЫ ПРОГРАММЫ

Для написания программы был выбран язык программирования C#.

Для реализации выбрана среда разработки Microsoft Visual Studio.

Импортируем и подключим все необходимые библиотеки, пакеты и модули, которые необходимы для написания программы (лист. 2).

Листинг 2 – Импортирование и подключение

using System;

using System.Linq;

using System.Threading;

Создадим константы, описывающие систему (лист. 3).

Здесь мы реализуем функцию double, которая отвечает за инициализирование констант, необходимых для расчетов.

Листинг 3 – Константы

const double length = 5000; // Длина вала (мм)

const double maxBeat = 3; // Максимальное биение (мм)

const double beatAverage = 2.5; // Тренд процесса измерения биения

const double beatError = 0.6; // Шум процесса измерения биения

const double average_square_error_1 = 2.12; // Средняя квадратичная ошибка измерения положения каретки (мм)

const double average_square_error_2 = 0.15; // Средняя квадратичная ошибка измерения биения вала (мм)

Создадим переменные, используемые в модели (лист. 4).

Здесь мы реализуем две функции.

Первая функция – double, которая отвечает за инициализирование констант, необходимых для расчетов.

Вторая функция – bool, которая предназначен для хранения логического значения true.

Листинг 4 – Переменные

static double Lstep = 50; // Шаг измерения биения вала (мм)

static double time = 0; // Таймер (с)

static double position = 0; // Координата X каретки (мм)

static double speed = 0; // Скорость движения каретки (мм/с)

static double measureCount = 0; // Номеризмерения

static double beat = 0; // Величинабиения

static bool OK = true; // Величина биения в пределах нормы

Создадим входные данные пользователя, которые вводятся вручную (лист. 5).

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

Листинг 5 – Входные данные пользователя

static double Kp; // Коэффициент пропорциональности П-регулятора

static double dT1; // Время измерения биения участка вала

static double dT2; // Время измерения координаты каретки

public static void SetInputs(double Kp, double dT1, double dT2)

Simulation.Kp = Kp; // Ввод коэффициента пропорциональности П-регулятора

Simulation.dT1 = dT1; // Ввод времени измерения биения участка вала

Simulation.dT2 = dT2; // Ввод времени измерения координаты каретки

Начинаем моделирование (лист. 6).

Здесь мы реализуем две функции.

Первая функция – double[], которая отвечает за инициализирование массива.

Вторая функция – OutputValues, которая предназначен для вывода данных из системы.

Листинг 6 – Началомоделирования

public static void StartSimulation()

//Обнуление глобальных переменных

measureCount = 0; // Количество измерений

position = 0; // Координата X каретки (мм)

speed = 0; // Скорость движения каретки (мм/с)

beat = 0; // Величина биения

OK = true; // Величина биения в пределах норм

//Инициализация локальных переменных

double[] beatData; // Массив значений биения вала на проверяемом участке

double Lnom = Lstep; // Расчетное положение каретки

double measure_number = 2 * length / Lstep; // Числоизмерений

while (measureCount < measure_number)

measureCount++; // Записьномераизмерения

MoveCarriage(Lnom); // Перемещение каретки в заданную координату

beatData = MeasureBeat(); // Измерение биения

ResultProcessing(beatData); // Обработка результатов

Lnom = CalculateNewPosition(Lnom); // Расчет нового положения каретки

OutputValues(); // Вывод данных из системы

Выводим данные из системы (лист. 7).

Здесь мы реализуем несколько функций.

Первая функция – Console., которая отвечает за вывод переменных в консоль.

Вторая функция - Thread.Sleep., которая приостанавливает выполнение текущего потока на определенный период времени.

Листинг 7 – Выводданных

public static void OutputValues()

Output.AddOutput(position, beat, OK, (int)measureCount - 1);

Thread.Sleep(1);

Console.WriteLine("Измерение: " + measureCount);

Console.WriteLine("Время: " + time);

Console.WriteLine("Координатакаретки: " + position);

if (OK)

Console.WriteLine("Биениявала: " + beat + ". В пределах нормы.");

else

Console.WriteLine("Биения вала: " + beat + ". Выше нормы!");

Перемещаем каретку в заданную координату (лист. 8).

Здесь мы реализуем следующие функции

Первая функция - функция double, которая отвечает за инициализирование переменных, необходимых для расчетов.

Вторая функция - функция for, которая отвечает за создания цикла, который повторяет выполнение определенного блока кода определенное количество раз или пока заданное условие выполняется.

Третья функция - функция while, которая используется для создания цикла, который выполняет определенный блок кода, пока заданное логическое условие истинно.

Листинг 8 – Перемещениекаретки

private static void MoveCarriage(double Lnom)

double dL; // Величина ошибки

double V; // Управляющее воздействие на мотор

double L = 0; // Рассчитанное приблизительное значение положения каретки

do

for (int n = 0; n <= 29; n++)

double tmp = 1.4619 * ADC2In() - 299.4; // Получение данных с АЦП2

if (n == 0)

L = tmp;

else

L = (L * (n - 1) + tmp) / n; // Расчет приблизительного значения положения каретки

dL = Lnom - L; // Расчет величины ошибки

V = dL * Kp; // Расчет управляющего воздействия на мотор

if (Math.Abs(dL) > 10 - average_square_error_1 || Math.Abs(V) > 50)

DACOut(V); // Отправка управляющего воздействия на ЦАП

time += dT2; // Инкрементированиевремени

while (Math.Abs(dL) > 10 - average_square_error_1 || Math.Abs(V) > 50);

Изменяем биение на участке (лист. 9).

Здесь мы реализуем две функции.

Первая функция – double[], которая отвечает за инициализирование массива.

Вторая функция – функция for, которая отвечает за создания цикла, который повторяет выполнение определенного блока кода определенное количество раз или пока заданное условие выполняется.

Третья функция - функция return для завершения выполнения функции и возврата значения из этой функции в то место, откуда она была вызвана.

Листинг 9 – Измерениебиения

private static double[] MeasureBeat()

double[] Z = new double[88];

for (int i = 0; i < 88; i++)

Z[i] = 0.0012 * ADC1In() - 0.25; // Получение данных с АЦП1

time += dT1; // Инкрементирование времени

return Z; // Возврат данных

Обрабатываем данные, полученных с АЦП1 (лист. 10).

Здесь мы реализуем следующие функции

Первая функция – функция double, которая отвечает за инициализирование переменных, необходимых для расчетов.

Вторая функция – double[], которая отвечает за инициализирование массива.

Третья функция - функция for, которая отвечает за создания цикла, который повторяет выполнение определенного блока кода определенное количество раз или пока заданное условие выполняется.

Четвертая функция - функция Array.Sort(tmp_array), которая используется для сортировки элементов массива в порядке возрастания.

Листинг 10 – ОбработкаданныхсАЦП1

private static void ResultProcessing(double[] Z)

OK = true; // Величина биения в пределах нормы

double Smax = -100000; // Наибольшее значение расчитанного биения

double[] S = new double[88]; // Массивобработанныхданных

for (int i = 1; i < 87; i++)

// Получение скользящего среднего значений

double[] tmp_array = { Z[i - 1], Z[i], Z[i + 1] };

Array.Sort(tmp_array);

S[i] = tmp_array[1];

Smax = Math.Max(S[i], Smax); // Обновление наибольшего значения биения

Обрабатываем граничные значения (лист. 11).

Здесь мы реализуем функцию – double[], которая отвечает за инициализирование массива.

Листинг 11 – Обработка граничных значений

S[0] = Z[0];

S[87] = Z[87];

// Получение наибольшего значения биения с учетом граничных значений

double[] beat_arr = { Smax, Z[0], Z[87] };

beat = beat_arr.Max();

if (beat > maxBeat)

OK = false; // Величина биения выше нормы

Рассчитываем новое положение каретки (лист. 12).

Здесь мы реализуем функцию return для завершения выполнения функции и возврата значения из этой функции в то место, откуда она была вызвана.

Листинг 12 – Расчетновогоположениякаретки

private static double CalculateNewPosition(double Lnom)

Lnom += Lstep; // Расчет положения

// Механизм возврата каретки при достижении концов вала

if (Lnom < 0 || Lnom > length)

Lstep = -Lstep;

Lnom += 2 * Lstep;

return Lnom; // Возврат нового положения

Также необходимо произвести настройку АЦП1 (лист. 13).

Здесь мы реализуем следующие функции

Первая функция - функция double, которая отвечает за инициализирование переменных, необходимых для расчетов.

Вторая функция - функция return для завершения выполнения функции и возврата значения из этой функции в то место, откуда она была вызвана.

Листинг 13 – НастройкаАЦП1

private static double ADC1In()

Random random = new Random();

double X = beatAverage - beatError + 2 * beatError * random.NextDouble(); // Генерациязначениябиениясучетомшума

double Z = X * 2 * 4096 / 10 + 2048 / 10; // Преобразование сигнала

return Z; // Вывод сигнала

Также необходимо произвести настройку АЦП2 (лист. 14).

Здесь мы реализуем следующие функции

Первая функция - функция double, которая отвечает за инициализирование переменных, необходимых для расчетов.

Вторая функция - функция return для завершения выполнения функции и возврата значения из этой функции в то место, откуда она была вызвана.

Листинг 14 – НастройкаАЦП2

private static double ADC2In()

double X = position; // Измерение положения каретки

double Z = X * 0.00167 * 4096 / 10 + 2048 / 10; // Генерация сигнала

return Z; // Вывод сигнала

Также необходимо произвести настройку ЦАП (лист. 15).

Листинг 15 – НастройкаЦАП

private static void DACOut(double signal)

speed = signal; // Установление скорости

position += speed * dT2; // Передвижение модели каретки с заданной скоростью

В программе прописаны комментарии для более подробного описания работы.

7 ОПИСАНИЕ ГРАФИЧЕСКОГО ОКНА

После запуска программы появляется окно программы «Передвижение каретки», что видно на рисунке 22.

Рисунок 22 – Окно программы «Передвижение каретки»

Входные значения выставлены по умолчанию:

Коэффициент пропорциональности регулятора положения каретки:

Время измерения биения участка вала:

Время измерения координаты каретки:

Их можно изменить, затем нажать на кнопку «Старт», либо нажать на кнопку сразу, ничего не меняя. Для обеспечения необходимой «точности» управления кареткой значение коэффициента пропорциональности усиления П-регулятора должно выбираться из условия .

8 ПРОВЕРКА РАБОТЫ ПРОГРАММЫ

В программе используется вкладочный интерфейс. Пользователю представлены следующие вкладки: «График биения вала», «График положения каретки», «Таблица».

После открытия программы и нажатия на кнопку «Старт» в окне программы на вкладке «График биения вала» появляется график, что видно на рисунке 23. В приложении 1 можно рассмотреть график в укрупненном формате.

Рисунок 23 – Окно программы «Передвижение каретки» после запуска

При запуске программы выводится график величины биения вала от координаты каретки. Желтой и зеленой линиями показаны значения биений вала, измеренные при прохождении кареткой пути сверху вниз и снизу вверх соответственно. По заданию допустимая величина биения 3 мм, на графике это значение отмечено красной линией.

Можно заметить, что на участках с координатами 700, 1800, 2350 и 3300 измеренная величина биения превышает норму. На графике видно, что математическое ожидание величины биения примерно составляет .

При переключении на вкладку «График положения каретки» можно отследить движение каретки на всем протяжении процесса измерения биения. Интерфейс вкладки отображен на рисунке 24. В приложении 2 можно рассмотреть график в укрупненном формате.

Рисунок 24 – График зависимости положения каретки от времени

На графике видно небольшое отклонение в маршруте каретки при движении сверху вниз и снизу вверх. Это связано с тем, что в системе используется П-регулятор, который характеризуется постоянной статической ошибкой из-за своих свойств. В данной системе величина этой ошибки составляет 7,88 мм, что вполне соответствует требуемым показателям точности.

При переключении на вкладку «Таблица» для пользователя отображается подробный архив данных процесса в виде интерактивной таблицы. В ней находятся столбцы с номером измерений, координатой каретки, значением биения. Последний столбец отображает вывод о соответствии измеренной величины биения норме. Пределом нормы в данной системе считается величина биения в 3 мм. Строки интерактивной таблицы представляют собой данные результатов измерения биения в определенных координатах вала. Для наглядности строки выделены цветами: результаты в пределах нормы зеленым, а результаты, превышающие норму, красным. Результаты измерений и вид интерактивной таблице представлен на рисунке 25. В приложении 3 можно рассмотреть таблицу в полном формате.

Рисунок 25 – Интерактивная таблица с результатами измерений

Для получения наиболее релевантной информации предусмотрен функционал сортировки и группировки строк таблицы. Например, можно отобразить вверху таблицы строки измерений, значения которых выходят за пределы нормы. Пример такого взаимодействия с таблицей можно наблюдать на рисунке 26.

Рисунок 26 – Взаимодействие с интерактивной таблицей

В таком виде можно наглядно просмотреть те места, в которых биение вала превышает норму. Это позволяет наиболее точно установить расположение проблемных участков и сделать соответствующие выводы.

ПРИЛОЖЕНИЕ

Приложение 1 – График биений вала

Приложение 2 – График положения каретки

Приложение 3 – Интерактивная таблица с результатами измерений

Просмотров работы: 16