Hallo,
ich habe am Timer_P4 ein Problem mit der Startzeit und der Dauer.
Wenn ich die Startzeit mit Set_TOD wandel ist die UDINT Zahl um Faktor 1000 zu hoch.
Im Baustein ist die Wandlung Time_to_Udint auch um den Faktor 1000 zu hoch.
Gibt es hier schon eine Lösung ?
Gruß Michael
kann dein problem bei set_tod nicht nachvollziehen
set_tod wandelt die zeit in das format tod und das ist die tagezeit in millisekunden und nicht sekunden somit um faktor 1000 groesser
kann das sein das du dich da irrst ?
da bei pcworx die typen tod, date, dt usw... nicht unterschieden werden können, könnte es sein, das du bei einem der parameter bei timer_p4 einen falschen wert übergibst (falsche einheit) z.b. ein DT wert anstatt TOD ?
Der Timer-P4 benötigt am Eingang DTIME einen DT Typ der keine Millisekunden hat.
Den DT Type braucht der Baustein um Wochentage zu errechnen.
Ich habe folgente änderung gemacht und es scheind zu funktionieren.
alle event.start zu event.start / UDINT#1000 ersetzt.
alle TIME_TO_UDINT(event.DURATION) zu TIME_TO_UDINT(event.DURATION) / UDINT#1000 ersetzt.
alle tref_x zu tref_x / UDINT#1000 ersetzt.
Gruß Michael
hallo
ja, jetzt habe ich auch das problem erkannt
beim original-codesys-code wird z.b. folgendes gemacht
start := day_start + TOD_TO_TIME(event.start);
(DT) := (DT) + TIME
DT = zeit in sekunden
TIME und TOD = zeit in millisekunden
im prinzip werden wie bei pcworx verschiedene einheiten addiert, wobei bei codesys der compiler automatisch
den TIME wert vorher noch auf DT konvertiert und somit richtig rechnet , was leider bei pcworx aber nicht passiert
im prinzip hast du mit deiner anpassung das übel schon richtig erkannt
ich habe eine neue version des bausteins gemacht (siehe anhang)
teste das mal und wenn ok werde ich das übernehmen
danke nochmals ....
[gelöscht durch Administrator]
Hallo,
Ja das funktioniert.
Sollte es aber nicht bei der Funktion 43 (* event on workdays Mo-FR and no holiday *)
statt
IF DAY_OF_WEEK(DT_TO_DATE(dtime)) < 6 THEN
IF (Not Holy) and (DAY_OF_WEEK(DT_TO_DATE(dtime)) < 6) THEN
sonst funktionieren die Feiertage nicht.
Gruß Michael
hallo
die doku sagt folgendes
"type 43 = Ereignis an Werktagen"
-----------------------
wiki sagt:
Ein Werktag ist ein Tag, an dem laut Gesetz das Arbeiten ohne Beachtung besonderer Einschränkungen grundsätzlich zulässig ist
!! das ist aber bei einen feiertag sicher nicht gegeben !!
-----------------------
das bedeutet aber normalerweise auch wie du erkannt hast (und auch der kommentar beschreibt)
IF (Not Holy) and (DAY_OF_WEEK(DT_TO_DATE(dtime)) < 6) THEN
ich würde sagen, das deine ergänzung ansich logisch wäre
--------------------
wir werden das intern noch besprechen....
danke nochmals , für deine wertvollen informationen
weiter so ....
Hallo,
ich habe wiedermal ein Problemchen.
wenn ich mehrere Zeiten an einem Kanal mit dem gleichen Type schalten will nimmt der Timer nur das letzte Ereignis.
bsp.
Kanal 1
Type 43
start 6:00
dauer 1 h
und
Kanal 1
Type 43
start 17:00
dauer 3 h
Ergebniss Kanal 1 ist nur zwischen 17:00 und 20:00 Uhr an.
Nach Doku sollte es aber doch möglich sein mehrere Schaltpunkte zu definieren oder habe ich was falsch verstanden.
Gruß Michael
Hallo,
hier eine umgeschriebener Timer_P4.
mit meinen Änderungen sind nun mehrere Schaltpunkte nun möglich.
Gruß Michael
[gelöscht durch Administrator]
hallo
wir werden uns das ansehen, und wenn es passt, übernehmen wir es für die nächste release
danke..
Hallo,
in dieses Problem bin ich auch gerade gelaufen und habe Stunden getestet um zu verstehen, wieso es nicht funktioniert.
Es scheinen auch noch mehr von diesem Problem betroffen zu sein.
http://www.oscat.de/community/index.php/topic,1671.msg8833.html#msg8833
http://www.oscat.de/community/index.php/topic,879.msg5363.html#msg5363
Gibt es denn einen Fix für den TIMER_P4?
Gruß
Homesps