function RC = Tilt(IDcentralina,DTcatena) %%% Programma per l'elaborazione dei dati inclinometrici %%% Versione 2.6 iniziata a maggio 21 tic RC = 1; %#ok text = ['Elaboration of chain ' DTcatena ' of control unit ' IDcentralina ' started correctly']; d = datestr(datetime,'yyyy_mm_dd'); t = datestr(datetime,'HH_MM_SS'); FileName = ['LogFile-' IDcentralina '-' DTcatena '-' d '-' t '.txt']; outdat = fopen(FileName,'wt+'); %#ok fileID = fopen(FileName,'a'); fmt = '%s \r'; fprintf(fileID,fmt,text); fclose(fileID); %% Parte generale % Associo ID company al relativo DB e definisco i parametri del Database IDcompany = '1'; % DA INTEGRARE IN VERSIONI FUTURE DB = database_definition(IDcompany,FileName); % Apro connessione al DB dbname = cell2mat(DB{1,1}); username = cell2mat(DB{2,1}); password = cell2mat(DB{3,1}); driver = cell2mat(DB{4,1}); dburl = cell2mat(DB{5,1}); conn = database(dbname, username, password, driver, dburl); % conn = database('',,,'com.mysql.cj.jdbc.Driver','jdbc:mysql://servername:portnumber/databasename?serverTimezone=UTC&') % scarico Contol Unit ID unitID = IDunit(IDcentralina,conn,FileName); % questa funzione considera la prima data e ora da cui caricare i dati a seconda della catena [date,time,unitID] = datainiziale(DTcatena,unitID,conn,FileName); % funzione che elenca tutti i nodi ed il loro numero presenti per ogni tipo di sensore. [idTool,NodoTiltLink,NodoTiltLinkHR,NodoTiltLinkH,NodoTiltLinkHRH,... NodoTiltLinkHR3D,NodoTiltLinkHR3DH,NodoPiezoLink,NodoBaroLink,... NodoThermLink,NodoAnalogLink,NodoLoadLink,NodoKlinoLink,NodoKlinoLinkHR,... NodoRainLink,NodoPT100Link,NodoInPlaceLink,NodoInPlaceLinkHR,NodoInPlaceLinkHR3D,... NodoWeirLink,NodoPendulum,NodoWind,rTL,rTLHR,rTLH,rTLHRH,~,~,rPL,rBL,... rThL,rAL,rLL,rKL,rKLHR,rRL,rPT100,rIPL,rIPLHR,~,rWL,rPE,rWI] = tipologiaNodi(... DTcatena,unitID,conn,FileName); % funzione che ricostruisce i nodi della catena catena = schema(idTool,conn,FileName); % funzione che attiva/disattiva l'elaborazione per una determinata tipologia di nodo [yesTL,yesTLHR,yesTLHR3D,yesTLH,yesTLHRH,yesTLHR3DH,yesPL,yesBL,... yesThL,yesAL,yesLL,yesKL,yesKLHR,yesRL,yesPT100,yesIPL,yesIPLHR,yesIPLHR3D,... yesWL,yesPE,NodoPiezoLink,yesWI] = YesNo(NodoTiltLink,NodoTiltLinkHR,NodoTiltLinkHR3D,... NodoTiltLinkH,NodoTiltLinkHRH,NodoTiltLinkHR3DH,NodoPiezoLink,NodoBaroLink,... NodoThermLink,NodoAnalogLink,NodoLoadLink,NodoKlinoLink,NodoKlinoLinkHR,... NodoRainLink,NodoPT100Link,NodoInPlaceLink,NodoInPlaceLinkHR,NodoInPlaceLinkHR3D,... NodoWeirLink,NodoPendulum,NodoWind,FileName); % funzione che definisce tutti i parametri importanti per elaborare un'installazione [MEMS,biax,triax,struct,tolleranzaAcc,tolleranzaMag,segnoNS,... segnoEO,Ndevst,Wdevst,segnoNS_HR,segnoEO_HR,Ndevst_HR,Wdevst_HR,allineato,... NdatiMedia,NdatiMediaP,Ndatidespike,Anchor_real,Tmax,Tmin] = Parametri_Installazione... (unitID,idTool,DTcatena,yesTL,yesTLHR,yesTLH,yesTLHRH,yesPL,yesThL,yesKL,yesKLHR,... yesPT100,yesIPL,yesIPLHR,yesWL,conn,FileName); % funzione che ricostruisce segmenti di pertinenza etc [SpeTL,PsTL,SpeTLHR,PsTLHR,SpeTLH,PsTLH,SpeTLHRH,PsTLHRH,SpeIPL,PsIPL,... SpeIPLHR,PsIPLHR] = schemaSP(yesTL,yesTLHR,yesTLH,yesTLHRH,yesTLHR3D,yesTLHR3DH,... yesIPL,yesIPLHR,yesIPLHR3D,NodoTiltLink,NodoTiltLinkHR,NodoTiltLinkHR3D,... NodoTiltLinkH,NodoTiltLinkHRH,NodoTiltLinkHR3DH,NodoInPlaceLink,NodoInPlaceLinkHR,... NodoInPlaceLinkHR3D,Anchor_real,rTL,rTLH,rTLHR,rTLHRH,rIPL,rIPLHR,catena,... IDcentralina,DTcatena,FileName); % tipologia di centralina Unit = centralina(IDcentralina,conn,FileName); %% Scarico dei dati % funzione che scarica i dati di calibrazione [DCalTLTot,DCalTLHRTot,DCalTLHTot,DCalTLHRHTot,DCalPLTot,DCalBLTot,... ~,DCalLLTot,DCalKLTot,DCalKLHRTot,DCalRLTot,DCalThLTot,DCalPT100Tot,... DCalIPLTot,DCalIPLHRTot,DCalWLTot,DCalPETot,Barometri,yesTL,yesTLHR,yesTLH,... yesTLHRH,yesPL,yesBL,~,yesLL,yesKL,yesKLHR,yesThL,yesPT100,yesIPL,yesIPLHR,yesWL] = ... letturaCal(IDcentralina,DTcatena,catena,yesTL,yesTLHR,yesTLH,yesTLHRH,... yesPL,yesBL,yesAL,yesLL,yesKL,yesKLHR,yesThL,yesPT100,yesIPL,yesIPLHR,yesWL,... rTL,rPL,rBL,rTLHR,rAL,rTLH,rTLHRH,rLL,rThL,rKL,rKLHR,rRL,rPT100,rIPL,rIPLHR,... rWL,rPE,NodoTiltLink,NodoTiltLinkH,NodoPiezoLink,NodoBaroLink,NodoLoadLink,... NodoKlinoLink,NodoKlinoLinkHR,NodoInPlaceLink,NodoInPlaceLinkHR,NodoWeirLink,... NodoPendulum,NodoRainLink,NodoThermLink,conn,FileName); if strcmp(Unit,'Nesa evolution') Data = datestr(now-30,'yyyy-mm-dd HH:MM:SS.FFF'); % faccio di default 30 gg comando = ['select JSON_VALUE(dataJSON,"$.battery") from ELABDATANESA where EventTimestamp >= ''' Data ... ''' and UnitName = ''' IDcentralina ''' and ToolNameID = '''... DTcatena ''' and NodeNum = 1']; curs = exec(conn,comando); curs = fetch(curs); Batteria = curs.Data; comando = ['select EventTimestamp from ELABDATANESA where EventTimestamp >= ''' Data ... ''' and UnitName = ''' IDcentralina ''' and ToolNameID = '''... DTcatena ''' and NodeNum = 1']; curs = exec(conn,comando); curs = fetch(curs); DataOra = curs.Data; Batteria = [DataOra Batteria]; ARRAYdateRL = []; else % Funzione che scarica la data di riferimento [DatiElabTiltLink,NuovoZeroTL,datainiTL,tempoiniTL,... DatiElabTiltLinkHR,NuovoZeroTLHR,datainiTLHR,tempoiniTLHR,... DatiElabTiltLinkH,NuovoZeroTLH,datainiTLH,tempoiniTLH,... DatiElabTiltLinkHRH,NuovoZeroTLHRH,datainiTLHRH,tempoiniTLHRH,... DatiElabInPlaceLink,NuovoZeroIPL,datainiIPL,tempoiniIPL,... DatiElabInPlaceLinkHR,NuovoZeroIPLHR,datainiIPLHR,tempoiniIPLHR,... NuovoZeroPL,datainiPL,tempoiniPL,NuovoZeroBL,datainiBL,tempoiniBL,Barometro,... NuovoZeroThL,datainiThL,tempoiniThL,NuovoZeroLL,datainiLL,tempoiniLL,... NuovoZeroKL,datainiKL,tempoiniKL,NuovoZeroKLHR,datainiKLHR,tempoiniKLHR,... DatiElabRainLink,NuovoZeroRL,datainiRL,tempoiniRL,NuovoZeroPT100,datainiPT100,tempoiniPT100,... NuovoZeroWL,datainiWL,tempoiniWL,NuovoZeroPE,datainiPE,tempoiniPE,margine,marginePiezo] = LastElab(... conn,date,time,IDcentralina,DTcatena,Wdevst,Wdevst_HR,NdatiMedia,Ndatidespike,NdatiMediaP,... NodoTiltLink,yesTL,rTL,NodoTiltLinkHR,yesTLHR,rTLHR,... NodoTiltLinkH,yesTLH,rTLH,NodoTiltLinkHRH,yesTLHRH,rTLHRH,... NodoPiezoLink,yesPL,NodoBaroLink,yesBL,Barometri,... NodoLoadLink,yesLL,NodoThermLink,yesThL,NodoRainLink,yesRL,rRL,... NodoKlinoLink,yesKL,rKL,NodoKlinoLinkHR,yesKLHR,rKLHR,NodoPT100Link,yesPT100,... NodoInPlaceLink,yesIPL,rIPL,NodoInPlaceLinkHR,yesIPLHR,rIPLHR,... NodoWeirLink,yesWL,NodoPendulum,yesPE,FileName); % Sito Specificità if strcmp(IDcentralina,'ID0003') && strcmp(DTcatena,'DT0002') datainiBL = '2015-03-01'; tempoiniBL = '00:00:01'; datainiPL = '2015-03-01'; tempoiniPL = '00:00:01'; end if strcmp(IDcentralina,'ID0070') == 1 && strcmp(DTcatena,'DT0111 IPI') == 1 DTcatenaRif = DTcatena; DTcatena = 'DT0111'; % Carico i dati dal database a seconda della catena [Batteria,DatiTiltLink,ErrTiltLink,datainiTL,yesTL,DatiTiltLinkH,ErrTiltLinkH,datainiTLH,yesTLH,... DatiPiezoLink,ErrPiezoLink,yesPL,DatiBaroLink,ErrBaroLink,yesBL,... DatiTiltLinkHR,ErrTiltLinkHR,datainiTLHR,yesTLHR,DatiTiltLinkHRH,ErrTiltLinkHRH,datainiTLHRH,yesTLHRH,... DatiLoadLink,ErrLoadLink,yesLL,DatiThermLink,ErrThermLink,yesThL,DatiKlinoLink,ErrKlinoLink,yesKL,... DatiKlinoLinkHR,ErrKlinoLinkHR,yesKLHR,DatiRainLink,ErrRainLink,datainiRL,yesRL,... DatiPT100Link,ErrPT100Link,yesPT100,DatiInPlaceLink,ErrInPlaceLink,datainiIPL,yesIPL,... DatiInPlaceLinkHR,ErrInPlaceLinkHR,datainiIPLHR,yesIPLHR,DatiWeirLink,DatiNTCWeirLink,ErrWeirLink,datainiWL,yesWL,... DatiPendulum,ErrPendulum,datainiPE,yesPE] = lettura_Hybrid(IDcentralina,DTcatena,DTcatenaRif,datainiTL,tempoiniTL,NodoTiltLink,NuovoZeroTL,... datainiTLH,tempoiniTLH,NodoTiltLinkH,NuovoZeroTLH,datainiPL,tempoiniPL,NodoPiezoLink,NuovoZeroPL,... datainiBL,tempoiniBL,NodoBaroLink,NuovoZeroBL,datainiTLHR,tempoiniTLHR,NodoTiltLinkHR,NuovoZeroTLHR,... datainiTLHRH,tempoiniTLHRH,NodoTiltLinkHRH,NuovoZeroTLHRH,datainiThL,tempoiniThL,NodoThermLink,NuovoZeroThL,... datainiLL,tempoiniLL,NodoLoadLink,NuovoZeroLL,datainiKL,tempoiniKL,NodoKlinoLink,NuovoZeroKL,... datainiKLHR,tempoiniKLHR,NodoKlinoLinkHR,NuovoZeroKLHR,datainiRL,tempoiniRL,NodoRainLink,NuovoZeroRL,... datainiPT100,tempoiniPT100,NodoPT100Link,NuovoZeroPT100,datainiIPL,tempoiniIPL,NodoInPlaceLink,NuovoZeroIPL,... datainiIPLHR,tempoiniIPLHR,NodoInPlaceLinkHR,NuovoZeroIPLHR,datainiWL,tempoiniWL,NodoWeirLink,NuovoZeroWL,... datainiPE,tempoiniPE,NodoPendulum,NuovoZeroPE,yesTL,yesTLH,yesTLHR,yesTLHRH,yesPL,yesBL,yesThL,yesKL,yesKLHR,yesRL,... yesPT100,yesLL,yesIPL,yesIPLHR,yesWL,yesPE,rTL,rTLH,rTLHR,rTLHRH,rPL,rBL,rThL,rKL,rKLHR,rRL,rPT100,rLL,rIPL,rIPLHR,... rWL,rPE,conn,Barometro,catena,date,time,FileName); else % Carico i dati dal database a seconda della catena [Batteria,DatiTiltLink,ErrTiltLink,datainiTL,yesTL,DatiTiltLinkH,ErrTiltLinkH,datainiTLH,yesTLH,... DatiPiezoLink,ErrPiezoLink,yesPL,DatiBaroLink,ErrBaroLink,yesBL,... DatiTiltLinkHR,ErrTiltLinkHR,datainiTLHR,yesTLHR,DatiTiltLinkHRH,ErrTiltLinkHRH,datainiTLHRH,yesTLHRH,... DatiLoadLink,ErrLoadLink,yesLL,DatiThermLink,ErrThermLink,yesThL,DatiKlinoLink,ErrKlinoLink,yesKL,... DatiKlinoLinkHR,ErrKlinoLinkHR,yesKLHR,DatiRainLink,ErrRainLink,datainiRL,yesRL,... DatiPT100Link,ErrPT100Link,yesPT100,DatiInPlaceLink,ErrInPlaceLink,datainiIPL,yesIPL,... DatiInPlaceLinkHR,ErrInPlaceLinkHR,datainiIPLHR,yesIPLHR,DatiWeirLink,DatiNTCWeirLink,ErrWeirLink,datainiWL,yesWL,... DatiPendulum,ErrPendulum,~,yesPE] = lettura(IDcentralina,DTcatena,datainiTL,tempoiniTL,NodoTiltLink,NuovoZeroTL,... datainiTLH,tempoiniTLH,NodoTiltLinkH,NuovoZeroTLH,datainiPL,tempoiniPL,NodoPiezoLink,NuovoZeroPL,... datainiBL,tempoiniBL,NodoBaroLink,NuovoZeroBL,datainiTLHR,tempoiniTLHR,NodoTiltLinkHR,NuovoZeroTLHR,... datainiTLHRH,tempoiniTLHRH,NodoTiltLinkHRH,NuovoZeroTLHRH,datainiThL,tempoiniThL,NodoThermLink,NuovoZeroThL,... datainiLL,tempoiniLL,NodoLoadLink,NuovoZeroLL,datainiKL,tempoiniKL,NodoKlinoLink,NuovoZeroKL,... datainiKLHR,tempoiniKLHR,NodoKlinoLinkHR,NuovoZeroKLHR,datainiRL,tempoiniRL,NodoRainLink,NuovoZeroRL,... datainiPT100,tempoiniPT100,NodoPT100Link,NuovoZeroPT100,datainiIPL,tempoiniIPL,NodoInPlaceLink,NuovoZeroIPL,... datainiIPLHR,tempoiniIPLHR,NodoInPlaceLinkHR,NuovoZeroIPLHR,datainiWL,tempoiniWL,NodoWeirLink,NuovoZeroWL,... datainiPE,tempoiniPE,NodoPendulum,NuovoZeroPE,yesTL,yesTLH,yesTLHR,yesTLHRH,yesPL,yesBL,yesThL,yesKL,yesKLHR,yesRL,... yesPT100,yesLL,yesIPL,yesIPLHR,yesWL,yesPE,rTL,rTLH,rTLHR,rTLHRH,rPL,rBL,rThL,rKL,rKLHR,rRL,rPT100,rLL,rIPL,rIPLHR,... rWL,rPE,conn,Barometro,catena,date,time,FileName); end % Controllo incrociato fra la data iniziale definita da Lettura e la data % iniziale definita da LastElab [DatiElabTiltLink,DatiElabTiltLinkHR,DatiElabTiltLinkH,DatiElabTiltLinkHRH,... DatiElabRainLink,DatiElabInPlaceLink,DatiElabInPlaceLinkHR] = checkdata(... yesTL,yesTLHR,yesTLH,yesTLHRH,yesRL,yesIPL,yesIPLHR,... DatiElabTiltLink,DatiElabTiltLinkHR,DatiElabTiltLinkH,DatiElabTiltLinkHRH,... DatiElabRainLink,DatiElabInPlaceLink,DatiElabInPlaceLinkHR,... datainiTL,tempoiniTL,datainiTLHR,tempoiniTLHR,datainiTLH,tempoiniTLH,... datainiTLHRH,tempoiniTLHRH,datainiRL,tempoiniRL,datainiIPL,tempoiniIPL,... datainiIPLHR,tempoiniIPLHR,rTL,rTLHR,rTLH,rTLHRH,rRL,rIPL,rIPLHR,... NodoTiltLink,NodoTiltLinkHR,NodoTiltLinkH,NodoTiltLinkHRH,... NodoRainLink,NodoInPlaceLink,NodoInPlaceLinkHR,... NuovoZeroTL,NuovoZeroTLHR,NuovoZeroTLH,NuovoZeroTLHRH,NuovoZeroRL,... NuovoZeroIPL,NuovoZeroIPLHR,IDcentralina,DTcatena,conn,FileName); %% Parte di definizione dati, conversione in unità fisiche e calcolo medie % ---Tilt Link V--- if yesTL == 1 [TimeTL,accTL,magTL,tempTL,ErrTiltLink] = defDatiTL(DatiTiltLink,... ErrTiltLink,Ndatidespike,rTL,MEMS,conn,catena,IDcentralina,DTcatena,FileName); % Conversione dei dati grezzi [accTL,magTL,ris_acc,ris_mag,tempTL,ErrTiltLink] = conv_grezziTL(rTL,accTL,magTL,... tempTL,DCalTLTot,tolleranzaAcc,MEMS,ErrTiltLink,IDcentralina,DTcatena,FileName); % Calcolo medie [ACCdef_TL,MAGdef_TL,ARRAYdateTL,ACCdefRis_TL,~,TempDef_TL] = MediaDati_TL(... accTL,magTL,TimeTL,ris_acc,ris_mag,tempTL,tolleranzaAcc,tolleranzaMag,... NdatiMedia,FileName); else ARRAYdateTL = []; text = 'There are not data to convert for Tilt Link V'; fileID = fopen(FileName,'a'); fmt = '%s \r'; fprintf(fileID,fmt,text); fclose(fileID); clear text end % Pulisco le variabili che non uso clear DatiTiltLink clear TimeTL clear accTL clear magTL clear tempTL clear DCalTLTot clear ris_acc clear ris_mag % ---In Place Link--- if yesIPL == 1 [TimeIPL,accIPL,magIPL,tempIPL,ErrInPlaceLink] = defDatiIPL(DatiInPlaceLink,... ErrInPlaceLink,Ndatidespike,rIPL,MEMS,FileName); % Conversione dei dati grezzi [accIPL,magIPL,ris_acc_IPL,ris_mag_IPL,tempIPL,ErrInPlaceLink] = conv_grezziIPL(rIPL,... accIPL,magIPL,tempIPL,DCalIPLTot,tolleranzaAcc,ErrInPlaceLink,NodoInPlaceLink,MEMS,FileName); % Calcolo medie [ACCdef_IPL,MAGdef_IPL,ARRAYdateIPL,ACCdefRis_IPL,~,TempDef_IPL]... = MediaDati_IPL(accIPL,magIPL,TimeIPL,ris_acc_IPL,ris_mag_IPL,tempIPL,tolleranzaAcc,... tolleranzaMag,NdatiMedia,NodoInPlaceLink,MEMS,FileName); else ARRAYdateIPL = []; text = 'There are not data to convert for In Place Link'; fileID = fopen(FileName,'a'); fmt = '%s \r'; fprintf(fileID,fmt,text); fclose(fileID); clear text end % Pulisco le variabili che non uso clear DatiInPlaceLink clear TimeIPL clear accIPL clear magIPL clear tempIPL clear DCalIPLTot clear ris_acc_IPL clear ris_mag_IPL % ---Tilt Link H--- if yesTLH == 1 % definizione dei dati [TimeTLH,accTLH,tempTLH,ErrTiltLinkH] = defDatiTLH(DatiTiltLinkH,... ErrTiltLinkH,Ndatidespike,rTLH,MEMS,FileName); % Conversione dei dati grezzi [accTLH,ris_acc_TLH,tempTLH,ErrTiltLinkH] = conv_grezziTLH(rTLH,... accTLH,tempTLH,DCalTLHTot,tolleranzaAcc,MEMS,ErrTiltLinkH,FileName); % Calcolo medie [ACCdef_TLH,ARRAYdateTLH,ACCdefRis_TLH,TempDef_TLH] = MediaDati_TLH... (accTLH,TimeTLH,ris_acc_TLH,tempTLH,tolleranzaAcc,NdatiMedia,FileName); else ARRAYdateTLH = []; text = 'There are not data to convert for Tilt Link H'; fileID = fopen(FileName,'a'); fmt = '%s \r'; fprintf(fileID,fmt,text); fclose(fileID); clear text end % Pulisco le variabili che non uso clear DatiTiltLinkH clear TimeTLH clear accTLH clear tempTLH clear DCalTLHTot clear ris_acc_TLH % ---Tilt Link HR V--- if yesTLHR == 1 % attiva l'elaborazione dei Tilt Link HR [TimeTLHR,angTLHR,tempTLHR,ErrTiltLinkHR] = defDatiTLHR(... DatiTiltLinkHR,ErrTiltLinkHR,Ndatidespike,MEMS,rTLHR,NodoTiltLinkHR,... NuovoZeroTLHR,IDcentralina,DTcatena,FileName); % Conversione dei dati grezzi [angTLHR,tempTLHR] = conv_grezziTLHR(angTLHR,tempTLHR,DCalTLHRTot,... rTLHR,FileName); % Calcolo medie [ANGdef_TLHR,ARRAYdateTLHR,TempDef_TLHR] = MediaDati_TLHR(angTLHR,... TimeTLHR,tempTLHR,NdatiMedia,FileName); else ARRAYdateTLHR = []; text = 'There are not data to convert for Tilt Link HR V'; fileID = fopen(FileName,'a'); fmt = '%s \r'; fprintf(fileID,fmt,text); fclose(fileID); clear text end % Pulisco le variabili che non uso clear DatiTiltLinkHR clear TimeTLHR clear angTLHR clear tempTLHR clear DCalTLHRTot clear tempTLHR % ---In Place Link HR--- if yesIPLHR == 1 [TimeIPLHR,angIPLHR,tempIPLHR,ErrInPlaceLinkHR] = defDatiIPLHR(... DatiInPlaceLinkHR,ErrInPlaceLinkHR,Ndatidespike,rIPLHR,NodoInPlaceLinkHR,... NuovoZeroIPLHR,IDcentralina,DTcatena,FileName); % Conversione dei dati grezzi [angIPLHR,tempIPLHR] = conv_grezziIPLHR(angIPLHR,tempIPLHR,DCalIPLHRTot,... NodoInPlaceLinkHR,rIPLHR,FileName); % Calcolo medie [ANGdef_IPLHR,ARRAYdateIPLHR,TempDef_IPLHR] = MediaDati_IPLHR(angIPLHR,... TimeIPLHR,tempIPLHR,NdatiMedia,FileName); else ARRAYdateIPLHR = []; text = 'There are not data to convert for In Place Link HR'; fileID = fopen(FileName,'a'); fmt = '%s \r'; fprintf(fileID,fmt,text); fclose(fileID); clear text end % Pulisco le variabili che non uso clear DatiInPlaceLinkHR clear TimeIPLHR clear angIPLHR clear tempIPLHR clear DCalIPLHRTot clear tempIPLHR % ---Tilt Link HR H--- if yesTLHRH == 1 % attiva l'elaborazione dei Tilt Link HR H [TimeTLHRH,angTLHRH,tempTLHRH,ErrTiltLinkHRH] = defDatiTLHRH(... DatiTiltLinkHRH,ErrTiltLinkHRH,Ndatidespike,MEMS,rTLHRH,NodoTiltLinkHRH,... NuovoZeroTLHRH,IDcentralina,DTcatena,FileName); % Conversione dei dati grezzi [angTLHRH,tempTLHRH] = conv_grezziTLHRH(angTLHRH,tempTLHRH,DCalTLHRHTot,... rTLHRH,FileName); % Calcolo medie [ANGdef_TLHRH,ARRAYdateTLHRH,TempDef_TLHRH] = MediaDati_TLHRH(angTLHRH,... TimeTLHRH,tempTLHRH,NdatiMedia,FileName); else ARRAYdateTLHRH = []; text = 'There are not data to convert for Tilt Link HR H'; fileID = fopen(FileName,'a'); fmt = '%s \r'; fprintf(fileID,fmt,text); fclose(fileID); clear text end % Pulisco le variabili che non uso clear DatiTiltLinkHRH clear TimeTLHRH clear angTLHRH clear tempTLHRH clear DCalTLHRHTot clear tempTLHRH % ---Piezo Link--- if yesPL == 1 % attiva l'elaborazione dei Piezo Link [TimePL,ADCPiez,tempPiez,ErrPiezoLink] = defDatiPL(DatiPiezoLink,ErrPiezoLink,rPL,FileName); % Conversione dei dati grezzi [DatiPiez,DatiPiezT,RIF_PL] = conv_grezziPL(rPL,ADCPiez,tempPiez,DCalPLTot,... NodoPiezoLink,NuovoZeroPL,IDcentralina,DTcatena,FileName); % Calcolo medie [PiezDef,PiezDefT,ARRAYdatePL] = MediaDati_PL(DatiPiez,DatiPiezT,TimePL,NdatiMediaP,FileName); else ARRAYdatePL = []; text = 'There are not data to convert for Piezo Link'; fileID = fopen(FileName,'a'); fmt = '%s \r'; fprintf(fileID,fmt,text); fclose(fileID); clear text end % Pulisco le variabili che non uso clear DatiPiezoLink clear TimePL clear ADCPiez clear tempPiez clear DatiPiez clear DatiPiezT % ---Baro Link--- % Attivazione/disattivazione elaborazione e definizione dati if strcmp(NodoPiezoLink(1,4),'VW kPa') == 1 || strcmp(NodoPiezoLink(1,4),'VW kg/cm2') == 1 BaroDef = []; ARRAYdateBL = []; text = 'There are not data to convert for Baro Link'; fileID = fopen(FileName,'a'); fmt = '%s \r'; fprintf(fileID,fmt,text); fclose(fileID); clear text elseif yesBL == 1 || yesPL == 1 % attiva l'elaborazione dei Baro Link [TimeBL,ADCBaro,tempBaro,ErrBaroLink] = defDatiBL(DatiBaroLink,ErrBaroLink,rBL,FileName); % Conversione dei dati grezzi if yesBL == 0 % Recupero il barometro corretto [rB,~] = size(Barometri); for b = 1:rB if strcmp(Barometri(b,1),Barometro(1,1)) == 1 DCalBLTot = DCalBLTot(b,:); rBL = 1; break end end end [DatiBaro,DatiBaroT] = conv_grezziBL(rBL,ADCBaro,tempBaro,DCalBLTot,FileName); % Calcolo medie [BaroDef,BaroDefT,ARRAYdateBL] = MediaDati_BL(DatiBaro,DatiBaroT,TimeBL,NdatiMediaP,FileName); else BaroDef = []; ARRAYdateBL = []; text = 'There are not data to convert for Baro Link'; fileID = fopen(FileName,'a'); fmt = '%s \r'; fprintf(fileID,fmt,text); fclose(fileID); clear text end % Pulisco le variabili che non uso clear DatiBaroLink clear TimeBL clear ADCBaro clear tempBaro clear DCalBLTot clear DatiBaro clear DatiBaroT % ---Klino Link--- if yesKL == 1 % attiva l'elaborazione dei Klino Link [TimeKL,ang_KL,temp_KL,ErrKlinoLink] = defDatiKL(DatiKlinoLink,... ErrKlinoLink,NodoKlinoLink,MEMS,Ndatidespike,rKL,FileName); % Conversione dei dati grezzi [ang_KL,temp_KL,ris_acc,ErrKlinoLink] = conv_grezziKL(ang_KL,temp_KL,... rKL,DCalKLTot,tolleranzaAcc,NodoKlinoLink,ErrKlinoLink,FileName); % Medie [ANGdefKL,TdefKL,ARRAYdateKL] = MediaDati_KL(ang_KL,temp_KL,TimeKL,NdatiMedia,FileName); else ANGdefKL = []; TdefKL = []; ARRAYdateKL = []; text = 'There are not data to convert for Klino Link'; fileID = fopen(FileName,'a'); fmt = '%s \r'; fprintf(fileID,fmt,text); fclose(fileID); clear text end % Pulisco le variabili che non uso clear DatiKlinoLink clear TimeKL clear ang_KL clear temp_KL clear DCalKLTot clear ANGoutKL clear TEMPoutKL clear TimeRcKL % ---Klino Link HR--- if yesKLHR == 1 % attiva l'elaborazione dei Klino Link HR [TimeKLHR,ang_KLHR,temp_KLHR,ErrKlinoLinkHR] = defDatiKLHR(... DatiKlinoLinkHR,ErrKlinoLinkHR,Ndatidespike,rKLHR,NodoKlinoLinkHR,... NuovoZeroKLHR,IDcentralina,DTcatena,FileName); % Conversione dei dati grezzi [ang_KLHR,temp_KLHR] = conv_grezziKLHR(ang_KLHR,temp_KLHR,rKLHR,... DCalKLHRTot,FileName); % Calcolo medie [ANGdefKLHR,TdefKLHR,ARRAYdateKLHR] = MediaDati_KLHR(ang_KLHR,... temp_KLHR,TimeKLHR,NdatiMedia,FileName); else ANGdefKLHR = []; TdefKLHR = []; ARRAYdateKLHR = []; text = 'There are not data to convert for Klino Link HR'; fileID = fopen(FileName,'a'); fmt = '%s \r'; fprintf(fileID,fmt,text); fclose(fileID); clear text end % Pulisco le variabili che non uso clear DatiKlinoLinkHR clear TimeKLHR clear ang_KLHR clear temp_KLHR clear DCalKLHRTot % ---Load Link--- if yesLL == 1 % attiva l'elaborazione dei Load Link [TimeLL,ADCLoad,ErrLoadLink] = defDatiLL(DatiLoadLink,ErrLoadLink,Ndatidespike,rLL,FileName); % Conversione dei dati grezzi DatiLoad = conv_grezziLL(ADCLoad,DCalLLTot,NodoLoadLink,FileName); % Calcolo medie [LoadDef,ARRAYdateLL] = MediaDati_LL(DatiLoad,TimeLL,NdatiMedia,FileName); else ARRAYdateLL = []; text = 'There are not data to convert for Load Link'; fileID = fopen(FileName,'a'); fmt = '%s \r'; fprintf(fileID,fmt,text); fclose(fileID); clear text end % Pulisco le variabili che non uso clear DatiLoadLink clear TimeLL clear ADCLoad clear DCalLLTot clear DatiLoad clear TimeLL % ---Rain Link--- if yesRL == 1 % attiva l'elaborazione dei Klino Link [TimeRL,val_RL,ErrRainLink] = defDatiRL(DatiRainLink,ErrRainLink,FileName); % Conversione dei dati grezzi val_RL = conv_grezziRL(val_RL,rRL,DCalRLTot,NodoRainLink,FileName); % Calcolo media [Dati_RL,ARRAYdateRL] = MediaDati_RL(val_RL,TimeRL,FileName); else ARRAYdateRL = []; Rain = []; RainCum = []; text = 'There are not data to convert for Rain Link'; fileID = fopen(FileName,'a'); fmt = '%s \r'; fprintf(fileID,fmt,text); fclose(fileID); clear text end % Pulisco le variabili che non uso clear DatiRainLink clear TimeRL clear val_RL clear DCalRLTot % ---Therm Link--- if yesThL == 1 [TimeThL,val_ThL,ErrThermLink] = defDatiThL(DatiThermLink,ErrThermLink,rThL,FileName); % Conversione dei dati grezzi val_ThL = conv_grezziThL(val_ThL,rThL,DCalThLTot,FileName); % Calcolo medie [Dati_ThL,ARRAYdateThL] = MediaDati_ThL(val_ThL,TimeThL,NdatiMedia,FileName); else ARRAYdateThL = []; Dati_ThL = []; text = 'There are not data to convert for Therm Link'; fileID = fopen(FileName,'a'); fmt = '%s \r'; fprintf(fileID,fmt,text); fclose(fileID); clear text end % Pulisco le variabili che non uso clear DatiThermLink clear TimeThL clear val_ThL clear DCalThLTot % ---PT100 Link--- if yesPT100 == 1 [TimePT100,val_PT100,ErrPT100Link] = defDatiPT100(DatiPT100Link,ErrPT100Link,FileName); % Conversione dei dati grezzi val_PT100 = conv_grezziPT100(val_PT100,rPT100,DCalPT100Tot,FileName); % Calcolo medie [Dati_PT100,ARRAYdatePT100] = MediaDati_PT100(val_PT100,TimePT100,FileName); else ARRAYdatePT100 = []; Dati_PT100 = []; text = 'There are not data to convert for PT100 Link'; fileID = fopen(FileName,'a'); fmt = '%s \r'; fprintf(fileID,fmt,text); fclose(fileID); clear text end % Pulisco le variabili che non uso clear DatiPT100Link clear TimePT100 clear val_PT100 clear DCalPT100Tot % ---Weir Link--- if yesWL == 1 [TimeWL,lev_WL,temp_WL,ErrWeirLink] = defDatiWL(DatiWeirLink,... DatiNTCWeirLink,ErrWeirLink,FileName); % Conversione dei dati grezzi [lev_WL,TdefWL,ErrWeirLink] = conv_grezziWL(lev_WL,temp_WL,rWL,... DCalWLTot,Tmax,Tmin,NodoWeirLink,ErrWeirLink,datainiWL,TimeWL,... IDcentralina,DTcatena,FileName); % Media [Dati_WL,ARRAYdateWL] = MediaDati_WL(lev_WL,TimeWL,FileName); else ARRAYdateWL = []; Dati_WL = []; TdefWL = []; text = 'There are not data to convert for Weir Link'; fileID = fopen(FileName,'a'); fmt = '%s \r'; fprintf(fileID,fmt,text); fclose(fileID); clear text end % ---Pendulum--- if yesPE == 1 [TimePE,Def_PE,ErrPendulum] = defDatiPE(DatiPendulum,ErrPendulum,FileName); % Conversione dei dati grezzi Def_PE = conv_grezziPE(Def_PE,rPE,DCalPETot,NodoPendulum,FileName); % Media [Dati_PE,ARRAYdatePE] = MediaDati_PE(Def_PE,TimePE,NdatiMedia,FileName); else ARRAYdatePE = []; Dati_PE = []; text = 'There are not data to convert for Pendulum'; fileID = fopen(FileName,'a'); fmt = '%s \r'; fprintf(fileID,fmt,text); fclose(fileID); clear text end %% Parte di elaborazione % --- Analisi Tilt Link V --- if yesTL == 1 if struct == 1 % Vertical Array Structure % ...... elseif triax == 1 % Analisi ai Quaternioni [X,Y,Z,Xlocal,Ylocal,Zlocal,HShift,HShift_local,AlfaX,AlfaY,Azimuth,... Speed_local,Speed,Acceleration_local,Acceleration,TempDef_TL,ARRAYdateTL,... ErrTiltLink,MAGdef_TL] = triax_TL(IDcentralina,DTcatena,rTL,ACCdef_TL,... ACCdefRis_TL,MAGdef_TL,TempDef_TL,SpeTL,PsTL,NodoTiltLink,tolleranzaAcc,... tolleranzaMag,DatiElabTiltLink,segnoNS,segnoEO,MEMS,Ndevst,Wdevst,ARRAYdateTL,... Tmax,Tmin,NuovoZeroTL,NdatiMedia,Ndatidespike,ErrTiltLink,margine,datainiTL,FileName); elseif biax == 1 % Analisi semplificata 2D [X,Y,Z,Xlocal,Ylocal,Zlocal,HShift,HShift_local,AlfaX,AlfaY,Azimuth,... Speed_local,Speed,Acceleration_local,Acceleration,TempDef_TL,... ARRAYdateTL,ErrTiltLink,MAGdef_TL] = biax_TL(IDcentralina,DTcatena,rTL,... ACCdef_TL,ACCdefRis_TL,MAGdef_TL,TempDef_TL,SpeTL,PsTL,... NodoTiltLink,tolleranzaAcc,tolleranzaMag,DatiElabTiltLink,segnoNS,segnoEO,... Ndevst,Wdevst,ARRAYdateTL,Tmax,Tmin,NuovoZeroTL,NdatiMedia,Ndatidespike,... ErrTiltLink,margine,date,datainiTL,FileName); end else [X,Y,Z,Xlocal,Ylocal,Zlocal,HShift,HShift_local,Azimuth,TempDef_TL,Speed_local,... Speed,Acceleration_local,Acceleration,AlfaX,AlfaY] = matrici_vuote_TL(FileName); end clear ACCdefRis_TL clear SpeTL clear PsTL clear DatiElabTiltLink clear NuovoZeroTL % fine elaborazione Tilt Link V % --- Analisi Tilt Link H --- if yesTLH == 1 [Y_TLH,Z_TLH,Ylocal_TLH,Zlocal_TLH,AlfaX_TLH,AlfaY_TLH,TempDef_TLH,... Speed_TLH,Speed_local_TLH,Acceleration_TLH,Acceleration_local_TLH,ARRAYdateTLH,... ErrTiltLinkH] = biax_TLH(IDcentralina,DTcatena,rTLH,ACCdef_TLH,ACCdefRis_TLH,... TempDef_TLH,SpeTLH,PsTLH,tolleranzaAcc,DatiElabTiltLinkH,Ndevst,Wdevst,ARRAYdateTLH,... NuovoZeroTLH,Tmax,Tmin,NodoTiltLinkH,NdatiMedia,Ndatidespike,ErrTiltLinkH,margine,FileName); else [Y_TLH,Z_TLH,Ylocal_TLH,Zlocal_TLH,AlfaX_TLH,AlfaY_TLH,TempDef_TLH,... Speed_TLH,Speed_local_TLH,Acceleration_TLH,Acceleration_local_TLH] = ... matrici_vuote_TLH(FileName); end clear ACCdef_TLH clear ACCdefRis_TLH clear SpeTLH clear PsTLH clear Ndevst_TLH clear Wdevst_TLH clear NuovoZeroTLH % fine elaborazione Tilt Link H % --- Analisi In Place Link --- if yesIPL == 1 [X_IPL,Y_IPL,Z_IPL,Xlocal_IPL,Ylocal_IPL,Zlocal_IPL,HShift_IPL,... HShift_local_IPL,AlfaX_IPL,AlfaY_IPL,Azimuth_IPL,Speed_local_IPL,... Speed_IPL,Acceleration_local_IPL,Acceleration_IPL,TempDef_IPL,... ARRAYdateIPL,ErrInPlaceLink,MAGdef_IPL] = triax_IPL(IDcentralina,... DTcatena,rIPL,ACCdef_IPL,ACCdefRis_IPL,MAGdef_IPL,TempDef_IPL,SpeIPL,PsIPL,... NodoInPlaceLink,tolleranzaAcc,tolleranzaMag,DatiElabInPlaceLink,... segnoNS,segnoEO,MEMS,Ndevst,Wdevst,ARRAYdateIPL,NuovoZeroIPL,Tmax,Tmin,... NdatiMedia,Ndatidespike,ErrInPlaceLink,margine,datainiIPL,FileName); else [X_IPL,Y_IPL,Z_IPL,Xlocal_IPL,Ylocal_IPL,Zlocal_IPL,HShift_IPL,... HShift_local_IPL,Azimuth_IPL,TempDef_IPL,Speed_local_IPL,Speed_IPL,... Acceleration_local_IPL,Acceleration_IPL,AlfaX_IPL,AlfaY_IPL,ACCdef_IPL,... MAGdef_IPL] = matrici_vuote_IPL(FileName); end clear segnoNS clear segnoEO clear Ndevst clear Wdevst clear ACCdefRis_IPL clear SpeIPL clear PsIPL clear DatiElabInPlaceLink clear NuovoZeroIPL % fine elaborazione In Place Link % --- Analisi Tilt Link HR V --- if yesTLHR == 1 [X_HR,Y_HR,Z_HR,Xlocal_HR,Ylocal_HR,Zlocal_HR,HShift_HR,HShift_local_HR,... AlfaX_HR,AlfaY_HR,Azimuth_HR,Speed_local_HR,Speed_HR,Acceleration_local_HR,... Acceleration_HR,TempDef_TLHR,ARRAYdateTLHR,ErrTiltLinkHR] = biax_TLHR(IDcentralina,... DTcatena,rTLHR,rTL,ANGdef_TLHR,ACCdef_TL,MAGdef_TL,TempDef_TLHR,SpeTLHR,... PsTLHR,yesTL,yesTLHR3D,NodoTiltLinkHR,NodoTiltLink,NodoTiltLinkHR3D,... DatiElabTiltLinkHR,segnoNS_HR,segnoEO_HR,Ndevst_HR,Wdevst_HR,ARRAYdateTLHR,... NuovoZeroTLHR,NdatiMedia,Ndatidespike,allineato,ErrTiltLinkHR,Tmax,Tmin,datainiTLHR,... margine,date,FileName); else [X_HR,Y_HR,Z_HR,Xlocal_HR,Ylocal_HR,Zlocal_HR,AlfaX_HR,AlfaY_HR,... TempDef_TLHR,HShift_HR,HShift_local_HR,Azimuth_HR,Speed_HR,Speed_local_HR,... Acceleration_HR,Acceleration_local_HR] = matrici_vuote_TLHR(FileName); end % Faccio Pulizia di Variabili clear ANGdefTLHR clear ACCdef clear MAGdef clear SpeTLHR clear PsTLHR clear DatiElabTiltLinkHR clear DatiElabTiltLink clear NuovoZeroTLHR clear ACCdef_TL clear MAGdef_TL % fine elaborazione Tilt Link HR V % --- Analisi Tilt Link HR H --- if yesTLHRH == 1 [Y_TLHRH,Z_TLHRH,Ylocal_TLHRH,Zlocal_TLHRH,AlfaX_TLHRH,AlfaY_TLHRH,... TempDef_TLHRH,Speed_TLHRH,Speed_local_TLHRH,Acceleration_TLHRH,... Acceleration_local_TLHRH,ARRAYdateTLHRH,ErrTiltLinkHRH] = biax_TLHRH(... IDcentralina,DTcatena,NodoTiltLinkHRH,rTLHRH,ANGdef_TLHRH,TempDef_TLHRH,SpeTLHRH,PsTLHRH,... DatiElabTiltLinkHRH,Ndevst_HR,Wdevst_HR,ARRAYdateTLHRH,NuovoZeroTLHRH,NdatiMedia,... Ndatidespike,ErrTiltLinkHRH,Tmax,Tmin,datainiTLHRH,margine,FileName); else [Y_TLHRH,Z_TLHRH,Ylocal_TLHRH,Zlocal_TLHRH,AlfaX_TLHRH,AlfaY_TLHRH,TempDef_TLHRH,... Speed_TLHRH,Speed_local_TLHRH,Acceleration_TLHRH,Acceleration_local_TLHRH] = ... matrici_vuote_TLHRH(FileName); end % Faccio Pulizia di Variabili % Faccio Pulizia di Variabili clear ANGdef_TLHRH clear SpeTLHRH clear PsTLHRH clear DatiElabTiltLinkHRH clear Ndevst_TLHRH clear Wdevst_TLHRH clear NuovoZeroTLHRH % fine elaborazione Tilt Link HR H % --- Analisi In Place Link HR --- if yesIPLHR == 1 [X_IPLHR,Y_IPLHR,Z_IPLHR,Xlocal_IPLHR,Ylocal_IPLHR,Zlocal_IPLHR,... HShift_IPLHR,HShift_local_IPLHR,AlfaX_IPLHR,AlfaY_IPLHR,Azimuth_IPLHR,... Speed_local_IPLHR,Speed_IPLHR,Acceleration_local_IPLHR,Acceleration_IPLHR,... TempDef_IPLHR,ARRAYdateIPLHR,ErrInPlaceLinkHR] = biax_IPLHR(IDcentralina,... DTcatena,rIPLHR,rIPL,ANGdef_IPLHR,ACCdef_IPL,MAGdef_IPL,TempDef_IPLHR,... SpeIPLHR,PsIPLHR,yesIPL,yesIPLHR3D,NodoInPlaceLinkHR,NodoInPlaceLink,... NodoInPlaceLinkHR3D,DatiElabInPlaceLinkHR,segnoNS_HR,segnoEO_HR,Ndevst_HR,... Wdevst_HR,ARRAYdateIPLHR,NuovoZeroIPLHR,NdatiMedia,Ndatidespike,allineato,... Tmax,Tmin,datainiIPLHR,ErrInPlaceLinkHR,margine,FileName); else [X_IPLHR,Y_IPLHR,Z_IPLHR,Xlocal_IPLHR,Ylocal_IPLHR,Zlocal_IPLHR,... HShift_IPLHR,HShift_local_IPLHR,Azimuth_IPLHR,AlfaX_IPLHR,AlfaY_IPLHR,... TempDef_IPLHR,Speed_IPLHR,Speed_local_IPLHR,Acceleration_IPLHR,... Acceleration_local_IPLHR] = matrici_vuote_IPLHR(FileName); end % Faccio Pulizia di Variabili clear ANGdefIPLHR clear ACCdef_TLHR clear MAGdef_TLHR clear SpeIPLHR clear PsIPLHR clear tolleranzaMag clear DatiElabInPlaceLinkHR clear DatiElabInPlaceLink clear segnoNS_HR clear segnoEO_HR clear Ndevst_HR clear Wdevst_HR clear NuovoZeroIPLHR clear allineato clear ACCdef_IPL clear MAGdef_IPL % fine elaborazione In Place Link HR % --- Analisi Piezo Link --- if yesPL == 1 % if strcmp(NodoPiezoLink(1,4),'VW kPa') == 1 % C = DCalPLTot(:,3); % if C == 0 % Identifica i piezometri di Geosense % for p=1:rPL % PiezDef(:,p) = PiezDef(:,p)+RIF_PL(p,1)'; % end % end % end [Livello,PiezDef,PiezDefT,ErrPiezoLink,ARRAYdatePL] = Piezo(PiezDef,PiezDefT,... BaroDef,ARRAYdatePL,NuovoZeroPL,NdatiMediaP,Ndatidespike,NodoPiezoLink,ErrPiezoLink,rPL,... Anchor_real,marginePiezo,FileName); else [Livello,PiezDef,PiezDefT] = matrici_vuote_PL(FileName); end clear NuovoZeroPL clear NodoPiezoLink clear Anchor_real clear DCalPLTot % --- Analisi Baro Link --- if yesBL == 1 [BaroDef,BaroDefT,ARRAYdateBL,ErrBaroLink] = Baro(BaroDef,BaroDefT,... ARRAYdateBL,NuovoZeroBL,NdatiMediaP,Ndatidespike,ErrBaroLink,rBL,... marginePiezo,FileName); else [BaroDef,BaroDefT] = matrici_vuote_BL(FileName); end clear NuovoZeroBL clear NdatiMediaP clear marginePiezo clear NodoBaroLink % --- Analisi Load Link --- if yesLL == 1 [DatiLoad,ErrLoadLink,ARRAYdateLL] = loadcell(LoadDef,ErrLoadLink,... ARRAYdateLL,NuovoZeroLL,NdatiMedia,Ndatidespike,margine,FileName); else DatiLoad = []; end clear LoadDef clear NuovoZeroLL clear NodoLoadLink %--- Analisi Klino Link --- if yesKL == 1 [ANGdefKL,TdefKL,ErrKlinoLink,ARRAYdateKL] = Klino(ANGdefKL,TdefKL,... ARRAYdateKL,ErrKlinoLink,NuovoZeroKL,NdatiMedia,Ndatidespike,ris_acc,tolleranzaAcc,... Tmax,Tmin,datainiKL,rKL,IDcentralina,DTcatena,margine,NodoKlinoLink,FileName); end clear NuovoZeroKL clear ris_acc clear tolleranzaAcc %--- Analisi Klino Link HR --- if yesKLHR == 1 [ANGdefKLHR,TdefKLHR,ErrKlinoLinkHR,ARRAYdateKLHR] = KlinoHR(ANGdefKLHR,... TdefKLHR,ARRAYdateKLHR,ErrKlinoLinkHR,NuovoZeroKLHR,NodoKlinoLinkHR,NdatiMedia,... Ndatidespike,Tmax,Tmin,datainiKLHR,rKLHR,IDcentralina,DTcatena,margine,FileName); end clear NuovoZeroKLHR clear NodoKlinoLinkHR %--- Analisi Rain Link --- if yesRL == 1 [Rain,RainCum,ARRAYdateRL,ErrRainLink] = CalcoloRain(Dati_RL,ARRAYdateRL,... DatiElabRainLink,NuovoZeroRL,NdatiMedia,ErrRainLink,rRL,margine,... IDcentralina,conn,FileName); end clear NuovoZeroRL clear Dati_RL clear DatiElabRainLink %--- Analisi Therm Link --- if yesThL == 1 [Dati_ThL,ARRAYdateThL,ErrThermLink] = Therm(Dati_ThL,ARRAYdateThL,... NuovoZeroThL,ErrThermLink,NdatiMedia,margine,Tmax,Tmin,datainiThL,... IDcentralina,DTcatena,FileName); end clear NuovoZeroThL clear NodoThermLink %--- Analisi PT100 Link --- if yesPT100 == 1 [Dati_PT100,ARRAYdatePT100,ErrPT100Link] = PT100(Dati_PT100,... ARRAYdatePT100,NuovoZeroPT100,ErrPT100Link,NdatiMedia,margine,Tmax,Tmin,... datainiPT100,IDcentralina,DTcatena,FileName); end clear NuovoZeroPT100 clear NdatiMedia clear margine clear NodoPT100Link %--- Analisi Weir Link --- if yesWL == 1 therm = cell2mat(NodoWeirLink(:,6)); for ii = 1:rWL if therm(ii,1)==1 % è presente il termometro Dati_WL(:,ii) = Dati_WL(:,ii)./(1-0.0002*TdefWL(:,ii)); % vale solo per correzione LINEARE end end % Calcolo differenziali NomeFile = ['' IDcentralina '-' DTcatena '-RifWL.csv']; if NuovoZeroWL == 0 % prima elaborazione csvwrite(NomeFile,Dati_WL(1,:)); Dati_WL = Dati_WL(1,:) - Dati_WL; else % Ci sono già dei dati elaborati RIF = csvread(NomeFile); Dati_WL = RIF - Dati_WL; end end if strcmp(IDcentralina,'ID0070') == 1 && strcmp(DTcatenaRif,'DT0111 IPI') == 1 DTcatena = 'DT0111 IPI'; end %% Scrittura Database database_write(catena,IDcentralina,DTcatena,... X,Y,Z,Xlocal,Ylocal,Zlocal,HShift,HShift_local,AlfaX,AlfaY,Azimuth,TempDef_TL,... Speed_local,Speed,Acceleration,Acceleration_local,ErrTiltLink,ARRAYdateTL,... Y_TLH,Z_TLH,Ylocal_TLH,Zlocal_TLH,AlfaX_TLH,AlfaY_TLH,TempDef_TLH,Speed_TLH,... Speed_local_TLH,Acceleration_TLH,Acceleration_local_TLH,ErrTiltLinkH,ARRAYdateTLH,... X_IPL,Y_IPL,Z_IPL,Xlocal_IPL,Ylocal_IPL,Zlocal_IPL,HShift_IPL,... HShift_local_IPL,Azimuth_IPL,TempDef_IPL,Speed_local_IPL,Speed_IPL,... Acceleration_local_IPL,Acceleration_IPL,AlfaX_IPL,AlfaY_IPL,ErrInPlaceLink,ARRAYdateIPL,... X_HR,Y_HR,Z_HR,Xlocal_HR,Ylocal_HR,Zlocal_HR,HShift_HR,HShift_local_HR,... AlfaX_HR,AlfaY_HR,Azimuth_HR,TempDef_TLHR,Speed_local_HR,Speed_HR,... Acceleration_HR,Acceleration_local_HR,ErrTiltLinkHR,ARRAYdateTLHR,... Y_TLHRH,Z_TLHRH,Ylocal_TLHRH,Zlocal_TLHRH,AlfaX_TLHRH,AlfaY_TLHRH,TempDef_TLHRH,Speed_TLHRH,... Speed_local_TLHRH,Acceleration_TLHRH,Acceleration_local_TLHRH,ErrTiltLinkHRH,ARRAYdateTLHRH,... X_IPLHR,Y_IPLHR,Z_IPLHR,Xlocal_IPLHR,Ylocal_IPLHR,Zlocal_IPLHR,HShift_IPLHR,... HShift_local_IPLHR,AlfaX_IPLHR,AlfaY_IPLHR,TempDef_IPLHR,Azimuth_IPLHR,Speed_IPLHR,... Speed_local_IPLHR,Acceleration_IPLHR,Acceleration_local_IPLHR,ErrInPlaceLinkHR,ARRAYdateIPLHR,... Livello,PiezDef,PiezDefT,ErrPiezoLink,ARRAYdatePL,BaroDef,BaroDefT,ErrBaroLink,ARRAYdateBL,... DatiLoad,ErrLoadLink,ARRAYdateLL,Rain,RainCum,ErrRainLink,ARRAYdateRL,... ANGdefKL,TdefKL,ErrKlinoLink,ARRAYdateKL,NodoKlinoLink,ANGdefKLHR,TdefKLHR,ErrKlinoLinkHR,ARRAYdateKLHR,... Dati_ThL,ErrThermLink,ARRAYdateThL,Dati_PT100,ErrPT100Link,ARRAYdatePT100,... Dati_PE,ErrPendulum,ARRAYdatePE,Dati_WL,TdefWL,ErrWeirLink,NodoWeirLink,ARRAYdateWL,... conn,FileName); %% Parte di lancio SW complementari [yesATD,yesRSN,yesMusa] = SWSearch(idTool,conn,FileName); try if yesATD == 1 rilancio = ['/usr/local/matlab_func/run_ATD_lnx.sh /usr/local/MATLAB/MATLAB_Runtime/v93 ' IDcentralina ' ' DTcatena '']; status = system(rilancio); fileID = fopen(FileName,'a'); fmt = '%s \r'; text = 'ATD relaunch operation executed with success'; fprintf(fileID,fmt,text); fprintf(fileID,fmt,status); fclose(fileID); end if yesRSN == 1 rilancio = ['/usr/local/matlab_func/run_RSN_lnx.sh /usr/local/MATLAB/MATLAB_Runtime/v93 ' IDcentralina ' ' DTcatena '']; status = system(rilancio); fileID = fopen(FileName,'a'); fmt = '%s \r'; text = 'RSN relaunch operation executed with success'; fprintf(fileID,fmt,text); fprintf(fileID,fmt,status); fclose(fileID); end if yesMusa == 1 rilancio = ['/usr/local/matlab_func/run_Musa_lnx.sh /usr/local/MATLAB/MATLAB_Runtime/v93 ' IDcentralina ' ' DTcatena '']; status = system(rilancio); fileID = fopen(FileName,'a'); fmt = '%s \r'; text = 'Musa relaunch operation executed with success'; fprintf(fileID,fmt,text); fprintf(fileID,fmt,status); fclose(fileID); end catch err FileErr = ['ErrorFile-' IDcentralina '-' datestr(today) '-' datestr(now,'hhMMss')]; fid = fopen(FileErr,'a+'); fprintf(fid, '%s', err.getReport('extended','hyperlinks','off')); fclose(fid); fileID = fopen(FileName,'a'); fmt = '%s \r'; text = 'relaunch operation FAILED'; fprintf(fileID,fmt,text); fclose(fileID); end end %% Parte di allertamento % Determino gli utenti da utilizzare in tutte le funzioni successive [Mail,Users_Alert,Users_SMS,Users_Report,activeIT,activeEN,sms,siteID,ini_CoV] = ... Users_Def(IDcentralina,conn,FileName); % Determino alcune informazioni del sito che mi servono nei passaggi % successivi [unitID,chainID,Chain_Scheme,num_nodi,alarms] = Site_Info(siteID,conn,FileName); % Soglie imposte dal cliente alert_Levels(ARRAYdateRL,IDcentralina,DTcatena,conn,FileName); if strcmp(Unit,'Nesa evolution') == 0 % Calcolo con Fukuzono - Inverso della Velocità Time_Of_Failure(IDcentralina,DTcatena,date,ARRAYdateTL,ARRAYdateIPL,... yesTL,yesTLHR3D,yesIPL,yesIPLHR3D,rTL,rIPL,NodoTiltLink,NodoTiltLinkHR,... NodoTiltLinkHR3D,NodoInPlaceLink,NodoInPlaceLinkHR,NodoInPlaceLinkHR3D,... Mail,Users_Alert,Users_SMS,ini_CoV,activeIT,activeEN,sms,siteID,conn,FileName); % Attivazione di sistemi di allertamento Siren(alarms,yesKL,yesKLHR,yesTL,datainiKL,tempoiniKL,datainiKLHR,tempoiniKLHR,... datainiTL,tempoiniTL,ARRAYdateKL,ARRAYdateKLHR,ARRAYdateTL,conn,date,time,FileName); end % Controllo del Livello della Batteria checkBattery(Batteria,IDcentralina,Unit,Mail,conn,FileName); % Controllo della data di chiusura piattaforma per una determinata centralina checkUnit(IDcentralina,conn,FileName); % Controllo della data di scadenza per una determinata SIM checkSIM(IDcentralina,conn,FileName) % Redazione del Report Automatico Report_ASE(IDcentralina,unitID,chainID,alarms,Chain_Scheme,num_nodi,... Users_Report,Mail,time,activeEN,siteID,conn,FileName); close(conn) toc text = ['Tilt calculation ended in ' num2str(toc)]; fileID = fopen(FileName,'a'); fmt = '%s \r'; fprintf(fileID,fmt,text); fclose(fileID); RC = 0; end