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.
 
 
 
 
 
 

783 lines
16 KiB

FUNCTION_BLOCK IJ_SyncControl
VAR_EXTERNAL
END_VAR
VAR_INPUT
REAL_IN0 :REAL;
REAL_IN1 :REAL;
REAL_IN2 :REAL;
BOOL_IN0 :BOOL;
BOOL_IN1 :BOOL;
BOOL_IN2 :BOOL;
INT_IN0 :INT;
INT_IN1 :INT;
INT_IN2 :INT;
CM :BOOL;
RM :INT;
END_VAR
VAR_OUTPUT
REAL_OUT0 :REAL;
REAL_OUT1 :REAL;
REAL_OUT2 :REAL;
BOOL_OUT0 :BOOL;
BOOL_OUT1 :BOOL;
BOOL_OUT2 :BOOL;
INT_OUT0 :INT;
INT_OUT1 :INT;
INT_OUT2 :INT;
END_VAR
VAR
REAL_TEMP0 :REAL;
REAL_TEMP1 :REAL;
REAL_TEMP2 :REAL;
BOOL_TEMP0 :BOOL;
BOOL_TEMP1 :BOOL;
BOOL_TEMP2 :BOOL;
INT_TEMP0 :INT;
INT_TEMP1 :INT;
INT_TEMP2 :INT;
END_VAR
(*Automatically declared*)
VAR_EXTERNAL
END_VAR
(** {* **)
(** **)
(** 时 间:20191129 **)
(** 版 本:1.4 **)
(** 作 者:姚立 **)
(** 名 称:吾悦定制新云群控、新云单控、本地单控数据同步功能块 **)
(** 说 明: **)
(** IN0为新云/本地群控参数 IN1为本地单控参数,IN2为新云单控参数 **)
(** CM 为新云模式 0本地模式 1新云模式 **)
(** RM 为运行模式 0本地模式 1调试模式 2应急模式 **)
(** **)
(** CM=0 本地单控参数--》新云单控参数 **)
(** CM=1,RM<>2 新云群控参数--》新云单控参数/本地单控参数 ;新云单控参数《--》本地单控参数 **)
(** CM=1,RM =2 预留给应急情况下由上位机脚本进行群组控制 ;新云单控参数《--》本地单控参数 **)
(** **)
(** 支持BOOL,REAL,INT三种类型变量 **)
(** 备 注: **)
(** 依赖块:无 **)
(** **)
(** *} **)
(** **)
(** {**********新云模式时变量相互同步,本地模式时,本地->新云单向同步*************} **)
(** if CM =0 then {*本地时赋值新云模式开关,主控CPU时赋值为定时开关*} **)
(* if - Cond *)
LD CM
EQ 0
JMPCN ODK_SKIP_000000000000001_000000000000001
(* then - Stmts *)
(** if BOOL_IN0<>BOOL_TEMP0 then {*主控CPU群组控制--》新云/本地控制*} **)
(* 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
(** BOOL_OUT2:=BOOL_IN0; {*新云单控*} **)
(* assign - Stmt *)
LD BOOL_IN0
ST BOOL_OUT2
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 RM=2 then **)
(* if - Cond *)
LD RM
EQ 2
JMPCN ODK_SKIP_000000000000004_000000000000001
(* then - Stmts *)
(** {*新云单控《--》本地单控*} **)
(** if BOOL_IN1<>BOOL_TEMP1 then {*新云单控《-- 本地单控*} **)
(* if - Cond *)
LD BOOL_IN1
NE BOOL_TEMP1
JMPCN ODK_SKIP_000000000000005_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_000000000000005
(** elsif BOOL_IN2<>BOOL_TEMP2 then {*新云单控 --》本地单控*} **)
(* elseif - Cond *)
ODK_SKIP_000000000000005_000000000000001:
LD BOOL_IN2
NE BOOL_TEMP2
JMPCN ODK_SKIP_000000000000005_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_000000000000005
(** end_if; **)
(* if - End *)
ODK_SKIP_000000000000005_000000000000002:
ODK_END_IF_000000000000005:
JMP ODK_END_IF_000000000000004
(** else **)
(* else *)
ODK_SKIP_000000000000004_000000000000001:
(* else - Stmts *)
(** if BOOL_IN0<>BOOL_TEMP0 then {*主控CPU群组控制--》新云/本地控制*} **)
(* if - Cond *)
LD BOOL_IN0
NE BOOL_TEMP0
JMPCN ODK_SKIP_000000000000006_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
(** BOOL_OUT2:=BOOL_IN0; {*新云单控*} **)
(* assign - Stmt *)
LD BOOL_IN0
ST BOOL_OUT2
JMP ODK_END_IF_000000000000006
(** end_if; **)
(* if - End *)
ODK_SKIP_000000000000006_000000000000001:
ODK_END_IF_000000000000006:
(** {*新云单控《--》本地单控*} **)
(** if BOOL_IN1<>BOOL_TEMP1 then {*新云单控《-- 本地单控*} **)
(* if - Cond *)
LD BOOL_IN1
NE BOOL_TEMP1
JMPCN ODK_SKIP_000000000000007_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_000000000000007
(** elsif BOOL_IN2<>BOOL_TEMP2 then {*新云单控 --》本地单控*} **)
(* elseif - Cond *)
ODK_SKIP_000000000000007_000000000000001:
LD BOOL_IN2
NE BOOL_TEMP2
JMPCN ODK_SKIP_000000000000007_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_000000000000007
(** end_if; **)
(* if - End *)
ODK_SKIP_000000000000007_000000000000002:
ODK_END_IF_000000000000007:
(** end_if; **)
(* if - End *)
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 {*本地时赋值新云模式开关,主控CPU时赋值为定时开关*} **)
(* if - Cond *)
LD CM
EQ 0
JMPCN ODK_SKIP_000000000000008_000000000000001
(* then - Stmts *)
(** if REAL_IN0<>REAL_TEMP0 then {*主控CPU群组控制--》新云/本地控制*} **)
(* if - Cond *)
LD REAL_IN0
NE REAL_TEMP0
JMPCN ODK_SKIP_000000000000009_000000000000001
(* then - Stmts *)
(** REAL_OUT0:=REAL_IN0; {*新云群控*} **)
(* assign - Stmt *)
LD REAL_IN0
ST REAL_OUT0
(** REAL_OUT1:=REAL_IN0; {*本地单控*} **)
(* assign - Stmt *)
LD REAL_IN0
ST REAL_OUT1
(** REAL_OUT2:=REAL_IN0; {*新云单控*} **)
(* assign - Stmt *)
LD REAL_IN0
ST REAL_OUT2
JMP ODK_END_IF_000000000000009
(** else {*新云单控失效*} **)
(* else *)
ODK_SKIP_000000000000009_000000000000001:
(* else - 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
(** end_if; **)
(* if - End *)
ODK_END_IF_000000000000009:
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_00000000000000A_000000000000001
(* then - Stmts *)
(** if RM=2 then **)
(* if - Cond *)
LD RM
EQ 2
JMPCN ODK_SKIP_00000000000000B_000000000000001
(* then - Stmts *)
(** {*新云单控《--》本地单控*} **)
(** if REAL_IN1<>REAL_TEMP1 then {*新云单控《-- 本地单控*} **)
(* if - Cond *)
LD REAL_IN1
NE REAL_TEMP1
JMPCN ODK_SKIP_00000000000000C_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_00000000000000C
(** elsif REAL_IN2<>REAL_TEMP2 then {*新云单控 --》本地单控*} **)
(* elseif - Cond *)
ODK_SKIP_00000000000000C_000000000000001:
LD REAL_IN2
NE REAL_TEMP2
JMPCN ODK_SKIP_00000000000000C_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_00000000000000C
(** end_if; **)
(* if - End *)
ODK_SKIP_00000000000000C_000000000000002:
ODK_END_IF_00000000000000C:
JMP ODK_END_IF_00000000000000B
(** else **)
(* else *)
ODK_SKIP_00000000000000B_000000000000001:
(* else - Stmts *)
(** if REAL_IN0<>REAL_TEMP0 then {*主控CPU群组控制--》新云/本地控制*} **)
(* if - Cond *)
LD REAL_IN0
NE REAL_TEMP0
JMPCN ODK_SKIP_00000000000000D_000000000000001
(* then - Stmts *)
(** REAL_OUT0:=REAL_IN0; {*新云群控*} **)
(* assign - Stmt *)
LD REAL_IN0
ST REAL_OUT0
(** REAL_OUT1:=REAL_IN0; {*本地单控*} **)
(* assign - Stmt *)
LD REAL_IN0
ST REAL_OUT1
(** REAL_OUT2:=REAL_IN0; {*新云单控*} **)
(* assign - Stmt *)
LD REAL_IN0
ST REAL_OUT2
JMP ODK_END_IF_00000000000000D
(** end_if; **)
(* if - End *)
ODK_SKIP_00000000000000D_000000000000001:
ODK_END_IF_00000000000000D:
(** {*新云单控《--》本地单控*} **)
(** if REAL_IN1<>REAL_TEMP1 then {*新云单控《-- 本地单控*} **)
(* if - Cond *)
LD REAL_IN1
NE REAL_TEMP1
JMPCN ODK_SKIP_00000000000000E_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_00000000000000E
(** elsif REAL_IN2<>REAL_TEMP2 then {*新云单控 --》本地单控*} **)
(* elseif - Cond *)
ODK_SKIP_00000000000000E_000000000000001:
LD REAL_IN2
NE REAL_TEMP2
JMPCN ODK_SKIP_00000000000000E_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_00000000000000E
(** end_if; **)
(* if - End *)
ODK_SKIP_00000000000000E_000000000000002:
ODK_END_IF_00000000000000E:
(** end_if; **)
(* if - End *)
ODK_END_IF_00000000000000B:
JMP ODK_END_IF_00000000000000A
(** end_if; **)
(* if - End *)
ODK_SKIP_00000000000000A_000000000000001:
ODK_END_IF_00000000000000A:
(** **)
(** REAL_TEMP0:=REAL_IN0; **)
(* assign - Stmt *)
LD REAL_IN0
ST REAL_TEMP0
(** 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 {*本地时赋值新云模式开关,主控CPU时赋值为定时开关*} **)
(* if - Cond *)
LD CM
EQ 0
JMPCN ODK_SKIP_00000000000000F_000000000000001
(* then - Stmts *)
(** if INT_IN0<>INT_TEMP0 then {*主控CPU群组控制--》新云/本地控制*} **)
(* if - Cond *)
LD INT_IN0
NE INT_TEMP0
JMPCN ODK_SKIP_00000000000000G_000000000000001
(* then - Stmts *)
(** INT_OUT0:=INT_IN0; {*新云群控*} **)
(* assign - Stmt *)
LD INT_IN0
ST INT_OUT0
(** INT_OUT1:=INT_IN0; {*本地单控*} **)
(* assign - Stmt *)
LD INT_IN0
ST INT_OUT1
(** INT_OUT2:=INT_IN0; {*新云单控*} **)
(* assign - Stmt *)
LD INT_IN0
ST INT_OUT2
JMP ODK_END_IF_00000000000000G
(** else {*新云单控失效*} **)
(* else *)
ODK_SKIP_00000000000000G_000000000000001:
(* else - 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
(** end_if; **)
(* if - End *)
ODK_END_IF_00000000000000G:
JMP ODK_END_IF_00000000000000F
(** end_if; **)
(* if - End *)
ODK_SKIP_00000000000000F_000000000000001:
ODK_END_IF_00000000000000F:
(** **)
(** if CM =1 then **)
(* if - Cond *)
LD CM
EQ 1
JMPCN ODK_SKIP_00000000000000H_000000000000001
(* then - Stmts *)
(** if RM=2 then **)
(* if - Cond *)
LD RM
EQ 2
JMPCN ODK_SKIP_00000000000000I_000000000000001
(* then - Stmts *)
(** {*新云单控《--》本地单控*} **)
(** if INT_IN1<>INT_TEMP1 then {*新云单控《-- 本地单控*} **)
(* if - Cond *)
LD INT_IN1
NE INT_TEMP1
JMPCN ODK_SKIP_00000000000000J_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_00000000000000J
(** elsif INT_IN2<>INT_TEMP2 then {*新云单控 --》本地单控*} **)
(* elseif - Cond *)
ODK_SKIP_00000000000000J_000000000000001:
LD INT_IN2
NE INT_TEMP2
JMPCN ODK_SKIP_00000000000000J_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_00000000000000J
(** end_if; **)
(* if - End *)
ODK_SKIP_00000000000000J_000000000000002:
ODK_END_IF_00000000000000J:
JMP ODK_END_IF_00000000000000I
(** else **)
(* else *)
ODK_SKIP_00000000000000I_000000000000001:
(* else - Stmts *)
(** if INT_IN0<>INT_TEMP0 then {*主控CPU群组控制--》新云/本地控制*} **)
(* if - Cond *)
LD INT_IN0
NE INT_TEMP0
JMPCN ODK_SKIP_00000000000000K_000000000000001
(* then - Stmts *)
(** INT_OUT0:=INT_IN0; {*新云群控*} **)
(* assign - Stmt *)
LD INT_IN0
ST INT_OUT0
(** INT_OUT1:=INT_IN0; {*本地单控*} **)
(* assign - Stmt *)
LD INT_IN0
ST INT_OUT1
(** INT_OUT2:=INT_IN0; {*新云单控*} **)
(* assign - Stmt *)
LD INT_IN0
ST INT_OUT2
JMP ODK_END_IF_00000000000000K
(** end_if; **)
(* if - End *)
ODK_SKIP_00000000000000K_000000000000001:
ODK_END_IF_00000000000000K:
(** {*新云单控《--》本地单控*} **)
(** if INT_IN1<>INT_TEMP1 then {*新云单控《-- 本地单控*} **)
(* if - Cond *)
LD INT_IN1
NE INT_TEMP1
JMPCN ODK_SKIP_00000000000000L_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_00000000000000L
(** elsif INT_IN2<>INT_TEMP2 then {*新云单控 --》本地单控*} **)
(* elseif - Cond *)
ODK_SKIP_00000000000000L_000000000000001:
LD INT_IN2
NE INT_TEMP2
JMPCN ODK_SKIP_00000000000000L_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_00000000000000L
(** end_if; **)
(* if - End *)
ODK_SKIP_00000000000000L_000000000000002:
ODK_END_IF_00000000000000L:
(** end_if; **)
(* if - End *)
ODK_END_IF_00000000000000I:
JMP ODK_END_IF_00000000000000H
(** end_if; **)
(* if - End *)
ODK_SKIP_00000000000000H_000000000000001:
ODK_END_IF_00000000000000H:
(** **)
(** INT_TEMP0:=INT_IN0; **)
(* assign - Stmt *)
LD INT_IN0
ST INT_TEMP0
(** 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