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 (* 时 间:20191009 版 本:1.0 作 者:姚立 名 称:主控CPU新云群控、本地群控、定时控制(BOOL型专用)同步功能块 说 明: IN0 为定时控制 (仅为BOOL型有,保留给定时控制) IN1为本地群控,IN2为新云群控 CM 为新云模式 0本地模式 1新云模式 支持BOOL,REAL,INT三种类型变量 备 注: 依赖块:无 *) (**********新云模式时变量相互同步,本地模式时,本地->新云单向同步*************) if CM =0 then (*本地模式*) (*定时控制--》本地群控--》新云群控*) if BOOL_IN0<>BOOL_TEMP0 then (*定时控制--》本地群组控制*) BOOL_OUT0:=BOOL_IN0; (*定时群控*) BOOL_OUT1:=BOOL_IN0; (*本地群控*) else BOOL_OUT1:=BOOL_IN1; BOOL_OUT2:=BOOL_IN1; end_if; end_if; if CM =1 then (*新云模式*) (*新云群控《--》本地群控*) if BOOL_IN1<>BOOL_TEMP1 then (*新云群控《-- 本地群控*) BOOL_OUT1:=BOOL_IN1; BOOL_OUT2:=BOOL_IN1; elsif BOOL_IN2<>BOOL_TEMP2 then (*新云群控 --》本地群控*) BOOL_OUT1:=BOOL_IN2; BOOL_OUT2:=BOOL_IN2; end_if; end_if; BOOL_TEMP0:=BOOL_IN0; BOOL_TEMP1:=BOOL_IN1; BOOL_TEMP2:=BOOL_IN2; if CM =0 then REAL_OUT1:=REAL_IN1; REAL_OUT2:=REAL_IN1; end_if; if CM =1 then if REAL_IN1<>REAL_TEMP1 then REAL_OUT1:=REAL_IN1; REAL_OUT2:=REAL_IN1; elsif REAL_IN2<>REAL_TEMP2 then REAL_OUT1:=REAL_IN2; REAL_OUT2:=REAL_IN2; end_if; end_if; REAL_TEMP1:=REAL_IN1; REAL_TEMP2:=REAL_IN2; if CM =0 then INT_OUT1:=INT_IN1; INT_OUT2:=INT_IN1; end_if; if CM =1 then if INT_IN1<>INT_TEMP1 then INT_OUT1:=INT_IN1; INT_OUT2:=INT_IN1; elsif INT_IN2<>INT_TEMP2 then INT_OUT1:=INT_IN2; INT_OUT2:=INT_IN2; end_if; end_if; INT_TEMP1:=INT_IN1; INT_TEMP2:=INT_IN2; END_FUNCTION_BLOCK