FUNCTION_BLOCK BS_SyncVavle
VAR_EXTERNAL

END_VAR

VAR_INPUT
REAL_IN1    :REAL;
REAL_IN2    :REAL;
REAL_IN3    :REAL;
BOOL_IN1    :BOOL;
BOOL_IN2    :BOOL;
BOOL_IN3    :BOOL;
INT_IN1     :INT;
INT_IN2     :INT;
INT_IN3     :INT;
END_VAR

VAR_OUTPUT
REAL_OUT1   :REAL;
REAL_OUT2   :REAL;
REAL_OUT3   :REAL;
BOOL_OUT1   :BOOL;
BOOL_OUT2   :BOOL;
BOOL_OUT3   :BOOL;
INT_OUT1   :INT;
INT_OUT2   :INT;
INT_OUT3   :INT;
END_VAR

VAR
REAL_TEMP1  :REAL;
REAL_TEMP2  :REAL;
REAL_TEMP3  :REAL;
BOOL_TEMP1  :BOOL;
BOOL_TEMP2  :BOOL;
BOOL_TEMP3  :BOOL;
INT_TEMP1  :INT;
INT_TEMP2  :INT;
INT_TEMP3  :INT;
END_VAR

(*Automatically declared*)
VAR_EXTERNAL
END_VAR
(** {*  **)
(**  **)
(** 时  间:20191001 **)
(** 版  本:1.2 **)
(** 作  者:姚立 **)
(** 名  称:三值非锁定互赋值 **)
(** 说  明:用于三个变量的相互赋值,且不锁定对方值 **)
(** 备  注: **)
(** 依赖块:无 **)
(**  **)
(** *} **)
(**  **)
(** {**********REAL两个变量相互赋值*************} **)
(** if REAL_IN1<>REAL_TEMP1 then **)
	(* if - Cond *)
	LD REAL_IN1
	NE REAL_TEMP1
	JMPCN ODK_SKIP_000000000000001_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

(** 	REAL_OUT3:=REAL_IN1; **)
		(* assign - Stmt *)
		LD REAL_IN1
		ST REAL_OUT3

		JMP ODK_END_IF_000000000000001

(** elsif  REAL_IN2<>REAL_TEMP2 then **)
	(* elseif - Cond *) 
	ODK_SKIP_000000000000001_000000000000001:
	LD REAL_IN2
	NE REAL_TEMP2
	JMPCN ODK_SKIP_000000000000001_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

(** 	REAL_OUT3:=REAL_IN2; **)
		(* assign - Stmt *)
		LD REAL_IN2
		ST REAL_OUT3

		JMP ODK_END_IF_000000000000001

(** elsif  REAL_IN3<>REAL_TEMP3 then **)
	(* elseif - Cond *) 
	ODK_SKIP_000000000000001_000000000000002:
	LD REAL_IN3
	NE REAL_TEMP3
	JMPCN ODK_SKIP_000000000000001_000000000000003

		(* elsif - Stmts *)

(** 	REAL_OUT1:=REAL_IN3; **)
		(* assign - Stmt *)
		LD REAL_IN3
		ST REAL_OUT1

(** 	REAL_OUT2:=REAL_IN3; **)
		(* assign - Stmt *)
		LD REAL_IN3
		ST REAL_OUT2

(** 	REAL_OUT3:=REAL_IN3; **)
		(* assign - Stmt *)
		LD REAL_IN3
		ST REAL_OUT3

		JMP ODK_END_IF_000000000000001

(** end_if; **)
	(* if - End *) 
	ODK_SKIP_000000000000001_000000000000003:
	ODK_END_IF_000000000000001:

(**  **)
(** REAL_TEMP1:=REAL_IN1; **)
	(* assign - Stmt *)
	LD REAL_IN1
	ST REAL_TEMP1

(** REAL_TEMP2:=REAL_IN2; **)
	(* assign - Stmt *)
	LD REAL_IN2
	ST REAL_TEMP2

(** REAL_TEMP3:=REAL_IN3; **)
	(* assign - Stmt *)
	LD REAL_IN3
	ST REAL_TEMP3

(**  **)
(** {**********BOOL两个变量相互赋值*************} **)
(** if BOOL_IN1<>BOOL_TEMP1 then **)
	(* if - Cond *)
	LD BOOL_IN1
	NE BOOL_TEMP1
	JMPCN ODK_SKIP_000000000000002_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

(** 	BOOL_OUT3:=BOOL_IN1; **)
		(* assign - Stmt *)
		LD BOOL_IN1
		ST BOOL_OUT3

		JMP ODK_END_IF_000000000000002

