Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 6 von 6

Thema: Algorithmus für Sonnenauf/-untergang für S5

  1. #1
    Registriert seit
    13.07.2007
    Beiträge
    9
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    hat jemand von euch den Algorithmus des Astrotimers (Berrechnung des Sonnenaufgangs und des Sonnenuntergangs aus der akt. Zeit und Datum) schon mal für S5-95U umgesetzt und könnte mir dies zur Verfügung stellen? Kenne die Funktion aus der OSCAT.lib - CoDeSys (Sun_Time) - tue mir aber sehr schwer dies ohne strukt. Text und mit altem Gerät umzusetzen.
    Evtl. auch die Funktion zur Berrechnung von Feiertagen (Holiday)?

    Bin für jede Hilfe dankbar !
    Zitieren Zitieren Algorithmus für Sonnenauf/-untergang für S5  

  2. #2
    Registriert seit
    29.08.2006
    Beiträge
    195
    Danke
    0
    Erhielt 35 Danke für 21 Beiträge

    Standard

    Hallo du kennst ja die funktionen in oscat, ich kenne selbst die soiemens entwicklungsumgebung nicht.
    aber unter codesys kann ich per knopfdruch zwischen den verschiedenen sprachen übersetzen. sowas gibts sicher auch bei siemens.
    ich könnte zwar das ganze im codesys nach awl wndeln ist lediglich ein knopfdruck ob es dir aber hilft weis ich nicht. hier der baustein sun_time in awl wie ihn codesys auf knopfdruck umwandelt.



    (* @PATH := '' *)
    (* @SYMFILEFLAGS := '2048' *)
    FUNCTION_BLOCK awl_sun_time
    VAR_INPUT
    latitude : REAL; (* latitude of geographical position *)
    longitude : REAL; (* longitude of geographical position *)
    utc : DT; (* world time *)
    END_VAR
    VAR_OUTPUT
    sun_midday : TOD; (* astrological midday in hours when sun stand at south direction *)
    sun_rise : TOD; (* sun rise for current day in local time *)
    sun_set : TOD; (* sun set for current day in local time *)
    sun_declination : REAL; (* sun declination at midday in degrees *)
    END_VAR
    VAR
    T: INT; (* day in the year *)
    DK: REAL; (* sun declination at midday *)
    delta: REAL; (* delta from midday for sunrise and sunset *)
    h: REAL;
    B: REAL;
    offset : REAL;
    END_VAR

    (*
    version 1.2 17 apr 2007
    programmer hugo
    tested by tobias

    this FUNCTION block calculates the sun rise, sun set, sun offset at midday sun declination for a given date
    for performance reasons the algorithm has been simplified and is accurate within a few minutes only
    the times are calculated in utc and have to be corrected for the given time zone
    this correction is not done within sun_time because it would be a problem on days where dst is enabled or disabled

    execution time on wago 750-841 is 30 us
    *)
    VAR
    _REAL_0:REAL;
    _REAL_1:REAL;
    _LREAL_0:LREAL;

    END_VAR

    (* @END_DECLARATION := '0' *)
    LD latitude
    Rad
    ST B

    LD -0.0145
    ST h

    LD utc
    DT_TO_DATE
    day_of_year
    ST T

    LD 0.018234
    MUL T
    SUB 0.1939
    SIN
    ST _REAL_0
    LD 0.1340
    MUL _REAL_0
    ST _LREAL_0
    LD 0.033430
    MUL T
    ADD 0.5474
    SIN
    ST _REAL_0
    LD -0.1752
    MUL _REAL_0
    SUB _LREAL_0
    ST offset

    LD longitude
    DIV 15
    ST _REAL_0
    LD 12
    ADD offset
    SUB _REAL_0
    hour_to_tod
    ST sun_midday

    LD T
    SUB 79.35
    ST _LREAL_0
    LD 0.0172
    MUL _LREAL_0
    SIN
    ST _REAL_0
    LD 0.40954
    MUL _REAL_0
    ST DK

    LD DK
    deg
    ST sun_declination

    LD DK
    COS
    ST _REAL_0
    LD B
    COS
    MUL _REAL_0
    ST _REAL_0
    LD DK
    SIN
    ST _REAL_1
    LD B
    SIN
    MUL _REAL_1
    ST _REAL_1
    LD h
    SIN
    SUB _REAL_1
    DIV _REAL_0
    ACOS
    ST _REAL_0
    LD 12
    MUL _REAL_0
    DIV PI
    ST delta

    LD longitude
    DIV 15
    ST _REAL_0
    LD 12
    SUB delta
    SUB offset
    SUB _REAL_0
    hour_to_tod
    ST sun_rise

    LD longitude
    DIV 15
    ST _REAL_0
    LD 12
    ADD delta

    SUB offset
    SUB _REAL_0
    hour_to_tod
    ST sun_set


    END_FUNCTION_BLOCK

  3. #3
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    @hugo: Ist sicher lieb von Dir gemeint. Aber viele S5 Steuerungen können von Haus aus nicht mal die vier Grundrechenarten komplett.
    Geändert von zotos (11.10.2007 um 14:06 Uhr) Grund: [14:03] <Ralle> hallo maxi
    If you open your Mind too much, your Brain will fall out.

  4. #4
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard

    Zitat Zitat von Miha Beitrag anzeigen
    Hallo,
    hat jemand von euch den Algorithmus des Astrotimers (Berrechnung des Sonnenaufgangs und des Sonnenuntergangs aus der akt. Zeit und Datum) schon mal für S5-95U umgesetzt und könnte mir dies zur Verfügung stellen? Kenne die Funktion aus der OSCAT.lib - CoDeSys (Sun_Time) - tue mir aber sehr schwer dies ohne strukt. Text und mit altem Gerät umzusetzen.
    Code:
    * @PATH := '\/Time&Date' *)
    FUNCTION_BLOCK sun_time
    TITLE = 'sun_time'
    //
    // this FUNCTION block calculates the sun rise, sun set, sun offset at midday sun declination for a given date 
    // for performance reasons the algorithm has been simplified and is accurate within a few minutes only 
    // the times are calculated in utc and have to be corrected for the given time zone
    // this correction is not done within sun_time because it would be a problem on days where dst is enabled or disabled
    //
    // Uses: oscat/Time&Date/hour_to_tod
    //       oscat/Time&Date/day_of_year
    //       S7/Standard Library/IEC Function Blocks/D_TOD_DT
    //       S7/Standard Library/IEC Function Blocks/DT_DATE
    //
    VERSION : '1.2'
    AUTHOR  : hugo
    NAME    : SUNTIME
    FAMILY  : TIDT
    VAR_INPUT
        latitude : REAL;                (* latitude of geographical position  *)
        longitude : REAL;               (* longitude of geographical position  *)
        utc : DT;                       (*  world time              *)
    END_VAR
    VAR_OUTPUT
        sun_midday : TOD;           (*  astrological midday in hours when sun stand at south direction  *)
        sun_rise : TOD;             (*  sun rise for current day in local time *)
        sun_set : TOD;              (*  sun set for current day in local time *)
        sun_declination : REAL;       (*  sun declination at midday in degrees    *)
    END_VAR
    VAR
        T: INT;                         (* day in the year   *)
        DK: REAL;                       (* sun declination at midday *)
        delta: REAL;                    (* delta from midday for sunrise and sunset  *)
        h: REAL;
        B: REAL;
        offset : REAL;
    END_VAR
    CONST
        PI := 3.14159265;
    END_CONST
    (*
        version 1.2    17 apr 2007
        programmer     hugo
        tested by      Bitverbieger
    *)
    B := 0.0174532925199433 * latitude;
    h := -0.0145;
    T := day_of_year(DT_DATE(utc));
    offset := -0.1752 * SIN(0.033430*T + 0.5474) - 0.1340*SIN(0.018234*T - 0.1939);
    sun_midday := hour_to_tod(12+Offset);
    DK := 0.40954 * SIN(0.0172 * (T-79.35));
    sun_declination := 57.29577951308232 * DK; //deg(DK);
    delta := 12*ACOS((SIN(h) - SIN(B) * SIN(DK)) / (COS(B) * COS(DK)))/PI;
    sun_rise := hour_to_tod(12 - delta - offset - longitude/15);
    sun_set := hour_to_tod(12 + delta - offset - longitude/15);
    (* revision history
    rev 1.1    hm    20.1.2007
        deleted unused variables sun_rineR and sun_setR
    rev 1.2 hm 17.4.2007
        coorected error while sun:midday would not be corrected for longitude.
    *)
    END_FUNCTION_BLOCK
    Die Funktion Sun_Time aus der OSCAT.lib rechnet mit Gleitpunktzahlen sowie diversen Winkelfunktionen (Sinus, Cosinus, Arkuscosinus).

    Die S5-95U kann weder mit Gleitpunktzahlen noch mit Winkelfunktionen (Sinus, Cosinus, Arkuscosinus) rechnen.

    Ich glaube also nicht, dass Du die Funktion Sun_Time auf einer S5-95U zum laufen bekommst.

    Gruß Kai

  5. #5
    Registriert seit
    29.08.2006
    Beiträge
    195
    Danke
    0
    Erhielt 35 Danke für 21 Beiträge

    Standard

    uups sorry und ich dachte immer meine 32bit steuerung ist das unterste ende der fahnenstange. man lernt eben nie aus.

  6. #6
    Miha ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    13.07.2007
    Beiträge
    9
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Unglücklich


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    eigentlich schade...
    - oder hat sich doch jemand schlaues die Mühe gemacht ?
    Wenn nicht bleibt mir wohl nichts anderes übrig als was moderneres einzusetzen - aber bestimmt nix vom großen "S"

Ähnliche Themen

  1. Ermittlung von Sonnenauf- und Untergang
    Von PeterEF im Forum Programmierstrategien
    Antworten: 3
    Letzter Beitrag: 26.11.2005, 11:59

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •