Диссертация (1025147), страница 21
Текст из файла (страница 21)
2004. Т. 11. №. 3-4.C. 395-409.118. Tlusty J., Ismail F. Special aspects of chatter in milling // ASME Journal ofVibration, Stress, and Reliability in Design. 1983. Vol. 105. C. 24-32.119. Tlusty, J., Ismail F. Basic non-linearity in machining chatter // Annals of CIRP.1981. Vol.30. C. 229-304.120.
Trends in experimental modal analysis / R. Snoeys [et al.] // Mechanical Systemsand Signal Processing. 1987. Т. 1. №. 1. С. 5-27.121. Two-Stage Least Squares based Iterative Identification Algorithm for BoxJenkins Model / J. Jia [et al.] // Appl. Math. 2014. Т. 8. №. 3. С. 1355-1360.122. Van Overschee P., De Moor B. L. Subspace identification for linear systems:Theory—Implementation—Applications. Berlin: Springer Science & BusinessMedia, 2012. 268 c.123.
Van Overschee P., De Moor B. N4SID: Subspace algorithms for the identificationof combined deterministic-stochastic systems // Automatica. 1994. Т. 30. №. 1.C. 75-93.124. Verboven P. Frequency-domain System Identification for Modal Analysis: PhDthesis. Brussel. 2002. 189 c.125. Voronov S., Kiselev I. Dynamics of flexible detail milling // Proceedings of theInstitution of Mechanical Engineers, Part K: Journal of Multi-body Dynamics.2011. V225.
№4. C. 299-309.164126. Voronov S.A., Gouskov A.M. Dynamic Models Generalization of ManufacturingSystems with Single-Point Cutting Considering Equations of New SurfaceFormation // Proceedings of 2nd Workshop on Nonlinear Dynamics and Controlof Mechanical Processing. Budapest (Hungary). 2001. C. 1-10.127. Yao Z., Mei D., Chen Z.
On-line chatter detection and identification based onwavelet and support vector machine // Journal of Materials ProcessingTechnology. 2010. Т. 210. №. 5. C. 713-719.128. Zhang G., Tang B., Tang G. An improved stochastic subspace identification foroperational modal analysis // Measurement. 2012. Т. 45. № 5. C. 1246-1256.129. Zimmerman A. T. et al. Automated modal parameter estimation by parallelprocessing within wireless monitoring systems // Journal of InfrastructureSystems. 2008.
Т. 14. №. 1. C. 102-113.165ПРИЛОЖЕНИЕП.1. Текст программ в среде Matlab для выбора оптимальных скоростейвращенияинструмента,детектирования«чаттера»порезультатаммноговариантного моделирования динамики фрезерования в ПО 3D CUT ипостроения «карты режимов».Программа для вычисления оптимальных диапазонов скоростивращения фрезы с учетом изменения частот в процессе обработкиMilling_frequency_rangefunction Milling_frequency_rangeclose all;clear all;clc;DATA = load('WPREMESH_FREQ.dat');F1 = DATA(2:end-1,1);F2 = DATA(2:end-1,2);figure(1)hold on; grid on; box on;plot(F1)plot(F2)F = [F1 F2];df = abs(100*((F(end,:) - F(1,:))./F(1,:)));n_freq = 2; %%%% Количество частотn_z = 2;%%%% количество зубьев фрезыn_fold = 3; %%%% Максимальная степень кратностиn_points = length(F1); %%%% Количество изменений СЧfor n_p = 1:n_pointsk = 1;range = [];for j = 1:n_freqfor n = 1:n_fold%%%% Вычисление оптимальных диапазонов скорости вращения фрезы длякаждой СЧomega_min(n,j) = (F(n_p,j)/(n + 0.1))*(60/n_z); % Нижняя границадиапазона omega_min = 1.1*СЧ, об/мин166omega_max(n,j) = (F(n_p,j)/(n + 0.3))*(60/n_z); % Верхняя границадиапазона omega_max = 1.3*СЧ, об/минrange(k, 1) = omega_min(n,j); range(k,2) = 1;% Формированиемассива диапазонов для всх частот и всех степеней кратностиrange(k+1, 1) = omega_max(n,j); range(k+1,2) = 2;k = k + 2;figure(2) %%%% Вывод диапазонов на графикиhold on; grid on; box on;if (j == 1)color = 'bo-';elseif (j == 2)color = 'ro-';elsecolor = 'go-';endplot([n_p+0.01*jn_p+0.01*j],[omega_min(n,j)omega_max(n,j)], color);figure(3) %%%% Вывод диапазонов на графикиhold on; grid on; box on;if (j == 1)color = 'bo-';elseif (j == 2)color = 'ro-';elsecolor = 'go-';endv_rel_min(n,j) = F(1,j)./(omega_min(n,j)*(n_z/60));v_rel_max(n,j) = F(2,j)./(omega_max(n,j)*(n_z/60));plot([n_pv_rel_max(n,j)], color);+0.01*jn_p+endend%%%% Сортировка массива частотных диапазонов %%%%for j = 1:length(range)for i = 1:length(range) - jif (range(i,1) < range(i+1,1))c = range(i,:);range(i,:) = range(i+1,:);range(i+1,:) = c;c = 0;endendendd_flag = abs(diff(range(:,2)));range(:,2) = [0; d_flag];ind = range(:,2)';ind_detect = strfind(ind, [0 1 0]);ind_detect = ind_detect(1:2:end);figure(2)for i = 1:length (ind_detect)0.01*j],[v_rel_min(n,j)167plot([n_p n_p], [range(ind_detect(i),1) range(ind_detect(i)+1,1)], 'b','LineWidth', 2.5);end%%% Нахождение пересечений диапазонов для различных частот %freq_min(n_p, 1) = range(ind_detect(1),1);freq_max(n_p, 1) = range(ind_detect(1) + 1,1);endfigure(2)hold on; grid on;plot(freq_min, 'g-', 'LineWidth', 2.5);plot(freq_max, 'g-', 'LineWidth', 2.5);freq_mean = (freq_min + freq_max)/2;n_rel_mean = F1(1,1)./(freq_mean*(n_z/60));n_rel_min = F1(1,1)./(freq_min*(n_z/60));n_rel_max = F1(1,1)./(freq_max*(n_z/60));save('path.mat', 'n_rel_mean', 'n_rel_min', 'n_rel_max');end________________________________________Программа для детектирования чаттера с помощью преобразования ФурьеMain_chatter_detectionfunction Main_chatter_detecionclc;close all;clear all%%% Первая собственная частота колебаний заготовки до обработкиf_eig = 915;%%% Пороговое значение для детектирования чаттера (в долях от максимальной%%% амплитуды)threshold = 0.25;%%%% Максимальная частота спектра для детектирования чаттераf_max = 4000;%%%% Номер компоненты силы для детектирования (X, Y, или Z)n_comp = 2;%%%% Длина окна для детектирования (в секундах)t_window = 0.25;168%%%% Расстояние между анализируемыми выборками (в секундах)t_step = 3;%%%% Директория, в которой находятся все результаты расчетовdir_name='E:\\3DCUT_projects\\MT1_blade\\nice_grid\\dynamics\\Sergei_eps_0.2_Fk_0.08_w_1.1_1.6\\';list_dir = dir([dir_name 'REZ_*']);n_end = length(list_dir);for i = 1:n_enddir_name_i = [dir_name list_dir(i).name];REZ_chatter_detection(dir_name_i,f_eig,t_window, t_step);endthreshold,f_max,n_comp,endfunction REZ_chatter_detection(str_path_2, f_eig, threshold, f_max, n_comp,t_window, t_step)close all;str_path_2 = [str_path_2 '\'];NMAX_NREZ = 30;%%% Blade results %%%head_file_name = 'REZ_head.bin';file_name = 'REZ.bin';str_path_main = [str_path_2 file_name];str_path_head = [str_path_2 head_file_name];fp2 = fopen(str_path_head,'r');nrez = fread(fp2,1,'int');strlength = fread(fp2,1,'int');flag = zeros(1,NMAX_NREZ);namerenum = zeros(1,nrez);for i = 1:nreznamerenum(1,i) = fread(fp2,1,'int');namerenum(1,i) = namerenum(1,i) + 1;reznames(i,:) = char(fread(fp2,strlength,'char'));endi_final = fread(fp2,1,'int');dt = fread(fp2,1,'float');t_max = dt*i_final;fclose(fp2);fp2 = fopen(str_path_main,'r');flag(1,1)flag(1,2)flag(1,3)flag(1,4)====0;0;0;1;%"Cutter%"Cutter%"Cutter%"WP Fx,Fx, [Н]\0"Fy, [Н]\0"Fz, [Н]\0"[Н]\0"169flag(1,5) = 1; %"WP Fy, [Н]\0"flag(1,6) = 1; %"WP Fz, [Н]\0"flag(1,7) = 0; %"Cutter DispX loc, [мм]\0"flag(1,8) = 0; %"Cutter DispY loc, [мм]\0"flag(1,9) = 0; %"Cutter DispZ loc, [мм]\0"flag(1,10) = 1; %"WP DispX, [мм]\0"flag(1,11) = 1; %"WP DispY, [мм]\0"flag(1,12) = 1; %"WP DispZ, [мм]\0"flag(1,13) = 0; %"RELATIVE DispX, [мм]\0"flag(1,14) = 0; %"RELATIVE DispY, [мм]\0"flag(1,15) = 0; %"RELATIVE DispZ, [мм]\0"flag(1,16) = 0; %"Cutter DispX glob, [мм]\0"flag(1,17) = 0; %"Cutter DispY glob, [мм]\0"flag(1,18) = 0; %"Cutter DispZ glob, [мм]\0"flag(1,25) = 0; %"Max chip thickness, [мм]\0");flag(1,26) = 0; %"Num of Iter\0");flag(1,27) = 0; %"Last Path Point\0");flag(1,28) = 0; %"Vmax\0");flag(1,29) = 0; %"ItWPerr\0");% Считывание данных% REZ = zeros(i_final,nrez);% NUM = zeros(1,i_final);% T = zeros(1,i_final);NUM = zeros(1,i_final);n_rel = str2num(str_path_2(end-5:end-1))/10000freq_main = f_eig/n_rel;l_window = floor(t_window/dt);l_step = floor(t_step/dt);vib = [];t = [];TMP = fread(fp2,[nrez l_window],'float');n_end = floor(t_max/(t_step));disp('Import started')for i = 1:n_endTMP = fread(fp2,[nrez l_window],'float');fseek(fp2,4*nrez*(l_step-l_window),'cof');TMP = TMP';VIB(:,:,i) = TMP(:,10:12);t_start = t_step*(i-1);t_end = t_start + t_window - dt;T(:,i) = t_start:dt:t_end;endfclose(fp2);disp('Import completed')disp(' ');disp('Chatter detection started')for i = 1:length(VIB(1,1,:))%%% Получение полных массивов вибраций и времениt = T(:,i);170x =VIB(:,:,i);vib(1+l_window*(i-1):l_window*i,:) = x;time(1+l_window*(i-1):l_window*i,1) = t;%%% choose componentx1 = x(:,n_comp);amp(i,1) = max(x1);[A, f] = Fourier_transform(t,x1, f_max);[pks, locs] = findpeaks(A, 'MinPeakDistance', 4, 'MinPeakHeight',threshold*max(A));fft_error = 1/t_window;%%% error of FFT in Hz %%%f_harm = f(locs);f_fold_harm=f_harm(((f_harm>(freq_main*(0.5)3*fft_error))&(f_harm < (freq_main*(0.5) + 3*fft_error)))...|((f_harm>(freq_main*(1.0)3*fft_error))&(f_harm < (freq_main*(1.0) + 3*fft_error)))...|((f_harm>(freq_main*(2.0)3*fft_error))&(f_harm < (freq_main*(2.0) + 3*fft_error)))...|((f_harm>(freq_main*(3.0)3*fft_error))&(f_harm < (freq_main*(3.0) + 3*fft_error)))...|((f_harm>(freq_main*(4.0)3*fft_error))&(f_harm < (freq_main*(4.0) + 3*fft_error)))...|((f_harm>(freq_main*(5.0)3*fft_error))&(f_harm < (freq_main*(5.0) + 3*fft_error)))...|((f_harm>(freq_main*(6.0)3*fft_error))&(f_harm < (freq_main*(6.0) + 3*fft_error)))...|((f_harm>(freq_main*(7.0)3*fft_error))&(f_harm < (freq_main*(7.0) + 3*fft_error)))...|((f_harm>(freq_main*(8.0)3*fft_error))&(f_harm < (freq_main*(8.0) + 3*fft_error))));n_chatter_freq(i,1) = length(f_harm) - length(f_fold_harm);n_chat_freq_i =n_chatter_freq(i,1);t_chatter_detection(i,1) = mean(t);if (n_chat_freq_i==0)chat_ind(i,1) = 0;elsechat_ind(i,1) = 1;endenddisp('Chatter detection completed')disp(' ');disp(' ');figure(20)hold on; grid on; box on;plot(t_chatter_detection, chat_ind, 'ro-')f_name = ['chatter_detection_' str_path_2(end-20:end-1) '.mat'];save(f_name, 't_chatter_detection', 'chat_ind', 'amp');figure(30)hold on; grid on; box on171plot(time,vib);xlabel('t,[c]');ylabel('Disp,[mm]');legend({'WP_d_i_s_p X', 'WP_d_i_s_p Y', 'WP_d_i_s_p Z'});endfunction [A, f] = Fourier_transform(t,x, f_max)N = length(t);Nf = round(N/2);dt = mean(diff(t));fe = 1/dt;%%%% Fourier transform %%%%Y = abs(fft(x));%%%% Amplitudes of vibration %%%%A = Y(1:Nf)/Nf;%%%% Frequencies %%%%f = (0:Nf-1)*fe/N;df = f(2) - f(1);%%%% Truncation %%%n_max = floor(f_max/df);A(n_max:end) = 0;end________________________________________Программа для построения цветографической «карты режимов» Milling_mapfunctionMilling_mapclose all;clc;clear all;wd = cd;dir_name = uigetdir('', 'Pick a Directory');cd(dir_name)list = dir('*0.mat');n_end = length(list);for i = 1:n_endf_name = list(i).name;DATA = load(f_name);t(:,i) = DATA.t_chatter_detection;chat_ind(:,i) = DATA.chat_ind;amp(:,i) = DATA.amp;v_rel(i) = str2num(f_name(end-8:end-4))/10000;V(:,i) = v_rel(i)*ones(length(t(:,1)),1);endn_points_detect = length(t(:,1));172%%% Number of points in milling mapn_points_after_reduction = 44; %2*length(v_rel);step_reduce = floor(n_points_detect/n_points_after_reduction);%%%% Relative shift in fold frequencies checkshift = 0.01;%%% If current chatter rate lower than rate_chat_ind_critical_low - no chatter(blue marker)rate_chat_ind_critical_low = 0.35;%%% If current chatter rate is lower than rate_chat_ind_critical_up but greaterthan%%% rate_chat_ind_critical_low - non dangerous chatter (yellow marker)rate_chat_ind_critical_up = 0.55;%%% If current chatter rate is greater than rate_chat_ind_critical_up dangerous chatter (red marker)for i = 1:n_endj = 1;k = 1;t_reduced(:,i) = (linspace(t(1,i), t(end,i), n_points_after_reduction))';V_reduced(:,i) = v_rel(i)*ones(length(t_reduced(:,1)),1);while (j+step_reduce-1 < n_points_detect)chat_ind_i=chat_ind(j:j+step_reduce-1,i);n_chat_ind_i=length(chat_ind_i);chatter_points_i = (chat_ind_i(chat_ind_i>0)); n_chatter_points_i =length(chatter_points_i);if ((n_chatter_points_i/n_chat_ind_i) < rate_chat_ind_critical_low)chat_ind_reduced(k,i) = 0;elseif((n_chatter_points_i/n_chat_ind_i)<rate_chat_ind_critical_up)chat_ind_reduced(k,i) = 1;elsechat_ind_reduced(k,i) = 2;endk = k + 1;j = j + step_reduce;endendFREQ_FE = load('WPREMESH_FREQ.dat');F1 = FREQ_FE(2:end-1,1);F2 = FREQ_FE(2:end-1,2);F_FE = [F1 F2];t_F_FE = linspace(t_reduced(1,1),t_reduced(end,1), length(F_FE(:,1)));F(:,1) = interp1(t_F_FE, F_FE(:,1), t_reduced(:,1));F(:,2) = interp1(t_F_FE, F_FE(:,2), t_reduced(:,1));length(F(:,2))% %%%% Path 1.1 - 1.3 read %%%%path = load('path.mat');n_rel_mean = path.n_rel_mean; n_rel_mean = n_rel_mean(1:19);n_rel_min = path.n_rel_min; n_rel_min = n_rel_min(1:19);n_rel_max = path.n_rel_max; n_rel_max = n_rel_max(1:19);173t_path = linspace(t_reduced(1), t_reduced(end), length(n_rel_mean)); t_path =t_path';v_rel_step = v_rel(2) - v_rel(1);v_rel_2 = v_rel(1):v_rel_step:1*v_rel(end);for i = 1:length(v_rel_2)v_rel_current_1(:,i) = F(:,1)./(F(1,1)./v_rel_2(i));v_rel_current_2(:,i) = F(:,2)./(F(1,1)./v_rel_2(i));end%%%% Milling map plot %%%%figure()hold on;xlim([0 max(t_reduced(:,1))])ylim([min(v_rel) max(v_rel)])title(dir_name(length(wd)+2:end))% plot(t_reduced, v_rel_current_1)% plot(t_reduced, v_rel_current_2)marker_size = 8;for i = 1:length(v_rel)i;for j = 1:length(t_reduced)j;if (chat_ind_reduced(j,i) == 0)color(j,i) = '0'; color_charelseif (chat_ind_reduced(j,i) ==color(j,i) = '1'; color_charelseif (chat_ind_reduced(j,i) ==color(j,i) = '2'; color_charendif1+shift))||...(((v_rel_current_1(j,i)>= 'b';1)= 'y';2)= 'r';1-shift)&&(v_rel_current_1(j,i)<((v_rel_current_1(j,i)>2-shift)&&(v_rel_current_1(j,i)<((v_rel_current_1(j,i)>3-shift)&&(v_rel_current_1(j,i)<((v_rel_current_2(j,i)>1-shift)&&(v_rel_current_2(j,i)<((v_rel_current_2(j,i)>2-shift)&&(v_rel_current_2(j,i)<((v_rel_current_2(j,i)>3-shift)&&(v_rel_current_2(j,i)<2+shift))||...3+shift))||...1+shift))||...2+shift))||...3+shift)))color(j,i) = '2'; color_char = 'r';endplot(t_reduced(j,i),V_reduced(j,i),'MarkerFaceColor',color_char, 'MarkerSize',marker_size)endendplot(t_path, n_rel_min, 'g-', 'LineWidth', 1);plot(t_path, n_rel_max, 'g-', 'LineWidth', 1);plot(t_path, n_rel_mean, 'g--', 'LineWidth', 1);[color_char'o'],174Приложение B.