(** elsif  BOOL_IN2<>BOOL_TEMP2 then **)
	(* elseif - Cond *) 
	ODK_SKIP_000000000000002_000000000000001:
	LD BOOL_IN2
	NE BOOL_TEMP2
	JMPCN ODK_SKIP_000000000000002_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

(** 	BOOL_OUT3:=BOOL_IN2; **)
		(* assign - Stmt *)
		LD BOOL_IN2
		ST BOOL_OUT3

		JMP ODK_END_IF_000000000000002

(** elsif  BOOL_IN3<>BOOL_TEMP3 then **)
	(* elseif - Cond *) 
	ODK_SKIP_000000000000002_000000000000002:
	LD BOOL_IN3
	NE BOOL_TEMP3
	JMPCN ODK_SKIP_000000000000002_000000000000003

		(* elsif - Stmts *)

(** 	BOOL_OUT1:=BOOL_IN3; **)
		(* assign - Stmt *)
		LD BOOL_IN3
		ST BOOL_OUT1

(** 	BOOL_OUT2:=BOOL_IN3; **)
		(* assign - Stmt *)
		LD BOOL_IN3
		ST BOOL_OUT2

(** 	BOOL_OUT3:=BOOL_IN3; **)
		(* assign - Stmt *)
		LD BOOL_IN3
		ST BOOL_OUT3

		JMP ODK_END_IF_000000000000002

(** end_if; **)
	(* if - End *) 
	ODK_SKIP_000000000000002_000000000000003:
	ODK_END_IF_000000000000002:

(**  **)
(** BOOL_TEMP1:=BOOL_IN1; **)
	(* assign - Stmt *)
	LD BOOL_IN1
	ST BOOL_TEMP1

(** BOOL_TEMP2:=BOOL_IN2; **)
	(* assign - Stmt *)
	LD BOOL_IN2
	ST BOOL_TEMP2

(** BOOL_TEMP3:=BOOL_IN3; **)
	(* assign - Stmt *)
	LD BOOL_IN3
	ST BOOL_TEMP3

(**  **)
(** {**********INT两个变量相互赋值*************} **)
(** if INT_IN1<>INT_TEMP1 then **)
	(* if - Cond *)
	LD INT_IN1
	NE INT_TEMP1
	JMPCN ODK_SKIP_000000000000003_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

(** 	INT_OUT3:=INT_IN1; **)
		(* assign - Stmt *)
		LD INT_IN1
		ST INT_OUT3

		JMP ODK_END_IF_000000000000003

(** elsif  INT_IN2<>INT_TEMP2 then **)
	(* elseif - Cond *) 
	ODK_SKIP_000000000000003_000000000000001:
	LD INT_IN2
	NE INT_TEMP2
	JMPCN ODK_SKIP_000000000000003_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

(** 	INT_OUT3:=INT_IN2; **)
		(* assign - Stmt *)
		LD INT_IN2
		ST INT_OUT3

		JMP ODK_END_IF_000000000000003

(** elsif  INT_IN3<>INT_TEMP3 then **)
	(* elseif - Cond *) 
	ODK_SKIP_000000000000003_000000000000002:
	LD INT_IN3
	NE INT_TEMP3
	JMPCN ODK_SKIP_000000000000003_000000000000003

		(* elsif - Stmts *)

(** 	INT_OUT1:=INT_IN3; **)
		(* assign - Stmt *)
		LD INT_IN3
		ST INT_OUT1

(** 	INT_OUT2:=INT_IN3; **)
		(* assign - Stmt *)
		LD INT_IN3
		ST INT_OUT2

(** 	INT_OUT3:=INT_IN3; **)
		(* assign - Stmt *)
		LD INT_IN3
		ST INT_OUT3

		JMP ODK_END_IF_000000000000003

(** end_if; **)
	(* if - End *) 
	ODK_SKIP_000000000000003_000000000000003:
	ODK_END_IF_000000000000003:

(**  **)
(** INT_TEMP1:=INT_IN1; **)
	(* assign - Stmt *)
	LD INT_IN1
	ST INT_TEMP1

(** INT_TEMP2:=INT_IN2; **)
	(* assign - Stmt *)
	LD INT_IN2
	ST INT_TEMP2

(** INT_TEMP3:=INT_IN3; **)
	(* assign - Stmt *)
	LD INT_IN3
	ST INT_TEMP3

(**  **)
(**  **)
(**  **)
(**  **)
(**  **)
(**  **)

END_FUNCTION_BLOCK