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

993 lines
18 KiB
Markdown

```pascal
// Block Type: FB
// Block Name (Original): RecipeManagement - Prod
// Block Number: 1798
// Original Network Languages: STL
// Block Comment:
// Machine Main Recipe Management
// DB1001.DBB70 -> Active Recipe
// DB1008 -> Working Recipe (Edit, Copy, Erase)
// DB1009 -> Recipe Name Data Base
// DB400 -> Working Recipe (Data Save)
// DB401 -:- DB500 -> Recipe 1-:-100 data
FUNCTION_BLOCK "RecipeManagement___Prod"
{ 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;
RecipeManagement_Busy : Bool;
END_VAR
VAR_INOUT
Active_Recipe_Running : Int;
Active_Recipe_Req : Int;
Work_Recipe : Int;
Copy_to : Int;
Work_Rec_is_Active_Recip_IO : Bool;
Save_Requested_IO : Bool;
Copy_Rec_is_Active_Recip_IO : Bool;
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;
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;
Upload_RET_VAL : Int;
Download_RET_VAL : Int;
TUDT904 : "Recipe_Prod";
End_UDT904 : Byte;
Lenght_UDT904 : Int;
PNullRecipe : DInt;
Name_String_App : String;
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_UDT904"
// --- 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: (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 400
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_UDT904"
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"
= "RecipeManagement_Busy"
// --- END STL Network 3 ---
// Network 4: Recipe on Editing is the same number of Active Recipe (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"
= "Work_Rec_is_Active_Recip_IO"
// --- 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 400
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_UDT904"
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
SLW 3
T "Buffer_Pointer"
LAR1_ACCU1
AUF "HMI_Recipe_Edit"
L DBW2.0
AUF "HMI_Recipe_Name"
T DBW[AR1,P#2.0]
ADDAR1 P#4.0
AUF "HMI_Recipe_Edit"
L DBD4.0
AUF "HMI_Recipe_Name"
T DBD[AR1,P#0.0]
ADDAR1 P#4.0
AUF "HMI_Recipe_Edit"
L DBD8.0
AUF "HMI_Recipe_Name"
T DBD[AR1,P#0.0]
ADDAR1 P#4.0
AUF "HMI_Recipe_Edit"
L DBD12.0
AUF "HMI_Recipe_Name"
T DBD[AR1,P#0.0]
ADDAR1 P#4.0
AUF "HMI_Recipe_Edit"
L DBD16.0
AUF "HMI_Recipe_Name"
T DBD[AR1,P#0.0]
ADDAR1 P#4.0
AUF "HMI_Recipe_Edit"
L DBD20.0
AUF "HMI_Recipe_Name"
T DBD[AR1,P#0.0]
ADDAR1 P#4.0
AUF "HMI_Recipe_Edit"
L DBD24.0
AUF "HMI_Recipe_Name"
T DBD[AR1,P#0.0]
ADDAR1 P#4.0
AUF "HMI_Recipe_Edit"
L DBD28.0
AUF "HMI_Recipe_Name"
T DBD[AR1,P#0.0]
LAR1 P#0.0
L "Lenght_UDT904"
L 2
DIV_I
Bupl: T "Loop_Count"
AUF "HMI_Recipe_Edit"
L DBD[AR1,P#0.0]
AUF "RecipeEditDataSave"
T DBD[AR1,P#0.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 DB1008 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_IO"
AN "Save_Requested_IO"
AN "Write"
AN "Write_BUSY"
JC Rdel
JU Edel
Rdel: LAR1 P#0.0
L "Lenght_UDT904"
ITD
L DINT#8
MUL_D
T "PNullRecipe"
L "Lenght_UDT904"
L 2
DIV_I
Bdel: T "Loop_Count"
L "Work_Recipe_Source_DB"
T "Work_Recipe_Source"
AUF "RecipeEditDataSave"
L DBW[AR?,P#0.0]
AUF "HMI_Recipe_Edit"
T DBW[AR1,P#2.0]
ADDAR1 P#2.0
L 16
L "PNullRecipe"
ADD_D
T "PNullRecipe"
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_IO"
AN "Save_Requested_IO"
AN "Write"
AN "Write_BUSY"
A "Copy_Request"
= "Copy_Start"
A "Copy_Start"
JC Ccop
JU Ecop
Ccop: L "Copy_to"
ADD 400
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 "Save_Requested_IO"
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_UDT904"
L 2
DIV_I
Bdow: T "Loop_Count"
AUF "HMI_Recipe_Edit"
L DBD[AR1,P#0.0]
AUF "RecipeEditDataSave"
T DBD[AR1,P#0.0]
AN "Save_Active_Recipe"
JC Ndow
AUF "HMI_Blender_Parameters"
T DBD[AR1,P#70.0]
Ndow: ADDAR1 P#2.0
L "Loop_Count"
LOOP Bdow
L "Work_Recipe_Save"
Copy: L 34
MUL_I
SLW 3
T "Buffer_Pointer"
LAR1_ACCU1
L "Work_Recipe_Save"
L 1
EQ_I
JCN R02
R01: CALL _Call_?
R02: L "Work_Recipe"
L 2
EQ_I
JCN R03
CALL _Call_?
R03: L "Work_Recipe"
L 3
EQ_I
JCN R04
CALL _Call_?
R04: L "Work_Recipe"
L 4
EQ_I
JCN R05
CALL _Call_?
R05: L "Work_Recipe"
L 5
EQ_I
JCN R06
CALL _Call_?
R06: L "Work_Recipe"
L 6
EQ_I
JCN R07
CALL _Call_?
R07: L "Work_Recipe"
L 7
EQ_I
JCN R08
CALL _Call_?
R08: L "Work_Recipe"
L 8
EQ_I
JCN R09
CALL _Call_?
R09: L "Work_Recipe"
L 9
EQ_I
JCN R10
CALL _Call_?
R10: L "Work_Recipe"
L 10
EQ_I
JCN R11
CALL _Call_?
R11: L "Work_Recipe"
L 11
EQ_I
JCN R12
CALL _Call_?
R12: L "Work_Recipe"
L 12
EQ_I
JCN R13
CALL _Call_?
R13: L "Work_Recipe"
L 13
EQ_I
JCN R14
CALL _Call_?
R14: L "Work_Recipe"
L 14
EQ_I
JCN R15
CALL _Call_?
R15: L "Work_Recipe"
L 15
EQ_I
JCN R16
CALL _Call_?
R16: L "Work_Recipe"
L 16
EQ_I
JCN R17
CALL _Call_?
R17: L "Work_Recipe"
L 17
EQ_I
JCN R18
CALL _Call_?
R18: L "Work_Recipe"
L 18
EQ_I
JCN R19
CALL _Call_?
R19: L "Work_Recipe"
L 19
EQ_I
JCN R20
CALL _Call_?
R20: L "Work_Recipe"
L 20
EQ_I
JCN R21
CALL _Call_?
R21: L "Work_Recipe"
L 21
EQ_I
JCN R22
CALL _Call_?
R22: L "Work_Recipe"
L 22
EQ_I
JCN R23
CALL _Call_?
R23: L "Work_Recipe"
L 23
EQ_I
JCN R24
CALL _Call_?
R24: L "Work_Recipe"
L 24
EQ_I
JCN R25
CALL _Call_?
R25: L "Work_Recipe"
L 25
EQ_I
JCN R26
CALL _Call_?
R26: L "Work_Recipe"
L 26
EQ_I
JCN R27
CALL _Call_?
R27: L "Work_Recipe"
L 27
EQ_I
JCN R28
CALL _Call_?
R28: L "Work_Recipe"
L 28
EQ_I
JCN R29
CALL _Call_?
R29: L "Work_Recipe"
L +29
EQ_I
JCN R30
CALL _Call_?
R30: L "Work_Recipe"
L 30
EQ_I
JCN R31
CALL _Call_?
R31: L "Work_Recipe"
L 31
EQ_I
JCN R32
CALL _Call_?
R32: L "Work_Recipe"
L +32
EQ_I
JCN R33
CALL _Call_?
R33: L "Work_Recipe"
L 33
EQ_I
JCN R34
CALL _Call_?
R34: L "Work_Recipe"
L 34
EQ_I
JCN R35
CALL _Call_?
R35: L "Work_Recipe"
L 35
EQ_I
JCN R36
CALL _Call_?
R36: L "Work_Recipe"
L 36
EQ_I
JCN R37
CALL _Call_?
R37: L "Work_Recipe"
L 37
EQ_I
JCN R38
CALL _Call_?
R38: L "Work_Recipe"
L 38
EQ_I
JCN R39
CALL _Call_?
R39: L "Work_Recipe"
L 39
EQ_I
JCN R40
CALL _Call_?
R40: L "Work_Recipe"
L 40
EQ_I
JCN R41
CALL _Call_?
R41: L "Work_Recipe"
L 41
EQ_I
JCN R42
CALL _Call_?
R42: L "Work_Recipe"
L 42
EQ_I
JCN R43
CALL _Call_?
R43: L "Work_Recipe"
L 43
EQ_I
JCN R44
CALL _Call_?
R44: L "Work_Recipe"
L 44
EQ_I
JCN R45
CALL _Call_?
R45: L "Work_Recipe"
L 45
EQ_I
JCN R46
CALL _Call_?
R46: L "Work_Recipe"
L 46
EQ_I
JCN R47
CALL _Call_?
R47: L "Work_Recipe"
L 47
EQ_I
JCN R48
CALL _Call_?
R48: L "Work_Recipe"
L 48
EQ_I
JCN R49
CALL _Call_?
R49: L "Work_Recipe"
L 49
EQ_I
JCN R50
CALL _Call_?
R50: L "Work_Recipe"
L 50
EQ_I
JCN Cdow
CALL _Call_?
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_UDT904"
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]
A "Write_REQ"
S M106.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"
= "Save_Requested_IO"
LAR1 P#0.0
L "Lenght_UDT904"
L 2
DIV_I
Bsav: T "Loop_Count"
AUF "RecipeEditDataSave"
L DBD[AR1,P#0.0]
AUF "HMI_Recipe_Edit"
L DBD[AR1,P#0.0]
NE_D
JC Sreq
ADDAR1 P#2.0
L "Loop_Count"
LOOP Bsav
JU Esav
Sreq: SET
= "Save_Requested"
= "Save_Requested_IO"
Esav: NOP_0
// --- END STL Network 9 ---
// Network 10: to HMI (Original Language: STL)
// Active Recipe UPLOAD (Data Uploading from PLC)
// --- BEGIN STL Network 10 ---
A "Upload"
Rise "Upload_FP"
S "Upload_Start"
S "HMI_Variables_Cmd".Recipe.Get_current_Active_Recip
AN "Upload_Start"
JC skip
CALL _Call_?
SET
R "Upload_Start"
skip: NOP_0
// --- END STL Network 10 ---
// Network 11: (Original Language: STL)
// Active Recipe DOWNLOAD (Data Downloading to PLC)
// --- BEGIN STL Network 11 ---
A "Download"
Rise "Download_FP"
S "Download_Start"
AN "Download_Start"
JC end
CALL _Call_?
SET
R "Download_Start"
end: NOP_0
// --- END STL Network 11 ---
// Network 12: (Original Language: STL)
// --- BEGIN STL Network 12 ---
A "UploadPC"
JCN Noup
S "mUploadPC"
Noup: A "Edit"
JCN Roup
R "mUploadPC"
Roup: NOP_0
// --- END STL Network 12 ---
// Network 13: Control to avoid Air Sterile and N2 double selection (Original Language: STL)
// --- BEGIN STL Network 13 ---
A "M19157"
JC VAI
A "HMI_Recipe_Edit".Actual_Recipe_Parameters._GAS2_Injection
S "M19156"
AN "HMI_Recipe_Edit".Actual_Recipe_Parameters._GAS2_Injection
R "M19156"
A "M19156"
JC RES1
VAI: A "M19156"
JC RES1
A "HMI_Recipe_Edit".Actual_Recipe_Parameters._AirSteril
S "M19157"
AN "HMI_Recipe_Edit".Actual_Recipe_Parameters._AirSteril
R "M19157"
A "M19157"
JC RES2
JU FINE
RES1: R "HMI_Recipe_Edit".Actual_Recipe_Parameters._AirSteril
R "M19157"
JU FINE
RES2: R "HMI_Recipe_Edit".Actual_Recipe_Parameters._GAS2_Injection
R "M19156"
FINE: NOP_0
// --- END STL Network 13 ---
// Network 14: 0 = N2 not present; 1 = N2 present (Original Language: STL)
// --- BEGIN STL Network 14 ---
AN "HMI_Blender_Parameters".Processor_Options.Blender_OPT._CO2_GAS2_Injection
R "HMI_Recipe_Edit".Actual_Recipe_Parameters._GAS2_Injection
// --- END STL Network 14 ---
END_FUNCTION_BLOCK
```