You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

165 lines
2.9 KiB

FUNCTION_BLOCK BS_RunTime
VAR_EXTERNAL
END_VAR
VAR_INPUT
Run :BOOL;
RunTimeSet :REAL;
RunTimeRST :BOOL;
RunTimeRec_In :REAL;
END_VAR
VAR_OUTPUT
RunTime :REAL;
END_VAR
VAR
Time_m :TON;
Time_RST :TON;
Cycle :BOOL;
Minute :REAL;
ini :BOOL;
Runtime_ini :REAL;
END_VAR
(*Automatically declared*)
VAR_EXTERNAL
END_VAR
(** {* **)
(** **)
(** 时 间:20190907 **)
(** 版 本:1.0 **)
(** 作 者:姚立 **)
(** 名 称:运行时间累计程序 **)
(** 说 明:运行时间累计程序,单位分钟,可通过重置按钮修改计数基础值 **)
(** 时 间:20220210 **)
(** 版 本:1.1 **)
(** 作 者:潘平 **)
(** 名 称:运行时间累计程序 **)
(** 说 明:增加断电数据写入值变量,以使断电前数据进行输入 **)
(** 备 注: **)
(** 依赖块: **)
(** **)
(** *} **)
(** {*初始化将断电前数据写入累计值*} **)
(** if ini=0 then **)
(* if - Cond *)
LD ini
EQ 0
JMPCN ODK_SKIP_000000000000001_000000000000001
(* then - Stmts *)
(** Runtime_ini:=RunTimeRec_In; **)
(* assign - Stmt *)
LD RunTimeRec_In
ST Runtime_ini
(** ini:=1; **)
(* assign - Stmt *)
LD 1
ST ini
JMP ODK_END_IF_000000000000001
(** end_if; **)
(* if - End *)
ODK_SKIP_000000000000001_000000000000001:
ODK_END_IF_000000000000001:
(** {*计时周期为分钟*} **)
(** if RunTimeRST=0 then **)
(* if - Cond *)
LD RunTimeRST
EQ 0
JMPCN ODK_SKIP_000000000000002_000000000000001
(* then - Stmts *)
(** time_m(in:=Cycle,pt:=t#60s); **)
(* call - Stmt *)
CAL time_m (
in := Cycle,
pt := t#60s
)
(** Cycle:= not Time_m.q; **)
(* assign - Stmt *)
LD time_m.q
NOT
ST Cycle
(** if Run then **)
(* if - Cond *)
LD Run
JMPCN ODK_SKIP_000000000000003_000000000000001
(* then - Stmts *)
(** if Time_m.q then **)
(* if - Cond *)
LD time_m.q
JMPCN ODK_SKIP_000000000000004_000000000000001
(* then - Stmts *)
(** Minute:=Minute+1.0; **)
(* assign - Stmt *)
LD Minute
ADD 1.0
ST Minute
JMP ODK_END_IF_000000000000004
(** end_if; **)
(* if - End *)
ODK_SKIP_000000000000004_000000000000001:
ODK_END_IF_000000000000004:
JMP ODK_END_IF_000000000000003
(** end_if; **)
(* if - End *)
ODK_SKIP_000000000000003_000000000000001:
ODK_END_IF_000000000000003:
(** Runtime:=Minute/60.0+Runtime_ini; **)
(* assign - Stmt *)
LD Minute
DIV 60.0
ADD Runtime_ini
ST Runtime
JMP ODK_END_IF_000000000000002
(** end_if; **)
(* if - End *)
ODK_SKIP_000000000000002_000000000000001:
ODK_END_IF_000000000000002:
(** {*重置按钮按下时,期间Minute的读值按RunTimeSet赋值*} **)
(** if RunTimeRST=1 then **)
(* if - Cond *)
LD RunTimeRST
EQ 1
JMPCN ODK_SKIP_000000000000005_000000000000001
(* then - Stmts *)
(** Minute:=RunTimeSet*60.0; **)
(* assign - Stmt *)
LD RunTimeSet
MUL 60.0
ST Minute
JMP ODK_END_IF_000000000000005
(** end_if; **)
(* if - End *)
ODK_SKIP_000000000000005_000000000000001:
ODK_END_IF_000000000000005:
END_FUNCTION_BLOCK