Obsidean_VM/04-SIDEL/00 - MASTER/Source/source/CIPRecipeManagement.md

12 KiB

// Block Type: FB
// Block Number: 1799
// Original Network Languages: STL
// Block Comment:
//   Machine CIP Recipe Management
//   DB1003.DBB246 -> Active Recipe                               (DB124)
//   DB1003.DBB2 -> Working Recipe (Edit, Copy, Erase)            (DB400)
//   DB963.DBB48 -> Working Recipe (Data Save)
//   DB501 -:- DB530 -> Recipe 1-:-30 data

FUNCTION_BLOCK "CIPRecipeManagement"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1

VAR_INPUT
  HMI_Recipe_Main_Page : Bool;
  HMI_Recipe_Page_Running : Bool;
  Active_Recipe_Start : Bool;
  Edit : Bool;
  Write : Bool;
  Read : Bool;
  Delete : Bool;
  Copy : Bool;
  Upload : Bool;
  UploadPC : Bool;
  Download : Bool;
  Max_Recipe_Number : Int;
END_VAR

VAR_OUTPUT
  Save_Requested : Bool;
  Work_Rec_is_Active_Recip : Bool;
  Copy_Rec_is_Active_Recip : Bool;
  Recipe_Activated : Bool;
END_VAR

VAR_INOUT
  Active_Recipe_Running : Int;
  Active_Recipe_Req : Int;
  Work_Recipe : Int;
  Copy_to : Int;
END_VAR

VAR_STAT
  Active_Recipe_First : Bool;
  Active_Recipe_Start_FP : Bool;
  Active_Recipe_Run : Bool;
  Active_Recipe_Source_DB : Int;
  Read_FP : Bool;
  Read_Start : Bool;
  Read_First_FP : Bool;
  Read_First_Start : Bool;
  Read_Change : Bool;
  Work_Recipe_Save : Int;
  Work_Recipe_Source_DB : Int;
  Loop_Count : Int;
  Delete_FP : Bool;
  Delete_Start : Bool;
  Delete_Write : Bool;
  Copy_FP : Bool;
  Copy_Request : Bool;
  Copy_Start : Bool;
  Copy_Recipe_Source_DB : Int;
  Copy_Write : Bool;
  Write_FP : Bool;
  Write_Start : Bool;
  Write_REQ : Bool;
  Save_Active_Recipe : Bool;
  Recipe_Destination_DB : Int;
  Save_requested_FP : Bool;
  Save_requested_veri : Bool;
  Save_requested_read_FP : Bool;
  Save_requested_read_veri : Bool;
  Read_act_BUSY : Bool;
  Read_wrk_BUSY : Bool;
  Read_wrk_Running : Bool;
  Write_BUSY : Bool;
  Upload_FP : Bool;
  Upload_Start : Bool;
  Download_FP : Bool;
  Download_Start : Bool;
  Recipe_Activated_FN : Bool;
  Save_requested_upldPC_FP : Bool;
  Save_requested_upldPC_ve : Bool;
  mUploadPC : Bool;
END_VAR

VAR_TEMP
  Active_Recipe_Source : Int;
  Work_Recipe_Source : Int;
  Recipe_Destination : Int;
  Read_act_DB : "Any";
  Read_act_RET_VAL : Int;
  Read_wrk_REQ : Bool;
  Read_wrk_DB : "Any";
  Read_wrk_RET_VAL : Int;
  Write_DB : "Any";
  Write_RET_VAL : Int;
  Buffer_Pointer : DInt;
  mAux : Bool;
  TUDT900 : "CIP_Link_Type";
  End_UDT900 : Byte;
  Lenght_UDT900 : Int;
END_VAR

