From 5213d09bcfeda08c9be738d26be335cfed45896a Mon Sep 17 00:00:00 2001 From: Miguel Date: Sun, 20 Apr 2025 02:52:26 +0200 Subject: [PATCH] Cambio a busqueda de XML bajo el directorio XML Project --- .gitignore | 2 + BlenderCtrl_MFM Command.scl | 105 - BlenderCtrl_ProdModeInit.xml | 477 - BlenderCtrl_ProdModeInit_simplified.json | 97 - ...trl_ProdModeInit_simplified_processed.json | 100 - ...Ctrl_ProdModeInit_simplified_processed.scl | 30 - BlenderCtrl__Main.xml | 10030 ---------------- BlenderCtrl__Main_simplified.json | 4351 ------- BlenderCtrl__Main_simplified_processed.json | 4529 ------- BlenderCtrl__Main_simplified_processed.scl | 365 - BlenderPIDCtrl__Loop.xml | 1711 --- BlenderPIDCtrl__Loop_simplified.json | 1222 -- ...derPIDCtrl__Loop_simplified_processed.json | 1280 -- BlenderPIDCtrl__Loop_simplified_processed.scl | 107 - BlenderRun_ProdTime.xml | 2359 ---- TestLAD.xml | 995 -- TestLAD_simplified.json | 63 - TestLAD_simplified_processed.json | 63 - TestLAD_simplified_processed.scl | 56 - ToUpload/TestLAD.xml | 763 -- ToUpload/TestLAD_simplified.json | 101 - ToUpload/TestLAD_simplified_processed.json | 101 - ToUpload/TestLAD_simplified_processed.scl.txt | 42 - ToUpload/x0_main.py | 75 + ToUpload/x1_to_json.py | 475 +- ToUpload/x2_process.py | 203 +- ToUpload/x3_generate_scl.py | 149 +- x0_main.py | 75 + x1_to_json.py | 44 +- x2_process.py | 100 +- x3_generate_scl.py | 57 +- 31 files changed, 854 insertions(+), 29273 deletions(-) delete mode 100644 BlenderCtrl_MFM Command.scl delete mode 100644 BlenderCtrl_ProdModeInit.xml delete mode 100644 BlenderCtrl_ProdModeInit_simplified.json delete mode 100644 BlenderCtrl_ProdModeInit_simplified_processed.json delete mode 100644 BlenderCtrl_ProdModeInit_simplified_processed.scl delete mode 100644 BlenderCtrl__Main.xml delete mode 100644 BlenderCtrl__Main_simplified.json delete mode 100644 BlenderCtrl__Main_simplified_processed.json delete mode 100644 BlenderCtrl__Main_simplified_processed.scl delete mode 100644 BlenderPIDCtrl__Loop.xml delete mode 100644 BlenderPIDCtrl__Loop_simplified.json delete mode 100644 BlenderPIDCtrl__Loop_simplified_processed.json delete mode 100644 BlenderPIDCtrl__Loop_simplified_processed.scl delete mode 100644 BlenderRun_ProdTime.xml delete mode 100644 TestLAD.xml delete mode 100644 TestLAD_simplified.json delete mode 100644 TestLAD_simplified_processed.json delete mode 100644 TestLAD_simplified_processed.scl delete mode 100644 ToUpload/TestLAD.xml delete mode 100644 ToUpload/TestLAD_simplified.json delete mode 100644 ToUpload/TestLAD_simplified_processed.json delete mode 100644 ToUpload/TestLAD_simplified_processed.scl.txt diff --git a/.gitignore b/.gitignore index 0a19790..af6c8ca 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,8 @@ __pycache__/ # Distribution / packaging .Python +XML Project/ +XML Proyect/ build/ develop-eggs/ dist/ diff --git a/BlenderCtrl_MFM Command.scl b/BlenderCtrl_MFM Command.scl deleted file mode 100644 index 246a6ea..0000000 --- a/BlenderCtrl_MFM Command.scl +++ /dev/null @@ -1,105 +0,0 @@ -FUNCTION "BlenderCtrl_MFM Command" : Void -{ S7_Optimized_Access := 'FALSE' } -AUTHOR : 'Author' -FAMILY : TASK2 -NAME : 'Name' -VERSION : 1.0 - VAR_INPUT - mResetWaterTot : Bool; - mResetSyrupTot : Bool; - mResetCO2Tot : Bool; - mResetProductTot : Bool; - END_VAR - - VAR_TEMP - mWaterVFMCtrl : Int; - mSyrupMFMCtrl : Int; - mCO2MFMCtrl : Int; - mProductMFMCtrl : Int; - END_VAR - - -BEGIN - - - IF #mResetWaterTot THEN - #mWaterVFMCtrl := 1 ; - ELSE - #mWaterVFMCtrl := 0 ; - END_IF; - - IF #mResetSyrupTot THEN - #mSyrupMFMCtrl := 1 ; - ELSE - #mSyrupMFMCtrl := 0 ; - END_IF; - - IF #mResetCO2Tot THEN - #mCO2MFMCtrl := 1 ; - ELSE - #mCO2MFMCtrl := 0 ; - END_IF; - - IF #mResetProductTot THEN - #mProductMFMCtrl := 1 ; - ELSE - #mProductMFMCtrl := 0 ; - END_IF; - - CASE #mWaterVFMCtrl OF - 1: "P_FTN301_Tot_Ctrl" := 01; // Reset Totalizer - - 2: "P_FTN301_Tot_Ctrl" := 02 ; // Preset Totalizer - - ELSE: - "P_FTN301_Tot_Ctrl" := 00; - END_CASE; - - - IF "gSyrupRoomEn" THEN - CASE #mSyrupMFMCtrl OF - 1: "P_FTP302_Tot_Ctrl" := 01; (* Reset Totalizer 1*) - - 2: "P_FTP302_Tot_Ctrl" := 02; (* Reset Totalizer 2*) - - 3: "P_FTP302_Tot_Ctrl" := 03; (* Reset Totalizer 1 & 2*) - - 4: "P_FTP302_Tot_Ctrl" := 04; (* Zeropoint Adjust *) - - 5: "P_FTP302_Tot_Ctrl" := 05; (* Positive Zero Return *) - - 6: "P_FTP302_Tot_Ctrl" := 06; (* Negative Zero Return *) - - ELSE: - "P_FTP302_Tot_Ctrl" := 00; - END_CASE; - END_IF; - - CASE #mCO2MFMCtrl OF - 1: "P_FTM303_Tot_Ctrl" := 01; (* Reset Totalizer 1*) - - 2: "P_FTM303_Tot_Ctrl" := 02; (* Reset Totalizer 2 *) - - 3: "P_FTM303_Tot_Ctrl" := 03; (* Reset Totalizer 1 & 2*) - - 4: "P_FTM303_Tot_Ctrl" := 04; (* Zeropoint Adjust *) - - 5: "P_FTM303_Tot_Ctrl" := 05; (* Positive Zero Return *) - - 6: "P_FTM303_Tot_Ctrl" := 06; (* Negative Zero Return *) - ELSE: - "P_FTM303_Tot_Ctrl" := 00; - END_CASE; - - (*CASE mProductMFMCtrl OF - 1: gProductTotCtrl_Node17 := 01; (* Reset Totalizer 1*) - - 2: gProductTotCtrl_Node17 := 02 ; (* Preset Totalizer1 *) - - ELSE - gProductTotCtrl_Node17 := 00; - END_CASE;*) - - -END_FUNCTION - diff --git a/BlenderCtrl_ProdModeInit.xml b/BlenderCtrl_ProdModeInit.xml deleted file mode 100644 index 2485d76..0000000 --- a/BlenderCtrl_ProdModeInit.xml +++ /dev/null @@ -1,477 +0,0 @@ - - - - - - false - TASK2 - -
-
-
-
-
-
- -
- - Standard - BlenderCtrl_ProdModeInit - - 2012 - LAD - false - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - PID Reset Integral - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Ctrl Init Errors - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - Real - 0.0 - - - - - - - - - - - 1 - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - RunOut Counter - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - it-IT - Prode Mode Init - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - \ No newline at end of file diff --git a/BlenderCtrl_ProdModeInit_simplified.json b/BlenderCtrl_ProdModeInit_simplified.json deleted file mode 100644 index 93e8516..0000000 --- a/BlenderCtrl_ProdModeInit_simplified.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "block_name": "BlenderCtrl_ProdModeInit", - "block_number": 2012, - "language": "LAD", - "block_comment": "", - "interface": { - "Return": [ - { - "name": "Ret_Val", - "datatype": "Void" - } - ] - }, - "networks": [ - { - "id": "9", - "title": "PID Reset Integral", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call", - "block_name": "BlenderPID_PIDResInteg", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "1A", - "title": "Ctrl Init Errors", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call", - "block_name": "BlenderCtrl_InitErrors", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "2B", - "title": "RunOut Counter", - "comment": "", - "logic": [ - { - "instruction_uid": "23", - "uid": "23", - "type": "Move", - "template_values": { - "Card": "Cardinality" - }, - "negated_pins": {}, - "inputs": { - "en": { - "type": "powerrail" - }, - "in": { - "uid": "21", - "scope": "LiteralConstant", - "type": "constant", - "datatype": "Real", - "value": 0.0 - } - }, - "outputs": { - "out1": [ - { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Variables_Status\".\"Analog_Values\".\"TP301RunOutCount\"" - } - ] - } - } - ], - "language": "LAD" - } - ] -} \ No newline at end of file diff --git a/BlenderCtrl_ProdModeInit_simplified_processed.json b/BlenderCtrl_ProdModeInit_simplified_processed.json deleted file mode 100644 index 344db25..0000000 --- a/BlenderCtrl_ProdModeInit_simplified_processed.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "block_name": "BlenderCtrl_ProdModeInit", - "block_number": 2012, - "language": "LAD", - "block_comment": "", - "interface": { - "Return": [ - { - "name": "Ret_Val", - "datatype": "Void" - } - ] - }, - "networks": [ - { - "id": "9", - "title": "PID Reset Integral", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call_FC_sympy_processed", - "block_name": "BlenderPID_PIDResInteg", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {}, - "scl": "BlenderPID_PIDResInteg();" - } - ], - "language": "LAD" - }, - { - "id": "1A", - "title": "Ctrl Init Errors", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call_FC_sympy_processed", - "block_name": "BlenderCtrl_InitErrors", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {}, - "scl": "BlenderCtrl_InitErrors();" - } - ], - "language": "LAD" - }, - { - "id": "2B", - "title": "RunOut Counter", - "comment": "", - "logic": [ - { - "instruction_uid": "23", - "uid": "23", - "type": "Move_sympy_processed", - "template_values": { - "Card": "Cardinality" - }, - "negated_pins": {}, - "inputs": { - "en": { - "type": "powerrail" - }, - "in": { - "uid": "21", - "scope": "LiteralConstant", - "type": "constant", - "datatype": "Real", - "value": 0.0 - } - }, - "outputs": { - "out1": [ - { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Variables_Status\".\"Analog_Values\".\"TP301RunOutCount\"" - } - ] - }, - "scl": "\"HMI_Variables_Status\".\"Analog_Values\".\"TP301RunOutCount\" := 0.0;" - } - ], - "language": "LAD" - } - ] -} \ No newline at end of file diff --git a/BlenderCtrl_ProdModeInit_simplified_processed.scl b/BlenderCtrl_ProdModeInit_simplified_processed.scl deleted file mode 100644 index 7f1a373..0000000 --- a/BlenderCtrl_ProdModeInit_simplified_processed.scl +++ /dev/null @@ -1,30 +0,0 @@ -// Block Name (Original): BlenderCtrl_ProdModeInit -// Block Number: 2012 -// Original Language: LAD - -FUNCTION_BLOCK "BlenderCtrl_ProdModeInit" -{ S7_Optimized_Access := 'TRUE' } -VERSION : 0.1 - -VAR_RETURN - Ret_Val : Void; -END_VAR - -VAR_TEMP -END_VAR - -BEGIN - - // Network 1: PID Reset Integral (Original Language: LAD) - - BlenderPID_PIDResInteg(); - - // Network 2: Ctrl Init Errors (Original Language: LAD) - - BlenderCtrl_InitErrors(); - - // Network 3: RunOut Counter (Original Language: LAD) - - "HMI_Variables_Status"."Analog_Values"."TP301RunOutCount" := 0.0; - -END_FUNCTION_BLOCK diff --git a/BlenderCtrl__Main.xml b/BlenderCtrl__Main.xml deleted file mode 100644 index ad4869b..0000000 --- a/BlenderCtrl__Main.xml +++ /dev/null @@ -1,10030 +0,0 @@ - - - - - - false - TASK2 - -
-
-
-
- - - - - - - -
-
-
- -
- - Standard - BlenderCtrl__Main - - 2000 - LAD - false - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Clock Generation - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Machine Init - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Variant - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Filler Head - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Emergency Pressed - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2 - - - - - - - 2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Air and CO2 pressure ok and auxiliary ok - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - Int - 0 - - - - - - - - - - - 1 - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Blender State Num - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - S5T#2S - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Delay Power On - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Production Mode - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - Int - 19 - - - - - - - - - - - - - - - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - CIp Mode - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Error Faults - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Filler Bottle Count Used to push Product - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Water Bypass Enable - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Still Water Bypass - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Manual Syrup Drain Valve Open - Operator Alarm - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - S5T#1S - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Manual Syrup Drain Valve Open - Operator Alarm - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Int - 6 - - - - - Int - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Maselli Control - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Int - 5 - - - - - Int - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - mPDS Control - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - mPDS Syrup Control - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Int - 3 - - - - - Int - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - GetProdBrixCO2_FromAnalogIn - CALL "GetProdBrixCO2_FromAn" - NOP 0 - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Co2 Analog Input - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Quality - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Input Data - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Sel Brix Source Check - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Check Water Cooling System Temperature - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Tank Level - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Production ONS - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Blender Prod Mode Init - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Rinse ONS - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - CIP ONS - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - CIp Mode Init - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Reset SPWords - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Blender Run Control - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Tank Pressure Control - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Balaiage - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - First Production - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - CIP MAIN Calling - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Blender Rinse - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Safeties - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Instrument Scanner - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Vacuum Control - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Syrup Room Control - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Blend Procedure Data - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Pneumatic Valve Control - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Pumps Control - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Prod Report Manager - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Outputs - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - SLIM BLOCK - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Interlocking Panel 1 - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Filler Control - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Blender Ctrl Update PWORD - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - S5T#2S - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - ResetTotalizer - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - S5T#2S - - - - - - - - - - - 2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - ResetWaterTot - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Water VFM Reset Totalizer - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - S5T#2S - - - - - - - - - - - - - - - - 2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - ResetCO2Tot - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Syrup MFM Reset Totalizer - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - S5T#2S - - - - - - - - - - - 2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - ResetProductTot - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - CO2 MFM Reset Tot - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - S5T#2S - - - - - - - - - - - 2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - ResetCO2Tot - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Reset Totalizer - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Reset Totalizer - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Blender Ctrl Command - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - DP Global Diag - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Profibus - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Valve Fault - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - All Auto - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Ctrl HMI Manual Active - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - S5T#500ms - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Mod Copy Recipe - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Int - 50 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - to HMI - Recipe Management - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Recipe Calculation - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - it-IT - Blender Main - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - \ No newline at end of file diff --git a/BlenderCtrl__Main_simplified.json b/BlenderCtrl__Main_simplified.json deleted file mode 100644 index a0f3142..0000000 --- a/BlenderCtrl__Main_simplified.json +++ /dev/null @@ -1,4351 +0,0 @@ -{ - "block_name": "BlenderCtrl__Main", - "block_number": 2000, - "language": "LAD", - "block_comment": "", - "interface": { - "Temp": [ - { - "name": "All_Auto_RETVAL", - "datatype": "Int" - }, - { - "name": "Reset_SP_Word_RETVAL", - "datatype": "Int" - }, - { - "name": "mResetWaterTot", - "datatype": "Bool" - }, - { - "name": "mResetSyrupTot", - "datatype": "Bool" - }, - { - "name": "mResetCO2Tot", - "datatype": "Bool" - }, - { - "name": "mResetProductTot", - "datatype": "Bool" - }, - { - "name": "Block_Move_Err", - "datatype": "Int" - } - ], - "Return": [ - { - "name": "Ret_Val", - "datatype": "Void" - } - ] - }, - "networks": [ - { - "id": "9", - "title": "Clock Generation", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call", - "block_name": "Clock Signal", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "1A", - "title": "Machine Init", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call", - "block_name": "BlenderCtrl_MachineInit", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "2B", - "title": "Filler Head", - "comment": "", - "logic": [ - { - "instruction_uid": "25", - "uid": "25", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"AUX FALSE\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "26", - "uid": "26", - "type": "BLKMOV", - "template_values": { - "blk_type": "Type" - }, - "negated_pins": {}, - "inputs": { - "SRCBLK": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_PID\".\"PPM303\"" - }, - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "25", - "source_pin": "out" - } - }, - "outputs": { - "DSTBLK": [ - { - "uid": "24", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"Filler_Head_Variables\".\"FillerHead\"" - } - ], - "RET_VAL": [ - { - "uid": "23", - "scope": "LocalVariable", - "type": "variable", - "name": "\"Block_Move_Err\"" - } - ] - } - } - ], - "language": "LAD" - }, - { - "id": "3C", - "title": "Emergency Pressed", - "comment": "", - "logic": [ - { - "instruction_uid": "24", - "uid": "24", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gIN_VoltageOk\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "25", - "uid": "25", - "type": "NBox", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "bit": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"M19000\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "24", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "26", - "uid": "26", - "type": "Coil", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gEmergencyPressed\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "NBox", - "source_instruction_uid": "25", - "source_pin": "out" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "4D", - "title": "Air and CO2 pressure ok and auxiliary ok", - "comment": "", - "logic": [ - { - "instruction_uid": "29", - "uid": "29", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gIN_LinePressCO2Ok\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "30", - "uid": "30", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gWorkshopTest\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "31", - "uid": "31", - "type": "Contact", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "operand": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gWorkshop_Co2_Presence\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "30", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "32", - "uid": "32", - "type": "Contact", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "operand": { - "uid": "24", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gWorkshop_CIP_Signals\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "31", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "33", - "uid": "33", - "type": "O", - "template_values": { - "Card": "Cardinality" - }, - "negated_pins": {}, - "inputs": { - "in1": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "29", - "source_pin": "out" - }, - "in2": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "32", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "34", - "uid": "34", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "25", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Digital\".\"_PAL_S11\".\"Filtered\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "O", - "source_instruction_uid": "33", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "35", - "uid": "35", - "type": "Contact", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "operand": { - "uid": "26", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"Disable_Bit\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "O", - "source_instruction_uid": "33", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "36", - "uid": "36", - "type": "O", - "template_values": { - "Card": "Cardinality" - }, - "negated_pins": {}, - "inputs": { - "in1": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "34", - "source_pin": "out" - }, - "in2": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "35", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "37", - "uid": "37", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "27", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gIN_VoltageOk\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "O", - "source_instruction_uid": "36", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "38", - "uid": "38", - "type": "Coil", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "28", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gBlenderSuppliesOk\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "37", - "source_pin": "out" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "5E", - "title": "Blender State Num", - "comment": "", - "logic": [ - { - "instruction_uid": "23", - "uid": "23", - "type": "Move", - "template_values": { - "Card": "Cardinality" - }, - "negated_pins": {}, - "inputs": { - "in": { - "uid": "21", - "scope": "LiteralConstant", - "type": "constant", - "datatype": "Int", - "value": 0 - }, - "en": { - "type": "powerrail" - } - }, - "outputs": { - "out1": [ - { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Variables_Status\".\"Procedures\".\"BlenderStateNum\"" - } - ] - } - } - ], - "language": "LAD" - }, - { - "id": "6F", - "title": "Delay Power On", - "comment": "", - "logic": [ - { - "instruction_uid": "24", - "uid": "24", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"FirstScan\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "25", - "uid": "25", - "type": "Se", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "timer": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"mDelayPowerOnTmr\"" - }, - "s": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "24", - "source_pin": "out" - }, - "tv": { - "uid": "23", - "scope": "TypedConstant", - "type": "constant", - "datatype": "TypedConstant", - "value": "S5T#2S" - }, - "en": { - "type": "connection", - "source_instruction_uid": "24", - "source_instruction_type": "Contact", - "source_pin": "out" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "80", - "title": "Production Mode", - "comment": "", - "logic": [ - { - "instruction_uid": "23", - "uid": "23", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Variables_Status\".\"System\".\"Blender_Prod_CIP\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "24", - "uid": "24", - "type": "Coil", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gBlenderProdMode\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "23", - "source_pin": "out" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "91", - "title": "CIp Mode", - "comment": "", - "logic": [ - { - "instruction_uid": "25", - "uid": "25", - "type": "Contact", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Variables_Status\".\"System\".\"Blender_Prod_CIP\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "26", - "uid": "26", - "type": "Coil", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gBlenderCIPMode\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "25", - "source_pin": "out" - } - }, - "outputs": {} - }, - { - "instruction_uid": "27", - "uid": "27", - "type": "Move", - "template_values": { - "Card": "Cardinality" - }, - "negated_pins": {}, - "inputs": { - "in": { - "uid": "23", - "scope": "LiteralConstant", - "type": "constant", - "datatype": "Int", - "value": 19 - }, - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "25", - "source_pin": "out" - } - }, - "outputs": { - "out1": [ - { - "uid": "24", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Variables_Status\".\"Procedures\".\"BlenderStateNum\"" - } - ] - } - } - ], - "language": "LAD" - }, - { - "id": "A2", - "title": "Error Faults", - "comment": "", - "logic": [ - { - "instruction_uid": "26", - "uid": "26", - "type": "Contact", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"AUX FALSE\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "27", - "uid": "27", - "type": "RCoil", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Variables_Status\".\"Meters\".\"QTM3012_PRD_Fault\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "26", - "source_pin": "out" - } - }, - "outputs": {} - }, - { - "instruction_uid": "28", - "uid": "28", - "type": "RCoil", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gmPDS2000_Error_Fault\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "26", - "source_pin": "out" - } - }, - "outputs": {} - }, - { - "instruction_uid": "29", - "uid": "29", - "type": "RCoil", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "24", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Variables_Status\".\"Meters\".\"QTM3012_PRD_Run\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "26", - "source_pin": "out" - } - }, - "outputs": {} - }, - { - "instruction_uid": "30", - "uid": "30", - "type": "RCoil", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "25", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gNoFreezeProductMeter\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "26", - "source_pin": "out" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "B3", - "title": "Filler Bottle Count Used to push Product", - "comment": "", - "logic": [ - { - "instruction_uid": "23", - "uid": "23", - "type": "Contact", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"System_RunOut_Variables\".\"ProdPipeRunOutWaterCount\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "24", - "uid": "24", - "type": "Coil", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"System_RunOut_Variables\".\"ProdPipeRunOutFillerBott\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "23", - "source_pin": "out" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "C4", - "title": "Water Bypass Enable", - "comment": "", - "logic": [ - { - "instruction_uid": "27", - "uid": "27", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_StillWaterByPass\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "28", - "uid": "28", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_ByPassDeair\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "29", - "uid": "29", - "type": "Contact", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "operand": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_Deaireation\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "28", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "30", - "uid": "30", - "type": "O", - "template_values": { - "Card": "Cardinality" - }, - "negated_pins": {}, - "inputs": { - "in1": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - }, - "in2": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "29", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "31", - "uid": "31", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "24", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"Blender_Variables_Pers\".\"gWaterRecipe\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "O", - "source_instruction_uid": "30", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "32", - "uid": "32", - "type": "Contact", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "operand": { - "uid": "25", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"Blender_Variables_Pers\".\"gCarboStillRecipe\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "31", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "33", - "uid": "33", - "type": "Coil", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "26", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gStillWaterByPassEn\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "32", - "source_pin": "out" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "D5", - "title": "Still Water Bypass", - "comment": "", - "logic": [ - { - "instruction_uid": "26", - "uid": "26", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_BlendFillSystem\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "27", - "uid": "27", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_StillWaterByPass\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "26", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "28", - "uid": "28", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"Blender_Variables_Pers\".\"gWaterRecipe\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "29", - "uid": "29", - "type": "Contact", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "operand": { - "uid": "24", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"Blender_Variables_Pers\".\"gCarboStillRecipe\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "28", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "30", - "uid": "30", - "type": "Coil", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "25", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gBlendFiStillWaterByPass\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "29", - "source_pin": "out" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "E6", - "title": "Manual Syrup Drain Valve Open - Operator Alarm", - "comment": "", - "logic": [ - { - "instruction_uid": "30", - "uid": "30", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gSyrupRoomEn\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "31", - "uid": "31", - "type": "Contact", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gIN_HVP301_Aux\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "30", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "32", - "uid": "32", - "type": "Contact", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "operand": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_FastChangeOverEnabled\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "31", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "33", - "uid": "33", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "24", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"Procedure_Variables\".\"FTP302Line_Preparation\".\"Done\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "32", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "34", - "uid": "34", - "type": "Contact", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "operand": { - "uid": "25", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"Procedure_Variables\".\"Syr_RunOut\".\"Done\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "33", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "35", - "uid": "35", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "26", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gBlenderCIPMode\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "31", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "36", - "uid": "36", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "27", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gIN_CIP_CIPRunning\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "35", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "37", - "uid": "37", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "28", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"Procedure_Variables\".\"Blender_Run\".\"Running\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "36", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "38", - "uid": "38", - "type": "O", - "template_values": { - "Card": "Cardinality" - }, - "negated_pins": {}, - "inputs": { - "in1": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "34", - "source_pin": "out" - }, - "in2": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "37", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "39", - "uid": "39", - "type": "Coil", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "29", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gHVP301_Open\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "O", - "source_instruction_uid": "38", - "source_pin": "out" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "F7", - "title": "Manual Syrup Drain Valve Open - Operator Alarm", - "comment": "", - "logic": [ - { - "instruction_uid": "25", - "uid": "25", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gIN_HVM302_Aux\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "26", - "uid": "26", - "type": "Sd", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "timer": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"mHVM302_Dly\"" - }, - "s": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "25", - "source_pin": "out" - }, - "tv": { - "uid": "22", - "scope": "TypedConstant", - "type": "constant", - "datatype": "TypedConstant", - "value": "S5T#1S" - }, - "en": { - "type": "connection", - "source_instruction_uid": "25", - "source_instruction_type": "Contact", - "source_pin": "out" - } - }, - "outputs": { - "q": [] - } - }, - { - "instruction_uid": "27", - "uid": "27", - "type": "Coil", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "24", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gHVM302_Open\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Sd", - "source_instruction_uid": "26", - "source_pin": "q" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "108", - "title": "Maselli Control", - "comment": "", - "logic": [ - { - "instruction_uid": "24", - "uid": "24", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_BrixMeter\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "25", - "uid": "25", - "type": "Eq", - "template_values": { - "SrcType": "Type" - }, - "negated_pins": {}, - "inputs": { - "in1": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_MeterType\"" - }, - "pre": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "24", - "source_pin": "out" - }, - "in2": { - "uid": "23", - "scope": "LiteralConstant", - "type": "constant", - "datatype": "Int", - "value": 6 - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "26", - "uid": "26", - "type": "Call", - "block_name": "Maselli_PA_Control", - "block_type": "FC", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Eq", - "source_instruction_uid": "25", - "source_pin": "out" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "119", - "title": "mPDS Control", - "comment": "", - "logic": [ - { - "instruction_uid": "24", - "uid": "24", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_BrixMeter\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "25", - "uid": "25", - "type": "Eq", - "template_values": { - "SrcType": "Type" - }, - "negated_pins": {}, - "inputs": { - "in1": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_MeterType\"" - }, - "pre": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "24", - "source_pin": "out" - }, - "in2": { - "uid": "23", - "scope": "LiteralConstant", - "type": "constant", - "datatype": "Int", - "value": 5 - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "26", - "uid": "26", - "type": "Call", - "block_name": "mPDS_PA_Control", - "block_type": "FC", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Eq", - "source_instruction_uid": "25", - "source_pin": "out" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "12A", - "title": "mPDS Syrup Control", - "comment": "", - "logic": [ - { - "instruction_uid": "22", - "uid": "22", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_SyrBrixMeter\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "23", - "uid": "23", - "type": "Call", - "block_name": "mPDS_SYR_PA_Control", - "block_type": "FC", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "22", - "source_pin": "out" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "13B", - "title": "Co2 Analog Input", - "comment": "GetProdBrixCO2_FromAnalogIn\n CALL \"GetProdBrixCO2_FromAn\"\n NOP 0", - "logic": [ - { - "instruction_uid": "24", - "uid": "24", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_BrixMeter\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "25", - "uid": "25", - "type": "Eq", - "template_values": { - "SrcType": "Type" - }, - "negated_pins": {}, - "inputs": { - "in1": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_MeterType\"" - }, - "pre": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "24", - "source_pin": "out" - }, - "in2": { - "uid": "23", - "scope": "LiteralConstant", - "type": "constant", - "datatype": "Int", - "value": 3 - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "26", - "uid": "26", - "type": "Call", - "block_name": "GetProdBrixCO2_Anal_Inpt", - "block_type": "FC", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Eq", - "source_instruction_uid": "25", - "source_pin": "out" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "14C", - "title": "Quality", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call", - "block_name": "ProductQuality", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "15D", - "title": "Input Data", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call", - "block_name": "Input", - "block_type": "FB", - "instance_db": "\"Input_Data\"", - "instance_scope": "GlobalVariable", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "16E", - "title": "Sel Brix Source Check", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call", - "block_name": "SelCheckBrixSource", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "17F", - "title": "Check Water Cooling System Temperature", - "comment": "", - "logic": [ - { - "instruction_uid": "22", - "uid": "22", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_InverterRecirPumpPPM306\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "23", - "uid": "23", - "type": "Call", - "block_name": "CTRLCoolingSystem", - "block_type": "FC", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "22", - "source_pin": "out" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "190", - "title": "Tank Level", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call", - "block_name": "TankLevel", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "1A1", - "title": "Production ONS", - "comment": "", - "logic": [ - { - "instruction_uid": "25", - "uid": "25", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gBlenderProdMode\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "26", - "uid": "26", - "type": "PBox", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "bit": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"M19001\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "25", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "27", - "uid": "27", - "type": "Contact", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "operand": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"mDelayPowerOnTmr\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "PBox", - "source_instruction_uid": "26", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "28", - "uid": "28", - "type": "Coil", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "24", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gProductionONS\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "1B2", - "title": "Blender Prod Mode Init", - "comment": "", - "logic": [ - { - "instruction_uid": "24", - "uid": "24", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gProductionONS\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "25", - "uid": "25", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"Procedure_Variables\".\"Blender_Rinse\".\"ONS_Done\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "26", - "uid": "26", - "type": "O", - "template_values": { - "Card": "Cardinality" - }, - "negated_pins": {}, - "inputs": { - "in1": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "24", - "source_pin": "out" - }, - "in2": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "25", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "27", - "uid": "27", - "type": "Contact", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "operand": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"Blender_Variables_Pers\".\"gBlenderStarted\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "O", - "source_instruction_uid": "26", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "28", - "uid": "28", - "type": "Call", - "block_name": "BlenderCtrl_ProdModeInit", - "block_type": "FC", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "1C3", - "title": "Rinse ONS", - "comment": "", - "logic": [ - { - "instruction_uid": "25", - "uid": "25", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Variables_Status\".\"System\".\"Blender_Prod_CIP\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "26", - "uid": "26", - "type": "PBox", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "bit": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"M19002\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "25", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "27", - "uid": "27", - "type": "Contact", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "operand": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"mDelayPowerOnTmr\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "PBox", - "source_instruction_uid": "26", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "28", - "uid": "28", - "type": "Coil", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "24", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gRinseONS\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "1D4", - "title": "CIP ONS", - "comment": "", - "logic": [ - { - "instruction_uid": "25", - "uid": "25", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gBlenderCIPMode\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "26", - "uid": "26", - "type": "PBox", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "bit": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"M19003\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "25", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "27", - "uid": "27", - "type": "Contact", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "operand": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"mDelayPowerOnTmr\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "PBox", - "source_instruction_uid": "26", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "28", - "uid": "28", - "type": "Coil", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "24", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gCIPONS\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "1E5", - "title": "CIp Mode Init", - "comment": "", - "logic": [ - { - "instruction_uid": "22", - "uid": "22", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gCIPONS\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "23", - "uid": "23", - "type": "Call", - "block_name": "BlenderCtrl_CIPModeInit", - "block_type": "FC", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "22", - "source_pin": "out" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "1F6", - "title": "Reset SPWords", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call", - "block_name": "BlenderCtrl_ResetSPWord", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "207", - "title": "Blender Run Control", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call", - "block_name": "BlenderRun__Control", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "218", - "title": "Tank Pressure Control", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call", - "block_name": "Prod Tank PressCtrl", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "229", - "title": "Balaiage", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call", - "block_name": "Baialage", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "23A", - "title": "First Production", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call", - "block_name": "ProcedureFirstProduction", - "block_type": "FB", - "instance_db": "\"FirstProduction_Data\"", - "instance_scope": "GlobalVariable", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "24B", - "title": "CIP MAIN Calling", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call", - "block_name": "CIPMain", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "25C", - "title": "Blender Rinse", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call", - "block_name": "BlenderRinse", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "26D", - "title": "Safeties", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call", - "block_name": "Safeties", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "27E", - "title": "Instrument Scanner", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call", - "block_name": "Instrument_Scanner", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "28F", - "title": "Vacuum Control", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call", - "block_name": "VacuumCtrl", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "2A0", - "title": "Syrup Room Control", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call", - "block_name": "SyrupRoomCtrl", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "2B1", - "title": "Blend Procedure Data", - "comment": "", - "logic": [ - { - "instruction_uid": "22", - "uid": "22", - "type": "Contact", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"mDelayPowerOnTmr\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "23", - "uid": "23", - "type": "Call", - "block_name": "Procedure", - "block_type": "FB", - "instance_db": "\"Blender_Procedure Data\"", - "instance_scope": "GlobalVariable", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "22", - "source_pin": "out" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "2C2", - "title": "Pneumatic Valve Control", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call", - "block_name": "Pneumatic Valve Ctrl", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "2D3", - "title": "Pumps Control", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call", - "block_name": "PumpsControl", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "2E4", - "title": "Prod Report Manager", - "comment": "", - "logic": [ - { - "instruction_uid": "22", - "uid": "22", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_Report\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "23", - "uid": "23", - "type": "Call", - "block_name": "ProdReportManager", - "block_type": "FC", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "22", - "source_pin": "out" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "2F5", - "title": "Outputs", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call", - "block_name": "Output", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "306", - "title": "SLIM BLOCK", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call", - "block_name": "SLIM_Block", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "317", - "title": "Interlocking Panel 1", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call", - "block_name": "Interlocking_Panel_1", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "328", - "title": "Filler Control", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call", - "block_name": "FillerControl", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "339", - "title": "Blender Ctrl Update PWORD", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call", - "block_name": "BlenderCtrl_UpdatePWord", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "34A", - "title": "ResetTotalizer", - "comment": "", - "logic": [ - { - "instruction_uid": "24", - "uid": "24", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gBlendResetTotalizer\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "25", - "uid": "25", - "type": "Se", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "timer": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"mResetTotalizerTmr\"" - }, - "s": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "24", - "source_pin": "out" - }, - "tv": { - "uid": "22", - "scope": "TypedConstant", - "type": "constant", - "datatype": "TypedConstant", - "value": "S5T#2S" - }, - "en": { - "type": "connection", - "source_instruction_uid": "24", - "source_instruction_type": "Contact", - "source_pin": "out" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "35B", - "title": "ResetWaterTot", - "comment": "", - "logic": [ - { - "instruction_uid": "26", - "uid": "26", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gFTN301_ResetTot\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "27", - "uid": "27", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"mResetTotalizerTmr\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "28", - "uid": "28", - "type": "O", - "template_values": { - "Card": "Cardinality" - }, - "negated_pins": {}, - "inputs": { - "in1": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "26", - "source_pin": "out" - }, - "in2": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "29", - "uid": "29", - "type": "Se", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "timer": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"mResetFTN301TotTmr\"" - }, - "s": { - "type": "connection", - "source_instruction_type": "O", - "source_instruction_uid": "28", - "source_pin": "out" - }, - "tv": { - "uid": "24", - "scope": "TypedConstant", - "type": "constant", - "datatype": "TypedConstant", - "value": "S5T#2S" - }, - "en": { - "type": "connection", - "source_instruction_uid": "28", - "source_instruction_type": "O", - "source_pin": "out" - } - }, - "outputs": { - "q": [] - } - }, - { - "instruction_uid": "30", - "uid": "30", - "type": "Coil", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "25", - "scope": "LocalVariable", - "type": "variable", - "name": "\"mResetWaterTot\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Se", - "source_instruction_uid": "29", - "source_pin": "q" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "36C", - "title": "Water VFM Reset Totalizer", - "comment": "", - "logic": [ - { - "instruction_uid": "23", - "uid": "23", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gFTN301_ResetTot\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "24", - "uid": "24", - "type": "RCoil", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gFTN301_ResetTot\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "23", - "source_pin": "out" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "37D", - "title": "ResetCO2Tot", - "comment": "", - "logic": [ - { - "instruction_uid": "27", - "uid": "27", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gFTP302_ResetTot\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "28", - "uid": "28", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"mResetTotalizerTmr\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "29", - "uid": "29", - "type": "O", - "template_values": { - "Card": "Cardinality" - }, - "negated_pins": {}, - "inputs": { - "in1": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - }, - "in2": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "28", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "30", - "uid": "30", - "type": "Se", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "timer": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"mResetFTP302TotTmr\"" - }, - "s": { - "type": "connection", - "source_instruction_type": "O", - "source_instruction_uid": "29", - "source_pin": "out" - }, - "tv": { - "uid": "24", - "scope": "TypedConstant", - "type": "constant", - "datatype": "TypedConstant", - "value": "S5T#2S" - }, - "en": { - "type": "connection", - "source_instruction_uid": "29", - "source_instruction_type": "O", - "source_pin": "out" - } - }, - "outputs": { - "q": [] - } - }, - { - "instruction_uid": "31", - "uid": "31", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "25", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gSyrupRoomEn\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Se", - "source_instruction_uid": "30", - "source_pin": "q" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "32", - "uid": "32", - "type": "Coil", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "26", - "scope": "LocalVariable", - "type": "variable", - "name": "\"mResetSyrupTot\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "31", - "source_pin": "out" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "38E", - "title": "Syrup MFM Reset Totalizer", - "comment": "", - "logic": [ - { - "instruction_uid": "23", - "uid": "23", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gFTP302_ResetTot\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "24", - "uid": "24", - "type": "RCoil", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gFTP302_ResetTot\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "23", - "source_pin": "out" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "39F", - "title": "ResetProductTot", - "comment": "", - "logic": [ - { - "instruction_uid": "26", - "uid": "26", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gFTM303_ResetTot\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "27", - "uid": "27", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"mResetTotalizerTmr\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "28", - "uid": "28", - "type": "O", - "template_values": { - "Card": "Cardinality" - }, - "negated_pins": {}, - "inputs": { - "in1": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "26", - "source_pin": "out" - }, - "in2": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "29", - "uid": "29", - "type": "Se", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "timer": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"mResetFTM303TotTmr\"" - }, - "s": { - "type": "connection", - "source_instruction_type": "O", - "source_instruction_uid": "28", - "source_pin": "out" - }, - "tv": { - "uid": "24", - "scope": "TypedConstant", - "type": "constant", - "datatype": "TypedConstant", - "value": "S5T#2S" - }, - "en": { - "type": "connection", - "source_instruction_uid": "28", - "source_instruction_type": "O", - "source_pin": "out" - } - }, - "outputs": { - "q": [] - } - }, - { - "instruction_uid": "30", - "uid": "30", - "type": "Coil", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "25", - "scope": "LocalVariable", - "type": "variable", - "name": "\"mResetCO2Tot\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Se", - "source_instruction_uid": "29", - "source_pin": "q" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "3B0", - "title": "CO2 MFM Reset Tot", - "comment": "", - "logic": [ - { - "instruction_uid": "23", - "uid": "23", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gFTM303_ResetTot\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "24", - "uid": "24", - "type": "RCoil", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gFTM303_ResetTot\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "23", - "source_pin": "out" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "3C1", - "title": "ResetCO2Tot", - "comment": "", - "logic": [ - { - "instruction_uid": "26", - "uid": "26", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gProductMFMResetTot\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "27", - "uid": "27", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"mResetTotalizerTmr\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "28", - "uid": "28", - "type": "O", - "template_values": { - "Card": "Cardinality" - }, - "negated_pins": {}, - "inputs": { - "in1": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "26", - "source_pin": "out" - }, - "in2": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "29", - "uid": "29", - "type": "Se", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "timer": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"mResetProductTotTmr\"" - }, - "s": { - "type": "connection", - "source_instruction_type": "O", - "source_instruction_uid": "28", - "source_pin": "out" - }, - "tv": { - "uid": "24", - "scope": "TypedConstant", - "type": "constant", - "datatype": "TypedConstant", - "value": "S5T#2S" - }, - "en": { - "type": "connection", - "source_instruction_uid": "28", - "source_instruction_type": "O", - "source_pin": "out" - } - }, - "outputs": { - "q": [] - } - }, - { - "instruction_uid": "30", - "uid": "30", - "type": "Coil", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "25", - "scope": "LocalVariable", - "type": "variable", - "name": "\"mResetProductTot\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Se", - "source_instruction_uid": "29", - "source_pin": "q" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "3D2", - "title": "Reset Totalizer", - "comment": "", - "logic": [ - { - "instruction_uid": "23", - "uid": "23", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gProductMFMResetTot\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "24", - "uid": "24", - "type": "RCoil", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gProductMFMResetTot\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "23", - "source_pin": "out" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "3E3", - "title": "Reset Totalizer", - "comment": "", - "logic": [ - { - "instruction_uid": "23", - "uid": "23", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gBlendResetTotalizer\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "24", - "uid": "24", - "type": "RCoil", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gBlendResetTotalizer\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "23", - "source_pin": "out" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "3F4", - "title": "Blender Ctrl Command", - "comment": "", - "logic": [ - { - "instruction_uid": "26", - "uid": "26", - "type": "Contact", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_Simulation\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "27", - "uid": "27", - "type": "Call", - "block_name": "BlenderCtrl_MFM Command", - "block_type": "FC", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "26", - "source_pin": "out" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "405", - "title": "DP Global Diag", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call", - "block_name": "CPU_DP Global Diag", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "416", - "title": "Profibus", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call", - "block_name": "Profibus Network", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "427", - "title": "Valve Fault", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call", - "block_name": "ModValveFault", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "438", - "title": "All Auto", - "comment": "", - "logic": [ - { - "instruction_uid": "25", - "uid": "25", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Variables_Cmd\".\"Commands_From_HMI\".\"F7_DeviceControl\".\"Command\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "26", - "uid": "26", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Variables_Cmd\".\"Commands_From_HMI\".\"F7_DeviceControl\".\"Enable\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "25", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "27", - "uid": "27", - "type": "NBox", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "bit": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"M19011\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "26", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "28", - "uid": "28", - "type": "Call", - "block_name": "BlenderCtrl_All Auto", - "block_type": "FC", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "NBox", - "source_instruction_uid": "27", - "source_pin": "out" - } - }, - "outputs": {} - }, - { - "instruction_uid": "29", - "uid": "29", - "type": "Coil", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "24", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Variables_Cmd\".\"Commands_From_HMI\".\"F7_DeviceControl\".\"Light\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "26", - "source_pin": "out" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "449", - "title": "Ctrl HMI Manual Active", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call", - "block_name": "BlenderCtrl_ManualActive", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "45A", - "title": "Mod Copy Recipe", - "comment": "", - "logic": [ - { - "instruction_uid": "33", - "uid": "33", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Variables_Cmd\".\"Recipe\".\"Main_Page\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "34", - "uid": "34", - "type": "Contact", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"mFP_Recip_Main_Page\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "33", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "35", - "uid": "35", - "type": "Coil", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"mAux_FP_M700_1\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "34", - "source_pin": "out" - } - }, - "outputs": {} - }, - { - "instruction_uid": "36", - "uid": "36", - "type": "Coil", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "24", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"mFP_Recip_Main_Page\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "33", - "source_pin": "out" - } - }, - "outputs": {} - }, - { - "instruction_uid": "37", - "uid": "37", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "25", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Variables_Cmd\".\"Recipe\".\"Main_Page\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "38", - "uid": "38", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "26", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Variables_Cmd\".\"Recipe\".\"Edit\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "37", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "39", - "uid": "39", - "type": "Se", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "timer": { - "uid": "27", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"T_Pulse_Recipe_Edit\"" - }, - "s": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "38", - "source_pin": "out" - }, - "tv": { - "uid": "28", - "scope": "TypedConstant", - "type": "constant", - "datatype": "TypedConstant", - "value": "S5T#500ms" - }, - "en": { - "type": "connection", - "source_instruction_uid": "38", - "source_instruction_type": "Contact", - "source_pin": "out" - } - }, - "outputs": { - "q": [] - } - }, - { - "instruction_uid": "40", - "uid": "40", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "29", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"T_Pulse_Recipe_Edit\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "SdCoil", - "source_instruction_uid": "39", - "source_pin": "q" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "41", - "uid": "41", - "type": "RCoil", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "30", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Variables_Cmd\".\"Recipe\".\"Edit\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "40", - "source_pin": "out" - } - }, - "outputs": {} - }, - { - "instruction_uid": "42", - "uid": "42", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "31", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"mAux_FP_M700_1\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "43", - "uid": "43", - "type": "SCoil", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "32", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Variables_Cmd\".\"Recipe\".\"Edit\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "42", - "source_pin": "out" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "46B", - "title": "to HMI - Recipe Management", - "comment": "", - "logic": [ - { - "instruction_uid": "42", - "uid": "42", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"AUX TRUE\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "43", - "uid": "43", - "type": "Call", - "block_name": "RecipeManagement - Prod", - "block_type": "FB", - "instance_db": "\"RecipeManagement_Data\"", - "instance_scope": "GlobalVariable", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "42", - "source_pin": "out" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "47C", - "title": "Recipe Calculation", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call", - "block_name": "RecipeCalculation", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {} - } - ], - "language": "LAD" - } - ] -} \ No newline at end of file diff --git a/BlenderCtrl__Main_simplified_processed.json b/BlenderCtrl__Main_simplified_processed.json deleted file mode 100644 index 39593e9..0000000 --- a/BlenderCtrl__Main_simplified_processed.json +++ /dev/null @@ -1,4529 +0,0 @@ -{ - "block_name": "BlenderCtrl__Main", - "block_number": 2000, - "language": "LAD", - "block_comment": "", - "interface": { - "Temp": [ - { - "name": "All_Auto_RETVAL", - "datatype": "Int" - }, - { - "name": "Reset_SP_Word_RETVAL", - "datatype": "Int" - }, - { - "name": "mResetWaterTot", - "datatype": "Bool" - }, - { - "name": "mResetSyrupTot", - "datatype": "Bool" - }, - { - "name": "mResetCO2Tot", - "datatype": "Bool" - }, - { - "name": "mResetProductTot", - "datatype": "Bool" - }, - { - "name": "Block_Move_Err", - "datatype": "Int" - } - ], - "Return": [ - { - "name": "Ret_Val", - "datatype": "Void" - } - ] - }, - "networks": [ - { - "id": "9", - "title": "Clock Generation", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call_FC_sympy_processed", - "block_name": "Clock Signal", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {}, - "scl": "Clock_Signal();" - } - ], - "language": "LAD" - }, - { - "id": "1A", - "title": "Machine Init", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call_FC_sympy_processed", - "block_name": "BlenderCtrl_MachineInit", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {}, - "scl": "BlenderCtrl_MachineInit();" - } - ], - "language": "LAD" - }, - { - "id": "2B", - "title": "Filler Head", - "comment": "", - "logic": [ - { - "instruction_uid": "25", - "uid": "25", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"AUX FALSE\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v0_" - }, - { - "instruction_uid": "26", - "uid": "26", - "type": "BLKMOV_sympy_processed", - "template_values": { - "blk_type": "Type" - }, - "negated_pins": {}, - "inputs": { - "SRCBLK": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_PID\".\"PPM303\"" - }, - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "25", - "source_pin": "out" - } - }, - "outputs": { - "DSTBLK": [ - { - "uid": "24", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"Filler_Head_Variables\".\"FillerHead\"" - } - ], - "RET_VAL": [ - { - "uid": "23", - "scope": "LocalVariable", - "type": "variable", - "name": "\"Block_Move_Err\"" - } - ] - }, - "scl": "IF \"AUX FALSE\" THEN\n \"Block_Move_Err\" := BLKMOV(SRCBLK := \"HMI_PID\".\"PPM303\", DSTBLK => \"Filler_Head_Variables\".\"FillerHead\"); // ADVERTENCIA: BLKMOV usado directamente, probablemente no compile!\nEND_IF;" - } - ], - "language": "LAD" - }, - { - "id": "3C", - "title": "Emergency Pressed", - "comment": "", - "logic": [ - { - "instruction_uid": "24", - "uid": "24", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gIN_VoltageOk\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v1_" - }, - { - "instruction_uid": "25", - "uid": "25", - "type": "NBox_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "bit": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"M19000\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "24", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "_edge_mem_update_scl": "\"M19000\" := \"gIN_VoltageOk\"; // N_TRIG(\"gIN_VoltageOk\") - Mem: \"M19000\"", - "scl": "// Edge Logic handled by Coil 26" - }, - { - "instruction_uid": "26", - "uid": "26", - "type": "Coil_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gEmergencyPressed\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "NBox", - "source_instruction_uid": "25", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "\"gEmergencyPressed\" := \"M19000\" AND NOT \"gIN_VoltageOk\";\n\"M19000\" := \"gIN_VoltageOk\"; // N_TRIG(\"gIN_VoltageOk\") - Mem: \"M19000\"" - } - ], - "language": "LAD" - }, - { - "id": "4D", - "title": "Air and CO2 pressure ok and auxiliary ok", - "comment": "", - "logic": [ - { - "instruction_uid": "29", - "uid": "29", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gIN_LinePressCO2Ok\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v2_" - }, - { - "instruction_uid": "30", - "uid": "30", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gWorkshopTest\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v3_" - }, - { - "instruction_uid": "31", - "uid": "31", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "operand": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gWorkshop_Co2_Presence\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "30", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v3_ & ~v4_" - }, - { - "instruction_uid": "32", - "uid": "32", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "operand": { - "uid": "24", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gWorkshop_CIP_Signals\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "31", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v3_ & ~v4_ & ~v5_" - }, - { - "instruction_uid": "33", - "uid": "33", - "type": "O_sympy_processed", - "template_values": { - "Card": "Cardinality" - }, - "negated_pins": {}, - "inputs": { - "in1": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "29", - "source_pin": "out" - }, - "in2": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "32", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy O: v2_ | (v3_ & ~v4_ & ~v5_)" - }, - { - "instruction_uid": "34", - "uid": "34", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "25", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Digital\".\"_PAL_S11\".\"Filtered\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "O", - "source_instruction_uid": "33", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v6_ & (v2_ | (v3_ & ~v4_ & ~v5_))" - }, - { - "instruction_uid": "35", - "uid": "35", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "operand": { - "uid": "26", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"Disable_Bit\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "O", - "source_instruction_uid": "33", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: ~v7_ & (v2_ | (v3_ & ~v4_ & ~v5_))" - }, - { - "instruction_uid": "36", - "uid": "36", - "type": "O_sympy_processed", - "template_values": { - "Card": "Cardinality" - }, - "negated_pins": {}, - "inputs": { - "in1": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "34", - "source_pin": "out" - }, - "in2": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "35", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy O: (v6_ & (v2_ | (v3_ & ~v4_ & ~v5_))) | (~v7_ & (v2_ | (v3_ & ~v4_ & ~v5_)))" - }, - { - "instruction_uid": "37", - "uid": "37", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "27", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gIN_VoltageOk\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "O", - "source_instruction_uid": "36", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v1_ & ((v6_ & (v2_ | (v3_ & ~v4_ & ~v5_))) | (~v7_ & (v2_ | (v3_ & ~v4_ & ~v5_))))" - }, - { - "instruction_uid": "38", - "uid": "38", - "type": "Coil_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "28", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gBlenderSuppliesOk\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "37", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "\"gBlenderSuppliesOk\" := (\"gIN_VoltageOk\" AND \"gIN_LinePressCO2Ok\" AND \"HMI_Digital\".\"_PAL_S11\".\"Filtered\") OR (\"gIN_VoltageOk\" AND \"gIN_LinePressCO2Ok\" AND NOT \"Disable_Bit\") OR (\"gIN_VoltageOk\" AND \"gWorkshopTest\" AND \"HMI_Digital\".\"_PAL_S11\".\"Filtered\" AND NOT \"gWorkshop_Co2_Presence\" AND NOT \"gWorkshop_CIP_Signals\") OR (\"gIN_VoltageOk\" AND \"gWorkshopTest\" AND NOT \"gWorkshop_Co2_Presence\" AND NOT \"gWorkshop_CIP_Signals\" AND NOT \"Disable_Bit\");" - } - ], - "language": "LAD" - }, - { - "id": "5E", - "title": "Blender State Num", - "comment": "", - "logic": [ - { - "instruction_uid": "23", - "uid": "23", - "type": "Move_sympy_processed", - "template_values": { - "Card": "Cardinality" - }, - "negated_pins": {}, - "inputs": { - "in": { - "uid": "21", - "scope": "LiteralConstant", - "type": "constant", - "datatype": "Int", - "value": 0 - }, - "en": { - "type": "powerrail" - } - }, - "outputs": { - "out1": [ - { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Variables_Status\".\"Procedures\".\"BlenderStateNum\"" - } - ] - }, - "scl": "\"HMI_Variables_Status\".\"Procedures\".\"BlenderStateNum\" := 0;" - } - ], - "language": "LAD" - }, - { - "id": "6F", - "title": "Delay Power On", - "comment": "", - "logic": [ - { - "instruction_uid": "24", - "uid": "24", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"FirstScan\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v8_" - }, - { - "instruction_uid": "25", - "uid": "25", - "type": "Se_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "timer": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"mDelayPowerOnTmr\"" - }, - "s": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "24", - "source_pin": "out" - }, - "tv": { - "uid": "23", - "scope": "TypedConstant", - "type": "constant", - "datatype": "TypedConstant", - "value": "S5T#2S" - }, - "en": { - "type": "connection", - "source_instruction_uid": "24", - "source_instruction_type": "Contact", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "\"mDelayPowerOnTmr\"(IN := \"FirstScan\", PT := S5T#2S); // TODO: Declarar \"mDelayPowerOnTmr\" : TP;" - } - ], - "language": "LAD" - }, - { - "id": "80", - "title": "Production Mode", - "comment": "", - "logic": [ - { - "instruction_uid": "23", - "uid": "23", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Variables_Status\".\"System\".\"Blender_Prod_CIP\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v9_" - }, - { - "instruction_uid": "24", - "uid": "24", - "type": "Coil_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gBlenderProdMode\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "23", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "\"gBlenderProdMode\" := \"HMI_Variables_Status\".\"System\".\"Blender_Prod_CIP\";" - } - ], - "language": "LAD" - }, - { - "id": "91", - "title": "CIp Mode", - "comment": "", - "logic": [ - { - "instruction_uid": "25", - "uid": "25", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Variables_Status\".\"System\".\"Blender_Prod_CIP\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: ~v9_" - }, - { - "instruction_uid": "26", - "uid": "26", - "type": "Coil_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gBlenderCIPMode\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "25", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "\"gBlenderCIPMode\" := NOT \"HMI_Variables_Status\".\"System\".\"Blender_Prod_CIP\";" - }, - { - "instruction_uid": "27", - "uid": "27", - "type": "Move_sympy_processed", - "template_values": { - "Card": "Cardinality" - }, - "negated_pins": {}, - "inputs": { - "in": { - "uid": "23", - "scope": "LiteralConstant", - "type": "constant", - "datatype": "Int", - "value": 19 - }, - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "25", - "source_pin": "out" - } - }, - "outputs": { - "out1": [ - { - "uid": "24", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Variables_Status\".\"Procedures\".\"BlenderStateNum\"" - } - ] - }, - "scl": "IF NOT \"HMI_Variables_Status\".\"System\".\"Blender_Prod_CIP\" THEN\n \"HMI_Variables_Status\".\"Procedures\".\"BlenderStateNum\" := 19;\nEND_IF;" - } - ], - "language": "LAD" - }, - { - "id": "A2", - "title": "Error Faults", - "comment": "", - "logic": [ - { - "instruction_uid": "26", - "uid": "26", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"AUX FALSE\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: ~v0_" - }, - { - "instruction_uid": "27", - "uid": "27", - "type": "RCoil_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Variables_Status\".\"Meters\".\"QTM3012_PRD_Fault\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "26", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "IF NOT \"AUX FALSE\" THEN\n \"HMI_Variables_Status\".\"Meters\".\"QTM3012_PRD_Fault\" := FALSE;\nEND_IF;" - }, - { - "instruction_uid": "28", - "uid": "28", - "type": "RCoil_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gmPDS2000_Error_Fault\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "26", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "IF NOT \"AUX FALSE\" THEN\n \"gmPDS2000_Error_Fault\" := FALSE;\nEND_IF;" - }, - { - "instruction_uid": "29", - "uid": "29", - "type": "RCoil_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "24", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Variables_Status\".\"Meters\".\"QTM3012_PRD_Run\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "26", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "IF NOT \"AUX FALSE\" THEN\n \"HMI_Variables_Status\".\"Meters\".\"QTM3012_PRD_Run\" := FALSE;\nEND_IF;" - }, - { - "instruction_uid": "30", - "uid": "30", - "type": "RCoil_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "25", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gNoFreezeProductMeter\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "26", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "IF NOT \"AUX FALSE\" THEN\n \"gNoFreezeProductMeter\" := FALSE;\nEND_IF;" - } - ], - "language": "LAD" - }, - { - "id": "B3", - "title": "Filler Bottle Count Used to push Product", - "comment": "", - "logic": [ - { - "instruction_uid": "23", - "uid": "23", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"System_RunOut_Variables\".\"ProdPipeRunOutWaterCount\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: ~v10_" - }, - { - "instruction_uid": "24", - "uid": "24", - "type": "Coil_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"System_RunOut_Variables\".\"ProdPipeRunOutFillerBott\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "23", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "\"System_RunOut_Variables\".\"ProdPipeRunOutFillerBott\" := NOT \"System_RunOut_Variables\".\"ProdPipeRunOutWaterCount\";" - } - ], - "language": "LAD" - }, - { - "id": "C4", - "title": "Water Bypass Enable", - "comment": "", - "logic": [ - { - "instruction_uid": "27", - "uid": "27", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_StillWaterByPass\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v11_" - }, - { - "instruction_uid": "28", - "uid": "28", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_ByPassDeair\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v12_" - }, - { - "instruction_uid": "29", - "uid": "29", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "operand": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_Deaireation\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "28", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v12_ & ~v13_" - }, - { - "instruction_uid": "30", - "uid": "30", - "type": "O_sympy_processed", - "template_values": { - "Card": "Cardinality" - }, - "negated_pins": {}, - "inputs": { - "in1": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - }, - "in2": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "29", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy O: v11_ | (v12_ & ~v13_)" - }, - { - "instruction_uid": "31", - "uid": "31", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "24", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"Blender_Variables_Pers\".\"gWaterRecipe\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "O", - "source_instruction_uid": "30", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v14_ & (v11_ | (v12_ & ~v13_))" - }, - { - "instruction_uid": "32", - "uid": "32", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "operand": { - "uid": "25", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"Blender_Variables_Pers\".\"gCarboStillRecipe\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "31", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v14_ & ~v15_ & (v11_ | (v12_ & ~v13_))" - }, - { - "instruction_uid": "33", - "uid": "33", - "type": "Coil_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "26", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gStillWaterByPassEn\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "32", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "\"gStillWaterByPassEn\" := (\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_StillWaterByPass\" AND \"Blender_Variables_Pers\".\"gWaterRecipe\" AND NOT \"Blender_Variables_Pers\".\"gCarboStillRecipe\") OR (\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_ByPassDeair\" AND \"Blender_Variables_Pers\".\"gWaterRecipe\" AND NOT \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_Deaireation\" AND NOT \"Blender_Variables_Pers\".\"gCarboStillRecipe\");" - } - ], - "language": "LAD" - }, - { - "id": "D5", - "title": "Still Water Bypass", - "comment": "", - "logic": [ - { - "instruction_uid": "26", - "uid": "26", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_BlendFillSystem\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v16_" - }, - { - "instruction_uid": "27", - "uid": "27", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_StillWaterByPass\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "26", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v11_ & v16_" - }, - { - "instruction_uid": "28", - "uid": "28", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"Blender_Variables_Pers\".\"gWaterRecipe\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v11_ & v14_ & v16_" - }, - { - "instruction_uid": "29", - "uid": "29", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "operand": { - "uid": "24", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"Blender_Variables_Pers\".\"gCarboStillRecipe\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "28", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v11_ & v14_ & v16_ & ~v15_" - }, - { - "instruction_uid": "30", - "uid": "30", - "type": "Coil_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "25", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gBlendFiStillWaterByPass\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "29", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "\"gBlendFiStillWaterByPass\" := \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_StillWaterByPass\" AND \"Blender_Variables_Pers\".\"gWaterRecipe\" AND \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_BlendFillSystem\" AND NOT \"Blender_Variables_Pers\".\"gCarboStillRecipe\";" - } - ], - "language": "LAD" - }, - { - "id": "E6", - "title": "Manual Syrup Drain Valve Open - Operator Alarm", - "comment": "", - "logic": [ - { - "instruction_uid": "30", - "uid": "30", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gSyrupRoomEn\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v17_" - }, - { - "instruction_uid": "31", - "uid": "31", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gIN_HVP301_Aux\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "30", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v17_ & ~v18_" - }, - { - "instruction_uid": "32", - "uid": "32", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "operand": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_FastChangeOverEnabled\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "31", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v17_ & ~v18_ & ~v19_" - }, - { - "instruction_uid": "33", - "uid": "33", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "24", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"Procedure_Variables\".\"FTP302Line_Preparation\".\"Done\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "32", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v17_ & v20_ & ~v18_ & ~v19_" - }, - { - "instruction_uid": "34", - "uid": "34", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "operand": { - "uid": "25", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"Procedure_Variables\".\"Syr_RunOut\".\"Done\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "33", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v17_ & v20_ & ~v18_ & ~v19_ & ~v21_" - }, - { - "instruction_uid": "35", - "uid": "35", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "26", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gBlenderCIPMode\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "31", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v17_ & v22_ & ~v18_" - }, - { - "instruction_uid": "36", - "uid": "36", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "27", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gIN_CIP_CIPRunning\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "35", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v17_ & v22_ & v23_ & ~v18_" - }, - { - "instruction_uid": "37", - "uid": "37", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "28", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"Procedure_Variables\".\"Blender_Run\".\"Running\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "36", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v17_ & v22_ & v23_ & v24_ & ~v18_" - }, - { - "instruction_uid": "38", - "uid": "38", - "type": "O_sympy_processed", - "template_values": { - "Card": "Cardinality" - }, - "negated_pins": {}, - "inputs": { - "in1": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "34", - "source_pin": "out" - }, - "in2": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "37", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy O: (v17_ & v22_ & v23_ & v24_ & ~v18_) | (v17_ & v20_ & ~v18_ & ~v19_ & ~v21_)" - }, - { - "instruction_uid": "39", - "uid": "39", - "type": "Coil_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "29", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gHVP301_Open\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "O", - "source_instruction_uid": "38", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "\"gHVP301_Open\" := (\"gSyrupRoomEn\" AND \"gBlenderCIPMode\" AND \"gIN_CIP_CIPRunning\" AND \"Procedure_Variables\".\"Blender_Run\".\"Running\" AND NOT \"gIN_HVP301_Aux\") OR (\"gSyrupRoomEn\" AND \"Procedure_Variables\".\"FTP302Line_Preparation\".\"Done\" AND NOT \"gIN_HVP301_Aux\" AND NOT \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_FastChangeOverEnabled\" AND NOT \"Procedure_Variables\".\"Syr_RunOut\".\"Done\");" - } - ], - "language": "LAD" - }, - { - "id": "F7", - "title": "Manual Syrup Drain Valve Open - Operator Alarm", - "comment": "", - "logic": [ - { - "instruction_uid": "25", - "uid": "25", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gIN_HVM302_Aux\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v25_" - }, - { - "instruction_uid": "26", - "uid": "26", - "type": "Sd_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "timer": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"mHVM302_Dly\"" - }, - "s": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "25", - "source_pin": "out" - }, - "tv": { - "uid": "22", - "scope": "TypedConstant", - "type": "constant", - "datatype": "TypedConstant", - "value": "S5T#1S" - }, - "en": { - "type": "connection", - "source_instruction_uid": "25", - "source_instruction_type": "Contact", - "source_pin": "out" - } - }, - "outputs": { - "q": [] - }, - "scl": "\"mHVM302_Dly\"(IN := \"gIN_HVM302_Aux\", PT := S5T#1S); // TODO: Declarar \"mHVM302_Dly\" : TON;" - }, - { - "instruction_uid": "27", - "uid": "27", - "type": "Coil_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "24", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gHVM302_Open\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Sd", - "source_instruction_uid": "26", - "source_pin": "q" - } - }, - "outputs": {}, - "scl": "\"gHVM302_Open\" := \"mHVM302_Dly\".Q;" - } - ], - "language": "LAD" - }, - { - "id": "108", - "title": "Maselli Control", - "comment": "", - "logic": [ - { - "instruction_uid": "24", - "uid": "24", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_BrixMeter\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v26_" - }, - { - "instruction_uid": "25", - "uid": "25", - "type": "Eq_sympy_processed", - "template_values": { - "SrcType": "Type" - }, - "negated_pins": {}, - "inputs": { - "in1": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_MeterType\"" - }, - "pre": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "24", - "source_pin": "out" - }, - "in2": { - "uid": "23", - "scope": "LiteralConstant", - "type": "constant", - "datatype": "Int", - "value": 6 - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy EQ: Eq(v56_, 6)" - }, - { - "instruction_uid": "26", - "uid": "26", - "type": "Call_FC_sympy_processed", - "block_name": "Maselli_PA_Control", - "block_type": "FC", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Eq", - "source_instruction_uid": "25", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "IF Eq(\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_MeterType\", 6) THEN\n Maselli_PA_Control();\nEND_IF;" - } - ], - "language": "LAD" - }, - { - "id": "119", - "title": "mPDS Control", - "comment": "", - "logic": [ - { - "instruction_uid": "24", - "uid": "24", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_BrixMeter\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v26_" - }, - { - "instruction_uid": "25", - "uid": "25", - "type": "Eq_sympy_processed", - "template_values": { - "SrcType": "Type" - }, - "negated_pins": {}, - "inputs": { - "in1": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_MeterType\"" - }, - "pre": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "24", - "source_pin": "out" - }, - "in2": { - "uid": "23", - "scope": "LiteralConstant", - "type": "constant", - "datatype": "Int", - "value": 5 - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy EQ: Eq(v56_, 5)" - }, - { - "instruction_uid": "26", - "uid": "26", - "type": "Call_FC_sympy_processed", - "block_name": "mPDS_PA_Control", - "block_type": "FC", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Eq", - "source_instruction_uid": "25", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "IF Eq(\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_MeterType\", 5) THEN\n mPDS_PA_Control();\nEND_IF;" - } - ], - "language": "LAD" - }, - { - "id": "12A", - "title": "mPDS Syrup Control", - "comment": "", - "logic": [ - { - "instruction_uid": "22", - "uid": "22", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_SyrBrixMeter\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v27_" - }, - { - "instruction_uid": "23", - "uid": "23", - "type": "Call_FC_sympy_processed", - "block_name": "mPDS_SYR_PA_Control", - "block_type": "FC", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "22", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "IF \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_SyrBrixMeter\" THEN\n mPDS_SYR_PA_Control();\nEND_IF;" - } - ], - "language": "LAD" - }, - { - "id": "13B", - "title": "Co2 Analog Input", - "comment": "GetProdBrixCO2_FromAnalogIn\n CALL \"GetProdBrixCO2_FromAn\"\n NOP 0", - "logic": [ - { - "instruction_uid": "24", - "uid": "24", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_BrixMeter\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v26_" - }, - { - "instruction_uid": "25", - "uid": "25", - "type": "Eq_sympy_processed", - "template_values": { - "SrcType": "Type" - }, - "negated_pins": {}, - "inputs": { - "in1": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_MeterType\"" - }, - "pre": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "24", - "source_pin": "out" - }, - "in2": { - "uid": "23", - "scope": "LiteralConstant", - "type": "constant", - "datatype": "Int", - "value": 3 - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy EQ: Eq(v56_, 3)" - }, - { - "instruction_uid": "26", - "uid": "26", - "type": "Call_FC_sympy_processed", - "block_name": "GetProdBrixCO2_Anal_Inpt", - "block_type": "FC", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Eq", - "source_instruction_uid": "25", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "IF Eq(\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_MeterType\", 3) THEN\n GetProdBrixCO2_Anal_Inpt();\nEND_IF;" - } - ], - "language": "LAD" - }, - { - "id": "14C", - "title": "Quality", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call_FC_sympy_processed", - "block_name": "ProductQuality", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {}, - "scl": "ProductQuality();" - } - ], - "language": "LAD" - }, - { - "id": "15D", - "title": "Input Data", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call_FB_sympy_processed", - "block_name": "Input", - "block_type": "FB", - "instance_db": "\"Input_Data\"", - "instance_scope": "GlobalVariable", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {}, - "scl": "\"Input_Data\"();" - } - ], - "language": "LAD" - }, - { - "id": "16E", - "title": "Sel Brix Source Check", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call_FC_sympy_processed", - "block_name": "SelCheckBrixSource", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {}, - "scl": "SelCheckBrixSource();" - } - ], - "language": "LAD" - }, - { - "id": "17F", - "title": "Check Water Cooling System Temperature", - "comment": "", - "logic": [ - { - "instruction_uid": "22", - "uid": "22", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_InverterRecirPumpPPM306\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v28_" - }, - { - "instruction_uid": "23", - "uid": "23", - "type": "Call_FC_sympy_processed", - "block_name": "CTRLCoolingSystem", - "block_type": "FC", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "22", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "IF \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_InverterRecirPumpPPM306\" THEN\n CTRLCoolingSystem();\nEND_IF;" - } - ], - "language": "LAD" - }, - { - "id": "190", - "title": "Tank Level", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call_FC_sympy_processed", - "block_name": "TankLevel", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {}, - "scl": "TankLevel();" - } - ], - "language": "LAD" - }, - { - "id": "1A1", - "title": "Production ONS", - "comment": "", - "logic": [ - { - "instruction_uid": "25", - "uid": "25", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gBlenderProdMode\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v29_" - }, - { - "instruction_uid": "26", - "uid": "26", - "type": "PBox_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "bit": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"M19001\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "25", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "_edge_mem_update_scl": "\"M19001\" := \"gBlenderProdMode\"; // P_TRIG(\"gBlenderProdMode\") - Mem: \"M19001\"", - "scl": "// PBox SymPy processed, logic in consumer" - }, - { - "instruction_uid": "27", - "uid": "27", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "operand": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"mDelayPowerOnTmr\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "PBox", - "source_instruction_uid": "26", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v29_ & ~v30_ & ~v51_" - }, - { - "instruction_uid": "28", - "uid": "28", - "type": "Coil_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "24", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gProductionONS\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "\"gProductionONS\" := \"gBlenderProdMode\" AND NOT \"mDelayPowerOnTmr\" AND NOT \"M19001\";" - } - ], - "language": "LAD" - }, - { - "id": "1B2", - "title": "Blender Prod Mode Init", - "comment": "", - "logic": [ - { - "instruction_uid": "24", - "uid": "24", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gProductionONS\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v31_" - }, - { - "instruction_uid": "25", - "uid": "25", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"Procedure_Variables\".\"Blender_Rinse\".\"ONS_Done\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v32_" - }, - { - "instruction_uid": "26", - "uid": "26", - "type": "O_sympy_processed", - "template_values": { - "Card": "Cardinality" - }, - "negated_pins": {}, - "inputs": { - "in1": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "24", - "source_pin": "out" - }, - "in2": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "25", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy O: v31_ | v32_" - }, - { - "instruction_uid": "27", - "uid": "27", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "operand": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"Blender_Variables_Pers\".\"gBlenderStarted\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "O", - "source_instruction_uid": "26", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: ~v33_ & (v31_ | v32_)" - }, - { - "instruction_uid": "28", - "uid": "28", - "type": "Call_FC_sympy_processed", - "block_name": "BlenderCtrl_ProdModeInit", - "block_type": "FC", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "IF (\"gProductionONS\" AND NOT \"Blender_Variables_Pers\".\"gBlenderStarted\") OR (\"Procedure_Variables\".\"Blender_Rinse\".\"ONS_Done\" AND NOT \"Blender_Variables_Pers\".\"gBlenderStarted\") THEN\n BlenderCtrl_ProdModeInit();\nEND_IF;" - } - ], - "language": "LAD" - }, - { - "id": "1C3", - "title": "Rinse ONS", - "comment": "", - "logic": [ - { - "instruction_uid": "25", - "uid": "25", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Variables_Status\".\"System\".\"Blender_Prod_CIP\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v9_" - }, - { - "instruction_uid": "26", - "uid": "26", - "type": "PBox_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "bit": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"M19002\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "25", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "_edge_mem_update_scl": "\"M19002\" := \"HMI_Variables_Status\".\"System\".\"Blender_Prod_CIP\"; // P_TRIG(\"HMI_Variables_Status\".\"System\".\"Blender_Prod_CIP\") - Mem: \"M19002\"", - "scl": "// PBox SymPy processed, logic in consumer" - }, - { - "instruction_uid": "27", - "uid": "27", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "operand": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"mDelayPowerOnTmr\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "PBox", - "source_instruction_uid": "26", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v9_ & ~v30_ & ~v52_" - }, - { - "instruction_uid": "28", - "uid": "28", - "type": "Coil_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "24", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gRinseONS\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "\"gRinseONS\" := \"HMI_Variables_Status\".\"System\".\"Blender_Prod_CIP\" AND NOT \"mDelayPowerOnTmr\" AND NOT \"M19002\";" - } - ], - "language": "LAD" - }, - { - "id": "1D4", - "title": "CIP ONS", - "comment": "", - "logic": [ - { - "instruction_uid": "25", - "uid": "25", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gBlenderCIPMode\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v22_" - }, - { - "instruction_uid": "26", - "uid": "26", - "type": "PBox_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "bit": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"M19003\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "25", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "_edge_mem_update_scl": "\"M19003\" := \"gBlenderCIPMode\"; // P_TRIG(\"gBlenderCIPMode\") - Mem: \"M19003\"", - "scl": "// PBox SymPy processed, logic in consumer" - }, - { - "instruction_uid": "27", - "uid": "27", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "operand": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"mDelayPowerOnTmr\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "PBox", - "source_instruction_uid": "26", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v22_ & ~v30_ & ~v53_" - }, - { - "instruction_uid": "28", - "uid": "28", - "type": "Coil_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "24", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gCIPONS\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "\"gCIPONS\" := \"gBlenderCIPMode\" AND NOT \"mDelayPowerOnTmr\" AND NOT \"M19003\";" - } - ], - "language": "LAD" - }, - { - "id": "1E5", - "title": "CIp Mode Init", - "comment": "", - "logic": [ - { - "instruction_uid": "22", - "uid": "22", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gCIPONS\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v34_" - }, - { - "instruction_uid": "23", - "uid": "23", - "type": "Call_FC_sympy_processed", - "block_name": "BlenderCtrl_CIPModeInit", - "block_type": "FC", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "22", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "IF \"gCIPONS\" THEN\n BlenderCtrl_CIPModeInit();\nEND_IF;" - } - ], - "language": "LAD" - }, - { - "id": "1F6", - "title": "Reset SPWords", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call_FC_sympy_processed", - "block_name": "BlenderCtrl_ResetSPWord", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {}, - "scl": "BlenderCtrl_ResetSPWord();" - } - ], - "language": "LAD" - }, - { - "id": "207", - "title": "Blender Run Control", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call_FC_sympy_processed", - "block_name": "BlenderRun__Control", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {}, - "scl": "BlenderRun__Control();" - } - ], - "language": "LAD" - }, - { - "id": "218", - "title": "Tank Pressure Control", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call_FC_sympy_processed", - "block_name": "Prod Tank PressCtrl", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {}, - "scl": "Prod_Tank_PressCtrl();" - } - ], - "language": "LAD" - }, - { - "id": "229", - "title": "Balaiage", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call_FC_sympy_processed", - "block_name": "Baialage", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {}, - "scl": "Baialage();" - } - ], - "language": "LAD" - }, - { - "id": "23A", - "title": "First Production", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call_FB_sympy_processed", - "block_name": "ProcedureFirstProduction", - "block_type": "FB", - "instance_db": "\"FirstProduction_Data\"", - "instance_scope": "GlobalVariable", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {}, - "scl": "\"FirstProduction_Data\"();" - } - ], - "language": "LAD" - }, - { - "id": "24B", - "title": "CIP MAIN Calling", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call_FC_sympy_processed", - "block_name": "CIPMain", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {}, - "scl": "CIPMain();" - } - ], - "language": "LAD" - }, - { - "id": "25C", - "title": "Blender Rinse", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call_FC_sympy_processed", - "block_name": "BlenderRinse", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {}, - "scl": "BlenderRinse();" - } - ], - "language": "LAD" - }, - { - "id": "26D", - "title": "Safeties", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call_FC_sympy_processed", - "block_name": "Safeties", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {}, - "scl": "Safeties();" - } - ], - "language": "LAD" - }, - { - "id": "27E", - "title": "Instrument Scanner", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call_FC_sympy_processed", - "block_name": "Instrument_Scanner", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {}, - "scl": "Instrument_Scanner();" - } - ], - "language": "LAD" - }, - { - "id": "28F", - "title": "Vacuum Control", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call_FC_sympy_processed", - "block_name": "VacuumCtrl", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {}, - "scl": "VacuumCtrl();" - } - ], - "language": "LAD" - }, - { - "id": "2A0", - "title": "Syrup Room Control", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call_FC_sympy_processed", - "block_name": "SyrupRoomCtrl", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {}, - "scl": "SyrupRoomCtrl();" - } - ], - "language": "LAD" - }, - { - "id": "2B1", - "title": "Blend Procedure Data", - "comment": "", - "logic": [ - { - "instruction_uid": "22", - "uid": "22", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"mDelayPowerOnTmr\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: ~v30_" - }, - { - "instruction_uid": "23", - "uid": "23", - "type": "Call_FB_sympy_processed", - "block_name": "Procedure", - "block_type": "FB", - "instance_db": "\"Blender_Procedure Data\"", - "instance_scope": "GlobalVariable", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "22", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "IF NOT \"mDelayPowerOnTmr\" THEN\n \"Blender_Procedure Data\"();\nEND_IF;" - } - ], - "language": "LAD" - }, - { - "id": "2C2", - "title": "Pneumatic Valve Control", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call_FC_sympy_processed", - "block_name": "Pneumatic Valve Ctrl", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {}, - "scl": "Pneumatic_Valve_Ctrl();" - } - ], - "language": "LAD" - }, - { - "id": "2D3", - "title": "Pumps Control", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call_FC_sympy_processed", - "block_name": "PumpsControl", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {}, - "scl": "PumpsControl();" - } - ], - "language": "LAD" - }, - { - "id": "2E4", - "title": "Prod Report Manager", - "comment": "", - "logic": [ - { - "instruction_uid": "22", - "uid": "22", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_Report\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v35_" - }, - { - "instruction_uid": "23", - "uid": "23", - "type": "Call_FC_sympy_processed", - "block_name": "ProdReportManager", - "block_type": "FC", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "22", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "IF \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_Report\" THEN\n ProdReportManager();\nEND_IF;" - } - ], - "language": "LAD" - }, - { - "id": "2F5", - "title": "Outputs", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call_FC_sympy_processed", - "block_name": "Output", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {}, - "scl": "Output();" - } - ], - "language": "LAD" - }, - { - "id": "306", - "title": "SLIM BLOCK", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call_FC_sympy_processed", - "block_name": "SLIM_Block", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {}, - "scl": "SLIM_Block();" - } - ], - "language": "LAD" - }, - { - "id": "317", - "title": "Interlocking Panel 1", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call_FC_sympy_processed", - "block_name": "Interlocking_Panel_1", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {}, - "scl": "Interlocking_Panel_1();" - } - ], - "language": "LAD" - }, - { - "id": "328", - "title": "Filler Control", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call_FC_sympy_processed", - "block_name": "FillerControl", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {}, - "scl": "FillerControl();" - } - ], - "language": "LAD" - }, - { - "id": "339", - "title": "Blender Ctrl Update PWORD", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call_FC_sympy_processed", - "block_name": "BlenderCtrl_UpdatePWord", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {}, - "scl": "BlenderCtrl_UpdatePWord();" - } - ], - "language": "LAD" - }, - { - "id": "34A", - "title": "ResetTotalizer", - "comment": "", - "logic": [ - { - "instruction_uid": "24", - "uid": "24", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gBlendResetTotalizer\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v36_" - }, - { - "instruction_uid": "25", - "uid": "25", - "type": "Se_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "timer": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"mResetTotalizerTmr\"" - }, - "s": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "24", - "source_pin": "out" - }, - "tv": { - "uid": "22", - "scope": "TypedConstant", - "type": "constant", - "datatype": "TypedConstant", - "value": "S5T#2S" - }, - "en": { - "type": "connection", - "source_instruction_uid": "24", - "source_instruction_type": "Contact", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "\"mResetTotalizerTmr\"(IN := \"gBlendResetTotalizer\", PT := S5T#2S); // TODO: Declarar \"mResetTotalizerTmr\" : TP;" - } - ], - "language": "LAD" - }, - { - "id": "35B", - "title": "ResetWaterTot", - "comment": "", - "logic": [ - { - "instruction_uid": "26", - "uid": "26", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gFTN301_ResetTot\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v37_" - }, - { - "instruction_uid": "27", - "uid": "27", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"mResetTotalizerTmr\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v38_" - }, - { - "instruction_uid": "28", - "uid": "28", - "type": "O_sympy_processed", - "template_values": { - "Card": "Cardinality" - }, - "negated_pins": {}, - "inputs": { - "in1": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "26", - "source_pin": "out" - }, - "in2": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy O: v37_ | v38_" - }, - { - "instruction_uid": "29", - "uid": "29", - "type": "Se_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "timer": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"mResetFTN301TotTmr\"" - }, - "s": { - "type": "connection", - "source_instruction_type": "O", - "source_instruction_uid": "28", - "source_pin": "out" - }, - "tv": { - "uid": "24", - "scope": "TypedConstant", - "type": "constant", - "datatype": "TypedConstant", - "value": "S5T#2S" - }, - "en": { - "type": "connection", - "source_instruction_uid": "28", - "source_instruction_type": "O", - "source_pin": "out" - } - }, - "outputs": { - "q": [] - }, - "scl": "\"mResetFTN301TotTmr\"(IN := \"gFTN301_ResetTot\" OR \"mResetTotalizerTmr\", PT := S5T#2S); // TODO: Declarar \"mResetFTN301TotTmr\" : TP;" - }, - { - "instruction_uid": "30", - "uid": "30", - "type": "Coil_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "25", - "scope": "LocalVariable", - "type": "variable", - "name": "\"mResetWaterTot\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Se", - "source_instruction_uid": "29", - "source_pin": "q" - } - }, - "outputs": {}, - "scl": "\"mResetWaterTot\" := \"mResetFTN301TotTmr\".Q;" - } - ], - "language": "LAD" - }, - { - "id": "36C", - "title": "Water VFM Reset Totalizer", - "comment": "", - "logic": [ - { - "instruction_uid": "23", - "uid": "23", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gFTN301_ResetTot\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v37_" - }, - { - "instruction_uid": "24", - "uid": "24", - "type": "RCoil_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gFTN301_ResetTot\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "23", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "IF \"gFTN301_ResetTot\" THEN\n \"gFTN301_ResetTot\" := FALSE;\nEND_IF;" - } - ], - "language": "LAD" - }, - { - "id": "37D", - "title": "ResetCO2Tot", - "comment": "", - "logic": [ - { - "instruction_uid": "27", - "uid": "27", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gFTP302_ResetTot\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v39_" - }, - { - "instruction_uid": "28", - "uid": "28", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"mResetTotalizerTmr\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v38_" - }, - { - "instruction_uid": "29", - "uid": "29", - "type": "O_sympy_processed", - "template_values": { - "Card": "Cardinality" - }, - "negated_pins": {}, - "inputs": { - "in1": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - }, - "in2": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "28", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy O: v38_ | v39_" - }, - { - "instruction_uid": "30", - "uid": "30", - "type": "Se_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "timer": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"mResetFTP302TotTmr\"" - }, - "s": { - "type": "connection", - "source_instruction_type": "O", - "source_instruction_uid": "29", - "source_pin": "out" - }, - "tv": { - "uid": "24", - "scope": "TypedConstant", - "type": "constant", - "datatype": "TypedConstant", - "value": "S5T#2S" - }, - "en": { - "type": "connection", - "source_instruction_uid": "29", - "source_instruction_type": "O", - "source_pin": "out" - } - }, - "outputs": { - "q": [] - }, - "scl": "\"mResetFTP302TotTmr\"(IN := \"mResetTotalizerTmr\" OR \"gFTP302_ResetTot\", PT := S5T#2S); // TODO: Declarar \"mResetFTP302TotTmr\" : TP;" - }, - { - "instruction_uid": "31", - "uid": "31", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "25", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gSyrupRoomEn\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Se", - "source_instruction_uid": "30", - "source_pin": "q" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v17_ & v61_" - }, - { - "instruction_uid": "32", - "uid": "32", - "type": "Coil_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "26", - "scope": "LocalVariable", - "type": "variable", - "name": "\"mResetSyrupTot\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "31", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "\"mResetSyrupTot\" := \"gSyrupRoomEn\" AND \"mResetFTP302TotTmr\".Q;" - } - ], - "language": "LAD" - }, - { - "id": "38E", - "title": "Syrup MFM Reset Totalizer", - "comment": "", - "logic": [ - { - "instruction_uid": "23", - "uid": "23", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gFTP302_ResetTot\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v39_" - }, - { - "instruction_uid": "24", - "uid": "24", - "type": "RCoil_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gFTP302_ResetTot\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "23", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "IF \"gFTP302_ResetTot\" THEN\n \"gFTP302_ResetTot\" := FALSE;\nEND_IF;" - } - ], - "language": "LAD" - }, - { - "id": "39F", - "title": "ResetProductTot", - "comment": "", - "logic": [ - { - "instruction_uid": "26", - "uid": "26", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gFTM303_ResetTot\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v40_" - }, - { - "instruction_uid": "27", - "uid": "27", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"mResetTotalizerTmr\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v38_" - }, - { - "instruction_uid": "28", - "uid": "28", - "type": "O_sympy_processed", - "template_values": { - "Card": "Cardinality" - }, - "negated_pins": {}, - "inputs": { - "in1": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "26", - "source_pin": "out" - }, - "in2": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy O: v38_ | v40_" - }, - { - "instruction_uid": "29", - "uid": "29", - "type": "Se_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "timer": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"mResetFTM303TotTmr\"" - }, - "s": { - "type": "connection", - "source_instruction_type": "O", - "source_instruction_uid": "28", - "source_pin": "out" - }, - "tv": { - "uid": "24", - "scope": "TypedConstant", - "type": "constant", - "datatype": "TypedConstant", - "value": "S5T#2S" - }, - "en": { - "type": "connection", - "source_instruction_uid": "28", - "source_instruction_type": "O", - "source_pin": "out" - } - }, - "outputs": { - "q": [] - }, - "scl": "\"mResetFTM303TotTmr\"(IN := \"mResetTotalizerTmr\" OR \"gFTM303_ResetTot\", PT := S5T#2S); // TODO: Declarar \"mResetFTM303TotTmr\" : TP;" - }, - { - "instruction_uid": "30", - "uid": "30", - "type": "Coil_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "25", - "scope": "LocalVariable", - "type": "variable", - "name": "\"mResetCO2Tot\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Se", - "source_instruction_uid": "29", - "source_pin": "q" - } - }, - "outputs": {}, - "scl": "\"mResetCO2Tot\" := \"mResetFTM303TotTmr\".Q;" - } - ], - "language": "LAD" - }, - { - "id": "3B0", - "title": "CO2 MFM Reset Tot", - "comment": "", - "logic": [ - { - "instruction_uid": "23", - "uid": "23", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gFTM303_ResetTot\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v40_" - }, - { - "instruction_uid": "24", - "uid": "24", - "type": "RCoil_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gFTM303_ResetTot\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "23", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "IF \"gFTM303_ResetTot\" THEN\n \"gFTM303_ResetTot\" := FALSE;\nEND_IF;" - } - ], - "language": "LAD" - }, - { - "id": "3C1", - "title": "ResetCO2Tot", - "comment": "", - "logic": [ - { - "instruction_uid": "26", - "uid": "26", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gProductMFMResetTot\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v41_" - }, - { - "instruction_uid": "27", - "uid": "27", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"mResetTotalizerTmr\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v38_" - }, - { - "instruction_uid": "28", - "uid": "28", - "type": "O_sympy_processed", - "template_values": { - "Card": "Cardinality" - }, - "negated_pins": {}, - "inputs": { - "in1": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "26", - "source_pin": "out" - }, - "in2": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy O: v38_ | v41_" - }, - { - "instruction_uid": "29", - "uid": "29", - "type": "Se_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "timer": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"mResetProductTotTmr\"" - }, - "s": { - "type": "connection", - "source_instruction_type": "O", - "source_instruction_uid": "28", - "source_pin": "out" - }, - "tv": { - "uid": "24", - "scope": "TypedConstant", - "type": "constant", - "datatype": "TypedConstant", - "value": "S5T#2S" - }, - "en": { - "type": "connection", - "source_instruction_uid": "28", - "source_instruction_type": "O", - "source_pin": "out" - } - }, - "outputs": { - "q": [] - }, - "scl": "\"mResetProductTotTmr\"(IN := \"mResetTotalizerTmr\" OR \"gProductMFMResetTot\", PT := S5T#2S); // TODO: Declarar \"mResetProductTotTmr\" : TP;" - }, - { - "instruction_uid": "30", - "uid": "30", - "type": "Coil_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "25", - "scope": "LocalVariable", - "type": "variable", - "name": "\"mResetProductTot\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Se", - "source_instruction_uid": "29", - "source_pin": "q" - } - }, - "outputs": {}, - "scl": "\"mResetProductTot\" := \"mResetProductTotTmr\".Q;" - } - ], - "language": "LAD" - }, - { - "id": "3D2", - "title": "Reset Totalizer", - "comment": "", - "logic": [ - { - "instruction_uid": "23", - "uid": "23", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gProductMFMResetTot\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v41_" - }, - { - "instruction_uid": "24", - "uid": "24", - "type": "RCoil_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gProductMFMResetTot\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "23", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "IF \"gProductMFMResetTot\" THEN\n \"gProductMFMResetTot\" := FALSE;\nEND_IF;" - } - ], - "language": "LAD" - }, - { - "id": "3E3", - "title": "Reset Totalizer", - "comment": "", - "logic": [ - { - "instruction_uid": "23", - "uid": "23", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gBlendResetTotalizer\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v36_" - }, - { - "instruction_uid": "24", - "uid": "24", - "type": "RCoil_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"gBlendResetTotalizer\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "23", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "IF \"gBlendResetTotalizer\" THEN\n \"gBlendResetTotalizer\" := FALSE;\nEND_IF;" - } - ], - "language": "LAD" - }, - { - "id": "3F4", - "title": "Blender Ctrl Command", - "comment": "", - "logic": [ - { - "instruction_uid": "26", - "uid": "26", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_Simulation\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: ~v42_" - }, - { - "instruction_uid": "27", - "uid": "27", - "type": "Call_FC_sympy_processed", - "block_name": "BlenderCtrl_MFM Command", - "block_type": "FC", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "26", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "IF NOT \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_Simulation\" THEN\n BlenderCtrl_MFM_Command();\nEND_IF;" - } - ], - "language": "LAD" - }, - { - "id": "405", - "title": "DP Global Diag", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call_FC_sympy_processed", - "block_name": "CPU_DP Global Diag", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {}, - "scl": "CPU_DP_Global_Diag();" - } - ], - "language": "LAD" - }, - { - "id": "416", - "title": "Profibus", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call_FC_sympy_processed", - "block_name": "Profibus Network", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {}, - "scl": "Profibus_Network();" - } - ], - "language": "LAD" - }, - { - "id": "427", - "title": "Valve Fault", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call_FC_sympy_processed", - "block_name": "ModValveFault", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {}, - "scl": "ModValveFault();" - } - ], - "language": "LAD" - }, - { - "id": "438", - "title": "All Auto", - "comment": "", - "logic": [ - { - "instruction_uid": "25", - "uid": "25", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Variables_Cmd\".\"Commands_From_HMI\".\"F7_DeviceControl\".\"Command\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v43_" - }, - { - "instruction_uid": "26", - "uid": "26", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Variables_Cmd\".\"Commands_From_HMI\".\"F7_DeviceControl\".\"Enable\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "25", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v43_ & v44_" - }, - { - "instruction_uid": "27", - "uid": "27", - "type": "NBox_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "bit": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"M19011\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "26", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "_edge_mem_update_scl": "\"M19011\" := \"HMI_Variables_Cmd\".\"Commands_From_HMI\".\"F7_DeviceControl\".\"Command\" AND \"HMI_Variables_Cmd\".\"Commands_From_HMI\".\"F7_DeviceControl\".\"Enable\"; // N_TRIG(\"HMI_Variables_Cmd\".\"Commands_From_HMI\".\"F7_DeviceControl\".\"Command\" AND \"HMI_Variables_Cmd\".\"Commands_From_HMI\".\"F7_DeviceControl\".\"Enable\") - Mem: \"M19011\"", - "scl": "// NBox SymPy processed, logic in consumer" - }, - { - "instruction_uid": "28", - "uid": "28", - "type": "Call_FC_sympy_processed", - "block_name": "BlenderCtrl_All Auto", - "block_type": "FC", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "NBox", - "source_instruction_uid": "27", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "IF (\"M19011\" AND NOT \"HMI_Variables_Cmd\".\"Commands_From_HMI\".\"F7_DeviceControl\".\"Command\") OR (\"M19011\" AND NOT \"HMI_Variables_Cmd\".\"Commands_From_HMI\".\"F7_DeviceControl\".\"Enable\") THEN\n BlenderCtrl_All_Auto();\nEND_IF;" - }, - { - "instruction_uid": "29", - "uid": "29", - "type": "Coil_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "24", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Variables_Cmd\".\"Commands_From_HMI\".\"F7_DeviceControl\".\"Light\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "26", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "\"HMI_Variables_Cmd\".\"Commands_From_HMI\".\"F7_DeviceControl\".\"Light\" := \"HMI_Variables_Cmd\".\"Commands_From_HMI\".\"F7_DeviceControl\".\"Command\" AND \"HMI_Variables_Cmd\".\"Commands_From_HMI\".\"F7_DeviceControl\".\"Enable\";" - } - ], - "language": "LAD" - }, - { - "id": "449", - "title": "Ctrl HMI Manual Active", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call_FC_sympy_processed", - "block_name": "BlenderCtrl_ManualActive", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {}, - "scl": "BlenderCtrl_ManualActive();" - } - ], - "language": "LAD" - }, - { - "id": "45A", - "title": "Mod Copy Recipe", - "comment": "", - "logic": [ - { - "instruction_uid": "33", - "uid": "33", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Variables_Cmd\".\"Recipe\".\"Main_Page\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v45_" - }, - { - "instruction_uid": "34", - "uid": "34", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"mFP_Recip_Main_Page\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "33", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v45_ & ~v46_" - }, - { - "instruction_uid": "35", - "uid": "35", - "type": "Coil_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"mAux_FP_M700_1\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "34", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "\"mAux_FP_M700_1\" := \"HMI_Variables_Cmd\".\"Recipe\".\"Main_Page\" AND NOT \"mFP_Recip_Main_Page\";" - }, - { - "instruction_uid": "36", - "uid": "36", - "type": "Coil_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "24", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"mFP_Recip_Main_Page\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "33", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "\"mFP_Recip_Main_Page\" := \"HMI_Variables_Cmd\".\"Recipe\".\"Main_Page\";" - }, - { - "instruction_uid": "37", - "uid": "37", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "25", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Variables_Cmd\".\"Recipe\".\"Main_Page\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v45_" - }, - { - "instruction_uid": "38", - "uid": "38", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "26", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Variables_Cmd\".\"Recipe\".\"Edit\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "37", - "source_pin": "out" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v45_ & v47_" - }, - { - "instruction_uid": "39", - "uid": "39", - "type": "Se_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "timer": { - "uid": "27", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"T_Pulse_Recipe_Edit\"" - }, - "s": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "38", - "source_pin": "out" - }, - "tv": { - "uid": "28", - "scope": "TypedConstant", - "type": "constant", - "datatype": "TypedConstant", - "value": "S5T#500ms" - }, - "en": { - "type": "connection", - "source_instruction_uid": "38", - "source_instruction_type": "Contact", - "source_pin": "out" - } - }, - "outputs": { - "q": [] - }, - "scl": "\"T_Pulse_Recipe_Edit\"(IN := \"HMI_Variables_Cmd\".\"Recipe\".\"Main_Page\" AND \"HMI_Variables_Cmd\".\"Recipe\".\"Edit\", PT := S5T#500ms); // TODO: Declarar \"T_Pulse_Recipe_Edit\" : TP;" - }, - { - "instruction_uid": "40", - "uid": "40", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "29", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"T_Pulse_Recipe_Edit\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "SdCoil", - "source_instruction_uid": "39", - "source_pin": "q" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v48_ & v64_" - }, - { - "instruction_uid": "41", - "uid": "41", - "type": "RCoil_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "30", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Variables_Cmd\".\"Recipe\".\"Edit\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "40", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "IF \"T_Pulse_Recipe_Edit\" AND \"T_Pulse_Recipe_Edit\".Q THEN\n \"HMI_Variables_Cmd\".\"Recipe\".\"Edit\" := FALSE;\nEND_IF;" - }, - { - "instruction_uid": "42", - "uid": "42", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "31", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"mAux_FP_M700_1\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v49_" - }, - { - "instruction_uid": "43", - "uid": "43", - "type": "SCoil_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "32", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Variables_Cmd\".\"Recipe\".\"Edit\"" - }, - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "42", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "IF \"mAux_FP_M700_1\" THEN\n \"HMI_Variables_Cmd\".\"Recipe\".\"Edit\" := TRUE;\nEND_IF;" - } - ], - "language": "LAD" - }, - { - "id": "46B", - "title": "to HMI - Recipe Management", - "comment": "", - "logic": [ - { - "instruction_uid": "42", - "uid": "42", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"AUX TRUE\"" - }, - "in": { - "type": "powerrail" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v50_" - }, - { - "instruction_uid": "43", - "uid": "43", - "type": "Call_FB_sympy_processed", - "block_name": "RecipeManagement - Prod", - "block_type": "FB", - "instance_db": "\"RecipeManagement_Data\"", - "instance_scope": "GlobalVariable", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "42", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "IF \"AUX TRUE\" THEN\n \"RecipeManagement_Data\"();\nEND_IF;" - } - ], - "language": "LAD" - }, - { - "id": "47C", - "title": "Recipe Calculation", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call_FC_sympy_processed", - "block_name": "RecipeCalculation", - "block_type": "FC", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {}, - "scl": "RecipeCalculation();" - } - ], - "language": "LAD" - } - ] -} \ No newline at end of file diff --git a/BlenderCtrl__Main_simplified_processed.scl b/BlenderCtrl__Main_simplified_processed.scl deleted file mode 100644 index cf43236..0000000 --- a/BlenderCtrl__Main_simplified_processed.scl +++ /dev/null @@ -1,365 +0,0 @@ -// Block Name (Original): BlenderCtrl__Main -// Block Number: 2000 -// Original Language: LAD - -FUNCTION_BLOCK "BlenderCtrl__Main" -{ S7_Optimized_Access := 'TRUE' } -VERSION : 0.1 - -VAR_RETURN - Ret_Val : Void; -END_VAR - -VAR_TEMP - All_Auto_RETVAL : Int; - Reset_SP_Word_RETVAL : Int; - mResetWaterTot : Bool; - mResetSyrupTot : Bool; - mResetCO2Tot : Bool; - mResetProductTot : Bool; - Block_Move_Err : Int; -END_VAR - -BEGIN - - // Network 1: Clock Generation (Original Language: LAD) - - Clock_Signal(); - - // Network 2: Machine Init (Original Language: LAD) - - BlenderCtrl_MachineInit(); - - // Network 3: Filler Head (Original Language: LAD) - - IF "AUX FALSE" THEN - "Block_Move_Err" := BLKMOV(SRCBLK := "HMI_PID"."PPM303", DSTBLK => "Filler_Head_Variables"."FillerHead"); // ADVERTENCIA: BLKMOV usado directamente, probablemente no compile! - END_IF; - - // Network 4: Emergency Pressed (Original Language: LAD) - - "gEmergencyPressed" := "M19000" AND NOT "gIN_VoltageOk"; - "M19000" := "gIN_VoltageOk"; // N_TRIG("gIN_VoltageOk") - Mem: "M19000" - - // Network 5: Air and CO2 pressure ok and auxiliary ok (Original Language: LAD) - - "gBlenderSuppliesOk" := ("gIN_VoltageOk" AND "gIN_LinePressCO2Ok" AND "HMI_Digital"."_PAL_S11"."Filtered") OR ("gIN_VoltageOk" AND "gIN_LinePressCO2Ok" AND NOT "Disable_Bit") OR ("gIN_VoltageOk" AND "gWorkshopTest" AND "HMI_Digital"."_PAL_S11"."Filtered" AND NOT "gWorkshop_Co2_Presence" AND NOT "gWorkshop_CIP_Signals") OR ("gIN_VoltageOk" AND "gWorkshopTest" AND NOT "gWorkshop_Co2_Presence" AND NOT "gWorkshop_CIP_Signals" AND NOT "Disable_Bit"); - - // Network 6: Blender State Num (Original Language: LAD) - - "HMI_Variables_Status"."Procedures"."BlenderStateNum" := 0; - - // Network 7: Delay Power On (Original Language: LAD) - - "mDelayPowerOnTmr"(IN := "FirstScan", PT := S5T#2S); // TODO: Declarar "mDelayPowerOnTmr" : TP; - - // Network 8: Production Mode (Original Language: LAD) - - "gBlenderProdMode" := "HMI_Variables_Status"."System"."Blender_Prod_CIP"; - - // Network 9: CIp Mode (Original Language: LAD) - - "gBlenderCIPMode" := NOT "HMI_Variables_Status"."System"."Blender_Prod_CIP"; - IF NOT "HMI_Variables_Status"."System"."Blender_Prod_CIP" THEN - "HMI_Variables_Status"."Procedures"."BlenderStateNum" := 19; - END_IF; - - // Network 10: Error Faults (Original Language: LAD) - - IF NOT "AUX FALSE" THEN - "HMI_Variables_Status"."Meters"."QTM3012_PRD_Fault" := FALSE; - END_IF; - IF NOT "AUX FALSE" THEN - "gmPDS2000_Error_Fault" := FALSE; - END_IF; - IF NOT "AUX FALSE" THEN - "HMI_Variables_Status"."Meters"."QTM3012_PRD_Run" := FALSE; - END_IF; - IF NOT "AUX FALSE" THEN - "gNoFreezeProductMeter" := FALSE; - END_IF; - - // Network 11: Filler Bottle Count Used to push Product (Original Language: LAD) - - "System_RunOut_Variables"."ProdPipeRunOutFillerBott" := NOT "System_RunOut_Variables"."ProdPipeRunOutWaterCount"; - - // Network 12: Water Bypass Enable (Original Language: LAD) - - "gStillWaterByPassEn" := ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_StillWaterByPass" AND "Blender_Variables_Pers"."gWaterRecipe" AND NOT "Blender_Variables_Pers"."gCarboStillRecipe") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_ByPassDeair" AND "Blender_Variables_Pers"."gWaterRecipe" AND NOT "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Deaireation" AND NOT "Blender_Variables_Pers"."gCarboStillRecipe"); - - // Network 13: Still Water Bypass (Original Language: LAD) - - "gBlendFiStillWaterByPass" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_StillWaterByPass" AND "Blender_Variables_Pers"."gWaterRecipe" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND NOT "Blender_Variables_Pers"."gCarboStillRecipe"; - - // Network 14: Manual Syrup Drain Valve Open - Operator Alarm (Original Language: LAD) - - "gHVP301_Open" := ("gSyrupRoomEn" AND "gBlenderCIPMode" AND "gIN_CIP_CIPRunning" AND "Procedure_Variables"."Blender_Run"."Running" AND NOT "gIN_HVP301_Aux") OR ("gSyrupRoomEn" AND "Procedure_Variables"."FTP302Line_Preparation"."Done" AND NOT "gIN_HVP301_Aux" AND NOT "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled" AND NOT "Procedure_Variables"."Syr_RunOut"."Done"); - - // Network 15: Manual Syrup Drain Valve Open - Operator Alarm (Original Language: LAD) - - "mHVM302_Dly"(IN := "gIN_HVM302_Aux", PT := S5T#1S); // TODO: Declarar "mHVM302_Dly" : TON; - "gHVM302_Open" := "mHVM302_Dly".Q; - - // Network 16: Maselli Control (Original Language: LAD) - - IF Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_MeterType", 6) THEN - Maselli_PA_Control(); - END_IF; - - // Network 17: mPDS Control (Original Language: LAD) - - IF Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_MeterType", 5) THEN - mPDS_PA_Control(); - END_IF; - - // Network 18: mPDS Syrup Control (Original Language: LAD) - - IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SyrBrixMeter" THEN - mPDS_SYR_PA_Control(); - END_IF; - - // Network 19: Co2 Analog Input (Original Language: LAD) - // GetProdBrixCO2_FromAnalogIn - // CALL "GetProdBrixCO2_FromAn" - // NOP 0 - - IF Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_MeterType", 3) THEN - GetProdBrixCO2_Anal_Inpt(); - END_IF; - - // Network 20: Quality (Original Language: LAD) - - ProductQuality(); - - // Network 21: Input Data (Original Language: LAD) - - "Input_Data"(); - - // Network 22: Sel Brix Source Check (Original Language: LAD) - - SelCheckBrixSource(); - - // Network 23: Check Water Cooling System Temperature (Original Language: LAD) - - IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InverterRecirPumpPPM306" THEN - CTRLCoolingSystem(); - END_IF; - - // Network 24: Tank Level (Original Language: LAD) - - TankLevel(); - - // Network 25: Production ONS (Original Language: LAD) - - "gProductionONS" := "gBlenderProdMode" AND NOT "mDelayPowerOnTmr" AND NOT "M19001"; - - // Network 26: Blender Prod Mode Init (Original Language: LAD) - - IF ("gProductionONS" AND NOT "Blender_Variables_Pers"."gBlenderStarted") OR ("Procedure_Variables"."Blender_Rinse"."ONS_Done" AND NOT "Blender_Variables_Pers"."gBlenderStarted") THEN - BlenderCtrl_ProdModeInit(); - END_IF; - - // Network 27: Rinse ONS (Original Language: LAD) - - "gRinseONS" := "HMI_Variables_Status"."System"."Blender_Prod_CIP" AND NOT "mDelayPowerOnTmr" AND NOT "M19002"; - - // Network 28: CIP ONS (Original Language: LAD) - - "gCIPONS" := "gBlenderCIPMode" AND NOT "mDelayPowerOnTmr" AND NOT "M19003"; - - // Network 29: CIp Mode Init (Original Language: LAD) - - IF "gCIPONS" THEN - BlenderCtrl_CIPModeInit(); - END_IF; - - // Network 30: Reset SPWords (Original Language: LAD) - - BlenderCtrl_ResetSPWord(); - - // Network 31: Blender Run Control (Original Language: LAD) - - BlenderRun__Control(); - - // Network 32: Tank Pressure Control (Original Language: LAD) - - Prod_Tank_PressCtrl(); - - // Network 33: Balaiage (Original Language: LAD) - - Baialage(); - - // Network 34: First Production (Original Language: LAD) - - "FirstProduction_Data"(); - - // Network 35: CIP MAIN Calling (Original Language: LAD) - - CIPMain(); - - // Network 36: Blender Rinse (Original Language: LAD) - - BlenderRinse(); - - // Network 37: Safeties (Original Language: LAD) - - Safeties(); - - // Network 38: Instrument Scanner (Original Language: LAD) - - Instrument_Scanner(); - - // Network 39: Vacuum Control (Original Language: LAD) - - VacuumCtrl(); - - // Network 40: Syrup Room Control (Original Language: LAD) - - SyrupRoomCtrl(); - - // Network 41: Blend Procedure Data (Original Language: LAD) - - IF NOT "mDelayPowerOnTmr" THEN - "Blender_Procedure Data"(); - END_IF; - - // Network 42: Pneumatic Valve Control (Original Language: LAD) - - Pneumatic_Valve_Ctrl(); - - // Network 43: Pumps Control (Original Language: LAD) - - PumpsControl(); - - // Network 44: Prod Report Manager (Original Language: LAD) - - IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Report" THEN - ProdReportManager(); - END_IF; - - // Network 45: Outputs (Original Language: LAD) - - Output(); - - // Network 46: SLIM BLOCK (Original Language: LAD) - - SLIM_Block(); - - // Network 47: Interlocking Panel 1 (Original Language: LAD) - - Interlocking_Panel_1(); - - // Network 48: Filler Control (Original Language: LAD) - - FillerControl(); - - // Network 49: Blender Ctrl Update PWORD (Original Language: LAD) - - BlenderCtrl_UpdatePWord(); - - // Network 50: ResetTotalizer (Original Language: LAD) - - "mResetTotalizerTmr"(IN := "gBlendResetTotalizer", PT := S5T#2S); // TODO: Declarar "mResetTotalizerTmr" : TP; - - // Network 51: ResetWaterTot (Original Language: LAD) - - "mResetFTN301TotTmr"(IN := "gFTN301_ResetTot" OR "mResetTotalizerTmr", PT := S5T#2S); // TODO: Declarar "mResetFTN301TotTmr" : TP; - "mResetWaterTot" := "mResetFTN301TotTmr".Q; - - // Network 52: Water VFM Reset Totalizer (Original Language: LAD) - - IF "gFTN301_ResetTot" THEN - "gFTN301_ResetTot" := FALSE; - END_IF; - - // Network 53: ResetCO2Tot (Original Language: LAD) - - "mResetFTP302TotTmr"(IN := "mResetTotalizerTmr" OR "gFTP302_ResetTot", PT := S5T#2S); // TODO: Declarar "mResetFTP302TotTmr" : TP; - "mResetSyrupTot" := "gSyrupRoomEn" AND "mResetFTP302TotTmr".Q; - - // Network 54: Syrup MFM Reset Totalizer (Original Language: LAD) - - IF "gFTP302_ResetTot" THEN - "gFTP302_ResetTot" := FALSE; - END_IF; - - // Network 55: ResetProductTot (Original Language: LAD) - - "mResetFTM303TotTmr"(IN := "mResetTotalizerTmr" OR "gFTM303_ResetTot", PT := S5T#2S); // TODO: Declarar "mResetFTM303TotTmr" : TP; - "mResetCO2Tot" := "mResetFTM303TotTmr".Q; - - // Network 56: CO2 MFM Reset Tot (Original Language: LAD) - - IF "gFTM303_ResetTot" THEN - "gFTM303_ResetTot" := FALSE; - END_IF; - - // Network 57: ResetCO2Tot (Original Language: LAD) - - "mResetProductTotTmr"(IN := "mResetTotalizerTmr" OR "gProductMFMResetTot", PT := S5T#2S); // TODO: Declarar "mResetProductTotTmr" : TP; - "mResetProductTot" := "mResetProductTotTmr".Q; - - // Network 58: Reset Totalizer (Original Language: LAD) - - IF "gProductMFMResetTot" THEN - "gProductMFMResetTot" := FALSE; - END_IF; - - // Network 59: Reset Totalizer (Original Language: LAD) - - IF "gBlendResetTotalizer" THEN - "gBlendResetTotalizer" := FALSE; - END_IF; - - // Network 60: Blender Ctrl Command (Original Language: LAD) - - IF NOT "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" THEN - BlenderCtrl_MFM_Command(); - END_IF; - - // Network 61: DP Global Diag (Original Language: LAD) - - CPU_DP_Global_Diag(); - - // Network 62: Profibus (Original Language: LAD) - - Profibus_Network(); - - // Network 63: Valve Fault (Original Language: LAD) - - ModValveFault(); - - // Network 64: All Auto (Original Language: LAD) - - IF ("M19011" AND NOT "HMI_Variables_Cmd"."Commands_From_HMI"."F7_DeviceControl"."Command") OR ("M19011" AND NOT "HMI_Variables_Cmd"."Commands_From_HMI"."F7_DeviceControl"."Enable") THEN - BlenderCtrl_All_Auto(); - END_IF; - "HMI_Variables_Cmd"."Commands_From_HMI"."F7_DeviceControl"."Light" := "HMI_Variables_Cmd"."Commands_From_HMI"."F7_DeviceControl"."Command" AND "HMI_Variables_Cmd"."Commands_From_HMI"."F7_DeviceControl"."Enable"; - - // Network 65: Ctrl HMI Manual Active (Original Language: LAD) - - BlenderCtrl_ManualActive(); - - // Network 66: Mod Copy Recipe (Original Language: LAD) - - "mAux_FP_M700_1" := "HMI_Variables_Cmd"."Recipe"."Main_Page" AND NOT "mFP_Recip_Main_Page"; - "mFP_Recip_Main_Page" := "HMI_Variables_Cmd"."Recipe"."Main_Page"; - "T_Pulse_Recipe_Edit"(IN := "HMI_Variables_Cmd"."Recipe"."Main_Page" AND "HMI_Variables_Cmd"."Recipe"."Edit", PT := S5T#500ms); // TODO: Declarar "T_Pulse_Recipe_Edit" : TP; - IF "T_Pulse_Recipe_Edit" AND "T_Pulse_Recipe_Edit".Q THEN - "HMI_Variables_Cmd"."Recipe"."Edit" := FALSE; - END_IF; - IF "mAux_FP_M700_1" THEN - "HMI_Variables_Cmd"."Recipe"."Edit" := TRUE; - END_IF; - - // Network 67: to HMI - Recipe Management (Original Language: LAD) - - IF "AUX TRUE" THEN - "RecipeManagement_Data"(); - END_IF; - - // Network 68: Recipe Calculation (Original Language: LAD) - - RecipeCalculation(); - -END_FUNCTION_BLOCK diff --git a/BlenderPIDCtrl__Loop.xml b/BlenderPIDCtrl__Loop.xml deleted file mode 100644 index df42af2..0000000 --- a/BlenderPIDCtrl__Loop.xml +++ /dev/null @@ -1,1711 +0,0 @@ - - - - - - false - TASK1 - -
-
-
-
- - - Time 1 Enable - - - - - Time 2 Enable - - - - - Time 3 Enable - - - - - Time 4 Enable - - - - - - - - true - - - - - true - - - - - true - - - - - true - - - - - true - - -
-
-
- - Standard - BlenderPIDCtrl__Loop - - 1729 - LAD - false - - - - - - - it-IT - TASK1 PID - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Read Analoc Inputs - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - Int - 1 - - - - - - - - - - - - - - - Int - 2 - - - - - - - - - - - - - - - Int - 3 - - - - - - - - - - - - - - - Int - 4 - - - - - - - - - - - - - - - Int - 5 - - - - - - - - - - - - - - - Int - 6 - - - - - - - - - - Int - - - - Int - - - - Int - - - - Int - - - - Int - - - - Int - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - PID Control Time Bit (300ms) - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - MIX - OB35 scan counter - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - Water PID -Syrup PID -CO2 PID - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - PID Call - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - PID Product Tank Pressure - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Pid Call - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Filling Head - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - CIp Heating PID - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Write Analog Outputs - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - it-IT - PID CTRL LOOP - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - \ No newline at end of file diff --git a/BlenderPIDCtrl__Loop_simplified.json b/BlenderPIDCtrl__Loop_simplified.json deleted file mode 100644 index d821711..0000000 --- a/BlenderPIDCtrl__Loop_simplified.json +++ /dev/null @@ -1,1222 +0,0 @@ -{ - "block_name": "BlenderPIDCtrl__Loop", - "block_number": 1729, - "language": "LAD", - "block_comment": "TASK1 PID", - "interface": { - "Static": [ - { - "name": "PID_1_300ms", - "datatype": "Bool" - }, - { - "name": "PID_2_300ms", - "datatype": "Bool" - }, - { - "name": "PID_3_300ms", - "datatype": "Bool" - }, - { - "name": "PID_4_300ms", - "datatype": "Bool" - }, - { - "name": "PID_5_300ms", - "datatype": "Bool" - }, - { - "name": "PID_6_300ms", - "datatype": "Bool" - }, - { - "name": "Flow_Meter_Error_RETVAL", - "datatype": "Real" - }, - { - "name": "PID_FF_Calc", - "datatype": "\"BlenderPID_PIDFFCalc\"" - }, - { - "name": "PID_Blending_Fault", - "datatype": "\"BlenderPID_BlendingFault\"" - }, - { - "name": "PID_Save_Integral", - "datatype": "\"BlenderPIDCtrl_SaveInteg\"" - }, - { - "name": "PID_Monitor", - "datatype": "\"BlenderPIDCtrl_Monitor\"" - }, - { - "name": "Read_AnalogInput", - "datatype": "\"BlenderPIDCtrl_ReadAnIn\"" - } - ] - }, - "networks": [ - { - "id": "9", - "title": "Read Analoc Inputs", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call", - "block_name": "BlenderPIDCtrl_ReadAnIn", - "block_type": "FB", - "instance_db": "\"Read_AnalogInput\"", - "instance_scope": "LocalVariable", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "1A", - "title": "MIX - OB35 scan counter", - "comment": "PID Control Time Bit (300ms)", - "logic": [ - { - "instruction_uid": "40", - "uid": "40", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "powerrail" - }, - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"AUX TRUE\"" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "41", - "uid": "41", - "type": "Eq", - "template_values": { - "SrcType": "Type" - }, - "negated_pins": {}, - "inputs": { - "pre": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "40", - "source_pin": "out" - }, - "in1": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"MW1968\"" - }, - "in2": { - "uid": "23", - "scope": "LiteralConstant", - "type": "constant", - "datatype": "Int", - "value": 1 - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "42", - "uid": "42", - "type": "Coil", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "connection", - "source_instruction_type": "Eq", - "source_instruction_uid": "41", - "source_pin": "out" - }, - "operand": { - "uid": "24", - "scope": "LocalVariable", - "type": "variable", - "name": "\"PID_1_300ms\"" - } - }, - "outputs": {} - }, - { - "instruction_uid": "43", - "uid": "43", - "type": "Eq", - "template_values": { - "SrcType": "Type" - }, - "negated_pins": {}, - "inputs": { - "pre": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "40", - "source_pin": "out" - }, - "in1": { - "uid": "25", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"MW1968\"" - }, - "in2": { - "uid": "26", - "scope": "LiteralConstant", - "type": "constant", - "datatype": "Int", - "value": 2 - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "44", - "uid": "44", - "type": "Coil", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "connection", - "source_instruction_type": "Eq", - "source_instruction_uid": "43", - "source_pin": "out" - }, - "operand": { - "uid": "27", - "scope": "LocalVariable", - "type": "variable", - "name": "\"PID_2_300ms\"" - } - }, - "outputs": {} - }, - { - "instruction_uid": "45", - "uid": "45", - "type": "Eq", - "template_values": { - "SrcType": "Type" - }, - "negated_pins": {}, - "inputs": { - "pre": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "40", - "source_pin": "out" - }, - "in1": { - "uid": "28", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"MW1968\"" - }, - "in2": { - "uid": "29", - "scope": "LiteralConstant", - "type": "constant", - "datatype": "Int", - "value": 3 - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "46", - "uid": "46", - "type": "Coil", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "connection", - "source_instruction_type": "Eq", - "source_instruction_uid": "45", - "source_pin": "out" - }, - "operand": { - "uid": "30", - "scope": "LocalVariable", - "type": "variable", - "name": "\"PID_3_300ms\"" - } - }, - "outputs": {} - }, - { - "instruction_uid": "47", - "uid": "47", - "type": "Eq", - "template_values": { - "SrcType": "Type" - }, - "negated_pins": {}, - "inputs": { - "pre": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "40", - "source_pin": "out" - }, - "in1": { - "uid": "31", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"MW1968\"" - }, - "in2": { - "uid": "32", - "scope": "LiteralConstant", - "type": "constant", - "datatype": "Int", - "value": 4 - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "48", - "uid": "48", - "type": "Coil", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "connection", - "source_instruction_type": "Eq", - "source_instruction_uid": "47", - "source_pin": "out" - }, - "operand": { - "uid": "33", - "scope": "LocalVariable", - "type": "variable", - "name": "\"PID_4_300ms\"" - } - }, - "outputs": {} - }, - { - "instruction_uid": "49", - "uid": "49", - "type": "Eq", - "template_values": { - "SrcType": "Type" - }, - "negated_pins": {}, - "inputs": { - "pre": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "40", - "source_pin": "out" - }, - "in1": { - "uid": "34", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"MW1968\"" - }, - "in2": { - "uid": "35", - "scope": "LiteralConstant", - "type": "constant", - "datatype": "Int", - "value": 5 - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "50", - "uid": "50", - "type": "Coil", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "connection", - "source_instruction_type": "Eq", - "source_instruction_uid": "49", - "source_pin": "out" - }, - "operand": { - "uid": "36", - "scope": "LocalVariable", - "type": "variable", - "name": "\"PID_5_300ms\"" - } - }, - "outputs": {} - }, - { - "instruction_uid": "51", - "uid": "51", - "type": "Eq", - "template_values": { - "SrcType": "Type" - }, - "negated_pins": {}, - "inputs": { - "pre": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "40", - "source_pin": "out" - }, - "in1": { - "uid": "37", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"MW1968\"" - }, - "in2": { - "uid": "38", - "scope": "LiteralConstant", - "type": "constant", - "datatype": "Int", - "value": 6 - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "52", - "uid": "52", - "type": "Coil", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "connection", - "source_instruction_type": "Eq", - "source_instruction_uid": "51", - "source_pin": "out" - }, - "operand": { - "uid": "39", - "scope": "LocalVariable", - "type": "variable", - "name": "\"PID_6_300ms\"" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "2B", - "title": "PID Call", - "comment": "Water PID\nSyrup PID\nCO2 PID", - "logic": [ - { - "instruction_uid": "27", - "uid": "27", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "powerrail" - }, - "operand": { - "uid": "21", - "scope": "LocalVariable", - "type": "variable", - "name": "\"PID_1_300ms\"" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "28", - "uid": "28", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - }, - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_PID\".\"RMM301\".\"Config\"" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "29", - "uid": "29", - "type": "Call", - "block_name": "PID_RMM301", - "block_type": "FB", - "instance_db": "\"PID_RMM301_Data\"", - "instance_scope": "GlobalVariable", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "28", - "source_pin": "out" - } - }, - "outputs": {} - }, - { - "instruction_uid": "31", - "uid": "31", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - }, - "operand": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_PID\".\"RMP302\".\"Config\"" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "32", - "uid": "32", - "type": "Call", - "block_name": "PID_RMP302", - "block_type": "FB", - "instance_db": "\"PID_RMP302_Data\"", - "instance_scope": "GlobalVariable", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "31", - "source_pin": "out" - } - }, - "outputs": {} - }, - { - "instruction_uid": "34", - "uid": "34", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - }, - "operand": { - "uid": "24", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_PID\".\"RMM303\".\"Config\"" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "35", - "uid": "35", - "type": "Call", - "block_name": "PID_RMM303", - "block_type": "FB", - "instance_db": "\"PID_RMM303_Data\"", - "instance_scope": "GlobalVariable", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "34", - "source_pin": "out" - } - }, - "outputs": {} - }, - { - "instruction_uid": "37", - "uid": "37", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - }, - "operand": { - "uid": "25", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_PID\".\"RMM304\".\"Config\"" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "38", - "uid": "38", - "type": "Call", - "block_name": "PID_RMM304", - "block_type": "FB", - "instance_db": "\"PID_RMM304_Data\"", - "instance_scope": "GlobalVariable", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "37", - "source_pin": "out" - } - }, - "outputs": {} - }, - { - "instruction_uid": "40", - "uid": "40", - "type": "Call", - "block_name": "BlenderPID_PIDFFCalc", - "block_type": "FB", - "instance_db": "\"PID_FF_Calc\"", - "instance_scope": "LocalVariable", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - } - }, - "outputs": {} - }, - { - "instruction_uid": "42", - "uid": "42", - "type": "Call", - "block_name": "BlenderPID_BlendingFault", - "block_type": "FB", - "instance_db": "\"PID_Blending_Fault\"", - "instance_scope": "LocalVariable", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - } - }, - "outputs": {} - }, - { - "instruction_uid": "44", - "uid": "44", - "type": "Call", - "block_name": "BlenderPID_FlowMeterErro", - "block_type": "FC", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - } - }, - "outputs": {} - }, - { - "instruction_uid": "45", - "uid": "45", - "type": "Call", - "block_name": "BlenderPIDCtrl_Monitor", - "block_type": "FB", - "instance_db": "\"PID_Monitor\"", - "instance_scope": "LocalVariable", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - } - }, - "outputs": {} - }, - { - "instruction_uid": "47", - "uid": "47", - "type": "Call", - "block_name": "BlenderPIDCtrl_SaveInteg", - "block_type": "FB", - "instance_db": "\"PID_Save_Integral\"", - "instance_scope": "LocalVariable", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - } - }, - "outputs": {} - }, - { - "instruction_uid": "49", - "uid": "49", - "type": "Call", - "block_name": "BlenderPIDCtrl_SaveValve", - "block_type": "FC", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "3C", - "title": "PID Product Tank Pressure", - "comment": "", - "logic": [ - { - "instruction_uid": "23", - "uid": "23", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "powerrail" - }, - "operand": { - "uid": "21", - "scope": "LocalVariable", - "type": "variable", - "name": "\"PID_2_300ms\"" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "24", - "uid": "24", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "23", - "source_pin": "out" - }, - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_PID\".\"RVM301\".\"Config\"" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "25", - "uid": "25", - "type": "Call", - "block_name": "PID_RVM301", - "block_type": "FB", - "instance_db": "\"PID_RVM301_Data\"", - "instance_scope": "GlobalVariable", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "24", - "source_pin": "out" - } - }, - "outputs": {} - }, - { - "instruction_uid": "27", - "uid": "27", - "type": "Call", - "block_name": "BlenderPIDCtrl_PresRelea", - "block_type": "FC", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "24", - "source_pin": "out" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "4D", - "title": "Pid Call", - "comment": "", - "logic": [ - { - "instruction_uid": "26", - "uid": "26", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "powerrail" - }, - "operand": { - "uid": "21", - "scope": "LocalVariable", - "type": "variable", - "name": "\"PID_4_300ms\"" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "27", - "uid": "27", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "26", - "source_pin": "out" - }, - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_PID\".\"RVM319_PRD\".\"Config\"" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "28", - "uid": "28", - "type": "Call", - "block_name": "PID_RVM319_PRD", - "block_type": "FB", - "instance_db": "\"PID_RVM319_Data\"", - "instance_scope": "GlobalVariable", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - } - }, - "outputs": {} - }, - { - "instruction_uid": "30", - "uid": "30", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "26", - "source_pin": "out" - }, - "operand": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_PID\".\"RVP303\".\"Config\"" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "31", - "uid": "31", - "type": "Call", - "block_name": "PID_RVP303", - "block_type": "FB", - "instance_db": "\"PID_RVP303_Data\"", - "instance_scope": "GlobalVariable", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "30", - "source_pin": "out" - } - }, - "outputs": {} - }, - { - "instruction_uid": "33", - "uid": "33", - "type": "Contact", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "26", - "source_pin": "out" - }, - "operand": { - "uid": "24", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_PID\".\"RVN302\".\"ConfigPID\"" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "34", - "uid": "34", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "33", - "source_pin": "out" - }, - "operand": { - "uid": "25", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_PID\".\"RVN302\".\"Config\"" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "35", - "uid": "35", - "type": "Call", - "block_name": "PID_RVN302", - "block_type": "FB", - "instance_db": "\"PID_RVN302_Data\"", - "instance_scope": "GlobalVariable", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "34", - "source_pin": "out" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "5E", - "title": "Filling Head", - "comment": "", - "logic": [ - { - "instruction_uid": "24", - "uid": "24", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "powerrail" - }, - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_BlendFillSystem\"" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "25", - "uid": "25", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "24", - "source_pin": "out" - }, - "operand": { - "uid": "22", - "scope": "LocalVariable", - "type": "variable", - "name": "\"PID_5_300ms\"" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "26", - "uid": "26", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "25", - "source_pin": "out" - }, - "operand": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_PID\".\"PPM303\".\"Config\"" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "27", - "uid": "27", - "type": "Call", - "block_name": "PID_Filling_Head", - "block_type": "FB", - "instance_db": "\"PID_Filling_Head_Data\"", - "instance_scope": "GlobalVariable", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "26", - "source_pin": "out" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "6F", - "title": "CIp Heating PID", - "comment": "", - "logic": [ - { - "instruction_uid": "23", - "uid": "23", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "powerrail" - }, - "operand": { - "uid": "21", - "scope": "LocalVariable", - "type": "variable", - "name": "\"PID_6_300ms\"" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "24", - "uid": "24", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "23", - "source_pin": "out" - }, - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_PID\".\"RVS318\".\"Config\"" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "25", - "uid": "25", - "type": "Call", - "block_name": "PID_RVS318", - "block_type": "FB", - "instance_db": "\"PID_RVS318_Data\"", - "instance_scope": "GlobalVariable", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "24", - "source_pin": "out" - } - }, - "outputs": {} - } - ], - "language": "LAD" - }, - { - "id": "80", - "title": "Write Analog Outputs", - "comment": "", - "logic": [ - { - "instruction_uid": "22", - "uid": "22", - "type": "Contact", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "powerrail" - }, - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"AUX TRUE\"" - } - }, - "outputs": { - "out": [] - } - }, - { - "instruction_uid": "23", - "uid": "23", - "type": "Call", - "block_name": "BlenderPIDCtrl_WriteAnOu", - "block_type": "FC", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "22", - "source_pin": "out" - } - }, - "outputs": {} - } - ], - "language": "LAD" - } - ] -} \ No newline at end of file diff --git a/BlenderPIDCtrl__Loop_simplified_processed.json b/BlenderPIDCtrl__Loop_simplified_processed.json deleted file mode 100644 index 211aaed..0000000 --- a/BlenderPIDCtrl__Loop_simplified_processed.json +++ /dev/null @@ -1,1280 +0,0 @@ -{ - "block_name": "BlenderPIDCtrl__Loop", - "block_number": 1729, - "language": "LAD", - "block_comment": "TASK1 PID", - "interface": { - "Static": [ - { - "name": "PID_1_300ms", - "datatype": "Bool" - }, - { - "name": "PID_2_300ms", - "datatype": "Bool" - }, - { - "name": "PID_3_300ms", - "datatype": "Bool" - }, - { - "name": "PID_4_300ms", - "datatype": "Bool" - }, - { - "name": "PID_5_300ms", - "datatype": "Bool" - }, - { - "name": "PID_6_300ms", - "datatype": "Bool" - }, - { - "name": "Flow_Meter_Error_RETVAL", - "datatype": "Real" - }, - { - "name": "PID_FF_Calc", - "datatype": "\"BlenderPID_PIDFFCalc\"" - }, - { - "name": "PID_Blending_Fault", - "datatype": "\"BlenderPID_BlendingFault\"" - }, - { - "name": "PID_Save_Integral", - "datatype": "\"BlenderPIDCtrl_SaveInteg\"" - }, - { - "name": "PID_Monitor", - "datatype": "\"BlenderPIDCtrl_Monitor\"" - }, - { - "name": "Read_AnalogInput", - "datatype": "\"BlenderPIDCtrl_ReadAnIn\"" - } - ] - }, - "networks": [ - { - "id": "9", - "title": "Read Analoc Inputs", - "comment": "", - "logic": [ - { - "instruction_uid": "21", - "uid": "21", - "type": "Call_FB_sympy_processed", - "block_name": "BlenderPIDCtrl_ReadAnIn", - "block_type": "FB", - "instance_db": "\"Read_AnalogInput\"", - "instance_scope": "LocalVariable", - "inputs": { - "en": { - "type": "powerrail" - } - }, - "outputs": {}, - "scl": "\"Read_AnalogInput\"();" - } - ], - "language": "LAD" - }, - { - "id": "1A", - "title": "MIX - OB35 scan counter", - "comment": "PID Control Time Bit (300ms)", - "logic": [ - { - "instruction_uid": "40", - "uid": "40", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "powerrail" - }, - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"AUX TRUE\"" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v0_" - }, - { - "instruction_uid": "41", - "uid": "41", - "type": "Eq_sympy_processed", - "template_values": { - "SrcType": "Type" - }, - "negated_pins": {}, - "inputs": { - "pre": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "40", - "source_pin": "out" - }, - "in1": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"MW1968\"" - }, - "in2": { - "uid": "23", - "scope": "LiteralConstant", - "type": "constant", - "datatype": "Int", - "value": 1 - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy EQ: Eq(v18_, 1)" - }, - { - "instruction_uid": "42", - "uid": "42", - "type": "Coil_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "connection", - "source_instruction_type": "Eq", - "source_instruction_uid": "41", - "source_pin": "out" - }, - "operand": { - "uid": "24", - "scope": "LocalVariable", - "type": "variable", - "name": "\"PID_1_300ms\"" - } - }, - "outputs": {}, - "scl": "\"PID_1_300ms\" := Eq(\"MW1968\", 1);" - }, - { - "instruction_uid": "43", - "uid": "43", - "type": "Eq_sympy_processed", - "template_values": { - "SrcType": "Type" - }, - "negated_pins": {}, - "inputs": { - "pre": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "40", - "source_pin": "out" - }, - "in1": { - "uid": "25", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"MW1968\"" - }, - "in2": { - "uid": "26", - "scope": "LiteralConstant", - "type": "constant", - "datatype": "Int", - "value": 2 - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy EQ: Eq(v18_, 2)" - }, - { - "instruction_uid": "44", - "uid": "44", - "type": "Coil_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "connection", - "source_instruction_type": "Eq", - "source_instruction_uid": "43", - "source_pin": "out" - }, - "operand": { - "uid": "27", - "scope": "LocalVariable", - "type": "variable", - "name": "\"PID_2_300ms\"" - } - }, - "outputs": {}, - "scl": "\"PID_2_300ms\" := Eq(\"MW1968\", 2);" - }, - { - "instruction_uid": "45", - "uid": "45", - "type": "Eq_sympy_processed", - "template_values": { - "SrcType": "Type" - }, - "negated_pins": {}, - "inputs": { - "pre": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "40", - "source_pin": "out" - }, - "in1": { - "uid": "28", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"MW1968\"" - }, - "in2": { - "uid": "29", - "scope": "LiteralConstant", - "type": "constant", - "datatype": "Int", - "value": 3 - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy EQ: Eq(v18_, 3)" - }, - { - "instruction_uid": "46", - "uid": "46", - "type": "Coil_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "connection", - "source_instruction_type": "Eq", - "source_instruction_uid": "45", - "source_pin": "out" - }, - "operand": { - "uid": "30", - "scope": "LocalVariable", - "type": "variable", - "name": "\"PID_3_300ms\"" - } - }, - "outputs": {}, - "scl": "\"PID_3_300ms\" := Eq(\"MW1968\", 3);" - }, - { - "instruction_uid": "47", - "uid": "47", - "type": "Eq_sympy_processed", - "template_values": { - "SrcType": "Type" - }, - "negated_pins": {}, - "inputs": { - "pre": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "40", - "source_pin": "out" - }, - "in1": { - "uid": "31", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"MW1968\"" - }, - "in2": { - "uid": "32", - "scope": "LiteralConstant", - "type": "constant", - "datatype": "Int", - "value": 4 - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy EQ: Eq(v18_, 4)" - }, - { - "instruction_uid": "48", - "uid": "48", - "type": "Coil_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "connection", - "source_instruction_type": "Eq", - "source_instruction_uid": "47", - "source_pin": "out" - }, - "operand": { - "uid": "33", - "scope": "LocalVariable", - "type": "variable", - "name": "\"PID_4_300ms\"" - } - }, - "outputs": {}, - "scl": "\"PID_4_300ms\" := Eq(\"MW1968\", 4);" - }, - { - "instruction_uid": "49", - "uid": "49", - "type": "Eq_sympy_processed", - "template_values": { - "SrcType": "Type" - }, - "negated_pins": {}, - "inputs": { - "pre": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "40", - "source_pin": "out" - }, - "in1": { - "uid": "34", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"MW1968\"" - }, - "in2": { - "uid": "35", - "scope": "LiteralConstant", - "type": "constant", - "datatype": "Int", - "value": 5 - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy EQ: Eq(v18_, 5)" - }, - { - "instruction_uid": "50", - "uid": "50", - "type": "Coil_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "connection", - "source_instruction_type": "Eq", - "source_instruction_uid": "49", - "source_pin": "out" - }, - "operand": { - "uid": "36", - "scope": "LocalVariable", - "type": "variable", - "name": "\"PID_5_300ms\"" - } - }, - "outputs": {}, - "scl": "\"PID_5_300ms\" := Eq(\"MW1968\", 5);" - }, - { - "instruction_uid": "51", - "uid": "51", - "type": "Eq_sympy_processed", - "template_values": { - "SrcType": "Type" - }, - "negated_pins": {}, - "inputs": { - "pre": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "40", - "source_pin": "out" - }, - "in1": { - "uid": "37", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"MW1968\"" - }, - "in2": { - "uid": "38", - "scope": "LiteralConstant", - "type": "constant", - "datatype": "Int", - "value": 6 - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy EQ: Eq(v18_, 6)" - }, - { - "instruction_uid": "52", - "uid": "52", - "type": "Coil_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "connection", - "source_instruction_type": "Eq", - "source_instruction_uid": "51", - "source_pin": "out" - }, - "operand": { - "uid": "39", - "scope": "LocalVariable", - "type": "variable", - "name": "\"PID_6_300ms\"" - } - }, - "outputs": {}, - "scl": "\"PID_6_300ms\" := Eq(\"MW1968\", 6);" - } - ], - "language": "LAD" - }, - { - "id": "2B", - "title": "PID Call", - "comment": "Water PID\nSyrup PID\nCO2 PID", - "logic": [ - { - "instruction_uid": "27", - "uid": "27", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "powerrail" - }, - "operand": { - "uid": "21", - "scope": "LocalVariable", - "type": "variable", - "name": "\"PID_1_300ms\"" - } - }, - "outputs": { - "out": [] - }, - "scl": "IF \"PID_1_300ms\" THEN\n \"PID_FF_Calc\"();\n \"PID_Blending_Fault\"();\n BlenderPID_FlowMeterErro();\n \"PID_Monitor\"();\n \"PID_Save_Integral\"();\n BlenderPIDCtrl_SaveValve();\nEND_IF;" - }, - { - "instruction_uid": "28", - "uid": "28", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - }, - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_PID\".\"RMM301\".\"Config\"" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v1_ & v2_" - }, - { - "instruction_uid": "29", - "uid": "29", - "type": "Call_FB_sympy_processed", - "block_name": "PID_RMM301", - "block_type": "FB", - "instance_db": "\"PID_RMM301_Data\"", - "instance_scope": "GlobalVariable", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "28", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "IF \"PID_1_300ms\" AND \"HMI_PID\".\"RMM301\".\"Config\" THEN\n \"PID_RMM301_Data\"();\nEND_IF;" - }, - { - "instruction_uid": "31", - "uid": "31", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - }, - "operand": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_PID\".\"RMP302\".\"Config\"" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v1_ & v3_" - }, - { - "instruction_uid": "32", - "uid": "32", - "type": "Call_FB_sympy_processed", - "block_name": "PID_RMP302", - "block_type": "FB", - "instance_db": "\"PID_RMP302_Data\"", - "instance_scope": "GlobalVariable", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "31", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "IF \"PID_1_300ms\" AND \"HMI_PID\".\"RMP302\".\"Config\" THEN\n \"PID_RMP302_Data\"();\nEND_IF;" - }, - { - "instruction_uid": "34", - "uid": "34", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - }, - "operand": { - "uid": "24", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_PID\".\"RMM303\".\"Config\"" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v1_ & v4_" - }, - { - "instruction_uid": "35", - "uid": "35", - "type": "Call_FB_sympy_processed", - "block_name": "PID_RMM303", - "block_type": "FB", - "instance_db": "\"PID_RMM303_Data\"", - "instance_scope": "GlobalVariable", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "34", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "IF \"PID_1_300ms\" AND \"HMI_PID\".\"RMM303\".\"Config\" THEN\n \"PID_RMM303_Data\"();\nEND_IF;" - }, - { - "instruction_uid": "37", - "uid": "37", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - }, - "operand": { - "uid": "25", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_PID\".\"RMM304\".\"Config\"" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v1_ & v5_" - }, - { - "instruction_uid": "38", - "uid": "38", - "type": "Call_FB_sympy_processed", - "block_name": "PID_RMM304", - "block_type": "FB", - "instance_db": "\"PID_RMM304_Data\"", - "instance_scope": "GlobalVariable", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "37", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "IF \"PID_1_300ms\" AND \"HMI_PID\".\"RMM304\".\"Config\" THEN\n \"PID_RMM304_Data\"();\nEND_IF;" - }, - { - "instruction_uid": "40", - "uid": "40", - "type": "Call_FB_sympy_processed", - "block_name": "BlenderPID_PIDFFCalc", - "block_type": "FB", - "instance_db": "\"PID_FF_Calc\"", - "instance_scope": "LocalVariable", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "// Logic included in grouped IF (by UID 27)", - "grouped": true - }, - { - "instruction_uid": "42", - "uid": "42", - "type": "Call_FB_sympy_processed", - "block_name": "BlenderPID_BlendingFault", - "block_type": "FB", - "instance_db": "\"PID_Blending_Fault\"", - "instance_scope": "LocalVariable", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "// Logic included in grouped IF (by UID 27)", - "grouped": true - }, - { - "instruction_uid": "44", - "uid": "44", - "type": "Call_FC_sympy_processed", - "block_name": "BlenderPID_FlowMeterErro", - "block_type": "FC", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "// Logic included in grouped IF (by UID 27)", - "grouped": true - }, - { - "instruction_uid": "45", - "uid": "45", - "type": "Call_FB_sympy_processed", - "block_name": "BlenderPIDCtrl_Monitor", - "block_type": "FB", - "instance_db": "\"PID_Monitor\"", - "instance_scope": "LocalVariable", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "// Logic included in grouped IF (by UID 27)", - "grouped": true - }, - { - "instruction_uid": "47", - "uid": "47", - "type": "Call_FB_sympy_processed", - "block_name": "BlenderPIDCtrl_SaveInteg", - "block_type": "FB", - "instance_db": "\"PID_Save_Integral\"", - "instance_scope": "LocalVariable", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "// Logic included in grouped IF (by UID 27)", - "grouped": true - }, - { - "instruction_uid": "49", - "uid": "49", - "type": "Call_FC_sympy_processed", - "block_name": "BlenderPIDCtrl_SaveValve", - "block_type": "FC", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "// Logic included in grouped IF (by UID 27)", - "grouped": true - } - ], - "language": "LAD" - }, - { - "id": "3C", - "title": "PID Product Tank Pressure", - "comment": "", - "logic": [ - { - "instruction_uid": "23", - "uid": "23", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "powerrail" - }, - "operand": { - "uid": "21", - "scope": "LocalVariable", - "type": "variable", - "name": "\"PID_2_300ms\"" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v6_" - }, - { - "instruction_uid": "24", - "uid": "24", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "23", - "source_pin": "out" - }, - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_PID\".\"RVM301\".\"Config\"" - } - }, - "outputs": { - "out": [] - }, - "scl": "IF \"PID_2_300ms\" AND \"HMI_PID\".\"RVM301\".\"Config\" THEN\n \"PID_RVM301_Data\"();\n BlenderPIDCtrl_PresRelea();\nEND_IF;" - }, - { - "instruction_uid": "25", - "uid": "25", - "type": "Call_FB_sympy_processed", - "block_name": "PID_RVM301", - "block_type": "FB", - "instance_db": "\"PID_RVM301_Data\"", - "instance_scope": "GlobalVariable", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "24", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "// Logic included in grouped IF (by UID 24)", - "grouped": true - }, - { - "instruction_uid": "27", - "uid": "27", - "type": "Call_FC_sympy_processed", - "block_name": "BlenderPIDCtrl_PresRelea", - "block_type": "FC", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "24", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "// Logic included in grouped IF (by UID 24)", - "grouped": true - } - ], - "language": "LAD" - }, - { - "id": "4D", - "title": "Pid Call", - "comment": "", - "logic": [ - { - "instruction_uid": "26", - "uid": "26", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "powerrail" - }, - "operand": { - "uid": "21", - "scope": "LocalVariable", - "type": "variable", - "name": "\"PID_4_300ms\"" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v8_" - }, - { - "instruction_uid": "27", - "uid": "27", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "26", - "source_pin": "out" - }, - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_PID\".\"RVM319_PRD\".\"Config\"" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v8_ & v9_" - }, - { - "instruction_uid": "28", - "uid": "28", - "type": "Call_FB_sympy_processed", - "block_name": "PID_RVM319_PRD", - "block_type": "FB", - "instance_db": "\"PID_RVM319_Data\"", - "instance_scope": "GlobalVariable", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "27", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "IF \"PID_4_300ms\" AND \"HMI_PID\".\"RVM319_PRD\".\"Config\" THEN\n \"PID_RVM319_Data\"();\nEND_IF;" - }, - { - "instruction_uid": "30", - "uid": "30", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "26", - "source_pin": "out" - }, - "operand": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_PID\".\"RVP303\".\"Config\"" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v10_ & v8_" - }, - { - "instruction_uid": "31", - "uid": "31", - "type": "Call_FB_sympy_processed", - "block_name": "PID_RVP303", - "block_type": "FB", - "instance_db": "\"PID_RVP303_Data\"", - "instance_scope": "GlobalVariable", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "30", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "IF \"HMI_PID\".\"RVP303\".\"Config\" AND \"PID_4_300ms\" THEN\n \"PID_RVP303_Data\"();\nEND_IF;" - }, - { - "instruction_uid": "33", - "uid": "33", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": { - "operand": true - }, - "inputs": { - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "26", - "source_pin": "out" - }, - "operand": { - "uid": "24", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_PID\".\"RVN302\".\"ConfigPID\"" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v8_ & ~v11_" - }, - { - "instruction_uid": "34", - "uid": "34", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "33", - "source_pin": "out" - }, - "operand": { - "uid": "25", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_PID\".\"RVN302\".\"Config\"" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v12_ & v8_ & ~v11_" - }, - { - "instruction_uid": "35", - "uid": "35", - "type": "Call_FB_sympy_processed", - "block_name": "PID_RVN302", - "block_type": "FB", - "instance_db": "\"PID_RVN302_Data\"", - "instance_scope": "GlobalVariable", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "34", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "IF \"HMI_PID\".\"RVN302\".\"Config\" AND \"PID_4_300ms\" AND NOT \"HMI_PID\".\"RVN302\".\"ConfigPID\" THEN\n \"PID_RVN302_Data\"();\nEND_IF;" - } - ], - "language": "LAD" - }, - { - "id": "5E", - "title": "Filling Head", - "comment": "", - "logic": [ - { - "instruction_uid": "24", - "uid": "24", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "powerrail" - }, - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_BlendFillSystem\"" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v13_" - }, - { - "instruction_uid": "25", - "uid": "25", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "24", - "source_pin": "out" - }, - "operand": { - "uid": "22", - "scope": "LocalVariable", - "type": "variable", - "name": "\"PID_5_300ms\"" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v13_ & v14_" - }, - { - "instruction_uid": "26", - "uid": "26", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "25", - "source_pin": "out" - }, - "operand": { - "uid": "23", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_PID\".\"PPM303\".\"Config\"" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v13_ & v14_ & v15_" - }, - { - "instruction_uid": "27", - "uid": "27", - "type": "Call_FB_sympy_processed", - "block_name": "PID_Filling_Head", - "block_type": "FB", - "instance_db": "\"PID_Filling_Head_Data\"", - "instance_scope": "GlobalVariable", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "26", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "IF \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_BlendFillSystem\" AND \"PID_5_300ms\" AND \"HMI_PID\".\"PPM303\".\"Config\" THEN\n \"PID_Filling_Head_Data\"();\nEND_IF;" - } - ], - "language": "LAD" - }, - { - "id": "6F", - "title": "CIp Heating PID", - "comment": "", - "logic": [ - { - "instruction_uid": "23", - "uid": "23", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "powerrail" - }, - "operand": { - "uid": "21", - "scope": "LocalVariable", - "type": "variable", - "name": "\"PID_6_300ms\"" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v16_" - }, - { - "instruction_uid": "24", - "uid": "24", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "23", - "source_pin": "out" - }, - "operand": { - "uid": "22", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"HMI_PID\".\"RVS318\".\"Config\"" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v16_ & v17_" - }, - { - "instruction_uid": "25", - "uid": "25", - "type": "Call_FB_sympy_processed", - "block_name": "PID_RVS318", - "block_type": "FB", - "instance_db": "\"PID_RVS318_Data\"", - "instance_scope": "GlobalVariable", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "24", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "IF \"PID_6_300ms\" AND \"HMI_PID\".\"RVS318\".\"Config\" THEN\n \"PID_RVS318_Data\"();\nEND_IF;" - } - ], - "language": "LAD" - }, - { - "id": "80", - "title": "Write Analog Outputs", - "comment": "", - "logic": [ - { - "instruction_uid": "22", - "uid": "22", - "type": "Contact_sympy_processed", - "template_values": {}, - "negated_pins": {}, - "inputs": { - "in": { - "type": "powerrail" - }, - "operand": { - "uid": "21", - "scope": "GlobalVariable", - "type": "variable", - "name": "\"AUX TRUE\"" - } - }, - "outputs": { - "out": [] - }, - "scl": "// SymPy Contact: v0_" - }, - { - "instruction_uid": "23", - "uid": "23", - "type": "Call_FC_sympy_processed", - "block_name": "BlenderPIDCtrl_WriteAnOu", - "block_type": "FC", - "inputs": { - "en": { - "type": "connection", - "source_instruction_type": "Contact", - "source_instruction_uid": "22", - "source_pin": "out" - } - }, - "outputs": {}, - "scl": "IF \"AUX TRUE\" THEN\n BlenderPIDCtrl_WriteAnOu();\nEND_IF;" - } - ], - "language": "LAD" - } - ] -} \ No newline at end of file diff --git a/BlenderPIDCtrl__Loop_simplified_processed.scl b/BlenderPIDCtrl__Loop_simplified_processed.scl deleted file mode 100644 index dd941e0..0000000 --- a/BlenderPIDCtrl__Loop_simplified_processed.scl +++ /dev/null @@ -1,107 +0,0 @@ -// Block Name (Original): BlenderPIDCtrl__Loop -// Block Number: 1729 -// Original Language: LAD -// Block Comment: TASK1 PID - -FUNCTION_BLOCK "BlenderPIDCtrl__Loop" -{ S7_Optimized_Access := 'TRUE' } -VERSION : 0.1 - -VAR_STAT_STATIC - PID_1_300ms : Bool; - PID_2_300ms : Bool; - PID_3_300ms : Bool; - PID_4_300ms : Bool; - PID_5_300ms : Bool; - PID_6_300ms : Bool; - Flow_Meter_Error_RETVAL : Real; - PID_FF_Calc : "BlenderPID_PIDFFCalc"; - PID_Blending_Fault : "BlenderPID_BlendingFault"; - PID_Save_Integral : "BlenderPIDCtrl_SaveInteg"; - PID_Monitor : "BlenderPIDCtrl_Monitor"; - Read_AnalogInput : "BlenderPIDCtrl_ReadAnIn"; -END_VAR - -VAR_TEMP -END_VAR - -BEGIN - - // Network 1: Read Analoc Inputs (Original Language: LAD) - - "Read_AnalogInput"(); - - // Network 2: MIX - OB35 scan counter (Original Language: LAD) - // PID Control Time Bit (300ms) - - "PID_1_300ms" := Eq("MW1968", 1); - "PID_2_300ms" := Eq("MW1968", 2); - "PID_3_300ms" := Eq("MW1968", 3); - "PID_4_300ms" := Eq("MW1968", 4); - "PID_5_300ms" := Eq("MW1968", 5); - "PID_6_300ms" := Eq("MW1968", 6); - - // Network 3: PID Call (Original Language: LAD) - // Water PID - // Syrup PID - // CO2 PID - - IF "PID_1_300ms" THEN - "PID_FF_Calc"(); - "PID_Blending_Fault"(); - BlenderPID_FlowMeterErro(); - "PID_Monitor"(); - "PID_Save_Integral"(); - BlenderPIDCtrl_SaveValve(); - END_IF; - IF "PID_1_300ms" AND "HMI_PID"."RMM301"."Config" THEN - "PID_RMM301_Data"(); - END_IF; - IF "PID_1_300ms" AND "HMI_PID"."RMP302"."Config" THEN - "PID_RMP302_Data"(); - END_IF; - IF "PID_1_300ms" AND "HMI_PID"."RMM303"."Config" THEN - "PID_RMM303_Data"(); - END_IF; - IF "PID_1_300ms" AND "HMI_PID"."RMM304"."Config" THEN - "PID_RMM304_Data"(); - END_IF; - - // Network 4: PID Product Tank Pressure (Original Language: LAD) - - IF "PID_2_300ms" AND "HMI_PID"."RVM301"."Config" THEN - "PID_RVM301_Data"(); - BlenderPIDCtrl_PresRelea(); - END_IF; - - // Network 5: Pid Call (Original Language: LAD) - - IF "PID_4_300ms" AND "HMI_PID"."RVM319_PRD"."Config" THEN - "PID_RVM319_Data"(); - END_IF; - IF "HMI_PID"."RVP303"."Config" AND "PID_4_300ms" THEN - "PID_RVP303_Data"(); - END_IF; - IF "HMI_PID"."RVN302"."Config" AND "PID_4_300ms" AND NOT "HMI_PID"."RVN302"."ConfigPID" THEN - "PID_RVN302_Data"(); - END_IF; - - // Network 6: Filling Head (Original Language: LAD) - - IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "PID_5_300ms" AND "HMI_PID"."PPM303"."Config" THEN - "PID_Filling_Head_Data"(); - END_IF; - - // Network 7: CIp Heating PID (Original Language: LAD) - - IF "PID_6_300ms" AND "HMI_PID"."RVS318"."Config" THEN - "PID_RVS318_Data"(); - END_IF; - - // Network 8: Write Analog Outputs (Original Language: LAD) - - IF "AUX TRUE" THEN - BlenderPIDCtrl_WriteAnOu(); - END_IF; - -END_FUNCTION_BLOCK diff --git a/BlenderRun_ProdTime.xml b/BlenderRun_ProdTime.xml deleted file mode 100644 index 6365fe2..0000000 --- a/BlenderRun_ProdTime.xml +++ /dev/null @@ -1,2359 +0,0 @@ - - - - - - false - TASK2 - -
-
-
-
- - - - - - - - -
-
-
- -
- - Standard - BlenderRun_ProdTime - - 2040 - LAD - false - - - - - - - it-IT - - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Int - 1 - - - - - - - - - - - - 2 - Int - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Seconds - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - Int - 0 - - - - - - - - - - - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Reset Hours - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Int - 1 - - - - - - - - - - - - 2 - Int - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Seconds Counter - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - Int - 60 - - - - - - - - - Int - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Minute - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - Int - 0 - - - - - - - - - - - - - - - - - Int - 1 - - - - - - - - - - - 1 - - - 2 - Int - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Minute Counter - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - Int - 60 - - - - - - - - - Int - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Hour - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - Int - 0 - - - - - - - - - - - - - - - - - Int - 1 - - - - - - - - - - - - - - - - - Int - 1 - - - - - - - - - - - 1 - - - 2 - Int - - - 2 - Int - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Hour Counter - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - Int - 0 - - - - - - - - - - - Int - 0 - - - - - - - - - - - Int - 0 - - - - - - - - - - - - 2 - - - 1 - - - 1 - - - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Counter reset - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Int - 1 - - - - - - - - - - - - 2 - Int - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Running Seconds - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - DINT#60 - - - - - - - - - - - - - - - DINT#0 - - - - - - - - - - - - - - - - - - - - - - - Int - 1 - - - - - - - - - - - - - - - - - - - - Int - DInt - - - DInt - - - DInt - - - - - 2 - Int - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Running Minutes - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - DINT#60 - - - - - - - - - - - - - - - DINT#0 - - - - - - - - - - - Int - 1 - - - - - - - - - - - Int - DInt - - - DInt - - - DInt - - - 2 - Int - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Running Hours for Maintenance - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - 1 - - - - - - - - - - - - - - - - - - LAD - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Running Hours for Maintenance - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - it-IT - Run Prod Time - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - \ No newline at end of file diff --git a/TestLAD.xml b/TestLAD.xml deleted file mode 100644 index 0f704be..0000000 --- a/TestLAD.xml +++ /dev/null @@ -1,995 +0,0 @@ - - - - - - -
-
-
-
- - - - - - - - -
-
-
- -
- - Optimized - TestLAD - - 2 - LAD - false - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - true - - - - - - - - - - - 0 - - - - - - - - - - true - - - - - - - - - - - - true - - - - - - - - - - - 100 - - - - - - - - - true - - - - - - - - - - - - - - - - true - - - - - - - - - - - 0 - - - - - - - - - - true - - - - - - - - - - - - - true - - - - - - - - - - - 100 - - - - - - - - - - true - - - - - - - - - - - - - true - - - - - - - - - - - 60 - - - - - - - - - - 100 - - - - - - - - - - true - - - - - - - - - - - - - - - - true - - - - - - - - - - - 0 - - - - - - - - - - true - - - - - - - - - - - - - true - - - - - - - - - - - 100 - - - - - - - - - - true - - - - - - - - - - - - - true - - - - - - - - - - - 60 - - - - - - - - 1000 - - - - - - - - - - 100 - - - - - - - - - - true - - - - - - - - - - - - - - - - - - - - - - true - - - - - - - - - - - - true - - - - - - - - - - - - - - - - - - - true - - - - - - - - - - - - true - - - - - - - - - - - - - true - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - true - - - - - - - - - - - - true - - - - - - - - - - - - - true - - - - - - - - - - - - - - - - - - - - - - - true - - - - - - - - - - - - true - - - - - - - - - - - - - true - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - true - - - - - - - - - - - - - - - - - - - - - - - - true - - - - - - - - - - - - - - 1 - - - - - - - - - - - - - - - - - - true - - - - - - - - - - - - - - - - - - - - - - - - true - - - - - - - - - - - - - - 1 - - - - - - - - - - - - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - - - - - - - - SCL - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - \ No newline at end of file diff --git a/TestLAD_simplified.json b/TestLAD_simplified.json deleted file mode 100644 index dcf9034..0000000 --- a/TestLAD_simplified.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "block_name": "TestLAD", - "block_number": 2, - "language": "LAD", - "block_comment": "", - "interface": { - "Temp": [ - { - "name": "mWaterMaxFlow", - "datatype": "Real" - }, - { - "name": "mWaterMinFlow", - "datatype": "Real" - }, - { - "name": "mSyrupMaxFlow", - "datatype": "Real" - }, - { - "name": "mSyrupMinFlow", - "datatype": "Real" - }, - { - "name": "mMinRatio", - "datatype": "Real" - }, - { - "name": "mMaxRatio", - "datatype": "Real" - }, - { - "name": "mBevBrixMax", - "datatype": "Real" - }, - { - "name": "mBevBrixMin", - "datatype": "Real" - } - ], - "Return": [ - { - "name": "Ret_Val", - "datatype": "Real" - } - ] - }, - "networks": [ - { - "id": "9", - "title": "", - "comment": "", - "language": "SCL", - "logic": [ - { - "instruction_uid": "SCL_9", - "type": "RAW_SCL_CHUNK", - "scl": "IF \"Blender_Variables\".gSP_H2O <> 0 THEN\n \"Blender_Variables\".gWaterVFMCalcError := \"Blender_Variables\".gWaterVFMMeasError / 100 * \"Blender_Variables\".gSP_H2O;\nEND_IF;\nIF \"Blender_Variables\".gSP_SYR <> 0 THEN\n \"Blender_Variables\".gSyrupMFMCalcError := (\"Blender_Variables\".gSyrupMFMMeasError / 100 + (\"Blender_Variables\".gSyrupMFMZeroStab / (\"Blender_Variables\".gSP_SYR * 60)) / 100) * \"Blender_Variables\".gSP_SYR;\nEND_IF;\nIF \"Blender_Variables\".gSP_CO2 <> 0 THEN\n \"Blender_Variables\".gCO2MFMCalcError := (\"Blender_Variables\".gCO2MFMMeasError / 100 + (\"Blender_Variables\".gCO2MFMZeroStab / (\"Blender_Variables\".gSP_CO2 * 60 / 1000)) / 100) * \"Blender_Variables\".gSP_CO2;\nEND_IF;\n\"mWaterMaxFlow\" := \"Blender_Variables\".gSP_H2O + \"Blender_Variables\".gWaterVFMCalcError;\n\"mWaterMinFlow\" := \"Blender_Variables\".gSP_H2O - \"Blender_Variables\".gWaterVFMCalcError;\nIF \"HMI_Blender_Parameters\".Actual_Recipe_Parameters._SyrupDensity <> 0 THEN\n \"mSyrupMaxFlow\" := (\"Blender_Variables\".gSP_SYR + \"Blender_Variables\".gSyrupMFMCalcError) / \"HMI_Blender_Parameters\".Actual_Recipe_Parameters._SyrupDensity;\n \"mSyrupMinFlow\" := (\"Blender_Variables\".gSP_SYR - \"Blender_Variables\".gSyrupMFMCalcError) / \"HMI_Blender_Parameters\".Actual_Recipe_Parameters._SyrupDensity;\nEND_IF;\nIF \"mSyrupMaxFlow\" <> 0 THEN\n \"mMinRatio\" := \"mWaterMinFlow\" / \"mSyrupMaxFlow\";\nEND_IF;\nIF \"mSyrupMinFlow\" <> 0 THEN\n \"mMaxRatio\" := \"mWaterMaxFlow\" / \"mSyrupMinFlow\";\nEND_IF;\nIF \"HMI_Blender_Parameters\".Actual_Recipe_Parameters._SyrupDensity <> 0 THEN\n \"mBevBrixMax\" := \"HMI_Blender_Parameters\".Actual_Recipe_Parameters._SyrupBrix / ((\"mMinRatio\" / \"HMI_Blender_Parameters\".Actual_Recipe_Parameters._SyrupDensity) + 1);\n \"mBevBrixMin\" := \"HMI_Blender_Parameters\".Actual_Recipe_Parameters._SyrupBrix / ((\"mMaxRatio\" / \"HMI_Blender_Parameters\".Actual_Recipe_Parameters._SyrupDensity) + 1);\nEND_IF;\n\"Blender_Variables\".gBlenderBlendMaxError := \"mBevBrixMax\" - \"mBevBrixMin\";\n\"TestLAD\" := \"Blender_Variables\".gBlenderBlendMaxError;" - } - ] - } - ] -} \ No newline at end of file diff --git a/TestLAD_simplified_processed.json b/TestLAD_simplified_processed.json deleted file mode 100644 index dcf9034..0000000 --- a/TestLAD_simplified_processed.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "block_name": "TestLAD", - "block_number": 2, - "language": "LAD", - "block_comment": "", - "interface": { - "Temp": [ - { - "name": "mWaterMaxFlow", - "datatype": "Real" - }, - { - "name": "mWaterMinFlow", - "datatype": "Real" - }, - { - "name": "mSyrupMaxFlow", - "datatype": "Real" - }, - { - "name": "mSyrupMinFlow", - "datatype": "Real" - }, - { - "name": "mMinRatio", - "datatype": "Real" - }, - { - "name": "mMaxRatio", - "datatype": "Real" - }, - { - "name": "mBevBrixMax", - "datatype": "Real" - }, - { - "name": "mBevBrixMin", - "datatype": "Real" - } - ], - "Return": [ - { - "name": "Ret_Val", - "datatype": "Real" - } - ] - }, - "networks": [ - { - "id": "9", - "title": "", - "comment": "", - "language": "SCL", - "logic": [ - { - "instruction_uid": "SCL_9", - "type": "RAW_SCL_CHUNK", - "scl": "IF \"Blender_Variables\".gSP_H2O <> 0 THEN\n \"Blender_Variables\".gWaterVFMCalcError := \"Blender_Variables\".gWaterVFMMeasError / 100 * \"Blender_Variables\".gSP_H2O;\nEND_IF;\nIF \"Blender_Variables\".gSP_SYR <> 0 THEN\n \"Blender_Variables\".gSyrupMFMCalcError := (\"Blender_Variables\".gSyrupMFMMeasError / 100 + (\"Blender_Variables\".gSyrupMFMZeroStab / (\"Blender_Variables\".gSP_SYR * 60)) / 100) * \"Blender_Variables\".gSP_SYR;\nEND_IF;\nIF \"Blender_Variables\".gSP_CO2 <> 0 THEN\n \"Blender_Variables\".gCO2MFMCalcError := (\"Blender_Variables\".gCO2MFMMeasError / 100 + (\"Blender_Variables\".gCO2MFMZeroStab / (\"Blender_Variables\".gSP_CO2 * 60 / 1000)) / 100) * \"Blender_Variables\".gSP_CO2;\nEND_IF;\n\"mWaterMaxFlow\" := \"Blender_Variables\".gSP_H2O + \"Blender_Variables\".gWaterVFMCalcError;\n\"mWaterMinFlow\" := \"Blender_Variables\".gSP_H2O - \"Blender_Variables\".gWaterVFMCalcError;\nIF \"HMI_Blender_Parameters\".Actual_Recipe_Parameters._SyrupDensity <> 0 THEN\n \"mSyrupMaxFlow\" := (\"Blender_Variables\".gSP_SYR + \"Blender_Variables\".gSyrupMFMCalcError) / \"HMI_Blender_Parameters\".Actual_Recipe_Parameters._SyrupDensity;\n \"mSyrupMinFlow\" := (\"Blender_Variables\".gSP_SYR - \"Blender_Variables\".gSyrupMFMCalcError) / \"HMI_Blender_Parameters\".Actual_Recipe_Parameters._SyrupDensity;\nEND_IF;\nIF \"mSyrupMaxFlow\" <> 0 THEN\n \"mMinRatio\" := \"mWaterMinFlow\" / \"mSyrupMaxFlow\";\nEND_IF;\nIF \"mSyrupMinFlow\" <> 0 THEN\n \"mMaxRatio\" := \"mWaterMaxFlow\" / \"mSyrupMinFlow\";\nEND_IF;\nIF \"HMI_Blender_Parameters\".Actual_Recipe_Parameters._SyrupDensity <> 0 THEN\n \"mBevBrixMax\" := \"HMI_Blender_Parameters\".Actual_Recipe_Parameters._SyrupBrix / ((\"mMinRatio\" / \"HMI_Blender_Parameters\".Actual_Recipe_Parameters._SyrupDensity) + 1);\n \"mBevBrixMin\" := \"HMI_Blender_Parameters\".Actual_Recipe_Parameters._SyrupBrix / ((\"mMaxRatio\" / \"HMI_Blender_Parameters\".Actual_Recipe_Parameters._SyrupDensity) + 1);\nEND_IF;\n\"Blender_Variables\".gBlenderBlendMaxError := \"mBevBrixMax\" - \"mBevBrixMin\";\n\"TestLAD\" := \"Blender_Variables\".gBlenderBlendMaxError;" - } - ] - } - ] -} \ No newline at end of file diff --git a/TestLAD_simplified_processed.scl b/TestLAD_simplified_processed.scl deleted file mode 100644 index e94f0b1..0000000 --- a/TestLAD_simplified_processed.scl +++ /dev/null @@ -1,56 +0,0 @@ -// Block Name (Original): TestLAD -// Block Number: 2 -// Original Language: LAD - -FUNCTION_BLOCK "TestLAD" -{ S7_Optimized_Access := 'TRUE' } -VERSION : 0.1 - -VAR_RETURN - Ret_Val : Real; -END_VAR - -VAR_TEMP - mWaterMaxFlow : Real; - mWaterMinFlow : Real; - mSyrupMaxFlow : Real; - mSyrupMinFlow : Real; - mMinRatio : Real; - mMaxRatio : Real; - mBevBrixMax : Real; - mBevBrixMin : Real; -END_VAR - -BEGIN - - // Network 1: (Original Language: SCL) - - IF "Blender_Variables".gSP_H2O <> 0 THEN - "Blender_Variables".gWaterVFMCalcError := "Blender_Variables".gWaterVFMMeasError / 100 * "Blender_Variables".gSP_H2O; - END_IF; - IF "Blender_Variables".gSP_SYR <> 0 THEN - "Blender_Variables".gSyrupMFMCalcError := ("Blender_Variables".gSyrupMFMMeasError / 100 + ("Blender_Variables".gSyrupMFMZeroStab / ("Blender_Variables".gSP_SYR * 60)) / 100) * "Blender_Variables".gSP_SYR; - END_IF; - IF "Blender_Variables".gSP_CO2 <> 0 THEN - "Blender_Variables".gCO2MFMCalcError := ("Blender_Variables".gCO2MFMMeasError / 100 + ("Blender_Variables".gCO2MFMZeroStab / ("Blender_Variables".gSP_CO2 * 60 / 1000)) / 100) * "Blender_Variables".gSP_CO2; - END_IF; - "mWaterMaxFlow" := "Blender_Variables".gSP_H2O + "Blender_Variables".gWaterVFMCalcError; - "mWaterMinFlow" := "Blender_Variables".gSP_H2O - "Blender_Variables".gWaterVFMCalcError; - IF "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupDensity <> 0 THEN - "mSyrupMaxFlow" := ("Blender_Variables".gSP_SYR + "Blender_Variables".gSyrupMFMCalcError) / "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupDensity; - "mSyrupMinFlow" := ("Blender_Variables".gSP_SYR - "Blender_Variables".gSyrupMFMCalcError) / "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupDensity; - END_IF; - IF "mSyrupMaxFlow" <> 0 THEN - "mMinRatio" := "mWaterMinFlow" / "mSyrupMaxFlow"; - END_IF; - IF "mSyrupMinFlow" <> 0 THEN - "mMaxRatio" := "mWaterMaxFlow" / "mSyrupMinFlow"; - END_IF; - IF "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupDensity <> 0 THEN - "mBevBrixMax" := "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupBrix / (("mMinRatio" / "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupDensity) + 1); - "mBevBrixMin" := "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupBrix / (("mMaxRatio" / "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupDensity) + 1); - END_IF; - "Blender_Variables".gBlenderBlendMaxError := "mBevBrixMax" - "mBevBrixMin"; - "TestLAD" := "Blender_Variables".gBlenderBlendMaxError; - -END_FUNCTION_BLOCK diff --git a/ToUpload/TestLAD.xml b/ToUpload/TestLAD.xml deleted file mode 100644 index f8ea13d..0000000 --- a/ToUpload/TestLAD.xml +++ /dev/null @@ -1,763 +0,0 @@ - - - - - - -
-
-
-
- - - - - - - - - - - -
-
-
- -
- - Optimized - TestLAD - - 2 - LAD - false - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - DInt - 3 - - - - - - - - STL - - - - - - - it-IT - DEVICE - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - Set manual active - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ARef - P#0.0 - - - - - - - - - - - - - - - - Int - 3 - - - - - - - - - - - - - - - - - - - ARef - P#0.0 - - - - - - - - - - - - - - - - - - - - - - - - - config - - - - - - - - - auto - - - - - - - - - - - - DInt - 3 - - - - - - - - - - - ARef - P#2.0 - - - - - - - - - - - - - - - - - - - - - - - - STL - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - - PID - - - - - - - - - - - - - - - - - - - - - - - - - - - ARef - P#0.0 - - - - - - - - - - - - - - - - Int - 3 - - - - - - - - - - - - - - - - - - - ARef - P#0.0 - - - - - - - - - - - - - - - - - - - - - - - - - config - - - - - - - - - - - - ManOut - - - - - - - - - LocalSP - - - - - - - - - - - - - - - DInt - 3 - - - - - - - - - - - ARef - P#76.0 - - - - - - - - - - - - - - - - - - - - - - - - STL - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - - - - - it-IT - - - - - - de-DE - - - - - - en-US - - - - - - es-ES - - - - - - fr-FR - - - - - - zh-CN - - - - - - ja-JP - - - - - - - - \ No newline at end of file diff --git a/ToUpload/TestLAD_simplified.json b/ToUpload/TestLAD_simplified.json deleted file mode 100644 index 9f52ad5..0000000 --- a/ToUpload/TestLAD_simplified.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "block_name": "TestLAD", - "block_number": 2, - "language": "LAD", - "block_comment": "", - "interface": { - "Temp": [ - { - "name": "All_Auto_RETVAL", - "datatype": "Int" - }, - { - "name": "Reset_SP_Word_RETVAL", - "datatype": "Int" - }, - { - "name": "mResetWaterTot", - "datatype": "Bool" - }, - { - "name": "mResetSyrupTot", - "datatype": "Bool" - }, - { - "name": "mResetCO2Tot", - "datatype": "Bool" - }, - { - "name": "mResetProductTot", - "datatype": "Bool" - }, - { - "name": "Block_Move_Err", - "datatype": "Int" - }, - { - "name": "Dim_HMI_Device", - "datatype": "Int" - }, - { - "name": "PDim_HMI_Device", - "datatype": "DWord" - }, - { - "name": "Dim_HMI_PID", - "datatype": "Int" - }, - { - "name": "PDim_HMI_PID", - "datatype": "DWord" - } - ], - "Return": [ - { - "name": "Ret_Val", - "datatype": "Void" - } - ] - }, - "networks": [ - { - "id": "9", - "title": "Set manual active", - "comment": "DEVICE", - "language": "STL", - "logic": [ - { - "instruction_uid": "UNS_9", - "type": "UNSUPPORTED_LANG", - "scl": "// Network 9 uses unsupported language: STL\n" - } - ] - }, - { - "id": "1A", - "title": "", - "comment": "", - "language": "STL", - "logic": [ - { - "instruction_uid": "UNS_1A", - "type": "UNSUPPORTED_LANG", - "scl": "// Network 1A uses unsupported language: STL\n" - } - ] - }, - { - "id": "2B", - "title": "", - "comment": "", - "language": "STL", - "logic": [ - { - "instruction_uid": "UNS_2B", - "type": "UNSUPPORTED_LANG", - "scl": "// Network 2B uses unsupported language: STL\n" - } - ] - } - ] -} \ No newline at end of file diff --git a/ToUpload/TestLAD_simplified_processed.json b/ToUpload/TestLAD_simplified_processed.json deleted file mode 100644 index 9f52ad5..0000000 --- a/ToUpload/TestLAD_simplified_processed.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "block_name": "TestLAD", - "block_number": 2, - "language": "LAD", - "block_comment": "", - "interface": { - "Temp": [ - { - "name": "All_Auto_RETVAL", - "datatype": "Int" - }, - { - "name": "Reset_SP_Word_RETVAL", - "datatype": "Int" - }, - { - "name": "mResetWaterTot", - "datatype": "Bool" - }, - { - "name": "mResetSyrupTot", - "datatype": "Bool" - }, - { - "name": "mResetCO2Tot", - "datatype": "Bool" - }, - { - "name": "mResetProductTot", - "datatype": "Bool" - }, - { - "name": "Block_Move_Err", - "datatype": "Int" - }, - { - "name": "Dim_HMI_Device", - "datatype": "Int" - }, - { - "name": "PDim_HMI_Device", - "datatype": "DWord" - }, - { - "name": "Dim_HMI_PID", - "datatype": "Int" - }, - { - "name": "PDim_HMI_PID", - "datatype": "DWord" - } - ], - "Return": [ - { - "name": "Ret_Val", - "datatype": "Void" - } - ] - }, - "networks": [ - { - "id": "9", - "title": "Set manual active", - "comment": "DEVICE", - "language": "STL", - "logic": [ - { - "instruction_uid": "UNS_9", - "type": "UNSUPPORTED_LANG", - "scl": "// Network 9 uses unsupported language: STL\n" - } - ] - }, - { - "id": "1A", - "title": "", - "comment": "", - "language": "STL", - "logic": [ - { - "instruction_uid": "UNS_1A", - "type": "UNSUPPORTED_LANG", - "scl": "// Network 1A uses unsupported language: STL\n" - } - ] - }, - { - "id": "2B", - "title": "", - "comment": "", - "language": "STL", - "logic": [ - { - "instruction_uid": "UNS_2B", - "type": "UNSUPPORTED_LANG", - "scl": "// Network 2B uses unsupported language: STL\n" - } - ] - } - ] -} \ No newline at end of file diff --git a/ToUpload/TestLAD_simplified_processed.scl.txt b/ToUpload/TestLAD_simplified_processed.scl.txt deleted file mode 100644 index d096e71..0000000 --- a/ToUpload/TestLAD_simplified_processed.scl.txt +++ /dev/null @@ -1,42 +0,0 @@ -// Block Name (Original): TestLAD -// Block Number: 2 -// Original Language: LAD - -FUNCTION_BLOCK "TestLAD" -{ S7_Optimized_Access := 'TRUE' } -VERSION : 0.1 - -VAR_RETURN - Ret_Val : Void; -END_VAR - -VAR_TEMP - All_Auto_RETVAL : Int; - Reset_SP_Word_RETVAL : Int; - mResetWaterTot : Bool; - mResetSyrupTot : Bool; - mResetCO2Tot : Bool; - mResetProductTot : Bool; - Block_Move_Err : Int; - Dim_HMI_Device : Int; - PDim_HMI_Device : DWord; - Dim_HMI_PID : Int; - PDim_HMI_PID : DWord; -END_VAR - -BEGIN - - // Network 1: Set manual active (Original Language: STL) - // DEVICE - - // Network 9 uses unsupported language: STL - - // Network 2: (Original Language: STL) - - // Network 1A uses unsupported language: STL - - // Network 3: (Original Language: STL) - - // Network 2B uses unsupported language: STL - -END_FUNCTION_BLOCK diff --git a/ToUpload/x0_main.py b/ToUpload/x0_main.py index b82e9d2..f14f918 100644 --- a/ToUpload/x0_main.py +++ b/ToUpload/x0_main.py @@ -97,6 +97,81 @@ def select_xml_file(): if __name__ == "__main__": + # Imports necesarios para esta sección + import os + import sys + import glob # Asegúrate de que glob esté importado al principio del archivo + + # Directorio base donde buscar los archivos XML (relativo al script) + base_search_dir = "XML Project" + script_dir = os.path.dirname(__file__) # Directorio donde está x0_main.py + xml_project_dir = os.path.join(script_dir, base_search_dir) + + print(f"Buscando archivos XML recursivamente en: '{xml_project_dir}'") + + # Verificar si el directorio 'XML Project' existe + if not os.path.isdir(xml_project_dir): + print(f"Error: El directorio '{xml_project_dir}' no existe o no es un directorio.") + print("Por favor, crea el directorio 'XML Project' en la misma carpeta que este script y coloca tus archivos XML dentro.") + sys.exit(1) + + # Buscar todos los archivos .xml recursivamente dentro de xml_project_dir + # Usamos os.path.join para construir la ruta de búsqueda correctamente + # y '**/*.xml' para la recursividad con glob + search_pattern = os.path.join(xml_project_dir, '**', '*.xml') + xml_files_found = glob.glob(search_pattern, recursive=True) + + if not xml_files_found: + print(f"No se encontraron archivos XML en '{xml_project_dir}' o sus subdirectorios.") + sys.exit(0) # Salir limpiamente si no hay archivos + + print(f"Se encontraron {len(xml_files_found)} archivos XML para procesar:") + # Ordenar para un procesamiento predecible (opcional) + xml_files_found.sort() + for xml_file in xml_files_found: + # Imprimir la ruta relativa desde el directorio del script para claridad + print(f" - {os.path.relpath(xml_file, script_dir)}") + + # Scripts a ejecutar en secuencia (asegúrate que los nombres son correctos) + script1 = "x1_to_json.py" + script2 = "x2_process.py" + script3 = "x3_generate_scl.py" + + # Procesar cada archivo encontrado + processed_count = 0 + failed_count = 0 + for xml_filepath in xml_files_found: + print(f"\n--- Iniciando pipeline para: {os.path.relpath(xml_filepath, script_dir)} ---") + + # Usar la ruta absoluta para evitar problemas si los scripts cambian de directorio + absolute_xml_filepath = os.path.abspath(xml_filepath) + + # Ejecutar los scripts en secuencia para el archivo actual + # La función run_script ya está definida en tu script x0_main.py + success = True + if not run_script(script1, absolute_xml_filepath): + print(f"\nPipeline falló en el script '{script1}' para el archivo: {os.path.relpath(xml_filepath, script_dir)}") + success = False + elif not run_script(script2, absolute_xml_filepath): + print(f"\nPipeline falló en el script '{script2}' para el archivo: {os.path.relpath(xml_filepath, script_dir)}") + success = False + elif not run_script(script3, absolute_xml_filepath): + print(f"\nPipeline falló en el script '{script3}' para el archivo: {os.path.relpath(xml_filepath, script_dir)}") + success = False + + if success: + print(f"--- Pipeline completado exitosamente para: {os.path.relpath(xml_filepath, script_dir)} ---") + processed_count += 1 + else: + failed_count += 1 + print(f"--- Pipeline falló para: {os.path.relpath(xml_filepath, script_dir)} ---") + + + print("\n--- Resumen Final del Procesamiento ---") + print(f"Total de archivos XML encontrados: {len(xml_files_found)}") + print(f"Archivos procesados exitosamente por el pipeline completo: {processed_count}") + print(f"Archivos que fallaron en algún punto del pipeline: {failed_count}") + print("---------------------------------------") xml_filename = None # Comprobar si se pasó un argumento de línea de comandos diff --git a/ToUpload/x1_to_json.py b/ToUpload/x1_to_json.py index 8b1a128..74e78d8 100644 --- a/ToUpload/x1_to_json.py +++ b/ToUpload/x1_to_json.py @@ -2,6 +2,7 @@ import json import argparse import os +import re from lxml import etree import traceback from collections import defaultdict @@ -11,7 +12,8 @@ from collections import defaultdict ns = { "iface": "http://www.siemens.com/automation/Openness/SW/Interface/v5", "flg": "http://www.siemens.com/automation/Openness/SW/NetworkSource/FlgNet/v4", - "st": "http://www.siemens.com/automation/Openness/SW/NetworkSource/StructuredText/v3", # <--- Added SCL namespace + "st": "http://www.siemens.com/automation/Openness/SW/NetworkSource/StructuredText/v3", + "stl": "http://www.siemens.com/automation/Openness/SW/NetworkSource/StatementList/v4", } @@ -44,7 +46,6 @@ def get_multilingual_text(element, default_lang="en-US", fallback_lang="it-IT"): print(f"Advertencia: Error extrayendo MultilingualText: {e}") return "" - def get_symbol_name(symbol_element): # (Sin cambios respecto a la versión anterior) if symbol_element is None: @@ -56,7 +57,6 @@ def get_symbol_name(symbol_element): print(f"Advertencia: Excepción en get_symbol_name: {e}") return None - def parse_access(access_element): # (Sin cambios respecto a la versión anterior) if access_element is None: @@ -149,7 +149,6 @@ def parse_access(access_element): return info return info - def parse_part(part_element): # (Sin cambios respecto a la versión anterior) if part_element is None: @@ -185,7 +184,6 @@ def parse_part(part_element): "negated_pins": negated_pins, } - def parse_call(call_element): # (Mantiene la corrección para DB de instancia) if call_element is None: @@ -245,20 +243,17 @@ def parse_call(call_element): call_data["instance_scope"] = instance_scope return call_data - -# EN x1_to_json.py, junto a otras funciones auxiliares - +# SCL (Structured Text) Parser def reconstruct_scl_from_tokens(st_node): """ - Intenta reconstruir una cadena SCL a partir de los elementos hijos - de un nodo . Es una aproximación y puede no ser perfecta. + Reconstruye SCL desde , mejorando el manejo de + variables, constantes literales, tokens básicos, espacios y saltos de línea. """ if st_node is None: return "// Error: StructuredText node not found.\n" scl_parts = [] - # Obtener todos los elementos hijos directos en orden children = st_node.xpath("./st:*", namespaces=ns) for elem in children: @@ -267,86 +262,335 @@ def reconstruct_scl_from_tokens(st_node): if tag == "Token": scl_parts.append(elem.get("Text", "")) elif tag == "Blank": - scl_parts.append(" " * int(elem.get("Num", 1))) + # Añadir espacios simples, evitar múltiples si ya hay uno antes/después + if not scl_parts or not scl_parts[-1].endswith(' '): + scl_parts.append(" " * int(elem.get("Num", 1))) + elif int(elem.get("Num", 1)) > 1: # Añadir extras si son más de 1 + scl_parts.append(" " * (int(elem.get("Num", 1))-1)) elif tag == "NewLine": - # Añadir un salto de línea real. strip() al final de la línea actual - # para evitar espacios extra antes del salto. + # Limpiar espacios antes del salto de línea real + if scl_parts: + scl_parts[-1] = scl_parts[-1].rstrip() scl_parts.append("\n") elif tag == "Access": - # Reconstruir acceso (simplificado) - symbol_parts = [] - # Buscar componentes y puntos dentro del símbolo de este acceso - symbol_children = elem.xpath( - ".//st:Component | .//st:Token[@Text='.']", namespaces=ns - ) - for sym_child in symbol_children: - sym_tag = etree.QName(sym_child.tag).localname - if sym_tag == "Component": - comp_name = sym_child.get("Name", "_ERR_") - # Comprobar si necesita comillas (podríamos necesitar parsear BooleanAttribute) - # Simplificación: Añadir comillas si el nombre original parece tenerlas (o siempre para DBs?) - # Aquí usamos el nombre tal cual viene en el XML por ahora - # Si el XML tiene true podríamos usarlo - has_quotes_elem = sym_child.xpath( - "../st:BooleanAttribute[@Name='HasQuotes']/text()", - namespaces=ns, - ) - has_quotes = ( - has_quotes_elem and has_quotes_elem[0].lower() == "true" - ) + scope = elem.get("Scope") + access_str = f"/*_ERR_Scope_{scope}_*/" # Fallback más informativo - # Reconstrucción básica: poner comillas si HasQuotes es true o si es el primer componente (posible DB) - # Esto es heurístico y puede fallar. - # if has_quotes or (len(symbol_parts) == 0 and '.' not in comp_name): # Asumir primer componente es DB - # symbol_parts.append(f'"{comp_name}"') - # else: - # symbol_parts.append(comp_name) + if scope in ["GlobalVariable", "LocalVariable", "TempVariable", "InOutVariable", "InputVariable", "OutputVariable", "ConstantVariable"]: # Tipos comunes de variables + symbol_elem = elem.xpath("./st:Symbol", namespaces=ns) + if symbol_elem: + components = symbol_elem[0].xpath("./st:Component", namespaces=ns) + symbol_text_parts = [] + for i, comp in enumerate(components): + name = comp.get("Name", "_ERR_COMP_") + # Añadir punto si no es el primer componente + if i > 0: + symbol_text_parts.append(".") - # Versión más simple: usar nombre tal cual del XML - symbol_parts.append(comp_name) + # Reconstrucción de comillas (heurística) + has_quotes_elem = comp.xpath("../st:BooleanAttribute[@Name='HasQuotes']/text()", namespaces=ns) + has_quotes = has_quotes_elem and has_quotes_elem[0].lower() == "true" + is_temp = name.startswith('#') - elif sym_tag == "Token": # Solo nos interesa el punto aquí - symbol_parts.append(".") - access_str = "".join(symbol_parts) + if has_quotes or (i == 0 and not is_temp): # Comillas si HasQuotes o primer componente (no temp) + symbol_text_parts.append(f'"{name}"') + else: + symbol_text_parts.append(name) - # Manejar llamadas a funciones/FB dentro de Access Scope="Call" - if elem.get("Scope") == "Call": - instruction_elem = elem.xpath("./st:Instruction", namespaces=ns) - if instruction_elem: - instr_name = instruction_elem[0].get("Name", "_UNKNOWN_CALL_") - # Reconstrucción básica de parámetros (muy simplificada) - # Necesitaría parsear Parameters, Tokens '(', ')', ':=', '=>', etc. - # Por ahora, solo añadimos el nombre y paréntesis vacíos - access_str = f"{instr_name}()" # Placeholder muy básico + # Manejar índices de array (RECURSIVO) + index_access = comp.xpath("./st:Access", namespaces=ns) + if index_access: + # Llama recursivamente para obtener el texto de cada índice + indices_text = [reconstruct_scl_from_tokens(idx_node) for idx_node in index_access] + symbol_text_parts.append(f"[{','.join(indices_text)}]") + + access_str = "".join(symbol_text_parts) + + elif scope == "LiteralConstant": + constant_elem = elem.xpath("./st:Constant", namespaces=ns) + if constant_elem: + val_elem = constant_elem[0].xpath("./st:ConstantValue/text()", namespaces=ns) + type_elem = constant_elem[0].xpath("./st:ConstantType/text()", namespaces=ns) + const_type = type_elem[0] if type_elem else "" + const_val = val_elem[0] if val_elem else "_ERR_CONSTVAL_" + + # **CORRECCIÓN CLAVE**: Usar el valor extraído + access_str = const_val + + # Opcional: añadir prefijos T#, L#, etc. si es necesario + # if const_type == "Time": access_str = f"T#{const_val}" + # elif const_type == "LTime": access_str = f"LT#{const_val}" + # ... otros tipos ... + else: + access_str = "/*_ERR_NOCONST_*/" + # --- Añadir más manejo de scopes aquí si es necesario --- + # elif scope == "Call": access_str = reconstruct_call(elem) + # elif scope == "Expression": access_str = reconstruct_expression(elem) scl_parts.append(access_str) elif tag == "Comment" or tag == "LineComment": - # Añadir comentarios - comment_text = elem.text if elem.text else "" - if tag == "Comment" and "\n" in comment_text: # Comentario multi-línea - scl_parts.append(f"(*{comment_text}*)") - else: # Comentario de una línea - scl_parts.append(f"// {comment_text}") - else: - # Ignorar otros tipos de nodos por ahora o añadir manejo específico - pass + comment_text = "".join(elem.xpath(".//text()")).strip() + if tag == "Comment": + scl_parts.append(f"(* {comment_text} *)") + else: + scl_parts.append(f"// {comment_text}") + # else: Ignorar otros nodos - # Unir todas las partes, limpiar espacios extra alrededor de saltos de línea + # Unir partes, limpiar espacios extra alrededor de operadores y saltos de línea full_scl = "".join(scl_parts) - # Limpieza básica de formato - lines = [line.rstrip() for line in full_scl.split("\n")] - # Re-ensamblar, asegurando que líneas vacías (solo espacios previos) se mantengan - cleaned_scl = "\n".join(lines) - # Eliminar múltiples líneas vacías consecutivas (opcional) - # import re - # cleaned_scl = re.sub(r'\n\s*\n', '\n\n', cleaned_scl) - - return cleaned_scl.strip() # Quitar espacios/saltos al inicio/final -# --- Función parse_network con XPath corregido para Title/Comment --- -# --- Función parse_network MODIFICADA (maneja multi-destino en Wire) --- + # Re-indentar líneas después de IF/THEN, etc. (Simplificado) + output_lines = [] + indent_level = 0 + for line in full_scl.split('\n'): + line = line.strip() + if not line: continue # Saltar líneas vacías + + # Reducir indentación antes de procesar END_IF, ELSE, etc. (simplificado) + if line.startswith(('END_IF', 'END_WHILE', 'END_FOR', 'END_CASE', 'ELSE', 'ELSIF')): + indent_level = max(0, indent_level - 1) + + output_lines.append(" " * indent_level + line) # Aplicar indentación + + # Aumentar indentación después de IF, WHILE, FOR, CASE, ELSE, ELSIF (simplificado) + if line.endswith('THEN') or line.endswith('DO') or line.endswith('OF') or line == 'ELSE': + indent_level += 1 + # Nota: Esto no maneja bloques BEGIN/END dentro de SCL + + return "\n".join(output_lines) + +# STL (Statement List) Parser + +def get_access_text(access_element): + """Reconstruye una representación textual simple de un Access en STL.""" + if access_element is None: + return "_ERR_ACCESS_" + scope = access_element.get("Scope") + + # Intenta reconstruir el símbolo + # CORREGIDO: Añadido namespaces=ns + symbol_elem = access_element.xpath("./stl:Symbol", namespaces=ns) + if symbol_elem: + # CORREGIDO: Añadido namespaces=ns + components = symbol_elem[0].xpath("./stl:Component", namespaces=ns) + parts = [] + for comp in components: + name = comp.get("Name", "_ERR_COMP_") + # CORREGIDO: Añadido namespaces=ns + has_quotes_elem = comp.xpath("../stl:BooleanAttribute[@Name='HasQuotes']/text()", namespaces=ns) + has_quotes = has_quotes_elem and has_quotes_elem[0].lower() == "true" + + # Usar nombre tal cual por ahora + parts.append(name) + + # Añadir índices si existen + # CORREGIDO: Añadido namespaces=ns + index_access = comp.xpath("./stl:Access", namespaces=ns) + if index_access: + indices = [get_access_text(ia) for ia in index_access] + parts.append(f"[{','.join(indices)}]") + + return ".".join(parts) + + # Intenta reconstruir constante + # CORREGIDO: Añadido namespaces=ns + constant_elem = access_element.xpath("./stl:Constant", namespaces=ns) + if constant_elem: + # CORREGIDO: Añadido namespaces=ns + val_elem = constant_elem[0].xpath("./stl:ConstantValue/text()", namespaces=ns) + type_elem = constant_elem[0].xpath("./stl:ConstantType/text()", namespaces=ns) # Obtener tipo para mejor formato + const_type = type_elem[0] if type_elem else "" + const_val = val_elem[0] if val_elem else "_ERR_CONST_" + # Añadir prefijo de tipo si es necesario (ej. T# , L#) - Simplificado + if const_type == "Time": return f"T#{const_val}" + if const_type == "ARef": return f"{const_val}" # No necesita prefijo + # Añadir más tipos si es necesario + return const_val # Valor directo para otros tipos + + # Intenta reconstruir etiqueta + # CORREGIDO: Añadido namespaces=ns + label_elem = access_element.xpath("./stl:Label", namespaces=ns) + if label_elem: + name = label_elem[0].get("Name", "_ERR_LABEL_") + return name + + # Intenta reconstruir acceso indirecto (simplificado) + # CORREGIDO: Añadido namespaces=ns + indirect_elem = access_element.xpath("./stl:Indirect", namespaces=ns) + if indirect_elem: + reg = indirect_elem[0].get("Register", "AR?") + offset_str = indirect_elem[0].get("BitOffset", "0") + area = indirect_elem[0].get("Area", "DB") + width = indirect_elem[0].get("Width", "X") + + # Convertir BitOffset a formato P#Byte.Bit + try: + bit_offset = int(offset_str) + byte_offset = bit_offset // 8 + bit_in_byte = bit_offset % 8 + p_format_offset = f"P#{byte_offset}.{bit_in_byte}" + except ValueError: + p_format_offset = "P#?.?" + + # Formatear ancho + width_map = {"Bit": "X", "Byte": "B", "Word": "W", "Double": "D"} + width_char = width_map.get(width, width[0] if width else "?") # Usa primera letra si no mapeado + + return f"{area}{width_char}[{reg},{p_format_offset}]" + + # Intenta reconstruir dirección absoluta + # CORREGIDO: Añadido namespaces=ns + address_elem = access_element.xpath("./stl:Address", namespaces=ns) + if address_elem: + area = address_elem[0].get("Area", "??") + bit_offset_str = address_elem[0].get("BitOffset", "0") + addr_type_str = address_elem[0].get("Type", "Bool") # Obtener tipo para ancho + try: + bit_offset = int(bit_offset_str) + byte_offset = bit_offset // 8 + bit_in_byte = bit_offset % 8 + # Determinar ancho basado en tipo (simplificación) + addr_width = "X" # Default a Bit + if addr_type_str == "Byte": addr_width = "B" + elif addr_type_str == "Word": addr_width = "W" + elif addr_type_str in ["DWord", "DInt"]: addr_width = "D" + # Añadir más tipos si es necesario (Real, etc.) + + # Mapear Area para STL estándar + area_map = { "Input": "I", "Output": "Q", "Memory": "M", + "PeripheryInput": "PI", "PeripheryOutput": "PQ", + "DB": "DB", "DI": "DI", "Local": "L", # L no siempre válido aquí + "Timer": "T", "Counter": "C" } + stl_area = area_map.get(area, area) + + # Manejar DB/DI que necesitan número de bloque + if stl_area in ["DB", "DI"]: + block_num = address_elem[0].get("BlockNumber") + if block_num: + return f"{stl_area}{block_num}.{stl_area}{addr_width}{byte_offset}.{bit_in_byte}" # Ej: DB1.DBX0.1 + else: # Acceso con registro DB/DI + return f"{stl_area}{addr_width}{byte_offset}.{bit_in_byte}" # Ej: DBX0.1 + elif stl_area in ["T", "C"]: + return f"{stl_area}{byte_offset}" # Los timers/contadores solo usan el número + else: # I, Q, M, L, PI, PQ + return f"{stl_area}{addr_width}{byte_offset}.{bit_in_byte}" # Ej: M10.1, I0.0 + + except ValueError: + return f"{area}?{bit_offset_str}?" + + return f"_{scope}_?" # Fallback + +def get_comment_text(comment_element): + """Extrae texto de un LineComment o Comment.""" + if comment_element is None: return "" + # Usar get_multilingual_text si los comentarios son multilingües + # Si no, extraer texto directamente + ml_texts = comment_element.xpath(".//mlt:MultilingualTextItem/mlt:AttributeList/mlt:Text/text()", + namespaces={'mlt': "http://www.siemens.com/automation/Openness/SW/Interface/v5"}) # Asumiendo ns + if ml_texts: + # Podrías intentar obtener un idioma específico o simplemente el primero + return ml_texts[0].strip() if ml_texts else "" + + # Fallback a texto directo si no hay estructura multilingüe + text_nodes = comment_element.xpath("./text()") + return "".join(text_nodes).strip() + +def reconstruct_stl_from_statementlist(statement_list_node): + """Reconstruye el código STL como una cadena de texto desde .""" + if statement_list_node is None: + return "// Error: StatementList node not found.\n" + + stl_lines = [] + # CORREGIDO: Añadido namespaces=ns + statements = statement_list_node.xpath("./stl:StlStatement", namespaces=ns) + + for stmt in statements: + line_parts = [] + line_comment = "" # Comentario al final de la línea + + # 1. Comentarios al inicio de la línea (como líneas separadas //) + # CORREGIDO: Añadido namespaces=ns + initial_comments = stmt.xpath("child::stl:Comment | child::stl:LineComment", namespaces=ns) + for comm in initial_comments: + comment_text = get_comment_text(comm) + if comment_text: + # Dividir comentarios multilínea en varias líneas // + for comment_line in comment_text.splitlines(): + stl_lines.append(f"// {comment_line}") + + # 2. Etiqueta (si existe) + # CORREGIDO: Añadido namespaces=ns + label_decl = stmt.xpath("./stl:LabelDeclaration", namespaces=ns) + label_str = "" + if label_decl: + # CORREGIDO: Añadido namespaces=ns + label_name_nodes = label_decl[0].xpath("./stl:Label/@Name", namespaces=ns) + if label_name_nodes: + label_str = f"{label_name_nodes[0]}:" + # Buscar comentarios DENTRO de LabelDeclaration pero después de Label + # CORREGIDO: Añadido namespaces=ns + label_comments = label_decl[0].xpath("./stl:Comment | ./stl:LineComment", namespaces=ns) + for lcomm in label_comments: + comment_text = get_comment_text(lcomm) + if comment_text: line_comment += f" // {comment_text}" # Añadir al comentario de línea + + # 3. Token de Instrucción STL + # CORREGIDO: Añadido namespaces=ns + instruction_token = stmt.xpath("./stl:StlToken", namespaces=ns) + instruction_str = "" + if instruction_token: + token_text = instruction_token[0].get("Text", "_ERR_TOKEN_") + instruction_str = token_text + # Comentarios asociados directamente al token + # CORREGIDO: Añadido namespaces=ns + token_comments = instruction_token[0].xpath("./stl:Comment | ./stl:LineComment", namespaces=ns) + for tcomm in token_comments: + comment_text = get_comment_text(tcomm) + if comment_text: line_comment += f" // {comment_text}" # Añadir al comentario de línea + + # 4. Acceso/Operando STL + # CORREGIDO: Añadido namespaces=ns + access_elem = stmt.xpath("./stl:Access", namespaces=ns) + access_str = "" + if access_elem: + access_text = get_access_text(access_elem[0]) + access_str = access_text + # Comentarios DENTRO del Access (pueden ser de línea o bloque) + # CORREGIDO: Añadido namespaces=ns + access_comments = access_elem[0].xpath("child::stl:LineComment | child::stl:Comment", namespaces=ns) + for acc_comm in access_comments: + comment_text = get_comment_text(acc_comm) + if comment_text: line_comment += f" // {comment_text}" # Añadir al comentario de línea + + # Construir la línea: Etiqueta (si hay) + Tab + Instrucción + Espacio + Operando (si hay) + Comentario(s) + current_line = "" + if label_str: + current_line += label_str + if instruction_str: + if current_line: # Si ya había etiqueta, añadir tabulador + current_line += "\t" + current_line += instruction_str + if access_str: + if current_line: # Si ya había algo, añadir espacio + current_line += " " + current_line += access_str + if line_comment: + # Añadir espacio antes del comentario si hay código en la línea + if current_line.strip(): + current_line += f" {line_comment}" + else: # Si la línea estaba vacía (solo comentarios iniciales), poner el comentario de línea + current_line = line_comment + + # Añadir la línea construida solo si no está vacía + if current_line.strip(): + stl_lines.append(current_line.rstrip()) # Eliminar espacios finales + + return "\n".join(stl_lines) + +# --- Main Parsing Function --- + def parse_network(network_element): """ Parsea una red, extrae lógica y añade conexiones EN implícitas. @@ -792,8 +1036,6 @@ def parse_network(network_element): "logic": network_logic_final, } - -# --- Función Principal convert_xml_to_json (sin cambios en su flujo general) --- def convert_xml_to_json(xml_filepath, json_filepath): print(f"Iniciando conversión de '{xml_filepath}' a '{json_filepath}'...") if not os.path.exists(xml_filepath): @@ -989,6 +1231,38 @@ def convert_xml_to_json(xml_filepath, json_filepath): ], } + # --- NUEVO MANEJO STL --- + elif programming_language == "STL": + statement_list_node = ( + network_source_node.xpath("./stl:StatementList", namespaces=ns) + if network_source_node is not None + else None + ) + + reconstructed_stl = f"// STL extraction failed for Network {network_id}: StatementList node not found.\n" + if statement_list_node: + print(f" Reconstruyendo STL desde StatementList para red {network_id}...") + # Llama a la nueva función de reconstrucción STL + reconstructed_stl = reconstruct_stl_from_statementlist(statement_list_node[0]) + # print(f" ... STL reconstruido (parcial):\n{reconstructed_stl[:200]}...") # Preview opcional + else: + print(f" Advertencia: No se encontró nodo para red STL {network_id}.") + + # Guardar como un chunk de texto crudo + parsed_network_data = { + "id": network_id, + "title": network_title, + "comment": network_comment, + "language": "STL", # Indicar que es STL + "logic": [ + { + "instruction_uid": f"STL_{network_id}", # UID inventado + "type": "RAW_STL_CHUNK", # Nuevo tipo para identificarlo + "stl": reconstructed_stl, # Guardar el texto reconstruido + } + ], + } + elif programming_language in ["LAD", "FBD"]: # Para LAD/FBD, llamar a parse_network (que espera FlgNet dentro de NetworkSource) # parse_network ya maneja su propio título/comentario si es necesario, pero podemos pasar los extraídos @@ -1066,41 +1340,46 @@ def convert_xml_to_json(xml_filepath, json_filepath): traceback.print_exc() print("--- Fin Traceback ---") - -# --- Punto de Entrada Principal --- if __name__ == "__main__": # Imports necesarios solo para la ejecución como script principal import argparse import os import sys + # Configurar ArgumentParser para recibir la ruta del XML obligatoria parser = argparse.ArgumentParser( - description="Convert Simatic XML LAD/FBD to simplified JSON." + description="Convert Simatic XML (LAD/FBD/SCL/STL) to simplified JSON. Expects XML filepath as argument." ) parser.add_argument( - "xml_filepath", - nargs="?", # Argumento opcional - default="TestLAD.xml", # Valor por defecto si se ejecuta sin argumentos - help="Path to the input XML file (default: TestLAD.xml)", + "xml_filepath", # Argumento posicional obligatorio + help="Path to the input XML file passed from the main script (x0_main.py).", ) - args = parser.parse_args() + args = parser.parse_args() # Parsea los argumentos de sys.argv - xml_input_file = args.xml_filepath + xml_input_file = args.xml_filepath # Obtiene la ruta del argumento - # Verificar si el archivo de entrada existe + # Verificar si el archivo de entrada existe (es una buena práctica aunque x0 lo haga) if not os.path.exists(xml_input_file): - print(f"Error Crítico: Archivo XML no encontrado: '{xml_input_file}'") - sys.exit(1) # Salir si el archivo no existe + print(f"Error Crítico (x1): Archivo XML no encontrado: '{xml_input_file}'") + sys.exit(1) # Salir si el archivo no existe # Derivar nombre base para archivo de salida JSON - # os.path.basename obtiene el nombre del archivo de la ruta - # os.path.splitext divide el nombre y la extensión + # El archivo JSON se guardará en el mismo directorio que el XML de entrada xml_filename_base = os.path.splitext(os.path.basename(xml_input_file))[0] - # Construir la ruta de salida en el mismo directorio que el script o el XML - output_dir = os.path.dirname( - xml_input_file - ) # O usar os.path.dirname(__file__) para el directorio del script + output_dir = os.path.dirname(xml_input_file) # Directorio del XML de entrada + # Asegurarse de que el directorio de salida exista (aunque debería si el XML existe) + os.makedirs(output_dir, exist_ok=True) json_output_file = os.path.join(output_dir, f"{xml_filename_base}_simplified.json") - # Llamar a la función principal con los nombres de archivo derivados - convert_xml_to_json(xml_input_file, json_output_file) + print(f"(x1) Convirtiendo: '{os.path.relpath(xml_input_file)}' -> '{os.path.relpath(json_output_file)}'") + + # Llamar a la función principal de conversión del script + # Asumiendo que tu función principal se llama convert_xml_to_json(input_path, output_path) + try: + convert_xml_to_json(xml_input_file, json_output_file) + except Exception as e: + print(f"Error Crítico (x1) durante la conversión de '{xml_input_file}': {e}") + import traceback + traceback.print_exc() + sys.exit(1) # Salir con error si la función principal falla + diff --git a/ToUpload/x2_process.py b/ToUpload/x2_process.py index d7a10a1..fd124d8 100644 --- a/ToUpload/x2_process.py +++ b/ToUpload/x2_process.py @@ -23,8 +23,9 @@ SCL_SUFFIX = "_sympy_processed" # New suffix to indicate processing method GROUPED_COMMENT = "// Logic included in grouped IF" SIMPLIFIED_IF_COMMENT = "// Simplified IF condition by script" # May still be useful - -# Global data variable +# Global data dictionary (consider passing 'data' as argument if needed elsewhere) +# It's currently used by process_group_ifs implicitly via the outer scope, +# which works but passing it explicitly might be cleaner. data = {} def process_group_ifs(instruction, network_id, sympy_map, symbol_manager, data): @@ -33,6 +34,7 @@ def process_group_ifs(instruction, network_id, sympy_map, symbol_manager, data): y, si habilitan un grupo (>1) de bloques funcionales (con SCL ya generado), construye el bloque IF agrupado CON LA CONDICIÓN SIMPLIFICADA. Modifica el campo 'scl' de la instrucción generadora de condición. + (Esta es la implementación de la función como la tenías en el archivo original) """ instr_uid = instruction["instruction_uid"] instr_type_original = instruction.get("type", "").replace(SCL_SUFFIX, "").replace("_error", "") @@ -215,45 +217,47 @@ def load_processors(processors_dir="processors"): # Devolver el mapa (para lookup rápido si es necesario) y la lista ordenada return processor_map, processor_list_sorted -# --- Bucle Principal de Procesamiento (Modificado) --- +# --- Bucle Principal de Procesamiento (Modificado para STL) --- def process_json_to_scl(json_filepath): """ Lee el JSON simplificado, aplica los procesadores dinámicamente cargados - siguiendo un orden de prioridad, y guarda el JSON procesado. + siguiendo un orden de prioridad (ignorando redes STL), y guarda el JSON procesado. """ - global data # Necesario si process_group_ifs (definido fuera) accede a data globalmente. - # Si process_group_ifs está definida DENTRO de process_json_to_scl, - # no necesitarías global, ya que accedería a la 'data' local. - # Lo más limpio es definir process_group_ifs fuera y pasarle 'data' - # como argumento (como ya se hace). Así que 'global data' aquí es probablemente innecesario. - # Eliminémoslo por ahora y aseguremos que data se pasa a process_group_ifs. + global data # Necesario para que load_processors y process_group_ifs (definidas fuera) puedan acceder a ella. + # Considerar pasar 'data' como argumento si es posible refactorizar. - if not os.path.exists(json_filepath): print(f"Error: JSON no encontrado: {json_filepath}"); return + if not os.path.exists(json_filepath): + print(f"Error: JSON no encontrado: {json_filepath}") + return print(f"Cargando JSON desde: {json_filepath}") try: - with open(json_filepath, "r", encoding="utf-8") as f: data = json.load(f) - except Exception as e: print(f"Error al cargar JSON: {e}"); traceback.print_exc(); return + with open(json_filepath, "r", encoding="utf-8") as f: + data = json.load(f) # Carga en 'data' global + except Exception as e: + print(f"Error al cargar JSON: {e}") + traceback.print_exc() + return - # --- Carga dinámica de procesadores (sin cambios) --- - script_dir = os.path.dirname(__file__); processors_dir_path = os.path.join(script_dir, 'processors') + # --- Carga dinámica de procesadores --- + script_dir = os.path.dirname(__file__) + processors_dir_path = os.path.join(script_dir, 'processors') processor_map, sorted_processors = load_processors(processors_dir_path) - if not processor_map: print("Error crítico: No se cargaron procesadores. Abortando."); return + if not processor_map: + print("Error crítico: No se cargaron procesadores. Abortando.") + return - # --- Crear mapas de acceso por red (sin cambios) --- + # --- Crear mapas de acceso por red --- network_access_maps = {} - # ... (logic to populate network_access_maps remains the same) ... + # (La lógica para llenar network_access_maps no cambia, puedes copiarla de tu original) for network in data.get("networks", []): net_id = network["id"] current_access_map = {} - # Extraer todos los 'Access' usados en esta red for instr in network.get("logic", []): - # Revisar Inputs for _, source in instr.get("inputs", {}).items(): sources_to_check = (source if isinstance(source, list) else ([source] if isinstance(source, dict) else [])) for src in sources_to_check: if (isinstance(src, dict) and src.get("uid") and src.get("type") in ["variable", "constant"]): current_access_map[src["uid"]] = src - # Revisar Outputs for _, dest_list in instr.get("outputs", {}).items(): if isinstance(dest_list, list): for dest in dest_list: @@ -261,12 +265,9 @@ def process_json_to_scl(json_filepath): current_access_map[dest["uid"]] = dest network_access_maps[net_id] = current_access_map - # --- Inicializar mapa SymPy y SymbolManager por red --- - # Cada red puede tener su propio contexto de símbolos si es necesario, - # pero un SymbolManager global suele ser suficiente si no hay colisiones graves. - # Usaremos uno global por simplicidad ahora. + # --- Inicializar mapa SymPy y SymbolManager --- symbol_manager = SymbolManager() - sympy_map = {} # Mapa para resultados SymPy intermedios (expresiones) + sympy_map = {} max_passes = 30 passes = 0 @@ -275,23 +276,27 @@ def process_json_to_scl(json_filepath): print("\n--- Iniciando Bucle de Procesamiento Iterativo (con SymPy y prioridad) ---") while passes < max_passes and not processing_complete: passes += 1 - made_change_in_base_pass = False # Renombrar: made_change_in_sympy_pass + made_change_in_base_pass = False made_change_in_group_pass = False - # made_change_in_simplify_pass = False # Ya no existe Fase 3 print(f"\n--- Pase {passes} ---") - num_processed_this_pass = 0 # Renombrar: num_sympy_processed_this_pass + num_sympy_processed_this_pass = 0 num_grouped_this_pass = 0 - # num_simplified_this_pass = 0 # Ya no existe Fase 3 - # --- FASE 1: Procesadores Base (Ahora usan SymPy) --- + # --- FASE 1: Procesadores Base (Ignorando STL) --- print(f" Fase 1 (SymPy Base - Orden por Prioridad):") - num_sympy_processed_this_pass = 0 # Contador específico + num_sympy_processed_this_pass = 0 for processor_info in sorted_processors: current_type_name = processor_info['type_name'] func_to_call = processor_info['func'] for network in data.get("networks", []): network_id = network["id"] + network_lang = network.get("language", "LAD") # Obtener lenguaje de la red + + # *** IGNORAR REDES STL EN ESTA FASE *** + if network_lang == "STL": + continue # Saltar al siguiente network + access_map = network_access_maps.get(network_id, {}) network_logic = network.get("logic", []) @@ -299,25 +304,26 @@ def process_json_to_scl(json_filepath): instr_uid = instruction.get("instruction_uid") instr_type_original = instruction.get("type", "Unknown") - # Saltar si ya está procesado con el NUEVO método, es error, o agrupado - if (instr_type_original.endswith(SCL_SUFFIX) # Check new suffix + # Saltar si ya procesado, error, agrupado o es chunk STL/SCL/Unsupported + if (instr_type_original.endswith(SCL_SUFFIX) or "_error" in instr_type_original - or instruction.get("grouped", False)): + or instruction.get("grouped", False) + or instr_type_original in ["RAW_STL_CHUNK", "RAW_SCL_CHUNK", "UNSUPPORTED_LANG"]): continue # Determinar tipo efectivo (como antes) lookup_key = instr_type_original.lower() effective_type_name = lookup_key - if instr_type_original == "Call": # ... (manejo Call FC/FB) ... + if instr_type_original == "Call": block_type = instruction.get("block_type", "").upper() if block_type == "FC": effective_type_name = "call_fc" elif block_type == "FB": effective_type_name = "call_fb" + # Llamar al procesador si coincide el tipo if effective_type_name == current_type_name: try: - # *** Llamar al procesador refactorizado *** - # Pasa sympy_map y symbol_manager, no scl_map - changed = func_to_call(instruction, network_id, sympy_map, symbol_manager, data) # Pasamos SymbolManager + # Pasa sympy_map, symbol_manager y data + changed = func_to_call(instruction, network_id, sympy_map, symbol_manager, data) if changed: made_change_in_base_pass = True num_sympy_processed_this_pass += 1 @@ -326,24 +332,26 @@ def process_json_to_scl(json_filepath): traceback.print_exc() instruction["scl"] = f"// ERROR en SymPy procesador base: {e}" instruction["type"] = instr_type_original + "_error" - made_change_in_base_pass = True - print(f" -> {num_sympy_processed_this_pass} instrucciones procesadas con SymPy.") + made_change_in_base_pass = True # Marcar cambio aunque sea error + print(f" -> {num_sympy_processed_this_pass} instrucciones (no STL) procesadas con SymPy.") - # --- FASE 2: Agrupación IF (Ahora usa SymPy para simplificar) --- - # Ejecutar si hubo cambios en base o es el primer pase + # --- FASE 2: Agrupación IF (Ignorando STL) --- if made_change_in_base_pass or passes == 1: print(f" Fase 2 (Agrupación IF con Simplificación):") - num_grouped_this_pass = 0 # Reiniciar contador + num_grouped_this_pass = 0 for network in data.get("networks", []): network_id = network["id"] - # access_map = network_access_maps.get(network_id, {}) # No usado directamente por group_ifs + network_lang = network.get("language", "LAD") # Obtener lenguaje + + # *** IGNORAR REDES STL EN ESTA FASE *** + if network_lang == "STL": + continue # Saltar red STL + network_logic = network.get("logic", []) - # Iterar sobre instrucciones que *pueden* generar condiciones booleanas for instruction in network_logic: - # process_group_ifs ahora verifica internamente si la instr. fue procesada try: - # *** Llamar a process_group_ifs adaptado *** + # Llama a process_group_ifs (que necesita acceso a 'data' global o pasado) group_changed = process_group_ifs(instruction, network_id, sympy_map, symbol_manager, data) if group_changed: made_change_in_group_pass = True @@ -351,17 +359,14 @@ def process_json_to_scl(json_filepath): except Exception as e: print(f"ERROR(GroupLoop) al intentar agrupar desde UID {instruction.get('instruction_uid')}: {e}") traceback.print_exc() - print(f" -> {num_grouped_this_pass} agrupaciones realizadas.") + print(f" -> {num_grouped_this_pass} agrupaciones realizadas (en redes no STL).") - # --- FASE 3 Eliminada --- # --- Comprobar si se completó el procesamiento --- - # Solo considera Fase 1 (SymPy Base) y Fase 2 (Grouping) if not made_change_in_base_pass and not made_change_in_group_pass: print(f"\n--- No se hicieron más cambios en el pase {passes}. Proceso iterativo completado. ---") processing_complete = True else: - # Mensaje de fin de pase actualizado print(f"--- Fin Pase {passes}: {num_sympy_processed_this_pass} proc SymPy, {num_grouped_this_pass} agrup. Continuando...") # --- Comprobar límite de pases --- @@ -370,46 +375,45 @@ def process_json_to_scl(json_filepath): # --- FIN BUCLE ITERATIVO --- - # --- Verificación Final --- - # La lógica aquí podría necesitar ajustes si el sufijo cambió o si el SCL final - # solo se genera en instrucciones terminales. + # --- Verificación Final (Ajustada para RAW_STL_CHUNK) --- print("\n--- Verificación Final de Instrucciones No Procesadas ---") unprocessed_count = 0 unprocessed_details = [] - ignored_types = ['raw_scl_chunk', 'unsupported_lang'] + # Añadir RAW_STL_CHUNK a los tipos ignorados + ignored_types = ['raw_scl_chunk', 'unsupported_lang', 'raw_stl_chunk'] # Añadido raw_stl_chunk for network in data.get("networks", []): network_id = network.get("id", "Unknown ID") network_title = network.get("title", f"Network {network_id}") + network_lang = network.get("language", "LAD") # Obtener lenguaje + + # No verificar instrucciones dentro de redes STL, ya que no se procesan + if network_lang == "STL": + continue + for instruction in network.get("logic", []): instr_uid = instruction.get("instruction_uid", "Unknown UID") instr_type = instruction.get("type", "Unknown Type") is_grouped = instruction.get("grouped", False) - has_final_scl = bool(instruction.get("scl", "").strip()) and not instruction.get("scl", "").strip().startswith("//") - # Condición revisada: No tiene el sufijo nuevo Y no es error Y no está agrupada Y no es tipo ignorado - # Y ADEMÁS, ¿debería tener SCL final si es una instr. terminal? - # Simplificación: si no tiene sufijo, no es error, no agrupada, no ignorada -> problema + # Condición revisada para ignorar los chunks crudos if (not instr_type.endswith(SCL_SUFFIX) and "_error" not in instr_type and not is_grouped and - instr_type.lower() not in ignored_types): + instr_type.lower() not in ignored_types): # Verifica contra lista actualizada unprocessed_count += 1 unprocessed_details.append( - f" - Red '{network_title}' (ID: {network_id}), " - f"Instrucción UID: {instr_uid}, Tipo Original: '{instr_type}'" + f" - Red '{network_title}' (ID: {network_id}, Lang: {network_lang}), " + f"Instrucción UID: {instr_uid}, Tipo: '{instr_type}'" ) - # Opcional: añadir si tiene SCL o no - # unprocessed_details[-1] += f" (Tiene SCL final: {has_final_scl})" - if unprocessed_count > 0: - print(f"ADVERTENCIA: Se encontraron {unprocessed_count} instrucciones que no fueron procesadas:") + print(f"ADVERTENCIA: Se encontraron {unprocessed_count} instrucciones (no STL) que parecen no haber sido procesadas:") for detail in unprocessed_details: print(detail) else: - print("INFO: Todas las instrucciones relevantes parecen haber sido procesadas o agrupadas.") + print("INFO: Todas las instrucciones relevantes (no STL) parecen haber sido procesadas o agrupadas.") - # --- Guardar JSON Final (sin cambios) --- + # --- Guardar JSON Final --- output_filename = json_filepath.replace("_simplified.json", "_simplified_processed.json") print(f"\nGuardando JSON procesado en: {output_filename}") try: @@ -420,28 +424,55 @@ def process_json_to_scl(json_filepath): print(f"Error Crítico al guardar JSON procesado: {e}") traceback.print_exc() - -# --- Ejecución (igual que antes) --- +# --- Ejecución (sin cambios) --- if __name__ == "__main__": - parser = argparse.ArgumentParser(description="Process simplified JSON to embed SCL logic.") - parser.add_argument( - "source_xml_filepath", - nargs="?", - default="TestLAD.xml", - help="Path to the original source XML file (used to derive JSON input name, default: TestLAD.xml)" + # Imports necesarios solo para la ejecución como script principal + import argparse + import os + import sys + + # Configurar ArgumentParser para recibir la ruta del XML original obligatoria + parser = argparse.ArgumentParser( + description="Process simplified JSON (_simplified.json) to embed SCL logic (SymPy version). Expects original XML filepath as argument." ) - args = parser.parse_args() + parser.add_argument( + "source_xml_filepath", # Argumento posicional obligatorio + help="Path to the original source XML file (passed from x0_main.py, used to derive JSON input name).", + ) + args = parser.parse_args() # Parsea los argumentos de sys.argv - xml_filename_base = os.path.splitext(os.path.basename(args.source_xml_filepath))[0] - # Usar directorio del script actual si el XML no tiene ruta, o la ruta del XML si la tiene - xml_dir = os.path.dirname(args.source_xml_filepath) - input_dir = xml_dir if xml_dir else os.path.dirname(__file__) # Directorio de entrada/salida + source_xml_file = args.source_xml_filepath # Obtiene la ruta del XML original + # Verificar si el archivo XML original existe (como referencia, útil para depuración) + # No es estrictamente necesario para la lógica aquí, pero ayuda a confirmar + if not os.path.exists(source_xml_file): + print(f"Advertencia (x2): Archivo XML original no encontrado: '{source_xml_file}', pero se intentará encontrar el JSON correspondiente.") + # No salir necesariamente, pero es bueno saberlo. + + # Derivar nombre del archivo JSON de entrada (_simplified.json) + xml_filename_base = os.path.splitext(os.path.basename(source_xml_file))[0] + # Asumir que el JSON simplificado está en el mismo directorio que el XML original + input_dir = os.path.dirname(source_xml_file) # Directorio del XML original input_json_file = os.path.join(input_dir, f"{xml_filename_base}_simplified.json") + # Determinar el nombre esperado del archivo JSON procesado de salida + output_json_file = os.path.join(input_dir, f"{xml_filename_base}_simplified_processed.json") + + print(f"(x2) Procesando: '{os.path.relpath(input_json_file)}' -> '{os.path.relpath(output_json_file)}'") + + + # Verificar si el archivo JSON de entrada (_simplified.json) EXISTE antes de procesar if not os.path.exists(input_json_file): - print(f"Error Fatal: El archivo de entrada JSON simplificado no existe: '{input_json_file}'") - print(f"Asegúrate de haber ejecutado 'x1_to_json.py' primero sobre '{args.source_xml_filepath}'.") - sys.exit(1) + print(f"Error Fatal (x2): El archivo de entrada JSON simplificado no existe: '{input_json_file}'") + print(f"Asegúrate de que 'x1_to_json.py' se ejecutó correctamente para '{os.path.relpath(source_xml_file)}'.") + sys.exit(1) # Salir si el archivo necesario no está else: - process_json_to_scl(input_json_file) \ No newline at end of file + # Llamar a la función principal de procesamiento del script + # Asumiendo que tu función principal se llama process_json_to_scl(input_json_path) + try: + process_json_to_scl(input_json_file) + except Exception as e: + print(f"Error Crítico (x2) durante el procesamiento de '{input_json_file}': {e}") + import traceback + traceback.print_exc() + sys.exit(1) # Salir con error si la función principal falla \ No newline at end of file diff --git a/ToUpload/x3_generate_scl.py b/ToUpload/x3_generate_scl.py index 66207c4..0551f51 100644 --- a/ToUpload/x3_generate_scl.py +++ b/ToUpload/x3_generate_scl.py @@ -212,49 +212,73 @@ def generate_scl(processed_json_filepath, output_scl_filepath): scl_output.append("") network_has_code = False - # Iterar sobre la 'logica' de la red - for instruction in network.get('logic', []): - instruction_type = instruction.get("type", "") - scl_code = instruction.get('scl', "") # Obtener SCL generado por x2 - # Saltar instrucciones agrupadas - if instruction.get("grouped", False): - continue + # --- NUEVO MANEJO STL con formato Markdown --- + if network_lang == "STL": + network_has_code = True # Marcar que la red tiene contenido + if network.get('logic') and isinstance(network['logic'], list) and len(network['logic']) > 0: + stl_chunk = network['logic'][0] + if stl_chunk.get("type") == "RAW_STL_CHUNK" and "stl" in stl_chunk: + raw_stl_code = stl_chunk["stl"] + # Añadir marcador de inicio (como comentario SCL para evitar errores) + scl_output.append(f" {'//'} ```STL") # Doble '//' para asegurar que sea comentario + # Escribir el código STL crudo, indentado + for stl_line in raw_stl_code.splitlines(): + # Añadir indentación estándar de SCL + scl_output.append(f" {stl_line}") # <-- STL sin comentar + # Añadir marcador de fin (como comentario SCL) + scl_output.append(f" {'//'} ```") + else: + scl_output.append(" // ERROR: Contenido STL inesperado en JSON.") + else: + scl_output.append(" // ERROR: No se encontró lógica STL en JSON para esta red.") + scl_output.append("") # Línea en blanco después de la red STL + # --- FIN NUEVO MANEJO STL con formato Markdown --- + else: - # Escribir SCL si es un tipo procesado y tiene código relevante - # (Ignorar comentarios de depuración de SymPy) - if instruction_type.endswith(SCL_SUFFIX) and scl_code: - is_internal_sympy_comment_only = scl_code.strip().startswith("// SymPy") or \ - scl_code.strip().startswith("// PBox SymPy processed") or \ - scl_code.strip().startswith("// NBox SymPy processed") - # O podría ser más genérico: ignorar cualquier línea que solo sea comentario SCL - is_only_comment = all(line.strip().startswith("//") for line in scl_code.splitlines()) + # Iterar sobre la 'logica' de la red + for instruction in network.get('logic', []): + instruction_type = instruction.get("type", "") + scl_code = instruction.get('scl', "") # Obtener SCL generado por x2 + + # Saltar instrucciones agrupadas + if instruction.get("grouped", False): + continue + + # Escribir SCL si es un tipo procesado y tiene código relevante + # (Ignorar comentarios de depuración de SymPy) + if instruction_type.endswith(SCL_SUFFIX) and scl_code: + is_internal_sympy_comment_only = scl_code.strip().startswith("// SymPy") or \ + scl_code.strip().startswith("// PBox SymPy processed") or \ + scl_code.strip().startswith("// NBox SymPy processed") + # O podría ser más genérico: ignorar cualquier línea que solo sea comentario SCL + is_only_comment = all(line.strip().startswith("//") for line in scl_code.splitlines()) - # Escribir solo si NO es un comentario interno de SymPy O si es un bloque IF (que sí debe escribirse) - if not is_only_comment or scl_code.strip().startswith("IF"): + # Escribir solo si NO es un comentario interno de SymPy O si es un bloque IF (que sí debe escribirse) + if not is_only_comment or scl_code.strip().startswith("IF"): + network_has_code = True + for line in scl_code.splitlines(): + # Añadir indentación estándar + scl_output.append(f" {line}") + + # Incluir también tipos especiales directamente + elif instruction_type in ["RAW_SCL_CHUNK", "UNSUPPORTED_LANG"] and scl_code: network_has_code = True for line in scl_code.splitlines(): - # Añadir indentación estándar - scl_output.append(f" {line}") + scl_output.append(f" {line}") # Indentar - # Incluir también tipos especiales directamente - elif instruction_type in ["RAW_SCL_CHUNK", "UNSUPPORTED_LANG"] and scl_code: - network_has_code = True - for line in scl_code.splitlines(): - scl_output.append(f" {line}") # Indentar - - # Podríamos añadir comentarios para errores si se desea - # elif "_error" in instruction_type: - # network_has_code = True - # scl_output.append(f" // ERROR processing instruction UID {instruction.get('instruction_uid')}: {instruction.get('scl', 'No details')}") + # Podríamos añadir comentarios para errores si se desea + # elif "_error" in instruction_type: + # network_has_code = True + # scl_output.append(f" // ERROR processing instruction UID {instruction.get('instruction_uid')}: {instruction.get('scl', 'No details')}") - if network_has_code: - scl_output.append("") # Línea en blanco después del código de la red - else: - scl_output.append(f" // Network did not produce printable SCL code.") - scl_output.append("") + if network_has_code: + scl_output.append("") # Línea en blanco después del código de la red + else: + scl_output.append(f" // Network did not produce printable SCL code.") + scl_output.append("") # Fin del bloque scl_output.append("END_FUNCTION_BLOCK") # O END_FUNCTION si es FC @@ -273,26 +297,51 @@ def generate_scl(processed_json_filepath, output_scl_filepath): # --- Ejecución --- if __name__ == "__main__": - parser = argparse.ArgumentParser(description="Generate final SCL file from processed JSON (SymPy version).") - parser.add_argument( - "source_xml_filepath", - nargs="?", - default="TestLAD.xml", - help="Path to the original source XML file (used to derive input/output names, default: TestLAD.xml)" - ) - args = parser.parse_args() + # Imports necesarios solo para la ejecución como script principal + import argparse + import os + import sys + import traceback # Asegurarse que traceback está importado si se usa en generate_scl - xml_filename_base = os.path.splitext(os.path.basename(args.source_xml_filepath))[0] - # Usar directorio del script si no hay ruta, o la ruta del XML si la tiene - xml_dir = os.path.dirname(args.source_xml_filepath) - base_dir = xml_dir if xml_dir else os.path.dirname(__file__) + # Configurar ArgumentParser para recibir la ruta del XML original obligatoria + parser = argparse.ArgumentParser( + description="Generate final SCL file from processed JSON (_simplified_processed.json). Expects original XML filepath as argument." + ) + parser.add_argument( + "source_xml_filepath", # Argumento posicional obligatorio + help="Path to the original source XML file (passed from x0_main.py, used to derive input/output names).", + ) + args = parser.parse_args() # Parsea los argumentos de sys.argv + + source_xml_file = args.source_xml_filepath # Obtiene la ruta del XML original + + # Verificar si el archivo XML original existe (como referencia) + if not os.path.exists(source_xml_file): + print(f"Advertencia (x3): Archivo XML original no encontrado: '{source_xml_file}', pero se intentará encontrar el JSON procesado.") + # No salir necesariamente. + + # Derivar nombres de archivos de entrada (JSON procesado) y salida (SCL) + xml_filename_base = os.path.splitext(os.path.basename(source_xml_file))[0] + # Asumir que los archivos están en el mismo directorio que el XML original + base_dir = os.path.dirname(source_xml_file) # Directorio del XML original input_json_file = os.path.join(base_dir, f"{xml_filename_base}_simplified_processed.json") output_scl_file = os.path.join(base_dir, f"{xml_filename_base}_simplified_processed.scl") + print(f"(x3) Generando SCL: '{os.path.relpath(input_json_file)}' -> '{os.path.relpath(output_scl_file)}'") + + # Verificar si el archivo JSON procesado de entrada EXISTE if not os.path.exists(input_json_file): - print(f"Error: Processed JSON file not found: '{input_json_file}'") - print(f"Ensure 'x2_process.py' ran successfully for '{args.source_xml_filepath}'.") - sys.exit(1) + print(f"Error Fatal (x3): Archivo JSON procesado no encontrado: '{input_json_file}'") + print(f"Asegúrate de que 'x2_process.py' se ejecutó correctamente para '{os.path.relpath(source_xml_file)}'.") + sys.exit(1) # Salir si el archivo necesario no está else: - generate_scl(input_json_file, output_scl_file) \ No newline at end of file + # Llamar a la función principal de generación SCL del script + # Asumiendo que tu función principal se llama generate_scl(input_json_path, output_scl_path) + try: + generate_scl(input_json_file, output_scl_file) + except Exception as e: + print(f"Error Crítico (x3) durante la generación de SCL desde '{input_json_file}': {e}") + # traceback ya debería estar importado si generate_scl lo necesita + traceback.print_exc() + sys.exit(1) # Salir con error si la función principal falla \ No newline at end of file diff --git a/x0_main.py b/x0_main.py index b82e9d2..f14f918 100644 --- a/x0_main.py +++ b/x0_main.py @@ -97,6 +97,81 @@ def select_xml_file(): if __name__ == "__main__": + # Imports necesarios para esta sección + import os + import sys + import glob # Asegúrate de que glob esté importado al principio del archivo + + # Directorio base donde buscar los archivos XML (relativo al script) + base_search_dir = "XML Project" + script_dir = os.path.dirname(__file__) # Directorio donde está x0_main.py + xml_project_dir = os.path.join(script_dir, base_search_dir) + + print(f"Buscando archivos XML recursivamente en: '{xml_project_dir}'") + + # Verificar si el directorio 'XML Project' existe + if not os.path.isdir(xml_project_dir): + print(f"Error: El directorio '{xml_project_dir}' no existe o no es un directorio.") + print("Por favor, crea el directorio 'XML Project' en la misma carpeta que este script y coloca tus archivos XML dentro.") + sys.exit(1) + + # Buscar todos los archivos .xml recursivamente dentro de xml_project_dir + # Usamos os.path.join para construir la ruta de búsqueda correctamente + # y '**/*.xml' para la recursividad con glob + search_pattern = os.path.join(xml_project_dir, '**', '*.xml') + xml_files_found = glob.glob(search_pattern, recursive=True) + + if not xml_files_found: + print(f"No se encontraron archivos XML en '{xml_project_dir}' o sus subdirectorios.") + sys.exit(0) # Salir limpiamente si no hay archivos + + print(f"Se encontraron {len(xml_files_found)} archivos XML para procesar:") + # Ordenar para un procesamiento predecible (opcional) + xml_files_found.sort() + for xml_file in xml_files_found: + # Imprimir la ruta relativa desde el directorio del script para claridad + print(f" - {os.path.relpath(xml_file, script_dir)}") + + # Scripts a ejecutar en secuencia (asegúrate que los nombres son correctos) + script1 = "x1_to_json.py" + script2 = "x2_process.py" + script3 = "x3_generate_scl.py" + + # Procesar cada archivo encontrado + processed_count = 0 + failed_count = 0 + for xml_filepath in xml_files_found: + print(f"\n--- Iniciando pipeline para: {os.path.relpath(xml_filepath, script_dir)} ---") + + # Usar la ruta absoluta para evitar problemas si los scripts cambian de directorio + absolute_xml_filepath = os.path.abspath(xml_filepath) + + # Ejecutar los scripts en secuencia para el archivo actual + # La función run_script ya está definida en tu script x0_main.py + success = True + if not run_script(script1, absolute_xml_filepath): + print(f"\nPipeline falló en el script '{script1}' para el archivo: {os.path.relpath(xml_filepath, script_dir)}") + success = False + elif not run_script(script2, absolute_xml_filepath): + print(f"\nPipeline falló en el script '{script2}' para el archivo: {os.path.relpath(xml_filepath, script_dir)}") + success = False + elif not run_script(script3, absolute_xml_filepath): + print(f"\nPipeline falló en el script '{script3}' para el archivo: {os.path.relpath(xml_filepath, script_dir)}") + success = False + + if success: + print(f"--- Pipeline completado exitosamente para: {os.path.relpath(xml_filepath, script_dir)} ---") + processed_count += 1 + else: + failed_count += 1 + print(f"--- Pipeline falló para: {os.path.relpath(xml_filepath, script_dir)} ---") + + + print("\n--- Resumen Final del Procesamiento ---") + print(f"Total de archivos XML encontrados: {len(xml_files_found)}") + print(f"Archivos procesados exitosamente por el pipeline completo: {processed_count}") + print(f"Archivos que fallaron en algún punto del pipeline: {failed_count}") + print("---------------------------------------") xml_filename = None # Comprobar si se pasó un argumento de línea de comandos diff --git a/x1_to_json.py b/x1_to_json.py index 2e5b0e2..74e78d8 100644 --- a/x1_to_json.py +++ b/x1_to_json.py @@ -341,7 +341,6 @@ def reconstruct_scl_from_tokens(st_node): full_scl = "".join(scl_parts) - # Re-indentar líneas después de IF/THEN, etc. (Simplificado) output_lines = [] indent_level = 0 @@ -1347,33 +1346,40 @@ if __name__ == "__main__": import os import sys + # Configurar ArgumentParser para recibir la ruta del XML obligatoria parser = argparse.ArgumentParser( - description="Convert Simatic XML LAD/FBD to simplified JSON." + description="Convert Simatic XML (LAD/FBD/SCL/STL) to simplified JSON. Expects XML filepath as argument." ) parser.add_argument( - "xml_filepath", - nargs="?", # Argumento opcional - default="TestLAD.xml", # Valor por defecto si se ejecuta sin argumentos - help="Path to the input XML file (default: TestLAD.xml)", + "xml_filepath", # Argumento posicional obligatorio + help="Path to the input XML file passed from the main script (x0_main.py).", ) - args = parser.parse_args() + args = parser.parse_args() # Parsea los argumentos de sys.argv - xml_input_file = args.xml_filepath + xml_input_file = args.xml_filepath # Obtiene la ruta del argumento - # Verificar si el archivo de entrada existe + # Verificar si el archivo de entrada existe (es una buena práctica aunque x0 lo haga) if not os.path.exists(xml_input_file): - print(f"Error Crítico: Archivo XML no encontrado: '{xml_input_file}'") - sys.exit(1) # Salir si el archivo no existe + print(f"Error Crítico (x1): Archivo XML no encontrado: '{xml_input_file}'") + sys.exit(1) # Salir si el archivo no existe # Derivar nombre base para archivo de salida JSON - # os.path.basename obtiene el nombre del archivo de la ruta - # os.path.splitext divide el nombre y la extensión + # El archivo JSON se guardará en el mismo directorio que el XML de entrada xml_filename_base = os.path.splitext(os.path.basename(xml_input_file))[0] - # Construir la ruta de salida en el mismo directorio que el script o el XML - output_dir = os.path.dirname( - xml_input_file - ) # O usar os.path.dirname(__file__) para el directorio del script + output_dir = os.path.dirname(xml_input_file) # Directorio del XML de entrada + # Asegurarse de que el directorio de salida exista (aunque debería si el XML existe) + os.makedirs(output_dir, exist_ok=True) json_output_file = os.path.join(output_dir, f"{xml_filename_base}_simplified.json") - # Llamar a la función principal con los nombres de archivo derivados - convert_xml_to_json(xml_input_file, json_output_file) + print(f"(x1) Convirtiendo: '{os.path.relpath(xml_input_file)}' -> '{os.path.relpath(json_output_file)}'") + + # Llamar a la función principal de conversión del script + # Asumiendo que tu función principal se llama convert_xml_to_json(input_path, output_path) + try: + convert_xml_to_json(xml_input_file, json_output_file) + except Exception as e: + print(f"Error Crítico (x1) durante la conversión de '{xml_input_file}': {e}") + import traceback + traceback.print_exc() + sys.exit(1) # Salir con error si la función principal falla + diff --git a/x2_process.py b/x2_process.py index bef6a4f..fd124d8 100644 --- a/x2_process.py +++ b/x2_process.py @@ -426,67 +426,53 @@ def process_json_to_scl(json_filepath): # --- Ejecución (sin cambios) --- if __name__ == "__main__": - parser = argparse.ArgumentParser(description="Process simplified JSON to embed SCL logic.") - parser.add_argument( - "source_xml_filepath", - nargs="?", - default="TestLAD.xml", - help="Path to the original source XML file (used to derive JSON input name, default: TestLAD.xml)" + # Imports necesarios solo para la ejecución como script principal + import argparse + import os + import sys + + # Configurar ArgumentParser para recibir la ruta del XML original obligatoria + parser = argparse.ArgumentParser( + description="Process simplified JSON (_simplified.json) to embed SCL logic (SymPy version). Expects original XML filepath as argument." ) - args = parser.parse_args() + parser.add_argument( + "source_xml_filepath", # Argumento posicional obligatorio + help="Path to the original source XML file (passed from x0_main.py, used to derive JSON input name).", + ) + args = parser.parse_args() # Parsea los argumentos de sys.argv - xml_filename_base = os.path.splitext(os.path.basename(args.source_xml_filepath))[0] - xml_dir = os.path.dirname(args.source_xml_filepath) - input_dir = xml_dir if xml_dir else os.path.dirname(__file__) + source_xml_file = args.source_xml_filepath # Obtiene la ruta del XML original + # Verificar si el archivo XML original existe (como referencia, útil para depuración) + # No es estrictamente necesario para la lógica aquí, pero ayuda a confirmar + if not os.path.exists(source_xml_file): + print(f"Advertencia (x2): Archivo XML original no encontrado: '{source_xml_file}', pero se intentará encontrar el JSON correspondiente.") + # No salir necesariamente, pero es bueno saberlo. + + # Derivar nombre del archivo JSON de entrada (_simplified.json) + xml_filename_base = os.path.splitext(os.path.basename(source_xml_file))[0] + # Asumir que el JSON simplificado está en el mismo directorio que el XML original + input_dir = os.path.dirname(source_xml_file) # Directorio del XML original input_json_file = os.path.join(input_dir, f"{xml_filename_base}_simplified.json") + # Determinar el nombre esperado del archivo JSON procesado de salida + output_json_file = os.path.join(input_dir, f"{xml_filename_base}_simplified_processed.json") + + print(f"(x2) Procesando: '{os.path.relpath(input_json_file)}' -> '{os.path.relpath(output_json_file)}'") + + + # Verificar si el archivo JSON de entrada (_simplified.json) EXISTE antes de procesar if not os.path.exists(input_json_file): - print(f"Error Fatal: El archivo de entrada JSON simplificado no existe: '{input_json_file}'") - print(f"Asegúrate de haber ejecutado 'x1_to_json.py' primero sobre '{args.source_xml_filepath}'.") - sys.exit(1) + print(f"Error Fatal (x2): El archivo de entrada JSON simplificado no existe: '{input_json_file}'") + print(f"Asegúrate de que 'x1_to_json.py' se ejecutó correctamente para '{os.path.relpath(source_xml_file)}'.") + sys.exit(1) # Salir si el archivo necesario no está else: - process_json_to_scl(input_json_file) - parser = argparse.ArgumentParser(description="Process simplified JSON to embed SCL logic.") - parser.add_argument( - "source_xml_filepath", - nargs="?", - default="TestLAD.xml", - help="Path to the original source XML file (used to derive JSON input name, default: TestLAD.xml)" - ) - args = parser.parse_args() - - xml_filename_base = os.path.splitext(os.path.basename(args.source_xml_filepath))[0] - xml_dir = os.path.dirname(args.source_xml_filepath) - input_dir = xml_dir if xml_dir else os.path.dirname(__file__) - - input_json_file = os.path.join(input_dir, f"{xml_filename_base}_simplified.json") - - if not os.path.exists(input_json_file): - print(f"Error Fatal: El archivo de entrada JSON simplificado no existe: '{input_json_file}'") - print(f"Asegúrate de haber ejecutado 'x1_to_json.py' primero sobre '{args.source_xml_filepath}'.") - sys.exit(1) - else: - process_json_to_scl(input_json_file) - parser = argparse.ArgumentParser(description="Process simplified JSON to embed SCL logic.") - parser.add_argument( - "source_xml_filepath", - nargs="?", - default="TestLAD.xml", - help="Path to the original source XML file (used to derive JSON input name, default: TestLAD.xml)" - ) - args = parser.parse_args() - - xml_filename_base = os.path.splitext(os.path.basename(args.source_xml_filepath))[0] - # Usar directorio del script actual si el XML no tiene ruta, o la ruta del XML si la tiene - xml_dir = os.path.dirname(args.source_xml_filepath) - input_dir = xml_dir if xml_dir else os.path.dirname(__file__) # Directorio de entrada/salida - - input_json_file = os.path.join(input_dir, f"{xml_filename_base}_simplified.json") - - if not os.path.exists(input_json_file): - print(f"Error Fatal: El archivo de entrada JSON simplificado no existe: '{input_json_file}'") - print(f"Asegúrate de haber ejecutado 'x1_to_json.py' primero sobre '{args.source_xml_filepath}'.") - sys.exit(1) - else: - process_json_to_scl(input_json_file) \ No newline at end of file + # Llamar a la función principal de procesamiento del script + # Asumiendo que tu función principal se llama process_json_to_scl(input_json_path) + try: + process_json_to_scl(input_json_file) + except Exception as e: + print(f"Error Crítico (x2) durante el procesamiento de '{input_json_file}': {e}") + import traceback + traceback.print_exc() + sys.exit(1) # Salir con error si la función principal falla \ No newline at end of file diff --git a/x3_generate_scl.py b/x3_generate_scl.py index edea599..0551f51 100644 --- a/x3_generate_scl.py +++ b/x3_generate_scl.py @@ -297,26 +297,51 @@ def generate_scl(processed_json_filepath, output_scl_filepath): # --- Ejecución --- if __name__ == "__main__": - parser = argparse.ArgumentParser(description="Generate final SCL file from processed JSON (SymPy version).") - parser.add_argument( - "source_xml_filepath", - nargs="?", - default="TestLAD.xml", - help="Path to the original source XML file (used to derive input/output names, default: TestLAD.xml)" - ) - args = parser.parse_args() + # Imports necesarios solo para la ejecución como script principal + import argparse + import os + import sys + import traceback # Asegurarse que traceback está importado si se usa en generate_scl - xml_filename_base = os.path.splitext(os.path.basename(args.source_xml_filepath))[0] - # Usar directorio del script si no hay ruta, o la ruta del XML si la tiene - xml_dir = os.path.dirname(args.source_xml_filepath) - base_dir = xml_dir if xml_dir else os.path.dirname(__file__) + # Configurar ArgumentParser para recibir la ruta del XML original obligatoria + parser = argparse.ArgumentParser( + description="Generate final SCL file from processed JSON (_simplified_processed.json). Expects original XML filepath as argument." + ) + parser.add_argument( + "source_xml_filepath", # Argumento posicional obligatorio + help="Path to the original source XML file (passed from x0_main.py, used to derive input/output names).", + ) + args = parser.parse_args() # Parsea los argumentos de sys.argv + + source_xml_file = args.source_xml_filepath # Obtiene la ruta del XML original + + # Verificar si el archivo XML original existe (como referencia) + if not os.path.exists(source_xml_file): + print(f"Advertencia (x3): Archivo XML original no encontrado: '{source_xml_file}', pero se intentará encontrar el JSON procesado.") + # No salir necesariamente. + + # Derivar nombres de archivos de entrada (JSON procesado) y salida (SCL) + xml_filename_base = os.path.splitext(os.path.basename(source_xml_file))[0] + # Asumir que los archivos están en el mismo directorio que el XML original + base_dir = os.path.dirname(source_xml_file) # Directorio del XML original input_json_file = os.path.join(base_dir, f"{xml_filename_base}_simplified_processed.json") output_scl_file = os.path.join(base_dir, f"{xml_filename_base}_simplified_processed.scl") + print(f"(x3) Generando SCL: '{os.path.relpath(input_json_file)}' -> '{os.path.relpath(output_scl_file)}'") + + # Verificar si el archivo JSON procesado de entrada EXISTE if not os.path.exists(input_json_file): - print(f"Error: Processed JSON file not found: '{input_json_file}'") - print(f"Ensure 'x2_process.py' ran successfully for '{args.source_xml_filepath}'.") - sys.exit(1) + print(f"Error Fatal (x3): Archivo JSON procesado no encontrado: '{input_json_file}'") + print(f"Asegúrate de que 'x2_process.py' se ejecutó correctamente para '{os.path.relpath(source_xml_file)}'.") + sys.exit(1) # Salir si el archivo necesario no está else: - generate_scl(input_json_file, output_scl_file) \ No newline at end of file + # Llamar a la función principal de generación SCL del script + # Asumiendo que tu función principal se llama generate_scl(input_json_path, output_scl_path) + try: + generate_scl(input_json_file, output_scl_file) + except Exception as e: + print(f"Error Crítico (x3) durante la generación de SCL desde '{input_json_file}': {e}") + # traceback ya debería estar importado si generate_scl lo necesita + traceback.print_exc() + sys.exit(1) # Salir con error si la función principal falla \ No newline at end of file