oscat.lib > oscat.lib fuer PC WorX/MULTIPROG

Problem mit Timer_P4

(1/2) > >>

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

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln