9648 lines
457 KiB
Matlab
Executable File
9648 lines
457 KiB
Matlab
Executable File
% Questa funzione legge i dati di ogni tipologia di nodo (se presente)
|
|
% DatiTunnelLink contiene tutti i dati per i Tilt Link
|
|
% DatiRadialLink contiene tutti i dati per i Radial Link
|
|
% etc.
|
|
|
|
function [Batteria,DatiTunnelLink,ErrTunnelLink,datainiTuL,...
|
|
DatiRadialLink,ErrRadialLink,datainiRL,DatiTiltLinkH,ErrTiltLinkH,datainiTLH,...
|
|
DatiTiltLinkHRH,ErrTiltLinkHRH,datainiTLHRH,DatiPreConvLink,ErrPreConvLink,datainiPCL,...
|
|
DatiPreConvLinkHR,ErrPreConvLinkHR,datainiPCLHR,DatiPressureLink,ErrPressureLink,...
|
|
DatiLoadLink,ErrLoadLink,DatiExtensometerLink,DatiExtensometerLink_Rif,...
|
|
DatiNTCExtensometerLink,ErrExtensometerLink,Dati3DExtensometerLink,ChEL,EL_NTC,...
|
|
Dati3DExtensometerLink_Rif,DatiNTC3DExtensometerLink,Err3DExtensometerLink,ErrNTC3DExtensometerLink,Ch3DEL,EL3D_NTC,...
|
|
DatiWireExtensometerLink,DatiNTCWireExtensometerLink,ErrWireExtensometerLink,ChWEL,WEL_NTC,...
|
|
DatiMultiPointExtensometer,DatiNTCMultiPointExtensometer,ErrMultiPointExtensometer,ErrNTCMultiPointExtensometer,ChMPBEL,MPBEL_NTC,...
|
|
DatiAnalogLink,ErrAnalogLink,datainiAL,ChAL,AL_NTC,...
|
|
DatiCrackLink,DatiNTCCrackLink,ErrCrackLink,ChCrL,CrL_NTC,...
|
|
Dati3DCrackLink,DatiNTC3DCrackLink,Err3DCrackLink,ErrNTC3DCrackLink,Ch3DCrL,CrL3D_NTC,...
|
|
Dati2DCrackLink,DatiNTC2DCrackLink,Err2DCrackLink,ErrNTC2DCrackLink,Ch2DCrL,CrL2D_NTC,...
|
|
DatiStressMeter,DatiStressMeter_Rif,DatiNTCStressMeter,DatiNTCStressMeter_Rif,ErrStressMeter,ChSM,SM_NTC,...
|
|
yesTuL,yesRL,yesTLH,yesTLHRH,yesPCL,yesPCLHR,yesPL,yesLL,yesEL,yes3DEL,...
|
|
yesWEL,yesMPBEL,yesAL,yesCrL,yes3DCrL,yes2DCrL,yesSM] = ...
|
|
lettura_Dati(IDcentralina,DTcatena,datainiTuL,tempoiniTuL,NodoTunnelLink,NuovoZeroTuL,date_AC,time_AC,Nodo_AC,...
|
|
datainiRL,tempoiniRL,NodoRadialLink,NuovoZeroRL,datainiTLH,tempoiniTLH,NodoTiltLinkH,NuovoZeroTLH,...
|
|
datainiTLHRH,tempoiniTLHRH,NodoTiltLinkHRH,NuovoZeroTLHRH,datainiPCL,tempoiniPCL,NodoPreConvLink,NuovoZeroPCL,...
|
|
datainiPCLHR,tempoiniPCLHR,NodoPreConvLinkHR,NuovoZeroPCLHR,datainiPL,tempoiniPL,NodoPressureLink,NuovoZeroPrL,...
|
|
datainiLL,tempoiniLL,NodoLoadLink,NuovoZeroLL,datainiEL,tempoiniEL,Date_Rif_EL,NodoExtensometerLink,NuovoZeroEL,...
|
|
dataini3DEL,tempoini3DEL,Date_Rif_3DEL,Nodo3DExtensometerLink,NuovoZero3DEL,...
|
|
datainiWEL,tempoiniWEL,NodoWireExtensometerLink,NuovoZeroWEL,...
|
|
datainiMPBEL,tempoiniMPBEL,NodoMultiPointRodExtensometer,NuovoZeroMPBEL,...
|
|
datainiAL,tempoiniAL,NodoAnalogLink,NumBasi,NuovoZeroAL,...
|
|
datainiCrL,tempoiniCrL,NodoCrackLink,NuovoZeroCrL,dataini3DCrL,tempoini3DCrL,Nodo3DCrackLink,NuovoZero3DCrL,...
|
|
dataini2DCrL,tempoini2DCrL,Nodo2DCrackLink,NuovoZero2DCrL,...
|
|
datainiSM,tempoiniSM,Date_Rif_SM,NodoStressMeter,NuovoZeroSM,yesTuL,yesRL,yesTLH,...
|
|
yesTLHRH,yesPCL,yesPCLHR,yesPL,yesLL,yesEL,yes3DEL,yesWEL,yesMPBEL,yesAL,yesCrL,...
|
|
yes3DCrL,yes2DCrL,yesSM,rTuL,rRL,rTLH,rTLHRH,rPCL,rPCLHR,rPrL,...
|
|
rLL,rEL,r3DEL,rWEL,rMPBEL,rAL,rCrL,r3DCrL,r2DCrL,rSM,conn,catena,date,time,FileName)
|
|
|
|
% Log file
|
|
fileID = fopen(FileName,'a');
|
|
fmt = '%s \r';
|
|
text = 'lettura function started';
|
|
fprintf(fileID,fmt,text);
|
|
|
|
%% Batteria
|
|
% cerco la batteria nel primo nodo
|
|
j = 1;
|
|
z = 0;
|
|
[rC,~] = size(catena);
|
|
while z == 0
|
|
if cell2mat(catena(j,3)) == 1
|
|
z = 1;
|
|
else
|
|
j = j+1; % nodo numero 1
|
|
end
|
|
end
|
|
condition = 0;
|
|
while condition == 0
|
|
if j <= rC
|
|
i = cell2mat(catena(j,1));
|
|
if i == 17
|
|
dataini = datainiTuL;
|
|
tempoini = tempoiniTuL;
|
|
break
|
|
elseif i == 18
|
|
dataini = datainiRL;
|
|
tempoini = tempoiniRL;
|
|
break
|
|
elseif i == 11
|
|
dataini = datainiTLH;
|
|
tempoini = tempoiniTLH;
|
|
break
|
|
elseif i == 12
|
|
dataini = datainiTLHRH;
|
|
tempoini = tempoiniTLHRH;
|
|
break
|
|
elseif i == 23
|
|
dataini = datainiPCL;
|
|
tempoini = tempoiniPCL;
|
|
break
|
|
elseif i == 24
|
|
dataini = datainiPCLHR;
|
|
tempoini = tempoiniPCLHR;
|
|
break
|
|
elseif i == 8
|
|
dataini = datainiAL;
|
|
tempoini = tempoiniAL;
|
|
break
|
|
elseif i == 15
|
|
dataini = datainiLL;
|
|
tempoini = tempoiniLL;
|
|
break
|
|
elseif i == 16
|
|
dataini = datainiEL;
|
|
tempoini = tempoiniEL;
|
|
break
|
|
elseif i == 19
|
|
dataini = dataini3DEL;
|
|
tempoini = tempoini3DEL;
|
|
break
|
|
elseif i == 21
|
|
dataini = datainiPL;
|
|
tempoini = tempoiniPL;
|
|
break
|
|
elseif i == 22
|
|
dataini = datainiWEL;
|
|
tempoini = tempoiniWEL;
|
|
break
|
|
elseif i == 25
|
|
dataini = datainiMPBEL;
|
|
tempoini = tempoiniMPBEL;
|
|
break
|
|
elseif i == 36
|
|
dataini = datainiCrL;
|
|
tempoini = tempoiniCrL;
|
|
break
|
|
elseif i == 37
|
|
dataini = dataini3DCrL;
|
|
tempoini = tempoini3DCrL;
|
|
break
|
|
elseif i == 51
|
|
dataini = dataini2DCrL;
|
|
tempoini = tempoini2DCrL;
|
|
break
|
|
elseif i == 47
|
|
dataini = datainiSM;
|
|
tempoini = tempoiniSM;
|
|
break
|
|
end
|
|
j = j+1;
|
|
else
|
|
break
|
|
end
|
|
end
|
|
|
|
NodeNum = '1';
|
|
comando = ['select Date, Time, BatLevel from RawDataView where Date = ''' ...
|
|
dataini ''' and Time >= ''' tempoini ''' and ToolNameID = ''' DTcatena...
|
|
''' and UnitName = ''' IDcentralina ''' and NodeNum = ''' NodeNum ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
BatTempo = curs.Data;
|
|
comando = ['select Date, Time, BatLevel from RawDataView where Date > ''' ...
|
|
dataini ''' and ToolNameID = ''' DTcatena...
|
|
''' and UnitName = ''' IDcentralina ''' and NodeNum = ''' NodeNum ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
BatData = curs.Data;
|
|
if strcmp(char(BatData(1)),'No Data')
|
|
Batteria = BatTempo;
|
|
elseif strcmp(char(BatTempo(1)),'No Data')
|
|
Batteria = BatData;
|
|
else
|
|
Batteria = [BatTempo; BatData];
|
|
end
|
|
|
|
Data(1,1) = cellstr(date);
|
|
Data(1,2) = cellstr(time);
|
|
|
|
%% Tunnel Link
|
|
if yesTuL == 0 % Non ci sono Tunnel Link
|
|
DatiTunnelLink = [];
|
|
ErrTunnelLink = [];
|
|
wardat = 'lettura function: there are not Tunnel Link';
|
|
fprintf(fileID,fmt,wardat);
|
|
else
|
|
RawDataFile = ['' IDcentralina '-' DTcatena '-TuL-RawData.csv'];
|
|
NAN = 0;
|
|
date_AC = [date_AC ' ' time_AC];
|
|
while NAN == 0
|
|
if datenum(datainiTuL) == datenum(Data(1,1))
|
|
tempoiniTuL = char(Data(1,2));
|
|
end
|
|
NodeType = 'Tunnel Link';
|
|
NodeNumTuL = num2str(cell2mat(NodoTunnelLink(1,2))); % scarico i dati del primo nodo
|
|
% Scarico dei dati relativi alla centralina con informazioni di Data e ora, livello batteria e temperatura
|
|
% Step 1 (vedi commento più avanti)
|
|
comando = ['select Date, Time from RawDataView where Date = ''' ...
|
|
datainiTuL ''' and Time >= ''' tempoiniTuL ''' and ToolNameID = ''' DTcatena...
|
|
''' and UnitName = ''' IDcentralina ''' and NodeType = ''' NodeType...
|
|
''' and NodeNum = ''' NodeNumTuL ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATiniTuL = curs.Data;
|
|
Ntempo = DATiniTuL;
|
|
[r,c] = size(DATiniTuL);
|
|
saltoTuL = 0;
|
|
if r==1 && c==1
|
|
textdatTuL = 'Warning: error reading Tunnel Link (control unit data)!';
|
|
fprintf(fileID,fmt,textdatTuL);
|
|
saltoTuL = 1;
|
|
end
|
|
% Step 2 (vedi commento più avanti)
|
|
comando = ['select Date, Time from RawDataView where Date > ''' ...
|
|
datainiTuL ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and NodeType = ''' NodeType...
|
|
''' and NodeNum = ''' NodeNumTuL ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DAT2TuL = curs.Data;
|
|
Ndate = DAT2TuL;
|
|
if saltoTuL == 1
|
|
DATiniTuL = DAT2TuL;
|
|
end
|
|
Check = size(DAT2TuL);
|
|
if Check(1,2) > 1 % ho superato il primo giorno
|
|
% Concateno le informazioni relative a Step 1 e 2 (se necessario...)
|
|
if saltoTuL == 0
|
|
DATiniTuL = [DATiniTuL; DAT2TuL];
|
|
end
|
|
end
|
|
% Modifico il formato di data e ora in DATini.
|
|
[rD,cD] = size(DATiniTuL);
|
|
if rD ~=1 && cD ~=1
|
|
T = [cell2mat(DATiniTuL(:,1)) repmat(' ', [rD,1]) cell2mat(DATiniTuL(:,2))];
|
|
T = datenum(T);
|
|
% Converto da Cell Array a Matrice.
|
|
DATiniTuL = T;
|
|
else
|
|
DATiniTuL = [];
|
|
end
|
|
|
|
% Scarico dati relativi ai singoli nodi
|
|
[rd,~] = size(Ndate); % numero di dati successivi al primo giorno di calcolo
|
|
[rt,~] = size(Ntempo); % numero di dati del primo giorno di calcolo
|
|
% creo la matrice per i dati Tunnel Link
|
|
if saltoTuL == 0
|
|
if Check(1,2) > 1 % ho superato il primo giorno
|
|
DatiTunnelLink = cell(rd+rt,7*rTuL);
|
|
else
|
|
DatiTunnelLink = cell(rt,7*rTuL);
|
|
end
|
|
else
|
|
DatiTunnelLink = cell(rd,7*rTuL);
|
|
end
|
|
NTunnelLink = cell2mat(NodoTunnelLink(:,2));
|
|
col = 7;
|
|
ii = 1;
|
|
w = 0;
|
|
if now < datenum(date_AC) % NON si elabora Arco Rovescio
|
|
Arco = 0;
|
|
else
|
|
Arco = 1;
|
|
end
|
|
while ii <= rTuL
|
|
if ii >= Nodo_AC % Primo nodo arco rovescio
|
|
if Arco == 1
|
|
Continua = 1;
|
|
else
|
|
Continua = 0;
|
|
end
|
|
else
|
|
Continua = 1;
|
|
end
|
|
if Continua == 1
|
|
% Step 1: Acquisisco i dati registrati successivamente all'ultimo scarico,
|
|
% ma limitandomi a quelli registrati nel corso di quella singola giornata;
|
|
nN = NTunnelLink(ii,1);
|
|
nNodo = num2str(nN);
|
|
comando = ['select Val0, Val1, Val2, Val3, Val4, Val5, Val6 from RawDataView where Date = ''' ...
|
|
datainiTuL ''' and Time >= ''' tempoiniTuL ''' and UnitName = ''' IDcentralina...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoTuL = curs.Data;
|
|
% Step 2: Considero le date successive e scarico tutti i dati disponibili.
|
|
comando = ['select Val0, Val1, Val2, Val3, Val4, Val5, Val6 from RawDataView where Date > ''' ...
|
|
datainiTuL ''' and UnitName = ''' IDcentralina ...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoTuLd = curs.Data;
|
|
end
|
|
|
|
% DATnodo è la matrice che raccoglie i dati dell' ii-esimo nodo,
|
|
% DATnodi è la matrice che concatena i dati relativi a ciascun nodo.
|
|
ini_col = col-6;
|
|
if saltoTuL == 0
|
|
if Continua == 1
|
|
DatiTunnelLink(1:rt,ini_col:col) = DATnodoTuL(:,:);
|
|
else
|
|
DatiTunnelLink(1:rt,ini_col:col) = cellstr('0');
|
|
end
|
|
else
|
|
if Continua == 1
|
|
DatiTunnelLink(1:rd,ini_col:col) = DATnodoTuLd(:,:);
|
|
else
|
|
DatiTunnelLink(1:rd,ini_col:col) = cellstr('0');
|
|
end
|
|
end
|
|
|
|
[rn,~] = size(DATnodoTuLd); % controllo date
|
|
if rn < rd % normalmente sono uguali
|
|
for i = rn+1:rd
|
|
DATnodoTuLd(i,:) = DATnodoTuLd(rn,:); % se mancano dati, copio gli ultimi
|
|
end
|
|
wardat = ['Node Tunnel Link ' num2str(ii) ' does NOT work!'];
|
|
fprintf(fileID,fmt,wardat);
|
|
w = 1;
|
|
end
|
|
|
|
if Check(1,2) > 1
|
|
if saltoTuL == 0
|
|
if Continua == 1
|
|
DatiTunnelLink(rt+1:rt+rd,ini_col:col) = DATnodoTuLd(:,:);
|
|
else
|
|
DatiTunnelLink(rt+1:rt+rd,ini_col:col) = cellstr('0');
|
|
end
|
|
end
|
|
else
|
|
DatiTunnelLink = DatiTunnelLink(1:end,:);
|
|
end
|
|
okdatTuL = ['Data of node number ' num2str(ii) ' of ' ...
|
|
num2str(rTuL) ' Tunnel Link nodes downloaded correctly'];
|
|
fprintf(fileID,fmt,okdatTuL);
|
|
ii = ii+1;
|
|
col = col+7;
|
|
end
|
|
if w == 0
|
|
wardat = 'There are not warning for Tunnel Link!';
|
|
fprintf(fileID,fmt,wardat);
|
|
end
|
|
|
|
% Controllo gli eventuali errori ('Err1' o '---') e li rimuovo,
|
|
% rimpiazzandoli con l'ultimo dato disponibile di quel nodo
|
|
[r,c] = size(DatiTunnelLink);
|
|
ErrTunnelLink = zeros(r,c);
|
|
Ncorr = 0;
|
|
ESCI = 0;
|
|
NAN = 1;
|
|
if NuovoZeroTuL == 1
|
|
if isfile(RawDataFile) == 1
|
|
DatiRaw = csvread(RawDataFile);
|
|
[rDR,cDR] = size(DatiRaw);
|
|
DatiRaw(:,1) = DatiRaw(:,1) + 730000;
|
|
RawDate = find(DatiRaw(:,1)<=datenum(datainiTuL));
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDate = [];
|
|
DatiRaw = [];
|
|
end
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDate = [];
|
|
DatiRaw = [];
|
|
end
|
|
% --- Codice per il primo dato ---
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiTunnelLink(1,jj)));
|
|
idxND = find(strcmp('No Data',DatiTunnelLink(1,jj)));
|
|
idxT = find(strcmp('---',DatiTunnelLink(1,jj)));
|
|
idxT2 = find(strcmp('-',DatiTunnelLink(1,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiTunnelLink(1,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiTunnelLink(1,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiTunnelLink(1,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiTunnelLink(1,jj)));
|
|
idxN = find(strcmp('null',DatiTunnelLink(1,jj)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxND);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
[ri,~] = size(idx);
|
|
if ri == 1
|
|
wardat = 'Warning on the correction of Tunnel Link nodes: there are not data at the beginning of the array!';
|
|
fprintf(fileID,fmt,wardat);
|
|
if rDR==1 && cDR==1 || NuovoZeroTuL == 0 % il file non è mai stato scritto, cerco la data precedente
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
if datenum(datainiTuL)+1 < now
|
|
datainiTuL = datestr(datenum(datainiTuL)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yesTuL = 0;
|
|
end
|
|
else
|
|
if isempty(RawDate) == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiTuL = datestr(datenum(datainiTuL)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
if isnan(DatiRaw(RawDate(end),jj+1)) == 0
|
|
DatiTunnelLink(1,jj) = cellstr(num2str(DatiRaw(RawDate(end),jj+1)));
|
|
ErrTunnelLink(1,jj) = 1;
|
|
wardat = 'Data of Tunnel Link nodes corrected using Raw Data of reference Csv file.';
|
|
fprintf(fileID,fmt,wardat);
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
else
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiTuL = datestr(datenum(datainiTuL)-1,'yyyy-mm-dd');
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if ESCI == 0
|
|
for jj=1:c % nodi
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiTunnelLink(:,jj)));
|
|
idxND = find(strcmp('No Data',DatiTunnelLink(:,jj)));
|
|
idxT = find(strcmp('---',DatiTunnelLink(:,jj)));
|
|
idxT2 = find(strcmp('-',DatiTunnelLink(:,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiTunnelLink(:,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiTunnelLink(:,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiTunnelLink(:,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiTunnelLink(:,jj)));
|
|
idxN = find(strcmp('null',DatiTunnelLink(:,jj)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxND);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
[ri,~] = size(idx);
|
|
for kk=1:ri
|
|
indice=idx(kk);
|
|
if indice == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiTuL = datestr(datenum(datainiTuL)-1,'yyyy-mm-dd');
|
|
break
|
|
end
|
|
DatiTunnelLink(indice,jj) = DatiTunnelLink(indice-1,jj);
|
|
ErrTunnelLink(indice,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
if ESCI == 1
|
|
break
|
|
end
|
|
% Elimino gli eventuali Not a Number
|
|
for nnn = 2:r % date
|
|
check = isnan(cell2mat(DatiTunnelLink(nnn,jj)));
|
|
if check == 1
|
|
DatiTunnelLink(nnn,jj) = DatiTunnelLink(nnn-1,jj);
|
|
ErrTunnelLink(nnn,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
end
|
|
end
|
|
end
|
|
corrdat = ['' num2str(Ncorr) ' corrections of Tunnel Link data done!'];
|
|
fprintf(fileID,fmt,corrdat);
|
|
% Concateno informazioni generali e/o letture dai nodi.
|
|
DatiTunnelLink = [DATiniTuL str2double(DatiTunnelLink)];
|
|
% Elimino eventuali date doppie
|
|
a = 2;
|
|
while a <= r
|
|
if DatiTunnelLink(a,1) == DatiTunnelLink(a-1,1)
|
|
DatiTunnelLink(a,:) = [];
|
|
r = r-1;
|
|
else
|
|
a = a+1;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if NuovoZeroTuL == 1
|
|
if rDR~=1 && cDR~=1 && isempty(DatiRaw) == 0
|
|
RawDate1 = find(DatiRaw(:,1)<=DatiTunnelLink(1,1));
|
|
if isempty(RawDate1) == 1
|
|
RawDate2 = 1;
|
|
elseif RawDate1(end) == rDR
|
|
RawDate2 = find(DatiTunnelLink(:,1)>DatiRaw(end,1));
|
|
else
|
|
RawDate2 = find(DatiTunnelLink(:,1)>DatiRaw(RawDate1(end)+1,1));
|
|
end
|
|
else
|
|
RawDate1 = [];
|
|
RawDate2 = 1;
|
|
end
|
|
if isempty(RawDate1) == 0 && isempty(RawDate2) == 0
|
|
Dati = [DatiRaw(1:RawDate1(end),:);DatiTunnelLink(RawDate2(1):end,:)];
|
|
elseif isempty(RawDate1) == 1 && isempty(RawDate2) == 0
|
|
Dati = DatiTunnelLink;
|
|
else
|
|
Dati = DatiRaw;
|
|
end
|
|
% Elimino appoggio più vecchio di un mese
|
|
RawDate3 = find(Dati(:,1)<now-30);
|
|
if isempty(RawDate3) == 0
|
|
[rDati,~] = size(Dati);
|
|
if RawDate3(end) == rDati
|
|
else
|
|
Dati = Dati(RawDate3(end)+1:end,:);
|
|
end
|
|
end
|
|
if isfile(RawDataFile) == 1
|
|
delete(RawDataFile);
|
|
end
|
|
else
|
|
Dati = DatiTunnelLink;
|
|
end
|
|
Dati(:,1) = Dati(:,1) - 730000;
|
|
csvwrite(RawDataFile,Dati);
|
|
end
|
|
|
|
%% Radial Link
|
|
if yesRL == 0 % Non ci sono Radial Link
|
|
DatiRadialLink = [];
|
|
ErrRadialLink = [];
|
|
wardat = 'lettura function: there are not Radial Link';
|
|
fprintf(fileID,fmt,wardat);
|
|
else
|
|
NodeType = 'Radial Link';
|
|
RawDataFile = ['' IDcentralina '-' DTcatena '-RL-RawData.csv'];
|
|
NAN = 0;
|
|
while NAN == 0
|
|
if datenum(datainiRL) == datenum(Data(1,1))
|
|
tempoiniRL = char(Data(1,2));
|
|
end
|
|
NodeNumRL = num2str(cell2mat(NodoRadialLink(1,2))); % scarico i dati del primo nodo
|
|
% Scarico dei dati relativi alla centralina con informazioni di Data e ora, livello batteria e temperatura
|
|
% Step 1 (vedi commento più avanti)
|
|
comando = ['select Date, Time from RawDataView where Date = ''' ...
|
|
datainiRL ''' and Time >= ''' tempoiniRL ''' and UnitName = ''' IDcentralina...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum = ''' NodeNumRL ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATiniRL = curs.Data;
|
|
Ntempo = DATiniRL;
|
|
[r,c] = size(DATiniRL);
|
|
saltoRL = 0;
|
|
if r==1 && c==1
|
|
textdatRL = 'Warning: error reading Radial Link (control unit data)!';
|
|
fprintf(fileID,fmt,textdatRL);
|
|
saltoRL = 1;
|
|
end
|
|
% Step 2 (vedi commento più avanti)
|
|
comando = ['select Date, Time from RawDataView where Date > ''' ...
|
|
datainiRL ''' and UnitName = ''' IDcentralina ''' and ToolNameID = '''...
|
|
DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ''' NodeNumRL ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DAT2RL = curs.Data;
|
|
Ndate = DAT2RL;
|
|
if saltoRL == 1
|
|
DATiniRL = DAT2RL;
|
|
end
|
|
Check = size(DAT2RL);
|
|
if Check(1,2) > 1 % ho superato il primo giorno
|
|
% Concateno le informazioni relative a Step 1 e 2 (se necessario...)
|
|
if saltoRL == 0
|
|
DATiniRL = [DATiniRL; DAT2RL];
|
|
end
|
|
end
|
|
% Modifico il formato di data e ora in DATini.
|
|
[rD,cD] = size(DATiniRL);
|
|
if rD ~=1 && cD ~=1
|
|
T = [cell2mat(DATiniRL(:,1)) repmat(' ', [rD,1]) cell2mat(DATiniRL(:,2))];
|
|
T = datenum(T);
|
|
% Converto da Cell Array a Matrice.
|
|
DATiniRL = T;
|
|
else
|
|
DATiniRL = [];
|
|
end
|
|
|
|
% Scarico dati relativi ai singoli nodi
|
|
[rd,~] = size(Ndate); % numero di dati successivi al primo giorno di calcolo
|
|
[rt,~] = size(Ntempo); % numero di dati del primo giorno di calcolo
|
|
if saltoRL == 0
|
|
% creo la matrice per i dati Radial Link
|
|
if Check(1,2) > 1
|
|
DatiRadialLink = cell(rd+rt,4*rRL);
|
|
else
|
|
DatiRadialLink = cell(rt,4*rRL);
|
|
end
|
|
else
|
|
DatiRadialLink = cell(rd,4*rRL);
|
|
end
|
|
NRadialLink = cell2mat(NodoRadialLink(:,2));
|
|
col = 4;
|
|
ii = 1;
|
|
w = 0;
|
|
while ii <= rRL
|
|
% Step 1: Acquisisco i dati registrati successivamente all'ultimo scarico,
|
|
% ma limitandomi a quelli registrati nel corso di quella singola giornata;
|
|
nN = NRadialLink(ii,1);
|
|
nNodo = num2str(nN);
|
|
comando = ['select Val0, Val1, Val2, Val6 from RawDataView where Date = ''' ...
|
|
datainiRL ''' and Time >= ''' tempoiniRL ''' and UnitName = ''' IDcentralina ...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoRL = curs.Data;
|
|
% Step 2: Considero le date successive e scarico tutti i dati disponibili.
|
|
comando = ['select Val0, Val1, Val2, Val6 from RawDataView where Date > ''' ...
|
|
datainiRL ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoRLd = curs.Data;
|
|
% Concateno i dati relativi a Step 1 e 2 per il nodo ii-esimo.
|
|
|
|
% DATnodo è la matrice che raccoglie i dati dell' ii-esimo nodo,
|
|
% DATnodi è la matrice che concatena i dati relativi a ciascun nodo.
|
|
ini_col = col-3;
|
|
if saltoRL == 0
|
|
DatiRadialLink(1:rt,ini_col:col) = DATnodoRL(:,:);
|
|
else
|
|
DatiRadialLink(1:rd,ini_col:col) = DATnodoRL(:,:);
|
|
end
|
|
|
|
[rn,~] = size(DATnodoRLd); % controllo date
|
|
if rn < rd % normalmente sono uguali
|
|
for i = rn+1:rd
|
|
DATnodoRLd(i,:) = DATnodoRLd(rn,:); % se mancano dati, copio gli ultimi
|
|
end
|
|
wardat = ['Node Radial Link ' num2str(ii) ' does NOT work!'];
|
|
fprintf(fileID,fmt,wardat);
|
|
w = 1;
|
|
end
|
|
|
|
if Check(1,2) > 1
|
|
if saltoRL == 0
|
|
DatiRadialLink(rt+1:rt+rd,ini_col:col) = DATnodoRLd(:,:);
|
|
end
|
|
else
|
|
DatiRadialLink = DatiRadialLink(1:end,:);
|
|
end
|
|
okdatRL = ['Data of node number ' num2str(ii) ' of ' ...
|
|
num2str(rRL) ' Radial Link nodes downloaded correctly'];
|
|
fprintf(fileID,fmt,okdatRL);
|
|
ii = ii+1;
|
|
col = col+4;
|
|
end
|
|
if w == 0
|
|
wardat = 'There are not warning for Radial Link!';
|
|
fprintf(fileID,fmt,wardat);
|
|
end
|
|
|
|
% Controllo gli eventuali errori ('Err1' o '---') e li rimuovo,
|
|
% rimpiazzandoli con l'ultimo dato disponibile di quel nodo
|
|
[r,c] = size(DatiRadialLink);
|
|
ErrRadialLink = zeros(r,c);
|
|
Ncorr = 0;
|
|
ESCI = 0;
|
|
NAN = 1;
|
|
if NuovoZeroRL == 1
|
|
if isfile(RawDataFile) == 1
|
|
DatiRaw = csvread(RawDataFile);
|
|
[rDR,cDR] = size(DatiRaw);
|
|
DatiRaw(:,1) = DatiRaw(:,1) + 730000;
|
|
RawDate = find(DatiRaw(:,1)<=datenum(datainiRL));
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDate = [];
|
|
DatiRaw = [];
|
|
end
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDate = [];
|
|
DatiRaw = [];
|
|
end
|
|
% --- Codice per il primo dato ---
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiRadialLink(1,jj)));
|
|
idxND = find(strcmp('No Data',DatiRadialLink(1,jj)));
|
|
idxT = find(strcmp('---',DatiRadialLink(1,jj)));
|
|
idxT2 = find(strcmp('-',DatiRadialLink(1,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiRadialLink(1,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiRadialLink(1,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiRadialLink(1,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiRadialLink(1,jj)));
|
|
idxN = find(strcmp('null',DatiRadialLink(1,jj)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxND);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
[ri,~] = size(idx);
|
|
if ri == 1
|
|
wardat = 'Warning on the correction of Radial Link nodes: there are not data at the beginning of the array!';
|
|
fprintf(fileID,fmt,wardat);
|
|
if rDR==1 && cDR==1 || NuovoZeroRL == 0 % il file non è mai stato scritto, cerco la data precedente
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
if datenum(datainiRL)+1 < now
|
|
datainiRL = datestr(datenum(datainiRL)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yesRL = 0;
|
|
end
|
|
else
|
|
if isempty(RawDate) == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiRL = datestr(datenum(datainiRL)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
if isnan(DatiRaw(RawDate(end),jj+1)) == 0
|
|
DatiRadialLink(1,jj) = cellstr(num2str(DatiRaw(RawDate(end),jj+1)));
|
|
ErrRadialLink(1,jj) = 1;
|
|
wardat = 'Data of Radial Link nodes corrected using Raw Data of reference Csv file.';
|
|
fprintf(fileID,fmt,wardat);
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
else
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiRL = datestr(datenum(datainiRL)-1,'yyyy-mm-dd');
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if ESCI == 0
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiRadialLink(:,jj)));
|
|
idxND = find(strcmp('No Data',DatiRadialLink(:,jj)));
|
|
idxT = find(strcmp('---',DatiRadialLink(:,jj)));
|
|
idxT2 = find(strcmp('-',DatiRadialLink(:,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiRadialLink(:,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiRadialLink(:,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiRadialLink(:,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiRadialLink(:,jj)));
|
|
idxN = find(strcmp('null',DatiRadialLink(:,jj)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxND);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
[ri,~] = size(idx);
|
|
for kk=1:ri
|
|
indice=idx(kk);
|
|
if indice == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiRL = datestr(datenum(datainiRL)-1,'yyyy-mm-dd');
|
|
break
|
|
end
|
|
DatiRadialLink(indice,jj) = DatiRadialLink(indice-1,jj);
|
|
ErrRadialLink(indice,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
if ESCI == 1
|
|
break
|
|
end
|
|
% Elimino gli eventuali Not a Number
|
|
for nnn = 2:r % date
|
|
check = isnan(cell2mat(DatiRadialLink(nnn,jj)));
|
|
if check == 1
|
|
DatiRadialLink(nnn,jj) = DatiRadialLink(nnn-1,jj);
|
|
ErrRadialLink(nnn,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
end
|
|
end
|
|
end
|
|
corrdat = ['' num2str(Ncorr) ' corrections of Radial Link data done!'];
|
|
fprintf(fileID,fmt,corrdat);
|
|
% Concateno informazioni generali e/o letture dai nodi.
|
|
DatiRadialLink = [DATiniRL str2double(DatiRadialLink)];
|
|
% Elimino eventuali date doppie
|
|
a = 2;
|
|
while a <= r
|
|
if DatiRadialLink(a,1) == DatiRadialLink(a-1,1)
|
|
DatiRadialLink(a,:) = [];
|
|
r = r-1;
|
|
else
|
|
a = a+1;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if NuovoZeroRL == 1
|
|
if rDR~=1 && cDR~=1 && isempty(DatiRaw) == 0
|
|
RawDate1 = find(DatiRaw(:,1)<=DatiRadialLink(1,1));
|
|
if isempty(RawDate1) == 1
|
|
RawDate2 = 1;
|
|
elseif RawDate1(end) == rDR
|
|
RawDate2 = find(DatiRadialLink(:,1)>DatiRaw(end,1));
|
|
else
|
|
RawDate2 = find(DatiRadialLink(:,1)>DatiRaw(RawDate1(end)+1,1));
|
|
end
|
|
else
|
|
RawDate1 = [];
|
|
RawDate2 = 1;
|
|
end
|
|
if isempty(RawDate1) == 0 && isempty(RawDate2) == 0
|
|
Dati = [DatiRaw(1:RawDate1(end),:);DatiRadialLink(RawDate2(1):end,:)];
|
|
elseif isempty(RawDate1) == 1 && isempty(RawDate2) == 0
|
|
Dati = DatiRadialLink;
|
|
else
|
|
Dati = DatiRaw;
|
|
end
|
|
% Elimino appoggio più vecchio di un mese
|
|
RawDate3 = find(Dati(:,1)<now-30);
|
|
if isempty(RawDate3) == 0
|
|
[rDati,~] = size(Dati);
|
|
if RawDate3(end) == rDati
|
|
else
|
|
Dati = Dati(RawDate3(end)+1:end,:);
|
|
end
|
|
end
|
|
if isfile(RawDataFile) == 1
|
|
delete(RawDataFile);
|
|
end
|
|
else
|
|
Dati = DatiRadialLink;
|
|
end
|
|
Dati(:,1) = Dati(:,1) - 730000;
|
|
csvwrite(RawDataFile,Dati);
|
|
end
|
|
|
|
%% Tilt Link H
|
|
if yesTLH == 0 % Non ci sono Tilt Link H
|
|
DatiTiltLinkH = [];
|
|
ErrTiltLinkH = [];
|
|
wardat = 'lettura function: there are not Tilt Link H';
|
|
fprintf(fileID,fmt,wardat);
|
|
else
|
|
RawDataFile = ['' IDcentralina '-' DTcatena '-TLH-RawData.csv'];
|
|
NAN = 0;
|
|
while NAN == 0
|
|
if datenum(datainiTLH) == datenum(Data(1,1))
|
|
tempoiniTLH = char(Data(1,2));
|
|
end
|
|
NodeType = 'Tilt Link H';
|
|
NodeNumTLH = num2str(cell2mat(NodoTiltLinkH(1,2))); % scarico i dati del primo nodo
|
|
% Scarico dei dati relativi alla centralina con informazioni di Data e ora, livello batteria e temperatura
|
|
% Step 1 (vedi commento più avanti)
|
|
comando = ['select Date, Time from RawDataView where Date = ''' ...
|
|
datainiTLH ''' and Time >= ''' tempoiniTLH ''' and UnitName = ''' IDcentralina...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' NodeType ...
|
|
''' and NodeNum = ''' NodeNumTLH ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATiniTLH = curs.Data;
|
|
Ntempo = DATiniTLH;
|
|
[r,c] = size(DATiniTLH);
|
|
saltoTLH = 0;
|
|
if r==1 && c==1
|
|
textdatTLH = 'Warning: error reading Tilt Link H (control unit data)!';
|
|
fprintf(fileID,fmt,textdatTLH);
|
|
saltoTLH = 1;
|
|
end
|
|
% Step 2 (vedi commento più avanti)
|
|
comando = ['select Date, Time from RawDataView where Date > ''' ...
|
|
datainiTLH ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ''' NodeNumTLH ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DAT2TLH = curs.Data;
|
|
Ndate = DAT2TLH;
|
|
if saltoTLH == 1
|
|
DATiniTLH = DAT2TLH;
|
|
end
|
|
Check = size(DAT2TLH);
|
|
if Check(1,2) > 1 % ho superato il primo giorno
|
|
% Concateno le informazioni relative a Step 1 e 2 (se necessario...)
|
|
if saltoTLH == 0
|
|
DATiniTLH = [DATiniTLH; DAT2TLH];
|
|
end
|
|
end
|
|
% Modifico il formato di data e ora in DATini.
|
|
[rD,cD] = size(DATiniTLH);
|
|
if rD ~=1 && cD ~=1
|
|
T = [cell2mat(DATiniTLH(:,1)) repmat(' ', [rD,1]) cell2mat(DATiniTLH(:,2))];
|
|
T = datenum(T);
|
|
% Converto da Cell Array a Matrice.
|
|
DATiniTLH = T;
|
|
else
|
|
DATiniTLH = [];
|
|
end
|
|
|
|
% Scarico dati relativi ai singoli nodi
|
|
[rd,~] = size(Ndate); % numero di dati successivi al primo giorno di calcolo
|
|
[rt,~] = size(Ntempo); % numero di dati del primo giorno di calcolo
|
|
% creo la matrice per i dati Tunnel Link
|
|
if saltoTLH == 0
|
|
if Check(1,2) > 1 % ho superato il primo giorno
|
|
DatiTiltLinkH = cell(rd+rt,4*rTLH);
|
|
else
|
|
DatiTiltLinkH = cell(rt,4*rTLH);
|
|
end
|
|
else
|
|
DatiTiltLinkH = cell(rd,4*rTLH);
|
|
end
|
|
NTiltLinkH = cell2mat(NodoTiltLinkH(:,2));
|
|
col = 4;
|
|
ii = 1;
|
|
w = 0;
|
|
while ii <= rTLH
|
|
% Step 1: Acquisisco i dati registrati successivamente all'ultimo scarico,
|
|
% ma limitandomi a quelli registrati nel corso di quella singola giornata;
|
|
nN = NTiltLinkH(ii,1);
|
|
nNodo = num2str(nN);
|
|
comando = ['select Val0, Val1, Val2, Val6 from RawDataView where Date = ''' ...
|
|
datainiTLH ''' and Time >= ''' tempoiniTLH ''' and UnitName = ''' IDcentralina ''' and ToolNameID = '''...
|
|
DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoTLH = curs.Data;
|
|
% Step 2: Considero le date successive e scarico tutti i dati disponibili.
|
|
comando = ['select Val0, Val1, Val2, Val6 from RawDataView where Date > ''' ...
|
|
datainiTLH ''' and ToolNameID = ''' DTcatena ''' and UnitName = ''' IDcentralina ...
|
|
''' and NodeType = ''' NodeType ''' and NodeNum = ' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoTLHd = curs.Data;
|
|
|
|
% DATnodo è la matrice che raccoglie i dati dell' ii-esimo nodo,
|
|
% DATnodi è la matrice che concatena i dati relativi a ciascun nodo.
|
|
ini_col = col-3;
|
|
if saltoTLH == 0
|
|
DatiTiltLinkH(1:rt,ini_col:col) = DATnodoTLH(:,:);
|
|
else
|
|
DatiTiltLinkH(1:rd,ini_col:col) = DATnodoTLHd(:,:);
|
|
end
|
|
|
|
[rn,~] = size(DATnodoTLHd); % controllo date
|
|
if rn < rd % normalmente sono uguali
|
|
for i = rn+1:rd
|
|
DATnodoTLHd(i,:) = DATnodoTLHd(rn,:); % se mancano dati, copio gli ultimi
|
|
end
|
|
wardat = ['Node Tilt Link H ' num2str(ii) ' does NOT work!'];
|
|
fprintf(fileID,fmt,wardat);
|
|
w = 1;
|
|
end
|
|
|
|
if Check(1,2) > 1
|
|
if saltoTLH == 0
|
|
DatiTiltLinkH(rt+1:rt+rd,ini_col:col) = DATnodoTLHd(:,:);
|
|
end
|
|
else
|
|
DatiTiltLinkH = DatiTiltLinkH(1:end,:);
|
|
end
|
|
okdatTLH = ['Data of node number ' num2str(ii) ' of ' ...
|
|
num2str(rTLH) ' Tilt Link H nodes downloaded correctly'];
|
|
fprintf(fileID,fmt,okdatTLH);
|
|
ii = ii+1;
|
|
col = col+4;
|
|
end
|
|
if w == 0
|
|
wardat = 'There are not warning for Tilt Link H!';
|
|
fprintf(fileID,fmt,wardat);
|
|
end
|
|
|
|
% Controllo gli eventuali errori ('Err1' o '---') e li rimuovo,
|
|
% rimpiazzandoli con l'ultimo dato disponibile di quel nodo
|
|
[r,c] = size(DatiTiltLinkH);
|
|
ErrTiltLinkH = zeros(r,c);
|
|
Ncorr = 0;
|
|
ESCI = 0;
|
|
NAN = 1;
|
|
if NuovoZeroTLH == 1
|
|
if isfile(RawDataFile) == 1
|
|
DatiRaw = csvread(RawDataFile);
|
|
[rDR,cDR] = size(DatiRaw);
|
|
DatiRaw(:,1) = DatiRaw(:,1) + 730000;
|
|
RawDate = find(DatiRaw(:,1)<=datenum(datainiTLH));
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDate = [];
|
|
DatiRaw = [];
|
|
end
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDate = [];
|
|
DatiRaw = [];
|
|
end
|
|
% --- Codice per il primo dato ---
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiTiltLinkH(1,jj)));
|
|
idxND = find(strcmp('No Data',DatiTiltLinkH(1,jj)));
|
|
idxT = find(strcmp('---',DatiTiltLinkH(1,jj)));
|
|
idxT2 = find(strcmp('-',DatiTiltLinkH(1,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiTiltLinkH(1,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiTiltLinkH(1,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiTiltLinkH(1,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiTiltLinkH(1,jj)));
|
|
idxN = find(strcmp('null',DatiTiltLinkH(1,jj)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxND);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
[ri,~] = size(idx);
|
|
if ri == 1
|
|
wardat = 'Warning on the correction of Tilt Link H nodes: there are not data at the beginning of the array!';
|
|
fprintf(fileID,fmt,wardat);
|
|
if rDR==1 && cDR==1 || NuovoZeroTLH == 0 % il file non è mai stato scritto, cerco la data precedente
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
if datenum(datainiTLH)+1 < now
|
|
datainiTLH = datestr(datenum(datainiTLH)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yesTLH = 0;
|
|
end
|
|
else
|
|
if isempty(RawDate) == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiTLH = datestr(datenum(datainiTLH)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
if isnan(DatiRaw(RawDate(end),jj+1)) == 0
|
|
DatiTiltLinkH(1,jj) = cellstr(num2str(DatiRaw(RawDate(end),jj+1)));
|
|
ErrTiltLinkH(1,jj) = 1;
|
|
wardat = 'Data of Tilt Link H nodes corrected using Raw Data of reference Csv file.';
|
|
fprintf(fileID,fmt,wardat);
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
else
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiTLH = datestr(datenum(datainiTLH)-1,'yyyy-mm-dd');
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if ESCI == 0
|
|
% Cerco i multipli di 4 per identificare le temperature
|
|
Int = jj/4;
|
|
if floor(Int) == Int
|
|
% Controllo ampolle
|
|
if str2double(DatiTiltLinkH(1,jj)) > 1000
|
|
if rDR==1 && cDR==1 || NuovoZeroTLH == 0
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
if datenum(datainiTLH)+1 < now
|
|
datainiTLH = datestr(datenum(datainiTLH)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yesTLH = 0;
|
|
end
|
|
else
|
|
if isempty(RawDate) == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiTLH = datestr(datenum(datainiTLH)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
DatiTiltLinkH(1,jj-3) = cellstr(num2str(DatiRaw(RawDate(end),jj-2)));
|
|
DatiTiltLinkH(1,jj-2) = cellstr(num2str(DatiRaw(RawDate(end),jj-1)));
|
|
DatiTiltLinkH(1,jj-1) = cellstr(num2str(DatiRaw(RawDate(end),jj)));
|
|
DatiTiltLinkH(1,jj) = cellstr(num2str(DatiRaw(RawDate(end),jj+1)));
|
|
ErrTiltLinkH(1,jj) = 1;
|
|
wardat = ['Data of Tilt Link H nodes corrected using Raw Data of reference Csv file. '...
|
|
'MEMS was read as an electrolytic cell'];
|
|
fprintf(fileID,fmt,wardat);
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if ESCI == 0
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiTiltLinkH(:,jj)));
|
|
idxND = find(strcmp('No Data',DatiTiltLinkH(:,jj)));
|
|
idxT = find(strcmp('---',DatiTiltLinkH(:,jj)));
|
|
idxT2 = find(strcmp('-',DatiTiltLinkH(:,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiTiltLinkH(:,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiTiltLinkH(:,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiTiltLinkH(:,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiTiltLinkH(:,jj)));
|
|
idxN = find(strcmp('null',DatiTiltLinkH(:,jj)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxND);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
[ri,~] = size(idx);
|
|
for kk=1:ri
|
|
indice=idx(kk);
|
|
if indice == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiTLH = datestr(datenum(datainiTLH)-1,'yyyy-mm-dd');
|
|
break
|
|
end
|
|
DatiTiltLinkH(indice,jj) = DatiTiltLinkH(indice-1,jj);
|
|
ErrTiltLinkH(indice,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
for ii = 2:r
|
|
% Cerco i multipli di 7 per identificare le temperature
|
|
Int = jj/4;
|
|
if floor(Int) == Int
|
|
% Controllo ampolle
|
|
if str2double(DatiTiltLinkH(ii,jj)) > 1000
|
|
DatiTiltLinkH(ii,jj-6:jj) = DatiTiltLinkH(ii-1,jj-6:jj);
|
|
ErrTiltLinkH(ii,jj) = 1;
|
|
wardat = ['Data of Tilt Link H nodes corrected using Raw Data of reference Csv file. '...
|
|
'MEMS was read as an electrolytic cell'];
|
|
fprintf(fileID,fmt,wardat);
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
end
|
|
end
|
|
if ESCI == 1
|
|
break
|
|
end
|
|
% Elimino gli eventuali Not a Number
|
|
for nnn = 2:r % date
|
|
check = isnan(cell2mat(DatiTiltLinkH(nnn,jj)));
|
|
if check == 1
|
|
DatiTiltLinkH(nnn,jj) = DatiTiltLinkH(nnn-1,jj);
|
|
ErrTiltLinkH(nnn,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
end
|
|
end
|
|
end
|
|
corrdat = ['' num2str(Ncorr) ' corrections of Tilt Link H data done!'];
|
|
fprintf(fileID,fmt,corrdat);
|
|
% Concateno informazioni generali e/o letture dai nodi.
|
|
DatiTiltLinkH = [DATiniTLH str2double(DatiTiltLinkH)];
|
|
% Elimino eventuali date doppie
|
|
a = 2;
|
|
while a <= r
|
|
if DatiTiltLinkH(a,1) == DatiTiltLinkH(a-1,1)
|
|
DatiTiltLinkH(a,:) = [];
|
|
r = r-1;
|
|
else
|
|
a = a+1;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if NuovoZeroTLH == 1
|
|
[rDR,cDR] = size(DatiRaw);
|
|
if rDR~=1 && cDR~=1 && isempty(DatiRaw) == 0
|
|
RawDate1 = find(DatiRaw(:,1)<=DatiTiltLinkH(1,1));
|
|
if isempty(RawDate1) == 1
|
|
RawDate2 = 1;
|
|
elseif RawDate1(end) == rDR
|
|
RawDate2 = find(DatiTiltLinkH(:,1)>DatiRaw(end,1));
|
|
else
|
|
RawDate2 = find(DatiTiltLinkH(:,1)>DatiRaw(RawDate1(end)+1,1));
|
|
end
|
|
else
|
|
RawDate1 = [];
|
|
RawDate2 = 1;
|
|
end
|
|
if isempty(RawDate1) == 0 && isempty(RawDate2) == 0
|
|
Dati = [DatiRaw(1:RawDate1(end),:);DatiTiltLinkH(RawDate2(1):end,:)];
|
|
elseif isempty(RawDate1) == 1 && isempty(RawDate2) == 0
|
|
Dati = DatiTiltLinkH;
|
|
else
|
|
Dati = DatiRaw;
|
|
end
|
|
% Elimino appoggio più vecchio di un mese
|
|
RawDate3 = find(Dati(:,1)<now-30);
|
|
if isempty(RawDate3) == 0
|
|
[rDati,~] = size(Dati);
|
|
if RawDate3(end) == rDati
|
|
else
|
|
Dati = Dati(RawDate3(end)+1:end,:);
|
|
end
|
|
end
|
|
if isfile(RawDataFile) == 1
|
|
delete(RawDataFile);
|
|
end
|
|
else
|
|
Dati = DatiTiltLinkH;
|
|
end
|
|
Dati(:,1) = Dati(:,1) - 730000;
|
|
csvwrite(RawDataFile,Dati);
|
|
end
|
|
|
|
%% Tilt Link HR H
|
|
if yesTLHRH == 0 % Non ci sono Tilt Link HR H
|
|
DatiTiltLinkHRH = [];
|
|
ErrTiltLinkHRH = [];
|
|
wardat = 'lettura function: there are not Tilt Link HR H';
|
|
fprintf(fileID,fmt,wardat);
|
|
else
|
|
RawDataFile = ['' IDcentralina '-' DTcatena '-TLHRH-RawData.csv'];
|
|
NAN = 0;
|
|
while NAN == 0
|
|
if datenum(datainiTLHRH) == datenum(Data(1,1))
|
|
tempoiniTLHRH = char(Data(1,2));
|
|
end
|
|
NodeType = 'Tilt Link HR H';
|
|
NodeNumTLHRH = num2str(cell2mat(NodoTiltLinkHRH(1,2))); % scarico i dati del primo nodo
|
|
% Scarico dei dati relativi alla centralina con informazioni di Data e ora, livello batteria e temperatura
|
|
% Step 1 (vedi commento più avanti)
|
|
comando = ['select Date, Time from RawDataView where Date = ''' ...
|
|
datainiTLHRH ''' and Time >= ''' tempoiniTLHRH ''' and ToolNameID = ''' DTcatena...
|
|
''' and UnitName = ''' IDcentralina ''' and NodeType = ''' NodeType...
|
|
''' and NodeNum = ''' NodeNumTLHRH ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATiniTLHRH = curs.Data;
|
|
Ntempo = DATiniTLHRH;
|
|
[r,c] = size(DATiniTLHRH);
|
|
saltoTLHRH = 0;
|
|
if r==1 && c==1
|
|
textdatTLHRH = 'Warning: error reading Tilt Link HR H (control unit data)!';
|
|
fprintf(fileID,fmt,textdatTLHRH);
|
|
saltoTLHRH = 1;
|
|
end
|
|
% Step 2 (vedi commento più avanti)
|
|
comando = ['select Date, Time from RawDataView where Date > ''' ...
|
|
datainiTLHRH ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' DTcatena ...
|
|
''' and NodeType = ''' NodeType ''' and NodeNum = ''' NodeNumTLHRH ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DAT2TLHRH = curs.Data;
|
|
Ndate = DAT2TLHRH;
|
|
if saltoTLHRH == 1
|
|
DATiniTLHRH = DAT2TLHRH;
|
|
end
|
|
Check = size(DAT2TLHRH);
|
|
if Check(1,2) > 1 % ho superato il primo giorno
|
|
% Concateno le informazioni relative a Step 1 e 2 (se necessario...)
|
|
if saltoTLHRH == 0
|
|
DATiniTLHRH = [DATiniTLHRH; DAT2TLHRH];
|
|
end
|
|
end
|
|
% Modifico il formato di data e ora in DATini.
|
|
[rD,cD] = size(DATiniTLHRH);
|
|
if rD ~=1 && cD ~=1
|
|
T = [cell2mat(DATiniTLHRH(:,1)) repmat(' ', [rD,1]) cell2mat(DATiniTLHRH(:,2))];
|
|
T = datenum(T);
|
|
% Converto da Cell Array a Matrice.
|
|
DATiniTLHRH = T;
|
|
else
|
|
DATiniTLHRH = [];
|
|
end
|
|
|
|
% Scarico dati relativi ai singoli nodi
|
|
[rd,~] = size(Ndate); % numero di dati successivi al primo giorno di calcolo
|
|
[rt,~] = size(Ntempo); % numero di dati del primo giorno di calcolo
|
|
% creo la matrice per i dati Tunnel Link
|
|
if saltoTLHRH == 0
|
|
if Check(1,2) > 1 % ho superato il primo giorno
|
|
DatiTiltLinkHRH = cell(rd+rt,6*rTLHRH);
|
|
else
|
|
DatiTiltLinkHRH = cell(rt,6*rTLHRH);
|
|
end
|
|
else
|
|
DatiTiltLinkHRH = cell(rd,6*rTLHRH);
|
|
end
|
|
NTiltLinkHRH = cell2mat(NodoTiltLinkHRH(:,2));
|
|
col = 6;
|
|
ii = 1;
|
|
w = 0;
|
|
while ii <= rTLHRH
|
|
% Step 1: Acquisisco i dati registrati successivamente all'ultimo scarico,
|
|
% ma limitandomi a quelli registrati nel corso di quella singola giornata;
|
|
nN = NTiltLinkHRH(ii,1);
|
|
nNodo = num2str(nN);
|
|
comando = ['select Val0, Val1, Val3, Val4, Val5, Val6 from RawDataView where Date = ''' ...
|
|
datainiTLHRH ''' and Time >= ''' tempoiniTLHRH ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoTLHRH = curs.Data;
|
|
% Step 2: Considero le date successive e scarico tutti i dati disponibili.
|
|
comando = ['select Val0, Val1, Val3, Val4, Val5, Val6 from RawDataView where Date > ''' ...
|
|
datainiTLHRH ''' and ToolNameID = ''' DTcatena ''' and UnitName = ''' IDcentralina...
|
|
''' and NodeType = ''' NodeType ''' and NodeNum = ' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoTLHRHd = curs.Data;
|
|
|
|
% DATnodo è la matrice che raccoglie i dati dell' ii-esimo nodo,
|
|
% DATnodi è la matrice che concatena i dati relativi a ciascun nodo.
|
|
ini_col = col-5;
|
|
if saltoTLHRH == 0
|
|
DatiTiltLinkHRH(1:rt,ini_col:col) = DATnodoTLHRH(:,:);
|
|
else
|
|
DatiTiltLinkHRH(1:rd,ini_col:col) = DATnodoTLHRHd(:,:);
|
|
end
|
|
|
|
[rn,~] = size(DATnodoTLHRHd); % controllo date
|
|
if rn < rd % normalmente sono uguali
|
|
for i = rn+1:rd
|
|
DATnodoTLHRHd(i,:) = DATnodoTLHRHd(rn,:); % se mancano dati, copio gli ultimi
|
|
end
|
|
wardat = ['Node Tilt Link HR H ' num2str(ii) ' does NOT work!'];
|
|
fprintf(fileID,fmt,wardat);
|
|
w = 1;
|
|
end
|
|
|
|
if Check(1,2) > 1
|
|
if saltoTLHRH == 0
|
|
DatiTiltLinkHRH(rt+1:rt+rd,ini_col:col) = DATnodoTLHRHd(:,:);
|
|
end
|
|
else
|
|
DatiTiltLinkHRH = DatiTiltLinkHRH(1:end,:);
|
|
end
|
|
okdatTLHRH = ['Data of node number ' num2str(ii) ' of ' ...
|
|
num2str(rTLHRH) ' Tilt Link HR H nodes downloaded correctly'];
|
|
fprintf(fileID,fmt,okdatTLHRH);
|
|
ii = ii+1;
|
|
col = col+6;
|
|
end
|
|
if w == 0
|
|
wardat = 'There are not warning for Tilt Link HR H!';
|
|
fprintf(fileID,fmt,wardat);
|
|
end
|
|
|
|
% Controllo gli eventuali errori ('Err1' o '---') e li rimuovo,
|
|
% rimpiazzandoli con l'ultimo dato disponibile di quel nodo
|
|
[r,c] = size(DatiTiltLinkHRH);
|
|
ErrTiltLinkHRH = zeros(r,c);
|
|
Ncorr = 0;
|
|
ESCI = 0;
|
|
NAN = 1;
|
|
if NuovoZeroTLHRH == 1
|
|
if isfile(RawDataFile) == 1
|
|
DatiRaw = csvread(RawDataFile);
|
|
[rDR,cDR] = size(DatiRaw);
|
|
DatiRaw(:,1) = DatiRaw(:,1) + 730000;
|
|
RawDate = find(DatiRaw(:,1)<=datenum(datainiTLHRH));
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDate = [];
|
|
DatiRaw = [];
|
|
end
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDate = [];
|
|
DatiRaw = [];
|
|
end
|
|
% --- Codice per il primo dato ---
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiTiltLinkHRH(1,jj)));
|
|
idxND = find(strcmp('No Data',DatiTiltLinkHRH(1,jj)));
|
|
idxT = find(strcmp('---',DatiTiltLinkHRH(1,jj)));
|
|
idxT2 = find(strcmp('-',DatiTiltLinkHRH(1,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiTiltLinkHRH(1,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiTiltLinkHRH(1,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiTiltLinkHRH(1,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiTiltLinkHRH(1,jj)));
|
|
idxN = find(strcmp('null',DatiTiltLinkHRH(1,jj)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxND);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
[ri,~] = size(idx);
|
|
if ri == 1
|
|
wardat = 'Warning on the correction of Tilt Link HR H nodes: there are not data at the beginning of the array!';
|
|
fprintf(fileID,fmt,wardat);
|
|
if rDR==1 && cDR==1 || NuovoZeroTLHRH == 0 % il file non è mai stato scritto, cerco la data precedente
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
if datenum(datainiTLHRH)+1 < now
|
|
datainiTLHRH = datestr(datenum(datainiTLHRH)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yesTLHRH = 0;
|
|
end
|
|
else
|
|
if isempty(RawDate) == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiTLHRH = datestr(datenum(datainiTLHRH)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
if isnan(DatiRaw(RawDate(end),jj+1)) == 0
|
|
DatiTiltLinkHRH(1,jj) = cellstr(num2str(DatiRaw(RawDate(end),jj+1)));
|
|
ErrTiltLinkHRH(1,jj) = 1;
|
|
wardat = 'Data of Tilt Link HR H nodes corrected using Raw Data of reference Csv file.';
|
|
fprintf(fileID,fmt,wardat);
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
else
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiTLHRH = datestr(datenum(datainiTLHRH)-1,'yyyy-mm-dd');
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if ESCI == 0
|
|
% Cerco i multipli di 6 per identificare le temperature
|
|
Int = jj/6;
|
|
if floor(Int) == Int
|
|
% Controllo ampolle
|
|
if str2double(DatiTiltLinkHRH(1,jj)) > 1000
|
|
if rDR==1 && cDR==1 || NuovoZeroTLHRH == 0
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
if datenum(datainiTLHRH)+1 < now
|
|
datainiTLHRH = datestr(datenum(datainiTLHRH)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yesTLHRH = 0;
|
|
end
|
|
else
|
|
if isempty(RawDate) == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiTLHRH = datestr(datenum(datainiTLHRH)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
DatiTiltLinkHRH(1,jj-5) = cellstr(num2str(DatiRaw(RawDate(end),jj-4)));
|
|
DatiTiltLinkHRH(1,jj-4) = cellstr(num2str(DatiRaw(RawDate(end),jj-3)));
|
|
DatiTiltLinkHRH(1,jj-3) = cellstr(num2str(DatiRaw(RawDate(end),jj-2)));
|
|
DatiTiltLinkHRH(1,jj-2) = cellstr(num2str(DatiRaw(RawDate(end),jj-1)));
|
|
DatiTiltLinkHRH(1,jj-1) = cellstr(num2str(DatiRaw(RawDate(end),jj)));
|
|
DatiTiltLinkHRH(1,jj) = cellstr(num2str(DatiRaw(RawDate(end),jj+1)));
|
|
ErrTiltLinkHRH(1,jj) = 1;
|
|
wardat = ['Data of Tilt Link HR H nodes corrected using Raw Data of reference Csv file. '...
|
|
'MEMS was read as an electrolytic cell'];
|
|
fprintf(fileID,fmt,wardat);
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if ESCI == 0
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiTiltLinkHRH(:,jj)));
|
|
idxND = find(strcmp('No Data',DatiTiltLinkHRH(1,jj)));
|
|
idxT = find(strcmp('---',DatiTiltLinkHRH(:,jj)));
|
|
idxT2 = find(strcmp('-',DatiTiltLinkHRH(:,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiTiltLinkHRH(:,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiTiltLinkHRH(:,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiTiltLinkHRH(:,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiTiltLinkHRH(:,jj)));
|
|
idxN = find(strcmp('null',DatiTiltLinkHRH(:,jj)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxND);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
[ri,~] = size(idx);
|
|
for kk=1:ri
|
|
indice=idx(kk);
|
|
if indice == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiTLHRH = datestr(datenum(datainiTLHRH)-1,'yyyy-mm-dd');
|
|
break
|
|
end
|
|
DatiTiltLinkHRH(indice,jj) = DatiTiltLinkHRH(indice-1,jj);
|
|
ErrTiltLinkHRH(indice,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
if ESCI == 1
|
|
break
|
|
end
|
|
% Elimino gli eventuali Not a Number
|
|
for nnn = 2:r % date
|
|
check = isnan(cell2mat(DatiTiltLinkHRH(nnn,jj)));
|
|
if check == 1
|
|
DatiTiltLinkHRH(nnn,jj) = DatiTiltLinkHRH(nnn-1,jj);
|
|
ErrTiltLinkHRH(nnn,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
end
|
|
end
|
|
end
|
|
corrdat = ['' num2str(Ncorr) ' corrections of Tilt Link HR H data done!'];
|
|
fprintf(fileID,fmt,corrdat);
|
|
% Concateno informazioni generali e/o letture dai nodi.
|
|
DatiTiltLinkHRH = [DATiniTLHRH str2double(DatiTiltLinkHRH)];
|
|
% Elimino eventuali date doppie
|
|
a = 2;
|
|
while a <= r
|
|
if DatiTiltLinkHRH(a,1) == DatiTiltLinkHRH(a-1,1)
|
|
DatiTiltLinkHRH(a,:) = [];
|
|
r = r-1;
|
|
else
|
|
a = a+1;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if NuovoZeroTLHRH == 1
|
|
[rDR,cDR] = size(DatiRaw);
|
|
if rDR~=1 && cDR~=1 && isempty(DatiRaw) == 0
|
|
RawDate1 = find(DatiRaw(:,1)<=DatiTiltLinkHRH(1,1));
|
|
if isempty(RawDate1) == 1
|
|
RawDate2 = 1;
|
|
elseif RawDate1(end) == rDR
|
|
RawDate2 = find(DatiTiltLinkHRH(:,1)>DatiRaw(end,1));
|
|
else
|
|
RawDate2 = find(DatiTiltLinkHRH(:,1)>DatiRaw(RawDate1(end)+1,1));
|
|
end
|
|
else
|
|
RawDate1 = [];
|
|
RawDate2 = 1;
|
|
end
|
|
if isempty(RawDate1) == 0 && isempty(RawDate2) == 0
|
|
Dati = [DatiRaw(1:RawDate1(end),:);DatiTiltLinkHRH(RawDate2(1):end,:)];
|
|
elseif isempty(RawDate1) == 1 && isempty(RawDate2) == 0
|
|
Dati = DatiTiltLinkHRH;
|
|
else
|
|
Dati = DatiRaw;
|
|
end
|
|
% Elimino appoggio più vecchio di un mese
|
|
RawDate3 = find(Dati(:,1)<now-30);
|
|
if isempty(RawDate3) == 0
|
|
[rDati,~] = size(Dati);
|
|
if RawDate3(end) == rDati
|
|
else
|
|
Dati = Dati(RawDate3(end)+1:end,:);
|
|
end
|
|
end
|
|
if isfile(RawDataFile) == 1
|
|
delete(RawDataFile);
|
|
end
|
|
else
|
|
Dati = DatiTiltLinkHRH;
|
|
end
|
|
Dati(:,1) = Dati(:,1) - 730000;
|
|
csvwrite(RawDataFile,Dati);
|
|
end
|
|
|
|
%% PreConv Link
|
|
if yesPCL == 0 % Non ci sono PreConv Link
|
|
DatiPreConvLink = [];
|
|
ErrPreConvLink = [];
|
|
wardat = 'lettura function: there are not PreConv Link';
|
|
fprintf(fileID,fmt,wardat);
|
|
else
|
|
RawDataFile = ['' IDcentralina '-' DTcatena '-PCL-RawData.csv'];
|
|
NAN = 0;
|
|
while NAN == 0
|
|
if datenum(datainiPCL) == datenum(Data(1,1))
|
|
tempoiniPCL = char(Data(1,2));
|
|
end
|
|
NodeType = 'PreConv Link';
|
|
NodeNumPCL = num2str(cell2mat(NodoPreConvLink(rPCL,2)));
|
|
% Scarico dei dati relativi alla centralina con informazioni di Data e ora, livello batteria e temperatura
|
|
% Step 1 (vedi commento più avanti)
|
|
comando = ['select Date, Time from RawDataView where Date = ''' ...
|
|
datainiPCL ''' and Time >= ''' tempoiniPCL ''' and UnitName = ''' IDcentralina...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum = ''' NodeNumPCL ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATiniPCL = curs.Data;
|
|
Ntempo = DATiniPCL;
|
|
[r,c] = size(DATiniPCL);
|
|
saltoPCL = 0;
|
|
if r==1 && c==1
|
|
textdatPCL = 'Warning: error reading PreConv Link (control unit data)!';
|
|
fprintf(fileID,fmt,textdatPCL);
|
|
saltoPCL = 1;
|
|
end
|
|
% Step 2 (vedi commento più avanti)
|
|
comando = ['select Date, Time from RawDataView where Date > ''' ...
|
|
datainiPCL ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum = ''' NodeNumPCL ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
% Concateno le informazioni relative a Step 1 e 2 (se necessario...)
|
|
DAT2PCL = curs.Data;
|
|
Ndate = DAT2PCL;
|
|
if saltoPCL == 1
|
|
DATiniPCL = DAT2PCL;
|
|
end
|
|
Check = size(DAT2PCL);
|
|
if Check(1,2) > 1 % ho superato il primo giorno
|
|
if saltoPCL == 0
|
|
DATiniPCL = [DATiniPCL; DAT2PCL];
|
|
end
|
|
end
|
|
% Modifico il formato di data e ora in DATini.
|
|
[rD,cD] = size(DATiniPCL);
|
|
if rD ~=1 && cD ~=1
|
|
T = [cell2mat(DATiniPCL(:,1)) repmat(' ', [rD,1]) cell2mat(DATiniPCL(:,2))];
|
|
T = datenum(T);
|
|
% Converto da Cell Array a Matrice.
|
|
DATiniPCL = T;
|
|
else
|
|
DATiniPCL = [];
|
|
end
|
|
|
|
% Scarico dati relativi ai singoli nodi
|
|
[rd,~] = size(Ndate);
|
|
[rt,~] = size(Ntempo);
|
|
if saltoPCL == 0
|
|
% creo la matrice per i datiPreConvLink
|
|
if Check(1,2) > 1
|
|
DatiPreConvLink = cell(rd+rt,4*rPCL);
|
|
else
|
|
DatiPreConvLink = cell(rt,4*rPCL);
|
|
end
|
|
else
|
|
DatiPreConvLink = cell(rd,4*rPCL);
|
|
end
|
|
NPreConvLink = cell2mat(NodoPreConvLink(:,2));
|
|
col = 4;
|
|
ii = 1;
|
|
w = 0;
|
|
while ii <= rPCL
|
|
% Step 1: Acquisisco i dati registrati successivamente all'ultimo scarico,
|
|
% ma limitandomi a quelli registrati nel corso di quella singola giornata;
|
|
nN = NPreConvLink(ii,1);
|
|
nNodo = num2str(nN);
|
|
comando = ['select Val0, Val1, Val2, Val6 from RawDataView where Date = ''' ...
|
|
datainiPCL ''' and Time >= ''' tempoiniPCL ''' and UnitName = ''' IDcentralina ...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoPCL = curs.Data;
|
|
% Step 2: Considero le date successive e scarico tutti i dati disponibili.
|
|
comando = ['select Val0, Val1, Val2, Val6 from RawDataView where Date > ''' ...
|
|
datainiPCL ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoPCLd = curs.Data;
|
|
% Concateno i dati relativi a Step 1 e 2 per il nodo ii-esimo.
|
|
|
|
% DATnodo è la matrice che raccoglie i dati dell' ii-esimo nodo,
|
|
% DATnodi è la matrice che concatena i dati relativi a ciascun nodo.
|
|
ini_col = col-3;
|
|
if saltoPCL == 0
|
|
DatiPreConvLink(1:rt,ini_col:col) = DATnodoPCL(:,:);
|
|
else
|
|
DatiPreConvLink(1:rd,ini_col:col) = DATnodoPCL(:,:);
|
|
end
|
|
|
|
[rn,~] = size(DATnodoPCLd); % controllo date
|
|
if rn < rd % normalmente sono uguali
|
|
for i = rn+1:rd
|
|
DATnodoPCLd(i,:) = DATnodoPCLd(rn,:); % se mancano dati, copio gli ultimi
|
|
end
|
|
wardat = ['Node PreConv Link ' num2str(ii) ' does NOT work!'];
|
|
fprintf(fileID,fmt,wardat);
|
|
w = 1;
|
|
end
|
|
|
|
if Check(1,2) > 1
|
|
if saltoPCL == 0
|
|
DatiPreConvLink(rt+1:rt+rd,ini_col:col) = DATnodoPCLd(:,:);
|
|
end
|
|
else
|
|
DatiPreConvLink = DatiPreConvLink(1:end,:);
|
|
end
|
|
okdatPCL = ['Data of node number ' num2str(ii) ' of ' ...
|
|
num2str(rPCL) ' PreConv Link nodes downloaded correctly'];
|
|
fprintf(fileID,fmt,okdatPCL);
|
|
col = col+4;
|
|
ii = ii+1;
|
|
end
|
|
if w == 0
|
|
wardat = 'There are not warning for PreConv Link!';
|
|
fprintf(fileID,fmt,wardat);
|
|
end
|
|
|
|
% Controllo gli eventuali errori ('Err1' o '---') e li rimuovo,
|
|
% rimpiazzandoli con l'ultimo dato disponibile di quel nodo
|
|
[r,c] = size(DatiPreConvLink);
|
|
ErrPreConvLink = zeros(r,c);
|
|
Ncorr = 0;
|
|
ESCI = 0;
|
|
NAN = 1;
|
|
if NuovoZeroPCL == 1
|
|
if isfile(RawDataFile) == 1
|
|
DatiRaw = csvread(RawDataFile);
|
|
[rDR,cDR] = size(DatiRaw);
|
|
DatiRaw(:,1) = DatiRaw(:,1) + 730000;
|
|
RawDate = find(DatiRaw(:,1)<=datenum(datainiPCL));
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDate = [];
|
|
DatiRaw = [];
|
|
end
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDate = [];
|
|
DatiRaw = [];
|
|
end
|
|
|
|
% --- Codice per il primo dato ---
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiPreConvLink(1,jj)));
|
|
idxND = find(strcmp('No Data',DatiPreConvLink(1,jj)));
|
|
idxT = find(strcmp('---',DatiPreConvLink(1,jj)));
|
|
idxT2 = find(strcmp('-',DatiPreConvLink(1,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiPreConvLink(1,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiPreConvLink(1,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiPreConvLink(1,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiPreConvLink(1,jj)));
|
|
idxN = find(strcmp('null',DatiPreConvLink(1,jj)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxND);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
[ri,~] = size(idx);
|
|
if ri == 1
|
|
wardat = 'Warning on the correction of Pre Conv Link nodes: there are not data at the beginning of the array!';
|
|
fprintf(fileID,fmt,wardat);
|
|
if rDR==1 && cDR==1 || NuovoZeroPCL == 0 % il file non è mai stato scritto, cerco la data precedente
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
if datenum(datainiPCL)+1 < now
|
|
datainiPCL = datestr(datenum(datainiPCL)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yesPCL = 0;
|
|
end
|
|
else
|
|
if isempty(RawDate) == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiPCL = datestr(datenum(datainiPCL)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
if isnan(DatiRaw(RawDate(end),jj+1)) == 0
|
|
DatiPreConvLink(1,jj) = cellstr(num2str(DatiRaw(RawDate(end),jj+1)));
|
|
ErrPreConvLink(1,jj) = 1;
|
|
wardat = 'Data of PreConv Link nodes corrected using Raw Data of reference Csv file.';
|
|
fprintf(fileID,fmt,wardat);
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
else
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiPCL = datestr(datenum(datainiPCL)-1,'yyyy-mm-dd');
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if ESCI == 0
|
|
% Cerco i multipli di 4 per identificare le temperature
|
|
Int = jj/4;
|
|
if floor(Int) == Int
|
|
% Controllo ampolle
|
|
if str2double(DatiPreConvLink(1,jj)) > 1000
|
|
if rDR==1 && cDR==1 || NuovoZeroPCL == 0
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
if datenum(datainiPCL)+1 < now
|
|
datainiPCL = datestr(datenum(datainiPCL)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yesPCL = 0;
|
|
end
|
|
else
|
|
if isempty(RawDate) == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiPCL = datestr(datenum(datainiPCL)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
DatiPreConvLink(1,jj-3) = cellstr(num2str(DatiRaw(RawDate(end),jj-2)));
|
|
DatiPreConvLink(1,jj-2) = cellstr(num2str(DatiRaw(RawDate(end),jj-1)));
|
|
DatiPreConvLink(1,jj-1) = cellstr(num2str(DatiRaw(RawDate(end),jj)));
|
|
DatiPreConvLink(1,jj) = cellstr(num2str(DatiRaw(RawDate(end),jj+1)));
|
|
ErrPreConvLink(1,jj) = 1;
|
|
wardat = ['Data of PreConv Link nodes corrected using Raw Data of reference Csv file. '...
|
|
'MEMS was read as an electrolytic cell'];
|
|
fprintf(fileID,fmt,wardat);
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if ESCI == 0
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiPreConvLink(:,jj)));
|
|
idxND = find(strcmp('No Data',DatiPreConvLink(:,jj)));
|
|
idxT = find(strcmp('---',DatiPreConvLink(:,jj)));
|
|
idxT2 = find(strcmp('-',DatiPreConvLink(:,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiPreConvLink(:,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiPreConvLink(:,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiPreConvLink(:,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiPreConvLink(:,jj)));
|
|
idxN = find(strcmp('null',DatiPreConvLink(:,jj)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxND);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
[ri,~] = size(idx);
|
|
for kk=1:ri
|
|
indice=idx(kk);
|
|
if indice == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiPCL = datestr(datenum(datainiPCL)-1,'yyyy-mm-dd');
|
|
break
|
|
end
|
|
DatiPreConvLink(indice,jj) = DatiPreConvLink(indice-1,jj);
|
|
ErrPreConvLink(indice,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
for ii = 2:r
|
|
% Cerco i multipli di 4 per identificare le temperature
|
|
Int = jj/4;
|
|
if floor(Int) == Int
|
|
% Controllo ampolle
|
|
if str2double(DatiPreConvLink(ii,jj)) > 1000
|
|
DatiPreConvLink(ii,jj-6:jj) = DatiPreConvLink(ii-1,jj-6:jj);
|
|
ErrPreConvLink(ii,jj) = 1;
|
|
wardat = ['Data of PreConv Link nodes corrected using Raw Data of reference Csv file. '...
|
|
'MEMS was read as an electrolytic cell'];
|
|
fprintf(fileID,fmt,wardat);
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
end
|
|
end
|
|
if ESCI == 1
|
|
break
|
|
end
|
|
% Elimino gli eventuali Not a Number
|
|
for nnn = 2:r % date
|
|
check = isnan(cell2mat(DatiPreConvLink(nnn,jj)));
|
|
if check == 1
|
|
DatiPreConvLink(nnn,jj) = DatiPreConvLink(nnn-1,jj);
|
|
ErrPreConvLink(nnn,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
corrdat = ['' num2str(Ncorr) ' corrections of PreConv Link data done!'];
|
|
fprintf(fileID,fmt,corrdat);
|
|
% Concateno informazioni generali e/o letture dai nodi.
|
|
DatiPreConvLink = [DATiniPCL str2double(DatiPreConvLink)];
|
|
% Elimino eventuali date doppie
|
|
a = 2;
|
|
while a <= r
|
|
if DatiPreConvLink(a,1) == DatiPreConvLink(a-1,1)
|
|
DatiPreConvLink(a,:) = [];
|
|
r = r-1;
|
|
else
|
|
a = a+1;
|
|
end
|
|
end
|
|
end
|
|
if NuovoZeroPCL == 1
|
|
[rDR,cDR] = size(DatiRaw);
|
|
if rDR~=1 && cDR~=1 && isempty(DatiRaw) == 0
|
|
RawDate1 = find(DatiRaw(:,1)<=DatiPreConvLink(1,1));
|
|
if isempty(RawDate1) == 1
|
|
RawDate2 = 1;
|
|
elseif RawDate1(end) == rDR
|
|
RawDate2 = find(DatiPreConvLink(:,1)>DatiRaw(end,1));
|
|
else
|
|
RawDate2 = find(DatiPreConvLink(:,1)>DatiRaw(RawDate1(end)+1,1));
|
|
end
|
|
else
|
|
RawDate1 = [];
|
|
RawDate2 = 1;
|
|
end
|
|
if isempty(RawDate1) == 0 && isempty(RawDate2) == 0
|
|
Dati = [DatiRaw(1:RawDate1(end),:);DatiPreConvLink(RawDate2(1):end,:)];
|
|
elseif isempty(RawDate1) == 1 && isempty(RawDate2) == 0
|
|
Dati = DatiPreConvLink;
|
|
else
|
|
Dati = DatiRaw;
|
|
end
|
|
% Elimino appoggio più vecchio di un mese
|
|
RawDate3 = find(Dati(:,1)<now-30);
|
|
if isempty(RawDate3) == 0
|
|
[rDati,~] = size(Dati);
|
|
if RawDate3(end) == rDati
|
|
else
|
|
Dati = Dati(RawDate3(end)+1:end,:);
|
|
end
|
|
end
|
|
if isfile(RawDataFile) == 1
|
|
delete(RawDataFile);
|
|
end
|
|
else
|
|
Dati = DatiPreConvLink;
|
|
end
|
|
Dati(:,1) = Dati(:,1) - 730000;
|
|
csvwrite(RawDataFile,Dati);
|
|
end
|
|
|
|
%% PreConv Link HR
|
|
if yesPCLHR == 0 % non ci sono PreConvLinkHR
|
|
DatiPreConvLinkHR = [];
|
|
ErrPreConvLinkHR = [];
|
|
wardat = 'lettura function: there are not PreConv Link HR';
|
|
fprintf(fileID,fmt,wardat);
|
|
else
|
|
RawDataFile = ['' IDcentralina '-' DTcatena '-PCLHR-RawData.csv'];
|
|
NAN = 0;
|
|
while NAN == 0
|
|
if datenum(datainiPCLHR) == datenum(Data(1,1))
|
|
tempoiniPCLHR = char(Data(1,2));
|
|
end
|
|
NodeType = 'PreConv Link HR';
|
|
NodeNumPCLHR = num2str(cell2mat(NodoPreConvLinkHR(rPCLHR,2)));
|
|
% Scarico dei dati relativi alla centralina con informazioni di Data e ora, livello batteria e temperatura
|
|
% Step 1 (vedi commento più avanti)
|
|
comando = ['select Date, Time from RawDataView where Date = ''' ...
|
|
datainiPCLHR ''' and Time >= ''' tempoiniPCLHR ''' and UnitName = ''' IDcentralina...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum = ''' NodeNumPCLHR ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATiniPCLHR = curs.Data;
|
|
Ntempo = DATiniPCLHR;
|
|
[r,c] = size(DATiniPCLHR);
|
|
saltoPCLHR = 0;
|
|
if r==1 && c==1
|
|
textdatPCLHR = 'Warning: error reading PreConv Link HR (control unit data)!';
|
|
fprintf(fileID,fmt,textdatPCLHR);
|
|
saltoPCLHR = 1;
|
|
end
|
|
% Step 2 (vedi commento più avanti)
|
|
comando = ['select Date, Time from RawDataView where Date > ''' ...
|
|
datainiPCLHR ''' and UnitName = ''' IDcentralina ''' and ToolNameID = '''...
|
|
DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ''' ...
|
|
NodeNumPCLHR ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DAT2PCLHR = curs.Data;
|
|
Ndate = DAT2PCLHR;
|
|
if saltoPCLHR == 1
|
|
DATiniPCLHR = DAT2PCLHR;
|
|
end
|
|
% Concateno le informazioni relative a Step 1 e 2 (se necessario...)
|
|
Check = size(DAT2PCLHR);
|
|
if Check(1,2) > 1 % ho superato il primo giorno
|
|
if saltoPCLHR == 1
|
|
DATiniPCLHR = [DATiniPCLHR; DAT2PCLHR];
|
|
end
|
|
end
|
|
% Modifico il formato di data e ora in DATini.
|
|
[rD,cD] = size(DATiniPCLHR);
|
|
if rD ~=1 && cD ~=1
|
|
T = [cell2mat(DATiniPCLHR(:,1)) repmat(' ', [rD,1]) cell2mat(DATiniPCLHR(:,2))];
|
|
T = datenum(T);
|
|
% Converto da Cell Array a Matrice.
|
|
DATiniPCLHR = T;
|
|
else
|
|
DATiniPCLHR = [];
|
|
end
|
|
|
|
% Scarico dati relativi ai singoli nodi
|
|
[rd,~] = size(Ndate);
|
|
[rt,~] = size(Ntempo);
|
|
% creo la matrice per i dati
|
|
if saltoPCLHR == 0
|
|
if Check(1,2) > 1
|
|
DatiPreConvLinkHR = cell(rd+rt,3*rPCLHR);
|
|
else
|
|
DatiPreConvLinkHR = cell(rt,3*rPCLHR);
|
|
end
|
|
else
|
|
DatiPreConvLinkHR = cell(rd,3*rPCLHR);
|
|
end
|
|
NPreConvLinkHR = cell2mat(NodoPreConvLinkHR(:,2));
|
|
ii = 1;
|
|
col = 3;
|
|
w = 0;
|
|
while ii <= rPCL
|
|
% Step 1: Acquisisco i dati registrati successivamente all'ultimo scarico,
|
|
% ma limitandomi a quelli registrati nel corso di quella singola giornata;
|
|
nN = NPreConvLinkHR(ii,1);
|
|
nNodo = num2str(nN);
|
|
comando = ['select Val0, Val1, Val3, Val4, Val5, Val6 from RawDataView where Date = ''' datainiPCLHR ''' and Time >= ''' ...
|
|
tempoiniPCLHR ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoPCLHR = curs.Data;
|
|
% Step 2: Considero le date successive e scarico tutti i dati disponibili.
|
|
comando = ['select Val0, Val1, Val3, Val4, Val5, Val6 from RawDataView where Date > ''' ...
|
|
datainiPCLHR ''' and UnitName = ''' IDcentralina ''' and ToolNameID = '''...
|
|
DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoPCLHRd = curs.Data;
|
|
% Concateno i dati relativi a Step 1 e 2 per il nodo ii-esimo.
|
|
|
|
ini_col = col-5;
|
|
if saltoPCLHR == 0
|
|
DatiPreConvLinkHR(1:rt,ini_col:col) = DATnodoPCLHR(:,:);
|
|
else
|
|
DatiPreConvLinkHR(1:rd,ini_col:col) = DATnodoPCLHR(:,:);
|
|
end
|
|
|
|
[rn,~] = size(DATnodoTLHRdH); % controllo date
|
|
if rn < rd % normalmente sono uguali
|
|
for i = rn+1:rd
|
|
DATnodoPCLHRd(i,:) = DATnodoPCLHRd(rn,:); % se mancano dati, copio gli ultimi
|
|
end
|
|
wardat = ['Node PreConv Link HR ' num2str(ii) ' does NOT work!'];
|
|
fprintf(fileID,fmt,wardat);
|
|
w = 1;
|
|
end
|
|
|
|
if Check(1,2) > 1
|
|
if saltoPCLHR == 0
|
|
DatiPreConvLinkHR(rt+1:rt+rd,ini_col:col) = DATnodoPCLHRd(:,:);
|
|
end
|
|
else
|
|
DatiPreConvLinkHR = DatiPreConvLinkHR(1:end,:);
|
|
end
|
|
okdatPCLHR = ['Data of node number ' num2str(ii) ' of ' ...
|
|
num2str(rPCLHR) ' PreConv Link HR nodes downloaded correctly'];
|
|
fprintf(fileID,fmt,okdatPCLHR);
|
|
col = col+3;
|
|
ii = ii+1;
|
|
end
|
|
if w == 0
|
|
wardat = 'There are not warning for PreConv Link HR!';
|
|
fprintf(fileID,fmt,wardat);
|
|
end
|
|
|
|
% Controllo gli eventuali errori ('Err1' o '---') e li rimuovo,
|
|
% rimpiazzandoli con l'ultimo dato disponibile di quel nodo
|
|
[r,c] = size(DatiPreConvLinkHR);
|
|
ErrPreConvLinkHR = zeros(r,c);
|
|
Ncorr = 0;
|
|
ESCI = 0;
|
|
NAN = 1;
|
|
if NuovoZeroPCLHR == 1
|
|
if isfile(RawDataFile) == 1
|
|
DatiRaw = csvread(RawDataFile);
|
|
[rDR,cDR] = size(DatiRaw);
|
|
DatiRaw(:,1) = DatiRaw(:,1) + 730000;
|
|
RawDate = find(DatiRaw(:,1)<=datenum(datainiPCLHR));
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDate = [];
|
|
DatiRaw = [];
|
|
end
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDate = [];
|
|
DatiRaw = [];
|
|
end
|
|
% --- Codice per il primo dato ---
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiPreConvLinkHR(1,jj)));
|
|
idxND = find(strcmp('No Data',DatiPreConvLinkHR(1,jj)));
|
|
idxT = find(strcmp('---',DatiPreConvLinkHR(1,jj)));
|
|
idxT2 = find(strcmp('-',DatiPreConvLinkHR(1,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiPreConvLinkHR(1,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiPreConvLinkHR(1,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiPreConvLinkHR(1,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiPreConvLinkHR(1,jj)));
|
|
idxN = find(strcmp('null',DatiPreConvLinkHR(1,jj)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxND);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
[ri,~] = size(idx);
|
|
if ri == 1
|
|
wardat = 'Warning on the correction of PreConv Link HR nodes: there are not data at the beginning of the array!';
|
|
fprintf(fileID,fmt,wardat);
|
|
if rDR==1 && cDR==1 || NuovoZeroPCLHR == 0 % il file non è mai stato scritto, cerco la data precedente
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
if datenum(datainiPCLHR)+1 < now
|
|
datainiPCLHR = datestr(datenum(datainiPCLHR)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yesPCLHR = 0;
|
|
end
|
|
else
|
|
if isempty(RawDate) == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiPCLHR = datestr(datenum(datainiPCLHR)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
if isnan(DatiRaw(RawDate(end),jj+1)) == 0
|
|
DatiPreConvLinkHR(1,jj) = cellstr(num2str(DatiRaw(RawDate(end),jj+1)));
|
|
ErrPreConvLinkHR(1,jj) = 1;
|
|
wardat = 'Data of PreConv Link HR nodes corrected using Raw Data of reference Csv file.';
|
|
fprintf(fileID,fmt,wardat);
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
else
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiPCLHR = datestr(datenum(datainiPCLHR)-1,'yyyy-mm-dd');
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if ESCI == 0
|
|
% Cerco i multipli di 6 per identificare le temperature
|
|
Int = jj/6;
|
|
if floor(Int) == Int
|
|
% Controllo ampolle
|
|
if str2double(DatiPreConvLinkHR(1,jj)) < 500
|
|
if rDR==1 && cDR==1 || NuovoZeroPCLHR == 0
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
if datenum(datainiPCLHR)+1 < now
|
|
datainiPCLHR = datestr(datenum(datainiPCLHR)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yesPCLHR = 0;
|
|
end
|
|
else
|
|
if isempty(RawDate) == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiPCLHR = datestr(datenum(datainiPCLHR)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
DatiPreConvLinkHR(1,jj-5) = cellstr(num2str(DatiRaw(RawDate(end),jj-4)));
|
|
DatiPreConvLinkHR(1,jj-4) = cellstr(num2str(DatiRaw(RawDate(end),jj-3)));
|
|
DatiPreConvLinkHR(1,jj-3) = cellstr(num2str(DatiRaw(RawDate(end),jj-2)));
|
|
DatiPreConvLinkHR(1,jj-2) = cellstr(num2str(DatiRaw(RawDate(end),jj-1)));
|
|
DatiPreConvLinkHR(1,jj-1) = cellstr(num2str(DatiRaw(RawDate(end),jj)));
|
|
DatiPreConvLinkHR(1,jj) = cellstr(num2str(DatiRaw(RawDate(end),jj+1)));
|
|
ErrPreConvLinkHR(1,jj) = 1;
|
|
wardat = ['Data of PreConv Link HR nodes corrected using Raw Data of reference Csv file. '...
|
|
'MEMS was read as an electrolytic cell'];
|
|
fprintf(fileID,fmt,wardat);
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if ESCI == 0
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiPreConvLinkHR(:,jj)));
|
|
idxND = find(strcmp('No Data',DatiPreConvLinkHR(:,jj)));
|
|
idxT = find(strcmp('---',DatiPreConvLinkHR(:,jj)));
|
|
idxT2 = find(strcmp('-',DatiPreConvLinkHR(:,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiPreConvLinkHR(:,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiPreConvLinkHR(:,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiPreConvLinkHR(:,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiPreConvLinkHR(:,jj)));
|
|
idxN = find(strcmp('null',DatiPreConvLinkHR(:,jj)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxND);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
[ri,~] = size(idx);
|
|
for kk=1:ri
|
|
indice=idx(kk);
|
|
if indice == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiPCLHR = datestr(datenum(datainiPCLHR)-1,'yyyy-mm-dd');
|
|
break
|
|
end
|
|
DatiPreConvLinkHR(indice,jj) = DatiPreConvLinkHR(indice-1,jj);
|
|
ErrPreConvLinkHR(indice,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
if ESCI == 1
|
|
break
|
|
end
|
|
% Elimino gli eventuali Not a Number
|
|
for nnn = 2:r % date
|
|
check = isnan(cell2mat(DatiPreConvLinkHR(nnn,jj)));
|
|
if check == 1
|
|
DatiPreConvLinkHR(nnn,jj) = DatiPreConvLinkHR(nnn-1,jj);
|
|
ErrPreConvLinkHR(nnn,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
end
|
|
end
|
|
end
|
|
corrdat = ['' num2str(Ncorr) ' corrections of PreConv Link HR data done!'];
|
|
fprintf(fileID,fmt,corrdat);
|
|
% Concateno informazioni generali e/o letture dai nodi.
|
|
DatiPreConvLinkHR = [DATiniPCLHR str2double(DatiPreConvLinkHR)];
|
|
% Elimino eventuali date doppie
|
|
a = 2;
|
|
while a <= r
|
|
if DatiPreConvLinkHR(a,1) == DatiPreConvLinkHR(a-1,1)
|
|
DatiPreConvLinkHR(a,:) = [];
|
|
r = r-1;
|
|
else
|
|
a = a+1;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if NuovoZeroPCLHR == 1
|
|
[rDR,cDR] = size(DatiRaw);
|
|
if rDR~=1 && cDR~=1 && isempty(DatiRaw) == 0
|
|
RawDate1 = find(DatiRaw(:,1)<=DatiPreConvLinkHR(1,1));
|
|
if isempty(RawDate1) == 1
|
|
RawDate2 = 1;
|
|
elseif RawDate1(end) == rDR
|
|
RawDate2 = find(DatiPreConvLinkHR(:,1)>DatiRaw(end,1));
|
|
else
|
|
RawDate2 = find(DatiPreConvLinkHR(:,1)>DatiRaw(RawDate1(end)+1,1));
|
|
end
|
|
else
|
|
RawDate1 = [];
|
|
RawDate2 = 1;
|
|
end
|
|
if isempty(RawDate1) == 0 && isempty(RawDate2) == 0
|
|
Dati = [DatiRaw(1:RawDate1(end),:);DatiPreConvLinkHR(RawDate2(1):end,:)];
|
|
elseif isempty(RawDate1) == 1 && isempty(RawDate2) == 0
|
|
Dati = DatiPreConvLinkHR;
|
|
else
|
|
Dati = DatiRaw;
|
|
end
|
|
% Elimino appoggio più vecchio di un mese
|
|
RawDate3 = find(Dati(:,1)<now-30);
|
|
if isempty(RawDate3) == 0
|
|
[rDati,~] = size(Dati);
|
|
if RawDate3(end) == rDati
|
|
else
|
|
Dati = Dati(RawDate3(end)+1:end,:);
|
|
end
|
|
end
|
|
if isfile(RawDataFile) == 1
|
|
delete(RawDataFile);
|
|
end
|
|
else
|
|
Dati = DatiPreConvLinkHR;
|
|
end
|
|
Dati(:,1) = Dati(:,1) - 730000;
|
|
csvwrite(RawDataFile,Dati);
|
|
end
|
|
|
|
%% Pressure Link
|
|
if yesPL == 0 % Non ci sono Pressure Link
|
|
DatiPressureLink = [];
|
|
ErrPressureLink = [];
|
|
wardat = 'lettura function: there are not Pressure Link';
|
|
fprintf(fileID,fmt,wardat);
|
|
else
|
|
RawDataFile = ['' IDcentralina '-' DTcatena '-Pressure-RawData.csv']; % Specifico per Pressure Link
|
|
NAN = 0;
|
|
DIS = 0;
|
|
while NAN == 0
|
|
if datenum(datainiPL) == datenum(Data(1,1))
|
|
tempoiniPL = char(Data(1,2));
|
|
end
|
|
NodeType = 'Pressure Link';
|
|
NodeNumPL = num2str(cell2mat(NodoPressureLink(1,2))); % scarico i dati del primo nodo
|
|
% Scarico dei dati relativi alla centralina con informazioni di Data e ora, livello batteria e temperatura
|
|
% Step 1 (vedi commento più avanti)
|
|
comando = ['select Date, Time from RawDataView where Date = ''' ...
|
|
datainiPL ''' and Time >= ''' tempoiniPL ''' and UnitName = ''' IDcentralina...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum = ''' NodeNumPL ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATiniPL = curs.Data;
|
|
Ntempo = DATiniPL;
|
|
[r,c] = size(DATiniPL);
|
|
saltoPL = 0;
|
|
if r==1 && c==1
|
|
textdatPL = 'Warning: error reading Pressure Link (control unit data)!';
|
|
fprintf(fileID,fmt,textdatPL);
|
|
saltoPL = 1;
|
|
end
|
|
% Step 2 (vedi commento più avanti)
|
|
comando = ['select Date, Time from RawDataView where Date > ''' ...
|
|
datainiPL ''' and UnitName = ''' IDcentralina ...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = '''...
|
|
NodeType ''' and NodeNum = ''' NodeNumPL ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DAT2PL = curs.Data;
|
|
Ndate = DAT2PL;
|
|
if saltoPL == 1
|
|
DATiniPL = DAT2PL;
|
|
end
|
|
Check = size(DAT2PL);
|
|
if Check(1,2) > 1 % ho superato il primo giorno
|
|
% Concateno le informazioni relative a Step 1 e 2 (se necessario...)
|
|
if saltoPL == 0
|
|
DATiniPL = [DATiniPL; DAT2PL];
|
|
end
|
|
end
|
|
% Modifico il formato di data e ora in DATini.
|
|
[rD,cD] = size(DATiniPL);
|
|
if rD ~=1 && cD ~=1
|
|
T = [cell2mat(DATiniPL(:,1)) repmat(' ', [rD,1]) cell2mat(DATiniPL(:,2))];
|
|
T = datenum(T);
|
|
% Converto da Cell Array a Matrice.
|
|
DATiniPL = T;
|
|
else
|
|
DATiniPL = [];
|
|
end
|
|
|
|
% Scarico dati relativi ai singoli nodi
|
|
[rd,~] = size(Ndate); % numero di dati successivi al primo giorno di calcolo
|
|
[rt,~] = size(Ntempo); % numero di dati del primo giorno di calcolo
|
|
if saltoPL == 0
|
|
if Check(1,2) > 1
|
|
% creo la matrice per i dati Pressure Link
|
|
DatiPressureLink = cell(rd+rt,rPrL);
|
|
else
|
|
DatiPressureLink = cell(rt,rPrL);
|
|
end
|
|
else
|
|
DatiPressureLink = cell(rd,rPrL);
|
|
end
|
|
NPressureLink = cell2mat(NodoPressureLink(:,2));
|
|
col = 1;
|
|
ii = 1;
|
|
w = 0;
|
|
while ii <= rPrL
|
|
% Step 1: Acquisisco i dati registrati successivamente all'ultimo scarico,
|
|
% ma limitandomi a quelli registrati nel corso di quella singola giornata;
|
|
nN = NPressureLink(ii,1);
|
|
nNodo = num2str(nN);
|
|
comando = ['select Val0 from RawDataView where Date = ''' ...
|
|
datainiPL ''' and Time >= ''' tempoiniPL ''' and UnitName = ''' IDcentralina ...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoPL = curs.Data;
|
|
% Step 2: Considero le date successive e scarico tutti i dati disponibili.
|
|
comando = ['select Val0 from RawDataView where Date > ''' ...
|
|
datainiPL ''' and UnitName = ''' IDcentralina ...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoPLd = curs.Data;
|
|
% Concateno i dati relativi a Step 1 e 2 per il nodo ii-esimo.
|
|
|
|
% DATnodo è la matrice che raccoglie i dati dell' ii-esimo nodo,
|
|
% DATnodi è la matrice che concatena i dati relativi a ciascun nodo.
|
|
if saltoPL == 0
|
|
DatiPressureLink(1:rt,col) = DATnodoPL(:,:);
|
|
else
|
|
DatiPressureLink(1:rd,col) = DATnodoPL(:,:);
|
|
end
|
|
|
|
[rn,~] = size(DATnodoPLd); % controllo date
|
|
if rn < rd % normalmente sono uguali
|
|
for i = rn+1:rd
|
|
DATnodoPLd(i,:) = DATnodoPLd(rn,:); % se mancano dati, copio gli ultimi
|
|
end
|
|
wardat = ['Node Pressure Link ' num2str(ii) ' does NOT work!'];
|
|
fprintf(fileID,fmt,wardat);
|
|
w = 1;
|
|
end
|
|
|
|
if Check(1,2) > 1
|
|
if saltoPL == 0
|
|
DatiPressureLink(rt+1:rt+rd,col) = DATnodoPLd(:,:);
|
|
end
|
|
else
|
|
DatiPressureLink = DatiPressureLink(1:end,:);
|
|
end
|
|
okdatPL = ['Data of node number ' num2str(ii) ' of ' ...
|
|
num2str(rPrL) ' Pressure Link nodes downloaded correctly'];
|
|
fprintf(fileID,fmt,okdatPL);
|
|
ii = ii+1;
|
|
col = col+1;
|
|
end
|
|
if w == 0
|
|
wardat = 'There are not warning for Pressure Link!';
|
|
fprintf(fileID,fmt,wardat);
|
|
end
|
|
|
|
% Controllo gli eventuali errori ('Err1' o '---') e li rimuovo,
|
|
% rimpiazzandoli con l'ultimo dato disponibile di quel nodo
|
|
[r,c] = size(DatiPressureLink);
|
|
ErrPressureLink = zeros(r,c);
|
|
Ncorr = 0;
|
|
ESCI = 0;
|
|
NAN = 1;
|
|
if NuovoZeroPrL == 1
|
|
if isfile(RawDataFile) == 1
|
|
DatiRaw = csvread(RawDataFile);
|
|
[rDR,cDR] = size(DatiRaw);
|
|
DatiRaw(:,1) = DatiRaw(:,1) + 730000;
|
|
RawDate = find(DatiRaw(:,1)<=datenum(datainiPL));
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDate = [];
|
|
DatiRaw = [];
|
|
end
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDate = [];
|
|
DatiRaw = [];
|
|
end
|
|
for jj=1:c
|
|
% Se il nodo è Dis., devo aumentare di uno la data (il nodo non
|
|
% è ancora stato installato!)
|
|
if strcmp('Dis.',DatiPressureLink(1,jj)) == 1
|
|
for dis = 2:r
|
|
if strcmp('Dis.',DatiPressureLink(dis,jj)) == 0
|
|
DatiPressureLink = DatiPressureLink(dis:end,:);
|
|
DATiniPL = DATiniPL(dis:end,:);
|
|
[r,c] = size(DatiPressureLink);
|
|
break
|
|
elseif dis == r
|
|
NAN = 0;
|
|
DIS = 1;
|
|
if datenum(datainiPL)+1 < now
|
|
datainiPL = datestr(datenum(datainiPL)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yesPL = 0;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if DIS ~= 1 && yesPL == 1
|
|
% --- Codice per il primo dato ---
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiPressureLink(1,jj)));
|
|
idxT = find(strcmp('---',DatiPressureLink(1,jj)));
|
|
idxT2 = find(strcmp('-',DatiPressureLink(1,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiPressureLink(1,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiPressureLink(1,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiPressureLink(1,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiPressureLink(1,jj)));
|
|
idxN = find(strcmp('null',DatiPressureLink(1,jj)));
|
|
idxRX = find(strcmp('No RX',DatiPressureLink(1,jj)));
|
|
idxI = find(strcmp('id Error',DatiPressureLink(1,jj)));
|
|
idxM = find(strcmp('MUX id Error',DatiPressureLink(1,jj)));
|
|
idxC = find(strcmp('CH n. Error',DatiPressureLink(1,jj)));
|
|
idxU = find(strcmp('Unknown Error',DatiPressureLink(1,jj)));
|
|
idxMC = find(strcmp('MsgCorrup',DatiPressureLink(1,jj)));
|
|
idxNS = find(strcmp('NotSupp',DatiPressureLink(1,jj)));
|
|
idxU2 = find(strcmp('Unknown',DatiPressureLink(1,jj)));
|
|
idxNA = find(strcmp('NotAv',DatiPressureLink(1,jj)));
|
|
idxND = find(strcmp('No Data',DatiPressureLink(1,jj)));
|
|
idxCE = find(strcmp('CH n. Er',DatiPressureLink(1,jj)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxCE);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
idx = union(idx,idxND);
|
|
[ri,~] = size(idx);
|
|
if ri == 1
|
|
wardat = 'Warning on the correction of Pressure Link nodes: there are not data at the beginning of the array!';
|
|
fprintf(fileID,fmt,wardat);
|
|
if rDR==1 && cDR==1 || NuovoZeroPrL == 0 % il file non è mai stato scritto, cerco la data precedente
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
if datenum(datainiPL)+1 < now
|
|
datainiPL = datestr(datenum(datainiPL)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yesPL = 0;
|
|
end
|
|
else
|
|
if isempty(RawDate) == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiPL = datestr(datenum(datainiPL)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
if isnan(DatiRaw(RawDate(end),jj+1)) == 0
|
|
DatiPressureLink(1,jj) = cellstr(num2str(DatiRaw(RawDate(end),jj+1)));
|
|
ErrPressureLink(1,jj) = 1;
|
|
wardat = 'Data of Pressure Link nodes corrected using Raw Data of reference Csv file.';
|
|
fprintf(fileID,fmt,wardat);
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
else
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiPL = datestr(datenum(datainiPL)-1,'yyyy-mm-dd');
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if ESCI == 0
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiPressureLink(:,jj)));
|
|
idxT = find(strcmp('---',DatiPressureLink(:,jj)));
|
|
idxT2 = find(strcmp('-',DatiPressureLink(:,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiPressureLink(:,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiPressureLink(:,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiPressureLink(:,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiPressureLink(:,jj)));
|
|
idxN = find(strcmp('null',DatiPressureLink(:,jj)));
|
|
idxRX = find(strcmp('No RX',DatiPressureLink(:,jj)));
|
|
idxI = find(strcmp('id Error',DatiPressureLink(:,jj)));
|
|
idxM = find(strcmp('MUX id Error',DatiPressureLink(:,jj)));
|
|
idxC = find(strcmp('CH n. Error',DatiPressureLink(:,jj)));
|
|
idxU = find(strcmp('Unknown Error',DatiPressureLink(:,jj)));
|
|
idxMC = find(strcmp('MsgCorrup',DatiPressureLink(:,jj)));
|
|
idxNS = find(strcmp('NotSupp',DatiPressureLink(:,jj)));
|
|
idxU2 = find(strcmp('Unknown',DatiPressureLink(:,jj)));
|
|
idxNA = find(strcmp('NotAv',DatiPressureLink(:,jj)));
|
|
idxND = find(strcmp('No Data',DatiPressureLink(:,jj)));
|
|
idxCE = find(strcmp('CH n. Er',DatiPressureLink(:,jj)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxCE);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
idx = union(idx,idxND);
|
|
[ri,~] = size(idx);
|
|
for kk=1:ri
|
|
indice=idx(kk);
|
|
if indice == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiPL = datestr(datenum(datainiPL)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
DatiPressureLink(indice,jj) = DatiPressureLink(indice-1,jj);
|
|
ErrPressureLink(indice,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
end
|
|
if ESCI == 1
|
|
break
|
|
end
|
|
% Elimino gli eventuali Not a Number
|
|
for nnn = 2:r
|
|
check = isnan(cell2mat(DatiPressureLink(nnn,jj)));
|
|
if check == 1
|
|
DatiPressureLink(nnn,jj) = DatiPressureLink(nnn-1,jj);
|
|
ErrPressureLink(nnn,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
end
|
|
end
|
|
end
|
|
corrdat = ['' num2str(Ncorr) ' corrections of Pressure Link data done!'];
|
|
fprintf(fileID,fmt,corrdat);
|
|
% Concateno informazioni generali e/o letture dai nodi.
|
|
DatiPressureLink = [DATiniPL str2double(DatiPressureLink)];
|
|
% Elimino eventuali date doppie
|
|
a = 2;
|
|
while a <= r
|
|
if DatiPressureLink(a,1) == DatiPressureLink(a-1,1)
|
|
DatiPressureLink(a,:) = [];
|
|
r = r-1;
|
|
else
|
|
a = a+1;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if NuovoZeroPrL == 1 && yesPL == 1
|
|
[rDR,cDR] = size(DatiRaw);
|
|
if rDR~=1 && cDR~=1 && isempty(DatiRaw) == 0
|
|
RawDate1 = find(DatiRaw(:,1)<=DatiPressureLink(1,1));
|
|
if isempty(RawDate1) == 1
|
|
RawDate2 = 1;
|
|
elseif RawDate1(end) == rDR
|
|
RawDate2 = find(DatiPressureLink(:,1)>DatiRaw(end,1));
|
|
else
|
|
RawDate2 = find(DatiPressureLink(:,1)>DatiRaw(RawDate1(end)+1,1));
|
|
end
|
|
else
|
|
RawDate1 = [];
|
|
RawDate2 = 1;
|
|
end
|
|
if isempty(RawDate1) == 0 && isempty(RawDate2) == 0
|
|
Dati = [DatiRaw(1:RawDate1(end),:);DatiPressureLink(RawDate2(1):end,:)];
|
|
elseif isempty(RawDate1) == 1 && isempty(RawDate2) == 0
|
|
Dati = DatiPressureLink;
|
|
else
|
|
Dati = DatiRaw;
|
|
end
|
|
% Elimino appoggio più vecchio di un mese
|
|
RawDate3 = find(Dati(:,1)<now-30);
|
|
if isempty(RawDate3) == 0
|
|
[rDati,~] = size(Dati);
|
|
if RawDate3(end) == rDati
|
|
else
|
|
Dati = Dati(RawDate3(end)+1:end,:);
|
|
end
|
|
end
|
|
if isfile(RawDataFile) == 1
|
|
delete(RawDataFile);
|
|
end
|
|
else
|
|
Dati = DatiPressureLink;
|
|
end
|
|
Dati(:,1) = Dati(:,1) - 730000;
|
|
csvwrite(RawDataFile,Dati);
|
|
end
|
|
|
|
%% Load Link
|
|
if yesLL == 0 % Non ci sono Load Link
|
|
DatiLoadLink = [];
|
|
ErrLoadLink = [];
|
|
wardat = 'lettura function: there are not Load Link';
|
|
fprintf(fileID,fmt,wardat);
|
|
else
|
|
RawDataFile = ['' IDcentralina '-' DTcatena '-Load-RawData.csv']; % Specifico per Load Link
|
|
NAN = 0;
|
|
DIS = 0;
|
|
while NAN == 0
|
|
if datenum(datainiLL) == datenum(Data(1,1))
|
|
tempoiniLL = char(Data(1,2));
|
|
end
|
|
NodeType = 'Load Link';
|
|
NodeNumLL = num2str(cell2mat(NodoLoadLink(1,2))); % scarico i dati del primo nodo
|
|
% Scarico dei dati relativi alla centralina con informazioni di Data e ora, livello batteria e temperatura
|
|
% Step 1 (vedi commento più avanti)
|
|
comando = ['select Date, Time from RawDataView where Date = ''' ...
|
|
datainiLL ''' and Time >= ''' tempoiniLL ''' and UnitName = ''' IDcentralina ...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum = ''' NodeNumLL ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATiniLL = curs.Data;
|
|
Ntempo = DATiniLL;
|
|
[r,c] = size(DATiniLL);
|
|
saltoLL = 0;
|
|
if r==1 && c==1
|
|
textdatLL = 'Warning: error reading Load Link (control unit data)!';
|
|
fprintf(fileID,fmt,textdatLL);
|
|
saltoLL = 1;
|
|
end
|
|
% Step 2 (vedi commento più avanti)
|
|
comando = ['select Date, Time from RawDataView where Date > ''' ...
|
|
datainiLL ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and NodeType = ''' NodeType...
|
|
''' and NodeNum = ''' NodeNumLL ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DAT2LL = curs.Data;
|
|
Ndate = DAT2LL;
|
|
if saltoLL == 1
|
|
DATiniLL = DAT2LL;
|
|
end
|
|
Check = size(DAT2LL);
|
|
if Check(1,2) > 1 % ho superato il primo giorno
|
|
% Concateno le informazioni relative a Step 1 e 2 (se necessario...)
|
|
if saltoLL == 0
|
|
DATiniLL = [DATiniLL; DAT2LL];
|
|
end
|
|
end
|
|
% Modifico il formato di data e ora in DATini.
|
|
[rD,cD] = size(DATiniLL);
|
|
if rD ~=1 && cD ~=1
|
|
T = [cell2mat(DATiniLL(:,1)) repmat(' ', [rD,1]) cell2mat(DATiniLL(:,2))];
|
|
T = datenum(T);
|
|
% Converto da Cell Array a Matrice.
|
|
DATiniLL = T;
|
|
else
|
|
DATiniLL = [];
|
|
end
|
|
|
|
% Scarico dati relativi ai singoli nodi
|
|
[rd,~] = size(Ndate); % numero di dati successivi al primo giorno di calcolo
|
|
[rt,~] = size(Ntempo); % numero di dati del primo giorno di calcolo
|
|
% creo la matrice per i dati Load Link
|
|
if saltoLL == 0
|
|
if Check(1,2) > 1
|
|
DatiLoadLink = cell(rd+rt,rLL);
|
|
else
|
|
DatiLoadLink = cell(rt,rLL);
|
|
end
|
|
else
|
|
DatiLoadLink = cell(rd,rLL);
|
|
end
|
|
NLoadLink = cell2mat(NodoLoadLink(:,2));
|
|
col = 1;
|
|
ii = 1;
|
|
w = 0;
|
|
while ii <= rLL
|
|
% Step 1: Acquisisco i dati registrati successivamente all'ultimo scarico,
|
|
% ma limitandomi a quelli registrati nel corso di quella singola giornata;
|
|
nN = NLoadLink(ii,1);
|
|
nNodo = num2str(nN);
|
|
comando = ['select Val0 from RawDataView where Date = ''' ...
|
|
datainiLL ''' and Time >= ''' tempoiniLL ''' and UnitName = ''' IDcentralina ...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoLL = curs.Data;
|
|
% Step 2: Considero le date successive e scarico tutti i dati disponibili.
|
|
comando = ['select Val0 from RawDataView where Date > ''' ...
|
|
datainiLL ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoLLd = curs.Data;
|
|
% Concateno i dati relativi a Step 1 e 2 per il nodo ii-esimo.
|
|
|
|
% DATnodo è la matrice che raccoglie i dati dell' ii-esimo nodo,
|
|
% DATnodi è la matrice che concatena i dati relativi a ciascun nodo.
|
|
if saltoLL == 0
|
|
DatiLoadLink(1:rt,col) = DATnodoLL(:,:);
|
|
else
|
|
DatiLoadLink(1:rd,col) = DATnodoLL(:,:);
|
|
end
|
|
|
|
[rn,~] = size(DATnodoLLd); % controllo date
|
|
if rn < rd % normalmente sono uguali
|
|
for i = rn+1:rd
|
|
DATnodoLLd(i,:) = DATnodoLLd(rn,:); % se mancano dati, copio gli ultimi
|
|
end
|
|
wardat = ['Node Load Link ' num2str(ii) ' does NOT work!'];
|
|
fprintf(fileID,fmt,wardat);
|
|
w = 1;
|
|
end
|
|
|
|
if Check(1,2) > 1
|
|
if saltoLL == 0
|
|
DatiLoadLink(rt+1:rt+rd,col) = DATnodoLLd(:,:);
|
|
end
|
|
else
|
|
DatiLoadLink = DatiLoadLink(1:end,:);
|
|
end
|
|
okdatLL = ['Data of node number ' num2str(ii) ' of ' ...
|
|
num2str(rLL) ' Load Link nodes downloaded correctly'];
|
|
fprintf(fileID,fmt,okdatLL);
|
|
ii = ii+1;
|
|
col = col+1;
|
|
end
|
|
if w == 0
|
|
wardat = 'There are not warning for Load Link!';
|
|
fprintf(fileID,fmt,wardat);
|
|
end
|
|
|
|
% Controllo gli eventuali errori ('Err1' o '---') e li rimuovo,
|
|
% rimpiazzandoli con l'ultimo dato disponibile di quel nodo
|
|
[r,c] = size(DatiLoadLink);
|
|
ErrLoadLink = zeros(r,c);
|
|
Ncorr = 0;
|
|
ESCI = 0;
|
|
NAN = 1;
|
|
if NuovoZeroLL == 1
|
|
if isfile(RawDataFile) == 1
|
|
DatiRaw = csvread(RawDataFile);
|
|
[rDR,cDR] = size(DatiRaw);
|
|
DatiRaw(:,1) = DatiRaw(:,1) + 730000;
|
|
RawDate = find(DatiRaw(:,1)<=datenum(datainiLL));
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDate = [];
|
|
DatiRaw = [];
|
|
end
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDate = [];
|
|
DatiRaw = [];
|
|
end
|
|
for jj=1:c
|
|
if strcmp('Dis.',DatiLoadLink(1,jj)) == 1
|
|
for dis = 2:r
|
|
if strcmp('Dis.',DatiLoadLink(dis,jj)) == 0
|
|
DatiLoadLink = DatiLoadLink(dis:end,:);
|
|
DATiniLL = DATiniLL(dis:end,:);
|
|
[r,c] = size(DatiLoadLink);
|
|
break
|
|
elseif dis == r
|
|
NAN = 0;
|
|
DIS = 1;
|
|
if datenum(datainiLL)+1 < now
|
|
datainiLL = datestr(datenum(datainiLL)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yesLL = 0;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if DIS ~= 1 && yesLL == 1
|
|
% --- Codice per il primo dato ---
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiLoadLink(1,jj)));
|
|
idxT = find(strcmp('---',DatiLoadLink(1,jj)));
|
|
idxT2 = find(strcmp('-',DatiLoadLink(1,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiLoadLink(1,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiLoadLink(1,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiLoadLink(1,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiLoadLink(1,jj)));
|
|
idxN = find(strcmp('null',DatiLoadLink(1,jj)));
|
|
idxRX = find(strcmp('No RX',DatiLoadLink(1,jj)));
|
|
idxI = find(strcmp('id Error',DatiLoadLink(1,jj)));
|
|
idxM = find(strcmp('MUX id Error',DatiLoadLink(1,jj)));
|
|
idxC = find(strcmp('CH n. Error',DatiLoadLink(1,jj)));
|
|
idxU = find(strcmp('Unknown Error',DatiLoadLink(1,jj)));
|
|
idxMC = find(strcmp('MsgCorrup',DatiLoadLink(1,jj)));
|
|
idxNS = find(strcmp('NotSupp',DatiLoadLink(1,jj)));
|
|
idxU2 = find(strcmp('Unknown',DatiLoadLink(1,jj)));
|
|
idxNA = find(strcmp('NotAv',DatiLoadLink(1,jj)));
|
|
idxND = find(strcmp('No Data',DatiLoadLink(1,jj)));
|
|
idxCE = find(strcmp('CH n. Er',DatiLoadLink(1,jj)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxCE);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
idx = union(idx,idxND);
|
|
[ri,~] = size(idx);
|
|
if ri == 1
|
|
wardat = 'Warning on the correction of Load Link nodes: there are not data at the beginning of the array!';
|
|
fprintf(fileID,fmt,wardat);
|
|
if rDR==1 && cDR==1 || NuovoZeroLL == 0 % il file non è mai stato scritto, cerco la data precedente
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
if datenum(datainiLL)+1 < now
|
|
datainiLL = datestr(datenum(datainiLL)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yesLL = 0;
|
|
end
|
|
else
|
|
if isempty(RawDate) == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiLL = datestr(datenum(datainiLL)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
if isnan(DatiRaw(RawDate(end),jj+1)) == 0
|
|
DatiLoadLink(1,jj) = cellstr(num2str(DatiRaw(RawDate(end),jj+1)));
|
|
ErrLoadLink(1,jj) = 1;
|
|
wardat = 'Data of Load Link nodes corrected using Raw Data of reference Csv file.';
|
|
fprintf(fileID,fmt,wardat);
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
else
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiLL = datestr(datenum(datainiLL)-1,'yyyy-mm-dd');
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if ESCI == 0
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiLoadLink(:,jj)));
|
|
idxT = find(strcmp('---',DatiLoadLink(:,jj)));
|
|
idxT2 = find(strcmp('-',DatiLoadLink(1,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiLoadLink(:,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiLoadLink(:,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiLoadLink(:,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiLoadLink(:,jj)));
|
|
idxN = find(strcmp('null',DatiLoadLink(:,jj)));
|
|
idxRX = find(strcmp('No RX',DatiLoadLink(:,jj)));
|
|
idxI = find(strcmp('id Error',DatiLoadLink(:,jj)));
|
|
idxM = find(strcmp('MUX id Error',DatiLoadLink(:,jj)));
|
|
idxC = find(strcmp('CH n. Error',DatiLoadLink(:,jj)));
|
|
idxU = find(strcmp('Unknown Error',DatiLoadLink(:,jj)));
|
|
idxMC = find(strcmp('MsgCorrup',DatiLoadLink(:,jj)));
|
|
idxNS = find(strcmp('NotSupp',DatiLoadLink(:,jj)));
|
|
idxU2 = find(strcmp('Unknown',DatiLoadLink(:,jj)));
|
|
idxNA = find(strcmp('NotAv',DatiLoadLink(:,jj)));
|
|
idxND = find(strcmp('No Data',DatiLoadLink(:,jj)));
|
|
idxCE = find(strcmp('CH n. Er',DatiLoadLink(:,jj)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxCE);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
idx = union(idx,idxND);
|
|
[ri,~] = size(idx);
|
|
for kk=1:ri
|
|
indice=idx(kk);
|
|
if indice == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiLL = datestr(datenum(datainiLL)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
DatiLoadLink(indice,jj) = DatiLoadLink(indice-1,jj);
|
|
ErrLoadLink(indice,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
end
|
|
if ESCI == 1
|
|
break
|
|
end
|
|
% Elimino gli eventuali Not a Number
|
|
for nnn = 2:r
|
|
check = isnan(cell2mat(DatiLoadLink(nnn,jj)));
|
|
if check == 1
|
|
DatiLoadLink(nnn,jj) = DatiLoadLink(nnn-1,jj);
|
|
ErrLoadLink(nnn,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
end
|
|
end
|
|
end
|
|
corrdat = ['' num2str(Ncorr) ' corrections of Load Link data done!'];
|
|
fprintf(fileID,fmt,corrdat);
|
|
% Concateno informazioni generali e/o letture dai nodi.
|
|
DatiLoadLink = [DATiniLL str2double(DatiLoadLink)];
|
|
% Elimino eventuali date doppie
|
|
a = 2;
|
|
while a <= r
|
|
if DatiLoadLink(a,1) == DatiLoadLink(a-1,1)
|
|
DatiLoadLink(a,:) = [];
|
|
r = r-1;
|
|
else
|
|
a = a+1;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if NuovoZeroLL == 1 && yesLL == 1
|
|
[rDR,cDR] = size(DatiRaw);
|
|
if rDR~=1 && cDR~=1 && isempty(DatiRaw) == 0
|
|
RawDate1 = find(DatiRaw(:,1)<=DatiLoadLink(1,1));
|
|
if isempty(RawDate1) == 1
|
|
RawDate2 = 1;
|
|
elseif RawDate1(end) == rDR
|
|
RawDate2 = find(DatiLoadLink(:,1)>DatiRaw(end,1));
|
|
else
|
|
RawDate2 = find(DatiLoadLink(:,1)>DatiRaw(RawDate1(end)+1,1));
|
|
end
|
|
else
|
|
RawDate1 = [];
|
|
RawDate2 = 1;
|
|
end
|
|
if isempty(RawDate1) == 0 && isempty(RawDate2) == 0
|
|
Dati = [DatiRaw(1:RawDate1(end),:);DatiLoadLink(RawDate2(1):end,:)];
|
|
elseif isempty(RawDate1) == 1 && isempty(RawDate2) == 0
|
|
Dati = DatiLoadLink;
|
|
else
|
|
Dati = DatiRaw;
|
|
end
|
|
% Elimino appoggio più vecchio di un mese
|
|
RawDate3 = find(Dati(:,1)<now-30);
|
|
if isempty(RawDate3) == 0
|
|
[rDati,~] = size(Dati);
|
|
if RawDate3(end) == rDati
|
|
else
|
|
Dati = Dati(RawDate3(end)+1:end,:);
|
|
end
|
|
end
|
|
if isfile(RawDataFile) == 1
|
|
delete(RawDataFile);
|
|
end
|
|
else
|
|
Dati = DatiLoadLink;
|
|
end
|
|
Dati(:,1) = Dati(:,1) - 730000;
|
|
csvwrite(RawDataFile,Dati);
|
|
end
|
|
|
|
%% Extensometer Link
|
|
if yesEL == 0 % Non ci sono Extensometer Link
|
|
DatiExtensometerLink = [];
|
|
DatiExtensometerLink_Rif = [];
|
|
DatiNTCExtensometerLink = [];
|
|
ErrExtensometerLink = [];
|
|
ChEL = [];
|
|
EL_NTC = [];
|
|
wardat = 'lettura function: there are not Extensometer Link';
|
|
fprintf(fileID,fmt,wardat);
|
|
else
|
|
NAN = 0;
|
|
DIS = 0;
|
|
ChEL = cell2mat(NodoExtensometerLink(:,4));
|
|
EL_NTC = cell2mat(NodoExtensometerLink(:,5));
|
|
RawDataFile = ['' IDcentralina '-' DTcatena '-Extensometer-RawData.csv']; % Specifico per Extensometer Link
|
|
RawDataFileNTC = ['' IDcentralina '-' DTcatena '-ExtensometerNTC-RawData.csv']; % Specifico per NTC Extensometer Link
|
|
while NAN == 0
|
|
if datenum(datainiEL) == datenum(Data(1,1))
|
|
tempoiniEL = char(Data(1,2));
|
|
end
|
|
NodeType = 'Extensometer Link';
|
|
NodeNumEL = num2str(cell2mat(NodoExtensometerLink(1,2))); % scarico i dati del primo nodo
|
|
% Scarico dei dati relativi alla centralina con informazioni di Data e ora, livello batteria e temperatura
|
|
% Step 1 (vedi commento più avanti)
|
|
comando = ['select Date, Time from RawDataView where Date = ''' ...
|
|
datainiEL ''' and Time >= ''' tempoiniEL ''' and UnitName = ''' IDcentralina...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum = ''' NodeNumEL ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATiniEL = curs.Data;
|
|
Ntempo = DATiniEL;
|
|
[r,c] = size(DATiniEL);
|
|
saltoEL = 0;
|
|
if r==1 && c==1
|
|
textdatEL = 'Warning: error reading Extensometer Link (control unit data)!';
|
|
fprintf(fileID,fmt,textdatEL);
|
|
saltoEL = 1;
|
|
end
|
|
% Step 2 (vedi commento più avanti)
|
|
comando = ['select Date, Time from RawDataView where Date > ''' ...
|
|
datainiEL ''' and UnitName = ''' IDcentralina ...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ''' NodeNumEL ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DAT2EL = curs.Data;
|
|
Ndate = DAT2EL;
|
|
if saltoEL == 1
|
|
DATiniEL = DAT2EL;
|
|
end
|
|
Check = size(DAT2EL);
|
|
if Check(1,2) > 1 % ho superato il primo giorno
|
|
if saltoEL == 0
|
|
% Concateno le informazioni relative a Step 1 e 2 (se necessario...)
|
|
DATiniEL = [DATiniEL; DAT2EL];
|
|
end
|
|
end
|
|
% Modifico il formato di data e ora in DATini.
|
|
[rD,cD] = size(DATiniEL);
|
|
if rD ~=1 && cD ~=1
|
|
T = [cell2mat(DATiniEL(:,1)) repmat(' ', [rD,1]) cell2mat(DATiniEL(:,2))];
|
|
T = datenum(T);
|
|
% Converto da Cell Array a Matrice.
|
|
DATiniEL = T;
|
|
else
|
|
DATiniEL = [];
|
|
end
|
|
|
|
% Scarico dati relativi ai singoli nodi
|
|
[rd,~] = size(Ndate); % numero di dati successivi al primo giorno di calcolo
|
|
[rt,~] = size(Ntempo); % numero di dati del primo giorno di calcolo
|
|
% creo la matrice per i dati Extensometer Link
|
|
col = 1;
|
|
ii = 1;
|
|
if saltoEL == 0
|
|
if Check(1,2) > 1
|
|
DatiExtensometerLink = cell(rd+rt,rEL);
|
|
DatiNTCExtensometerLink = cell(rd+rt,rEL);
|
|
else
|
|
DatiExtensometerLink = cell(rt,rEL);
|
|
DatiNTCExtensometerLink = cell(rt,rEL);
|
|
end
|
|
else
|
|
DatiExtensometerLink = cell(rd,rEL);
|
|
DatiNTCExtensometerLink = cell(rd,rEL);
|
|
end
|
|
DatiExtensometerLink_Rif = cell(150,rEL);
|
|
NExtensometerLink = cell2mat(NodoExtensometerLink(:,2));
|
|
w = 0;
|
|
while ii <= rEL
|
|
% Step 1: Acquisisco i dati registrati successivamente all'ultimo scarico,
|
|
% ma limitandomi a quelli registrati nel corso di quella singola giornata;
|
|
nN = NExtensometerLink(ii,1);
|
|
nNodo = num2str(nN);
|
|
% Dato
|
|
comando = ['select Val0 from RawDataView where Date = ''' ...
|
|
datainiEL ''' and Time >= ''' tempoiniEL ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and UnitName = ''' IDcentralina ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoEL = curs.Data;
|
|
% Dato
|
|
comando = ['select Val0 from RawDataView where Date > ''' ...
|
|
datainiEL ''' and UnitName = ''' IDcentralina ...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = '''...
|
|
NodeType ''' and NodeNum = ' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoELd = curs.Data;
|
|
% Riferimento
|
|
comando = ['select Val0 from RawDataView where Date = ''' ...
|
|
datestr(Date_Rif_EL,'yyyy-mm-dd') ''' and Time >= ''' datestr(Date_Rif_EL,'HH:MM:SS')...
|
|
''' and ToolNameID = ''' DTcatena ''' and UnitName = ''' IDcentralina ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoEL_Rif = curs.Data;
|
|
if ChEL(ii,1) == 1
|
|
% T
|
|
DATnodoEL_NTC = 0;
|
|
DATnodoELd_NTC = 0;
|
|
elseif ChEL(ii,1) >= 2
|
|
if EL_NTC(ii,1)==1
|
|
% Temperatura
|
|
comando = ['select Val1 from RawDataView where Date = ''' ...
|
|
datainiEL ''' and Time >= ''' tempoiniEL ''' and UnitName = ''' IDcentralina...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoEL_NTC = curs.Data;
|
|
comando = ['select Val1 from RawDataView where Date > ''' ...
|
|
datainiEL ''' and UnitName = ''' IDcentralina ...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum = ' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoELd_NTC = curs.Data;
|
|
else
|
|
DATnodoEL_NTC = 0;
|
|
DATnodoELd_NTC = 0;
|
|
end
|
|
end
|
|
% Concateno i dati relativi a Step 1 e 2 per il nodo ii-esimo.
|
|
|
|
% DATnodo è la matrice che raccoglie i dati dell' ii-esimo nodo,
|
|
% DATnodi è la matrice che concatena i dati relativi a ciascun nodo.
|
|
if saltoEL == 0
|
|
if ChEL(ii,1) >= 2
|
|
if EL_NTC(ii,1)==1
|
|
DatiExtensometerLink(1:rt,col) = DATnodoEL(:,:);
|
|
DatiNTCExtensometerLink(1:rt,col) = DATnodoEL_NTC(:,:);
|
|
else
|
|
DatiExtensometerLink(1:rt,col) = DATnodoEL(:,:); %#ok<*AGROW>
|
|
end
|
|
elseif ChEL(ii,1) == 1
|
|
DatiExtensometerLink(1:rt,col) = DATnodoEL(:,:); %#ok<*AGROW>
|
|
end
|
|
else
|
|
if ChEL(ii,1) >= 2
|
|
if EL_NTC(ii,1)==1
|
|
DatiExtensometerLink(1:rd,col) = DATnodoEL(:,:);
|
|
DatiNTCExtensometerLink(1:rd,col) = DATnodoEL_NTC(:,:);
|
|
else
|
|
DatiExtensometerLink(1:rd,col) = DATnodoEL(:,:); %#ok<*AGROW>
|
|
end
|
|
elseif ChEL(ii,1) == 1
|
|
DatiExtensometerLink(1:rd,col) = DATnodoEL(:,:); %#ok<*AGROW>
|
|
end
|
|
end
|
|
|
|
% Riferimento
|
|
[dim,~] = size(DATnodoEL_Rif); % controllo date
|
|
DatiExtensometerLink_Rif(1:dim,col) = DATnodoEL_Rif;
|
|
if col == 1
|
|
DatiExtensometerLink_Rif(dim+1:end,:) = [];
|
|
end
|
|
|
|
[rn,~] = size(DATnodoELd); % controllo date
|
|
if rn < rd % normalmente sono uguali
|
|
for i = rn+1:rd
|
|
DATnodoELd(i,:) = DATnodoELd(rn,:); % se mancano dati, copio gli ultimi
|
|
end
|
|
wardat = ['Node Extensometer Link ' num2str(ii) ' does NOT work!'];
|
|
fprintf(fileID,fmt,wardat);
|
|
w = 1;
|
|
end
|
|
|
|
[rnT,~] = size(DATnodoELd_NTC); % controllo date
|
|
if rnT < rd % normalmente sono uguali
|
|
for i = rnT+1:rd
|
|
DATnodoELd_NTC(i,:) = DATnodoELd_NTC(rnT,:); % se mancano dati, copio gli ultimi
|
|
end
|
|
wardat = ['NTC of Node Extensometer Link ' num2str(ii) ' does NOT work!'];
|
|
fprintf(fileID,fmt,wardat);
|
|
w = 1;
|
|
end
|
|
|
|
if Check(1,2) > 1
|
|
if saltoEL == 0
|
|
if ChEL(ii,1) == 1
|
|
DatiExtensometerLink(rt+1:rt+rd,col) = DATnodoELd(:,:);
|
|
elseif EL_NTC(ii,1) == 0
|
|
DatiExtensometerLink(rt+1:rt+rd,col) = DATnodoELd(:,:);
|
|
else
|
|
DatiExtensometerLink(rt+1:rt+rd,col) = DATnodoELd(:,:);
|
|
DatiNTCExtensometerLink(rt+1:rt+rd,col) = DATnodoELd_NTC(:,:);
|
|
end
|
|
end
|
|
else
|
|
DatiExtensometerLink = DatiExtensometerLink(1:end,:);
|
|
DatiNTCExtensometerLink = DatiNTCExtensometerLink(1:end,:);
|
|
end
|
|
okdatEL = ['Data of node number ' num2str(ii) ' of ' ...
|
|
num2str(rEL) ' Extensometer Link nodes downloaded correctly'];
|
|
fprintf(fileID,fmt,okdatEL);
|
|
ii = ii+1;
|
|
col = col+1;
|
|
end
|
|
if w == 0
|
|
wardat = 'There are not warning for Extensometer Link!';
|
|
fprintf(fileID,fmt,wardat);
|
|
end
|
|
|
|
% Controllo gli eventuali errori ('Err1' o '---') e li rimuovo,
|
|
% rimpiazzandoli con l'ultimo dato disponibile di quel nodo
|
|
% Dati
|
|
[r,c] = size(DatiExtensometerLink);
|
|
ErrExtensometerLink = zeros(r,c);
|
|
Ncorr = 0;
|
|
NAN = 1;
|
|
ESCI = 0;
|
|
RIF = 0;
|
|
row = 1;
|
|
if NuovoZeroEL == 1
|
|
if isfile(RawDataFile) == 1
|
|
DatiRaw = csvread(RawDataFile);
|
|
[rDR,cDR] = size(DatiRaw);
|
|
DatiRaw(:,1) = DatiRaw(:,1) + 730000;
|
|
RawDate = find(DatiRaw(:,1)<=datenum(datainiEL));
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDate = [];
|
|
DatiRaw = [];
|
|
end
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDate = [];
|
|
DatiRaw = [];
|
|
end
|
|
FileRif = ['' IDcentralina '-' DTcatena '-ExtensometerRif.csv'];
|
|
while RIF == 0
|
|
if row <= dim
|
|
% Controllo la data di riferimento
|
|
idxE = find(strcmp('Err1',DatiExtensometerLink_Rif(row,:)));
|
|
idxT = find(strcmp('---',DatiExtensometerLink_Rif(row,:)));
|
|
idxT2 = find(strcmp('-',DatiExtensometerLink_Rif(row,:)));
|
|
idxE2 = find(strcmp('Err2',DatiExtensometerLink_Rif(row,:)));
|
|
idxE255 = find(strcmp('Err255',DatiExtensometerLink_Rif(row,:)));
|
|
idxD = find(strcmp('DMUXe',DatiExtensometerLink_Rif(row,:)));
|
|
idxE1F = find(strcmp('Err1File',DatiExtensometerLink_Rif(row,:)));
|
|
idxN = find(strcmp('null',DatiExtensometerLink_Rif(row,:)));
|
|
idxRX = find(strcmp('No RX',DatiExtensometerLink_Rif(row,:)));
|
|
idxI = find(strcmp('id Error',DatiExtensometerLink_Rif(row,:)));
|
|
idxM = find(strcmp('MUX id Error',DatiExtensometerLink_Rif(row,:)));
|
|
idxC = find(strcmp('CH n. Error',DatiExtensometerLink_Rif(row,:)));
|
|
idxU = find(strcmp('Unknown Error',DatiExtensometerLink_Rif(row,:)));
|
|
idxMC = find(strcmp('MsgCorrup',DatiExtensometerLink_Rif(row,:)));
|
|
idxNS = find(strcmp('NotSupp',DatiExtensometerLink_Rif(row,:)));
|
|
idxU2 = find(strcmp('Unknown',DatiExtensometerLink_Rif(row,:)));
|
|
idxNA = find(strcmp('NotAv',DatiExtensometerLink_Rif(row,:)));
|
|
idxDIS = find(strcmp('Dis.',DatiExtensometerLink_Rif(row,:)));
|
|
idxND = find(strcmp('No Data',DatiExtensometerLink_Rif(row,:)));
|
|
idxCE = find(strcmp('CH n. Er',DatiExtensometerLink_Rif(row,:)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxCE);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
idx = union(idx,idxDIS);
|
|
idx = union(idx,idxND);
|
|
[~,ri] = size(idx);
|
|
if ri >= 1 && isempty(idx) == 0 % Se almeno uno è in errore, allora guardo la riga dopo
|
|
if isfile(FileRif) == 1
|
|
DatiRif = csvread(FileRif);
|
|
if isnan(DatiRif(1,ri)) == 0
|
|
DatiExtensometerLink_Rif(1,ri) = cellstr(num2str(DatiRif(1,ri)));
|
|
else
|
|
row = row+1;
|
|
end
|
|
else
|
|
row = row+1;
|
|
end
|
|
else
|
|
RIF = 1;
|
|
DatiExtensometerLink_Rif = DatiExtensometerLink_Rif(row,:);
|
|
end
|
|
else
|
|
Date_Rif_EL = datestr(datenum(Date_Rif_EL)+1,'yyyy-mm-dd');
|
|
RIF = 1;
|
|
NAN = 0;
|
|
end
|
|
end
|
|
if NAN == 1
|
|
for jj=1:c
|
|
% Se il nodo è Dis., devo aumentare di uno la data (il nodo non
|
|
% è ancora stato installato!)
|
|
if strcmp('Dis.',DatiExtensometerLink(1,jj)) == 1
|
|
for dis = 2:r
|
|
if strcmp('Dis.',DatiExtensometerLink(dis,jj)) == 0
|
|
DatiExtensometerLink = DatiExtensometerLink(dis:end,:);
|
|
DATiniEL = DATiniEL(dis:end,:);
|
|
DatiNTCExtensometerLink = DatiNTCExtensometerLink(dis:end,:);
|
|
[r,c] = size(DatiExtensometerLink);
|
|
break
|
|
elseif dis == r
|
|
NAN = 0;
|
|
DIS = 1;
|
|
if datenum(datainiEL)+1 < now
|
|
datainiEL = datestr(datenum(datainiEL)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yesEL = 0;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
if DIS ~= 1 && yesEL == 1
|
|
% --- Codice per il primo dato ---
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiExtensometerLink(1,jj)));
|
|
idxT = find(strcmp('---',DatiExtensometerLink(1,jj)));
|
|
idxT2 = find(strcmp('-',DatiExtensometerLink(1,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiExtensometerLink(1,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiExtensometerLink(1,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiExtensometerLink(1,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiExtensometerLink(1,jj)));
|
|
idxN = find(strcmp('null',DatiExtensometerLink(1,jj)));
|
|
idxRX = find(strcmp('No RX',DatiExtensometerLink(1,jj)));
|
|
idxI = find(strcmp('id Error',DatiExtensometerLink(1,jj)));
|
|
idxM = find(strcmp('MUX id Error',DatiExtensometerLink(1,jj)));
|
|
idxC = find(strcmp('CH n. Error',DatiExtensometerLink(1,jj)));
|
|
idxU = find(strcmp('Unknown Error',DatiExtensometerLink(1,jj)));
|
|
idxMC = find(strcmp('MsgCorrup',DatiExtensometerLink(1,jj)));
|
|
idxNS = find(strcmp('NotSupp',DatiExtensometerLink(1,jj)));
|
|
idxU2 = find(strcmp('Unknown',DatiExtensometerLink(1,jj)));
|
|
idxNA = find(strcmp('NotAv',DatiExtensometerLink(1,jj)));
|
|
idxND = find(strcmp('No Data',DatiExtensometerLink(1,jj)));
|
|
idxCE = find(strcmp('CH n. Er',DatiExtensometerLink(1,jj)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxCE);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
idx = union(idx,idxND);
|
|
[ri,~] = size(idx);
|
|
if ri == 1
|
|
wardat = 'Warning on the correction of Extensometer Link nodes: there are not data at the beginning of the array!';
|
|
fprintf(fileID,fmt,wardat);
|
|
if rDR==1 && cDR==1 || NuovoZeroEL == 0 % il file non è mai stato scritto, cerco la data precedente
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
if datenum(datainiEL)+1 < now
|
|
datainiEL = datestr(datenum(datainiEL)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yesEL = 0;
|
|
end
|
|
else
|
|
if isempty(RawDate) == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiEL = datestr(datenum(datainiEL)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
if isnan(DatiRaw(RawDate(end),jj+1)) == 0
|
|
DatiExtensometerLink(1,jj) = cellstr(num2str(DatiRaw(RawDate(end),jj+1)));
|
|
ErrExtensometerLink(1,jj) = 1;
|
|
wardat = 'Data of Extensometer Link nodes corrected using Raw Data of reference Csv file.';
|
|
fprintf(fileID,fmt,wardat);
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
else
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiEL = datestr(datenum(datainiEL)-1,'yyyy-mm-dd');
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if ESCI == 0
|
|
for jj=1:c
|
|
idxE = find(strcmp('Err1',DatiExtensometerLink(:,jj)));
|
|
idxT = find(strcmp('---',DatiExtensometerLink(:,jj)));
|
|
idxT2 = find(strcmp('-',DatiExtensometerLink(:,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiExtensometerLink(:,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiExtensometerLink(:,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiExtensometerLink(:,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiExtensometerLink(:,jj)));
|
|
idxN = find(strcmp('null',DatiExtensometerLink(:,jj)));
|
|
idxRX = find(strcmp('No RX',DatiExtensometerLink(:,jj)));
|
|
idxI = find(strcmp('id Error',DatiExtensometerLink(:,jj)));
|
|
idxM = find(strcmp('MUX id Error',DatiExtensometerLink(:,jj)));
|
|
idxC = find(strcmp('CH n. Error',DatiExtensometerLink(:,jj)));
|
|
idxCE = find(strcmp('CH n. Er',DatiExtensometerLink(:,jj)));
|
|
idxU = find(strcmp('Unknown Error',DatiExtensometerLink(:,jj)));
|
|
idxMC = find(strcmp('MsgCorrup',DatiExtensometerLink(:,jj)));
|
|
idxNS = find(strcmp('NotSupp',DatiExtensometerLink(:,jj)));
|
|
idxU2 = find(strcmp('Unknown',DatiExtensometerLink(:,jj)));
|
|
idxNA = find(strcmp('NotAv',DatiExtensometerLink(:,jj)));
|
|
idxND = find(strcmp('No Data',DatiExtensometerLink(:,jj)));
|
|
idx = union(idxND,idxE);
|
|
idx = union(idx,idxT);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxCE);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
idx = union(idx,idxND);
|
|
[ri,~] = size(idx);
|
|
for kk=1:ri
|
|
indice=idx(kk);
|
|
if indice == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiEL = datestr(datenum(datainiEL)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
DatiExtensometerLink(indice,jj) = DatiExtensometerLink(indice-1,jj);
|
|
ErrExtensometerLink(indice,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
end
|
|
if ESCI == 1
|
|
break
|
|
end
|
|
% Elimino gli eventuali Not a Number
|
|
for nnn = 2:r
|
|
check = isnan(cell2mat(DatiExtensometerLink(nnn,jj)));
|
|
if check == 1
|
|
DatiExtensometerLink(nnn,jj) = DatiExtensometerLink(nnn-1,jj);
|
|
ErrExtensometerLink(nnn,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
end
|
|
end
|
|
end
|
|
corrdat = ['' num2str(Ncorr) ' corrections of Extensometer Link data done!'];
|
|
fprintf(fileID,fmt,corrdat);
|
|
% Concateno informazioni generali e/o letture dai nodi.
|
|
DatiExtensometerLink = [DATiniEL str2double(DatiExtensometerLink)];
|
|
% Elimino eventuali date doppie
|
|
a = 2;
|
|
while a <= r
|
|
if DatiExtensometerLink(a,1) == DatiExtensometerLink(a-1,1)
|
|
DatiExtensometerLink(a,:) = [];
|
|
r = r-1;
|
|
else
|
|
a = a+1;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if ESCI == 0
|
|
if sum(EL_NTC(:,1))>0
|
|
if DIS ~= 1 && yesEL == 1
|
|
% T
|
|
[r,c] = size(DatiNTCExtensometerLink);
|
|
Ncorr = 0;
|
|
if NuovoZeroEL == 1
|
|
if isfile(RawDataFile) == 1
|
|
DatiRawNTC = csvread(RawDataFileNTC);
|
|
[rDR,cDR] = size(DatiRawNTC);
|
|
DatiRawNTC(:,1) = DatiRawNTC(:,1) + 730000;
|
|
RawDateNTC = find(DatiRawNTC(:,1)<=datenum(datainiEL));
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDateNTC = [];
|
|
DatiRawNTC = [];
|
|
end
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDateNTC = [];
|
|
DatiRawNTC = [];
|
|
end
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiNTCExtensometerLink(1,jj)));
|
|
idxT = find(strcmp('---',DatiNTCExtensometerLink(1,jj)));
|
|
idxT2 = find(strcmp('-',DatiNTCExtensometerLink(1,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiNTCExtensometerLink(1,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiNTCExtensometerLink(1,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiNTCExtensometerLink(1,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiNTCExtensometerLink(1,jj)));
|
|
idxN = find(strcmp('null',DatiNTCExtensometerLink(1,jj)));
|
|
idxRX = find(strcmp('No RX',DatiNTCExtensometerLink(1,jj)));
|
|
idxI = find(strcmp('id Error',DatiNTCExtensometerLink(1,jj)));
|
|
idxM = find(strcmp('MUX id Error',DatiNTCExtensometerLink(1,jj)));
|
|
idxC = find(strcmp('CH n. Error',DatiNTCExtensometerLink(1,jj)));
|
|
idxU = find(strcmp('Unknown Error',DatiNTCExtensometerLink(1,jj)));
|
|
idxMC = find(strcmp('MsgCorrup',DatiNTCExtensometerLink(1,jj)));
|
|
idxNS = find(strcmp('NotSupp',DatiNTCExtensometerLink(1,jj)));
|
|
idxU2 = find(strcmp('Unknown',DatiNTCExtensometerLink(1,jj)));
|
|
idxNA = find(strcmp('NotAv',DatiNTCExtensometerLink(1,jj)));
|
|
idxND = find(strcmp('No Data',DatiNTCExtensometerLink(1,jj)));
|
|
idxCE = find(strcmp('CH n. Er',DatiNTCExtensometerLink(1,jj)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxCE);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
idx = union(idx,idxND);
|
|
[ri,~] = size(idx);
|
|
if ri == 1
|
|
wardat = 'Warning on the correction of NTC of Extensometer Link nodes: there are not data at the beginning of the array!';
|
|
fprintf(fileID,fmt,wardat);
|
|
if rDR==1 && cDR==1 || NuovoZeroEL == 0 % il file non è mai stato scritto, cerco la data precedente
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
if datenum(datainiEL)+1 < now
|
|
datainiEL = datestr(datenum(datainiEL)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yesEL = 0;
|
|
end
|
|
else
|
|
if isempty(RawDateNTC) == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiEL = datestr(datenum(datainiEL)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
DatiNTCExtensometerLink(1,jj) = cellstr(num2str(DatiRawNTC(RawDateNTC(end),jj+1)));
|
|
if ErrExtensometerLink(indice,jj) == 0
|
|
ErrExtensometerLink(indice,jj) = 0.5;
|
|
else
|
|
ErrExtensometerLink(indice,jj) = 1;
|
|
end
|
|
wardat = 'Data of NTC of Extensometer Link nodes corrected using Raw Data of reference Csv file.';
|
|
fprintf(fileID,fmt,wardat);
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiNTCExtensometerLink(:,jj)));
|
|
idxT = find(strcmp('-',DatiNTCExtensometerLink(:,jj)));
|
|
idxT3 = find(strcmp('---',DatiNTCExtensometerLink(:,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiNTCExtensometerLink(:,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiNTCExtensometerLink(:,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiNTCExtensometerLink(:,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiNTCExtensometerLink(:,jj)));
|
|
idxN = find(strcmp('null',DatiNTCExtensometerLink(:,jj)));
|
|
idxRX = find(strcmp('No RX',DatiNTCExtensometerLink(:,jj)));
|
|
idxI = find(strcmp('id Error',DatiNTCExtensometerLink(:,jj)));
|
|
idxM = find(strcmp('MUX id Error',DatiNTCExtensometerLink(:,jj)));
|
|
idxC = find(strcmp('CH n. Error',DatiNTCExtensometerLink(:,jj)));
|
|
idxU = find(strcmp('Unknown Error',DatiNTCExtensometerLink(:,jj)));
|
|
idxMC = find(strcmp('MsgCorrup',DatiNTCExtensometerLink(:,jj)));
|
|
idxNS = find(strcmp('NotSupp',DatiNTCExtensometerLink(:,jj)));
|
|
idxU2 = find(strcmp('Unknown',DatiNTCExtensometerLink(:,jj)));
|
|
idxNA = find(strcmp('NotAv',DatiNTCExtensometerLink(:,jj)));
|
|
idxND = find(strcmp('No Data',DatiNTCExtensometerLink(:,jj)));
|
|
idxCE = find(strcmp('CH n. Er',DatiNTCExtensometerLink(:,jj)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxT3);
|
|
idx = union(idx,idxCE);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
idx = union(idx,idxND);
|
|
[ri,~] = size(idx);
|
|
for kk=1:ri
|
|
indice=idx(kk);
|
|
if indice == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiEL = datestr(datenum(datainiEL)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
DatiNTCExtensometerLink(indice,jj) = DatiNTCExtensometerLink(indice-1,jj);
|
|
if ErrExtensometerLink(indice,jj) == 0
|
|
ErrExtensometerLink(indice,jj) = 0.5;
|
|
else
|
|
ErrExtensometerLink(indice,jj) = 1;
|
|
end
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
end
|
|
if ESCI == 1
|
|
break
|
|
end
|
|
% Elimino gli eventuali Not a Number
|
|
for nnn = 2:r
|
|
check = isnan(cell2mat(DatiNTCExtensometerLink(nnn,jj)));
|
|
if check == 1
|
|
DatiNTCExtensometerLink(nnn,jj) = DatiNTCExtensometerLink(nnn-1,jj);
|
|
if ErrExtensometerLink(indice,jj) == 0
|
|
ErrExtensometerLink(indice,jj) = 0.5;
|
|
else
|
|
ErrExtensometerLink(indice,jj) = 1;
|
|
end
|
|
Ncorr = Ncorr+ri;
|
|
end
|
|
end
|
|
end
|
|
corrdat = ['' num2str(Ncorr) ' corrections of NTC for Extensometer Link data done!'];
|
|
fprintf(fileID,fmt,corrdat);
|
|
% Concateno informazioni generali e/o letture dai nodi.
|
|
DatiNTCExtensometerLink = [DATiniEL str2double(DatiNTCExtensometerLink)];
|
|
% Elimino eventuali date doppie
|
|
a = 2;
|
|
while a <= r
|
|
if DatiNTCExtensometerLink(a,1) == DatiNTCExtensometerLink(a-1,1)
|
|
DatiNTCExtensometerLink(a,:) = [];
|
|
r = r-1;
|
|
else
|
|
a = a+1;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if NuovoZeroEL == 1 && yesEL == 1
|
|
[rDR,cDR] = size(DatiRaw);
|
|
if rDR~=1 && cDR~=1 && isempty(DatiRaw) == 0
|
|
RawDate1 = find(DatiRaw(:,1)<=DatiExtensometerLink(1,1));
|
|
if isempty(RawDate1) == 1
|
|
RawDate2 = 1;
|
|
elseif RawDate1(end) == rDR
|
|
RawDate2 = find(DatiExtensometerLink(:,1)>DatiRaw(end,1));
|
|
else
|
|
RawDate2 = find(DatiExtensometerLink(:,1)>DatiRaw(RawDate1(end)+1,1));
|
|
end
|
|
else
|
|
RawDate1 = [];
|
|
RawDate2 = 1;
|
|
end
|
|
if isempty(RawDate1) == 0 && isempty(RawDate2) == 0
|
|
Dati = [DatiRaw(1:RawDate1(end),:);DatiExtensometerLink(RawDate2(1):end,:)];
|
|
elseif isempty(RawDate1) == 1 && isempty(RawDate2) == 0
|
|
Dati = DatiExtensometerLink;
|
|
else
|
|
Dati = DatiRaw;
|
|
end
|
|
% Elimino appoggio più vecchio di un mese
|
|
RawDate3 = find(Dati(:,1)<now-30);
|
|
if isempty(RawDate3) == 0
|
|
[rDati,~] = size(Dati);
|
|
if RawDate3(end) == rDati
|
|
else
|
|
Dati = Dati(RawDate3(end)+1:end,:);
|
|
end
|
|
end
|
|
if isfile(RawDataFile) == 1
|
|
delete(RawDataFile);
|
|
end
|
|
|
|
if sum(EL_NTC(:,1))>0
|
|
[rDR,cDR] = size(DatiRawNTC);
|
|
if rDR~=1 && cDR~=1 && isempty(DatiRawNTC) == 0
|
|
RawDate1 = find(DatiRawNTC(:,1)<=DatiNTCExtensometerLink(1,1));
|
|
if isempty(RawDate1) == 1
|
|
RawDate2 = 1;
|
|
elseif RawDate1(end) == rDR
|
|
RawDate2 = find(DatiNTCExtensometerLink(:,1)>DatiRawNTC(end,1));
|
|
else
|
|
RawDate2 = find(DatiNTCExtensometerLink(:,1)>DatiRawNTC(RawDate1(end)+1,1));
|
|
end
|
|
else
|
|
RawDate1 = [];
|
|
RawDate2 = 1;
|
|
end
|
|
if isempty(RawDate1) == 0 && isempty(RawDate2) == 0
|
|
DatiNTC = [DatiRawNTC(1:RawDate1(end),:);DatiNTCExtensometerLink(RawDate2(1):end,:)];
|
|
elseif isempty(RawDate1) == 1 && isempty(RawDate2) == 0
|
|
DatiNTC = DatiNTCExtensometerLink;
|
|
else
|
|
DatiNTC = DatiRawNTC;
|
|
end
|
|
% Elimino appoggio più vecchio di un mese
|
|
RawDate3 = find(DatiNTC(:,1)<now-30);
|
|
if isempty(RawDate3) == 0
|
|
[rDati,~] = size(DatiNTC);
|
|
if RawDate3(end) == rDati
|
|
else
|
|
DatiNTC = DatiNTC(RawDate3(end)+1:end,:);
|
|
end
|
|
end
|
|
if isfile(RawDataFileNTC) == 1
|
|
delete(RawDataFileNTC);
|
|
end
|
|
end
|
|
else
|
|
Dati = DatiExtensometerLink;
|
|
if sum(EL_NTC(:,1))>0
|
|
DatiNTC = DatiNTCExtensometerLink;
|
|
end
|
|
end
|
|
Dati(:,1) = Dati(:,1) - 730000;
|
|
csvwrite(RawDataFile,Dati);
|
|
if sum(EL_NTC(:,1))>0
|
|
DatiNTC(:,1) = DatiNTC(:,1) - 730000;
|
|
csvwrite(RawDataFileNTC,DatiNTC);
|
|
end
|
|
if isfile(FileRif) == 0
|
|
csvwrite(FileRif,str2double(DatiExtensometerLink_Rif));
|
|
end
|
|
end
|
|
|
|
%% 3D Extensometer Link
|
|
if yes3DEL == 0 % Non ci sono 3D Extensometer Link
|
|
Dati3DExtensometerLink = [];
|
|
Dati3DExtensometerLink_Rif = [];
|
|
Err3DExtensometerLink = [];
|
|
DatiNTC3DExtensometerLink = [];
|
|
ErrNTC3DExtensometerLink = [];
|
|
Ch3DEL = [];
|
|
EL3D_NTC = [];
|
|
wardat = 'lettura function: there are not 3D Extensometer Link';
|
|
fprintf(fileID,fmt,wardat);
|
|
else
|
|
RawDataFile = ['' IDcentralina '-' DTcatena '-3DExtensometer-RawData.csv']; % Specifico per 3D Extensometer Link
|
|
RawDataFileNTC = ['' IDcentralina '-' DTcatena '-3DExtensometerNTC-RawData.csv']; % Specifico per NTC 3D Extensometer Link
|
|
Ch3DEL = cell2mat(Nodo3DExtensometerLink(:,4));
|
|
EL3D_NTC = cell2mat(Nodo3DExtensometerLink(:,5));
|
|
NAN = 0;
|
|
DIS = 0;
|
|
while NAN == 0
|
|
if datenum(dataini3DEL) == datenum(Data(1,1))
|
|
tempoini3DEL = char(Data(1,2));
|
|
end
|
|
NodeType = '3D Extensometer Link';
|
|
NodeNum3DEL = num2str(cell2mat(Nodo3DExtensometerLink(1,2))); % scarico i dati del primo nodo
|
|
% Scarico dei dati relativi alla centralina con informazioni di Data e ora, livello batteria e temperatura
|
|
% Step 1 (vedi commento più avanti)
|
|
comando = ['select Date, Time from RawDataView where Date = ''' ...
|
|
dataini3DEL ''' and Time >= ''' tempoini3DEL ''' and UnitName = ''' IDcentralina...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum = ''' NodeNum3DEL ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATini3DEL = curs.Data;
|
|
Ntempo = DATini3DEL;
|
|
[r,c] = size(DATini3DEL);
|
|
salto3DEL = 0;
|
|
if r==1 && c==1
|
|
textdat3DEL = 'Warning: error reading 3D Extensometer Link (control unit data)!';
|
|
fprintf(fileID,fmt,textdat3DEL);
|
|
salto3DEL = 1;
|
|
end
|
|
% Step 2 (vedi commento più avanti)
|
|
comando = ['select Date, Time from RawDataView where Date > ''' ...
|
|
dataini3DEL ''' and UnitName = ''' IDcentralina...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum = ''' NodeNum3DEL ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DAT23DEL = curs.Data;
|
|
Ndate = DAT23DEL;
|
|
if salto3DEL == 1
|
|
DATini3DEL = DAT23DEL;
|
|
end
|
|
Check = size(DAT23DEL);
|
|
if Check(1,2) > 1 % ho superato il primo giorno
|
|
if salto3DEL == 0
|
|
% Concateno le informazioni relative a Step 1 e 2 (se necessario...)
|
|
DATini3DEL = [DATini3DEL; DAT23DEL];
|
|
end
|
|
end
|
|
% Modifico il formato di data e ora in DATini.
|
|
[rD,cD] = size(DATini3DEL);
|
|
if rD ~=1 && cD ~=1
|
|
T = [cell2mat(DATini3DEL(:,1)) repmat(' ', [rD,1]) cell2mat(DATini3DEL(:,2))];
|
|
T = datenum(T);
|
|
% Converto da Cell Array a Matrice.
|
|
DATini3DEL = T;
|
|
else
|
|
DATini3DEL = [];
|
|
end
|
|
|
|
% Scarico dati relativi ai singoli nodi
|
|
[rd,~] = size(Ndate); % numero di dati successivi al primo giorno di calcolo
|
|
[rt,~] = size(Ntempo); % numero di dati del primo giorno di calcolo
|
|
if salto3DEL == 0
|
|
% creo la matrice per i dati 3D Extensometer Link
|
|
if Check(1,2) > 1
|
|
Dati3DExtensometerLink = cell(rd+rt,3*r3DEL);
|
|
DatiNTC3DExtensometerLink = cell(rd+rt,r3DEL);
|
|
else
|
|
Dati3DExtensometerLink = cell(rt,3*r3DEL);
|
|
DatiNTC3DExtensometerLink = cell(rt,r3DEL);
|
|
end
|
|
else
|
|
Dati3DExtensometerLink = cell(rd,3*r3DEL);
|
|
DatiNTC3DExtensometerLink = cell(rd,r3DEL);
|
|
end
|
|
Dati3DExtensometerLink_Rif = cell(150,3*r3DEL);
|
|
N3DExtensometerLink = cell2mat(Nodo3DExtensometerLink(:,2));
|
|
col = 1;
|
|
colT = 1;
|
|
ii = 1;
|
|
w = 0;
|
|
while ii <= r3DEL
|
|
% Step 1: Acquisisco i dati registrati successivamente all'ultimo scarico,
|
|
% ma limitandomi a quelli registrati nel corso di quella singola giornata;
|
|
nN = N3DExtensometerLink(ii,1);
|
|
nNodo = num2str(nN);
|
|
comando = ['select Val0, Val1, Val2 from RawDataView where Date = ''' ...
|
|
dataini3DEL ''' and Time >= ''' tempoini3DEL ''' and UnitName = ''' IDcentralina...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodo3DEL = curs.Data;
|
|
comando = ['select Val0, Val1, Val2 from RawDataView where Date > ''' ...
|
|
dataini3DEL ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum = ' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodo3DELd = curs.Data;
|
|
% Riferimento
|
|
comando = ['select Val0, Val1, Val2 from RawDataView where Date = ''' ...
|
|
datestr(Date_Rif_3DEL,'yyyy-mm-dd') ''' and Time >= ''' datestr(Date_Rif_3DEL,'HH:MM:SS')...
|
|
''' and ToolNameID = ''' DTcatena ''' and UnitName = ''' IDcentralina ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodo3DEL_Rif = curs.Data;
|
|
if Ch3DEL(ii,1) == 3
|
|
% T
|
|
DATnodo3DEL_NTC = 0;
|
|
DATnodo3DELd_NTC = 0;
|
|
elseif Ch3DEL(ii,1) == 4
|
|
if EL3D_NTC(ii,1)==1
|
|
comando = ['select Val3 from RawDataView where Date = ''' ...
|
|
dataini3DEL ''' and Time >= ''' tempoini3DEL ''' and UnitName = ''' IDcentralina ...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodo3DEL_NTC = curs.Data;
|
|
% Step 2: Considero le date successive e scarico tutti i dati disponibili.
|
|
comando = ['select Val3 from RawDataView where Date > ''' ...
|
|
dataini3DEL ''' and UnitName = ''' IDcentralina...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' NodeType...
|
|
''' and NodeNum = ' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodo3DELd_NTC = curs.Data;
|
|
else
|
|
DATnodo3DEL_NTC = 0;
|
|
DATnodo3DELd_NTC = 0;
|
|
end
|
|
end
|
|
% Concateno i dati relativi a Step 1 e 2 per il nodo ii-esimo.
|
|
|
|
% DATnodo è la matrice che raccoglie i dati dell' ii-esimo nodo,
|
|
% DATnodi è la matrice che concatena i dati relativi a ciascun nodo.
|
|
if salto3DEL == 0
|
|
Dati3DExtensometerLink(1:rt,col:col+2) = DATnodo3DEL(:,:);
|
|
if Ch3DEL(ii,1) == 1
|
|
DatiNTC3DExtensometerLink(1:rt,colT) = DATnodo3DEL_NTC(:,:);
|
|
end
|
|
else
|
|
Dati3DExtensometerLink(1:rd,col:col+2) = DATnodo3DEL(:,:);
|
|
if Ch3DEL(ii,1) == 1
|
|
DatiNTC3DExtensometerLink(1:rd,colT) = DATnodo3DEL_NTC(:,:);
|
|
end
|
|
end
|
|
|
|
% Riferimento
|
|
[dim,~] = size(DATnodo3DEL_Rif); % controllo date
|
|
Dati3DExtensometerLink_Rif(1:dim,col:col+2) = DATnodo3DEL_Rif;
|
|
if col == 1
|
|
Dati3DExtensometerLink_Rif(dim+1:end,:) = [];
|
|
end
|
|
|
|
[rn,~] = size(DATnodo3DELd); % controllo date
|
|
if rn < rd % normalmente sono uguali
|
|
for i = rn+1:rd
|
|
DATnodo3DELd(i,:) = DATnodo3DELd(rn,:); % se mancano dati, copio gli ultimi
|
|
end
|
|
wardat = ['Node 3D Extensometer Link ' num2str(ii) ' does NOT work!'];
|
|
fprintf(fileID,fmt,wardat);
|
|
w = 1;
|
|
end
|
|
[rnT,~] = size(DATnodo3DELd_NTC); % controllo date
|
|
if rnT < rd % normalmente sono uguali
|
|
for i = rnT+1:rd
|
|
DATnodo3DELd_NTC(i,:) = DATnodo3DELd_NTC(rnT,:); % se mancano dati, copio gli ultimi
|
|
end
|
|
wardat = ['NTC of Node 3D Extensometer Link ' num2str(ii) ' does NOT work!'];
|
|
fprintf(fileID,fmt,wardat);
|
|
w = 1;
|
|
end
|
|
|
|
if Check(1,2) > 1
|
|
if salto3DEL == 0
|
|
Dati3DExtensometerLink(rt+1:rt+rd,col:col+2) = DATnodo3DELd(:,:);
|
|
if EL3D_NTC(ii,1) == 1 % Si NTC
|
|
Dati3DExtensometerLink(rt+1:rt+rd,colT) = DATnodo3DELd_NTC(:,:);
|
|
end
|
|
end
|
|
else
|
|
Dati3DExtensometerLink = Dati3DExtensometerLink(1:end,:);
|
|
DatiNTC3DExtensometerLink = DatiNTC3DExtensometerLink(1:end,:);
|
|
end
|
|
okdat3DEL = ['Data of node number ' num2str(ii) ' of ' ...
|
|
num2str(r3DEL) ' 3D Extensometer Link nodes downloaded correctly'];
|
|
fprintf(fileID,fmt,okdat3DEL);
|
|
ii = ii+1;
|
|
col = col+3;
|
|
colT = colT+1;
|
|
end
|
|
if w == 0
|
|
wardat = 'There are not warning for 3D Extensometer Link!';
|
|
fprintf(fileID,fmt,wardat);
|
|
end
|
|
|
|
% Controllo gli eventuali errori ('Err1' o '---') e li rimuovo,
|
|
% rimpiazzandoli con l'ultimo dato disponibile di quel nodo
|
|
[r,c] = size(Dati3DExtensometerLink);
|
|
Err3DExtensometerLink = zeros(r,c);
|
|
Ncorr = 0;
|
|
ESCI = 0;
|
|
NAN = 1;
|
|
RIF = 0;
|
|
row = 1;
|
|
if NuovoZero3DEL == 1
|
|
if isfile(RawDataFile) == 1
|
|
DatiRaw = csvread(RawDataFile);
|
|
[rDR,cDR] = size(DatiRaw);
|
|
DatiRaw(:,1) = DatiRaw(:,1) + 730000;
|
|
RawDate = find(DatiRaw(:,1)<=datenum(dataini3DEL));
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDate = [];
|
|
DatiRaw = [];
|
|
end
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDate = [];
|
|
DatiRaw = [];
|
|
end
|
|
while RIF == 0
|
|
if row <= dim
|
|
% Controllo la data di riferimento
|
|
idxE = find(strcmp('Err1',Dati3DExtensometerLink_Rif(row,:)));
|
|
idxT = find(strcmp('---',Dati3DExtensometerLink_Rif(row,:)));
|
|
idxT2 = find(strcmp('-',Dati3DExtensometerLink_Rif(row,:)));
|
|
idxE2 = find(strcmp('Err2',Dati3DExtensometerLink_Rif(row,:)));
|
|
idxE255 = find(strcmp('Err255',Dati3DExtensometerLink_Rif(row,:)));
|
|
idxD = find(strcmp('DMUXe',Dati3DExtensometerLink_Rif(row,:)));
|
|
idxE1F = find(strcmp('Err1File',Dati3DExtensometerLink_Rif(row,:)));
|
|
idxN = find(strcmp('null',Dati3DExtensometerLink_Rif(row,:)));
|
|
idxRX = find(strcmp('No RX',Dati3DExtensometerLink_Rif(row,:)));
|
|
idxI = find(strcmp('id Error',Dati3DExtensometerLink_Rif(row,:)));
|
|
idxM = find(strcmp('MUX id Error',Dati3DExtensometerLink_Rif(row,:)));
|
|
idxC = find(strcmp('CH n. Error',Dati3DExtensometerLink_Rif(row,:)));
|
|
idxU = find(strcmp('Unknown Error',Dati3DExtensometerLink_Rif(row,:)));
|
|
idxMC = find(strcmp('MsgCorrup',Dati3DExtensometerLink_Rif(row,:)));
|
|
idxNS = find(strcmp('NotSupp',Dati3DExtensometerLink_Rif(row,:)));
|
|
idxU2 = find(strcmp('Unknown',Dati3DExtensometerLink_Rif(row,:)));
|
|
idxNA = find(strcmp('NotAv',Dati3DExtensometerLink_Rif(row,:)));
|
|
idxDIS = find(strcmp('Dis.',Dati3DExtensometerLink_Rif(row,:)));
|
|
idxND = find(strcmp('No Data',Dati3DExtensometerLink_Rif(row,:)));
|
|
idxCE = find(strcmp('CH n. Er',Dati3DExtensometerLink_Rif(row,:)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxCE);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
idx = union(idx,idxDIS);
|
|
idx = union(idx,idxND);
|
|
[~,ri] = size(idx);
|
|
if ri >= 1 && isempty(idx) == 0 % Se almeno uno è in errore, allora guardo la riga dopo
|
|
row = row+1;
|
|
else
|
|
RIF = 1;
|
|
Dati3DExtensometerLink_Rif = Dati3DExtensometerLink_Rif(row,:);
|
|
end
|
|
else
|
|
Date_Rif_3DEL = datestr(datenum(Date_Rif_3DEL)+1,'yyyy-mm-dd');
|
|
RIF = 1;
|
|
NAN = 0;
|
|
end
|
|
end
|
|
|
|
for jj=1:c
|
|
% Se il nodo è Dis., devo aumentare di uno la data (il nodo non
|
|
% è ancora stato installato!)
|
|
if strcmp('Dis.',Dati3DExtensometerLink(1,jj)) == 1
|
|
for dis = 2:r
|
|
if strcmp('Dis.',Dati3DExtensometerLink(dis,jj)) == 0
|
|
Dati3DExtensometerLink = Dati3DExtensometerLink(dis:end,:);
|
|
DatiNTC3DExtensometerLink = DatiNTC3DExtensometerLink(dis:end,:);
|
|
DATini3DEL = DATini3DEL(dis:end,:);
|
|
[r,c] = size(Dati3DExtensometerLink);
|
|
break
|
|
elseif dis == r
|
|
NAN = 0;
|
|
DIS = 1;
|
|
if datenum(dataini3DEL)+1 < now
|
|
dataini3DEL = datestr(datenum(dataini3DEL)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yes3DEL = 0;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if DIS ~= 1 && yes3DEL == 1
|
|
% --- Codice per il primo dato ---
|
|
for jj=1:c
|
|
idxE = find(strcmp('Err1',Dati3DExtensometerLink(1,jj)));
|
|
idxT = find(strcmp('---',Dati3DExtensometerLink(1,jj)));
|
|
idxT2 = find(strcmp('-',Dati3DExtensometerLink(1,jj)));
|
|
idxE2 = find(strcmp('Err2',Dati3DExtensometerLink(1,jj)));
|
|
idxE255 = find(strcmp('Err255',Dati3DExtensometerLink(1,jj)));
|
|
idxD = find(strcmp('DMUXe',Dati3DExtensometerLink(1,jj)));
|
|
idxE1F = find(strcmp('Err1File',Dati3DExtensometerLink(1,jj)));
|
|
idxN = find(strcmp('null',Dati3DExtensometerLink(1,jj)));
|
|
idxRX = find(strcmp('No RX',Dati3DExtensometerLink(1,jj)));
|
|
idxI = find(strcmp('id Error',Dati3DExtensometerLink(1,jj)));
|
|
idxM = find(strcmp('MUX id Error',Dati3DExtensometerLink(1,jj)));
|
|
idxC = find(strcmp('CH n. Error',Dati3DExtensometerLink(1,jj)));
|
|
idxU = find(strcmp('Unknown Error',Dati3DExtensometerLink(1,jj)));
|
|
idxMC = find(strcmp('MsgCorrup',Dati3DExtensometerLink(1,jj)));
|
|
idxNS = find(strcmp('NotSupp',Dati3DExtensometerLink(1,jj)));
|
|
idxU2 = find(strcmp('Unknown',Dati3DExtensometerLink(1,jj)));
|
|
idxNA = find(strcmp('NotAv',Dati3DExtensometerLink(1,jj)));
|
|
idxND = find(strcmp('No Data',Dati3DExtensometerLink(1,jj)));
|
|
idxCE = find(strcmp('CH n. Er',Dati3DExtensometerLink(1,jj)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxCE);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
idx = union(idx,idxND);
|
|
[ri,~] = size(idx);
|
|
if ri == 1
|
|
wardat = 'Warning on the correction of 3D Extensometer Link nodes: there are not data at the beginning of the array!';
|
|
fprintf(fileID,fmt,wardat);
|
|
if rDR==1 && cDR==1 || NuovoZero3DEL == 0 % il file non è mai stato scritto, cerco la data precedente
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
if datenum(dataini3DEL)+1 < now
|
|
dataini3DEL = datestr(datenum(dataini3DEL)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yes3DEL = 0;
|
|
end
|
|
else
|
|
if isempty(RawDate) == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
dataini3DEL = datestr(datenum(dataini3DEL)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
if isnan(DatiRaw(RawDate(end),jj+1)) == 0
|
|
Dati3DExtensometerLink(1,jj) = cellstr(num2str(DatiRaw(RawDate(end),jj+1)));
|
|
Err3DExtensometerLink(1,jj) = 1;
|
|
wardat = 'Data of 3D Extensometer Link nodes corrected using Raw Data of reference Csv file.';
|
|
fprintf(fileID,fmt,wardat);
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
else
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
dataini3DEL = datestr(datenum(dataini3DEL)-1,'yyyy-mm-dd');
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if ESCI == 0
|
|
for jj=1:c
|
|
idxE = find(strcmp('Err1',Dati3DExtensometerLink(:,jj)));
|
|
idxT = find(strcmp('---',Dati3DExtensometerLink(:,jj)));
|
|
idxT2 = find(strcmp('-',Dati3DExtensometerLink(:,jj)));
|
|
idxE2 = find(strcmp('Err2',Dati3DExtensometerLink(:,jj)));
|
|
idxE255 = find(strcmp('Err255',Dati3DExtensometerLink(:,jj)));
|
|
idxD = find(strcmp('DMUXe',Dati3DExtensometerLink(:,jj)));
|
|
idxE1F = find(strcmp('Err1File',Dati3DExtensometerLink(:,jj)));
|
|
idxN = find(strcmp('null',Dati3DExtensometerLink(:,jj)));
|
|
idxRX = find(strcmp('No RX',Dati3DExtensometerLink(:,jj)));
|
|
idxI = find(strcmp('id Error',Dati3DExtensometerLink(:,jj)));
|
|
idxM = find(strcmp('MUX id Error',Dati3DExtensometerLink(:,jj)));
|
|
idxC = find(strcmp('CH n. Error',Dati3DExtensometerLink(:,jj)));
|
|
idxU = find(strcmp('Unknown Error',Dati3DExtensometerLink(:,jj)));
|
|
idxMC = find(strcmp('MsgCorrup',Dati3DExtensometerLink(:,jj)));
|
|
idxNS = find(strcmp('NotSupp',Dati3DExtensometerLink(:,jj)));
|
|
idxU2 = find(strcmp('Unknown',Dati3DExtensometerLink(:,jj)));
|
|
idxNA = find(strcmp('NotAv',Dati3DExtensometerLink(:,jj)));
|
|
idxND = find(strcmp('No Data',Dati3DExtensometerLink(:,jj)));
|
|
idxCE = find(strcmp('CH n. Er',Dati3DExtensometerLink(:,jj)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxCE);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
idx = union(idx,idxND);
|
|
[ri,~] = size(idx);
|
|
for kk=1:ri
|
|
indice=idx(kk);
|
|
if indice == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
dataini3DEL = datestr(datenum(dataini3DEL)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
Dati3DExtensometerLink(indice,jj) = Dati3DExtensometerLink(indice-1,jj);
|
|
Err3DExtensometerLink(indice,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
end
|
|
if ESCI == 1
|
|
break
|
|
end
|
|
|
|
% Elimino gli eventuali Not a Number
|
|
for nnn = 2:r
|
|
check = isnan(cell2mat(Dati3DExtensometerLink(nnn,jj)));
|
|
if check == 1
|
|
Dati3DExtensometerLink(nnn,jj) = Dati3DExtensometerLink(nnn-1,jj);
|
|
Err3DExtensometerLink(nnn,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
end
|
|
end
|
|
end
|
|
corrdat = ['' num2str(Ncorr) ' corrections of 3D Extensometer Link data done!'];
|
|
fprintf(fileID,fmt,corrdat);
|
|
% Concateno informazioni generali e/o letture dai nodi.
|
|
Dati3DExtensometerLink = [DATini3DEL str2double(Dati3DExtensometerLink)];
|
|
Dati3DExtensometerLink_Rif = str2double(Dati3DExtensometerLink_Rif);
|
|
% Elimino eventuali date doppie
|
|
a = 2;
|
|
while a <= r
|
|
if Dati3DExtensometerLink(a,1) == Dati3DExtensometerLink(a-1,1)
|
|
Dati3DExtensometerLink(a,:) = [];
|
|
r = r-1;
|
|
else
|
|
a = a+1;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
if ESCI == 0
|
|
if sum(EL3D_NTC(:,1))>0
|
|
if DIS ~= 1 && yes3DEL == 1
|
|
% T
|
|
[r,c] = size(DatiNTC3DExtensometerLink);
|
|
ErrNTC3DExtensometerLink = zeros(r,c);
|
|
Ncorr = 0;
|
|
if NuovoZero3DEL == 1
|
|
if isfile(RawDataFile) == 1
|
|
DatiRawNTC = csvread(RawDataFileNTC);
|
|
[rDR,cDR] = size(DatiRawNTC);
|
|
DatiRawNTC(:,1) = DatiRawNTC(:,1) + 730000;
|
|
RawDateNTC = find(DatiRawNTC(:,1)<=datenum(dataini3DEL));
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDateNTC = [];
|
|
DatiRawNTC = [];
|
|
end
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDateNTC = [];
|
|
DatiRawNTC = [];
|
|
end
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiNTC3DExtensometerLink(1,jj)));
|
|
idxT = find(strcmp('---',DatiNTC3DExtensometerLink(1,jj)));
|
|
idxT2 = find(strcmp('-',DatiNTC3DExtensometerLink(1,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiNTC3DExtensometerLink(1,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiNTC3DExtensometerLink(1,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiNTC3DExtensometerLink(1,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiNTC3DExtensometerLink(1,jj)));
|
|
idxN = find(strcmp('null',DatiNTC3DExtensometerLink(1,jj)));
|
|
idxRX = find(strcmp('No RX',DatiNTC3DExtensometerLink(1,jj)));
|
|
idxI = find(strcmp('id Error',DatiNTC3DExtensometerLink(1,jj)));
|
|
idxM = find(strcmp('MUX id Error',DatiNTC3DExtensometerLink(1,jj)));
|
|
idxC = find(strcmp('CH n. Error',DatiNTC3DExtensometerLink(1,jj)));
|
|
idxU = find(strcmp('Unknown Error',DatiNTC3DExtensometerLink(1,jj)));
|
|
idxMC = find(strcmp('MsgCorrup',DatiNTC3DExtensometerLink(1,jj)));
|
|
idxNS = find(strcmp('NotSupp',DatiNTC3DExtensometerLink(1,jj)));
|
|
idxU2 = find(strcmp('Unknown',DatiNTC3DExtensometerLink(1,jj)));
|
|
idxNA = find(strcmp('NotAv',DatiNTC3DExtensometerLink(1,jj)));
|
|
idxND = find(strcmp('No Data',DatiNTC3DExtensometerLink(1,jj)));
|
|
idxCE = find(strcmp('CH n. Er',DatiNTC3DExtensometerLink(1,jj)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxCE);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
idx = union(idx,idxND);
|
|
[ri,~] = size(idx);
|
|
if ri == 1
|
|
wardat = ['Warning on the correction of NTC of 3D Extensometer Link nodes: there are not data at '...
|
|
'the beginning of the array!'];
|
|
fprintf(fileID,fmt,wardat);
|
|
if rDR==1 && cDR==1 || NuovoZero3DEL == 0 % il file non è mai stato scritto, cerco la data precedente
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
dataini3DEL = datestr(datenum(dataini3DEL)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
if isempty(RawDateNTC) == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
if datenum(dataini3DEL)+1 < now
|
|
dataini3DEL = datestr(datenum(dataini3DEL)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yes3DEL = 0;
|
|
end
|
|
else
|
|
DatiNTC3DExtensometerLink(1,jj) = cellstr(num2str(DatiRawNTC(RawDateNTC(end),jj+1)));
|
|
if Err3DExtensometerLink(indice,jj) == 0
|
|
Err3DExtensometerLink(indice,jj) = 0.5;
|
|
else
|
|
Err3DExtensometerLink(indice,jj) = 1;
|
|
end
|
|
wardat = 'Data of NTC of 3D Extensometer Link nodes corrected using Raw Data of reference Csv file.';
|
|
fprintf(fileID,fmt,wardat);
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiNTC3DExtensometerLink(:,jj)));
|
|
idxT = find(strcmp('-',DatiNTC3DExtensometerLink(:,jj)));
|
|
idxT3 = find(strcmp('---',DatiNTC3DExtensometerLink(:,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiNTC3DExtensometerLink(:,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiNTC3DExtensometerLink(:,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiNTC3DExtensometerLink(:,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiNTC3DExtensometerLink(:,jj)));
|
|
idxN = find(strcmp('null',DatiNTC3DExtensometerLink(:,jj)));
|
|
idxRX = find(strcmp('No RX',DatiNTC3DExtensometerLink(:,jj)));
|
|
idxI = find(strcmp('id Error',DatiNTC3DExtensometerLink(:,jj)));
|
|
idxM = find(strcmp('MUX id Error',DatiNTC3DExtensometerLink(:,jj)));
|
|
idxC = find(strcmp('CH n. Error',DatiNTC3DExtensometerLink(:,jj)));
|
|
idxU = find(strcmp('Unknown Error',DatiNTC3DExtensometerLink(:,jj)));
|
|
idxMC = find(strcmp('MsgCorrup',DatiNTC3DExtensometerLink(:,jj)));
|
|
idxNS = find(strcmp('NotSupp',DatiNTC3DExtensometerLink(:,jj)));
|
|
idxU2 = find(strcmp('Unknown',DatiNTC3DExtensometerLink(:,jj)));
|
|
idxNA = find(strcmp('NotAv',DatiNTC3DExtensometerLink(:,jj)));
|
|
idxND = find(strcmp('No Data',DatiNTC3DExtensometerLink(:,jj)));
|
|
idxCE = find(strcmp('CH n. Er',DatiNTC3DExtensometerLink(:,jj)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxND);
|
|
idx = union(idx,idxCE);
|
|
idx = union(idx,idxT3);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
[ri,~] = size(idx);
|
|
for kk=1:ri
|
|
indice=idx(kk);
|
|
if indice == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
dataini3DEL = datestr(datenum(dataini3DEL)+1,'yyyy-mm-dd');
|
|
else
|
|
DatiNTC3DExtensometerLink(indice,jj) = DatiNTC3DExtensometerLink(indice-1,jj);
|
|
if Err3DExtensometerLink(indice,jj) == 0
|
|
ErrNTC3DExtensometerLink(indice,jj) = 0.5;
|
|
else
|
|
ErrNTC3DExtensometerLink(indice,jj) = 1;
|
|
end
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
end
|
|
if ESCI == 1
|
|
break
|
|
end
|
|
% Elimino gli eventuali Not a Number
|
|
for nnn = 2:r
|
|
check = isnan(cell2mat(DatiNTC3DExtensometerLink(nnn,jj)));
|
|
if check == 1
|
|
DatiNTC3DExtensometerLink(nnn,jj) = DatiNTC3DExtensometerLink(nnn-1,jj);
|
|
ErrNTC3DExtensometerLink(nnn,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
end
|
|
end
|
|
end
|
|
corrdat = ['' num2str(Ncorr) ' corrections of NTC for 3D Extensometer Link data done!'];
|
|
fprintf(fileID,fmt,corrdat);
|
|
% Concateno informazioni generali e/o letture dai nodi.
|
|
DatiNTC3DExtensometerLink = [DATini3DEL str2double(DatiNTC3DExtensometerLink)];
|
|
% Elimino eventuali date doppie
|
|
a = 2;
|
|
while a <= r
|
|
if DatiNTC3DExtensometerLink(a,1) == DatiNTC3DExtensometerLink(a-1,1)
|
|
DatiNTC3DExtensometerLink(a,:) = [];
|
|
r = r-1;
|
|
else
|
|
a = a+1;
|
|
end
|
|
end
|
|
end
|
|
else
|
|
ErrNTC3DExtensometerLink = 0;
|
|
end
|
|
end
|
|
end
|
|
if NuovoZero3DEL == 1 && yes3DEL == 1
|
|
[rDR,cDR] = size(DatiRaw);
|
|
if rDR~=1 && cDR~=1 && isempty(DatiRaw) == 0
|
|
RawDate1 = find(DatiRaw(:,1)<=Dati3DExtensometerLink(1,1));
|
|
if isempty(RawDate1) == 1
|
|
RawDate2 = 1;
|
|
elseif RawDate1(end) == rDR
|
|
RawDate2 = find(Dati3DExtensometerLink(:,1)>DatiRaw(end,1));
|
|
else
|
|
RawDate2 = find(Dati3DExtensometerLink(:,1)>DatiRaw(RawDate1(end)+1,1));
|
|
end
|
|
else
|
|
RawDate1 = [];
|
|
RawDate2 = 1;
|
|
end
|
|
if isempty(RawDate1) == 0 && isempty(RawDate2) == 0
|
|
Dati = [DatiRaw(1:RawDate1(end),:);Dati3DExtensometerLink(RawDate2(1):end,:)];
|
|
elseif isempty(RawDate1) == 1 && isempty(RawDate2) == 0
|
|
Dati = Dati3DExtensometerLink;
|
|
else
|
|
Dati = DatiRaw;
|
|
end
|
|
% Elimino appoggio più vecchio di un mese
|
|
RawDate3 = find(Dati(:,1)<now-30);
|
|
if isempty(RawDate3) == 0
|
|
[rDati,~] = size(Dati);
|
|
if RawDate3(end) == rDati
|
|
else
|
|
Dati = Dati(RawDate3(end)+1:end,:);
|
|
end
|
|
end
|
|
if isfile(RawDataFile) == 1
|
|
delete(RawDataFile);
|
|
end
|
|
|
|
if sum(EL3D_NTC(:,1))>0
|
|
[rDR,cDR] = size(DatiRawNTC);
|
|
if rDR~=1 && cDR~=1 && isempty(DatiRawNTC) == 0
|
|
RawDate1 = find(DatiRawNTC(:,1)<=DatiNTC3DExtensometerLink(1,1));
|
|
if isempty(RawDate1) == 1
|
|
RawDate2 = 1;
|
|
elseif RawDate1(end) == rDR
|
|
RawDate2 = find(DatiNTC3DExtensometerLink(:,1)>DatiRawNTC(end,1));
|
|
else
|
|
RawDate2 = find(DatiNTC3DExtensometerLink(:,1)>DatiRawNTC(RawDate1(end)+1,1));
|
|
end
|
|
else
|
|
RawDate1 = [];
|
|
RawDate2 = 1;
|
|
end
|
|
if isempty(RawDate1) == 0 && isempty(RawDate2) == 0
|
|
DatiNTC = [DatiRawNTC(1:RawDate1(end),:);DatiNTC3DExtensometerLink(RawDate2(1):end,:)];
|
|
elseif isempty(RawDate1) == 1 && isempty(RawDate2) == 0
|
|
DatiNTC = DatiNTC3DExtensometerLink;
|
|
else
|
|
DatiNTC = DatiRawNTC;
|
|
end
|
|
% Elimino appoggio più vecchio di un mese
|
|
RawDate3 = find(DatiNTC(:,1)<now-30);
|
|
if isempty(RawDate3) == 0
|
|
[rDati,~] = size(DatiNTC);
|
|
if RawDate3(end) == rDati
|
|
else
|
|
DatiNTC = DatiNTC(RawDate3(end)+1:end,:);
|
|
end
|
|
end
|
|
if isfile(RawDataFileNTC) == 1
|
|
delete(RawDataFileNTC);
|
|
end
|
|
end
|
|
else
|
|
Dati = Dati3DExtensometerLink;
|
|
if sum(EL3D_NTC(:,1))>0
|
|
DatiNTC = DatiNTC3DExtensometerLink;
|
|
end
|
|
end
|
|
Dati(:,1) = Dati(:,1) - 730000;
|
|
csvwrite(RawDataFile,Dati);
|
|
if sum(EL3D_NTC(:,1))>0
|
|
DatiNTC(:,1) = DatiNTC(:,1) - 730000;
|
|
csvwrite(RawDataFileNTC,DatiNTC);
|
|
end
|
|
end
|
|
|
|
%% Wire Extensometer Link
|
|
if yesWEL == 0 % Non ci sono Wire Extensometer Link
|
|
DatiWireExtensometerLink = [];
|
|
DatiNTCWireExtensometerLink = [];
|
|
ErrWireExtensometerLink = [];
|
|
ChWEL = [];
|
|
WEL_NTC = [];
|
|
wardat = 'lettura function: there are not Wire Extensometer Link';
|
|
fprintf(fileID,fmt,wardat);
|
|
else
|
|
RawDataFile = ['' IDcentralina '-' DTcatena '-Wire-RawData.csv']; % Specifico per Wire Extensometer Link
|
|
RawDataFileNTC = ['' IDcentralina '-' DTcatena '-NTCWire-RawData.csv'];
|
|
NAN = 0;
|
|
DIS = 0;
|
|
ChWEL = cell2mat(NodoWireExtensometerLink(:,4));
|
|
WEL_NTC = cell2mat(NodoWireExtensometerLink(:,5));
|
|
while NAN == 0
|
|
if datenum(datainiWEL) == datenum(Data(1,1))
|
|
tempoiniWEL = char(Data(1,2));
|
|
end
|
|
NodeType = 'Wire Extensometer Link';
|
|
NodeNumWEL = num2str(cell2mat(NodoWireExtensometerLink(1,2))); % scarico i dati del primo nodo
|
|
% Scarico dei dati relativi alla centralina con informazioni di Data e ora, livello batteria e temperatura
|
|
% Step 1 (vedi commento più avanti)
|
|
comando = ['select Date, Time from RawDataView where Date = ''' ...
|
|
datainiWEL ''' and Time >= ''' tempoiniWEL ''' and UnitName = ''' IDcentralina ...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum = ''' NodeNumWEL ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATiniWEL = curs.Data;
|
|
Ntempo = DATiniWEL;
|
|
[r,c] = size(DATiniWEL);
|
|
saltoWEL = 0;
|
|
if r==1 && c==1
|
|
textdatWEL = 'Warning: error reading Wire Extensometer Link (control unit data)!';
|
|
fprintf(fileID,fmt,textdatWEL);
|
|
saltoWEL = 1;
|
|
end
|
|
% Step 2 (vedi commento più avanti)
|
|
comando = ['select Date, Time from RawDataView where Date > ''' ...
|
|
datainiWEL ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and NodeType = ''' NodeType...
|
|
''' and NodeNum = ''' NodeNumWEL ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DAT2WEL = curs.Data;
|
|
Ndate = DAT2WEL;
|
|
if saltoWEL == 1
|
|
DATiniWEL = DAT2WEL;
|
|
end
|
|
Check = size(DAT2WEL);
|
|
if Check(1,2) > 1 % ho superato il primo giorno
|
|
if saltoWEL == 0
|
|
% Concateno le informazioni relative a Step 1 e 2 (se necessario...)
|
|
DATiniWEL = [DATiniWEL; DAT2WEL];
|
|
end
|
|
end
|
|
% Modifico il formato di data e ora in DATini.
|
|
[rD,cD] = size(DATiniWEL);
|
|
if rD ~=1 && cD ~=1
|
|
T = [cell2mat(DATiniWEL(:,1)) repmat(' ', [rD,1]) cell2mat(DATiniWEL(:,2))];
|
|
T = datenum(T);
|
|
% Converto da Cell Array a Matrice.
|
|
DATiniWEL = T;
|
|
else
|
|
DATiniWEL = [];
|
|
end
|
|
|
|
% Scarico dati relativi ai singoli nodi
|
|
[rd,~] = size(Ndate); % numero di dati successivi al primo giorno di calcolo
|
|
[rt,~] = size(Ntempo); % numero di dati del primo giorno di calcolo
|
|
if saltoWEL == 0
|
|
% creo la matrice per i dati Wire Extensometer Link
|
|
if Check(1,2) > 1
|
|
DatiWireExtensometerLink = cell(rd+rt,rWEL);
|
|
DatiNTCWireExtensometerLink = cell(rd+rt,rWEL);
|
|
else
|
|
DatiWireExtensometerLink = cell(rt,rWEL);
|
|
DatiNTCWireExtensometerLink = cell(rt,rWEL);
|
|
end
|
|
else
|
|
DatiWireExtensometerLink = cell(rd,rWEL);
|
|
DatiNTCWireExtensometerLink = cell(rd,rWEL);
|
|
end
|
|
NWExtensometerLink = cell2mat(NodoWireExtensometerLink(:,2));
|
|
col = 1;
|
|
ii = 1;
|
|
w = 0;
|
|
while ii <= rWEL
|
|
% Step 1: Acquisisco i dati registrati successivamente all'ultimo scarico,
|
|
% ma limitandomi a quelli registrati nel corso di quella singola giornata;
|
|
nN = NWExtensometerLink(ii,1);
|
|
nNodo = num2str(nN);
|
|
comando = ['select Val0 from RawDataView where Date = ''' ...
|
|
datainiWEL ''' and Time >= ''' tempoiniWEL ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and UnitName = ''' IDcentralina ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoWEL = curs.Data;
|
|
% Step 2: Considero le date successive e scarico tutti i dati disponibili.
|
|
comando = ['select Val0 from RawDataView where Date > ''' ...
|
|
datainiWEL ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum = ' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoWELd = curs.Data;
|
|
% Concateno i dati relativi a Step 1 e 2 per il nodo ii-esimo.
|
|
if ChWEL(ii,1) == 1
|
|
% T
|
|
DATnodoWEL_NTC = cell(1,1);
|
|
DATnodoWELd_NTC = cell(1,1);
|
|
elseif ChWEL(ii,1) >= 2
|
|
if WEL_NTC(ii,1)==1
|
|
if ChWEL(ii,1) == 2
|
|
comando = ['select Val1 from RawDataView where Date = ''' ...
|
|
datainiWEL ''' and Time >= ''' tempoiniWEL ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and UnitName = ''' IDcentralina ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
elseif ChWEL(ii,1) == 4
|
|
comando = ['select Val2 from RawDataView where Date = ''' ...
|
|
datainiWEL ''' and Time >= ''' tempoiniWEL ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and UnitName = ''' IDcentralina ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
end
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoWEL_NTC = curs.Data;
|
|
% Dato
|
|
if ChWEL(ii,1) == 2
|
|
comando = ['select Val1 from RawDataView where Date > ''' ...
|
|
datainiWEL ''' and UnitName = ''' IDcentralina ...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = '''...
|
|
NodeType ''' and NodeNum = ' nNodo ''];
|
|
elseif ChWEL(ii,1) == 4
|
|
comando = ['select Val2 from RawDataView where Date > ''' ...
|
|
datainiWEL ''' and UnitName = ''' IDcentralina ...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = '''...
|
|
NodeType ''' and NodeNum = ' nNodo ''];
|
|
end
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoWELd_NTC = curs.Data;
|
|
else
|
|
DATnodoWEL_NTC = cell(1,1);
|
|
DATnodoWELd_NTC = cell(1,1);
|
|
end
|
|
end
|
|
|
|
[rn,~] = size(DATnodoWELd); % controllo date
|
|
if rn < rd % normalmente sono uguali
|
|
for i = rn+1:rd
|
|
DATnodoWELd(i,:) = DATnodoWELd(rn,:); % se mancano dati, copio gli ultimi
|
|
end
|
|
wardat = ['Node Wire Extensometer Link ' num2str(ii) ' does NOT work!'];
|
|
fprintf(fileID,fmt,wardat);
|
|
w = 1;
|
|
end
|
|
if WEL_NTC(ii,1)==1
|
|
[rnT,~] = size(DATnodoWELd_NTC); % controllo date
|
|
if rnT < rd % normalmente sono uguali
|
|
for i = rnT+1:rd
|
|
DATnodoWELd_NTC(i,:) = DATnodoWELd_NTC(rn,:); % se mancano dati, copio gli ultimi
|
|
end
|
|
wardat = ['NTC of Node Wire Extensometer Link ' num2str(ii) ' does NOT work!'];
|
|
fprintf(fileID,fmt,wardat);
|
|
w = 1;
|
|
end
|
|
end
|
|
|
|
% DATnodo è la matrice che raccoglie i dati dell' ii-esimo nodo,
|
|
% DATnodi è la matrice che concatena i dati relativi a ciascun nodo.
|
|
if saltoWEL == 0
|
|
if ChWEL(ii,1) >= 2
|
|
if WEL_NTC(ii,1) == 1
|
|
DatiWireExtensometerLink(1:rt,col) = DATnodoWEL(:,:);
|
|
DatiNTCWireExtensometerLink(1:rt,col) = DATnodoWEL_NTC(:,:);
|
|
if Check(1,2) > 1
|
|
DatiWireExtensometerLink(rt+1:rt+rd,col) = DATnodoWELd(:,:);
|
|
DatiNTCWireExtensometerLink(rt+1:rt+rd,col) = DATnodoWELd_NTC(:,:);
|
|
end
|
|
else
|
|
DatiWireExtensometerLink(1:rt,col) = DATnodoWEL(:,:);
|
|
if Check(1,2) > 1
|
|
DatiWireExtensometerLink(rt+1:rt+rd,col) = DATnodoWELd(:,:);
|
|
end
|
|
end
|
|
elseif ChWEL(ii,1) == 1
|
|
DatiWireExtensometerLink(1:rt,col) = DATnodoWEL(:,:);
|
|
if Check(1,2) > 1
|
|
DatiWireExtensometerLink(rt+1:rt+rd,col) = DATnodoWELd(:,:);
|
|
end
|
|
end
|
|
else
|
|
if ChWEL(ii,1) >= 2
|
|
if WEL_NTC(ii,1) == 1
|
|
DatiWireExtensometerLink(1:rd,col) = DATnodoWEL(:,:);
|
|
DatiNTCWireExtensometerLink(1:rd,col) = DATnodoWEL_NTC(:,:);
|
|
else
|
|
DatiWireExtensometerLink(1:rd,col) = DATnodoWEL(:,:);
|
|
end
|
|
elseif ChWEL(ii,1) == 1
|
|
DatiWireExtensometerLink(1:rd,col) = DATnodoWEL(:,:);
|
|
end
|
|
end
|
|
|
|
okdatWEL = ['Data of node number ' num2str(ii) ' of ' ...
|
|
num2str(rWEL) ' Wire Extensometer Link nodes downloaded correctly'];
|
|
fprintf(fileID,fmt,okdatWEL);
|
|
ii = ii+1;
|
|
col = col+1;
|
|
end
|
|
if w == 0
|
|
wardat = 'There are not warning for Wire Extensometer Link!';
|
|
fprintf(fileID,fmt,wardat);
|
|
end
|
|
|
|
% Controllo gli eventuali errori ('Err1' o '---') e li rimuovo,
|
|
% rimpiazzandoli con l'ultimo dato disponibile di quel nodo
|
|
|
|
% Dati
|
|
[r,c] = size(DatiWireExtensometerLink);
|
|
ErrWireExtensometerLink = zeros(r,c);
|
|
Ncorr = 0;
|
|
ESCI = 0;
|
|
NAN = 1;
|
|
if NuovoZeroWEL == 1
|
|
if isfile(RawDataFile) == 1
|
|
DatiRaw = csvread(RawDataFile);
|
|
[rDR,cDR] = size(DatiRaw);
|
|
DatiRaw(:,1) = DatiRaw(:,1) + 730000;
|
|
RawDate = find(DatiRaw(:,1)<=datenum(datainiWEL));
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDate = [];
|
|
DatiRaw = [];
|
|
end
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDate = [];
|
|
DatiRaw = [];
|
|
end
|
|
for jj=1:c
|
|
% Se il nodo è Dis., devo aumentare di uno la data (il nodo non
|
|
% è ancora stato installato!)
|
|
if strcmp('Dis.',DatiWireExtensometerLink(1,jj)) == 1
|
|
for dis = 2:r
|
|
if strcmp('Dis.',DatiWireExtensometerLink(dis,jj)) == 0
|
|
DatiWireExtensometerLink = DatiWireExtensometerLink(dis:end,:);
|
|
DatiNTCWireExtensometerLink = DatiNTCWireExtensometerLink(dis:end,:);
|
|
DATiniWEL = DATiniWEL(dis:end,:);
|
|
[r,c] = size(DatiWireExtensometerLink);
|
|
break
|
|
elseif dis == r
|
|
NAN = 0;
|
|
DIS = 1;
|
|
if datenum(datainiWEL)+1 < now
|
|
datainiWEL = datestr(datenum(datainiWEL)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yesWEL = 0;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if DIS ~= 1 && yesWEL == 1
|
|
% --- Codice per il primo dato ---
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiWireExtensometerLink(1,jj)));
|
|
idxT = find(strcmp('---',DatiWireExtensometerLink(1,jj)));
|
|
idxT2 = find(strcmp('-',DatiWireExtensometerLink(1,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiWireExtensometerLink(1,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiWireExtensometerLink(1,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiWireExtensometerLink(1,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiWireExtensometerLink(1,jj)));
|
|
idxN = find(strcmp('null',DatiWireExtensometerLink(1,jj)));
|
|
idxRX = find(strcmp('No RX',DatiWireExtensometerLink(1,jj)));
|
|
idxI = find(strcmp('id Error',DatiWireExtensometerLink(1,jj)));
|
|
idxM = find(strcmp('MUX id Error',DatiWireExtensometerLink(1,jj)));
|
|
idxC = find(strcmp('CH n. Error',DatiWireExtensometerLink(1,jj)));
|
|
idxU = find(strcmp('Unknown Error',DatiWireExtensometerLink(1,jj)));
|
|
idxMC = find(strcmp('MsgCorrup',DatiWireExtensometerLink(1,jj)));
|
|
idxNS = find(strcmp('NotSupp',DatiWireExtensometerLink(1,jj)));
|
|
idxU2 = find(strcmp('Unknown',DatiWireExtensometerLink(1,jj)));
|
|
idxNA = find(strcmp('NotAv',DatiWireExtensometerLink(1,jj)));
|
|
idxND = find(strcmp('No Data',DatiWireExtensometerLink(1,jj)));
|
|
idxCE = find(strcmp('CH n. Er',DatiWireExtensometerLink(1,jj)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxCE);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
idx = union(idx,idxND);
|
|
[ri,~] = size(idx);
|
|
if ri == 1
|
|
wardat = 'Warning on the correction of Wire Extensometer Link nodes: there are not data at the beginning of the array!';
|
|
fprintf(fileID,fmt,wardat);
|
|
if rDR==1 && cDR==1 || NuovoZeroWEL == 0 % il file non è mai stato scritto, cerco la data precedente
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
if datenum(datainiWEL)+1 < now
|
|
datainiWEL = datestr(datenum(datainiWEL)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yesWEL = 0;
|
|
end
|
|
else
|
|
if isempty(RawDate) == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiWEL = datestr(datenum(datainiWEL)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
if isnan(DatiRaw(RawDate(end),jj+1)) == 0
|
|
DatiWireExtensometerLink(1,jj) = cellstr(num2str(DatiRaw(RawDate(end),jj+1)));
|
|
ErrWireExtensometerLink(1,jj) = 1;
|
|
wardat = 'Data of Wire Extensometer Link nodes corrected using Raw Data of reference Csv file.';
|
|
fprintf(fileID,fmt,wardat);
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
else
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
dataini3DEL = datestr(datenum(dataini3DEL)-1,'yyyy-mm-dd');
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if ESCI == 0
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiWireExtensometerLink(:,jj)));
|
|
idxT = find(strcmp('---',DatiWireExtensometerLink(:,jj)));
|
|
idxT2 = find(strcmp('-',DatiWireExtensometerLink(:,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiWireExtensometerLink(:,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiWireExtensometerLink(:,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiWireExtensometerLink(:,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiWireExtensometerLink(:,jj)));
|
|
idxN = find(strcmp('null',DatiWireExtensometerLink(:,jj)));
|
|
idxRX = find(strcmp('No RX',DatiWireExtensometerLink(:,jj)));
|
|
idxI = find(strcmp('id Error',DatiWireExtensometerLink(:,jj)));
|
|
idxM = find(strcmp('MUX id Error',DatiWireExtensometerLink(:,jj)));
|
|
idxC = find(strcmp('CH n. Error',DatiWireExtensometerLink(:,jj)));
|
|
idxU = find(strcmp('Unknown Error',DatiWireExtensometerLink(:,jj)));
|
|
idxMC = find(strcmp('MsgCorrup',DatiWireExtensometerLink(:,jj)));
|
|
idxNS = find(strcmp('NotSupp',DatiWireExtensometerLink(:,jj)));
|
|
idxU2 = find(strcmp('Unknown',DatiWireExtensometerLink(:,jj)));
|
|
idxNA = find(strcmp('NotAv',DatiWireExtensometerLink(:,jj)));
|
|
idxND = find(strcmp('No Data',DatiWireExtensometerLink(:,jj)));
|
|
idxCE = find(strcmp('CH n. Er',DatiWireExtensometerLink(:,jj)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxCE);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
idx = union(idx,idxND);
|
|
[ri,~] = size(idx);
|
|
for kk=1:ri
|
|
indice=idx(kk);
|
|
if indice == 1
|
|
wardat = 'Warning on the correction of Wire Extensometer Link: there are not data at the beginning of the array!';
|
|
fprintf(fileID,fmt,wardat);
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiWEL = datestr(datenum(datainiWEL)-1,'yyyy-mm-dd');
|
|
else
|
|
DatiWireExtensometerLink(indice,jj) = DatiWireExtensometerLink(indice-1,jj);
|
|
ErrWireExtensometerLink(indice,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
end
|
|
if ESCI == 1
|
|
break
|
|
end
|
|
% Elimino gli eventuali Not a Number
|
|
for nnn = 2:r
|
|
check = isnan(cell2mat(DatiWireExtensometerLink(nnn,jj)));
|
|
if check == 1
|
|
DatiWireExtensometerLink(nnn,jj) = DatiWireExtensometerLink(nnn-1,jj);
|
|
ErrWireExtensometerLink(nnn,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
end
|
|
end
|
|
end
|
|
corrdat = ['' num2str(Ncorr) ' corrections of Wire Extensometer Link data done!'];
|
|
fprintf(fileID,fmt,corrdat);
|
|
% Concateno informazioni generali e/o letture dai nodi.
|
|
DatiWireExtensometerLink = [DATiniWEL str2double(DatiWireExtensometerLink)];
|
|
% Elimino eventuali date doppie
|
|
a = 2;
|
|
while a <= r
|
|
if DatiWireExtensometerLink(a,1) == DatiWireExtensometerLink(a-1,1)
|
|
DatiWireExtensometerLink(a,:) = [];
|
|
r = r-1;
|
|
else
|
|
a = a+1;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
if ESCI == 0
|
|
if sum(WEL_NTC(:,1))>0
|
|
% NTC
|
|
if DIS ~= 1 && yesWEL == 1
|
|
[r,c] = size(DatiNTCWireExtensometerLink);
|
|
Ncorr = 0;
|
|
if NuovoZeroWEL == 1
|
|
if isfile(RawDataFile) == 1
|
|
DatiRawNTC = csvread(RawDataFileNTC);
|
|
[rDR,cDR] = size(DatiRawNTC);
|
|
DatiRawNTC(:,1) = DatiRawNTC(:,1) + 730000;
|
|
RawDateNTC = find(DatiRawNTC(:,1)<=datenum(datainiWEL));
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDateNTC = [];
|
|
DatiRawNTC = [];
|
|
end
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDateNTC = [];
|
|
DatiRawNTC = [];
|
|
end
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiNTCWireExtensometerLink(1,jj)));
|
|
idxND = find(strcmp('No Data',DatiNTCWireExtensometerLink(1,jj)));
|
|
idxT3 = find(strcmp('---',DatiNTCWireExtensometerLink(1,jj)));
|
|
idxT = find(strcmp('-',DatiNTCWireExtensometerLink(1,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiNTCWireExtensometerLink(1,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiNTCWireExtensometerLink(1,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiNTCWireExtensometerLink(1,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiNTCWireExtensometerLink(1,jj)));
|
|
idxN = find(strcmp('null',DatiNTCWireExtensometerLink(1,jj)));
|
|
idxRX = find(strcmp('No RX',DatiNTCWireExtensometerLink(1,jj)));
|
|
idxI = find(strcmp('id Error',DatiNTCWireExtensometerLink(1,jj)));
|
|
idxM = find(strcmp('MUX id Error',DatiNTCWireExtensometerLink(1,jj)));
|
|
idxC = find(strcmp('CH n. Error',DatiNTCWireExtensometerLink(1,jj)));
|
|
idxU = find(strcmp('Unknown Error',DatiNTCWireExtensometerLink(1,jj)));
|
|
idxMC = find(strcmp('MsgCorrup',DatiNTCWireExtensometerLink(1,jj)));
|
|
idxNS = find(strcmp('NotSupp',DatiNTCWireExtensometerLink(1,jj)));
|
|
idxU2 = find(strcmp('Unknown',DatiNTCWireExtensometerLink(1,jj)));
|
|
idxNA = find(strcmp('NotAv',DatiNTCWireExtensometerLink(1,jj)));
|
|
idxCE = find(strcmp('CH n. Er',DatiNTCWireExtensometerLink(1,jj)));
|
|
idx = union(idxE,idxT3);
|
|
idx = union(idx,idxND);
|
|
idx = union(idx,idxCE);
|
|
idx = union(idx,idxT);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
[ri,~] = size(idx);
|
|
if ri == 1
|
|
wardat = 'Warning on the correction of NTC of Wire Extensometer Link nodes: there are not data at the beginning of the array!';
|
|
fprintf(fileID,fmt,wardat);
|
|
if rDR==1 && cDR==1 || NuovoZeroWEL == 0 % il file non è mai stato scritto, cerco la data precedente
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
if datenum(datainiWEL)+1 < now
|
|
datainiWEL = datestr(datenum(datainiWEL)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yesWEL = 0;
|
|
end
|
|
else
|
|
if isempty(RawDateNTC) == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiWEL = datestr(datenum(datainiWEL)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
DatiNTCWireExtensometerLink(1,jj) = cellstr(num2str(DatiRawNTC(RawDateNTC(end),jj+1)));
|
|
if ErrWireExtensometerLink(indice,jj) == 0
|
|
ErrWireExtensometerLink(indice,jj) = 0.5;
|
|
else
|
|
ErrWireExtensometerLink(indice,jj) = 1;
|
|
end
|
|
wardat = 'Data of NTC of Wire Extensometer Link nodes corrected using Raw Data of reference Csv file.';
|
|
fprintf(fileID,fmt,wardat);
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiNTCWireExtensometerLink(:,jj)));
|
|
idxND = find(strcmp('No Data',DatiNTCWireExtensometerLink(:,jj)));
|
|
idxT3 = find(strcmp('---',DatiNTCWireExtensometerLink(:,jj)));
|
|
idxT = find(strcmp('-',DatiNTCWireExtensometerLink(:,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiNTCWireExtensometerLink(:,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiNTCWireExtensometerLink(:,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiNTCWireExtensometerLink(:,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiNTCWireExtensometerLink(:,jj)));
|
|
idxN = find(strcmp('null',DatiNTCWireExtensometerLink(:,jj)));
|
|
idxRX = find(strcmp('No RX',DatiNTCWireExtensometerLink(:,jj)));
|
|
idxI = find(strcmp('id Error',DatiNTCWireExtensometerLink(:,jj)));
|
|
idxM = find(strcmp('MUX id Error',DatiNTCWireExtensometerLink(:,jj)));
|
|
idxC = find(strcmp('CH n. Error',DatiNTCWireExtensometerLink(:,jj)));
|
|
idxU = find(strcmp('Unknown Error',DatiNTCWireExtensometerLink(:,jj)));
|
|
idxMC = find(strcmp('MsgCorrup',DatiNTCWireExtensometerLink(:,jj)));
|
|
idxNS = find(strcmp('NotSupp',DatiNTCWireExtensometerLink(:,jj)));
|
|
idxU2 = find(strcmp('Unknown',DatiNTCWireExtensometerLink(:,jj)));
|
|
idxNA = find(strcmp('NotAv',DatiNTCWireExtensometerLink(:,jj)));
|
|
idxCE = find(strcmp('CH n. Er',DatiNTCWireExtensometerLink(:,jj)));
|
|
idx = union(idxE,idxT3);
|
|
idx = union(idx,idxND);
|
|
idx = union(idx,idxCE);
|
|
idx = union(idx,idxT);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
[ri,~] = size(idx);
|
|
for kk=1:ri
|
|
indice=idx(kk);
|
|
if indice == 1
|
|
if DIS == 1
|
|
wardat = 'Warning on the correction of NTC of Wire Extensometer Link: there are not data at the beginning of the array!';
|
|
fprintf(fileID,fmt,wardat);
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiWEL = datestr(datenum(datainiWEL)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
wardat = 'Warning on the correction of NTC of Wire Extensometer Link nodes: there are not data at the beginning of the array!';
|
|
fprintf(fileID,fmt,wardat);
|
|
if rDR==1 && cDR==1 % il file non è mai stato scritto
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiWEL = datestr(datenum(datainiWEL)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
if isempty(RawDateNTC) == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiWEL = datestr(datenum(datainiWEL)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
DatiNTCWireExtensometerLink(indice,jj) = cellstr(num2str(DatiRawNTC(RawDateNTC(end),jj+1)));
|
|
if ErrWireExtensometerLink(indice,jj) == 0
|
|
ErrWireExtensometerLink(indice,jj) = 0.5;
|
|
else
|
|
ErrWireExtensometerLink(indice,jj) = 1;
|
|
end
|
|
wardat = 'Data of Wire Extensometer Link nodes corrected using Raw Data of Excel file.';
|
|
fprintf(fileID,fmt,wardat);
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
end
|
|
end
|
|
else
|
|
DatiNTCWireExtensometerLink(indice,jj) = DatiNTCWireExtensometerLink(indice-1,jj);
|
|
if ErrWireExtensometerLink(indice,jj) == 0
|
|
ErrWireExtensometerLink(indice,jj) = 0.5;
|
|
else
|
|
ErrWireExtensometerLink(indice,jj) = 1;
|
|
end
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
end
|
|
if ESCI == 1
|
|
break
|
|
end
|
|
% Elimino gli eventuali Not a Number
|
|
for nnn = 2:r
|
|
check = isnan(cell2mat(DatiNTCWireExtensometerLink(nnn,jj)));
|
|
if check == 1
|
|
DatiNTCWireExtensometerLink(nnn,jj) = DatiNTCWireExtensometerLink(nnn-1,jj);
|
|
if ErrWireExtensometerLink(indice,jj) == 0
|
|
ErrWireExtensometerLink(indice,jj) = 0.5;
|
|
else
|
|
ErrWireExtensometerLink(indice,jj) = 1;
|
|
end
|
|
Ncorr = Ncorr+ri;
|
|
end
|
|
end
|
|
end
|
|
corrdat = ['' num2str(Ncorr) ' corrections of NTC Wire Extensometer Link data done!'];
|
|
fprintf(fileID,fmt,corrdat);
|
|
% Concateno informazioni generali e/o letture dai nodi.
|
|
DatiNTCWireExtensometerLink = [DATiniWEL str2double(DatiNTCWireExtensometerLink)];
|
|
% Elimino eventuali date doppie
|
|
a = 2;
|
|
while a <= r
|
|
if DatiNTCWireExtensometerLink(a,1) == DatiNTCWireExtensometerLink(a-1,1)
|
|
DatiNTCWireExtensometerLink(a,:) = [];
|
|
r = r-1;
|
|
else
|
|
a = a+1;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if NuovoZeroWEL == 1 && yesWEL == 1
|
|
[rDR,cDR] = size(DatiRaw);
|
|
if rDR~=1 && cDR~=1 && isempty(DatiRaw) == 0
|
|
RawDate1 = find(DatiRaw(:,1)<=DatiWireExtensometerLink(1,1));
|
|
if isempty(RawDate1) == 1
|
|
RawDate2 = 1;
|
|
elseif RawDate1(end) == rDR
|
|
RawDate2 = find(DatiWireExtensometerLink(:,1)>DatiRaw(end,1));
|
|
else
|
|
RawDate2 = find(DatiWireExtensometerLink(:,1)>DatiRaw(RawDate1(end)+1,1));
|
|
end
|
|
else
|
|
RawDate1 = [];
|
|
RawDate2 = 1;
|
|
end
|
|
if isempty(RawDate1) == 0 && isempty(RawDate2) == 0
|
|
Dati = [DatiRaw(1:RawDate1(end),:);DatiWireExtensometerLink(RawDate2(1):end,:)];
|
|
elseif isempty(RawDate1) == 1 && isempty(RawDate2) == 0
|
|
Dati = DatiWireExtensometerLink;
|
|
else
|
|
Dati = DatiRaw;
|
|
end
|
|
% Elimino appoggio più vecchio di un mese
|
|
RawDate3 = find(Dati(:,1)<now-30);
|
|
if isempty(RawDate3) == 0
|
|
[rDati,~] = size(Dati);
|
|
if RawDate3(end) == rDati
|
|
else
|
|
Dati = Dati(RawDate3(end)+1:end,:);
|
|
end
|
|
end
|
|
if isfile(RawDataFile) == 1
|
|
delete(RawDataFile);
|
|
end
|
|
|
|
if sum(WEL_NTC(:,1))>0
|
|
[rDR,cDR] = size(DatiRawNTC);
|
|
if rDR~=1 && cDR~=1 && isempty(DatiRawNTC) == 0
|
|
RawDate1 = find(DatiRawNTC(:,1)<=DatiNTCWireExtensometerLink(1,1));
|
|
if isempty(RawDate1) == 1
|
|
RawDate2 = 1;
|
|
elseif RawDate1(end) == rDR
|
|
RawDate2 = find(DatiNTCWireExtensometerLink(:,1)>DatiRawNTC(end,1));
|
|
else
|
|
RawDate2 = find(DatiNTCWireExtensometerLink(:,1)>DatiRawNTC(RawDate1(end)+1,1));
|
|
end
|
|
else
|
|
RawDate1 = [];
|
|
RawDate2 = 1;
|
|
end
|
|
if isempty(RawDate1) == 0 && isempty(RawDate2) == 0
|
|
DatiNTC = [DatiRawNTC(1:RawDate1(end),:);DatiNTCWireExtensometerLink(RawDate2(1):end,:)];
|
|
elseif isempty(RawDate1) == 1 && isempty(RawDate2) == 0
|
|
DatiNTC = DatiNTCWireExtensometerLink;
|
|
else
|
|
DatiNTC = DatiRawNTC;
|
|
end
|
|
% Elimino appoggio più vecchio di un mese
|
|
RawDate3 = find(DatiNTC(:,1)<now-30);
|
|
if isempty(RawDate3) == 0
|
|
[rDati,~] = size(DatiNTC);
|
|
if RawDate3(end) == rDati
|
|
else
|
|
DatiNTC = DatiNTC(RawDate3(end)+1:end,:);
|
|
end
|
|
end
|
|
if isfile(RawDataFileNTC) == 1
|
|
delete(RawDataFileNTC);
|
|
end
|
|
end
|
|
else
|
|
Dati = DatiWireExtensometerLink;
|
|
if sum(WEL_NTC(:,1))>0
|
|
DatiNTC = DatiNTCWireExtensometerLink;
|
|
end
|
|
end
|
|
Dati(:,1) = Dati(:,1) - 730000;
|
|
csvwrite(RawDataFile,Dati);
|
|
if sum(WEL_NTC(:,1))>0
|
|
DatiNTC(:,1) = DatiNTC(:,1) - 730000;
|
|
csvwrite(RawDataFileNTC,DatiNTC);
|
|
end
|
|
end
|
|
|
|
%% MultiPoint Borehole Extensometer Link
|
|
if yesMPBEL == 0 % Non ci sono Multipoint borehole rod extensometer
|
|
DatiMultiPointExtensometer = [];
|
|
DatiNTCMultiPointExtensometer = [];
|
|
ErrMultiPointExtensometer = [];
|
|
ErrNTCMultiPointExtensometer = [];
|
|
ChMPBEL = [];
|
|
MPBEL_NTC = [];
|
|
wardat = 'lettura function: there are not Multi Point Extensometer Link';
|
|
fprintf(fileID,fmt,wardat);
|
|
else
|
|
RawDataFile = ['' IDcentralina '-' DTcatena '-MPBEL-RawData.csv']; % Specifico per MPBE Link
|
|
RawDataFileNTC = ['' IDcentralina '-' DTcatena '-NTCMPBEL-RawData.csv']; % Specifico per NTC MPBE Link
|
|
ChMPBEL = cell2mat(NodoMultiPointRodExtensometer(:,4));
|
|
MPBEL_NTC = cell2mat(NodoMultiPointRodExtensometer(:,5));
|
|
NAN = 0;
|
|
DIS = 0;
|
|
while NAN == 0
|
|
if datenum(datainiMPBEL) == datenum(Data(1,1))
|
|
tempoiniMPBEL = char(Data(1,2));
|
|
end
|
|
NodeType = 'Multipoint borehole rod extensometer';
|
|
NodeNumMPBEL = num2str(cell2mat(NodoMultiPointRodExtensometer(1,2))); % scarico i dati del primo nodo
|
|
% Scarico dei dati relativi alla centralina con informazioni di Data e ora, livello batteria e temperatura
|
|
% Step 1 (vedi commento più avanti)
|
|
comando = ['select Date, Time from RawDataView where Date = ''' ...
|
|
datainiMPBEL ''' and Time >= ''' tempoiniMPBEL ''' and UnitName = ''' IDcentralina ...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum = ''' NodeNumMPBEL ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATiniMPBEL = curs.Data;
|
|
Ntempo = DATiniMPBEL;
|
|
[r,c] = size(DATiniMPBEL);
|
|
saltoMPBEL = 0;
|
|
if r==1 && c==1
|
|
textdatMPBEL = 'Warning: error reading Multipoint borehole rod extensometer (control unit data)!';
|
|
fprintf(fileID,fmt,textdatMPBEL);
|
|
saltoMPBEL = 1;
|
|
end
|
|
% Step 2 (vedi commento più avanti)
|
|
comando = ['select Date, Time from RawDataView where Date > ''' ...
|
|
datainiMPBEL ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ''' NodeNumMPBEL ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DAT2MPBEL = curs.Data;
|
|
Ndate = DAT2MPBEL;
|
|
if saltoMPBEL == 1
|
|
DATiniMPBEL = DAT2MPBEL;
|
|
end
|
|
Check = size(DAT2MPBEL);
|
|
if Check(1,2) > 1 % ho superato il primo giorno
|
|
% Concateno le informazioni relative a Step 1 e 2 (se necessario...)
|
|
if saltoMPBEL == 0
|
|
DATiniMPBEL = [DATiniMPBEL; DAT2MPBEL];
|
|
end
|
|
end
|
|
% Modifico il formato di data e ora in DATini.
|
|
[rD,cD] = size(DATiniMPBEL);
|
|
if rD ~=1 && cD ~=1
|
|
T = [cell2mat(DATiniMPBEL(:,1)) repmat(' ', [rD,1]) cell2mat(DATiniMPBEL(:,2))];
|
|
T = datenum(T);
|
|
% Converto da Cell Array a Matrice.
|
|
DATiniMPBEL = T;
|
|
else
|
|
DATiniMPBEL = [];
|
|
end
|
|
|
|
% Scarico dati relativi ai singoli nodi
|
|
[rd,~] = size(Ndate); % numero di dati successivi al primo giorno di calcolo
|
|
[rt,~] = size(Ntempo); % numero di dati del primo giorno di calcolo
|
|
% creo la matrice per i dati Multipoint borehole rod extensometer
|
|
if saltoMPBEL == 0
|
|
if Check(1,2) > 1
|
|
DatiMultiPointExtensometer = cell(rd+rt,rMPBEL*NumBasi);
|
|
DatiNTCMultiPointExtensometer = cell(rd+rt,rMPBEL*NumBasi);
|
|
else
|
|
DatiMultiPointExtensometer = cell(rt,rMPBEL*NumBasi);
|
|
DatiNTCMultiPointExtensometer = cell(rt,rMPBEL*NumBasi);
|
|
end
|
|
else
|
|
DatiMultiPointExtensometer = cell(rd,rMPBEL*NumBasi);
|
|
DatiNTCMultiPointExtensometer = cell(rd,rMPBEL*NumBasi);
|
|
end
|
|
NMPBExtensometerLink = cell2mat(NodoMultiPointRodExtensometer(:,2));
|
|
col = 1;
|
|
ii = 1;
|
|
w = 0;
|
|
while ii <= rMPBEL
|
|
% Step 1: Acquisisco i dati registrati successivamente all'ultimo scarico,
|
|
% ma limitandomi a quelli registrati nel corso di quella singola giornata;
|
|
nN = NMPBExtensometerLink(ii,1);
|
|
nNodo = num2str(nN);
|
|
% 1 Base
|
|
if NumBasi == 1
|
|
% Dato
|
|
comando = ['select Val0 from RawDataView where Date = ''' ...
|
|
datainiMPBEL ''' and Time >= ''' tempoiniMPBEL ''' and ToolNameID = '''...
|
|
DTcatena ''' and UnitName = ''' IDcentralina ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoMPBEL = curs.Data;
|
|
% Step 2: Considero le date successive e scarico tutti i dati disponibili.
|
|
comando = ['select Val0 from RawDataView where Date > ''' ...
|
|
datainiMPBEL ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoMPBELd = curs.Data;
|
|
if ChMPBEL(ii,1) >= 2 && MPBEL_NTC(ii,1) == 1 % leggo la temperatura
|
|
% T
|
|
comando = ['select Val1 from RawDataView where Date = ''' ...
|
|
datainiMPBEL ''' and Time >= ''' tempoiniMPBEL ''' and ToolNameID = '''...
|
|
DTcatena ''' and UnitName = ''' IDcentralina ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoMPBEL_NTC = curs.Data;
|
|
% Step 2: Considero le date successive e scarico tutti i dati disponibili.
|
|
comando = ['select Val1 from RawDataView where Date > ''' ...
|
|
datainiMPBEL ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoMPBELd_NTC = curs.Data;
|
|
else % non la leggo
|
|
DATnodoMPBEL_NTC = 0;
|
|
DATnodoMPBELd_NTC = 0;
|
|
end
|
|
% 2 Basi
|
|
elseif NumBasi == 2
|
|
if ChMPBEL(ii,1) == 4
|
|
% Dato
|
|
comando = ['select Val0, Val2 from RawDataView where Date = ''' ...
|
|
datainiMPBEL ''' and Time >= ''' tempoiniMPBEL ''' and ToolNameID = '''...
|
|
DTcatena ''' and UnitName = ''' IDcentralina ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoMPBEL = curs.Data;
|
|
% Step 2: Considero le date successive e scarico tutti i dati disponibili.
|
|
comando = ['select Val0, Val2 from RawDataView where Date > ''' ...
|
|
datainiMPBEL ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoMPBELd = curs.Data;
|
|
else
|
|
% Dato
|
|
comando = ['select Val0, Val1 from RawDataView where Date = ''' ...
|
|
datainiMPBEL ''' and Time >= ''' tempoiniMPBEL ''' and ToolNameID = '''...
|
|
DTcatena ''' and UnitName = ''' IDcentralina ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoMPBEL = curs.Data;
|
|
% Step 2: Considero le date successive e scarico tutti i dati disponibili.
|
|
comando = ['select Val0, Val1 from RawDataView where Date > ''' ...
|
|
datainiMPBEL ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoMPBELd = curs.Data;
|
|
end
|
|
if ChMPBEL(ii,1) >= 3 && MPBEL_NTC(ii,1) == 1 % leggo la temperatura
|
|
% T
|
|
comando = ['select Val2 from RawDataView where Date = ''' ...
|
|
datainiMPBEL ''' and Time >= ''' tempoiniMPBEL ''' and ToolNameID = '''...
|
|
DTcatena ''' and UnitName = ''' IDcentralina ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoMPBEL_NTC = curs.Data;
|
|
% Step 2: Considero le date successive e scarico tutti i dati disponibili.
|
|
comando = ['select Val2 from RawDataView where Date > ''' ...
|
|
datainiMPBEL ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoMPBELd_NTC = curs.Data;
|
|
else % non la leggo
|
|
DATnodoMPBEL_NTC = 0;
|
|
DATnodoMPBELd_NTC = 0;
|
|
end
|
|
elseif NumBasi == 3
|
|
if ChMPBEL(ii,1) == 6
|
|
% Dato
|
|
comando = ['select Val0, Val2, Val4 from RawDataView where Date = ''' ...
|
|
datainiMPBEL ''' and Time >= ''' tempoiniMPBEL ''' and ToolNameID = '''...
|
|
DTcatena ''' and UnitName = ''' IDcentralina ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoMPBEL = curs.Data;
|
|
% Step 2: Considero le date successive e scarico tutti i dati disponibili.
|
|
comando = ['select Val0, Val2, Val4 from RawDataView where Date > ''' ...
|
|
datainiMPBEL ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoMPBELd = curs.Data;
|
|
else
|
|
% Dato
|
|
comando = ['select Val0, Val1, Val2 from RawDataView where Date = ''' ...
|
|
datainiMPBEL ''' and Time >= ''' tempoiniMPBEL ''' and ToolNameID = '''...
|
|
DTcatena ''' and UnitName = ''' IDcentralina ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoMPBEL = curs.Data;
|
|
% Step 2: Considero le date successive e scarico tutti i dati disponibili.
|
|
comando = ['select Val0, Val1, Val2 from RawDataView where Date > ''' ...
|
|
datainiMPBEL ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoMPBELd = curs.Data;
|
|
end
|
|
if ChMPBEL(ii,1) >= 4 && MPBEL_NTC(ii,1) == 1 % leggo la temperatura della prima base
|
|
% T
|
|
comando = ['select Val3 from RawDataView where Date = ''' ...
|
|
datainiMPBEL ''' and Time >= ''' tempoiniMPBEL ''' and ToolNameID = '''...
|
|
DTcatena ''' and UnitName = ''' IDcentralina ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoMPBEL_NTC = curs.Data;
|
|
% Step 2: Considero le date successive e scarico tutti i dati disponibili.
|
|
comando = ['select Val3 from RawDataView where Date > ''' ...
|
|
datainiMPBEL ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoMPBELd_NTC = curs.Data;
|
|
else
|
|
DATnodoMPBEL_NTC = 0;
|
|
DATnodoMPBELd_NTC = 0;
|
|
end
|
|
end
|
|
% Concateno i dati relativi a Step 1 e 2 per il nodo ii-esimo.
|
|
|
|
% DATnodo è la matrice che raccoglie i dati dell' ii-esimo nodo,
|
|
% DATnodi è la matrice che concatena i dati relativi a ciascun nodo.
|
|
if NumBasi == 1
|
|
if saltoMPBEL == 0
|
|
DatiMultiPointExtensometer(1:rt,col) = DATnodoMPBEL(:,:);
|
|
if ChMPBEL(ii) >= 2 && MPBEL_NTC(ii) == 1
|
|
DatiNTCMultiPointExtensometer(1:rt,col) = DATnodoMPBEL_NTC(:,:);
|
|
end
|
|
else
|
|
DatiMultiPointExtensometer(1:rd,col) = DATnodoMPBEL(:,:);
|
|
if ChMPBEL(ii) >= 2 && MPBEL_NTC(ii) == 1
|
|
DatiNTCMultiPointExtensometer(1:rd,col) = DATnodoMPBEL_NTC(:,:);
|
|
end
|
|
end
|
|
|
|
elseif NumBasi == 2
|
|
if saltoMPBEL == 0
|
|
DatiMultiPointExtensometer(1:rt,col:col+1) = DATnodoMPBEL(:,:);
|
|
if ChMPBEL(ii) >= 3 && MPBEL_NTC(ii) == 1 || ChMPBEL(ii) == 4 && MPBEL_NTC(ii) == 1
|
|
DatiNTCMultiPointExtensometer(1:rt,col) = DATnodoMPBEL_NTC(:,:);
|
|
end
|
|
else
|
|
DatiMultiPointExtensometer(1:rd,col:col+1) = DATnodoMPBEL(:,:);
|
|
if ChMPBEL(ii) >= 3 && MPBEL_NTC(ii) == 1 || ChMPBEL(ii) == 4 && MPBEL_NTC(ii) == 1
|
|
DatiNTCMultiPointExtensometer(1:rd,col) = DATnodoMPBEL_NTC(:,:);
|
|
end
|
|
end
|
|
|
|
elseif NumBasi == 3
|
|
if saltoMPBEL == 0
|
|
DatiMultiPointExtensometer(1:rt,col:col+2) = DATnodoMPBEL(:,:);
|
|
if ChMPBEL(ii) >= 4 && MPBEL_NTC(ii) == 1
|
|
DatiNTCMultiPointExtensometer(1:rt,col) = DATnodoMPBEL_NTC(:,:);
|
|
end
|
|
else
|
|
DatiMultiPointExtensometer(1:rd,col:col+2) = DATnodoMPBEL(:,:);
|
|
if ChMPBEL(ii) >= 4 && MPBEL_NTC(ii) == 1
|
|
DatiNTCMultiPointExtensometer(1:rd,col) = DATnodoMPBEL_NTC(:,:);
|
|
end
|
|
end
|
|
end
|
|
[rn,~] = size(DATnodoMPBELd); % controllo date
|
|
[rnT,~] = size(DATnodoMPBELd); % controllo date
|
|
if rn < rd % normalmente sono uguali
|
|
for i = rn+1:rd
|
|
DATnodoMPBELd(i,:) = DATnodoMPBELd(rn,:); % se mancano dati, copio gli ultimi
|
|
end
|
|
wardat = ['Node Multipoint Borehole Rod Extensometer ' num2str(ii) ' does NOT work!'];
|
|
fprintf(fileID,fmt,wardat);
|
|
w = 1;
|
|
end
|
|
if rnT < rd % normalmente sono uguali
|
|
for i = rnT+1:rd
|
|
DATnodoMPBELd_NTC(i,:) = DATnodoMPBELd_NTC(rnT,:); % se mancano dati, copio gli ultimi
|
|
end
|
|
wardat = ['NTC of Node Multipoint Borehole Rod Extensometer ' num2str(ii) ' does NOT work!'];
|
|
fprintf(fileID,fmt,wardat);
|
|
w = 1;
|
|
end
|
|
|
|
if Check(1,2) > 1
|
|
if saltoMPBEL == 0
|
|
if NumBasi == 1
|
|
DatiMultiPointExtensometer(rt+1:rt+rd,col) = DATnodoMPBELd(:,:);
|
|
if ChMPBEL(ii) >= 2 && MPBEL_NTC(ii) == 1
|
|
DatiNTCMultiPointExtensometer(rt+1:rt+rd,col) = DATnodoMPBELd_NTC(:,:);
|
|
end
|
|
elseif NumBasi == 2
|
|
DatiMultiPointExtensometer(rt+1:rt+rd,col:col+1) = DATnodoMPBELd(:,:);
|
|
if ChMPBEL(ii) >= 3 && MPBEL_NTC(ii) == 1
|
|
DatiNTCMultiPointExtensometer(rt+1:rt+rd,col) = DATnodoMPBELd_NTC(:,:);
|
|
end
|
|
elseif NumBasi == 3
|
|
DatiMultiPointExtensometer(rt+1:rt+rd,col:col+2) = DATnodoMPBELd(:,:);
|
|
if ChMPBEL(ii) >= 4 && MPBEL_NTC(ii) == 1
|
|
DatiNTCMultiPointExtensometer(rt+1:rt+rd,col) = DATnodoMPBELd_NTC(:,:);
|
|
end
|
|
end
|
|
end
|
|
else
|
|
DatiMultiPointExtensometer = DatiMultiPointExtensometer(1:end,:);
|
|
DatiNTCMultiPointExtensometer = DatiNTCMultiPointExtensometer(1:end,:);
|
|
end
|
|
okdatMPBEL = ['Data of node number ' num2str(ii) ' of ' ...
|
|
num2str(rMPBEL) ' Multipoint Borehole Rod Extensometer nodes downloaded correctly'];
|
|
fprintf(fileID,fmt,okdatMPBEL);
|
|
ii = ii+1;
|
|
if NumBasi == 1
|
|
col = col+1;
|
|
elseif NumBasi == 2
|
|
col = col+2;
|
|
elseif NumBasi == 3
|
|
col = col+3;
|
|
elseif NumBasi == 4
|
|
col = col+4;
|
|
elseif NumBasi == 5
|
|
col = col+5;
|
|
elseif NumBasi == 6
|
|
col = col+6;
|
|
end
|
|
end
|
|
if w == 0
|
|
wardat = 'There are not warning for Multipoint Borehole Rod Extensometer!';
|
|
fprintf(fileID,fmt,wardat);
|
|
end
|
|
|
|
% ---- Dati Multibase --------------
|
|
% Controllo gli eventuali errori ('Err1' o '---') e li rimuovo,
|
|
% rimpiazzandoli con l'ultimo dato disponibile di quel nodo
|
|
[r,c] = size(DatiMultiPointExtensometer);
|
|
ErrMultiPointExtensometer = zeros(r,c);
|
|
Ncorr = 0;
|
|
ESCI = 0;
|
|
NAN = 1;
|
|
if NuovoZeroMPBEL == 1
|
|
if isfile(RawDataFile) == 1
|
|
DatiRaw = csvread(RawDataFile);
|
|
[rDR,cDR] = size(DatiRaw);
|
|
DatiRaw(:,1) = DatiRaw(:,1) + 730000;
|
|
RawDate = find(DatiRaw(:,1)<=datenum(datainiMPBEL));
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDate = [];
|
|
DatiRaw = [];
|
|
end
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDate = [];
|
|
DatiRaw = [];
|
|
end
|
|
for jj=1:c
|
|
% Se il nodo è Dis., devo aumentare di uno la data (il nodo non
|
|
% è ancora stato installato!)
|
|
if strcmp('Dis.',DatiMultiPointExtensometer(1,jj)) == 1
|
|
for dis = 2:r
|
|
if strcmp('Dis.',DatiMultiPointExtensometer(dis,jj)) == 0
|
|
DatiMultiPointExtensometer = DatiMultiPointExtensometer(dis:end,:);
|
|
DatiNTCMultiPointExtensometer = DatiNTCMultiPointExtensometer(dis:end,:);
|
|
DATiniMPBEL = DATiniMPBEL(dis:end,:);
|
|
[r,c] = size(DatiMultiPointExtensometer);
|
|
break
|
|
elseif dis == r
|
|
NAN = 0;
|
|
DIS = 1;
|
|
if datenum(datainiMPBEL)+1 < now
|
|
datainiMPBEL = datestr(datenum(datainiMPBEL)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yesMPBEL = 0;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if DIS ~= 1 && yesMPBEL == 1
|
|
% --- Codice per il primo dato ---
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiMultiPointExtensometer(1,jj)));
|
|
idxT = find(strcmp('---',DatiMultiPointExtensometer(1,jj)));
|
|
idxT2 = find(strcmp('-',DatiMultiPointExtensometer(1,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiMultiPointExtensometer(1,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiMultiPointExtensometer(1,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiMultiPointExtensometer(1,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiMultiPointExtensometer(1,jj)));
|
|
idxN = find(strcmp('null',DatiMultiPointExtensometer(1,jj)));
|
|
idxRX = find(strcmp('No RX',DatiMultiPointExtensometer(1,jj)));
|
|
idxI = find(strcmp('id Error',DatiMultiPointExtensometer(1,jj)));
|
|
idxM = find(strcmp('MUX id Error',DatiMultiPointExtensometer(1,jj)));
|
|
idxC = find(strcmp('CH n. Error',DatiMultiPointExtensometer(1,jj)));
|
|
idxU = find(strcmp('Unknown Error',DatiMultiPointExtensometer(1,jj)));
|
|
idxMC = find(strcmp('MsgCorrup',DatiMultiPointExtensometer(1,jj)));
|
|
idxNS = find(strcmp('NotSupp',DatiMultiPointExtensometer(1,jj)));
|
|
idxU2 = find(strcmp('Unknown',DatiMultiPointExtensometer(1,jj)));
|
|
idxNA = find(strcmp('NotAv',DatiMultiPointExtensometer(1,jj)));
|
|
idxND = find(strcmp('No Data',DatiMultiPointExtensometer(1,jj)));
|
|
idxCE = find(strcmp('CH n. Er',DatiMultiPointExtensometer(1,jj)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxCE);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
idx = union(idx,idxND);
|
|
[ri,~] = size(idx);
|
|
if ri == 1
|
|
wardat = 'Warning on the correction of MultiPoint Rod Extensometer Link nodes: there are not data at the beginning of the array!';
|
|
fprintf(fileID,fmt,wardat);
|
|
if rDR==1 && cDR==1 || NuovoZeroMPBEL == 0 % il file non è mai stato scritto, cerco la data precedente
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
if datenum(datainiMPBEL)+1 < now
|
|
datainiMPBEL = datestr(datenum(datainiMPBEL)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yesMPBEL = 0;
|
|
end
|
|
else
|
|
if isempty(RawDate) == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiMPBEL = datestr(datenum(datainiMPBEL)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
if isnan(DatiRaw(RawDate(end),jj+1)) == 0
|
|
DatiMultiPointExtensometer(1,jj) = cellstr(num2str(DatiRaw(RawDate(end),jj+1)));
|
|
ErrMultiPointExtensometer(1,jj) = 1;
|
|
wardat = 'Data of MultiPoint Rod Extensometer Link nodes corrected using Raw Data of reference Csv file.';
|
|
fprintf(fileID,fmt,wardat);
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
else
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiMPBEL = datestr(datenum(datainiMPBEL)-1,'yyyy-mm-dd');
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if ESCI == 0
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiMultiPointExtensometer(:,jj)));
|
|
idxT = find(strcmp('---',DatiMultiPointExtensometer(:,jj)));
|
|
idxT2 = find(strcmp('-',DatiMultiPointExtensometer(:,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiMultiPointExtensometer(:,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiMultiPointExtensometer(:,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiMultiPointExtensometer(:,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiMultiPointExtensometer(:,jj)));
|
|
idxN = find(strcmp('null',DatiMultiPointExtensometer(:,jj)));
|
|
idxRX = find(strcmp('No RX',DatiMultiPointExtensometer(:,jj)));
|
|
idxI = find(strcmp('id Error',DatiMultiPointExtensometer(:,jj)));
|
|
idxM = find(strcmp('MUX id Error',DatiMultiPointExtensometer(:,jj)));
|
|
idxC = find(strcmp('CH n. Error',DatiMultiPointExtensometer(:,jj)));
|
|
idxU = find(strcmp('Unknown Error',DatiMultiPointExtensometer(:,jj)));
|
|
idxMC = find(strcmp('MsgCorrup',DatiMultiPointExtensometer(:,jj)));
|
|
idxNS = find(strcmp('NotSupp',DatiMultiPointExtensometer(:,jj)));
|
|
idxU2 = find(strcmp('Unknown',DatiMultiPointExtensometer(:,jj)));
|
|
idxNA = find(strcmp('NotAv',DatiMultiPointExtensometer(:,jj)));
|
|
idxND = find(strcmp('No Data',DatiMultiPointExtensometer(:,jj)));
|
|
idxCE = find(strcmp('CH n. Er',DatiMultiPointExtensometer(:,jj)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxCE);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
idx = union(idx,idxND);
|
|
[ri,~] = size(idx);
|
|
for kk=1:ri
|
|
indice=idx(kk);
|
|
if indice == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiMPBEL = datestr(datenum(datainiMPBEL)-1,'yyyy-mm-dd');
|
|
else
|
|
DatiMultiPointExtensometer(indice,jj) = DatiMultiPointExtensometer(indice-1,jj);
|
|
ErrMultiPointExtensometer(indice,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
end
|
|
if ESCI == 1
|
|
break
|
|
end
|
|
|
|
% Elimino gli eventuali Not a Number
|
|
for nnn = 2:r
|
|
check = isnan(cell2mat(DatiMultiPointExtensometer(nnn,jj)));
|
|
if check == 1
|
|
DatiMultiPointExtensometer(nnn,jj) = DatiMultiPointExtensometer(nnn-1,jj);
|
|
ErrMultiPointExtensometer(nnn,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
end
|
|
end
|
|
end
|
|
corrdat = ['' num2str(Ncorr) ' corrections of Multipoint Borehole Rod Extensometer data done!'];
|
|
fprintf(fileID,fmt,corrdat);
|
|
% Concateno informazioni generali e/o letture dai nodi.
|
|
DatiMultiPointExtensometer = [DATiniMPBEL str2double(DatiMultiPointExtensometer)];
|
|
% Elimino eventuali date doppie
|
|
a = 2;
|
|
while a <= r
|
|
if DatiMultiPointExtensometer(a,1) == DatiMultiPointExtensometer(a-1,1)
|
|
DatiMultiPointExtensometer(a,:) = [];
|
|
r = r-1;
|
|
else
|
|
a = a+1;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
if ESCI == 0
|
|
if sum(MPBEL_NTC(:,1))>0
|
|
if DIS ~= 1 && yesMPBEL == 1
|
|
% ---- Dati NTC Multibase --------------
|
|
% Controllo gli eventuali errori ('Err1' o '---') e li rimuovo,
|
|
% rimpiazzandoli con l'ultimo dato disponibile di quel nodo
|
|
[r,c] = size(DatiNTCMultiPointExtensometer);
|
|
ErrNTCMultiPointExtensometer = zeros(r,c);
|
|
Ncorr = 0;
|
|
if NuovoZeroMPBEL == 1
|
|
if isfile(RawDataFile) == 1
|
|
DatiRawNTC = csvread(RawDataFileNTC);
|
|
[rDR,cDR] = size(DatiRawNTC);
|
|
DatiRawNTC(:,1) = DatiRawNTC(:,1) + 730000;
|
|
RawDateNTC = find(DatiRawNTC(:,1)<=datenum(datainiMPBEL));
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDateNTC = [];
|
|
DatiRawNTC = [];
|
|
end
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDateNTC = [];
|
|
DatiRawNTC = [];
|
|
end
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiNTCMultiPointExtensometer(1,jj)));
|
|
idxT = find(strcmp('---',DatiNTCMultiPointExtensometer(1,jj)));
|
|
idxT2 = find(strcmp('-',DatiNTCMultiPointExtensometer(1,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiNTCMultiPointExtensometer(1,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiNTCMultiPointExtensometer(1,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiNTCMultiPointExtensometer(1,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiNTCMultiPointExtensometer(1,jj)));
|
|
idxN = find(strcmp('null',DatiNTCMultiPointExtensometer(1,jj)));
|
|
idxRX = find(strcmp('No RX',DatiNTCMultiPointExtensometer(1,jj)));
|
|
idxI = find(strcmp('id Error',DatiNTCMultiPointExtensometer(1,jj)));
|
|
idxM = find(strcmp('MUX id Error',DatiNTCMultiPointExtensometer(1,jj)));
|
|
idxC = find(strcmp('CH n. Error',DatiNTCMultiPointExtensometer(1,jj)));
|
|
idxU = find(strcmp('Unknown Error',DatiNTCMultiPointExtensometer(1,jj)));
|
|
idxMC = find(strcmp('MsgCorrup',DatiNTCMultiPointExtensometer(1,jj)));
|
|
idxNS = find(strcmp('NotSupp',DatiNTCMultiPointExtensometer(1,jj)));
|
|
idxU2 = find(strcmp('Unknown',DatiNTCMultiPointExtensometer(1,jj)));
|
|
idxNA = find(strcmp('NotAv',DatiNTCMultiPointExtensometer(1,jj)));
|
|
idxND = find(strcmp('No Data',DatiNTCMultiPointExtensometer(1,jj)));
|
|
idxCE = find(strcmp('CH n. Er',DatiNTCMultiPointExtensometer(1,jj)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxCE);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
idx = union(idx,idxND);
|
|
[ri,~] = size(idx);
|
|
if ri == 1
|
|
wardat = 'Warning on the correction of NTC of MultiPoint Rod Extensometer Link nodes: there are not data at the beginning of the array!';
|
|
fprintf(fileID,fmt,wardat);
|
|
if rDR==1 && cDR==1 || NuovoZeroMPBEL == 0 % il file non è mai stato scritto, cerco la data precedente
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
if datenum(datainiMPBEL)+1 < now
|
|
datainiMPBEL = datestr(datenum(datainiMPBEL)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yesMPBEL = 0;
|
|
end
|
|
else
|
|
if isempty(RawDateNTC) == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiMPBEL = datestr(datenum(datainiMPBEL)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
DatiNTCMultiPointExtensometer(1,jj) = cellstr(num2str(DatiRawNTC(RawDateNTC(end),jj+1)));
|
|
if ErrMultiPointExtensometer(indice,jj) == 0
|
|
ErrMultiPointExtensometer(indice,jj) = 0.5;
|
|
else
|
|
ErrMultiPointExtensometer(indice,jj) = 1;
|
|
end
|
|
wardat = 'Data of NTC of Multi Point Rod Extensometer Link nodes corrected using Raw Data of reference Csv file.';
|
|
fprintf(fileID,fmt,wardat);
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiNTCMultiPointExtensometer(:,jj)));
|
|
idxT3 = find(strcmp('---',DatiNTCMultiPointExtensometer(:,jj)));
|
|
idxT = find(strcmp('-',DatiNTCMultiPointExtensometer(:,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiNTCMultiPointExtensometer(:,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiNTCMultiPointExtensometer(:,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiNTCMultiPointExtensometer(:,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiNTCMultiPointExtensometer(:,jj)));
|
|
idxN = find(strcmp('null',DatiNTCMultiPointExtensometer(:,jj)));
|
|
idxRX = find(strcmp('No RX',DatiNTCMultiPointExtensometer(:,jj)));
|
|
idxI = find(strcmp('id Error',DatiNTCMultiPointExtensometer(:,jj)));
|
|
idxM = find(strcmp('MUX id Error',DatiNTCMultiPointExtensometer(:,jj)));
|
|
idxC = find(strcmp('CH n. Error',DatiNTCMultiPointExtensometer(:,jj)));
|
|
idxU = find(strcmp('Unknown Error',DatiNTCMultiPointExtensometer(:,jj)));
|
|
idxMC = find(strcmp('MsgCorrup',DatiNTCMultiPointExtensometer(:,jj)));
|
|
idxNS = find(strcmp('NotSupp',DatiNTCMultiPointExtensometer(:,jj)));
|
|
idxU2 = find(strcmp('Unknown',DatiNTCMultiPointExtensometer(:,jj)));
|
|
idxNA = find(strcmp('NotAv',DatiNTCMultiPointExtensometer(:,jj)));
|
|
idxND = find(strcmp('No Data',DatiNTCMultiPointExtensometer(:,jj)));
|
|
idxCE = find(strcmp('CH n. Er',DatiNTCMultiPointExtensometer(:,jj)));
|
|
idx = union(idxE,idxT3);
|
|
idx = union(idx,idxND);
|
|
idx = union(idx,idxCE);
|
|
idx = union(idx,idxT);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
[ri,~] = size(idx);
|
|
for kk=1:ri
|
|
indice=idx(kk);
|
|
if indice == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiMPBEL = datestr(datenum(datainiMPBEL)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
DatiNTCMultiPointExtensometer(indice,jj) = DatiNTCMultiPointExtensometer(indice-1,jj);
|
|
ErrNTCMultiPointExtensometer(indice,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
end
|
|
if ESCI == 1
|
|
break
|
|
end
|
|
% Elimino gli eventuali Not a Number
|
|
for nnn = 2:r
|
|
check = isnan(cell2mat(DatiNTCMultiPointExtensometer(nnn,jj)));
|
|
if check == 1
|
|
DatiNTCMultiPointExtensometer(nnn,jj) = DatiNTCMultiPointExtensometer(nnn-1,jj);
|
|
if ErrMultiPointExtensometer(indice,jj) == 0
|
|
ErrMultiPointExtensometer(indice,jj) = 0.5;
|
|
else
|
|
ErrMultiPointExtensometer(indice,jj) = 1;
|
|
end
|
|
Ncorr = Ncorr+ri;
|
|
end
|
|
end
|
|
end
|
|
corrdat = ['' num2str(Ncorr) ' corrections of NTC of Multipoint Borehole Rod Extensometer data done!'];
|
|
fprintf(fileID,fmt,corrdat);
|
|
% Concateno informazioni generali e/o letture dai nodi.
|
|
DatiNTCMultiPointExtensometer = [DATiniMPBEL str2double(DatiNTCMultiPointExtensometer)];
|
|
% Elimino eventuali date doppie
|
|
a = 2;
|
|
while a <= r
|
|
if DatiNTCMultiPointExtensometer(a,1) == DatiNTCMultiPointExtensometer(a-1,1)
|
|
DatiNTCMultiPointExtensometer(a,:) = [];
|
|
r = r-1;
|
|
else
|
|
a = a+1;
|
|
end
|
|
end
|
|
end
|
|
else
|
|
ErrNTCMultiPointExtensometer = 0;
|
|
end
|
|
end
|
|
end
|
|
if NuovoZeroMPBEL == 1 && yesMPBEL == 1
|
|
[rDR,cDR] = size(DatiRaw);
|
|
if rDR~=1 && cDR~=1 && isempty(DatiRaw) == 0
|
|
RawDate1 = find(DatiRaw(:,1)<=DatiMultiPointExtensometer(1,1));
|
|
if isempty(RawDate1) == 1
|
|
RawDate2 = 1;
|
|
elseif RawDate1(end) == rDR
|
|
RawDate2 = find(DatiMultiPointExtensometer(:,1)>DatiRaw(end,1));
|
|
else
|
|
RawDate2 = find(DatiMultiPointExtensometer(:,1)>DatiRaw(RawDate1(end)+1,1));
|
|
end
|
|
else
|
|
RawDate1 = [];
|
|
RawDate2 = 1;
|
|
end
|
|
if isempty(RawDate1) == 0 && isempty(RawDate2) == 0
|
|
Dati = [DatiRaw(1:RawDate1(end),:);DatiMultiPointExtensometer(RawDate2(1):end,:)];
|
|
elseif isempty(RawDate1) == 1 && isempty(RawDate2) == 0
|
|
Dati = DatiMultiPointExtensometer;
|
|
else
|
|
Dati = DatiRaw;
|
|
end
|
|
% Elimino appoggio più vecchio di un mese
|
|
RawDate3 = find(Dati(:,1)<now-30);
|
|
if isempty(RawDate3) == 0
|
|
[rDati,~] = size(Dati);
|
|
if RawDate3(end) == rDati
|
|
else
|
|
Dati = Dati(RawDate3(end)+1:end,:);
|
|
end
|
|
end
|
|
if isfile(RawDataFile) == 1
|
|
delete(RawDataFile);
|
|
end
|
|
|
|
if sum(MPBEL_NTC(:,1))>0
|
|
[rDR,cDR] = size(DatiRawNTC);
|
|
if rDR~=1 && cDR~=1 && isempty(DatiRawNTC) == 0
|
|
RawDate1 = find(DatiRaw(:,1)<=DatiNTCMultiPointExtensometer(1,1));
|
|
if isempty(RawDate1) == 1
|
|
RawDate2 = 1;
|
|
elseif RawDate1(end) == rDR
|
|
RawDate2 = find(DatiNTCMultiPointExtensometer(:,1)>DatiRawNTC(end,1));
|
|
else
|
|
RawDate2 = find(DatiNTCMultiPointExtensometer(:,1)>DatiRawNTC(RawDate1(end)+1,1));
|
|
end
|
|
else
|
|
RawDate1 = [];
|
|
RawDate2 = 1;
|
|
end
|
|
if isempty(RawDate1) == 0 && isempty(RawDate2) == 0
|
|
DatiNTC = [DatiRawNTC(1:RawDate1(end),:);DatiNTCMultiPointExtensometer(RawDate2(1):end,:)];
|
|
elseif isempty(RawDate1) == 1 && isempty(RawDate2) == 0
|
|
DatiNTC = DatiNTCMultiPointExtensometer;
|
|
else
|
|
DatiNTC = DatiRawNTC;
|
|
end
|
|
% Elimino appoggio più vecchio di un mese
|
|
RawDate3 = find(DatiNTC(:,1)<now-30);
|
|
if isempty(RawDate3) == 0
|
|
[rDati,~] = size(DatiNTC);
|
|
if RawDate3(end) == rDati
|
|
else
|
|
DatiNTC = DatiNTC(RawDate3(end)+1:end,:);
|
|
end
|
|
end
|
|
if isfile(RawDataFileNTC) == 1
|
|
delete(RawDataFileNTC);
|
|
end
|
|
else
|
|
ErrNTCMultiPointExtensometer = 0;
|
|
end
|
|
else
|
|
Dati = DatiMultiPointExtensometer;
|
|
if sum(MPBEL_NTC(:,1))>0
|
|
DatiNTC = DatiNTCMultiPointExtensometer;
|
|
end
|
|
end
|
|
Dati(:,1) = Dati(:,1) - 730000;
|
|
csvwrite(RawDataFile,Dati);
|
|
if sum(MPBEL_NTC(:,1))>0
|
|
DatiNTC(:,1) = DatiNTC(:,1) - 730000;
|
|
csvwrite(RawDataFileNTC,DatiNTC);
|
|
end
|
|
end
|
|
|
|
%% Analog Link
|
|
if yesAL == 0 % Non ci sono Analog Link
|
|
DatiAnalogLink = [];
|
|
ErrAnalogLink = [];
|
|
ChAL = [];
|
|
AL_NTC = [];
|
|
wardat = 'lettura function: there are not Analog Link';
|
|
fprintf(fileID,fmt,wardat);
|
|
else
|
|
RawDataFile = ['' IDcentralina '-' DTcatena '-AL-RawData.csv']; % Specifico per An Link
|
|
ChAL = cell2mat(NodoAnalogLink(:,4));
|
|
AL_NTC = cell2mat(NodoAnalogLink(:,5));
|
|
NAN = 0;
|
|
DIS = 0;
|
|
while NAN == 0
|
|
if datenum(datainiAL) == datenum(Data(1,1))
|
|
tempoiniAL = char(Data(1,2));
|
|
end
|
|
NodeType = 'Analog Link';
|
|
NodeNumAL = num2str(cell2mat(NodoAnalogLink(1,2))); % scarico i dati del primo nodo
|
|
% Scarico dei dati relativi alla centralina con informazioni di Data e ora, livello batteria e temperatura
|
|
% Step 1 (vedi commento più avanti)
|
|
comando = ['select Date, Time from RawDataView where Date = ''' ...
|
|
datainiAL ''' and Time >= ''' tempoiniAL ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ''' NodeNumAL ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATiniAL = curs.Data;
|
|
Ntempo = DATiniAL;
|
|
[r,c] = size(DATiniAL);
|
|
saltoAL = 0;
|
|
if r==1 && c==1
|
|
textdatAL = 'Warning: error reading Analog Link (control unit data)!';
|
|
fprintf(fileID,fmt,textdatAL);
|
|
saltoAL = 1;
|
|
end
|
|
% Step 2 (vedi commento più avanti)
|
|
comando = ['select Date, Time from RawDataView where Date > ''' ...
|
|
datainiAL ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ''' NodeNumAL ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DAT2AL = curs.Data;
|
|
Ndate = DAT2AL;
|
|
if saltoAL == 1
|
|
DATiniAL = DAT2AL;
|
|
end
|
|
Check = size(DAT2AL);
|
|
if Check(1,2) > 1 % ho superato il primo giorno
|
|
if saltoAL == 0
|
|
% Concateno le informazioni relative a Step 1 e 2 (se necessario...)
|
|
DATiniAL = [DATiniAL; DAT2AL];
|
|
end
|
|
end
|
|
% Modifico il formato di data e ora in DATini.
|
|
[rD,cD] = size(DATiniAL);
|
|
if rD ~=1 && cD ~=1
|
|
T = [cell2mat(DATiniAL(:,1)) repmat(' ', [rD,1]) cell2mat(DATiniAL(:,2))];
|
|
T = datenum(T);
|
|
% Converto da Cell Array a Matrice.
|
|
DATiniAL = T;
|
|
else
|
|
DATiniAL = [];
|
|
end
|
|
|
|
% Scarico dati relativi ai singoli nodi
|
|
[rd,~] = size(Ndate); % numero di dati successivi al primo giorno di calcolo
|
|
[rt,~] = size(Ntempo); % numero di dati del primo giorno di calcolo
|
|
% creo la matrice per i dati Analog Link
|
|
if saltoAL == 0
|
|
if Check(1,2) > 1
|
|
DatiAnalogLink = cell(rd+rt,rAL*ChAL);
|
|
else
|
|
DatiAnalogLink = cell(rt,rAL*ChAL);
|
|
end
|
|
else
|
|
DatiAnalogLink = cell(rd,rAL*ChAL);
|
|
end
|
|
NAnalogLink = cell2mat(NodoAnalogLink(:,2));
|
|
col = ChAL;
|
|
ii = 1;
|
|
w = 0;
|
|
while ii <= rAL
|
|
% Step 1: Acquisisco i dati registrati successivamente all'ultimo scarico,
|
|
% ma limitandomi a quelli registrati nel corso di quella singola giornata;
|
|
nN = NAnalogLink(ii,1);
|
|
nNodo = num2str(nN);
|
|
if ChAL == 1
|
|
comando = ['select Val0 from RawDataView where Date = ''' ...
|
|
datainiAL ''' and Time >= ''' tempoiniAL ''' and ToolNameID = '''...
|
|
DTcatena ''' and UnitName = ''' IDcentralina ''' and NodeType = '''...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoAL = curs.Data;
|
|
% Step 2: Considero le date successive e scarico tutti i dati disponibili.
|
|
comando = ['select Val0 from RawDataView where Date > ''' ...
|
|
datainiAL ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoALd = curs.Data;
|
|
elseif AnalogCh == 2
|
|
comando = ['select Val0, Val1 from RawDataView where Date = ''' ...
|
|
datainiAL ''' and Time >= ''' tempoiniAL ''' and UnitName = ''' IDcentralina...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoAL = curs.Data;
|
|
% Step 2: Considero le date successive e scarico tutti i dati disponibili.
|
|
comando = ['select Val0, Val1 from RawDataView where Date > ''' ...
|
|
datainiAL ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoALd = curs.Data;
|
|
elseif AnalogCh == 3
|
|
comando = ['select Val0, Val1, Val2 from RawDataView where Date = ''' ...
|
|
datainiAL ''' and Time >= ''' tempoiniAL ''' and UnitName = ''' IDcentralina...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoAL = curs.Data;
|
|
% Step 2: Considero le date successive e scarico tutti i dati disponibili.
|
|
comando = ['select Val0, Val1, Val2 from RawDataView where Date > ''' ...
|
|
datainiAL ''' and ToolNameID = ''' DTcatena ''' and UnitName = ''' IDcentralina...
|
|
''' and NodeType = ''' NodeType ''' and NodeNum = ' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoALd = curs.Data;
|
|
elseif AnalogCh == 4
|
|
comando = ['select Val0, Val1, Val2, Val3 from RawDataView where Date = ''' ...
|
|
datainiAL ''' and Time >= ''' tempoiniAL ''' and UnitName = ''' IDcentralina...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoAL = curs.Data;
|
|
% Step 2: Considero le date successive e scarico tutti i dati disponibili.
|
|
comando = ['select Val0, Val1, Val2, Val3 from RawDataView where Date > ''' ...
|
|
datainiAL ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoALd = curs.Data;
|
|
elseif AnalogCh == 5
|
|
comando = ['select Val0, Val1, Val2, Val3, Val4 from RawDataView where Date = ''' ...
|
|
datainiAL ''' and Time >= ''' tempoiniAL ''' and UnitName = ''' IDcentralina...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoAL = curs.Data;
|
|
% Step 2: Considero le date successive e scarico tutti i dati disponibili.
|
|
comando = ['select Val0, Val1, Val2, Val3, Val4 from RawDataView where Date > ''' ...
|
|
datainiAL ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoALd = curs.Data;
|
|
elseif AnalogCh == 6
|
|
comando = ['select Val0, Val1, Val2, Val3, Val4, Val5 from RawDataView where Date = ''' ...
|
|
datainiAL ''' and Time >= ''' tempoiniAL ''' and UnitName = ''' IDcentralina...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoAL = curs.Data;
|
|
% Step 2: Considero le date successive e scarico tutti i dati disponibili.
|
|
comando = ['select Val0, Val1, Val2, Val3, Val4, Val5 from RawDataView where Date > ''' ...
|
|
datainiAL ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoALd = curs.Data;
|
|
end
|
|
% Concateno i dati relativi a Step 1 e 2 per il nodo ii-esimo.
|
|
|
|
% DATnodo è la matrice che raccoglie i dati dell' ii-esimo nodo,
|
|
% DATnodi è la matrice che concatena i dati relativi a ciascun nodo.
|
|
if saltoAL == 0
|
|
if AnalogCh == 1
|
|
DatiAnalogLink(1:rt,col) = DATnodoAL(:,:);
|
|
elseif AnalogCh == 2
|
|
ini_col = col-1;
|
|
DatiAnalogLink(1:rt,ini_col:col) = DATnodoAL(:,:);
|
|
elseif AnalogCh == 3
|
|
ini_col = col-2;
|
|
DatiAnalogLink(1:rt,ini_col:col) = DATnodoAL(:,:);
|
|
elseif AnalogCh == 4
|
|
ini_col = col-3;
|
|
DatiAnalogLink(1:rt,ini_col:col) = DATnodoAL(:,:);
|
|
elseif AnalogCh == 5
|
|
ini_col = col-4;
|
|
DatiAnalogLink(1:rt,ini_col:col) = DATnodoAL(:,:);
|
|
elseif AnalogCh == 6
|
|
ini_col = col-5;
|
|
DatiAnalogLink(1:rt,ini_col:col) = DATnodoAL(:,:);
|
|
end
|
|
else
|
|
if AnalogCh == 1
|
|
DatiAnalogLink(1:rd,col) = DATnodoAL(:,:);
|
|
elseif AnalogCh == 2
|
|
ini_col = col-1;
|
|
DatiAnalogLink(1:rd,ini_col:col) = DATnodoAL(:,:);
|
|
elseif AnalogCh == 3
|
|
ini_col = col-2;
|
|
DatiAnalogLink(1:rd,ini_col:col) = DATnodoAL(:,:);
|
|
elseif AnalogCh == 4
|
|
ini_col = col-3;
|
|
DatiAnalogLink(1:rd,ini_col:col) = DATnodoAL(:,:);
|
|
elseif AnalogCh == 5
|
|
ini_col = col-4;
|
|
DatiAnalogLink(1:rd,ini_col:col) = DATnodoAL(:,:);
|
|
elseif AnalogCh == 6
|
|
ini_col = col-5;
|
|
DatiAnalogLink(1:rd,ini_col:col) = DATnodoAL(:,:);
|
|
end
|
|
end
|
|
[rn,~] = size(DATnodoALd); % controllo date
|
|
if rn < rd % normalmente sono uguali
|
|
for i = rn+1:rd
|
|
DATnodoALd(i,:) = DATnodoALd(rn,:); % se mancano dati, copio gli ultimi
|
|
end
|
|
wardat = ['Node Analog Link ' num2str(ii) ' does NOT work!'];
|
|
fprintf(fileID,fmt,wardat);
|
|
w = 1;
|
|
end
|
|
|
|
if Check(1,2) > 1
|
|
if saltoAL == 0
|
|
if ChAL == 1
|
|
DatiAnalogLink(rt+1:rt+rd,col) = DATnodoALd(:,:);
|
|
else
|
|
DatiAnalogLink(rt+1:rt+rd,ini_col:col) = DATnodoALd(:,:);
|
|
end
|
|
end
|
|
else
|
|
DatiAnalogLink = DatiAnalogLink(1:end,:);
|
|
end
|
|
okdatAL = ['Data of node number ' num2str(ii) ' of ' ...
|
|
num2str(rAL) ' Analog Link nodes downloaded correctly'];
|
|
fprintf(fileID,fmt,okdatAL);
|
|
ii = ii+1;
|
|
if ChAL == 1
|
|
col = col+1;
|
|
elseif ChAL == 2
|
|
col = col+2;
|
|
elseif ChAL == 3
|
|
col = col+3;
|
|
elseif ChAL == 4
|
|
col = col+4;
|
|
elseif ChAL == 5
|
|
col = col+5;
|
|
elseif ChAL == 6
|
|
col = col+6;
|
|
end
|
|
end
|
|
if w == 0
|
|
wardat = 'There are not warning for Analog Link!';
|
|
fprintf(fileID,fmt,wardat);
|
|
end
|
|
|
|
% Controllo gli eventuali errori ('Err1' o '---') e li rimuovo,
|
|
% rimpiazzandoli con l'ultimo dato disponibile di quel nodo
|
|
[r,c] = size(DatiAnalogLink);
|
|
ErrAnalogLink = zeros(r,c);
|
|
Ncorr = 0;
|
|
ESCI = 0;
|
|
NAN = 1;
|
|
if NuovoZeroAL == 1
|
|
if isfile(RawDataFile) == 1
|
|
DatiRaw = csvread(RawDataFile);
|
|
[rDR,cDR] = size(DatiRaw);
|
|
DatiRaw(:,1) = DatiRaw(:,1) + 730000;
|
|
RawDate = find(DatiRaw(:,1)<=datenum(datainiAL));
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDate = [];
|
|
DatiRaw = [];
|
|
end
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDate = [];
|
|
DatiRaw = [];
|
|
end
|
|
for jj=1:c
|
|
% Se il nodo è Dis., devo aumentare di uno la data (il nodo non
|
|
% è ancora stato installato!)
|
|
if strcmp('Dis.',DatiAnalogLink(1,jj)) == 1
|
|
for dis = 2:r
|
|
if strcmp('Dis.',DatiAnalogLink(dis,jj)) == 0
|
|
DatiAnalogLink = DatiAnalogLink(dis:end,:);
|
|
DATiniAL = DATiniAL(dis:end,:);
|
|
[r,c] = size(DatiAnalogLink);
|
|
break
|
|
elseif dis == r
|
|
NAN = 0;
|
|
DIS = 1;
|
|
if datenum(datainiAL)+1 < now
|
|
datainiAL = datestr(datenum(datainiAL)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yesAL = 0;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if DIS ~= 1 && yesAL == 1
|
|
% --- Codice per il primo dato ---
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiAnalogLink(1,jj)));
|
|
idxT = find(strcmp('---',DatiAnalogLink(1,jj)));
|
|
idxT2 = find(strcmp('-',DatiAnalogLink(1,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiAnalogLink(1,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiAnalogLink(1,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiAnalogLink(1,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiAnalogLink(1,jj)));
|
|
idxN = find(strcmp('null',DatiAnalogLink(1,jj)));
|
|
idxRX = find(strcmp('No RX',DatiAnalogLink(1,jj)));
|
|
idxI = find(strcmp('id Error',DatiAnalogLink(1,jj)));
|
|
idxM = find(strcmp('MUX id Error',DatiAnalogLink(1,jj)));
|
|
idxC = find(strcmp('CH n. Error',DatiAnalogLink(1,jj)));
|
|
idxU = find(strcmp('Unknown Error',DatiAnalogLink(1,jj)));
|
|
idxDis = find(strcmp('Dis.',DatiAnalogLink(1,jj)));
|
|
idxMC = find(strcmp('MsgCorrup',DatiAnalogLink(1,jj)));
|
|
idxNS = find(strcmp('NotSupp',DatiAnalogLink(1,jj)));
|
|
idxU2 = find(strcmp('Unknown',DatiAnalogLink(1,jj)));
|
|
idxNA = find(strcmp('NotAv',DatiAnalogLink(1,jj)));
|
|
idxND = find(strcmp('No Data',DatiAnalogLink(1,jj)));
|
|
idxCE = find(strcmp('CH n. Er',DatiAnalogLink(1,jj)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxND);
|
|
idx = union(idx,idxCE);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxDis);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
[ri,~] = size(idx);
|
|
if ri == 1
|
|
wardat = 'Warning on the correction of Analog Link nodes: there are not data at the beginning of the array!';
|
|
fprintf(fileID,fmt,wardat);
|
|
if rDR==1 && cDR==1 || NuovoZeroAL == 0 % il file non è mai stato scritto, cerco la data precedente
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
if datenum(datainiAL)+1 < now
|
|
datainiAL = datestr(datenum(datainiAL)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yesAL = 0;
|
|
end
|
|
else
|
|
if isempty(RawDate) == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiAL = datestr(datenum(datainiAL)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
if isnan(DatiRaw(RawDate(end),jj+1)) == 0
|
|
DatiAnalogLink(1,jj) = cellstr(num2str(DatiRaw(RawDate(end),jj+1)));
|
|
ErrAnalogLink(1,jj) = 1;
|
|
wardat = 'Data of Analog Link nodes corrected using Raw Data of reference Csv file.';
|
|
fprintf(fileID,fmt,wardat);
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
else
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiAL = datestr(datenum(datainiAL)-1,'yyyy-mm-dd');
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if ESCI == 0
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiAnalogLink(:,jj)));
|
|
idxT = find(strcmp('---',DatiAnalogLink(:,jj)));
|
|
idxT2 = find(strcmp('-',DatiAnalogLink(:,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiAnalogLink(:,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiAnalogLink(:,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiAnalogLink(:,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiAnalogLink(:,jj)));
|
|
idxN = find(strcmp('null',DatiAnalogLink(:,jj)));
|
|
idxRX = find(strcmp('No RX',DatiAnalogLink(:,jj)));
|
|
idxI = find(strcmp('id Error',DatiAnalogLink(:,jj)));
|
|
idxM = find(strcmp('MUX id Error',DatiAnalogLink(:,jj)));
|
|
idxC = find(strcmp('CH n. Error',DatiAnalogLink(:,jj)));
|
|
idxU = find(strcmp('Unknown Error',DatiAnalogLink(:,jj)));
|
|
idxDis = find(strcmp('Dis.',DatiAnalogLink(:,jj)));
|
|
idxMC = find(strcmp('MsgCorrup',DatiAnalogLink(:,jj)));
|
|
idxNS = find(strcmp('NotSupp',DatiAnalogLink(:,jj)));
|
|
idxU2 = find(strcmp('Unknown',DatiAnalogLink(:,jj)));
|
|
idxNA = find(strcmp('NotAv',DatiAnalogLink(:,jj)));
|
|
idxND = find(strcmp('No Data',DatiAnalogLink(:,jj)));
|
|
idxCE = find(strcmp('CH n. Er',DatiAnalogLink(:,jj)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxND);
|
|
idx = union(idx,idxCE);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxDis);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
[ri,~] = size(idx);
|
|
for kk=1:ri
|
|
indice=idx(kk);
|
|
if indice == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiAL = datestr(datenum(datainiAL)-1,'yyyy-mm-dd');
|
|
else
|
|
DatiAnalogLink(indice,jj) = DatiAnalogLink(indice-1,jj);
|
|
ErrAnalogLink(indice,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
end
|
|
if ESCI == 1
|
|
break
|
|
end
|
|
% Elimino gli eventuali Not a Number
|
|
for nnn = 2:r
|
|
check = isnan(cell2mat(DatiAnalogLink(nnn,jj)));
|
|
if check == 1
|
|
DatiAnalogLink(nnn,jj) = DatiAnalogLink(nnn-1,jj);
|
|
ErrAnalogLink(nnn,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
end
|
|
end
|
|
end
|
|
corrdat = ['' num2str(Ncorr) ' corrections of Analog Link data done!'];
|
|
fprintf(fileID,fmt,corrdat);
|
|
% Concateno informazioni generali e/o letture dai nodi.
|
|
DatiAnalogLink = [DATiniAL str2double(DatiAnalogLink)];
|
|
% Elimino eventuali date doppie
|
|
a = 2;
|
|
while a <= r
|
|
if DatiAnalogLink(a,1) == DatiAnalogLink(a-1,1)
|
|
DatiAnalogLink(a,:) = [];
|
|
r = r-1;
|
|
else
|
|
a = a+1;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if NuovoZeroAL == 1 && yesAL == 1
|
|
[rDR,cDR] = size(DatiRaw);
|
|
if rDR~=1 && cDR~=1 && isempty(DatiRaw) == 0
|
|
RawDate1 = find(DatiRaw(:,1)<=DatiAnalogLink(1,1));
|
|
if isempty(RawDate1) == 1
|
|
RawDate2 = 1;
|
|
elseif RawDate1(end) == rDR
|
|
RawDate2 = find(DatiAnalogLink(:,1)>DatiRaw(end,1));
|
|
else
|
|
RawDate2 = find(DatiAnalogLink(:,1)>DatiRaw(RawDate1(end)+1,1));
|
|
end
|
|
else
|
|
RawDate1 = [];
|
|
RawDate2 = 1;
|
|
end
|
|
if isempty(RawDate1) == 0 && isempty(RawDate2) == 0
|
|
Dati = [DatiRaw(1:RawDate1(end),:);DatiAnalogLink(RawDate2(1):end,:)];
|
|
elseif isempty(RawDate1) == 1 && isempty(RawDate2) == 0
|
|
Dati = DatiAnalogLink;
|
|
else
|
|
Dati = DatiRaw;
|
|
end
|
|
% Elimino appoggio più vecchio di un mese
|
|
RawDate3 = find(Dati(:,1)<now-30);
|
|
if isempty(RawDate3) == 0
|
|
[rDati,~] = size(Dati);
|
|
if RawDate3(end) == rDati
|
|
else
|
|
Dati = Dati(RawDate3(end)+1:end,:);
|
|
end
|
|
end
|
|
if isfile(RawDataFile) == 1
|
|
delete(RawDataFile);
|
|
end
|
|
else
|
|
Dati = DatiAnalogLink;
|
|
end
|
|
Dati(:,1) = Dati(:,1) - 730000;
|
|
csvwrite(RawDataFile,Dati);
|
|
end
|
|
|
|
%% Crack Link
|
|
if yesCrL == 0 % Non ci sono Crack Link
|
|
DatiCrackLink = [];
|
|
DatiNTCCrackLink = [];
|
|
ErrCrackLink = [];
|
|
ChCrL = [];
|
|
CrL_NTC = [];
|
|
wardat = 'lettura function: there are not Crack Link';
|
|
fprintf(fileID,fmt,wardat);
|
|
else
|
|
RawDataFile = ['' IDcentralina '-' DTcatena '-Crack-RawData.csv']; % Specifico per Crack Link
|
|
RawDataFileNTC = ['' IDcentralina '-' DTcatena '-NTCCrack-RawData.csv'];
|
|
ChCrL = cell2mat(NodoCrackLink(:,4));
|
|
CrL_NTC = cell2mat(NodoCrackLink(:,5));
|
|
NAN = 0;
|
|
DIS = 0;
|
|
while NAN == 0
|
|
if datenum(datainiCrL) == datenum(Data(1,1))
|
|
tempoiniCrL = char(Data(1,2));
|
|
end
|
|
NodeType = 'Crack Link';
|
|
NodeNumCrL = num2str(cell2mat(NodoCrackLink(1,2))); % scarico i dati del primo nodo
|
|
% Scarico dei dati relativi alla centralina con informazioni di Data e ora, livello batteria e temperatura
|
|
% Step 1 (vedi commento più avanti)
|
|
comando = ['select Date, Time from RawDataView where Date = ''' ...
|
|
datainiCrL ''' and Time >= ''' tempoiniCrL ''' and UnitName = ''' IDcentralina...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum = ''' NodeNumCrL ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATiniCrL = curs.Data;
|
|
Ntempo = DATiniCrL;
|
|
[r,c] = size(DATiniCrL);
|
|
saltoCrL = 0;
|
|
if r==1 && c==1
|
|
textdatCrL = 'Warning: error reading Crack Link (control unit data)!';
|
|
fprintf(fileID,fmt,textdatCrL);
|
|
saltoCrL = 1;
|
|
end
|
|
% Step 2 (vedi commento più avanti)
|
|
comando = ['select Date, Time from RawDataView where Date > ''' ...
|
|
datainiCrL ''' and UnitName = ''' IDcentralina ...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' NodeType...
|
|
''' and NodeNum = ''' NodeNumCrL ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DAT2CrL = curs.Data;
|
|
Ndate = DAT2CrL;
|
|
if saltoCrL == 1
|
|
DATiniCrL = DAT2CrL;
|
|
end
|
|
Check = size(DAT2CrL);
|
|
if Check(1,2) > 1 % ho superato il primo giorno
|
|
if saltoCrL == 0
|
|
% Concateno le informazioni relative a Step 1 e 2 (se necessario...)
|
|
DATiniCrL = [DATiniCrL; DAT2CrL];
|
|
end
|
|
end
|
|
% Modifico il formato di data e ora in DATini.
|
|
[rD,cD] = size(DATiniCrL);
|
|
if rD ~=1 && cD ~=1
|
|
T = [cell2mat(DATiniCrL(:,1)) repmat(' ', [rD,1]) cell2mat(DATiniCrL(:,2))];
|
|
T = datenum(T);
|
|
% Converto da Cell Array a Matrice.
|
|
DATiniCrL = T;
|
|
else
|
|
DATiniCrL = [];
|
|
end
|
|
|
|
% Scarico dati relativi ai singoli nodi
|
|
[rd,~] = size(Ndate); % numero di dati successivi al primo giorno di calcolo
|
|
[rt,~] = size(Ntempo); % numero di dati del primo giorno di calcolo
|
|
% creo la matrice per i dati Extensometer Link
|
|
if saltoCrL == 0
|
|
if Check(1,2) > 1
|
|
DatiCrackLink = cell(rd+rt,rCrL);
|
|
DatiNTCCrackLink = cell(rd+rt,rCrL);
|
|
else
|
|
DatiCrackLink = cell(rt,rCrL);
|
|
DatiNTCCrackLink = cell(rt,rCrL);
|
|
end
|
|
else
|
|
DatiCrackLink = cell(rd,rCrL);
|
|
DatiNTCCrackLink = cell(rd,rCrL);
|
|
end
|
|
NCrackLink = cell2mat(NodoCrackLink(:,2));
|
|
col = 1;
|
|
ii = 1;
|
|
w = 0;
|
|
while ii <= rCrL
|
|
% Step 1: Acquisisco i dati registrati successivamente all'ultimo scarico,
|
|
% ma limitandomi a quelli registrati nel corso di quella singola giornata;
|
|
nN = NCrackLink(ii,1);
|
|
nNodo = num2str(nN);
|
|
% Dato
|
|
comando = ['select Val0 from RawDataView where Date = ''' ...
|
|
datainiCrL ''' and Time >= ''' tempoiniCrL ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and UnitName = ''' IDcentralina ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoCrL = curs.Data;
|
|
% Dato
|
|
comando = ['select Val0 from RawDataView where Date > ''' ...
|
|
datainiCrL ''' and UnitName = ''' IDcentralina ...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = '''...
|
|
NodeType ''' and NodeNum = ' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoCrLd = curs.Data;
|
|
if ChCrL(ii,1) == 1
|
|
% T
|
|
DATnodoCrL_NTC = cell(1,1);
|
|
DATnodoCrLd_NTC = cell(1,1);
|
|
elseif ChCrL(ii,1) == 2
|
|
if CrL_NTC(ii,1)==1
|
|
comando = ['select Val1 from RawDataView where Date = ''' ...
|
|
datainiCrL ''' and Time >= ''' tempoiniCrL ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and UnitName = ''' IDcentralina ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoCrL_NTC = curs.Data;
|
|
% Dato
|
|
comando = ['select Val1 from RawDataView where Date > ''' ...
|
|
datainiCrL ''' and UnitName = ''' IDcentralina ...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = '''...
|
|
NodeType ''' and NodeNum = ' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoCrLd_NTC = curs.Data;
|
|
else
|
|
DATnodoCrL_NTC = cell(1,1);
|
|
DATnodoCrLd_NTC = cell(1,1);
|
|
end
|
|
end
|
|
|
|
[rn,~] = size(DATnodoCrLd); % controllo date
|
|
if rn < rd % normalmente sono uguali
|
|
for i = rn+1:rd
|
|
DATnodoCrLd(i,:) = DATnodoCrLd(rn,:); % se mancano dati, copio gli ultimi
|
|
end
|
|
wardat = ['Node Crack Link ' num2str(ii) ' does NOT work!'];
|
|
fprintf(fileID,fmt,wardat);
|
|
w = 1;
|
|
end
|
|
[rnT,~] = size(DATnodoCrLd_NTC); % controllo date
|
|
if rnT < rd % normalmente sono uguali
|
|
for i = rnT+1:rd
|
|
DATnodoCrLd_NTC(i,:) = DATnodoCrLd_NTC(rnT,:); % se mancano dati, copio gli ultimi
|
|
end
|
|
wardat = ['NTC of Node Crack Link ' num2str(ii) ' does NOT work!'];
|
|
fprintf(fileID,fmt,wardat);
|
|
w = 1;
|
|
end
|
|
|
|
% DATnodo è la matrice che raccoglie i dati dell' ii-esimo nodo,
|
|
% DATnodi è la matrice che concatena i dati relativi a ciascun nodo.
|
|
if saltoCrL == 0
|
|
if ChCrL(ii,1) >= 2
|
|
if CrL_NTC(ii,1)==1
|
|
DatiCrackLink(1:rt,col) = DATnodoCrL(:,:); %#ok<*AGROW>
|
|
DatiNTCCrackLink(1:rt,col) = DATnodoCrL_NTC(:,:); %#ok<*AGROW>
|
|
if Check(1,2) > 1
|
|
DatiCrackLink(rt+1:rt+rd,col) = DATnodoCrLd(:,:);
|
|
DatiNTCCrackLink(rt+1:rt+rd,col) = DATnodoCrLd_NTC(:,:); %#ok<*AGROW>
|
|
end
|
|
else
|
|
DatiCrackLink(1:rt,col) = DATnodoCrL(:,:); %#ok<*AGROW>
|
|
if Check(1,2) > 1
|
|
DatiCrackLink(rt+1:rt+rd,col) = DATnodoCrLd(:,:);
|
|
end
|
|
end
|
|
elseif ChCrL(ii,1) == 1
|
|
DatiCrackLink(1:rt,col) = DATnodoCrL(:,:); %#ok<*AGROW>
|
|
if Check(1,2) > 1
|
|
DatiCrackLink(rt+1:rt+rd,col) = DATnodoCrLd(:,:);
|
|
end
|
|
end
|
|
else
|
|
if ChCrL(ii,1) >= 2
|
|
if CrL_NTC(ii,1)==1
|
|
DatiCrackLink(1:rd,col) = DATnodoCrL(:,:); %#ok<*AGROW>
|
|
DatiNTCCrackLink(1:rd,col) = DATnodoCrL_NTC(:,:); %#ok<*AGROW>
|
|
else
|
|
DatiCrackLink(1:rd,col) = DATnodoCrL(:,:); %#ok<*AGROW>
|
|
end
|
|
elseif ChCrL(ii,1) == 1
|
|
DatiCrackLink(1:rd,col) = DATnodoCrL(:,:); %#ok<*AGROW>
|
|
end
|
|
end
|
|
|
|
okdatCrL = ['Data of node number ' num2str(ii) ' of ' ...
|
|
num2str(rCrL) ' Crack Link nodes downloaded correctly'];
|
|
fprintf(fileID,fmt,okdatCrL);
|
|
ii = ii+1;
|
|
col = col+1;
|
|
end
|
|
if w == 0
|
|
wardat = 'There are not warning for Crack Link!';
|
|
fprintf(fileID,fmt,wardat);
|
|
end
|
|
|
|
% Controllo gli eventuali errori ('Err1' o '---') e li rimuovo,
|
|
% rimpiazzandoli con l'ultimo dato disponibile di quel nodo
|
|
|
|
% Dati
|
|
[r,c] = size(DatiCrackLink);
|
|
ErrCrackLink = zeros(r,c);
|
|
Ncorr = 0;
|
|
ESCI = 0;
|
|
NAN = 1;
|
|
if NuovoZeroCrL == 1
|
|
if isfile(RawDataFile) == 1
|
|
DatiRaw = csvread(RawDataFile);
|
|
[rDR,cDR] = size(DatiRaw);
|
|
DatiRaw(:,1) = DatiRaw(:,1) + 730000;
|
|
RawDate = find(DatiRaw(:,1)<=datenum(datainiCrL));
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDate = [];
|
|
DatiRaw = [];
|
|
end
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDate = [];
|
|
DatiRaw = [];
|
|
end
|
|
for jj=1:c
|
|
% Se il nodo è Dis., devo aumentare di uno la data (il nodo non
|
|
% è ancora stato installato!)
|
|
if strcmp('Dis.',DatiCrackLink(1,jj)) == 1
|
|
for dis = 2:r
|
|
if strcmp('Dis.',DatiCrackLink(dis,jj)) == 0
|
|
DatiCrackLink = DatiCrackLink(dis:end,:);
|
|
DatiNTCCrackLink = DatiNTCCrackLink(dis:end,:);
|
|
DATiniCrL = DATiniCrL(dis:end,:);
|
|
[r,c] = size(DatiCrackLink);
|
|
break
|
|
elseif dis == r
|
|
NAN = 0;
|
|
DIS = 1;
|
|
if datenum(datainiCrL)+1 < now
|
|
datainiCrL = datestr(datenum(datainiCrL)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yesCrL = 0;
|
|
end
|
|
end
|
|
end
|
|
|
|
end
|
|
end
|
|
if DIS ~= 1 && yesCrL == 1
|
|
% --- Codice per il primo dato ---
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiCrackLink(1,jj)));
|
|
idxT = find(strcmp('---',DatiCrackLink(1,jj)));
|
|
idxT2 = find(strcmp('-',DatiCrackLink(1,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiCrackLink(1,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiCrackLink(1,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiCrackLink(1,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiCrackLink(1,jj)));
|
|
idxN = find(strcmp('null',DatiCrackLink(1,jj)));
|
|
idxRX = find(strcmp('No RX',DatiCrackLink(1,jj)));
|
|
idxI = find(strcmp('id Error',DatiCrackLink(1,jj)));
|
|
idxM = find(strcmp('MUX id Error',DatiCrackLink(1,jj)));
|
|
idxC = find(strcmp('CH n. Error',DatiCrackLink(1,jj)));
|
|
idxU = find(strcmp('Unknown Error',DatiCrackLink(1,jj)));
|
|
idxMC = find(strcmp('MsgCorrup',DatiCrackLink(1,jj)));
|
|
idxNS = find(strcmp('NotSupp',DatiCrackLink(1,jj)));
|
|
idxU2 = find(strcmp('Unknown',DatiCrackLink(1,jj)));
|
|
idxNA = find(strcmp('NotAv',DatiCrackLink(1,jj)));
|
|
idxND = find(strcmp('No Data',DatiCrackLink(1,jj)));
|
|
idxCE = find(strcmp('CH n. Er',DatiCrackLink(1,jj)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxCE);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
idx = union(idx,idxND);
|
|
[ri,~] = size(idx);
|
|
if ri == 1
|
|
wardat = 'Warning on the correction of Crack Link nodes: there are not data at the beginning of the array!';
|
|
fprintf(fileID,fmt,wardat);
|
|
if rDR==1 && cDR==1 || NuovoZeroCrL == 0 % il file non è mai stato scritto, cerco la data precedente
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
if datenum(datainiCrL)+1 < now
|
|
datainiCrL = datestr(datenum(datainiCrL)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yesCrL = 0;
|
|
end
|
|
else
|
|
if isempty(RawDate) == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiCrL = datestr(datenum(datainiCrL)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
if isnan(DatiRaw(RawDate(end),jj+1)) == 0
|
|
DatiCrackLink(1,jj) = cellstr(num2str(DatiRaw(RawDate(end),jj+1)));
|
|
ErrCrackLink(1,jj) = 1;
|
|
wardat = 'Data of Crack Link nodes corrected using Raw Data of reference Csv file.';
|
|
fprintf(fileID,fmt,wardat);
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
else
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiCrL = datestr(datenum(datainiCrL)-1,'yyyy-mm-dd');
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if ESCI == 0
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiCrackLink(:,jj)));
|
|
idxT = find(strcmp('---',DatiCrackLink(:,jj)));
|
|
idxT2 = find(strcmp('-',DatiCrackLink(:,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiCrackLink(:,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiCrackLink(:,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiCrackLink(:,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiCrackLink(:,jj)));
|
|
idxN = find(strcmp('null',DatiCrackLink(:,jj)));
|
|
idxRX = find(strcmp('No RX',DatiCrackLink(:,jj)));
|
|
idxI = find(strcmp('id Error',DatiCrackLink(:,jj)));
|
|
idxM = find(strcmp('MUX id Error',DatiCrackLink(:,jj)));
|
|
idxC = find(strcmp('CH n. Error',DatiCrackLink(:,jj)));
|
|
idxU = find(strcmp('Unknown Error',DatiCrackLink(:,jj)));
|
|
idxMC = find(strcmp('MsgCorrup',DatiCrackLink(:,jj)));
|
|
idxNS = find(strcmp('NotSupp',DatiCrackLink(:,jj)));
|
|
idxU2 = find(strcmp('Unknown',DatiCrackLink(:,jj)));
|
|
idxNA = find(strcmp('NotAv',DatiCrackLink(:,jj)));
|
|
idxND = find(strcmp('No Data',DatiCrackLink(:,jj)));
|
|
idxCE = find(strcmp('CH n. Er',DatiCrackLink(:,jj)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxCE);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
idx = union(idx,idxND);
|
|
[ri,~] = size(idx);
|
|
for kk = 1:ri
|
|
indice=idx(kk);
|
|
if indice == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiCrL = datestr(datenum(datainiCrL)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
DatiCrackLink(indice,jj) = DatiCrackLink(indice-1,jj);
|
|
ErrCrackLink(indice,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
end
|
|
if ESCI == 1
|
|
break
|
|
end
|
|
% Elimino gli eventuali Not a Number
|
|
for nnn = 2:r
|
|
check = isnan(cell2mat(DatiCrackLink(nnn,jj)));
|
|
if check == 1
|
|
DatiCrackLink(nnn,jj) = DatiCrackLink(nnn-1,jj);
|
|
ErrCrackLink(nnn,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
end
|
|
end
|
|
end
|
|
corrdat = ['' num2str(Ncorr) ' corrections of Crack Link data done!'];
|
|
fprintf(fileID,fmt,corrdat);
|
|
% Concateno informazioni generali e/o letture dai nodi.
|
|
DatiCrackLink = [DATiniCrL str2double(DatiCrackLink)];
|
|
% Elimino eventuali date doppie
|
|
a = 2;
|
|
while a <= r
|
|
if DatiCrackLink(a,1) == DatiCrackLink(a-1,1)
|
|
DatiCrackLink(a,:) = [];
|
|
r = r-1;
|
|
else
|
|
a = a+1;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
if ESCI == 0
|
|
if sum(CrL_NTC(:,1))>0
|
|
if DIS ~= 1 && yesCrL == 1
|
|
% NTC
|
|
[r,c] = size(DatiNTCCrackLink);
|
|
Ncorr = 0;
|
|
if NuovoZeroCrL == 1
|
|
if isfile(RawDataFile) == 1
|
|
DatiRawNTC = csvread(RawDataFileNTC);
|
|
[rDR,cDR] = size(DatiRawNTC);
|
|
DatiRawNTC(:,1) = DatiRawNTC(:,1) + 730000;
|
|
RawDateNTC = find(DatiRawNTC(:,1)<=datenum(datainiCrL));
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDateNTC = [];
|
|
DatiRawNTC = [];
|
|
end
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDateNTC = [];
|
|
DatiRawNTC = [];
|
|
end
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiNTCCrackLink(1,jj)));
|
|
idxND = find(strcmp('No Data',DatiNTCCrackLink(1,jj)));
|
|
idxT3 = find(strcmp('---',DatiNTCCrackLink(1,jj)));
|
|
idxT = find(strcmp('-',DatiNTCCrackLink(1,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiNTCCrackLink(1,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiNTCCrackLink(1,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiNTCCrackLink(1,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiNTCCrackLink(1,jj)));
|
|
idxN = find(strcmp('null',DatiNTCCrackLink(1,jj)));
|
|
idxRX = find(strcmp('No RX',DatiNTCCrackLink(1,jj)));
|
|
idxI = find(strcmp('id Error',DatiNTCCrackLink(1,jj)));
|
|
idxM = find(strcmp('MUX id Error',DatiNTCCrackLink(1,jj)));
|
|
idxC = find(strcmp('CH n. Error',DatiNTCCrackLink(1,jj)));
|
|
idxU = find(strcmp('Unknown Error',DatiNTCCrackLink(1,jj)));
|
|
idxMC = find(strcmp('MsgCorrup',DatiNTCCrackLink(1,jj)));
|
|
idxNS = find(strcmp('NotSupp',DatiNTCCrackLink(1,jj)));
|
|
idxU2 = find(strcmp('Unknown',DatiNTCCrackLink(1,jj)));
|
|
idxNA = find(strcmp('NotAv',DatiNTCCrackLink(1,jj)));
|
|
idxCE = find(strcmp('CH n. Er',DatiNTCCrackLink(1,jj)));
|
|
idx = union(idxE,idxT3);
|
|
idx = union(idx,idxND);
|
|
idx = union(idx,idxCE);
|
|
idx = union(idx,idxT);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
[ri,~] = size(idx);
|
|
if ri == 1
|
|
wardat = 'Warning on the correction of NTC of Crack Link nodes: there are not data at the beginning of the array!';
|
|
fprintf(fileID,fmt,wardat);
|
|
if rDR==1 && cDR==1 || NuovoZeroCrL == 0 % il file non è mai stato scritto, cerco la data precedente
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
if datenum(datainiCrL)+1 < now
|
|
datainiCrL = datestr(datenum(datainiCrL)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yesCrL = 0;
|
|
end
|
|
else
|
|
if isempty(RawDateNTC) == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiCrL = datestr(datenum(datainiCrL)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
DatiNTCCrackLink(1,jj) = cellstr(num2str(DatiRawNTC(RawDateNTC(end),jj+1)));
|
|
if ErrCrackLink(indice,jj) == 0
|
|
ErrCrackLink(indice,jj) = 0.5;
|
|
else
|
|
ErrCrackLink(indice,jj) = 1;
|
|
end
|
|
wardat = 'Data of NTC of Crack Link nodes corrected using Raw Data of reference Csv file.';
|
|
fprintf(fileID,fmt,wardat);
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiNTCCrackLink(:,jj)));
|
|
idxND = find(strcmp('No Data',DatiNTCCrackLink(:,jj)));
|
|
idxT3 = find(strcmp('---',DatiNTCCrackLink(:,jj)));
|
|
idxT = find(strcmp('-',DatiNTCCrackLink(:,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiNTCCrackLink(:,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiNTCCrackLink(:,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiNTCCrackLink(:,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiNTCCrackLink(:,jj)));
|
|
idxN = find(strcmp('null',DatiNTCCrackLink(:,jj)));
|
|
idxRX = find(strcmp('No RX',DatiNTCCrackLink(:,jj)));
|
|
idxI = find(strcmp('id Error',DatiNTCCrackLink(:,jj)));
|
|
idxM = find(strcmp('MUX id Error',DatiNTCCrackLink(:,jj)));
|
|
idxC = find(strcmp('CH n. Error',DatiNTCCrackLink(:,jj)));
|
|
idxU = find(strcmp('Unknown Error',DatiNTCCrackLink(:,jj)));
|
|
idxMC = find(strcmp('MsgCorrup',DatiNTCCrackLink(:,jj)));
|
|
idxNS = find(strcmp('NotSupp',DatiNTCCrackLink(:,jj)));
|
|
idxU2 = find(strcmp('Unknown',DatiNTCCrackLink(:,jj)));
|
|
idxNA = find(strcmp('NotAv',DatiNTCCrackLink(:,jj)));
|
|
idxCE = find(strcmp('CH n. Er',DatiNTCCrackLink(:,jj)));
|
|
idx = union(idxE,idxT3);
|
|
idx = union(idx,idxND);
|
|
idx = union(idx,idxCE);
|
|
idx = union(idx,idxT);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
[ri,~] = size(idx);
|
|
for kk=1:ri
|
|
indice=idx(kk);
|
|
if indice == 1
|
|
if DIS == 1
|
|
wardat = 'Warning on the correction of NTC of Crack Link: there are not data at the beginning of the array!';
|
|
fprintf(fileID,fmt,wardat);
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiCrL = datestr(datenum(datainiCrL)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
wardat = 'Warning on the correction of NTC of Crack Link nodes: there are not data at the beginning of the array!';
|
|
fprintf(fileID,fmt,wardat);
|
|
if rDR==1 && cDR==1 % il file non è mai stato scritto
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiCrL = datestr(datenum(datainiCrL)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
if isempty(RawDateNTC) == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiCrL = datestr(datenum(datainiCrL)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
DatiNTCCrackLink(indice,jj) = cellstr(num2str(DatiRawNTC(RawDateNTC(end),jj+1)));
|
|
if ErrCrackLink(indice,jj) == 0
|
|
ErrCrackLink(indice,jj) = 0.5;
|
|
else
|
|
ErrCrackLink(indice,jj) = 1;
|
|
end
|
|
wardat = 'Data of Crack Link nodes corrected using Raw Data of Excel file.';
|
|
fprintf(fileID,fmt,wardat);
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
end
|
|
end
|
|
else
|
|
DatiNTCCrackLink(indice,jj) = DatiNTCCrackLink(indice-1,jj);
|
|
if ErrCrackLink(indice,jj) == 0
|
|
ErrCrackLink(indice,jj) = 0.5;
|
|
else
|
|
ErrCrackLink(indice,jj) = 1;
|
|
end
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
end
|
|
if ESCI == 1
|
|
break
|
|
end
|
|
% Elimino gli eventuali Not a Number
|
|
for nnn = 2:r
|
|
check = isnan(cell2mat(DatiNTCCrackLink(nnn,jj)));
|
|
if check == 1
|
|
DatiNTCCrackLink(nnn,jj) = DatiNTCCrackLink(nnn-1,jj);
|
|
if ErrCrackLink(indice,jj) == 0
|
|
ErrCrackLink(indice,jj) = 0.5;
|
|
else
|
|
ErrCrackLink(indice,jj) = 1;
|
|
end
|
|
Ncorr = Ncorr+ri;
|
|
end
|
|
end
|
|
end
|
|
corrdat = ['' num2str(Ncorr) ' corrections of NTC Crack Link data done!'];
|
|
fprintf(fileID,fmt,corrdat);
|
|
% Concateno informazioni generali e/o letture dai nodi.
|
|
DatiNTCCrackLink = [DATiniCrL str2double(DatiNTCCrackLink)];
|
|
% Elimino eventuali date doppie
|
|
a = 2;
|
|
while a <= r
|
|
if DatiNTCCrackLink(a,1) == DatiNTCCrackLink(a-1,1)
|
|
DatiNTCCrackLink(a,:) = [];
|
|
r = r-1;
|
|
else
|
|
a = a+1;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if NuovoZeroCrL == 1 && yesCrL == 1
|
|
[rDR,cDR] = size(DatiRaw);
|
|
if rDR~=1 && cDR~=1 && isempty(DatiRaw) == 0
|
|
RawDate1 = find(DatiRaw(:,1)<=DatiCrackLink(1,1));
|
|
if isempty(RawDate1) == 1
|
|
RawDate2 = 1;
|
|
elseif RawDate1(end) == rDR
|
|
RawDate2 = find(DatiCrackLink(:,1)>DatiRaw(end,1));
|
|
else
|
|
RawDate2 = find(DatiCrackLink(:,1)>DatiRaw(RawDate1(end)+1,1));
|
|
end
|
|
else
|
|
RawDate1 = [];
|
|
RawDate2 = 1;
|
|
end
|
|
if isempty(RawDate1) == 0 && isempty(RawDate2) == 0
|
|
Dati = [DatiRaw(1:RawDate1(end),:);DatiCrackLink(RawDate2(1):end,:)];
|
|
elseif isempty(RawDate1) == 1 && isempty(RawDate2) == 0
|
|
Dati = DatiCrackLink;
|
|
else
|
|
Dati = DatiRaw;
|
|
end
|
|
% Elimino appoggio più vecchio di un mese
|
|
RawDate3 = find(Dati(:,1)<now-30);
|
|
if isempty(RawDate3) == 0
|
|
[rDati,~] = size(Dati);
|
|
if RawDate3(end) == rDati
|
|
else
|
|
Dati = Dati(RawDate3(end)+1:end,:);
|
|
end
|
|
end
|
|
if isfile(RawDataFile) == 1
|
|
delete(RawDataFile);
|
|
end
|
|
|
|
if sum(CrL_NTC(:,1))>0
|
|
[rDR,cDR] = size(DatiRawNTC);
|
|
if rDR~=1 && cDR~=1 && isempty(DatiRawNTC) == 0
|
|
RawDate1 = find(DatiRawNTC(:,1)<=DatiNTCCrackLink(1,1));
|
|
if isempty(RawDate1) == 1
|
|
RawDate2 = 1;
|
|
elseif RawDate1(end) == rDR
|
|
RawDate2 = find(DatiNTCCrackLink(:,1)>DatiRawNTC(end,1));
|
|
else
|
|
RawDate2 = find(DatiNTCCrackLink(:,1)>DatiRawNTC(RawDate1(end)+1,1));
|
|
end
|
|
else
|
|
RawDate1 = [];
|
|
RawDate2 = 1;
|
|
end
|
|
if isempty(RawDate1) == 0 && isempty(RawDate2) == 0
|
|
DatiNTC = [DatiRawNTC(1:RawDate1(end),:);DatiNTCCrackLink(RawDate2(1):end,:)];
|
|
elseif isempty(RawDate1) == 1 && isempty(RawDate2) == 0
|
|
DatiNTC = DatiNTCCrackLink;
|
|
else
|
|
DatiNTC = DatiRawNTC;
|
|
end
|
|
% Elimino appoggio più vecchio di un mese
|
|
RawDate3 = find(DatiNTC(:,1)<now-30);
|
|
if isempty(RawDate3) == 0
|
|
[rDati,~] = size(DatiNTC);
|
|
if RawDate3(end) == rDati
|
|
else
|
|
DatiNTC = DatiNTC(RawDate3(end)+1:end,:);
|
|
end
|
|
end
|
|
if isfile(RawDataFileNTC) == 1
|
|
delete(RawDataFileNTC);
|
|
end
|
|
end
|
|
else
|
|
Dati = DatiCrackLink;
|
|
if sum(CrL_NTC(:,1))>0
|
|
DatiNTC = DatiNTCCrackLink;
|
|
end
|
|
end
|
|
Dati(:,1) = Dati(:,1) - 730000;
|
|
csvwrite(RawDataFile,Dati);
|
|
if sum(CrL_NTC(:,1))>0
|
|
DatiNTC(:,1) = DatiNTC(:,1) - 730000;
|
|
csvwrite(RawDataFileNTC,DatiNTC);
|
|
end
|
|
end
|
|
|
|
%% 3D Crack Link
|
|
if yes3DCrL == 0 % Non ci sono 3D Crack Link
|
|
Dati3DCrackLink = [];
|
|
DatiNTC3DCrackLink = [];
|
|
Err3DCrackLink = [];
|
|
ErrNTC3DCrackLink = [];
|
|
Ch3DCrL = [];
|
|
CrL3D_NTC = [];
|
|
wardat = 'lettura function: there are not 3D Crack Link';
|
|
fprintf(fileID,fmt,wardat);
|
|
else
|
|
RawDataFile = ['' IDcentralina '-' DTcatena '-3DCrack-RawData.csv']; % Specifico per 3D Crack Link
|
|
RawDataFileNTC = ['' IDcentralina '-' DTcatena '-3DCrackNTC-RawData.csv']; % Specifico per 3D Crack Link
|
|
Ch3DCrL = cell2mat(Nodo3DCrackLink(:,4));
|
|
CrL3D_NTC = cell2mat(Nodo3DCrackLink(:,5));
|
|
NAN = 0;
|
|
DIS = 0;
|
|
while NAN == 0
|
|
if datenum(dataini3DCrL) == datenum(Data(1,1))
|
|
tempoini3DCrL = char(Data(1,2));
|
|
end
|
|
NodeType = '3D Crack Link';
|
|
NodeNum3DCrL = num2str(cell2mat(Nodo3DCrackLink(1,2))); % scarico i dati del primo nodo
|
|
% Scarico dei dati relativi alla centralina con informazioni di Data e ora, livello batteria e temperatura
|
|
% Step 1 (vedi commento più avanti)
|
|
comando = ['select Date, Time from RawDataView where Date = ''' ...
|
|
dataini3DCrL ''' and Time >= ''' tempoini3DCrL ''' and UnitName = ''' IDcentralina...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum = ''' NodeNum3DCrL ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATini3DCrL = curs.Data;
|
|
Ntempo = DATini3DCrL;
|
|
[r,c] = size(DATini3DCrL);
|
|
salto3DCrL = 0;
|
|
if r==1 && c==1
|
|
textdat3DCrL = 'Warning: error reading 3D Crack Link (control unit data)!';
|
|
fprintf(fileID,fmt,textdat3DCrL);
|
|
salto3DCrL = 1;
|
|
end
|
|
% Step 2 (vedi commento più avanti)
|
|
comando = ['select Date, Time from RawDataView where Date > ''' ...
|
|
dataini3DCrL ''' and UnitName = ''' IDcentralina...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum = ''' NodeNum3DCrL ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DAT23DCrL = curs.Data;
|
|
Ndate = DAT23DCrL;
|
|
if salto3DCrL == 1
|
|
DATini3DCrL = DAT23DCrL;
|
|
end
|
|
Check = size(DAT23DCrL);
|
|
if Check(1,2) > 1 % ho superato il primo giorno
|
|
if salto3DCrL == 0
|
|
% Concateno le informazioni relative a Step 1 e 2 (se necessario...)
|
|
DATini3DCrL = [DATini3DCrL; DAT23DCrL];
|
|
end
|
|
end
|
|
% Modifico il formato di data e ora in DATini.
|
|
[rD,cD] = size(DATini3DCrL);
|
|
if rD ~=1 && cD ~=1
|
|
T = [cell2mat(DATini3DCrL(:,1)) repmat(' ', [rD,1]) cell2mat(DATini3DCrL(:,2))];
|
|
T = datenum(T);
|
|
% Converto da Cell Array a Matrice.
|
|
DATini3DCrL = T;
|
|
else
|
|
DATini3DCrL = [];
|
|
end
|
|
|
|
% Scarico dati relativi ai singoli nodi
|
|
[rd,~] = size(Ndate); % numero di dati successivi al primo giorno di calcolo
|
|
[rt,~] = size(Ntempo); % numero di dati del primo giorno di calcolo
|
|
if salto3DCrL == 0
|
|
% creo la matrice per i dati 3D Crack Link
|
|
if Check(1,2) > 1
|
|
Dati3DCrackLink = cell(rd+rt,3*r3DCrL);
|
|
DatiNTC3DCrackLink = cell(rd+rt,r3DCrL);
|
|
else
|
|
Dati3DCrackLink = cell(rt,3*r3DCrL);
|
|
DatiNTC3DCrackLink = cell(rt,r3DCrL);
|
|
end
|
|
else
|
|
Dati3DCrackLink = cell(rd,3*r3DCrL);
|
|
DatiNTC3DCrackLink = cell(rd,r3DCrL);
|
|
end
|
|
col = 1;
|
|
ii = 1;
|
|
w = 0;
|
|
N3DCrackLink = cell2mat(Nodo3DCrackLink(:,2));
|
|
while ii <= r3DCrL
|
|
% Step 1: Acquisisco i dati registrati successivamente all'ultimo scarico,
|
|
% ma limitandomi a quelli registrati nel corso di quella singola giornata;
|
|
nN = N3DCrackLink(ii,1);
|
|
nNodo = num2str(nN);
|
|
if Ch3DCrL(ii,1) == 3 || Ch3DCrL(ii,1) == 4
|
|
comando = ['select Val0, Val1, Val2 from RawDataView where Date = ''' ...
|
|
dataini3DCrL ''' and Time >= ''' tempoini3DCrL ''' and UnitName = ''' IDcentralina...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodo3DCrL = curs.Data;
|
|
comando = ['select Val0, Val1, Val2 from RawDataView where Date > ''' ...
|
|
dataini3DCrL ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum = ' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodo3DCrLd = curs.Data;
|
|
if Ch3DCrL(ii,1) == 4 % Termometro
|
|
comando = ['select Val3 from RawDataView where Date = ''' ...
|
|
dataini3DCrL ''' and Time >= ''' tempoini3DCrL ''' and UnitName = ''' IDcentralina...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodo3DCrL_NTC = curs.Data;
|
|
comando = ['select Val3 from RawDataView where Date > ''' ...
|
|
dataini3DCrL ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum = ' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodo3DCrL_NTCd = curs.Data;
|
|
else
|
|
DATnodo3DCrL_NTC = 0;
|
|
DATnodo3DCrL_NTCd = 0;
|
|
end
|
|
elseif Ch3DCrL(ii,1) >= 6
|
|
comando = ['select Val0, Val2, Val4 from RawDataView where Date = ''' ...
|
|
dataini3DCrL ''' and Time >= ''' tempoini3DCrL ''' and UnitName = ''' IDcentralina...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodo3DCrL = curs.Data;
|
|
comando = ['select Val0, Val2, Val4 from RawDataView where Date > ''' ...
|
|
dataini3DCrL ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum = ' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodo3DCrLd = curs.Data;
|
|
DATnodo3DCrL_NTC = 0;
|
|
DATnodo3DCrL_NTCd = 0;
|
|
end
|
|
|
|
% Concateno i dati relativi a Step 1 e 2 per il nodo ii-esimo.
|
|
|
|
% DATnodo è la matrice che raccoglie i dati dell' ii-esimo nodo,
|
|
% DATnodi è la matrice che concatena i dati relativi a ciascun nodo.
|
|
[rn,~] = size(DATnodo3DCrLd); % controllo date
|
|
if rn < rd % normalmente sono uguali
|
|
for i = rn+1:rd
|
|
DATnodo3DCrLd(i,:) = DATnodo3DCrLd(rn,:); % se mancano dati, copio gli ultimi
|
|
end
|
|
wardat = ['Node 3D Crack Link ' num2str(ii) ' does NOT work!'];
|
|
fprintf(fileID,fmt,wardat);
|
|
w = 1;
|
|
end
|
|
[rn,~] = size(DATnodo3DCrL_NTCd); % controllo date
|
|
if rn < rd % normalmente sono uguali
|
|
for i = rn+1:rd
|
|
DATnodo3DCrL_NTCd(i,:) = DATnodo3DCrL_NTCd(rn,:); % se mancano dati, copio gli ultimi
|
|
end
|
|
wardat = ['NTC of Node 3D Crack Link ' num2str(ii) ' does NOT work!'];
|
|
fprintf(fileID,fmt,wardat);
|
|
w = 1;
|
|
end
|
|
|
|
if salto3DCrL == 0
|
|
if Ch3DCrL(ii,1) == 4
|
|
if CrL3D_NTC(ii,1) == 1
|
|
Dati3DCrackLink(1:rt,col:col+2) = DATnodo3DCrL; %#ok<*AGROW>
|
|
DatiNTC3DCrackLink(1:rt,ii) = DATnodo3DCrL_NTC; %#ok<*AGROW>
|
|
if Check(1,2) > 1
|
|
Dati3DCrackLink(rt+1:rt+rd,col:col+2) = DATnodo3DCrLd;
|
|
DatiNTC3DCrackLink(rt+1:rt+rd,ii) = DATnodo3DCrL_NTCd; %#ok<*AGROW>
|
|
end
|
|
else
|
|
Dati3DCrackLink(1:rt,col:col+2) = DATnodo3DCrL; %#ok<*AGROW>
|
|
if Check(1,2) > 1
|
|
Dati3DCrackLink(rt+1:rt+rd,col:col+2) = DATnodo3DCrLd;
|
|
end
|
|
end
|
|
elseif Ch3DCrL(ii,1) == 3 || Ch3DCrL(ii,1) >= 6
|
|
Dati3DCrackLink(1:rt,col:col+2) = DATnodo3DCrL; %#ok<*AGROW>
|
|
if Check(1,2) > 1
|
|
Dati3DCrackLink(rt+1:rt+rd,col:col+2) = DATnodo3DCrLd;
|
|
end
|
|
end
|
|
else
|
|
if Ch3DCrL(ii,1) == 4
|
|
if CrL3D_NTC(ii,1)==1
|
|
Dati3DCrackLink(1:rd,col:col+2) = DATnodo3DCrL; %#ok<*AGROW>
|
|
DatiNTC3DCrackLink(1:rd,ii) = DATnodo3DCrL_NTC; %#ok<*AGROW>
|
|
else
|
|
Dati3DCrackLink(1:rd,col:col+2) = DATnodo3DCrL; %#ok<*AGROW>
|
|
end
|
|
elseif Ch3DCrL(ii,1) == 1
|
|
Dati3DCrackLink(1:rd,col:col+2) = DATnodo3DCrL; %#ok<*AGROW>
|
|
end
|
|
end
|
|
|
|
okdat3DCrL = ['Data of node number ' num2str(ii) ' of ' ...
|
|
num2str(r3DCrL) ' 3D Crack Link nodes downloaded correctly'];
|
|
fprintf(fileID,fmt,okdat3DCrL);
|
|
ii = ii+1;
|
|
col = col+3;
|
|
end
|
|
if w == 0
|
|
wardat = 'There are not warning for 3D Crack Link!';
|
|
fprintf(fileID,fmt,wardat);
|
|
end
|
|
|
|
% Controllo gli eventuali errori ('Err1' o '---') e li rimuovo,
|
|
% rimpiazzandoli con l'ultimo dato disponibile di quel nodo
|
|
[r,c] = size(Dati3DCrackLink);
|
|
Err3DCrackLink = zeros(r,c);
|
|
Ncorr = 0;
|
|
NAN = 1;
|
|
ESCI = 0;
|
|
if NuovoZero3DCrL == 1
|
|
if isfile(RawDataFile) == 1
|
|
DatiRaw = csvread(RawDataFile);
|
|
[rDR,cDR] = size(DatiRaw);
|
|
DatiRaw(:,1) = DatiRaw(:,1) + 730000;
|
|
RawDate = find(DatiRaw(:,1)<=datenum(dataini3DCrL));
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDate = [];
|
|
DatiRaw = [];
|
|
end
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDate = [];
|
|
DatiRaw = [];
|
|
end
|
|
for jj=1:c
|
|
% Se il nodo è Dis., devo aumentare di uno la data (il nodo non
|
|
% è ancora stato installato!)
|
|
if strcmp('Dis.',Dati3DCrackLink(1,jj)) == 1
|
|
for dis = 2:r
|
|
if strcmp('Dis.',Dati3DCrackLink(dis,jj)) == 0
|
|
Dati3DCrackLink = Dati3DCrackLink(dis:end,:);
|
|
DatiNTC3DCrackLink = DatiNTC3DCrackLink(dis:end,:);
|
|
DATini3DCrL = DATini3DCrL(dis:end,:);
|
|
[r,c] = size(Dati3DCrackLink);
|
|
break
|
|
elseif dis == r
|
|
NAN = 0;
|
|
DIS = 1;
|
|
if datenum(dataini3DCrL)+1 < now
|
|
dataini3DCrL = datestr(datenum(dataini3DCrL)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yes3DCrL = 0;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if NAN == 1
|
|
if DIS ~= 1 && yes3DCrL == 1
|
|
% --- Codice per il primo dato ---
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',Dati3DCrackLink(1,jj)));
|
|
idxT = find(strcmp('---',Dati3DCrackLink(1,jj)));
|
|
idxT2 = find(strcmp('-',Dati3DCrackLink(1,jj)));
|
|
idxE2 = find(strcmp('Err2',Dati3DCrackLink(1,jj)));
|
|
idxE255 = find(strcmp('Err255',Dati3DCrackLink(1,jj)));
|
|
idxD = find(strcmp('DMUXe',Dati3DCrackLink(1,jj)));
|
|
idxE1F = find(strcmp('Err1File',Dati3DCrackLink(1,jj)));
|
|
idxN = find(strcmp('null',Dati3DCrackLink(1,jj)));
|
|
idxRX = find(strcmp('No RX',Dati3DCrackLink(1,jj)));
|
|
idxI = find(strcmp('id Error',Dati3DCrackLink(1,jj)));
|
|
idxM = find(strcmp('MUX id Error',Dati3DCrackLink(1,jj)));
|
|
idxC = find(strcmp('CH n. Error',Dati3DCrackLink(1,jj)));
|
|
idxU = find(strcmp('Unknown Error',Dati3DCrackLink(1,jj)));
|
|
idxMC = find(strcmp('MsgCorrup',Dati3DCrackLink(1,jj)));
|
|
idxNS = find(strcmp('NotSupp',Dati3DCrackLink(1,jj)));
|
|
idxU2 = find(strcmp('Unknown',Dati3DCrackLink(1,jj)));
|
|
idxNA = find(strcmp('NotAv',Dati3DCrackLink(1,jj)));
|
|
idxND = find(strcmp('No Data',Dati3DCrackLink(1,jj)));
|
|
idxCE = find(strcmp('CH n. Er',Dati3DCrackLink(1,jj)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxCE);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
idx = union(idx,idxND);
|
|
[ri,~] = size(idx);
|
|
if ri == 1
|
|
wardat = 'Warning on the correction of 3D Crack Link nodes: there are not data at the beginning of the array!';
|
|
fprintf(fileID,fmt,wardat);
|
|
if rDR==1 && cDR==1 || NuovoZero3DCrL == 0 % il file non è mai stato scritto, cerco la data precedente
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
if datenum(dataini3DCrL)+1 < now
|
|
dataini3DCrL = datestr(datenum(dataini3DCrL)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yes3DCrL = 0;
|
|
end
|
|
else
|
|
if isempty(RawDate) == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
dataini3DCrL = datestr(datenum(dataini3DCrL)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
if isnan(DatiRaw(RawDate(end),jj+1)) == 0
|
|
Dati3DCrackLink(1,jj) = cellstr(num2str(DatiRaw(RawDate(end),jj+1)));
|
|
Err3DCrackLink(1,jj) = 1;
|
|
wardat = 'Data of 3D Crack Link nodes corrected using Raw Data of reference Csv file.';
|
|
fprintf(fileID,fmt,wardat);
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
else
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
dataini3DCrL = datestr(datenum(dataini3DCrL)-1,'yyyy-mm-dd');
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if ESCI == 0
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',Dati3DCrackLink(:,jj)));
|
|
idxT = find(strcmp('---',Dati3DCrackLink(:,jj)));
|
|
idxT2 = find(strcmp('-',Dati3DCrackLink(:,jj)));
|
|
idxE2 = find(strcmp('Err2',Dati3DCrackLink(:,jj)));
|
|
idxE255 = find(strcmp('Err255',Dati3DCrackLink(:,jj)));
|
|
idxD = find(strcmp('DMUXe',Dati3DCrackLink(:,jj)));
|
|
idxE1F = find(strcmp('Err1File',Dati3DCrackLink(:,jj)));
|
|
idxN = find(strcmp('null',Dati3DCrackLink(:,jj)));
|
|
idxRX = find(strcmp('No RX',Dati3DCrackLink(:,jj)));
|
|
idxI = find(strcmp('id Error',Dati3DCrackLink(:,jj)));
|
|
idxM = find(strcmp('MUX id Error',Dati3DCrackLink(:,jj)));
|
|
idxC = find(strcmp('CH n. Error',Dati3DCrackLink(:,jj)));
|
|
idxU = find(strcmp('Unknown Error',Dati3DCrackLink(:,jj)));
|
|
idxMC = find(strcmp('MsgCorrup',Dati3DCrackLink(:,jj)));
|
|
idxNS = find(strcmp('NotSupp',Dati3DCrackLink(:,jj)));
|
|
idxU2 = find(strcmp('Unknown',Dati3DCrackLink(:,jj)));
|
|
idxNA = find(strcmp('NotAv',Dati3DCrackLink(:,jj)));
|
|
idxND = find(strcmp('No Data',Dati3DCrackLink(:,jj)));
|
|
idxCE = find(strcmp('CH n. Er',Dati3DCrackLink(:,jj)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxCE);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
idx = union(idx,idxND);
|
|
[ri,~] = size(idx);
|
|
for kk=1:ri
|
|
indice=idx(kk);
|
|
if indice == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
dataini3DCrL = datestr(datenum(dataini3DCrL)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
Dati3DCrackLink(indice,jj) = Dati3DCrackLink(indice-1,jj);
|
|
Err3DCrackLink(indice,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
end
|
|
if ESCI == 1
|
|
break
|
|
end
|
|
% Elimino gli eventuali Not a Number
|
|
for nnn = 2:r
|
|
check = isnan(cell2mat(Dati3DCrackLink(nnn,jj)));
|
|
if check == 1
|
|
Dati3DCrackLink(nnn,jj) = Dati3DCrackLink(nnn-1,jj);
|
|
Err3DCrackLink(nnn,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
end
|
|
end
|
|
end
|
|
corrdat = ['' num2str(Ncorr) ' corrections of 3D Crack Link data done!'];
|
|
fprintf(fileID,fmt,corrdat);
|
|
% Concateno informazioni generali e/o letture dai nodi.
|
|
Dati3DCrackLink = [DATini3DCrL str2double(Dati3DCrackLink)];
|
|
% Elimino eventuali date doppie
|
|
a = 2;
|
|
while a <= r
|
|
if Dati3DCrackLink(a,1) == Dati3DCrackLink(a-1,1)
|
|
Dati3DCrackLink(a,:) = [];
|
|
r = r-1;
|
|
else
|
|
a = a+1;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
if ESCI == 0
|
|
if sum(CrL3D_NTC(:,1))>0
|
|
% NTC
|
|
% Controllo gli eventuali errori ('Err1' o '---') e li rimuovo,
|
|
% rimpiazzandoli con l'ultimo dato disponibile di quel nodo
|
|
[r,c] = size(DatiNTC3DCrackLink);
|
|
Ncorr = 0;
|
|
ErrNTC3DCrackLink = zeros(r,c);
|
|
if NuovoZero3DCrL == 1
|
|
if isfile(RawDataFile) == 1
|
|
DatiRawNTC = csvread(RawDataFileNTC);
|
|
[rDR,cDR] = size(DatiRawNTC);
|
|
DatiRawNTC(:,1) = DatiRawNTC(:,1) + 730000;
|
|
RawDateNTC = find(DatiRawNTC(:,1)<=datenum(dataini3DCrL));
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDateNTC = [];
|
|
DatiRawNTC = [];
|
|
end
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDateNTC = [];
|
|
DatiRawNTC = [];
|
|
end
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiNTC3DCrackLink(1,jj)));
|
|
idxT3 = find(strcmp('---',DatiNTC3DCrackLink(1,jj)));
|
|
idxT = find(strcmp('-',DatiNTC3DCrackLink(1,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiNTC3DCrackLink(1,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiNTC3DCrackLink(1,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiNTC3DCrackLink(1,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiNTC3DCrackLink(1,jj)));
|
|
idxN = find(strcmp('null',DatiNTC3DCrackLink(1,jj)));
|
|
idxRX = find(strcmp('No RX',DatiNTC3DCrackLink(1,jj)));
|
|
idxI = find(strcmp('id Error',DatiNTC3DCrackLink(1,jj)));
|
|
idxM = find(strcmp('MUX id Error',DatiNTC3DCrackLink(1,jj)));
|
|
idxC = find(strcmp('CH n. Error',DatiNTC3DCrackLink(1,jj)));
|
|
idxU = find(strcmp('Unknown Error',DatiNTC3DCrackLink(1,jj)));
|
|
idxMC = find(strcmp('MsgCorrup',DatiNTC3DCrackLink(1,jj)));
|
|
idxNS = find(strcmp('NotSupp',DatiNTC3DCrackLink(1,jj)));
|
|
idxU2 = find(strcmp('Unknown',DatiNTC3DCrackLink(1,jj)));
|
|
idxNA = find(strcmp('NotAv',DatiNTC3DCrackLink(1,jj)));
|
|
idxND = find(strcmp('No Data',DatiNTC3DCrackLink(1,jj)));
|
|
idxCE = find(strcmp('CH n. Er',DatiNTC3DCrackLink(1,jj)));
|
|
idx = union(idxE,idxT3);
|
|
idx = union(idx,idxND);
|
|
idx = union(idx,idxCE);
|
|
idx = union(idx,idxT);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
[ri,~] = size(idx);
|
|
if ri == 1
|
|
wardat = 'Warning on the correction of 3D Crack Link nodes: there are not data at the beginning of the array!';
|
|
fprintf(fileID,fmt,wardat);
|
|
if rDR==1 && cDR==1 || NuovoZero3DCrL == 0 % il file non è mai stato scritto, cerco la data precedente
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
if datenum(dataini3DCrL)+1 < now
|
|
dataini3DCrL = datestr(datenum(dataini3DCrL)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yes3DCrL = 0;
|
|
end
|
|
else
|
|
if isempty(RawDate) == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
dataini3DCrL = datestr(datenum(dataini3DCrL)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
Dati3DCrackLink(1,jj) = cellstr(num2str(DatiRaw(RawDateNTC(end),jj+1)));
|
|
Err3DCrackLink(1,jj) = 1;
|
|
wardat = 'Data of 3D Crack Link nodes corrected using Raw Data of reference Csv file.';
|
|
fprintf(fileID,fmt,wardat);
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiNTC3DCrackLink(:,jj)));
|
|
idxT3 = find(strcmp('---',DatiNTC3DCrackLink(:,jj)));
|
|
idxT = find(strcmp('-',DatiNTC3DCrackLink(:,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiNTC3DCrackLink(:,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiNTC3DCrackLink(:,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiNTC3DCrackLink(:,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiNTC3DCrackLink(:,jj)));
|
|
idxN = find(strcmp('null',DatiNTC3DCrackLink(:,jj)));
|
|
idxRX = find(strcmp('No RX',DatiNTC3DCrackLink(:,jj)));
|
|
idxI = find(strcmp('id Error',DatiNTC3DCrackLink(:,jj)));
|
|
idxM = find(strcmp('MUX id Error',DatiNTC3DCrackLink(:,jj)));
|
|
idxC = find(strcmp('CH n. Error',DatiNTC3DCrackLink(:,jj)));
|
|
idxU = find(strcmp('Unknown Error',DatiNTC3DCrackLink(:,jj)));
|
|
idxMC = find(strcmp('MsgCorrup',DatiNTC3DCrackLink(:,jj)));
|
|
idxNS = find(strcmp('NotSupp',DatiNTC3DCrackLink(:,jj)));
|
|
idxU2 = find(strcmp('Unknown',DatiNTC3DCrackLink(:,jj)));
|
|
idxNA = find(strcmp('NotAv',DatiNTC3DCrackLink(:,jj)));
|
|
idxND = find(strcmp('No Data',DatiNTC3DCrackLink(:,jj)));
|
|
idxCE = find(strcmp('CH n. Er',DatiNTC3DCrackLink(:,jj)));
|
|
idx = union(idxE,idxT3);
|
|
idx = union(idx,idxND);
|
|
idx = union(idx,idxCE);
|
|
idx = union(idx,idxT);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
[ri,~] = size(idx);
|
|
for kk=1:ri
|
|
indice=idx(kk);
|
|
if indice == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
dataini3DCrL = datestr(datenum(dataini3DCrL)-1,'yyyy-mm-dd');
|
|
else
|
|
DatiNTC3DCrackLink(indice,jj) = DatiNTC3DCrackLink(indice-1,jj);
|
|
ErrNTC3DCrackLink(indice,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
end
|
|
if ESCI == 1
|
|
break
|
|
end
|
|
% Elimino gli eventuali Not a Number
|
|
for nnn = 2:r
|
|
check = isnan(cell2mat(DatiNTC3DCrackLink(nnn,jj)));
|
|
if check == 1
|
|
DatiNTC3DCrackLink(nnn,jj) = DatiNTC3DCrackLink(nnn-1,jj);
|
|
ErrNTC3DCrackLink(nnn,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
end
|
|
end
|
|
end
|
|
corrdat = ['' num2str(Ncorr) ' corrections of NTC of 3D Crack Link data done!'];
|
|
fprintf(fileID,fmt,corrdat);
|
|
% Concateno informazioni generali e/o letture dai nodi.
|
|
DatiNTC3DCrackLink = [DATini3DCrL str2double(DatiNTC3DCrackLink)];
|
|
% Elimino eventuali date doppie
|
|
a = 2;
|
|
while a <= r
|
|
if DatiNTC3DCrackLink(a,1) == DatiNTC3DCrackLink(a-1,1)
|
|
DatiNTC3DCrackLink(a,:) = [];
|
|
r = r-1;
|
|
else
|
|
a = a+1;
|
|
end
|
|
end
|
|
else
|
|
ErrNTC3DCrackLink = 0;
|
|
end
|
|
end
|
|
end
|
|
if NuovoZero3DCrL == 1 && yes3DCrL == 1
|
|
[rDR,cDR] = size(DatiRaw);
|
|
if rDR~=1 && cDR~=1 && isempty(DatiRaw) == 0
|
|
RawDate1 = find(DatiRaw(:,1)<=Dati3DCrackLink(1,1));
|
|
if isempty(RawDate1) == 1
|
|
RawDate2 = 1;
|
|
elseif RawDate1(end) == rDR
|
|
RawDate2 = find(Dati3DCrackLink(:,1)>DatiRaw(end,1));
|
|
else
|
|
RawDate2 = find(Dati3DCrackLink(:,1)>DatiRaw(RawDate1(end)+1,1));
|
|
end
|
|
else
|
|
RawDate1 = [];
|
|
RawDate2 = 1;
|
|
end
|
|
if isempty(RawDate1) == 0 && isempty(RawDate2) == 0
|
|
Dati = [DatiRaw(1:RawDate1(end),:);Dati3DCrackLink(RawDate2(1):end,:)];
|
|
elseif isempty(RawDate1) == 1 && isempty(RawDate2) == 0
|
|
Dati = Dati3DCrackLink;
|
|
else
|
|
Dati = DatiRaw;
|
|
end
|
|
% Elimino appoggio più vecchio di un mese
|
|
RawDate3 = find(Dati(:,1)<now-30);
|
|
if isempty(RawDate3) == 0
|
|
[rDati,~] = size(Dati);
|
|
if RawDate3(end) == rDati
|
|
else
|
|
Dati = Dati(RawDate3(end)+1:end,:);
|
|
end
|
|
end
|
|
if isfile(RawDataFile) == 1
|
|
delete(RawDataFile);
|
|
end
|
|
|
|
if sum(CrL3D_NTC(:,1))>0
|
|
[rDR,cDR] = size(DatiRawNTC);
|
|
if rDR~=1 && cDR~=1 && isempty(DatiRawNTC) == 0
|
|
RawDate1 = find(DatiRawNTC(:,1)<=DatiNTC3DCrackLink(1,1));
|
|
if isempty(RawDate1) == 1
|
|
RawDate2 = 1;
|
|
elseif RawDate1(end) == rDR
|
|
RawDate2 = find(DatiNTC3DCrackLink(:,1)>DatiRawNTC(end,1));
|
|
else
|
|
RawDate2 = find(DatiNTC3DCrackLink(:,1)>DatiRawNTC(RawDate1(end)+1,1));
|
|
end
|
|
else
|
|
RawDate1 = [];
|
|
RawDate2 = 1;
|
|
end
|
|
if isempty(RawDate1) == 0 && isempty(RawDate2) == 0
|
|
DatiNTC = [DatiRawNTC(1:RawDate1(end),:);DatiNTC3DCrackLink(RawDate2(1):end,:)];
|
|
elseif isempty(RawDate1) == 1 && isempty(RawDate2) == 0
|
|
DatiNTC = DatiNTC3DCrackLink;
|
|
else
|
|
DatiNTC = DatiRawNTC;
|
|
end
|
|
% Elimino appoggio più vecchio di un mese
|
|
RawDate3 = find(DatiNTC(:,1)<now-30);
|
|
if isempty(RawDate3) == 0
|
|
[rDati,~] = size(DatiNTC);
|
|
if RawDate3(end) == rDati
|
|
else
|
|
DatiNTC = DatiNTC(RawDate3(end)+1:end,:);
|
|
end
|
|
end
|
|
if isfile(RawDataFileNTC) == 1
|
|
delete(RawDataFileNTC);
|
|
end
|
|
end
|
|
else
|
|
Dati = Dati3DCrackLink;
|
|
if sum(CrL3D_NTC(:,1))>0
|
|
DatiNTC = DatiNTC3DCrackLink;
|
|
end
|
|
end
|
|
Dati(:,1) = Dati(:,1) - 730000;
|
|
csvwrite(RawDataFile,Dati);
|
|
if sum(CrL3D_NTC(:,1))>0
|
|
DatiNTC(:,1) = DatiNTC(:,1) - 730000;
|
|
csvwrite(RawDataFileNTC,DatiNTC);
|
|
end
|
|
end
|
|
|
|
%% 2D Crack Link
|
|
if yes2DCrL == 0 % Non ci sono 2D Crack Link
|
|
Dati2DCrackLink = [];
|
|
DatiNTC2DCrackLink = [];
|
|
Err2DCrackLink = [];
|
|
ErrNTC2DCrackLink = [];
|
|
Ch2DCrL = [];
|
|
CrL2D_NTC = [];
|
|
wardat = 'lettura function: there are not 2D Crack Link';
|
|
fprintf(fileID,fmt,wardat);
|
|
else
|
|
RawDataFile = ['' IDcentralina '-' DTcatena '-2DCrack-RawData.csv']; % Specifico per 2D Crack Link
|
|
RawDataFileNTC = ['' IDcentralina '-' DTcatena '-2DCrackNTC-RawData.csv']; % Specifico per 2D Crack Link
|
|
Ch2DCrL = cell2mat(Nodo2DCrackLink(:,4));
|
|
CrL2D_NTC = cell2mat(Nodo2DCrackLink(:,5));
|
|
NAN = 0;
|
|
DIS = 0;
|
|
while NAN == 0
|
|
if datenum(dataini2DCrL) == datenum(Data(1,1))
|
|
tempoini2DCrL = char(Data(1,2));
|
|
end
|
|
NodeType = '2D Crack Link';
|
|
NodeNum2DCrL = num2str(cell2mat(Nodo2DCrackLink(1,2))); % scarico i dati del primo nodo
|
|
% Scarico dei dati relativi alla centralina con informazioni di Data e ora, livello batteria e temperatura
|
|
% Step 1 (vedi commento più avanti)
|
|
comando = ['select Date, Time from RawDataView where Date = ''' ...
|
|
dataini2DCrL ''' and Time >= ''' tempoini2DCrL ''' and UnitName = ''' IDcentralina...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum = ''' NodeNum2DCrL ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATini2DCrL = curs.Data;
|
|
Ntempo = DATini2DCrL;
|
|
[r,c] = size(DATini2DCrL);
|
|
salto2DCrL = 0;
|
|
if r==1 && c==1
|
|
textdat2DCrL = 'Warning: error reading 2D Crack Link (control unit data)!';
|
|
fprintf(fileID,fmt,textdat2DCrL);
|
|
salto2DCrL = 1;
|
|
end
|
|
% Step 2 (vedi commento più avanti)
|
|
comando = ['select Date, Time from RawDataView where Date > ''' ...
|
|
dataini2DCrL ''' and UnitName = ''' IDcentralina...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum = ''' NodeNum2DCrL ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DAT22DCrL = curs.Data;
|
|
Ndate = DAT22DCrL;
|
|
if salto2DCrL == 1
|
|
DATini2DCrL = DAT22DCrL;
|
|
end
|
|
Check = size(DAT22DCrL);
|
|
if Check(1,2) > 1 % ho superato il primo giorno
|
|
if salto2DCrL == 0
|
|
% Concateno le informazioni relative a Step 1 e 2 (se necessario...)
|
|
DATini2DCrL = [DATini2DCrL; DAT22DCrL];
|
|
end
|
|
end
|
|
% Modifico il formato di data e ora in DATini.
|
|
[rD,cD] = size(DATini2DCrL);
|
|
if rD ~=1 && cD ~=1
|
|
T = [cell2mat(DATini2DCrL(:,1)) repmat(' ', [rD,1]) cell2mat(DATini2DCrL(:,2))];
|
|
T = datenum(T);
|
|
% Converto da Cell Array a Matrice.
|
|
DATini2DCrL = T;
|
|
else
|
|
DATini2DCrL = [];
|
|
end
|
|
|
|
% Scarico dati relativi ai singoli nodi
|
|
[rd,~] = size(Ndate); % numero di dati successivi al primo giorno di calcolo
|
|
[rt,~] = size(Ntempo); % numero di dati del primo giorno di calcolo
|
|
if salto2DCrL == 0
|
|
% creo la matrice per i dati 2D Crack Link
|
|
if Check(1,2) > 1
|
|
Dati2DCrackLink = cell(rd+rt,2*r2DCrL);
|
|
DatiNTC2DCrackLink = cell(rd+rt,r2DCrL);
|
|
else
|
|
Dati2DCrackLink = cell(rt,2*r2DCrL);
|
|
DatiNTC2DCrackLink = cell(rt,r2DCrL);
|
|
end
|
|
else
|
|
Dati2DCrackLink = cell(rd,2*r2DCrL);
|
|
DatiNTC2DCrackLink = cell(rd,r2DCrL);
|
|
end
|
|
col = 1;
|
|
ii = 1;
|
|
w = 0;
|
|
N2DCrackLink = cell2mat(Nodo2DCrackLink(:,2));
|
|
Ch2DCrL = cell2mat(Ch2DCrL);
|
|
while ii <= r2DCrL
|
|
% Step 1: Acquisisco i dati registrati successivamente all'ultimo scarico,
|
|
% ma limitandomi a quelli registrati nel corso di quella singola giornata;
|
|
nN = N2DCrackLink(ii,1);
|
|
nNodo = num2str(nN);
|
|
if Ch2DCrL(ii,1) == 2 || Ch2DCrL(ii,1) == 3
|
|
comando = ['select Val0, Val1 from RawDataView where Date = ''' ...
|
|
dataini2DCrL ''' and Time >= ''' tempoini2DCrL ''' and UnitName = ''' IDcentralina...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodo2DCrL = curs.Data;
|
|
comando = ['select Val0, Val1 from RawDataView where Date > ''' ...
|
|
dataini2DCrL ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum = ' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodo2DCrLd = curs.Data;
|
|
if Ch2DCrL(ii,1) == 3 % Termometro
|
|
comando = ['select Val2 from RawDataView where Date = ''' ...
|
|
dataini2DCrL ''' and Time >= ''' tempoini2DCrL ''' and UnitName = ''' IDcentralina...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodo2DCrL_NTC = curs.Data;
|
|
comando = ['select Val2 from RawDataView where Date > ''' ...
|
|
dataini2DCrL ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum = ' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodo2DCrL_NTCd = curs.Data;
|
|
else
|
|
DATnodo2DCrL_NTC = 0;
|
|
DATnodo2DCrL_NTCd = 0;
|
|
end
|
|
elseif Ch2DCrL(ii,1) >= 4
|
|
comando = ['select Val0, Val2 from RawDataView where Date = ''' ...
|
|
dataini32CrL ''' and Time >= ''' tempoini2DCrL ''' and UnitName = ''' IDcentralina...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodo2DCrL = curs.Data;
|
|
comando = ['select Val0, Val2 from RawDataView where Date > ''' ...
|
|
dataini2DCrL ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum = ' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodo2DCrLd = curs.Data;
|
|
DATnodo2DCrL_NTC = 0;
|
|
DATnodo2DCrL_NTCd = 0;
|
|
end
|
|
|
|
% Concateno i dati relativi a Step 1 e 2 per il nodo ii-esimo.
|
|
|
|
% DATnodo è la matrice che raccoglie i dati dell' ii-esimo nodo,
|
|
% DATnodi è la matrice che concatena i dati relativi a ciascun nodo.
|
|
[rn,~] = size(DATnodo2DCrLd); % controllo date
|
|
if rn < rd % normalmente sono uguali
|
|
for i = rn+1:rd
|
|
DATnodo2DCrLd(i,:) = DATnodo2DCrLd(rn,:); % se mancano dati, copio gli ultimi
|
|
end
|
|
wardat = ['Node 2D Crack Link ' num2str(ii) ' does NOT work!'];
|
|
fprintf(fileID,fmt,wardat);
|
|
w = 1;
|
|
end
|
|
[rn,~] = size(DATnodo2DCrL_NTCd); % controllo date
|
|
if rn < rd % normalmente sono uguali
|
|
for i = rn+1:rd
|
|
DATnodo2DCrL_NTCd(i,:) = DATnodo2DCrL_NTCd(rn,:); % se mancano dati, copio gli ultimi
|
|
end
|
|
wardat = ['NTC of Node 2D Crack Link ' num2str(ii) ' does NOT work!'];
|
|
fprintf(fileID,fmt,wardat);
|
|
w = 1;
|
|
end
|
|
|
|
if salto2DCrL == 0
|
|
if Ch2DCrL(ii,1) == 3
|
|
if CrL2D_NTC(ii,1) == 1
|
|
Dati2DCrackLink(1:rt,col:col+1) = DATnodo2DCrL; %#ok<*AGROW>
|
|
Dati2DCrackLink_NTC(1:rt,ii) = DATnodo2DCrL_NTC; %#ok<*AGROW>
|
|
if Check(1,2) > 1
|
|
Dati2DCrackLink(rt+1:rt+rd,col:col+1) = DATnodo2DCrLd;
|
|
Dati2DCrackLink_NTC(rt+1:rt+rd,ii) = DATnodo2DCrL_NTCd; %#ok<*AGROW>
|
|
end
|
|
else
|
|
Dati2DCrackLink(1:rt,col:col+1) = DATnodo2DCrL; %#ok<*AGROW>
|
|
if Check(1,2) > 1
|
|
Dati2DCrackLink(rt+1:rt+rd,col:col+1) = DATnodo3DCrLd;
|
|
end
|
|
end
|
|
elseif Ch3DCrL(ii,1) == 2 || Ch3DCrL(ii,1) >= 4
|
|
Dati2DCrackLink(1:rt,col:col+1) = DATnodo2DCrL; %#ok<*AGROW>
|
|
if Check(1,2) > 1
|
|
Dati2DCrackLink(rt+1:rt+rd,col:col+1) = DATnodo2DCrLd;
|
|
end
|
|
end
|
|
else
|
|
if Ch2DCrL(ii,1) == 3
|
|
if CrL2D_NTC(ii,1)==1
|
|
Dati2DCrackLink(1:rd,col:col+1) = DATnodo2DCrL; %#ok<*AGROW>
|
|
Dati2DCrackLink_NTC(1:rd,ii) = DATnodo2DCrL_NTC; %#ok<*AGROW>
|
|
else
|
|
Dati2DCrackLink(1:rd,col:col+1) = DATnodo2DCrL; %#ok<*AGROW>
|
|
end
|
|
elseif Ch2DCrL(ii,1) == 1
|
|
Dati2DCrackLink(1:rd,col:col+1) = DATnodo2DCrL; %#ok<*AGROW>
|
|
end
|
|
end
|
|
|
|
okdat2DCrL = ['Data of node number ' num2str(ii) ' of ' ...
|
|
num2str(r2DCrL) ' 2D Crack Link nodes downloaded correctly'];
|
|
fprintf(fileID,fmt,okdat2DCrL);
|
|
ii = ii+1;
|
|
col = col+2;
|
|
end
|
|
if w == 0
|
|
wardat = 'There are not warning for 2D Crack Link!';
|
|
fprintf(fileID,fmt,wardat);
|
|
end
|
|
|
|
% Controllo gli eventuali errori ('Err1' o '---') e li rimuovo,
|
|
% rimpiazzandoli con l'ultimo dato disponibile di quel nodo
|
|
[r,c] = size(Dati2DCrackLink);
|
|
Err2DCrackLink = zeros(r,c);
|
|
Ncorr = 0;
|
|
NAN = 1;
|
|
ESCI = 0;
|
|
if NuovoZero2DCrL == 1
|
|
if isfile(RawDataFile) == 1
|
|
DatiRaw = csvread(RawDataFile);
|
|
[rDR,cDR] = size(DatiRaw);
|
|
DatiRaw(:,1) = DatiRaw(:,1) + 730000;
|
|
RawDate = find(DatiRaw(:,1)<=datenum(dataini2DCrL));
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDate = [];
|
|
DatiRaw = [];
|
|
end
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDate = [];
|
|
DatiRaw = [];
|
|
end
|
|
for jj=1:c
|
|
% Se il nodo è Dis., devo aumentare di uno la data (il nodo non
|
|
% è ancora stato installato!)
|
|
if strcmp('Dis.',Dati2DCrackLink(1,jj)) == 1
|
|
for dis = 2:r
|
|
if strcmp('Dis.',Dati2DCrackLink(dis,jj)) == 0
|
|
Dati2DCrackLink = Dati2DCrackLink(dis:end,:);
|
|
DatiNTC2DCrackLink = DatiNTC2DCrackLink(dis:end,:);
|
|
DATini2DCrL = DATini2DCrL(dis:end,:);
|
|
[r,c] = size(Dati2DCrackLink);
|
|
break
|
|
elseif dis == r
|
|
NAN = 0;
|
|
DIS = 1;
|
|
if datenum(dataini2DCrL)+1 < now
|
|
dataini2DCrL = datestr(datenum(dataini2DCrL)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yes2DCrL = 0;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if NAN == 1
|
|
if DIS ~= 1 && yes2DCrL == 1
|
|
% --- Codice per il primo dato ---
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',Dati2DCrackLink(1,jj)));
|
|
idxT = find(strcmp('---',Dati2DCrackLink(1,jj)));
|
|
idxT2 = find(strcmp('-',Dati2DCrackLink(1,jj)));
|
|
idxE2 = find(strcmp('Err2',Dati2DCrackLink(1,jj)));
|
|
idxE255 = find(strcmp('Err255',Dati2DCrackLink(1,jj)));
|
|
idxD = find(strcmp('DMUXe',Dati2DCrackLink(1,jj)));
|
|
idxE1F = find(strcmp('Err1File',Dati2DCrackLink(1,jj)));
|
|
idxN = find(strcmp('null',Dati2DCrackLink(1,jj)));
|
|
idxRX = find(strcmp('No RX',Dati2DCrackLink(1,jj)));
|
|
idxI = find(strcmp('id Error',Dati2DCrackLink(1,jj)));
|
|
idxM = find(strcmp('MUX id Error',Dati2DCrackLink(1,jj)));
|
|
idxC = find(strcmp('CH n. Error',Dati2DCrackLink(1,jj)));
|
|
idxU = find(strcmp('Unknown Error',Dati2DCrackLink(1,jj)));
|
|
idxMC = find(strcmp('MsgCorrup',Dati2DCrackLink(1,jj)));
|
|
idxNS = find(strcmp('NotSupp',Dati2DCrackLink(1,jj)));
|
|
idxU2 = find(strcmp('Unknown',Dati2DCrackLink(1,jj)));
|
|
idxNA = find(strcmp('NotAv',Dati2DCrackLink(1,jj)));
|
|
idxND = find(strcmp('No Data',Dati2DCrackLink(1,jj)));
|
|
idxCE = find(strcmp('CH n. Er',Dati2DCrackLink(1,jj)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxCE);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
idx = union(idx,idxND);
|
|
[ri,~] = size(idx);
|
|
if ri == 1
|
|
wardat = 'Warning on the correction of 2D Crack Link nodes: there are not data at the beginning of the array!';
|
|
fprintf(fileID,fmt,wardat);
|
|
if rDR==1 && cDR==1 || NuovoZero2DCrL == 0 % il file non è mai stato scritto, cerco la data precedente
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
if datenum(dataini2DCrL)+1 < now
|
|
dataini2DCrL = datestr(datenum(dataini2DCrL)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yes2DCrL = 0;
|
|
end
|
|
else
|
|
if isempty(RawDate) == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
dataini2DCrL = datestr(datenum(dataini2DCrL)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
if isnan(DatiRaw(RawDate(end),jj+1)) == 0
|
|
Dati2DCrackLink(1,jj) = cellstr(num2str(DatiRaw(RawDate(end),jj+1)));
|
|
Err2DCrackLink(1,jj) = 1;
|
|
wardat = 'Data of 2D Crack Link nodes corrected using Raw Data of reference Csv file.';
|
|
fprintf(fileID,fmt,wardat);
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
else
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
dataini2DCrL = datestr(datenum(dataini2DCrL)-1,'yyyy-mm-dd');
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if ESCI == 0
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',Dati2DCrackLink(:,jj)));
|
|
idxT = find(strcmp('---',Dati2DCrackLink(:,jj)));
|
|
idxT2 = find(strcmp('-',Dati2DCrackLink(:,jj)));
|
|
idxE2 = find(strcmp('Err2',Dati2DCrackLink(:,jj)));
|
|
idxE255 = find(strcmp('Err255',Dati2DCrackLink(:,jj)));
|
|
idxD = find(strcmp('DMUXe',Dati2DCrackLink(:,jj)));
|
|
idxE1F = find(strcmp('Err1File',Dati2DCrackLink(:,jj)));
|
|
idxN = find(strcmp('null',Dati2DCrackLink(:,jj)));
|
|
idxRX = find(strcmp('No RX',Dati2DCrackLink(:,jj)));
|
|
idxI = find(strcmp('id Error',Dati2DCrackLink(:,jj)));
|
|
idxM = find(strcmp('MUX id Error',Dati2DCrackLink(:,jj)));
|
|
idxC = find(strcmp('CH n. Error',Dati2DCrackLink(:,jj)));
|
|
idxU = find(strcmp('Unknown Error',Dati2DCrackLink(:,jj)));
|
|
idxMC = find(strcmp('MsgCorrup',Dati2DCrackLink(:,jj)));
|
|
idxNS = find(strcmp('NotSupp',Dati2DCrackLink(:,jj)));
|
|
idxU2 = find(strcmp('Unknown',Dati2DCrackLink(:,jj)));
|
|
idxNA = find(strcmp('NotAv',Dati2DCrackLink(:,jj)));
|
|
idxND = find(strcmp('No Data',Dati2DCrackLink(:,jj)));
|
|
idxCE = find(strcmp('CH n. Er',Dati2DCrackLink(:,jj)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxCE);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
idx = union(idx,idxND);
|
|
[ri,~] = size(idx);
|
|
for kk=1:ri
|
|
indice=idx(kk);
|
|
if indice == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
dataini2DCrL = datestr(datenum(dataini2DCrL)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
Dati2DCrackLink(indice,jj) = Dati2DCrackLink(indice-1,jj);
|
|
Err2DCrackLink(indice,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
end
|
|
if ESCI == 1
|
|
break
|
|
end
|
|
% Elimino gli eventuali Not a Number
|
|
for nnn = 2:r
|
|
check = isnan(cell2mat(Dati2DCrackLink(nnn,jj)));
|
|
if check == 1
|
|
Dati2DCrackLink(nnn,jj) = Dati2DCrackLink(nnn-1,jj);
|
|
Err2DCrackLink(nnn,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
end
|
|
end
|
|
end
|
|
corrdat = ['' num2str(Ncorr) ' corrections of 2D Crack Link data done!'];
|
|
fprintf(fileID,fmt,corrdat);
|
|
% Concateno informazioni generali e/o letture dai nodi.
|
|
Dati2DCrackLink = [DATini2DCrL str2double(Dati2DCrackLink)];
|
|
% Elimino eventuali date doppie
|
|
a = 2;
|
|
while a <= r
|
|
if Dati2DCrackLink(a,1) == Dati2DCrackLink(a-1,1)
|
|
Dati2DCrackLink(a,:) = [];
|
|
r = r-1;
|
|
else
|
|
a = a+1;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
if ESCI == 0
|
|
if sum(CrL2D_NTC(:,1))>0
|
|
% NTC
|
|
% Controllo gli eventuali errori ('Err1' o '---') e li rimuovo,
|
|
% rimpiazzandoli con l'ultimo dato disponibile di quel nodo
|
|
[r,c] = size(DatiNTC2DCrackLink);
|
|
Ncorr = 0;
|
|
ErrNTC2DCrackLink = zeros(r,c);
|
|
if NuovoZero2DCrL == 1
|
|
if isfile(RawDataFile) == 1
|
|
DatiRawNTC = csvread(RawDataFileNTC);
|
|
[rDR,cDR] = size(DatiRawNTC);
|
|
DatiRawNTC(:,1) = DatiRawNTC(:,1) + 730000;
|
|
RawDateNTC = find(DatiRawNTC(:,1)<=datenum(dataini2DCrL));
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDateNTC = [];
|
|
DatiRawNTC = [];
|
|
end
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDateNTC = [];
|
|
DatiRawNTC = [];
|
|
end
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiNTC2DCrackLink(1,jj)));
|
|
idxT3 = find(strcmp('---',DatiNTC2DCrackLink(1,jj)));
|
|
idxT = find(strcmp('-',DatiNTC2DCrackLink(1,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiNTC2DCrackLink(1,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiNTC2DCrackLink(1,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiNTC2DCrackLink(1,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiNTC2DCrackLink(1,jj)));
|
|
idxN = find(strcmp('null',DatiNTC2DCrackLink(1,jj)));
|
|
idxRX = find(strcmp('No RX',DatiNTC2DCrackLink(1,jj)));
|
|
idxI = find(strcmp('id Error',DatiNTC2DCrackLink(1,jj)));
|
|
idxM = find(strcmp('MUX id Error',DatiNTC2DCrackLink(1,jj)));
|
|
idxC = find(strcmp('CH n. Error',DatiNTC2DCrackLink(1,jj)));
|
|
idxU = find(strcmp('Unknown Error',DatiNTC2DCrackLink(1,jj)));
|
|
idxMC = find(strcmp('MsgCorrup',DatiNTC2DCrackLink(1,jj)));
|
|
idxNS = find(strcmp('NotSupp',DatiNTC2DCrackLink(1,jj)));
|
|
idxU2 = find(strcmp('Unknown',DatiNTC2DCrackLink(1,jj)));
|
|
idxNA = find(strcmp('NotAv',DatiNTC2DCrackLink(1,jj)));
|
|
idxND = find(strcmp('No Data',DatiNTC2DCrackLink(1,jj)));
|
|
idxCE = find(strcmp('CH n. Er',DatiNTC2DCrackLink(1,jj)));
|
|
idx = union(idxE,idxT3);
|
|
idx = union(idx,idxND);
|
|
idx = union(idx,idxCE);
|
|
idx = union(idx,idxT);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
[ri,~] = size(idx);
|
|
if ri == 1
|
|
wardat = 'Warning on the correction of 2D Crack Link nodes: there are not data at the beginning of the array!';
|
|
fprintf(fileID,fmt,wardat);
|
|
if rDR==1 && cDR==1 || NuovoZero2DCrL == 0 % il file non è mai stato scritto, cerco la data precedente
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
if datenum(dataini2DCrL)+1 < now
|
|
dataini2DCrL = datestr(datenum(dataini2DCrL)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yes2DCrL = 0;
|
|
end
|
|
else
|
|
if isempty(RawDate) == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
dataini2DCrL = datestr(datenum(dataini2DCrL)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
Dati2DCrackLink(1,jj) = cellstr(num2str(DatiRaw(RawDateNTC(end),jj+1)));
|
|
Err2DCrackLink(1,jj) = 1;
|
|
wardat = 'Data of 2D Crack Link nodes corrected using Raw Data of reference Csv file.';
|
|
fprintf(fileID,fmt,wardat);
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiNTC2DCrackLink(:,jj)));
|
|
idxT3 = find(strcmp('---',DatiNTC2DCrackLink(:,jj)));
|
|
idxT = find(strcmp('-',DatiNTC2DCrackLink(:,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiNTC2DCrackLink(:,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiNTC2DCrackLink(:,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiNTC2DCrackLink(:,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiNTC2DCrackLink(:,jj)));
|
|
idxN = find(strcmp('null',DatiNTC2DCrackLink(:,jj)));
|
|
idxRX = find(strcmp('No RX',DatiNTC2DCrackLink(:,jj)));
|
|
idxI = find(strcmp('id Error',DatiNTC2DCrackLink(:,jj)));
|
|
idxM = find(strcmp('MUX id Error',DatiNTC2DCrackLink(:,jj)));
|
|
idxC = find(strcmp('CH n. Error',DatiNTC2DCrackLink(:,jj)));
|
|
idxU = find(strcmp('Unknown Error',DatiNTC2DCrackLink(:,jj)));
|
|
idxMC = find(strcmp('MsgCorrup',DatiNTC2DCrackLink(:,jj)));
|
|
idxNS = find(strcmp('NotSupp',DatiNTC2DCrackLink(:,jj)));
|
|
idxU2 = find(strcmp('Unknown',DatiNTC2DCrackLink(:,jj)));
|
|
idxNA = find(strcmp('NotAv',DatiNTC2DCrackLink(:,jj)));
|
|
idxND = find(strcmp('No Data',DatiNTC2DCrackLink(:,jj)));
|
|
idxCE = find(strcmp('CH n. Er',DatiNTC2DCrackLink(:,jj)));
|
|
idx = union(idxE,idxT3);
|
|
idx = union(idx,idxND);
|
|
idx = union(idx,idxCE);
|
|
idx = union(idx,idxT);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
[ri,~] = size(idx);
|
|
for kk=1:ri
|
|
indice=idx(kk);
|
|
if indice == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
dataini2DCrL = datestr(datenum(dataini2DCrL)-1,'yyyy-mm-dd');
|
|
else
|
|
DatiNTC2DCrackLink(indice,jj) = DatiNTC2DCrackLink(indice-1,jj);
|
|
ErrNTC2DCrackLink(indice,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
end
|
|
if ESCI == 1
|
|
break
|
|
end
|
|
% Elimino gli eventuali Not a Number
|
|
for nnn = 2:r
|
|
check = isnan(cell2mat(DatiNTC2DCrackLink(nnn,jj)));
|
|
if check == 1
|
|
DatiNTC2DCrackLink(nnn,jj) = DatiNTC2DCrackLink(nnn-1,jj);
|
|
ErrNTC2DCrackLink(nnn,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
end
|
|
end
|
|
end
|
|
corrdat = ['' num2str(Ncorr) ' corrections of NTC of 2D Crack Link data done!'];
|
|
fprintf(fileID,fmt,corrdat);
|
|
% Concateno informazioni generali e/o letture dai nodi.
|
|
DatiNTC2DCrackLink = [DATini2DCrL str2double(DatiNTC2DCrackLink)];
|
|
% Elimino eventuali date doppie
|
|
a = 2;
|
|
while a <= r
|
|
if DatiNTC2DCrackLink(a,1) == DatiNTC2DCrackLink(a-1,1)
|
|
DatiNTC2DCrackLink(a,:) = [];
|
|
r = r-1;
|
|
else
|
|
a = a+1;
|
|
end
|
|
end
|
|
else
|
|
ErrNTC2DCrackLink = 0;
|
|
end
|
|
end
|
|
end
|
|
if NuovoZero2DCrL == 1 && yes2DCrL == 1
|
|
[rDR,cDR] = size(DatiRaw);
|
|
if rDR~=1 && cDR~=1 && isempty(DatiRaw) == 0
|
|
RawDate1 = find(DatiRaw(:,1)<=Dati2DCrackLink(1,1));
|
|
if isempty(RawDate1) == 1
|
|
RawDate2 = 1;
|
|
elseif RawDate1(end) == rDR
|
|
RawDate2 = find(Dati2DCrackLink(:,1)>DatiRaw(end,1));
|
|
else
|
|
RawDate2 = find(Dati2DCrackLink(:,1)>DatiRaw(RawDate1(end)+1,1));
|
|
end
|
|
else
|
|
RawDate1 = [];
|
|
RawDate2 = 1;
|
|
end
|
|
if isempty(RawDate1) == 0 && isempty(RawDate2) == 0
|
|
Dati = [DatiRaw(1:RawDate1(end),:);Dati2DCrackLink(RawDate2(1):end,:)];
|
|
elseif isempty(RawDate1) == 1 && isempty(RawDate2) == 0
|
|
Dati = Dati2DCrackLink;
|
|
else
|
|
Dati = DatiRaw;
|
|
end
|
|
% Elimino appoggio più vecchio di un mese
|
|
RawDate3 = find(Dati(:,1)<now-30);
|
|
if isempty(RawDate3) == 0
|
|
[rDati,~] = size(Dati);
|
|
if RawDate3(end) == rDati
|
|
else
|
|
Dati = Dati(RawDate3(end)+1:end,:);
|
|
end
|
|
end
|
|
if isfile(RawDataFile) == 1
|
|
delete(RawDataFile);
|
|
end
|
|
|
|
if sum(CrL2D_NTC(:,1))>0
|
|
[rDR,cDR] = size(DatiRawNTC);
|
|
if rDR~=1 && cDR~=1 && isempty(DatiRawNTC) == 0
|
|
RawDate1 = find(DatiRawNTC(:,1)<=DatiNTC2DCrackLink(1,1));
|
|
if isempty(RawDate1) == 1
|
|
RawDate2 = 1;
|
|
elseif RawDate1(end) == rDR
|
|
RawDate2 = find(DatiNTC2DCrackLink(:,1)>DatiRawNTC(end,1));
|
|
else
|
|
RawDate2 = find(DatiNTC2DCrackLink(:,1)>DatiRawNTC(RawDate1(end)+1,1));
|
|
end
|
|
else
|
|
RawDate1 = [];
|
|
RawDate2 = 1;
|
|
end
|
|
if isempty(RawDate1) == 0 && isempty(RawDate2) == 0
|
|
DatiNTC = [DatiRawNTC(1:RawDate1(end),:);DatiNTC2DCrackLink(RawDate2(1):end,:)];
|
|
elseif isempty(RawDate1) == 1 && isempty(RawDate2) == 0
|
|
DatiNTC = DatiNTC2DCrackLink;
|
|
else
|
|
DatiNTC = DatiRawNTC;
|
|
end
|
|
% Elimino appoggio più vecchio di un mese
|
|
RawDate3 = find(DatiNTC(:,1)<now-30);
|
|
if isempty(RawDate3) == 0
|
|
[rDati,~] = size(DatiNTC);
|
|
if RawDate3(end) == rDati
|
|
else
|
|
DatiNTC = DatiNTC(RawDate3(end)+1:end,:);
|
|
end
|
|
end
|
|
if isfile(RawDataFileNTC) == 1
|
|
delete(RawDataFileNTC);
|
|
end
|
|
end
|
|
else
|
|
Dati = Dati2DCrackLink;
|
|
if sum(CrL2D_NTC(:,1))>0
|
|
DatiNTC = DatiNTC2DCrackLink;
|
|
end
|
|
end
|
|
Dati(:,1) = Dati(:,1) - 730000;
|
|
csvwrite(RawDataFile,Dati);
|
|
if sum(CrL2D_NTC(:,1))>0
|
|
DatiNTC(:,1) = DatiNTC(:,1) - 730000;
|
|
csvwrite(RawDataFileNTC,DatiNTC);
|
|
end
|
|
end
|
|
|
|
%% Stress Meter
|
|
attiva_SM = zeros(1,rSM);
|
|
if yesSM == 0 % Non ci sono Stress Meter
|
|
DatiStressMeter = [];
|
|
DatiNTCStressMeter = [];
|
|
DatiStressMeter_Rif = [];
|
|
DatiNTCStressMeter_Rif = [];
|
|
ErrStressMeter = [];
|
|
ChSM = [];
|
|
SM_NTC = [];
|
|
wardat = 'lettura function: there are not Stress Meter';
|
|
fprintf(fileID,fmt,wardat);
|
|
else
|
|
RawDataFile = ['' IDcentralina '-' DTcatena '-Stress-RawData.csv']; % Specifico per Stress Meter
|
|
RawDataFileNTC = ['' IDcentralina '-' DTcatena '-NTCStress-RawData.csv'];
|
|
ChSM = cell2mat(NodoStressMeter(:,4));
|
|
SM_NTC = cell2mat(NodoStressMeter(:,5));
|
|
NAN = 0;
|
|
DIS = 0;
|
|
while NAN == 0
|
|
if datenum(datainiSM) == datenum(Data(1,1))
|
|
tempoiniSM = char(Data(1,2));
|
|
end
|
|
NodeType = 'Stress Meter';
|
|
NodeNumSM = num2str(cell2mat(NodoStressMeter(1,2))); % scarico i dati del primo nodo
|
|
% Scarico dei dati relativi alla centralina con informazioni di Data e ora, livello batteria e temperatura
|
|
% Step 1 (vedi commento più avanti)
|
|
comando = ['select Date, Time from RawDataView where Date = ''' ...
|
|
datainiSM ''' and Time >= ''' tempoiniSM ''' and UnitName = ''' IDcentralina...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum = ''' NodeNumSM ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATiniSM = curs.Data;
|
|
Ntempo = DATiniSM;
|
|
[r,c] = size(DATiniSM);
|
|
saltoSM = 0;
|
|
if r==1 && c==1
|
|
textdatSM = 'Warning: error reading Stress Meter (control unit data)!';
|
|
fprintf(fileID,fmt,textdatSM);
|
|
saltoSM = 1;
|
|
end
|
|
% Step 2 (vedi commento più avanti)
|
|
comando = ['select Date, Time from RawDataView where Date > ''' ...
|
|
datainiSM ''' and UnitName = ''' IDcentralina ...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' NodeType...
|
|
''' and NodeNum = ''' NodeNumSM ''' '];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DAT2SM = curs.Data;
|
|
Ndate = DAT2SM;
|
|
if saltoSM == 1
|
|
DATiniSM = DAT2SM;
|
|
end
|
|
Check = size(DAT2SM);
|
|
if Check(1,2) > 1 % ho superato il primo giorno
|
|
if saltoSM == 0
|
|
% Concateno le informazioni relative a Step 1 e 2 (se necessario...)
|
|
DATiniSM = [DATiniSM; DAT2SM];
|
|
end
|
|
end
|
|
% Modifico il formato di data e ora in DATini.
|
|
[rD,cD] = size(DATiniSM);
|
|
if rD ~=1 && cD ~=1
|
|
T = [cell2mat(DATiniSM(:,1)) repmat(' ', [rD,1]) cell2mat(DATiniSM(:,2))];
|
|
T = datenum(T);
|
|
% Converto da Cell Array a Matrice.
|
|
DATiniSM = T;
|
|
else
|
|
DATiniSM = [];
|
|
end
|
|
|
|
% Scarico dati relativi ai singoli nodi
|
|
[rd,~] = size(Ndate); % numero di dati successivi al primo giorno di calcolo
|
|
[rt,~] = size(Ntempo); % numero di dati del primo giorno di calcolo
|
|
% creo la matrice per i dati Extensometer Link
|
|
if saltoSM == 0
|
|
if Check(1,2) > 1
|
|
DatiStressMeter = cell(rd+rt,rSM);
|
|
DatiNTCStressMeter = cell(rd+rt,rSM);
|
|
else
|
|
DatiStressMeter = cell(rt,rSM);
|
|
DatiNTCStressMeter = cell(rt,rSM);
|
|
end
|
|
else
|
|
DatiStressMeter = cell(rd,rSM);
|
|
DatiNTCStressMeter = cell(rd,rSM);
|
|
end
|
|
DatiStressMeter_Rif = cell(150,rSM);
|
|
DatiNTCStressMeter_Rif = cell(150,rSM);
|
|
NStress = cell2mat(NodoStressMeter(:,2));
|
|
col = 1;
|
|
ii = 1;
|
|
w = 0;
|
|
while ii <= rSM
|
|
% Step 1: Acquisisco i dati registrati successivamente all'ultimo scarico,
|
|
% ma limitandomi a quelli registrati nel corso di quella singola giornata;
|
|
nN = NStress(ii,1);
|
|
nNodo = num2str(nN);
|
|
% Dato
|
|
comando = ['select Val0 from RawDataView where Date = ''' ...
|
|
datainiSM ''' and Time >= ''' tempoiniSM ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and UnitName = ''' IDcentralina ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoSM = curs.Data;
|
|
% Dato
|
|
comando = ['select Val0 from RawDataView where Date > ''' ...
|
|
datainiSM ''' and UnitName = ''' IDcentralina ...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = '''...
|
|
NodeType ''' and NodeNum = ' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoSMd = curs.Data;
|
|
% Riferimento
|
|
comando = ['select Val0 from RawDataView where Date = ''' ...
|
|
datestr(Date_Rif_SM,'yyyy-mm-dd') ''' and Time >= ''' datestr(Date_Rif_SM,'HH:MM:SS')...
|
|
''' and ToolNameID = ''' DTcatena ''' and UnitName = ''' IDcentralina ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoSM_Rif = curs.Data;
|
|
if ChSM(ii,1) == 1
|
|
% T
|
|
DATnodoSM_NTC = 0;
|
|
DATnodoSMd_NTC = 0;
|
|
elseif ChSM(ii,1) == 2
|
|
if SM_NTC(ii,1)==1
|
|
comando = ['select Val1 from RawDataView where Date = ''' ...
|
|
datainiSM ''' and Time >= ''' tempoiniSM ''' and ToolNameID = ''' ...
|
|
DTcatena ''' and UnitName = ''' IDcentralina ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoSM_NTC = curs.Data;
|
|
% Dato
|
|
comando = ['select Val1 from RawDataView where Date > ''' ...
|
|
datainiSM ''' and UnitName = ''' IDcentralina ...
|
|
''' and ToolNameID = ''' DTcatena ''' and NodeType = '''...
|
|
NodeType ''' and NodeNum = ' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoSMd_NTC = curs.Data;
|
|
% Riferimento
|
|
comando = ['select Val1 from RawDataView where Date = ''' ...
|
|
datestr(Date_Rif_SM,'yyyy-mm-dd') ''' and Time >= ''' datestr(Date_Rif_SM,'HH:MM:SS')...
|
|
''' and ToolNameID = ''' DTcatena ''' and UnitName = ''' IDcentralina ''' and NodeType = ''' ...
|
|
NodeType ''' and NodeNum =' nNodo ''];
|
|
curs = exec(conn,comando);
|
|
curs = fetch(curs);
|
|
DATnodoNTCSM_Rif = curs.Data;
|
|
else
|
|
DATnodoSM_NTC = 0;
|
|
DATnodoSMd_NTC = 0;
|
|
end
|
|
end
|
|
|
|
[rn,~] = size(DATnodoSMd); % controllo date
|
|
if rn < rd % normalmente sono uguali
|
|
for i = rn+1:rd
|
|
DATnodoSMd(i,:) = DATnodoSMd(rn,:); % se mancano dati, copio gli ultimi
|
|
end
|
|
wardat = ['Node Stress Meter ' num2str(ii) ' does NOT work!'];
|
|
fprintf(fileID,fmt,wardat);
|
|
w = 1;
|
|
end
|
|
[rnT,~] = size(DATnodoSMd_NTC); % controllo date
|
|
if rnT < rd % normalmente sono uguali
|
|
for i = rnT+1:rd
|
|
DATnodoSMd_NTC(i,:) = DATnodoSMd_NTC(rnT,:); % se mancano dati, copio gli ultimi
|
|
end
|
|
wardat = ['NTC of Node Stress Meter ' num2str(ii) ' does NOT work!'];
|
|
fprintf(fileID,fmt,wardat);
|
|
w = 1;
|
|
end
|
|
|
|
% DATnodo è la matrice che raccoglie i dati dell' ii-esimo nodo,
|
|
% DATnodi è la matrice che concatena i dati relativi a ciascun nodo.
|
|
if saltoSM == 0
|
|
if ChSM(ii,1) >= 2
|
|
if SM_NTC(ii,1)==1
|
|
DatiStressMeter(1:rt,col) = DATnodoSM(:,:); %#ok<*AGROW>
|
|
DatiNTCStressMeter(1:rt,col) = DATnodoSM_NTC(:,:); %#ok<*AGROW>
|
|
if Check(1,2) > 1
|
|
[rrr,~] = size(DATnodoSMd);
|
|
if rrr ~= rd
|
|
DatiStressMeter(rt+rd-rrr+1:rt+rd,col) = DATnodoSMd;
|
|
DatiNTCStressMeter(rt+rd-rrr+1:rt+rd,col) = DATnodoSMd_NTC; %#ok<*AGROW>
|
|
else
|
|
DatiStressMeter(rt+1:rt+rd,col) = DATnodoSMd(:,:);
|
|
DatiNTCStressMeter(rt+1:rt+rd,col) = DATnodoSMd_NTC(:,:); %#ok<*AGROW>
|
|
end
|
|
end
|
|
else
|
|
DatiStressMeter(1:rt,col) = DATnodoSM(:,:); %#ok<*AGROW>
|
|
if Check(1,2) > 1
|
|
DatiStressMeter(rt+1:rt+rd,col) = DATnodoSMd(:,:);
|
|
end
|
|
end
|
|
elseif ChSM(ii,1) == 1
|
|
DatiStressMeter(1:rt,col) = DATnodoSM(:,:); %#ok<*AGROW>
|
|
if Check(1,2) > 1
|
|
DatiStressMeter(rt+1:rt+rd,col) = DATnodoSMd(:,:);
|
|
end
|
|
end
|
|
else
|
|
if ChSM(ii,1) >= 2
|
|
if SM_NTC(ii,1)==1
|
|
DatiStressMeter(1:rd,col) = DATnodoSM(:,:); %#ok<*AGROW>
|
|
DatiNTCStressMeter(1:rd,col) = DATnodoSM_NTC(:,:); %#ok<*AGROW>
|
|
else
|
|
DatiStressMeter(1:rd,col) = DATnodoSM(:,:); %#ok<*AGROW>
|
|
end
|
|
elseif ChSM(ii,1) == 1
|
|
DatiStressMeter(1:rd,col) = DATnodoSM(:,:); %#ok<*AGROW>
|
|
end
|
|
end
|
|
|
|
% Riferimento
|
|
[dim,~] = size(DATnodoSM_Rif); % controllo date
|
|
DatiStressMeter_Rif(1:dim,col) = DATnodoSM_Rif;
|
|
if col == 1
|
|
DatiStressMeter_Rif(dim+1:end,:) = [];
|
|
end
|
|
[dimT,~] = size(DATnodoNTCSM_Rif); % controllo date
|
|
DatiNTCStressMeter_Rif(1:dimT,col) = DATnodoNTCSM_Rif;
|
|
if col == 1
|
|
DatiNTCStressMeter_Rif(dim+1:end,:) = [];
|
|
end
|
|
|
|
okdatSM = ['Data of node number ' num2str(ii) ' of ' ...
|
|
num2str(rSM) ' Stress Meter nodes downloaded correctly'];
|
|
fprintf(fileID,fmt,okdatSM);
|
|
ii = ii+1;
|
|
col = col+1;
|
|
end
|
|
if w == 0
|
|
wardat = 'There are not warning for Stress Meter!';
|
|
fprintf(fileID,fmt,wardat);
|
|
end
|
|
|
|
% Controllo gli eventuali errori ('Err1' o '---') e li rimuovo,
|
|
% rimpiazzandoli con l'ultimo dato disponibile di quel nodo
|
|
|
|
% Dati
|
|
[r,c] = size(DatiStressMeter);
|
|
ErrStressMeter = zeros(r,c);
|
|
Ncorr = 0;
|
|
ESCI = 0;
|
|
Rilancia = 0;
|
|
NAN = 1;
|
|
if NuovoZeroSM == 1
|
|
if isfile(RawDataFile) == 1
|
|
DatiRaw = csvread(RawDataFile);
|
|
[rDR,cDR] = size(DatiRaw);
|
|
DatiRaw(:,1) = DatiRaw(:,1) + 730000;
|
|
RawDate = find(DatiRaw(:,1)<=datenum(datainiSM));
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDate = [];
|
|
DatiRaw = [];
|
|
end
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDate = [];
|
|
DatiRaw = [];
|
|
end
|
|
[dim,numS] = size(DatiStressMeter_Rif);
|
|
for SM = 1:numS
|
|
RIF = 0;
|
|
row = 1;
|
|
rompi = 0;
|
|
while RIF == 0
|
|
if attiva_SM(1,SM) == 0
|
|
if row <= dim
|
|
% Controllo la data di riferimento
|
|
idxE = find(strcmp('Err1',DatiStressMeter_Rif(row,SM)));
|
|
idxT = find(strcmp('---',DatiStressMeter_Rif(row,SM)));
|
|
idxE2 = find(strcmp('Err2',DatiStressMeter_Rif(row,SM)));
|
|
idxE255 = find(strcmp('Err255',DatiStressMeter_Rif(row,SM)));
|
|
idxD = find(strcmp('DMUXe',DatiStressMeter_Rif(row,SM)));
|
|
idxE1F = find(strcmp('Err1File',DatiStressMeter_Rif(row,SM)));
|
|
idxN = find(strcmp('null',DatiStressMeter_Rif(row,SM)));
|
|
idxRX = find(strcmp('No RX',DatiStressMeter_Rif(row,SM)));
|
|
idxI = find(strcmp('id Error',DatiStressMeter_Rif(row,SM)));
|
|
idxM = find(strcmp('MUX id Error',DatiStressMeter_Rif(row,SM)));
|
|
idxC = find(strcmp('CH n. Error',DatiStressMeter_Rif(row,SM)));
|
|
idxU = find(strcmp('Unknown Error',DatiStressMeter_Rif(row,SM)));
|
|
idxMC = find(strcmp('MsgCorrup',DatiStressMeter_Rif(row,SM)));
|
|
idxNS = find(strcmp('NotSupp',DatiStressMeter_Rif(row,SM)));
|
|
idxU2 = find(strcmp('Unknown',DatiStressMeter_Rif(row,SM)));
|
|
idxNA = find(strcmp('NotAv',DatiStressMeter_Rif(row,SM)));
|
|
idxDIS = find(strcmp('Dis.',DatiStressMeter_Rif(row,SM)));
|
|
idxND = find(strcmp('No Data',DatiStressMeter_Rif(row,SM)));
|
|
idxPP = find(strcmp('[]',DatiStressMeter_Rif(row,SM)));
|
|
idxCE = find(strcmp('CH n. Er',DatiStressMeter_Rif(row,SM)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxCE);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
idx = union(idx,idxDIS);
|
|
idx = union(idx,idxND);
|
|
idx = union(idx,idxPP);
|
|
[~,ri] = size(idx);
|
|
if isempty(idx) == 0 || isempty(cell2mat(DatiStressMeter_Rif(row,SM))) == 1
|
|
if ri >= 1 % Se almeno uno è in errore, allora guardo la riga dopo
|
|
row = row+1;
|
|
else
|
|
RIF = 1;
|
|
if attiva_SM(1,SM) == 0
|
|
DatiStress_Rif(1,SM) = DatiStressMeter_Rif(row,SM);
|
|
DatiNTCStress_Rif(1,SM) = str2double(DatiNTCStressMeter_Rif(row,SM));
|
|
end
|
|
attiva_SM(1,SM) = 1;
|
|
end
|
|
else
|
|
RIF = 1;
|
|
if attiva_SM(1,SM) == 0
|
|
DatiStress_Rif(1,SM) = DatiStressMeter_Rif(row,SM);
|
|
DatiNTCStress_Rif(1,SM) = str2double(DatiNTCStressMeter_Rif(row,SM));
|
|
end
|
|
attiva_SM(1,SM) = 1;
|
|
end
|
|
else
|
|
Date_Rif_SM = floor(Date_Rif_SM)+1;
|
|
if Date_Rif_SM > now
|
|
Rilancia = 0;
|
|
RIF = 1;
|
|
DatiStress_Rif(1,SM) = num2cell(0);
|
|
DatiNTCStress_Rif(1,SM) = 0;
|
|
attiva_SM(1,SM) = 0;
|
|
else
|
|
RIF = 1;
|
|
NAN = 0;
|
|
Rilancia = 1;
|
|
end
|
|
rompi = 1;
|
|
end
|
|
else
|
|
break
|
|
end
|
|
end
|
|
if rompi == 1
|
|
break
|
|
end
|
|
end
|
|
|
|
if Rilancia == 0
|
|
for jj=1:c
|
|
% Se il nodo è Dis., devo aumentare di uno la data (il nodo non
|
|
% è ancora stato installato!)
|
|
if strcmp('Dis.',DatiStressMeter(1,jj)) == 1
|
|
for dis = 2:r
|
|
if strcmp('Dis.',DatiStressMeter(dis,jj)) == 0
|
|
DatiStressMeter = DatiStressMeter(dis:end,:);
|
|
DATiniSM = DATiniSM(dis:end,:);
|
|
[r,c] = size(DatiStressMeter);
|
|
break
|
|
elseif dis == r
|
|
NAN = 0;
|
|
DIS = 1;
|
|
if datenum(datainiSM)+1 < now
|
|
datainiSM = datestr(datenum(datainiSM)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yesSM = 0;
|
|
end
|
|
end
|
|
end
|
|
|
|
end
|
|
end
|
|
if DIS ~= 1 && yesSM == 1
|
|
% --- Codice per il primo dato ---
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiStressMeter(1,jj)));
|
|
idxT = find(strcmp('---',DatiStressMeter(1,jj)));
|
|
idxT2 = find(strcmp('-',DatiStressMeter(1,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiStressMeter(1,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiStressMeter(1,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiStressMeter(1,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiStressMeter(1,jj)));
|
|
idxN = find(strcmp('null',DatiStressMeter(1,jj)));
|
|
idxRX = find(strcmp('No RX',DatiStressMeter(1,jj)));
|
|
idxI = find(strcmp('id Error',DatiStressMeter(1,jj)));
|
|
idxM = find(strcmp('MUX id Error',DatiStressMeter(1,jj)));
|
|
idxC = find(strcmp('CH n. Error',DatiStressMeter(1,jj)));
|
|
idxU = find(strcmp('Unknown Error',DatiStressMeter(1,jj)));
|
|
idxMC = find(strcmp('MsgCorrup',DatiStressMeter(1,jj)));
|
|
idxNS = find(strcmp('NotSupp',DatiStressMeter(1,jj)));
|
|
idxU2 = find(strcmp('Unknown',DatiStressMeter(1,jj)));
|
|
idxNA = find(strcmp('NotAv',DatiStressMeter(1,jj)));
|
|
idxND = find(strcmp('No Data',DatiStressMeter(1,jj)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxND);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
idx = union(idx,idxND);
|
|
[ri,~] = size(idx);
|
|
if ri == 1
|
|
wardat = 'Warning on the correction of Stress Meter nodes: there are not data at the beginning of the array!';
|
|
fprintf(fileID,fmt,wardat);
|
|
if rDR==1 && cDR==1 || NuovoZeroSM == 0 % il file non è mai stato scritto, cerco la data precedente
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
if datenum(datainiSM)+1 < now
|
|
datainiSM = datestr(datenum(datainiSM)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yesSM = 0;
|
|
end
|
|
else
|
|
if isempty(RawDate) == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiSM = datestr(datenum(datainiSM)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
if isnan(DatiRaw(RawDate(end),jj+1)) == 0
|
|
DatiStressMeter(1,jj) = cellstr(num2str(DatiRaw(RawDate(end),jj+1)));
|
|
ErrStressMeter(1,jj) = 1;
|
|
wardat = 'Data of Stress Meter nodes corrected using Raw Data of reference Csv file.';
|
|
fprintf(fileID,fmt,wardat);
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
else
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiSM = datestr(datenum(datainiSM)-1,'yyyy-mm-dd');
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if ESCI == 0
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiStressMeter(:,jj)));
|
|
idxT = find(strcmp('---',DatiStressMeter(:,jj)));
|
|
idxT2 = find(strcmp('-',DatiStressMeter(:,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiStressMeter(:,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiStressMeter(:,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiStressMeter(:,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiStressMeter(:,jj)));
|
|
idxN = find(strcmp('null',DatiStressMeter(:,jj)));
|
|
idxRX = find(strcmp('No RX',DatiStressMeter(:,jj)));
|
|
idxI = find(strcmp('id Error',DatiStressMeter(:,jj)));
|
|
idxM = find(strcmp('MUX id Error',DatiStressMeter(:,jj)));
|
|
idxC = find(strcmp('CH n. Error',DatiStressMeter(:,jj)));
|
|
idxU = find(strcmp('Unknown Error',DatiStressMeter(:,jj)));
|
|
idxMC = find(strcmp('MsgCorrup',DatiStressMeter(:,jj)));
|
|
idxNS = find(strcmp('NotSupp',DatiStressMeter(:,jj)));
|
|
idxU2 = find(strcmp('Unknown',DatiStressMeter(:,jj)));
|
|
idxNA = find(strcmp('NotAv',DatiStressMeter(:,jj)));
|
|
idxND = find(strcmp('No Data',DatiStressMeter(:,jj)));
|
|
idx = union(idxE,idxT);
|
|
idx = union(idx,idxND);
|
|
idx = union(idx,idxT2);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
idx = union(idx,idxND);
|
|
[ri,~] = size(idx);
|
|
for kk=1:ri
|
|
indice=idx(kk);
|
|
if indice == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiSM = datestr(datenum(datainiSM)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
DatiStressMeter(indice,jj) = DatiStressMeter(indice-1,jj);
|
|
ErrStressMeter(indice,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
end
|
|
if ESCI == 1
|
|
break
|
|
end
|
|
% Elimino gli eventuali Not a Number
|
|
for nnn = 2:r
|
|
check = isnan(cell2mat(DatiStressMeter(nnn,jj)));
|
|
if check == 1
|
|
DatiStressMeter(nnn,jj) = DatiStressMeter(nnn-1,jj);
|
|
ErrStressMeter(nnn,jj) = 1;
|
|
Ncorr = Ncorr+ri;
|
|
end
|
|
end
|
|
end
|
|
corrdat = ['' num2str(Ncorr) ' corrections of Stress Meter data done!'];
|
|
fprintf(fileID,fmt,corrdat);
|
|
% Concateno informazioni generali e/o letture dai nodi.
|
|
DatiStressMeter = [DATiniSM str2double(DatiStressMeter)];
|
|
DatiStress_Rif = str2double(DatiStress_Rif);
|
|
% Elimino eventuali date doppie
|
|
a = 2;
|
|
while a <= r
|
|
if DatiStressMeter(a,1) == DatiStressMeter(a-1,1)
|
|
DatiStressMeter(a,:) = [];
|
|
r = r-1;
|
|
else
|
|
a = a+1;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
if ESCI == 0
|
|
if sum(SM_NTC(:,1))>0
|
|
if DIS ~= 1 && yesSM == 1
|
|
% NTC
|
|
[r,c] = size(DatiNTCStressMeter);
|
|
Ncorr = 0;
|
|
if NuovoZeroSM == 1
|
|
if isfile(RawDataFile) == 1
|
|
DatiRawNTC = csvread(RawDataFileNTC);
|
|
[rDR,cDR] = size(DatiRawNTC);
|
|
DatiRawNTC(:,1) = DatiRawNTC(:,1) + 730000;
|
|
RawDateNTC = find(DatiRawNTC(:,1)<=datenum(datainiSM));
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
DatiRawNTC = [];
|
|
RawDateNTC = [];
|
|
end
|
|
else
|
|
rDR = 1;
|
|
cDR = 1;
|
|
RawDateNTC = [];
|
|
DatiRawNTC = [];
|
|
end
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiNTCStressMeter(1,jj)));
|
|
idxND = find(strcmp('No Data',DatiNTCStressMeter(1,jj)));
|
|
idxT3 = find(strcmp('---',DatiNTCStressMeter(1,jj)));
|
|
idxT = find(strcmp('-',DatiNTCStressMeter(1,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiNTCStressMeter(1,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiNTCStressMeter(1,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiNTCStressMeter(1,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiNTCStressMeter(1,jj)));
|
|
idxN = find(strcmp('null',DatiNTCStressMeter(1,jj)));
|
|
idxRX = find(strcmp('No RX',DatiNTCStressMeter(1,jj)));
|
|
idxI = find(strcmp('id Error',DatiNTCStressMeter(1,jj)));
|
|
idxM = find(strcmp('MUX id Error',DatiNTCStressMeter(1,jj)));
|
|
idxC = find(strcmp('CH n. Error',DatiNTCStressMeter(1,jj)));
|
|
idxU = find(strcmp('Unknown Error',DatiNTCStressMeter(1,jj)));
|
|
idxMC = find(strcmp('MsgCorrup',DatiNTCStressMeter(1,jj)));
|
|
idxNS = find(strcmp('NotSupp',DatiNTCStressMeter(1,jj)));
|
|
idxU2 = find(strcmp('Unknown',DatiNTCStressMeter(1,jj)));
|
|
idxNA = find(strcmp('NotAv',DatiNTCStressMeter(1,jj)));
|
|
idx = union(idxE,idxT3);
|
|
idx = union(idx,idxT);
|
|
idx = union(idx,idxND);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
[ri,~] = size(idx);
|
|
if ri == 1
|
|
wardat = 'Warning on the correction of NTC of Stress Meter nodes: there are not data at the beginning of the array!';
|
|
fprintf(fileID,fmt,wardat);
|
|
if rDR==1 && cDR==1 || NuovoZeroSM == 0 % il file non è mai stato scritto, cerco la data precedente
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
if datenum(datainiSM)+1 < now
|
|
datainiSM = datestr(datenum(datainiSM)+1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
yesSM = 0;
|
|
end
|
|
else
|
|
if isempty(RawDateNTC) == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiSM = datestr(datenum(datainiSM)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
DatiNTCStressMeter(1,jj) = cellstr(num2str(DatiRawNTC(RawDateNTC(end),jj+1)));
|
|
if ErrStressMeter(indice,jj) == 0
|
|
ErrStressMeter(indice,jj) = 0.5;
|
|
else
|
|
ErrStressMeter(indice,jj) = 1;
|
|
end
|
|
wardat = 'Data of NTC of Stress Meter nodes corrected using Raw Data of reference Csv file.';
|
|
fprintf(fileID,fmt,wardat);
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
for jj=1:c
|
|
% Trovo l'indice della cella contenenti una determinata stringa.
|
|
idxE = find(strcmp('Err1',DatiNTCStressMeter(:,jj)));
|
|
idxND = find(strcmp('No Data',DatiNTCStressMeter(:,jj)));
|
|
idxT3 = find(strcmp('---',DatiNTCStressMeter(:,jj)));
|
|
idxT = find(strcmp('-',DatiNTCStressMeter(:,jj)));
|
|
idxE2 = find(strcmp('Err2',DatiNTCStressMeter(:,jj)));
|
|
idxE255 = find(strcmp('Err255',DatiNTCStressMeter(:,jj)));
|
|
idxD = find(strcmp('DMUXe',DatiNTCStressMeter(:,jj)));
|
|
idxE1F = find(strcmp('Err1File',DatiNTCStressMeter(:,jj)));
|
|
idxN = find(strcmp('null',DatiNTCStressMeter(:,jj)));
|
|
idxRX = find(strcmp('No RX',DatiNTCStressMeter(:,jj)));
|
|
idxI = find(strcmp('id Error',DatiNTCStressMeter(:,jj)));
|
|
idxM = find(strcmp('MUX id Error',DatiNTCStressMeter(:,jj)));
|
|
idxC = find(strcmp('CH n. Error',DatiNTCStressMeter(:,jj)));
|
|
idxU = find(strcmp('Unknown Error',DatiNTCStressMeter(:,jj)));
|
|
idxMC = find(strcmp('MsgCorrup',DatiNTCStressMeter(:,jj)));
|
|
idxNS = find(strcmp('NotSupp',DatiNTCStressMeter(:,jj)));
|
|
idxU2 = find(strcmp('Unknown',DatiNTCStressMeter(:,jj)));
|
|
idxNA = find(strcmp('NotAv',DatiNTCStressMeter(:,jj)));
|
|
idx = union(idxE,idxT3);
|
|
idx = union(idx,idxND);
|
|
idx = union(idx,idxT);
|
|
idx = union(idx,idxE2);
|
|
idx = union(idx,idxE255);
|
|
idx = union(idx,idxD);
|
|
idx = union(idx,idxE1F);
|
|
idx = union(idx,idxN);
|
|
idx = union(idx,idxRX);
|
|
idx = union(idx,idxI);
|
|
idx = union(idx,idxM);
|
|
idx = union(idx,idxC);
|
|
idx = union(idx,idxU);
|
|
idx = union(idx,idxMC);
|
|
idx = union(idx,idxNS);
|
|
idx = union(idx,idxU2);
|
|
idx = union(idx,idxNA);
|
|
[ri,~] = size(idx);
|
|
for kk=1:ri
|
|
indice=idx(kk);
|
|
if indice == 1
|
|
NAN = 0;
|
|
ESCI = 1;
|
|
datainiSM = datestr(datenum(datainiSM)-1,'yyyy-mm-dd');
|
|
break
|
|
else
|
|
DatiNTCStressMeter(indice,jj) = DatiNTCStressMeter(indice-1,jj);
|
|
if ErrStressMeter(indice,jj) == 0
|
|
ErrStressMeter(indice,jj) = 0.5;
|
|
else
|
|
ErrStressMeter(indice,jj) = 1;
|
|
end
|
|
Ncorr = Ncorr+ri;
|
|
NAN = 1;
|
|
end
|
|
end
|
|
if ESCI == 1
|
|
break
|
|
end
|
|
% Elimino gli eventuali Not a Number
|
|
for nnn = 2:r
|
|
check = isnan(cell2mat(DatiNTCStressMeter(nnn,jj)));
|
|
if check == 1
|
|
DatiNTCStressMeter(nnn,jj) = DatiNTCStressMeter(nnn-1,jj);
|
|
if ErrStressMeter(indice,jj) == 0
|
|
ErrStressMeter(indice,jj) = 0.5;
|
|
else
|
|
ErrStressMeter(indice,jj) = 1;
|
|
end
|
|
Ncorr = Ncorr+ri;
|
|
end
|
|
end
|
|
end
|
|
corrdat = ['' num2str(Ncorr) ' corrections of NTC Stress Meter data done!'];
|
|
fprintf(fileID,fmt,corrdat);
|
|
% Concateno informazioni generali e/o letture dai nodi.
|
|
DatiNTCStressMeter = [DATiniSM str2double(DatiNTCStressMeter)];
|
|
% Elimino eventuali date doppie
|
|
a = 2;
|
|
while a <= r
|
|
if DatiNTCStressMeter(a,1) == DatiNTCStressMeter(a-1,1)
|
|
DatiNTCStressMeter(a,:) = [];
|
|
r = r-1;
|
|
else
|
|
a = a+1;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if NuovoZeroSM == 1 && yesSM == 1
|
|
[rDR,cDR] = size(DatiRaw);
|
|
if rDR~=1 && cDR~=1 && isempty(DatiRaw) == 0
|
|
RawDate1 = find(DatiRaw(:,1)<=DatiStressMeter(1,1));
|
|
if isempty(RawDate1) == 1
|
|
RawDate2 = 1;
|
|
elseif RawDate1(end) == rDR
|
|
RawDate2 = find(DatiStressMeter(:,1)>DatiRaw(end,1));
|
|
else
|
|
RawDate2 = find(DatiStressMeter(:,1)>DatiRaw(RawDate1(end)+1,1));
|
|
end
|
|
else
|
|
RawDate1 = [];
|
|
RawDate2 = 1;
|
|
end
|
|
if isempty(RawDate1) == 0 && isempty(RawDate2) == 0
|
|
Dati = [DatiRaw(1:RawDate1(end),:);DatiStressMeter(RawDate2(1):end,:)];
|
|
elseif isempty(RawDate1) == 1 && isempty(RawDate2) == 0
|
|
Dati = DatiStressMeter;
|
|
else
|
|
Dati = DatiRaw;
|
|
end
|
|
% Elimino appoggio più vecchio di un mese
|
|
RawDate3 = find(Dati(:,1)<now-30);
|
|
if isempty(RawDate3) == 0
|
|
[rDati,~] = size(Dati);
|
|
if RawDate3(end) == rDati
|
|
else
|
|
Dati = Dati(RawDate3(end)+1:end,:);
|
|
end
|
|
end
|
|
if isfile(RawDataFile) == 1
|
|
delete(RawDataFile);
|
|
end
|
|
if sum(SM_NTC(:,1))>0
|
|
[rDR,cDR] = size(DatiRawNTC);
|
|
if rDR~=1 && cDR~=1 && isempty(DatiRawNTC) == 0
|
|
RawDate1 = find(DatiRawNTC(:,1)<=DatiNTCStressMeter(1,1));
|
|
if isempty(RawDate1) == 1
|
|
RawDate2 = 1;
|
|
elseif RawDate1(end) == rDR
|
|
RawDate2 = find(DatiNTCStressMeter(:,1)>DatiRawNTC(end,1));
|
|
else
|
|
RawDate2 = find(DatiNTCStressMeter(:,1)>DatiRawNTC(RawDate1(end)+1,1));
|
|
end
|
|
else
|
|
RawDate1 = [];
|
|
RawDate2 = 1;
|
|
end
|
|
if isempty(RawDate1) == 0 && isempty(RawDate2) == 0
|
|
DatiNTC = [DatiRawNTC(1:RawDate1(end),:);DatiNTCStressMeter(RawDate2(1):end,:)];
|
|
elseif isempty(RawDate1) == 1 && isempty(RawDate2) == 0
|
|
DatiNTC = DatiNTCStressMeter;
|
|
else
|
|
DatiNTC = DatiRawNTC;
|
|
end
|
|
% Elimino appoggio più vecchio di un mese
|
|
RawDate3 = find(DatiNTC(:,1)<now-30);
|
|
if isempty(RawDate3) == 0
|
|
[rDati,~] = size(DatiNTC);
|
|
if RawDate3(end) == rDati
|
|
else
|
|
DatiNTC = DatiNTC(RawDate3(end)+1:end,:);
|
|
end
|
|
end
|
|
if isfile(RawDataFileNTC) == 1
|
|
delete(RawDataFileNTC);
|
|
end
|
|
end
|
|
else
|
|
Dati = DatiStressMeter;
|
|
if sum(SM_NTC(:,1))>0
|
|
DatiNTC = DatiNTCStressMeter;
|
|
end
|
|
end
|
|
Dati(:,1) = Dati(:,1) - 730000;
|
|
csvwrite(RawDataFile,Dati);
|
|
if sum(SM_NTC(:,1))>0
|
|
DatiNTC(:,1) = DatiNTC(:,1) - 730000;
|
|
csvwrite(RawDataFileNTC,DatiNTC);
|
|
end
|
|
DatiStressMeter_Rif = DatiStress_Rif;
|
|
DatiNTCStressMeter_Rif = DatiNTCStress_Rif;
|
|
end
|
|
|
|
corrdat = 'lettura function executed';
|
|
fprintf(fileID,fmt,corrdat);
|
|
fclose(fileID);
|
|
|
|
end |