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
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
??????????????????????????????????????????????????????????????????????
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.
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.
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.
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
danke wir sind für jede rückmeldung dankbar und werden unser bestes geben möglichst fehlerfrien code zu entwickeln.