TP_X retriggerbarer PulsTimer

Begonnen von kelle, 02. Dezember 2008, 20:59:13

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

kelle

Hallo Hugo,

bin heute auf die OSCAT.LIB gestossen.
Alles super.
Ist der FB auch längere Zeit überlebensfähig ?
Wegen DWORD-Überlauf der ms nach ca. 1,5 Monaten.
Danke.
gruss kelle

hugo

#1
alle timer in der oscat lib berücksichtigen diesen überlauf.

dies geschieht indem immer aktueller_timer_wert - alter_timer_wert verwendet wird.
die subtraktion liefert auch bei überlauf das richtige ergebnis, den abstand des neues wertes vom alten wert.

die maximale pulslänge beträgt aber 49 tage da der timer nur 32 bit in millisekunden ist.
das entspricht auch der maximalen zeit die durch pt definiert werden kann.
der baustein ist retriggerable, das bedeutet das der gesamtpuls natürlich unbegrenzt sein kann wenn innerhalb der 49 tage jeseil ein triggerpuls kommt.


kelle

Danke Hugo für die Auskunft.
Weitere Problemstellung:
Auf dem Anlagenbild habe ich 6 Silos, welche
jeweils über einen countdown-timer entleert werden.
Die Entleerzeiten sollen bei laufendem Prozess
manuell änderbar sein.
Beim Touch auf einen Timer öffnet sich ein Numpad
(Element Konfig, Texteingabe: Numpad).
Kann man nach Eingabe einer neuen Zeit mit
Numpad-Enter ein Ereignis generieren, welches
den Timer nachtriggert (eine extra Übernahmetaste
will ich vermeiden). Danke.
Gruss Kelle

hugo

ja
d_trig überweacht ein DWORD auf veränderung.
eine time kannst du ganz einfach in dword wandeln mit time_to_dword.

d_trig erzeugt dir dann bei jeder änderung einen trigger

kelle

Hallo Hugo,
... wenn in TP_X eine neue Zeit gesetzt wird, wird auch
automatisch neu getriggert(super).

Jetzt benutze ich den Messbaustein M_T, um Laufzeiten
im Prozess zu kontrollieren.
Mit Taste ErrorQuit setze ich für einen Zyklus .RST auf True.
Jedoch .ET und auch .PT werden nicht auf Null gesetzt.
Da gibts noch .INIT, habe aber keinen Schreibzugriff.
Danke.
Gruss Bernd

kelle

alles klar, M_T RST ist nur wirksam,
wenn IN:=0
Gruss Bernd


hugo

TP_X erzeugt keinen puls wenn eine neue zeit gesetzt wird.
der ausgang kann nur dann auf true gehen wenn eine steigende flanke an in vorliegt
ist die zeit pt allerdings 0 wird nie der ausgang gesetzt.

hugo

der reset von M_t ist immer wirksam egal wie in ist
wenn du die variable .rst veränderst musst du auch dafür sorgen das der baustein aufgerufen wird sonst kann sich natürlich auch nichts tun.
name.rst = true
setzt die variable tut aber nichts
richtig muss es sein: name(rst := true); dann wird gleichzeitig die variable rst gesetzt und ausgeführt.

.init darfst du von aussen nicght ändern weil es eine interne variable ist