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