% Seismic BLRMS Monitor % % % % RA 08-01-26 % 0 for no messages, 1 for debugging debug_flag = 1; % ------------ Build channel list ifo = 'C1'; acc_head = [ifo ':PEM-ACC']; acc_mid = {'ETMX','ITMX'}; acc_tail = {'X','Y','Z'}; acc_chans = {length(acc_mid)*length(acc_tail)}; nu = 1; for m = 1:length(acc_mid) for n = 1:length(acc_tail) acc_chans{nu} = strcat(acc_head,'_',... acc_mid(m),'_',acc_tail(n)); nu = nu + 1; end end % Add the SEIS_DIR channel chans = [acc_chans {{'C1:PEM-SEIS_DIR'}}]; t0 = gps('now - 3 minutes'); % ------------------------------------ while (1) %t0 = gps('now - 2 minutes'); dur = 64; tfft = 16; nsrate = 64; bandlimits = [0.1 0.3 1 3 10 30]; rms_matrix = zeros(length(bandlimits)-1,length(chans)); for mm = 1:length(chans) [y,f] = dttfft2(chans{mm},t0,dur,tfft,nsrate); for nn = 1:(length(bandlimits)-1) n = find(f > bandlimits(nn) & f < bandlimits(nn+1)); rms_matrix(nn,mm) = max(rms(f(n),y(n))); end end % Write RMS values from matrix to EPICS channels DMF_chans = {'C1:DMF-IX_ACCZ_0p1_0p3',... 'C1:DMF-IX_ACCZ_0p3_1',... 'C1:DMF-IX_ACCZ_1_3',... 'C1:DMF-IX_ACCZ_3_10'}; cmd_head = 'tdswrite -verb '; cmd = cmd_head; for kk = 1:length(DMF_chans) cmd = [cmd ' ' DMF_chans{kk} ' '... num2str(rms_matrix(3,kk))]; end if debug_flag disp('Writing RMS values...') end [a,b] = system(cmd); if a > 0 error('Problem using tdswrite *') end % Wait 60 seconds before running again while (gps < (t0 + 190)) disp('waiting for fresh data...') pause(9) end disp(['Time now is ' num2str(gps)]) t0 = t0 + 60 end