Files
matlab-python/RSN/letturaCal.m

168 lines
7.4 KiB
Matlab
Executable File

% Funzione che legge i valori di calibrazione per i vari sensori
function [DCalRSNTot,DCalRSNHRTot,DCalLLTot,DCalDLTot,yesRSN,yesRSNHR,yesLL,yesDL]...
= letturaCal(MEMS,IDcentralina,DTcatena,catena,yesRSN,yesRSNHR,yesLL,yesDL,rRSN,...
rRSNHR,rLL,rDL,NodoRSNLink,NodoLoadLink,NodoDebrisLink,conn,FileName)
fileID = fopen(FileName,'a');
fmt = '%s \r';
text = 'letturaCal function started';
fprintf(fileID,fmt,text);
% Inizializzo le matrici
[rC,~] = size(catena);
idNodo = cell2mat(catena(:,1));
% RSN
if isempty(NodoRSNLink) == 1
DCalRSNTot = [];
else
if strcmp(NodoRSNLink(1,4),'ADC') || strcmp(NodoRSNLink(1,4),'null') || isempty(NodoRSNLink(1,4)) == 1
DCalRSNTot = cell(rRSN,17); % matrice che concatena i dati di calibrazione relativi a ciascun nodo RSN Link
elseif strcmp(NodoRSNLink(1,4),'Gradi')
DCalRSNTot = [];
end
end
% RSN HR
DCalRSNHRTot = cell(rRSNHR,6); % matrice che concatena i dati relativi a ciascun nodo RSN Link HR
% Load Link
if isempty(NodoLoadLink) == 1
DCalLLTot = [];
else
if strcmp(NodoLoadLink(1,4),'4-20 mA')
DCalLLTot = cell(rLL,3); % matrice che concatena i dati relativi a ciascun nodo Load Link [4-20mA]
elseif strcmp(NodoLoadLink(1,4),'mV/V') || strcmp(NodoLoadLink(1,4),'ADC')
DCalLLTot = cell(rLL,2); % matrice che concatena i dati relativi a ciascun nodo Load Link [mV/V]
end
end
% Debris LInk
if isempty(NodoDebrisLink) == 1
DCalDLTot = [];
else
if strcmp(NodoDebrisLink(1,4),'ADC') || strcmp(NodoDebrisLink(1,4),'null') || isempty(NodoDebrisLink(1,4)) == 1
DCalDLTot = cell(rDL,11); % matrice che concatena i dati di calibrazione relativi a ciascun nodo RSN Link
elseif strcmp(NodoRSNLink(1,4),'Gradi')
DCalDLTot = [];
end
end
% Matrice con testi di conferma lettura o warning di lettura per le varie tipologie di nodi
RSNL = 1;
RSNLHR = 1;
LL = 1;
DL = 1;
for a = 1:rC
nNodo = mat2str(cell2mat(catena(a,3)));
if idNodo(a,1) == 38 % RSN Link
if MEMS == 2
%% Importazione dei dati di calibrazione per RSN Link
comando = ['select Cal0, Cal1, Cal2, Cal3, Cal4, Cal5, Cal6, Cal7, Cal8, '...
'CalA, CalB, CalC, CalD, CalE, CalF, CalG, CalH from CalibrationView where UnitName = '''...
IDcentralina ''' and ToolNameID = ''' DTcatena ''' and NodeNum = ''' nNodo ''''];
curs = exec(conn,comando);
curs = fetch(curs);
DCalRSN = curs.Data; % matrice che raccoglie i dati del nodo numero 'a' di tipo RSN Link
[rr,cc] = size(DCalRSN);
if rr==1 && cc==1
w = ['Warning: there was an error reading calibration values of RSN Link node number ' nNodo ''];
fprintf(fileID,fmt,w);
yesRSN = 0;
else
DCalRSNTot(RSNL,:) = DCalRSN(:,:);
RSNL = RSNL+1;
ok = ['Calibration parameters of RSN Link node number ' nNodo ' downloaded correctly'];
fprintf(fileID,fmt,ok);
end
else
ok = ['Calibration parameters of RSN Link node number ' nNodo ' NOT downloaded because the node is RSN Link 2.0 - Murata MEMS'];
fprintf(fileID,fmt,ok);
end
elseif idNodo(a,1) == 39 % RSN Link HR
%% Importazione dei dati di calibrazione per RSN Link HR
comando = ['select Cal0, Cal1, Cal2, Cal3, Cal4, Cal5 from CalibrationView where UnitName = '''...
IDcentralina ''' and ToolNameID = ''' DTcatena ''' and NodeNum = ''' nNodo ''''];
curs = exec(conn,comando);
curs = fetch(curs);
DCalRSNHR = curs.Data; % matrice che raccoglie i dati del nodo numero 'a' di tipo RSN Link HR
[rr,cc] = size(DCalRSNHR);
if rr==1 && cc==1
w = ['Warning: there was an error reading calibration values of RSN Link HR node number ' nNodo ''];
fprintf(fileID,fmt,w);
yesRSNHR = 0;
else
DCalRSNHRTot(RSNLHR,:) = DCalRSNHR(:,:);
RSNLHR = RSNLHR+1;
ok = ['Calibration parameters of RSN Link HR node number ' nNodo ' downloaded correctly'];
fprintf(fileID,fmt,ok);
end
elseif idNodo(a,1) == 15 % Load Link
%% Importazione dei dati di calibrazione per Load Link
if strcmp(NodoLoadLink(1,4),'4-20 mA')
comando = ['select Cal0, Cal1, Cal2 from CalibrationView where UnitName = '''...
IDcentralina ''' and ToolNameID = ''' DTcatena ''' and NodeNum = ''' nNodo ''' '];
elseif strcmp(NodoLoadLink(1,4),'mV/V')
comando = ['select Cal1, Cal2 from CalibrationView where UnitName = '''...
IDcentralina ''' and ToolNameID = ''' DTcatena ''' and NodeNum = ''' nNodo ''' '];
elseif strcmp(NodoLoadLink(1,4),'ADC')
comando = ['select Cal0, Cal1 from CalibrationView where UnitName = '''...
IDcentralina ''' and ToolNameID = ''' DTcatena ''' and NodeNum = ''' nNodo ''' '];
end
curs = exec(conn,comando);
curs = fetch(curs);
DCalLL = curs.Data; % matrice che raccoglie i dati del nodo numero 'a' di tipo Load Link
[rr,cc] = size(DCalLL);
if rr==1 && cc==1
w = ['Warning: there was an error reading calibration values of node Load Link number ' nNodo ''];
fprintf(fileID,fmt,w);
yesLL = 0;
else
DCalLLTot(LL,:) = DCalLL(:,:);
LL = LL+1;
ok = ['Calibration of node Load Link number ' nNodo ' downloaded correctly'];
fprintf(fileID,fmt,ok);
end
elseif idNodo(a,1) == 49 % Debris Link
if MEMS == 2
comando = ['select Cal0, Cal1, Cal2, Cal3, Cal4, Cal5, Cal6, Cal7, Cal8, CalA, CalB from CalibrationView where UnitName = ''' ...
IDcentralina ''' and ToolNameID = ''' DTcatena ''' and NodeNum = ''' nNodo ''''];
curs = exec(conn,comando);
curs = fetch(curs);
DCalDL = curs.Data; % matrice che raccoglie i dati del nodo numero 'a' di tipo Tunnel Link
[rr,cc] = size(DCalDL);
if rr==1 && cc==1
text = ['Warning: there was an error reading Debris Link node number ' nNodo ''];
fprintf(fileID,fmt,text);
yesDL = 0;
else
DCalDLTot(DL,:) = DCalDL(:,:);
DL = DL+1;
text = ['Calibration of Debris Link node number ' nNodo ' downloaded correctly'];
fprintf(fileID,fmt,text);
end
else
ok = ['Calibration parameters of Debris Link node number ' nNodo ' NOT downloaded because the node is Murata MEMS'];
fprintf(fileID,fmt,ok);
end
end
end
text = 'NuovaConversione function started';
fprintf(fileID,fmt,text);
% Nuova conversione da fare per il nuovo database
[DCalRSNTot,DCalRSNHRTot,DCalLLTot,DCalDLTot] = NuovaConversione(DCalRSNTot,...
DCalRSNHRTot,DCalLLTot,DCalDLTot);
text = 'NuovaConversione & letturaCal functions ended';
fprintf(fileID,fmt,text);
fclose(fileID);
end