diff --git a/BlenderCtrl_ProdModeInit_simplified.json.txt b/BlenderCtrl_ProdModeInit_simplified.json
similarity index 60%
rename from BlenderCtrl_ProdModeInit_simplified.json.txt
rename to BlenderCtrl_ProdModeInit_simplified.json
index 8481c8a..c9c59bd 100644
--- a/BlenderCtrl_ProdModeInit_simplified.json.txt
+++ b/BlenderCtrl_ProdModeInit_simplified.json
@@ -16,13 +16,41 @@
"id": "9",
"title": "PID Reset Integral",
"comment": "",
- "logic": []
+ "logic": [
+ {
+ "instruction_uid": "21",
+ "uid": "21",
+ "type": "Call",
+ "block_name": "BlenderPID_PIDResInteg",
+ "block_type": "FC",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ }
+ ]
},
{
"id": "1A",
"title": "Ctrl Init Errors",
"comment": "",
- "logic": []
+ "logic": [
+ {
+ "instruction_uid": "21",
+ "uid": "21",
+ "type": "Call",
+ "block_name": "BlenderCtrl_InitErrors",
+ "block_type": "FC",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ }
+ ]
},
{
"id": "2B",
@@ -31,7 +59,11 @@
"logic": [
{
"instruction_uid": "23",
+ "uid": "23",
"type": "Move",
+ "template_values": {
+ "Card": "Cardinality"
+ },
"inputs": {
"en": {
"type": "powerrail"
diff --git a/BlenderCtrl_ProdModeInit_simplified_processed.json b/BlenderCtrl_ProdModeInit_simplified_processed.json
new file mode 100644
index 0000000..25721a0
--- /dev/null
+++ b/BlenderCtrl_ProdModeInit_simplified_processed.json
@@ -0,0 +1,96 @@
+{
+ "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_scl",
+ "block_name": "BlenderPID_PIDResInteg",
+ "block_type": "FC",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "BlenderPID_PIDResInteg();"
+ }
+ ]
+ },
+ {
+ "id": "1A",
+ "title": "Ctrl Init Errors",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "21",
+ "uid": "21",
+ "type": "Call_FC_scl",
+ "block_name": "BlenderCtrl_InitErrors",
+ "block_type": "FC",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "BlenderCtrl_InitErrors();"
+ }
+ ]
+ },
+ {
+ "id": "2B",
+ "title": "RunOut Counter",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "23",
+ "uid": "23",
+ "type": "Move_scl",
+ "template_values": {
+ "Card": "Cardinality"
+ },
+ "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;"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/BlenderCtrl_ProdModeInit_simplified_processed.scl b/BlenderCtrl_ProdModeInit_simplified_processed.scl
new file mode 100644
index 0000000..427db6f
--- /dev/null
+++ b/BlenderCtrl_ProdModeInit_simplified_processed.scl
@@ -0,0 +1,35 @@
+// Block Name (Original): BlenderCtrl_ProdModeInit
+// Block Number: 2012
+// Original Language: LAD
+
+FUNCTION_BLOCK "BlenderCtrl_ProdModeInit"
+{ S7_Optimized_Access := 'TRUE' }
+VERSION : 0.1
+
+VAR_INPUT
+END_VAR
+
+VAR_OUTPUT
+END_VAR
+
+VAR_IN_OUT
+END_VAR
+
+VAR_TEMP
+END_VAR
+
+BEGIN
+
+ // Network 1: PID Reset Integral
+
+ BlenderPID_PIDResInteg();
+
+ // Network 2: Ctrl Init Errors
+
+ BlenderCtrl_InitErrors();
+
+ // Network 3: RunOut Counter
+
+ "HMI_Variables_Status"."Analog_Values"."TP301RunOutCount" := 0.0;
+
+END_FUNCTION_BLOCK
diff --git a/BlenderCtrl__Main.xml b/BlenderCtrl__Main.xml
new file mode 100644
index 0000000..ad4869b
--- /dev/null
+++ b/BlenderCtrl__Main.xml
@@ -0,0 +1,10030 @@
+
+
+
+
+
+ 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
+
+
+
+
+ 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 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
new file mode 100644
index 0000000..45f937b
--- /dev/null
+++ b/BlenderCtrl__Main_simplified.json
@@ -0,0 +1,3628 @@
+{
+ "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": {}
+ }
+ ]
+ },
+ {
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "2B",
+ "title": "Filler Head",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "25",
+ "uid": "25",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"AUX FALSE\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "26",
+ "uid": "26",
+ "type": "BLKMOV",
+ "template_values": {
+ "blk_type": "Type"
+ },
+ "inputs": {
+ "en": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "25",
+ "source_pin": "out"
+ }
+ },
+ "outputs": {}
+ }
+ ]
+ },
+ {
+ "id": "3C",
+ "title": "Emergency Pressed",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "24",
+ "uid": "24",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gIN_VoltageOk\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "25",
+ "uid": "25",
+ "type": "NBox",
+ "template_values": {},
+ "inputs": {
+ "in": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "24",
+ "source_pin": "out"
+ },
+ "bit": {
+ "uid": "22",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"M19000\""
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "26",
+ "uid": "26",
+ "type": "Coil",
+ "template_values": {},
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "4D",
+ "title": "Air and CO2 pressure ok and auxiliary ok",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "29",
+ "uid": "29",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gIN_LinePressCO2Ok\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "30",
+ "uid": "30",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "22",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gWorkshopTest\""
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "31",
+ "uid": "31",
+ "type": "Contact",
+ "template_values": {},
+ "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": {}
+ },
+ {
+ "instruction_uid": "32",
+ "uid": "32",
+ "type": "Contact",
+ "template_values": {},
+ "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": {}
+ },
+ {
+ "instruction_uid": "33",
+ "uid": "33",
+ "type": "O",
+ "template_values": {
+ "Card": "Cardinality"
+ },
+ "inputs": {
+ "in2": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "32",
+ "source_pin": "out"
+ },
+ "in1": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "29",
+ "source_pin": "out"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "34",
+ "uid": "34",
+ "type": "Contact",
+ "template_values": {},
+ "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": {}
+ },
+ {
+ "instruction_uid": "35",
+ "uid": "35",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "26",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"Disable_Bit\""
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "36",
+ "uid": "36",
+ "type": "O",
+ "template_values": {
+ "Card": "Cardinality"
+ },
+ "inputs": {
+ "in2": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "35",
+ "source_pin": "out"
+ },
+ "in1": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "34",
+ "source_pin": "out"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "37",
+ "uid": "37",
+ "type": "Contact",
+ "template_values": {},
+ "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": {}
+ },
+ {
+ "instruction_uid": "38",
+ "uid": "38",
+ "type": "Coil",
+ "template_values": {},
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "5E",
+ "title": "Blender State Num",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "23",
+ "uid": "23",
+ "type": "Move",
+ "template_values": {
+ "Card": "Cardinality"
+ },
+ "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\""
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "id": "6F",
+ "title": "Delay Power On",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "24",
+ "uid": "24",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"FirstScan\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "25",
+ "uid": "25",
+ "type": "Se",
+ "template_values": {},
+ "inputs": {},
+ "outputs": {}
+ }
+ ]
+ },
+ {
+ "id": "80",
+ "title": "Production Mode",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "23",
+ "uid": "23",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Variables_Status\".\"System\".\"Blender_Prod_CIP\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "24",
+ "uid": "24",
+ "type": "Coil",
+ "template_values": {},
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "91",
+ "title": "CIp Mode",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "25",
+ "uid": "25",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Variables_Status\".\"System\".\"Blender_Prod_CIP\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "26",
+ "uid": "26",
+ "type": "Coil",
+ "template_values": {},
+ "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"
+ },
+ "inputs": {
+ "in": {
+ "uid": "23",
+ "scope": "LiteralConstant",
+ "type": "constant",
+ "datatype": "Int",
+ "value": 19
+ },
+ "en": {
+ "type": "connection",
+ "source_instruction_uid": "25",
+ "source_instruction_type": "Contact",
+ "source_pin": "out"
+ }
+ },
+ "outputs": {
+ "out1": [
+ {
+ "uid": "24",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Variables_Status\".\"Procedures\".\"BlenderStateNum\""
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "id": "A2",
+ "title": "Error Faults",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "26",
+ "uid": "26",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"AUX FALSE\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "27",
+ "uid": "27",
+ "type": "RCoil",
+ "template_values": {},
+ "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": {},
+ "inputs": {
+ "operand": {
+ "uid": "23",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gmPDS2000_Error_Fault\""
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "29",
+ "uid": "29",
+ "type": "RCoil",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "24",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Variables_Status\".\"Meters\".\"QTM3012_PRD_Run\""
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "30",
+ "uid": "30",
+ "type": "RCoil",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "25",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gNoFreezeProductMeter\""
+ }
+ },
+ "outputs": {}
+ }
+ ]
+ },
+ {
+ "id": "B3",
+ "title": "Filler Bottle Count Used to push Product",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "23",
+ "uid": "23",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"System_RunOut_Variables\".\"ProdPipeRunOutWaterCount\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "24",
+ "uid": "24",
+ "type": "Coil",
+ "template_values": {},
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "C4",
+ "title": "Water Bypass Enable",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "27",
+ "uid": "27",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_StillWaterByPass\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "28",
+ "uid": "28",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "22",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_ByPassDeair\""
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "29",
+ "uid": "29",
+ "type": "Contact",
+ "template_values": {},
+ "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": {}
+ },
+ {
+ "instruction_uid": "30",
+ "uid": "30",
+ "type": "O",
+ "template_values": {
+ "Card": "Cardinality"
+ },
+ "inputs": {
+ "in2": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "29",
+ "source_pin": "out"
+ },
+ "in1": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "27",
+ "source_pin": "out"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "31",
+ "uid": "31",
+ "type": "Contact",
+ "template_values": {},
+ "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": {}
+ },
+ {
+ "instruction_uid": "32",
+ "uid": "32",
+ "type": "Contact",
+ "template_values": {},
+ "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": {}
+ },
+ {
+ "instruction_uid": "33",
+ "uid": "33",
+ "type": "Coil",
+ "template_values": {},
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "D5",
+ "title": "Still Water Bypass",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "26",
+ "uid": "26",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_BlendFillSystem\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "27",
+ "uid": "27",
+ "type": "Contact",
+ "template_values": {},
+ "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": {}
+ },
+ {
+ "instruction_uid": "28",
+ "uid": "28",
+ "type": "Contact",
+ "template_values": {},
+ "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": {}
+ },
+ {
+ "instruction_uid": "29",
+ "uid": "29",
+ "type": "Contact",
+ "template_values": {},
+ "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": {}
+ },
+ {
+ "instruction_uid": "30",
+ "uid": "30",
+ "type": "Coil",
+ "template_values": {},
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "E6",
+ "title": "Manual Syrup Drain Valve Open - Operator Alarm",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "30",
+ "uid": "30",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gSyrupRoomEn\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "31",
+ "uid": "31",
+ "type": "Contact",
+ "template_values": {},
+ "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": {}
+ },
+ {
+ "instruction_uid": "32",
+ "uid": "32",
+ "type": "Contact",
+ "template_values": {},
+ "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": {}
+ },
+ {
+ "instruction_uid": "33",
+ "uid": "33",
+ "type": "Contact",
+ "template_values": {},
+ "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": {}
+ },
+ {
+ "instruction_uid": "34",
+ "uid": "34",
+ "type": "Contact",
+ "template_values": {},
+ "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": {}
+ },
+ {
+ "instruction_uid": "35",
+ "uid": "35",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "26",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gBlenderCIPMode\""
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "36",
+ "uid": "36",
+ "type": "Contact",
+ "template_values": {},
+ "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": {}
+ },
+ {
+ "instruction_uid": "37",
+ "uid": "37",
+ "type": "Contact",
+ "template_values": {},
+ "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": {}
+ },
+ {
+ "instruction_uid": "38",
+ "uid": "38",
+ "type": "O",
+ "template_values": {
+ "Card": "Cardinality"
+ },
+ "inputs": {
+ "in2": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "37",
+ "source_pin": "out"
+ },
+ "in1": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "34",
+ "source_pin": "out"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "39",
+ "uid": "39",
+ "type": "Coil",
+ "template_values": {},
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "F7",
+ "title": "Manual Syrup Drain Valve Open - Operator Alarm",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "25",
+ "uid": "25",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gIN_HVM302_Aux\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "26",
+ "uid": "26",
+ "type": "Sd",
+ "template_values": {},
+ "inputs": {},
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "27",
+ "uid": "27",
+ "type": "Coil",
+ "template_values": {},
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "108",
+ "title": "Maselli Control",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "24",
+ "uid": "24",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_BrixMeter\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "25",
+ "uid": "25",
+ "type": "Eq",
+ "template_values": {
+ "SrcType": "Type"
+ },
+ "inputs": {
+ "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
+ },
+ "in1": {
+ "uid": "22",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_MeterType\""
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "119",
+ "title": "mPDS Control",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "24",
+ "uid": "24",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_BrixMeter\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "25",
+ "uid": "25",
+ "type": "Eq",
+ "template_values": {
+ "SrcType": "Type"
+ },
+ "inputs": {
+ "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
+ },
+ "in1": {
+ "uid": "22",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_MeterType\""
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "12A",
+ "title": "mPDS Syrup Control",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "22",
+ "uid": "22",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_SyrBrixMeter\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "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": {}
+ }
+ ]
+ },
+ {
+ "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": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_BrixMeter\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "25",
+ "uid": "25",
+ "type": "Eq",
+ "template_values": {
+ "SrcType": "Type"
+ },
+ "inputs": {
+ "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
+ },
+ "in1": {
+ "uid": "22",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_MeterType\""
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "14C",
+ "title": "Quality",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "21",
+ "uid": "21",
+ "type": "Call",
+ "block_name": "ProductQuality",
+ "block_type": "FC",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ }
+ ]
+ },
+ {
+ "id": "15D",
+ "title": "Input Data",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "21",
+ "uid": "21",
+ "type": "Call",
+ "block_name": "Input",
+ "block_type": "FB",
+ "instance_scope": "GlobalVariable",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ }
+ ]
+ },
+ {
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "17F",
+ "title": "Check Water Cooling System Temperature",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "22",
+ "uid": "22",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_InverterRecirPumpPPM306\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "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": {}
+ }
+ ]
+ },
+ {
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "1A1",
+ "title": "Production ONS",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "25",
+ "uid": "25",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gBlenderProdMode\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "26",
+ "uid": "26",
+ "type": "PBox",
+ "template_values": {},
+ "inputs": {
+ "in": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "25",
+ "source_pin": "out"
+ },
+ "bit": {
+ "uid": "22",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"M19001\""
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "27",
+ "uid": "27",
+ "type": "Contact",
+ "template_values": {},
+ "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": {}
+ },
+ {
+ "instruction_uid": "28",
+ "uid": "28",
+ "type": "Coil",
+ "template_values": {},
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "1B2",
+ "title": "Blender Prod Mode Init",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "24",
+ "uid": "24",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gProductionONS\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "25",
+ "uid": "25",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "22",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"Procedure_Variables\".\"Blender_Rinse\".\"ONS_Done\""
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "26",
+ "uid": "26",
+ "type": "O",
+ "template_values": {
+ "Card": "Cardinality"
+ },
+ "inputs": {
+ "in2": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "25",
+ "source_pin": "out"
+ },
+ "in1": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "24",
+ "source_pin": "out"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "27",
+ "uid": "27",
+ "type": "Contact",
+ "template_values": {},
+ "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": {}
+ },
+ {
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "1C3",
+ "title": "Rinse ONS",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "25",
+ "uid": "25",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Variables_Status\".\"System\".\"Blender_Prod_CIP\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "26",
+ "uid": "26",
+ "type": "PBox",
+ "template_values": {},
+ "inputs": {
+ "in": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "25",
+ "source_pin": "out"
+ },
+ "bit": {
+ "uid": "22",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"M19002\""
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "27",
+ "uid": "27",
+ "type": "Contact",
+ "template_values": {},
+ "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": {}
+ },
+ {
+ "instruction_uid": "28",
+ "uid": "28",
+ "type": "Coil",
+ "template_values": {},
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "1D4",
+ "title": "CIP ONS",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "25",
+ "uid": "25",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gBlenderCIPMode\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "26",
+ "uid": "26",
+ "type": "PBox",
+ "template_values": {},
+ "inputs": {
+ "in": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "25",
+ "source_pin": "out"
+ },
+ "bit": {
+ "uid": "22",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"M19003\""
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "27",
+ "uid": "27",
+ "type": "Contact",
+ "template_values": {},
+ "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": {}
+ },
+ {
+ "instruction_uid": "28",
+ "uid": "28",
+ "type": "Coil",
+ "template_values": {},
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "1E5",
+ "title": "CIp Mode Init",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "22",
+ "uid": "22",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gCIPONS\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "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": {}
+ }
+ ]
+ },
+ {
+ "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": {}
+ }
+ ]
+ },
+ {
+ "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": {}
+ }
+ ]
+ },
+ {
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "229",
+ "title": "Balaiage",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "21",
+ "uid": "21",
+ "type": "Call",
+ "block_name": "Baialage",
+ "block_type": "FC",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ }
+ ]
+ },
+ {
+ "id": "23A",
+ "title": "First Production",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "21",
+ "uid": "21",
+ "type": "Call",
+ "block_name": "ProcedureFirstProduction",
+ "block_type": "FB",
+ "instance_scope": "GlobalVariable",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ }
+ ]
+ },
+ {
+ "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": {}
+ }
+ ]
+ },
+ {
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "26D",
+ "title": "Safeties",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "21",
+ "uid": "21",
+ "type": "Call",
+ "block_name": "Safeties",
+ "block_type": "FC",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ }
+ ]
+ },
+ {
+ "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": {}
+ }
+ ]
+ },
+ {
+ "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": {}
+ }
+ ]
+ },
+ {
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "2B1",
+ "title": "Blend Procedure Data",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "22",
+ "uid": "22",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"mDelayPowerOnTmr\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "23",
+ "uid": "23",
+ "type": "Call",
+ "block_name": "Procedure",
+ "block_type": "FB",
+ "instance_scope": "GlobalVariable",
+ "inputs": {
+ "en": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "22",
+ "source_pin": "out"
+ }
+ },
+ "outputs": {}
+ }
+ ]
+ },
+ {
+ "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": {}
+ }
+ ]
+ },
+ {
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "2E4",
+ "title": "Prod Report Manager",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "22",
+ "uid": "22",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_Report\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "2F5",
+ "title": "Outputs",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "21",
+ "uid": "21",
+ "type": "Call",
+ "block_name": "Output",
+ "block_type": "FC",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ }
+ ]
+ },
+ {
+ "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": {}
+ }
+ ]
+ },
+ {
+ "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": {}
+ }
+ ]
+ },
+ {
+ "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": {}
+ }
+ ]
+ },
+ {
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "34A",
+ "title": "ResetTotalizer",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "24",
+ "uid": "24",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gBlendResetTotalizer\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "25",
+ "uid": "25",
+ "type": "Se",
+ "template_values": {},
+ "inputs": {},
+ "outputs": {}
+ }
+ ]
+ },
+ {
+ "id": "35B",
+ "title": "ResetWaterTot",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "26",
+ "uid": "26",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gFTN301_ResetTot\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "27",
+ "uid": "27",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "22",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"mResetTotalizerTmr\""
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "28",
+ "uid": "28",
+ "type": "O",
+ "template_values": {
+ "Card": "Cardinality"
+ },
+ "inputs": {
+ "in2": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "27",
+ "source_pin": "out"
+ },
+ "in1": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "26",
+ "source_pin": "out"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "29",
+ "uid": "29",
+ "type": "Se",
+ "template_values": {},
+ "inputs": {},
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "30",
+ "uid": "30",
+ "type": "Coil",
+ "template_values": {},
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "36C",
+ "title": "Water VFM Reset Totalizer",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "23",
+ "uid": "23",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gFTN301_ResetTot\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "24",
+ "uid": "24",
+ "type": "RCoil",
+ "template_values": {},
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "37D",
+ "title": "ResetCO2Tot",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "27",
+ "uid": "27",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gFTP302_ResetTot\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "28",
+ "uid": "28",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "22",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"mResetTotalizerTmr\""
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "29",
+ "uid": "29",
+ "type": "O",
+ "template_values": {
+ "Card": "Cardinality"
+ },
+ "inputs": {
+ "in2": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "28",
+ "source_pin": "out"
+ },
+ "in1": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "27",
+ "source_pin": "out"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "30",
+ "uid": "30",
+ "type": "Se",
+ "template_values": {},
+ "inputs": {},
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "31",
+ "uid": "31",
+ "type": "Contact",
+ "template_values": {},
+ "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": {}
+ },
+ {
+ "instruction_uid": "32",
+ "uid": "32",
+ "type": "Coil",
+ "template_values": {},
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "38E",
+ "title": "Syrup MFM Reset Totalizer",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "23",
+ "uid": "23",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gFTP302_ResetTot\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "24",
+ "uid": "24",
+ "type": "RCoil",
+ "template_values": {},
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "39F",
+ "title": "ResetProductTot",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "26",
+ "uid": "26",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gFTM303_ResetTot\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "27",
+ "uid": "27",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "22",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"mResetTotalizerTmr\""
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "28",
+ "uid": "28",
+ "type": "O",
+ "template_values": {
+ "Card": "Cardinality"
+ },
+ "inputs": {
+ "in2": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "27",
+ "source_pin": "out"
+ },
+ "in1": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "26",
+ "source_pin": "out"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "29",
+ "uid": "29",
+ "type": "Se",
+ "template_values": {},
+ "inputs": {},
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "30",
+ "uid": "30",
+ "type": "Coil",
+ "template_values": {},
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "3B0",
+ "title": "CO2 MFM Reset Tot",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "23",
+ "uid": "23",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gFTM303_ResetTot\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "24",
+ "uid": "24",
+ "type": "RCoil",
+ "template_values": {},
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "3C1",
+ "title": "ResetCO2Tot",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "26",
+ "uid": "26",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gProductMFMResetTot\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "27",
+ "uid": "27",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "22",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"mResetTotalizerTmr\""
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "28",
+ "uid": "28",
+ "type": "O",
+ "template_values": {
+ "Card": "Cardinality"
+ },
+ "inputs": {
+ "in2": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "27",
+ "source_pin": "out"
+ },
+ "in1": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "26",
+ "source_pin": "out"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "29",
+ "uid": "29",
+ "type": "Se",
+ "template_values": {},
+ "inputs": {},
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "30",
+ "uid": "30",
+ "type": "Coil",
+ "template_values": {},
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "3D2",
+ "title": "Reset Totalizer",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "23",
+ "uid": "23",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gProductMFMResetTot\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "24",
+ "uid": "24",
+ "type": "RCoil",
+ "template_values": {},
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "3E3",
+ "title": "Reset Totalizer",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "23",
+ "uid": "23",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gBlendResetTotalizer\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "24",
+ "uid": "24",
+ "type": "RCoil",
+ "template_values": {},
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "3F4",
+ "title": "Blender Ctrl Command",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "26",
+ "uid": "26",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_Simulation\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "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": {}
+ }
+ ]
+ },
+ {
+ "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": {}
+ }
+ ]
+ },
+ {
+ "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": {}
+ }
+ ]
+ },
+ {
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "438",
+ "title": "All Auto",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "25",
+ "uid": "25",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Variables_Cmd\".\"Commands_From_HMI\".\"F7_DeviceControl\".\"Command\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "26",
+ "uid": "26",
+ "type": "Contact",
+ "template_values": {},
+ "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": {}
+ },
+ {
+ "instruction_uid": "27",
+ "uid": "27",
+ "type": "NBox",
+ "template_values": {},
+ "inputs": {
+ "in": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "26",
+ "source_pin": "out"
+ },
+ "bit": {
+ "uid": "23",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"M19011\""
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "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": {},
+ "inputs": {
+ "operand": {
+ "uid": "24",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Variables_Cmd\".\"Commands_From_HMI\".\"F7_DeviceControl\".\"Light\""
+ }
+ },
+ "outputs": {}
+ }
+ ]
+ },
+ {
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "45A",
+ "title": "Mod Copy Recipe",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "33",
+ "uid": "33",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Variables_Cmd\".\"Recipe\".\"Main_Page\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "34",
+ "uid": "34",
+ "type": "Contact",
+ "template_values": {},
+ "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": {}
+ },
+ {
+ "instruction_uid": "35",
+ "uid": "35",
+ "type": "Coil",
+ "template_values": {},
+ "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": {},
+ "inputs": {
+ "operand": {
+ "uid": "24",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"mFP_Recip_Main_Page\""
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "37",
+ "uid": "37",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "25",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Variables_Cmd\".\"Recipe\".\"Main_Page\""
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "38",
+ "uid": "38",
+ "type": "Contact",
+ "template_values": {},
+ "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": {}
+ },
+ {
+ "instruction_uid": "39",
+ "uid": "39",
+ "type": "SdCoil",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "27",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"T_Pulse_Recipe_Edit\""
+ },
+ "in": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "38",
+ "source_pin": "out"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "40",
+ "uid": "40",
+ "type": "Contact",
+ "template_values": {},
+ "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": "out"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "41",
+ "uid": "41",
+ "type": "RCoil",
+ "template_values": {},
+ "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": {},
+ "inputs": {
+ "operand": {
+ "uid": "31",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"mAux_FP_M700_1\""
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "43",
+ "uid": "43",
+ "type": "SCoil",
+ "template_values": {},
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "46B",
+ "title": "to HMI - Recipe Management",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "42",
+ "uid": "42",
+ "type": "Contact",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"AUX TRUE\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "43",
+ "uid": "43",
+ "type": "Call",
+ "block_name": "RecipeManagement - Prod",
+ "block_type": "FB",
+ "instance_scope": "GlobalVariable",
+ "inputs": {
+ "en": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "42",
+ "source_pin": "out"
+ }
+ },
+ "outputs": {}
+ }
+ ]
+ },
+ {
+ "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": {}
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/BlenderCtrl__Main_simplified_processed.json b/BlenderCtrl__Main_simplified_processed.json
new file mode 100644
index 0000000..5cb12f9
--- /dev/null
+++ b/BlenderCtrl__Main_simplified_processed.json
@@ -0,0 +1,3768 @@
+{
+ "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_scl",
+ "block_name": "Clock Signal",
+ "block_type": "FC",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "Clock Signal();"
+ }
+ ]
+ },
+ {
+ "id": "1A",
+ "title": "Machine Init",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "21",
+ "uid": "21",
+ "type": "Call_FC_scl",
+ "block_name": "BlenderCtrl_MachineInit",
+ "block_type": "FC",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "BlenderCtrl_MachineInit();"
+ }
+ ]
+ },
+ {
+ "id": "2B",
+ "title": "Filler Head",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "25",
+ "uid": "25",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"AUX FALSE\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"AUX FALSE\""
+ },
+ {
+ "instruction_uid": "26",
+ "uid": "26",
+ "type": "BLKMOV",
+ "template_values": {
+ "blk_type": "Type"
+ },
+ "inputs": {
+ "en": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "25",
+ "source_pin": "out"
+ }
+ },
+ "outputs": {}
+ }
+ ]
+ },
+ {
+ "id": "3C",
+ "title": "Emergency Pressed",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "24",
+ "uid": "24",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gIN_VoltageOk\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"gIN_VoltageOk\""
+ },
+ {
+ "instruction_uid": "25",
+ "uid": "25",
+ "type": "NBox",
+ "template_values": {},
+ "inputs": {
+ "in": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "24",
+ "source_pin": "out"
+ },
+ "bit": {
+ "uid": "22",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"M19000\""
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "26",
+ "uid": "26",
+ "type": "Coil",
+ "template_values": {},
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "4D",
+ "title": "Air and CO2 pressure ok and auxiliary ok",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "29",
+ "uid": "29",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gIN_LinePressCO2Ok\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"gIN_LinePressCO2Ok\""
+ },
+ {
+ "instruction_uid": "30",
+ "uid": "30",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "22",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gWorkshopTest\""
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"gWorkshopTest\""
+ },
+ {
+ "instruction_uid": "31",
+ "uid": "31",
+ "type": "Contact_scl",
+ "template_values": {},
+ "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": {},
+ "scl": "// RLO: \"gWorkshopTest\" AND \"gWorkshop_Co2_Presence\""
+ },
+ {
+ "instruction_uid": "32",
+ "uid": "32",
+ "type": "Contact_scl",
+ "template_values": {},
+ "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": {},
+ "scl": "// RLO: (\"gWorkshopTest\" AND \"gWorkshop_Co2_Presence\") AND \"gWorkshop_CIP_Signals\""
+ },
+ {
+ "instruction_uid": "33",
+ "uid": "33",
+ "type": "O_scl",
+ "template_values": {
+ "Card": "Cardinality"
+ },
+ "inputs": {
+ "in2": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "32",
+ "source_pin": "out"
+ },
+ "in1": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "29",
+ "source_pin": "out"
+ }
+ },
+ "outputs": {},
+ "scl": "// Logic O 33: \"gIN_LinePressCO2Ok\" OR ((\"gWorkshopTest\" AND \"gWorkshop_Co2_Presence\") AND \"gWorkshop_CIP_Signals\")"
+ },
+ {
+ "instruction_uid": "34",
+ "uid": "34",
+ "type": "Contact_scl",
+ "template_values": {},
+ "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": {},
+ "scl": "// RLO: (\"gIN_LinePressCO2Ok\" OR ((\"gWorkshopTest\" AND \"gWorkshop_Co2_Presence\") AND \"gWorkshop_CIP_Signals\")) AND \"HMI_Digital\".\"_PAL_S11\".\"Filtered\""
+ },
+ {
+ "instruction_uid": "35",
+ "uid": "35",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "26",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"Disable_Bit\""
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"Disable_Bit\""
+ },
+ {
+ "instruction_uid": "36",
+ "uid": "36",
+ "type": "O_scl",
+ "template_values": {
+ "Card": "Cardinality"
+ },
+ "inputs": {
+ "in2": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "35",
+ "source_pin": "out"
+ },
+ "in1": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "34",
+ "source_pin": "out"
+ }
+ },
+ "outputs": {},
+ "scl": "// Logic O 36: ((\"gIN_LinePressCO2Ok\" OR ((\"gWorkshopTest\" AND \"gWorkshop_Co2_Presence\") AND \"gWorkshop_CIP_Signals\")) AND \"HMI_Digital\".\"_PAL_S11\".\"Filtered\") OR \"Disable_Bit\""
+ },
+ {
+ "instruction_uid": "37",
+ "uid": "37",
+ "type": "Contact_scl",
+ "template_values": {},
+ "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": {},
+ "scl": "// RLO: (((\"gIN_LinePressCO2Ok\" OR ((\"gWorkshopTest\" AND \"gWorkshop_Co2_Presence\") AND \"gWorkshop_CIP_Signals\")) AND \"HMI_Digital\".\"_PAL_S11\".\"Filtered\") OR \"Disable_Bit\") AND \"gIN_VoltageOk\""
+ },
+ {
+ "instruction_uid": "38",
+ "uid": "38",
+ "type": "Coil_scl",
+ "template_values": {},
+ "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_LinePressCO2Ok\" OR ((\"gWorkshopTest\" AND \"gWorkshop_Co2_Presence\") AND \"gWorkshop_CIP_Signals\")) AND \"HMI_Digital\".\"_PAL_S11\".\"Filtered\") OR \"Disable_Bit\") AND \"gIN_VoltageOk\";"
+ }
+ ]
+ },
+ {
+ "id": "5E",
+ "title": "Blender State Num",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "23",
+ "uid": "23",
+ "type": "Move_scl",
+ "template_values": {
+ "Card": "Cardinality"
+ },
+ "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;"
+ }
+ ]
+ },
+ {
+ "id": "6F",
+ "title": "Delay Power On",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "24",
+ "uid": "24",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"FirstScan\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"FirstScan\""
+ },
+ {
+ "instruction_uid": "25",
+ "uid": "25",
+ "type": "Se",
+ "template_values": {},
+ "inputs": {},
+ "outputs": {}
+ }
+ ]
+ },
+ {
+ "id": "80",
+ "title": "Production Mode",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "23",
+ "uid": "23",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Variables_Status\".\"System\".\"Blender_Prod_CIP\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"HMI_Variables_Status\".\"System\".\"Blender_Prod_CIP\""
+ },
+ {
+ "instruction_uid": "24",
+ "uid": "24",
+ "type": "Coil_scl",
+ "template_values": {},
+ "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\";"
+ }
+ ]
+ },
+ {
+ "id": "91",
+ "title": "CIp Mode",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "25",
+ "uid": "25",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Variables_Status\".\"System\".\"Blender_Prod_CIP\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"HMI_Variables_Status\".\"System\".\"Blender_Prod_CIP\""
+ },
+ {
+ "instruction_uid": "26",
+ "uid": "26",
+ "type": "Coil_scl",
+ "template_values": {},
+ "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\" := \"HMI_Variables_Status\".\"System\".\"Blender_Prod_CIP\";"
+ },
+ {
+ "instruction_uid": "27",
+ "uid": "27",
+ "type": "Move_scl",
+ "template_values": {
+ "Card": "Cardinality"
+ },
+ "inputs": {
+ "in": {
+ "uid": "23",
+ "scope": "LiteralConstant",
+ "type": "constant",
+ "datatype": "Int",
+ "value": 19
+ },
+ "en": {
+ "type": "connection",
+ "source_instruction_uid": "25",
+ "source_instruction_type": "Contact",
+ "source_pin": "out"
+ }
+ },
+ "outputs": {
+ "out1": [
+ {
+ "uid": "24",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Variables_Status\".\"Procedures\".\"BlenderStateNum\""
+ }
+ ]
+ },
+ "scl": "IF \"HMI_Variables_Status\".\"System\".\"Blender_Prod_CIP\" THEN\n \"HMI_Variables_Status\".\"Procedures\".\"BlenderStateNum\" := 19;\nEND_IF;"
+ }
+ ]
+ },
+ {
+ "id": "A2",
+ "title": "Error Faults",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "26",
+ "uid": "26",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"AUX FALSE\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"AUX FALSE\""
+ },
+ {
+ "instruction_uid": "27",
+ "uid": "27",
+ "type": "RCoil",
+ "template_values": {},
+ "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": {},
+ "inputs": {
+ "operand": {
+ "uid": "23",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gmPDS2000_Error_Fault\""
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "29",
+ "uid": "29",
+ "type": "RCoil",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "24",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Variables_Status\".\"Meters\".\"QTM3012_PRD_Run\""
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "30",
+ "uid": "30",
+ "type": "RCoil",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "25",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gNoFreezeProductMeter\""
+ }
+ },
+ "outputs": {}
+ }
+ ]
+ },
+ {
+ "id": "B3",
+ "title": "Filler Bottle Count Used to push Product",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "23",
+ "uid": "23",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"System_RunOut_Variables\".\"ProdPipeRunOutWaterCount\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"System_RunOut_Variables\".\"ProdPipeRunOutWaterCount\""
+ },
+ {
+ "instruction_uid": "24",
+ "uid": "24",
+ "type": "Coil_scl",
+ "template_values": {},
+ "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\" := \"System_RunOut_Variables\".\"ProdPipeRunOutWaterCount\";"
+ }
+ ]
+ },
+ {
+ "id": "C4",
+ "title": "Water Bypass Enable",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "27",
+ "uid": "27",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_StillWaterByPass\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_StillWaterByPass\""
+ },
+ {
+ "instruction_uid": "28",
+ "uid": "28",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "22",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_ByPassDeair\""
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_ByPassDeair\""
+ },
+ {
+ "instruction_uid": "29",
+ "uid": "29",
+ "type": "Contact_scl",
+ "template_values": {},
+ "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": {},
+ "scl": "// RLO: \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_ByPassDeair\" AND \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_Deaireation\""
+ },
+ {
+ "instruction_uid": "30",
+ "uid": "30",
+ "type": "O_scl",
+ "template_values": {
+ "Card": "Cardinality"
+ },
+ "inputs": {
+ "in2": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "29",
+ "source_pin": "out"
+ },
+ "in1": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "27",
+ "source_pin": "out"
+ }
+ },
+ "outputs": {},
+ "scl": "// Logic O 30: \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_StillWaterByPass\" OR (\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_ByPassDeair\" AND \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_Deaireation\")"
+ },
+ {
+ "instruction_uid": "31",
+ "uid": "31",
+ "type": "Contact_scl",
+ "template_values": {},
+ "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": {},
+ "scl": "// RLO: (\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_StillWaterByPass\" OR (\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_ByPassDeair\" AND \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_Deaireation\")) AND \"Blender_Variables_Pers\".\"gWaterRecipe\""
+ },
+ {
+ "instruction_uid": "32",
+ "uid": "32",
+ "type": "Contact_scl",
+ "template_values": {},
+ "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": {},
+ "scl": "// RLO: ((\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_StillWaterByPass\" OR (\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_ByPassDeair\" AND \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_Deaireation\")) AND \"Blender_Variables_Pers\".\"gWaterRecipe\") AND \"Blender_Variables_Pers\".\"gCarboStillRecipe\""
+ },
+ {
+ "instruction_uid": "33",
+ "uid": "33",
+ "type": "Coil_scl",
+ "template_values": {},
+ "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\" OR (\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_ByPassDeair\" AND \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_Deaireation\")) AND \"Blender_Variables_Pers\".\"gWaterRecipe\") AND \"Blender_Variables_Pers\".\"gCarboStillRecipe\";"
+ }
+ ]
+ },
+ {
+ "id": "D5",
+ "title": "Still Water Bypass",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "26",
+ "uid": "26",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_BlendFillSystem\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_BlendFillSystem\""
+ },
+ {
+ "instruction_uid": "27",
+ "uid": "27",
+ "type": "Contact_scl",
+ "template_values": {},
+ "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": {},
+ "scl": "// RLO: \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_BlendFillSystem\" AND \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_StillWaterByPass\""
+ },
+ {
+ "instruction_uid": "28",
+ "uid": "28",
+ "type": "Contact_scl",
+ "template_values": {},
+ "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": {},
+ "scl": "// RLO: (\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_BlendFillSystem\" AND \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_StillWaterByPass\") AND \"Blender_Variables_Pers\".\"gWaterRecipe\""
+ },
+ {
+ "instruction_uid": "29",
+ "uid": "29",
+ "type": "Contact_scl",
+ "template_values": {},
+ "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": {},
+ "scl": "// RLO: ((\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_BlendFillSystem\" AND \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_StillWaterByPass\") AND \"Blender_Variables_Pers\".\"gWaterRecipe\") AND \"Blender_Variables_Pers\".\"gCarboStillRecipe\""
+ },
+ {
+ "instruction_uid": "30",
+ "uid": "30",
+ "type": "Coil_scl",
+ "template_values": {},
+ "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\".\"_BlendFillSystem\" AND \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_StillWaterByPass\") AND \"Blender_Variables_Pers\".\"gWaterRecipe\") AND \"Blender_Variables_Pers\".\"gCarboStillRecipe\";"
+ }
+ ]
+ },
+ {
+ "id": "E6",
+ "title": "Manual Syrup Drain Valve Open - Operator Alarm",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "30",
+ "uid": "30",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gSyrupRoomEn\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"gSyrupRoomEn\""
+ },
+ {
+ "instruction_uid": "31",
+ "uid": "31",
+ "type": "Contact_scl",
+ "template_values": {},
+ "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": {},
+ "scl": "// RLO: \"gSyrupRoomEn\" AND \"gIN_HVP301_Aux\""
+ },
+ {
+ "instruction_uid": "32",
+ "uid": "32",
+ "type": "Contact_scl",
+ "template_values": {},
+ "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": {},
+ "scl": "// RLO: (\"gSyrupRoomEn\" AND \"gIN_HVP301_Aux\") AND \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_FastChangeOverEnabled\""
+ },
+ {
+ "instruction_uid": "33",
+ "uid": "33",
+ "type": "Contact_scl",
+ "template_values": {},
+ "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": {},
+ "scl": "// RLO: ((\"gSyrupRoomEn\" AND \"gIN_HVP301_Aux\") AND \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_FastChangeOverEnabled\") AND \"Procedure_Variables\".\"FTP302Line_Preparation\".\"Done\""
+ },
+ {
+ "instruction_uid": "34",
+ "uid": "34",
+ "type": "Contact_scl",
+ "template_values": {},
+ "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": {},
+ "scl": "// RLO: (((\"gSyrupRoomEn\" AND \"gIN_HVP301_Aux\") AND \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_FastChangeOverEnabled\") AND \"Procedure_Variables\".\"FTP302Line_Preparation\".\"Done\") AND \"Procedure_Variables\".\"Syr_RunOut\".\"Done\""
+ },
+ {
+ "instruction_uid": "35",
+ "uid": "35",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "26",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gBlenderCIPMode\""
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"gBlenderCIPMode\""
+ },
+ {
+ "instruction_uid": "36",
+ "uid": "36",
+ "type": "Contact_scl",
+ "template_values": {},
+ "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": {},
+ "scl": "// RLO: \"gBlenderCIPMode\" AND \"gIN_CIP_CIPRunning\""
+ },
+ {
+ "instruction_uid": "37",
+ "uid": "37",
+ "type": "Contact_scl",
+ "template_values": {},
+ "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": {},
+ "scl": "// RLO: (\"gBlenderCIPMode\" AND \"gIN_CIP_CIPRunning\") AND \"Procedure_Variables\".\"Blender_Run\".\"Running\""
+ },
+ {
+ "instruction_uid": "38",
+ "uid": "38",
+ "type": "O_scl",
+ "template_values": {
+ "Card": "Cardinality"
+ },
+ "inputs": {
+ "in2": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "37",
+ "source_pin": "out"
+ },
+ "in1": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "34",
+ "source_pin": "out"
+ }
+ },
+ "outputs": {},
+ "scl": "// Logic O 38: ((((\"gSyrupRoomEn\" AND \"gIN_HVP301_Aux\") AND \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_FastChangeOverEnabled\") AND \"Procedure_Variables\".\"FTP302Line_Preparation\".\"Done\") AND \"Procedure_Variables\".\"Syr_RunOut\".\"Done\") OR ((\"gBlenderCIPMode\" AND \"gIN_CIP_CIPRunning\") AND \"Procedure_Variables\".\"Blender_Run\".\"Running\")"
+ },
+ {
+ "instruction_uid": "39",
+ "uid": "39",
+ "type": "Coil_scl",
+ "template_values": {},
+ "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 \"gIN_HVP301_Aux\") AND \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_FastChangeOverEnabled\") AND \"Procedure_Variables\".\"FTP302Line_Preparation\".\"Done\") AND \"Procedure_Variables\".\"Syr_RunOut\".\"Done\") OR ((\"gBlenderCIPMode\" AND \"gIN_CIP_CIPRunning\") AND \"Procedure_Variables\".\"Blender_Run\".\"Running\");"
+ }
+ ]
+ },
+ {
+ "id": "F7",
+ "title": "Manual Syrup Drain Valve Open - Operator Alarm",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "25",
+ "uid": "25",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gIN_HVM302_Aux\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"gIN_HVM302_Aux\""
+ },
+ {
+ "instruction_uid": "26",
+ "uid": "26",
+ "type": "Sd",
+ "template_values": {},
+ "inputs": {},
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "27",
+ "uid": "27",
+ "type": "Coil",
+ "template_values": {},
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "108",
+ "title": "Maselli Control",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "24",
+ "uid": "24",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_BrixMeter\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_BrixMeter\""
+ },
+ {
+ "instruction_uid": "25",
+ "uid": "25",
+ "type": "Eq_scl",
+ "template_values": {
+ "SrcType": "Type"
+ },
+ "inputs": {
+ "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
+ },
+ "in1": {
+ "uid": "22",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_MeterType\""
+ }
+ },
+ "outputs": {},
+ "scl": "// Cond: \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_MeterType\" = 6"
+ },
+ {
+ "instruction_uid": "26",
+ "uid": "26",
+ "type": "Call_FC_scl",
+ "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 \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_MeterType\" = 6 THEN\n Maselli_PA_Control();\nEND_IF;"
+ }
+ ]
+ },
+ {
+ "id": "119",
+ "title": "mPDS Control",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "24",
+ "uid": "24",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_BrixMeter\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_BrixMeter\""
+ },
+ {
+ "instruction_uid": "25",
+ "uid": "25",
+ "type": "Eq_scl",
+ "template_values": {
+ "SrcType": "Type"
+ },
+ "inputs": {
+ "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
+ },
+ "in1": {
+ "uid": "22",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_MeterType\""
+ }
+ },
+ "outputs": {},
+ "scl": "// Cond: \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_MeterType\" = 5"
+ },
+ {
+ "instruction_uid": "26",
+ "uid": "26",
+ "type": "Call_FC_scl",
+ "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 \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_MeterType\" = 5 THEN\n mPDS_PA_Control();\nEND_IF;"
+ }
+ ]
+ },
+ {
+ "id": "12A",
+ "title": "mPDS Syrup Control",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "22",
+ "uid": "22",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_SyrBrixMeter\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_SyrBrixMeter\""
+ },
+ {
+ "instruction_uid": "23",
+ "uid": "23",
+ "type": "Call_FC_scl",
+ "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;"
+ }
+ ]
+ },
+ {
+ "id": "13B",
+ "title": "Co2 Analog Input",
+ "comment": "GetProdBrixCO2_FromAnalogIn\n CALL \"GetProdBrixCO2_FromAn\"\n NOP 0",
+ "logic": [
+ {
+ "instruction_uid": "24",
+ "uid": "24",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_BrixMeter\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_BrixMeter\""
+ },
+ {
+ "instruction_uid": "25",
+ "uid": "25",
+ "type": "Eq_scl",
+ "template_values": {
+ "SrcType": "Type"
+ },
+ "inputs": {
+ "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
+ },
+ "in1": {
+ "uid": "22",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_MeterType\""
+ }
+ },
+ "outputs": {},
+ "scl": "// Cond: \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_MeterType\" = 3"
+ },
+ {
+ "instruction_uid": "26",
+ "uid": "26",
+ "type": "Call_FC_scl",
+ "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 \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_MeterType\" = 3 THEN\n GetProdBrixCO2_Anal_Inpt();\nEND_IF;"
+ }
+ ]
+ },
+ {
+ "id": "14C",
+ "title": "Quality",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "21",
+ "uid": "21",
+ "type": "Call_FC_scl",
+ "block_name": "ProductQuality",
+ "block_type": "FC",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "ProductQuality();"
+ }
+ ]
+ },
+ {
+ "id": "15D",
+ "title": "Input Data",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "21",
+ "uid": "21",
+ "type": "Call_FB_scl",
+ "block_name": "Input",
+ "block_type": "FB",
+ "instance_scope": "GlobalVariable",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// ERROR: Call a bloque no soportado: Input"
+ }
+ ]
+ },
+ {
+ "id": "16E",
+ "title": "Sel Brix Source Check",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "21",
+ "uid": "21",
+ "type": "Call_FC_scl",
+ "block_name": "SelCheckBrixSource",
+ "block_type": "FC",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "SelCheckBrixSource();"
+ }
+ ]
+ },
+ {
+ "id": "17F",
+ "title": "Check Water Cooling System Temperature",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "22",
+ "uid": "22",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_InverterRecirPumpPPM306\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_InverterRecirPumpPPM306\""
+ },
+ {
+ "instruction_uid": "23",
+ "uid": "23",
+ "type": "Call_FC_scl",
+ "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;"
+ }
+ ]
+ },
+ {
+ "id": "190",
+ "title": "Tank Level",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "21",
+ "uid": "21",
+ "type": "Call_FC_scl",
+ "block_name": "TankLevel",
+ "block_type": "FC",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "TankLevel();"
+ }
+ ]
+ },
+ {
+ "id": "1A1",
+ "title": "Production ONS",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "25",
+ "uid": "25",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gBlenderProdMode\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"gBlenderProdMode\""
+ },
+ {
+ "instruction_uid": "26",
+ "uid": "26",
+ "type": "PBox_scl",
+ "template_values": {},
+ "inputs": {
+ "in": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "25",
+ "source_pin": "out"
+ },
+ "bit": {
+ "uid": "22",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"M19001\""
+ }
+ },
+ "outputs": {},
+ "scl": "// PBox 26 - Passing bit: \"M19001\""
+ },
+ {
+ "instruction_uid": "27",
+ "uid": "27",
+ "type": "Contact_scl",
+ "template_values": {},
+ "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": {},
+ "scl": "// RLO: \"M19001\" AND \"mDelayPowerOnTmr\""
+ },
+ {
+ "instruction_uid": "28",
+ "uid": "28",
+ "type": "Coil_scl",
+ "template_values": {},
+ "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\" := \"M19001\" AND \"mDelayPowerOnTmr\";"
+ }
+ ]
+ },
+ {
+ "id": "1B2",
+ "title": "Blender Prod Mode Init",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "24",
+ "uid": "24",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gProductionONS\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"gProductionONS\""
+ },
+ {
+ "instruction_uid": "25",
+ "uid": "25",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "22",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"Procedure_Variables\".\"Blender_Rinse\".\"ONS_Done\""
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"Procedure_Variables\".\"Blender_Rinse\".\"ONS_Done\""
+ },
+ {
+ "instruction_uid": "26",
+ "uid": "26",
+ "type": "O_scl",
+ "template_values": {
+ "Card": "Cardinality"
+ },
+ "inputs": {
+ "in2": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "25",
+ "source_pin": "out"
+ },
+ "in1": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "24",
+ "source_pin": "out"
+ }
+ },
+ "outputs": {},
+ "scl": "// Logic O 26: \"gProductionONS\" OR \"Procedure_Variables\".\"Blender_Rinse\".\"ONS_Done\""
+ },
+ {
+ "instruction_uid": "27",
+ "uid": "27",
+ "type": "Contact_scl",
+ "template_values": {},
+ "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": {},
+ "scl": "// RLO: (\"gProductionONS\" OR \"Procedure_Variables\".\"Blender_Rinse\".\"ONS_Done\") AND \"Blender_Variables_Pers\".\"gBlenderStarted\""
+ },
+ {
+ "instruction_uid": "28",
+ "uid": "28",
+ "type": "Call_FC_scl",
+ "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\" OR \"Procedure_Variables\".\"Blender_Rinse\".\"ONS_Done\") AND \"Blender_Variables_Pers\".\"gBlenderStarted\" THEN\n BlenderCtrl_ProdModeInit();\nEND_IF;"
+ }
+ ]
+ },
+ {
+ "id": "1C3",
+ "title": "Rinse ONS",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "25",
+ "uid": "25",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Variables_Status\".\"System\".\"Blender_Prod_CIP\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"HMI_Variables_Status\".\"System\".\"Blender_Prod_CIP\""
+ },
+ {
+ "instruction_uid": "26",
+ "uid": "26",
+ "type": "PBox_scl",
+ "template_values": {},
+ "inputs": {
+ "in": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "25",
+ "source_pin": "out"
+ },
+ "bit": {
+ "uid": "22",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"M19002\""
+ }
+ },
+ "outputs": {},
+ "scl": "// PBox 26 - Passing bit: \"M19002\""
+ },
+ {
+ "instruction_uid": "27",
+ "uid": "27",
+ "type": "Contact_scl",
+ "template_values": {},
+ "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": {},
+ "scl": "// RLO: \"M19002\" AND \"mDelayPowerOnTmr\""
+ },
+ {
+ "instruction_uid": "28",
+ "uid": "28",
+ "type": "Coil_scl",
+ "template_values": {},
+ "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\" := \"M19002\" AND \"mDelayPowerOnTmr\";"
+ }
+ ]
+ },
+ {
+ "id": "1D4",
+ "title": "CIP ONS",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "25",
+ "uid": "25",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gBlenderCIPMode\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"gBlenderCIPMode\""
+ },
+ {
+ "instruction_uid": "26",
+ "uid": "26",
+ "type": "PBox_scl",
+ "template_values": {},
+ "inputs": {
+ "in": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "25",
+ "source_pin": "out"
+ },
+ "bit": {
+ "uid": "22",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"M19003\""
+ }
+ },
+ "outputs": {},
+ "scl": "// PBox 26 - Passing bit: \"M19003\""
+ },
+ {
+ "instruction_uid": "27",
+ "uid": "27",
+ "type": "Contact_scl",
+ "template_values": {},
+ "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": {},
+ "scl": "// RLO: \"M19003\" AND \"mDelayPowerOnTmr\""
+ },
+ {
+ "instruction_uid": "28",
+ "uid": "28",
+ "type": "Coil_scl",
+ "template_values": {},
+ "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\" := \"M19003\" AND \"mDelayPowerOnTmr\";"
+ }
+ ]
+ },
+ {
+ "id": "1E5",
+ "title": "CIp Mode Init",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "22",
+ "uid": "22",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gCIPONS\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"gCIPONS\""
+ },
+ {
+ "instruction_uid": "23",
+ "uid": "23",
+ "type": "Call_FC_scl",
+ "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;"
+ }
+ ]
+ },
+ {
+ "id": "1F6",
+ "title": "Reset SPWords",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "21",
+ "uid": "21",
+ "type": "Call_FC_scl",
+ "block_name": "BlenderCtrl_ResetSPWord",
+ "block_type": "FC",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "BlenderCtrl_ResetSPWord();"
+ }
+ ]
+ },
+ {
+ "id": "207",
+ "title": "Blender Run Control",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "21",
+ "uid": "21",
+ "type": "Call_FC_scl",
+ "block_name": "BlenderRun__Control",
+ "block_type": "FC",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "BlenderRun__Control();"
+ }
+ ]
+ },
+ {
+ "id": "218",
+ "title": "Tank Pressure Control",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "21",
+ "uid": "21",
+ "type": "Call_FC_scl",
+ "block_name": "Prod Tank PressCtrl",
+ "block_type": "FC",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "Prod Tank PressCtrl();"
+ }
+ ]
+ },
+ {
+ "id": "229",
+ "title": "Balaiage",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "21",
+ "uid": "21",
+ "type": "Call_FC_scl",
+ "block_name": "Baialage",
+ "block_type": "FC",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "Baialage();"
+ }
+ ]
+ },
+ {
+ "id": "23A",
+ "title": "First Production",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "21",
+ "uid": "21",
+ "type": "Call_FB_scl",
+ "block_name": "ProcedureFirstProduction",
+ "block_type": "FB",
+ "instance_scope": "GlobalVariable",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// ERROR: Call a bloque no soportado: ProcedureFirstProduction"
+ }
+ ]
+ },
+ {
+ "id": "24B",
+ "title": "CIP MAIN Calling",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "21",
+ "uid": "21",
+ "type": "Call_FC_scl",
+ "block_name": "CIPMain",
+ "block_type": "FC",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "CIPMain();"
+ }
+ ]
+ },
+ {
+ "id": "25C",
+ "title": "Blender Rinse",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "21",
+ "uid": "21",
+ "type": "Call_FC_scl",
+ "block_name": "BlenderRinse",
+ "block_type": "FC",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "BlenderRinse();"
+ }
+ ]
+ },
+ {
+ "id": "26D",
+ "title": "Safeties",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "21",
+ "uid": "21",
+ "type": "Call_FC_scl",
+ "block_name": "Safeties",
+ "block_type": "FC",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "Safeties();"
+ }
+ ]
+ },
+ {
+ "id": "27E",
+ "title": "Instrument Scanner",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "21",
+ "uid": "21",
+ "type": "Call_FC_scl",
+ "block_name": "Instrument_Scanner",
+ "block_type": "FC",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "Instrument_Scanner();"
+ }
+ ]
+ },
+ {
+ "id": "28F",
+ "title": "Vacuum Control",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "21",
+ "uid": "21",
+ "type": "Call_FC_scl",
+ "block_name": "VacuumCtrl",
+ "block_type": "FC",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "VacuumCtrl();"
+ }
+ ]
+ },
+ {
+ "id": "2A0",
+ "title": "Syrup Room Control",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "21",
+ "uid": "21",
+ "type": "Call_FC_scl",
+ "block_name": "SyrupRoomCtrl",
+ "block_type": "FC",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "SyrupRoomCtrl();"
+ }
+ ]
+ },
+ {
+ "id": "2B1",
+ "title": "Blend Procedure Data",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "22",
+ "uid": "22",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"mDelayPowerOnTmr\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"mDelayPowerOnTmr\""
+ },
+ {
+ "instruction_uid": "23",
+ "uid": "23",
+ "type": "Call_FB_scl",
+ "block_name": "Procedure",
+ "block_type": "FB",
+ "instance_scope": "GlobalVariable",
+ "inputs": {
+ "en": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "22",
+ "source_pin": "out"
+ }
+ },
+ "outputs": {},
+ "scl": "IF \"mDelayPowerOnTmr\" THEN\n // ERROR: Call a bloque no soportado: Procedure\nEND_IF;"
+ }
+ ]
+ },
+ {
+ "id": "2C2",
+ "title": "Pneumatic Valve Control",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "21",
+ "uid": "21",
+ "type": "Call_FC_scl",
+ "block_name": "Pneumatic Valve Ctrl",
+ "block_type": "FC",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "Pneumatic Valve Ctrl();"
+ }
+ ]
+ },
+ {
+ "id": "2D3",
+ "title": "Pumps Control",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "21",
+ "uid": "21",
+ "type": "Call_FC_scl",
+ "block_name": "PumpsControl",
+ "block_type": "FC",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "PumpsControl();"
+ }
+ ]
+ },
+ {
+ "id": "2E4",
+ "title": "Prod Report Manager",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "22",
+ "uid": "22",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_Report\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_Report\""
+ },
+ {
+ "instruction_uid": "23",
+ "uid": "23",
+ "type": "Call_FC_scl",
+ "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;"
+ }
+ ]
+ },
+ {
+ "id": "2F5",
+ "title": "Outputs",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "21",
+ "uid": "21",
+ "type": "Call_FC_scl",
+ "block_name": "Output",
+ "block_type": "FC",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "Output();"
+ }
+ ]
+ },
+ {
+ "id": "306",
+ "title": "SLIM BLOCK",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "21",
+ "uid": "21",
+ "type": "Call_FC_scl",
+ "block_name": "SLIM_Block",
+ "block_type": "FC",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "SLIM_Block();"
+ }
+ ]
+ },
+ {
+ "id": "317",
+ "title": "Interlocking Panel 1",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "21",
+ "uid": "21",
+ "type": "Call_FC_scl",
+ "block_name": "Interlocking_Panel_1",
+ "block_type": "FC",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "Interlocking_Panel_1();"
+ }
+ ]
+ },
+ {
+ "id": "328",
+ "title": "Filler Control",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "21",
+ "uid": "21",
+ "type": "Call_FC_scl",
+ "block_name": "FillerControl",
+ "block_type": "FC",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "FillerControl();"
+ }
+ ]
+ },
+ {
+ "id": "339",
+ "title": "Blender Ctrl Update PWORD",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "21",
+ "uid": "21",
+ "type": "Call_FC_scl",
+ "block_name": "BlenderCtrl_UpdatePWord",
+ "block_type": "FC",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "BlenderCtrl_UpdatePWord();"
+ }
+ ]
+ },
+ {
+ "id": "34A",
+ "title": "ResetTotalizer",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "24",
+ "uid": "24",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gBlendResetTotalizer\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"gBlendResetTotalizer\""
+ },
+ {
+ "instruction_uid": "25",
+ "uid": "25",
+ "type": "Se",
+ "template_values": {},
+ "inputs": {},
+ "outputs": {}
+ }
+ ]
+ },
+ {
+ "id": "35B",
+ "title": "ResetWaterTot",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "26",
+ "uid": "26",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gFTN301_ResetTot\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"gFTN301_ResetTot\""
+ },
+ {
+ "instruction_uid": "27",
+ "uid": "27",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "22",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"mResetTotalizerTmr\""
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"mResetTotalizerTmr\""
+ },
+ {
+ "instruction_uid": "28",
+ "uid": "28",
+ "type": "O_scl",
+ "template_values": {
+ "Card": "Cardinality"
+ },
+ "inputs": {
+ "in2": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "27",
+ "source_pin": "out"
+ },
+ "in1": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "26",
+ "source_pin": "out"
+ }
+ },
+ "outputs": {},
+ "scl": "// Logic O 28: \"gFTN301_ResetTot\" OR \"mResetTotalizerTmr\""
+ },
+ {
+ "instruction_uid": "29",
+ "uid": "29",
+ "type": "Se",
+ "template_values": {},
+ "inputs": {},
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "30",
+ "uid": "30",
+ "type": "Coil",
+ "template_values": {},
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "36C",
+ "title": "Water VFM Reset Totalizer",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "23",
+ "uid": "23",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gFTN301_ResetTot\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"gFTN301_ResetTot\""
+ },
+ {
+ "instruction_uid": "24",
+ "uid": "24",
+ "type": "RCoil",
+ "template_values": {},
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "37D",
+ "title": "ResetCO2Tot",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "27",
+ "uid": "27",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gFTP302_ResetTot\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"gFTP302_ResetTot\""
+ },
+ {
+ "instruction_uid": "28",
+ "uid": "28",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "22",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"mResetTotalizerTmr\""
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"mResetTotalizerTmr\""
+ },
+ {
+ "instruction_uid": "29",
+ "uid": "29",
+ "type": "O_scl",
+ "template_values": {
+ "Card": "Cardinality"
+ },
+ "inputs": {
+ "in2": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "28",
+ "source_pin": "out"
+ },
+ "in1": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "27",
+ "source_pin": "out"
+ }
+ },
+ "outputs": {},
+ "scl": "// Logic O 29: \"gFTP302_ResetTot\" OR \"mResetTotalizerTmr\""
+ },
+ {
+ "instruction_uid": "30",
+ "uid": "30",
+ "type": "Se",
+ "template_values": {},
+ "inputs": {},
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "31",
+ "uid": "31",
+ "type": "Contact",
+ "template_values": {},
+ "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": {}
+ },
+ {
+ "instruction_uid": "32",
+ "uid": "32",
+ "type": "Coil",
+ "template_values": {},
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "38E",
+ "title": "Syrup MFM Reset Totalizer",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "23",
+ "uid": "23",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gFTP302_ResetTot\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"gFTP302_ResetTot\""
+ },
+ {
+ "instruction_uid": "24",
+ "uid": "24",
+ "type": "RCoil",
+ "template_values": {},
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "39F",
+ "title": "ResetProductTot",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "26",
+ "uid": "26",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gFTM303_ResetTot\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"gFTM303_ResetTot\""
+ },
+ {
+ "instruction_uid": "27",
+ "uid": "27",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "22",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"mResetTotalizerTmr\""
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"mResetTotalizerTmr\""
+ },
+ {
+ "instruction_uid": "28",
+ "uid": "28",
+ "type": "O_scl",
+ "template_values": {
+ "Card": "Cardinality"
+ },
+ "inputs": {
+ "in2": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "27",
+ "source_pin": "out"
+ },
+ "in1": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "26",
+ "source_pin": "out"
+ }
+ },
+ "outputs": {},
+ "scl": "// Logic O 28: \"gFTM303_ResetTot\" OR \"mResetTotalizerTmr\""
+ },
+ {
+ "instruction_uid": "29",
+ "uid": "29",
+ "type": "Se",
+ "template_values": {},
+ "inputs": {},
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "30",
+ "uid": "30",
+ "type": "Coil",
+ "template_values": {},
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "3B0",
+ "title": "CO2 MFM Reset Tot",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "23",
+ "uid": "23",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gFTM303_ResetTot\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"gFTM303_ResetTot\""
+ },
+ {
+ "instruction_uid": "24",
+ "uid": "24",
+ "type": "RCoil",
+ "template_values": {},
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "3C1",
+ "title": "ResetCO2Tot",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "26",
+ "uid": "26",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gProductMFMResetTot\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"gProductMFMResetTot\""
+ },
+ {
+ "instruction_uid": "27",
+ "uid": "27",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "22",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"mResetTotalizerTmr\""
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"mResetTotalizerTmr\""
+ },
+ {
+ "instruction_uid": "28",
+ "uid": "28",
+ "type": "O_scl",
+ "template_values": {
+ "Card": "Cardinality"
+ },
+ "inputs": {
+ "in2": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "27",
+ "source_pin": "out"
+ },
+ "in1": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "26",
+ "source_pin": "out"
+ }
+ },
+ "outputs": {},
+ "scl": "// Logic O 28: \"gProductMFMResetTot\" OR \"mResetTotalizerTmr\""
+ },
+ {
+ "instruction_uid": "29",
+ "uid": "29",
+ "type": "Se",
+ "template_values": {},
+ "inputs": {},
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "30",
+ "uid": "30",
+ "type": "Coil",
+ "template_values": {},
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "3D2",
+ "title": "Reset Totalizer",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "23",
+ "uid": "23",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gProductMFMResetTot\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"gProductMFMResetTot\""
+ },
+ {
+ "instruction_uid": "24",
+ "uid": "24",
+ "type": "RCoil",
+ "template_values": {},
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "3E3",
+ "title": "Reset Totalizer",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "23",
+ "uid": "23",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"gBlendResetTotalizer\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"gBlendResetTotalizer\""
+ },
+ {
+ "instruction_uid": "24",
+ "uid": "24",
+ "type": "RCoil",
+ "template_values": {},
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "3F4",
+ "title": "Blender Ctrl Command",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "26",
+ "uid": "26",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_Simulation\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_Simulation\""
+ },
+ {
+ "instruction_uid": "27",
+ "uid": "27",
+ "type": "Call_FC_scl",
+ "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 \"HMI_Blender_Parameters\".\"Processor_Options\".\"Blender_OPT\".\"_Simulation\" THEN\n BlenderCtrl_MFM Command();\nEND_IF;"
+ }
+ ]
+ },
+ {
+ "id": "405",
+ "title": "DP Global Diag",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "21",
+ "uid": "21",
+ "type": "Call_FC_scl",
+ "block_name": "CPU_DP Global Diag",
+ "block_type": "FC",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "CPU_DP Global Diag();"
+ }
+ ]
+ },
+ {
+ "id": "416",
+ "title": "Profibus",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "21",
+ "uid": "21",
+ "type": "Call_FC_scl",
+ "block_name": "Profibus Network",
+ "block_type": "FC",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "Profibus Network();"
+ }
+ ]
+ },
+ {
+ "id": "427",
+ "title": "Valve Fault",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "21",
+ "uid": "21",
+ "type": "Call_FC_scl",
+ "block_name": "ModValveFault",
+ "block_type": "FC",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "ModValveFault();"
+ }
+ ]
+ },
+ {
+ "id": "438",
+ "title": "All Auto",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "25",
+ "uid": "25",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Variables_Cmd\".\"Commands_From_HMI\".\"F7_DeviceControl\".\"Command\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"HMI_Variables_Cmd\".\"Commands_From_HMI\".\"F7_DeviceControl\".\"Command\""
+ },
+ {
+ "instruction_uid": "26",
+ "uid": "26",
+ "type": "Contact_scl",
+ "template_values": {},
+ "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": {},
+ "scl": "// RLO: \"HMI_Variables_Cmd\".\"Commands_From_HMI\".\"F7_DeviceControl\".\"Command\" AND \"HMI_Variables_Cmd\".\"Commands_From_HMI\".\"F7_DeviceControl\".\"Enable\""
+ },
+ {
+ "instruction_uid": "27",
+ "uid": "27",
+ "type": "NBox",
+ "template_values": {},
+ "inputs": {
+ "in": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "26",
+ "source_pin": "out"
+ },
+ "bit": {
+ "uid": "23",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"M19011\""
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "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": {},
+ "inputs": {
+ "operand": {
+ "uid": "24",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Variables_Cmd\".\"Commands_From_HMI\".\"F7_DeviceControl\".\"Light\""
+ }
+ },
+ "outputs": {}
+ }
+ ]
+ },
+ {
+ "id": "449",
+ "title": "Ctrl HMI Manual Active",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "21",
+ "uid": "21",
+ "type": "Call_FC_scl",
+ "block_name": "BlenderCtrl_ManualActive",
+ "block_type": "FC",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "BlenderCtrl_ManualActive();"
+ }
+ ]
+ },
+ {
+ "id": "45A",
+ "title": "Mod Copy Recipe",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "33",
+ "uid": "33",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Variables_Cmd\".\"Recipe\".\"Main_Page\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"HMI_Variables_Cmd\".\"Recipe\".\"Main_Page\""
+ },
+ {
+ "instruction_uid": "34",
+ "uid": "34",
+ "type": "Contact_scl",
+ "template_values": {},
+ "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": {},
+ "scl": "// RLO: \"HMI_Variables_Cmd\".\"Recipe\".\"Main_Page\" AND \"mFP_Recip_Main_Page\""
+ },
+ {
+ "instruction_uid": "35",
+ "uid": "35",
+ "type": "Coil_scl",
+ "template_values": {},
+ "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 \"mFP_Recip_Main_Page\";"
+ },
+ {
+ "instruction_uid": "36",
+ "uid": "36",
+ "type": "Coil",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "24",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"mFP_Recip_Main_Page\""
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "37",
+ "uid": "37",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "25",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"HMI_Variables_Cmd\".\"Recipe\".\"Main_Page\""
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"HMI_Variables_Cmd\".\"Recipe\".\"Main_Page\""
+ },
+ {
+ "instruction_uid": "38",
+ "uid": "38",
+ "type": "Contact_scl",
+ "template_values": {},
+ "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": {},
+ "scl": "// RLO: \"HMI_Variables_Cmd\".\"Recipe\".\"Main_Page\" AND \"HMI_Variables_Cmd\".\"Recipe\".\"Edit\""
+ },
+ {
+ "instruction_uid": "39",
+ "uid": "39",
+ "type": "SdCoil",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "27",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"T_Pulse_Recipe_Edit\""
+ },
+ "in": {
+ "type": "connection",
+ "source_instruction_type": "Contact",
+ "source_instruction_uid": "38",
+ "source_pin": "out"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "40",
+ "uid": "40",
+ "type": "Contact",
+ "template_values": {},
+ "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": "out"
+ }
+ },
+ "outputs": {}
+ },
+ {
+ "instruction_uid": "41",
+ "uid": "41",
+ "type": "RCoil",
+ "template_values": {},
+ "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_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "31",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"mAux_FP_M700_1\""
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"mAux_FP_M700_1\""
+ },
+ {
+ "instruction_uid": "43",
+ "uid": "43",
+ "type": "SCoil",
+ "template_values": {},
+ "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": {}
+ }
+ ]
+ },
+ {
+ "id": "46B",
+ "title": "to HMI - Recipe Management",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "42",
+ "uid": "42",
+ "type": "Contact_scl",
+ "template_values": {},
+ "inputs": {
+ "operand": {
+ "uid": "21",
+ "scope": "GlobalVariable",
+ "type": "variable",
+ "name": "\"AUX TRUE\""
+ },
+ "in": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "// RLO: \"AUX TRUE\""
+ },
+ {
+ "instruction_uid": "43",
+ "uid": "43",
+ "type": "Call_FB_scl",
+ "block_name": "RecipeManagement - Prod",
+ "block_type": "FB",
+ "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 // ERROR: Call a bloque no soportado: RecipeManagement - Prod\nEND_IF;"
+ }
+ ]
+ },
+ {
+ "id": "47C",
+ "title": "Recipe Calculation",
+ "comment": "",
+ "logic": [
+ {
+ "instruction_uid": "21",
+ "uid": "21",
+ "type": "Call_FC_scl",
+ "block_name": "RecipeCalculation",
+ "block_type": "FC",
+ "inputs": {
+ "en": {
+ "type": "powerrail"
+ }
+ },
+ "outputs": {},
+ "scl": "RecipeCalculation();"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/BlenderCtrl__Main_simplified_processed.scl b/BlenderCtrl__Main_simplified_processed.scl
new file mode 100644
index 0000000..babaa13
--- /dev/null
+++ b/BlenderCtrl__Main_simplified_processed.scl
@@ -0,0 +1,392 @@
+// Block Name (Original): BlenderCtrl__Main
+// Block Number: 2000
+// Original Language: LAD
+
+FUNCTION_BLOCK "BlenderCtrl__Main"
+{ S7_Optimized_Access := 'TRUE' }
+VERSION : 0.1
+
+VAR_INPUT
+END_VAR
+
+VAR_OUTPUT
+END_VAR
+
+VAR_IN_OUT
+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
+
+ Clock Signal();
+
+ // Network 2: Machine Init
+
+ BlenderCtrl_MachineInit();
+
+ // Network 3: Filler Head
+
+ // RLO: "AUX FALSE"
+
+ // Network 4: Emergency Pressed
+
+ // RLO: "gIN_VoltageOk"
+
+ // Network 5: Air and CO2 pressure ok and auxiliary ok
+
+ // RLO: "gIN_LinePressCO2Ok"
+ // RLO: "gWorkshopTest"
+ // RLO: "gWorkshopTest" AND "gWorkshop_Co2_Presence"
+ // RLO: ("gWorkshopTest" AND "gWorkshop_Co2_Presence") AND "gWorkshop_CIP_Signals"
+ // RLO: ("gIN_LinePressCO2Ok" OR (("gWorkshopTest" AND "gWorkshop_Co2_Presence") AND "gWorkshop_CIP_Signals")) AND "HMI_Digital"."_PAL_S11"."Filtered"
+ // RLO: "Disable_Bit"
+ // RLO: ((("gIN_LinePressCO2Ok" OR (("gWorkshopTest" AND "gWorkshop_Co2_Presence") AND "gWorkshop_CIP_Signals")) AND "HMI_Digital"."_PAL_S11"."Filtered") OR "Disable_Bit") AND "gIN_VoltageOk"
+ "gBlenderSuppliesOk" := ((("gIN_LinePressCO2Ok" OR (("gWorkshopTest" AND "gWorkshop_Co2_Presence") AND "gWorkshop_CIP_Signals")) AND "HMI_Digital"."_PAL_S11"."Filtered") OR "Disable_Bit") AND "gIN_VoltageOk";
+
+ // Network 6: Blender State Num
+
+ "HMI_Variables_Status"."Procedures"."BlenderStateNum" := 0;
+
+ // Network 7: Delay Power On
+
+ // RLO: "FirstScan"
+
+ // Network 8: Production Mode
+
+ // RLO: "HMI_Variables_Status"."System"."Blender_Prod_CIP"
+ "gBlenderProdMode" := "HMI_Variables_Status"."System"."Blender_Prod_CIP";
+
+ // Network 9: CIp Mode
+
+ // RLO: "HMI_Variables_Status"."System"."Blender_Prod_CIP"
+ "gBlenderCIPMode" := "HMI_Variables_Status"."System"."Blender_Prod_CIP";
+ IF "HMI_Variables_Status"."System"."Blender_Prod_CIP" THEN
+ "HMI_Variables_Status"."Procedures"."BlenderStateNum" := 19;
+ END_IF;
+
+ // Network 10: Error Faults
+
+ // RLO: "AUX FALSE"
+
+ // Network 11: Filler Bottle Count Used to push Product
+
+ // RLO: "System_RunOut_Variables"."ProdPipeRunOutWaterCount"
+ "System_RunOut_Variables"."ProdPipeRunOutFillerBott" := "System_RunOut_Variables"."ProdPipeRunOutWaterCount";
+
+ // Network 12: Water Bypass Enable
+
+ // RLO: "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_StillWaterByPass"
+ // RLO: "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_ByPassDeair"
+ // RLO: "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_ByPassDeair" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Deaireation"
+ // RLO: ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_StillWaterByPass" OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_ByPassDeair" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Deaireation")) AND "Blender_Variables_Pers"."gWaterRecipe"
+ // RLO: (("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_StillWaterByPass" OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_ByPassDeair" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Deaireation")) AND "Blender_Variables_Pers"."gWaterRecipe") AND "Blender_Variables_Pers"."gCarboStillRecipe"
+ "gStillWaterByPassEn" := (("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_StillWaterByPass" OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_ByPassDeair" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Deaireation")) AND "Blender_Variables_Pers"."gWaterRecipe") AND "Blender_Variables_Pers"."gCarboStillRecipe";
+
+ // Network 13: Still Water Bypass
+
+ // RLO: "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem"
+ // RLO: "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_StillWaterByPass"
+ // RLO: ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_StillWaterByPass") AND "Blender_Variables_Pers"."gWaterRecipe"
+ // RLO: (("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_StillWaterByPass") AND "Blender_Variables_Pers"."gWaterRecipe") AND "Blender_Variables_Pers"."gCarboStillRecipe"
+ "gBlendFiStillWaterByPass" := (("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_StillWaterByPass") AND "Blender_Variables_Pers"."gWaterRecipe") AND "Blender_Variables_Pers"."gCarboStillRecipe";
+
+ // Network 14: Manual Syrup Drain Valve Open - Operator Alarm
+
+ // RLO: "gSyrupRoomEn"
+ // RLO: "gSyrupRoomEn" AND "gIN_HVP301_Aux"
+ // RLO: ("gSyrupRoomEn" AND "gIN_HVP301_Aux") AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled"
+ // RLO: (("gSyrupRoomEn" AND "gIN_HVP301_Aux") AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled") AND "Procedure_Variables"."FTP302Line_Preparation"."Done"
+ // RLO: ((("gSyrupRoomEn" AND "gIN_HVP301_Aux") AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled") AND "Procedure_Variables"."FTP302Line_Preparation"."Done") AND "Procedure_Variables"."Syr_RunOut"."Done"
+ // RLO: "gBlenderCIPMode"
+ // RLO: "gBlenderCIPMode" AND "gIN_CIP_CIPRunning"
+ // RLO: ("gBlenderCIPMode" AND "gIN_CIP_CIPRunning") AND "Procedure_Variables"."Blender_Run"."Running"
+ "gHVP301_Open" := (((("gSyrupRoomEn" AND "gIN_HVP301_Aux") AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled") AND "Procedure_Variables"."FTP302Line_Preparation"."Done") AND "Procedure_Variables"."Syr_RunOut"."Done") OR (("gBlenderCIPMode" AND "gIN_CIP_CIPRunning") AND "Procedure_Variables"."Blender_Run"."Running");
+
+ // Network 15: Manual Syrup Drain Valve Open - Operator Alarm
+
+ // RLO: "gIN_HVM302_Aux"
+
+ // Network 16: Maselli Control
+
+ // RLO: "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BrixMeter"
+ // Cond: "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_MeterType" = 6
+ IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_MeterType" = 6 THEN
+ Maselli_PA_Control();
+ END_IF;
+
+ // Network 17: mPDS Control
+
+ // RLO: "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BrixMeter"
+ // Cond: "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_MeterType" = 5
+ IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_MeterType" = 5 THEN
+ mPDS_PA_Control();
+ END_IF;
+
+ // Network 18: mPDS Syrup Control
+
+ // RLO: "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SyrBrixMeter"
+ IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SyrBrixMeter" THEN
+ mPDS_SYR_PA_Control();
+ END_IF;
+
+ // Network 19: Co2 Analog Input
+ // GetProdBrixCO2_FromAnalogIn
+ // CALL "GetProdBrixCO2_FromAn"
+ // NOP 0
+
+ // RLO: "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BrixMeter"
+ // Cond: "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_MeterType" = 3
+ IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_MeterType" = 3 THEN
+ GetProdBrixCO2_Anal_Inpt();
+ END_IF;
+
+ // Network 20: Quality
+
+ ProductQuality();
+
+ // Network 21: Input Data
+
+ // ERROR: Call a bloque no soportado: Input
+
+ // Network 22: Sel Brix Source Check
+
+ SelCheckBrixSource();
+
+ // Network 23: Check Water Cooling System Temperature
+
+ // RLO: "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InverterRecirPumpPPM306"
+ IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InverterRecirPumpPPM306" THEN
+ CTRLCoolingSystem();
+ END_IF;
+
+ // Network 24: Tank Level
+
+ TankLevel();
+
+ // Network 25: Production ONS
+
+ // RLO: "gBlenderProdMode"
+ // PBox 26 - Passing bit: "M19001"
+ // RLO: "M19001" AND "mDelayPowerOnTmr"
+ "gProductionONS" := "M19001" AND "mDelayPowerOnTmr";
+
+ // Network 26: Blender Prod Mode Init
+
+ // RLO: "gProductionONS"
+ // RLO: "Procedure_Variables"."Blender_Rinse"."ONS_Done"
+ // RLO: ("gProductionONS" OR "Procedure_Variables"."Blender_Rinse"."ONS_Done") AND "Blender_Variables_Pers"."gBlenderStarted"
+ IF ("gProductionONS" OR "Procedure_Variables"."Blender_Rinse"."ONS_Done") AND "Blender_Variables_Pers"."gBlenderStarted" THEN
+ BlenderCtrl_ProdModeInit();
+ END_IF;
+
+ // Network 27: Rinse ONS
+
+ // RLO: "HMI_Variables_Status"."System"."Blender_Prod_CIP"
+ // PBox 26 - Passing bit: "M19002"
+ // RLO: "M19002" AND "mDelayPowerOnTmr"
+ "gRinseONS" := "M19002" AND "mDelayPowerOnTmr";
+
+ // Network 28: CIP ONS
+
+ // RLO: "gBlenderCIPMode"
+ // PBox 26 - Passing bit: "M19003"
+ // RLO: "M19003" AND "mDelayPowerOnTmr"
+ "gCIPONS" := "M19003" AND "mDelayPowerOnTmr";
+
+ // Network 29: CIp Mode Init
+
+ // RLO: "gCIPONS"
+ IF "gCIPONS" THEN
+ BlenderCtrl_CIPModeInit();
+ END_IF;
+
+ // Network 30: Reset SPWords
+
+ BlenderCtrl_ResetSPWord();
+
+ // Network 31: Blender Run Control
+
+ BlenderRun__Control();
+
+ // Network 32: Tank Pressure Control
+
+ Prod Tank PressCtrl();
+
+ // Network 33: Balaiage
+
+ Baialage();
+
+ // Network 34: First Production
+
+ // ERROR: Call a bloque no soportado: ProcedureFirstProduction
+
+ // Network 35: CIP MAIN Calling
+
+ CIPMain();
+
+ // Network 36: Blender Rinse
+
+ BlenderRinse();
+
+ // Network 37: Safeties
+
+ Safeties();
+
+ // Network 38: Instrument Scanner
+
+ Instrument_Scanner();
+
+ // Network 39: Vacuum Control
+
+ VacuumCtrl();
+
+ // Network 40: Syrup Room Control
+
+ SyrupRoomCtrl();
+
+ // Network 41: Blend Procedure Data
+
+ // RLO: "mDelayPowerOnTmr"
+ IF "mDelayPowerOnTmr" THEN
+ // ERROR: Call a bloque no soportado: Procedure
+ END_IF;
+
+ // Network 42: Pneumatic Valve Control
+
+ Pneumatic Valve Ctrl();
+
+ // Network 43: Pumps Control
+
+ PumpsControl();
+
+ // Network 44: Prod Report Manager
+
+ // RLO: "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Report"
+ IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Report" THEN
+ ProdReportManager();
+ END_IF;
+
+ // Network 45: Outputs
+
+ Output();
+
+ // Network 46: SLIM BLOCK
+
+ SLIM_Block();
+
+ // Network 47: Interlocking Panel 1
+
+ Interlocking_Panel_1();
+
+ // Network 48: Filler Control
+
+ FillerControl();
+
+ // Network 49: Blender Ctrl Update PWORD
+
+ BlenderCtrl_UpdatePWord();
+
+ // Network 50: ResetTotalizer
+
+ // RLO: "gBlendResetTotalizer"
+
+ // Network 51: ResetWaterTot
+
+ // RLO: "gFTN301_ResetTot"
+ // RLO: "mResetTotalizerTmr"
+
+ // Network 52: Water VFM Reset Totalizer
+
+ // RLO: "gFTN301_ResetTot"
+
+ // Network 53: ResetCO2Tot
+
+ // RLO: "gFTP302_ResetTot"
+ // RLO: "mResetTotalizerTmr"
+
+ // Network 54: Syrup MFM Reset Totalizer
+
+ // RLO: "gFTP302_ResetTot"
+
+ // Network 55: ResetProductTot
+
+ // RLO: "gFTM303_ResetTot"
+ // RLO: "mResetTotalizerTmr"
+
+ // Network 56: CO2 MFM Reset Tot
+
+ // RLO: "gFTM303_ResetTot"
+
+ // Network 57: ResetCO2Tot
+
+ // RLO: "gProductMFMResetTot"
+ // RLO: "mResetTotalizerTmr"
+
+ // Network 58: Reset Totalizer
+
+ // RLO: "gProductMFMResetTot"
+
+ // Network 59: Reset Totalizer
+
+ // RLO: "gBlendResetTotalizer"
+
+ // Network 60: Blender Ctrl Command
+
+ // RLO: "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation"
+ IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" THEN
+ BlenderCtrl_MFM Command();
+ END_IF;
+
+ // Network 61: DP Global Diag
+
+ CPU_DP Global Diag();
+
+ // Network 62: Profibus
+
+ Profibus Network();
+
+ // Network 63: Valve Fault
+
+ ModValveFault();
+
+ // Network 64: All Auto
+
+ // RLO: "HMI_Variables_Cmd"."Commands_From_HMI"."F7_DeviceControl"."Command"
+ // RLO: "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
+
+ BlenderCtrl_ManualActive();
+
+ // Network 66: Mod Copy Recipe
+
+ // RLO: "HMI_Variables_Cmd"."Recipe"."Main_Page"
+ // RLO: "HMI_Variables_Cmd"."Recipe"."Main_Page" AND "mFP_Recip_Main_Page"
+ "mAux_FP_M700_1" := "HMI_Variables_Cmd"."Recipe"."Main_Page" AND "mFP_Recip_Main_Page";
+ // RLO: "HMI_Variables_Cmd"."Recipe"."Main_Page"
+ // RLO: "HMI_Variables_Cmd"."Recipe"."Main_Page" AND "HMI_Variables_Cmd"."Recipe"."Edit"
+ // RLO: "mAux_FP_M700_1"
+
+ // Network 67: to HMI - Recipe Management
+
+ // RLO: "AUX TRUE"
+ IF "AUX TRUE" THEN
+ // ERROR: Call a bloque no soportado: RecipeManagement - Prod
+ END_IF;
+
+ // Network 68: Recipe Calculation
+
+ RecipeCalculation();
+
+END_FUNCTION_BLOCK
diff --git a/BlenderRun_ProdTime_simplified.json b/BlenderRun_ProdTime_simplified.json
deleted file mode 100644
index dd19691..0000000
--- a/BlenderRun_ProdTime_simplified.json
+++ /dev/null
@@ -1,1175 +0,0 @@
-{
- "block_name": "BlenderRun_ProdTime",
- "block_number": 2040,
- "language": "LAD",
- "block_comment": "",
- "interface": {
- "Temp": [
- {
- "name": "m1MinONS",
- "datatype": "Bool"
- },
- {
- "name": "m1HourONS",
- "datatype": "Bool"
- },
- {
- "name": "Buffer",
- "datatype": "Bool"
- },
- {
- "name": "mRunMin",
- "datatype": "Bool"
- },
- {
- "name": "mRunHr",
- "datatype": "Bool"
- },
- {
- "name": "I_DIRunning_sec",
- "datatype": "DInt"
- },
- {
- "name": "I_DIRunning_min",
- "datatype": "DInt"
- },
- {
- "name": "MOD60",
- "datatype": "DInt"
- }
- ],
- "Return": [
- {
- "name": "Ret_Val",
- "datatype": "Void"
- }
- ]
- },
- "networks": [
- {
- "id": "9",
- "title": "Seconds",
- "comment": "",
- "logic": [
- {
- "instruction_uid": "26",
- "type": "Contact",
- "inputs": {
- "in": {
- "type": "powerrail"
- },
- "operand": {
- "uid": "21",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"Procedure_Variables\".\"Blender_Run\".\"Running\""
- }
- },
- "outputs": {}
- },
- {
- "instruction_uid": "27",
- "type": "Contact",
- "inputs": {
- "in": {
- "type": "connection",
- "source_instruction_uid": "26",
- "source_instruction_type": "Contact",
- "source_pin": "out"
- },
- "operand": {
- "uid": "22",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"CLK_1.0S\""
- }
- },
- "outputs": {}
- },
- {
- "instruction_uid": "28",
- "type": "Add",
- "inputs": {
- "en": {
- "type": "connection",
- "source_instruction_uid": "27",
- "source_instruction_type": "Contact",
- "source_pin": "out"
- },
- "in1": {
- "uid": "23",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"Blender_Variables_Pers\".\"gSLIM_Sec\""
- },
- "in2": {
- "uid": "24",
- "scope": "LiteralConstant",
- "type": "constant",
- "datatype": "Int",
- "value": 1
- }
- },
- "outputs": {
- "out": [
- {
- "uid": "25",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"Blender_Variables_Pers\".\"gSLIM_Sec\""
- }
- ]
- }
- }
- ]
- },
- {
- "id": "1A",
- "title": "Reset Hours",
- "comment": "",
- "logic": [
- {
- "instruction_uid": "24",
- "type": "Contact",
- "inputs": {
- "in": {
- "type": "powerrail"
- },
- "operand": {
- "uid": "21",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"SLIM_Variables\".\"ResetHour\""
- }
- },
- "outputs": {}
- },
- {
- "instruction_uid": "25",
- "type": "Move",
- "inputs": {
- "en": {
- "type": "connection",
- "source_instruction_uid": "24",
- "source_instruction_type": "Contact",
- "source_pin": "out"
- },
- "in": {
- "uid": "22",
- "scope": "LiteralConstant",
- "type": "constant",
- "datatype": "Int",
- "value": 0
- }
- },
- "outputs": {
- "out1": [
- {
- "uid": "23",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"Blender_Variables_Pers\".\"gSLIM_Sec\""
- }
- ]
- }
- }
- ]
- },
- {
- "id": "2B",
- "title": "Seconds Counter",
- "comment": "",
- "logic": [
- {
- "instruction_uid": "26",
- "type": "Contact",
- "inputs": {
- "in": {
- "type": "powerrail"
- },
- "operand": {
- "uid": "21",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"gBlenderBlending\""
- }
- },
- "outputs": {}
- },
- {
- "instruction_uid": "27",
- "type": "Contact",
- "inputs": {
- "in": {
- "type": "connection",
- "source_instruction_uid": "26",
- "source_instruction_type": "Contact",
- "source_pin": "out"
- },
- "operand": {
- "uid": "22",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"CLK_1.0S\""
- }
- },
- "outputs": {}
- },
- {
- "instruction_uid": "28",
- "type": "Add",
- "inputs": {
- "en": {
- "type": "connection",
- "source_instruction_uid": "27",
- "source_instruction_type": "Contact",
- "source_pin": "out"
- },
- "in1": {
- "uid": "23",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"Blender_Variables_Pers\".\"gProdSec\""
- },
- "in2": {
- "uid": "24",
- "scope": "LiteralConstant",
- "type": "constant",
- "datatype": "Int",
- "value": 1
- }
- },
- "outputs": {
- "out": [
- {
- "uid": "25",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"Blender_Variables_Pers\".\"gProdSec\""
- }
- ]
- }
- }
- ]
- },
- {
- "id": "3C",
- "title": "Minute",
- "comment": "",
- "logic": [
- {
- "instruction_uid": "24",
- "type": "Eq",
- "inputs": {
- "in1": {
- "uid": "21",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"Blender_Variables_Pers\".\"gProdSec\""
- },
- "in2": {
- "uid": "22",
- "scope": "LiteralConstant",
- "type": "constant",
- "datatype": "Int",
- "value": 60
- },
- "pre": {
- "type": "powerrail"
- }
- },
- "outputs": {}
- },
- {
- "instruction_uid": "25",
- "type": "Coil",
- "inputs": {
- "in": {
- "type": "connection",
- "source_instruction_uid": "24",
- "source_instruction_type": "Eq",
- "source_pin": "out"
- },
- "operand": {
- "uid": "23",
- "scope": "LocalVariable",
- "type": "variable",
- "name": "\"m1MinONS\""
- }
- },
- "outputs": {}
- }
- ]
- },
- {
- "id": "4D",
- "title": "Minute Counter",
- "comment": "",
- "logic": [
- {
- "instruction_uid": "27",
- "type": "Contact",
- "inputs": {
- "in": {
- "type": "powerrail"
- },
- "operand": {
- "uid": "21",
- "scope": "LocalVariable",
- "type": "variable",
- "name": "\"m1MinONS\""
- }
- },
- "outputs": {}
- },
- {
- "instruction_uid": "28",
- "type": "Move",
- "inputs": {
- "en": {
- "type": "connection",
- "source_instruction_uid": "27",
- "source_instruction_type": "Contact",
- "source_pin": "out"
- },
- "in": {
- "uid": "22",
- "scope": "LiteralConstant",
- "type": "constant",
- "datatype": "Int",
- "value": 0
- }
- },
- "outputs": {
- "out1": [
- {
- "uid": "23",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"Blender_Variables_Pers\".\"gProdSec\""
- }
- ]
- }
- },
- {
- "instruction_uid": "29",
- "type": "Add",
- "inputs": {
- "in1": {
- "uid": "24",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"Blender_Variables_Pers\".\"gProdMin\""
- },
- "in2": {
- "uid": "25",
- "scope": "LiteralConstant",
- "type": "constant",
- "datatype": "Int",
- "value": 1
- },
- "en": {
- "type": "connection",
- "source_instruction_uid": "27",
- "source_instruction_type": "Contact",
- "source_pin": "out"
- }
- },
- "outputs": {
- "out": [
- {
- "uid": "26",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"Blender_Variables_Pers\".\"gProdMin\""
- }
- ]
- }
- }
- ]
- },
- {
- "id": "5E",
- "title": "Hour",
- "comment": "",
- "logic": [
- {
- "instruction_uid": "24",
- "type": "Eq",
- "inputs": {
- "in1": {
- "uid": "21",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"Blender_Variables_Pers\".\"gProdMin\""
- },
- "in2": {
- "uid": "22",
- "scope": "LiteralConstant",
- "type": "constant",
- "datatype": "Int",
- "value": 60
- },
- "pre": {
- "type": "powerrail"
- }
- },
- "outputs": {}
- },
- {
- "instruction_uid": "25",
- "type": "Coil",
- "inputs": {
- "in": {
- "type": "connection",
- "source_instruction_uid": "24",
- "source_instruction_type": "Eq",
- "source_pin": "out"
- },
- "operand": {
- "uid": "23",
- "scope": "LocalVariable",
- "type": "variable",
- "name": "\"m1HourONS\""
- }
- },
- "outputs": {}
- }
- ]
- },
- {
- "id": "6F",
- "title": "Hour Counter",
- "comment": "",
- "logic": [
- {
- "instruction_uid": "30",
- "type": "Contact",
- "inputs": {
- "in": {
- "type": "powerrail"
- },
- "operand": {
- "uid": "21",
- "scope": "LocalVariable",
- "type": "variable",
- "name": "\"m1HourONS\""
- }
- },
- "outputs": {}
- },
- {
- "instruction_uid": "31",
- "type": "Move",
- "inputs": {
- "en": {
- "type": "connection",
- "source_instruction_uid": "30",
- "source_instruction_type": "Contact",
- "source_pin": "out"
- },
- "in": {
- "uid": "22",
- "scope": "LiteralConstant",
- "type": "constant",
- "datatype": "Int",
- "value": 0
- }
- },
- "outputs": {
- "out1": [
- {
- "uid": "23",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"Blender_Variables_Pers\".\"gProdMin\""
- }
- ]
- }
- },
- {
- "instruction_uid": "32",
- "type": "Add",
- "inputs": {
- "in1": {
- "uid": "24",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"Blender_Variables_Pers\".\"gProdHour\""
- },
- "in2": {
- "uid": "25",
- "scope": "LiteralConstant",
- "type": "constant",
- "datatype": "Int",
- "value": 1
- },
- "en": {
- "type": "connection",
- "source_instruction_uid": "30",
- "source_instruction_type": "Contact",
- "source_pin": "out"
- }
- },
- "outputs": {
- "out": [
- {
- "uid": "26",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"Blender_Variables_Pers\".\"gProdHour\""
- }
- ]
- }
- },
- {
- "instruction_uid": "33",
- "type": "Add",
- "inputs": {
- "in1": {
- "uid": "27",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"Blender_Variables_Pers\".\"gBlendingMaintHour\""
- },
- "in2": {
- "uid": "28",
- "scope": "LiteralConstant",
- "type": "constant",
- "datatype": "Int",
- "value": 1
- },
- "en": {
- "type": "connection",
- "source_instruction_uid": "30",
- "source_instruction_type": "Contact",
- "source_pin": "out"
- }
- },
- "outputs": {
- "out": [
- {
- "uid": "29",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"Blender_Variables_Pers\".\"gBlendingMaintHour\""
- }
- ]
- }
- }
- ]
- },
- {
- "id": "80",
- "title": "Counter reset",
- "comment": "",
- "logic": [
- {
- "instruction_uid": "29",
- "type": "Contact",
- "inputs": {
- "in": {
- "type": "powerrail"
- },
- "operand": {
- "uid": "21",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"gBlenderCIPMode\""
- }
- },
- "outputs": {}
- },
- {
- "instruction_uid": "30",
- "type": "Contact",
- "inputs": {
- "operand": {
- "uid": "22",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"gBlenderRinseMode\""
- }
- },
- "outputs": {}
- },
- {
- "instruction_uid": "31",
- "type": "O",
- "inputs": {
- "in1": {
- "type": "connection",
- "source_instruction_uid": "29",
- "source_instruction_type": "Contact",
- "source_pin": "out"
- },
- "in2": {
- "type": "connection",
- "source_instruction_uid": "30",
- "source_instruction_type": "Contact",
- "source_pin": "out"
- }
- },
- "outputs": {}
- },
- {
- "instruction_uid": "32",
- "type": "Move",
- "inputs": {
- "en": {
- "type": "connection",
- "source_instruction_uid": "31",
- "source_instruction_type": "O",
- "source_pin": "out"
- },
- "in": {
- "uid": "23",
- "scope": "LiteralConstant",
- "type": "constant",
- "datatype": "Int",
- "value": 0
- }
- },
- "outputs": {
- "out1": [
- {
- "uid": "24",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"Blender_Variables_Pers\".\"gProdSec\""
- }
- ]
- }
- },
- {
- "instruction_uid": "33",
- "type": "Move",
- "inputs": {
- "in": {
- "uid": "25",
- "scope": "LiteralConstant",
- "type": "constant",
- "datatype": "Int",
- "value": 0
- },
- "en": {
- "type": "connection",
- "source_instruction_uid": "31",
- "source_instruction_type": "O",
- "source_pin": "out"
- }
- },
- "outputs": {
- "out1": [
- {
- "uid": "26",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"Blender_Variables_Pers\".\"gProdMin\""
- }
- ]
- }
- },
- {
- "instruction_uid": "34",
- "type": "Move",
- "inputs": {
- "in": {
- "uid": "27",
- "scope": "LiteralConstant",
- "type": "constant",
- "datatype": "Int",
- "value": 0
- },
- "en": {
- "type": "connection",
- "source_instruction_uid": "31",
- "source_instruction_type": "O",
- "source_pin": "out"
- }
- },
- "outputs": {
- "out1": [
- {
- "uid": "28",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"Blender_Variables_Pers\".\"gProdHour\""
- }
- ]
- }
- }
- ]
- },
- {
- "id": "91",
- "title": "Running Seconds",
- "comment": "",
- "logic": [
- {
- "instruction_uid": "26",
- "type": "Contact",
- "inputs": {
- "in": {
- "type": "powerrail"
- },
- "operand": {
- "uid": "21",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"Procedure_Variables\".\"Blender_Run\".\"Running\""
- }
- },
- "outputs": {}
- },
- {
- "instruction_uid": "27",
- "type": "Contact",
- "inputs": {
- "in": {
- "type": "connection",
- "source_instruction_uid": "26",
- "source_instruction_type": "Contact",
- "source_pin": "out"
- },
- "operand": {
- "uid": "22",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"CLK_1.0S\""
- }
- },
- "outputs": {}
- },
- {
- "instruction_uid": "28",
- "type": "Add",
- "inputs": {
- "en": {
- "type": "connection",
- "source_instruction_uid": "27",
- "source_instruction_type": "Contact",
- "source_pin": "out"
- },
- "in1": {
- "uid": "23",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"Blender_Variables_Pers\".\"gRunningSeconds\""
- },
- "in2": {
- "uid": "24",
- "scope": "LiteralConstant",
- "type": "constant",
- "datatype": "Int",
- "value": 1
- }
- },
- "outputs": {
- "out": [
- {
- "uid": "25",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"Blender_Variables_Pers\".\"gRunningSeconds\""
- }
- ]
- }
- }
- ]
- },
- {
- "id": "A2",
- "title": "Running Minutes",
- "comment": "",
- "logic": [
- {
- "instruction_uid": "35",
- "type": "Convert",
- "inputs": {
- "en": {
- "type": "powerrail"
- },
- "in": {
- "uid": "21",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"Blender_Variables_Pers\".\"gRunningSeconds\""
- }
- },
- "outputs": {
- "out": [
- {
- "uid": "22",
- "scope": "LocalVariable",
- "type": "variable",
- "name": "\"I_DIRunning_sec\""
- }
- ]
- }
- },
- {
- "instruction_uid": "36",
- "type": "Mod",
- "inputs": {
- "en": {
- "type": "connection",
- "source_instruction_uid": "35",
- "source_instruction_type": "Convert",
- "source_pin": "eno"
- },
- "in1": {
- "uid": "23",
- "scope": "LocalVariable",
- "type": "variable",
- "name": "\"I_DIRunning_sec\""
- },
- "in2": {
- "uid": "24",
- "scope": "TypedConstant",
- "type": "constant",
- "datatype": "TypedConstant",
- "value": "DINT#60"
- }
- },
- "outputs": {
- "out": [
- {
- "uid": "25",
- "scope": "LocalVariable",
- "type": "variable",
- "name": "\"MOD60\""
- }
- ]
- },
- "eno_logic": [
- {
- "target_pin": "pre",
- "target_type": "instruction",
- "target_uid": "37",
- "target_name": "Eq"
- }
- ]
- },
- {
- "instruction_uid": "37",
- "type": "Eq",
- "inputs": {
- "in1": {
- "uid": "26",
- "scope": "LocalVariable",
- "type": "variable",
- "name": "\"MOD60\""
- },
- "in2": {
- "uid": "27",
- "scope": "TypedConstant",
- "type": "constant",
- "datatype": "TypedConstant",
- "value": "DINT#0"
- },
- "pre": {
- "type": "connection",
- "source_instruction_uid": "36",
- "source_instruction_type": "Mod",
- "source_pin": "eno"
- }
- },
- "outputs": {}
- },
- {
- "instruction_uid": "38",
- "type": "Contact",
- "inputs": {
- "in": {
- "type": "connection",
- "source_instruction_uid": "37",
- "source_instruction_type": "Eq",
- "source_pin": "out"
- },
- "operand": {
- "uid": "28",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"Procedure_Variables\".\"Blender_Run\".\"Running\""
- }
- },
- "outputs": {}
- },
- {
- "instruction_uid": "39",
- "type": "Contact",
- "inputs": {
- "in": {
- "type": "connection",
- "source_instruction_uid": "38",
- "source_instruction_type": "Contact",
- "source_pin": "out"
- },
- "operand": {
- "uid": "29",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"CLK_1.0S\""
- }
- },
- "outputs": {}
- },
- {
- "instruction_uid": "40",
- "type": "Add",
- "inputs": {
- "en": {
- "type": "connection",
- "source_instruction_uid": "39",
- "source_instruction_type": "Contact",
- "source_pin": "out"
- },
- "in1": {
- "uid": "30",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"Blender_Variables_Pers\".\"gRunningMinutes\""
- },
- "in2": {
- "uid": "31",
- "scope": "LiteralConstant",
- "type": "constant",
- "datatype": "Int",
- "value": 1
- }
- },
- "outputs": {
- "out": [
- {
- "uid": "32",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"Blender_Variables_Pers\".\"gRunningMinutes\""
- }
- ]
- }
- },
- {
- "instruction_uid": "41",
- "type": "PBox",
- "inputs": {
- "bit": {
- "uid": "33",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"M19012\""
- }
- },
- "outputs": {}
- },
- {
- "instruction_uid": "42",
- "type": "Coil",
- "inputs": {
- "in": {
- "type": "connection",
- "source_instruction_uid": "41",
- "source_instruction_type": "PBox",
- "source_pin": "out"
- },
- "operand": {
- "uid": "34",
- "scope": "LocalVariable",
- "type": "variable",
- "name": "\"mRunMin\""
- }
- },
- "outputs": {}
- }
- ]
- },
- {
- "id": "B3",
- "title": "Running Hours for Maintenance",
- "comment": "",
- "logic": [
- {
- "instruction_uid": "32",
- "type": "Contact",
- "inputs": {
- "in": {
- "type": "powerrail"
- },
- "operand": {
- "uid": "21",
- "scope": "LocalVariable",
- "type": "variable",
- "name": "\"mRunMin\""
- }
- },
- "outputs": {}
- },
- {
- "instruction_uid": "33",
- "type": "Convert",
- "inputs": {
- "en": {
- "type": "connection",
- "source_instruction_uid": "32",
- "source_instruction_type": "Contact",
- "source_pin": "out"
- },
- "in": {
- "uid": "22",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"Blender_Variables_Pers\".\"gRunningMinutes\""
- }
- },
- "outputs": {
- "out": [
- {
- "uid": "23",
- "scope": "LocalVariable",
- "type": "variable",
- "name": "\"I_DIRunning_min\""
- }
- ]
- }
- },
- {
- "instruction_uid": "34",
- "type": "Mod",
- "inputs": {
- "en": {
- "type": "connection",
- "source_instruction_uid": "33",
- "source_instruction_type": "Convert",
- "source_pin": "eno"
- },
- "in1": {
- "uid": "24",
- "scope": "LocalVariable",
- "type": "variable",
- "name": "\"I_DIRunning_min\""
- },
- "in2": {
- "uid": "25",
- "scope": "TypedConstant",
- "type": "constant",
- "datatype": "TypedConstant",
- "value": "DINT#60"
- }
- },
- "outputs": {
- "out": [
- {
- "uid": "26",
- "scope": "LocalVariable",
- "type": "variable",
- "name": "\"MOD60\""
- }
- ]
- },
- "eno_logic": [
- {
- "target_pin": "pre",
- "target_type": "instruction",
- "target_uid": "35",
- "target_name": "Eq"
- }
- ]
- },
- {
- "instruction_uid": "35",
- "type": "Eq",
- "inputs": {
- "in1": {
- "uid": "27",
- "scope": "LocalVariable",
- "type": "variable",
- "name": "\"MOD60\""
- },
- "in2": {
- "uid": "28",
- "scope": "TypedConstant",
- "type": "constant",
- "datatype": "TypedConstant",
- "value": "DINT#0"
- },
- "pre": {
- "type": "connection",
- "source_instruction_uid": "34",
- "source_instruction_type": "Mod",
- "source_pin": "eno"
- }
- },
- "outputs": {}
- },
- {
- "instruction_uid": "36",
- "type": "Add",
- "inputs": {
- "en": {
- "type": "connection",
- "source_instruction_uid": "35",
- "source_instruction_type": "Eq",
- "source_pin": "out"
- },
- "in1": {
- "uid": "29",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"Blender_Variables_Pers\".\"gRunningMaintHour\""
- },
- "in2": {
- "uid": "30",
- "scope": "LiteralConstant",
- "type": "constant",
- "datatype": "Int",
- "value": 1
- }
- },
- "outputs": {
- "out": [
- {
- "uid": "31",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"Blender_Variables_Pers\".\"gRunningMaintHour\""
- }
- ]
- }
- }
- ]
- },
- {
- "id": "C4",
- "title": "Running Hours for Maintenance",
- "comment": "",
- "logic": [
- {
- "instruction_uid": "23",
- "type": "Move",
- "inputs": {
- "en": {
- "type": "powerrail"
- },
- "in": {
- "uid": "21",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"Blender_Variables_Pers\".\"gRunningMaintHour\""
- }
- },
- "outputs": {
- "out1": [
- {
- "uid": "22",
- "scope": "GlobalVariable",
- "type": "variable",
- "name": "\"HMI_Variables_Status\".\"System\".\"BlendingMaintHour\""
- }
- ]
- }
- }
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/x1_to_json.py b/x1_to_json.py
index 92cc6e8..fa13257 100644
--- a/x1_to_json.py
+++ b/x1_to_json.py
@@ -3,7 +3,7 @@ import json
import os
from lxml import etree
import traceback
-from collections import defaultdict # Para facilitar el manejo de conexiones
+from collections import defaultdict
# --- Namespaces ---
ns = {
@@ -14,6 +14,7 @@ ns = {
# --- Helper Functions ---
# (get_multilingual_text, get_symbol_name, parse_access, parse_part - sin cambios)
+# ... (código de estas funciones aquí) ...
def get_multilingual_text(element, default_lang="en-US", fallback_lang="it-IT"):
if element is None:
return ""
@@ -100,7 +101,7 @@ def parse_access(access_element):
float(value_str)
info["datatype"] = "Real"
except ValueError:
- pass # Si no es float, sigue siendo Unknown (o lo que fuera antes)
+ pass
elif "#" in value_str:
info["datatype"] = "TypedConstant"
info["value"] = value_str
@@ -164,276 +165,549 @@ def parse_part(part_element):
template_values[tv_name] = tv_type
except Exception as e:
print(f"Advertencia: Error extrayendo TemplateValues Part UID={uid}: {e}")
- return {"uid": uid, "name": name, "template_values": template_values}
+ return {
+ "uid": uid,
+ "type": name,
+ "template_values": template_values,
+ } # Cambiado Name a type
+# --- NUEVA FUNCIÓN parse_call ---
+def parse_call(call_element):
+ """
+ Parsea un elemento Call (llamada a FC/FB) y extrae su información.
+ """
+ if call_element is None:
+ return None
+ uid = call_element.get("UId")
+ if not uid:
+ print(
+ f"Error: Call encontrado sin UID: {etree.tostring(call_element, encoding='unicode')}"
+ )
+ return None
+
+ call_info_elem = call_element.xpath("./*[local-name()='CallInfo']")
+ if not call_info_elem:
+ print(f"Error: Call UID {uid} sin elemento CallInfo.")
+ return None
+ call_info = call_info_elem[0]
+
+ block_name = call_info.get("Name")
+ block_type = call_info.get("BlockType") # FC, FB, etc.
+ instance_name = None
+ instance_scope = None
+
+ # Si es una llamada a FB, puede tener información de instancia
+ instance_elem = call_info.xpath("./*[local-name()='Instance']")
+ if instance_elem:
+ instance = instance_elem[0]
+ instance_scope = instance.get("Scope") # Ej: GlobalVariable, InstanceDB
+ # El nombre de la instancia DB suele estar en Component dentro de Symbol
+ symbol_elem = instance.xpath("./*[local-name()='Symbol']")
+ if symbol_elem:
+ instance_name = get_symbol_name(symbol_elem[0])
+
+ if not block_name or not block_type:
+ print(f"Error: CallInfo para UID {uid} sin Name o BlockType.")
+ return None
+
+ call_data = {
+ "uid": uid,
+ "type": "Call", # Tipo genérico para nuestra estructura JSON
+ "block_name": block_name,
+ "block_type": block_type,
+ }
+ if instance_name:
+ call_data["instance_db"] = instance_name
+ if instance_scope:
+ call_data["instance_scope"] = instance_scope
+
+ return call_data
+
+
+# --- FIN NUEVA FUNCIÓN ---
+
+
+# --- Función parse_network MODIFICADA ---
def parse_network(network_element):
"""
- Parsea una red (CompileUnit), extrae lógica, infiere conexiones EN implícitas,
- y añade lógica ENO interesante.
+ Parsea una red, extrae lógica (incluyendo Calls) y añade conexiones EN implícitas.
"""
if network_element is None:
- print("Error: parse_network llamado con network_element=None")
- return {'id': 'ERROR', 'title': 'Invalid Network Element', 'comment': '', 'logic': [], 'error': 'Input element was None'}
+ return {
+ "id": "ERROR",
+ "title": "Invalid Network Element",
+ "comment": "",
+ "logic": [],
+ "error": "Input element was None",
+ }
+ network_id = network_element.get("ID")
+ title_element = network_element.xpath(
+ ".//*[local-name()='MultilingualText'][@CompositionName='Title']"
+ )
+ network_title = (
+ get_multilingual_text(title_element[0])
+ if title_element
+ else f"Network {network_id}"
+ )
+ comment_title_element = network_element.xpath(
+ "./*[local-name()='ObjectList']/*[local-name()='MultilingualText'][@CompositionName='Comment']"
+ )
+ network_comment = (
+ get_multilingual_text(comment_title_element[0]) if comment_title_element else ""
+ )
- network_id = network_element.get('ID')
- # print(f"--- Parseando Red ID={network_id} ---") # Descomentar para depuración detallada
-
- # Extrae el título de la red
- title_element = network_element.xpath(".//*[local-name()='MultilingualText'][@CompositionName='Title']")
- network_title = get_multilingual_text(title_element[0]) if title_element else f"Network {network_id}"
-
- # Extrae el comentario de la red
- network_comment = ""
- comment_title_element = network_element.xpath("./*[local-name()='ObjectList']/*[local-name()='MultilingualText'][@CompositionName='Comment']")
- if comment_title_element:
- network_comment = get_multilingual_text(comment_title_element[0])
-
- # Encuentra FlgNet
flgnet_list = network_element.xpath(".//flg:FlgNet", namespaces=ns)
if not flgnet_list:
- print(f"Error: No se encontró FlgNet en la red ID={network_id}")
- return {'id': network_id, 'title': network_title, 'comment': network_comment, 'logic': [], 'error': 'FlgNet not found'}
+ return {
+ "id": network_id,
+ "title": network_title,
+ "comment": network_comment,
+ "logic": [],
+ "error": "FlgNet not found",
+ }
flgnet = flgnet_list[0]
- # 1. Parsear Access y Parts
- access_map = {acc_info['uid']: acc_info for acc in flgnet.xpath(".//flg:Access", namespaces=ns) if (acc_info := parse_access(acc))}
- parts_map = {part_info['uid']: part_info for part in flgnet.xpath(".//flg:Part", namespaces=ns) if (part_info := parse_part(part))}
- # print(f"DEBUG: Red {network_id} - Access={len(access_map)}, Parts={len(parts_map)}") # Debug
+ # 1. Parsear Access, Parts y Calls
+ access_map = {
+ acc_info["uid"]: acc_info
+ for acc in flgnet.xpath(".//flg:Access", namespaces=ns)
+ if (acc_info := parse_access(acc))
+ }
+
+ # --- MODIFICADO: Unir Parts y Calls en un solo mapa ---
+ parts_and_calls_map = {}
+ instruction_elements = flgnet.xpath(
+ ".//flg:Part | .//flg:Call", namespaces=ns
+ ) # Buscar ambos tipos
+
+ for element in instruction_elements:
+ parsed_info = None
+ if element.tag.endswith("Part"):
+ parsed_info = parse_part(element)
+ elif element.tag.endswith("Call"):
+ parsed_info = parse_call(element)
+
+ if parsed_info and "uid" in parsed_info:
+ parts_and_calls_map[parsed_info["uid"]] = parsed_info
+ else:
+ print(
+ f"Advertencia: Se ignoró un Part/Call inválido en la red {network_id}"
+ )
+ # --- FIN MODIFICADO ---
# 2. Parsear Wires y construir mapas de conexiones
- wire_connections = defaultdict(list) # key=(dest_uid, dest_pin), value=list of (src_uid, src_pin)
- source_connections = defaultdict(list) # key=(src_uid, src_pin), value=list of (dest_uid, dest_pin)
- eno_outputs = defaultdict(list) # key=src_uid, value=list of (dest_uid, dest_pin) from ENO
- flg_ns_uri = ns['flg']
-
+ wire_connections = defaultdict(list)
+ source_connections = defaultdict(list)
+ eno_outputs = defaultdict(list)
+ flg_ns_uri = ns["flg"]
for wire in flgnet.xpath(".//flg:Wire", namespaces=ns):
source_uid, source_pin, dest_uid, dest_pin = None, None, None, None
children = wire.getchildren()
- if len(children) < 2: continue
+ if len(children) < 2:
+ continue
source_elem, dest_elem = children[0], children[1]
-
- # Determina la fuente
- if source_elem.tag == etree.QName(flg_ns_uri, 'Powerrail'): source_uid, source_pin = 'POWERRAIL', 'out'
- elif source_elem.tag == etree.QName(flg_ns_uri, 'IdentCon'): source_uid, source_pin = source_elem.get('UId'), 'value'
- elif source_elem.tag == etree.QName(flg_ns_uri, 'NameCon'): source_uid, source_pin = source_elem.get('UId'), source_elem.get('Name')
-
- # Determina el destino
- if dest_elem.tag == etree.QName(flg_ns_uri, 'IdentCon'): dest_uid, dest_pin = dest_elem.get('UId'), 'value'
- elif dest_elem.tag == etree.QName(flg_ns_uri, 'NameCon'): dest_uid, dest_pin = dest_elem.get('UId'), dest_elem.get('Name')
-
- # Registrar conexiones si son válidas
+ if source_elem.tag == etree.QName(flg_ns_uri, "Powerrail"):
+ source_uid, source_pin = "POWERRAIL", "out"
+ elif source_elem.tag == etree.QName(flg_ns_uri, "IdentCon"):
+ source_uid, source_pin = source_elem.get("UId"), "value"
+ elif source_elem.tag == etree.QName(flg_ns_uri, "NameCon"):
+ source_uid, source_pin = source_elem.get("UId"), source_elem.get("Name")
+ if dest_elem.tag == etree.QName(flg_ns_uri, "IdentCon"):
+ dest_uid, dest_pin = dest_elem.get("UId"), "value"
+ elif dest_elem.tag == etree.QName(flg_ns_uri, "NameCon"):
+ dest_uid, dest_pin = dest_elem.get("UId"), dest_elem.get("Name")
if dest_uid and dest_pin and source_uid is not None:
- dest_key = (dest_uid, dest_pin); source_key = (source_uid, source_pin)
- source_info = (source_uid, source_pin); dest_info = (dest_uid, dest_pin)
-
- if source_info not in wire_connections[dest_key]: wire_connections[dest_key].append(source_info)
- if dest_info not in source_connections[source_key]: source_connections[source_key].append(dest_info)
-
- # Registrar conexiones que SALEN de un pin ENO
- if source_pin == 'eno' and source_uid in parts_map:
- if dest_info not in eno_outputs[source_uid]:
- eno_outputs[source_uid].append(dest_info)
+ dest_key = (dest_uid, dest_pin)
+ source_key = (source_uid, source_pin)
+ source_info = (source_uid, source_pin)
+ dest_info = (dest_uid, dest_pin)
+ if source_info not in wire_connections[dest_key]:
+ wire_connections[dest_key].append(source_info)
+ if dest_info not in source_connections[source_key]:
+ source_connections[source_key].append(dest_info)
+ if (
+ source_pin == "eno" and source_uid in parts_and_calls_map
+ ): # Usar mapa combinado
+ if dest_info not in eno_outputs[source_uid]:
+ eno_outputs[source_uid].append(dest_info)
# 3. Construir la representación lógica INICIAL
all_logic_steps = {}
- functional_block_types = ['Move', 'Add', 'Sub', 'Mul', 'Div', 'Mod', 'Convert'] # Ampliar si es necesario
- rlo_generators = ['Contact', 'O', 'Eq', 'Ne', 'Gt', 'Lt', 'Ge', 'Le', 'And', 'Xor', 'PBox'] # Ampliar si es necesario
+ functional_block_types = [
+ "Move",
+ "Add",
+ "Sub",
+ "Mul",
+ "Div",
+ "Mod",
+ "Convert",
+ "Call",
+ ] # Añadir Call
+ rlo_generators = [
+ "Contact",
+ "O",
+ "Eq",
+ "Ne",
+ "Gt",
+ "Lt",
+ "Ge",
+ "Le",
+ "And",
+ "Xor",
+ "PBox",
+ ]
+
+ # --- MODIFICADO: Iterar sobre el mapa combinado ---
+ for instruction_uid, instruction_info in parts_and_calls_map.items():
+ # Usar directamente la info parseada (part_info o call_info)
+ instruction_repr = {
+ "instruction_uid": instruction_uid,
+ **instruction_info,
+ } # Copiar datos base
+ instruction_repr["inputs"] = {}
+ instruction_repr["outputs"] = {}
+ # --- FIN MODIFICADO ---
- for part_uid, part_info in parts_map.items():
- instruction_repr = {'instruction_uid': part_uid, 'type': part_info['name'], 'inputs': {}, 'outputs': {}}
# Rellenar inputs explícitos
- for dest_pin_name in ['en', 'in', 'in1', 'in2', 'in3', 'in4', 'bit', 'operand', 'pre', 'clk']: # Añadir pines comunes
- dest_key = (part_uid, dest_pin_name)
- if dest_key in wire_connections:
- sources_list = wire_connections[dest_key]
- input_sources_repr = []
- for source_uid, source_pin in sources_list:
- if source_uid == 'POWERRAIL': input_sources_repr.append({'type': 'powerrail'})
- elif source_uid in access_map: input_sources_repr.append(access_map[source_uid])
- elif source_uid in parts_map:
- input_sources_repr.append({'type': 'connection', 'source_instruction_uid': source_uid,
- 'source_instruction_type': parts_map[source_uid]['name'], 'source_pin': source_pin})
- else: input_sources_repr.append({'type': 'unknown_source', 'uid': source_uid})
- if len(input_sources_repr) == 1: instruction_repr['inputs'][dest_pin_name] = input_sources_repr[0]
- elif len(input_sources_repr) > 1: instruction_repr['inputs'][dest_pin_name] = input_sources_repr # Rama OR/Multiple
+ # Añadir más pines si las llamadas a FB los usan (ej: parámetros FC/FB)
+ possible_pins = set(
+ ["en", "in", "in1", "in2", "in3", "in4", "bit", "operand", "pre", "clk"]
+ )
+ # Añadir pines específicos de la llamada si es un FB? Más complejo.
+ for dest_pin_name in possible_pins:
+ dest_key = (instruction_uid, dest_pin_name)
+ if dest_key in wire_connections:
+ sources_list = wire_connections[dest_key]
+ input_sources_repr = []
+ for source_uid, source_pin in sources_list:
+ if source_uid == "POWERRAIL":
+ input_sources_repr.append({"type": "powerrail"})
+ elif source_uid in access_map:
+ input_sources_repr.append(access_map[source_uid])
+ elif source_uid in parts_and_calls_map: # Usar mapa combinado
+ input_sources_repr.append(
+ {
+ "type": "connection",
+ # Usar el tipo del mapa combinado
+ "source_instruction_type": parts_and_calls_map[
+ source_uid
+ ]["type"],
+ "source_instruction_uid": source_uid,
+ "source_pin": source_pin,
+ }
+ )
+ else:
+ input_sources_repr.append(
+ {"type": "unknown_source", "uid": source_uid}
+ )
+ if len(input_sources_repr) == 1:
+ instruction_repr["inputs"][dest_pin_name] = input_sources_repr[0]
+ elif len(input_sources_repr) > 1:
+ instruction_repr["inputs"][dest_pin_name] = input_sources_repr
# Rellenar outputs explícitos (hacia Access)
- for source_pin_name in ['out', 'out1', 'Q', 'eno']: # Añadir pines comunes
- source_key = (part_uid, source_pin_name)
- if source_key in source_connections:
- for dest_uid, dest_pin in source_connections[source_key]:
- if dest_uid in access_map:
- if source_pin_name not in instruction_repr['outputs']: instruction_repr['outputs'][source_pin_name] = []
- if access_map[dest_uid] not in instruction_repr['outputs'][source_pin_name]:
- instruction_repr['outputs'][source_pin_name].append(access_map[dest_uid])
+ for source_pin_name in [
+ "out",
+ "out1",
+ "Q",
+ "eno",
+ ]: # Añadir salidas comunes de FC/FB si es necesario
+ source_key = (instruction_uid, source_pin_name)
+ if source_key in source_connections:
+ for dest_uid, dest_pin in source_connections[source_key]:
+ if dest_uid in access_map:
+ if source_pin_name not in instruction_repr["outputs"]:
+ instruction_repr["outputs"][source_pin_name] = []
+ if (
+ access_map[dest_uid]
+ not in instruction_repr["outputs"][source_pin_name]
+ ):
+ instruction_repr["outputs"][source_pin_name].append(
+ access_map[dest_uid]
+ )
- all_logic_steps[part_uid] = instruction_repr
+ all_logic_steps[instruction_uid] = instruction_repr
# --- 4. INFERENCIA Y PROPAGACIÓN DE CONEXIONES 'EN' IMPLÍCITAS ---
- # print(f"DEBUG: Iniciando inferencia EN para Red {network_id}...") # Debug
- processed_blocks_en_inference = set() # Evitar procesar el mismo bloque múltiples veces en inferencia EN
+ # (Esta lógica probablemente necesite ajustes para considerar 'Call' como bloque funcional)
+ # print(f"DEBUG: Iniciando inferencia EN para Red {network_id}...")
+ processed_blocks_en_inference = set()
something_changed = True
inference_passes = 0
max_inference_passes = len(all_logic_steps) + 5
-
while something_changed and inference_passes < max_inference_passes:
something_changed = False
inference_passes += 1
- # print(f"DEBUG: Pase de inferencia EN {inference_passes}...") # Debug
-
- # Ordenar por UID para intentar procesar en orden lógico
try:
- sorted_uids_for_pass = sorted(all_logic_steps.keys(), key=lambda x: int(x) if x.isdigit() else float('inf'))
+ sorted_uids_for_pass = sorted(
+ all_logic_steps.keys(),
+ key=lambda x: int(x) if x.isdigit() else float("inf"),
+ )
except ValueError:
- sorted_uids_for_pass = sorted(all_logic_steps.keys())
+ sorted_uids_for_pass = sorted(all_logic_steps.keys())
- for part_uid in sorted_uids_for_pass:
- if part_uid not in all_logic_steps: continue # Seguridad
- instruction = all_logic_steps[part_uid]
- part_type = instruction['type']
+ current_logic_list = [
+ all_logic_steps[uid]
+ for uid in sorted_uids_for_pass
+ if uid in all_logic_steps
+ ]
- if part_type in functional_block_types and 'en' not in instruction['inputs'] and part_uid not in processed_blocks_en_inference:
- # print(f"DEBUG: Intentando inferir EN para {part_type} UID {part_uid}") # Debug
+ for i, instruction in enumerate(
+ current_logic_list
+ ): # Usar enumerate para obtener índice
+ part_uid = instruction["instruction_uid"]
+ part_type = instruction["type"] # Ahora puede ser 'Call'
+
+ # Si es un bloque funcional (incluyendo Call) sin 'en' explícito
+ if (
+ part_type in functional_block_types
+ and "en" not in instruction["inputs"]
+ and part_uid not in processed_blocks_en_inference
+ ):
inferred_en_source = None
- # Usar la lista ordenada por UID para buscar atrás
- my_index = -1
- current_logic_list = [all_logic_steps[uid] for uid in sorted_uids_for_pass if uid in all_logic_steps] # Lista actual ordenada
- for i, instr in enumerate(current_logic_list):
- if instr['instruction_uid'] == part_uid:
- my_index = i
- break
+ my_index = i # Ya tenemos el índice
if my_index > 0:
- for i in range(my_index - 1, -1, -1):
- prev_instr = current_logic_list[i]
- prev_uid = prev_instr['instruction_uid']
- prev_type = prev_instr['type']
- if prev_type in rlo_generators:
- inferred_en_source = {'type': 'connection', 'source_instruction_uid': prev_uid, 'source_instruction_type': prev_type, 'source_pin': 'out'}
- # print(f"DEBUG: Inferido EN para {part_uid} desde RLO de {prev_type} {prev_uid}.out") # Debug
- break
- elif prev_type in functional_block_types:
- source_key_eno = (prev_uid, 'eno')
- # Verificar si el ENO del bloque anterior está conectado a *algo*
- if source_key_eno in source_connections:
- inferred_en_source = {'type': 'connection', 'source_instruction_uid': prev_uid, 'source_instruction_type': prev_type, 'source_pin': 'eno'}
- # print(f"DEBUG: Inferido EN para {part_uid} desde ENO de {prev_type} {prev_uid}.eno") # Debug
- break
- # Si no hay conexión ENO explícita, podríamos asumir que sigue el RLO del EN de ese bloque? Más complejo.
- # Por ahora, solo usamos ENO si está conectado.
+ for j in range(my_index - 1, -1, -1): # Buscar hacia atrás
+ prev_instr = current_logic_list[j]
+ prev_uid = prev_instr["instruction_uid"]
+ prev_type = prev_instr["type"]
+ if prev_type in rlo_generators:
+ inferred_en_source = {
+ "type": "connection",
+ "source_instruction_uid": prev_uid,
+ "source_instruction_type": prev_type,
+ "source_pin": "out",
+ }
+ break
+ elif prev_type in functional_block_types:
+ source_key_eno = (prev_uid, "eno")
+ if source_key_eno in source_connections:
+ inferred_en_source = {
+ "type": "connection",
+ "source_instruction_uid": prev_uid,
+ "source_instruction_type": prev_type,
+ "source_pin": "eno",
+ }
+ break
if inferred_en_source:
- instruction['inputs']['en'] = inferred_en_source
- # print(f"INFO: Conexión EN inferida añadida a {part_type} UID {part_uid}") # Info
+ # Asegurarse de que 'instruction' se refiera al diccionario original
+ all_logic_steps[part_uid]["inputs"]["en"] = inferred_en_source
processed_blocks_en_inference.add(part_uid)
something_changed = True
- # else:
- # print(f"DEBUG: No se pudo inferir EN para {part_type} UID {part_uid}") # Debug
-
# --- 5. Añadir lógica ENO interesante ---
+ # (Necesita usar parts_and_calls_map ahora)
for source_instr_uid, eno_destinations in eno_outputs.items():
- if source_instr_uid not in all_logic_steps: continue
+ if source_instr_uid not in all_logic_steps:
+ continue
interesting_eno_logic = []
for dest_uid, dest_pin in eno_destinations:
- is_direct_en_connection = (dest_uid in parts_map and dest_pin == 'en')
+ is_direct_en_connection = (
+ dest_uid in parts_and_calls_map and dest_pin == "en"
+ ) # Check en mapa combinado
if not is_direct_en_connection:
- target_info = {'target_pin': dest_pin}
- if dest_uid in parts_map: target_info.update({'target_type': 'instruction', 'target_uid': dest_uid, 'target_name': parts_map[dest_uid]['name']})
- elif dest_uid in access_map: target_info.update({'target_type': 'operand', 'target_details': access_map[dest_uid]})
- else: target_info.update({'target_type': 'unknown', 'target_uid': dest_uid})
+ target_info = {"target_pin": dest_pin}
+ if dest_uid in parts_and_calls_map:
+ target_info.update(
+ {
+ "target_type": "instruction",
+ "target_uid": dest_uid,
+ "target_name": parts_and_calls_map[dest_uid].get(
+ "name", parts_and_calls_map[dest_uid].get("type")
+ ),
+ }
+ ) # Usar 'name' si existe (Part) o 'type' (Call)
+ elif dest_uid in access_map:
+ target_info.update(
+ {
+ "target_type": "operand",
+ "target_details": access_map[dest_uid],
+ }
+ )
+ else:
+ target_info.update(
+ {"target_type": "unknown", "target_uid": dest_uid}
+ )
interesting_eno_logic.append(target_info)
if interesting_eno_logic:
- all_logic_steps[source_instr_uid]['eno_logic'] = interesting_eno_logic
- # print(f"DEBUG: Red {network_id} - Añadida lógica ENO interesante para {source_instr_uid}") # Debug
+ all_logic_steps[source_instr_uid]["eno_logic"] = interesting_eno_logic
# --- 6. Ordenar Lógica Final y Devolver ---
- try: sorted_uids = sorted(all_logic_steps.keys(), key=lambda x: int(x) if x.isdigit() else float('inf'))
- except ValueError: print(f"Advertencia: UIDs no numéricos red {network_id}. Orden alfabético."); sorted_uids = sorted(all_logic_steps.keys())
- network_logic = [all_logic_steps[uid] for uid in sorted_uids if uid in all_logic_steps]
-
- # print(f"--- Fin Parseo Red ID={network_id} ---") # Debug
- return {'id': network_id, 'title': network_title, 'comment': network_comment, 'logic': network_logic}
-
-
-# --- Función Principal convert_xml_to_json (sin cambios respecto a la versión anterior) ---
-def convert_xml_to_json(xml_filepath, json_filepath):
- """
- Función principal que orquesta la conversión del archivo XML de Openness
- a un archivo JSON simplificado que representa la estructura del bloque FC,
- incluyendo comentarios, inferencia EN y lógica ENO no trivial.
- """
- print(f"Iniciando conversión de '{xml_filepath}' a '{json_filepath}'...")
- if not os.path.exists(xml_filepath): print(f"Error Crítico: Archivo XML no encontrado: '{xml_filepath}'"); return
-
try:
- print("Paso 1: Parseando archivo XML..."); parser = etree.XMLParser(remove_blank_text=True); tree = etree.parse(xml_filepath, parser); root = tree.getroot(); print("Paso 1: Parseo XML completado.")
- print("Paso 2: Buscando el bloque SW.Blocks.FC..."); fc_block_list = root.xpath("//*[local-name()='SW.Blocks.FC']");
- if not fc_block_list: print("Error Crítico: No se encontró ."); return
- fc_block = fc_block_list[0]; print(f"Paso 2: Bloque SW.Blocks.FC encontrado (ID={fc_block.get('ID')}).")
- print("Paso 3: Extrayendo atributos del bloque..."); attribute_list_node = fc_block.xpath("./*[local-name()='AttributeList']")
+ sorted_uids = sorted(
+ all_logic_steps.keys(),
+ key=lambda x: int(x) if x.isdigit() else float("inf"),
+ )
+ except ValueError:
+ print(f"Advertencia: UIDs no numéricos red {network_id}. Orden alfabético.")
+ sorted_uids = sorted(all_logic_steps.keys())
+ network_logic = [
+ all_logic_steps[uid] for uid in sorted_uids if uid in all_logic_steps
+ ]
+
+ return {
+ "id": network_id,
+ "title": network_title,
+ "comment": network_comment,
+ "logic": network_logic,
+ }
+
+
+# --- Función Principal convert_xml_to_json (sin cambios) ---
+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):
+ print(f"Error Crítico: Archivo XML no encontrado: '{xml_filepath}'")
+ return
+ try:
+ print("Paso 1: Parseando archivo XML...")
+ parser = etree.XMLParser(remove_blank_text=True)
+ tree = etree.parse(xml_filepath, parser)
+ root = tree.getroot()
+ print("Paso 1: Parseo XML completado.")
+ print("Paso 2: Buscando el bloque SW.Blocks.FC...")
+ fc_block_list = root.xpath("//*[local-name()='SW.Blocks.FC']")
+ if not fc_block_list:
+ print("Error Crítico: No se encontró .")
+ return
+ fc_block = fc_block_list[0]
+ print(f"Paso 2: Bloque SW.Blocks.FC encontrado (ID={fc_block.get('ID')}).")
+ print("Paso 3: Extrayendo atributos del bloque...")
+ attribute_list_node = fc_block.xpath("./*[local-name()='AttributeList']")
block_name_val, block_number_val, block_lang_val = "Unknown", None, "Unknown"
if attribute_list_node:
- attr_list = attribute_list_node[0]
- name_node = attr_list.xpath("./*[local-name()='Name']/text()"); block_name_val = name_node[0].strip() if name_node else block_name_val
- num_node = attr_list.xpath("./*[local-name()='Number']/text()"); block_number_val = int(num_node[0]) if num_node and num_node[0].isdigit() else block_number_val
- lang_node = attr_list.xpath("./*[local-name()='ProgrammingLanguage']/text()"); block_lang_val = lang_node[0].strip() if lang_node else block_lang_val
- print(f"Paso 3: Atributos: Nombre='{block_name_val}', Número={block_number_val}, Lenguaje='{block_lang_val}'")
- else: print("Advertencia: No se encontró AttributeList para el bloque FC.")
- block_comment_val = ""; comment_node_list = fc_block.xpath("./*[local-name()='ObjectList']/*[local-name()='MultilingualText'][@CompositionName='Comment']")
- if comment_node_list: block_comment_val = get_multilingual_text(comment_node_list[0]); print(f"Paso 3b: Comentario bloque: '{block_comment_val[:50]}...'")
- result = {"block_name": block_name_val, "block_number": block_number_val, "language": block_lang_val, "block_comment": block_comment_val, "interface": {}, "networks": []}
+ attr_list = attribute_list_node[0]
+ name_node = attr_list.xpath("./*[local-name()='Name']/text()")
+ block_name_val = name_node[0].strip() if name_node else block_name_val
+ num_node = attr_list.xpath("./*[local-name()='Number']/text()")
+ block_number_val = (
+ int(num_node[0])
+ if num_node and num_node[0].isdigit()
+ else block_number_val
+ )
+ lang_node = attr_list.xpath(
+ "./*[local-name()='ProgrammingLanguage']/text()"
+ )
+ block_lang_val = lang_node[0].strip() if lang_node else block_lang_val
+ print(
+ f"Paso 3: Atributos: Nombre='{block_name_val}', Número={block_number_val}, Lenguaje='{block_lang_val}'"
+ )
+ else:
+ print("Advertencia: No se encontró AttributeList para el bloque FC.")
+ block_comment_val = ""
+ comment_node_list = fc_block.xpath(
+ "./*[local-name()='ObjectList']/*[local-name()='MultilingualText'][@CompositionName='Comment']"
+ )
+ if comment_node_list:
+ block_comment_val = get_multilingual_text(comment_node_list[0])
+ print(f"Paso 3b: Comentario bloque: '{block_comment_val[:50]}...'")
+ result = {
+ "block_name": block_name_val,
+ "block_number": block_number_val,
+ "language": block_lang_val,
+ "block_comment": block_comment_val,
+ "interface": {},
+ "networks": [],
+ }
print("Paso 4: Extrayendo la interfaz del bloque...")
if attribute_list_node:
- interface_node_list = attribute_list_node[0].xpath("./*[local-name()='Interface']")
- if interface_node_list:
- interface_node = interface_node_list[0]; print("Paso 4: Nodo Interface encontrado.")
- for section in interface_node.xpath(".//iface:Section", namespaces=ns):
- section_name = section.get('Name'); members = []
- for member in section.xpath("./iface:Member", namespaces=ns):
- member_name = member.get('Name'); member_dtype = member.get('Datatype')
- if member_name and member_dtype: members.append({"name": member_name, "datatype": member_dtype})
- if members: result["interface"][section_name] = members
- if not result["interface"]: print("Advertencia: Interface sin secciones iface:Section válidas.")
- else: print("Advertencia: No se encontró DENTRO de .")
- if not result["interface"]: print("Advertencia: No se pudo extraer información de la interfaz.")
+ interface_node_list = attribute_list_node[0].xpath(
+ "./*[local-name()='Interface']"
+ )
+ if interface_node_list:
+ interface_node = interface_node_list[0]
+ print("Paso 4: Nodo Interface encontrado.")
+ for section in interface_node.xpath(".//iface:Section", namespaces=ns):
+ section_name = section.get("Name")
+ members = []
+ for member in section.xpath("./iface:Member", namespaces=ns):
+ member_name = member.get("Name")
+ member_dtype = member.get("Datatype")
+ if member_name and member_dtype:
+ members.append(
+ {"name": member_name, "datatype": member_dtype}
+ )
+ if members:
+ result["interface"][section_name] = members
+ if not result["interface"]:
+ print("Advertencia: Interface sin secciones iface:Section válidas.")
+ else:
+ print(
+ "Advertencia: No se encontró DENTRO de ."
+ )
+ if not result["interface"]:
+ print("Advertencia: No se pudo extraer información de la interfaz.")
print("Paso 5: Extrayendo y PROCESANDO lógica de redes (CompileUnits)...")
networks_processed_count = 0
object_list_node = fc_block.xpath("./*[local-name()='ObjectList']")
if object_list_node:
- compile_units = object_list_node[0].xpath("./*[local-name()='SW.Blocks.CompileUnit']")
- print(f"Paso 5: Se encontraron {len(compile_units)} elementos SW.Blocks.CompileUnit.")
+ compile_units = object_list_node[0].xpath(
+ "./*[local-name()='SW.Blocks.CompileUnit']"
+ )
+ print(
+ f"Paso 5: Se encontraron {len(compile_units)} elementos SW.Blocks.CompileUnit."
+ )
for network_elem in compile_units:
- networks_processed_count += 1
- # print(f"DEBUG: Procesando red #{networks_processed_count} (ID={network_elem.get('ID')})...")
- parsed_network = parse_network(network_elem) # Llamada a la función modificada
- if parsed_network and parsed_network.get('error') is None: result["networks"].append(parsed_network)
- elif parsed_network: print(f"Error: Falló parseo red ID={parsed_network.get('id')}: {parsed_network.get('error')}"); result["networks"].append(parsed_network)
- else: print(f"Error: parse_network devolvió None para CompileUnit (ID={network_elem.get('ID')}).")
- if networks_processed_count == 0: print("Advertencia: ObjectList sin SW.Blocks.CompileUnit.")
- else: print("Advertencia: No se encontró ObjectList.")
+ networks_processed_count += 1
+ # print(f"DEBUG: Procesando red #{networks_processed_count} (ID={network_elem.get('ID')})...")
+ parsed_network = parse_network(
+ network_elem
+ ) # Llamada a la función modificada
+ if parsed_network and parsed_network.get("error") is None:
+ result["networks"].append(parsed_network)
+ elif parsed_network:
+ print(
+ f"Error: Falló parseo red ID={parsed_network.get('id')}: {parsed_network.get('error')}"
+ )
+ result["networks"].append(parsed_network)
+ else:
+ print(
+ f"Error: parse_network devolvió None para CompileUnit (ID={network_elem.get('ID')})."
+ )
+ if networks_processed_count == 0:
+ print("Advertencia: ObjectList sin SW.Blocks.CompileUnit.")
+ else:
+ print("Advertencia: No se encontró ObjectList.")
print("Paso 6: Escribiendo el resultado en el archivo JSON...")
- if not result["interface"]: print("ADVERTENCIA FINAL: 'interface' está vacía.")
- if not result["networks"]: print("ADVERTENCIA FINAL: 'networks' está vacía.")
+ if not result["interface"]:
+ print("ADVERTENCIA FINAL: 'interface' está vacía.")
+ if not result["networks"]:
+ print("ADVERTENCIA FINAL: 'networks' está vacía.")
# else: # Chequeo ENO logic
# eno_logic_found = any(instr.get('eno_logic') for net in result.get('networks', []) if net.get('error') is None for instr in net.get('logic', []))
# if eno_logic_found: print("INFO FINAL: Lógica ENO interesante detectada.")
# else: print("INFO FINAL: No se detectó lógica ENO interesante.")
try:
- with open(json_filepath, 'w', encoding='utf-8') as f: json.dump(result, f, indent=4, ensure_ascii=False)
- print(f"Paso 6: Escritura completada."); print(f"Conversión finalizada. JSON guardado en: '{json_filepath}'")
- except IOError as e: print(f"Error Crítico: No se pudo escribir JSON en '{json_filepath}'. Error: {e}")
- except TypeError as e: print(f"Error Crítico: Problema al serializar a JSON. Error: {e}")
+ with open(json_filepath, "w", encoding="utf-8") as f:
+ json.dump(result, f, indent=4, ensure_ascii=False)
+ print(f"Paso 6: Escritura completada.")
+ print(f"Conversión finalizada. JSON guardado en: '{json_filepath}'")
+ except IOError as e:
+ print(
+ f"Error Crítico: No se pudo escribir JSON en '{json_filepath}'. Error: {e}"
+ )
+ except TypeError as e:
+ print(f"Error Crítico: Problema al serializar a JSON. Error: {e}")
+
+ except etree.XMLSyntaxError as e:
+ print(f"Error Crítico: Sintaxis XML en '{xml_filepath}'. Detalles: {e}")
+ except Exception as e:
+ print(f"Error Crítico: Error inesperado: {e}")
+ print("--- Traceback ---")
+ traceback.print_exc()
+ print("--- Fin Traceback ---")
- except etree.XMLSyntaxError as e: print(f"Error Crítico: Sintaxis XML en '{xml_filepath}'. Detalles: {e}")
- except Exception as e: print(f"Error Crítico: Error inesperado: {e}"); print("--- Traceback ---"); traceback.print_exc(); print("--- Fin Traceback ---")
# --- Punto de Entrada Principal ---
if __name__ == "__main__":
- xml_file = 'BlenderCtrl_ProdModeInit.xml'
- json_file = 'BlenderCtrl_ProdModeInit_simplified.json'
- convert_xml_to_json(xml_file, json_file)
\ No newline at end of file
+ xml_file = "BlenderCtrl__Main.xml" # CAMBIAR AL NUEVO ARCHIVO XML
+ json_file = xml_file.replace(
+ ".xml", "_simplified.json"
+ ) # Nombre de salida dinámico
+ convert_xml_to_json(xml_file, json_file)
diff --git a/x2_process.py b/x2_process.py
index 1da9fa5..f76418c 100644
--- a/x2_process.py
+++ b/x2_process.py
@@ -98,6 +98,29 @@ def get_scl_representation(source_info, network_id, scl_map, access_map):
return f"_ERR_INVALID_SRC_TYPE_"
+def format_variable_name(name):
+ """Limpia el nombre de la variable quitando comillas y espacios."""
+ if not name:
+ return "_INVALID_NAME_"
+ # Quita comillas dobles iniciales/finales
+ name = name.strip('"')
+ # Reemplaza comillas dobles internas y puntos por guión bajo
+ # ¡Cuidado! Reemplazar '.' puede ser problemático para accesos a DBs/UDTs
+ # Quizás solo reemplazar si está dentro de comillas? Más complejo.
+ # Por ahora, mantenemos el reemplazo simple, asumiendo nombres de bloque limpios.
+ name = name.replace('"."', "_").replace(
+ ".", "_"
+ ) # <-- REVISAR SI ESTO ES SEGURO PARA TODOS LOS NOMBRES
+ # Quita comillas restantes (si las hubiera)
+ name = name.replace('"', "")
+ # Asegurarse de que no empiece con número
+ if name and name[0].isdigit():
+ name = "_" + name
+ # Devolver entre comillas si el nombre original las tenía o contiene caracteres no estándar
+ # (Simplificación: por ahora no añadimos comillas automáticas aquí)
+ return name
+
+
def generate_temp_var_name(network_id, instr_uid, pin_name):
net_id_clean = str(network_id).replace("-", "_")
instr_uid_clean = str(instr_uid).replace("-", "_")
@@ -566,6 +589,82 @@ def process_o(instruction, network_id, scl_map, access_map):
return True
+def process_call(instruction, network_id, scl_map, access_map):
+ """Traduce una llamada a FC/FB a SCL."""
+ instr_uid = instruction["instruction_uid"]
+ instr_type = instruction["type"] # Será 'Call'
+ if instruction.get("type", "").endswith(SCL_SUFFIX) or "_error" in instruction.get(
+ "type", ""
+ ):
+ return False # Usar get con default
+
+ block_name_scl = format_variable_name(
+ instruction.get("block_name", "UnknownCall")
+ ) # Limpiar nombre
+ block_type = instruction.get("block_type")
+ instance_db = instruction.get("instance_db") # Será None para FCs
+
+ # print(f"DEBUG: Intentando procesar CALL - UID: {instr_uid} Block: {block_name_scl}")
+
+ # --- Manejo de EN ---
+ en_input = instruction["inputs"].get("en")
+ en_scl = (
+ get_scl_representation(en_input, network_id, scl_map, access_map)
+ if en_input
+ else "TRUE"
+ )
+
+ if en_scl is None:
+ # print(f"DEBUG: Dependencia EN no resuelta para CALL UID: {instr_uid}")
+ return False
+ # --- Fin Manejo de EN ---
+
+ # --- Construcción de la Llamada SCL ---
+ scl_call_params = []
+ # TODO: Procesar otros parámetros de entrada/salida si existieran
+ # para FC/FB con parámetros, se necesitaría iterar sobre instruction['inputs']
+ # y instruction['outputs'] buscando conexiones a pines específicos de la llamada.
+
+ scl_final_call = ""
+ if block_type == "FB" and instance_db:
+ # Llamada a FB con DB de instancia
+ scl_final_call = (
+ f"{instance_db}();" # Simplificado, añadir parámetros si los hay
+ )
+ elif block_type == "FC":
+ # Llamada a FC
+ scl_final_call = (
+ f"{block_name_scl}();" # Simplificado, añadir parámetros si los hay
+ )
+ else:
+ print(
+ f"Advertencia: Tipo de bloque no soportado para Call UID {instr_uid}: {block_type}"
+ )
+ scl_final_call = f"// ERROR: Call a bloque no soportado: {block_name_scl}"
+ instruction["type"] += "_error" # Marcar como error parcial
+
+ # --- Aplicar Condición EN ---
+ scl_final = ""
+ if en_scl != "TRUE":
+ # Indentar la llamada dentro del IF
+ indented_call = "\n".join([f" {line}" for line in scl_final_call.splitlines()])
+ scl_final = f"IF {en_scl} THEN\n{indented_call}\nEND_IF;"
+ else:
+ scl_final = scl_final_call
+
+ # --- Actualizar JSON y Mapa SCL ---
+ instruction["scl"] = scl_final
+ # Cambiar el tipo para marcar como procesado
+ instruction["type"] = f"Call_{block_type}_scl" # Ej: Call_FC_scl
+
+ # Actualizar scl_map con el estado ENO (igual a EN para llamadas simples)
+ map_key_eno = (network_id, instr_uid, "eno")
+ scl_map[map_key_eno] = en_scl
+
+ # print(f"INFO: Call UID: {instr_uid} procesado. SCL: {scl_final.splitlines()[0]}...")
+ return True
+
+
# --- NUEVO: Procesador de Agrupación (Refinado) ---
def process_group_ifs(instruction, network_id, scl_map, access_map):
"""
@@ -753,6 +852,7 @@ def process_json_to_scl(json_filepath):
process_pbox,
process_add,
process_move,
+ process_call,
process_coil,
]
processor_map = {
@@ -842,7 +942,7 @@ def process_json_to_scl(json_filepath):
print(f"\n--- Límite de {max_passes} pases alcanzado. ---")
# --- Guardar JSON Final ---
- output_filename = json_filepath.replace(".json", "_scl_processed.json")
+ output_filename = json_filepath.replace(".json", "_processed.json")
print(f"\nGuardando JSON procesado en: {output_filename}")
try:
with open(output_filename, "w", encoding="utf-8") as f:
@@ -854,5 +954,8 @@ def process_json_to_scl(json_filepath):
# --- Ejecución ---
if __name__ == "__main__":
- input_json_file = "BlenderCtrl_ProdModeInit_simplified.json" # Asegúrate que este es el generado por x1_to_json.py MODIFICADO
+ xml_file = "BlenderCtrl__Main.xml" # CAMBIAR AL NUEVO ARCHIVO XML
+ input_json_file = xml_file.replace(
+ ".xml", "_simplified.json"
+ ) # Nombre de salida dinámico
process_json_to_scl(input_json_file)
diff --git a/x3_generate_scl.py b/x3_generate_scl.py
index 6b49738..2c986a5 100644
--- a/x3_generate_scl.py
+++ b/x3_generate_scl.py
@@ -196,7 +196,13 @@ def generate_scl(processed_json_filepath, output_scl_filepath):
# --- Ejecución ---
if __name__ == "__main__":
- input_json_file = 'BlenderRun_ProdTime_simplified_scl_processed.json' # Usar el JSON procesado
- output_scl_file = input_json_file.replace('_simplified_scl_processed.json', '.scl') # Nombre de salida
+
+ xml_file = "BlenderCtrl__Main.xml" # CAMBIAR AL NUEVO ARCHIVO XML
+ input_json_file = xml_file.replace(
+ ".xml", "_simplified_processed.json"
+ ) # Nombre de salida dinámico
+ output_scl_file = input_json_file.replace(
+ ".json", ".scl"
+ ) # Nombre de salida dinámico
generate_scl(input_json_file, output_scl_file)
\ No newline at end of file