Funktion 'year' liefert ständig 1970..!?

Begonnen von StefanK, 04. Juli 2007, 02:36:38

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

StefanK

Hallo,
erstmal Lob und Dank an Oskat.

Aber die Funktion 'year' währe genau das richtige, was ich jetzt benötige, doch leider liefert mir die Funktion immer das Jahr 1970.
Ich habe es auf einer älteren 315 und im Plcsim getestet, leider ohne Erfolg. Hat jemand 'ne Idee..??

Danke im voraus

Gruß

Stefan

StefanK

Außerdem...
in der Funktion steht:

// returs the year of a date 
// the function works for dates from 1970 - 2099

??? der Datentyp DATE beginnt erst bei: 1990-1-1:


Datentyp   Länge (Bit)   Format   Beispiele für das Format
Min.   Max.
DATE   16   Jahr-Monat-Tag   D#1990-01-01   D#2168-12-31

??????????????????????????????????????????????????????????????????????

hugo

das problem ist klar, die funktion wurde streng nach der norm IEC61131-3 geschrieben und die schreibt ein datum als sekunden seit 1.1.1970 vor.
das sich die fa. siemens nicht an den standard hält kann diese funktion nicht funktionieren.
das datumsformat nach iec61131-3 entspricht übrigens dem von unix.
die übersetzung auf siemens machen wir nicht selbt weil wir keine s7 entwicklungsumgebeung haben.
du kannst den fehler beheben wenn du das datum nach siemens umwandelst in ein datum nach iec61131-3 dann funktiioniert year auch einwandfrei.

StefanK

Danke, is klar...

das heißt: wenn du möchtest das etwas funktioniert, mach's selber....!!!

Hier der SCL- Quellcode der funktioniert...

FUNCTION year : INT
TITLE = 'year'
// gibt das Jahr eines Datentyps DATE zurück

VERSION : '1.0'
AUTHOR  : SKSE
NAME    : YEAR
FAMILY  : Lib03

VAR_INPUT
    idate : DATE;
END_VAR

VAR
END_VAR

VAR_TEMP
  dDate : DINT ;

END_VAR

  year := DINT_TO_INT((((100 * DATE_TO_DINT (idate)) + 50) / 36525) + 1990) ;
                                                                                                                                     
END_FUNCTION




PS: Habe leider keinen Hinweis gefunden, in dem steht, das die S7- Lib nicht wirklich funktioniert. Habe mich wohl von den Kommentare 'getestet von...' in den Quellen blenden lassen.

hugo

ich gebe dir recht das ist nicht gut und es muss auch schnell geändert werden.
wir testen und entwickeln alles auf codesys und sind bisher auf fremde hilfe angewiesen die s7 übersetzungen zu machen.
ich hoffe wir finden bald eine lösung für die s7 lib.

StefanK

nun denn.....

Ich möchte aber nochmal alle beteiligten für diese Lib danken und loben.....!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Vielleicht gibt es ja eine Möglichkeit, das die Leute, die diese Lib nutzen sie halt auch testen und Korrekturen zurück posten um die Lib zu verbessern.

Ich bin selbstständiger Softwareentwickler, sehr froh das diese Lib existiert und bereit die von mir genutzten Quellen, wenn eine Korrektur notwendig war, zurück zu senden.

Weiter so, gruß
Stefan

hugo

danke wir sind für jede rückmeldung dankbar und werden unser bestes geben möglichst fehlerfrien code zu entwickeln.