Sync from remote server: 2025-10-12 18:56:41

This commit is contained in:
2025-10-12 18:56:59 +02:00
commit 7e8ee264aa
553 changed files with 161447 additions and 0 deletions

946
RSN/LastElab.m Executable file
View File

@@ -0,0 +1,946 @@
function [NuovoZeroRSN,datainiRSN,tempoiniRSN,NuovoZeroRSNHR,datainiRSNHR,tempoiniRSNHR,...
DatiElabTriggerLink,NuovoZeroTrL,datainiTrL,tempoiniTrL,DatiElabShockSensor,NuovoZeroSS,...
datainiSS,tempoiniSS,NuovoZeroLL,datainiLL,tempoiniLL,datainiGF,tempoiniGF,datainiGS,tempoiniGS,...
DatiElabDebrisLink,NuovoZeroDL,datainiDL,tempoiniDL]...
= LastElab(conn,date,time,IDcentralina,DTcatena,NdatiMedia,NodoRSNLink,yesRSN,NodoRSNLinkHR,yesRSNHR,...
NodoTriggerLink,yesTrL,rTrL,NodoSS,yesSS,rSS,NodoLoadLink,yesLL,yesGF,yesGS,NodoDebrisLink,yesDL,...
rDL,Ndatidespike,FileName)
% Apro scrittura file
fileID = fopen(FileName,'a');
fmt = '%s \r';
text = 'LastElab function started';
fprintf(fileID,fmt,text);
Data(1,1) = cellstr(date);
Data(1,2) = cellstr(time);
%% RSN Link
if yesRSN == 1 % Importo ultimo dato elaborato dei RSN Link
NodeNumRSN = num2str(cell2mat(NodoRSNLink(1,2))); % scarico i dati del primo nodo RSN Link
NodeType = 'RSN Link';
% Dati Grezzi
comando = ['select Date, Time from RawDataView where Date = ''' ...
date ''' and Time >= ''' time ''' and UnitName = ''' IDcentralina ''' and ToolNameID = '''...
DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum =' NodeNumRSN ' '];
curs = exec(conn,comando);
curs = fetch(curs);
D_num_ini = curs.Data;
[rI,cI] = size(D_num_ini);
if rI == 1 && cI == 1 % Non ci sono dati per la data "date"
comando = ['select Date, Time from RawDataView where Date > ''' ...
date ''' and UnitName = ''' IDcentralina...
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
NodeType ''' and NodeNum =' NodeNumRSN ' '];
curs = exec(conn,comando);
curs = fetch(curs);
D_num_ini = curs.Data;
[rI,cI] = size(D_num_ini);
end
if rI && cI == 1
Data_num_ini = 0;
else
Data_num_ini = [cell2mat(D_num_ini(:,1)) repmat(' ', [rI,1]) cell2mat(D_num_ini(:,2))];
end
Data_num_ini = datenum(Data_num_ini); % tutte le date presenti nel DB grezzo
comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ...
date ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' DTcatena ...
''' and NodeType = ''' NodeType ''' and NodeNum =' NodeNumRSN ' '];
curs = exec(conn,comando);
curs = fetch(curs);
Data_LastElab = curs.Data;
[rLE,cLE] = size(Data_LastElab);
Date = [cell2mat(Data(1,1)) repmat(' ', [1,1]) cell2mat(Data(1,2))];
data1a = datenum(Date);
data1b = Data_num_ini(1);
if data1b>data1a
data1 = data1b;
else
data1 = data1a;
end
if rLE==1 && cLE==1
datainiRSN = datestr(data1,'yyyy-mm-dd');
tempoiniRSN = datestr(data1,'HH:MM:SS');
NuovoZeroRSN = 0;
else
% Modifico il formato di data e ora in DATini.
[rD,~] = size(Data_LastElab);
Data_numero = [cell2mat(Data_LastElab(:,1)) repmat(' ', [rD,1]) cell2mat(Data_LastElab(:,2))];
Data_numero = datenum(Data_numero); % tutte le date presenti nel DB grezzo
margine = 1;
if Ndatidespike > NdatiMedia
Ndati = Ndatidespike;
else
Ndati = NdatiMedia;
end
if margine < Ndati/2
margine = round(Ndati/2+1);
end
cont = Ndati + margine;
if cont < 3
cont = 3;
end
[rDS,~] = size(Data_numero);
if rDS <= cont
cont = rDS-1;
end
Data_scarico = Data_numero(end-cont);
Data_scarico = datestr(Data_scarico,'yyyy-mm-dd');
data2 = datenum(Data_scarico);
if data2 > data1
datainiRSN = datestr(data2,'yyyy-mm-dd');
tempoiniRSN = datestr(data2,'HH:MM:SS');
NuovoZeroRSN = 1;
else
datainiRSN = datestr(data1,'yyyy-mm-dd');
tempoiniRSN = datestr(data1,'HH:MM:SS');
NuovoZeroRSN = 0;
end
end
text = 'RSN Link executed during LastElab function';
fprintf(fileID,fmt,text);
else
datainiRSN = [];
tempoiniRSN = [];
NuovoZeroRSN = 0;
end
%% RSN Link HR
if yesRSNHR == 1 % Importo ultimo dato elaborato dei RSN Link HR
NodeNumRSNHR = num2str(cell2mat(NodoRSNLinkHR(1,2))); % scarico i dati del primo nodo RSN Link HR
NodeType = 'RSN Link HR';
% Dati Grezzi
comando = ['select Date, Time from RawDataView where Date = ''' ...
date ''' and Time >= ''' time ''' and UnitName = ''' IDcentralina ''' and ToolNameID = '''...
DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum =' NodeNumRSNHR ' '];
curs = exec(conn,comando);
curs = fetch(curs);
D_num_ini = curs.Data;
[rI,cI] = size(D_num_ini);
if rI == 1 && cI == 1 % Non ci sono dati per la data "date"
comando = ['select Date, Time from RawDataView where Date > ''' ...
date ''' and UnitName = ''' IDcentralina...
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
NodeType ''' and NodeNum =' NodeNumRSNHR ' '];
curs = exec(conn,comando);
curs = fetch(curs);
D_num_ini = curs.Data;
[rI,cI] = size(D_num_ini);
end
if rI && cI == 1
Data_num_ini = 0;
else
Data_num_ini = [cell2mat(D_num_ini(:,1)) repmat(' ', [rI,1]) cell2mat(D_num_ini(:,2))];
end
Data_num_ini = datenum(Data_num_ini); % tutte le date presenti nel DB grezzo
comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ...
date ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' DTcatena...
''' and NodeType = ''' NodeType ''' and NodeNum =' NodeNumRSNHR ' '];
curs = exec(conn,comando);
curs = fetch(curs);
Data_LastElab = curs.Data;
[rLE,cLE] = size(Data_LastElab);
Date = [cell2mat(Data(1,1)) repmat(' ', [1,1]) cell2mat(Data(1,2))];
data1a = datenum(Date);
data1b = Data_num_ini(1);
if data1b>data1a
data1 = data1b;
else
data1 = data1a;
end
if rLE==1 && cLE==1
datainiRSNHR = datestr(data1,'yyyy-mm-dd');
tempoiniRSNHR = datestr(data1,'HH:MM:SS');
NuovoZeroRSNHR = 0;
else
% Modifico il formato di data e ora in DATini.
[rD,~] = size(Data_LastElab);
Data_numero = [cell2mat(Data_LastElab(:,1)) repmat(' ', [rD,1]) cell2mat(Data_LastElab(:,2))];
Data_numero = datenum(Data_numero); % tutte le date presenti nel DB grezzo
margine = 1;
if Ndatidespike > NdatiMedia
Ndati = Ndatidespike;
else
Ndati = NdatiMedia;
end
if margine < Ndati/2
margine = round(Ndati/2+1);
end
cont = Ndati + margine;
if cont < 3
cont = 3;
end
[rDS,~] = size(Data_numero);
if rDS <= cont
cont = rDS-1;
end
Data_scarico = Data_numero(end-cont);
Data_scarico = datestr(Data_scarico,'yyyy-mm-dd');
data2 = datenum(Data_scarico);
if data2 > data1
datainiRSNHR = datestr(data2,'yyyy-mm-dd');
tempoiniRSNHR = datestr(data2,'HH:MM:SS');
NuovoZeroRSNHR = 1; %1
else
datainiRSNHR = datestr(data1,'yyyy-mm-dd');
tempoiniRSNHR = datestr(data1,'HH:MM:SS');
NuovoZeroRSNHR = 0;
end
end
text = 'RSN Link HR executed during LastElab function';
fprintf(fileID,fmt,text);
else
datainiRSNHR = [];
tempoiniRSNHR = [];
NuovoZeroRSNHR = 0;
end
%% Trigger Link
if yesTrL == 1 % Importo ultimo dato elaborato dei Trigger Link
NodeNumTrL = num2str(cell2mat(NodoTriggerLink(1,2))); % scarico i dati del primo nodo Trigger Link
NodeType = 'Trigger Link';
% Dati Grezzi
comando = ['select Date, Time from RawDataView where Date = ''' ...
date ''' and Time >= ''' time ''' and UnitName = ''' IDcentralina ''' and ToolNameID = '''...
DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum =' NodeNumTrL ' '];
curs = exec(conn,comando);
curs = fetch(curs);
D_num_ini = curs.Data;
[rI,cI] = size(D_num_ini);
if rI == 1 && cI == 1 % Non ci sono dati per la data "date"
comando = ['select Date, Time from RawDataView where Date > ''' ...
date ''' and UnitName = ''' IDcentralina...
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
NodeType ''' and NodeNum =' NodeNumTrL ' '];
curs = exec(conn,comando);
curs = fetch(curs);
D_num_ini = curs.Data;
[rI,cI] = size(D_num_ini);
end
if rI && cI == 1
Data_num_ini = 0;
else
Data_num_ini = [cell2mat(D_num_ini(:,1)) repmat(' ', [rI,1]) cell2mat(D_num_ini(:,2))];
end
Data_num_ini = datenum(Data_num_ini); % tutte le date presenti nel DB grezzo
comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ...
date ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' DTcatena ...
''' and NodeType = ''' NodeType ''' and NodeNum =' NodeNumTrL ' '];
curs = exec(conn,comando);
curs = fetch(curs);
Data_LastElab = curs.Data;
[rLE,cLE] = size(Data_LastElab);
Date = [cell2mat(Data(1,1)) repmat(' ', [1,1]) cell2mat(Data(1,2))];
data1a = datenum(Date);
data1b = Data_num_ini(1);
if data1b>data1a
data1 = data1b;
else
data1 = data1a;
end
if rLE==1 && cLE==1
datainiTrL = datestr(data1,'yyyy-mm-dd');
tempoiniTrL = datestr(data1,'HH:MM:SS');
NuovoZeroTrL = 0;
DatiElabTriggerLink = [];
else
% Modifico il formato di data e ora in DATini.
[rD,~] = size(Data_LastElab);
Data_numero = [cell2mat(Data_LastElab(:,1)) repmat(' ', [rD,1]) cell2mat(Data_LastElab(:,2))];
Data_numero = datenum(Data_numero); % tutte le date presenti nel DB grezzo
margine = 1;
Data_scarico = Data_numero(end)-margine;
Data_scarico = datestr(Data_scarico,'yyyy-mm-dd');
data2 = datenum(Data_scarico);
if data2 > data1
datainiTrL = datestr(data2,'yyyy-mm-dd');
tempoiniTrL = datestr(data2,'HH:MM:SS');
NuovoZeroTrL = 1;
else
datainiTrL = datestr(data1,'yyyy-mm-dd');
tempoiniTrL = datestr(data1,'HH:MM:SS');
NuovoZeroTrL = 0;
end
end
if NuovoZeroTrL == 1 % scarico gli ultimi dati elaborati
NAN = 0;
while NAN == 0
if datenum(datainiTrL) < datenum(date)
datainiTrL = date;
end
NTriggerLink = cell2mat(NodoTriggerLink(:,2));
ii = 1; % contatore
col = 3; % contatore colonne
Condition = 0;
while ii <= rTrL
ini_col = col-2;
nN = num2str(NTriggerLink(ii,1));
% Scarico di dati giorno X
comando = ['select EventDate, EventTime, X from ElabDataView where EventDate = ''' ...
Data_scarico(1,1:10) ''' and EventTime >= ''' Data_scarico(1,12:end) ''' and '...
'UnitName = ''' IDcentralina ''' and ToolNameID = '''...
DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ''' nN ''' '];
curs = exec(conn,comando);
curs = fetch(curs);
DATnodoTrLd = curs.Data;
% Scarico di dati giorni successivi
comando = ['select EventDate, EventTime, X from ElabDataView where EventDate > ''' ...
Data_scarico(1,1:10) ''' and UnitName = ''' IDcentralina ''' and ToolNameID = '''...
DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ''' nN ''' '];
curs = exec(conn,comando);
curs = fetch(curs);
DATnodoTrL = curs.Data;
[~,c1] = size(DATnodoTrL);
[~,c2] = size(DATnodoTrLd);
if c1 == c2
DATnodoTrL = [DATnodoTrLd; DATnodoTrL];
elseif c1 < c2 % solo giorno di riferimento
DATnodoTrL = DATnodoTrLd;
end
[rDAT,cDAT] = size(DATnodoTrL);
if rDAT==1 && cDAT==1
clear DatiElabTriggerLink
fclose(fileID);
cancellaDB(IDcentralina,DTcatena,Data_scarico,conn,FileName);
fileID = fopen(FileName,'a');
fmt = '%s \r';
Condition = 1;
break
else
if ii > 1 % Nodo successivo al primo
[rDE,~] = size(DatiElabTriggerLink);
if rDE ~= rDAT
clear DatiElabTriggerLink
fclose(fileID);
cancellaDB(IDcentralina,DTcatena,Data_scarico,conn,FileName);
fileID = fopen(FileName,'a');
fmt = '%s \r';
Condition = 1;
break
end
end
DatiElabTriggerLink(:,ini_col:col) = DATnodoTrL(:,:);
end
ii = ii+1;
end
if Condition == 1
datainiTrL = datenum(datainiTrL) - 1;
Data_scarico = datestr(datainiTrL,'yyyy-mm-dd HH:MM:SS');
datainiTrL = Data_scarico;
fileID = fopen(FileName,'a');
else
Check = isnan(cell2mat(DatiElabTriggerLink(1,3:16:end)));
for jj = 1:rTrL
if Check == 1
datainiTrL = datenum(datainiTrL) - 1;
Data_scarico = datestr(datainiTrL,'yyyy-mm-dd HH:MM:SS');
datainiTrL = Data_scarico;
break
else
NAN = 1;
end
end
end
end
text = 'Trigger Link executed during LastElab function';
fprintf(fileID,fmt,text);
else
DatiElabTriggerLink = [];
end
else
datainiTrL = [];
tempoiniTrL = [];
DatiElabTriggerLink = [];
NuovoZeroTrL = 0;
end
%% Shock Sensor
if yesSS == 1 % Importo ultimo dato elaborato
NodeNumSS = num2str(cell2mat(NodoSS(1,2))); % scarico i dati del primo nodo
NodeType = 'Shock Sensor';
% Dati Grezzi
comando = ['select Date, Time from RawDataView where Date = ''' ...
date ''' and Time >= ''' time ''' and UnitName = ''' IDcentralina ''' and ToolNameID = '''...
DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum =' NodeNumSS ' '];
curs = exec(conn,comando);
curs = fetch(curs);
D_num_ini = curs.Data;
[rI,cI] = size(D_num_ini);
if rI == 1 && cI == 1 % Non ci sono dati per la data "date"
comando = ['select Date, Time from RawDataView where Date > ''' ...
date ''' and UnitName = ''' IDcentralina...
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
NodeType ''' and NodeNum =' NodeNumSS ' '];
curs = exec(conn,comando);
curs = fetch(curs);
D_num_ini = curs.Data;
[rI,cI] = size(D_num_ini);
end
if rI && cI == 1
Data_num_ini = 0;
else
Data_num_ini = [cell2mat(D_num_ini(:,1)) repmat(' ', [rI,1]) cell2mat(D_num_ini(:,2))];
end
Data_num_ini = datenum(Data_num_ini); % tutte le date presenti nel DB grezzo
comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ...
date ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' DTcatena ...
''' and NodeType = ''' NodeType ''' and NodeNum =' NodeNumSS ' '];
curs = exec(conn,comando);
curs = fetch(curs);
Data_LastElab = curs.Data;
[rLE,cLE] = size(Data_LastElab);
Date = [cell2mat(Data(1,1)) repmat(' ', [1,1]) cell2mat(Data(1,2))];
data1a = datenum(Date);
data1b = Data_num_ini(1);
if data1b>data1a
data1 = data1b;
else
data1 = data1a;
end
if rLE==1 && cLE==1
datainiSS = datestr(data1,'yyyy-mm-dd');
tempoiniSS = datestr(data1,'HH:MM:SS');
NuovoZeroSS = 0;
DatiElabShockSensor = [];
else
% Modifico il formato di data e ora in DATini.
[rD,~] = size(Data_LastElab);
Data_numero = [cell2mat(Data_LastElab(:,1)) repmat(' ', [rD,1]) cell2mat(Data_LastElab(:,2))];
Data_numero = datenum(Data_numero); % tutte le date presenti nel DB grezzo
margine = 1;
Data_scarico = Data_numero(end)-margine;
Data_scarico = datestr(Data_scarico,'yyyy-mm-dd');
data2 = datenum(Data_scarico);
if data2 > data1
datainiSS = datestr(data2,'yyyy-mm-dd');
tempoiniSS = datestr(data2,'HH:MM:SS');
NuovoZeroSS = 1;
else
datainiSS = datestr(data1,'yyyy-mm-dd');
tempoiniSS = datestr(data1,'HH:MM:SS');
NuovoZeroSS = 0;
end
end
if NuovoZeroSS == 1 % scarico gli ultimi dati elaborati
NAN = 0;
while NAN == 0
if datenum(datainiSS) < datenum(date)
datainiSS = date;
end
NShockSensor = cell2mat(NodoSS(:,2));
ii = 1; % contatore
col = 3; % contatore colonne
Condition = 0;
while ii <= rSS
ini_col = col-2;
nN = num2str(NShockSensor(ii,1));
% Scarico di dati giorno X
comando = ['select EventDate, EventTime, X from ElabDataView where EventDate = ''' ...
Data_scarico(1,1:10) ''' and EventTime >= ''' Data_scarico(1,12:end) ''' and '...
'UnitName = ''' IDcentralina ''' and ToolNameID = '''...
DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ''' nN ''' '];
curs = exec(conn,comando);
curs = fetch(curs);
DATnodoSSd = curs.Data;
% Scarico di dati giorni successivi
comando = ['select EventDate, EventTime, X from ElabDataView where EventDate > ''' ...
Data_scarico(1,1:10) ''' and UnitName = ''' IDcentralina ''' and ToolNameID = '''...
DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ''' nN ''' '];
curs = exec(conn,comando);
curs = fetch(curs);
DATnodoSS = curs.Data;
[~,c1] = size(DATnodoSS);
[~,c2] = size(DATnodoSSd);
if c1 == c2
DATnodoSS = [DATnodoSSd; DATnodoSS];
elseif c1 < c2 % solo giorno di riferimento
DATnodoSS = DATnodoSSd;
end
[rDAT,cDAT] = size(DATnodoSS);
if rDAT==1 && cDAT==1
clear DatiElabShockSensor
fclose(fileID);
cancellaDB(IDcentralina,DTcatena,Data_scarico,conn,FileName);
fileID = fopen(FileName,'a');
fmt = '%s \r';
Condition = 1;
break
else
if ii > 1 % Nodo successivo al primo
[rDE,~] = size(DatiElabShockSensor);
if rDE ~= rDAT
clear DatiElabShockSensor
fclose(fileID);
cancellaDB(IDcentralina,DTcatena,Data_scarico,conn,FileName);
fileID = fopen(FileName,'a');
fmt = '%s \r';
Condition = 1;
break
end
end
DatiElabShockSensor(:,ini_col:col) = DATnodoSS(:,:);
end
ii = ii+1;
end
if Condition == 1
datainiSS = datenum(datainiSS) - 1;
Data_scarico = datestr(datainiSS,'yyyy-mm-dd HH:MM:SS');
datainiSS = Data_scarico;
fileID = fopen(FileName,'a');
else
Check = isnan(cell2mat(DatiElabShockSensor(1,3:16:end)));
for jj = 1:rSS
if Check == 1
datainiSS = datenum(datainiSS) - 1;
Data_scarico = datestr(datainiSS,'yyyy-mm-dd HH:MM:SS');
datainiSS = Data_scarico;
break
else
NAN = 1;
end
end
end
end
text = 'Shock Sensor executed during LastElab function';
fprintf(fileID,fmt,text);
else
DatiElabShockSensor = [];
end
else
datainiSS = [];
tempoiniSS = [];
DatiElabShockSensor = [];
NuovoZeroSS = 0;
end
%% Load Link
if yesLL == 1 % Importo ultimo dato elaborato dei Load Link
NodeNumLL = num2str(cell2mat(NodoLoadLink(1,2))); % scarico i dati del primo nodo Load Link
NodeType = 'Load Link';
% Dati Grezzi
comando = ['select Date, Time from RawDataView where Date = ''' ...
date ''' and time >= ''' time ''' and UnitName = ''' IDcentralina ''' and ToolNameID = '''...
DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum =' NodeNumLL ' '];
curs = exec(conn,comando);
curs = fetch(curs);
D_num_ini = curs.Data;
[rI,cI] = size(D_num_ini);
if rI == 1 && cI == 1 % Non ci sono dati per la data "date"
comando = ['select Date, Time from RawDataView where Date > ''' ...
date ''' and UnitName = ''' IDcentralina...
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
NodeType ''' and NodeNum =' NodeNumLL ' '];
curs = exec(conn,comando);
curs = fetch(curs);
D_num_ini = curs.Data;
[rI,cI] = size(D_num_ini);
end
if rI && cI == 1
Data_num_ini = 0;
else
Data_num_ini = [cell2mat(D_num_ini(:,1)) repmat(' ', [rI,1]) cell2mat(D_num_ini(:,2))];
end
Data_num_ini = datenum(Data_num_ini); % tutte le date presenti nel DB grezzo
comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ...
date ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' DTcatena ...
''' and NodeType = ''' NodeType ''' and NodeNum =' NodeNumLL ' '];
curs = exec(conn,comando);
curs = fetch(curs);
Data_LastElab = curs.Data;
[rLE,cLE] = size(Data_LastElab);
Date = [cell2mat(Data(1,1)) repmat(' ', [1,1]) cell2mat(Data(1,2))];
data1a = datenum(Date);
data1b = Data_num_ini(1);
if data1b>data1a
data1 = data1b;
else
data1 = data1a;
end
if rLE==1 && cLE==1
datainiLL = datestr(data1,'yyyy-mm-dd');
tempoiniLL = datestr(data1,'HH:MM:SS');
NuovoZeroLL = 0;
else
% Modifico il formato di data e ora in DATini.
[rD,~] = size(Data_LastElab);
Data_numero = [cell2mat(Data_LastElab(:,1)) repmat(' ', [rD,1]) cell2mat(Data_LastElab(:,2))];
Data_numero = datenum(Data_numero); % tutte le date presenti nel DB grezzo
margine = 1;
if Ndatidespike > NdatiMedia
Ndati = Ndatidespike;
else
Ndati = NdatiMedia;
end
if margine < Ndati/2
margine = round(Ndati/2+1);
end
cont = Ndati + margine;
if cont < 3
cont = 3;
end
[rDS,~] = size(Data_numero);
if rDS <= cont
cont = rDS-1;
end
Data_scarico = Data_numero(end-cont);
Data_scarico = datestr(Data_scarico,'yyyy-mm-dd');
data2 = datenum(Data_scarico);
if data2 > data1
datainiLL = datestr(data2,'yyyy-mm-dd');
tempoiniLL = datestr(data2,'HH:MM:SS');
NuovoZeroLL = 1; %1
else
datainiLL = datestr(data1,'yyyy-mm-dd');
tempoiniLL = datestr(data1,'HH:MM:SS');
NuovoZeroLL = 0;
end
end
text = 'Load Link executed during LastElab function';
fprintf(fileID,fmt,text);
else
datainiLL = [];
tempoiniLL = [];
NuovoZeroLL = 0;
end
%% G-Flow Link
if yesGF == 1 % Importo ultimo dato elaborato G-Flow
% Dati Grezzi
DATA = [date time];
comando = ['select EventDateTime from ELABDATAGFLOW where EventDateTime >= ''' ...
DATA ''' and unit_name = ''' IDcentralina ''' and tool_name = '''...
DTcatena ''' '];
curs = exec(conn,comando);
curs = fetch(curs);
D_num_ini = curs.Data;
[rI,cI] = size(D_num_ini);
if rI == 1 && cI == 1
Data_num_ini = 0;
else
Data_num_ini = D_num_ini;
end
Data_num_ini = datenum(Data_num_ini); % tutte le date presenti nel DB grezzo
Date = [cell2mat(Data(1,1)) repmat(' ', [1,1]) cell2mat(Data(1,2))];
data1a = datenum(Date);
data1b = Data_num_ini(1);
if data1b>data1a
data1 = data1b;
else
data1 = data1a;
end
if rI==1 && cI==1
datainiGF = datestr(data1,'yyyy-mm-dd');
tempoiniGF = datestr(data1,'HH:MM:SS');
else
% Modifico il formato di data e ora in DATini.
Data_numero = Data_num_ini(end);
margine = 15;
if Ndatidespike > NdatiMedia
Ndati = Ndatidespike;
else
Ndati = NdatiMedia;
end
if margine < Ndati/2
margine = round(Ndati/2+1);
end
cont = Ndati + margine;
if cont < 2
cont = 2;
end
Data_scarico = Data_numero(end)-cont;
Data_scarico = datestr(Data_scarico,'yyyy-mm-dd');
data2 = datenum(Data_scarico);
if data2 > data1
datainiGF = datestr(data2,'yyyy-mm-dd');
tempoiniGF = datestr(data2,'HH:MM:SS');
else
datainiGF = datestr(data1,'yyyy-mm-dd');
tempoiniGF = datestr(data1,'HH:MM:SS');
end
end
text = 'G-Flow Link executed during LastElab function';
fprintf(fileID,fmt,text);
else
datainiGF = [];
tempoiniGF = [];
end
%% G-Shock Link
if yesGS == 1 % Importo ultimo dato elaborato dei RSN Link
% Dati Grezzi
DATA = [date time];
comando = ['select EventDateTime from ELABDATAGFLOW where EventDateTime >= ''' ...
DATA ''' and unit_name = ''' IDcentralina ''' and tool_name = '''...
DTcatena ''' '];
curs = exec(conn,comando);
curs = fetch(curs);
D_num_ini = curs.Data;
[rI,cI] = size(D_num_ini);
if rI == 1 && cI == 1
Data_num_ini = 0;
else
Data_num_ini = D_num_ini;
end
Data_num_ini = datenum(Data_num_ini); % tutte le date presenti nel DB grezzo
Date = [cell2mat(Data(1,1)) repmat(' ', [1,1]) cell2mat(Data(1,2))];
data1a = datenum(Date);
data1b = Data_num_ini(1);
if data1b>data1a
data1 = data1b;
else
data1 = data1a;
end
if rI==1 && cI==1
datainiGS = datestr(data1,'yyyy-mm-dd');
tempoiniGS = datestr(data1,'HH:MM:SS');
else
% Modifico il formato di data e ora in DATini.
Data_numero = Data_num_ini(end);
margine = 15;
if Ndatidespike > NdatiMedia
Ndati = Ndatidespike;
else
Ndati = NdatiMedia;
end
if margine < Ndati/2
margine = round(Ndati/2+1);
end
cont = Ndati + margine;
if cont < 2
cont = 2;
end
Data_scarico = Data_numero(end-cont);
Data_scarico = datestr(Data_scarico,'yyyy-mm-dd');
data2 = datenum(Data_scarico);
if data2 > data1
datainiGS = datestr(data2,'yyyy-mm-dd');
tempoiniGS = datestr(data2,'HH:MM:SS');
else
datainiGS = datestr(data1,'yyyy-mm-dd');
tempoiniGS = datestr(data1,'HH:MM:SS');
end
end
text = 'G-Shock Link executed during LastElab function';
fprintf(fileID,fmt,text);
else
datainiGS = [];
tempoiniGS = [];
end
%% Debris Link
if yesDL == 1 % Importo ultimo dato elaborato dei RSN Link
NodeNumDL = num2str(cell2mat(NodoDebrisLink(1,2))); % scarico i dati del primo nodo
NodeType = 'Debris Link';
% Dati Grezzi
comando = ['select Date, Time from RawDataView where Date = ''' ...
date ''' and Time >= ''' time ''' and UnitName = ''' IDcentralina ''' and ToolNameID = '''...
DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum =' NodeNumDL ' '];
curs = exec(conn,comando);
curs = fetch(curs);
D_num_ini = curs.Data;
[rI,cI] = size(D_num_ini);
if rI == 1 && cI == 1 % Non ci sono dati per la data "date"
comando = ['select Date, Time from RawDataView where Date > ''' ...
date ''' and UnitName = ''' IDcentralina...
''' and ToolNameID = ''' DTcatena ''' and NodeType = ''' ...
NodeType ''' and NodeNum =' NodeNumDL ' '];
curs = exec(conn,comando);
curs = fetch(curs);
D_num_ini = curs.Data;
[rI,cI] = size(D_num_ini);
end
if rI && cI == 1
Data_num_ini = 0;
else
Data_num_ini = [cell2mat(D_num_ini(:,1)) repmat(' ', [rI,1]) cell2mat(D_num_ini(:,2))];
end
Data_num_ini = datenum(Data_num_ini); % tutte le date presenti nel DB grezzo
comando = ['select EventDate, EventTime from ElabDataView where EventDate >= ''' ...
date ''' and UnitName = ''' IDcentralina ''' and ToolNameID = ''' DTcatena ...
''' and NodeType = ''' NodeType ''' and NodeNum =' NodeNumDL ' '];
curs = exec(conn,comando);
curs = fetch(curs);
Data_LastElab = curs.Data;
[rLE,cLE] = size(Data_LastElab);
Date = [cell2mat(Data(1,1)) repmat(' ', [1,1]) cell2mat(Data(1,2))];
data1a = datenum(Date);
data1b = Data_num_ini(1);
if data1b>data1a
data1 = data1b;
else
data1 = data1a;
end
if rLE==1 && cLE==1
datainiDL = datestr(data1,'yyyy-mm-dd');
tempoiniDL = datestr(data1,'HH:MM:SS');
NuovoZeroDL = 0;
else
% Modifico il formato di data e ora in DATini.
[rD,~] = size(Data_LastElab);
Data_numero = [cell2mat(Data_LastElab(:,1)) repmat(' ', [rD,1]) cell2mat(Data_LastElab(:,2))];
Data_numero = datenum(Data_numero); % tutte le date presenti nel DB grezzo
margine = 1;
if Ndatidespike > NdatiMedia
Ndati = Ndatidespike;
else
Ndati = NdatiMedia;
end
if margine < Ndati/2
margine = round(Ndati/2+1);
end
cont = Ndati + margine;
if cont < 3
cont = 3;
end
[rDS,~] = size(Data_numero);
if rDS <= cont
cont = rDS-1;
end
Data_scarico = Data_numero(end-cont);
Data_scarico = datestr(Data_scarico,'yyyy-mm-dd');
data2 = datenum(Data_scarico);
if data2 > data1
datainiDL = datestr(data2,'yyyy-mm-dd');
tempoiniDL = datestr(data2,'HH:MM:SS');
NuovoZeroDL = 1;
else
datainiDL = datestr(data1,'yyyy-mm-dd');
tempoiniDL = datestr(data1,'HH:MM:SS');
NuovoZeroDL = 0;
end
end
if NuovoZeroDL == 1 % scarico gli ultimi dati elaborati
NAN = 0;
while NAN == 0
if datenum(datainiDL) < datenum(date)
datainiDL = date;
end
NDebrisLink = cell2mat(NodoDebrisLink(:,2));
ii = 1; % contatore
col = 11; % contatore colonne
Condition = 0;
while ii <= rDL
ini_col = col-10;
nN = num2str(NDebrisLink(ii,1));
% Scarico di dati di spostamenti
comando = ['select EventDate, EventTime, XShift, YShift, ZShift, X, Y, Z, T_node, AlfaX, AlfaY from ElabDataView where EventDate = ''' ...
Data_scarico(1,1:10) ''' and EventTime >= ''' Data_scarico(1,12:end) ''' and UnitName = ''' IDcentralina ''' and ToolNameID = '''...
DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ''' nN ''' '];
curs = exec(conn,comando);
curs = fetch(curs);
DATnodoDLd = curs.Data;
% Scarico di dati di spostamenti
comando = ['select EventDate, EventTime, XShift, YShift, ZShift, X, Y, Z, T_node, AlfaX, AlfaY from ElabDataView where EventDate > ''' ...
Data_scarico(1,1:10) ''' and UnitName = ''' IDcentralina ''' and ToolNameID = '''...
DTcatena ''' and NodeType = ''' NodeType ''' and NodeNum = ''' nN ''' '];
curs = exec(conn,comando);
curs = fetch(curs);
DATnodoDL = curs.Data;
[~,c1] = size(DATnodoDL);
[~,c2] = size(DATnodoDLd);
if c1 == c2
DATnodoDL = [DATnodoDLd; DATnodoDL];
elseif c1 < c2 % solo giorno di riferimento
DATnodoDL = DATnodoDLd;
end
[rDAT,cDAT] = size(DATnodoDL);
if rDAT==1 && cDAT==1
clear DatiElabDebrisLink
fclose(fileID);
cancellaDB(IDcentralina,DTcatena,Data_scarico,FileName,conn);
fileID = fopen(FileName,'a');
fmt = '%s \r';
Condition = 1;
break
else
if ii > 1 % Nodo successivo al primo
[rDE,~] = size(DatiElabDebrisLink);
if rDE ~= rDAT
clear DatiElabDebrisLink
fclose(fileID);
cancellaDB(IDcentralina,DTcatena,Data_scarico,FileName,conn);
fileID = fopen(FileName,'a');
fmt = '%s \r';
Condition = 1;
break
end
end
DatiElabDebrisLink(:,ini_col:col) = DATnodoDL(:,:);
end
col = col+11;
ii = ii+1;
end
if Condition == 1
datainiDL = datenum(datainiDL) - 1;
Data_scarico = datestr(datainiDL,'yyyy-mm-dd HH:MM:SS');
datainiDL = Data_scarico;
fileID = fopen(FileName,'a');
else
Check = isnan(cell2mat(DatiElabDebrisLink(1,3:16:end)));
for jj = 1:rTuL
if Check == 1
datainiDL = datenum(datainiDL) - 1;
Data_scarico = datestr(datainiDL,'yyyy-mm-dd HH:MM:SS');
datainiDL = Data_scarico;
break
else
NAN = 1;
end
end
end
end
end
text = 'Debris Link executed during LastElab function';
fprintf(fileID,fmt,text);
else
datainiDL = [];
tempoiniDL = [];
NuovoZeroDL = 0;
DatiElabDebrisLink = [];
end
text = 'LastElab function worked correctly';
fprintf(fileID,fmt,text);
fclose(fileID);
end