Passa al contenuto principale

SunRiseSet, sunrise and sunset calculator

Questo blocco funzione permette di calcolare l'orario dell'alba e del tramonto in un determinato giorno in una qualsiasi posizione geografica, è un blocco funzione protetto per utilizzarlo occorre richiedere il codice di protezione, vedi protezione funzioni e blocchi funzione. E' comunque possibile utilizzarlo liberamente in modo test per 15 Min.

In JDate occorre indicare la data giuliana di cui si vuole calcolare gli orari di alba e tramonto. In Latitude e Longitude le coordinate geografiche della posizione in cui si vuole calcolare gli orari di alba e tramonto.

Eseguendo il FB verrà ritornato in JRise la data giuliana con indicazione dell'ora dell'alba, in JSet la data giuliana con indicazione dell'ora del tramonto ed in JTransit la data giuliana con indicazione del mezzogiorno. Ricordo che le ore sono sempre riferite all'orario solare.

Trovare le coordinate geografiche con Google Map

Per trovare le coordinate geografiche:

  • Dal browser aprire Google Maps.
  • Posizionare il cursore sull'area interessata della mappa.
  • Eseguire un click prolungato del pulsante del mouse, al rilascio verrà visualizzata in basso una finestra con le coordinate geografiche del punto.

Descrizione​

Immagine FB SunRiseSet

ParametroTipoDescrizione
JDateLREALValore giorno giuliano di cui calcolare alba e tramonto. Fissare ora alle 12:00:00.
LatitudeLREALValore di latitudine espressa in gradi della posizione geografica.
LongitudeLREALValore di longitudine espressa in gradi della posizione geografica.
FaultBOOLAttivo in caso di errore nella gestione.
JTransitLREALValore giorno giuliano con ora in cui il sole transita per il mezzogiorno.
JRiseLREALValore giorno giuliano con ora dell'alba.
JSetLREALValore giorno giuliano con ora del tramonto.

Esempi​

Come utilizzare gli esempi.
Nel seguente esempio è eseguito il calcolo dell'ora di alba e di tramonto e di mezzogiorno alla posizione di Elsist al giorno 9 di settembre del 2020.

LogicLab (Ptp179, ST_SunRiseSet)
PROGRAM ST_SunRiseSet
VAR
i : UDINT; (* Auxiliary variable *)
Sun : SunRiseSet; (* SunRiseSet FB instance *)
GDateTime : ARRAY[0..2] OF DATE_AND_TIME; (* Gregorian Date/Time *)
END_VAR

// *****************************************************************************
// PROGRAM "ST_SunRiseSet"
// *****************************************************************************
// Calculates the values on Elsist location at the 9 of september 2020.
// -----------------------------------------------------------------------------

// Date: 09/09/2020 12:00:00 is Giulian day:2459102.000.

IF (SysFirstLoop) THEN
Sun.JDate:=DateTimeToJDay(CONCAT_DT(2020, 9, 9, 12, 0, 0)); //Julian date

// Set geographical coordinates.

Sun.Latitude:=LREAL#45.137161;
Sun.Longitude:=LREAL#8.450890;
END_IF;

// Execute calculation.

Sun();

// Converts Julian dates on Gregorian.

GDateTime[0]:=JDayToDateTime(Sun.JTransit);
GDateTime[1]:=JDayToDateTime(Sun.JRise);
GDateTime[2]:=JDayToDateTime(Sun.JSet);

// [End of file]