% Funzione che converte i dati della cella di carico in dati di % forza mediante i valori di calibrazione. % Il risultato è la matrico DatiLoad function [Dati3DCrack,DatiNTCCrack3D,Err3DCrackLink] = conv_grezzi3DCrL(... Crack3D,NTCCrack3D,DCal3DCrLTot,Nodo3DCrackLink,Err3DCrackLink,CrL3D_NTC,... r3DCrL,NuovoZero3DCrL,IDcentralina,DTcatena,FileName) fileID = fopen(FileName,'a'); fmt = '%s \r'; text = 'conv_grezzi3DCrL function started'; fprintf(fileID,fmt,text); [rA,cA] = size(Crack3D); Dati3DCrack = zeros(rA,cA); DatiNTCCrack3D = zeros(rA,cA/3); scrivo = 0; cx_rif = zeros(r3DCrL,1); cy_rif = zeros(r3DCrL,1); cz_rif = zeros(r3DCrL,1); RIF = zeros(r3DCrL,3); ii = 1; for e = 1:r3DCrL % numero di 3D Crack Link if strcmp(Nodo3DCrackLink(e,3),'4-20 mA') %% Conversione da mA a mm % Spacchetto i parametri di calibrazione ax = DCal3DCrLTot(e,1); bx = DCal3DCrLTot(e,2); cx = DCal3DCrLTot(e,3); ay = DCal3DCrLTot(e,4); by = DCal3DCrLTot(e,5); cy = DCal3DCrLTot(e,6); az = DCal3DCrLTot(e,7); bz = DCal3DCrLTot(e,8); cz = DCal3DCrLTot(e,9); Dati3DCrack(:,ii) = ax*(Crack3D(:,ii).^2)+bx*Crack3D(:,ii)+cx; % conversione X Dati3DCrack(:,ii+1) = ay*(Crack3D(:,ii+1).^2)+by*Crack3D(:,ii+1)+cy; % conversione Y Dati3DCrack(:,ii+2) = az*(Crack3D(:,ii+2).^2)+bz*Crack3D(:,ii+2)+cz; % conversione Z ii = ii+3; elseif strcmp(Nodo3DCrackLink(e,3),'mV/V') %% Conversione da mV/V a mm % Spacchetto i parametri di calibrazione ax = DCal3DCrLTot(e,1); bx = DCal3DCrLTot(e,2); ay = DCal3DCrLTot(e,3); by = DCal3DCrLTot(e,4); az = DCal3DCrLTot(e,5); bz = DCal3DCrLTot(e,6); Dati3DCrack(:,ii) = ax*Crack3D(:,ii)+bx; % conversione x Dati3DCrack(:,ii+1) = ay*Crack3D(:,ii+1)+by; % conversione y Dati3DCrack(:,ii+2) = az*Crack3D(:,ii+2)+bz; % conversione z ii = ii+3; elseif strcmp(Nodo3DCrackLink(e,3),'Hz') %% Conversione da mA a mm % Spacchetto i parametri di calibrazione ax = DCal3DCrLTot(e,1); bx = DCal3DCrLTot(e,2); cx = DCal3DCrLTot(e,3); ay = DCal3DCrLTot(e,4); by = DCal3DCrLTot(e,5); cy = DCal3DCrLTot(e,6); az = DCal3DCrLTot(e,7); bz = DCal3DCrLTot(e,8); cz = DCal3DCrLTot(e,9); digitX = (Crack3D(:,ii).^2)/1000; digitY = (Crack3D(:,ii+1).^2)/1000; digitZ = (Crack3D(:,ii+2).^2)/1000; if cx == 0 && cy == 0 && cz == 0 % Sensori Geosense NomeFile = ['' IDcentralina '-' DTcatena '-Rif3DCrL.csv']; if NuovoZero3DCrL == 0 % Prima elaborazione scrivo = 1; cx = -ax*digitX(1).^2-bx*digitX(1); cx_rif(e,1) = cx; cy = -ay*digitY(1).^2-by*digitY(1); cy_rif(e,1) = cy; cz = -az*digitZ(1).^2-bz*digitZ(1); cz_rif(e,1) = cz; RIF(e,1:3) = [cx_rif(e,1) cy_rif(e,1) cz_rif(e,1)]; else RIF = csvread(NomeFile); cx = RIF(e,1); cy = RIF(e,2); cz = RIF(e,3); end end Dati3DCrack(:,ii) = ax*(digitX.^2)+bx*digitX+cx; % conversione Dati3DCrack(:,ii+1) = ay*(digitY.^2)+by*digitY+cy; % conversione Dati3DCrack(:,ii+2) = az*(digitZ.^2)+bz*digitZ+cz; % conversione ii = ii+3; end A = 1.4051*10^(-3); B = 2.369*10^(-4); C = 1.019*10^(-7); if CrL3D_NTC(e,1)==1 % è presente il termometro R = NTCCrack3D(:,e); [rN,~] = size(R); for n = 1:rN if R(n) <= 0 if n > 1 R(n) = R(n-1); else R(n) = 5000; end if Err3DCrackLink(n,ii) == 0 Err3DCrackLink(n,ii) = 0.5; end end end L = reallog(R); DatiNTCCrack3D(:,e) = (1./(A + B*L + C*(L.^3))) -273.2; % conversione in gradi centigradi end end if scrivo == 1 csvwrite(NomeFile,RIF); end text = 'Calibrations of 3D Crack Link defined correctly. conv_grezzi3DCrL function closed'; fileID = fopen(FileName,'a'); fmt = '%s \r'; fprintf(fileID,fmt,text); fclose(fileID); end