Új hozzászólás Aktív témák
-
moseras
tag
Sziasztok
"Szükségem lenne egy újraindítható timer-re."
Magamnak válaszolok:
A TIME() függvényt kell használni, ezzel a PLC indulása óta eltelt időt kapom meg msec-ben. Erre lehet már timer-t építeni, pl. így:
FUNCTION_BLOCK TP_X
VAR_INPUT
IN : BOOL;
PT : TIME;
END_VAR
VAR_OUTPUT
Q : BOOL;
ET : TIME;
END_VAR
VAR
edge : BOOL;
start : TIME;
tx: TIME;
END_VAR
(*
version 1.2 19. oct. 2008
programmer hugo
tested by oscat
retriggerable edge triggered pulse similar to TP but with a retrigger function
if the pt input is 0 then output is always low.
*)
(* @END_DECLARATION := '0' *)
(* read system_time *)
tx := DWORD_TO_TIME(T_PLC_MS());
(* rising edge trigger *)
IF in AND NOT edge THEN
start := Tx;
IF pt > t#0ms THEN Q := TRUE; END_IF;
END_IF;
edge := in;
IF q THEN
et := Tx - start;
IF et >= PT THEN
Q := FALSE;
et := t#0ms;
END_IF;
END_IF;
(* revision history
hm 4. aug 2006 rev 1.0
original version
hm 17. sep 2007 rev 1.1
replaced time() with T_PLC_MS() for compatibility reasons
hm 19. oct. 2008 rev 1.2
renamed to TP_R to TP_X for compatibility reasons
*)
END_FUNCTION_BLOCKForrás:
[link]Imi.