diff --git a/mat/apa95ml_5kg_1a_2s.mat b/mat/apa95ml_5kg_1a_2s.mat new file mode 100644 index 0000000..635a2f3 Binary files /dev/null and b/mat/apa95ml_5kg_1a_2s.mat differ diff --git a/mat/apa95ml_5kg_2a_1s.mat b/mat/apa95ml_5kg_2a_1s.mat new file mode 100644 index 0000000..dbb7c65 Binary files /dev/null and b/mat/apa95ml_5kg_2a_1s.mat differ diff --git a/mat/apa95ml_5kg_2s_1a.mat b/mat/apa95ml_5kg_2s_1a.mat new file mode 100644 index 0000000..6157738 Binary files /dev/null and b/mat/apa95ml_5kg_2s_1a.mat differ diff --git a/matlab/piezoapa.slx b/matlab/piezoapa.slx index ca74dce..52c6a55 100644 Binary files a/matlab/piezoapa.slx and b/matlab/piezoapa.slx differ diff --git a/matlab/runtest.m b/matlab/runtest.m index 5521cdb..f0463e5 100755 --- a/matlab/runtest.m +++ b/matlab/runtest.m @@ -2,55 +2,111 @@ tg = slrt; %% f = SimulinkRealTime.openFTP(tg); -mget(f, 'apa95ml.dat'); -% remove file on RT-target -% removefile(f, 'C:\data\data_001.dat') +mget(f, 'apa95ml.dat', 'data'); close(f); %% Convert the Data -data = SimulinkRealTime.utils.getFileScopeData('apa95ml.dat').data; +data = SimulinkRealTime.utils.getFileScopeData('data/apa95ml.dat').data; + +u = data(:, 1); % Input Voltage [V] +y = data(:, 2); % Output Displacement [m] +v = data(:, 3); % Output Voltage (Force Sensor) [V] +t = data(:, 4); % Time [s] + +save('../mat/apa95ml_5kg_1a_2s.mat', 'u', 't', 'y', 'v'); %% figure; subplot(1,2,1); -plot(data(:, 3), data(:, 1)) +plot(t, u) subplot(1,2,2); -plot(data(:, 3), data(:, 2)) +plot(t, y) + +%% +load('../mat/apa95ml_5kg_10V.mat', 'u', 't', 'y'); +ht = load('../mat/huddle_test.mat', 'u', 't', 'y'); +u = u - mean(u); +y = y - mean(y); + +%% +[pxx, f] = pwelch(y, win, [], [], 1/Ts); +[pht, ~] = pwelch(ht.y, win, [], [], 1/Ts); + +figure; + +hold on; +plot(f, pxx); +plot(f, pht); +hold off; +set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log'); +ylabel('PSD'); xlabel('Frequency [Hz]'); %% run setup; win = hann(ceil(0.1/Ts)); -[tf_est, f] = tfestimate(data(:, 1), data(:, 2), win, [], [], 1/Ts); -[co_est, ~] = mscohere(data(:, 1), data(:, 2), win, [], [], 1/Ts); +[tf_est, f] = tfestimate(u, y, win, [], [], 1/Ts); +[co_est, ~] = mscohere(u, y, win, [], [], 1/Ts); %% - figure; +figure; - hold on; - plot(f, co_est, 'k-') - set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'lin'); - ylabel('Coherence'); xlabel('Frequency [Hz]'); - hold off; +hold on; +plot(f, co_est, 'k-') +set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'lin'); +ylabel('Coherence'); xlabel('Frequency [Hz]'); +hold off; %% - figure; - ax1 = subplot(2, 1, 1); - hold on; - plot(f, abs(tf_est), 'k-', 'DisplayName', 'Identified') - set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log'); - ylabel('Amplitude'); xlabel('Frequency [Hz]'); - legend(); - hold off; +figure; +ax1 = subplot(2, 1, 1); +hold on; +plot(f, abs(tf_est), 'k-', 'DisplayName', 'Identified') +set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log'); +ylabel('Amplitude'); xlabel('Frequency [Hz]'); +hold off; - ax2 = subplot(2, 1, 2); - hold on; - plot(f, 180/pi*angle(-tf_est), 'k-') - set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'lin'); - ylabel('Phase'); xlabel('Frequency [Hz]'); - legend(); - hold off; - - linkaxes([ax1,ax2], 'x'); - xlim([10, 5000]); +ax2 = subplot(2, 1, 2); +hold on; +plot(f, 180/pi*unwrap(angle(-tf_est)), 'k-') +set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'lin'); +ylabel('Phase'); xlabel('Frequency [Hz]'); +hold off; + +linkaxes([ax1,ax2], 'x'); +xlim([10, 5000]); + +%% +win = hann(ceil(10/Ts)); + +[tf_est, f] = tfestimate(u, v, win, [], [], 1/Ts); +[co_est, ~] = mscohere(u, v, win, [], [], 1/Ts); + +%% +figure; + +hold on; +plot(f, co_est, 'k-') +set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'lin'); +ylabel('Coherence'); xlabel('Frequency [Hz]'); +hold off; + +%% +figure; +ax1 = subplot(2, 1, 1); +hold on; +plot(f, abs(tf_est), 'k-', 'DisplayName', 'Identified') +set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log'); +ylabel('Amplitude'); xlabel('Frequency [Hz]'); +hold off; + +ax2 = subplot(2, 1, 2); +hold on; +plot(f, 180/pi*unwrap(angle(-tf_est)), 'k-') +set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'lin'); +ylabel('Phase'); xlabel('Frequency [Hz]'); +hold off; + +linkaxes([ax1,ax2], 'x'); +xlim([10, 5000]); diff --git a/runtest.m b/runtest.m deleted file mode 100644 index 712a062..0000000 --- a/runtest.m +++ /dev/null @@ -1,77 +0,0 @@ -tg = slrt; - -%% -f = SimulinkRealTime.openFTP(tg); -mget(f, 'apa95ml.dat', 'data'); -close(f); - -%% Convert the Data -data = SimulinkRealTime.utils.getFileScopeData('data/apa95ml.dat').data; - -u = data(:, 1); -y = data(:, 2); -t = data(:, 3); - -save('mat/apa95ml_5kg_10V.mat', 'u', 't', 'y'); - -%% -figure; -subplot(1,2,1); -plot(t, u) -subplot(1,2,2); -plot(t, y) - -%% -load('mat/apa95ml_5kg_10V.mat', 'u', 't', 'y'); -ht = load('mat/huddle_test.mat', 'u', 't', 'y'); -u = u - mean(u); -y = y - mean(y); - -%% -[pxx, f] = pwelch(y, win, [], [], 1/Ts); -[pht, ~] = pwelch(ht.y, win, [], [], 1/Ts); - -figure; - -hold on; -plot(f, pxx); -plot(f, pht); -hold off; -set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log'); -ylabel('PSD'); xlabel('Frequency [Hz]'); - -%% -run setup; - -win = hann(ceil(10.1/Ts)); - -[tf_est, f] = tfestimate(u, y, win, [], [], 1/Ts); -[co_est, ~] = mscohere(u, y, win, [], [], 1/Ts); - -%% -figure; - -hold on; -plot(f, co_est, 'k-') -set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'lin'); -ylabel('Coherence'); xlabel('Frequency [Hz]'); -hold off; - -%% -figure; -ax1 = subplot(2, 1, 1); -hold on; -plot(f, abs(tf_est), 'k-', 'DisplayName', 'Identified') -set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log'); -ylabel('Amplitude'); xlabel('Frequency [Hz]'); -hold off; - -ax2 = subplot(2, 1, 2); -hold on; -plot(f, 180/pi*unwrap(angle(-tf_est)), 'k-') -set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'lin'); -ylabel('Phase'); xlabel('Frequency [Hz]'); -hold off; - -linkaxes([ax1,ax2], 'x'); -xlim([10, 5000]); diff --git a/setup.m b/setup.m deleted file mode 100644 index a292fe7..0000000 --- a/setup.m +++ /dev/null @@ -1,6 +0,0 @@ -s = tf('s'); -Ts = 1e-4; - -Glpf = 1/(1 + s/2/pi/500); - -Gz = c2d(Glpf, Ts, 'tustin'); \ No newline at end of file