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.
394 lines
7.1 KiB
394 lines
7.1 KiB
FUNCTION_BLOCK IJ_MSyncControl
|
|
VAR_EXTERNAL
|
|
|
|
END_VAR
|
|
|
|
VAR_INPUT
|
|
REAL_IN1 :REAL;
|
|
REAL_IN2 :REAL;
|
|
BOOL_IN0 :BOOL;
|
|
BOOL_IN1 :BOOL;
|
|
BOOL_IN2 :BOOL;
|
|
INT_IN1 :INT;
|
|
INT_IN2 :INT;
|
|
CM :BOOL;
|
|
END_VAR
|
|
|
|
VAR_OUTPUT
|
|
REAL_OUT1 :REAL;
|
|
REAL_OUT2 :REAL;
|
|
BOOL_OUT0 :BOOL;
|
|
BOOL_OUT1 :BOOL;
|
|
BOOL_OUT2 :BOOL;
|
|
INT_OUT1 :INT;
|
|
INT_OUT2 :INT;
|
|
END_VAR
|
|
|
|
VAR
|
|
REAL_TEMP1 :REAL;
|
|
REAL_TEMP2 :REAL;
|
|
BOOL_TEMP0 :BOOL;
|
|
BOOL_TEMP1 :BOOL;
|
|
BOOL_TEMP2 :BOOL;
|
|
INT_TEMP1 :INT;
|
|
INT_TEMP2 :INT;
|
|
END_VAR
|
|
|
|
(*Automatically declared*)
|
|
VAR_EXTERNAL
|
|
END_VAR
|
|
(** {* **)
|
|
(** **)
|
|
(** 时 间:20191009 **)
|
|
(** 版 本:1.0 **)
|
|
(** 作 者:姚立 **)
|
|
(** 名 称:主控CPU新云群控、本地群控、定时控制(BOOL型专用)同步功能块 **)
|
|
(** 说 明: **)
|
|
(** IN0 为定时控制 (仅为BOOL型有,保留给定时控制) **)
|
|
(** IN1为本地群控,IN2为新云群控 **)
|
|
(** CM 为新云模式 0本地模式 1新云模式 **)
|
|
(** **)
|
|
(** 支持BOOL,REAL,INT三种类型变量 **)
|
|
(** 备 注: **)
|
|
(** 依赖块:无 **)
|
|
(** **)
|
|
(** *} **)
|
|
(** **)
|
|
(** {**********新云模式时变量相互同步,本地模式时,本地->新云单向同步*************} **)
|
|
(** if CM =0 then {*本地模式*} **)
|
|
(* if - Cond *)
|
|
LD CM
|
|
EQ 0
|
|
JMPCN ODK_SKIP_000000000000001_000000000000001
|
|
|
|
(* then - Stmts *)
|
|
|
|
(** {*定时控制--》本地群控--》新云群控*} **)
|
|
(** if BOOL_IN0<>BOOL_TEMP0 then {*定时控制--》本地群组控制*} **)
|
|
(* if - Cond *)
|
|
LD BOOL_IN0
|
|
NE BOOL_TEMP0
|
|
JMPCN ODK_SKIP_000000000000002_000000000000001
|
|
|
|
(* then - Stmts *)
|
|
|
|
(** BOOL_OUT0:=BOOL_IN0; {*定时群控*} **)
|
|
(* assign - Stmt *)
|
|
LD BOOL_IN0
|
|
ST BOOL_OUT0
|
|
|
|
(** BOOL_OUT1:=BOOL_IN0; {*本地群控*} **)
|
|
(* assign - Stmt *)
|
|
LD BOOL_IN0
|
|
ST BOOL_OUT1
|
|
|
|
JMP ODK_END_IF_000000000000002
|
|
|
|
(** else **)
|
|
(* else *)
|
|
ODK_SKIP_000000000000002_000000000000001:
|
|
|
|
(* else - Stmts *)
|
|
|
|
(** BOOL_OUT1:=BOOL_IN1; **)
|
|
(* assign - Stmt *)
|
|
LD BOOL_IN1
|
|
ST BOOL_OUT1
|
|
|
|
(** BOOL_OUT2:=BOOL_IN1; **)
|
|
(* assign - Stmt *)
|
|
LD BOOL_IN1
|
|
ST BOOL_OUT2
|
|
|
|
(** end_if; **)
|
|
(* if - End *)
|
|
ODK_END_IF_000000000000002:
|
|
|
|
JMP ODK_END_IF_000000000000001
|
|
|
|
(** end_if; **)
|
|
(* if - End *)
|
|
ODK_SKIP_000000000000001_000000000000001:
|
|
ODK_END_IF_000000000000001:
|
|
|
|
(** **)
|
|
(** if CM =1 then {*新云模式*} **)
|
|
(* if - Cond *)
|
|
LD CM
|
|
EQ 1
|
|
JMPCN ODK_SKIP_000000000000003_000000000000001
|
|
|
|
(* then - Stmts *)
|
|
|
|
(** {*新云群控《--》本地群控*} **)
|
|
(** if BOOL_IN1<>BOOL_TEMP1 then {*新云群控《-- 本地群控*} **)
|
|
(* if - Cond *)
|
|
LD BOOL_IN1
|
|
NE BOOL_TEMP1
|
|
JMPCN ODK_SKIP_000000000000004_000000000000001
|
|
|
|
(* then - Stmts *)
|
|
|
|
(** BOOL_OUT1:=BOOL_IN1; **)
|
|
(* assign - Stmt *)
|
|
LD BOOL_IN1
|
|
ST BOOL_OUT1
|
|
|
|
(** BOOL_OUT2:=BOOL_IN1; **)
|
|
(* assign - Stmt *)
|
|
LD BOOL_IN1
|
|
ST BOOL_OUT2
|
|
|
|
JMP ODK_END_IF_000000000000004
|
|
|
|
(** elsif BOOL_IN2<>BOOL_TEMP2 then {*新云群控 --》本地群控*} **)
|
|
(* elseif - Cond *)
|
|
ODK_SKIP_000000000000004_000000000000001:
|
|
LD BOOL_IN2
|
|
NE BOOL_TEMP2
|
|
JMPCN ODK_SKIP_000000000000004_000000000000002
|
|
|
|
(* elsif - Stmts *)
|
|
|
|
(** BOOL_OUT1:=BOOL_IN2; **)
|
|
(* assign - Stmt *)
|
|
LD BOOL_IN2
|
|
ST BOOL_OUT1
|
|
|
|
(** BOOL_OUT2:=BOOL_IN2; **)
|
|
(* assign - Stmt *)
|
|
LD BOOL_IN2
|
|
ST BOOL_OUT2
|
|
|
|
JMP ODK_END_IF_000000000000004
|
|
|
|
(** end_if; **)
|
|
(* if - End *)
|
|
ODK_SKIP_000000000000004_000000000000002:
|
|
ODK_END_IF_000000000000004:
|
|
|
|
JMP ODK_END_IF_000000000000003
|
|
|
|
(** end_if; **)
|
|
(* if - End *)
|
|
ODK_SKIP_000000000000003_000000000000001:
|
|
ODK_END_IF_000000000000003:
|
|
|
|
(** **)
|
|
(** BOOL_TEMP0:=BOOL_IN0; **)
|
|
(* assign - Stmt *)
|
|
LD BOOL_IN0
|
|
ST BOOL_TEMP0
|
|
|
|
(** BOOL_TEMP1:=BOOL_IN1; **)
|
|
(* assign - Stmt *)
|
|
LD BOOL_IN1
|
|
ST BOOL_TEMP1
|
|
|
|
(** BOOL_TEMP2:=BOOL_IN2; **)
|
|
(* assign - Stmt *)
|
|
LD BOOL_IN2
|
|
ST BOOL_TEMP2
|
|
|
|
(** **)
|
|
(** if CM =0 then **)
|
|
(* if - Cond *)
|
|
LD CM
|
|
EQ 0
|
|
JMPCN ODK_SKIP_000000000000005_000000000000001
|
|
|
|
(* then - Stmts *)
|
|
|
|
(** REAL_OUT1:=REAL_IN1; **)
|
|
(* assign - Stmt *)
|
|
LD REAL_IN1
|
|
ST REAL_OUT1
|
|
|
|
(** REAL_OUT2:=REAL_IN1; **)
|
|
(* assign - Stmt *)
|
|
LD REAL_IN1
|
|
ST REAL_OUT2
|
|
|
|
JMP ODK_END_IF_000000000000005
|
|
|
|
(** end_if; **)
|
|
(* if - End *)
|
|
ODK_SKIP_000000000000005_000000000000001:
|
|
ODK_END_IF_000000000000005:
|
|
|
|
(** **)
|
|
(** **)
|
|
(** if CM =1 then **)
|
|
(* if - Cond *)
|
|
LD CM
|
|
EQ 1
|
|
JMPCN ODK_SKIP_000000000000006_000000000000001
|
|
|
|
(* then - Stmts *)
|
|
|
|
(** if REAL_IN1<>REAL_TEMP1 then **)
|
|
(* if - Cond *)
|
|
LD REAL_IN1
|
|
NE REAL_TEMP1
|
|
JMPCN ODK_SKIP_000000000000007_000000000000001
|
|
|
|
(* then - Stmts *)
|
|
|
|
(** REAL_OUT1:=REAL_IN1; **)
|
|
(* assign - Stmt *)
|
|
LD REAL_IN1
|
|
ST REAL_OUT1
|
|
|
|
(** REAL_OUT2:=REAL_IN1; **)
|
|
(* assign - Stmt *)
|
|
LD REAL_IN1
|
|
ST REAL_OUT2
|
|
|
|
JMP ODK_END_IF_000000000000007
|
|
|
|
(** elsif REAL_IN2<>REAL_TEMP2 then **)
|
|
(* elseif - Cond *)
|
|
ODK_SKIP_000000000000007_000000000000001:
|
|
LD REAL_IN2
|
|
NE REAL_TEMP2
|
|
JMPCN ODK_SKIP_000000000000007_000000000000002
|
|
|
|
(* elsif - Stmts *)
|
|
|
|
(** REAL_OUT1:=REAL_IN2; **)
|
|
(* assign - Stmt *)
|
|
LD REAL_IN2
|
|
ST REAL_OUT1
|
|
|
|
(** REAL_OUT2:=REAL_IN2; **)
|
|
(* assign - Stmt *)
|
|
LD REAL_IN2
|
|
ST REAL_OUT2
|
|
|
|
JMP ODK_END_IF_000000000000007
|
|
|
|
(** end_if; **)
|
|
(* if - End *)
|
|
ODK_SKIP_000000000000007_000000000000002:
|
|
ODK_END_IF_000000000000007:
|
|
|
|
JMP ODK_END_IF_000000000000006
|
|
|
|
(** end_if; **)
|
|
(* if - End *)
|
|
ODK_SKIP_000000000000006_000000000000001:
|
|
ODK_END_IF_000000000000006:
|
|
|
|
(** **)
|
|
(** REAL_TEMP1:=REAL_IN1; **)
|
|
(* assign - Stmt *)
|
|
LD REAL_IN1
|
|
ST REAL_TEMP1
|
|
|
|
(** REAL_TEMP2:=REAL_IN2; **)
|
|
(* assign - Stmt *)
|
|
LD REAL_IN2
|
|
ST REAL_TEMP2
|
|
|
|
(** **)
|
|
(** if CM =0 then **)
|
|
(* if - Cond *)
|
|
LD CM
|
|
EQ 0
|
|
JMPCN ODK_SKIP_000000000000008_000000000000001
|
|
|
|
(* then - Stmts *)
|
|
|
|
(** INT_OUT1:=INT_IN1; **)
|
|
(* assign - Stmt *)
|
|
LD INT_IN1
|
|
ST INT_OUT1
|
|
|
|
(** INT_OUT2:=INT_IN1; **)
|
|
(* assign - Stmt *)
|
|
LD INT_IN1
|
|
ST INT_OUT2
|
|
|
|
JMP ODK_END_IF_000000000000008
|
|
|
|
(** end_if; **)
|
|
(* if - End *)
|
|
ODK_SKIP_000000000000008_000000000000001:
|
|
ODK_END_IF_000000000000008:
|
|
|
|
(** **)
|
|
(** if CM =1 then **)
|
|
(* if - Cond *)
|
|
LD CM
|
|
EQ 1
|
|
JMPCN ODK_SKIP_000000000000009_000000000000001
|
|
|
|
(* then - Stmts *)
|
|
|
|
(** if INT_IN1<>INT_TEMP1 then **)
|
|
(* if - Cond *)
|
|
LD INT_IN1
|
|
NE INT_TEMP1
|
|
JMPCN ODK_SKIP_00000000000000A_000000000000001
|
|
|
|
(* then - Stmts *)
|
|
|
|
(** INT_OUT1:=INT_IN1; **)
|
|
(* assign - Stmt *)
|
|
LD INT_IN1
|
|
ST INT_OUT1
|
|
|
|
(** INT_OUT2:=INT_IN1; **)
|
|
(* assign - Stmt *)
|
|
LD INT_IN1
|
|
ST INT_OUT2
|
|
|
|
JMP ODK_END_IF_00000000000000A
|
|
|
|
(** elsif INT_IN2<>INT_TEMP2 then **)
|
|
(* elseif - Cond *)
|
|
ODK_SKIP_00000000000000A_000000000000001:
|
|
LD INT_IN2
|
|
NE INT_TEMP2
|
|
JMPCN ODK_SKIP_00000000000000A_000000000000002
|
|
|
|
(* elsif - Stmts *)
|
|
|
|
(** INT_OUT1:=INT_IN2; **)
|
|
(* assign - Stmt *)
|
|
LD INT_IN2
|
|
ST INT_OUT1
|
|
|
|
(** INT_OUT2:=INT_IN2; **)
|
|
(* assign - Stmt *)
|
|
LD INT_IN2
|
|
ST INT_OUT2
|
|
|
|
JMP ODK_END_IF_00000000000000A
|
|
|
|
(** end_if; **)
|
|
(* if - End *)
|
|
ODK_SKIP_00000000000000A_000000000000002:
|
|
ODK_END_IF_00000000000000A:
|
|
|
|
JMP ODK_END_IF_000000000000009
|
|
|
|
(** end_if; **)
|
|
(* if - End *)
|
|
ODK_SKIP_000000000000009_000000000000001:
|
|
ODK_END_IF_000000000000009:
|
|
|
|
(** **)
|
|
(** INT_TEMP1:=INT_IN1; **)
|
|
(* assign - Stmt *)
|
|
LD INT_IN1
|
|
ST INT_TEMP1
|
|
|
|
(** INT_TEMP2:=INT_IN2; **)
|
|
(* assign - Stmt *)
|
|
LD INT_IN2
|
|
ST INT_TEMP2
|
|
|
|
(** **)
|
|
|
|
END_FUNCTION_BLOCK
|