Vai al contenuto

SunRiseSet, sunrise and sunset calculator

Vai all indice del manuale di programmazione
Tipo: Blocco funzione
Libreria LogicLab: eLLabMathsLib
Libreria Codesys: Non disponibile

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

JDate (LREAL) Valore giorno giuliano di cui calcolare alba e tramonto. Fissare ora alle 12:00:00.
Latitude (LREAL) Valore di latitudine espressa in gradi della posizione geografica.
Longitude (LREAL) Valore di longitudine espressa in gradi della posizione geografica.
Fault (BOOL) Attivo in caso di errore nella gestione.
JTransit (LREAL) Valore giorno giuliano con ora in cui il sole transita per il mezzogiorno.
JRise (LREAL) Valore giorno giuliano con ora dell’alba.
JSet (LREAL) Valore giorno giuliano con ora del tramonto.

Immagine FB SunRiseSet

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]
Was this article helpful?