function [DatiElabTunnelLink,NuovoZeroTuL,ay_TuL,t_TuL,ay_TuL_AC,t_TuL_AC,... datainiTuL,tempoiniTuL,data1_AC,DatiElabRadialLink,NuovoZeroRL,datainiRL,tempoiniRL,... DatiElabTiltLinkH,NuovoZeroTLH,datainiTLH,tempoiniTLH,... DatiElabTiltLinkHRH,NuovoZeroTLHRH,datainiTLHRH,tempoiniTLHRH,... DatiElabPreConvLink,NuovoZeroPCL,datainiPCL,tempoiniPCL,... DatiElabPreConvLinkHR,NuovoZeroPCLHR,datainiPCLHR,tempoiniPCLHR,... DatiElabDistoMTLink,NuovoZeroDM,datainiDM,tempoiniDM,... datainiPL,tempoiniPL,NuovoZeroPrL,datainiLL,tempoiniLL,NuovoZeroLL,... datainiEL,tempoiniEL,Date_Rif_EL,NuovoZeroEL,... dataini3DEL,tempoini3DEL,Date_Rif_3DEL,NuovoZero3DEL,datainiWEL,tempoiniWEL,NuovoZeroWEL,... datainiMPBEL,tempoiniMPBEL,NuovoZeroMPBEL,DatiElabAnalogLink,NuovoZeroAL,datainiAL,tempoiniAL,... datainiCrL,tempoiniCrL,NuovoZeroCrL,dataini3DCrL,tempoini3DCrL,NuovoZero3DCrL,... dataini2DCrL,tempoini2DCrL,NuovoZero2DCrL, datainiSM,tempoiniSM,Date_Rif_SM,NuovoZeroSM,margine] = ... LastElab(conn,date,time,IDcentralina,DTcatena,Wdevst,NdatiMedia,Ndatidespike,... NodoTunnelLink,yesTuL,date_AC,time_AC,Nodo_AC,rTuL,... NodoRadialLink,yesRL,rRL,NodoTiltLinkH,yesTLH,rTLH,NodoTiltLinkHRH,yesTLHRH,rTLHRH,... NodoPreConvLink,yesPCL,rPCL,NodoPreConvLinkHR,yesPCLHR,rPCLHR,... NodoDistoMTLink,yesDM,rDM,NodoPressureLink,yesPL,... NodoLoadLink,yesLL,NodoExtensometerLink,yesEL,Nodo3DExtensometerLink,... yes3DEL,NodoWireExtensometerLink,yesWEL,NodoMultiPointRodExtensometer,... yesMPBEL,NodoAnalogLink,yesAL,rAL,NodoCrackLink,yesCrL,... Nodo3DCrackLink,yes3DCrL,Nodo2DCrackLink,yes2DCrL,NodoStressMeter,yesSM,FileName) % Apro scrittura file fileID = fopen(FileName,'a'); fmt = '%s \r'; text = 'LastElab function started'; fprintf(fileID,fmt,text); Data(1,1) = cellstr(date); Data(1,2) = cellstr(time); %% Tunnel Link if yesTuL == 1 % Importo ultimo dato elaborato dei Tunnel Link NodeNumTuL = num2str(cell2mat(NodoTunnelLink(1,2))); % scarico i dati del primo nodo Tunnel Link NodeType = 'Tunnel Link'; % Dati Grezzi % --- Sezione --- comando = ['select Date, Time from RawDataView where Date = ''' ... date ''' and Time >= ''' time ''' and UnitName = ''' IDcentralina... ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum =' NodeNumTuL ' ']; curs = exec(conn,comando); curs = fetch(curs); D_num_ini = curs.Data; [rI,cI] = size(D_num_ini); if rI == 1 && cI == 1 % Non ci sono dati per la data "date" comando = ['select Date, Time from RawDataView where Date > ''' ... date ''' and UnitName = ''' IDcentralina... ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ... NodeType ''' and NodeNum =' NodeNumTuL ' ']; curs = exec(conn,comando); curs = fetch(curs); D_num_ini = curs.Data; [rI,cI] = size(D_num_ini); end % --- Arco Rovescio --- if date_AC <= now comando = ['select Date, Time from RawDataView where Date = ''' ... date_AC ''' and Time >= ''' time_AC ''' and UnitName = ''' IDcentralina... ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum =' num2str(Nodo_AC) ' ']; curs = exec(conn,comando); curs = fetch(curs); D_num_ini_AC = curs.Data; [rAC,cAC] = size(D_num_ini_AC); if rAC == 1 && cAC == 1 % Non ci sono dati per la data "date" comando = ['select Date, Time from RawDataView where Date > ''' ... date_AC ''' and UnitName = ''' IDcentralina... ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ... NodeType ''' and NodeNum =' Nodo_AC ' ']; curs = exec(conn,comando); curs = fetch(curs); D_num_ini_AC = curs.Data; [rAC,~] = size(D_num_ini_AC); end else rAC = rI; end if rI && cI == 1 Data_num_ini = 0; else Data_num_ini = [cell2mat(D_num_ini(:,1)) repmat(' ', [rI,1]) cell2mat(D_num_ini(:,2))]; end Data_num_ini = datenum(Data_num_ini); % tutte le date presenti nel DB grezzo % Dati Elaborati comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ... date ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' DTcatena ... ''' and NodeType = ''' NodeType ''' and NodeNum =' NodeNumTuL ' ']; curs = exec(conn,comando); curs = fetch(curs); Data_LastElab = curs.Data; [rLE,cLE] = size(Data_LastElab); Date_AC = [cell2mat(cellstr((date_AC))) repmat(' ', [1,1]) cell2mat(cellstr(time_AC))]; data1_AC = Date_AC; Date = [cell2mat(Data(1,1)) repmat(' ', [1,1]) cell2mat(Data(1,2))]; % Data definita sul sito data1a = datenum(Date); % Data definita sul sito data1b = Data_num_ini(1); % Data del primo dato grezzo % Nodi standard if data1b > data1a data1 = data1b; else data1 = data1a; end % Arco rovescio if datenum(data1_AC) < data1 data1_AC = data1; end if rLE==1 && cLE==1 datainiTuL = datestr(data1,'yyyy-mm-dd'); tempoiniTuL = datestr(data1,'HH:MM:SS'); NuovoZeroTuL = 0; DatiElabTunnelLink = []; margine = 0; else % Modifico il formato di data e ora in DATini. [rD,~] = size(Data_LastElab); Data_numero = [cell2mat(Data_LastElab(:,1)) repmat(' ', [rD,1]) cell2mat(Data_LastElab(:,2))]; Data_numero = datenum(Data_numero); % tutte le date presenti nel DB grezzo margine = 1; % margine di n gg prima if Ndatidespike > NdatiMedia Ndati = Ndatidespike; else Ndati = NdatiMedia; end if Wdevst > Ndati if margine < Wdevst/2 margine = round(Wdevst/2+1); end cont = Wdevst + margine; else if margine < Ndati/2 margine = round(Ndati/2+1); end cont = Ndati + margine; end if cont < 6 cont = 6; end [rDS,~] = size(Data_numero); if cont >= rDS cont = rDS-1; end Data_scarico = Data_numero(end-cont); % aggiornare contatori Data_scarico = datestr(Data_scarico,'yyyy-mm-dd HH:MM:SS'); data2 = datenum(Data_scarico); if data2 > data1 datainiTuL = datestr(data2,'yyyy-mm-dd'); tempoiniTuL = datestr(data2,'HH:MM:SS'); NuovoZeroTuL = 1; %1 else datainiTuL = datestr(data1,'yyyy-mm-dd'); tempoiniTuL = datestr(data1,'HH:MM:SS'); NuovoZeroTuL = 0; end end if NuovoZeroTuL == 1 % scarico gli ultimi dati elaborati NAN = 0; while NAN == 0 if datenum(datainiTuL) < datenum(date) datainiTuL = date; end NTunnelLink = cell2mat(NodoTunnelLink(:,2)); ii = 1; % contatore col = 16; % contatore colonne ay_TuL = zeros(rTuL,rI); ay_TuL_AC = zeros(rTuL,rAC); t_TuL = zeros(rTuL,rI); t_TuL_AC = zeros(rTuL,rAC); Condition = 0; while ii <= rTuL ini_col = col-15; nN = num2str(NTunnelLink(ii,1)); % Scarico di dati di spostamenti comando = ['select EventDate, EventTime, XShift, YShift, ZShift, X, Y, Z, Xstar, Zstar, HShift, HShift_local, T_node, Area, speed_local, acceleration_local from ElabDataView where EventDate = ''' ... Data_scarico(1,1:10) ''' and EventTime >= ''' Data_scarico(1,12:end) ''' and UnitName = ''' IDcentralina ''' and ToolNameID = '''... DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ''' nN ''' ']; curs = exec(conn,comando); curs = fetch(curs); DATnodoTuLd = curs.Data; % Scarico di dati di spostamenti comando = ['select EventDate, EventTime, XShift, YShift, ZShift, X, Y, Z, Xstar, Zstar, HShift, HShift_local, T_node, Area, speed_local, acceleration_local from ElabDataView where EventDate > ''' ... Data_scarico(1,1:10) ''' and UnitName = ''' IDcentralina ''' and ToolNameID = '''... DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ''' nN ''' ']; curs = exec(conn,comando); curs = fetch(curs); DATnodoTuL = curs.Data; [~,c1] = size(DATnodoTuL); [~,c2] = size(DATnodoTuLd); if c1 == c2 DATnodoTuL = [DATnodoTuLd; DATnodoTuL]; elseif c1 < c2 % solo giorno di riferimento DATnodoTuL = DATnodoTuLd; end [rDAT,cDAT] = size(DATnodoTuL); if rDAT==1 && cDAT==1 clear DatiElabTunnelLink fclose(fileID); cancellaDB(IDcentralina,DTcatena,Data_scarico,FileName,conn); fileID = fopen(FileName,'a'); fmt = '%s \r'; Condition = 1; break else if ii > 1 % Nodo successivo al primo [rDE,~] = size(DatiElabTunnelLink); if rDE ~= rDAT clear DatiElabTunnelLink fclose(fileID); cancellaDB(IDcentralina,DTcatena,Data_scarico,FileName,conn); fileID = fopen(FileName,'a'); fmt = '%s \r'; Condition = 1; break end end DatiElabTunnelLink(:,ini_col:col) = DATnodoTuL(:,:); end col = col+16; % scarico ay della prima data: mi serve dopo! % Nodi Standard if ii < Nodo_AC data1b = datestr(data1b,'yyyy-mm-dd'); time1b = time; comando = ['select Val1, Val6, Date, Time from RawDataView where Date = ''' ... data1b ''' and Time >= ''' time1b ''' and ToolNameID = ''' ... DTcatena ''' and UnitName = ''' IDcentralina ''' and NodeType = ''' ... NodeType ''' and NodeNum = ''' nN ''' ']; curs = exec(conn,comando); curs = fetch(curs); DATnodoAccY = curs.Data; [rD,cD] = size(DATnodoAccY); if cD > 1 Date = datenum([cell2mat(DATnodoAccY(:,3)) repmat(' ', [rD,1]) cell2mat(DATnodoAccY(:,4))]); % Elimino eventuali date doppie a = 2; while a <= rD if Date(a,1) == Date(a-1,1) Date(a,:) = []; DATnodoAccY(a,:) = []; rD = rD-1; else a = a+1; end end % ay dato = cellstr(DATnodoAccY(1,1))'; ay_TuL(ii,:) = str2double(dato); % T dato = cellstr(DATnodoAccY(1,2))'; t_TuL(ii,:) = str2double(dato); end else % Nodi Arco Rovescio data1c = datestr(date_AC,'yyyy-mm-dd'); if datenum(data1c) < now time1c = time_AC; comando = ['select Val1, Val6, Date, Time from RawDataView where Date = ''' ... data1c ''' and Time >= ''' time1c ''' and ToolNameID = ''' ... DTcatena ''' and UnitName = ''' IDcentralina ''' and NodeType = ''' ... NodeType ''' and NodeNum = ''' nN ''' ']; curs = exec(conn,comando); curs = fetch(curs); DATnodoAccY = curs.Data; [rD,cD] = size(DATnodoAccY); if cD > 1 Date = datenum([cell2mat(DATnodoAccY(:,3)) repmat(' ', [rD,1]) cell2mat(DATnodoAccY(:,4))]); % Elimino eventuali date doppie a = 2; while a <= rD if Date(a,1) == Date(a-1,1) Date(a,:) = []; DATnodoAccY(a,:) = []; rD = rD-1; else a = a+1; end end % ay dato = cellstr(DATnodoAccY(:,1))'; ay_TuL_AC(ii,:) = str2double(dato); % T dato = cellstr(DATnodoAccY(:,2))'; t_TuL_AC(ii,:) = str2double(dato); end else ay_TuL_AC = ay_TuL; t_TuL_AC = t_TuL; end end ii = ii+1; end if Condition == 1 datainiTuL = datenum(datainiTuL) - 1; Data_scarico = datestr(datainiTuL,'yyyy-mm-dd HH:MM:SS'); datainiTuL = Data_scarico; fileID = fopen(FileName,'a'); else Check = isnan(cell2mat(DatiElabTunnelLink(1,3:16:end))); for jj = 1:rTuL if Check == 1 datainiTuL = datenum(datainiTuL) - 1; Data_scarico = datestr(datainiTuL,'yyyy-mm-dd HH:MM:SS'); datainiTuL = Data_scarico; break else NAN = 1; end end end end text = 'Tunnel Link executed during LastElab function'; fprintf(fileID,fmt,text); else DatiElabTunnelLink = []; ay_TuL = []; ay_TuL_AC = []; t_TuL = []; t_TuL_AC = []; end else datainiTuL = []; tempoiniTuL = []; data1_AC = []; DatiElabTunnelLink = []; ay_TuL = []; t_TuL = []; ay_TuL_AC = []; t_TuL_AC = []; NuovoZeroTuL = 0; margine = []; end %% Radial Link if yesRL == 1 % Importo ultimo dato elaborato dei Radial Link NodeNumRL = num2str(cell2mat(NodoRadialLink(1,2))); % scarico i dati del primo nodo Radial Link NodeType = 'Radial Link'; % Scarico il primo dato grezzo comando = ['select Date, Time from RawDataView where Date = ''' ... date ''' and time >= ''' time ''' and UnitName = ''' IDcentralina... ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ... NodeType ''' and NodeNum =' NodeNumRL ' ']; curs = exec(conn,comando); curs = fetch(curs); D_num_ini = curs.Data; [rI,cI] = size(D_num_ini); if rI == 1 && cI == 1 % Non ci sono dati per la data date comando = ['select Date, Time from RawDataView where Date > ''' ... date ''' and UnitName = ''' IDcentralina... ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ... NodeType ''' and NodeNum =' NodeNumRL ' ']; curs = exec(conn,comando); curs = fetch(curs); D_num_ini = curs.Data; [rI,cI] = size(D_num_ini); end if rI && cI == 1 Data_num_ini = 0; else Data_num_ini = [cell2mat(D_num_ini(:,1)) repmat(' ', [rI,1]) cell2mat(D_num_ini(:,2))]; end Data_num_ini = datenum(Data_num_ini); % tutte le date presenti nel DB grezzo comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ... date ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' DTcatena ... ''' and NodeType = ''' NodeType ''' and NodeNum =' NodeNumRL ' ']; curs = exec(conn,comando); curs = fetch(curs); Data_LastElab = curs.Data; [rLE,cLE] = size(Data_LastElab); Date = [cell2mat(Data(1,1)) repmat(' ', [1,1]) cell2mat(Data(1,2))]; data1a = datenum(Date); data1b = Data_num_ini(1); if data1b>data1a data1 = data1b; else data1 = data1a; end if rLE==1 && cLE==1 datainiRL = datestr(data1,'yyyy-mm-dd'); tempoiniRL = datestr(data1,'HH:MM:SS'); NuovoZeroRL = 0; DatiElabRadialLink = []; margine = 0; else % Modifico il formato di data e ora in DATini. [rD,~] = size(Data_LastElab); Data_numero = [cell2mat(Data_LastElab(:,1)) repmat(' ', [rD,1]) cell2mat(Data_LastElab(:,2))]; Data_numero = datenum(Data_numero); % tutte le date presenti nel DB grezzo margine = 1; % margine if Ndatidespike > NdatiMedia Ndati = Ndatidespike; else Ndati = NdatiMedia; end if Wdevst > Ndati if margine < Wdevst/2 margine = round(Wdevst/2+1); end cont = Wdevst + margine; else if margine < Ndati/2 margine = round(Ndati/2+1); end cont = Ndati + margine; end if cont < 6 cont = 6; end [rDS,~] = size(Data_numero); if cont >= rDS cont = rDS-1; end Data_scarico = Data_numero(end-cont); % aggiornare contatori Data_scarico = datestr(Data_scarico,'yyyy-mm-dd HH:MM:SS'); data2 = datenum(Data_scarico); if data2 > data1 datainiRL = datestr(data2,'yyyy-mm-dd'); tempoiniRL = datestr(data2,'HH:MM:SS'); NuovoZeroRL = 1; else datainiRL = datestr(data1,'yyyy-mm-dd'); tempoiniRL = datestr(data1,'HH:MM:SS'); NuovoZeroRL = 0; end end if NuovoZeroRL == 1 % scarico gli ultimi dati elaborati NAN = 0; while NAN == 0 if datenum(datainiRL) < datenum(date) datainiRL = date; end NRadialLink = cell2mat(NodoRadialLink(:,2)); ii = 1; % contatore col = 9; % contatore colonne Condition = 0; while ii <= rRL ini_col = col-8; nN = num2str(NRadialLink(ii,1)); % Scarico di dati di spostamenti comando = ['select EventDate, EventTime, XShift, YShift, ZShift, X, Y, Z, T_node from ElabDataView where EventDate = ''' ... Data_scarico(1,1:10) ''' and EventTime >= ''' Data_scarico(1,12:end) ''' and UnitName = ''' IDcentralina ''' and ToolNameID = '''... DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ''' nN ''' ']; curs = exec(conn,comando); curs = fetch(curs); DATnodoRLd = curs.Data; % Scarico di dati di spostamenti comando = ['select EventDate, EventTime, XShift, YShift, ZShift, X, Y, Z, T_node from ElabDataView where EventDate > ''' ... Data_scarico(1,1:10) ''' and UnitName = ''' IDcentralina ''' and ToolNameID = '''... DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ''' nN ''' ']; curs = exec(conn,comando); curs = fetch(curs); DATnodoRL = curs.Data; [~,c1] = size(DATnodoRL); [~,c2] = size(DATnodoRLd); if c1 == c2 DATnodoRL = [DATnodoRLd; DATnodoRL]; elseif c1 < c2 % solo giorno di riferimento DATnodoRL = DATnodoRLd; end [rDAT,cDAT] = size(DATnodoRL); if rDAT==1 && cDAT==1 clear DatiElabRadialLink fclose(fileID); cancellaDB(IDcentralina,DTcatena,Data_scarico,FileName,conn); fileID = fopen(FileName,'a'); fmt = '%s \r'; Condition = 1; break else if ii > 1 % Nodo successivo al primo [rDE,~] = size(DatiElabRadialLink); if rDE ~= rDAT clear DatiElabRadialLink fclose(fileID); cancellaDB(IDcentralina,DTcatena,Data_scarico,FileName,conn); fileID = fopen(FileName,'a'); fmt = '%s \r'; Condition = 1; break end end DatiElabRadialLink(:,ini_col:col) = DATnodoRL(:,:); end ii = ii+1; col = col+9; end if Condition == 1 datainiRL = datenum(datainiRL) - 1; Data_scarico = datestr(datainiRL,'yyyy-mm-dd HH:MM:SS'); datainiRL = Data_scarico; fileID = fopen(FileName,'a'); else Check = isnan(cell2mat(DatiElabRadialLink(1,3:9:end))); for jj = 1:rRL if Check == 1 datainiRL = datenum(datainiRL) - 1; Data_scarico = datestr(datainiRL,'yyyy-mm-dd HH:MM:SS'); datainiRL = Data_scarico; break else NAN = 1; end end end end text = 'Radial Link executed during LastElab function'; fprintf(fileID,fmt,text); else DatiElabRadialLink = []; end else datainiRL = []; tempoiniRL = []; DatiElabRadialLink = []; NuovoZeroRL = 0; end %% Tilt Link H if yesTLH == 1 % Importo ultimo dato elaborato dei Tilt Link H NodeNumTLH = num2str(cell2mat(NodoTiltLinkH(1,2))); % scarico i dati del primo nodo Tilt Link H NodeType = 'Tilt Link H'; comando = ['select Date, Time from RawDataView where Date = ''' ... date ''' and time >= ''' time ''' and UnitName = ''' IDcentralina... ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ... NodeType ''' and NodeNum =' NodeNumTLH ' ']; curs = exec(conn,comando); curs = fetch(curs); D_num_ini = curs.Data; [rI,cI] = size(D_num_ini); if rI == 1 && cI == 1 % Non ci sono dati per la data date comando = ['select Date, Time from RawDataView where Date > ''' ... date ''' and UnitName = ''' IDcentralina... ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ... NodeType ''' and NodeNum =' NodeNumTLH ' ']; curs = exec(conn,comando); curs = fetch(curs); D_num_ini = curs.Data; [rI,cI] = size(D_num_ini); end if rI && cI == 1 Data_num_ini = 0; else Data_num_ini = [cell2mat(D_num_ini(:,1)) repmat(' ', [rI,1]) cell2mat(D_num_ini(:,2))]; end Data_num_ini = datenum(Data_num_ini); % tutte le date presenti nel DB grezzo comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ... date ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' DTcatena ... ''' and NodeType = ''' NodeType ''' and NodeNum =' NodeNumTLH ' ']; curs = exec(conn,comando); curs = fetch(curs); Data_LastElab = curs.Data; [rLE,cLE] = size(Data_LastElab); Date = [cell2mat(Data(1,1)) repmat(' ', [1,1]) cell2mat(Data(1,2))]; data1a = datenum(Date); data1b = Data_num_ini(1); if data1b>data1a data1 = data1b; else data1 = data1a; end if rLE==1 && cLE==1 datainiTLH = datestr(data1,'yyyy-mm-dd'); tempoiniTLH = datestr(data1,'HH:MM:SS'); NuovoZeroTLH = 0; DatiElabTiltLinkH = []; margine = 0; else % Modifico il formato di data e ora in DATini. [rD,~] = size(Data_LastElab); Data_numero = [cell2mat(Data_LastElab(:,1)) repmat(' ', [rD,1]) cell2mat(Data_LastElab(:,2))]; Data_numero = datenum(Data_numero); % tutte le date presenti nel DB grezzo margine = 1; % margine if Ndatidespike > NdatiMedia Ndati = Ndatidespike; else Ndati = NdatiMedia; end if Wdevst > Ndati if margine < Wdevst/2 margine = round(Wdevst/2+1); end cont = Wdevst + margine; else if margine < Ndati/2 margine = round(Ndati/2+1); end cont = Ndati + margine; end if cont < 6 cont = 6; end [rDS,~] = size(Data_numero); if cont >= rDS cont = rDS-1; end Data_scarico = Data_numero(end-cont); % aggiornare contatori Data_scarico = datestr(Data_scarico,'yyyy-mm-dd HH:MM:SS'); data2 = datenum(Data_scarico); if data2 > data1 datainiTLH = datestr(data2,'yyyy-mm-dd'); tempoiniTLH = datestr(data2,'HH:MM:SS'); NuovoZeroTLH = 1; else datainiTLH = datestr(data1,'yyyy-mm-dd'); tempoiniTLH = datestr(data1,'HH:MM:SS'); NuovoZeroTLH = 0; end end if NuovoZeroTLH == 1 % scarico gli ultimi dati elaborati NAN = 0; while NAN == 0 if datenum(datainiTLH) < datenum(date) datainiTLH = date; end NTiltLinkH = cell2mat(NodoTiltLinkH(:,2)); ii = 1; % contatore col = 13; % contatore colonne Condition = 0; while ii <= rTLH ini_col = col-12; nN = num2str(NTiltLinkH(ii,1)); % Scarico di dati di spostamenti comando = ['select EventDate, EventTime, YShift, ZShift, Y, Z, AlfaX, AlfaY, T_node, speed, speed_local, acceleration, acceleration_local from ElabDataView where EventDate = ''' ... Data_scarico(1,1:10) ''' and EventTime >= ''' Data_scarico(1,12:end) ''' and UnitName = ''' IDcentralina ''' and ToolNameID = '''... DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ''' nN ''' ']; curs = exec(conn,comando); curs = fetch(curs); DATnodoTLHd = curs.Data; % Scarico di dati di spostamenti comando = ['select EventDate, EventTime, YShift, ZShift, Y, Z, AlfaX, AlfaY, T_node, speed, speed_local, acceleration, acceleration_local from ElabDataView where EventDate > ''' ... Data_scarico(1,1:10) ''' and UnitName = ''' IDcentralina ''' and ToolNameID = '''... DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ''' nN ''' ']; curs = exec(conn,comando); curs = fetch(curs); DATnodoTLH = curs.Data; [~,c1] = size(DATnodoTLH); [~,c2] = size(DATnodoTLHd); if c1 == c2 DATnodoTLH = [DATnodoTLHd; DATnodoTLH]; elseif c1 < c2 % solo giorno di riferimento DATnodoTLH = DATnodoTLHd; end [rDAT,cDAT] = size(DATnodoTLH); if rDAT==1 && cDAT==1 clear DatiElabTiltLinkH fclose(fileID); cancellaDB(IDcentralina,DTcatena,Data_scarico,FileName,conn); fileID = fopen(FileName,'a'); fmt = '%s \r'; Condition = 1; break else if ii > 1 % Nodo successivo al primo [rDE,~] = size(DatiElabTiltLinkH); if rDE ~= rDAT clear DatiElabTiltLinkH fclose(fileID); cancellaDB(IDcentralina,DTcatena,Data_scarico,FileName,conn); fileID = fopen(FileName,'a'); fmt = '%s \r'; Condition = 1; break end end DatiElabTiltLinkH(:,ini_col:col) = DATnodoTLH(:,:); end ii = ii+1; col = col+13; end if Condition == 1 datainiTLH = datenum(datainiTLH) - 1; Data_scarico = datestr(datainiTLH,'yyyy-mm-dd HH:MM:SS'); datainiTLH = Data_scarico; fileID = fopen(FileName,'a'); else Check = isnan(cell2mat(DatiElabTiltLinkH(1,3:13:end))); for jj = 1:rTLH if Check == 1 datainiTLH = datenum(datainiTLH) - 1; Data_scarico = datestr(datainiTLH,'yyyy-mm-dd HH:MM:SS'); datainiTLH = Data_scarico; break else NAN = 1; end end end end text = 'Tilt Link H executed during LastElab function'; fprintf(fileID,fmt,text); else DatiElabTiltLinkH = []; end else datainiTLH = []; tempoiniTLH = []; DatiElabTiltLinkH = []; NuovoZeroTLH = 0; end %% Tilt Link HR H if yesTLHRH == 1 % Importo ultimo dato elaborato dei Tilt Link HR H NodeNumTLHRH = num2str(cell2mat(NodoTiltLinkHRH(1,2))); % scarico i dati del primo nodo Tilt Link HR H NodeType = 'Tilt Link HR H'; comando = ['select Date, Time from RawDataView where Date = ''' ... date ''' and time >= ''' time ''' and UnitName = ''' IDcentralina... ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ... NodeType ''' and NodeNum =' NodeNumTLHRH ' ']; curs = exec(conn,comando); curs = fetch(curs); D_num_ini = curs.Data; [rI,cI] = size(D_num_ini); if rI == 1 && cI == 1 % Non ci sono dati per la data date comando = ['select Date, Time from RawDataView where Date > ''' ... date ''' and UnitName = ''' IDcentralina... ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ... NodeType ''' and NodeNum =' NodeNumTLHRH ' ']; curs = exec(conn,comando); curs = fetch(curs); D_num_ini = curs.Data; [rI,cI] = size(D_num_ini); end if rI && cI == 1 Data_num_ini = 0; else Data_num_ini = [cell2mat(D_num_ini(:,1)) repmat(' ', [rI,1]) cell2mat(D_num_ini(:,2))]; end Data_num_ini = datenum(Data_num_ini); % tutte le date presenti nel DB grezzo comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ... date ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' DTcatena ... ''' and NodeType = ''' NodeType ''' and NodeNum =' NodeNumTLHRH ' ']; curs = exec(conn,comando); curs = fetch(curs); Data_LastElab = curs.Data; [rLE,cLE] = size(Data_LastElab); Date = [cell2mat(Data(1,1)) repmat(' ', [1,1]) cell2mat(Data(1,2))]; data1a = datenum(Date); data1b = Data_num_ini(1); if data1b>data1a data1 = data1b; else data1 = data1a; end if rLE==1 && cLE==1 datainiTLHRH = datestr(data1,'yyyy-mm-dd'); tempoiniTLHRH = datestr(data1,'HH:MM:SS'); NuovoZeroTLHRH = 0; DatiElabTiltLinkHRH = []; margine = 0; else % Modifico il formato di data e ora in DATini. [rD,~] = size(Data_LastElab); Data_numero = [cell2mat(Data_LastElab(:,1)) repmat(' ', [rD,1]) cell2mat(Data_LastElab(:,2))]; Data_numero = datenum(Data_numero); % tutte le date presenti nel DB grezzo margine = 1; % margine if Ndatidespike > NdatiMedia Ndati = Ndatidespike; else Ndati = NdatiMedia; end if Wdevst > Ndati if margine < Wdevst/2 margine = round(Wdevst/2+1); end cont = Wdevst + margine; else if margine < Ndati/2 margine = round(Ndati/2+1); end cont = Ndati + margine; end if cont < 6 cont = 6; end [rDS,~] = size(Data_numero); if cont >= rDS cont = rDS-1; end Data_scarico = Data_numero(end-cont); % aggiornare contatori Data_scarico = datestr(Data_scarico,'yyyy-mm-dd HH:MM:SS'); data2 = datenum(Data_scarico); if data2 > data1 datainiTLHRH = datestr(data2,'yyyy-mm-dd'); tempoiniTLHRH = datestr(data2,'HH:MM:SS'); NuovoZeroTLHRH = 1; else datainiTLHRH = datestr(data1,'yyyy-mm-dd'); tempoiniTLHRH = datestr(data1,'HH:MM:SS'); NuovoZeroTLHRH = 0; end end if NuovoZeroTLHRH == 1 % scarico gli ultimi dati elaborati NAN = 0; while NAN == 0 if datenum(datainiTLHRH) < datenum(date) datainiTLHRH = date; end NTiltLinkHRH = cell2mat(NodoTiltLinkHRH(:,2)); ii = 1; % contatore col = 13; % contatore colonne Condition = 0; while ii <= rTLH ini_col = col-12; nN = num2str(NTiltLinkHRH(ii,1)); % Scarico di dati di spostamenti comando = ['select EventDate, EventTime, YShift, ZShift, Y, Z, AlfaX, AlfaY, T_node, speed, speed_local, acceleration, acceleration_local from ElabDataView where EventDate = ''' ... Data_scarico(1,1:10) ''' and EventTime >= ''' Data_scarico(1,12:end) ''' and UnitName = ''' IDcentralina ''' and ToolNameID = '''... DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ''' nN ''' ']; curs = exec(conn,comando); curs = fetch(curs); DATnodoTLHRHd = curs.Data; % Scarico di dati di spostamenti comando = ['select EventDate, EventTime, YShift, ZShift, Y, Z, AlfaX, AlfaY, T_node, speed, speed_local, acceleration, acceleration_local from ElabDataView where EventDate > ''' ... Data_scarico(1,1:10) ''' and UnitName = ''' IDcentralina ''' and ToolNameID = '''... DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ''' nN ''' ']; curs = exec(conn,comando); curs = fetch(curs); DATnodoTLHRH = curs.Data; [~,c1] = size(DATnodoTLHRH); [~,c2] = size(DATnodoTLHRHd); if c1 == c2 DATnodoTLHRH = [DATnodoTLHRHd; DATnodoTLHRH]; elseif c1 < c2 % solo giorno di riferimento DATnodoTLHRH = DATnodoTLHRHd; end [rDAT,cDAT] = size(DATnodoTLHRH); if rDAT==1 && cDAT==1 clear DatiElabTiltLinkHR fclose(fileID); cancellaDB(IDcentralina,DTcatena,Data_scarico,FileName,conn); fileID = fopen(FileName,'a'); fmt = '%s \r'; Condition = 1; break else if ii > 1 % Nodo successivo al primo [rDE,~] = size(DatiElabTiltLinkHR); if rDE ~= rDAT clear DatiElabTiltLinkHR fclose(fileID); cancellaDB(IDcentralina,DTcatena,Data_scarico,FileName,conn); fileID = fopen(FileName,'a'); fmt = '%s \r'; Condition = 1; break end end DatiElabTiltLinkHRH(:,ini_col:col) = DATnodoTLHRH(:,:); end ii = ii+1; col = col+13; end if Condition == 1 datainiTLHRH = datenum(datainiTLHRH) - 1; Data_scarico = datestr(datainiTLHRH,'yyyy-mm-dd HH:MM:SS'); datainiTLHRH = Data_scarico; fileID = fopen(FileName,'a'); else Check = isnan(cell2mat(DatiElabTiltLinkHRH(1,3:13:end))); for jj = 1:rTLHRH if Check == 1 datainiTLHRH = datenum(datainiTLHRH) - 1; Data_scarico = datestr(datainiTLHRH,'yyyy-mm-dd HH:MM:SS'); datainiTLHRH = Data_scarico; break else NAN = 1; end end end end text = 'Tilt Link HR H executed during LastElab function'; fprintf(fileID,fmt,text); else DatiElabTiltLinkHRH = []; end else datainiTLHRH = []; tempoiniTLHRH = []; DatiElabTiltLinkHRH = []; NuovoZeroTLHRH = 0; end %% PreConv Link if yesPCL == 1 % Importo ultimo dato elaborato dei PreConv Link NodeNumPCL = num2str(cell2mat(NodoPreConvLink(1,2))); % scarico i dati del primo nodo PreConvLink NodeType = 'PreConv Link'; comando = ['select Date, Time from RawDataView where Date = ''' ... date ''' and time >= ''' time ''' and UnitName = ''' IDcentralina... ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ... NodeType ''' and NodeNum = ' NodeNumPCL ' ']; curs = exec(conn,comando); curs = fetch(curs); D_num_ini = curs.Data; [rI,cI] = size(D_num_ini); if rI == 1 && cI == 1 % Non ci sono dati per la data date comando = ['select Date, Time from RawDataView where Date > ''' ... date ''' and UnitName = ''' IDcentralina... ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ... NodeType ''' and NodeNum = ' NodeNumPCL ' ']; curs = exec(conn,comando); curs = fetch(curs); D_num_ini = curs.Data; [rI,cI] = size(D_num_ini); end if rI && cI == 1 Data_num_ini = 0; else Data_num_ini = [cell2mat(D_num_ini(:,1)) repmat(' ', [rI,1]) cell2mat(D_num_ini(:,2))]; end Data_num_ini = datenum(Data_num_ini); % tutte le date presenti nel DB grezzo comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ... date ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' DTcatena ... ''' and NodeType = ''' NodeType ''' and NodeNum = ' NodeNumPCL ' ']; curs = exec(conn,comando); curs = fetch(curs); Data_LastElab = curs.Data; [rLE,cLE] = size(Data_LastElab); Date = [cell2mat(Data(1,1)) repmat(' ', [1,1]) cell2mat(Data(1,2))]; data1a = datenum(Date); data1b = Data_num_ini(1); if data1b>data1a data1 = data1b; else data1 = data1a; end if rLE==1 && cLE==1 datainiPCL = datestr(data1,'yyyy-mm-dd'); tempoiniPCL = datestr(data1,'HH:MM:SS'); NuovoZeroPCL = 0; DatiElabPreConvLink = []; margine = 0; else % Modifico il formato di data e ora in DATini. [rD,~] = size(Data_LastElab); Data_numero = [cell2mat(Data_LastElab(:,1)) repmat(' ', [rD,1]) cell2mat(Data_LastElab(:,2))]; Data_numero = datenum(Data_numero); % tutte le date presenti nel DB grezzo margine = 1; % margine if Ndatidespike > NdatiMedia Ndati = Ndatidespike; else Ndati = NdatiMedia; end if Wdevst > Ndati if margine < Wdevst/2 margine = round(Wdevst/2+1); end cont = Wdevst + margine; else if margine < Ndati/2 margine = round(Ndati/2+1); end cont = Ndati + margine; end if cont < 6 cont = 6; end [rDS,~] = size(Data_numero); if cont >= rDS cont = rDS-1; end Data_scarico = Data_numero(end-cont); % aggiornare contatori Data_scarico = datestr(Data_scarico,'yyyy-mm-dd HH:MM:SS'); data2 = datenum(Data_scarico); if data2 > data1 datainiPCL = datestr(data2,'yyyy-mm-dd'); tempoiniPCL = datestr(data2,'HH:MM:SS'); NuovoZeroPCL = 1; else datainiPCL = datestr(data1,'yyyy-mm-dd'); tempoiniPCL = datestr(data1,'HH:MM:SS'); NuovoZeroPCL = 0; end end if NuovoZeroPCL == 1 % scarico gli ultimi dati elaborati NAN = 0; while NAN == 0 if datenum(datainiPCL) < datenum(date) datainiPCL = date; end NPreConvLink = cell2mat(NodoPreConvLink(:,2)); ii = 1; % contatore col = 13; % contatore colonne Condition = 0; while ii <= rPCL ini_col = col-12; nN = num2str(NPreConvLink(ii,1)); % Scarico di dati di spostamenti comando = ['select EventDate, EventTime, YShift, ZShift, Y, Z, AlfaX, AlfaY, T_node, speed, speed_local, acceleration, acceleration_local from ElabDataView where EventDate = ''' ... Data_scarico(1,1:10) ''' and EventTime >= ''' Data_scarico(1,12:end) ''' and UnitName = ''' IDcentralina ''' and ToolNameID = '''... DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ''' nN ''' ']; curs = exec(conn,comando); curs = fetch(curs); DATnodoPCLd = curs.Data; % Scarico di dati di spostamenti comando = ['select EventDate, EventTime, YShift, ZShift, Y, Z, AlfaX, AlfaY, T_node, speed, speed_local, acceleration, acceleration_local from ElabDataView where EventDate > ''' ... Data_scarico(1,1:10) ''' and UnitName = ''' IDcentralina ''' and ToolNameID = '''... DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ''' nN ''' ']; curs = exec(conn,comando); curs = fetch(curs); DATnodoPCL = curs.Data; [~,c1] = size(DATnodoPCL); [~,c2] = size(DATnodoPCLd); if c1 == c2 DATnodoPCL = [DATnodoPCLd; DATnodoPCL]; elseif c1 < c2 % solo giorno di riferimento DATnodoPCL = DATnodoPCLd; end [rDAT,cDAT] = size(DATnodoPCL); if rDAT==1 && cDAT==1 clear DatiElabPreConvLink fclose(fileID); cancellaDB(IDcentralina,DTcatena,Data_scarico,FileName,conn); fileID = fopen(FileName,'a'); fmt = '%s \r'; Condition = 1; break else if ii > 1 % Nodo successivo al primo [rDE,~] = size(DatiElabPreConvLink); if rDE ~= rDAT clear DatiElabPreConvLink fclose(fileID); cancellaDB(IDcentralina,DTcatena,Data_scarico,FileName,conn); fileID = fopen(FileName,'a'); fmt = '%s \r'; Condition = 1; break end end DatiElabPreConvLink(:,ini_col:col) = DATnodoPCL(:,:); end ii = ii+1; col = col+13; end if Condition == 1 datainiPCL = datenum(datainiPCL) - 1; Data_scarico = datestr(datainiPCL,'yyyy-mm-dd HH:MM:SS'); datainiPCL = Data_scarico; fileID = fopen(FileName,'a'); else Check = isnan(cell2mat(DatiElabPreConvLink(1,3:13:end))); for jj = 1:rPCL if Check == 1 datainiPCL = datenum(datainiPCL) - 1; Data_scarico = datestr(datainiPCL,'yyyy-mm-dd HH:MM:SS'); datainiPCL = Data_scarico; break else NAN = 1; end end end end text = 'PreConv Link executed during LastElab function'; fprintf(fileID,fmt,text); else DatiElabPreConvLink = []; end else datainiPCL = []; tempoiniPCL = []; DatiElabPreConvLink = []; NuovoZeroPCL = 0; end %% PreConv Link HR if yesPCLHR == 1 % Importo ultimo dato elaborato dei PreConv Link HR NodeNumPCLHR = num2str(cell2mat(NodoPreConvLinkHR(1,2))); % scarico i dati del primo nodo PreConvLinkHR NodeType = 'PreConvLink HR'; comando = ['select Date, Time from RawDataView where Date = ''' ... date ''' and time >= ''' time ''' and UnitName = ''' IDcentralina... ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ... NodeType ''' and NodeNum =' NodeNumPCLHR ' ']; curs = exec(conn,comando); curs = fetch(curs); D_num_ini = curs.Data; [rI,cI] = size(D_num_ini); if rI == 1 && cI == 1 % Non ci sono dati per la data date comando = ['select Date, Time from RawDataView where Date > ''' ... date ''' and UnitName = ''' IDcentralina... ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ... NodeType ''' and NodeNum =' NodeNumPCLHR ' ']; curs = exec(conn,comando); curs = fetch(curs); D_num_ini = curs.Data; [rI,cI] = size(D_num_ini); end if rI && cI == 1 Data_num_ini = 0; else Data_num_ini = [cell2mat(D_num_ini(:,1)) repmat(' ', [rI,1]) cell2mat(D_num_ini(:,2))]; end Data_num_ini = datenum(Data_num_ini); % tutte le date presenti nel DB grezzo comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ... date ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' DTcatena ... ''' and NodeType = ''' NodeType ''' and NodeNum =' NodeNumPCLHR ' ']; curs = exec(conn,comando); curs = fetch(curs); Data_LastElab = curs.Data; [rLE,cLE] = size(Data_LastElab); Date = [cell2mat(Data(1,1)) repmat(' ', [1,1]) cell2mat(Data(1,2))]; data1a = datenum(Date); data1b = Data_num_ini(1); if data1b>data1a data1 = data1b; else data1 = data1a; end if rLE==1 && cLE==1 datainiPCLHR = datestr(data1,'yyyy-mm-dd'); tempoiniPCLHR = datestr(data1,'HH:MM:SS'); NuovoZeroPCLHR = 0; DatiElabPreConvLinkHR = []; margine = 0; else % Modifico il formato di data e ora in DATini. [rD,~] = size(Data_LastElab); Data_numero = [cell2mat(Data_LastElab(:,1)) repmat(' ', [rD,1]) cell2mat(Data_LastElab(:,2))]; Data_numero = datenum(Data_numero); % tutte le date presenti nel DB grezzo margine = 1; % margine if Ndatidespike > NdatiMedia Ndati = Ndatidespike; else Ndati = NdatiMedia; end if Wdevst > Ndati if margine < Wdevst/2 margine = round(Wdevst/2+1); end cont = Wdevst + margine; else if margine < Ndati/2 margine = round(Ndati/2+1); end cont = Ndati + margine; end if cont < 6 cont = 6; end [rDS,~] = size(Data_numero); if cont >= rDS cont = rDS-1; end Data_scarico = Data_numero(end-cont); % aggiornare contatori Data_scarico = datestr(Data_scarico,'yyyy-mm-dd HH:MM:SS'); data2 = datenum(Data_scarico); if data2 > data1 datainiPCLHR = datestr(data2,'yyyy-mm-dd'); tempoiniPCLHR = datestr(data2,'HH:MM:SS'); NuovoZeroPCLHR = 1; else datainiPCLHR = datestr(data1,'yyyy-mm-dd'); tempoiniPCLHR = datestr(data1,'HH:MM:SS'); NuovoZeroPCLHR = 0; end end if NuovoZeroPCLHR == 1 % scarico gli ultimi dati elaborati NAN = 0; while NAN == 0 if datenum(datainiPCLHR) < datenum(date) datainiPCLHR = date; end NPreConvLinkHR = cell2mat(NodoPreConvLinkHR(:,2)); ii = 1; % contatore col = 13; % contatore colonne Condition = 0; while ii <= rPCLHR ini_col = col-12; nN = num2str(NPreConvLinkHR(ii,1)); % Scarico di dati di spostamenti comando = ['select EventDate, EventTime, YShift, ZShift, Y, Z, AlfaX, AlfaY, T_node, speed, speed_local, acceleration, acceleration_local from ElabDataView where EventDate = ''' ... Data_scarico(1,1:10) ''' and EventTime >= ''' Data_scarico(1,12:end) ''' and UnitName = ''' IDcentralina ''' and ToolNameID = '''... DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ''' nN ''' ']; curs = exec(conn,comando); curs = fetch(curs); DATnodoPCLHRd = curs.Data; % Scarico di dati di spostamenti comando = ['select EventDate, EventTime, YShift, ZShift, Y, Z, AlfaX, AlfaY, T_node, speed, speed_local, acceleration, acceleration_local from ElabDataView where EventDate > ''' ... Data_scarico(1,1:10) ''' and UnitName = ''' IDcentralina ''' and ToolNameID = '''... DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ''' nN ''' ']; curs = exec(conn,comando); curs = fetch(curs); DATnodoPCLHR = curs.Data; [~,c1] = size(DATnodoPCLHR); [~,c2] = size(DATnodoPCLHRd); if c1 == c2 DATnodoPCLHR = [DATnodoPCLHRd; DATnodoPCLHR]; elseif c1 < c2 % solo giorno di riferimento DATnodoPCLHR = DATnodoPCLHRd; end [rDAT,cDAT] = size(DATnodoPCLHR); if rDAT==1 && cDAT==1 clear DatiElabPreConvLinkHR fclose(fileID); cancellaDB(IDcentralina,DTcatena,Data_scarico,FileName,conn); fileID = fopen(FileName,'a'); fmt = '%s \r'; Condition = 1; break else if ii > 1 % Nodo successivo al primo [rDE,~] = size(DatiElabPreConvLinkHR); if rDE ~= rDAT clear DatiElabPreConvLinkHR fclose(fileID); cancellaDB(IDcentralina,DTcatena,Data_scarico,FileName,conn); fileID = fopen(FileName,'a'); fmt = '%s \r'; Condition = 1; break end end DatiElabPreConvLinkHR(:,ini_col:col) = DATnodoPCLHR(:,:); end ii = ii+1; col = col+13; end if Condition == 1 datainiPCLHR = datenum(datainiPCLHR) - 1; Data_scarico = datestr(datainiPCLHR,'yyyy-mm-dd HH:MM:SS'); datainiPCLHR = Data_scarico; fileID = fopen(FileName,'a'); else Check = isnan(cell2mat(DatiElabPreConvLinkHR(1,3:13:end))); for jj = 1:rPCLHR if Check == 1 datainiPCLHR = datenum(datainiPCLHR) - 1; Data_scarico = datestr(datainiPCLHR,'yyyy-mm-dd HH:MM:SS'); datainiPCLHR = Data_scarico; break else NAN = 1; end end end end text = 'PreConv Link HR executed during LastElab function'; fprintf(fileID,fmt,text); else DatiElabPreConvLinkHR = []; end else datainiPCLHR = []; tempoiniPCLHR = []; DatiElabPreConvLinkHR = []; NuovoZeroPCLHR = 0; end %% DistoMT Link if yesDM == 1 % Importo ultimo dato elaborato dei DistoMT Link NodeNumDM = num2str(cell2mat(NodoDistoMTLink(1,2))); % scarico i dati del primo nodo di questo tipo NodeType = 'DistoMT Link'; % Dati Grezzi % --- Sezione --- comando = ['select Date, Time from RawDataView where Date = ''' ... date ''' and Time >= ''' time ''' and UnitName = ''' IDcentralina... ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' NodeType ... ''' and NodeNum =' NodeNumDM ' ']; curs = exec(conn,comando); curs = fetch(curs); D_num_ini = curs.Data; [rI,cI] = size(D_num_ini); if rI == 1 && cI == 1 % Non ci sono dati per la data "date" comando = ['select Date, Time from RawDataView where Date > ''' ... date ''' and UnitName = ''' IDcentralina... ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ... NodeType ''' and NodeNum =' NodeNumDM ' ']; curs = exec(conn,comando); curs = fetch(curs); D_num_ini = curs.Data; [rI,cI] = size(D_num_ini); end if rI && cI == 1 Data_num_ini = 0; else Data_num_ini = [cell2mat(D_num_ini(:,1)) repmat(' ', [rI,1]) cell2mat(D_num_ini(:,2))]; end Data_num_ini = datenum(Data_num_ini); % tutte le date presenti nel DB grezzo % Dati Elaborati comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ... date ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' DTcatena ... ''' and NodeType = ''' NodeType ''' and NodeNum =' NodeNumDM ' ']; curs = exec(conn,comando); curs = fetch(curs); Data_LastElab = curs.Data; [rLE,cLE] = size(Data_LastElab); Date = [cell2mat(Data(1,1)) repmat(' ', [1,1]) cell2mat(Data(1,2))]; % Data definita sul sito data1a = datenum(Date); % Data definita sul sito data1b = Data_num_ini(1); % Data del primo dato grezzo % Nodi standard if data1b > data1a data1 = data1b; else data1 = data1a; end if rLE==1 && cLE==1 datainiDM = datestr(data1,'yyyy-mm-dd'); tempoiniDM = datestr(data1,'HH:MM:SS'); NuovoZeroDM = 0; DatiElabDistoMTLink = []; margine = 0; else % Modifico il formato di data e ora in DATini. [rD,~] = size(Data_LastElab); Data_numero = [cell2mat(Data_LastElab(:,1)) repmat(' ', [rD,1]) cell2mat(Data_LastElab(:,2))]; Data_numero = datenum(Data_numero); % tutte le date presenti nel DB grezzo margine = 1; % margine di n gg prima if Ndatidespike > NdatiMedia Ndati = Ndatidespike; else Ndati = NdatiMedia; end if Wdevst > Ndati if margine < Wdevst/2 margine = round(Wdevst/2+1); end cont = Wdevst + margine; else if margine < Ndati/2 margine = round(Ndati/2+1); end cont = Ndati + margine; end if cont < 6 cont = 6; end [rDS,~] = size(Data_numero); if cont >= rDS cont = rDS-1; end Data_scarico = Data_numero(end-cont); % aggiornare contatori Data_scarico = datestr(Data_scarico,'yyyy-mm-dd HH:MM:SS'); data2 = datenum(Data_scarico); if data2 > data1 datainiDM = datestr(data2,'yyyy-mm-dd'); tempoiniDM = datestr(data2,'HH:MM:SS'); NuovoZeroDM = 1; %1 else datainiDM = datestr(data1,'yyyy-mm-dd'); tempoiniDM = datestr(data1,'HH:MM:SS'); NuovoZeroDM = 0; end end if NuovoZeroDM == 1 % scarico gli ultimi dati elaborati NAN = 0; while NAN == 0 if datenum(datainiDM) < datenum(date) datainiDM = date; end NDistoMTLink = cell2mat(NodoDistoMTLink(:,2)); ii = 1; % contatore col = 12; % contatore colonne Condition = 0; while ii <= rDM ini_col = col-11; nN = num2str(NDistoMTLink(ii,1)); % Scarico di dati di spostamenti comando = ['select EventDate, EventTime, XShift, ZShift, X, '... 'Z, HShift, T_node, speed_local, acceleration_local, AlfaX, AlfaY '... 'from ElabDataView where EventDate = ''' Data_scarico(1,1:10) ... ''' and EventTime >= ''' Data_scarico(1,12:end) ''' and UnitName = '''... IDcentralina ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ... NodeType ''' and NodeNum = ''' nN ''' ']; curs = exec(conn,comando); curs = fetch(curs); DATnodoDLd = curs.Data; % Scarico di dati di spostamenti comando = ['select EventDate, EventTime, XShift, ZShift, X, '... 'Z, HShift, T_node, speed_local, acceleration_local, AlfaX, AlfaY '... 'from ElabDataView where EventDate > ''' Data_scarico(1,1:10) ... ''' and UnitName = ''' IDcentralina ''' and ToolNameID = '''... DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ''' nN ''' ']; curs = exec(conn,comando); curs = fetch(curs); DATnodoDM = curs.Data; [~,c1] = size(DATnodoDM); [~,c2] = size(DATnodoDMd); if c1 == c2 DATnodoDM = [DATnodoDMd; DATnodoDM]; elseif c1 < c2 % solo giorno di riferimento DATnodoDM = DATnodoDMd; end [rDAT,cDAT] = size(DATnodoDM); if rDAT==1 && cDAT==1 clear DatiElabDistoMTLink fclose(fileID); cancellaDB(IDcentralina,DTcatena,Data_scarico,FileName,conn); fileID = fopen(FileName,'a'); fmt = '%s \r'; Condition = 1; break else if ii > 1 % Nodo successivo al primo [rDE,~] = size(DatiElabDistoMTLink); if rDE ~= rDAT clear DatiElabDistoMTLink fclose(fileID); cancellaDB(IDcentralina,DTcatena,Data_scarico,FileName,conn); fileID = fopen(FileName,'a'); fmt = '%s \r'; Condition = 1; break end end DatiElabDistoMTLink(:,ini_col:col) = DATnodoDM(:,:); end col = col+12; ii = ii+1; end if Condition == 1 datainiDM = datenum(datainiDM) - 1; Data_scarico = datestr(datainiDM,'yyyy-mm-dd HH:MM:SS'); datainiDM = Data_scarico; fileID = fopen(FileName,'a'); else Check = isnan(cell2mat(DatiElabDistoMTLink(1,3:16:end))); for jj = 1:rTuL if Check == 1 datainiDM = datenum(datainiDM) - 1; Data_scarico = datestr(datainiDM,'yyyy-mm-dd HH:MM:SS'); datainiDM = Data_scarico; break else NAN = 1; end end end end text = 'DistoMT Link executed during LastElab function'; fprintf(fileID,fmt,text); else DatiElabDistoMTLink = []; end else datainiDM = []; tempoiniDM = []; DatiElabDistoMTLink = []; NuovoZeroDM = 0; end %% Pressure Link if yesPL == 1 % Importo ultimo dato elaborato dei Pressure Link NodeNumPL = num2str(cell2mat(NodoPressureLink(1,2))); % scarico i dati del primo nodo Pressure Link NodeType = 'Pressure Link'; comando = ['select Date, Time from RawDataView where Date = ''' ... date ''' and time >= ''' time ''' and UnitName = ''' IDcentralina... ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ... NodeType ''' and NodeNum =' NodeNumPL ' ']; curs = exec(conn,comando); curs = fetch(curs); D_num_ini = curs.Data; [rI,cI] = size(D_num_ini); if rI == 1 && cI == 1 % Non ci sono dati per la data date comando = ['select Date, Time from RawDataView where Date > ''' ... date ''' and UnitName = ''' IDcentralina... ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ... NodeType ''' and NodeNum =' NodeNumPL ' ']; curs = exec(conn,comando); curs = fetch(curs); D_num_ini = curs.Data; [rI,cI] = size(D_num_ini); end if rI && cI == 1 Data_num_ini = 0; else Data_num_ini = [cell2mat(D_num_ini(:,1)) repmat(' ', [rI,1]) cell2mat(D_num_ini(:,2))]; end Data_num_ini = datenum(Data_num_ini); % tutte le date presenti nel DB grezzo comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ... date ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' DTcatena ... ''' and NodeType = ''' NodeType ''' and NodeNum =' NodeNumPL ' ']; curs = exec(conn,comando); curs = fetch(curs); Data_LastElab = curs.Data; [rLE,cLE] = size(Data_LastElab); Date = [cell2mat(Data(1,1)) repmat(' ', [1,1]) cell2mat(Data(1,2))]; data1a = datenum(Date); data1b = Data_num_ini(1); if data1b>data1a data1 = data1b; else data1 = data1a; end if rLE==1 && cLE==1 datainiPL = datestr(data1,'yyyy-mm-dd'); tempoiniPL = datestr(data1,'HH:MM:SS'); margine = 0; NuovoZeroPrL = 0; else % Modifico il formato di data e ora in DATini. [rD,~] = size(Data_LastElab); Data_numero = [cell2mat(Data_LastElab(:,1)) repmat(' ', [rD,1]) cell2mat(Data_LastElab(:,2))]; Data_numero = datenum(Data_numero); % tutte le date presenti nel DB grezzo margine = 1; % margine if Ndatidespike > NdatiMedia Ndati = Ndatidespike; else Ndati = NdatiMedia; end if Wdevst > Ndati if margine < Wdevst/2 margine = round(Wdevst/2+1); end cont = Wdevst + margine; else if margine < Ndati/2 margine = round(Ndati/2+1); end cont = Ndati + margine; end if cont < 6 cont = 6; end [rDS,~] = size(Data_numero); if cont >= rDS cont = rDS-1; end Data_scarico = Data_numero(end-cont); % aggiornare contatori Data_scarico = datestr(Data_scarico,'yyyy-mm-dd HH:MM:SS'); data2 = datenum(Data_scarico); if data2 > data1 datainiPL = datestr(data2,'yyyy-mm-dd'); tempoiniPL = datestr(data2,'HH:MM:SS'); else datainiPL = datestr(data1,'yyyy-mm-dd'); tempoiniPL = datestr(data1,'HH:MM:SS'); end NuovoZeroPrL = 1; end text = 'Pressure Link executed during LastElab function'; fprintf(fileID,fmt,text); else datainiPL = []; tempoiniPL = []; NuovoZeroPrL = 0; end %% Load Link if yesLL == 1 % Importo ultimo dato elaborato dei Load Link NodeNumLL = num2str(cell2mat(NodoLoadLink(1,2))); % scarico i dati del primo nodo Load Link NodeType = 'Load Link'; comando = ['select Date, Time from RawDataView where Date = ''' ... date ''' and time >= ''' time ''' and UnitName = ''' IDcentralina... ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ... NodeType ''' and NodeNum =' NodeNumLL ' ']; curs = exec(conn,comando); curs = fetch(curs); D_num_ini = curs.Data; [rI,cI] = size(D_num_ini); if rI == 1 && cI == 1 % Non ci sono dati per la data date comando = ['select Date, Time from RawDataView where Date > ''' ... date ''' and UnitName = ''' IDcentralina... ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ... NodeType ''' and NodeNum =' NodeNumLL ' ']; curs = exec(conn,comando); curs = fetch(curs); D_num_ini = curs.Data; [rI,cI] = size(D_num_ini); end if rI && cI == 1 Data_num_ini = 0; else Data_num_ini = [cell2mat(D_num_ini(:,1)) repmat(' ', [rI,1]) cell2mat(D_num_ini(:,2))]; end Data_num_ini = datenum(Data_num_ini); % tutte le date presenti nel DB grezzo comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ... date ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' DTcatena ... ''' and NodeType = ''' NodeType ''' and NodeNum =' NodeNumLL ' ']; curs = exec(conn,comando); curs = fetch(curs); Data_LastElab = curs.Data; [rLE,cLE] = size(Data_LastElab); Date = [cell2mat(Data(1,1)) repmat(' ', [1,1]) cell2mat(Data(1,2))]; data1a = datenum(Date); data1b = Data_num_ini(1); if data1b>data1a data1 = data1b; else data1 = data1a; end if rLE==1 && cLE==1 datainiLL = datestr(data1,'yyyy-mm-dd'); tempoiniLL = datestr(data1,'HH:MM:SS'); margine = 0; NuovoZeroLL = 0; else % Modifico il formato di data e ora in DATini. [rD,~] = size(Data_LastElab); Data_numero = [cell2mat(Data_LastElab(:,1)) repmat(' ', [rD,1]) cell2mat(Data_LastElab(:,2))]; Data_numero = datenum(Data_numero); % tutte le date presenti nel DB grezzo margine = 1; % margine if Ndatidespike > NdatiMedia Ndati = Ndatidespike; else Ndati = NdatiMedia; end if Wdevst > Ndati if margine < Wdevst/2 margine = round(Wdevst/2+1); end cont = Wdevst + margine; else if margine < Ndati/2 margine = round(Ndati/2+1); end cont = Ndati + margine; end if cont < 6 cont = 6; end [rDS,~] = size(Data_numero); if cont >= rDS cont = rDS-1; end Data_scarico = Data_numero(end-cont); % aggiornare contatori Data_scarico = datestr(Data_scarico,'yyyy-mm-dd HH:MM:SS'); data2 = datenum(Data_scarico); if data2 > data1 datainiLL = datestr(data2,'yyyy-mm-dd'); tempoiniLL = datestr(data2,'HH:MM:SS'); else datainiLL = datestr(data1,'yyyy-mm-dd'); tempoiniLL = datestr(data1,'HH:MM:SS'); end NuovoZeroLL = 1; end text = 'Load Link executed during LastElab function'; fprintf(fileID,fmt,text); else datainiLL = []; tempoiniLL = []; NuovoZeroLL = 0; end %% Extensometer Link if yesEL == 1 % Importo ultimo dato elaborato dei Extensometer Link NodeNumEL = num2str(cell2mat(NodoExtensometerLink(1,2))); % scarico i dati del primo nodo Extensometer Link NodeType = 'Extensometer Link'; % Dati Grezzi comando = ['select Date, Time from RawDataView where Date = ''' ... date ''' and Time >= ''' time ''' and UnitName = ''' IDcentralina... ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ... NodeType ''' and NodeNum =' NodeNumEL ' ']; curs = exec(conn,comando); curs = fetch(curs); D_num_ini = curs.Data; [rI,cI] = size(D_num_ini); if rI == 1 && cI == 1 % Non ci sono dati per la data "date" comando = ['select Date, Time from RawDataView where Date > ''' ... date ''' and UnitName = ''' IDcentralina... ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ... NodeType ''' and NodeNum =' NodeNumEL ' ']; curs = exec(conn,comando); curs = fetch(curs); D_num_ini = curs.Data; [rI,cI] = size(D_num_ini); end if rI && cI == 1 Data_num_ini = 0; else Data_num_ini = [cell2mat(D_num_ini(:,1)) repmat(' ', [rI,1]) cell2mat(D_num_ini(:,2))]; end Data_num_ini = datenum(Data_num_ini); % tutte le date presenti nel DB grezzo % Dati elaborati comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ... date ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' DTcatena ... ''' and NodeType = ''' NodeType ''' and NodeNum =' NodeNumEL ' ']; curs = exec(conn,comando); curs = fetch(curs); Data_LastElab = curs.Data; [rLE,cLE] = size(Data_LastElab); Date = [cell2mat(Data(1,1)) repmat(' ', [1,1]) cell2mat(Data(1,2))]; Date_Rif_EL = Data_num_ini(1); data1a = datenum(Date); data1b = Data_num_ini(1); if data1b>data1a data1 = data1b; else data1 = data1a; end if rLE==1 && cLE==1 datainiEL = datestr(data1,'yyyy-mm-dd'); tempoiniEL = datestr(data1,'HH:MM:SS'); margine = 0; NuovoZeroEL = 0; else % Modifico il formato di data e ora in DATini. [rD,~] = size(Data_LastElab); Data_numero = [cell2mat(Data_LastElab(:,1)) repmat(' ', [rD,1]) cell2mat(Data_LastElab(:,2))]; Data_numero = datenum(Data_numero); % tutte le date presenti nel DB grezzo margine = 1; % margine if Ndatidespike > NdatiMedia Ndati = Ndatidespike; else Ndati = NdatiMedia; end if Wdevst > Ndati if margine < Wdevst/2 margine = round(Wdevst/2+1); end cont = Wdevst + margine; else if margine < Ndati/2 margine = round(Ndati/2+1); end cont = Ndati + margine; end if cont < 6 cont = 6; end [rDS,~] = size(Data_numero); if cont >= rDS cont = rDS-1; end Data_scarico = Data_numero(end-cont); % aggiornare contatori Data_scarico = datestr(Data_scarico,'yyyy-mm-dd HH:MM:SS'); data2 = datenum(Data_scarico); if data2 > data1 datainiEL = datestr(data2,'yyyy-mm-dd'); tempoiniEL = datestr(data2,'HH:MM:SS'); else datainiEL = datestr(data1,'yyyy-mm-dd'); tempoiniEL = datestr(data2,'HH:MM:SS'); end NuovoZeroEL = 1; end text = 'Extensometer Link executed during LastElab function'; fprintf(fileID,fmt,text); else datainiEL = []; tempoiniEL = []; Date_Rif_EL = []; NuovoZeroEL = 0; end %% 3D Extensometer Link if yes3DEL == 1 % Importo ultimo dato elaborato dei 3D Extensometer Link NodeNum3DEL = num2str(cell2mat(Nodo3DExtensometerLink(1,2))); % scarico i dati del primo nodo 3D Extensometer Link NodeType = '3D Extensometer Link'; comando = ['select Date, Time from RawDataView where Date = ''' ... date ''' and time >= ''' time ''' and UnitName = ''' IDcentralina... ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ... NodeType ''' and NodeNum =' NodeNum3DEL ' ']; curs = exec(conn,comando); curs = fetch(curs); D_num_ini = curs.Data; [rI,cI] = size(D_num_ini); if rI == 1 && cI == 1 % Non ci sono dati per la data date comando = ['select Date, Time from RawDataView where Date > ''' ... date ''' and UnitName = ''' IDcentralina... ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ... NodeType ''' and NodeNum =' NodeNum3DEL ' ']; curs = exec(conn,comando); curs = fetch(curs); D_num_ini = curs.Data; [rI,cI] = size(D_num_ini); end if rI && cI == 1 Data_num_ini = 0; else Data_num_ini = [cell2mat(D_num_ini(:,1)) repmat(' ', [rI,1]) cell2mat(D_num_ini(:,2))]; end Data_num_ini = datenum(Data_num_ini); % tutte le date presenti nel DB grezzo comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ... date ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' DTcatena ... ''' and NodeType = ''' NodeType ''' and NodeNum =' NodeNum3DEL ' ']; curs = exec(conn,comando); curs = fetch(curs); Data_LastElab = curs.Data; [rLE,cLE] = size(Data_LastElab); Date = [cell2mat(Data(1,1)) repmat(' ', [1,1]) cell2mat(Data(1,2))]; Date_Rif_3DEL = Data_num_ini(1); data1a = datenum(Date); data1b = Data_num_ini(1); if data1b>data1a data1 = data1b; else data1 = data1a; end if rLE==1 && cLE==1 dataini3DEL = datestr(data1,'yyyy-mm-dd'); tempoini3DEL = datestr(data1,'HH:MM:SS'); margine = 0; NuovoZero3DEL = 0; else % Modifico il formato di data e ora in DATini. [rD,~] = size(Data_LastElab); Data_numero = [cell2mat(Data_LastElab(:,1)) repmat(' ', [rD,1]) cell2mat(Data_LastElab(:,2))]; Data_numero = datenum(Data_numero); % tutte le date presenti nel DB grezzo margine = 1; % margine if Ndatidespike > NdatiMedia Ndati = Ndatidespike; else Ndati = NdatiMedia; end if Wdevst > Ndati if margine < Wdevst/2 margine = round(Wdevst/2+1); end cont = Wdevst + margine; else if margine < Ndati/2 margine = round(Ndati/2+1); end cont = Ndati + margine; end if cont < 6 cont = 6; end [rDS,~] = size(Data_numero); if cont >= rDS cont = rDS-1; end Data_scarico = Data_numero(end-cont); % aggiornare contatori Data_scarico = datestr(Data_scarico,'yyyy-mm-dd HH:MM:SS'); data2 = datenum(Data_scarico); if data2 > data1 dataini3DEL = datestr(data2,'yyyy-mm-dd'); tempoini3DEL = datestr(data2,'HH:MM:SS'); else dataini3DEL = datestr(data1,'yyyy-mm-dd'); tempoini3DEL = datestr(data1,'HH:MM:SS'); end end text = '3D Extensometer Link executed during LastElab function'; fprintf(fileID,fmt,text); NuovoZero3DEL = 1; else dataini3DEL = []; tempoini3DEL = []; Date_Rif_3DEL = []; NuovoZero3DEL = 0; end %% Wire Extensometer Link if yesWEL == 1 % Importo ultimo dato elaborato dei Wire Extensometer Link NodeNumWEL = num2str(cell2mat(NodoWireExtensometerLink(1,2))); % scarico i dati del primo nodo Wire Extensometer Link NodeType = 'Wire Extensometer Link'; comando = ['select Date, Time from RawDataView where Date = ''' ... date ''' and time >= ''' time ''' and UnitName = ''' IDcentralina... ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ... NodeType ''' and NodeNum =' NodeNumWEL ' ']; curs = exec(conn,comando); curs = fetch(curs); D_num_ini = curs.Data; [rI,cI] = size(D_num_ini); if rI == 1 && cI == 1 % Non ci sono dati per la data date comando = ['select Date, Time from RawDataView where Date > ''' ... date ''' and UnitName = ''' IDcentralina... ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ... NodeType ''' and NodeNum =' NodeNumWEL ' ']; curs = exec(conn,comando); curs = fetch(curs); D_num_ini = curs.Data; [rI,cI] = size(D_num_ini); end if rI && cI == 1 Data_num_ini = 0; else Data_num_ini = [cell2mat(D_num_ini(:,1)) repmat(' ', [rI,1]) cell2mat(D_num_ini(:,2))]; end Data_num_ini = datenum(Data_num_ini); % tutte le date presenti nel DB grezzo comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ... date ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' DTcatena ... ''' and NodeType = ''' NodeType ''' and NodeNum =' NodeNumWEL ' ']; curs = exec(conn,comando); curs = fetch(curs); Data_LastElab = curs.Data; [rLE,cLE] = size(Data_LastElab); Date = [cell2mat(Data(1,1)) repmat(' ', [1,1]) cell2mat(Data(1,2))]; data1a = datenum(Date); data1b = Data_num_ini(1); if data1b>data1a data1 = data1b; else data1 = data1a; end if rLE==1 && cLE==1 datainiWEL = datestr(data1,'yyyy-mm-dd'); tempoiniWEL = datestr(data1,'HH:MM:SS'); margine = 0; NuovoZeroWEL = 0; else % Modifico il formato di data e ora in DATini. [rD,~] = size(Data_LastElab); Data_numero = [cell2mat(Data_LastElab(:,1)) repmat(' ', [rD,1]) cell2mat(Data_LastElab(:,2))]; Data_numero = datenum(Data_numero); % tutte le date presenti nel DB grezzo margine = 1; % margine if Ndatidespike > NdatiMedia Ndati = Ndatidespike; else Ndati = NdatiMedia; end if Wdevst > Ndati if margine < Wdevst/2 margine = round(Wdevst/2+1); end cont = Wdevst + margine; else if margine < Ndati/2 margine = round(Ndati/2+1); end cont = Ndati + margine; end if cont < 6 cont = 6; end [rDS,~] = size(Data_numero); if cont >= rDS cont = rDS-1; end Data_scarico = Data_numero(end-cont); % aggiornare contatori Data_scarico = datestr(Data_scarico,'yyyy-mm-dd HH:MM:SS'); data2 = datenum(Data_scarico); if data2 > data1 datainiWEL = datestr(data2,'yyyy-mm-dd'); tempoiniWEL = datestr(data2,'HH:MM:SS'); else datainiWEL = datestr(data1,'yyyy-mm-dd'); tempoiniWEL = datestr(data1,'HH:MM:SS'); end NuovoZeroWEL = 1; end text = 'Wire Extensometer Link executed during LastElab function'; fprintf(fileID,fmt,text); else datainiWEL = []; tempoiniWEL = []; NuovoZeroWEL = 0; end %% Multi Point Borehole Extensometer Link if yesMPBEL == 1 % Importo ultimo dato elaborato dei Multi Point Borehole Extensometer Link NodeNumMPBEL = num2str(cell2mat(NodoMultiPointRodExtensometer(1,2))); % scarico i dati del primo nodo MultiPoint Rod Extensometer NodeType = 'Multipoint borehole rod extensometer'; comando = ['select Date, Time from RawDataView where Date = ''' ... date ''' and time >= ''' time ''' and UnitName = ''' IDcentralina... ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ... NodeType ''' and NodeNum = ' NodeNumMPBEL ' ']; curs = exec(conn,comando); curs = fetch(curs); D_num_ini = curs.Data; [rI,cI] = size(D_num_ini); if rI == 1 && cI == 1 % Non ci sono dati per la data date comando = ['select Date, Time from RawDataView where Date > ''' ... date ''' and UnitName = ''' IDcentralina... ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ... NodeType ''' and NodeNum = ' NodeNumMPBEL ' ']; curs = exec(conn,comando); curs = fetch(curs); D_num_ini = curs.Data; [rI,cI] = size(D_num_ini); end if rI && cI == 1 Data_num_ini = 0; else Data_num_ini = [cell2mat(D_num_ini(:,1)) repmat(' ', [rI,1]) cell2mat(D_num_ini(:,2))]; end Data_num_ini = datenum(Data_num_ini); % tutte le date presenti nel DB grezzo comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ... date ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' DTcatena ... ''' and NodeType = ''' NodeType ''' and NodeNum =' NodeNumMPBEL ' ']; curs = exec(conn,comando); curs = fetch(curs); Data_LastElab = curs.Data; [rLE,cLE] = size(Data_LastElab); Date = [cell2mat(Data(1,1)) repmat(' ', [1,1]) cell2mat(Data(1,2))]; data1a = datenum(Date); data1b = Data_num_ini(1); if data1b>data1a data1 = data1b; else data1 = data1a; end if rLE==1 && cLE==1 datainiMPBEL = datestr(data1,'yyyy-mm-dd'); tempoiniMPBEL = datestr(data1,'HH:MM:SS'); margine = 0; NuovoZeroMPBEL = 0; else % Modifico il formato di data e ora in DATini. [rD,~] = size(Data_LastElab); Data_numero = [cell2mat(Data_LastElab(:,1)) repmat(' ', [rD,1]) cell2mat(Data_LastElab(:,2))]; Data_numero = datenum(Data_numero); % tutte le date presenti nel DB grezzo margine = 1; % margine if Ndatidespike > NdatiMedia Ndati = Ndatidespike; else Ndati = NdatiMedia; end if Wdevst > Ndati if margine < Wdevst/2 margine = round(Wdevst/2+1); end cont = Wdevst + margine; else if margine < Ndati/2 margine = round(Ndati/2+1); end cont = Ndati + margine; end if cont < 6 cont = 6; end [rDS,~] = size(Data_numero); if cont >= rDS cont = rDS-1; end Data_scarico = Data_numero(end-cont); % aggiornare contatori Data_scarico = datestr(Data_scarico,'yyyy-mm-dd HH:MM:SS'); data2 = datenum(Data_scarico); if data2 > data1 datainiMPBEL = datestr(data2,'yyyy-mm-dd'); tempoiniMPBEL = datestr(data2,'HH:MM:SS'); else datainiMPBEL = datestr(data1,'yyyy-mm-dd'); tempoiniMPBEL = datestr(data1,'HH:MM:SS'); end end NuovoZeroMPBEL = 1; else datainiMPBEL = []; tempoiniMPBEL = []; NuovoZeroMPBEL = 0; end %% Analog Link if yesAL == 1 % Importo ultimo dato elaborato dei Analog Link AnalogCh = cell2mat(NodoAnalogLink(:,5)); NodeNumAL = num2str(cell2mat(NodoAnalogLink(1,2))); % scarico i dati del primo nodo Analog Link NodeType = 'Analog Link'; comando = ['select Date, Time from RawDataView where Date = ''' ... date ''' and time >= ''' time ''' and UnitName = ''' IDcentralina... ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ... NodeType ''' and NodeNum =' NodeNumAL ' ']; curs = exec(conn,comando); curs = fetch(curs); D_num_ini = curs.Data; [rI,cI] = size(D_num_ini); if rI == 1 && cI == 1 % Non ci sono dati per la data date comando = ['select Date, Time from RawDataView where Date > ''' ... date ''' and UnitName = ''' IDcentralina... ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ... NodeType ''' and NodeNum =' NodeNumAL ' ']; curs = exec(conn,comando); curs = fetch(curs); D_num_ini = curs.Data; [rI,cI] = size(D_num_ini); end if rI && cI == 1 Data_num_ini = 0; else Data_num_ini = [cell2mat(D_num_ini(:,1)) repmat(' ', [rI,1]) cell2mat(D_num_ini(:,2))]; end Data_num_ini = datenum(Data_num_ini); % tutte le date presenti nel DB grezzo comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ... date ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' DTcatena ... ''' and NodeType = ''' NodeType ''' and NodeNum =' NodeNumAL ' ']; curs = exec(conn,comando); curs = fetch(curs); Data_LastElab = curs.Data; [rLE,cLE] = size(Data_LastElab); Date = [cell2mat(Data(1,1)) repmat(' ', [1,1]) cell2mat(Data(1,2))]; data1a = datenum(Date); data1b = Data_num_ini(1); if data1b>data1a data1 = data1b; else data1 = data1a; end if rLE==1 && cLE==1 datainiAL = datestr(data1,'yyyy-mm-dd'); tempoiniAL = datestr(data1,'HH:MM:SS'); NuovoZeroAL = 0; DatiElabAnalogLink = []; margine = 0; NuovoZeroAL = 0; else % Modifico il formato di data e ora in DATini. [rD,~] = size(Data_LastElab); Data_numero = [cell2mat(Data_LastElab(:,1)) repmat(' ', [rD,1]) cell2mat(Data_LastElab(:,2))]; Data_numero = datenum(Data_numero); % tutte le date presenti nel DB grezzo margine = 1; % margine if Ndatidespike > NdatiMedia Ndati = Ndatidespike; else Ndati = NdatiMedia; end if Wdevst > Ndati if margine < Wdevst/2 margine = round(Wdevst/2+1); end cont = Wdevst + margine; else if margine < Ndati/2 margine = round(Ndati/2+1); end cont = Ndati + margine; end if cont < 6 cont = 6; end [rDS,~] = size(Data_numero); if cont >= rDS cont = rDS-1; end Data_scarico = Data_numero(end-cont); % aggiornare contatori Data_scarico = datestr(Data_scarico,'yyyy-mm-dd HH:MM:SS'); data2 = datenum(Data_scarico); if data2 > data1 datainiAL = datestr(data2,'yyyy-mm-dd'); tempoiniAL = datestr(data2,'HH:MM:SS'); NuovoZeroAL = 1; else datainiAL = datestr(data1,'yyyy-mm-dd'); tempoiniAL = datestr(data1,'HH:MM:SS'); NuovoZeroAL = 0; end end if NuovoZeroAL == 1 % scarico gli ultimi dati elaborati NAN = 0; while NAN == 0 NAnalogLink = cell2mat(NodoAnalogLink(:,2)); ii = 1; % contatore n = 1; col = 2+AnalogCh(1,1); % contatore colonne while ii <= rAL ini_col = col-AnalogCh(n,1)-1; nN = num2str(NAnalogLink(ii,1)); if AnalogCh == 1 comando = ['select EventDate, EventTime, XShift from ElabDataView where EventDate = ''' ... Data_scarico ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' DTcatena... ''' and NodeType = ''' NodeType ''' and NodeNum = ''' nN ''' ']; elseif AnalogCh == 2 comando = ['select EventDate, EventTime, XShift, YShift from ElabDataView where EventDate = ''' ... Data_scarico ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' DTcatena... ''' and NodeType = ''' NodeType ''' and NodeNum = ''' nN ''' ']; elseif AnalogCh == 3 comando = ['select EventDate, EventTime, XShift, YShift, ZShift from ElabDataView where EventDate = ''' ... Data_scarico ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' DTcatena... ''' and NodeType = ''' NodeType ''' and NodeNum = ''' nN ''' ']; elseif AnalogCh == 4 comando = ['select EventDate, EventTime, XShift, YShift, ZShift, X from ElabDataView where EventDate = ''' ... Data_scarico ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' DTcatena... ''' and NodeType = ''' NodeType ''' and NodeNum = ''' nN ''' ']; elseif AnalogCh == 5 comando = ['select EventDate, EventTime, XShift, YShift, ZShift, X, Y from ElabDataView where EventDate = ''' ... Data_scarico ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' DTcatena... ''' and NodeType = ''' NodeType ''' and NodeNum = ''' nN ''' ']; elseif AnalogCh == 6 comando = ['select EventDate, EventTime, XShift, YShift, ZShift, X, Y, Z from ElabDataView where EventDate = ''' ... Data_scarico ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' DTcatena... ''' and NodeType = ''' NodeType ''' and NodeNum = ''' nN ''' ']; end curs = exec(conn,comando); curs = fetch(curs); DATnodoAL = curs.Data; DatiElabAnalogLink(:,ini_col:col) = DATnodoAL(:,:); ii = ii+1; if ii < rAL % non è l'ultimo sensore if AnalogCh(n+1,1) == 1 col = col+3; elseif AnalogCh(n+1,1) == 2 col = col+4; elseif AnalogCh(n+1,1) == 3 col = col+5; elseif AnalogCh(n+1,1) == 4 col = col+6; elseif AnalogCh(n+1,1) == 5 col = col+7; elseif AnalogCh(n+1,1) == 6 col = col+8; end end if AnalogCh(n+1,1) == 1 Check = isnan(cell2mat(DatiElabTiltLinkHRH(1,3:3:end))); elseif AnalogCh(n+1,1) == 2 Check = isnan(cell2mat(DatiElabTiltLinkHRH(1,3:4:end))); elseif AnalogCh(n+1,1) == 3 Check = isnan(cell2mat(DatiElabTiltLinkHRH(1,3:5:end))); elseif AnalogCh(n+1,1) == 4 Check = isnan(cell2mat(DatiElabTiltLinkHRH(1,3:6:end))); elseif AnalogCh(n+1,1) == 5 Check = isnan(cell2mat(DatiElabTiltLinkHRH(1,3:7:end))); elseif AnalogCh(n+1,1) == 6 Check = isnan(cell2mat(DatiElabTiltLinkHRH(1,3:8:end))); end for jj = 1:rAL if Check == 1 datainiAL = datenum(datainiAL) - 1; Data_scarico = datestr(datainiAL,'yyyy-mm-dd HH:MM:SS'); datainiAL = Data_scarico; break else NAN = 1; end end end end text = 'Analog Link executed during LastElab function'; fprintf(fileID,fmt,text); else DatiElabAnalogLink = []; end else datainiAL = []; tempoiniAL = []; DatiElabAnalogLink = []; NuovoZeroAL = 0; end %% Crack Link if yesCrL == 1 % Importo ultimo dato elaborato dei Crack Link NodeNumCrL = num2str(cell2mat(NodoCrackLink(1,2))); % scarico i dati del primo nodo Crack Link NodeType = 'Crack Link'; comando = ['select Date, Time from RawDataView where Date = ''' ... date ''' and time >= ''' time ''' and UnitName = ''' IDcentralina... ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ... NodeType ''' and NodeNum =' NodeNumCrL ' ']; curs = exec(conn,comando); curs = fetch(curs); D_num_ini = curs.Data; [rI,cI] = size(D_num_ini); if rI == 1 && cI == 1 % Non ci sono dati per la data date comando = ['select Date, Time from RawDataView where Date > ''' ... date ''' and UnitName = ''' IDcentralina... ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ... NodeType ''' and NodeNum =' NodeNumCrL ' ']; curs = exec(conn,comando); curs = fetch(curs); D_num_ini = curs.Data; [rI,cI] = size(D_num_ini); end if rI && cI == 1 Data_num_ini = 0; else Data_num_ini = [cell2mat(D_num_ini(:,1)) repmat(' ', [rI,1]) cell2mat(D_num_ini(:,2))]; end Data_num_ini = datenum(Data_num_ini); % tutte le date presenti nel DB grezzo comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ... date ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' DTcatena ... ''' and NodeType = ''' NodeType ''' and NodeNum =' NodeNumCrL ' ']; curs = exec(conn,comando); curs = fetch(curs); Data_LastElab = curs.Data; [rLE,cLE] = size(Data_LastElab); Date = [cell2mat(Data(1,1)) repmat(' ', [1,1]) cell2mat(Data(1,2))]; data1a = datenum(Date); data1b = Data_num_ini(1); if data1b>data1a data1 = data1b; else data1 = data1a; end if rLE==1 && cLE==1 datainiCrL = datestr(data1,'yyyy-mm-dd'); tempoiniCrL = datestr(data1,'HH:MM:SS'); NuovoZeroCrL = 0; margine = 0; else % Modifico il formato di data e ora in DATini. [rD,~] = size(Data_LastElab); Data_numero = [cell2mat(Data_LastElab(:,1)) repmat(' ', [rD,1]) cell2mat(Data_LastElab(:,2))]; Data_numero = datenum(Data_numero); % tutte le date presenti nel DB grezzo margine = 1; % margine if Ndatidespike > NdatiMedia Ndati = Ndatidespike; else Ndati = NdatiMedia; end if Wdevst > Ndati if margine < Wdevst/2 margine = round(Wdevst/2+1); end cont = Wdevst + margine; else if margine < Ndati/2 margine = round(Ndati/2+1); end cont = Ndati + margine; end if cont < 6 cont = 6; end [rDS,~] = size(Data_numero); if cont >= rDS cont = rDS-1; end Data_scarico = Data_numero(end-cont); % aggiornare contatori Data_scarico = datestr(Data_scarico,'yyyy-mm-dd HH:MM:SS'); data2 = datenum(Data_scarico); if data2 > data1 datainiCrL = datestr(data2,'yyyy-mm-dd'); tempoiniCrL = datestr(data2,'HH:MM:SS'); else datainiCrL = datestr(data1,'yyyy-mm-dd'); tempoiniCrL = datestr(data1,'HH:MM:SS'); end NuovoZeroCrL = 1; end text = 'Crack Link executed during LastElab function'; fprintf(fileID,fmt,text); else datainiCrL = []; tempoiniCrL = []; NuovoZeroCrL = 0; end %% 3D Crack Link if yes3DCrL == 1 % Importo ultimo dato elaborato dei 3D Crack Link NodeNum3DCrL = num2str(cell2mat(Nodo3DCrackLink(1,2))); % scarico i dati del primo nodo Crack Link NodeType = '3D Crack Link'; comando = ['select Date, Time from RawDataView where Date = ''' ... date ''' and time >= ''' time ''' and UnitName = ''' IDcentralina... ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ... NodeType ''' and NodeNum =' NodeNum3DCrL ' ']; curs = exec(conn,comando); curs = fetch(curs); D_num_ini = curs.Data; [rI,cI] = size(D_num_ini); if rI == 1 && cI == 1 % Non ci sono dati per la data date comando = ['select Date, Time from RawDataView where Date > ''' ... date ''' and UnitName = ''' IDcentralina... ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ... NodeType ''' and NodeNum =' NodeNum3DCrL ' ']; curs = exec(conn,comando); curs = fetch(curs); D_num_ini = curs.Data; [rI,cI] = size(D_num_ini); end if rI && cI == 1 Data_num_ini = 0; else Data_num_ini = [cell2mat(D_num_ini(:,1)) repmat(' ', [rI,1]) cell2mat(D_num_ini(:,2))]; end Data_num_ini = datenum(Data_num_ini); % tutte le date presenti nel DB grezzo comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ... date ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' DTcatena ... ''' and NodeType = ''' NodeType ''' and NodeNum =' NodeNum3DCrL ' ']; curs = exec(conn,comando); curs = fetch(curs); Data_LastElab = curs.Data; [rLE,cLE] = size(Data_LastElab); Date = [cell2mat(Data(1,1)) repmat(' ', [1,1]) cell2mat(Data(1,2))]; data1a = datenum(Date); data1b = Data_num_ini(1); if data1b>data1a data1 = data1b; else data1 = data1a; end if rLE==1 && cLE==1 dataini3DCrL = datestr(data1,'yyyy-mm-dd'); tempoini3DCrL = datestr(data1,'HH:MM:SS'); margine = 0; NuovoZero3DCrL = 0; else % Modifico il formato di data e ora in DATini. [rD,~] = size(Data_LastElab); Data_numero = [cell2mat(Data_LastElab(:,1)) repmat(' ', [rD,1]) cell2mat(Data_LastElab(:,2))]; Data_numero = datenum(Data_numero); % tutte le date presenti nel DB grezzo margine = 1; % margine if Ndatidespike > NdatiMedia Ndati = Ndatidespike; else Ndati = NdatiMedia; end if Wdevst > Ndati if margine < Wdevst/2 margine = round(Wdevst/2+1); end cont = Wdevst + margine; else if margine < Ndati/2 margine = round(Ndati/2+1); end cont = Ndati + margine; end if cont < 6 cont = 6; end [rDS,~] = size(Data_numero); if cont >= rDS cont = rDS-1; end Data_scarico = Data_numero(end-cont); % aggiornare contatori Data_scarico = datestr(Data_scarico,'yyyy-mm-dd HH:MM:SS'); data2 = datenum(Data_scarico); if data2 > data1 dataini3DCrL = datestr(data2,'yyyy-mm-dd'); tempoini3DCrL = datestr(data2,'HH:MM:SS'); else dataini3DCrL = datestr(data1,'yyyy-mm-dd'); tempoini3DCrL = datestr(data1,'HH:MM:SS'); end NuovoZero3DCrL = 1; end text = '3D Crack Link executed during LastElab function'; fprintf(fileID,fmt,text); else dataini3DCrL = []; tempoini3DCrL = []; NuovoZero3DCrL = 0; end %% 2D Crack Link if yes2DCrL == 1 % Importo ultimo dato elaborato dei 2D Crack Link NodeNum2DCrL = num2str(cell2mat(Nodo2DCrackLink(1,2))); % scarico i dati del primo nodo 2D Crack Link NodeType = '2D Crack Link'; comando = ['select Date, Time from RawDataView where Date = ''' ... date ''' and time >= ''' time ''' and UnitName = ''' IDcentralina... ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ... NodeType ''' and NodeNum =' NodeNum2DCrL ' ']; curs = exec(conn,comando); curs = fetch(curs); D_num_ini = curs.Data; [rI,cI] = size(D_num_ini); if rI == 1 && cI == 1 % Non ci sono dati per la data date comando = ['select Date, Time from RawDataView where Date > ''' ... date ''' and UnitName = ''' IDcentralina... ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ... NodeType ''' and NodeNum =' NodeNum2DCrL ' ']; curs = exec(conn,comando); curs = fetch(curs); D_num_ini = curs.Data; [rI,cI] = size(D_num_ini); end if rI && cI == 1 Data_num_ini = 0; else Data_num_ini = [cell2mat(D_num_ini(:,1)) repmat(' ', [rI,1]) cell2mat(D_num_ini(:,2))]; end Data_num_ini = datenum(Data_num_ini); % tutte le date presenti nel DB grezzo comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ... date ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' DTcatena ... ''' and NodeType = ''' NodeType ''' and NodeNum =' NodeNum2DCrL ' ']; curs = exec(conn,comando); curs = fetch(curs); Data_LastElab = curs.Data; [rLE,cLE] = size(Data_LastElab); Date = [cell2mat(Data(1,1)) repmat(' ', [1,1]) cell2mat(Data(1,2))]; data1a = datenum(Date); data1b = Data_num_ini(1); if data1b>data1a data1 = data1b; else data1 = data1a; end if rLE==1 && cLE==1 dataini2DCrL = datestr(data1,'yyyy-mm-dd'); tempoini2DCrL = datestr(data1,'HH:MM:SS'); margine = 0; NuovoZero2DCrL = 0; else % Modifico il formato di data e ora in DATini. [rD,~] = size(Data_LastElab); Data_numero = [cell2mat(Data_LastElab(:,1)) repmat(' ', [rD,1]) cell2mat(Data_LastElab(:,2))]; Data_numero = datenum(Data_numero); % tutte le date presenti nel DB grezzo margine = 1; % margine if Ndatidespike > NdatiMedia Ndati = Ndatidespike; else Ndati = NdatiMedia; end if Wdevst > Ndati if margine < Wdevst/2 margine = round(Wdevst/2+1); end cont = Wdevst + margine; else if margine < Ndati/2 margine = round(Ndati/2+1); end cont = Ndati + margine; end if cont < 6 cont = 6; end [rDS,~] = size(Data_numero); if cont >= rDS cont = rDS-1; end Data_scarico = Data_numero(end-cont); % aggiornare contatori Data_scarico = datestr(Data_scarico,'yyyy-mm-dd HH:MM:SS'); data2 = datenum(Data_scarico); if data2 > data1 dataini2DCrL = datestr(data2,'yyyy-mm-dd'); tempoini2DCrL = datestr(data2,'HH:MM:SS'); else dataini2DCrL = datestr(data1,'yyyy-mm-dd'); tempoini2DCrL = datestr(data1,'HH:MM:SS'); end NuovoZero2DCrL = 1; end text = '2D Crack Link executed during LastElab function'; fprintf(fileID,fmt,text); else dataini2DCrL = []; tempoini2DCrL = []; NuovoZero2DCrL = 0; end %% Stress Meter if yesSM == 1 % Importo ultimo dato elaborato dei Stress Meter NodeNumSM = num2str(cell2mat(NodoStressMeter(1,2))); % scarico i dati del primo nodo NodeType = 'Stress Meter'; comando = ['select Date, Time from RawDataView where Date = ''' ... date ''' and time >= ''' time ''' and UnitName = ''' IDcentralina... ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ... NodeType ''' and NodeNum =' NodeNumSM ' ']; curs = exec(conn,comando); curs = fetch(curs); D_num_ini = curs.Data; [rI,cI] = size(D_num_ini); if rI == 1 && cI == 1 % Non ci sono dati per la data date comando = ['select Date, Time from RawDataView where Date > ''' ... date ''' and UnitName = ''' IDcentralina... ''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ... NodeType ''' and NodeNum =' NodeNumSM ' ']; curs = exec(conn,comando); curs = fetch(curs); D_num_ini = curs.Data; [rI,cI] = size(D_num_ini); end if rI && cI == 1 Data_num_ini = 0; else Data_num_ini = [cell2mat(D_num_ini(:,1)) repmat(' ', [rI,1]) cell2mat(D_num_ini(:,2))]; end Data_num_ini = datenum(Data_num_ini); % tutte le date presenti nel DB grezzo Date_Rif_SM = Data_num_ini(1); comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ... date ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' DTcatena ... ''' and NodeType = ''' NodeType ''' and NodeNum =' NodeNumSM ' ']; curs = exec(conn,comando); curs = fetch(curs); Data_LastElab = curs.Data; [rLE,cLE] = size(Data_LastElab); Date = [cell2mat(Data(1,1)) repmat(' ', [1,1]) cell2mat(Data(1,2))]; data1a = datenum(Date); data1b = Data_num_ini(1); if data1b>data1a data1 = data1b; else data1 = data1a; end if rLE==1 && cLE==1 datainiSM = datestr(data1,'yyyy-mm-dd'); tempoiniSM = datestr(data1,'HH:MM:SS'); margine = 0; NuovoZeroSM = 0; else % Modifico il formato di data e ora in DATini. [rD,~] = size(Data_LastElab); Data_numero = [cell2mat(Data_LastElab(:,1)) repmat(' ', [rD,1]) cell2mat(Data_LastElab(:,2))]; Data_numero = datenum(Data_numero); % tutte le date presenti nel DB grezzo margine = 1; % margine if Ndatidespike > NdatiMedia Ndati = Ndatidespike; else Ndati = NdatiMedia; end if Wdevst > Ndati if margine < Wdevst/2 margine = round(Wdevst/2+1); end cont = Wdevst + margine; else if margine < Ndati/2 margine = round(Ndati/2+1); end cont = Ndati + margine; end if cont < 6 cont = 6; end [rDS,~] = size(Data_numero); if cont >= rDS cont = rDS-1; end Data_scarico = Data_numero(end-cont); % aggiornare contatori Data_scarico = datestr(Data_scarico,'yyyy-mm-dd HH:MM:SS'); data2 = datenum(Data_scarico); if data2 > data1 datainiSM = datestr(data2,'yyyy-mm-dd'); tempoiniSM = datestr(data2,'HH:MM:SS'); else datainiSM = datestr(data1,'yyyy-mm-dd'); tempoiniSM = datestr(data1,'HH:MM:SS'); end NuovoZeroSM = 1; end text = 'Stress Meter executed during LastElab function'; fprintf(fileID,fmt,text); else datainiSM = []; tempoiniSM = []; Date_Rif_SM = []; NuovoZeroSM = 0; end text = 'LastElab function worked correctly'; fprintf(fileID,fmt,text); fclose(fileID); end