В данной лабораторной работе исследуется сварочный контур, состоящий из источника питания, сварочной дуги и сварочной ванны. Сварочная дуга характеризуется такими электрическими параметрами, как сварочный ток , напряжение на дуге и т.д. Именно эти два основных параметра нам потребуются в дальнейшем.
Целью работы является расчет характеристик процесса РДС, с использованием измеренных параметров процесса РДС.
Приступим к описанию последовательности действии и их значимости для достижения поставленной цели. Необходимо присвоить все начальные значения, а также некоторые измеренные параметры процесса РДС. Задается частота дискретизации АЦП, также высчитываются коэффициенты преобразования данных тока и напряжения - они потребуются для получения значений тока и напряжения. В наличии имеются 16 файлов, в которых содержатся данные, полученные с АЦП, причем в 8 из них содержатся значения тока и напряжения, считанные при правильной работе, а в других 8 - неправильной, эти данные потребуются нам для обучения сети. Отобразить это в программе можно следующим образом:
#коэффициент преобразования тока
ki = 2.56*500/(2048*0.75);
#для напряжения
ku = 2.56*40/2048;
#частота АЦП
Fs = 2000;
F = ['1_hr.lct'; '1_pl.lct'; '2_hr.lct'; '2_pl.lct';
'3_hr.lct'; '3_pl.lct'; '4_hr.lct'; '4_pl.lct';
'5_hr.lct'; '5_pl.lct'; '6_hr.lct'; '6_pl.lct';
'7_hr.lct'; '7_pl.lct'; '8_hr.lct'; '8_pl.lct';]
X=zeros(0,31);
Далее используем цикл, счетчик которого будет изменяться от 1 до 16 – именно столько всего файлов с «плохими» и «хорошими» данными, то есть пройдем по каждому и выполним действия, которые будут описаны ниже. Сначала будет осуществляться чтение каждого файла, расчет тока и напряжения на основе данных из файла и коэффициентов преобразования данных тока и напряжения, полученных выше. Запишем полученные значения в матрицу М и отсортируем данные по напряжению. Далее матрицу М мы делим на 3 массива, для того чтобы отобразить три состояния – короткое замыкание, горение дуги и холостой ход.
Для того чтобы поделить на 3 массива используем функции find – она считает количество ненулевых элементов и size – она предназначена для определения размера матрицы, количества ее строк и столбцов. Таким образом, описанные выше действия в программе можно отобразить так:
for f=1:16
f
M=load(F(f,:)); #Загрузка файлов
I= abs(ki*M(:,1)); #ток равен первый столбец из файла*ki по модулю
U= abs(ku*M(:,2)); #напряжение равно второй столбец из файла*ku по модулю
M=cat(2,U,I); #Склейка по горизонтали
M=sort(M,1); #Сортировка
n1=length(find(M(:,1)<12)); #колличество номеров чисел <12
n2=length(find(M(:,1)<40)); #колличество номеров чисел <40
n3=length(M(:,1)); #общее кол-во чисел
B1=M(1:n1,1); #Напряжение короткого замыкания
B2=M(1:n1,2); #Ток КЗ
B3=M(n1+1:n2,1); #Напряжение в рабочем режиме
B4=M(n1+1:n2,2); #Ток а РР
B5=M(n2+1:n3,1); #Напряжение холостого хода
B6=M(n2+1:n3,2); #Ток ХХ
Теперь нужно определить статистические характеристики (математическое ожидание, дисперсия, СКО, асимметрия, эксцесс) для значений тока и напряжения в каждом интервале, для этого потребуется определить границы интервалов.
Затем соединим все полученные значения в матрицу при помощи функции cat, так как первый ее параметр равен 2, то это значит, что массив будет создаваться путем добавления массива справа (склейка по горизонтали), указанного как третий параметр, к массиву, указанного в качестве второго параметра этой функции. Отобразить это в программе можно следующим образом:
A = cat(2, moments(B1), moments(B2));
A = cat(2, A, moments(B3));
A = cat(2, A, moments(B4));
A = cat(2, A, moments(B5));
A = cat(2, A, moments(B6));
Далее определяем количество коротких замыканий:
U1 = U(1:end-1);
U2 = U(2:end);
N1 = (U1>12);
N2 = (U2<12);
KKZ = length(find(and(N1,N2)));
FKZ=KKZ/(n3/Fs);
A = cat(2, A, FKZ);
X = cat(1,X,A);
end
Предобработка данных.
Следующим этапом является нормализация, она возвращает обученную сеть и количество кластеров. Для этого построим матрицы минимальных и максимальных значений. Для нормировки используем следующую формулу:
.
Отобразить это в программе можно следующим образом:
MS = mean(X);
SS = std(X);
for NS=1:31 #номер столбца
for i=1:16
X(i,NS)=(X(i,NS)-MS(NS))/SS(NS);
end
end
Далее нужно произвести нормирование входных данных, для приведения данных к единичному масштабу (привести в сопоставимый вид). Воспользовавшись функцией corrcoef, построим матрицу коэффициентов корреляции, для выявления наиболее значимых параметров. Удалим один фактор из коррелирующей пары, которой соответствуют значения коэффициентов корреляции превысили 0,8 в матрице А. Отобразить это в программе можно следующим образом:
deli=zeros(0,1);
A = corrcoef(X);
for i=1:31 #номер столбца
for j=i+1:31
if (A(j,i)>0.8)
deli=cat(1,deli,i);
end
end
end