BEGIN

  // Network 1:  (Original Language: STL)
  //   Active Recipe Request Number Control

  // --- BEGIN STL Network 1 ---
   
     	CALL	"LIMIT_I"
     
     	L	_ERR_CONST_
     	L	_ERR_CONST_
     	SUB_D
     	SRD	3
     	T	"Lenght_UDT900"
   
  // --- END STL Network 1 ---

  // Network 2:  (Original Language: STL)
  //   Active Recipe Number Control

  // --- BEGIN STL Network 2 ---
   
     	L	"Active_Recipe_Running"
     	L	1
     	LT_I
     	JC	aact
     	L	"Active_Recipe_Running"
     	L	"Max_Recipe_Number"
     	GT_I
     	JC	aact
     	JU	bact
     aact:   		S	"Active_Recipe_First"
     bact:   		CALL	"LIMIT_I"
   
  // --- END STL Network 2 ---

  // Network 3: MIX - (Original Language: STL)
  //   Active Recipe Number Start

  // --- BEGIN STL Network 3 ---
   
     	A	"Active_Recipe_Start"
     	Rise	"Active_Recipe_Start_FP"
     	=	"Active_Recipe_Run"
     
     	A	"Active_Recipe_Run"
     	O	"Active_Recipe_First"
     	O	"Read_act_BUSY"
     	JC	Rrun
     	JU	Erun
     Rrun:   		R	"Active_Recipe_First"
     	L	"Active_Recipe_Req"
     	T	"Active_Recipe_Running"
     	ADD	500
     	T	"Active_Recipe_Source_DB"
     
     	LAR1	_ERR_CONST_
     	L	BYTE#16#10
     	T	LocalB[AR1,P#0.0]
     	L	BYTE#16#02
     	T	LocalB[AR1,P#1.0]
     	L	"Lenght_UDT900"
     	T	LocalW[AR1,P#2.0]
     	L	"Active_Recipe_Source_DB"
     	T	LocalW[AR1,P#4.0]
     	L	P#DBX0.0
     	T	LocalD[AR1,P#6.0]
     	CALL	_Call_?
     Erun:   		NOP_0
     
     	A	"Read_act_BUSY"
     	Fall	"Recipe_Activated_FN"
     	=	"Recipe_Activated"
   
  // --- END STL Network 3 ---

  // Network 4:  (Original Language: STL)
  //   Work Recipe Number Control

  // --- BEGIN STL Network 4 ---
   
     	CALL	"LIMIT_I"
     
     	L	"Work_Recipe"
     	L	"Active_Recipe_Running"
     	EQ_I
     	=	"Work_Rec_is_Active_Recip"
   
  // --- END STL Network 4 ---

  // Network 5:  (Original Language: STL)
  //   Work Recipe READ (Data Uploading from archive)

  // --- BEGIN STL Network 5 ---
   
     	A	"Read"
     	O	"HMI_Recipe_Page_Running"
     	Rise	"Read_FP"
     	S	"Read_Start"
     	L	"Work_Recipe_Save"
     	L	"Work_Recipe"
     	NE_I
     	=	"Read_Change"
     
     	A	"Read_Change"
     	O	"Read_Start"
     	=	"Read_wrk_REQ"
     
     	A	"Read_wrk_REQ"
     	JC	Rupl
     	A	"Read_wrk_BUSY"
     	O	"Read_wrk_Running"
     	JC	Cupl
     	JU	Eupl
     Rupl:   		NOP_0
     	A	"mUploadPC"
     	JC	Eupl
     	L	"Work_Recipe"
     	ADD	500
     	T	"Work_Recipe_Source_DB"
     
     Cupl:   		LAR1	_ERR_CONST_
     	L	BYTE#16#10
     	T	LocalB[AR1,P#0.0]
     	L	BYTE#16#02
     	T	LocalB[AR1,P#1.0]
     	L	"Lenght_UDT900"
     	T	LocalW[AR1,P#2.0]
     	L	"Work_Recipe_Source_DB"
     	T	LocalW[AR1,P#4.0]
     	L	P#DBX0.0
     	T	LocalD[AR1,P#6.0]
     	CALL	_Call_?
     	A	"Read_wrk_BUSY"
     	S	"Read_wrk_Running"
     
     	A	"Read_wrk_Running"
     	AN	"Read_wrk_BUSY"
     	JC	Dupl
     	JU	Eupl
     Dupl:   		R	"Read_Start"
     	R	"Read_wrk_Running"
     	L	"Work_Recipe"
     	T	"Work_Recipe_Save"
     
     	L	"Work_Recipe_Save"
     	L	34
     	MUL_I
     	ADD	576
     	SLW	3
     	T	"Buffer_Pointer"
     	LAR1_ACCU1
     	L	"HMI_Local_CIP_Variables".Cip_Recipe.EditLinkProgram._LinkName[32]
     	AUF	"HMI_Local_CIP_Variables"
     	T	DBD[AR1,P#0.0]
     	ADDAR1	P#4.0
     	L	DB1003.DBD6.0
     	AUF	"HMI_Local_CIP_Variables"
     	T	DBD[AR1,P#0.0]
     	ADDAR1	P#4.0
     	L	DB1003.DBD10.0
     	AUF	"HMI_Local_CIP_Variables"
     	T	DBD[AR1,P#0.0]
     	ADDAR1	P#4.0
     	L	DB1003.DBD14.0
     	AUF	"HMI_Local_CIP_Variables"
     	T	DBD[AR1,P#0.0]
     	ADDAR1	P#4.0
     	L	DB1003.DBD18.0
     	AUF	"HMI_Local_CIP_Variables"
     	T	DBD[AR1,P#0.0]
     	ADDAR1	P#4.0
     	L	DB1003.DBD22.0
     	AUF	"HMI_Local_CIP_Variables"
     	T	DBD[AR1,P#0.0]
     	ADDAR1	P#4.0
     	L	DB1003.DBD26.0
     	AUF	"HMI_Local_CIP_Variables"
     	T	DBD[AR1,P#0.0]
     	ADDAR1	P#4.0
     	L	DB1003.DBD30.0
     	AUF	"HMI_Local_CIP_Variables"
     	T	DBD[AR1,P#0.0]
     	LAR1	P#0.0
     
     	L	"Lenght_UDT900"
     	L	2
     	DIV_I
     Bupl:   		T	"Loop_Count"
     	AUF	"HMI_Local_CIP_Variables"
     	L	DBW[AR1,P#2.0]
     	AUF	"CIP_Program_Variables"
     	T	DBW[AR1,P#50.0]
     	ADDAR1	P#2.0
     	L	"Loop_Count"
     	LOOP	Bupl
     Eupl:   		NOP_0
   
  // --- END STL Network 5 ---

  // Network 6:  (Original Language: STL)
  //   Work Recipe Data DELETE (Erase DB500 Data + Write in Work_Recipe_Source)

  // --- BEGIN STL Network 6 ---
   
     	A	"Delete"
     	Rise	"Delete_FP"
     	=	"Delete_Start"
     
     	A	"Delete_Start"
     	AN	"Work_Rec_is_Active_Recip"
     	AN	"Save_Requested"
     	AN	"Write"
     	AN	"Write_BUSY"
     	JC	Rdel
     	JU	Edel
     Rdel:   		LAR1	P#0.0
     	L	"Lenght_UDT900"
     Bdel:   		T	"Loop_Count"
     	L	"Work_Recipe_Source_DB"
     	T	"Work_Recipe_Source"
     	L	DINT#0
     	AUF	"HMI_Local_CIP_Variables"
     	T	DBW[AR1,P#2.0]
     	ADDAR1	P#2.0
     	L	"Loop_Count"
     	LOOP	Bdel
     	SET
     	S	"Delete_Write"
     Edel:   		NOP_0
   
  // --- END STL Network 6 ---

  // Network 7:  (Original Language: STL)
  //   Work Recipe Data COPY (DB1008 Data Write to different Recipe DB 
  //   Copy_Recipe_Source_DB)

  // --- BEGIN STL Network 7 ---
   
     	CALL	"LIMIT_I"
     
     	A	"Copy"
     	Rise	"Copy_FP"
     	=	"Copy_Request"
     
     	L	"Copy_to"
     	L	"Active_Recipe_Running"
     	EQ_I
     	=	"Copy_Rec_is_Active_Recip"
     
     	AN	"Copy_Rec_is_Active_Recip"
     	AN	"Save_Requested"
     	AN	"Write"
     	AN	"Write_BUSY"
     	A	"Copy_Request"
     	=	"Copy_Start"
     
     	A	"Copy_Start"
     	JC	Ccop
     	JU	Ecop
     Ccop:   		L	"Copy_to"
     	ADD	500
     	T	"Copy_Recipe_Source_DB"
     	S	"Copy_Write"
     Ecop:   		NOP_0
   
  // --- END STL Network 7 ---

  // Network 8:  (Original Language: STL)
  //   Work Recipe WRITE (Data Downloading to archive)

  // --- BEGIN STL Network 8 ---
   
     	A	"Write"
     	Rise	"Write_FP"
     	=	"Write_Start"
     
     	A	"Write_Start"
     	O	"Delete_Write"
     	O	"Copy_Write"
     	AN	"Write_BUSY"
     	=	"Write_REQ"
     
     	A	"Write_Start"
     	O	"Delete_Write"
     	AN	"Write_BUSY"
     	JC	Rdow
     	A	"Write_BUSY"
     	JC	Cdow
     	A	"Copy_Write"
     	JC	CoDB
     	JU	Edow
     CoDB:   		R	"Copy_Write"
     	L	"Copy_Recipe_Source_DB"
     	T	"Recipe_Destination_DB"
     	L	"Copy_to"
     	JU	Copy
     Rdow:   		R	"Save_Requested"
     	R	"Delete_Write"
     	R	"mUploadPC"
     	L	"Work_Recipe_Source_DB"
     	T	"Recipe_Destination_DB"
     
     	L	"Work_Recipe_Save"
     	L	"Active_Recipe_Running"
     	EQ_I
     	=	"Save_Active_Recipe"
     
     	LAR1	P#0.0
     	L	"Lenght_UDT900"
     	L	2
     	DIV_I
     Bdow:   		T	"Loop_Count"
     	AUF	"HMI_Local_CIP_Variables"
     	L	DBW[AR1,P#2.0]
     	AUF	"CIP_Program_Variables"
     	T	DBW[AR1,P#50.0]
     	AN	"Save_Active_Recipe"
     	JC	Ndow
     	AUF	"HMI_Local_CIP_Variables"
     	T	DBW[AR1,P#276.0]
     Ndow:   		ADDAR1	P#2.0
     	L	"Loop_Count"
     	LOOP	Bdow
     
     	L	"Work_Recipe_Save"
     Copy:   		L	34
     	MUL_I
     	ADD	576
     	SLW	3
     	T	"Buffer_Pointer"
     	LAR1_ACCU1
     	L	DB1003.DBD2.0
     	AUF	"HMI_Local_CIP_Variables"
     	T	DBD[AR1,P#0.0]
     	ADDAR1	P#4.0
     	L	DB1003.DBD6.0
     	AUF	"HMI_Local_CIP_Variables"
     	T	DBD[AR1,P#0.0]
     	ADDAR1	P#4.0
     	L	DB1003.DBD10.0
     	AUF	"HMI_Local_CIP_Variables"
     	T	DBD[AR1,P#0.0]
     	ADDAR1	P#4.0
     	L	DB1003.DBD14.0
     	AUF	"HMI_Local_CIP_Variables"
     	T	DBD[AR1,P#0.0]
     	ADDAR1	P#4.0
     	L	DB1003.DBD18.0
     	AUF	"HMI_Local_CIP_Variables"
     	T	DBD[AR1,P#0.0]
     	ADDAR1	P#4.0
     	L	DB1003.DBD22.0
     	AUF	"HMI_Local_CIP_Variables"
     	T	DBD[AR1,P#0.0]
     	ADDAR1	P#4.0
     	L	DB1003.DBD26.0
     	AUF	"HMI_Local_CIP_Variables"
     	T	DBD[AR1,P#0.0]
     	ADDAR1	P#4.0
     	L	DB1003.DBD32.0
     	AUF	"HMI_Local_CIP_Variables"
     	T	DBD[AR1,P#0.0]
     Cdow:   		LAR1	_ERR_CONST_
     
     	L	BYTE#16#10
     	T	LocalB[AR1,P#0.0]
     	L	BYTE#16#02
     	T	LocalB[AR1,P#1.0]
     	L	"Lenght_UDT900"
     	T	LocalW[AR1,P#2.0]
     	L	"Recipe_Destination_DB"
     	T	LocalW[AR1,P#4.0]
     	L	P#DBX0.0
     	T	LocalD[AR1,P#6.0]
     	CALL	_Call_?
     Edow:   		NOP_0
   
  // --- END STL Network 8 ---

  // Network 9:  (Original Language: STL)
  //   Work Recipe SAVE REQUESTED

  // --- BEGIN STL Network 9 ---
   
     	A	"HMI_Recipe_Main_Page"
     	Rise	"Save_requested_FP"
     	=	"Save_requested_veri"
     
     	AN	"Read_wrk_Running"
     	Rise	"Save_requested_read_FP"
     	=	"Save_requested_read_veri"
     
     	A	"mUploadPC"
     	AN	"UploadPC"
     	Rise	"Save_requested_upldPC_FP"
     	=	"Save_requested_upldPC_ve"
     
     	A	"Save_requested_veri"
     	O	"Save_requested_read_veri"
     	O	"Save_requested_upldPC_ve"
     	JC	Vsav
     	JU	Esav
     Vsav:   		CLR
     	=	"Save_Requested"
     	LAR1	P#0.0
     	L	"Lenght_UDT900"
     	L	2
     	DIV_I
     	L	17
     	SUB_I
     Bsav:   		T	"Loop_Count"
     	AUF	"CIP_Program_Variables"
     	L	DBW[AR1,P#50.0]
     	AUF	"HMI_Local_CIP_Variables"
     	L	DBW[AR1,P#2.0]
     	NE_D
     	JC	Sreq
     	ADDAR1	P#2.0
     	L	"Loop_Count"
     	LOOP	Bsav
     	JU	Esav
     Sreq:   		SET
     	=	"Save_Requested"
     Esav:   		NOP_0
   
  // --- END STL Network 9 ---

  // Network 10:  (Original Language: STL)

  // --- BEGIN STL Network 10 ---
   
     	A	"UploadPC"
     	JCN	Noup
     	S	"mUploadPC"
     Noup:   		A	"Edit"
     	JCN	Roup
     	R	"mUploadPC"
     Roup:   		NOP_0
   
  // --- END STL Network 10 ---

END_FUNCTION_BLOCK