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