Problem mit Timer_P4

Begonnen von michaelgreubel, 30. Oktober 2011, 10:27:02

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 3 Gäste betrachten dieses Thema.

michaelgreubel

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

peewit

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 ?


michaelgreubel

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

peewit

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]

michaelgreubel

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

peewit

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 ....

michaelgreubel

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

michaelgreubel

Hallo,
hier eine umgeschriebener Timer_P4.
mit meinen Änderungen sind nun mehrere Schaltpunkte nun möglich.

Gruß Michael

[gelöscht durch Administrator]

peewit

hallo

wir werden uns das ansehen, und wenn es passt, übernehmen wir es für die nächste release

danke..

Homesps

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