FUNCTION_BLOCK BS_ModbusCom
VAR_EXTERNAL

END_VAR

VAR_INPUT

	SerialCom		: byte;
	NetSend 		: array[0..64] of NetSendConfig;
	NetSendDelay	: time;
	ComSend			: array[0..64] of ComSendConfig;
	ComSendDelay	: time; (*系统默认t#200ms*)
	ComRecvDelay	: time; (*系统默认t#120ms*)
	ComAnalysisDelay: time; (*系统默认t#150ms*)
	DataReadLength	: int;
	
END_VAR
	
VAR_OUTPUT

	DataStr			: array[0..128] of byte;
	DataRead		: array[0..128] of DataFormat;
	
END_VAR

VAR

	SendFB			: NW_SerSend;
	RecvFB			: NW_SerRecv;
	SendP 			: pointer;
	RecvP 			: pointer;
	Send_act		: bool;
	Recv_act		: bool;
	i,j,k			: int;
	i0,i1,i2,i3  	: int;
	CRC16Lo1		: Byte;
	CRC16Hi1		: Byte;
	CRC16Lo			: Byte;   
	CRC16Hi 		: Byte;     
	CL,CH 			: Byte;		
	SaveHi,SaveLo 	: Byte;
	Flag			: int;	
	ENO_Count0		: dword;
	ENO_Count1		: dword;
	timer1			: ton;
	timer1_run		: bool;
	NetVarSend1	 	: NetVarSend;
	t1				: ton;
	t1_in			: bool;
	t1_q			: bool;
	t2				: ton;
	t2_in			: bool;
	t2_q			: bool;
	t3				: ton;
	t3_in			: bool;
	t3_q			: bool;
	Commandsend		: int;
	SendStr			: array[0..8] of byte;
	RecvStr			: array[0..200] of byte;
	CalcStr			: array[0..200] of byte;
	ErrStr			: array[0..100] of int;
	Recv_len		: int;
	Recv_lenp		: int;
	Recv_DataLen	: int;
	Recv_CRCLo		: int;
	Recv_CRCHi		: int;
	TestMode		: bool;
	StopMem			: int;
	ComTimeoutCount	: int;
	ComTimeoutClear	: bool;
	checkmark1   	: bool;
	checkmark2   	: bool;
	checkmark3   	: bool;
	checkmark4   	: bool;
	
	DATA1			: int;
	DATA2			: int;
	
	TempStr			: array[0..128] of byte;
	TempReal		: real;
	v2v 			: NW_MemCopy;
	P1				: Pointer;
	P2				: Pointer;

END_VAR

(*Automatically declared*)
VAR_EXTERNAL
END_VAR
(** {*  **)
(** ʱ  �䣺20200915 **)
(** ��  ����1.3 **)
(** ��  �ߣ�Ҧ�� **)
(** ��  �ƣ�ͨѶ���ܿ� **)
(** ˵  ���� **)
(** 		֧��ModbusЭ���03/04����Ķ�ȡ������ **)
(** 		֧�ֶ�ȡʧ�ܴ�����ѯ **)
(** 		֧�ֶ�ȡʧ����������������� **)
(** 		֧��ModbusЭ���06����ĵ����Ĵ���д�� **)
(** 		��һ��������ͨѶ��λ���� **)
(** 	 **)
(** 	input ����˵�� **)
(** 		 **)
(** 		SerialCom		: byte; **)
(** 		NetSend 		: array[0..64] of NetSendConfig; **)
(** 		NetSendDelay	: time; **)
(** 		ComSend			: array[0..64] of ComSendConfig; **)
(** 		ComSendDelay	: time;  **)
(** 		ComRecvDelay	: time;  **)
(** 		ComAnalysisDelay: time;  **)
(** 		DataReadLength	: int; **)
(** 		DataType		: array[0..256] of int ; **)
(** 		 **)
(** 	output ���˵�� **)
(** 		 **)
(** 		DataStr			: array[0..256] of byte; **)
(** 		DataRead		: array[0..256] of DataFormat; **)
(** 		 **)
(** 	config �����	 **)
(** 		 **)
(** 		ComSend[1].Enable		:=1;			��ȡ����1 ����Ϊ0������Ϊ2������ʱ�����뱻�����������ж�; **)
(** 		ComSend[1].EquipAddr	:=1;			�豸վ��0-255		 **)
(** 		ComSend[1].FunctionCode :=16#03;		������ Ŀǰ֧�� ��ȡHR��16#03����ȡAR��16#04 ��д��HR����16#06		 **)
(** 		ComSend[1].StartAddr 	:=2504;	 		Modscan���Ե�ַ   **)
(** 		ComSend[1].Length	  	:=12;			��ȡ�Ĵ������� **)
(** 		ComSend[1].StartMem		:=0;			�����DataStr������ʼλ�ã�һ��Ϊǰһ���ݵ���ʼ��ַ+ǰһ���ݶ�ȡ�Ĵ�������*2	 **)
(** 		ComSend[1].WriteDataH1	:=0;			д�����ݵĸ�λ����ȡʱ����Ҫ���� **)
(** 		ComSend[1].WriteDataL1	:=WriteTestW;	д�����ݵĵ�λ����ȡʱ����Ҫ���� **)
(** 		 **)
(** 	read ��ȡ���� **)
(** 		 **)
(** 		DataType[00]:=1; ������������ 1 int 2 float 3 byte 0 ���⣬���ݶ�ʱ������Ϊ0 **)
(** 		 **)
(** 		DATA:=DataRead[00].TO_BYTE; �ֱ��Ӧ DataType 3 **)
(** 		DATA:=DataRead[00].TO_REAL; �ֱ��Ӧ DataType 2 **)
(** 		DATA:=DataRead[00].TO_INT; 	�ֱ��Ӧ DataType 1 **)
(** 			 **)
(** 		 **)
(** ��  ע�� **)
(** 		ĿǰΪʾ��������δ��ɷ�װ�����Գ�������̨EXC5000C3�汾����CPU������������CPU����COM��Ϊ���ɿڣ���һCPU����COM��ΪModbus **)
(** 		����ʾ����ȡ����Ϊ���߷������MeterSim **)
(** �����飺�� **)
(**  **)
(** *} **)
(**  **)
(** {**********************************************ͨѶ����**********************************************}	 **)
(** {*  **)
(**   �����ӳ�ʱ���ϵΪ����EXC1000COM��485��ȡ�������ٶ�Ϊ9600BPS���� **)
(**   ����̺��ӳ�����ͬ��������������ϵ�ο�Ŀǰ��ϵ **)
(**   �ӳ�ʱ������߲����ʣ��������豸��Ӧ�ٶ��йأ������ʵ��������� **)
(** *} **)
(**  **)
(**  **)
(**  **)
(** {********************************************����ͨѶ����********************************************} **)
(**  **)
(** t1_in:=not t1.q; **)
	(* assign - Stmt *)
	LD t1.q
	NOT
	ST t1_in

(** t1(IN :=t1_in , PT :=ComSendDelay ); **)
	(* call - Stmt *)
	CAL t1 (
		IN := t1_in,
		PT := ComSendDelay
	)

(** t2(IN :=t1_in , PT :=ComRecvDelay ); **)
	(* call - Stmt *)
	CAL t2 (
		IN := t1_in,
		PT := ComRecvDelay
	)

(** t3(IN :=t1_in , PT :=ComAnalysisDelay ); **)
	(* call - Stmt *)
	CAL t3 (
		IN := t1_in,
		PT := ComAnalysisDelay
	)

(**  **)
(** if t1.q=0 and t1_q=1 then **)
	(* if - Cond *)
	LD t1.q
	EQ 0
	AND ( t1_q
		EQ 1
	)
	JMPCN ODK_SKIP_000000000000001_000000000000001

		(* then - Stmts *)

(** 	Send_act:=1; **)
		(* assign - Stmt *)
		LD 1
		ST Send_act

		JMP ODK_END_IF_000000000000001

(** else **)
	(* else *) 
	ODK_SKIP_000000000000001_000000000000001:

		(* else - Stmts *)

(** 	Send_act:=0; **)
		(* assign - Stmt *)
		LD 0
		ST Send_act

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

(**  **)
(** if t2.q=1 then **)
	(* if - Cond *)
	LD t2.q
	EQ 1
	JMPCN ODK_SKIP_000000000000002_000000000000001

		(* then - Stmts *)

(** 	Recv_act:=1; **)
		(* assign - Stmt *)
		LD 1
		ST Recv_act

		JMP ODK_END_IF_000000000000002

(** else **)
	(* else *) 
	ODK_SKIP_000000000000002_000000000000001:

		(* else - Stmts *)

(** 	Recv_act:=0;	 **)
		(* assign - Stmt *)
		LD 0
		ST Recv_act

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

(**  **)
(** if ComSend[1].Enable=1 then {*������λ�����õĻ���ʼִ�з�������*} **)
	(* if - Cond *)
	LD ComSend[1].Enable
	EQ 1
	JMPCN ODK_SKIP_000000000000003_000000000000001

		(* then - Stmts *)

(** 	if Send_act=1 then **)
		(* if - Cond *)
		LD Send_act
		EQ 1
		JMPCN ODK_SKIP_000000000000004_000000000000001

			(* then - Stmts *)

(** 		if TestMode=0 then  **)
			(* if - Cond *)
			LD TestMode
			EQ 0
			JMPCN ODK_SKIP_000000000000005_000000000000001

				(* then - Stmts *)

(** 			Commandsend:=Commandsend + 1; **)
				(* assign - Stmt *)
				LD Commandsend
				ADD 1
				ST Commandsend

				JMP ODK_END_IF_000000000000005

(** 		end_if; **)
			(* if - End *) 
			ODK_SKIP_000000000000005_000000000000001:
			ODK_END_IF_000000000000005:

			JMP ODK_END_IF_000000000000004

(** 	end_if; **)
		(* if - End *) 
		ODK_SKIP_000000000000004_000000000000001:
		ODK_END_IF_000000000000004:

(** 	if ComSend[Commandsend].Enable=0 then {*ִ�е�������λ����*} **)
		(* if - Cond *)
		LD ComSend[Commandsend].Enable
		EQ 0
		JMPCN ODK_SKIP_000000000000006_000000000000001

			(* then - Stmts *)

(** 		Commandsend:=0; **)
			(* assign - Stmt *)
			LD 0
			ST Commandsend

			JMP ODK_END_IF_000000000000006

(** 	end_if;	 **)
		(* if - End *) 
		ODK_SKIP_000000000000006_000000000000001:
		ODK_END_IF_000000000000006:

(** 	 **)
(** 	if ComSend[Commandsend].Enable=1 then  **)
		(* if - Cond *)
		LD ComSend[Commandsend].Enable
		EQ 1
		JMPCN ODK_SKIP_000000000000007_000000000000001

			(* then - Stmts *)

(** 		{*��ȡ����*} **)
(** 		if ComSend[Commandsend].FunctionCode = 16#03 then **)
			(* if - Cond *)
			LD ComSend[Commandsend].FunctionCode
			EQ 16#03
			JMPCN ODK_SKIP_000000000000008_000000000000001

				(* then - Stmts *)

(** 			SendStr[0]:=ComSend[Commandsend].EquipAddr;{*��ַ*} **)
				(* assign - Stmt *)
				LD ComSend[Commandsend].EquipAddr
				ST SendStr[0]

(** 			SendStr[1]:=ComSend[Commandsend].FunctionCode;{*������*} **)
				(* assign - Stmt *)
				LD ComSend[Commandsend].FunctionCode
				ST SendStr[1]

(** 			SendStr[2]:=int_to_byte((ComSend[Commandsend].StartAddr-1) / 256);{*��ʼ��ַ��λ*} **)
				(* assign - Stmt *)
				LD ComSend[Commandsend].StartAddr
				SUB 1
				DIV 256
				int_to_byte 
				ST SendStr[2]

(** 			SendStr[3]:=int_to_byte((ComSend[Commandsend].StartAddr-1) mod 256);{*��ʼ��ַ��λ*} **)
				(* assign - Stmt *)
				LD ComSend[Commandsend].StartAddr
				SUB 1
				MOD 256
				int_to_byte 
				ST SendStr[3]

(** 			SendStr[4]:=0;{*���ȸ�λ*} **)
				(* assign - Stmt *)
				LD 0
				ST SendStr[4]

(** 			SendStr[5]:=ComSend[Commandsend].Length;{*���ȵ�λ*} **)
				(* assign - Stmt *)
				LD ComSend[Commandsend].Length
				ST SendStr[5]

				JMP ODK_END_IF_000000000000008

(** 		end_if; **)
			(* if - End *) 
			ODK_SKIP_000000000000008_000000000000001:
			ODK_END_IF_000000000000008:

(** 		{*��ȡ����*} **)
(** 		if ComSend[Commandsend].FunctionCode = 16#04 then **)
			(* if - Cond *)
			LD ComSend[Commandsend].FunctionCode
			EQ 16#04
			JMPCN ODK_SKIP_000000000000009_000000000000001

				(* then - Stmts *)

(** 			SendStr[0]:=ComSend[Commandsend].EquipAddr;{*��ַ*} **)
				(* assign - Stmt *)
				LD ComSend[Commandsend].EquipAddr
				ST SendStr[0]

(** 			SendStr[1]:=ComSend[Commandsend].FunctionCode;{*������*} **)
				(* assign - Stmt *)
				LD ComSend[Commandsend].FunctionCode
				ST SendStr[1]

(** 			SendStr[2]:=int_to_byte((ComSend[Commandsend].StartAddr-1) / 256);{*��ʼ��ַ��λ*} **)
				(* assign - Stmt *)
				LD ComSend[Commandsend].StartAddr
				SUB 1
				DIV 256
				int_to_byte 
				ST SendStr[2]

(** 			SendStr[3]:=int_to_byte((ComSend[Commandsend].StartAddr-1) mod 256);{*��ʼ��ַ��λ*} **)
				(* assign - Stmt *)
				LD ComSend[Commandsend].StartAddr
				SUB 1
				MOD 256
				int_to_byte 
				ST SendStr[3]

(** 			SendStr[4]:=0;{*���ȸ�λ*} **)
				(* assign - Stmt *)
				LD 0
				ST SendStr[4]

(** 			SendStr[5]:=ComSend[Commandsend].Length;{*���ȵ�λ*} **)
				(* assign - Stmt *)
				LD ComSend[Commandsend].Length
				ST SendStr[5]

				JMP ODK_END_IF_000000000000009

(** 		end_if; **)
			(* if - End *) 
			ODK_SKIP_000000000000009_000000000000001:
			ODK_END_IF_000000000000009:

(** 		{*�����*} **)
(** 		if ComSend[Commandsend].FunctionCode = 16#06 then **)
			(* if - Cond *)
			LD ComSend[Commandsend].FunctionCode
			EQ 16#06
			JMPCN ODK_SKIP_00000000000000A_000000000000001

				(* then - Stmts *)

(** 			SendStr[0]:=ComSend[Commandsend].EquipAddr;{*��ַ*} **)
				(* assign - Stmt *)
				LD ComSend[Commandsend].EquipAddr
				ST SendStr[0]

(** 			SendStr[1]:=ComSend[Commandsend].FunctionCode;{*������*} **)
				(* assign - Stmt *)
				LD ComSend[Commandsend].FunctionCode
				ST SendStr[1]

(** 			SendStr[2]:=int_to_byte((ComSend[Commandsend].StartAddr-1) / 256);{*��ʼ��ַ��λ*} **)
				(* assign - Stmt *)
				LD ComSend[Commandsend].StartAddr
				SUB 1
				DIV 256
				int_to_byte 
				ST SendStr[2]

(** 			SendStr[3]:=int_to_byte((ComSend[Commandsend].StartAddr-1) mod 256);{*��ʼ��ַ��λ*} **)
				(* assign - Stmt *)
				LD ComSend[Commandsend].StartAddr
				SUB 1
				MOD 256
				int_to_byte 
				ST SendStr[3]

(** 			SendStr[4]:=ComSend[Commandsend].WriteDataH1; **)
				(* assign - Stmt *)
				LD ComSend[Commandsend].WriteDataH1
				ST SendStr[4]

(** 			SendStr[5]:=ComSend[Commandsend].WriteDataL1; **)
				(* assign - Stmt *)
				LD ComSend[Commandsend].WriteDataL1
				ST SendStr[5]

				JMP ODK_END_IF_00000000000000A

(** 		end_if; **)
			(* if - End *) 
			ODK_SKIP_00000000000000A_000000000000001:
			ODK_END_IF_00000000000000A:

			JMP ODK_END_IF_000000000000007

(** 	end_if; **)
		(* if - End *) 
		ODK_SKIP_000000000000007_000000000000001:
		ODK_END_IF_000000000000007:

(** 	 **)
(** 	if ComSend[Commandsend].Enable=2 then  **)
		(* if - Cond *)
		LD ComSend[Commandsend].Enable
		EQ 2
		JMPCN ODK_SKIP_00000000000000B_000000000000001

			(* then - Stmts *)

(** 		SendStr[0]:= 16#00 ; **)
			(* assign - Stmt *)
			LD 16#00
			ST SendStr[0]

(** 		SendStr[1]:= 16#00 ; **)
			(* assign - Stmt *)
			LD 16#00
			ST SendStr[1]

(** 		SendStr[2]:= 16#00 ; **)
			(* assign - Stmt *)
			LD 16#00
			ST SendStr[2]

(** 		SendStr[3]:= 16#00 ; **)
			(* assign - Stmt *)
			LD 16#00
			ST SendStr[3]

(** 		SendStr[4]:= 16#00 ; **)
			(* assign - Stmt *)
			LD 16#00
			ST SendStr[4]

(** 		SendStr[5]:= 16#00 ; **)
			(* assign - Stmt *)
			LD 16#00
			ST SendStr[5]

			JMP ODK_END_IF_00000000000000B

(** 	end_if; **)
		(* if - End *) 
		ODK_SKIP_00000000000000B_000000000000001:
		ODK_END_IF_00000000000000B:

(** 	 **)
(** 	{*CRC��*}	 **)
(** 	CRC16Lo := 255; **)
		(* assign - Stmt *)
		LD 255
		ST CRC16Lo

(** 	CRC16Hi := 255; **)
		(* assign - Stmt *)
		LD 255
		ST CRC16Hi

(** 	CL := 1; **)
		(* assign - Stmt *)
		LD 1
		ST CL

(** 	CH := 160; **)
		(* assign - Stmt *)
		LD 160
		ST CH

(**  **)
(** 	for i := 0 To 5 by 1 do **)
		(* for - Init *)
		LD 0
		ST i
		EQ 5
		JMPC ODK_FOR_STMTS_00000000000000C

		(* for - Cond *)
		ODK_FOR_00000000000000C:

		LD 0
		GT 5
		JMPC ODK_FOR_DOWN_00000000000000C

		LD 0
		GT 1
		JMPC ODK_END_FOR_00000000000000C

		LD 5
		LT i
		JMPC ODK_END_FOR_00000000000000C
		JMP ODK_FOR_STMTS_00000000000000C

		ODK_FOR_DOWN_00000000000000C:

		LD 5
		GT i
		JMPC ODK_END_FOR_00000000000000C

		LD 0
		LT 1
		JMPC ODK_END_FOR_00000000000000C

			(* for - Stmts *)
			ODK_FOR_STMTS_00000000000000C:

(** 	  CRC16Lo := CRC16Lo xor SendStr[i];  **)
			(* assign - Stmt *)
			LD CRC16Lo
			XOR SendStr[i]
			ST CRC16Lo

(** 	  for Flag := 0 to 7 by 1 do **)
			(* for - Init *)
			LD 0
			ST Flag
			EQ 7
			JMPC ODK_FOR_STMTS_00000000000000D

			(* for - Cond *)
			ODK_FOR_00000000000000D:

			LD 0
			GT 7
			JMPC ODK_FOR_DOWN_00000000000000D

			LD 0
			GT 1
			JMPC ODK_END_FOR_00000000000000D

			LD 7
			LT Flag
			JMPC ODK_END_FOR_00000000000000D
			JMP ODK_FOR_STMTS_00000000000000D

			ODK_FOR_DOWN_00000000000000D:

			LD 7
			GT Flag
			JMPC ODK_END_FOR_00000000000000D

			LD 0
			LT 1
			JMPC ODK_END_FOR_00000000000000D

				(* for - Stmts *)
				ODK_FOR_STMTS_00000000000000D:

(** 	    SaveHi := CRC16Hi; **)
				(* assign - Stmt *)
				LD CRC16Hi
				ST SaveHi

(** 	    SaveLo := CRC16Lo; **)
				(* assign - Stmt *)
				LD CRC16Lo
				ST SaveLo

(** 	    CRC16Hi := shr(CRC16Hi,1);             **)
				(* assign - Stmt *)
				LD CRC16Hi
				shr 1
				ST CRC16Hi

(** 	    CRC16Lo := shr(CRC16Lo,1); **)
				(* assign - Stmt *)
				LD CRC16Lo
				shr 1
				ST CRC16Lo

(**  **)
(** 	      if ((SaveHi and 1) = 1) then  **)
				(* if - Cond *)
				LD SaveHi
				AND 1
				EQ 1
				JMPCN ODK_SKIP_00000000000000E_000000000000001

					(* then - Stmts *)

(** 	        CRC16Lo := CRC16Lo Or 128;       **)
					(* assign - Stmt *)
					LD CRC16Lo
					OR 128
					ST CRC16Lo

					JMP ODK_END_IF_00000000000000E

(** 	      end_If;                            **)
				(* if - End *) 
				ODK_SKIP_00000000000000E_000000000000001:
				ODK_END_IF_00000000000000E:

(** 	      If ((SaveLo and 1) = 1) then  **)
				(* if - Cond *)
				LD SaveLo
				AND 1
				EQ 1
				JMPCN ODK_SKIP_00000000000000F_000000000000001

					(* then - Stmts *)

(** 	        CRC16Hi := CRC16Hi xor CH; **)
					(* assign - Stmt *)
					LD CRC16Hi
					XOR CH
					ST CRC16Hi

(** 	        CRC16Lo := CRC16Lo xor CL; **)
					(* assign - Stmt *)
					LD CRC16Lo
					XOR CL
					ST CRC16Lo

					JMP ODK_END_IF_00000000000000F

(** 	      end_if; **)
				(* if - End *) 
				ODK_SKIP_00000000000000F_000000000000001:
				ODK_END_IF_00000000000000F:

			(* for - By *)
			LD 1
			ADD Flag
			ST Flag
(** 	  end_for; **)

			JMP ODK_FOR_00000000000000D

			(* for - End *) 
			ODK_END_FOR_00000000000000D:

		(* for - By *)
		LD 1
		ADD i
		ST i
(** 	end_for; **)

		JMP ODK_FOR_00000000000000C

		(* for - End *) 
		ODK_END_FOR_00000000000000C:

(**  **)
(** 	SendStr[6]:=CRC16Lo; **)
		(* assign - Stmt *)
		LD CRC16Lo
		ST SendStr[6]

(** 	SendStr[7]:=CRC16Hi; **)
		(* assign - Stmt *)
		LD CRC16Hi
		ST SendStr[7]

		JMP ODK_END_IF_000000000000003

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

(**  **)
(**  **)
(** if t3.q=1 then **)
	(* if - Cond *)
	LD t3.q
	EQ 1
	JMPCN ODK_SKIP_00000000000000G_000000000000001

		(* then - Stmts *)

(**  **)
(** 	{*�������ݴ���*} **)
(** 	if Recv_len>=6 then{*���*} **)
		(* if - Cond *)
		LD Recv_len
		GE 6
		JMPCN ODK_SKIP_00000000000000H_000000000000001

			(* then - Stmts *)

(** 		Recv_lenp :=Recv_len-3;{*ȥ��У��λ-2,0��ʼ-1*} **)
			(* assign - Stmt *)
			LD Recv_len
			SUB 3
			ST Recv_lenp

(** 	 **)
(** 		CRC16Lo := 255; **)
			(* assign - Stmt *)
			LD 255
			ST CRC16Lo

(** 		CRC16Hi := 255; **)
			(* assign - Stmt *)
			LD 255
			ST CRC16Hi

(** 		CL := 1; **)
			(* assign - Stmt *)
			LD 1
			ST CL

(** 		CH := 160; **)
			(* assign - Stmt *)
			LD 160
			ST CH

(**  **)
(** 		for i := 0 To Recv_lenp by 1 do **)
			(* for - Init *)
			LD 0
			ST i
			EQ Recv_lenp
			JMPC ODK_FOR_STMTS_00000000000000I

			(* for - Cond *)
			ODK_FOR_00000000000000I:

			LD 0
			GT Recv_lenp
			JMPC ODK_FOR_DOWN_00000000000000I

			LD 0
			GT 1
			JMPC ODK_END_FOR_00000000000000I

			LD Recv_lenp
			LT i
			JMPC ODK_END_FOR_00000000000000I
			JMP ODK_FOR_STMTS_00000000000000I

			ODK_FOR_DOWN_00000000000000I:

			LD Recv_lenp
			GT i
			JMPC ODK_END_FOR_00000000000000I

			LD 0
			LT 1
			JMPC ODK_END_FOR_00000000000000I

				(* for - Stmts *)
				ODK_FOR_STMTS_00000000000000I:

(** 		  CRC16Lo := CRC16Lo xor RecvStr[i];  **)
				(* assign - Stmt *)
				LD CRC16Lo
				XOR RecvStr[i]
				ST CRC16Lo

(** 		  for Flag := 0 to 7 by 1 do **)
				(* for - Init *)
				LD 0
				ST Flag
				EQ 7
				JMPC ODK_FOR_STMTS_00000000000000J

				(* for - Cond *)
				ODK_FOR_00000000000000J:

				LD 0
				GT 7
				JMPC ODK_FOR_DOWN_00000000000000J

				LD 0
				GT 1
				JMPC ODK_END_FOR_00000000000000J

				LD 7
				LT Flag
				JMPC ODK_END_FOR_00000000000000J
				JMP ODK_FOR_STMTS_00000000000000J

				ODK_FOR_DOWN_00000000000000J:

				LD 7
				GT Flag
				JMPC ODK_END_FOR_00000000000000J

				LD 0
				LT 1
				JMPC ODK_END_FOR_00000000000000J

					(* for - Stmts *)
					ODK_FOR_STMTS_00000000000000J:

(** 		    SaveHi := CRC16Hi; **)
					(* assign - Stmt *)
					LD CRC16Hi
					ST SaveHi

(** 		    SaveLo := CRC16Lo; **)
					(* assign - Stmt *)
					LD CRC16Lo
					ST SaveLo

(** 		    CRC16Hi := shr(CRC16Hi,1);             **)
					(* assign - Stmt *)
					LD CRC16Hi
					shr 1
					ST CRC16Hi

(** 		    CRC16Lo := shr(CRC16Lo,1); **)
					(* assign - Stmt *)
					LD CRC16Lo
					shr 1
					ST CRC16Lo

(**    **)
(** 		      if ((SaveHi and 1) = 1) then  **)
					(* if - Cond *)
					LD SaveHi
					AND 1
					EQ 1
					JMPCN ODK_SKIP_00000000000000K_000000000000001

						(* then - Stmts *)

(** 		        CRC16Lo := CRC16Lo Or 128;       **)
						(* assign - Stmt *)
						LD CRC16Lo
						OR 128
						ST CRC16Lo

						JMP ODK_END_IF_00000000000000K

(** 		      end_If;                            **)
					(* if - End *) 
					ODK_SKIP_00000000000000K_000000000000001:
					ODK_END_IF_00000000000000K:

(** 		      If ((SaveLo and 1) = 1) then  **)
					(* if - Cond *)
					LD SaveLo
					AND 1
					EQ 1
					JMPCN ODK_SKIP_00000000000000L_000000000000001

						(* then - Stmts *)

(** 		        CRC16Hi := CRC16Hi xor CH; **)
						(* assign - Stmt *)
						LD CRC16Hi
						XOR CH
						ST CRC16Hi

(** 		        CRC16Lo := CRC16Lo xor CL; **)
						(* assign - Stmt *)
						LD CRC16Lo
						XOR CL
						ST CRC16Lo

						JMP ODK_END_IF_00000000000000L

(** 		      end_if; **)
					(* if - End *) 
					ODK_SKIP_00000000000000L_000000000000001:
					ODK_END_IF_00000000000000L:

				(* for - By *)
				LD 1
				ADD Flag
				ST Flag
(** 		  end_for; **)

				JMP ODK_FOR_00000000000000J

				(* for - End *) 
				ODK_END_FOR_00000000000000J:

			(* for - By *)
			LD 1
			ADD i
			ST i
(** 		end_for; **)

			JMP ODK_FOR_00000000000000I

			(* for - End *) 
			ODK_END_FOR_00000000000000I:

(** 		CRC16Hi1:=CRC16Hi; **)
			(* assign - Stmt *)
			LD CRC16Hi
			ST CRC16Hi1

(** 		CRC16Lo1:=CRC16Lo; **)
			(* assign - Stmt *)
			LD CRC16Lo
			ST CRC16Lo1

(** 		 **)
(** 		Recv_CRCLo:=Recv_lenp+1; **)
			(* assign - Stmt *)
			LD Recv_lenp
			ADD 1
			ST Recv_CRCLo

(** 		Recv_CRCHi:=Recv_lenp+2; **)
			(* assign - Stmt *)
			LD Recv_lenp
			ADD 2
			ST Recv_CRCHi

(** 		 **)
(** 		{*  **)
(** 			funtionCode03  **)
(** 			Tx �豸��ַ 03 ��ʼ��ַ��λ ��ʼ��ַ��λ �Ĵ���������λ �Ĵ���������λ CRCH CRCL **)
(** 			Rx �豸��ַ 03 �ֽ��� �Ĵ���1��λ �Ĵ���1��λ... CRCH CRCL **)
(** 			Recv_DataLen =(RecvStr[2])-1 ����Ϊ���ݳ���=���ֽ��������ֽ����պ���RecvStr[2]��-1��i��0��ʼ������-1�� **)
(** 			j			 = i+3 			 ����Ϊ����λ�Ǵӵ�3λ֮��ʼ�� **)
(** 			 **)
(** 			funtionCode06  **)
(** 			Tx �豸��ַ 06 ��ʼ��ַ��λ ��ʼ��ַ��λ �Ĵ���ֵ��λ �Ĵ���ֵ��λ CRCH CRCL **)
(** 			Rx �豸��ַ 06 ��ʼ��ַ��λ ��ʼ��ַ��λ �Ĵ���ֵ��λ �Ĵ���ֵ��λ CRCH CRCL **)
(** 			Recv_DataLen =(RecvStr[2])-1 ����Ϊ���ݳ���=2�������Ĵ�����ȡֻ��2λ��-1��i��0��ʼ������-1�� **)
(** 			j			 = i+4 			 ����Ϊ����λ�Ǵӵ�4λ֮��ʼ�� **)
(** 			 **)
(** 		*} **)
(** 		if ComSend[Commandsend].FunctionCode = 16#03 or ComSend[Commandsend].FunctionCode = 16#04 then **)
			(* if - Cond *)
			LD ComSend[Commandsend].FunctionCode
			EQ 16#03
			OR ( ComSend[Commandsend].FunctionCode
				EQ 16#04
			)
			JMPCN ODK_SKIP_00000000000000M_000000000000001

				(* then - Stmts *)

(** 			Recv_DataLen:=byte_to_int(RecvStr[2])-1; **)
				(* assign - Stmt *)
				LD RecvStr[2]
				byte_to_int 
				SUB 1
				ST Recv_DataLen

				JMP ODK_END_IF_00000000000000M

(** 		end_if; **)
			(* if - End *) 
			ODK_SKIP_00000000000000M_000000000000001:
			ODK_END_IF_00000000000000M:

(** 		if ComSend[Commandsend].FunctionCode = 16#06 then **)
			(* if - Cond *)
			LD ComSend[Commandsend].FunctionCode
			EQ 16#06
			JMPCN ODK_SKIP_00000000000000N_000000000000001

				(* then - Stmts *)

(** 			Recv_DataLen:=1; **)
				(* assign - Stmt *)
				LD 1
				ST Recv_DataLen

				JMP ODK_END_IF_00000000000000N

(** 		end_if; **)
			(* if - End *) 
			ODK_SKIP_00000000000000N_000000000000001:
			ODK_END_IF_00000000000000N:

(** 		if Commandsend<>0 then **)
			(* if - Cond *)
			LD Commandsend
			NE 0
			JMPCN ODK_SKIP_00000000000000O_000000000000001

				(* then - Stmts *)

(** 			if RecvStr[Recv_CRCLo]=CRC16Lo and RecvStr[Recv_CRCHi]=CRC16Hi then{*У����ȷ*} **)
				(* if - Cond *)
				LD RecvStr[Recv_CRCLo]
				EQ CRC16Lo
				AND ( RecvStr[Recv_CRCHi]
					EQ CRC16Hi
				)
				JMPCN ODK_SKIP_00000000000000P_000000000000001

					(* then - Stmts *)

(** 			 **)
(** 				for i:=0 to Recv_DataLen by 1 do **)
					(* for - Init *)
					LD 0
					ST i
					EQ Recv_DataLen
					JMPC ODK_FOR_STMTS_00000000000000Q

					(* for - Cond *)
					ODK_FOR_00000000000000Q:

					LD 0
					GT Recv_DataLen
					JMPC ODK_FOR_DOWN_00000000000000Q

					LD 0
					GT 1
					JMPC ODK_END_FOR_00000000000000Q

					LD Recv_DataLen
					LT i
					JMPC ODK_END_FOR_00000000000000Q
					JMP ODK_FOR_STMTS_00000000000000Q

					ODK_FOR_DOWN_00000000000000Q:

					LD Recv_DataLen
					GT i
					JMPC ODK_END_FOR_00000000000000Q

					LD 0
					LT 1
					JMPC ODK_END_FOR_00000000000000Q

						(* for - Stmts *)
						ODK_FOR_STMTS_00000000000000Q:

(** 					if ComSend[Commandsend].FunctionCode = 16#03 or ComSend[Commandsend].FunctionCode = 16#04 then **)
						(* if - Cond *)
						LD ComSend[Commandsend].FunctionCode
						EQ 16#03
						OR ( ComSend[Commandsend].FunctionCode
							EQ 16#04
						)
						JMPCN ODK_SKIP_00000000000000R_000000000000001

							(* then - Stmts *)

(** 						j:=i+3; **)
							(* assign - Stmt *)
							LD i
							ADD 3
							ST j

							JMP ODK_END_IF_00000000000000R

(** 					end_if; **)
						(* if - End *) 
						ODK_SKIP_00000000000000R_000000000000001:
						ODK_END_IF_00000000000000R:

(** 					if ComSend[Commandsend].FunctionCode = 16#06 then **)
						(* if - Cond *)
						LD ComSend[Commandsend].FunctionCode
						EQ 16#06
						JMPCN ODK_SKIP_00000000000000S_000000000000001

							(* then - Stmts *)

(** 						j:=i+4; **)
							(* assign - Stmt *)
							LD i
							ADD 4
							ST j

							JMP ODK_END_IF_00000000000000S

(** 					end_if; **)
						(* if - End *) 
						ODK_SKIP_00000000000000S_000000000000001:
						ODK_END_IF_00000000000000S:

(** 					if (SendStr[2]=int_to_byte((ComSend[Commandsend].StartAddr-1) / 256)) and (SendStr[3]=int_to_byte((ComSend[Commandsend].StartAddr-1) mod 256) )and (SendStr[1]=ComSend[Commandsend].FunctionCode) then{*������*} **)
						(* if - Cond *)
						LD SendStr[2]
						EQ ( ComSend[Commandsend].StartAddr
							SUB 1
							DIV 256
							int_to_byte 
						)
						AND ( SendStr[3]
							EQ ( ComSend[Commandsend].StartAddr
								SUB 1
								MOD 256
								int_to_byte 
							)
						)
						AND ( SendStr[1]
							EQ ComSend[Commandsend].FunctionCode
						)
						JMPCN ODK_SKIP_00000000000000T_000000000000001

							(* then - Stmts *)

(** 						CalcStr[i]:=RecvStr[j]; **)
							(* assign - Stmt *)
							LD RecvStr[j]
							ST CalcStr[i]

(** 						k:=ComSend[Commandsend].StartMem+i; **)
							(* assign - Stmt *)
							LD ComSend[Commandsend].StartMem
							ADD i
							ST k

(** 						DataStr[k]:=CalcStr[i]; **)
							(* assign - Stmt *)
							LD CalcStr[i]
							ST DataStr[k]

							JMP ODK_END_IF_00000000000000T

(** 					end_if; **)
						(* if - End *) 
						ODK_SKIP_00000000000000T_000000000000001:
						ODK_END_IF_00000000000000T:

					(* for - By *)
					LD 1
					ADD i
					ST i
(** 				end_for;  **)

					JMP ODK_FOR_00000000000000Q

					(* for - End *) 
					ODK_END_FOR_00000000000000Q:

(** 				ErrStr[commandsend]:=0; **)
					(* assign - Stmt *)
					LD 0
					ST ErrStr[Commandsend]

					JMP ODK_END_IF_00000000000000P

(** 			else **)
				(* else *) 
				ODK_SKIP_00000000000000P_000000000000001:

					(* else - Stmts *)

(** 			{*�����ۼ�*} **)
(** 				ErrStr[Commandsend]:=ErrStr[Commandsend]+1; **)
					(* assign - Stmt *)
					LD ErrStr[Commandsend]
					ADD 1
					ST ErrStr[Commandsend]

(** 				if ErrStr[Commandsend]>999 then **)
					(* if - Cond *)
					LD ErrStr[Commandsend]
					GT 999
					JMPCN ODK_SKIP_00000000000000U_000000000000001

						(* then - Stmts *)

(** 					ErrStr[Commandsend]:=999;	 **)
						(* assign - Stmt *)
						LD 999
						ST ErrStr[Commandsend]

						JMP ODK_END_IF_00000000000000U

(** 				end_if;	 **)
					(* if - End *) 
					ODK_SKIP_00000000000000U_000000000000001:
					ODK_END_IF_00000000000000U:

(** 			end_if; **)
				(* if - End *) 
				ODK_END_IF_00000000000000P:

				JMP ODK_END_IF_00000000000000O

(** 		end_if; **)
			(* if - End *) 
			ODK_SKIP_00000000000000O_000000000000001:
			ODK_END_IF_00000000000000O:

(** 		{*��ս���*} **)
(** 		for i:=0 to 200 by 1 do  **)
			(* for - Init *)
			LD 0
			ST i
			EQ 200
			JMPC ODK_FOR_STMTS_00000000000000V

			(* for - Cond *)
			ODK_FOR_00000000000000V:

			LD 0
			GT 200
			JMPC ODK_FOR_DOWN_00000000000000V

			LD 0
			GT 1
			JMPC ODK_END_FOR_00000000000000V

			LD 200
			LT i
			JMPC ODK_END_FOR_00000000000000V
			JMP ODK_FOR_STMTS_00000000000000V

			ODK_FOR_DOWN_00000000000000V:

			LD 200
			GT i
			JMPC ODK_END_FOR_00000000000000V

			LD 0
			LT 1
			JMPC ODK_END_FOR_00000000000000V

				(* for - Stmts *)
				ODK_FOR_STMTS_00000000000000V:

(** 			RecvStr[i]:=0; **)
				(* assign - Stmt *)
				LD 0
				ST RecvStr[i]

(** 			CalcStr[i]:=0; **)
				(* assign - Stmt *)
				LD 0
				ST CalcStr[i]

			(* for - By *)
			LD 1
			ADD i
			ST i
(** 		end_for; **)

			JMP ODK_FOR_00000000000000V

			(* for - End *) 
			ODK_END_FOR_00000000000000V:

(** 		 **)
(** 		{*���󷵻��ۼƳ�ʱ���������*} **)
(** 		if ErrStr[Commandsend]>ComTimeoutCount and ComTimeoutClear=1 then **)
			(* if - Cond *)
			LD ErrStr[Commandsend]
			GT ComTimeoutCount
			AND ( ComTimeoutClear
				EQ 1
			)
			JMPCN ODK_SKIP_00000000000000W_000000000000001

				(* then - Stmts *)

(** 			StopMem:=ComSend[Commandsend].StartMem+byte_to_int(ComSend[Commandsend].Length); **)
				(* assign - Stmt *)
				LD ComSend[Commandsend].StartMem
				ADD ( ComSend[Commandsend].Length
					byte_to_int 
				)
				ST StopMem

(** 			for i:=ComSend[Commandsend].StartMem to StopMem by 1 do **)
				(* for - Init *)
				LD ComSend[Commandsend].StartMem
				ST i
				EQ StopMem
				JMPC ODK_FOR_STMTS_00000000000000X

				(* for - Cond *)
				ODK_FOR_00000000000000X:

				LD ComSend[Commandsend].StartMem
				GT StopMem
				JMPC ODK_FOR_DOWN_00000000000000X

				LD 0
				GT 1
				JMPC ODK_END_FOR_00000000000000X

				LD StopMem
				LT i
				JMPC ODK_END_FOR_00000000000000X
				JMP ODK_FOR_STMTS_00000000000000X

				ODK_FOR_DOWN_00000000000000X:

				LD StopMem
				GT i
				JMPC ODK_END_FOR_00000000000000X

				LD 0
				LT 1
				JMPC ODK_END_FOR_00000000000000X

					(* for - Stmts *)
					ODK_FOR_STMTS_00000000000000X:

(** 				DataStr[i]:=0; **)
					(* assign - Stmt *)
					LD 0
					ST DataStr[i]

				(* for - By *)
				LD 1
				ADD i
				ST i
(** 			end_for; **)

				JMP ODK_FOR_00000000000000X

				(* for - End *) 
				ODK_END_FOR_00000000000000X:

				JMP ODK_END_IF_00000000000000W

(** 		end_if;	 **)
			(* if - End *) 
			ODK_SKIP_00000000000000W_000000000000001:
			ODK_END_IF_00000000000000W:

			JMP ODK_END_IF_00000000000000H

(** 	 **)
(** 	end_if; **)
		(* if - End *) 
		ODK_SKIP_00000000000000H_000000000000001:
		ODK_END_IF_00000000000000H:

		JMP ODK_END_IF_00000000000000G

(**  **)
(** end_if; **)
	(* if - End *) 
	ODK_SKIP_00000000000000G_000000000000001:
	ODK_END_IF_00000000000000G:

(**  **)
(**  **)
(**  **)
(**  **)
(** SendP:=&SendStr; **)
	(* assign - Stmt *)
	LD &SendStr
	ST SendP

(** RecvP:=&RecvStr; **)
	(* assign - Stmt *)
	LD &RecvStr
	ST RecvP

(** SendFB(EN :=Send_act , COM :=SerialCom , DATA :=SendP , LENGTH :=8 , IQM :=0  ); **)
	(* call - Stmt *)
	CAL SendFB (
		EN := Send_act,
		COM := SerialCom,
		DATA := SendP,
		Length := 8,
		IQM := 0
	)

(** RecvFB(EN :=Recv_act , COM :=SerialCom , DATA :=RecvP , IQM :=0 |  Recv_len:= LENGTH); **)
	(* call - Stmt *)
	CAL RecvFB (
		EN := Recv_act,
		COM := SerialCom,
		DATA := RecvP,
		IQM := 0
		|
		Recv_len := Length
	)

(**  **)
(** t1_q:=t1.q; **)
	(* assign - Stmt *)
	LD t1.q
	ST t1_q

(** t2_q:=t2.q; **)
	(* assign - Stmt *)
	LD t2.q
	ST t2_q

(** t3_q:=t3.q; **)
	(* assign - Stmt *)
	LD t3.q
	ST t3_q

(**  **)
(** {********************************************���ݴ���********************************************} **)
(**  **)
(** for i := 0 To DataReadLength by 1 do **)
	(* for - Init *)
	LD 0
	ST i
	EQ DataReadLength
	JMPC ODK_FOR_STMTS_00000000000000Y

	(* for - Cond *)
	ODK_FOR_00000000000000Y:

	LD 0
	GT DataReadLength
	JMPC ODK_FOR_DOWN_00000000000000Y

	LD 0
	GT 1
	JMPC ODK_END_FOR_00000000000000Y

	LD DataReadLength
	LT i
	JMPC ODK_END_FOR_00000000000000Y
	JMP ODK_FOR_STMTS_00000000000000Y

	ODK_FOR_DOWN_00000000000000Y:

	LD DataReadLength
	GT i
	JMPC ODK_END_FOR_00000000000000Y

	LD 0
	LT 1
	JMPC ODK_END_FOR_00000000000000Y

		(* for - Stmts *)
		ODK_FOR_STMTS_00000000000000Y:

(**  **)
(** 	{* Type Ϊ0ʱȫ��*} **)
(**  **)
(** 		i0:=i; **)
		(* assign - Stmt *)
		LD i
		ST i0

(** 		i1:=i+1; **)
		(* assign - Stmt *)
		LD i
		ADD 1
		ST i1

(** 		i2:=i+2; **)
		(* assign - Stmt *)
		LD i
		ADD 2
		ST i2

(** 		i3:=i+3; **)
		(* assign - Stmt *)
		LD i
		ADD 3
		ST i3

(** 		 **)
(** 	{* 1 int *} **)
(** 		DataRead[i].TO_INT:=byte_to_int(DataStr[i0])*256+byte_to_int(DataStr[i1]); **)
		(* assign - Stmt *)
		LD DataStr[i0]
		byte_to_int 
		MUL 256
		ADD ( DataStr[i1]
			byte_to_int 
		)
		ST DataRead[i].TO_INT

(**  **)
(** 	{* 2 Float *} **)
(** 		TempStr[0]:=DataStr[i1]; **)
		(* assign - Stmt *)
		LD DataStr[i1]
		ST TempStr[0]

(** 		TempStr[1]:=DataStr[i0]; **)
		(* assign - Stmt *)
		LD DataStr[i0]
		ST TempStr[1]

(** 		TempStr[2]:=DataStr[i3]; **)
		(* assign - Stmt *)
		LD DataStr[i3]
		ST TempStr[2]

(** 		TempStr[3]:=DataStr[i2]; **)
		(* assign - Stmt *)
		LD DataStr[i2]
		ST TempStr[3]

(** 		P1:=&TempStr; **)
		(* assign - Stmt *)
		LD &TempStr
		ST P1

(** 		P2:=&TempReal; **)
		(* assign - Stmt *)
		LD &TempReal
		ST P2

(** 		v2v(DEST :=P2 , SRC :=P1 , LENGTH :=4 , IQM :=0 ); **)
		(* call - Stmt *)
		CAL v2v (
			DEST := P2,
			SRC := P1,
			Length := 4,
			IQM := 0
		)

(** 		DataRead[i].TO_REAL:=TempReal; **)
		(* assign - Stmt *)
		LD TempReal
		ST DataRead[i].TO_REAL

(** 		 **)
(** 	{* 3 byte *} **)
(** 		DataRead[i].TO_BYTE:=1; **)
		(* assign - Stmt *)
		LD 1
		ST DataRead[i].TO_BYTE

	(* for - By *)
	LD 1
	ADD i
	ST i
(** 	 **)
(** end_for; **)

	JMP ODK_FOR_00000000000000Y

	(* for - End *) 
	ODK_END_FOR_00000000000000Y:

(**  **)
(** {* �˶ν�����ʽ�Ϻ�ᵼ�´�λ����ʱ��ʱ����ԭ�� **)
(** for i := 0 To DataReadLength by 1 do **)
(**  **)
(** 	if DataType[i]=1 or DataType[i]=0 then  **)
(** 		i0:=i; **)
(** 		i1:=i+1; **)
(** 		DataRead[i].TO_INT:=byte_to_int(DataStr[i0])*256+byte_to_int(DataStr[i1]); **)
(** 	end_if; **)
(**  **)
(** 	if DataType[i]=2 or DataType[i]=0 then **)
(** 		i0:=i; **)
(** 		i1:=i+1; **)
(** 		i2:=i+2; **)
(** 		i3:=i+3; **)
(** 		TempStr[0]:=DataStr[i1]; **)
(** 		TempStr[1]:=DataStr[i0]; **)
(** 		TempStr[2]:=DataStr[i3]; **)
(** 		TempStr[3]:=DataStr[i2]; **)
(** 		P1:=&TempStr; **)
(** 		P2:=&TempReal; **)
(** 		v2v(DEST :=P2 , SRC :=P1 , LENGTH :=4 , IQM :=0 ); **)
(** 		DataRead[i].TO_REAL:=TempReal; **)
(** 	end_if;	 **)
(**  **)
(** 	if DataType[i]=3 or DataType[i]=0 then **)
(** 		i0:=i; **)
(** 		DataRead[i].TO_BYTE:=DataStr[i]; **)
(** 	end_if; **)
(** 	 **)
(** 	 4 BCD  **)
(** 	if DataType[i]=4 or DataType[i]=0 then **)
(** 		i0:=i; **)
(** 		i1:=i+1; **)
(** 		k1:=byte_to_int(DataStr[i0])*256+byte_to_int(DataStr[i1]); **)
(** 	 	DataRead[i].TO_BCD01:=int_to_bool( k1 Mod 2#0000000000000001 ); **)
(** 		DataRead[i].TO_BCD02:=int_to_bool( k1 Mod 2#0000000000000010 ); **)
(** 		DataRead[i].TO_BCD03:=int_to_bool( k1 Mod 2#0000000000000100 ); **)
(** 		DataRead[i].TO_BCD04:=int_to_bool( k1 Mod 2#0000000000001000 ); **)
(** 		DataRead[i].TO_BCD05:=int_to_bool( k1 Mod 2#0000000000010000 ); **)
(** 		DataRead[i].TO_BCD06:=int_to_bool( k1 Mod 2#0000000000100000 ); **)
(** 		DataRead[i].TO_BCD07:=int_to_bool( k1 Mod 2#0000000001000000 ); **)
(** 		DataRead[i].TO_BCD08:=int_to_bool( k1 Mod 2#0000000010000000 ); **)
(** 		DataRead[i].TO_BCD09:=int_to_bool( k1 Mod 2#0000000100000000 ); **)
(** 		DataRead[i].TO_BCD10:=int_to_bool( k1 Mod 2#0000001000000000 ); **)
(** 		DataRead[i].TO_BCD11:=int_to_bool( k1 Mod 2#0000010000000000 ); **)
(** 		DataRead[i].TO_BCD12:=int_to_bool( k1 Mod 2#0000100000000000 ); **)
(** 		DataRead[i].TO_BCD13:=int_to_bool( k1 Mod 2#0001000000000000 ); **)
(** 		DataRead[i].TO_BCD14:=int_to_bool( k1 Mod 2#0010000000000000 ); **)
(** 		DataRead[i].TO_BCD15:=int_to_bool( k1 Mod 2#0100000000000000 ); **)
(** 		DataRead[i].TO_BCD16:=int_to_bool( k1 Mod 2#1000000000000000 ); **)
(** 	 **)
(** 	end_if; **)
(** 	*} **)
(**  **)

END_FUNCTION_BLOCK