diff --git a/.obsidian/backlink.json b/.obsidian/backlink.json index 48ee913..80eb3a3 100644 --- a/.obsidian/backlink.json +++ b/.obsidian/backlink.json @@ -1,3 +1,3 @@ { - "backlinkInDocument": true + "backlinkInDocument": false } \ No newline at end of file diff --git a/.obsidian/community-plugins.json b/.obsidian/community-plugins.json index f8a0a58..4002432 100644 --- a/.obsidian/community-plugins.json +++ b/.obsidian/community-plugins.json @@ -24,7 +24,6 @@ "obsidian-auto-link-title", "advanced-canvas", "obsidian-minimal-settings", - "shiki-highlighter", "obsidian-mindmap-nextgen", "obsidian-plantuml" ] \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-icon-folder/data.json b/.obsidian/plugins/obsidian-icon-folder/data.json index 50a03f6..37c3a8b 100644 --- a/.obsidian/plugins/obsidian-icon-folder/data.json +++ b/.obsidian/plugins/obsidian-icon-folder/data.json @@ -6,9 +6,11 @@ "emojiStyle": "native", "iconColor": null, "recentlyUsedIcons": [ - "LiHelp", - "🤖", - "🔒" + "🪛", + "LiScriptEngine", + "👉", + "LiCheckSquare2", + "✅" ], "recentlyUsedIconsSize": 5, "rules": [], @@ -33,5 +35,7 @@ "useInternalPlugins": false }, "01-Documentation/SIDEL/SIDEL - Passwords.md": "🔒", - "01-Documentation/AI - IA - LLM - Artificial Intelligence": "🤖" + "04-SIDEL/SIDEL - Upgrades - Promemoria.md": "👉", + "04-SIDEL/CheckList": "LiCheckSquare2", + "01-Documentation/AI - IA - LLM - Artificial Intelligence": "🪛" } \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-mindmap-nextgen/data.json b/.obsidian/plugins/obsidian-mindmap-nextgen/data.json index 2bf55b5..4e2b00b 100644 --- a/.obsidian/plugins/obsidian-mindmap-nextgen/data.json +++ b/.obsidian/plugins/obsidian-mindmap-nextgen/data.json @@ -5,7 +5,6 @@ null, null, null, - null, null ], "settings": { diff --git a/.obsidian/plugins/recent-files-obsidian/data.json b/.obsidian/plugins/recent-files-obsidian/data.json index ced5220..32d438a 100644 --- a/.obsidian/plugins/recent-files-obsidian/data.json +++ b/.obsidian/plugins/recent-files-obsidian/data.json @@ -1,204 +1,204 @@ { "recentFiles": [ { - "basename": "SAE196 - IO Adapted", - "path": "04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/SAE196 - IO Adapted.md" + "basename": "9.402x - Notes for technician on site - CARTON REJECT SYSTEM", + "path": "03-VM/33 - 9.402x - Shibuya/Notes for techinician on site/9.402x - Notes for technician on site - CARTON REJECT SYSTEM.md" }, { - "basename": "Python Notes", - "path": "01-Documentation/Python/Python Notes.md" + "basename": "9.402x - Shibuya - Logics & Control", + "path": "03-VM/33 - 9.402x - Shibuya/Notes for techinician on site/9.402x - Shibuya - Logics & Control.md" }, { - "basename": "Script para obtener las ultimas versiones", - "path": "01-Documentation/Python/Scripts Python/Script para obtener las ultimas versiones.md" + "basename": "9.402x - After FAT considerations from customer", + "path": "03-VM/33 - 9.402x - Shibuya/9.402x - After FAT considerations from customer.md" }, { - "basename": "Group Scripts Manager", - "path": "01-Documentation/Python/Scripts Python/Group Scripts Manager.md" + "basename": "ADAM 4021 - 485 to 4..20ma - Commissioning & Firmware update", + "path": "01-Documentation/Dispositivos - Manuales/ADAM/ADAM 4021 - 485 to 4..20ma - Commissioning & Firmware update.md" }, { - "basename": "Conda - Anaconda - miniconda", - "path": "01-Documentation/Python/Scripts Python/Conda - Anaconda - miniconda.md" + "basename": "GIT commands HELP", + "path": "01-Documentation/GIT/GIT commands HELP.md" }, { - "basename": "Miniconda Como hacer un backup completo de un entorno creado con Miniconda", - "path": "01-Documentation/Python/Scripts Python/Miniconda Como hacer un backup completo de un entorno creado con Miniconda.md" + "basename": "SysInternals Tools", + "path": "01-Documentation/Windows/SysInternals Tools.md" }, { - "basename": "API Google Translate", - "path": "01-Documentation/Python/Scripts Python/API Google Translate.md" + "basename": "Git - Start New Repository with Visual Studio Code - VS Code", + "path": "01-Documentation/GIT/Git - Start New Repository with Visual Studio Code - VS Code.md" }, { - "basename": "Allen Bradley HMI Translate - Python - LLM - Google Translate", - "path": "01-Documentation/Python/Scripts Python/Allen Bradley HMI Translate - Python - LLM - Google Translate.md" + "basename": "Emails", + "path": "04-SIDEL/10 - E5.007095 - Modifica O&U - SAE463/Emails.md" }, { - "basename": "E5.007600 - SAE469 - FDM", - "path": "04-SIDEL/07 - E5.007600 - SAE469/E5.007600 - SAE469 - FDM.md" + "basename": "Differences", + "path": "04-SIDEL/10 - E5.007095 - Modifica O&U - SAE463/Differences.md" }, { - "basename": "Docker Basics - Essential Commands and Usage Guide", - "path": "01-Documentation/Dockers/Docker Basics - Essential Commands and Usage Guide.md" + "basename": "Misuratori Endress&Hauser", + "path": "04-SIDEL/CheckList/Misuratori Endress&Hauser.md" }, { - "basename": "Radarr - Lidarr - Sonarr - QBittorrent - Prowlarr - Unmanic", - "path": "01-Documentation/Dockers/Radarr - Lidarr - Sonarr - QBittorrent - Prowlarr - Unmanic.md" + "basename": "8F3B25-AAILABBFAASAFMWAA1+NB - Adapter RJ45 M12 (service interface)", + "path": "01-Documentation/Endress+Houser/8F3B25-AAILABBFAASAFMWAA1+NB - Adapter RJ45 M12 (service interface).md" }, { - "basename": "FB1751 - BlenderPID_PIDSPCalc Documentation", - "path": "04-SIDEL/00 - MASTER/MIXER/Documentacion/FB1751 - BlenderPID_PIDSPCalc Documentation.md" + "basename": "Maselli Sensor to Siemens PLC Communication Implementation", + "path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Maselli Sensor to Siemens PLC Communication Implementation.md" }, { - "basename": "94102 - ALPLA- USA - Notes for technician on site", - "path": "03-VM/39 - 94102 - Alpla - Usa/94102 - ALPLA- USA - Notes for technician on site.md" + "basename": "Maselli - Protocol - Gateway - 485 - Ethernet", + "path": "01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Protocol - Gateway - 485 - Ethernet.md" }, { - "basename": "OPC UA", - "path": "01-Documentation/Siemens/TIA Portal/OPC UA.md" + "basename": "CableMAX - Converter 485 - Serial Adaptor RS232 - CM-RSDB9-PRO", + "path": "01-Documentation/Dispositivos - Manuales/CableMAX - Converter 485 - Serial Adaptor RS232 - CM-RSDB9-PRO.md" }, { - "basename": "Backups - Mikrotik", - "path": "01-Documentation/Routers/Mikrotik - Network Redes/Backups - Mikrotik.md" + "basename": "Notes - Git - Gitea", + "path": "01-Documentation/GIT/Notes - Git - Gitea.md" }, { - "basename": "Radarr - Lidarr - Sonarr - QBittorrent - Prowlarr - Unmanic", - "path": "01-Documentation/Lidarr - Radarr/Radarr - Lidarr - Sonarr - QBittorrent - Prowlarr - Unmanic.md" + "basename": "PC HMI Zenon", + "path": "04-SIDEL/CheckList/PC HMI Zenon.md" }, { - "basename": "Configurazione ZeroTier con Home Assistant - Riccardo", - "path": "01-Documentation/VPN - Zerotier - Wireguard/Configurazione ZeroTier con Home Assistant - Riccardo.md" + "basename": "MSI decompiler", + "path": "01-Documentation/Decompiler/MSI decompiler.md" }, { - "basename": "Mikrotik - Zerotier - zero_work network", - "path": "01-Documentation/Routers/Mikrotik - Network Redes/Mikrotik - Zerotier - zero_work network.md" + "basename": "cSharp Decompiler", + "path": "01-Documentation/Decompiler/cSharp Decompiler.md" }, { - "basename": "S7 Software Calls", - "path": "04-SIDEL/00 - MASTER/MIXER/S7 Software Calls.md" + "basename": "Singleton", + "path": "01-Documentation/Visual Studio Cn/Singleton.md" }, { - "basename": "Análisis Detallado OBs", - "path": "04-SIDEL/00 - MASTER/MIXER/Documentacion/Análisis Detallado OBs.md" + "basename": "SAE196_c0.2_CAx_Export_Hardware_Tree", + "path": "04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/SAE196_c0.2_CAx_Export_Hardware_Tree.md" }, { - "basename": "Análisis del Software PLC Mixer", - "path": "04-SIDEL/00 - MASTER/MIXER/Documentacion/Análisis del Software PLC Mixer.md" - }, - { - "basename": "94102 - Alpla - Usa", - "path": "03-VM/39 - 94102 - Alpla - Usa/94102 - Alpla - Usa.md" - }, - { - "basename": "FB1751 - BlenderPID_PIDSPCalc Map", - "path": "04-SIDEL/00 - MASTER/MIXER/Documentacion/FB1751 - BlenderPID_PIDSPCalc Map.md" - }, - { - "basename": "FB1751 - BlenderPID_PIDSPCalc Diagrams", - "path": "04-SIDEL/00 - MASTER/MIXER/Documentacion/FB1751 - BlenderPID_PIDSPCalc Diagrams.md" - }, - { - "basename": "BlenderCtrl__Main", - "path": "04-SIDEL/00 - MASTER/MIXER/Documentacion/BlenderCtrl__Main.md" - }, - { - "basename": "Zero-Tier ONE - Lan NAT", - "path": "01-Documentation/Routers/Zero-Tier ONE - Lan NAT.md" - }, - { - "basename": "SIDEL - Master - IPs", - "path": "04-SIDEL/00 - MASTER/SIDEL - Master - IPs.md" - }, - { - "basename": "Endress+Hauser WEB Access", - "path": "01-Documentation/Endress+Houser/Endress+Hauser WEB Access.md" - }, - { - "basename": "Secomea Layer 2 Setup", - "path": "01-Documentation/Vetromeccanica/Sacomea/Secomea Layer 2 Setup.md" - }, - { - "basename": "Sacomea Help", - "path": "01-Documentation/Vetromeccanica/Sacomea/Sacomea Help.md" - }, - { - "basename": "SAE196 - IO", - "path": "04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/SAE196 - IO.md" - }, - { - "basename": "SIDEL - Mixer - Equivalences", - "path": "04-SIDEL/00 - MASTER/MIXER/SIDEL - Mixer - Equivalences.md" - }, - { - "basename": "SIDEL - Passwords", - "path": "01-Documentation/SIDEL/SIDEL - Passwords.md" - }, - { - "basename": "Activate License on Zenon 10 HMI - B&R PC", - "path": "04-SIDEL/00 - MASTER/MIXER/HMI/B&R Zenon 10/Activate License on Zenon 10 HMI - B&R PC.md" - }, - { - "basename": "Blender - Video - Editing", - "path": "01-Documentation/Blender Software/Video Editing/Blender - Video - Editing.md" - }, - { - "basename": "Update to PROMASS 300", - "path": "04-SIDEL/00 - MASTER/MIXER/PLC/S7 Software/Update to PROMASS 300.md" - }, - { - "basename": "Start new PC B&R from image", - "path": "04-SIDEL/00 - MASTER/MIXER/HMI/B&R Zenon 10/Start new PC B&R from image.md" + "basename": "MCP", + "path": "01-Documentation/AI - IA - LLM - Artificial Intelligence/MCP.md" }, { "basename": "AI Prompts useful", "path": "01-Documentation/AI - IA - LLM - Artificial Intelligence/AI Prompts useful.md" }, { - "basename": "Shiki Plugin - Highlither - Syntax - Editor", - "path": "01-Documentation/Obsidean/Shiki Plugin - Highlither - Syntax - Editor.md" + "basename": "Routes", + "path": "DB/RouteHelper/Routes.md" }, { - "basename": "Jellyfin en Synology DS220+", - "path": "01-Documentation/Synology/DS220+/Jellyfin en Synology DS220+.md" + "basename": "SIDEL - Mixer - Equivalences", + "path": "04-SIDEL/00 - MASTER/MIXER/SIDEL - Mixer - Equivalences.md" }, { - "basename": "Siemens HMI Translate - Python - LLM - Google Translate", - "path": "01-Documentation/Python/Scripts Python/Siemens HMI Translate - Python - LLM - Google Translate.md" + "basename": "Backups - Mikrotik", + "path": "01-Documentation/Routers/Mikrotik - Network Redes/Backups - Mikrotik.md" }, { - "basename": "60034 - Motor trifasico - Chingioli", - "path": "01-Documentation/Motors/Lenze/60034 - Motor trifasico - Chingioli.md" + "basename": "Test - Fatto su Maselli - 06-05-2025", + "path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Test - Fatto su Maselli - 06-05-2025.md" }, { - "basename": "Pasted image 20250426010944", - "path": "01-Documentation/Lidarr - Radarr/adjuntos/Pasted image 20250426010944.png" + "basename": "ADAM -", + "path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/ADAM -.md" }, { - "basename": "Análisis Comparativo de Routers MikroTik", - "path": "01-Documentation/Routers/Mikrotik - Network Redes/Análisis Comparativo de Routers MikroTik.md" + "basename": "SIDEL - Upgrades - Promemoria", + "path": "04-SIDEL/SIDEL - Upgrades - Promemoria.md" }, { - "basename": "NAT Mikrotik", - "path": "01-Documentation/Routers/Mikrotik - Network Redes/NAT Mikrotik.md" + "basename": "Riunione Endress&Hauser", + "path": "01-Documentation/Endress+Houser/Riunione Endress&Hauser.md" }, { - "basename": "Estructura XML Detallada para Topología de Red en Exportaciones AML de TIA Portal", - "path": "01-Documentation/CAx AutomationML/Estructura XML Detallada para Topología de Red en Exportaciones AML de TIA Portal.md" + "basename": "E5.007600 - SAE469 - FDM", + "path": "04-SIDEL/07 - E5.007600 - SAE469/E5.007600 - SAE469 - FDM.md" }, { - "basename": "Especificación Formal del Formato CAx (AML)", - "path": "01-Documentation/CAx AutomationML/Especificación Formal del Formato CAx (AML).md" + "basename": "Endress+Hauser WEB Access", + "path": "01-Documentation/Endress+Houser/Endress+Hauser WEB Access.md" }, { - "basename": "Mikrotik Scripts", - "path": "01-Documentation/Routers/Mikrotik - Network Redes/Mikrotik Scripts.md" + "basename": "Profibus_Variables", + "path": "04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Profibus_Variables.md" }, { - "basename": "Mikrotik - Setup Commands for Layer 2 Wi-Fi Bridge", - "path": "01-Documentation/Routers/Mikrotik - Network Redes/Mikrotik - Setup Commands for Layer 2 Wi-Fi Bridge.md" + "basename": "MFMAnalogValues", + "path": "04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/MFMAnalogValues.md" }, { - "basename": "EOip Vetromeccanica", - "path": "01-Documentation/Routers/Mikrotik - Network Redes/EOip Vetromeccanica.md" + "basename": "xref_calls_tree", + "path": "04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/xref_calls_tree.md" + }, + { + "basename": "SAE196 - IO Adapted", + "path": "04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/SAE196 - IO Adapted.md" + }, + { + "basename": "SAE196 - IO", + "path": "04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/SAE196 - IO.md" + }, + { + "basename": "Maselli - Utility", + "path": "01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Utility/Maselli - Utility.md" + }, + { + "basename": "UI.Library - Sensor Management Library Documentation", + "path": "01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Utility/UI.Library - Sensor Management Library Documentation.md" + }, + { + "basename": "SIMATIC ET 200S 2AI I 4WIRE ST", + "path": "01-Documentation/Siemens/Peripherics - Schede - IM/SIMATIC ET 200S 2AI I 4WIRE ST.md" + }, + { + "basename": "DB5100 - Supervisor SIPA - Script en VBA for Import and Export DB from Tia Portal", + "path": "01-Documentation/VB.NET Scripts VBA/DB5100 - Supervisor SIPA - Script en VBA for Import and Export DB from Tia Portal.md" + }, + { + "basename": "FC551 FC FC Compute Machine Speed", + "path": "03-VM/9..... MASTER Transport/Standard Transport/FC551 FC FC Compute Machine Speed.md" + }, + { + "basename": "Software General Description", + "path": "01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Utility/Software General Description.md" + }, + { + "basename": "Maselli Proprietary Serial-Socket Protocol", + "path": "01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Utility/Maselli Proprietary Serial-Socket Protocol.md" + }, + { + "basename": "Instrument Protocol Switching Mechanism", + "path": "01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Utility/Instrument Protocol Switching Mechanism.md" + }, + { + "basename": "Instrument Communication Service", + "path": "01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Utility/Instrument Communication Service.md" + }, + { + "basename": "Basic FAQ Software", + "path": "01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Utility/Basic FAQ Software.md" + }, + { + "basename": "Maselli - ADAM - Protocol", + "path": "01-Documentation/Dispositivos - Manuales/Maselli/Maselli - ADAM - Protocol.md" + }, + { + "basename": "Masselli (UR62 & UR29)", + "path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Masselli (UR62 & UR29).md" + }, + { + "basename": "Diet As Regular - Emails", + "path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Emails/Diet As Regular - Emails.md" + }, + { + "basename": "CIPLocal", + "path": "04-SIDEL/00 - MASTER/Source/source/CIPLocal.md" } ], "omittedPaths": [], diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index b3f3f12..9855dbe 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -13,12 +13,13 @@ "state": { "type": "markdown", "state": { - "file": "04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/SAE196 - IO.md", + "file": "04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Profibus_Variables.md", "mode": "source", - "source": false + "source": false, + "backlinks": false }, "icon": "lucide-file", - "title": "SAE196 - IO" + "title": "Profibus_Variables" } }, { @@ -27,73 +28,62 @@ "state": { "type": "markdown", "state": { - "file": "04-SIDEL/00 - MASTER/MIXER/SIDEL - Mixer - Equivalences.md", - "mode": "source", - "source": false - }, - "icon": "lucide-file", - "title": "SIDEL - Mixer - Equivalences" - } - }, - { - "id": "b44a0fb4ad99b202", - "type": "leaf", - "state": { - "type": "markdown", - "state": { - "file": "04-SIDEL/07 - E5.007600 - SAE469/E5.007600 - SAE469 - FDM.md", - "mode": "source", - "source": false - }, - "icon": "lucide-file", - "title": "E5.007600 - SAE469 - FDM" - } - }, - { - "id": "c3eb7a4ad13c9617", - "type": "leaf", - "state": { - "type": "markdown", - "state": { - "file": "01-Documentation/Routers/Mikrotik - Network Redes/Backups - Mikrotik.md", - "mode": "source", - "source": false - }, - "icon": "lucide-file", - "title": "Backups - Mikrotik" - } - }, - { - "id": "71b347c5a00c61de", - "type": "leaf", - "state": { - "type": "markdown", - "state": { - "file": "01-Documentation/Routers/Zero-Tier ONE - Lan NAT.md", - "mode": "source", - "source": false - }, - "icon": "lucide-file", - "title": "Zero-Tier ONE - Lan NAT" - } - }, - { - "id": "04a27eed4746bbe4", - "type": "leaf", - "state": { - "type": "markdown", - "state": { - "file": "04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/SAE196 - IO Adapted.md", + "file": "01-Documentation/Windows/SysInternals Tools.md", "mode": "source", "source": false, "backlinks": false }, "icon": "lucide-file", - "title": "SAE196 - IO Adapted" + "title": "SysInternals Tools" + } + }, + { + "id": "7ca06d73d28f59fc", + "type": "leaf", + "state": { + "type": "markdown", + "state": { + "file": "01-Documentation/GIT/Git - Start New Repository with Visual Studio Code - VS Code.md", + "mode": "source", + "source": false, + "backlinks": false + }, + "icon": "lucide-file", + "title": "Git - Start New Repository with Visual Studio Code - VS Code" + } + }, + { + "id": "70fc8b0e35ca06c6", + "type": "leaf", + "state": { + "type": "markdown", + "state": { + "file": "01-Documentation/GIT/GIT commands HELP.md", + "mode": "source", + "source": false, + "backlinks": false + }, + "icon": "lucide-file", + "title": "GIT commands HELP" + } + }, + { + "id": "f3acf87b79b7f9ad", + "type": "leaf", + "state": { + "type": "markdown", + "state": { + "file": "03-VM/33 - 9.402x - Shibuya/Notes for techinician on site/9.402x - Notes for technician on site - CARTON REJECT SYSTEM.md", + "mode": "source", + "source": false, + "backlinks": false + }, + "icon": "lucide-file", + "title": "9.402x - Notes for technician on site - CARTON REJECT SYSTEM" } } ], - "currentTab": 5 + "currentTab": 4 } ], "direction": "vertical" @@ -125,7 +115,7 @@ "state": { "type": "search", "state": { - "query": "", + "query": "tag:#Figure", "matchingCase": false, "explainSearch": false, "collapseAll": false, @@ -160,7 +150,7 @@ } ], "direction": "horizontal", - "width": 288.5 + "width": 286.5 }, "right": { "id": "403186784ae0fd88", @@ -287,54 +277,54 @@ "obsidian-importer:Open Importer": false } }, - "active": "04a27eed4746bbe4", + "active": "f3acf87b79b7f9ad", "lastOpenFiles": [ - "01-Documentation/Python/Python Notes.md", - "01-Documentation/Python/Scripts Python/Script para obtener las ultimas versiones.md", - "01-Documentation/Python/Scripts Python/Group Scripts Manager.md", - "01-Documentation/Python/Scripts Python/Conda - Anaconda - miniconda.md", - "01-Documentation/Python/Scripts Python/Miniconda Como hacer un backup completo de un entorno creado con Miniconda.md", - "01-Documentation/Python/Scripts Python/API Google Translate.md", - "01-Documentation/Python/Scripts Python/Allen Bradley HMI Translate - Python - LLM - Google Translate.md", - "04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/SAE196 - IO Adapted.md", - "04-SIDEL/07 - E5.007600 - SAE469/E5.007600 - SAE469 - FDM.md", - "01-Documentation/Dockers/Docker Basics - Essential Commands and Usage Guide.md", - "01-Documentation/Dockers/Docker - Prometheus.md", - "01-Documentation/Dockers/Radarr - Lidarr - Sonarr - QBittorrent - Prowlarr - Unmanic.md", - "04-SIDEL/00 - MASTER/MIXER/Documentacion/FB1751 - BlenderPID_PIDSPCalc Documentation.md", - "Untitled Diagram 1.svg", - "Untitled Diagram.svg", - "Untitled Diagram 2.svg", - "03-VM/39 - 94102 - Alpla - Usa/94102 - ALPLA- USA - Notes for technician on site.md", - "01-Documentation/Dockers/Untitled Diagram.svg", - "01-Documentation/Siemens/TIA Portal/OPC UA.md", - "01-Documentation/Routers/Mikrotik - Network Redes/Backups - Mikrotik.md", - "01-Documentation/Lidarr - Radarr/Radarr - Lidarr - Sonarr - QBittorrent - Prowlarr - Unmanic.md", - "01-Documentation/Dockers", - "01-Documentation/VPN - Zerotier - Wireguard/Configurazione ZeroTier con Home Assistant - Riccardo.md", - "01-Documentation/VPN - Zerotier - Wireguard/adjuntos/Pasted image 20250501184305.png", - "01-Documentation/VPN - Zerotier - Wireguard/adjuntos/Pasted image 20250501184158.png", - "01-Documentation/VPN - Zerotier - Wireguard/adjuntos", - "01-Documentation/Routers/Mikrotik - Network Redes/Mikrotik - Zerotier - zero_work network.md", - "01-Documentation/VPN - Zerotier - Wireguard", - "Untitled.md", - "Untitled 1.md", + "03-VM/33 - 9.402x - Shibuya/Notes for techinician on site/9.402x - Shibuya - Logics & Control.md", + "03-VM/33 - 9.402x - Shibuya/9.402x - After FAT considerations from customer.md", + "03-VM/33 - 9.402x - Shibuya/Notes for techinician on site/9.402x - Notes for technician on site - CARTON REJECT SYSTEM.md", + "01-Documentation/Dispositivos - Manuales/ADAM/ADAM 4021 - 485 to 4..20ma - Commissioning & Firmware update.md", + "01-Documentation/GIT/GIT commands HELP.md", + "01-Documentation/Windows/SysInternals Tools.md", + "01-Documentation/GIT/Git - Start New Repository with Visual Studio Code - VS Code.md", + "04-SIDEL/10 - E5.007095 - Modifica O&U - SAE463/Emails.md", + "04-SIDEL/10 - E5.007095 - Modifica O&U - SAE463/Differences.md", + "04-SIDEL/CheckList/Misuratori Endress&Hauser.md", + "01-Documentation/Endress+Houser/8F3B25-AAILABBFAASAFMWAA1+NB - Adapter RJ45 M12 (service interface).md", + "04-SIDEL/10 - E5.007095 - Modifica O&U - SAE463/adjuntos/Pasted image 20250509125112.png", + "04-SIDEL/10 - E5.007095 - Modifica O&U - SAE463/adjuntos/Pasted image 20250509125000.png", + "04-SIDEL/10 - E5.007095 - Modifica O&U - SAE463/adjuntos", + "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Maselli Sensor to Siemens PLC Communication Implementation.md", + "04-SIDEL/10 - E5.007095 - Modifica O&U - SAE463", + "01-Documentation/Endress+Houser/adjuntos/Pasted image 20250508205345.png", + "01-Documentation/Endress+Houser/adjuntos/Pasted image 20250508205329.png", + "markitdown-output/My Endress+Hauser _ Endress+Hauser.md", + "markitdown-output/1746730275557_My Endress+Hauser _ Endress+Hauser.html", + "markitdown-output", + "01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Protocol - Gateway - 485 - Ethernet.md", + "01-Documentation/Dispositivos - Manuales/CableMAX - Converter 485 - Serial Adaptor RS232 - CM-RSDB9-PRO.md", + "01-Documentation/GIT/Notes - Git - Gitea.md", + "04-SIDEL/CheckList/PC HMI Zenon.md", + "01-Documentation/Decompiler/MSI decompiler.md", + "01-Documentation/Decompiler/cSharp Decompiler.md", + "01-Documentation/Visual Studio Cn/Singleton.md", + "01-Documentation/Decompiler", + "04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/SAE196_c0.2_CAx_Export_Hardware_Tree.md", + "01-Documentation/AI - IA - LLM - Artificial Intelligence/MCP.md", + "01-Documentation/AI - IA - LLM - Artificial Intelligence/AI Prompts useful.md", + "DB/RouteHelper/Routes.md", + "04-SIDEL/00 - MASTER/MIXER/SIDEL - Mixer - Equivalences.md", "adjuntos/Promag300_500DP_verificationreport_2025-04-14_1243.pdf", "adjuntos/presente_indicativo_completo.pdf", - "adjuntos", - "04-SIDEL/00 - MASTER/MIXER/S7 Software Calls.md", - "04-SIDEL/00 - MASTER/MIXER/Documentacion/Análisis Detallado OBs.md", - "04-SIDEL/00 - MASTER/MIXER/Documentacion/Análisis del Software PLC Mixer.md", - "03-VM/39 - 94102 - Alpla - Usa/94102 - Alpla - Usa.md", - "04-SIDEL/00 - MASTER/MIXER/Documentacion/FB1751 - BlenderPID_PIDSPCalc Map.md", - "04-SIDEL/00 - MASTER/MIXER/Documentacion/adjuntos/Pasted image 20250429213121.png", - "04-SIDEL/00 - MASTER/MIXER/Documentacion/adjuntos", - "01-Documentation/Routers/Mikrotik - Network Redes/adjuntos/Pasted image 20250429124724.png", - "01-Documentation/Vetromeccanica/Sacomea/adjuntos/Pasted image 20250428204503.png", - "04-SIDEL/07 - E5.007600 - SAE469/adjuntos/Pasted image 20250428173456.png", - "01-Documentation/Blender Software/Video Editing/adjuntos", - "01-Documentation/Blender Software/Video Editing", - "01-Documentation/Blender Software", + "01-Documentation/Routers/Mikrotik - Network Redes/Backups - Mikrotik.md", + "04-SIDEL/CheckList/adjuntos/Pasted image 20250508101219.png", + "04-SIDEL/CheckList/adjuntos/Pasted image 20250508101103.png", + "04-SIDEL/CheckList/adjuntos/Pasted image 20250508101040.png", + "04-SIDEL/CheckList/adjuntos", + "04-SIDEL/CheckList", + "05-COMS/02 - PANELLO NESTLE/Reporte", + "01-Documentation/Siemens/Peripherics - Schede - IM/adjuntos/Pasted image 20250507112955.png", + "03-VM/9..... MASTER Transport/Standard Transport/adjuntos/Pasted image 20250507111418.png", + "01-Documentation/Dispositivos - Manuales/Maselli/adjuntos/Pasted image 20250506165059.png", "03-Revised/93789 Sipa Italia - Tinny - HSCounters - Piattaforma/Divider/Untitled.canvas", "04-InLavoro/9..... MASTER Transport/Standard Transport/FB500 Logic.canvas", "04-InLavoro/HENKEL/93040 - HENKEL - BowlingGreen/TL22-L25/Synoptic Change/Q3.canvas", diff --git a/01-Documentation/Decompiler/MSI decompiler.md b/01-Documentation/Decompiler/MSI decompiler.md new file mode 100644 index 0000000..d17bd91 --- /dev/null +++ b/01-Documentation/Decompiler/MSI decompiler.md @@ -0,0 +1,2 @@ + +[lessmsi-gui.exe](file:///C:%5CProgramData%5Cchocolatey%5Clib%5Clessmsi%5Ctools%5Clessmsi-gui.exe) \ No newline at end of file diff --git a/01-Documentation/Decompiler/cSharp Decompiler.md b/01-Documentation/Decompiler/cSharp Decompiler.md new file mode 100644 index 0000000..6450634 --- /dev/null +++ b/01-Documentation/Decompiler/cSharp Decompiler.md @@ -0,0 +1,12 @@ +*** +### CodemerxDecompile +*** +[CodemerxDecompile.exe](file:///D:%5CProyectos%5CVisualStudio%5CDecompilers%5CCodemerxDecompile-windows-x64%5CCodemerxDecompile.exe) + +* No tan bueno como ILSpy + +### ILSpy +*** +[ILSpy.exe](file:///C:%5CUsers%5Cmigue%5CAppData%5CLocal%5CPrograms%5CILSpy%5CILSpy.exe) + +* Realmente muy bueno diff --git a/01-Documentation/Dispositivos - Manuales/ADAM/ADAM 4021 - 485 to 4..20ma - Commissioning & Firmware update.md b/01-Documentation/Dispositivos - Manuales/ADAM/ADAM 4021 - 485 to 4..20ma - Commissioning & Firmware update.md new file mode 100644 index 0000000..993c703 --- /dev/null +++ b/01-Documentation/Dispositivos - Manuales/ADAM/ADAM 4021 - 485 to 4..20ma - Commissioning & Firmware update.md @@ -0,0 +1,16 @@ +*** + +![[Pasted image 20250506144537.png|341]] + +* When the ADAM is new needs to setup the speed and check the firmware required for the Serial ADAM Protocol. +* + + +![[01-Documentation/Dispositivos - Manuales/ADAM/adjuntos/Screenshot 2025-05-06 111701.jpg|800]] + +![[01-Documentation/Dispositivos - Manuales/ADAM/adjuntos/Screenshot 2025-05-06 111755.jpg|800]] + +![[01-Documentation/Dispositivos - Manuales/ADAM/adjuntos/Screenshot 2025-05-06 113243.jpg]] + + +![[01-Documentation/Dispositivos - Manuales/ADAM/adjuntos/Screenshot 2025-05-06 114159.jpg|800]] \ No newline at end of file diff --git a/01-Documentation/Dispositivos - Manuales/ADAM/adjuntos/Pasted image 20250506144537.png b/01-Documentation/Dispositivos - Manuales/ADAM/adjuntos/Pasted image 20250506144537.png new file mode 100644 index 0000000..20b8152 Binary files /dev/null and b/01-Documentation/Dispositivos - Manuales/ADAM/adjuntos/Pasted image 20250506144537.png differ diff --git a/01-Documentation/Dispositivos - Manuales/ADAM/adjuntos/Screenshot 2025-05-06 111701.jpg b/01-Documentation/Dispositivos - Manuales/ADAM/adjuntos/Screenshot 2025-05-06 111701.jpg new file mode 100644 index 0000000..617da64 Binary files /dev/null and b/01-Documentation/Dispositivos - Manuales/ADAM/adjuntos/Screenshot 2025-05-06 111701.jpg differ diff --git a/01-Documentation/Dispositivos - Manuales/ADAM/adjuntos/Screenshot 2025-05-06 111755.jpg b/01-Documentation/Dispositivos - Manuales/ADAM/adjuntos/Screenshot 2025-05-06 111755.jpg new file mode 100644 index 0000000..c917dba Binary files /dev/null and b/01-Documentation/Dispositivos - Manuales/ADAM/adjuntos/Screenshot 2025-05-06 111755.jpg differ diff --git a/01-Documentation/Dispositivos - Manuales/ADAM/adjuntos/Screenshot 2025-05-06 113243.jpg b/01-Documentation/Dispositivos - Manuales/ADAM/adjuntos/Screenshot 2025-05-06 113243.jpg new file mode 100644 index 0000000..3f71b22 Binary files /dev/null and b/01-Documentation/Dispositivos - Manuales/ADAM/adjuntos/Screenshot 2025-05-06 113243.jpg differ diff --git a/01-Documentation/Dispositivos - Manuales/ADAM/adjuntos/Screenshot 2025-05-06 114159.jpg b/01-Documentation/Dispositivos - Manuales/ADAM/adjuntos/Screenshot 2025-05-06 114159.jpg new file mode 100644 index 0000000..1a15925 Binary files /dev/null and b/01-Documentation/Dispositivos - Manuales/ADAM/adjuntos/Screenshot 2025-05-06 114159.jpg differ diff --git a/01-Documentation/Dispositivos - Manuales/CableMAX - Converter 485 - Serial Adaptor RS232 - CM-RSDB9-PRO.md b/01-Documentation/Dispositivos - Manuales/CableMAX - Converter 485 - Serial Adaptor RS232 - CM-RSDB9-PRO.md new file mode 100644 index 0000000..8fe787c --- /dev/null +++ b/01-Documentation/Dispositivos - Manuales/CableMAX - Converter 485 - Serial Adaptor RS232 - CM-RSDB9-PRO.md @@ -0,0 +1,48 @@ + +[USB_to_RS-232-422-485_Manual_V13.11.4.pdf](file:///D:%5CInstalad%5CRS232%20-%20422%20-%20485%5CUSB_to_RS-232-422-485_Manual_V13.11.4.pdf) + + +### FTDI USB to RS-232 / RS-422 / RS-485 Pro Grade Configurable Adapter +*** +[FTDI USB to RS-232 / RS-422 / RS-485 Pro Grade Configurable Adapter](https://cablemax.com/cm-rsdb9-pro?srsltid=AfmBOop-yFcIXoTWivwgHDn54W61usNIBS1UhGzRC-E89_QwlKlPd2Rw) + +### App for SETUP SERIAL +*** +[RS-232_422_485 AP.lnk](file:///C:%5CProgramData%5CMicrosoft%5CWindows%5CStart%20Menu%5CPrograms%5CRS-232_422_485%20AP%5CRS-232_422_485%20AP.lnk) +### Terminal software: +*** +Terminal Software: [AccessPort.exe](file:///D:%5CInstalad%5CRS232%20-%20422%20-%20485%5CAccessPort%5CAccessPort137%5CAccessPort.exe) +Directory: [AccessPort137](file:///D:%5CInstalad%5CRS232%20-%20422%20-%20485%5CAccessPort%5CAccessPort137) + + +## USB to RS-232/422/485 Adapter + +The USB to serial interface adapter offers an easy way to connect a DB9 serial device to a USB port. All configuration and electrical interface selections are handled through the driver, eliminating the need to open the enclosure to set jumpers or switches. + +The serial port is software configurable for RS-232, RS-422, and RS-485 with the electrical interface settings maintained locally, allowing the host computer to be repaired or upgraded without reconfiguring the serial port. + +## Features and Specifications + +- Full compliance with the USB Specification 2.0 & 1.1 +- RS-232 / RS-422 / RS-485 (Echo mode / Bias resister / Terminal resister) set up by Windows application program +- Bus powered, no external power required +- Support 32 Node on the network +- High data rate up to 230 kbps (RS-232) ~ 3 M Baud (RS-422 or RS-485) +- ±15kV HBM ESD Protected + +- DB-9 Male Pin Assignment +- RS-232 RS-422 RS-485 +- Chip FTDI 1 DCD TX- D- +- Data Rate RS-232 230 Kbps 2 RXD TX+ D+ +- RS-422 / RS-485 3 M Baud 3 TXD RX+ +- LED 3 4 DTR RX- +- Connector Host USB Type A Male 5 GND GND GND +- Device DB-9 Male 6 DSR RTS- +- Compliant USB Spec. 2.0 / 1.1 7 RTS RTS+ +- Housing Plastic 8 CTS CTS+ +- Dimension ( L x W x H ) 66 x 39 x 20 mm 9 RI CTS- + +### OS Support + +- Windows Windows 7, 8, & 10 +- Linux and Mac OS 10.X \ No newline at end of file diff --git a/01-Documentation/Dispositivos - Manuales/Logitech - K400+.md b/01-Documentation/Dispositivos - Manuales/Logitech - K400+.md new file mode 100644 index 0000000..bfd74da --- /dev/null +++ b/01-Documentation/Dispositivos - Manuales/Logitech - K400+.md @@ -0,0 +1,7 @@ + +![[Pasted image 20250504120154.png]] + +* Al final para lograr que funcione con el NVIDIA Shield tuve que conectarlo parearlo con la PC y luego el adaptador Unified usado lo conecte en el NVIDIA. Como ya estaban funcionando en la PC luego siguio funcionando en el Shield. Lo conecte en el puerto USB superior del SHIELD. + + +![[k400-quick-start-guide.pdf]] \ No newline at end of file diff --git a/01-Documentation/Dispositivos - Manuales/Maselli/Maselli - ADAM - Protocol.md b/01-Documentation/Dispositivos - Manuales/Maselli/Maselli - ADAM - Protocol.md new file mode 100644 index 0000000..a420634 --- /dev/null +++ b/01-Documentation/Dispositivos - Manuales/Maselli/Maselli - ADAM - Protocol.md @@ -0,0 +1,25 @@ +*** +#maselli #adam + +Maselli sensor can be interfaced to ADAM converter as depicted in Figure 1. + +![[Pasted image 20250506165035.png]] +`(Figure 1) - Maselli sensors with ADAM connection ` + +Maselli sensor UR29 communicates with ADAM with RS485 with ==115200==, 8N1 settings. Maselli sensor UR62 communicates with ADAM with RS485 with ==19200==, 8N1 settings. + +Maselli sensors communicate periodically (in a unidirectional way) to ADAM sending a string in following format: + +| Field | Start (1 char) | Adam address (2 chars) | Brix or Temperature value in mA (XX.YYY: 6 chars) | Checksum (2 chars) | Carriage return (1 char) | +| :-----: | :------------: | :--------------------: | :-----------------------------------------------: | :----------------: | :----------------------: | +| Example | # | 01 | 02.145 | CkCk | Cr | + +Be aware that the value is already in mA, so the range must be configured in the UR: + +* 4 mA--------------------- UR Brix Low value (ex: 0 Brix) +* 20 mA------------------- UR Brix High value (ex: 80 Brix) + +An example of string can be seen in the terminal depicted in Figure 2. + +![[Pasted image 20250506165059.png]] +`(Figure 2) – Maselli string in serial terminal` diff --git a/01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Protocol - Gateway - 485 - Ethernet.md b/01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Protocol - Gateway - 485 - Ethernet.md new file mode 100644 index 0000000..79349f8 --- /dev/null +++ b/01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Protocol - Gateway - 485 - Ethernet.md @@ -0,0 +1,321 @@ +# Maselli Sensor to Siemens PLC Communication Implementation + +## Introduction + +This document provides an implementation guide for establishing communication between a Maselli sensor (which uses the ADAM protocol over RS485) and a Siemens S7-315 DP/PN PLC using a Waveshare RS232/485 TO WIFI ETH (B) gateway. This implementation handles the unidirectional communication where data flows from the sensor to the PLC. + +## Maselli Protocol with ADAM Overview + +As per the provided documentation, the Maselli sensor communicates with the following characteristics: + +- **Maselli UR29**: RS485 with 115200 baud, 8N1 settings + +- **Maselli UR62**: RS485 with 19200 baud, 8N1 settings + +- **Communication Type**: Unidirectional (sensor sends data to PLC) + +- **Data Format**: String with specific format: + + ``` + # XX XX.YYY CkCk Cr + ``` + + Where: + + - `#` is the start character + - `XX` is the ADAM address (2 chars) + - `XX.YYY` is the Brix or Temperature value in mA (6 chars) + - `CkCk` is the checksum (2 chars) + - `Cr` is the carriage return +- **Value Range Example**: + + - 4 mA corresponds to Low Brix value (e.g., 0 Brix) + - 20 mA corresponds to High Brix value (e.g., 80 Brix) + +## SCL Implementation + +The following SCL code provides a complete implementation for handling this communication. The implementation consists of multiple parts: + +1. A function block for managing TCP/IP communication with the gateway +2. Functions for parsing the Maselli protocol string +3. Functions for scaling the mA value to the appropriate Brix value +4. Configuration functions for the TCP connection + +### Main Function Block + +```pascal +FUNCTION_BLOCK "FB_Maselli_Communications" +VAR_INPUT + xExecute : BOOL; // Trigger to initiate connection + tConnectionID : TCON_IP_v4; // TCP connection parameters +END_VAR + +VAR_OUTPUT + xConnected : BOOL; // Connection status + xError : BOOL; // Communication error + wErrorID : WORD; // Error code + rBrixValue : REAL; // Calculated Brix value + rTempValue : REAL; // Calculated Temperature value (if applicable) + rCurrentmA : REAL; // Received mA value +END_VAR + +VAR + // TCP communication variables + fbTCON : TCON; // FB for TCP connection + fbTRCV : TRCV; // FB for TCP reception + xTCONExecute : BOOL; + xTRCVExecute : BOOL; + wTCONID : WORD := 1; // Connection ID + + // Buffer and processing variables + aRxBuffer : ARRAY[0..255] OF BYTE; // Reception buffer + iRxLength : INT; // Received length + sRxString : STRING[255]; // Reception string + sParsedValue : STRING[6]; // Extracted value as string (XX.YYY) + + // Parsing variables + iState : INT := 0; // Parsing state + xNewDataReceived : BOOL := FALSE; // New data flag + + // Scaling variables + rLowBrix : REAL := 0.0; // Low Brix value (4mA) + rHighBrix : REAL := 80.0; // High Brix value (20mA) +END_VAR + +VAR CONSTANT + START_CHAR : BYTE := 16#23; // '#' in ASCII +END_VAR + +BEGIN + // ---- TCP Connection Management ---- + IF xExecute AND NOT xConnected THEN + xTCONExecute := TRUE; + END_IF; + + // Establish connection + fbTCON( + EN := TRUE, + ENO => , + REQ := xTCONExecute, + ID := wTCONID, + CONNECT := tConnectionID, + DONE => xConnected, + BUSY => , + ERROR => xError, + STATUS => wErrorID + ); + + // Reset connection trigger + IF xConnected OR xError THEN + xTCONExecute := FALSE; + END_IF; + + // ---- Data Reception ---- + IF xConnected THEN + xTRCVExecute := TRUE; + + // Receive data + fbTRCV( + EN := TRUE, + ENO => , + REQ := xTRCVExecute, + ID := wTCONID, + LEN := 0, // Adhoc mode (receives whatever is available) + DATA := aRxBuffer, + RCVD_LEN => iRxLength, + DONE => xNewDataReceived, + BUSY => , + ERROR => xError, + STATUS => wErrorID + ); + + // Process received data + IF xNewDataReceived AND iRxLength > 0 THEN + // Convert data to string for processing + sRxString := ''; + FOR i := 0 TO iRxLength-1 DO + sRxString := CONCAT(IN1 := sRxString, + IN2 := CHR(IN := aRxBuffer[i])); + END_FOR; + + // Process Maselli/ADAM protocol + ParseMaselliString(sRxString); + + // Calculate Brix value based on mA value (linear scale) + rBrixValue := LinearScale(rCurrentmA, 4.0, 20.0, rLowBrix, rHighBrix); + + // Reset flag + xNewDataReceived := FALSE; + END_IF; + END_IF; +END_FUNCTION_BLOCK +``` + +### Parsing Function + +```pascal +// Function to process the received Maselli/ADAM string +FUNCTION "ParseMaselliString" : VOID +VAR_INPUT + sInputString : STRING; +END_VAR +VAR_TEMP + sCurrentChar : STRING(1); + iPos : INT := 0; + iParseState : INT := 0; // 0:Waiting for #, 1:Reading addr, 2:Reading value, 3:Reading checksum + sAddrStr : STRING(2); + sValueStr : STRING(6); + sChecksumStr : STRING(2); +END_VAR +BEGIN + // Reset variables + sAddrStr := ''; + sValueStr := ''; + sChecksumStr := ''; + + // Parse the string character by character + FOR iPos := 0 TO LEN(sInputString) - 1 DO + sCurrentChar := MID(IN := sInputString, L := 1, P := iPos + 1); + + CASE iParseState OF + 0: // Waiting for start character '#' + IF sCurrentChar = '#' THEN + iParseState := 1; + END_IF; + + 1: // Reading ADAM address (2 characters) + sAddrStr := CONCAT(IN1 := sAddrStr, IN2 := sCurrentChar); + IF LEN(sAddrStr) = 2 THEN + iParseState := 2; + END_IF; + + 2: // Reading mA value (6 characters, format XX.YYY) + sValueStr := CONCAT(IN1 := sValueStr, IN2 := sCurrentChar); + IF LEN(sValueStr) = 6 THEN + iParseState := 3; + // Convert string to real value + #rCurrentmA := STRING_TO_REAL(sValueStr); + END_IF; + + 3: // Reading checksum (2 characters) + sChecksumStr := CONCAT(IN1 := sChecksumStr, IN2 := sCurrentChar); + // Checksum validation not implemented in this simplified example + END_CASE; + END_FOR; +END_FUNCTION +``` + +### Scaling Function + +```pascal +// Function to linearly scale the mA value to Brix +FUNCTION "LinearScale" : REAL +VAR_INPUT + rInput : REAL; // Value to scale (mA) + rInMin : REAL; // Input minimum (4mA) + rInMax : REAL; // Input maximum (20mA) + rOutMin : REAL; // Output minimum (0 Brix) + rOutMax : REAL; // Output maximum (80 Brix) +END_VAR +BEGIN + // Linear scaling formula + #LinearScale := (rInput - rInMin) * (rOutMax - rOutMin) / (rInMax - rInMin) + rOutMin; + + // Ensure result is within limits + IF #LinearScale < rOutMin THEN + #LinearScale := rOutMin; + ELSIF #LinearScale > rOutMax THEN + #LinearScale := rOutMax; + END_IF; +END_FUNCTION +``` + +### Main Application Block + +```pascal +// Main application block +ORGANIZATION_BLOCK "OB1" +VAR_TEMP + // Temporary variables +END_VAR +BEGIN + // Configure TCP connection + "ConfigureTCPConnection"(); + + // Process Maselli data + "FB_Maselli_Communications"( + xExecute := TRUE, + tConnectionID := "g_tConnection" + ); + + // Additional code to use Brix values can be added here +END_ORGANIZATION_BLOCK +``` + +### Connection Configuration Function + +```pascal +// Function to configure TCP connection parameters +FUNCTION "ConfigureTCPConnection" : VOID +VAR_GLOBAL + g_tConnection : TCON_IP_v4; // Global variable for connection parameters +END_VAR +BEGIN + // Configure TCP connection parameters + g_tConnection.InterfaceId := 64; // Ethernet interface ID (verify in hardware) + g_tConnection.ID := 1; // Connection ID + g_tConnection.ConnectionType := 11; // Connection type: TCP + g_tConnection.ActiveEstablished := TRUE; // PLC initiates connection + + // IP and port of Waveshare gateway + g_tConnection.RemoteAddress.ADDR[1] := 192; // IP Address: 192.168.x.x + g_tConnection.RemoteAddress.ADDR[2] := 168; // Adjust according to gateway IP + g_tConnection.RemoteAddress.ADDR[3] := 1; // Adjust according to gateway IP + g_tConnection.RemoteAddress.ADDR[4] := 10; // Adjust according to gateway IP + g_tConnection.RemotePort := 8899; // Default gateway port + + // Local port for TCP connection + g_tConnection.LocalPort := 2000; // Arbitrary local port +END_FUNCTION +``` + +## Configuration Guide + +To implement this solution, follow these steps: + +### 1. Configure the Waveshare Gateway + +Configure the Waveshare RS232/485 TO WIFI ETH (B) gateway in transparent transmission mode with these parameters: + +- **For UR29 sensor**: + + - RS485: 115200 baud, 8N1 + - TCP Server mode (recommended) + - Fixed IP address on your network +- **For UR62 sensor**: + + - RS485: 19200 baud, 8N1 + - TCP Server mode (recommended) + - Fixed IP address on your network + +### 2. PLC Configuration + +- Import the SCL code into your TIA Portal project +- Adjust the IP address settings in the `ConfigureTCPConnection` function to match your gateway's IP +- Modify the `rLowBrix` and `rHighBrix` values according to your specific application requirements +- Configure the Ethernet port of the S7-315 PLC to be on the same subnet as the gateway + +### 3. Verification + +After implementing the code: + +- Monitor the `xConnected` output to verify the connection status +- Check the `rBrixValue` output to see the converted Brix values +- Use the `xError` and `wErrorID` outputs for troubleshooting if connection issues occur + +## Additional Notes + +- This implementation focuses on handling the reception of data in the specified Maselli/ADAM format +- The checksum validation is not implemented in this example but could be added for improved reliability +- For optimal performance, ensure the network connection between the PLC and the gateway is stable +- Consider adding watchdog functionality to detect communication failures \ No newline at end of file diff --git a/01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Utility/Basic FAQ Software.md b/01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Utility/Basic FAQ Software.md new file mode 100644 index 0000000..628e6e3 --- /dev/null +++ b/01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Utility/Basic FAQ Software.md @@ -0,0 +1,109 @@ + +Este proyecto, denominado [Uc09_Utility](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html), es una aplicación de escritorio de Windows Forms diseñada para interactuar con instrumentos Maselli. + +**Funcionamiento General:** + +1. **Inicio y Configuración ([Program.cs](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html) y [FormPrincipaleMDI_Load](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html)):** + + - La aplicación se inicia ejecutando [FormPrincipaleMDI](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html) ([Uc09_Utility\FormPrincipaleMDI.cs](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html)). + - Configura el entorno de la aplicación, incluyendo estilos visuales y manejo global de excepciones. Las excepciones no controladas se registran en un archivo `log.txt` dentro de una carpeta `logs`. + - Al cargar el formulario principal ([FormPrincipaleMDI_Load](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html)): + - Detecta la versión de Windows. + - Procesa argumentos de línea de comandos para activar modos especiales como "DEMO", "PROVABRIX", "DEBUG" o "CCD". + - Carga la configuración desde un archivo `setup.txt`. + - Ajusta la resolución de la aplicación según la configuración o la pantalla. + - Define rutas para archivos de servicio, iconos e imágenes. + - Inicializa variables y los instrumentos Maselli ([ClassInizializzazioni.InizializzaStrumenti()](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html)). + - Establece la comunicación serial ([ClassSerialeStrumenti](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html)) con los instrumentos basándose en la configuración (puerto COM, baudrate). + - Inicializa una conexión a una base de datos SQL (`ClassDatabaseSQLMaselli`). + - Un servicio ([CommunicationHandlerLoggerService](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html)) se encarga de eliminar datos antiguos (más de seis meses). +2. **Interfaz Principal (MDI):** + + - [FormPrincipaleMDI](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html) es un contenedor MDI (Multiple Document Interface), lo que significa que puede albergar múltiples ventanas secundarias (paneles) dentro de ella. +3. **Navegación por Paneles ([timer1_Tick](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html)):** + + - Un temporizador ([timer1](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html)) se ejecuta periódicamente (cada 800 ms). + - En cada [Tick](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html) del temporizador, el método [timer1_Tick](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html) ([Uc09_Utility\FormPrincipaleMDI.cs](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html)) verifica la variable [Pannelli.NumeroPannello](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html). + - Si [Pannelli.NumeroPannello](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html) cambia, el panel (formulario) actual se cierra y se abre uno nuevo correspondiente al nuevo número. Existe una larga serie de `if-else if` que instancia diferentes formularios (ej. [Form1](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html), [Frm_setup](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html), [FormUC08Liv1](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html), [FrmParameters](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html), etc.) según este número. + - Este mecanismo permite cambiar dinámicamente la interfaz que se muestra al usuario. +4. **Comunicación con Instrumentos:** + + - La aplicación se comunica con los instrumentos Maselli a través del puerto serie. + - Maneja eventos como el cambio de protocolo de comunicación de un instrumento a "Maselli" ([OnProtocolFunctionChangedToMaselli](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html)). +5. **Manejo de Cierre ([MainFormClosing](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html)):** + + - Antes de cerrar, si la comunicación serial está activa, presenta un diálogo de confirmación. + - Permite al usuario decidir si confirma el protocolo MASELLI o si se deben realizar cambios antes de cerrar la comunicación serial. + +**¿Qué permite realizar?** + +La aplicación parece ser una utilidad central para: + +- **Monitorear y controlar** diversos tipos de instrumentos Maselli (identificados por los diferentes formularios como [FormUC08Liv1](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html), [FormURXXLivello1](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html), [FrmOssigenoLiv1](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html), etc.). +- **Configurar** los instrumentos y los parámetros de la aplicación (ej. [Frm_setup](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html), [Frm_InstrumentConfiguration](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html)). +- **Visualizar datos** provenientes de los instrumentos (posiblemente en formularios como [FormDataAcquisition](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html), [FormMisureUR70](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html)). +- Realizar **diagnósticos** y ver **alarmas** ([FormDiagnostica](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html), [FormAlarms](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html)). +- Gestionar la **calibración** y **certificados** ([Frm_certif_calibr](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html)). +- Guardar datos o configuraciones ([FormSaveFile](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html)). +- Operar en diferentes modos (normal, demo, debug) para pruebas o funcionalidades específicas. + +En resumen, [Uc09_Utility](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html) actúa como un panel de control y gestión para una variedad de instrumentos Maselli, facilitando su configuración, monitoreo y la adquisición de datos en un entorno industrial o de laboratorio. + +### Communicacion: +*** +La comunicación con los dispositivos Maselli en este proyecto se gestiona principalmente a través de la comunicación serial (puerto COM). Aquí te explico los puntos clave: + +1. **Inicialización de la Comunicación Serial (`ClassSerialeStrumenti` y `FormPrincipaleMDI_Load`):** + + - En el evento `FormPrincipaleMDI_Load` ([Uc09_Utility\FormPrincipaleMDI.cs](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html)), después de cargar la configuración, se llama a `ClassInizializzazioni.InizializzaStrumenti()`. + - Dentro de `ClassInizializzazioni` (no visible en el `.csproj` pero inferido por su uso), es muy probable que se instancie y configure un objeto de la clase `ClassSerialeStrumenti`. + - `ClassSerialeStrumenti` (tampoco visible directamente, pero su nombre es muy indicativo) sería la responsable de: + - Abrir el puerto COM especificado en el archivo de configuración (`setup.txt`). + - Configurar los parámetros del puerto serie como baudrate, paridad, bits de datos y bits de parada, también leídos desde la configuración. + - Manejar el envío y recepción de datos hacia/desde los instrumentos Maselli. +2. **Protocolo de Comunicación:** + + - La aplicación parece soportar un protocolo específico de Maselli. Esto se evidencia en el método `OnProtocolFunctionChangedToMaselli` en `FormPrincipaleMDI.cs`. + - Este método se activa cuando un instrumento cambia su función de protocolo a "Maselli", lo que sugiere que la aplicación adapta su comportamiento de comunicación según el protocolo activo del instrumento. +3. **Envío y Recepción de Comandos/Datos:** + + - Una vez establecida la conexión serial, la aplicación enviará comandos a los instrumentos para solicitar datos, cambiar configuraciones, iniciar mediciones, etc. + - Recibirá respuestas de los instrumentos que contienen los datos medidos, estados, confirmaciones, o errores. + - La clase `ClassSerialeStrumenti` probablemente encapsula la lógica para formatear los comandos según el protocolo Maselli y para interpretar los datos recibidos. +4. **Manejo de Eventos y Datos:** + + - Los diferentes formularios (paneles) que representan a cada instrumento (`FormUC08Liv1`, `FormURXXLivello1`, etc.) interactuarán con `ClassSerialeStrumenti` (directa o indirectamente) para: + - Enviar solicitudes específicas al instrumento que representan. + - Recibir y mostrar los datos actualizados del instrumento. + - Gestionar alarmas o eventos reportados por el instrumento. +5. **Cierre de la Comunicación:** + + - En el evento `MainFormClosing` de `FormPrincipaleMDI.cs`, se verifica si la comunicación serial está activa. + - Si lo está, se presenta un diálogo al usuario. Esto es importante para asegurar que cualquier operación en curso con el instrumento se complete o se cancele de forma segura antes de cerrar el puerto. + - Se ofrece la opción de "Confirmar Protocolo MASELLI" o realizar cambios, lo que podría implicar enviar un comando final al instrumento antes de cerrar la conexión. + +En resumen, la comunicación se basa en una conexión serial configurada según los parámetros definidos en `setup.txt`. Una clase dedicada (`ClassSerialeStrumenti`) maneja las operaciones de bajo nivel del puerto COM y la implementación del protocolo Maselli, mientras que los formularios de la interfaz de usuario interactúan con esta clase para controlar y monitorear los instrumentos. + + +### Cambio de protocolo: +***La aplicación, específicamente [Uc09_Utility](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html), no parece _realizar_ el cambio de protocolo en el dispositivo Maselli en sí misma, sino que _reacciona_ a una notificación de que el protocolo del instrumento ha cambiado a "Maselli". + +Este manejo se centra en el método `OnProtocolFunctionChangedToMaselli` que se encuentra en `FormPrincipaleMDI.cs`. Así es como probablemente funciona: + +1. **Detección y Notificación Externa:** + + - El instrumento Maselli cambia su protocolo de comunicación a "Maselli". Esto puede ser iniciado por el propio instrumento, por una configuración directa en el dispositivo, o a través de un comando enviado (posiblemente por esta utilidad u otra). + - Una librería o componente de más bajo nivel, encargado de la comunicación directa con el instrumento (potencialmente parte de `UI.Library.dll`, que está referenciada en tu archivo [Uc09_Utility.csproj](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html)), detecta este cambio. + - Este componente de bajo nivel luego dispara un evento dentro de la aplicación para notificar sobre el cambio de protocolo. +2. **Suscripción al Evento:** + + - En el código de `FormPrincipaleMDI.cs`, el método `OnProtocolFunctionChangedToMaselli` está suscrito a ese evento específico. Esto significa que cuando el evento de "cambio de protocolo a Maselli" se dispara, este método se ejecuta automáticamente. +3. **Acciones Dentro de `OnProtocolFunctionChangedToMaselli`:** + + - Una vez que se llama a `OnProtocolFunctionChangedToMaselli`, la aplicación [Uc09_Utility](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html) toma las medidas necesarias para adaptarse al nuevo estado del protocolo del instrumento. Las acciones específicas dentro de este método podrían incluir: + - Registrar el evento de cambio de protocolo (por ejemplo, en un archivo de log). + - Actualizar variables internas de la aplicación que rastrean el estado actual del protocolo de comunicación. + - Reconfigurar aspectos de la comunicación serial (manejada por `ClassSerialeStrumenti`) si el protocolo "Maselli" tiene requisitos diferentes a un protocolo anterior (por ejemplo, diferentes estructuras de comando, análisis de datos o temporizaciones). + - Modificar la interfaz de usuario, habilitando o deshabilitando funciones, o cambiando la información mostrada, si estas son específicas del protocolo "Maselli". + +En resumen, el archivo `.csproj` indica el uso de librerías externas como `UI.Library.dll`. Es muy probable que esta librería (o una similar que esta utilice) gestione la comunicación con el hardware Maselli y sea responsable de generar el evento al que `OnProtocolFunctionChangedToMaselli` responde. La aplicación [Uc09_Utility](vscode-file://vscode-app/c:/Users/migue/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html) actúa como un observador que se adapta cuando se le informa que el instrumento está operando bajo el protocolo "Maselli". \ No newline at end of file diff --git a/01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Utility/Instrument Communication Service.md b/01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Utility/Instrument Communication Service.md new file mode 100644 index 0000000..e2ab0bc --- /dev/null +++ b/01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Utility/Instrument Communication Service.md @@ -0,0 +1,129 @@ +# Instrument Communication Service + +This document describes the Instrument Communication Service, a core component of the software responsible for managing all aspects of communication with connected Maselli instruments. The primary class implementing this service is `Uc09_Utility.ClassSerialeStrumenti`. + +## 1. Overview and Purpose + +The Instrument Communication Service acts as a central hub for bi-directional data exchange between the software application and one or more Maselli instruments. Its main purpose is to abstract the complexities of low-level communication protocols and hardware interfaces, providing a consistent way for other parts of the application to interact with instruments. + +**Key Responsibilities:** + +* **Multi-Instrument Management:** Handles communication with multiple instruments, potentially on different lines or addresses. +* **Command Queuing and Dispatch:** Manages a queue of commands to be sent to instruments, ensuring orderly and timely execution. +* **Protocol Implementation:** Encodes outgoing commands and decodes incoming responses according to the Maselli Proprietary Serial/Socket Protocol. +* **Transport Layer Abstraction:** Supports communication over both direct serial (RS-232/RS-485) connections and TCP/IP sockets (Ethernet Bridge). +* **Instrument Lifecycle Management:** Handles instrument detection, recognition, initialization, active communication, and graceful disconnection. +* **Data Synchronization:** Updates shared data structures (e.g., `UtilityMaselli.Variabili`) with values read from instruments. +* **Event Notification:** Provides callbacks or events for significant communication occurrences (e.g., data received, protocol change). +* **Error Handling and Logging:** Detects communication errors, retries commands, and logs relevant information. + +## 2. Core Class: `Uc09_Utility.ClassSerialeStrumenti` + +This class is the heart of the Instrument Communication Service. + +**Key Internal Components and Mechanisms:** + +* **Instrument Registry (`ListaStrumenti`)**: + * A list (`List`) that holds instances of all instruments the service is configured to manage. + * Each `ClassStrumentoMaselli` object contains instrument-specific details like address, function numbers, and communication state (`InstrumentSerial`). + +* **Command Queue (`QueueComandiSeriali`)**: + * A thread-safe queue (`ConcurrentQueue`) that stores commands submitted from various parts of the application. + * Commands are processed in a FIFO (First-In, First-Out) manner, though the service prioritizes commands for instruments that are actively communicating. + +* **Main Processing Loop (driven by `_timerSerialeUtility`)**: + * A `System.Timers.Timer` periodically triggers the main logic of the service. + * This loop iterates through the `ListaStrumenti`, processing each instrument based on its current communication phase (`InstrumentSerial.FaseComunicazione`). + * It handles sending commands from the queue, managing timeouts, processing received data, and transitioning instruments through different communication states. + +* **Physical Communication Layer:** + * **Serial Port (`_serialPortUtility`):** An instance of `System.IO.Ports.SerialPort` used for direct serial communication. Configured based on settings in `UtilityMaselli.Setup` (COM port, baud rate, etc.). + * **Socket Communication (`_maselliSocketUtility`):** An instance of `MaselliSocket.ClassMaselliSocket` used when the Ethernet bridge is enabled (`UtilityMaselli.Setup.EnableEthernetBridge`). This class encapsulates TCP/IP client socket operations. + * The service seamlessly switches between these layers based on configuration. + +* **Protocol Encoding/Decoding Engine:** + * `PreparaComando()`: Constructs the full command string according to the Maselli protocol, including address, command type, function number, value, length, and checksum. + * `CalcolaChecksum()`: Calculates the checksum for outgoing commands. + * `GestioneComandoRicevuto()`: The primary method for parsing incoming responses. It checks for protocol errors (e.g., `NOxx`), identifies response types (data, image, acknowledgment), and routes data for further processing. + * `DecoderProtocolloMaselli()`: Extracts values from standard data responses (`!VALUE`) and updates the corresponding `ClassVariabile` objects in `UtilityMaselli.Variabili`. + * `DecodificaImmagine()`: Handles the more complex task of parsing and assembling image data received from instruments. + +* **Communication State Machine (`InstrumentSerial.FaseComunicazione`)**: + * Each instrument managed by the service has an associated communication phase. The service transitions instruments through these phases: + * Initial connection attempts. + * Sending "super commands" for recognition or protocol forcing. + * Instrument recognition (matching response with `Identifier.RecognizingStrings`). + * Sending instrument-specific startup commands. + * `LINKED` state for active data exchange. + * Handling image requests and multi-part responses. + * Closing communication and sending exit commands. + +* **Error Handling and Retries:** + * The service checks for protocol errors (`NOxx`) in responses. + * Commands can have a retry count (`ComandoSeriale.NumeroRipetizioni`). If a command fails (timeout or error response), it can be re-queued for a limited number of retries. + * The `CommunicationHandlerLoggerService` (an implementation of `ILoggerService`) is used to log communication errors and significant events. + +## 3. Service Operations and Flow + +### 3.1. Initialization and Instrument Addition + +1. The `ClassSerialeStrumenti` service is typically initialized once at application startup. +2. Instruments (instances of `ClassStrumentoMaselli` derivatives) are added to the service using the `AddStrumento()` method. This registers them for management. +3. The service attempts to open the configured communication port (serial or socket) via `ApriPortaComunicazione()`. + +### 3.2. Submitting Commands + +1. Other parts of the application (e.g., UI event handlers, automated processes) submit commands to instruments by calling `InserisciComandoSeriale()`. +2. This method populates a `ComandoSeriale` object with the necessary details (instrument address, command type, function number, value, etc.) and adds it to the `QueueComandiSeriali`. + +### 3.3. Command Processing Cycle (Timer Tick) + +1. The `_timerSerialeUtility_Elapsed` event handler executes periodically. +2. **Command Sending:** + * The service checks if the communication line is free (`_statoComunicazione == StatiComunicazione.LIBERO`). + * It iterates through `ListaStrumenti`. For each instrument, it checks its `FaseComunicazione`. + * If an instrument is in a state to send commands (e.g., `SEND_SUPER_COMMAND_RECOGNIZE_EQUIPMENT`, `LINKED`), the service dequeues the next relevant command (either a special command or from `QueueComandiSeriali`). + * The command is formatted using `PreparaComando()`. + * The formatted command is sent via `_serialPortUtility.Write()` or `_maselliSocketUtility.Send()`. + * The service transitions to a `WAIT_RX` state and sets a timeout for the response. +3. **Response Handling:** + * Data received on the serial port (`_serialPortUtility_DataReceived`) or socket (`_maselliSocketUtility.eventoResponseEthBridge`) triggers processing. + * The received data is passed to `GestioneComandoRicevuto()`. + * This method parses the response, checks for errors, and determines the response type. + * If it's a data response, `DecoderProtocolloMaselli()` updates the global `UtilityMaselli.Variabili`. + * If it's an image response, `DecodificaImmagine()` processes the image data. + * The command status (`ComandoSeriale.Stato`) is updated (e.g., `OK_COMMAND`, `ERROR_COMMAND`). + * Relevant callbacks/events like `ReceiveCallback` or `ModifiedReceived` are invoked. +4. **State Transitions:** + * Based on successful command execution or received data, the instrument's `FaseComunicazione` is updated (e.g., from `RECOGNIZE_EQUIPMENT` to `SEND_STARTUP_COMMANDS`, then to `LINKED`). + +### 3.4. Instrument Recognition + +* During initial phases, the service sends "super commands" (e.g., requesting instrument memory name). +* The response is compared against `Identifier.RecognizingStrings` for each configured instrument. +* Once a match is found, `Identifier.EquipmentRecognized` is set to true, and the instrument model may be further refined (e.g., differentiating UC07 from UC08 based on the memory name). +* The `ProtocolChangedToMaselli` event can be raised if the instrument confirms it's in Maselli mode. + +### 3.5. Data Synchronization + +* When `DecoderProtocolloMaselli()` successfully parses a response to a read command (`V`), it finds the corresponding `ClassVariabile` in `UtilityMaselli.Variabili` (based on instrument and function number) and updates its `Valore` property. +* This makes the latest instrument data available to the rest of the application. + +## 4. Interaction with Other System Components + +* **`UtilityMaselli.Setup`**: Provides configuration parameters for the communication channel (port, speed, bridge settings). +* **`UtilityMaselli.Variabili`**: The global list of `ClassVariabile` objects that this service reads from (for "M" commands, using the current value in the variable if not explicitly provided in `ComandoSeriale`) and writes to (after "V" commands). +* **`ClassStrumentoMaselli` (and derivatives)**: Provide instrument-specific information like address, function number definitions, startup/exit commands, and recognizing strings. +* **Application Logic/UI**: Submits commands via `InserisciComandoSeriale()` and consumes data from `UtilityMaselli.Variabili`. Listens to events from the service for UI updates. +* **`MaselliSocket.ClassMaselliSocket`**: Used as the transport layer when Ethernet bridge is active. +* **`CommunicationHandlerLoggerService`**: Used for logging errors and important communication events. + +## 5. Service Robustness + +* **Timeouts:** Manages timeouts for responses to prevent indefinite blocking. +* **Retries:** Failed commands can be retried a configurable number of times. +* **Checksums:** Validates command integrity for serial transmission. +* **Error Logging:** Provides diagnostic information for troubleshooting. +* **Concurrent Queue:** Ensures thread-safe command submission. + +The Instrument Communication Service is thus a critical and complex component, orchestrating the entire flow of information between the software and the physical Maselli instruments. \ No newline at end of file diff --git a/01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Utility/Instrument Protocol Switching Mechanism.md b/01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Utility/Instrument Protocol Switching Mechanism.md new file mode 100644 index 0000000..6966837 --- /dev/null +++ b/01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Utility/Instrument Protocol Switching Mechanism.md @@ -0,0 +1,57 @@ + + +## 1. Introduction + +This document outlines the mechanism employed by the software system to command a connected instrument to switch its communication protocol, specifically to the proprietary Maselli bidirectional protocol. This is a critical function, particularly when instruments might initialize in, or be operating under, other protocols such as ADAM or PROFIBUS, which are often predominantly unidirectional (instrument primarily transmits data) and do not support the full range of commands required by the software. + +The core of this mechanism relies on sending specific "Super Commands" during the initial phases of communication establishment. + +## 2. The Challenge: Unidirectional Protocols + +Certain industrial protocols, like ADAM or PROFIBUS (in some configurations), are designed for instruments to primarily broadcast data or respond to a very limited set of polling commands. In such states, the instrument may not be actively "listening" for or capable of processing the complex command set of the Maselli proprietary protocol. + +To enable full bidirectional communication, data retrieval, parameter modification, and advanced operations (like image acquisition), the instrument must be switched from such a mode into the Maselli proprietary protocol mode. + +## 3. The Solution: "Super Commands" for Protocol Forcing + +The software utilizes a system of "Super Commands" to actively instruct an instrument to change its operational protocol. + +**Key Components:** + +* **`ClassStrumentoMaselli`**: + * Each instrument type (derived from `ClassStrumentoMaselli`) defines a list of `SuperComandi` (of type `List`). + * These `SuperComandi` are pre-defined command sequences specifically designed to be understood by the instrument even if it's not fully in the Maselli protocol mode. They might be very basic commands or specific byte sequences that trigger a mode switch in the instrument's firmware. + * The `ModalitaMaselli` boolean flag within this class tracks whether the instrument is confirmed to be operating in the Maselli protocol. + * Flags like `ForzaProtocolloADAM` or `ForzaProtocolloPROFIBUS` indicate the system's awareness that an instrument might need to be switched *from* these protocols. + +* **`Uc09_Utility.ClassSerialeStrumenti` (Instrument Communication Service)**: + * This service manages the communication lifecycle for each instrument. + * It employs a state machine with specific phases for communication establishment. One crucial phase is `SEND_SUPER_COMMAND_FORCED_PROTOCOLL`. + * During this phase, the `ClassSerialeStrumenti` retrieves the `SuperComandi` from the respective `ClassStrumentoMaselli` instance and sends them to the instrument. + +## 4. Mechanism of Operation + +1. **Initialization**: When communication with an instrument is initiated, `ClassSerialeStrumenti` begins its state machine. +2. **Entering Protocol Forcing Phase**: The service enters the `SEND_SUPER_COMMAND_FORCED_PROTOCOLL` phase (or a similar initial phase dedicated to sending these critical commands). +3. **Dispatching Super Commands**: + * The `SuperComandi` defined for the specific instrument type are retrieved. + * These commands are formatted according to the basic requirements of the Maselli protocol (e.g., `>LLLLAA T;FFFVALUE;cc\r`) but their `VALUE` or `FFF` (Function Number) part might represent a special instruction for protocol switching. + * The commands are sent to the instrument. +4. **Instrument Response and State Change**: + * The instrument, upon receiving and recognizing a valid "Super Command" for protocol switching, is expected to change its internal communication mode to the Maselli proprietary protocol. + * It should then respond in a way that confirms this change, or at least becomes receptive to further Maselli protocol commands (like identification requests). +5. **Confirmation and Transition**: + * `ClassSerialeStrumenti` awaits a response. A successful protocol switch might be confirmed by: + * A specific acknowledgment response from the instrument. + * The instrument subsequently responding correctly to standard Maselli protocol identification commands (e.g., requests for memory name or serial number). + * Once confirmed, the `ModalitaMaselli` flag for the instrument is set to `true`. + * The `ProtocolChangedToMaselli` event may be raised by `ClassSerialeStrumenti` to signal that the instrument is now ready for full Maselli protocol communication. + * The communication service then transitions to subsequent phases like `RECOGNIZE_EQUIPMENT` and `LINKED`, now expecting full Maselli protocol interaction. + +## 5. Rationale and Importance + +* **Enabling Bidirectional Control**: The Maselli proprietary protocol is bidirectional, allowing the software to send a wide array of commands (read, write, execute functions, request images) and receive detailed responses. This level of control is generally not possible if the instrument remains in a unidirectional or limited-command-set protocol. +* **Unlocking Full Functionality**: Access to instrument parameters, calibration routines, data acquisition, and other advanced features managed by the software relies on the instrument operating under the Maselli protocol. +* **Standardized Interaction**: By forcing all instruments into a common, feature-rich protocol, the software can interact with diverse instrument types in a standardized manner once the initial protocol switch is successful. + +In essence, the "Super Command" mechanism is a foundational step in the communication process, acting as a software-initiated handshake to ensure the instrument is in the correct operational mode for detailed and comprehensive interaction. Without this active forcing mechanism, communication with instruments that default to or are stuck in other protocol modes would be severely limited or impossible. diff --git a/01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Utility/Maselli - Utility.md b/01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Utility/Maselli - Utility.md new file mode 100644 index 0000000..8cd3e7d --- /dev/null +++ b/01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Utility/Maselli - Utility.md @@ -0,0 +1,7 @@ +*** + +Password: 20 - Level 3 + +Utility - [MAU_V_2_9_6.msi](file:///D:%5CInstalad%5CMaselli%20-%20Utility%5CMAU_V_2_9_6.msi) + + diff --git a/01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Utility/Maselli Proprietary Serial-Socket Protocol.md b/01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Utility/Maselli Proprietary Serial-Socket Protocol.md new file mode 100644 index 0000000..cfd7328 --- /dev/null +++ b/01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Utility/Maselli Proprietary Serial-Socket Protocol.md @@ -0,0 +1,48 @@ +# Maselli Proprietary Serial/Socket Protocol + +This document describes the proprietary communication protocol used by Maselli instruments, as implemented in the provided C# software, primarily within the `Uc09_Utility.ClassSerialeStrumenti` and related classes. The protocol is used for both direct serial communication and when bridged over TCP/IP sockets. + +## 1. Core Principles + +* **Master-Slave:** The software acts as the master, sending commands to instrument slaves. +* **Addressed Communication:** Each instrument on a communication line is assigned an address. +* **Function-Oriented:** Commands target specific functions or parameters within the instrument using numeric codes (Function Numbers). +* **Text-Based:** The primary protocol commands and responses are text-based strings. +* **Checksum Protected:** Commands include a checksum for integrity validation. +* **Bridged over TCP/IP:** The same serial protocol strings can be encapsulated and transmitted over TCP/IP when the Ethernet bridge functionality is enabled. + +## 2. Command Structure + +The general structure of a command sent from the master (software) to the instrument (slave) is: + +`>` + `LLLL` + `AA` + ` ` + `T` + `;` + `FFF` + `VALUE` + `;` + `cc` + `\r` + +Where: + +* `>`: Start of command character. +* `LLLL`: Four-digit hexadecimal representation of the **total length of the command string**, starting from `AA` up to and including the checksum `cc`. Padded with leading zeros if necessary (e.g., "001A"). +* `AA`: Two-digit hexadecimal instrument address. Padded with a leading zero if necessary (e.g., "01", "0A"). +* ` `: A space character. +* `T`: Command Type (a single character). See section "Command Types" below. +* `;`: Semicolon delimiter. +* `FFF`: Three-digit decimal function number (parameter ID). Padded with leading zeros (e.g., "001", "023", "100"). +* `VALUE`: The value associated with the command, if applicable. Its format depends on the command type and function. + * For read commands (`V`), this part might be absent or ignored by the instrument. + * For modify commands (`M`), this contains the data to be written. +* `;`: Semicolon delimiter. +* `cc`: Two-character hexadecimal checksum. Calculated on the string portion from `AA` up to (but not including) the preceding semicolon. See section "Checksum Calculation". +* `\r`: Carriage return (ASCII 13), command terminator. + +**Example Command Preparation (from `ClassSerialeStrumenti.PreparaComando`)**: + +```csharp +// Simplified logic +string comando = string.Format("{0} {1};{2:000}{3}", + addressHex, // AA + tipoComando, // T + numeroFunzione, // FFF + valoreComando // VALUE +); +string lunghezza = string.Format("{0:X4}", comando.Length + 3); // LLLL (+3 for ";cc") +string checksum = CalcolaChecksum(comando); // cc +string finalCommand = string.Format(">{0}{1};{2}\r", lunghezza, comando, checksum); \ No newline at end of file diff --git a/01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Utility/Software General Description.md b/01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Utility/Software General Description.md new file mode 100644 index 0000000..f10b8b2 --- /dev/null +++ b/01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Utility/Software General Description.md @@ -0,0 +1,439 @@ +# Software Documentation + +This document outlines the functionalities, protocols, and services of the provided software components, based on the C# source code. + +## Namespaces and Classes + +### 1. `ClasseSQL` + +This namespace is responsible for interactions with a SQL database. + +* **`ClassSQL` (internal)** + * **Functionalities:** + * Provides static methods to manage a SQL database connection. + * `SetConnectionString(string Stringa)`: Sets the main part of the SQL connection string. + * `SetInitialCatalog(string Stringa)`: Sets the initial catalog (database name) for the SQL connection. + * `SendComandoSQL(string SQLCommand)`: Executes a given SQL command string and returns the results as a `DataTable`. It handles opening and closing the SQL connection. + * **Protocols:** + * Uses **System.Data.SqlClient**, indicating interaction with Microsoft SQL Server. + * **Services:** + * Provides a basic SQL database querying service. + +* **`ComandoSQL` (internal, implements `IDisposable`)** + * **Functionalities:** + * Represents a SQL command to be executed. + * Constructor `ComandoSQL(string StringaConnessione, string StringaComando)`: Initializes a new SQL command with a connection string and the command text. + * `AddParameter(string IDParametro, object Valore)`: Adds parameters to the SQL command to prevent SQL injection and handle various data types. + * `Send()`: Executes the SQL command (presumably a SELECT query) and fills a `DataTable` with the results. It manages connection opening/closing and basic error handling. + * `Error` (property): Boolean indicating if an error occurred during the command execution. + * `TableReturned` (property): Returns the `DataTable` containing the query results. + * `ErrorString` (property): Provides the error message if an error occurred. + * Implements `IDisposable` to release resources like `SqlConnection`, `SqlCommand`, and `DataTable`. + * **Protocols:** + * Uses **System.Data.SqlClient** for SQL Server communication. + * **Services:** + * Offers a more structured way to execute parameterized SQL queries and retrieve data. + +### 2. `MaselliPanel` + +This namespace appears to be related to panel management, possibly for a user interface, but also includes a global error handling class. + +* **`ErrGlobale` (public)** + * **Functionalities:** + * A simple class to store global error messages. + * Contains `Messaggio` (message string) and `Visualizzato` (boolean flag, likely for UI purposes to track if an error has been displayed). + * **Services:** + * Basic global error information holder. + +* **`Pannelli` (public)** + * **Functionalities:** + * Defines a large number of constants (`NUM_PANNELLO_*`), likely representing unique identifiers for different UI panels or sections within the application. These constants seem to be related to various instruments and their functionalities (CO2, Ossigeno, URXX, UC08, UV, US, etc.) and specific operations (Setup, Calibration, Linearization, Parameters, Data Acquisition). + * Static fields `NumeroPannello` and `NumeroPannelloBack` to track the current and previous panel, respectively. This suggests a navigation system. + * **Services:** + * Provides a centralized definition and tracking mechanism for UI panel navigation. + +### 3. `MaselliScreen` + +This namespace contains classes primarily for UI management, screen drawing, and custom UI elements. While the user is not interested in graphical aspects, the functionalities provided by these classes are noted. + +* **`ClassScreen` (public)** + * **Functionalities:** (Ignoring graphical details) + * `SetRisoluzioneApp(int RisoluzioneX, int RisoluzioneY)`: Sets the application's screen resolution. + * `LoadImmagineDaFile(...)`: Methods to load images for UI elements. + * **Services:** + * Basic UI helper functions. + +* **`MaselliColours` (internal)** + * **Functionalities:** Defines static color properties for UI elements. (Details ignored as per user request). + +* **`MaselliInputBox` (public)** + * **Functionalities:** + * Provides static methods `Show(...)` to display a custom input dialog to the user. + * Can be configured to show a password input field. + * **Services:** + * Custom user input dialog service. + +* **`MaselliMessageBox` (public)** + * **Functionalities:** + * Provides static methods `Show(...)` to display custom message boxes with different buttons (OK, OKCancel, YesNo) and icons (Information, Warning, Question, Error). + * **Services:** + * Custom message display service. + +* **`MaselliSaveAs` (public, implements `IDisposable`)** + * **Functionalities:** + * A custom "Save As" dialog implementation. + * `ShowDialog()`: Displays the dialog. + * Allows navigation through drives and directories. + * **Services:** + * Custom file saving dialog service. + +### 4. `MaselliSerial` + +This namespace deals with serial communication commands. + +* **`ComandoSeriale` (public)** + * **Functionalities:** + * Represents a serial command to be sent to an instrument. + * Properties include: + * `StringaComando`: The actual command string. + * `TipoComando`: Type of command (e.g., "M" for modify, "V" for read variable, "P"/"I"/"i"/"X" for image requests). + * `Indirizzo`: Instrument address. + * `NumeroFunzione`: Function number/code. + * `ValoreComando`: Value associated with the command. + * `FormatoValore`: Format of the value. + * `Stato`: Status of the command (e.g., PENDING, OK_COMMAND). + * `NumeroRipetizioni`: Number of times the command has been retried. + * `Timeout`: Timeout for the command. + * `Terminatore`: Terminator byte for the command response. + * `Linea`: Communication line number. + * **Protocols:** + * Implies a custom serial communication protocol where commands have specific types, addresses, and function codes. + * **Services:** + * Data structure for serial commands. + +* **`StatiComando` (internal)** + * **Functionalities:** + * Defines constants for the different states a serial command can be in (e.g., `EMPTY`, `PENDING`, `WAIT_TX`, `WAIT_RX`, `OK_COMMAND`, `ERROR_COMMAND`). + * **Services:** + * Provides status definitions for serial command processing. + +### 5. `MaselliSocket` + +This namespace handles network communication via sockets. + +* **`ClassMaselliSocket` (internal)** + * **Functionalities:** + * Manages a TCP/IP socket connection. + * Constructor initializes a socket for `AddressFamily.InterNetwork`, `SocketType.Stream`, `ProtocolType.Tcp`. + * `Connect(string host, int port)`: Connects to a specified host and port. + * `Disconnect()`: Disconnects the socket. + * `Close()`: Closes the socket and stops an internal timer. + * `Send(byte[] message)` / `Send(string message)`: Sends data over the socket. + * Handles receiving data asynchronously using a timer (`timerSocket`) and processing it. + * `FlagResponse` / `FlagResponseImage`: Flags indicating if a text response or image data has been received. + * `RxBuffer` / `RxBufferBytes`: Buffers for received text and byte data. + * Internal state management for socket phases (e.g., `OPEN`, `READ`, `RECONNECT`). + * Appears to be used in conjunction with `ClassSerialeStrumenti` when `EnableEthernetBridge` is active, suggesting it acts as a bridge for serial commands over TCP/IP. + * **Protocols:** + * **TCP/IP Sockets**: Explicitly uses `System.Net.Sockets.Socket` with `ProtocolType.Tcp`. + * **Services:** + * Provides TCP/IP client communication services, potentially for bridging serial communication over a network. + +### 6. `MaselliVariables` + +This namespace defines classes for handling variables, likely from instruments. + +* **`ClassVariabile` (public)** + * **Functionalities:** + * Represents a variable, likely a parameter or measurement from an instrument. + * Properties include: + * `Scritta`, `ScrittaPerStampa`: Display names for the variable. + * `NumeroStrumento`, `NomeStrumento`: Identifiers for the instrument the variable belongs to. + * `Valore`: The current value of the variable. + * `Presenza`: Indicates if the variable is present/active. + * `Formato`: String format for displaying the value. + * `ListaValori`: A list of `ItemValore` for variables that have predefined sets of values (e.g., enums). + * `UnitaMisura`: Unit of measurement. + * `LimiteLow`, `LimiteHigh`: Low and high limits for the variable's value. + * `NumeroFunzione`, `NumeroFunzioneUniAna`: Function numbers, likely for communication protocols. + * `ValueConversion`: A delegate for custom value conversions (e.g., temperature scales). + * Methods: + * `ValoreToSQL()`: Formats the variable's value for SQL insertion. + * `ValoreFormattato()`: Formats the variable's value for display, handling units and lists. + * `ToDouble()`, `ToFloat()`, `ToInteger()`, `ToShort()`: Converts the variable's value to different numeric types, applying conversions if necessary. + * `Modifica()`: A method that likely opens a UI dialog (`Clas_dynamic.SuperInputBox` or `FrmSceltaVar`) to allow the user to modify the variable's value, performing validation against limits. + * **Protocols:** + * Interaction with UI elements (`Clas_dynamic.SuperInputBox`, `FrmSceltaVar`) for modification. + * Formatting for SQL suggests interaction with database services. + * **Services:** + * Manages instrument variables, including their values, display formats, units, limits, and modification logic. + +* **`ItemValore` (public)** + * **Functionalities:** + * A simple class to hold a value (`Valore`) and its corresponding display text (`Scritta`). Used for variables that represent a selection from a list (e.g., an enum). + * **Services:** + * Represents a single item in a list of possible values for a `ClassVariabile`. + +### 7. `RicetteMaselli` + +This namespace seems to handle "recipes," which are likely sets of parameters to be sent to an instrument. + +* **`ClassRicetta` (public)** + * **Functionalities:** + * Represents a recipe. + * `Invia`: Boolean flag to indicate if the recipe should be sent. + * `Address`: Target instrument address for the recipe. + * `Parametri`: A list of `ElementoRicetta` objects, forming the recipe's content. + * **Services:** + * Container for instrument recipes. + +* **`ElementoRicetta` (public)** + * **Functionalities:** + * Represents a single parameter within a `ClassRicetta`. + * `NumeroFunzione`: Function number of the parameter. + * `Valore`: Value of the parameter. + * `Formato`: Format of the parameter's value. + * **Services:** + * Data structure for individual recipe parameters. + +### 8. `StrumentiMaselli` + +This is a core namespace defining the structure and behavior of various Maselli instruments. + +* **`ClassCertificazione` (public)** + * **Functionalities:** + * Holds data related to instrument certification/calibration. + * Properties for serial number, memory name function numbers, measured value, certified value, accuracy, tolerance, technician, batch info, etc. + * **Services:** + * Manages certification data for an instrument. + +* **`ClassResettable` (public)** + * **Functionalities:** + * Defines constants `NO` (0) and `YES` (1), likely for boolean-like flags. + +* **`ClassStrumentoMaselli` (public, abstract)** + * **Functionalities:** + * Abstract base class for all Maselli instruments. + * `Presenza`: Boolean indicating if the instrument is detected. + * `NumeroLinea`: Communication line number. + * `Serial`: An `InstrumentSerial` object managing serial communication details. + * `Identification`: An `Identifier` object for instrument type and name. + * `Inizializzato`: Flag indicating if the instrument has been initialized. + * Various `NumFun*` properties (e.g., `NumFunMemoryName`, `NumFunSerialNumber`): Store function numbers for specific instrument operations, crucial for the Maselli communication protocol. + * `ForzaProtocolloADAM`, `ForzaProtocolloPROFIBUS`: Flags to force specific communication protocols. + * `RicettaDaInviare`: A `ClassRicetta` object for sending recipes to the instrument. + * `SuperComandi`, `ComandiAvvio`, `ComandiUscita`: Lists of `ComandiDaInviare` for various stages of instrument interaction. + * `TabellaCorrispondenzaUniAna`: Array mapping universal/analog function numbers to specific instrument function numbers. + * `ListaDataAcquisition`: Dictionary for data acquisition configuration. + * `DatiSQL`: Holds data to be saved to a SQL database for the instrument. + * `Certificazione`: `ClassCertificazione` object. + * `ModalitaMaselli`: Boolean indicating if the instrument is in "Maselli" communication mode (likely a proprietary protocol). + * Abstract methods (e.g., `InizializzaListaVariabili`, `RecognizeEquipment`, `AddStartupCommands`) to be implemented by derived instrument classes. + * `InitAfterRecognize()`: Method to perform initialization steps after an instrument is recognized. + * `AssegnaTabellaCorrispondenzaUniAna()`: Populates the function number mapping table. + * **Protocols:** + * Defines the framework for interacting with instruments using function numbers, addresses, and specific command sequences (Maselli proprietary protocol). + * Implies support for ADAM and PROFIBUS protocols. + * **Services:** + * Base framework for instrument communication, identification, parameter management, and data handling. + +* **`ComandiDaInviare` (public)** + * **Functionalities:** + * Represents a command to be sent, containing the command string, function number, and value. + * **Services:** + * Data structure for commands used in `ClassStrumentoMaselli`. + +* **`DatiSQL` (public)** + * **Functionalities:** + * Stores data (`OrdineLavoro`, `Matricola`, `Note`, and a list of `ElementoDatabase`) intended for SQL database storage. + * **Services:** + * Data container for instrument-related information to be saved in a database. + +* **`ElementoDatabase` (public)** + * **Functionalities:** + * Represents a single data element to be stored in the database, linking a name, a function number (to retrieve its value from `UtilityMaselli.Variabili`), and its string value. + * **Services:** + * Defines a database-bound data item. + +* **`Identifier` (public)** + * **Functionalities:** + * Stores identification information for an instrument: `DeviceName`, `RecognizingStrings` (used to identify the instrument model from its response), `EquipmentRecognized` flag, `DeviceType`, `EquipmentType`, and `MemoryYear`. + * **Services:** + * Provides instrument identification capabilities. + +* **`Image` (public, generic where `T` : struct)** + * **Functionalities:** + * A generic class to store image data (e.g., CCD or pressure sensor readings). + * `Data`: Array of type `T` to hold the image pixels/data points. + * `Request`: The command string used to request this image. + * `IsNewData`: Flag indicating if new image data is available. + * **Services:** + * Generic image data container. + +* **`InstrumentSerial` (public)** + * **Functionalities:** + * Holds serial communication parameters and state for an instrument. + * Properties like `Protocol`, `Indirizzo` (address), `FaseComunicazione` (communication phase), timeouts, and flags for image requests or special command handling. + * **Services:** + * Manages serial communication state for an instrument. + +* **`StrumentoWithCCDImage` (public, abstract, inherits `StrumentoWithImage`)** + * **Functionalities:** + * Abstract class for instruments that use a CCD image sensor. Inherits from `StrumentoWithImage` specialized with `ushort` for image data. + * **Services:** + * Base class for CCD-based instruments. + +* **`StrumentoWithImage` (public, abstract, inherits `ClassStrumentoMaselli`)** + * **Functionalities:** + * Abstract generic class for instruments that produce image data. + * `Immagine`: An `Image` object to store the instrument's image data. + * **Services:** + * Generic base class for image-producing instruments. + +* **`StrumentoWithPressureImage` (public, abstract, inherits `StrumentoWithImage`)** + * **Functionalities:** + * Abstract class for instruments that produce pressure image/profile data. Inherits from `StrumentoWithImage` specialized with `double`. + * **Services:** + * Base class for pressure-profile instruments. + +### 9. `Uc09_Utility` + +This namespace provides various utility classes and global static members used throughout the application. + +* **`BaudRate_UC` (public)** + * **Functionalities:** Defines constants for standard baud rates. + +* **`BITCW` (public, enum : ushort, Flags)** + * **Functionalities:** Defines bit flags, likely for a control word or status register. + +* **`BitcwState` (public, Form)** + * **Functionalities:** (UI class, details ignored as per request, but functional aspect noted) + * Displays the state of individual bits within a BITCW (control word) variable. + * **Services:** + * UI for visualizing BITCW states. + +* **`BITCW_UR` (public)** + * **Functionalities:** Defines constants representing specific alarm or status bits for "UR" type instruments (e.g., `LOW_BRIX`, `MEMORY_FAIL`). + +* **`CCDPoint` (public, struct)** + * **Functionalities:** A simple struct to store X and Y coordinates, likely for CCD image data points. + +* **`ClassDataAcquisition` (public, implements `IDisposable`)** + * **Functionalities:** + * Manages data acquisition to a file. + * `Enable(short time, string path)`: Starts data acquisition, writing data to the specified `path` at intervals defined by `time`. + * `Disable()`: Stops data acquisition. + * Uses a timer to periodically write formatted data (including date, time, and values from `UtilityMaselli.StrumentoAcquisizioneDati.ListaDataAcquisition`) to the log file. + * **Services:** + * Provides a service for logging instrument data to a file over time. + +* **`ClassDatabaseSQL` (public, implements `IDisposable`)** + * **Functionalities:** + * Handles more complex database interactions, specifically for saving instrument calibration data and parameters to different tables (`UC07Calib`, `Sonico`, `Ossigeno`, `DsLottoModello`) based on instrument type. + * `CreaListaPerDatabase(ClassStrumentoMaselli StrumentoDaSalvare)`: Prepares and sends data for a given instrument to the appropriate SQL table. It iterates through `StrumentoDaSalvare.DatiSQL.ListaElementiDatabase` and formats values for SQL insertion. + * `SalvaPontremoliDb(...)`: Asynchronously saves/updates data to a table named `DsLottoModello`, likely for a specific production/testing environment ("Pontremoli"). This method is more complex, handling different update queries based on whether an image is being saved or parameters. It also appears to dynamically add user scale parameters if a certain condition is met. + * `cerca_identificativo_utente()`: Queries an `Utente` table to find a user ID based on `utente_utility`. + * Uses `OleDbConnection` and `OleDbCommand`, suggesting it might connect to databases via OLEDB providers (which could include SQL Server or others like Access). The connection string `Provider=SQLOLEDB` points to SQL Server. + * **Protocols:** + * **OLEDB** for database communication, specifically with a SQL Server provider (`SQLOLEDB`). + * **Services:** + * Advanced database service for logging specific instrument data and production/testing records. + +* **`ClasseOSK` (internal)** + * **Functionalities:** + * Manages the On-Screen Keyboard (OSK). + * `Attiva()`: Starts the `osk.exe` process. + * `Disattiva()`: Kills the `osk.exe` process. + * Handles Wow64 file system redirection for 64-bit OS. + * **Services:** + * Provides control over the Windows On-Screen Keyboard. + +* **`ClassFormControlsEnanche` (internal)** + * **Functionalities:** (UI helper, functional aspect noted) + * Enhances form controls by managing their actions (e.g., modify variable, change panel) and enabling/disabling them based on communication state or variable presence. + * `AddControl(...)`: Adds controls to its internal management list with specified actions and associated function numbers. + * `VisualizeValuesInLabels()`: Updates text of managed labels with formatted variable values. + * `EnableControls()`: Enables/disables controls based on the instrument's communication phase and variable presence. + * **Services:** + * Advanced UI control management and data binding helper. + +* **`ClassInizializzazioni` (internal)** + * **Functionalities:** + * `InizializzaVariabili()`: Initializes the global `UtilityMaselli.Variabili` list with default `ClassVariabile` objects. + * `InizializzaStrumenti()`: Initializes instances of various instrument classes (`ClassStrumentoUCXX`, `ClassStrumentoUG`, etc.) based on `UtilityMaselli.Setup` settings. It configures their addresses, device names, recognizing strings, menu numbers, and essential function numbers. + * **Services:** + * Provides application startup initialization for variables and instruments. + +* **`ClassSerialeStrumenti` (public, implements `IDisposable`)** + * **Functionalities:** + * The core class for managing serial (and bridged socket) communication with Maselli instruments. + * `AddStrumento(ClassStrumentoMaselli strumento)`: Adds an instrument to its management list. + * `InserisciComandoSeriale(...)`: Adds a serial command to a concurrent queue (`QueueComandiSeriali`) for processing. + * `PreparaComando(...)`: Formats a command string according to the Maselli protocol (e.g., `>LLLLAA T;FFFVALUE;cc\r`). This includes calculating length and checksum. + * `CalcolaChecksum(...)`: Calculates the checksum for a command string. + * Manages communication phases for each instrument (`FaseComunicazione` in `InstrumentSerial`). Phases include recognizing, sending super commands, linked, closing, etc. + * Handles sending commands from the queue and processing received responses. + * `GestioneComandoRicevuto(...)`: Parses responses, checks for errors (NO02-NO07), and decodes data or images. + * `DecodificaRisposta(...)`, `DecoderProtocolloMaselli(...)`: Decodes Maselli protocol responses, updates `ClassVariabile` objects in `UtilityMaselli.Variabili`. + * `DecodificaImmagine(...)`: Decodes image data from responses. + * Manages serial port (`System.IO.Ports.SerialPort`) or socket (`ClassMaselliSocket`) communication based on `UtilityMaselli.Setup.EnableEthernetBridge`. + * Uses a timer (`_timerSerialeUtility`) to drive its state machine and command processing loop. + * Handles instrument recognition by comparing received memory names with `RecognizingStrings` in the instrument's `Identifier`. + * Invokes events for various stages like `ReceiveCallback`, `ModifiedReceived`, `FirstRequestCallback`, `ProtocolChangedToMaselli`. + * **Protocols:** + * **Maselli Serial Protocol**: Implements the logic for constructing, sending, and parsing commands based on a proprietary Maselli protocol that uses addresses, function numbers, types (V, M, P, I, X, k), length fields, and checksums. The structure `>LLLLAA T;FFFVALUE;cc\r` is characteristic of this. + * **System.IO.Ports.SerialPort** for direct serial communication. + * **TCP/IP Sockets** (via `ClassMaselliSocket`) for Ethernet-bridged serial communication. + * **Services:** + * Central communication hub for all connected Maselli instruments, managing command queues, protocol encoding/decoding, and instrument state. + +* **`ClassSetup` (public)** + * **Functionalities:** + * Manages application settings, loading them from a file (`FilePath`) and saving them back. + * Settings include COM port, baud rate, instrument addresses, UI preferences (virtual keyboard, resolution), data acquisition parameters, and flags for enabling specific instruments or communication modes (Ethernet bridge, ADAM/Profibus protocol switching). + * **Services:** + * Application configuration management. + +* **Instrument-specific classes (`ClassStrumentoUCXX`, `ClassStrumentoUG`, `ClassStrumentoURXX`, `ClassStrumentoUSXX`, `ClassStrumentoUVXX`)**: These inherit from `ClassStrumentoMaselli` or its derivatives. + * **Functionalities:** + * Override abstract methods from the base class to provide instrument-specific initialization for variables, data acquisition lists, print parameter lists, database element lists, startup commands, and value conversions. + * `RecognizeEquipment()`: Often refines equipment type based on the memory name (e.g., UC8 vs. UC07). + * `InizializzaListaVariabili()`: Defines specific `ClassVariabile` objects with their function numbers, formats, limits, and units for that instrument type. + * `InitializeValueConversion()`: Assigns specific conversion delegates (e.g., for temperature, CO2, pressure) to relevant variables. + * `AddStartupCommands()`: Adds specific "super commands" or initial commands to be sent to the instrument upon connection or recognition. + * **Services:** + * Implement the specific logic and parameter definitions for each type of Maselli instrument. + +* **`UtilityMaselli` (internal, static)** + * **Functionalities:** + * Acts as a global static container for application-wide objects and settings. + * Holds references to: + * `Setup`: The application settings. + * `Variabili`: The global list of all `ClassVariabile` objects. + * Instances of each instrument type (e.g., `StrumentoUC`, `StrumentoUR`). + * `SerialeStrumenti`: The main serial communication object. + * `CurrentDevice`, `StrumentoAcquisizioneDati`, `StrumentoStampa`, `StrumentoCertificazione`: References to the currently active/focused instrument for different operations. + * Paths for icons, executable, service files, images. + * `DataBaseSQLMaselli`: The database interaction object. + * **Services:** + * Global access point for shared application resources and state. + +* **`ControlAction`, `ControlsEnabling`, `DefinitionItems`, `Definitions`, `FasiSerialeUtility`, `FasiStrumento`, `StatiComunicazione`, `StatiSeriale`**: These classes define constants used throughout the application for managing states, actions, and types. + +### General Protocols & Services Summary + +* **Protocols:** + * **Maselli Proprietary Serial/Socket Protocol:** The core communication method with instruments, characterized by commands like `>LLLLAA T;FFFVALUE;cc\r`, function numbers, addresses, and checksums. Managed by `ClassSerialeStrumenti`. + * **SQL Database Protocol:** Interaction with SQL Server using `System.Data.SqlClient` (in `ClasseSQL`) and `OleDbConnection` with `SQLOLEDB` provider (in `ClassDatabaseSQL`). + * **TCP/IP:** Used by `ClassMaselliSocket` for network communication, likely as a bridge for the Maselli serial protocol. + * **ADAM/PROFIBUS:** Mentioned as protocols that can be forced for instruments, suggesting the system can switch instruments to these standard industrial protocols. + +* **Services:** + * **Instrument Communication Service:** `ClassSerialeStrumenti` provides the central service for communicating with all instruments, handling command queuing, sending, receiving, and basic decoding. + * **Database Interaction Service:** `ClasseSQL` and `ClassDatabaseSQL` offer services to query and store data in a SQL database. This includes instrument parameters, calibration data, and potentially production/testing records. + * **Variable Management Service:** `MaselliVariables.ClassVariabile` and `UtilityMaselli.Variabili` manage the state, display, and modification of instrument parameters and measurements. + * **Configuration Service:** `ClassSetup` manages loading and saving application and instrument settings. + * **UI Management Services:** Various classes in `MaselliScreen` and `MaselliPanel` (though graphical details are excluded) provide functionalities for UI panel navigation, custom dialogs, and screen adaptation. + * **Data Acquisition Service:** `Uc09_Utility.ClassDataAcquisition` logs instrument data to files over time. + * **Error Handling:** Basic error tracking in `ComandoSQL` and `ErrGlobale`, with more structured logging in `CommunicationHandlerLoggerService` (used by `ClassSerialeStrumenti`). + * **Instrument Abstraction:** `StrumentiMaselli.ClassStrumentoMaselli` and its derived classes provide an abstraction layer for different types of Maselli instruments. \ No newline at end of file diff --git a/01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Utility/UI.Library - Sensor Management Library Documentation.md b/01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Utility/UI.Library - Sensor Management Library Documentation.md new file mode 100644 index 0000000..0119ca8 --- /dev/null +++ b/01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Utility/UI.Library - Sensor Management Library Documentation.md @@ -0,0 +1,235 @@ +# UI.Library - Sensor Management Library Documentation + +## Table of Contents + +1. [Overview](https://claude.ai/chat/04749c64-82af-4403-a784-664d5dc353ff#overview) +2. [Architecture](https://claude.ai/chat/04749c64-82af-4403-a784-664d5dc353ff#architecture) +3. [Core Components](https://claude.ai/chat/04749c64-82af-4403-a784-664d5dc353ff#core-components) + - [Constants](https://claude.ai/chat/04749c64-82af-4403-a784-664d5dc353ff#constants) + - [Enumerations](https://claude.ai/chat/04749c64-82af-4403-a784-664d5dc353ff#enumerations) + - [Data Transfer Objects (DTOs)](https://claude.ai/chat/04749c64-82af-4403-a784-664d5dc353ff#data-transfer-objects-dtos) + - [Services](https://claude.ai/chat/04749c64-82af-4403-a784-664d5dc353ff#services) + - [Factory Pattern](https://claude.ai/chat/04749c64-82af-4403-a784-664d5dc353ff#factory-pattern) +4. [Workflow Examples](https://claude.ai/chat/04749c64-82af-4403-a784-664d5dc353ff#workflow-examples) +5. [API Communication](https://claude.ai/chat/04749c64-82af-4403-a784-664d5dc353ff#api-communication) +6. [Error Handling](https://claude.ai/chat/04749c64-82af-4403-a784-664d5dc353ff#error-handling) +7. [Sensor Types and Capabilities](https://claude.ai/chat/04749c64-82af-4403-a784-664d5dc353ff#sensor-types-and-capabilities) + +## Overview + +UI.Library is a comprehensive C# library designed for managing industrial sensors and their data across various phases of operation. The library provides a structured way to communicate with a central datasheet API, allowing applications to retrieve, create, and update sensor information and calibration data. + +The library is particularly focused on handling industrial measurement sensors such as refractometers, density meters, and various control units, with support for different operational phases (primarily Phase 2 and Phase 3, which likely correspond to calibration and final configuration phases). + +## Architecture + +The library follows a layered architecture: + +1. **DTO Layer** - Contains Data Transfer Objects for transferring data between the client and server +2. **Service Layer** - Provides services for interacting with the API +3. **Factory Layer** - Instantiates appropriate service implementations based on sensor type and phase + +This architecture enables a clean separation of concerns and makes the library extensible for additional sensor types. + +## Core Components + +### Constants + +The library defines constants for API communication: + +```csharp +public class Constants +{ + public const string DATASHEET_API_ADDRESS = "http://10.0.0.122/"; +} +``` + +This address serves as the base URL for all API communications. + +### Enumerations + +The `TipiSensore` enumeration defines all supported sensor types: + +```csharp +public enum TipiSensore +{ + DR20 = 1, + MD01 = 2, + MD09 = 3, + MD12 = 4, + MD15 = 5, + UR20_TETRA = 6, + UR24 = 7, + // ... and many more +} +``` + +### Data Transfer Objects (DTOs) + +The DTO structure is hierarchical, with base classes providing common properties and derived classes adding sensor-specific properties: + +#### Base DTOs + +- `PhaseBaseRequest` - Base class for all request DTOs +- `PhaseBaseResponse` - Base class for all response DTOs +- `PhaseBaseInsertRequest` - For creating new phase data +- `PhaseBaseUpdateRequest` - For updating existing phase data + +#### Phase-Specific DTOs + +- Phase2 DTOs: Used for calibration processes +- Phase3 DTOs: Used for final configuration and operational parameters + +#### Sensor-Specific DTOs + +Each sensor type has its own specialized DTOs that inherit from the base DTOs and add properties specific to that sensor type. + +### Services + +The library provides two main service interfaces: + +#### ISensorService + +Responsible for general sensor operations: + +```csharp +public interface ISensorService +{ + Task GetSensorBySerialNumberAsync(string serialNumber, CancellationToken token = default); + Task GetIdBySerialNumberAsync(string serialNumber, CancellationToken token = default); + Task InsertSensorAsync(SensorInsertRequest sensor, CancellationToken token = default); +} +``` + +#### IPhaseService + +Handles phase-specific operations for a particular sensor type: + +```csharp +public interface IPhaseService + where TInsert : PhaseBaseInsertRequest + where TUpdate : PhaseBaseUpdateRequest + where TResponse : PhaseBaseResponse +{ + Task GetLastRepetitionBySensorIdAsync(int sensorId, CancellationToken token = default); + Task InsertAsync(TInsert entity, CancellationToken token = default); + Task UpdateAsync(TUpdate entity, CancellationToken token = default); +} +``` + +### Factory Pattern + +The `SensorServiceFactory` implements a factory pattern to create appropriate service instances: + +```csharp +public static class SensorServiceFactory +{ + public static IPhaseService GetPhase2Service() + where TInsert : PhaseBaseInsertRequest + where TUpdate : PhaseBaseUpdateRequest + where TResponse : PhaseBaseResponse + { + // Implementation determines which service to return based on generic types + } + + public static IPhaseService GetPhase3Service() + where TInsert : PhaseBaseInsertRequest + where TUpdate : PhaseBaseUpdateRequest + where TResponse : PhaseBaseResponse + { + // Implementation determines which service to return based on generic types + } +} +``` + +## Workflow Examples + +### Retrieving Sensor Information + +```csharp +// Create a sensor service instance +ISensorService sensorService = new SensorService(); + +// Get a sensor by its serial number +SensorResponse sensor = await sensorService.GetSensorBySerialNumberAsync("ABC123456"); + +// Check if the sensor exists +if (sensor != null) +{ + // Process sensor information + Console.WriteLine($"Sensor ID: {sensor.Id}"); + Console.WriteLine($"Sensor Type: {sensor.TipoId}"); +} +``` + +### Working with Phase Data + +```csharp +// Get the appropriate Phase 2 service for a UR20 sensor +var phase2Service = SensorServiceFactory.GetPhase2Service(); + +// Get the last Phase 2 data for a sensor +var phase2Data = await phase2Service.GetLastRepetitionBySensorIdAsync(1001); + +// Create new Phase 2 data +var newPhase2Data = new Phase2UR20InsertRequest +{ + StrumentoId = 1001, + Operatore = "John Doe", + // Set other properties as needed +}; + +// Insert the new Phase 2 data +bool success = await phase2Service.InsertAsync(newPhase2Data); +``` + +## API Communication + +The library uses HTTP for all API communications: + +- **GET** requests for retrieving information +- **POST** requests for creating new data +- **PUT** requests for updating existing data + +All communications use JSON for data serialization/deserialization. + +Example API endpoint construction: + +```csharp +string url = DatasheetApiEndpoints.GetDatasheetEndpointBySensorType(TipiSensore.UR20) + "/phases2/insert"; +// Results in: "api/ur20s/phases2/insert" +``` + +## Error Handling + +The library implements error handling through exceptions: + +- HTTP errors are propagated as `InvalidOperationException` with the response content as the message +- Input validation is performed before sending requests (e.g., checking for required properties) +- `404 Not Found` responses are handled specially and return `null` instead of throwing an exception + +## Sensor Types and Capabilities + +The library supports various sensor types, each with specific capabilities: + +### Refractometer Sensors (UR Series) + +- Measure refractive index and Brix (sugar content) +- Support temperature compensation +- Can include prism temperature control + +### Density Meters (DR Series) + +- Measure density of liquids +- Support for multiple CCD sensors + +### CO2 Sensors (UC Series) + +- Measure CO2 concentration +- Support pressure and temperature compensation + +Each sensor type has specific calibration parameters and operational settings that can be configured through the library. + +--- + +This documentation provides an overview of the UI.Library functionality. For specific details about individual classes and methods, refer to the inline XML documentation in the source code. \ No newline at end of file diff --git a/01-Documentation/Dispositivos - Manuales/Maselli/adjuntos/Pasted image 20250506165035.png b/01-Documentation/Dispositivos - Manuales/Maselli/adjuntos/Pasted image 20250506165035.png new file mode 100644 index 0000000..09f70c6 Binary files /dev/null and b/01-Documentation/Dispositivos - Manuales/Maselli/adjuntos/Pasted image 20250506165035.png differ diff --git a/01-Documentation/Dispositivos - Manuales/Maselli/adjuntos/Pasted image 20250506165059.png b/01-Documentation/Dispositivos - Manuales/Maselli/adjuntos/Pasted image 20250506165059.png new file mode 100644 index 0000000..6b546d1 Binary files /dev/null and b/01-Documentation/Dispositivos - Manuales/Maselli/adjuntos/Pasted image 20250506165059.png differ diff --git a/01-Documentation/Dispositivos - Manuales/adjuntos/Pasted image 20250504120154.png b/01-Documentation/Dispositivos - Manuales/adjuntos/Pasted image 20250504120154.png new file mode 100644 index 0000000..0df0201 Binary files /dev/null and b/01-Documentation/Dispositivos - Manuales/adjuntos/Pasted image 20250504120154.png differ diff --git a/01-Documentation/Dispositivos - Manuales/adjuntos/k400-quick-start-guide.pdf b/01-Documentation/Dispositivos - Manuales/adjuntos/k400-quick-start-guide.pdf new file mode 100644 index 0000000..7ec8075 Binary files /dev/null and b/01-Documentation/Dispositivos - Manuales/adjuntos/k400-quick-start-guide.pdf differ diff --git a/01-Documentation/Endress+Houser/8F3B25-AAILABBFAASAFMWAA1+NB - Adapter RJ45 M12 (service interface).md b/01-Documentation/Endress+Houser/8F3B25-AAILABBFAASAFMWAA1+NB - Adapter RJ45 M12 (service interface).md new file mode 100644 index 0000000..f36696f --- /dev/null +++ b/01-Documentation/Endress+Houser/8F3B25-AAILABBFAASAFMWAA1+NB - Adapter RJ45 M12 (service interface).md @@ -0,0 +1,6 @@ + +[My Endress+Hauser \| Endress+Hauser](https://www.us.endress.com/en/shop?t.tabId=product-configure&nebp.language=en&nebp.cartToken=ac2cba61-98e0-4394-9a3a-1bd75a61b3bd#Cart:) + + +![[Pasted image 20250508205329.png]] +![[Pasted image 20250508205345.png]] diff --git a/01-Documentation/Endress+Houser/adjuntos/Pasted image 20250508205329.png b/01-Documentation/Endress+Houser/adjuntos/Pasted image 20250508205329.png new file mode 100644 index 0000000..6218cc4 Binary files /dev/null and b/01-Documentation/Endress+Houser/adjuntos/Pasted image 20250508205329.png differ diff --git a/01-Documentation/Endress+Houser/adjuntos/Pasted image 20250508205345.png b/01-Documentation/Endress+Houser/adjuntos/Pasted image 20250508205345.png new file mode 100644 index 0000000..a6bcde8 Binary files /dev/null and b/01-Documentation/Endress+Houser/adjuntos/Pasted image 20250508205345.png differ diff --git a/01-Documentation/GIT/GIT commands HELP.md b/01-Documentation/GIT/GIT commands HELP.md new file mode 100644 index 0000000..a45b988 --- /dev/null +++ b/01-Documentation/GIT/GIT commands HELP.md @@ -0,0 +1,161 @@ + +# Essential Git Commands for Common Problems + +This guide covers basic Git commands to help you handle common challenges like merge conflicts, overwriting changes, and navigating commit history. + +## Basic Commands + +```bash +# Check status of your repository +git status + +# Check commit history +git log +git log --oneline --graph --decorate # More visual representation + +# View changes before committing +git diff +git diff --staged # View staged changes +``` + +## Handling Merge Conflicts + +When your branch falls behind and you encounter conflicts: + +```bash +# Update your local repository with remote changes +git fetch origin + +# Merge changes from origin/main to your current branch +git merge origin/main + +# If conflicts occur, Git will tell you which files are in conflict +# Edit the files manually to resolve conflicts, then: +git add +git commit -m "Resolve merge conflicts" + +# Alternative: abort the merge if needed +git merge --abort +``` + +## Force Your Version as the Latest + +When you want your version to override others: + +```bash +# Force push your changes (use with caution!) +git push --force origin + +# A safer alternative: force-with-lease checks if remote has new changes +git push --force-with-lease origin + +# Overwrite local changes with remote changes +git reset --hard origin/ + +# Overwrite a single file with the version from another branch +git checkout -- +``` + +## Going Back to a Specific Commit + +```bash +# Move back to a specific commit without changing files (detached HEAD) +git checkout + +# Reset your branch to a specific commit (will lose later commits) +git reset --hard + +# Create a new commit that undoes changes from a previous commit +git revert +``` + +## Branch Management + +```bash +# Create and switch to a new branch +git checkout -b + +# Switch to an existing branch +git checkout + +# List all branches +git branch # Local branches +git branch -r # Remote branches +git branch -a # All branches + +# Delete a branch +git branch -d # Safe delete (prevents deleting unmerged changes) +git branch -D # Force delete +``` + +## Stashing Changes + +Useful when you need to switch branches but aren't ready to commit: + +```bash +# Save changes to the stash +git stash save "Your stash message" + +# List stashes +git stash list + +# Apply the most recent stash without removing it +git stash apply + +# Apply a specific stash +git stash apply stash@{n} + +# Apply and remove the most recent stash +git stash pop + +# Remove a stash +git stash drop stash@{n} + +# Clear all stashes +git stash clear +``` + +## Fixing Mistakes + +```bash +# Amend the last commit message +git commit --amend -m "New commit message" + +# Add forgotten files to the last commit +git add +git commit --amend --no-edit + +# Undo staging of files +git reset + +# Discard changes in working directory +git checkout -- +git restore # In newer Git versions +``` + +## Advanced Techniques + +```bash +# Interactive rebase to edit, squash, or reorder commits +git rebase -i HEAD~n # Where n is the number of commits to go back + +# Cherry-pick specific commits from another branch +git cherry-pick + +# Cleanup unnecessary files +git clean -n # Dry run - shows what would be deleted +git clean -f # Actually delete the files + +# Temporarily save changes from a dirty working directory +git worktree add +``` + +## Safety Tips + +1. **Always create backups** before performing destructive operations +2. **Use `--dry-run`** when available to preview command effects +3. **Avoid force push** on shared branches (especially main/master) +4. Set up **aliases** for complex commands you use frequently +5. Configure Git to **require confirmation** for potentially harmful actions + +Remember that Git preserves history in the `.git` directory, so most "destructive" commands can be undone, but it's better to be cautious. \ No newline at end of file diff --git a/01-Documentation/Obsidean/Help.md b/01-Documentation/Obsidean/Help - Obsidean.md similarity index 100% rename from 01-Documentation/Obsidean/Help.md rename to 01-Documentation/Obsidean/Help - Obsidean.md diff --git a/01-Documentation/Siemens/Openness/Openness Python Library - siemens_tia_scripting - Parsing TIA Portal `_XRef.xml` Files for Call Tree Generation.md b/01-Documentation/Siemens/Openness/Openness Python Library - siemens_tia_scripting - Parsing TIA Portal `_XRef.xml` Files for Call Tree Generation.md new file mode 100644 index 0000000..90ab1bc --- /dev/null +++ b/01-Documentation/Siemens/Openness/Openness Python Library - siemens_tia_scripting - Parsing TIA Portal `_XRef.xml` Files for Call Tree Generation.md @@ -0,0 +1,193 @@ +## Technical Documentation: Parsing TIA Portal `_XRef.xml` Files for Call Tree Generation + +**Version:** 1.0 **Date:** 2025-05-05 + +### 1. Introduction + +This document describes the structure and interpretation of the XML files (`*_XRef.xml`) generated by the TIA Portal Openness `export_cross_references` function (available via libraries like `siemens_tia_scripting`). The primary goal is to enable software developers to programmatically parse these files to extract block call relationships and build a comprehensive call tree for a PLC program. + +The `_XRef.xml` file contains detailed information about all objects referenced _by_ a specific source object (e.g., an OB, FB, or FC). By processing these files for all relevant blocks, a complete picture of the program's call structure can be assembled. + +### 2. File Format Overview + +The `_XRef.xml` file is a standard XML document. Its high-level structure typically looks like this: + +XML + +```xml + + + + ... +
...
+ ... + ... + ... + ... + + ... +
...
+ ... + ... + ... ... + + ...
...
+ ... + ... Uses +
+
+
+
+
+
+
+``` + +### 3. Key XML Elements for Call Tree Construction + +To build a call tree, you need to identify the _caller_ and the _callee_ for each block call. The following XML elements are essential: + +1. **``:** Represents the block performing the calls (the **caller**). + + - **``:** The symbolic name of the caller block (e.g., `_CYCL_EXC`). + - **`
`:** The absolute address (e.g., `%OB1`). + - **``:** The type of the caller block (e.g., `LAD-Organization block`). +2. **``:** Represents an object being referenced by the `SourceObject`. This _could_ be the **callee**. + + - **``:** The symbolic name of the referenced object (e.g., `BlenderCtrl__Main`, `Co2_Counters_DB`). + - **`
`:** The absolute address (e.g., `%FC2000`, `%DB1021`). + - **``:** The type of the referenced object (e.g., `LAD-Function`, `Instance DB of Co2_Counters [FB1020]`). This is vital for identifying FCs and FBs (via their instance DBs). +3. **``:** Specifies exactly how and where the `ReferenceObject` is used within the `SourceObject`. + + - **``:** **This is the most critical element for call trees.** Look for the value `Call`. This indicates a direct Function Call (FC). An access type of `InstanceDB` indicates the usage of an instance DB, which implies a Function Block (FB) call is occurring. + - **``:** Provides human-readable context about where the reference occurs within the caller's code (e.g., `@_CYCL_EXC ▶ NW3 (Blender CTRL)`). Useful for debugging or visualization. + +### 4. Data Extraction Strategy for Call Tree + +A program parsing these files should follow these steps for each `_XRef.xml` file: + +1. **Parse XML:** Load the `_XRef.xml` file using a suitable XML parsing library (e.g., Python's `xml.etree.ElementTree` or `lxml`). +2. **Identify Caller:** Navigate to the `` element and extract its ``. This is the caller block for all references within this file. +3. **Iterate References:** Loop through each `` within the `` section of the ``. +4. **Iterate Locations:** For each ``, loop through its `` elements. +5. **Filter for Calls:** Check the text content of the `` tag within each ``. + - **If `Access` is `Call`:** + - The `` of the current `` is the **callee** (an FC). + - Record the relationship: `Caller Name` -> `Callee Name (FC)`. + - **If `Access` is `InstanceDB`:** + - This signifies an FB call is happening using this instance DB. + - The `` of the current `` is the Instance DB name (e.g., `Co2_Counters_DB`). + - To find the actual FB being called, examine the `` of this `ReferenceObject`. It usually contains the FB name/number (e.g., `Instance DB of Co2_Counters [FB1020]`). Extract the FB name (`Co2_Counters`) or number (`FB1020`). This is the **callee**. + - Record the relationship: `Caller Name` -> `Callee Name (FB)`. +6. **Store Relationships:** Store the identified caller-callee pairs in a suitable data structure. + +### 5. Building the Call Tree Data Structure + +After parsing one or more `_XRef.xml` files, the extracted relationships can be stored. Common approaches include: + +- **Dictionary (Adjacency List):** A dictionary where keys are caller names and values are lists of callee names. + + Python + + ```python + call_tree = { + '_CYCL_EXC': ['BlenderCtrl__Main', 'MessageScroll', 'ITC_MainRoutine', 'Co2_Counters', 'ProcedureProdBrixRecovery', 'Key Read & Write', 'GNS_PLCdia_MainRoutine'], + 'BlenderCtrl__Main': ['SomeOtherBlock', ...], + # ... other callers + } + ``` + +- **Graph Representation:** Using libraries like `networkx` in Python to create a directed graph where blocks are nodes and calls are edges. This allows for more complex analysis (e.g., finding paths, cycles). +- **Custom Objects:** Define `Block` and `Call` classes for a more object-oriented representation. + +### 6. Handling Multiple Files + +A single `_XRef.xml` file only details the references _from_ one `SourceObject`. To build a complete call tree for the entire program or PLC: + +1. **Export References:** Use the Openness script to call `export_cross_references` for _all_ relevant OBs, FBs, and FCs in the project. +2. **Process All Files:** Run the parsing logic described above on each generated `_XRef.xml` file. +3. **Aggregate Results:** Combine the caller-callee relationships extracted from all files into a single data structure (e.g., merge dictionaries or add nodes/edges to the graph). + +### 7. Example (Conceptual Python using `xml.etree.ElementTree`) + +Python + +```python +import xml.etree.ElementTree as ET +import re # For extracting FB name from TypeName + +def parse_xref_for_calls(xml_file_path): + """Parses a _XRef.xml file and extracts call relationships.""" + calls = {} # {caller: [callee1, callee2, ...]} + try: + tree = ET.parse(xml_file_path) + root = tree.getroot() + + # Namespace handling might be needed depending on the xmlns + ns = {'ns0': 'TestNamespace1'} # Adjust namespace if different in your file + + for source_object in root.findall('.//ns0:SourceObject', ns): + caller_name = source_object.findtext('ns0:Name', default='UnknownCaller', namespaces=ns) + if caller_name not in calls: + calls[caller_name] = [] + + for ref_object in source_object.findall('.//ns0:ReferenceObject', ns): + ref_name = ref_object.findtext('ns0:Name', default='UnknownRef', namespaces=ns) + ref_type_name = ref_object.findtext('ns0:TypeName', default='', namespaces=ns) + + for location in ref_object.findall('.//ns0:Location', ns): + access_type = location.findtext('ns0:Access', default='', namespaces=ns) + + if access_type == 'Call': + # Direct FC call + if ref_name not in calls[caller_name]: + calls[caller_name].append(ref_name) + + elif access_type == 'InstanceDB': + # FB call via Instance DB + # Extract FB name/number from TypeName (e.g., "Instance DB of BlockName [FB123]") + match = re.search(r'Instance DB of (.*?) \[([A-Za-z]+[0-9]+)\]', ref_type_name) + callee_fb_name = 'UnknownFB' + if match: + # Prefer symbolic name if available, else use number + callee_fb_name = match.group(1) if match.group(1) else match.group(2) + elif 'Instance DB of' in ref_type_name: # Fallback if regex fails + callee_fb_name = ref_type_name.split('Instance DB of ')[-1].strip() + + if callee_fb_name not in calls[caller_name]: + calls[caller_name].append(callee_fb_name) + + except ET.ParseError as e: + print(f"Error parsing XML file {xml_file_path}: {e}") + except FileNotFoundError: + print(f"Error: File not found {xml_file_path}") + + # Clean up entries with no calls + calls = {k: v for k, v in calls.items() if v} + return calls + +# --- Aggregation Example --- +# all_calls = {} +# for xref_file in list_of_all_xref_files: +# file_calls = parse_xref_for_calls(xref_file) +# for caller, callees in file_calls.items(): +# if caller not in all_calls: +# all_calls[caller] = [] +# for callee in callees: +# if callee not in all_calls[caller]: +# all_calls[caller].append(callee) +# print(all_calls) +``` + +_Note: Namespace handling (`ns=...`) in ElementTree might need adjustment based on the exact default namespace declared in your XML files._ + +### 8. Considerations + +- **Function Block Calls:** Remember that FB calls are identified indirectly via the `InstanceDB` access type and parsing the `` of the `ReferenceObject`. +- **System Blocks (SFC/SFB):** Calls to system functions/blocks should appear similarly to FC/FB calls and can be included in the tree. Their `` might indicate they are system blocks. +- **TIA Portal Versions:** While the basic structure is consistent, minor variations in tags or namespaces might exist between different TIA Portal versions. Always test with exports from your specific version. +- **Data References:** This documentation focuses on the call tree. The XML also contains `Read`, `Write`, `RW` access types, which can be parsed similarly to build a full cross-reference map for tags and data blocks. + +### 9. Conclusion + +The `_XRef.xml` files provide a detailed, machine-readable description of block references within a TIA Portal project. By parsing the XML structure, focusing on the ``, ``, and specifically the `` tag within ``, developers can reliably extract block call information and construct program call trees for analysis, documentation, or visualization purposes. Remember to aggregate data from multiple files for a complete program overview. \ No newline at end of file diff --git a/01-Documentation/Siemens/Openness/Openness Python Library - siemens_tia_scripting.md b/01-Documentation/Siemens/Openness/Openness Python Library - siemens_tia_scripting.md new file mode 100644 index 0000000..7c6ce58 --- /dev/null +++ b/01-Documentation/Siemens/Openness/Openness Python Library - siemens_tia_scripting.md @@ -0,0 +1,23 @@ +*** + +```python +# --- Configuration --- +TIA_PORTAL_VERSION = "18.0"  # Target TIA Portal version (e.g., "18.0") +CROSS_REF_SUBFOLDER = "cross_ref"  # Subfolder name within working_directory +# Filter for cross-references. Based on documentation: +# 1: 'AllObjects', 2: 'ObjectsWithReferences', 3: 'ObjectsWithoutReferences', 4: 'UnusedObjects' +# Using 1 to export all. 0 might also work as a default in some API versions. +CROSS_REF_FILTER = 1 + +# --- TIA Scripting Import Handling --- +# (Same import handling as x1.py) +if os.getenv("TIA_SCRIPTING"): +    sys.path.append(os.getenv("TIA_SCRIPTING")) +else: +    pass + +try: +    import siemens_tia_scripting as ts +``` + + diff --git a/01-Documentation/Siemens/Peripherics - Schede - IM/SIMATIC ET 200S 2AI I 4WIRE ST.md b/01-Documentation/Siemens/Peripherics - Schede - IM/SIMATIC ET 200S 2AI I 4WIRE ST.md new file mode 100644 index 0000000..40222b4 --- /dev/null +++ b/01-Documentation/Siemens/Peripherics - Schede - IM/SIMATIC ET 200S 2AI I 4WIRE ST.md @@ -0,0 +1,427 @@ + +#analogIA #sae452 #mixer +# Modulo Elettronico Analogico SIMATIC ET 200S 2AI I 4WIRE ST + +Preso dalle schede AI su il SAE452: ==6ES7 134-4GB11-0AB0== +Manuale: [et200s\_2ai\_i\_4wire\_st\_manual\_en-US.pdf](https://cache.industry.siemens.com/dl/files/991/25545991/att_70599/v1/et200s_2ai_i_4wire_st_manual_en-US.pdf) +## Guida alla Configurazione e Programmazione per Misure 4-20 mA + +## 1. Range di Misurazione per Corrente: 4-20 mA + +La seguente tabella contiene i valori analogici digitalizzati per il range di misurazione del modulo di ingresso analogico. Poiché la rappresentazione binaria dei valori analogici è sempre la stessa, questa tabella confronta i range di misurazione con le unità. + +### Tabella 4-3: Formato SIMATIC S7: Range di misurazione 4-20 mA + +|Range di misurazione 4-20 mA|Unità| |Range| +|---|---|---|---| +||Decimale|Esadecimale|| +|> 22,8142|32767|7FFFH|Overflow| +|22,8142 : 20,0005|32511 : 27649|7EFFH : 6C01H|Range di sovraccarico| +|20,0000 16,0000 : 4,0000|27648 20736 : 0|6C00H 5100H : 0H|Range nominale| +|3,9995 : 1,1852|-1 : -4864|FFFFH : ED00H|Range di sottoccarico| +|< 1,1852|-32768|8000H|Underflow| + +| Assegnazione parametri | Valori misurati | | Descrizione | +| -------------------------------------------------------------------------------------------- | --------------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------ | +| Decimale | Esadecimale | | | +| • Diagnostica "Rottura cavo" abilitata | 32767 | 7FFFH | • Messaggio diagnostico "Circuito aperto" | +| • Diagnostica "Rottura cavo" disabilitata
• Diagnostica "Overflow/underflow" abilitata | -32767 | 8000H | • Valore misurato dopo aver lasciato il range di sottoccarico
• Messaggio diagnostico "Valore limite inferiore superato verso il basso" | +| • Diagnostica "Rottura cavo" disabilitata
• Diagnostica "Overflow/underflow" disabilitata | -32767 | 8000H | • Valore misurato dopo aver lasciato il range di sottoccarico | + +## 2. Conversione da Brix a Corrente 4-20 mA + +Nel tuo caso specifico, desideri convertire valori Brix dove: + +- 60 Brix corrisponde a 20 mA (valore massimo) +- 0 Brix corrisponde a 4 mA (valore minimo) + + +``` +Brix = ((Corrente (mA) - 4) / 16) * 60 +``` + +## 3. Parametri di Diagnostica + +### Parametri per il modulo di ingresso analogico 2 AI I 4WIRE ST + +| Parametro | Valori | +| --------------------------------------------------------------------- | ------------- | +| Diagnostica di gruppo (errore assegnazione parametri, errore interno) | Abilitato | +| Diagnostica: Overflow/underflow | Abilitato | +| Diagnostica: Rottura cavo* | Abilitato | +| Smoothing (Smorzamento) | Nessuno | +| Tipo/range di misurazione | WIRE: 4-20 mA | +![[Pasted image 20250507112955.png]] + +### Spiegazione dei Parametri di Diagnostica: + +1. **Diagnostica di gruppo**: Quando abilitata, il modulo segnala errori generali come errori di parametrizzazione o errori interni del modulo. Attiva il LED SF (errore) e genera un messaggio diagnostico. + +2. **Diagnostica Overflow/underflow**: Quando abilitata, il modulo genera messaggi diagnostici quando il valore di ingresso supera (overflow) o scende sotto (underflow) i limiti del range di misurazione. Questi sono: + + - Overflow: > 22,8142 mA + - Underflow: < 1,1852 mA +3. **Diagnostica Rottura cavo**: Quando abilitata, il modulo rileva una interruzione del circuito se la corrente scende sotto 1,185 mA. Questa opzione è disponibile solo nel range di misurazione 4-20 mA. + + +## 4. Comportamento del Modulo in Caso di Errore + +### Valori misurati in caso di rottura del cavo in relazione alla diagnostica abilitata: + +_Limiti del range di misurazione per il rilevamento di rottura del cavo e underflow: A 1,185 mA_ + +## 5. Programmazione SCL per Gestire i Diversi Stati + +Ecco un esempio di come gestire i diversi stati in programmazione SCL per un PLC S7-300: + +```pascal +// FB100 - Gestione Misurazione Brix con diagnostica +// Configurazione hardware richiesta: +// - Group diagnostics: Abilitato +// - Diagnostic overflow/underflow: Abilitato +// - Wire break: Abilitato + +FUNCTION_BLOCK "FB_MisurazioneBrix" +TITLE = 'Gestione sensore Brix con diagnostica' +AUTHOR : Sysadmin +FAMILY : Process + +VAR_INPUT + i_IW_Analog : WORD; // Indirizzo dell'ingresso analogico (PEW) + i_EnableDiagnostic : BOOL := TRUE; // Abilita la lettura dei messaggi diagnostici + i_Reset : BOOL; // Reset allarmi +END_VAR + +VAR_OUTPUT + o_ValoreBrix : REAL; // Valore Brix convertito (0-60) + o_CorrienteMa : REAL; // Valore corrente in mA (per diagnostica) + o_StatoSensore : INT; // 0=OK, 1=Overflow, 2=Underflow, 3=Wire Break, 4=Errore ADAM (2mA) + o_QualitaBuona : BOOL; // TRUE se la misura è affidabile + o_DiagInfo : STRING; // Informazioni diagnostiche in formato testo +END_VAR + +VAR + // Definizione delle costanti + OVERFLOW_VALUE : INT := 32767; // 7FFFH - Valore di overflow + UNDERFLOW_VALUE : INT := -32768; // 8000H - Valore di underflow + WIRE_BREAK_VALUE : INT := 32767; // 7FFFH - Con diagnostica wire break abilitata + MAX_NORMAL : INT := 27648; // 6C00H - 20mA (valore massimo nel range nominale) + MIN_NORMAL : INT := 0; // 0000H - 4mA (valore minimo nel range nominale) + + // Variabili interne + ValoreAnalogicoInt : INT; // Valore analogico convertito in INT + ErroreRilevato : BOOL; // Flag per errore rilevato + TimerRitardo : TON; // Timer per filtrare falsi allarmi + RitardoErrore : TIME := T#2S; // Ritardo di conferma errore (2 secondi) + MemoriaStato : INT; // Memoria dell'ultimo stato valido + + // Variabili per la diagnostica di sistema + DiagRequest : BOOL; // Richiesta di lettura diagnostica + DiagBusy : BOOL; // Blocco diagnostica occupato + DiagDone : BOOL; // Lettura diagnostica completata + DiagError : BOOL; // Errore durante la lettura diagnostica + DiagStatus : WORD; // Stato della diagnostica + DiagBuffer : ARRAY[0..31] OF BYTE; // Buffer per i dati diagnostici + + // Variabili per rilevazione errore ADAM (circa 2mA) + ADAM_ERROR_LOW : INT := -3600; // Limite inferiore per rilevare errore ADAM (~1.8mA) + ADAM_ERROR_HIGH : INT := -3200; // Limite superiore per rilevare errore ADAM (~2.2mA) + + // Dati temporanei + TempBrix : REAL; // Valore Brix temporaneo per calcoli + FirstScan : BOOL := TRUE; // Flag per primo ciclo +END_VAR + +VAR_TEMP + TempValue : INT; // Valore temporaneo per calcoli + TempReal : REAL; // Valore temporaneo per calcoli in virgola mobile + StatusTemp : INT; // Stato temporaneo per logica degli stati +END_VAR + +BEGIN + // Inizializzazione delle variabili al primo ciclo + IF FirstScan THEN + FirstScan := FALSE; + o_StatoSensore := 0; + o_DiagInfo := 'Inizializzazione sistema'; + MemoriaStato := 0; + END_IF; + + // Converti il valore WORD in INT per elaborazione + ValoreAnalogicoInt := WORD_TO_INT(i_IW_Analog); + + // Logica di stato iniziale - determina lo stato del sensore + StatusTemp := 0; // Stato predefinito: OK + ErroreRilevato := FALSE; + + // Verifica delle diverse condizioni di errore + CASE ValoreAnalogicoInt OF + OVERFLOW_VALUE: // 32767 (7FFFH) + // Può indicare overflow o wire break se la diagnostica di rottura cavo è abilitata + IF i_EnableDiagnostic THEN + // Dobbiamo leggere le informazioni diagnostiche per distinguere tra overflow e wire break + DiagRequest := TRUE; + StatusTemp := 1; // Assumiamo inizialmente Overflow + o_DiagInfo := 'Overflow rilevato o Wire Break?'; + ELSE + StatusTemp := 1; // Overflow (senza diagnostica non possiamo distinguere) + o_DiagInfo := 'Overflow rilevato'; + END_IF; + ErroreRilevato := TRUE; + + UNDERFLOW_VALUE: // -32768 (8000H) + StatusTemp := 2; // Underflow + o_DiagInfo := 'Underflow rilevato - Valore troppo basso'; + ErroreRilevato := TRUE; + ELSE + // Verifica se il valore è nell'intervallo che indica errore ADAM (circa 2mA) + IF ValoreAnalogicoInt >= ADAM_ERROR_LOW AND ValoreAnalogicoInt <= ADAM_ERROR_HIGH THEN + StatusTemp := 4; // Errore ADAM (2mA) + o_DiagInfo := 'Errore rilevato dal sensore ADAM (2mA) - Problema misuratore Brix'; + ErroreRilevato := TRUE; + ELSIF ValoreAnalogicoInt < MIN_NORMAL AND ValoreAnalogicoInt > UNDERFLOW_VALUE THEN + // Siamo in underrange ma non ancora in underflow completo + o_DiagInfo := 'Valore in underrange (< 4mA)'; + // Non consideriamo questo necessariamente un errore, solo una nota + ELSIF ValoreAnalogicoInt > MAX_NORMAL AND ValoreAnalogicoInt < OVERFLOW_VALUE THEN + // Siamo in overrange ma non ancora in overflow completo + o_DiagInfo := 'Valore in overrange (> 20mA)'; + // Non consideriamo questo necessariamente un errore, solo una nota + ELSE + // Valore nell'intervallo normale + StatusTemp := 0; // OK + o_DiagInfo := 'Misura OK'; + END_IF; + END_CASE; + + // Filtro temporale per gli errori (evita falsi allarmi) + IF ErroreRilevato THEN + // Avvia il timer se è stato rilevato un errore + TimerRitardo(IN := TRUE, PT := RitardoErrore); + + // Imposta lo stato di errore solo se il timer è scaduto + IF TimerRitardo.Q THEN + o_StatoSensore := StatusTemp; + END_IF; + ELSE + // Resetta il timer se non ci sono errori + TimerRitardo(IN := FALSE); + o_StatoSensore := StatusTemp; + END_IF; + + // Reset degli allarmi se richiesto + IF i_Reset THEN + o_StatoSensore := 0; + o_DiagInfo := 'Stato resettato dall operatore'; + TimerRitardo(IN := FALSE); + END_IF; + + // Calcolo del valore in mA indipendentemente dallo stato + // Formula: mA = 4 + (ValoreAnalogicoInt / 27648) * 16 + IF ValoreAnalogicoInt <= MAX_NORMAL AND ValoreAnalogicoInt >= UNDERFLOW_VALUE THEN + // Conversione normale per valori validi o in underrange + TempReal := INT_TO_REAL(ValoreAnalogicoInt); + o_CorrienteMa := 4.0 + (TempReal / INT_TO_REAL(MAX_NORMAL)) * 16.0; + + // Un valore sotto lo zero corrisponde a meno di 4mA + IF o_CorrienteMa < 0.0 THEN + o_CorrienteMa := 0.0; // Limitato a 0mA minimo (per evitare valori negativi) + END_IF; + ELSIF ValoreAnalogicoInt = OVERFLOW_VALUE THEN + o_CorrienteMa := 22.81; // Valore di overflow + ELSIF ValoreAnalogicoInt = UNDERFLOW_VALUE THEN + o_CorrienteMa := 0.0; // Valore di underflow + END_IF; + + // Conversione da corrente a Brix + // Formula: Brix = ((mA - 4) / 16) * 60 + IF o_StatoSensore = 0 THEN + // Calcolo normale solo se non ci sono errori + IF o_CorrienteMa >= 4.0 THEN + TempBrix := ((o_CorrienteMa - 4.0) / 16.0) * 60.0; + + // Limitazione del valore Brix tra 0 e 60 + IF TempBrix < 0.0 THEN + o_ValoreBrix := 0.0; + ELSIF TempBrix > 60.0 THEN + o_ValoreBrix := 60.0; + ELSE + o_ValoreBrix := TempBrix; + END_IF; + ELSE + // Sotto 4mA, impostiamo Brix a 0 + o_ValoreBrix := 0.0; + END_IF; + ELSE + // In caso di errore, manteniamo l'ultimo valore valido o impostiamo un valore specifico + CASE o_StatoSensore OF + 1: // Overflow + o_ValoreBrix := 60.0; // Impostiamo al valore massimo + 2: // Underflow + o_ValoreBrix := 0.0; // Impostiamo al valore minimo + 3: // Wire Break + o_ValoreBrix := -1.0; // Valore speciale per Wire Break + 4: // Errore ADAM + o_ValoreBrix := -2.0; // Valore speciale per Errore ADAM + END_CASE; + END_IF; + + // Imposta la qualità della misura + o_QualitaBuona := (o_StatoSensore = 0); + + // Gestione lettura diagnostica di sistema (se abilitata) + IF i_EnableDiagnostic AND DiagRequest THEN + // Strutture dati necessarie per SFC51 + VAR_TEMP + DiagHeader : STRUCT // Struttura dell'header SZL + LENTHDR : WORD; // Lunghezza dell'header SZL in byte + N_DR : WORD; // Numero di record dati + END_STRUCT; + DiagResult : INT; // Risultato della chiamata SFC51 + DiagLen : WORD; // Lunghezza dei dati ricevuti + DiagCount : INT; // Contatore per l'analisi dei dati + DiagFound : BOOL; // Flag per errore trovato + DiagSlot : BYTE; // Slot del modulo diagnosticato + DiagType : BYTE; // Tipo di errore diagnostico + DiagAddr : WORD; // Indirizzo del modulo + TempAddr : WORD; // Indirizzo temporaneo per calcoli + DiagModuleStartAddr : WORD; // Indirizzo di inizio del modulo + END_VAR + + // Leggi lo stato diagnostico del sistema utilizzando SFC51 + // Lettura delle informazioni diagnostiche del modulo + DiagResult := SFC51( + REQ := TRUE, // Richiesta di lettura + SZL_ID := W#16#00B1, // ID per informazioni diagnostiche (diagnostica slave DP) + INDEX := W#16#0000, // Tutti gli slave + RET_VAL := DiagStatus, // Codice di ritorno + BUSY := DiagBusy, // Operazione in corso + SZL_HEADER := DiagHeader, // Header SZL + DR := DiagBuffer // Buffer per i dati diagnostici + ); + + // Se l'operazione è completata, analizziamo i risultati + IF NOT DiagBusy THEN + DiagRequest := FALSE; // Reset della richiesta + + IF DiagStatus = W#16#0000 THEN + DiagDone := TRUE; // Lettura completata con successo + DiagFound := FALSE; // Reset flag errore trovato + + // Calcola l'indirizzo del modulo analogico + // Nota: questo è un esempio, devi adattarlo al tuo hardware + // Supponiamo che l'indirizzo dell'ingresso analogico sia PIW256 + DiagModuleStartAddr := W#16#0100; // 256 in esadecimale + + // Analizza i dati diagnostici ricevuti per trovare errori specifici + FOR DiagCount := 0 TO INT_TO_INT(DiagHeader.N_DR)-1 DO + // Ogni record di diagnostica ha un formato specifico + // Estrai lo slot e l'indirizzo del modulo per verificare che sia quello giusto + DiagSlot := DiagBuffer[DiagCount*4]; // Slot in byte 0 del record + TempAddr := WORD_TO_WORD(SHL(IN:=BYTE_TO_WORD(DiagBuffer[DiagCount*4+2]), N:=8)); + TempAddr := TempAddr OR BYTE_TO_WORD(DiagBuffer[DiagCount*4+3]); + DiagAddr := TempAddr; // Indirizzo del modulo + + // Verifica se questo è il nostro modulo analogico + IF DiagAddr = DiagModuleStartAddr THEN + // Leggi il tipo di errore (byte 1 del record) + DiagType := DiagBuffer[DiagCount*4+1]; + + // Analizza il tipo di errore + CASE DiagType OF + B#16#06: // 6D = 00110: Wire break + o_StatoSensore := 3; // Wire break + o_DiagInfo := 'Wire Break rilevato tramite diagnostica'; + DiagFound := TRUE; + + B#16#07: // 7D = 00111: Upper limit exceeded + o_StatoSensore := 1; // Overflow + o_DiagInfo := 'Overflow rilevato tramite diagnostica'; + DiagFound := TRUE; + + B#16#08: // 8D = 01000: Lower limit undershot + o_StatoSensore := 2; // Underflow + o_DiagInfo := 'Underflow rilevato tramite diagnostica'; + DiagFound := TRUE; + + B#16#09: // 9D = 01001: Error (modulo interno) + o_StatoSensore := 5; // Errore interno modulo + o_DiagInfo := 'Errore interno del modulo rilevato'; + DiagFound := TRUE; + + B#16#10: // 16D = 10000: Errore parametrizzazione + o_StatoSensore := 6; // Errore configurazione + o_DiagInfo := 'Errore configurazione modulo'; + DiagFound := TRUE; + END_CASE; + + // Se abbiamo trovato un errore, usciamo dal ciclo + IF DiagFound THEN + EXIT; + END_IF; + END_IF; + END_FOR; + + // Se non troviamo errori diagnostici ma il valore è 32767, è probabilmente un overflow + IF NOT DiagFound AND ValoreAnalogicoInt = OVERFLOW_VALUE THEN + o_StatoSensore := 1; // Overflow + o_DiagInfo := 'Overflow rilevato (nessun messaggio diagnostico specifico)'; + END_IF; + + ELSE + // Errore nella lettura diagnostica + DiagError := TRUE; + o_DiagInfo := CONCAT(IN1:='Errore SFC51: ', IN2:=WORD_TO_STRING(DiagStatus)); + END_IF; + END_IF; + END_IF; + END_IF; + +END_FUNCTION_BLOCK + + + + // Chiamata al blocco funzionale di misurazione Brix + // Sostituire "PIW256" con l'indirizzo effettivo dell'ingresso analogico + CALL "FB_MisurazioneBrix", "DB_MisurazioneBrix" ( + i_IW_Analog := PIW256, // Indirizzo ingresso analogico (da adattare) + i_EnableDiagnostic := TRUE, + i_Reset := "Reset_Allarmi" // Connetti a un ingresso digitale o a una variabile HMI + ); + + // Qui puoi aggiungere ulteriore logica per gestire i valori e gli stati + // Ad esempio, trasferire i valori a DB per visualizzazione HMI, attivare allarmi, ecc. + + +``` + +## 6. Caso Specifico: ADAM/Maselli che Genera 0-20mA + +Per gestire questa situazione: + +1. **Configurazione del modulo**: Configura il modulo analogico SIMATIC per il range 4-20mA + +2. **Gestione dei valori sotto 4mA**: Quando il valore scende sotto 4mA (che in formato S7 sarebbe sotto 0 in decimale), il modulo lo interpreta come underrange. + +3. **Rilevamento dell'errore a 2mA**: Il valore di 2mA corrisponde approssimativamente a -3456 in formato decimale S7 per il range 4-20mA. + + + +### Senza utilizare la SFC51: +*** +```pascal +// Determinazione dello stato del sensore basata solo sul valore PEW +IF ValoreAnalogicoInt = OVERFLOW_VALUE THEN // 32767 + o_StatoSensore := 7; // Codice generico per "Overflow o Wire Break" + o_DiagInfo := 'Rilevato Overflow o Wire Break'; +ELSIF ValoreAnalogicoInt = UNDERFLOW_VALUE THEN // -32768 + o_StatoSensore := 2; // Underflow + o_DiagInfo := 'Underflow rilevato'; +ELSIF ValoreAnalogicoInt >= ADAM_ERROR_LOW AND ValoreAnalogicoInt <= ADAM_ERROR_HIGH THEN + o_StatoSensore := 4; // Errore ADAM (2mA) + o_DiagInfo := 'Errore ADAM rilevato (2mA)'; +ELSE + o_StatoSensore := 0; // OK + o_DiagInfo := 'Misura OK'; +END_IF; +``` \ No newline at end of file diff --git a/01-Documentation/Siemens/Peripherics - Schede - IM/adjuntos/Pasted image 20250507112955.png b/01-Documentation/Siemens/Peripherics - Schede - IM/adjuntos/Pasted image 20250507112955.png new file mode 100644 index 0000000..e0c38de Binary files /dev/null and b/01-Documentation/Siemens/Peripherics - Schede - IM/adjuntos/Pasted image 20250507112955.png differ diff --git a/01-Documentation/Windows/Notes for Windows - Chris Titus Tool - Online - Offline.md b/01-Documentation/Windows/Notes for Windows - Chris Titus Tool - Online - Offline.md index c2a07e5..3651882 100644 --- a/01-Documentation/Windows/Notes for Windows - Chris Titus Tool - Online - Offline.md +++ b/01-Documentation/Windows/Notes for Windows - Chris Titus Tool - Online - Offline.md @@ -36,3 +36,9 @@ Then: .\winutil.ps1 ``` + + +### Last use of Tweaks: +*** + +![[Pasted image 20250505132440.png]] \ No newline at end of file diff --git a/01-Documentation/Windows/SysInternals Tools.md b/01-Documentation/Windows/SysInternals Tools.md new file mode 100644 index 0000000..581ae6f --- /dev/null +++ b/01-Documentation/Windows/SysInternals Tools.md @@ -0,0 +1,501 @@ + +[live.sysinternals.com - /](https://live.sysinternals.com/) + +[GitHub - Sysinternals/sysinternals: Content for sysinternals.com](https://github.com/Sysinternals/sysinternals) + + +Process Monitor: [Procmon64.exe](file:///D:%5CInstalad%5CSysInternals%20Suite%20Microsoft%5CProcmon64.exe) +- Figuring out where on disk/registry GUI based settings are saved +* Something fails to run/install that really should work with vague message +Process Explorer: [procexp64.exe](file:///D:%5CInstalad%5CSysInternals%20Suite%20Microsoft%5Cprocexp64.exe) +- Malware hunting or strange processes exploration +AutoRuns:[Autoruns64.exe](file:///D:%5CInstalad%5CSysInternals%20Suite%20Microsoft%5CAutoruns64.exe) +- Malware hunting +ProcDump: [procdump64.exe](file:///D:%5CInstalad%5CSysInternals%20Suite%20Microsoft%5Cprocdump64.exe) +- When all else fails, do a memory dump and load it in windbg. +ZoomIt:[ZoomIt64.exe](file:///D:%5CInstalad%5CSysInternals%20Suite%20Microsoft%5CZoomIt64.exe) +- For zooming on on my screen when explaining stuff (not just presentations) +AccessEnum:[AccessEnum.exe](file:///D:%5CInstalad%5CSysInternals%20Suite%20Microsoft%5CAccessEnum.exe) +- Viewing, troubleshooting or reporting on shared folder permissions. +PSPing: +- Could test open TCP ports, replaced by Test-NetConnection +Handle: +- For showing the process that has a lock or handle on a file + + +AccessChk - AccessChk is a command-line tool for viewing the effective permissions on files, registry keys, services, processes, kernel objects, and more. + +AccessEnum - This simple yet powerful security tool shows you who has what access to directories, files and Registry keys on your systems. Use it to find holes in your permissions. + +AdExplorer - Active Directory Explorer is an advanced Active Directory (AD) viewer and editor. + +AdInsight - An LDAP (Light-weight Directory Access Protocol) real-time monitoring tool aimed at troubleshooting Active Directory client applications. + +AdRestore - Undelete Server 2003 Active Directory objects. + +Autologon - Bypass password screen during logon. + +Autoruns - See what programs are configured to startup automatically when your system boots and you login. Autoruns also shows you the full list of Registry and file locations where applications can configure auto-start settings. + +BgInfo - This fully-configurable program automatically generates desktop backgrounds that include important information about the system including IP addresses, computer name, network adapters, and more. + +CacheSet - CacheSet is a program that allows you to control the Cache Manager's working set size using functions provided by NT. It's compatible with all versions of NT. + +ClockRes - View the resolution of the system clock, which is also the maximum timer resolution. + +Contig - Wish you could quickly defragment your frequently used files? Use Contig to optimize individual files, or to create new files that are contiguous. + +Coreinfo - Coreinfo is a new command-line utility that shows you the mapping between logical processors and the physical processor, NUMA node, and socket on which they reside, as well as the cache’s assigned to each logical processor. + +Ctrl2cap - This is a kernel-mode driver that demonstrates keyboard input filtering just above the keyboard class driver in order to turn caps-locks into control keys. Filtering at this level allows conversion and hiding of keys before NT even "sees" them. Ctrl2cap also shows how to use NtDisplayString() to print messages to the initialization blue-screen. + +DebugView - Another first from Sysinternals: This program intercepts calls made to DbgPrint by device drivers and OutputDebugString made by Win32 programs. It allows for viewing and recording of debug session output on your local machine or across the Internet without an active debugger. + +Desktops - This new utility enables you to create up to four virtual desktops and to use a tray interface or hotkeys to preview what’s on each desktop and easily switch between them. + +Disk2vhd - Disk2vhd simplifies the migration of physical systems into virtual machines (p2v). + +DiskExt - Display volume disk-mappings. + +Diskmon - This utility captures all hard disk activity or acts like a software disk activity light in your system tray. + +DiskView - Graphical disk sector utility. + +Disk Usage (DU) - View disk usage by directory. + +EFSDump - View information for encrypted files. + +Handle - This handy command-line utility will show you what files are open by which processes, and much more. + +Hex2dec - Convert hex numbers to decimal and vice versa. + +Junction - Create Win2K NTFS symbolic links. + +LDMDump - Dump the contents of the Logical Disk Manager's on-disk database, which describes the partitioning of Windows 2000 Dynamic disks. + +ListDLLs - List all the DLLs that are currently loaded, including where they are loaded and their version numbers. Version 2.0 prints the full path names of loaded modules. + +LiveKd - Use Microsoft kernel debuggers to examine a live system. + +LoadOrder - See the order in which devices are loaded on your WinNT/2K system. + +LogonSessions - List the active logon sessions on a system. + +MoveFile - Allows you to schedule move and delete commands for the next reboot. + +NTFSInfo - Use NTFSInfo to see detailed information about NTFS volumes, including the size and location of the Master File Table (MFT) and MFT-zone, as well as the sizes of the NTFS meta-data files. + +PageDefrag - Defragment your paging files and Registry hives. + +PendMoves - Enumerate the list of file rename and delete commands that will be executed the next boot. + +PipeList - Displays the named pipes on your system, including the number of maximum instances and active instances for each pipe. + +PortMon- Monitor serial and parallel port activity with this advanced monitoring tool. It knows about all standard serial and parallel IOCTLs and even shows you a portion of the data being sent and received. Version 3.x has powerful new UI enhancements and advanced filtering capabilities. + +ProcDump - This new command-line utility is aimed at capturing process dumps of otherwise difficult to isolate and reproduce CPU spikes. It also serves as a general process dump creation utility and can also monitor and generate process dumps when a process has a hung window or unhandled exception. + +Process Explorer - Find out what files, registry keys and other objects processes have open, which DLLs they have loaded, and more. This uniquely powerful utility will even show you who owns each process. + +Process Monitor - Monitor file system, Registry, process, thread and DLL activity in real-time. + +ProcFeatures - This applet reports processor and Windows support for Physical Address Extensions and No Execute buffer overflow protection. + +PsExec - Execute processes on remote systems. + +PsFile - See what files are opened remotely. + +PsGetSid - Displays the SID of a computer or a user. + +PsInfo - Obtain information about a system. + +PsKill - Terminate local or remote processes. + +PsList - Show information about processes and threads. + +PsLoggedOn - Show users logged on to a system. + +PsLogList - Dump event log records. + +PsPasswd - Changes account passwords. + +PsService - View and control services. + +PsShutdown - Shuts down and optionally reboots a computer. + +PsSuspend - Suspend and resume processes. + +RAMMap - An advanced physical memory usage analysis utility that presents usage information in different ways on its several different tabs. + +RegDelNull - Scan for and delete Registry keys that contain embedded null-characters that are otherwise undeleteable by standard Registry-editing tools. + +RegJump - Jump to the registry path you specify in Regedit. + +RootkitRevealer - Scan your system for rootkit-based malware. + +SDelete - Securely overwrite your sensitive files and cleanse your free space of previously deleted files using this DoD-compliant secure delete program. + +ShareEnum - Scan file shares on your network and view their security settings to close security holes. + +ShellRunas - Launch programs as a different user via a convenient shell context-menu entry. + +Sigcheck - Dump file version information and verify that images on your system are digitally signed. + +Streams - Reveal NTFS alternate streams. + +Strings - Search for ANSI and UNICODE strings in binaryimages. + +Sync - Flush cached data to disk. + +TCPView - Active socket command-line viewer. + +VMMap - VMMap is a process virtual and physical memory analysis utility. + +VolumeId - Set Volume ID of FAT or NTFS drives. + +Whois - See who owns an Internet address. + +WinObj - The ultimate Object Manager namespace viewer is here. + +ZoomIt - Presentation utility for zooming and drawing on the screen. + + + +# Sysinternals Tools Reference Guide + +Microsoft Sysinternals provides a suite of advanced system utilities and technical information. This reference guide covers key tools, their primary functions, and common use cases. + +## Process Analysis Tools + +### Process Monitor + +**Purpose**: Real-time file system, Registry, and process/thread activity monitoring. + +**Key Features**: + +- Captures detailed events in real-time +- Advanced filtering system +- Boot time logging +- Process tree visualization + +**Common Use Cases**: + +- Troubleshooting application installation failures +- Finding where configuration settings are stored on disk/registry +- Identifying file access failures +- Detecting unauthorized system modifications +- Debugging application performance issues + +**Basic Usage**: + +- Use filters (Ctrl+L) to reduce noise +- Set inclusion filters before capturing +- Use the process tree view to understand relationships +- Save logs for offline analysis + +### Process Explorer + +**Purpose**: Enhanced task manager replacement that shows detailed information about running processes. + +**Key Features**: + +- Process hierarchy tree view +- Detailed properties for each process +- DLL and handle usage tracking +- GPU, disk and network activity monitoring +- Verification against VirusTotal + +**Common Use Cases**: + +- Malware hunting and identification +- Strange process exploration and investigation +- Finding memory/handle leaks +- Troubleshooting high resource usage +- Determining process dependencies + +**Basic Usage**: + +- Hover over processes for tooltip information +- Right-click for detailed properties +- Use Find (Ctrl+F) to locate specific handles or DLLs +- Set different highlighting colors for easier visual identification + +### ProcDump + +**Purpose**: Command-line utility for creating process memory dumps based on various criteria. + +**Key Features**: + +- CPU threshold-based dumps +- Exception-based triggering +- Memory commit threshold triggers +- Scheduled dumping options +- Multiple dump modes (mini, full, etc.) + +**Common Use Cases**: + +- Capturing crash dumps for debugging +- Creating memory dumps for analysis in WinDbg +- Performance troubleshooting +- Analyzing memory leaks +- Debugging hanging applications + +**Basic Usage**: + +``` +procdump -ma +procdump -c 80 -s 5 # CPU spike trigger +``` + +## System Configuration Tools + +### AutoRuns + +**Purpose**: Shows what programs are configured to run during system bootup or login. + +**Key Features**: + +- Comprehensive startup locations coverage +- Integration with VirusTotal +- Hide signed Microsoft entries option +- Compare with previous scan results +- Command-line version available (autorunsc) + +**Common Use Cases**: + +- Malware hunting and persistence detection +- System performance optimization +- Troubleshooting slow startup +- Security auditing +- Removing unwanted startup programs + +**Basic Usage**: + +- Use "Verify Code Signatures" option to identify unsigned code +- Enable VirusTotal submission for suspicious files +- Filter by entry type using the tabs (Everything, Logon, etc.) +- Use "Compare" feature to detect recent changes + +### AccessEnum + +**Purpose**: Security utility that shows who has access to directories, files, and Registry keys. + +**Key Features**: + +- Maps effective permissions for users/groups +- Scans file systems and Registry +- Shows permissions inheritance +- Identifies potential security issues + +**Common Use Cases**: + +- Viewing and reporting shared folder permissions +- Security auditing +- Troubleshooting access denied errors +- Identifying over-permissive settings +- Documenting permission structures + +**Basic Usage**: + +- Select the starting directory or Registry key +- Click "Scan" to analyze permissions +- Sort results by permission type +- Export to CSV for reporting + +## Networking Tools + +### PSPing + +**Purpose**: Ping-like utility that measures network performance. + +**Key Features**: + +- TCP/IP latency measurement +- TCP port testing +- ICMP echo testing +- Bandwidth measurement +- Detailed statistics + +**Common Use Cases**: + +- Testing connectivity to specific TCP ports +- Measuring network latency +- Performance benchmarking +- Diagnosing network issues +- Alternative to PowerShell's Test-NetConnection + +**Basic Usage**: + +``` +psping -n 100 www.example.com # ICMP ping +psping -4 -tcp 192.168.1.1:80 # TCP ping +psping -b -l 8k 192.168.1.1:445 # Bandwidth test +``` + +### PSExec + +**Purpose**: Execute processes remotely on Windows systems. + +**Key Features**: + +- Run commands on remote systems +- Interactive or background mode +- Run as different user +- Copy programs to remote systems for execution +- Can run GUI applications remotely + +**Common Use Cases**: + +- Remote administration +- Running commands on multiple computers +- Executing programs with different credentials +- Running programs interactively on remote systems +- Automating tasks across networks + +**Basic Usage**: + +``` +psexec \\remote_computer -u domain\user -p password cmd.exe +psexec \\remote_computer -s regedit.exe # Run as SYSTEM +``` + +**Note**: Many PSExec functions are now available through PowerShell's Invoke-Command. + +## Debugging & Diagnostic Tools + +### Handle + +**Purpose**: Displays handles opened by processes and the specific files/objects they have open. + +**Key Features**: + +- Shows open handles for all processes +- Filters by process, handle type, or object name +- Can close handles (with -c option) +- Command-line operation + +**Common Use Cases**: + +- Finding which process has a file locked +- Troubleshooting "file in use" issues +- Identifying resource leaks +- Debugging application issues +- Investigating file access problems + +**Basic Usage**: + +``` +handle # List all handles +handle -p explorer # Handles opened by explorer.exe +handle "C:\temp" # Find processes with handles to this path +``` + +### ZoomIt + +**Purpose**: Screen zoom and annotation tool for technical presentations. + +**Key Features**: + +- Zoom in on any part of the screen +- Drawing tools for live annotations +- Break timer function +- Configurable keyboard shortcuts +- Presentation mode + +**Common Use Cases**: + +- Highlighting details during presentations +- Explaining technical concepts visually +- Drawing attention to specific screen elements +- Annotating screenshots in real-time +- Making small text readable for audiences + +**Basic Usage**: + +- Default zoom shortcut: Ctrl+1 +- Drawing mode: Ctrl+2 +- Type mode: Ctrl+3 +- Press ESC to exit any mode + +## Additional Useful Tools + +### Disk2vhd + +**Purpose**: Creates VHD (Virtual Hard Disk) versions of physical disks. + +**Key Features**: + +- Creates VHD/VHDX while system is running +- Volume Shadow Copy (VSS) snapshot technology +- Can include/exclude specific volumes +- Compatible with Hyper-V + +**Common Use Cases**: + +- Physical-to-virtual (P2V) migrations +- System backup +- Test environment creation +- Troubleshooting in a virtual environment + +### TCPView + +**Purpose**: Detailed listing of all TCP and UDP connections. + +**Key Features**: + +- Real-time connection monitoring +- Process-to-connection mapping +- Endpoint resolution (DNS lookups) +- Connection state tracking + +**Common Use Cases**: + +- Identifying unexpected network connections +- Monitoring application network activity +- Troubleshooting network issues +- Security monitoring + +### BGInfo + +**Purpose**: Displays system information on the desktop background. + +**Key Features**: + +- Customizable information display +- Script/command output integration +- Multiple configuration support +- Remote deployment options + +**Common Use Cases**: + +- Server identification in data centers +- Displaying critical system information +- Quick access to system specs +- Support environment identification + +### Sysmon + +**Purpose**: System monitoring service that records system activity to Windows Event Log. + +**Key Features**: + +- Process creation monitoring +- Network connection logging +- Driver/image loading detection +- WMI event monitoring +- Advanced filtering via XML configuration + +**Common Use Cases**: + +- Security monitoring and threat hunting +- Intrusion detection +- Forensic investigation +- Compliance monitoring +- Malware behavior analysis + +## Resources + +- Official Sysinternals Website: https://docs.microsoft.com/en-us/sysinternals/ +- Sysinternals Live: \live.sysinternals.com\tools\ +- Windows Internals Books (by Mark Russinovich) +- Sysinternals Forums: https://techcommunity.microsoft.com/t5/sysinternals/bd-p/Sysinternals \ No newline at end of file diff --git a/01-Documentation/Windows/adjuntos/Pasted image 20250505132440.png b/01-Documentation/Windows/adjuntos/Pasted image 20250505132440.png new file mode 100644 index 0000000..ce759ca Binary files /dev/null and b/01-Documentation/Windows/adjuntos/Pasted image 20250505132440.png differ diff --git a/03-VM/30 - 9.3941- Kosme - Portogallo (Modifica + Linea)/9.3941 - Kosme - Riazor PET Portogallo - Problematica.md b/03-VM/30 - 9.3941- Kosme - Portogallo (Modifica + Linea)/9.3941 - Kosme - Riazor PET Portogallo - Problematica.md index 4afe309..61349be 100644 --- a/03-VM/30 - 9.3941- Kosme - Portogallo (Modifica + Linea)/9.3941 - Kosme - Riazor PET Portogallo - Problematica.md +++ b/03-VM/30 - 9.3941- Kosme - Portogallo (Modifica + Linea)/9.3941 - Kosme - Riazor PET Portogallo - Problematica.md @@ -1,5 +1,5 @@ -28-02-2025 - Corrado Burani - Sitronic srl - [[cronologia#R: Modifica Trasporti ad aria kosme portogallo |R-Modifica-Trasporti-ad-aria-kosme-portogallo]] +28-02-2025 - Corrado Burani - Sitronic srl - [[03-VM/30 - 9.3941- Kosme - Portogallo (Modifica + Linea)/Emails/cronologia#R: Modifica Trasporti ad aria kosme portogallo|R-Modifica-Trasporti-ad-aria-kosme-portogallo]] ### Condizioni della linea : In marcia diff --git a/03-VM/30 - 9.3941- Kosme - Portogallo (Modifica + Linea)/Emails/cronologia.md b/03-VM/30 - 9.3941- Kosme - Portogallo (Modifica + Linea)/Emails/cronologia.md index ccee607..a3a5bef 100644 --- a/03-VM/30 - 9.3941- Kosme - Portogallo (Modifica + Linea)/Emails/cronologia.md +++ b/03-VM/30 - 9.3941- Kosme - Portogallo (Modifica + Linea)/Emails/cronologia.md @@ -1,6 +1,6 @@ # Índice de Mensajes -- 28-02-2025 - Corrado Burani - Sitronic srl - [[cronologia#R: Modifica Trasporti ad aria kosme portogallo |R-Modifica-Trasporti-ad-aria-kosme-portogallo]] +- 28-02-2025 - Corrado Burani - Sitronic srl - [[03-VM/30 - 9.3941- Kosme - Portogallo (Modifica + Linea)/Emails/cronologia#R: Modifica Trasporti ad aria kosme portogallo|R-Modifica-Trasporti-ad-aria-kosme-portogallo]] --- diff --git a/03-VM/40 - 93040 - HENKEL - NEXT + 1 Problem/Trial/cronologia.md b/03-VM/40 - 93040 - HENKEL - NEXT + 1 Problem/Trial/cronologia.md index 7755fa6..08b834a 100644 --- a/03-VM/40 - 93040 - HENKEL - NEXT + 1 Problem/Trial/cronologia.md +++ b/03-VM/40 - 93040 - HENKEL - NEXT + 1 Problem/Trial/cronologia.md @@ -1,6 +1,6 @@ # Índice de Mensajes -- 11-02-2025 - Bhavik Patel - [[cronologia#RE: [EXT] Week 8 Trial of Auto Changeover - 02.11.2025|RE-EXT-Week-8-Trial-of-Auto-Changeover---02112025]] +- 11-02-2025 - Bhavik Patel - [[03-VM/40 - 93040 - HENKEL - NEXT + 1 Problem/Trial/cronologia#RE: [EXT] Week 8 Trial of Auto Changeover - 02.11.2025|RE-EXT-Week-8-Trial-of-Auto-Changeover---02112025]] --- diff --git a/03-VM/40 - 93040 - HENKEL - NEXT + 1 Problem/cronologia.md b/03-VM/40 - 93040 - HENKEL - NEXT + 1 Problem/cronologia.md index b83b644..f72178e 100644 --- a/03-VM/40 - 93040 - HENKEL - NEXT + 1 Problem/cronologia.md +++ b/03-VM/40 - 93040 - HENKEL - NEXT + 1 Problem/cronologia.md @@ -1,28 +1,28 @@ # Índice de Mensajes -- 10-02-2025 - Osswald Ulrich (ASG) - [[cronologia#AW: *EXT* RE: *EXT* Next + 1 - HENKEL - ALPLA - AUTEFA|AW-EXT-RE-EXT-Next-1---HENKEL---ALPLA---AUTEFA]] -- 04-02-2025 - Ureda Sudheesh (ASG-Extern) - [[cronologia#Re: *EXT* Next + 1 - HENKEL - ALPLA - AUTEFA|Re-EXT-Next-1---HENKEL---ALPLA---AUTEFA]] -- 04-02-2025 - Maximilian Rossi - Vetromeccanica S.r.l. - [[cronologia#I: R: I: [EXT] R: Vetro Conveyor 9.3674|I-R-I-EXT-R-Vetro-Conveyor-93674]] -- 04-02-2025 - Miguel Angel Vera - Vetromeccanica S.r.l. - [[cronologia#RE: OPC-UA interface Vetro - Bowling Green 2 9.3040-3074|RE-OPC-UA-interface-Vetro---Bowling-Green-2-93040-3074]] -- 04-02-2025 - Maximilian Rossi - Vetromeccanica S.r.l. - [[cronologia#I: IDH_BTL|I-IDH_BTL]] -- 04-02-2025 - Maximilian Rossi - Vetromeccanica S.r.l. - [[cronologia#I: OPC-UA interface Vetro - Bowling Green 2 9.3040-3074|I-OPC-UA-interface-Vetro---Bowling-Green-2-93040-3074]] -- 04-02-2025 - Maximilian Rossi - Vetromeccanica S.r.l. - [[cronologia#I: Alpla BOW2 - Line emptying button 6168|I-Alpla-BOW2---Line-emptying-button-6168]] -- 04-02-2025 - Maximilian Rossi - Vetromeccanica S.r.l. - [[cronologia#I: 9.3040-3074 ALPLA BG open points|I-93040-3074-ALPLA-BG-open-points]] -- 04-02-2025 - Maximilian Rossi - Vetromeccanica S.r.l. - [[cronologia#I: 9.3061-TLO26-L42 automatic change over test|I-93061-TLO26-L42-automatic-change-over-test]] -- 04-02-2025 - Maximilian Rossi - Vetromeccanica S.r.l. - [[cronologia#R: [EXT] RE: Vetro/ALPLA information verification 9.3060-3067|R-EXT-RE-VetroALPLA-information-verification-93060-3067]] -- 04-02-2025 - Lenin Vera - [[cronologia#RE: [EXT] RE: Vetro/ALPLA information verification|RE-EXT-RE-VetroALPLA-information-verification]] -- 03-02-2025 - Shannon.Johnson - [[cronologia#RE: Automatic changeover trial|RE-Automatic-changeover-trial]] -- 03-02-2025 - Miguel Angel Vera - Vetromeccanica S.r.l. - [[cronologia#NEXT2 - Data - ALPLA information verification|NEXT2---Data---ALPLA-information-verification]] -- 18-12-2024 - Miguel Angel Vera - [[cronologia#RV: RE: [EXT] RE: Vetro/ALPLA information verification|RV-RE-EXT-RE-VetroALPLA-information-verification]] -- 04-01-2024 - Maximilian Rossi - Vetromeccanica S.r.l. - [[cronologia#I: 9.3061-TLO26-L42 automatic change over test|I-93061-TLO26-L42-automatic-change-over-test]] -- 04-01-2024 - Maximilian Rossi - Vetromeccanica S.r.l. - [[cronologia#I: Alpla BOW: Batch handling 9.3040-3074 ALPLA BG |I-Alpla-BOW-Batch-handling-93040-3074-ALPLA-BG]] -- 04-01-2024 - Maximilian Rossi - Vetromeccanica S.r.l. - [[cronologia#I: Alpla BOW: Batch Handling Issue for TG10 & TG20|I-Alpla-BOW-Batch-Handling-Issue-for-TG10-TG20]] -- 04-01-2024 - Maximilian Rossi - Vetromeccanica S.r.l. - [[cronologia#I: Bottle counters / Batch handling |I-Bottle-counters-Batch-handling]] -- 04-01-2024 - Maximilian Rossi - Vetromeccanica S.r.l. - [[cronologia#I: OPC-UA interface Vetro - Bowling Green 2|I-OPC-UA-interface-Vetro---Bowling-Green-2]] -- 29-10-2020 - Maximilian Rossi - Vetromeccanica S.r.l. - [[cronologia#R: 9.3040-3074 ALPLA data exchange with HENKEL - line commisioning|R-93040-3074-ALPLA-data-exchange-with-HENKEL---line-commisioning]] -- 28-10-2020 - Sam.Colley@alpla.com - [[cronologia#FW: Post Operations Meeting Logistics Update - 10/28/2020|FW-Post-Operations-Meeting-Logistics-Update---10282020]] -- 21-05-2020 - Maximilian Rossi - Vetromeccanica S.r.l. - [[cronologia#R: Alpla - Vetro SKU via OPC 9.3040-3074|R-Alpla---Vetro-SKU-via-OPC-93040-3074]] -- 24-02-2020 - Osswald Ulrich (ASG) (Ulrich.Osswald@autefa.com) - [[cronologia#Alpla BG: updated telegram description|Alpla-BG-updated-telegram-description]] +- 10-02-2025 - Osswald Ulrich (ASG) - [[03-VM/40 - 93040 - HENKEL - NEXT + 1 Problem/cronologia#AW: *EXT* RE: *EXT* Next + 1 - HENKEL - ALPLA - AUTEFA|AW-EXT-RE-EXT-Next-1---HENKEL---ALPLA---AUTEFA]] +- 04-02-2025 - Ureda Sudheesh (ASG-Extern) - [[03-VM/40 - 93040 - HENKEL - NEXT + 1 Problem/cronologia#Re: *EXT* Next + 1 - HENKEL - ALPLA - AUTEFA|Re-EXT-Next-1---HENKEL---ALPLA---AUTEFA]] +- 04-02-2025 - Maximilian Rossi - Vetromeccanica S.r.l. - [[03-VM/40 - 93040 - HENKEL - NEXT + 1 Problem/cronologia#I: R: I: [EXT] R: Vetro Conveyor 9.3674|I-R-I-EXT-R-Vetro-Conveyor-93674]] +- 04-02-2025 - Miguel Angel Vera - Vetromeccanica S.r.l. - [[03-VM/40 - 93040 - HENKEL - NEXT + 1 Problem/cronologia#RE: OPC-UA interface Vetro - Bowling Green 2 9.3040-3074|RE-OPC-UA-interface-Vetro---Bowling-Green-2-93040-3074]] +- 04-02-2025 - Maximilian Rossi - Vetromeccanica S.r.l. - [[03-VM/40 - 93040 - HENKEL - NEXT + 1 Problem/cronologia#I: IDH_BTL|I-IDH_BTL]] +- 04-02-2025 - Maximilian Rossi - Vetromeccanica S.r.l. - [[03-VM/40 - 93040 - HENKEL - NEXT + 1 Problem/cronologia#I: OPC-UA interface Vetro - Bowling Green 2 9.3040-3074|I-OPC-UA-interface-Vetro---Bowling-Green-2-93040-3074]] +- 04-02-2025 - Maximilian Rossi - Vetromeccanica S.r.l. - [[03-VM/40 - 93040 - HENKEL - NEXT + 1 Problem/cronologia#I: Alpla BOW2 - Line emptying button 6168|I-Alpla-BOW2---Line-emptying-button-6168]] +- 04-02-2025 - Maximilian Rossi - Vetromeccanica S.r.l. - [[03-VM/40 - 93040 - HENKEL - NEXT + 1 Problem/cronologia#I: 9.3040-3074 ALPLA BG open points|I-93040-3074-ALPLA-BG-open-points]] +- 04-02-2025 - Maximilian Rossi - Vetromeccanica S.r.l. - [[03-VM/40 - 93040 - HENKEL - NEXT + 1 Problem/cronologia#I: 9.3061-TLO26-L42 automatic change over test|I-93061-TLO26-L42-automatic-change-over-test]] +- 04-02-2025 - Maximilian Rossi - Vetromeccanica S.r.l. - [[03-VM/40 - 93040 - HENKEL - NEXT + 1 Problem/cronologia#R: [EXT] RE: Vetro/ALPLA information verification 9.3060-3067|R-EXT-RE-VetroALPLA-information-verification-93060-3067]] +- 04-02-2025 - Lenin Vera - [[03-VM/40 - 93040 - HENKEL - NEXT + 1 Problem/cronologia#RE: [EXT] RE: Vetro/ALPLA information verification|RE-EXT-RE-VetroALPLA-information-verification]] +- 03-02-2025 - Shannon.Johnson - [[03-VM/40 - 93040 - HENKEL - NEXT + 1 Problem/cronologia#RE: Automatic changeover trial|RE-Automatic-changeover-trial]] +- 03-02-2025 - Miguel Angel Vera - Vetromeccanica S.r.l. - [[03-VM/40 - 93040 - HENKEL - NEXT + 1 Problem/cronologia#NEXT2 - Data - ALPLA information verification|NEXT2---Data---ALPLA-information-verification]] +- 18-12-2024 - Miguel Angel Vera - [[03-VM/40 - 93040 - HENKEL - NEXT + 1 Problem/cronologia#RV: RE: [EXT] RE: Vetro/ALPLA information verification|RV-RE-EXT-RE-VetroALPLA-information-verification]] +- 04-01-2024 - Maximilian Rossi - Vetromeccanica S.r.l. - [[03-VM/40 - 93040 - HENKEL - NEXT + 1 Problem/cronologia#I: 9.3061-TLO26-L42 automatic change over test|I-93061-TLO26-L42-automatic-change-over-test]] +- 04-01-2024 - Maximilian Rossi - Vetromeccanica S.r.l. - [[03-VM/40 - 93040 - HENKEL - NEXT + 1 Problem/cronologia#I: Alpla BOW: Batch handling 9.3040-3074 ALPLA BG|I-Alpla-BOW-Batch-handling-93040-3074-ALPLA-BG]] +- 04-01-2024 - Maximilian Rossi - Vetromeccanica S.r.l. - [[03-VM/40 - 93040 - HENKEL - NEXT + 1 Problem/cronologia#I: Alpla BOW: Batch Handling Issue for TG10 & TG20|I-Alpla-BOW-Batch-Handling-Issue-for-TG10-TG20]] +- 04-01-2024 - Maximilian Rossi - Vetromeccanica S.r.l. - [[03-VM/40 - 93040 - HENKEL - NEXT + 1 Problem/cronologia#I: Bottle counters / Batch handling|I-Bottle-counters-Batch-handling]] +- 04-01-2024 - Maximilian Rossi - Vetromeccanica S.r.l. - [[03-VM/40 - 93040 - HENKEL - NEXT + 1 Problem/cronologia#I: OPC-UA interface Vetro - Bowling Green 2|I-OPC-UA-interface-Vetro---Bowling-Green-2]] +- 29-10-2020 - Maximilian Rossi - Vetromeccanica S.r.l. - [[03-VM/40 - 93040 - HENKEL - NEXT + 1 Problem/cronologia#R: 9.3040-3074 ALPLA data exchange with HENKEL - line commisioning|R-93040-3074-ALPLA-data-exchange-with-HENKEL---line-commisioning]] +- 28-10-2020 - Sam.Colley@alpla.com - [[03-VM/40 - 93040 - HENKEL - NEXT + 1 Problem/cronologia#FW: Post Operations Meeting Logistics Update - 10/28/2020|FW-Post-Operations-Meeting-Logistics-Update---10282020]] +- 21-05-2020 - Maximilian Rossi - Vetromeccanica S.r.l. - [[03-VM/40 - 93040 - HENKEL - NEXT + 1 Problem/cronologia#R: Alpla - Vetro SKU via OPC 9.3040-3074|R-Alpla---Vetro-SKU-via-OPC-93040-3074]] +- 24-02-2020 - Osswald Ulrich (ASG) (Ulrich.Osswald@autefa.com) - [[03-VM/40 - 93040 - HENKEL - NEXT + 1 Problem/cronologia#Alpla BG: updated telegram description|Alpla-BG-updated-telegram-description]] --- diff --git a/03-VM/9..... MASTER Transport/Standard Transport/FC551 FC FC Compute Machine Speed.md b/03-VM/9..... MASTER Transport/Standard Transport/FC551 FC FC Compute Machine Speed.md index 85a208d..5d7d7c2 100644 --- a/03-VM/9..... MASTER Transport/Standard Transport/FC551 FC FC Compute Machine Speed.md +++ b/03-VM/9..... MASTER Transport/Standard Transport/FC551 FC FC Compute Machine Speed.md @@ -172,3 +172,4 @@ T %DBW6 IsOkOut : NOP 0 ``` +![[Pasted image 20250507111418.png]] \ No newline at end of file diff --git a/03-VM/9..... MASTER Transport/Standard Transport/adjuntos/Pasted image 20250507111418.png b/03-VM/9..... MASTER Transport/Standard Transport/adjuntos/Pasted image 20250507111418.png new file mode 100644 index 0000000..a8388fc Binary files /dev/null and b/03-VM/9..... MASTER Transport/Standard Transport/adjuntos/Pasted image 20250507111418.png differ diff --git a/TODY - Punti da vedere.md b/03-VM/TODY - Punti da vedere.md similarity index 100% rename from TODY - Punti da vedere.md rename to 03-VM/TODY - Punti da vedere.md diff --git a/04-SIDEL/00 - MASTER/EMAILs/E5.007727 - Evo On - SFSRFH300172 + SFSRFH300109 - ANDIA LACTEOS.md b/04-SIDEL/00 - MASTER/EMAILs/E5.007727 - Evo On - SFSRFH300172 + SFSRFH300109 - ANDIA LACTEOS.md new file mode 100644 index 0000000..338ab10 --- /dev/null +++ b/04-SIDEL/00 - MASTER/EMAILs/E5.007727 - Evo On - SFSRFH300172 + SFSRFH300109 - ANDIA LACTEOS.md @@ -0,0 +1,686 @@ +# Índice de Mensajes + +- 29-04-2025 - Passera, Alessandro - [[E5.007727 - Evo On - SFSRFH300172 + SFSRFH300109 - ANDIA LACTEOS#I: E5.007727 : Evo On - SFSRFH300172 + SFSRFH300109 - ANDIA LACTEOS|I-E5007727-Evo-On---SFSRFH300172-SFSRFH300109---ANDIA-LACTEOS]] + +--- + + +# Resumen del hilo de emails +*** +Este hilo de emails trata sobre un proyecto de actualización de software llamado "Evo On" para dos máquinas (SFSRFH300172 y SFSRFH300109) en ANDIA LACTEOS. Los emails siguen el progreso del proyecto desde su inicio hasta la entrega final del software. + +El proyecto comenzó como respuesta a una reclamación importante del cliente ANDIA LACTEOS. José Marques, Project Manager de ECA, explica que este proyecto es crucial para mejorar la imagen de Sidel ante el cliente, ya que se está ofreciendo como solución a una reclamación. + +Inicialmente hubo problemas con la orden de compra interna, ya que se utilizó un código EQPT (equipo) cuando en realidad solo se trataba de una modificación de software. Michele Brianti solicitó cambiar los códigos EQPT por códigos SOFT y eliminar el embalaje y transporte, ya que no habría envío físico de equipos. + +La fecha de entrega inicial estimada era para octubre de 2025 (semana 42), pero José Marques solicitó adelantarla significativamente, ya que tenía técnicos en el sitio en mayo de 2025. El equipo de Parma, liderado por Michele Brianti, confirmó que podrían entregar el software para el 5 de mayo de 2025. + +En abril, José Marques confirmó que un técnico llamado Romuald sería quien instalaría el software y que las máquinas sopladoras también estarían involucradas en esta actualización de Evo On. También se mencionó que habría un Cloud Connector que sería desarrollado por el departamento técnico de soplado. + +El 29 de abril de 2025, Mattia Gorreri confirma que ha completado el software para ambas máquinas y lo ha cargado en SharePoint. Ha colocado el software original en las carpetas "OLD" y el software actualizado en las carpetas "NEW" junto con los archivos FDM correspondientes. + +Alessandro Passera explica en el email más reciente cómo usar correctamente las carpetas en SharePoint para el software: + +- Carpeta "0_Back-up": Para insertar el software de partida (antigua carpeta OLD) +- Carpeta "1_Released_for_TEST": Software de fin de desarrollo e inicio de TEST +- Carpeta "2_Released_for_INSTALLATION": Software final después de las pruebas (antigua carpeta NEW) +- Carpeta "3_INSTALLED": Software de fin de puesta en marcha También menciona la importancia de crear un archivo de texto vacío llamado "Rilasciato" en la carpeta 2 para iniciar notificaciones automáticas. + +En general, el proyecto consiste en una actualización de software "Evo On" para dos máquinas llenadoras en ANDIA LACTEOS, que se realizó como respuesta a un reclamo del cliente, y el software ya está finalizado y listo para ser instalado por los técnicos de campo. + + +*** ++ 0392f50874b2a000b30f8e09bd2f1359 + +### I: E5.007727 : Evo On - SFSRFH300172 + SFSRFH300109 - ANDIA LACTEOS + +- 29-04-2025 + +Ciao ragazzi vi giro la mail sotto alla quale scusate mi sono dimenticato di inserirvi. +In pratica è una mini spiegazione di come compilare le cartelle del software in share point, giusto per sapere dove mettere le varie + cose. +Altro passo importante è copiare il file txt con nome definito e sempre uguale nella cartella 2 così da far partire gli avvertimenti + che il software è finito : il file di testo in questione sarà vuoto e serve solo il nome Rilasciato così che parte la mail automatica relativa + +In generale comunque se riuscite e non vi incasina chi appoggia nel proprio cloud il materiale dell’ordine vi chiedo di mantenerlo . +Ciao + +Alessandro PASSERA +Tel: +39 0521 999 319 +Mob: +39 3459439668 +Fax : +39 0521 999511 +www.sidel.com + +General + + Brianti, Michele + + Spina, Fabio [EXTERNAL] ; Zanantoni, Luca [EXTERNAL] ; l.bonardi ; + p.bellini + +Giusto per chiarimento, nella cartella preparata in share point esiste già la posizione del software di partenza. +In particolare le cartelle sono quelle di seguito : + +Quindi : + +0_Back-up +à cartella in cui inserire il software di partenza su cui inserire le modifiche + (sarebbe la vecchia cartella OLD) ; +1_Released_for_TEST +à è il software di fine sviluppo e di inizio TEST ; +2_Released_for_INSTALLATION +à è il software di fine Test che è quello che serve al tecnico per l’avviamento + (è la vecchia cartella NEW) ; +3_INSTALLED +à sarebbe il software di fine avviamento e vediamo torneranno (in generale + comunque non si sostituisce all’archiviazione in Sap che comunque è in carico al product support di zona); +Tutto questo solo per chiarimento visto che siamo all’inizio di utilizzo share point per il software. +Ciao + +Alessandro PASSERA +Tel: +39 0521 999 319 +Mob: +39 3459439668 +Fax : +39 0521 999511 +www.sidel.com + +General + + Brianti, Michele + +Perfetto e mi sembra di poter dire di vedere tutto. +Grazie mille Mattia e ottimo lavoro!! + + +Alessandro PASSERA +Tel: +39 0521 999 319 +Mob: +39 3459439668 +Fax : +39 0521 999511 +www.sidel.com + + Brianti, Michele + +Ho caricato il tutto. +SRFH172 + +Nella cartella OLD troviamo il sw di partenza + +Nella cartella new il sw finale con relativa fdm + +SRFH109 + +nella cartella old troviamo il sw di partenza. + +Nella cartella new troviamo il sw finale con relativa fdm. + +Fatemi sapere se riuscite a visualizzare tutto correttamente e se è arrivata la notifica. +Rimango a disposizione. +Grazie. + +Mattia Gorreri +Services Engineering +Tel: +39 3516191383 + +General + + Gorreri, Mattia [EXTERNAL] <260921@sidel.com> + +Direi che è d’obbligo. +Mattia dovrebbe essere in grado di caricare file nelle cartelle corrette. +@Gorreri, + Mattia [EXTERNAL] puoi cortesemente provare a copiare i file nelle cartelle qui sotto? + +Documents +Software directory +Aseptic +RFH172 +E5.007727 + + + 2_Released_for_INSTALLATION + +Documents +Software directory +Aseptic +RFH109 +E5.007727 + + 2_Released_for_INSTALLATION + +Appena fatto, in ognuna delle 2 cartelle, salva anche il file allegato (non lo modificare – salvalo e basta - serve per far partire mail automatica + al PM Supply) +grazie + +Claudio +Claudio POMO +Mob: +39 335 1270265 +P +Help save paper - do you need to print this email? + +Antes de imprimir este correo, piensa si es necesario. + +EL MEDIO AMBIENTE ES COSA DE TODOS. + +General + + Bocci, Stefano + +*** +Subject: R: E5.007727 : Evo On - SFSRFH300172 + SFSRFH300109 - ANDIA LACTEOS + +Si potrebbe caricare il sw in sharepoint? + +Le cartelle erano state create per queste macchine/ordine. + +Stefania Sacchi - External - +Sidel Group +Service Engineering Parma +Sidel Spa, Via la Spezia 241/A + +43126 Parma, ITALY +Tel: +39 0521 9991 + +www.sidel.com +General + + ts.asepticECA ; Bocci, Stefano + +Ciao Michele questa mattina parlando con Mattia che ho inserito in copia mi ha confermato che il software di entrambe le macchine è terminato. +Chiedo a Mattia di copiarlo nella cartella O&U dedicata e di farci sapere così da poter avvertire la zona e condividere con i tecnici + il software per l’imminente installazione. +In copia inserisco anche il supporto tecnico asettico zona eca così che magari è informato e credo sia il caso di tenerlo nel loop così + che posso in caso di necessità seguire l’installazione. +Ciao + +Alessandro PASSERA +Tel: +39 0521 999 319 +Mob: +39 3459439668 +Fax : +39 0521 999511 +www.sidel.com + +General + +Ciao Ale, +come siamo messi con la consegna dei SW ? + + +General + + Perraut, Romuald + +Yes, Michele, I confirmed. +Romuald in copy will be the one doing it. + +Cordialement / Best regards / Atentamente / Sinceramente, +José Marques +Services Project Manager ECA +Sidel Group +Sidel Blowing & Services +CS 60627, 76059 Le Havre Cedex +Avenue de la Patrouille de France, France +Tel: +33 6 80 41 86 37 +www.sidel.com +blog.sidel.com + +General + +De : Brianti, Michele + +Envoyé : mercredi 16 avril 2025 10:28 + +À : Marques, Jose + +Cc : Guerra, Riccardo ; Gorreri, Mattia [EXTERNAL] <260921@sidel.com>; Passera, Alessandro + +Objet : R: E5.007727 : Evo On 174168 INTERNAL PO4501841001 - H5.013847 - SO 726300 - ANDIA LACTEOS _ 174168 A.1.1 + +Ciao Jose, +please, can you confirm that the cloud connector will be programmed by blower technical dept ? +Thanks +Michele + +General + +Ok perfect and thanks. +So also the software of Cloud connector will be developed by blower? +Sorry for all the questions but we are at the beginning of the management of the Evo on and we would like to be sure and + avoid any misunderstanding. +Thanks and best regards + +Alessandro PASSERA +Tel: +39 0521 999 319 +Mob: +39 3459439668 +Fax : +39 0521 999511 +www.sidel.com + +General + +Ciao Michele, + +Yes exactely, + +All material will be provided for both blowers. + +On filler side, we need only soft. + +Cordialement / Best regards / Atentamente / Sinceramente, +José Marques +Services Project Manager ECA +Sidel Group +Sidel Blowing & Services +CS 60627, 76059 Le Havre Cedex +Avenue de la Patrouille de France, France +Tel: +33 6 80 41 86 37 +www.sidel.com +blog.sidel.com + +General + +De : Brianti, Michele + +Envoyé : mardi 15 avril 2025 09:17 + +À : Marques, Jose + +Cc : Passera, Alessandro + +Objet : R: E5.007727 : Evo On 174168 INTERNAL PO4501841001 - H5.013847 - SO 726300 - ANDIA LACTEOS _ 174168 A.1.1 + +Ciao Jose, +can you confirm that also the Blower is involved in this EVO ON update ? +The cloud connector will be supplied from Blower ? +Thanks for your comment. +Ciao +Michele + +General + +Oh this is just wonderful, thank you so much Michele. + +Adding in the loop Alessandro, to thank him also. + +It will be much appreciated guys. + +Cordialement / Best regards / Atentamente / Sinceramente, +José Marques +Services Project Manager ECA +Sidel Group +Sidel Blowing & Services +CS 60627, 76059 Le Havre Cedex +Avenue de la Patrouille de France, France +Tel: +33 6 80 41 86 37 +www.sidel.com +blog.sidel.com + +General + +De : Brianti, Michele + +Envoyé : vendredi 11 avril 2025 09:46 + +À : Marques, Jose + +Cc : Signorini, Sara + +Objet : R: E5.007727 : Evo On 174168 INTERNAL PO4501841001 - H5.013847 - SO 726300 - ANDIA LACTEOS _ 174168 A.1.1 + +Ciao Jose, +we confirm the software modification within May 05 as requested. +Ciao +Michele + +General + +Ciao Josè, +I escalated, let's see if there are any possibilities to postpone other projects in order to anticipate Andia Lacteos. +I let you know. +Ciao +Michele + +Ciao Michele + +I need to explain you + +This project was offered to customer as he sent a very big claim to Sidel. + +We have several other projects in progress with this customer + +We will install some of them in may. This includes updating the 2 fillers. + +I would like to take this opportunity to include in the update of the fillers the modifications for the evo on. + +I know this is not the standard flow + +But we need to reduce as much as possible the cost of this “free” project, as it is at Sidel charge. + +I will write a message to explain it to Alessandro Passera, hoping he can help in this way. + +Tell me if you need more information + +And once again thanks for your help as usual Michele + +Cordialement / Best regards, +José Marques +Global Product Support Blowing Automation Expert +Equipment Portfolio and Innovation +Sidel Group +Sidel Services SAS +CS 60627, 76059 Le Havre Cedex +Avenue de la Patrouille de France, France +Tel: +33 2 32 85 87 13 +www.sidel.com +blog.sidel.com + +Envoyé à partir de Outlook pour iOS + +General + +Objet : E5.007727 : Evo On 174168 INTERNAL PO4501841001 - H5.013847 - SO 726300 - ANDIA LACTEOS _ 174168 A.1.1 + +Ciao Jose, +We have a big problem to prepare the SW for May 05. +Do you need the SW modification for May 05 for both machines ? +Please, let me know. +SFSRFH300172 + SFSRFH300109 +Ciao + +Michele Brianti +Project Manager Supply Line Solution +Sidel Group +Sidel SpA +Via La Spezia 241/A, 43124 Parma, Italy +Tel.: +39 0521 999310 +Mob: +39 342 6701920 +www.sidel.com +General + + Trepin, Catherine ; Marques, Jose ; LineConversion ; + Gilles, Nicolas + +Dear Michele +The interco PO has been updated (with help of Catherine !). +Then, you can proceed with the project, knowing we would like to receive the software for W19 (because we have FSE on site at this date). + + +Thank you, +Gérald PORET +Lead Project Manager Services Execution +Mob : +33 6 13 72 53 94 + +General + +De : Brianti, Michele + +Envoyé : vendredi 4 avril 2025 10:13 + +À : Gilles, Nicolas + +Cc : Poret, Gerald ; Avenel, Stéphanie ; Rodrigues, Cynthia ; + Cristofari, Silvina ; Trepin, Catherine ; Marques, Jose ; + LineConversion + +Objet : R: ASSIGN ORDER 174168 INTERNAL PO4501841001 - H5.013847 - SO 726300 - ANDIA LACTEOS _ 174168 A.1.1 + +Thank you Nicolas, +we waiting PO update in order to start with the project. +Ciao + +Michele Brianti +Project Manager Supply Line Solution +Sidel Group +Sidel SpA +Via La Spezia 241/A, 43124 Parma, Italy +Tel.: +39 0521 999310 +Mob: +39 342 6701920 +www.sidel.com +General + + Cristofari, Silvina ; Brianti, Michele ; Trepin, Catherine + +Hello to all, +The solution is to modify the interco PO using a SOFT code instead of an EQPT. +We had a discussion with Catherine and Eric Huault last week on the topic and it’s confirmed this is the way to proceed. +KR, Nicolas. + +General + + Rodrigues, Cynthia ; Cristofari, Silvina ; Brianti, Michele ; + Trepin, Catherine + +*** +Subject: RE: ASSIGN ORDER 174168 INTERNAL PO4501841001 - H5.013847 - SO 726300 - ANDIA LACTEOS _ 174168 A.1.1 + +Salut Sara, + +If no better solution, you can load the new softs on a USB stick and ship it. + +Are you ok with that? + + +Cordialement / Best regards / Atentamente / Sinceramente, +José Marques +Services Project Manager ECA +Sidel Group +Sidel Blowing & Services +CS 60627, 76059 Le Havre Cedex +Avenue de la Patrouille de France, France +Tel: +33 6 80 41 86 37 +www.sidel.com +blog.sidel.com + +General + +De : LineConversion + +Envoyé : jeudi 3 avril 2025 20:15 + +À : Marques, Jose + +Cc : Gilles, Nicolas ; Poret, Gerald ; Avenel, Stéphanie ; + Rodrigues, Cynthia ; Cristofari, Silvina ; Brianti, Michele ; + Trepin, Catherine ; Marques, Jose + +Objet : Re: ASSIGN ORDER 174168 INTERNAL PO4501841001 - H5.013847 - SO 726300 - ANDIA LACTEOS _ 174168 A.1.1 + +Ciao Jose + +This is a problem Since we cannot managed a project without material using an EQPT code. + +It never happened to be blocked on project because of that. + +I don’t know how to proceed and who can support + +Sara + +Inviato da +Outlook per iOS + +General + + Rodrigues, Cynthia ; Cristofari, Silvina ; Brianti, Michele ; + Trepin, Catherine ; Marques, Jose + +Hello Sara, + +Catherine already answered to Michele. + +“As for this project here will be also material delivered to the customer for this project, the main SO is in tax classification 1. + +As supplier PO’s have to be aligned on same tax classification, we use EQPT to align them” + +You can see in attachment the original email form Finance Tax controler +Huault, Eric. We cannot go beyond Sidel Rules. + +Thanks for your understanding. + +Cordialement / Best regards / Atentamente / Sinceramente, +José Marques +Services Project Manager ECA +Sidel Group +Sidel Blowing & Services +CS 60627, 76059 Le Havre Cedex +Avenue de la Patrouille de France, France +Tel: +33 6 80 41 86 37 +www.sidel.com +blog.sidel.com + +General + +De : LineConversion + +Envoyé : mercredi 2 avril 2025 16:44 + +À : Marques, Jose + +Cc : Gilles, Nicolas ; Poret, Gerald ; Avenel, Stéphanie ; + Rodrigues, Cynthia ; Cristofari, Silvina ; Brianti, Michele ; + Trepin, Catherine + +Objet : Re: ASSIGN ORDER 174168 INTERNAL PO4501841001 - H5.013847 - SO 726300 - ANDIA LACTEOS _ 174168 A.1.1 + +Dear Jose + +As already raised, project cannot be launch until we will receive the amended PO with the replacement of the EQPT code with SOFT one. + +Thanks to provide within tomorrow the PO updated. + +I’ll review with technical dept the planning date to check if there the possibility to improve the planned date. + +Kind regards + +Sara + +Inviato da +Outlook per iOS + +General + +Da: Marques, Jose + +Inviato: mercoledì, aprile 2, 2025 9:21 AM + + Rodrigues, Cynthia ; Cristofari, Silvina ; Brianti, Michele ; + Trepin, Catherine + +Oggetto: RE: ASSIGN ORDER 174168 INTERNAL PO4501841001 - H5.013847 - SO 726300 - ANDIA LACTEOS _ 174168 A.1.1 + +Bonjour Sara, +I come back to you with this project, which from Parma side includes only soft update. +There is a large mismatch between the original proposal 12 weeks (=W25) , and the Estimated FCA W42. + +ESTIMATED PDD FCA PARMA: 14/10/2025 +DUE TO AUTOMATION WORKLOAD AND TO BE CONFIRMED AFTER PROJECT LAUNCHING +This project is following a big claim from customer. So we need to commit on a good level of services to improve Sidel image quality. +I am also installing in the coming weeks 4 other projects customer purchased. We need to be perfect +😊 +So I kindly ask you to review the delivery date. I cannot announce October to the customer, which is very interested by this Evo on option. +Cordialement / Best regards / Atentamente / Sinceramente, +José Marques +Services Project Manager ECA +Sidel Group +Sidel Blowing & Services +CS 60627, 76059 Le Havre Cedex +Avenue de la Patrouille de France, France +Tel: +33 6 80 41 86 37 +www.sidel.com +blog.sidel.com + +General + +De : Brianti, Michele + +Envoyé : mercredi 26 mars 2025 12:02 + +À : Trepin, Catherine + +Cc : Marques, Jose ; Gilles, Nicolas ; Poret, Gerald ; + Avenel, Stéphanie ; Rodrigues, Cynthia ; Cristofari, Silvina ; + LineConversion + +Objet : R: ASSIGN ORDER 174168 INTERNAL PO4501841001 - H5.013847 - SO 726300 - ANDIA LACTEOS _ 174168 A.1.1 + +Dear Catherine, +this O&U include only software modification so please change the EQPT codes with SOFT codes and delete packing and transport. +Waiting PO updated. +Thanks +Best Regards +Michele Brianti +Project Manager Supply Line Solution +Sidel Group +Sidel SpA +Via La Spezia 241/A, 43124 Parma, Italy +Tel.: +39 0521 999310 +Mob: +39 342 6701920 +www.sidel.com +General + +Da: LineConversion + +Inviato: lunedì 24 marzo 2025 19:43 + + Poret, Gerald ; Avenel, Stéphanie ; + Rodrigues, Cynthia ; Cristofari, Silvina ; + Brianti, Michele + +Oggetto: ASSIGN ORDER 174168 INTERNAL PO4501841001 - H5.013847 - SO 726300 - ANDIA LACTEOS _ 174168 A.1.1 + +Dear Catherine +Project : LI_MEDIUM +Status of the project : TO BE LAUNCHED +Scope of Supply: EVO-ON PERFORMANCE +Machine involved: SFSRFH300172 SFSRFH300109 +Assigned PMS: MICHELE BRIANTI +ZRD: 10/06/2025 +ESTIMATED PDD FCA PARMA: 14/10/2025 DUE TO AUTOMATION WORKLOAD AND TO BE CONFIRMED AFTER PROJECT LAUNCHING +You are kindly asked to supply the missing data project MANDATORY required for order launching: +1. SOFTWARE BACKUP +ATTENTION: QUOTATION IS ONLY FOR 1 MACHINE BUT IT HAS BEEN CONFIRMED SCOPE AND PRICE BY RICCARDO GUERRA, SEE EMAIL ATTACHED +NOTE: THANKS TO INFORM US ABOUT THE PLANNED INSTALLATION DATE OF THE PROJECT IN SUBJECT AS SOON AS IT WILL BE PLANNED +IMPORTANT: +DUE TO THE ACTUAL WORKLOAD AND RAW MATERIALS SHORTAGE, MAINLY IMPACTING ELECTRICAL COMPONENTS, THE WEEKS +INDICATED IN THE OFFER AND PDD ARE AT RISK. +NEED TO PLAN THE BOM AVAILABILITY DATE, THEN BASED ON SUPPLIERS CONFIRMATIONS WE WILL ADJUST THE TARGET IF NEEDED. +FOR THE TIME BEING CONSIDER THE ABOVE PLANNING. +IT IS MANDATORY TO HAVE THE INFO REQUESTED IN THE ABOVE POINTS AS SOON AS POSSIBLE. +I remain at your disposal for any further details +Kind regards +sara +Sara Signorini +Project Management Supply Manager +Line Solution Projects +Sidel Group +Sidel SpA +Via La Spezia 241/A +43124 Parma - Italy +Tel.: +39 0521 999 761 +General + +Da: Trepin, Catherine + +Inviato: martedì 18 marzo 2025 10:44 + +Oggetto: INTERNAL PO4501841001 - H5.013847 - SO 726300 - ANDIA LACTEOS _ 174168 A.1.1 + +Dears, +Please find herewith enclosed internal PO 4501841001 +Jose Marques in copy of this email is the PM in charge of this project +Thanks to assign a PM and confirm delivery LT +Remaining at your disposal, +Have a nice day, +Cordialement – Best Regards – +Mit freundlichen Grüßen +Catherine TREPIN +CUSTOMER MANAGEMENT ECA +Services Project Management - +Sidel +Cell PHONE : +33 (0) 614 167 994 +www.sidel.com +SAFE AT WORK – SAFELY HOME" +Your safety is our number one priority at Sidel. + +General + +This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error), please notify the sender immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution + of the material in this e-mail is strictly forbidden. + +--- + diff --git a/04-SIDEL/05 - E5.007161 - Modifica O&U - SAE346/SAE346 - Software adaptation from Master - Notes.md b/04-SIDEL/05 - E5.007161 - Modifica O&U - SAE346/SAE346 - Software adaptation from Master - Notes.md index 747ae62..d1aa5ce 100644 --- a/04-SIDEL/05 - E5.007161 - Modifica O&U - SAE346/SAE346 - Software adaptation from Master - Notes.md +++ b/04-SIDEL/05 - E5.007161 - Modifica O&U - SAE346/SAE346 - Software adaptation from Master - Notes.md @@ -154,38 +154,38 @@ ### Digital Inputs (E - DI_) *** -|Dirección PLC|Tag SIDEL Mixer|Tipo Dato|Descripción PLC|Descripción SIDEL Mixer|Observaciones| -|---|---|---|---|---|---| -|E5.0|DI_MaxTempAlarm|Bool|MAX TEMPERATURE ALARM|Electrical Cabinet High Temperature|Coincidencia directa| -|E5.1|DI_AuxVoltage_On|Bool|AUXILIARY CIRC. ON|Electrical Panel Restored|Función similar| -|E5.2|DI_Emergency_Pressed|Bool|EMERGENCY EMERGENZA|Electrical Panel Emergency Button|Coincidencia directa| -|E5.3|DI_UPSBatteryReady|Bool|BUFFER BATTERY READY|UPS Battery ready|Función similar| -|E5.4|DI_UPSAlarm|Bool|UPS ALARM|UPS Alarm|Coincidencia exacta| -|E5.5|DI_UPSsupply|Bool|BATTERY POWER SUPPLY|UPS supply OK|Función similar| -|E10.0|DI_PPN301_Ovrld|Bool|P1 WATER PUMP OVERLOAD SWITCH|PPN301 - Deaireator Pump Overload|Según equivalencia P1=301| -|E10.1|DI_PPP302_Ovrld|Bool|SYRUP PUMP OVERLOAD|PPP302 - Syrup Pump Overload|Según equivalencia P2=302| -|E10.2|DI_PPM303_Ovrld|Bool|OVERPRESSURE PUMP THERMIC SWITCH|PPM303 - Product Pump Overload|Según equivalencia P3=303| -|E10.3|DI_PPM306_Ovrld|Bool|RECIRCULATION PUMP OVERLOAD|PPM306 - Recirculating Pump Overload|Según equivalencia P6=306| -|E11.0|DI_PPN301_Contactor|Bool|P1 WATER PUMP FAULT / Feedback|PPN301 - Deaireator Pump Feedback|Corresponde a señal K (feedback)| -|E11.1|DI_PPP302_Contactor|Bool|SYRUP PUMP FAULT / Feedback|PPP302 - Syrup Pump Feedback|Corresponde a señal K (feedback)| -|E11.3|DI_PPM306_Contactor|Bool|PRODUCT RECYCLE PUMP|PPM306 - Recirculating Pump Feedback|Corresponde a señal K (feedback)| -|E12.0|DI_PPN301_SoftStOvr|Bool|SOFTSTART RUNNING|PPN301 - Deaireator Pump Softstarter Ready|Función similar| -|E12.4|DI_Air_InletPress_OK|Bool|AIR PRESSURE|Air Pressure Switch|Función similar| -|E12.5|DI_LSN301L|Bool|DEARETOR 1 MINIMUM LEVELPROBE|LSN301_L - Deaireator Tank Minimun Level|Coincidencia directa| -|E12.6|DI_LSM302L|Bool|STORE TANK MIN LEVELPROBE|LSM302_L - Product Tank Minimun Level|Coincidencia directa| -|E60.0|DI_CIP_CIP_Enable|Bool|CIP MODE|From CIP Enable|Función similar| -|E60.1|DI_CIP_CIP_Rinse|Bool|RINSE MODE|From CIP Running|Función similar| -|E60.2|DI_CIP_Drain|Bool|CIP DRAINAGE REQUEST|From CIP Drain|Coincidencia directa| -|E60.3|DI_CIP_CleaningCompleted|Bool|CIP COMPLETED|CIP - Cip Cleaning Completed|Coincidencia directa| -|E68.0|DI_SyrRoom_Pump_Ready|Bool|SYRUPS ROOM PUMP RUN|Syrup Room - Pump ready|Función similar| -|E68.1|DI_SyrRoom_WatPumpReady|Bool|WATER PUMP SYRUP ROOM|From Syrup Room - Water Pump Ready|Coincidencia directa| -|E102.2|DI_AVM346_Open|Bool|AVM346 OPEN|AVM346 - Feedback ON|Coincidencia exacta| -|E102.3|DI_AVM362_Open|Bool|AVM362 OPEN|AVM362 - Feedback ON|Coincidencia exacta| -|E112.2|DI_AVM346_Close|Bool|AVM346 CLOSED|AVM346 - Feedback OFF|Coincidencia exacta| -|E112.3|DI_AVM362_Close|Bool|AVM362 CHIUSA|AVM362 - Feedback OFF|Coincidencia exacta| -|E112.4|DI_RMM301_Closed|Bool|CLOSED VALVE RMM301|RMM301 - Feedback OFF (VM1WATER)|Coincidencia exacta| -|E112.5|DI_RMP302_Closed|Bool|CLOSED VALVE RMP302|RMP302 - Feedback OFF (VM2 SYRUP)|Coincidencia exacta| -|E112.6|DI_RMM303_Closed|Bool|CLOSED VALVE RMM303|RMM303 - Feedback OFF (VM3 CO2)|Coincidencia exacta| +| Dirección PLC | Tag SIDEL Mixer | Tipo Dato | Descripción PLC | Descripción SIDEL Mixer | Observaciones | +| ------------- | ------------------------ | --------- | -------------------------------- | ------------------------------------------ | -------------------------------- | +| E5.0 | DI_MaxTempAlarm | Bool | MAX TEMPERATURE ALARM | Electrical Cabinet High Temperature | Coincidencia directa | +| E5.1 | DI_AuxVoltage_On | Bool | AUXILIARY CIRC. ON | Electrical Panel Restored | Función similar | +| E5.2 | DI_Emergency_Pressed | Bool | EMERGENCY EMERGENZA | Electrical Panel Emergency Button | Coincidencia directa | +| E5.3 | DI_UPSBatteryReady | Bool | BUFFER BATTERY READY | UPS Battery ready | Función similar | +| E5.4 | DI_UPSAlarm | Bool | UPS ALARM | UPS Alarm | Coincidencia exacta | +| E5.5 | DI_UPSsupply | Bool | BATTERY POWER SUPPLY | UPS supply OK | Función similar | +| E10.0 | DI_PPN301_Ovrld | Bool | P1 WATER PUMP OVERLOAD SWITCH | PPN301 - Deaireator Pump Overload | Según equivalencia P1=301 | +| E10.1 | DI_PPP302_Ovrld | Bool | SYRUP PUMP OVERLOAD | PPP302 - Syrup Pump Overload | Según equivalencia P2=302 | +| E10.2 | DI_PPM303_Ovrld | Bool | OVERPRESSURE PUMP THERMIC SWITCH | PPM303 - Product Pump Overload | Según equivalencia P3=303 | +| E10.3 | DI_PPM306_Ovrld | Bool | RECIRCULATION PUMP OVERLOAD | PPM306 - Recirculating Pump Overload | Según equivalencia P6=306 | +| E11.0 | DI_PPN301_Contactor | Bool | P1 WATER PUMP FAULT / Feedback | PPN301 - Deaireator Pump Feedback | Corresponde a señal K (feedback) | +| E11.1 | DI_PPP302_Contactor | Bool | SYRUP PUMP FAULT / Feedback | PPP302 - Syrup Pump Feedback | Corresponde a señal K (feedback) | +| E11.3 | DI_PPM306_Contactor | Bool | PRODUCT RECYCLE PUMP | PPM306 - Recirculating Pump Feedback | Corresponde a señal K (feedback) | +| E12.0 | DI_PPN301_SoftStOvr | Bool | SOFTSTART RUNNING | PPN301 - Deaireator Pump Softstarter Ready | Función similar | +| E12.4 | DI_Air_InletPress_OK | Bool | AIR PRESSURE | Air Pressure Switch | Función similar | +| E12.5 | DI_LSN301L | Bool | DEARETOR 1 MINIMUM LEVELPROBE | LSN301_L - Deaireator Tank Minimun Level | Coincidencia directa | +| E12.6 | DI_LSM302L | Bool | STORE TANK MIN LEVELPROBE | LSM302_L - Product Tank Minimun Level | Coincidencia directa | +| E60.0 | DI_CIP_CIP_Enable | Bool | CIP MODE | From CIP Enable | Función similar | +| E60.1 | DI_CIP_CIP_Rinse | Bool | RINSE MODE | From CIP Running | Función similar | +| E60.2 | DI_CIP_Drain | Bool | CIP DRAINAGE REQUEST | From CIP Drain | Coincidencia directa | +| E60.3 | DI_CIP_CleaningCompleted | Bool | CIP COMPLETED | CIP - Cip Cleaning Completed | Coincidencia directa | +| E68.0 | DI_SyrRoom_Pump_Ready | Bool | SYRUPS ROOM PUMP RUN | Syrup Room - Pump ready | Función similar | +| E68.1 | DI_SyrRoom_WatPumpReady | Bool | WATER PUMP SYRUP ROOM | From Syrup Room - Water Pump Ready | Coincidencia directa | +| E102.2 | DI_AVM346_Open | Bool | AVM346 OPEN | AVM346 - Feedback ON | Coincidencia exacta | +| E102.3 | DI_AVM362_Open | Bool | AVM362 OPEN | AVM362 - Feedback ON | Coincidencia exacta | +| E112.2 | DI_AVM346_Close | Bool | AVM346 CLOSED | AVM346 - Feedback OFF | Coincidencia exacta | +| E112.3 | DI_AVM362_Close | Bool | AVM362 CHIUSA | AVM362 - Feedback OFF | Coincidencia exacta | +| E112.4 | DI_RMM301_Closed | Bool | CLOSED VALVE RMM301 | RMM301 - Feedback OFF (VM1WATER) | Coincidencia exacta | +| E112.5 | DI_RMP302_Closed | Bool | CLOSED VALVE RMP302 | RMP302 - Feedback OFF (VM2 SYRUP) | Coincidencia exacta | +| E112.6 | DI_RMM303_Closed | Bool | CLOSED VALVE RMM303 | RMM303 - Feedback OFF (VM3 CO2) | Coincidencia exacta | ### Analog Inputs (IW - P_AI_) *** diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/SAE196 - IO Adapted.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/SAE196 - IO Adapted.md index d948846..468d1c9 100644 --- a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/SAE196 - IO Adapted.md +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/SAE196 - IO Adapted.md @@ -21,8 +21,8 @@ | I3.5 | DI_UPSAlarm | ALLARME UPS UPS ALARM | UPS Alarm | Alta | | I3.6 | DI_UPSsupply | ALIMENTAZIONE DA BATTERIE BATTERY POWER SUPPLY | UPS supply OK | Alta | | I3.7 | DI_UPSBatteryReady | BATTERIA TAMPONE PRONTA BUFFER BATTERY READY | UPS Battery ready | Alta | -| I4.3 | DI_Emergency_Pressed | ALARM ENABLING ABILITAZIONE ALLARME | Electrical Panel Emergency Button | Media | -| I4.4 | DI_Log_Sidel | ABILITAZIONEALLARME ALARMENABLING | Log son usuario Sidel | Baja | +| I4.3 | | ALARM ENABLING | | | +| I4.4 | | ABILITAZIONE ALLARME | | | | I5.0 | DI_SyrRoom_SyrPump_Running | POMPA SALA SCIROPPI INMARCIA SYRUPS ROOM PUMP RUN | From Syrup Room - Syrup Pump Running | Alta | | I7.1 | DI_Air_InletPress_OK | AIR PRESSURE GAUGE PRESSOSTATO ARIA | Air Pressure Switch | Alta | | I7.2 | DI_HVP301_Sensor | SENSORE VALVOLA SCARICO SCIROPPC SYRUP DISCHARGE VALVE SENSOR | GCP301 - Manual Syrup Valve Closed (NO) | Alta | diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/SAE196_c0.2_CAx_Export_Hardware_Tree.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/SAE196_c0.2_CAx_Export_Hardware_Tree.md new file mode 100644 index 0000000..4b3bb8a --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/SAE196_c0.2_CAx_Export_Hardware_Tree.md @@ -0,0 +1,176 @@ +# Project Hardware & IO Summary (Tree View v26) + +Identified 1 PLC(s). + +## PLC: PLC +- **Type Name:** `CPU 1516F-3 PN/DP` +- **Order Number:** `6ES7 516-3FP03-0AB0` +- **Firmware:** `V3.0` + +- **Networks:** + - ### ETHERNET_1 (Ethernet/Profinet) + - PLC Address on this Net: `10.1.33.11` + - **Devices on Network:** + - #### PLC (via E1 @ `10.1.33.11`) + - Address (on net): `10.1.33.11` + - Type Name: `CPU 1516F-3 PN/DP` + - Order No: `6ES7 516-3FP03-0AB0` + - Parent Structure: `Telaio di montaggio_0` + - *No IO Addresses found in modules under parent 'Telaio di montaggio_0' (ID: 87dfb601-a291-499a-9408-ed5b9093c796).* + + - ### PROFIBUS_1 (Profibus) + - PLC Address on this Net: `1` + - **Devices on Network:** + - #### PLC (via P1 @ `1`) + - Address (on net): `1` + - Type Name: `CPU 1516F-3 PN/DP` + - Order No: `6ES7 516-3FP03-0AB0` + - Parent Structure: `Telaio di montaggio_0` + - *No IO Addresses found in modules under parent 'Telaio di montaggio_0' (ID: 87dfb601-a291-499a-9408-ed5b9093c796).* + + - #### 045U1 (via PB1 @ `8`) + - Address (on net): `8` + - Parent Structure: `Rack_0` + - **IO Addresses (Aggregated from Structure):** + - **From Module:** PPO Type 8 Module consistent PCD_1 (Pos: N/A) + - `EW 1640..1659` (Len=160 bits) + - `AW 1640..1659` (Len=160 bits) + + - #### IM151_280A0 (via PB1 @ `10`) + - Address (on net): `10` + - Type Name: `IM 155-6 DP HF` + - Order No: `6ES7 155-6BU01-0CN0` + - Parent Structure: `Telaio di montaggio_0` + - **IO Addresses (Aggregated from Structure):** + - **From Module:** 300A0 (Pos: N/A) + - `EW 0..0` (Len=8 bits) + - **From Module:** 301A0 (Pos: N/A) + - `EW 1..1` (Len=8 bits) + - **From Module:** 302A0 (Pos: N/A) + - `EW 2..2` (Len=8 bits) + - **From Module:** 303A0 (Pos: N/A) + - `EW 3..3` (Len=8 bits) + - **From Module:** 304A0 (Pos: N/A) + - `EW 4..4` (Len=8 bits) + - **From Module:** 305A0 (Pos: N/A) + - `EW 5..5` (Len=8 bits) + - **From Module:** 306A0 (Pos: N/A) + - `EW 6..6` (Len=8 bits) + - **From Module:** 307A0 (Pos: N/A) + - `EW 7..7` (Len=8 bits) + - **From Module:** 320A0 (Pos: N/A) + - `AW 0..0` (Len=8 bits) + - **From Module:** 321A0 (Pos: N/A) + - `AW 1..1` (Len=8 bits) + - **From Module:** 322A0 (Pos: N/A) + - `AW 2..2` (Len=8 bits) + - **From Module:** 323A0 (Pos: N/A) + - `AW 3..3` (Len=8 bits) + - **From Module:** 324A0 (Pos: N/A) + - `AW 4..4` (Len=8 bits) + - **From Module:** 325A0 (Pos: N/A) + - `AW 5..5` (Len=8 bits) + - **From Module:** 326A0 (Pos: N/A) + - `AW 6..6` (Len=8 bits) + - **From Module:** 327A0 (Pos: N/A) + - `AW 7..7` (Len=8 bits) + - **From Module:** 340A1 (Pos: N/A) + - `EW 100..103` (Len=32 bits) + - **From Module:** 341A1 (Pos: N/A) + - `EW 104..107` (Len=32 bits) + - **From Module:** 342A1 (Pos: N/A) + - `EW 108..111` (Len=32 bits) + - **From Module:** 343A1 (Pos: N/A) + - `EW 112..115` (Len=32 bits) + - **From Module:** 344A1 (Pos: N/A) + - `EW 116..119` (Len=32 bits) + - **From Module:** 350A1 (Pos: N/A) + - `AW 100..103` (Len=32 bits) + - **From Module:** 351A1 (Pos: N/A) + - `AW 104..107` (Len=32 bits) + - **From Module:** 352A1 (Pos: N/A) + - `AW 108..111` (Len=32 bits) + - **From Module:** 353A1 (Pos: N/A) + - `AW 112..115` (Len=32 bits) + - **From Module:** 354A1 (Pos: N/A) + - `AW 116..119` (Len=32 bits) + - **From Module:** 355A1 (Pos: N/A) + - `AW 120..123` (Len=32 bits) + + - #### Festo_283E1 (via PB1 @ `12`) + - Address (on net): `12` + - Parent Structure: `Telaio di montaggio_0` + - **IO Addresses (Aggregated from Structure):** + - **From Module:** CPX-FB13: DP-Slave [Status]_1 (Pos: N/A) + - `EW 501..501` (Len=8 bits) + - **From Module:** MPA1S: VMPA1-FB-EMS-8 [8DO]_1 (Pos: N/A) + - `AW 16..16` (Len=8 bits) + - **From Module:** MPA1S: VMPA1-FB-EMS-8 [8DO]_2 (Pos: N/A) + - `AW 17..17` (Len=8 bits) + - **From Module:** MPA1S: VMPA1-FB-EMS-8 [8DO]_3 (Pos: N/A) + - `AW 18..18` (Len=8 bits) + - **From Module:** MPA1S: VMPA1-FB-EMS-8 [8DO]_4 (Pos: N/A) + - `AW 19..19` (Len=8 bits) + - **From Module:** MPA1S: VMPA1-FB-EMS-8 [8DO]_5 (Pos: N/A) + - `AW 20..20` (Len=8 bits) + + - #### Water_Volumetric_251U1 (via PB1 @ `20`) + - Address (on net): `20` + - Parent Structure: `Telaio di montaggio_0` + - **IO Addresses (Aggregated from Structure):** + - **From Module:** Totalizer Value / Control (Pos: N/A) + - `EW 3100..3104` (Len=40 bits) + - `AW 3100..3100` (Len=8 bits) + - **From Module:** Volume Flow (Pos: N/A) + - `EW 3080..3084` (Len=40 bits) + + - #### Syrup_Mass_252U1 (via PB1 @ `21`) + - Address (on net): `21` + - Parent Structure: `Telaio di montaggio_0` + - **IO Addresses (Aggregated from Structure):** + - **From Module:** Concentration (Pos: N/A) + - `EW 2050..2054` (Len=40 bits) + - **From Module:** Density (Pos: N/A) + - `EW 2045..2049` (Len=40 bits) + - **From Module:** Mass Flow (Pos: N/A) + - `EW 2030..2034` (Len=40 bits) + - **From Module:** Temperature (Pos: N/A) + - `EW 2055..2059` (Len=40 bits) + - **From Module:** Totalizer Value / Control (Pos: N/A) + - `EW 2070..2074` (Len=40 bits) + - `AW 2070..2070` (Len=8 bits) + + - #### CO2_Mass_253U1 (via PB1 @ `22`) + - Address (on net): `22` + - Parent Structure: `Telaio di montaggio_0` + - **IO Addresses (Aggregated from Structure):** + - **From Module:** Density (Pos: N/A) + - `EW 3215..3219` (Len=40 bits) + - **From Module:** Mass Flow (Pos: N/A) + - `EW 3200..3204` (Len=40 bits) + - **From Module:** Temperature (Pos: N/A) + - `EW 3225..3229` (Len=40 bits) + - **From Module:** Totalizer Value / Control (Pos: N/A) + - `EW 3240..3244` (Len=40 bits) + - `AW 3240..3240` (Len=8 bits) + + - #### Anton Paar_120U1 (via PB1 @ `40`) + - Address (on net): `40` + - Parent Structure: `Rack_0` + - **IO Addresses (Aggregated from Structure):** + - **From Module:** IN128 mPDS5>PLC_4_1 (Pos: N/A) + - `EW 15000..15031` (Len=256 bits) + - **From Module:** IN128 mPDS5>PLC_4_2 (Pos: N/A) + - `EW 15032..15063` (Len=256 bits) + - **From Module:** IN128 mPDS5>PLC_4_3 (Pos: N/A) + - `EW 15064..15095` (Len=256 bits) + - **From Module:** IN128 mPDS5>PLC_4_4 (Pos: N/A) + - `EW 15096..15127` (Len=256 bits) + - **From Module:** OUT128 PLC>mPDS5_4_1 (Pos: N/A) + - `AW 15000..15031` (Len=256 bits) + - **From Module:** OUT128 PLC>mPDS5_4_2 (Pos: N/A) + - `AW 15032..15063` (Len=256 bits) + - **From Module:** OUT128 PLC>mPDS5_4_3 (Pos: N/A) + - `AW 15064..15095` (Len=256 bits) + - **From Module:** OUT128 PLC>mPDS5_4_4 (Pos: N/A) + - `AW 15096..15127` (Len=256 bits) diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/AnalogInstrument.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/AnalogInstrument.md new file mode 100644 index 0000000..06fdbd4 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/AnalogInstrument.md @@ -0,0 +1,25 @@ +# UDT: AnalogInstrument + +## Members + +| Name | Datatype | Start Value | Comment | +|---|---|---|---| +| `Spare00` | `Bool` | `` | | +| `Spare01` | `Bool` | `` | | +| `Wait` | `Bool` | `` | | +| `Alarm` | `Bool` | `` | | +| `Mask` | `Bool` | `` | | +| `_LessThanSP` | `Bool` | `` | | +| `_GreaterThanSP` | `Bool` | `` | | +| `Config` | `Bool` | `` | | +| `Spare10` | `Bool` | `` | | +| `Spare11` | `Bool` | `` | | +| `Spare12` | `Bool` | `` | | +| `_AckAlarm` | `Bool` | `` | | +| `PV` | `Real` | `` | | +| `SP` | `Real` | `` | | +| `Offset` | `Real` | `` | | +| `Zero` | `Real` | `` | | +| `Span` | `Real` | `` | | +| `PVFiltered` | `Real` | `` | | + diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Baialage.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Baialage.md new file mode 100644 index 0000000..ad97921 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Baialage.md @@ -0,0 +1,124 @@ +```pascal +// Block Type: FC +// Block Number: 1804 +// Original Network Languages: LAD + +FUNCTION "Baialage" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + mLatchONS : Bool; + mBalaiage_Req : Bool; + BalaiageFlowErrorABS : Real; + mAuxReal : Real; +END_VAR + + #_1M_30S : Bool; // Auto-generated temporary +BEGIN + + // Network 1: Qualifier (Original Language: LAD) + + "Procedure_Variables"."Balaiage"."Qualifier" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Balaiage" AND "gBlenderProdMode" AND "gBlenderRinseMode" AND "Blender_Variables_Pers"."gCarboStillRecipe" AND "gIN_VoltageOk"; + + // Network 2: Request (Original Language: LAD) + + // Edge Logic handled by Coil 29 + "mBaialageReqONS" := "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_BaialageReq" OR "Procedure_Variables"."Blender_Run"."Request"; // P_TRIG("HMI_Variables_Cmd"."Commands_From_HMI"."CMD_BaialageReq" OR "Procedure_Variables"."Blender_Run"."Request") - Mem: "mBaialageReqONS" + + "Procedure_Variables"."Balaiage"."Request" := ("HMI_Variables_Cmd"."Commands_From_HMI"."CMD_BaialageReq" AND NOT "mBaialageReqONS") OR ("Procedure_Variables"."Blender_Run"."Request" AND NOT "mBaialageReqONS"); + "mBaialageReqONS" := "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_BaialageReq" OR "Procedure_Variables"."Blender_Run"."Request"; // P_TRIG("HMI_Variables_Cmd"."Commands_From_HMI"."CMD_BaialageReq" OR "Procedure_Variables"."Blender_Run"."Request") - Mem: "mBaialageReqONS" + + // Network 3: Reset (Original Language: LAD) + + "Procedure_Variables"."Balaiage"."Reset" := "Procedure_Variables"."Balaiage"."Qualifier" OR ("Procedure_Variables"."Balaiage"."Latch" AND "gEmergencyPressed"); + + // Network 4: Done Reset (Original Language: LAD) + + IF "Procedure_Variables"."Balaiage"."Reset" THEN + "Procedure_Variables"."Balaiage"."Done" := FALSE; + END_IF; + + // Network 5: Request (Original Language: LAD) + + // Edge Logic handled by Coil 28 + "mBaialage_Request" := "Procedure_Variables"."Balaiage"."Reset" AND "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_BaialageReq"; // P_TRIG("Procedure_Variables"."Balaiage"."Reset" AND "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_BaialageReq") - Mem: "mBaialage_Request" + + "mBalaiage_Req" := "Procedure_Variables"."Balaiage"."Reset" AND "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_BaialageReq" AND NOT "mBaialage_Request"; + "mBaialage_Request" := "Procedure_Variables"."Balaiage"."Reset" AND "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_BaialageReq"; // P_TRIG("Procedure_Variables"."Balaiage"."Reset" AND "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_BaialageReq") - Mem: "mBaialage_Request" + + // Network 6: Wait (Original Language: LAD) + + "Procedure_Variables"."Balaiage"."Wait" := "AUX FALSE"; + + // Network 7: Latch (Original Language: LAD) + + "Procedure_Variables"."Balaiage"."Latch" := ("Procedure_Variables"."Balaiage"."Request" AND "Procedure_Variables"."Balaiage"."Done" AND "Procedure_Variables"."Balaiage"."Reset" AND "FirstScan") OR ("Procedure_Variables"."Balaiage"."Done" AND "Procedure_Variables"."Balaiage"."Reset" AND "mBalaiage_Req" AND "FirstScan"); + + // Network 8: Latch ONS (Original Language: LAD) + + // Edge Logic handled by Coil 26 + "M19074" := "Procedure_Variables"."Balaiage"."Latch"; // P_TRIG("Procedure_Variables"."Balaiage"."Latch") - Mem: "M19074" + + "mLatchONS" := "Procedure_Variables"."Balaiage"."Latch" AND NOT "M19074"; + "M19074" := "Procedure_Variables"."Balaiage"."Latch"; // P_TRIG("Procedure_Variables"."Balaiage"."Latch") - Mem: "M19074" + + // Network 9: Product Tank Pressure Running (Original Language: LAD) + + "Procedure_Variables"."Balaiage"."Running" := "Procedure_Variables"."Balaiage"."Wait" AND "Procedure_Variables"."Balaiage"."Latch"; + + "HMI_Variables_Status"."Procedures"."BalaiageRun" := "Procedure_Variables"."Balaiage"."Latch"; + + // Network 10: Product Tank Pressure Running (Original Language: LAD) + + IF "Procedure_Variables"."Balaiage"."Running" THEN + "gSP_AVM321" := TRUE; + END_IF; + + IF "Procedure_Variables"."Balaiage"."Running" THEN + "gSP_AVM397" := TRUE; + END_IF; + + // Network 11: PrdTankPressFault (Original Language: LAD) + + "mBaialage_Fault"(IN := "Procedure_Variables"."Balaiage"."Running" AND "Procedure_Variables"."TM301_Drain"."Latch" AND "gBalaiageTankFlowOK" AND "gBlenderRinseMode", PT := S5T#1M_30S); // TODO: Declarar "mBaialage_Fault" : TON; + + "gBalaiage_Fault" := "mBaialage_Fault".Q; + + // Network 12: Aux (Original Language: LAD) + + IF "gBalaiage_MaxFlow" THEN + "mAuxReal" := "Filler_Head_Variables"."Filler_Speed" * "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_BottleSize"; + END_IF; + + IF "gBalaiage_MaxFlow" THEN + "mAuxReal" := "mAuxReal" * 0.000999; + END_IF; + + IF "gBalaiage_MaxFlow" THEN + "mAuxReal" := "mAuxReal" * 1.1; + END_IF; + + IF "HMI_Instrument"."FTM305"."PVFiltered" >= 5.0 THEN + "mAuxReal" := "HMI_Instrument"."FTM305"."PVFiltered"; + END_IF; + + // Network 13: Tank Flow Ok (Original Language: LAD) + // PrdTankPressError = Press_SP - Press_PV + + "Blender_Variables"."gBalaiageFlowError" := "mAuxReal" - "HMI_Instrument"."FTM305"."PVFiltered"; + + // Network 14: CO2MainValveDelay (Original Language: LAD) + + // Network 14 did not produce printable SCL code. + + // Network 15: Done (Original Language: LAD) + + // PBox SymPy processed, logic in consumer + "mBalaiageDoneONS" := "gBlenderCIPMode"; // P_TRIG("gBlenderCIPMode") - Mem: "mBalaiageDoneONS" + + "Procedure_Variables"."Balaiage"."Done" := "Procedure_Variables"."Balaiage"."Done" OR ("gBlenderCIPMode" AND NOT "mBalaiageDoneONS"); + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlendFill_StartUp_Seq.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlendFill_StartUp_Seq.md new file mode 100644 index 0000000..f7d0bcc --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlendFill_StartUp_Seq.md @@ -0,0 +1,468 @@ +```pascal +// Block Type: FC +// Block Name (Original): BlendFill StartUp_Seq +// Block Number: 1814 +// Original Network Languages: LAD, STL + +FUNCTION "BlendFill_StartUp_Seq" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INOUT + mStep : Int; + mTimer : Int; + mTransition : Bool; + mFillerProdLoadedInit : Real; + mFillerProdLoading : Real; + mFillerLoadAgain : Bool; + mFillerLoadAfterDrain : Bool; +END_VAR + +VAR_TEMP + mAuxCalc : Real; + mTimeSP : Int; + mLoad1_End : Bool; + mNextStep : Int; + __PlcmigTempFillBits_10B0 : Array[0..7] of Bool; +END_VAR + +BEGIN + + // Network 1: STEP CONTROL (Original Language: STL) + + // --- BEGIN STL Network 1 --- + + L "mStep" + JL LEND + JU ST00 + JU ST01 + JU ST02 + JU ST03 + JU ST04 + JU ST05 + JU ST06 + JU ST07 + LEND: JU FULL + FULL: L 0 + T "mStep" + JU END + + // --- END STL Network 1 --- + + // Network 2: STEP 00 (Original Language: LAD) + // Step 0: Wait Buffer Tank Pressurization + // With QCO The Filler use an indipendent CO2 valve then the step has been + // bypassed + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled" THEN + "mNextStep" := 4; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled" THEN + "mTimeSP" := 0; + END_IF; + + IF NOT "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled" THEN + "mNextStep" := 1; + END_IF; + + IF NOT "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled" THEN + "mTimeSP" := 6; + END_IF; + + // Network 3: End Blend Reset (Original Language: LAD) + + IF "AUX FALSE" THEN + "Procedure_Variables"."BlendFill_StartUp"."EnBlend" := FALSE; + END_IF; + + // Network 4: STEP 00 (Original Language: STL) + + // --- BEGIN STL Network 4 --- + + A_BRACK + A "gEqPressOk" + A "gEqPressSelected" + O + A "gBlenderTankPress_Ok" + AN "gEqPressSelected" + ON "gBlendFiStillWaterByPass" + O "HMI_Blender_Parameters".Processor_Options.Blender_OPT._FastChangeOverEnabled + BRACKET + = "__PlcmigTempFillBits_10B0"[0] + BLD 103 + A_BRACK + O "gIN_LinePressCO2Ok" + O "HMI_Blender_Parameters".Processor_Options.Blender_OPT._FastChangeOverEnabled + BRACKET + = "__PlcmigTempFillBits_10B0"[1] + BLD 103 + A "Procedure_Variables".BlendFill_StartUp.Wait + = "__PlcmigTempFillBits_10B0"[2] + BLD 103 + A CLK_0.5S + = "__PlcmigTempFillBits_10B0"[3] + BLD 103 + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 4 --- + + // Network 5: STEP 01 (Original Language: LAD) + // Step 1: Wait from Filler Enable TO Open EV46 - CO2 Valve - + // With QCO The Filler use an indipendent CO2 valve then the step has been + // bypassed + + IF "AUX TRUE" THEN + "Procedure_Variables"."BlendFill_StartUp"."EnBlend" := FALSE; + END_IF; + + // Network 6: STEP 01 (Original Language: STL) + + // --- BEGIN STL Network 6 --- + + A "gIN_Filler_AVM346_En" + = "__PlcmigTempFillBits_10B0"[0] + BLD 103 + A "AUX TRUE" + = "__PlcmigTempFillBits_10B0"[1] + BLD 103 + A "Procedure_Variables".BlendFill_StartUp.Wait + = "__PlcmigTempFillBits_10B0"[2] + BLD 103 + A CLK_0.5S + = "__PlcmigTempFillBits_10B0"[3] + BLD 103 + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 6 --- + + // Network 7: STEP 02 (Original Language: LAD) + // Step 2: Filler Pipe Flushing + // With QCO The Filler use an indipendent CO2 valve then the step has been + // bypassed + + IF "AUX TRUE" THEN + "Procedure_Variables"."BlendFill_StartUp"."EnBlend" := FALSE; + END_IF; + + // Network 8: MIX - Procedure auxiliary variable (Original Language: LAD) + + IF "gIN_Filler_AVM346_En" THEN + "gSP_AVM346" := TRUE; + END_IF; + + // Network 9: STEP 02 (Original Language: STL) + + // --- BEGIN STL Network 9 --- + + A "gIN_FillerEndFlushing" + = "__PlcmigTempFillBits_10B0"[0] + BLD 103 + A "AUX TRUE" + = "__PlcmigTempFillBits_10B0"[1] + BLD 103 + A "Procedure_Variables".BlendFill_StartUp.Wait + = "__PlcmigTempFillBits_10B0"[2] + BLD 103 + A CLK_0.5S + = "__PlcmigTempFillBits_10B0"[3] + BLD 103 + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 9 --- + + // Network 10: STEP 03 (Original Language: LAD) + // Step 3: BlendFill Pressurization AT Equilibrium Pressure + // With QCO The Filler use an indipendent CO2 valve then the step has been + // bypassed + + IF "AUX TRUE" THEN + "Procedure_Variables"."BlendFill_StartUp"."EnBlend" := FALSE; + END_IF; + + // Network 11: STEP 03 (Original Language: LAD) + + IF "gIN_Filler_AVM346_En" THEN + "gSP_AVM346" := TRUE; + END_IF; + + // Network 12: STEP 03 (Original Language: STL) + + // --- BEGIN STL Network 12 --- + + A_BRACK + A "gEqPressOk" + A "gEqPressSelected" + O + A "gBlenderTankPress_Ok" + AN "gEqPressSelected" + ON "gBlendFiStillWaterByPass" + BRACKET + = "__PlcmigTempFillBits_10B0"[0] + BLD 103 + A "AUX TRUE" + = "__PlcmigTempFillBits_10B0"[1] + BLD 103 + A "Procedure_Variables".BlendFill_StartUp.Wait + = "__PlcmigTempFillBits_10B0"[2] + BLD 103 + A CLK_0.5S + = "__PlcmigTempFillBits_10B0"[3] + BLD 103 + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 12 --- + + // Network 13: STEP 04 (Original Language: LAD) + // Step 4: Wait First Production Completed - OLD - + // NEW : Wait Product Tank Stop Level + + "Procedure_Variables"."BlendFill_StartUp"."EnBlend" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled"; + + // Network 14: STEP 04 (Original Language: LAD) + + IF "gIN_Filler_AVM346_En" THEN + "gSP_AVM346" := TRUE; + END_IF; + + // Network 15: STEP 03 (Original Language: LAD) + + IF "gPrdTank_Empty" THEN + "gSP_AVM313" := TRUE; + END_IF; + + IF "gPrdTank_Empty" AND "Procedure_Variables"."BlendFill_StartUp"."Wait" THEN + "Filler_Head_Variables"."Head_PID_Manual_Value" := "HMI_Blender_Parameters"."ProcessSetup"."_StartUpPPM303Freq"; + END_IF; + + IF ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled" AND "gWaitLevToHold_TankPress" AND "gPrdTank_Empty" AND "Procedure_Variables"."BlendFill_StartUp"."Wait") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled" AND "gBlenderLevelTarget" AND "gPrdTank_Empty" AND "Procedure_Variables"."BlendFill_StartUp"."Wait" AND "gBlenderStopLevel") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled" AND "gBlenderLevelTarget" AND "gPrdTank_Empty" AND "Procedure_Variables"."BlendFill_StartUp"."Wait" AND "Procedure_Variables"."First_Production"."Latch") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled" AND "gPrdTank_Empty" AND "Procedure_Variables"."BlendFill_StartUp"."Wait" AND "gBlenderStopLevel" AND "Procedure_Variables"."First_Production"."Done") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled" AND "gPrdTank_Empty" AND "Procedure_Variables"."BlendFill_StartUp"."Wait" AND "Procedure_Variables"."First_Production"."Latch" AND "Procedure_Variables"."First_Production"."Done") THEN + "gSP_PID_Head_Manual" := TRUE; + END_IF; + + // Network 16: STEP 04 (Original Language: LAD) + + "mFillerProdLoadedInit" := "System_RunOut_Variables"."TankProductAvailable"; + + // Network 17: STEP 04 (Original Language: STL) + + // --- BEGIN STL Network 17 --- + + A "AUX TRUE" + = "__PlcmigTempFillBits_10B0"[0] + BLD 103 + A_BRACK + A_BRACK + A "gBlenderStopLevel" + A "Procedure_Variables".First_Production.Latch + O + A "Procedure_Variables".First_Production.Done + A "gBlenderLevelTarget" + BRACKET + AN "HMI_Blender_Parameters".Processor_Options.Blender_OPT._FastChangeOverEnabled + O + A "gWaitLevToHold_TankPress" + A "gIN_Filler_AVM362_En" + BRACKET + = "__PlcmigTempFillBits_10B0"[1] + BLD 103 + A "Procedure_Variables".BlendFill_StartUp.Wait + = "__PlcmigTempFillBits_10B0"[2] + BLD 103 + A CLK_0.5S + = "__PlcmigTempFillBits_10B0"[3] + BLD 103 + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 17 --- + + // Network 18: STEP 05 (Original Language: LAD) + // Step 5: Start TO Load Product TO Filler without P3 + + IF "AUX FALSE" THEN + "gSP_FillerProdLoad" := TRUE; + END_IF; + + IF "mFillerLoadAfterDrain" AND "AUX FALSE" THEN + "Procedure_Variables"."BlendFill_StartUp"."EnBlend" := TRUE; + END_IF; + + // Network 19: STEP 05 (Original Language: LAD) + + IF "gIN_Filler_AVM346_En" THEN + "gSP_AVM346" := TRUE; + END_IF; + + // Network 20: STEP 05 (Original Language: LAD) + + IF "gIN_Filler_AVM362_En" THEN + "gSP_AVM362" := TRUE; + END_IF; + + // Network 21: STEP 05 (Original Language: LAD) + + IF NOT "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled" OR NOT "mFillerLoadAfterDrain" OR NOT "mFillerLoadAgain" THEN + "mAuxCalc" := "HMI_Blender_Parameters"."ProcessSetup"."_FillerProdPipeMass" * 1.0; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled" AND "mFillerLoadAfterDrain" AND "mFillerLoadAgain" THEN + "mAuxCalc" := 1.0; + END_IF; + + // Network 22: STEP 05 (Original Language: LAD) + + "mFillerProdLoading" := "mFillerProdLoadedInit" - "System_RunOut_Variables"."TankProductAvailable"; + + // Network 23: STEP 05 (Original Language: STL) + + // --- BEGIN STL Network 23 --- + + A_BRACK + O "gWorkshopTest" + O "HMI_Device".AVM346.Out + BRACKET + A_BRACK + A "HMI_Device".AVM362.Out + O + A "HMI_Device".AVM363.Out + BRACKET + = "__PlcmigTempFillBits_10B0"[0] + BLD 103 + A_BRACK + A_BRACK + ON "HMI_Blender_Parameters".Processor_Options.Blender_OPT._FastChangeOverEnabled + O "mFillerLoadAfterDrain" + BRACKET + A_BRACK + L "mFillerProdLoading" + L "mAuxCalc" + GT_R + BRACKET + O + AN "mFillerLoadAfterDrain" + A "gBlenderLevelTarget" + O "gIN_FillerEndTankFilling" + O "mFillerFirstLoadTimeOut" + BRACKET + A "gBlenderTankPress_Ok" + = "__PlcmigTempFillBits_10B0"[1] + BLD 103 + A "Procedure_Variables".BlendFill_StartUp.Wait + = "__PlcmigTempFillBits_10B0"[2] + BLD 103 + A CLK_0.5S + = "__PlcmigTempFillBits_10B0"[3] + BLD 103 + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 23 --- + + // Network 24: STEP 06 (Original Language: LAD) + // Step 6: LOAD 2 with PPM303 Pump in regulation 2/3 m, wait End + // Tank Filling from Filler + + IF "AUX FALSE" THEN + "gSP_FillerProdLoad" := TRUE; + END_IF; + + IF "AUX FALSE" THEN + "Interlocking_Variables"."MIXER_FILLER_SEND"."PROD_Prod_Load_2" := TRUE; + END_IF; + + "Procedure_Variables"."BlendFill_StartUp"."EnBlend" := "AUX FALSE" AND "Procedure_Variables"."First_Production"."Done"; + + IF "AUX FALSE" AND "Procedure_Variables"."BlendFill_StartUp"."Wait" THEN + "Filler_Head_Variables"."Head_PID_Manual_Value" := "HMI_PID"."PPM303"."FfOut"; + END_IF; + + IF "AUX FALSE" AND "Procedure_Variables"."BlendFill_StartUp"."Wait" THEN + "gSP_PID_Head_Manual" := TRUE; + END_IF; + + // Network 25: STEP 06 (Original Language: LAD) + // mPPM303RampSlewMax = mPPM303RampEndFreq / (Time to end ramp in sec) + + "mPPM303RampSlewMax" := "HMI_PID"."PPM303"."FfOut" / 10.0; + + // Network 26: STEP 06 (Original Language: LAD) + + "mPPM303StartUpRamp"(i_Cycle := "Time_50ms", i_InValue := "HMI_PID"."PPM303"."FfOut", i_SlewMax := "mPPM303RampSlewMax", out := "Filler_Head_Variables"."Head_PID_Manual_Value"); + + // Network 27: STEP 06 (Original Language: LAD) + + IF "gIN_Filler_AVM346_En" THEN + "gSP_AVM346" := TRUE; + END_IF; + + // Network 28: STEP 06 (Original Language: LAD) + + IF "gIN_Filler_AVM362_En" THEN + "gSP_AVM362" := TRUE; + END_IF; + + // Network 29: STEP 06 (Original Language: STL) + + // --- BEGIN STL Network 29 --- + + A "gIN_FillerEndTankFilling" + = "__PlcmigTempFillBits_10B0"[0] + BLD 103 + A "AUX TRUE" + = "__PlcmigTempFillBits_10B0"[1] + BLD 103 + A "Procedure_Variables".BlendFill_StartUp.Wait + = "__PlcmigTempFillBits_10B0"[2] + BLD 103 + A CLK_0.5S + = "__PlcmigTempFillBits_10B0"[3] + BLD 103 + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 29 --- + + // Network 30: STEP 07 (Original Language: LAD) + + IF "AUX FALSE" THEN + "mFillerLoadAgain" := FALSE; + END_IF; + + IF "AUX FALSE" THEN + "mFillerLoadAfterDrain" := FALSE; + END_IF; + + IF "AUX FALSE" THEN + "Procedure_Variables"."BlendFill_StartUp"."EnBlend" := FALSE; + END_IF; + + IF "AUX FALSE" THEN + "Interlocking_Variables"."MIXER_FILLER_SEND"."PROD_Prod_Load_2" := FALSE; + END_IF; + + IF "AUX FALSE" THEN + "Procedure_Variables"."BlendFill_StartUp"."Done" := TRUE; + END_IF; + + // Network 31: SEQUENCER END (Original Language: STL) + + // --- BEGIN STL Network 31 --- + + END: NOP_0 + + // --- END STL Network 31 --- + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderCtrl_All_Auto.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderCtrl_All_Auto.md new file mode 100644 index 0000000..14fafa1 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderCtrl_All_Auto.md @@ -0,0 +1,75 @@ +```pascal +// Block Type: FC +// Block Name (Original): BlenderCtrl_All Auto +// Block Number: 2036 +// Original Network Languages: STL + +FUNCTION "BlenderCtrl_All_Auto" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + Dim_HMI_Device : Int; + PDim_HMI_Device : DWord; + Dim_HMI_PID : Int; + PDim_HMI_PID : DWord; +END_VAR + +BEGIN + + // Network 1: Devices (Original Language: STL) + // DEVICE + + // --- BEGIN STL Network 1 --- + + AUF "HMI_Device" + L_DBLG + T "Dim_HMI_Device" + L P#0.0 + L "Dim_HMI_Device" + SLD 3 + ADD_D + T "PDim_HMI_Device" + L P#0.0 + LAR1_ACCU1 + M100: SET + S DBX[AR1,P#0.0] + R DBX[AR1,P#0.1] + ADDAR1 P#2.0 + TAR1_ACCU1 + L "PDim_HMI_Device" + LT_D + JC M100 + + // --- END STL Network 1 --- + + // Network 2: PID (Original Language: STL) + + // --- BEGIN STL Network 2 --- + + AUF "HMI_PID" + L_DBLG + T "Dim_HMI_PID" + L P#0.0 + L "Dim_HMI_PID" + SLD 3 + ADD_D + T "PDim_HMI_PID" + L P#0.0 + LAR1_ACCU1 + M101: SET + R DBX[AR1,P#2.0] + R DBX[AR1,P#3.0] + L 0.0 + T DBD[AR1,P#28.0] + ADDAR1 P#76.0 + TAR1_ACCU1 + L "PDim_HMI_PID" + LT_D + JC M101 + + // --- END STL Network 2 --- + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderCtrl_CIPModeInit.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderCtrl_CIPModeInit.md new file mode 100644 index 0000000..25cf652 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderCtrl_CIPModeInit.md @@ -0,0 +1,18 @@ +```pascal +// Block Type: FC +// Block Number: 2013 +// Original Network Languages: LAD + +FUNCTION "BlenderCtrl_CIPModeInit" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +BEGIN + + // Network 1: PID Integral Value Reset (Original Language: LAD) + + BlenderPID_PIDResInteg(); + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderCtrl_InitErrors.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderCtrl_InitErrors.md new file mode 100644 index 0000000..2b9ca88 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderCtrl_InitErrors.md @@ -0,0 +1,29 @@ +```pascal +FUNCTION "BlenderCtrl_InitErrors" : Void +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : TASK2 +NAME : 'Name' +VERSION : 1.0 + +BEGIN + + + IF NOT "Blender_Variables_Pers".gWaterRecipe THEN + "Blender_Variables".gBlendError := "HMI_Blender_Parameters".ProcessSetup._StartUpBrixExtraWater ; + ELSE + "Blender_Variables".gBlendError := 0 ; + END_IF; + + + IF "Blender_Variables_Pers".gCarboStillRecipe THEN + "Blender_Variables".gCarboCO2Error := "HMI_Blender_Parameters".ProcessSetup._StartUpCO2ExtraWater * "HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Vols * "HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Fact ; + ELSE + "Blender_Variables".gCarboCO2Error := 0 ; + END_IF; + + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderCtrl_MFM Command.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderCtrl_MFM Command.md new file mode 100644 index 0000000..65e840e --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderCtrl_MFM Command.md @@ -0,0 +1,108 @@ +```pascal +FUNCTION "BlenderCtrl_MFM Command" : Void +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : TASK2 +NAME : 'Name' +VERSION : 1.0 + VAR_INPUT + mResetWaterTot : Bool; + mResetSyrupTot : Bool; + mResetCO2Tot : Bool; + mResetProductTot : Bool; + END_VAR + + VAR_TEMP + mWaterVFMCtrl : Int; + mSyrupMFMCtrl : Int; + mCO2MFMCtrl : Int; + mProductMFMCtrl : Int; + END_VAR + + +BEGIN + + + IF #mResetWaterTot THEN + #mWaterVFMCtrl := 1 ; + ELSE + #mWaterVFMCtrl := 0 ; + END_IF; + + IF #mResetSyrupTot THEN + #mSyrupMFMCtrl := 1 ; + ELSE + #mSyrupMFMCtrl := 0 ; + END_IF; + + IF #mResetCO2Tot THEN + #mCO2MFMCtrl := 1 ; + ELSE + #mCO2MFMCtrl := 0 ; + END_IF; + + IF #mResetProductTot THEN + #mProductMFMCtrl := 1 ; + ELSE + #mProductMFMCtrl := 0 ; + END_IF; + + CASE #mWaterVFMCtrl OF + 1: "P_FTN301_Tot_Ctrl" := 01; // Reset Totalizer + + 2: "P_FTN301_Tot_Ctrl" := 02 ; // Preset Totalizer + + ELSE: + "P_FTN301_Tot_Ctrl" := 00; + END_CASE; + + + IF "gSyrupRoomEn" THEN + CASE #mSyrupMFMCtrl OF + 1: "P_FTP302_Tot_Ctrl" := 01; (* Reset Totalizer 1*) + + 2: "P_FTP302_Tot_Ctrl" := 02; (* Reset Totalizer 2*) + + 3: "P_FTP302_Tot_Ctrl" := 03; (* Reset Totalizer 1 & 2*) + + 4: "P_FTP302_Tot_Ctrl" := 04; (* Zeropoint Adjust *) + + 5: "P_FTP302_Tot_Ctrl" := 05; (* Positive Zero Return *) + + 6: "P_FTP302_Tot_Ctrl" := 06; (* Negative Zero Return *) + + ELSE: + "P_FTP302_Tot_Ctrl" := 00; + END_CASE; + END_IF; + + CASE #mCO2MFMCtrl OF + 1: "P_FTM303_Tot_Ctrl" := 01; (* Reset Totalizer 1*) + + 2: "P_FTM303_Tot_Ctrl" := 02; (* Reset Totalizer 2 *) + + 3: "P_FTM303_Tot_Ctrl" := 03; (* Reset Totalizer 1 & 2*) + + 4: "P_FTM303_Tot_Ctrl" := 04; (* Zeropoint Adjust *) + + 5: "P_FTM303_Tot_Ctrl" := 05; (* Positive Zero Return *) + + 6: "P_FTM303_Tot_Ctrl" := 06; (* Negative Zero Return *) + ELSE: + "P_FTM303_Tot_Ctrl" := 00; + END_CASE; + + (*CASE mProductMFMCtrl OF + 1: gProductTotCtrl_Node17 := 01; (* Reset Totalizer 1*) + + 2: gProductTotCtrl_Node17 := 02 ; (* Preset Totalizer1 *) + + ELSE + gProductTotCtrl_Node17 := 00; + END_CASE;*) + + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderCtrl_MachineInit.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderCtrl_MachineInit.md new file mode 100644 index 0000000..ab00cb8 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderCtrl_MachineInit.md @@ -0,0 +1,1110 @@ +```pascal +// Block Type: FC +// Block Number: 2003 +// Original Network Languages: LAD, SCL + +FUNCTION "BlenderCtrl_MachineInit" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + #_10 : Bool; // Auto-generated temporary + #_16 : Bool; // Auto-generated temporary +END_VAR + +BEGIN + + // Network 1: Machine Init (Original Language: LAD) + + // Network 1 has no logic elements. + + // Network 2: Forcing Inputs Not Present in Hardware (M.Bettoni) (Original Language: SCL) + + // SCL extraction failed: StructuredText node not found. + + // Network 3: Commands (Original Language: LAD) + + "HMI_Variables_Cmd"."Commands_From_HMI"."F1_StartStop"."Enable" := "AUX TRUE" AND "mEnableStartTmr"; + + "HMI_Variables_Cmd"."Commands_From_HMI"."F7_DeviceControl"."Enable" := "AUX TRUE"; + + "HMI_Variables_Cmd"."Commands_From_HMI"."F8_AuxiliaryControl"."Enable" := "AUX TRUE"; + + "HMI_Variables_Cmd"."Commands_From_HMI"."F9_HornReset"."Enable" := "AUX TRUE"; + + "HMI_Variables_Cmd"."Commands_From_HMI"."F10_FaultReset"."Enable" := "AUX TRUE"; + + // Network 4: MIX - (Original Language: LAD) + + "gGencoldChillerEn" := "Blender_Variables_Pers"."gCoolerEnabled" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CoolerType", 1); + + // Network 5: MIX - (Original Language: LAD) + + "gProductChillerEn" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CoolerControl" >= 2; + + // Network 6: MIX - (Original Language: LAD) + + "gProdDoubleChillerEn" := Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CoolerControl", 3); + + // Network 7: MIX - (Original Language: LAD) + + "gWaterChillerEn" := Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CoolerControl", 1) OR Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CoolerControl", 3); + + // Network 8: MIX - (Original Language: LAD) + + "gSyrupRoomEn" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 1; + + // Network 9: To HMI (Original Language: LAD) + + "HMI_Device"."RVN301"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DeaireatorLevel"; + + "HMI_Device"."RVN301_1"."Config" := "AUX TRUE" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DeaireatorLevel"; + + // Network 10: To HMI (Original Language: LAD) + + "HMI_Device"."RVN302"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DeaireatorLevel" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair"; + + // Network 11: To HMI (Original Language: LAD) + + "HMI_Device"."RVN302_1"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DeaireatorLevel" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair"; + + // Network 12: To HMI (Original Language: LAD) + + "HMI_Device"."RVP303"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SyrupLevel" AND ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 1); + + // Network 13: To HMI (Original Language: LAD) + + "HMI_PID"."RVN302"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DeaireatorLevel"; + + "HMI_PID"."RVN302"."ConfigPID" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DeaireatorLevel" AND "AUX FALSE"; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DeaireatorLevel" AND "HMI_PID"."RVN302"."ConfigPID" AND "HMI_PID"."RVN302"."Config" AND "HMI_PID"."RVN302"."ManualControl"."ManOut" THEN + "HMI_PID"."RVN302"."Out" := 100.0; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DeaireatorLevel" AND "HMI_PID"."RVN302"."ConfigPID" AND "HMI_PID"."RVN302"."Config" AND "HMI_PID"."RVN302"."ManualControl"."ManOut" THEN + "HMI_PID"."RVN302"."Out" := 0.0; + END_IF; + + // Network 14: To HMI (Original Language: LAD) + + "HMI_Device"."EV04"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SyrupLevel" AND ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 1); + + // Network 15: To HMI (Original Language: LAD) + + "HMI_Device"."AVM311"."Config" := "AUX TRUE"; + + // Network 16: To HMI (Original Language: LAD) + + "HMI_Device"."AVM312"."Config" := Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass", 1); + + // Network 17: To HMI (Original Language: LAD) + + "HMI_Device"."AVM313"."Config" := "AUX TRUE"; + + // Network 18: To HMI (Original Language: LAD) + + "HMI_Device"."AVM315"."Config" := "AUX TRUE"; + + // Network 19: To HMI (Original Language: LAD) + + "HMI_Device"."AVM317"."Config" := "AUX TRUE"; + + "HMI_Device"."AVM317_1"."Config" := "AUX TRUE" AND "Disable_Bit"; + + "HMI_Device"."AVM317_2"."Config" := "AUX TRUE" AND "Disable_Bit"; + + // Network 20: To HMI (Original Language: LAD) + + "HMI_Device"."AVM318"."Config" := "AUX TRUE"; + + // Network 21: To HMI (Original Language: LAD) + + "HMI_Device"."AVM321"."Config" := "AUX TRUE"; + + // Network 22: To HMI (Original Language: LAD) + + "HMI_Device"."AVM322"."Config" := "AUX TRUE"; + + // Network 23: To HMI (Original Language: LAD) + + "HMI_Device"."AVM323"."Config" := "AUX TRUE"; + + "HMI_Device"."AVM323_1"."Config" := "AUX TRUE"; + + "HMI_Device"."AVM323_2"."Config" := "AUX TRUE"; + + // Network 24: To HMI (Original Language: LAD) + + "HMI_Device"."AVM326"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CarboPresent"; + + // Network 25: To HMI (Original Language: LAD) + + "HMI_Device"."AVM327"."Config" := "Disable_Bit" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_StillWaterByPass" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem"; + + "HMI_Device"."AVM328"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_StillWaterByPass" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem"; + + "HMI_Device"."AVM329"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_StillWaterByPass" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem"; + + "HMI_Device"."AVM327"."FeedbackOffConfig" := "Disable_Bit" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_StillWaterByPass" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem"; + + "HMI_Device"."AVM327"."FeedbackOnConfig" := "Disable_Bit" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_StillWaterByPass" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem"; + + "HMI_Device"."AVM328"."FeedbackOnConfig" := "Disable_Bit" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_StillWaterByPass" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem"; + + // Network 26: To HMI (Original Language: LAD) + + "HMI_Device"."AVM327_NoCMD"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_StillWaterByPass" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem"; + + "HMI_Device"."AVM328_NoCMD"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_StillWaterByPass" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem"; + + "HMI_Device"."AVM329_NoCMD"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_StillWaterByPass" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem"; + + "HMI_Device"."AVM327_NoCMD"."FeedbackOffConfig" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_StillWaterByPass" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "AUX FALSE"; + + "HMI_Device"."AVM327_NoCMD"."FeedbackOnConfig" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_StillWaterByPass" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "AUX FALSE"; + + "HMI_Device"."AVM331"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_StillWaterByPass" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem"; + + // Network 27: To HMI (Original Language: LAD) + + "HMI_Device"."AVM330"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_StillWaterByPass" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem"; + + // Network 28: To HMI (Original Language: LAD) + + "HMI_Device"."AVM339"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_StillWaterByPass" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem"; + + // Network 29: To HMI (Original Language: LAD) + + "HMI_Device"."AVM340"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_StillWaterByPass" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem"; + + // Network 30: To HMI (Original Language: LAD) + + "HMI_Device"."AVM341"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_ProdPressureType" > 0; + + // Network 31: To HMI (Original Language: LAD) + + "HMI_Device"."AVM342"."Config" := ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CarboPresent" AND ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_ProdPressureType" > 0)) OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CarboPresent" AND ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_GAS2InjectionType" > 0)); + + // Network 32: To HMI (Original Language: LAD) + + "HMI_Device"."AVM345"."Config" := "gProductChillerEn" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CoolerPresent"; + + "HMI_Device"."AVM345_1"."Config" := "gProductChillerEn" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CoolerPresent"; + + // Network 33: To HMI (Original Language: LAD) + + "HMI_Device"."AVM346"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem"; + + "HMI_Device"."AVM346"."FeedbackOnConfig" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem"; + + "HMI_Device"."AVM346"."FeedbackOffConfig" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem"; + + // Network 34: To HMI (Original Language: LAD) + + "HMI_Device"."AVM362"."Config" := "AUX TRUE"; + + "HMI_Device"."AVM362"."FeedbackOnConfig" := "AUX TRUE"; + + "HMI_Device"."AVM362"."FeedbackOffConfig" := "AUX TRUE"; + + // Network 35: To HMI (Original Language: LAD) + // to delete + + "HMI_Device"."AVM366"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled" AND "AUX FALSE"; + + // Network 36: To HMI (Original Language: LAD) + + "HMI_Device"."AVM367"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 1; + + // Network 37: To HMI (Original Language: LAD) + + "HMI_Device"."AVM368"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FillerRinseTank"; + + // Network 38: To HMI (Original Language: LAD) + + "HMI_Device"."AVM369"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem"; + + // Network 39: To HMI (Original Language: LAD) + + "HMI_Device"."AVM371"."Config" := "AUX FALSE"; + + // Network 40: To HMI (Original Language: LAD) + + "HMI_Device"."AVM372"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FillerRinseTank"; + + // Network 41: To HMI (Original Language: LAD) + + "HMI_Device"."AVM380"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "gProductChillerEn"; + + // Network 42: To HMI (Original Language: LAD) + + "HMI_Device"."AVM381"."Config" := "gProductChillerEn"; + + // Network 43: To HMI (Original Language: LAD) + + "HMI_Device"."AVM385"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_StillWaterByPass" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem"; + + // Network 44: To HMI (Original Language: LAD) + + "HMI_Device"."AVM386"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_StillWaterByPass" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem"; + + // Network 45: To HMI (Original Language: LAD) + + "HMI_Device"."AVM387"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 2; + + // Network 46: To HMI (Original Language: LAD) + + "HMI_Device"."AVM388"."Config" := "AUX TRUE"; + + // Network 47: To HMI (Original Language: LAD) + + "HMI_Device"."AVM388"."Config" := "AUX FALSE"; + + "HMI_Device"."AVM389"."Config" := "AUX FALSE"; + + // Network 48: To HMI (Original Language: LAD) + + "HMI_Device"."AVM391"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FlrBottleBttmClrCIP"; + + // Network 49: Prod Tank Press Only CO2 (Original Language: LAD) + + "mProdTankPressOnlyCO2" := Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_ProdPressureType", 0) OR Eq("HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_CO2_Air_N2_PressSelect", 1); + + // Network 50: Prod Tank Press CO2+StAir (Original Language: LAD) + + "mProdTankPressCO2_StAir" := Eq("HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_CO2_Air_N2_PressSelect", 2); + + // Network 51: Prod Tank Press CO2+N2 (Original Language: LAD) + + "mProdTankPressCO2_N2" := Eq("HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_CO2_Air_N2_PressSelect", 3); + + // Network 52: To HMI (Original Language: LAD) + + "HMI_Device"."AVM396"."Config" := Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_ProdPressureType", 1) OR Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_ProdPressureType", 3); + + // Network 53: To HMI (Original Language: LAD) + + "HMI_Device"."AVM397"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_ProdPressureType" > 0; + + // Network 54: To HMI (Original Language: LAD) + + IF Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_ProdPressureType", 0) THEN + "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_CO2_Air_N2_PressSelect" := 0; + END_IF; + + // Network 55: To HMI (Original Language: LAD) + + "HMI_Device"."AVN314"."Config" := "AUX TRUE"; + + // Network 56: To HMI (Original Language: LAD) + + "HMI_Device"."AVN318"."Config" := "AUX TRUE"; + + // Network 57: To HMI (Original Language: LAD) + + "HMI_Device"."AVN325"."Config" := Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_VacuumPump", 1); + + // Network 58: To HMI (Original Language: LAD) + + "HMI_Device"."AVN327"."Config" := "AUX TRUE"; + + "HMI_Device"."AVN327"."FeedbackOnConfig" := "AUX TRUE" AND "AUX FALSE"; + + // Network 59: To HMI (Original Language: LAD) + + "HMI_Device"."AVN347"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Deaireation" AND "AUX FALSE"; + + // Network 60: To HMI (Original Language: LAD) + + "HMI_Device"."AVN329"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair"; + + // Network 61: To HMI (Original Language: LAD) + + "HMI_Device"."AVN348"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_ByPassDeair"; + + // Network 62: To HMI (Original Language: LAD) + + "HMI_Device"."AVN349"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_ByPassDeair"; + + // Network 63: To HMI (Original Language: LAD) + + "HMI_Device"."AVN373"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair"; + + // Network 64: To HMI (Original Language: LAD) + + "HMI_Device"."AVN374"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair"; + + // Network 65: To HMI (Original Language: LAD) + + "HMI_Device"."AVN377"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InverterRecirPumpPPM306"; + + "HMI_Device"."AVN378"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InverterRecirPumpPPM306"; + + // Network 66: To HMI (Original Language: LAD) + + "HMI_Device"."AVN390"."Config" := "AUX FALSE"; + + // Network 67: To HMI (Original Language: LAD) + + "HMI_Device"."AVN395"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_VacuumPump" > 0; + + // Network 68: To HMI (Original Language: LAD) + + "HMI_Device"."AVP316"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 1; + + // Network 69: To HMI (Original Language: LAD) + + "HMI_Device"."AVP316_1"."Config" := "Disable_Bit" AND ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 1); + + // Network 70: To HMI (Original Language: LAD) + + "HMI_Device"."AVP324"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 1; + + // Network 71: To HMI (Original Language: LAD) + + "HMI_Device"."AVP344"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 1; + + // Network 72: To HMI (Original Language: LAD) + + "HMI_Device"."AVP361"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 1; + + "HMI_Device"."AVP361"."FeedbackOnConfig" := "AUX FALSE" AND ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 1); + + // Network 73: To HMI (Original Language: LAD) + + "HMI_Device"."AVP363"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled"; + + // Network 74: To HMI (Original Language: LAD) + + "HMI_Device"."AVP364"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled"; + + // Network 75: To HMI (Original Language: LAD) + + "HMI_Device"."AVP365"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled"; + + // Network 76: To HMI (Original Language: LAD) + + "HMI_Device"."AVP389"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled"; + + // Network 77: To HMI (Original Language: LAD) + + "HMI_Device"."AVP390"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled" OR "AUX FALSE"; + + // Network 78: To HMI (Original Language: LAD) + + "HMI_Device"."AVP391"."Config" := "AUX FALSE"; + + // Network 79: To HMI (Original Language: LAD) + + "HMI_Device"."AVP395"."Config" := "AUX TRUE"; + + // Network 80: To HMI (Original Language: LAD) + + "HMI_Device"."AVS331"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP"; + + // Network 81: To HMI (Original Language: LAD) + + "HMI_Device"."AVS332"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP"; + + // Network 82: To HMI (Original Language: LAD) + + "HMI_Device"."AVS333"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP"; + + // Network 83: To HMI (Original Language: LAD) + + "HMI_Device"."AVS334"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP"; + + // Network 84: To HMI (Original Language: LAD) + + "HMI_Device"."AVS335"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP"; + + // Network 85: To HMI (Original Language: LAD) + + "HMI_Device"."AVS336"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP"; + + // Network 86: To HMI (Original Language: LAD) + + "HMI_Device"."AVS337"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP"; + + // Network 87: To HMI (Original Language: LAD) + + "HMI_Device"."AVS338"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP"; + + // Network 88: To HMI (Original Language: LAD) + + "HMI_Device"."PPN301"."Config" := "AUX TRUE"; + + "HMI_Device"."PPN301"."FeedbackOnConfig" := "AUX TRUE" AND "AUX FALSE"; + + // Network 89: To HMI (Original Language: LAD) + + "HMI_Device"."PPP302"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 1; + + "HMI_Device"."PPP302"."FeedbackOnConfig" := "AUX FALSE" AND ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 1); + + // Network 90: To HMI (Original Language: LAD) + + "HMI_Device"."PPM303"."Config" := "AUX TRUE"; + + "HMI_Device"."PPM303"."FeedbackOnConfig" := "AUX TRUE" AND "AUX FALSE"; + + // Network 91: To HMI (Original Language: LAD) + + "HMI_Device"."PPN304"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_VacuumPump" >= 1; + + "HMI_Device"."PPN304"."FeedbackOnConfig" := "AUX FALSE" AND ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_VacuumPump" >= 1); + + // Network 92: To HMI (Original Language: LAD) + + "HMI_Device"."PPN305"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" AND "AUX FALSE"; + + "HMI_Device"."PPN305"."FeedbackOnConfig" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" AND "AUX FALSE"; + + // Network 93: To HMI (Original Language: LAD) + + "HMI_Device"."PPM306"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" >= 2; + + "HMI_Device"."PPM306"."FeedbackOnConfig" := "Disable_Bit" AND ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" >= 2); + + // Network 94: To HMI (Original Language: LAD) + + "HMI_Device"."_Spare_PP190"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 2; + + "HMI_Device"."_Spare_PP190"."FeedBackOn" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 2; + + // Network 95: To HMI (Original Language: LAD) + + "HMI_Device"."SyrupRoom_SyrupPump"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Deaireation" OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 1); + + "HMI_Device"."SyrupRoom_SyrupPump"."FeedbackOnConfig" := ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Deaireation" AND "AUX FALSE") OR ("AUX FALSE" AND ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 1)); + + // Network 96: To HMI (Original Language: LAD) + + "HMI_Device"."SyrupRoom_WaterPump"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 1; + + // Network 97: To HMI (Original Language: LAD) + // CIP Return Pump + + "HMI_Device"."PPM307"."Config" := "AUX FALSE"; + + "HMI_PID"."PPM307"."Config" := "AUX FALSE"; + + // Network 98: Presence (Original Language: LAD) + + IF "AUX TRUE" THEN + "HMI_Instrument"."LTM302"."Zero" := 0.0; + END_IF; + + IF "AUX TRUE" THEN + "HMI_Instrument"."LTM302"."Offset" := 0.0; + END_IF; + + IF "AUX TRUE" THEN + "HMI_Instrument"."LTM302"."Span" := 100.0; + END_IF; + + "HMI_Instrument"."LTM302"."Config" := "AUX TRUE"; + + // Network 99: Presence (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DeaireatorLevel" THEN + "HMI_Instrument"."LTN301"."Zero" := 0.0; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DeaireatorLevel" THEN + "HMI_Instrument"."LTN301"."Offset" := 0.0; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DeaireatorLevel" THEN + "HMI_Instrument"."LTN301"."Span" := 100.0; + END_IF; + + "HMI_Instrument"."LTN301"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DeaireatorLevel"; + + // Network 100: Presence (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 1 THEN + "HMI_Instrument"."LTP303"."Zero" := 0.0; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 1 THEN + "HMI_Instrument"."LTP303"."Offset" := 0.0; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 1 THEN + "HMI_Instrument"."LTP303"."Span" := 100.0; + END_IF; + + "HMI_Instrument"."LTP303"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 1; + + // Network 101: Presence (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 2 THEN + "HMI_Instrument"."LTP304"."Zero" := 0.0; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 2 THEN + "HMI_Instrument"."LTP304"."Offset" := 0.0; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 2 THEN + "HMI_Instrument"."LTP304"."Span" := 100.0; + END_IF; + + "HMI_Instrument"."LTP304"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 2; + + // Network 102: Presence (Original Language: LAD) + + IF Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1) THEN + "HMI_Instrument"."_FillerLevel"."Zero" := 0.0; + END_IF; + + IF Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1) THEN + "HMI_Instrument"."_FillerLevel"."Offset" := 0.0; + END_IF; + + IF Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1) THEN + "HMI_Instrument"."_FillerLevel"."Span" := 100.0; + END_IF; + + "HMI_Instrument"."_FillerLevel"."Config" := Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1); + + // Network 103: Presence (Original Language: LAD) + + IF "AUX TRUE" THEN + "HMI_Instrument"."PTM304"."Zero" := 0.0; + END_IF; + + IF "AUX TRUE" THEN + "HMI_Instrument"."PTM304"."Offset" := 0.0; + END_IF; + + IF "AUX TRUE" THEN + "HMI_Instrument"."PTM304"."Span" := 10.0; + END_IF; + + "HMI_Instrument"."PTM304"."Config" := "AUX TRUE"; + + // Network 104: Presence (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_VacuumPump" >= 1 THEN + "HMI_Instrument"."PTN313"."Zero" := -1.0; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_VacuumPump" >= 1 THEN + "HMI_Instrument"."PTN313"."Offset" := 0.0; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_VacuumPump" >= 1 THEN + "HMI_Instrument"."PTN313"."Span" := 0.0; + END_IF; + + "HMI_Instrument"."PTN313"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_VacuumPump" >= 1; + + // Network 105: Presence (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InjectionPress_Ctrl" > 0 THEN + "HMI_Instrument"."PCM306"."Zero" := 0.0; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InjectionPress_Ctrl" > 0 THEN + "HMI_Instrument"."PCM306"."Offset" := 0.0; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InjectionPress_Ctrl" > 0 THEN + "HMI_Instrument"."PCM306"."Span" := 16.0; + END_IF; + + "HMI_Instrument"."PCM306"."Config" := "Disable_Bit" AND ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InjectionPress_Ctrl" > 0); + + // Network 106: Presence (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InjectionPress_Ctrl" > 0 THEN + "HMI_Instrument"."PCM306_Offset"."Zero" := 0.0; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InjectionPress_Ctrl" > 0 THEN + "HMI_Instrument"."PCM306_Offset"."Offset" := 0.0; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InjectionPress_Ctrl" > 0 THEN + "HMI_Instrument"."PCM306_Offset"."Span" := 0.0; + END_IF; + + "HMI_Instrument"."PCM306_Offset"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InjectionPress_Ctrl" > 0; + + // Network 107: Presence (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" THEN + "HMI_Instrument"."PTF203"."Zero" := 0.0; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" THEN + "HMI_Instrument"."PTF203"."Offset" := 0.0; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" THEN + "HMI_Instrument"."PTF203"."Span" := 5000.0; + END_IF; + + "HMI_Instrument"."PTF203"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem"; + + // Network 108: Presence (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Conductimeter" THEN + "HMI_Instrument"."TT_S5"."Zero" := 0.0; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Conductimeter" THEN + "HMI_Instrument"."TT_S5"."Offset" := 0.0; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Conductimeter" THEN + "HMI_Instrument"."TT_S5"."Span" := 100.0; + END_IF; + + "HMI_Instrument"."TT_S5"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Conductimeter"; + + // Network 109: Presence TT305_1 CIP Return Temperature (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Conductimeter" THEN + "HMI_Instrument"."TTS305_1"."Zero" := 0.0; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Conductimeter" THEN + "HMI_Instrument"."TTS305_1"."Offset" := 0.0; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Conductimeter" THEN + "HMI_Instrument"."TTS305_1"."Span" := 100.0; + END_IF; + + "HMI_Instrument"."TTS305_1"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Conductimeter"; + + // Network 110: Presence (Original Language: LAD) + + IF "gProductChillerEn" THEN + "HMI_Instrument"."TTM306_PRD"."Zero" := 0.0; + END_IF; + + IF "gProductChillerEn" THEN + "HMI_Instrument"."TTM306_PRD"."Offset" := 0.0; + END_IF; + + IF "gProductChillerEn" THEN + "HMI_Instrument"."TTM306_PRD"."Span" := 100.0; + END_IF; + + "HMI_Instrument"."TTM306_PRD"."Config" := "gProductChillerEn"; + + // Network 111: Presence (Original Language: LAD) + + IF "gProductChillerEn" AND "gWaterChillerEn" THEN + "HMI_Instrument"."TTM306_H2O"."Zero" := 0.0; + END_IF; + + IF "gProductChillerEn" AND "gWaterChillerEn" THEN + "HMI_Instrument"."TTM306_H2O"."Offset" := 0.0; + END_IF; + + IF "gProductChillerEn" AND "gWaterChillerEn" THEN + "HMI_Instrument"."TTM306_H2O"."Span" := 100.0; + END_IF; + + "HMI_Instrument"."TTM306_H2O"."Config" := "gProductChillerEn" AND "gWaterChillerEn"; + + // Network 112: Presence Product Cooling CTRL (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InverterRecirPumpPPM306" THEN + "HMI_Instrument"."TTM307"."Zero" := 0.0; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InverterRecirPumpPPM306" THEN + "HMI_Instrument"."TTM307"."Offset" := 0.0; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InverterRecirPumpPPM306" THEN + "HMI_Instrument"."TTM307"."Span" := 100.0; + END_IF; + + "HMI_Instrument"."TTM307"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InverterRecirPumpPPM306"; + + // Network 113: Presence (Original Language: LAD) + + IF "AUX TRUE" THEN + "HMI_Instrument"."TTN321"."Zero" := 0.0; + END_IF; + + IF "AUX TRUE" THEN + "HMI_Instrument"."TTN321"."Offset" := 0.0; + END_IF; + + IF "AUX TRUE" THEN + "HMI_Instrument"."TTN321"."Span" := 100.0; + END_IF; + + "HMI_Instrument"."TTN321"."Config" := "AUX TRUE"; + + // Network 114: Presence (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" THEN + "HMI_Instrument"."TTN322"."Zero" := 0.0; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" THEN + "HMI_Instrument"."TTN322"."Offset" := 0.0; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" THEN + "HMI_Instrument"."TTN322"."Span" := 100.0; + END_IF; + + "HMI_Instrument"."TTN322"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair"; + + // Network 115: Presence (Original Language: LAD) + + "HMI_Instrument"."FTN301"."Config" := "AUX TRUE"; + + // Network 116: Presence (Original Language: LAD) + + "HMI_Instrument"."FTP302"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 1; + + "HMI_Instrument"."FTP302_Density"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 1; + + "HMI_Instrument"."FTP302_Brix"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 1; + + "HMI_Instrument"."FTP302_Temperature"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 1; + + // Network 117: Presence (Original Language: LAD) + + "HMI_Instrument"."FTM303"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CarboPresent"; + + // Network 118: Presence (Original Language: LAD) + + "HMI_Instrument"."FTP304"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 2; + + "HMI_Instrument"."FTP304_Density"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 2; + + "HMI_Instrument"."FTP304_Brix"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 2; + + // Network 119: Presence (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Balaiage" THEN + "HMI_Instrument"."FTM305"."Zero" := 0.0; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Balaiage" THEN + "HMI_Instrument"."FTM305"."Offset" := 0.0; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Balaiage" THEN + "HMI_Instrument"."FTM305"."Span" := 75.0; + END_IF; + + "HMI_Instrument"."FTM305"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Balaiage"; + + // Network 120: Presence (Original Language: LAD) + + "HMI_Instrument"."CTS301"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Conductimeter"; + + // Network 121: Presence (Original Language: LAD) + + "HMI_Instrument"."CTS302"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Conductimeter"; + + // Network 122: Presence (Original Language: LAD) + + "HMI_Instrument"."CTM304"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_ProductConductimeter"; + + // Network 123: Presence (Original Language: LAD) + + "HMI_Instrument"."QTM_302"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CarboPresent" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BrixMeter"; + + IF "HMI_Instrument"."QTM_302"."Config" THEN + "HMI_Instrument"."QTM_302"."Alarm" := FALSE; + END_IF; + + // Network 124: Presence (Original Language: LAD) + + "HMI_Instrument"."QTM_301"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 1; + + // Network 125: Presence (Original Language: LAD) + + "HMI_Instrument"."QTM_RecipeNum"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BrixMeter"; + + "HMI_Instrument"."QTM_Temperature"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BrixMeter"; + + // Network 126: Presence (Original Language: LAD) + + IF "AUX TRUE" THEN + "HMI_Instrument"."RVM301"."Zero" := 0.0; + END_IF; + + IF "AUX TRUE" THEN + "HMI_Instrument"."RVM301"."Offset" := 0.0; + END_IF; + + IF "AUX TRUE" THEN + "HMI_Instrument"."RVM301"."Span" := 100.0; + END_IF; + + "HMI_Instrument"."RVM301"."Config" := "AUX TRUE"; + + // Network 127: Presence (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Deaireation" THEN + "HMI_Instrument"."RVN305"."Zero" := 0.0; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Deaireation" THEN + "HMI_Instrument"."RVN305"."Offset" := 0.0; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Deaireation" THEN + "HMI_Instrument"."RVN305"."Span" := 666.6; + END_IF; + + "HMI_Instrument"."RVN305"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Deaireation"; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Deaireation" THEN + "HMI_Instrument"."RVN304"."Span" := 666.6; + END_IF; + + "HMI_Instrument"."RVN304"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Deaireation"; + + // Network 128: To HMI - Presence (Original Language: LAD) + + IF Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InjectionPress_Ctrl", 2) THEN + "HMI_Instrument"."PTM308"."Zero" := 0.0; + END_IF; + + IF Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InjectionPress_Ctrl", 2) THEN + "HMI_Instrument"."PTM308"."Offset" := 0.0; + END_IF; + + IF Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InjectionPress_Ctrl", 2) THEN + "HMI_Instrument"."PTM308"."Span" := 10.0; + END_IF; + + "HMI_Instrument"."PTM308"."Config" := Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InjectionPress_Ctrl", 2); + + // Network 129: Presence (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" OR "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InverterProdPumpPPM303" THEN + "HMI_Instrument"."PPM303_VFC_ActualValue"."Zero" := 0.0; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" OR "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InverterProdPumpPPM303" THEN + "HMI_Instrument"."PPM303_VFC_ActualValue"."Offset" := 0.0; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" OR "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InverterProdPumpPPM303" THEN + "HMI_Instrument"."PPM303_VFC_ActualValue"."Span" := 500.0; + END_IF; + + "HMI_Instrument"."PPM303_VFC_ActualValue"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" OR "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InverterProdPumpPPM303"; + + // Network 130: Presence (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 1 THEN + "HMI_Instrument"."PTP338"."Zero" := 0.0; + "ReadAnalogIn_Fault_DB"."DelaySP"."PTP338" := BYTE#16#10; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 1 THEN + "HMI_Instrument"."PTP338"."Offset" := 0.0; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 1 THEN + "HMI_Instrument"."PTP338"."Span" := 5.0; + END_IF; + + "HMI_Instrument"."PTP338"."Config" := "AUX FALSE" AND ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 1); + + // Network 131: Presence (Original Language: LAD) + + "HMI_Digital"."LSN301L"."Config" := "AUX TRUE"; + + // Network 132: Presence (Original Language: LAD) + + "HMI_Digital"."LSN302L"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair"; + + // Network 133: Presence (Original Language: LAD) + + "HMI_Digital"."LSM302L"."Config" := "AUX TRUE"; + + // Network 134: Presence (Original Language: LAD) + + "HMI_Digital"."LAL_S3"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SyrupLevel" AND ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" > 1); + + // Network 135: Presence (Original Language: LAD) + + "HMI_Digital"."_PAL_S11"."Config" := "AUX TRUE"; + + // Network 136: Presence (Original Language: LAD) + + "HMI_Digital"."FSS301"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP"; + + // Network 137: To HMI - Presence (Original Language: LAD) + + "HMI_Digital"."GSM307"."Config" := Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DivertPanel", 1); + + "HMI_Digital"."GSM308"."Config" := Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DivertPanel", 1); + + "HMI_Digital"."GSM309"."Config" := Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DivertPanel", 1); + + "HMI_Digital"."GSM310"."Config" := Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DivertPanel", 1); + + "HMI_Digital"."GSM322"."Config" := Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DivertPanel", 1); + + "HMI_Digital"."GSM323"."Config" := Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DivertPanel", 1); + + // Network 138: Presence (Original Language: LAD) + + "HMI_PID"."RMM301"."Config" := "AUX TRUE"; + + IF Eq("HMI_PID"."RMM301"."OutMax", 0.0) THEN + "HMI_PID"."RMM301"."OutMax" := 100.0; + END_IF; + + // Network 139: Presence (Original Language: LAD) + + "HMI_PID"."RMP302"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" >= 2; + + IF Eq("HMI_PID"."RMP302"."OutMax", 0.0) THEN + "HMI_PID"."RMP302"."OutMax" := 100.0; + END_IF; + + // Network 140: Presence (Original Language: LAD) + + "HMI_PID"."RMM303"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CarboPresent"; + + IF Eq("HMI_PID"."RMM303"."OutMax", 0.0) THEN + "HMI_PID"."RMM303"."OutMax" := 100.0; + END_IF; + + // Network 141: To HMI (Original Language: LAD) + + "HMI_PID"."RMM304"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CO2_GAS2_Injection"; + + IF Eq("HMI_PID"."RMM304"."OutMax", 0.0) THEN + "HMI_PID"."RMM304"."OutMax" := 100.0; + END_IF; + + // Network 142: Presence (Original Language: LAD) + + "HMI_PID"."RMP304"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" >= 3; + + IF Eq("HMI_PID"."RMP304"."OutMax", 0.0) THEN + "HMI_PID"."RMP304"."OutMax" := 100.0; + END_IF; + + // Network 143: Presence (Original Language: LAD) + + "HMI_PID"."RVM301"."Config" := "AUX TRUE"; + + "HMI_PID"."RVM301"."ConfigPID" := "AUX TRUE" AND "AUX FALSE"; + + IF Eq("HMI_PID"."RVM301"."OutMax", 0.0) THEN + "HMI_PID"."RVM301"."OutMax" := 100.0; + END_IF; + + // Network 144: Presence (Original Language: LAD) + + "HMI_PID"."RVP303"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SyrupLevel" AND ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" >= 2); + + IF Eq("HMI_PID"."RVP303"."OutMax", 0.0) THEN + "HMI_PID"."RVP303"."OutMax" := 100.0; + END_IF; + + // Network 145: Presence (Original Language: LAD) + + "HMI_PID"."RVN304"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InjectionPress_Ctrl" > 0; + + "HMI_PID"."RVN305"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InjectionPress_Ctrl" > 0; + + "HMI_PID"."RVN304"."ConfigPID" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InjectionPress_Ctrl" > 0; + + "HMI_PID"."RVN305"."ConfigPID" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InjectionPress_Ctrl" > 0; + + // Network 146: Presence (Original Language: LAD) + + "HMI_PID"."RVP305"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SyrupLevel" AND ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Promass" >= 3); + + IF Eq("HMI_PID"."RVP305"."OutMax", 0.0) THEN + "HMI_PID"."RVP305"."OutMax" := 100.0; + END_IF; + + // Network 147: Presence (Original Language: LAD) + + "HMI_PID"."PCM306"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InjectionPress_Ctrl" > 0; + + "HMI_PID"."PCM306"."ConfigPID" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InjectionPress_Ctrl" > 0; + + IF Eq("HMI_PID"."PCM306"."OutMax", 0.0) THEN + "HMI_PID"."PCM306"."OutMax" := "HMI_Instrument"."PCM306"."Span"; + END_IF; + + // Network 148: Presence (Original Language: LAD) + + "HMI_PID"."RVS318"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP"; + + IF Eq("HMI_PID"."RVS318"."OutMax", 0.0) THEN + "HMI_PID"."RVS318"."OutMax" := 100.0; + END_IF; + + // Network 149: Presence (Original Language: LAD) + + "HMI_PID"."RVM319_PRD"."Config" := "gProductChillerEn"; + + IF Eq("HMI_PID"."RVM319_PRD"."OutMax", 0.0) THEN + "HMI_PID"."RVM319_PRD"."OutMax" := 100.0; + END_IF; + + // Network 150: Presence (Original Language: LAD) + + "HMI_PID"."RVM319_H2O"."Config" := "gWaterChillerEn"; + + IF Eq("HMI_PID"."RVM319_H2O"."OutMax", 0.0) THEN + "HMI_PID"."RVM319_H2O"."OutMax" := 100.0; + END_IF; + + // Network 151: To HMI (0: PID 1: fixed values) (Original Language: LAD) + + "HMI_PID"."PPN301"."ConfigPID" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InverterWaterPumpPPN301"; + + "HMI_PID"."PPN301"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InverterWaterPumpPPN301"; + + // Network 152: To HMI (0: PID 1: fixed values) (Original Language: LAD) + + "HMI_PID"."PPP302"."ConfigPID" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InverterSyrupPumpPPP302"; + + "HMI_PID"."PPP302"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InverterSyrupPumpPPP302"; + + // Network 153: Presence (Original Language: LAD) + + "HMI_PID"."PPM303"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" OR "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InverterProdPumpPPM303"; + + // Network 154: Presence (Original Language: LAD) + + "HMI_PID"."PPM303"."PID_FIX" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem"; + + // Network 155: Presence (Original Language: LAD) + + "HMI_PID"."PPM305"."Config" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" OR "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InverterProdPumpPPM303"; + + // Network 156: Presence (Original Language: LAD) + + "HMI_PID"."PPM305"."PID_FIX" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem"; + + // Network 157: Presence (Original Language: LAD) + + "HMI_PID"."PPM303"."ConfigPID" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InverterProdPumpPPM303"; + + // Network 158: (Original Language: LAD) + + "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_RemoteInjection" := "AUX FALSE"; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderCtrl_ManualActive.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderCtrl_ManualActive.md new file mode 100644 index 0000000..694048b --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderCtrl_ManualActive.md @@ -0,0 +1,88 @@ +```pascal +// Block Type: FC +// Block Number: 2037 +// Original Network Languages: STL + +FUNCTION "BlenderCtrl_ManualActive" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + Dim_HMI_Device : Int; + PDim_HMI_Device : DWord; + Dim_HMI_PID : Int; + PDim_HMI_PID : DWord; +END_VAR + +BEGIN + + // Network 1: Set manual active (Original Language: STL) + // DEVICE + + // --- BEGIN STL Network 1 --- + + SET + R "HMI_Alarms".gH_Message[3] + + // --- END STL Network 1 --- + + // Network 2: (Original Language: STL) + + // --- BEGIN STL Network 2 --- + + AUF "HMI_Device" + L_DBLG + T "Dim_HMI_Device" + L P#0.0 + L "Dim_HMI_Device" + SLD 3 + ADD_D + T "PDim_HMI_Device" + L P#0.0 + LAR1_ACCU1 + M100: NOP_0 + AUF "HMI_Device" + A DBX[AR1,P#0.7] + AN DBX[AR1,P#0.0] + S "HMI_Alarms".gH_Message[3] + ADDAR1 P#2.0 + TAR1_ACCU1 + L "PDim_HMI_Device" + LT_D + JC M100 + + // --- END STL Network 2 --- + + // Network 3: (Original Language: STL) + + // --- BEGIN STL Network 3 --- + + AUF "HMI_PID" + L_DBLG + T "Dim_HMI_PID" + L P#0.0 + L "Dim_HMI_PID" + SLD 3 + ADD_D + T "PDim_HMI_PID" + L P#0.0 + LAR1_ACCU1 + M101: NOP_0 + AUF "HMI_PID" + A DBX[AR1,P#0.7] + A_BRACK + A DBX[AR1,P#2.0] + O DBX[AR1,P#3.0] + BRACKET + S "HMI_Alarms".gH_Message[3] + ADDAR1 P#76.0 + TAR1_ACCU1 + L "PDim_HMI_PID" + LT_D + JC M101 + + // --- END STL Network 3 --- + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderCtrl_ProdModeInit.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderCtrl_ProdModeInit.md new file mode 100644 index 0000000..38473e1 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderCtrl_ProdModeInit.md @@ -0,0 +1,26 @@ +```pascal +// Block Type: FC +// Block Number: 2012 +// Original Network Languages: LAD + +FUNCTION "BlenderCtrl_ProdModeInit" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +BEGIN + + // Network 1: PID Reset Integral (Original Language: LAD) + + BlenderPID_PIDResInteg(); + + // Network 2: Ctrl Init Errors (Original Language: LAD) + + BlenderCtrl_InitErrors(); + + // Network 3: RunOut Counter (Original Language: LAD) + + "HMI_Variables_Status"."Analog_Values"."TP301RunOutCount" := 0.0; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderCtrl_ResetSPWord.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderCtrl_ResetSPWord.md new file mode 100644 index 0000000..a23cc89 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderCtrl_ResetSPWord.md @@ -0,0 +1,149 @@ +```pascal +// Block Type: FC +// Block Number: 2014 +// Original Network Languages: STL +// Block Comment: +// TASK2 + +FUNCTION "BlenderCtrl_ResetSPWord" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +BEGIN + + // Network 1: MIX - Procedure auxiliary variable (Original Language: STL) + + // --- BEGIN STL Network 1 --- + + CLR + = "gSP_RVN301" + = "gSP_RVN302" + + CLR + = "gSP_RVN301_1" + = "gSP_RVN302_1" + + CLR + = "gSP_RVP303" + = "gSP_EV04" + + CLR + = "gSP_AVM311" + = "gSP_AVM312" + = "gSP_AVM313" + = "gSP_AVM315" + = "gSP_AVM317" + = "gSP_AVM317_1" + = "gSP_AVM321" + = "gSP_AVM322" + = "gSP_AVM323" + = "gSP_AVM326" + = "gSP_AVM327" + = "gSP_AVM328" + = "gSP_AVM329" + = "gSP_AVM330" + = "gSP_AVM339" + = "gSP_AVM340" + = "gSP_AVM341" + = "gSP_AVM342" + = "gSP_AVM345" + = "gSP_AVM346" + = "gSP_AVM362" + = "gSP_AVM363" + = "gSP_AVM366" + = "gSP_AVM367" + = "gSP_AVM368" + = "gSP_AVM369" + = "gSP_AVM353" + = "gSP_AVM371" + = "gSP_AVM372" + = "gSP_AVM380" + = "gSP_AVM381" + = "gSP_AVM385" + = "gSP_AVM386" + = "gSP_AVM388" + = "gSP_AVM389" + = "gSP_AVM391" + = "gSP_AVM396" + = "gSP_AVM397" + + CLR + = "gSP_AVN314" + = "gSP_AVN318" + = "gSP_AVN325" + = "gSP_AVN327" + = "gSP_AVN328" + = "gSP_AVN329" + = "gSP_AVN340" + = "gSP_AVN348" + = "gSP_AVN349" + = "gSP_AVN373" + = "gSP_AVN374" + = "gSP_AVN377" + = "gSP_AVN378" + + CLR + = "gSP_AVP316" + = "gSP_AVP316_1" + = "gSP_AVP324" + = "gSP_AVP344" + = "gSP_AVP361" + = "gSP_AVP363" + = "gSP_AVP364" + = "gSP_AVP365" + = "gSP_AVP389" + = "gSP_AVP390" + + CLR + = "gSP_AVS331" + = "gSP_AVS332" + = "gSP_AVS333" + = "gSP_AVS334" + = "gSP_AVS335" + = "gSP_AVS336" + = "gSP_AVS337" + = "gSP_AVS338" + + CLR + = "gSP_EV52" + = "gSP_EV53" + = "gSP_EV54" + = "gSP_AVM353" + = "gSP_EV56" + = "gSP_EV57" + = "gSP_EV58" + = "gSP_EV75" + = "gSP_EV76" + = "gSP_EV77" + = "gSP_EV78" + = "gSP_EV79" + = "gSP_EV83" + + CLR + = "gSP_PPN301" + = "gSP_PPP302" + = "gSP_PPM303" + = "gSP_PPN304" + = "gSP_PPN305" + = "gSP_SyrRoomPump" + + CLR + = "gSP_BldTankPress_En" + = "gSP_CarboPipe_En" + = "gSP_LimitCO2PressValve" + = "gSP_CIP_Temp_En" + = "gSP_CIP_CO2_Inj" + = "gSP_CIPRunning" + = "gSP_CIPDrainRequest" + = "gSP_CIPHotPhase" + = "gSP_CIPChangeSanitize" + = "gSP_PID_Head_Manual" + = "gSP_PID_Head_Enable" + = "gSP_FillerProdLoad" + = "gSP_FillerProdSend" + + // --- END STL Network 1 --- + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderCtrl_UpdatePWord.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderCtrl_UpdatePWord.md new file mode 100644 index 0000000..0b34a0c --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderCtrl_UpdatePWord.md @@ -0,0 +1,245 @@ +```pascal +// Block Type: FC +// Block Number: 2034 +// Original Network Languages: STL + +FUNCTION "BlenderCtrl_UpdatePWord" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +BEGIN + + // Network 1: MIX - Procedure auxiliary variable (Original Language: STL) + + // --- BEGIN STL Network 1 --- + + A "gSP_RVN301" + = "gP_RVN301" + A "gSP_RVN302" + = "gP_RVN302" + + A "gSP_RVN301_1" + = "gP_RVN301_1" + A "gSP_RVN302_1" + = "gP_RVN302_1" + + A "gSP_RVP303" + = "gP_RVP303" + A "gSP_EV04" + = "gP_EV04" + + A "gSP_AVM311" + = "gP_AVM311" + A "gSP_AVM312" + = "gP_AVM312" + A "gSP_AVM313" + = "gP_AVM313" + A "gSP_AVM315" + = "gP_AVM315" + A "gSP_AVM317" + = "gP_AVM317" + A "gSP_AVM317_1" + = "gP_AVM317_1" + A "gSP_AVM321" + = "gP_AVM321" + A "gSP_AVM322" + = "gP_AVM322" + A "gSP_AVM323" + = "gP_AVM323" + A "gSP_AVM326" + = "gP_AVM326" + A "gSP_AVM327" + = "gP_AVM327" + A "gSP_AVM328" + = "gP_AVM328" + A "gSP_AVM329" + = "gP_AVM329" + + A "gSP_AVM330" + = "gP_AVM330" + A "gSP_AVM339" + = "gP_AVM339" + A "gSP_AVM340" + = "gP_AVM340" + A "gSP_AVM341" + = "gP_AVM341" + A "gSP_AVM342" + = "gP_AVM342" + A "gSP_AVM345" + = "gP_AVM345" + A "gSP_AVM346" + = "gP_AVM346" + A "gSP_AVM362" + = "gP_AVM362" + A "gSP_AVM363" + = "gP_AVM363" + A "gSP_AVM366" + = "gP_AVM366" + A "gSP_AVM367" + = "gP_AVM367" + A "gSP_AVM368" + = "gP_AVM368" + A "gSP_AVM369" + = "gP_AVM369" + A "gSP_AVM371" + = "gP_AVM371" + A "gSP_AVM372" + = "gP_AVM372" + A "gSP_AVM380" + = "gP_AVM380" + A "gSP_AVM381" + = "gP_AVM381" + A "gSP_AVM385" + = "gP_AVM385" + A "gSP_AVM386" + = "gP_AVM386" + A "gSP_AVM388" + = "gP_AVM388" + A "gSP_AVM389" + = "gP_AVM389" + A "gSP_AVM391" + = "gP_AVM391" + A "gSP_AVM396" + = "gP_AVM396" + A "gSP_AVM397" + = "gP_AVM397" + + A "gSP_AVN314" + = "gP_AVN314" + A "gSP_AVN318" + = "gP_AVN318" + A "gSP_AVN325" + = "gP_AVN325" + A "gSP_AVN327" + = "gP_AVN327" + A "gSP_AVN328" + = "gP_AVN328" + A "gSP_AVN329" + = "gP_AVN329" + A "gSP_AVN339" + = "gP_AVN339" + A "gSP_AVN340" + = "gP_AVN340" + A "gSP_AVN348" + = "gP_AVN348" + A "gSP_AVN349" + = "gP_AVN349" + A "gSP_AVN373" + = "gP_AVN373" + A "gSP_AVN374" + = "gP_AVN374" + A "gSP_AVN377" + = "gP_AVN377" + A "gSP_AVN378" + = "gP_AVN378" + + A "gSP_AVP316" + = "gP_AVP316" + A "gSP_AVP316_1" + = "gP_AVP316_1" + A "gSP_AVP324" + = "gP_AVP324" + A "gSP_AVP344" + = "gP_AVP344" + A "gSP_AVP361" + = "gP_AVP361" + A "gSP_AVP363" + = "gP_AVP363" + A "gSP_AVP364" + = "gP_AVP364" + A "gSP_AVP365" + = "gP_AVP365" + + A "gSP_AVS331" + = "gP_AVS331" + A "gSP_AVS332" + = "gP_AVS332" + A "gSP_AVS333" + = "gP_AVS333" + A "gSP_AVS334" + = "gP_AVS334" + A "gSP_AVS335" + = "gP_AVS335" + A "gSP_AVS336" + = "gP_AVS336" + A "gSP_AVS337" + = "gP_AVS337" + A "gSP_AVS338" + = "gP_AVS338" + + A "gSP_EV52" + = "gP_EV52" + A "gSP_EV53" + = "gP_EV53" + A "gSP_EV54" + = "gP_EV54" + A "gSP_AVM353" + = "gP_AVM353" + A "gSP_EV56" + = "gP_EV56" + A "gSP_EV57" + = "gP_EV57" + A "gSP_EV58" + = "gP_EV58" + A "gSP_EV75" + = "gP_EV75" + A "gSP_EV76" + = "gP_EV76" + A "gSP_EV77" + = "gP_EV77" + A "gSP_EV78" + = "gP_EV78" + A "gSP_EV79" + = "gP_EV79" + A "gSP_EV83" + = "gP_EV83" + A "gSP_AVP389" + = "gP_AVP389" + A "gSP_AVP390" + = "gP_AVP390" + + A "gSP_PPN301" + = "gP_PPN301" + A "gSP_PPP302" + = "gP_PPP302" + A "gSP_PPM303" + = "gP_PPM303" + A "gSP_PPN304" + = "gP_PPN304" + A "gSP_PPN305" + = "gP_PPN305" + A "gSP_SyrRoomPump" + = "gP_SyrRoomPump" + + A "gSP_BldTankPress_En" + = "gP_BldTankPress_En" + A "gSP_CarboPipe_En" + = "gP_CarboPipe_En" + A "gSP_LimitCO2PressValve" + = "gP_LimitCO2PressValve" + A "gSP_CIP_Temp_En" + = "gP_CIP_Temp_En" + A "gSP_CIP_CO2_Inj" + = "gP_CIP_CO2_Inj" + A "gSP_CIPRunning" + = "gP_CIPRunning" + A "gSP_CIPDrainRequest" + = "gP_CIPDrainRequest" + A "gSP_CIPHotPhase" + = "gP_CIPHotPhase" + A "gSP_CIPChangeSanitize" + = "gP_CIPChangeSanitize" + A "gSP_PID_Head_Manual" + = "gP_PID_Head_Manual" + A "gSP_PID_Head_Enable" + = "gP_PID_Head_Enable" + A "gSP_FillerProdLoad" + = "gP_FillerProdLoad" + A "gSP_FillerProdSend" + = "gP_FillerProdSend" + + // --- END STL Network 1 --- + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderCtrl__Main.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderCtrl__Main.md new file mode 100644 index 0000000..33a0b43 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderCtrl__Main.md @@ -0,0 +1,389 @@ +```pascal +// Block Type: FC +// Block Number: 2000 +// Original Network Languages: LAD + +FUNCTION "BlenderCtrl__Main" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +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 + + #_1S : Bool; // Auto-generated temporary + #_2S : Bool; // Auto-generated temporary +BEGIN + + // Network 1: Clock Generation (Original Language: LAD) + + Clock_Signal(); + + // Network 2: Machine Init (Original Language: LAD) + + BlenderCtrl_MachineInit(); + + // Network 3: Filler Head (Original Language: LAD) + + IF "AUX FALSE" THEN + "Block_Move_Err" := BLKMOV(SRCBLK := "HMI_PID"."PPM303", DSTBLK => "Filler_Head_Variables"."FillerHead"); // ADVERTENCIA: BLKMOV usado directamente, probablemente no compile! + END_IF; + + // Network 4: Emergency Pressed (Original Language: LAD) + + // Edge Logic handled by Coil 26 + "M19000" := "gIN_VoltageOk"; // N_TRIG("gIN_VoltageOk") - Mem: "M19000" + + "gEmergencyPressed" := "M19000" AND NOT "gIN_VoltageOk"; + "M19000" := "gIN_VoltageOk"; // N_TRIG("gIN_VoltageOk") - Mem: "M19000" + + // Network 5: Air and CO2 pressure ok and auxiliary ok (Original Language: LAD) + + "gBlenderSuppliesOk" := ("gIN_VoltageOk" AND "gIN_LinePressCO2Ok" AND "HMI_Digital"."_PAL_S11"."Filtered") OR ("gIN_VoltageOk" AND "gIN_LinePressCO2Ok" AND "Disable_Bit") OR ("gIN_VoltageOk" AND "gWorkshopTest" AND "gWorkshop_Co2_Presence" AND "gWorkshop_CIP_Signals" AND "HMI_Digital"."_PAL_S11"."Filtered") OR ("gIN_VoltageOk" AND "gWorkshopTest" AND "gWorkshop_Co2_Presence" AND "gWorkshop_CIP_Signals" AND "Disable_Bit"); + + // Network 6: Blender State Num (Original Language: LAD) + + "HMI_Variables_Status"."Procedures"."BlenderStateNum" := 0; + + // Network 7: Delay Power On (Original Language: LAD) + + "mDelayPowerOnTmr"(IN := "FirstScan", PT := S5T#2S); // TODO: Declarar "mDelayPowerOnTmr" : TP; + + // Network 8: Production Mode (Original Language: LAD) + + "gBlenderProdMode" := "HMI_Variables_Status"."System"."Blender_Prod_CIP"; + + // Network 9: CIp Mode (Original Language: LAD) + + "gBlenderCIPMode" := "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 (Original Language: LAD) + + IF "AUX FALSE" THEN + "HMI_Variables_Status"."Meters"."QTM3012_PRD_Fault" := FALSE; + END_IF; + + IF "AUX FALSE" THEN + "gmPDS2000_Error_Fault" := FALSE; + END_IF; + + IF "AUX FALSE" THEN + "HMI_Variables_Status"."Meters"."QTM3012_PRD_Run" := FALSE; + END_IF; + + IF "AUX FALSE" THEN + "gNoFreezeProductMeter" := FALSE; + END_IF; + + // Network 11: Filler Bottle Count Used to push Product (Original Language: LAD) + + "System_RunOut_Variables"."ProdPipeRunOutFillerBott" := "System_RunOut_Variables"."ProdPipeRunOutWaterCount"; + + // Network 12: Water Bypass Enable (Original Language: LAD) + + "gStillWaterByPassEn" := ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_StillWaterByPass" AND "Blender_Variables_Pers"."gWaterRecipe" AND "Blender_Variables_Pers"."gCarboStillRecipe") 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 (Original Language: LAD) + + "gBlendFiStillWaterByPass" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_StillWaterByPass" AND "Blender_Variables_Pers"."gWaterRecipe" AND "Blender_Variables_Pers"."gCarboStillRecipe" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem"; + + // Network 14: Manual Syrup Drain Valve Open - Operator Alarm (Original Language: LAD) + + "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 ("gSyrupRoomEn" AND "gIN_HVP301_Aux" AND "gBlenderCIPMode" AND "gIN_CIP_CIPRunning" AND "Procedure_Variables"."Blender_Run"."Running"); + + // Network 15: Manual Syrup Drain Valve Open - Operator Alarm (Original Language: LAD) + + "mHVM302_Dly"(IN := "gIN_HVM302_Aux", PT := S5T#1S); // TODO: Declarar "mHVM302_Dly" : TON; + + "gHVM302_Open" := "mHVM302_Dly".Q; + + // Network 16: Maselli Control (Original Language: LAD) + + IF Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_MeterType", 6) THEN + Maselli_PA_Control(); + END_IF; + + // Network 17: mPDS Control (Original Language: LAD) + + IF Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_MeterType", 5) THEN + mPDS_PA_Control(); + END_IF; + + // Network 18: mPDS Syrup Control (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SyrBrixMeter" THEN + mPDS_SYR_PA_Control(); + END_IF; + + // Network 19: Co2 Analog Input (Original Language: LAD) + // GetProdBrixCO2_FromAnalogIn + // CALL "GetProdBrixCO2_FromAn" + // NOP 0 + + IF Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_MeterType", 3) THEN + GetProdBrixCO2_Anal_Inpt(); + END_IF; + + // Network 20: Quality (Original Language: LAD) + + ProductQuality(); + + // Network 21: Input Data (Original Language: LAD) + + "Input_Data"(); + + // Network 22: Sel Brix Source Check (Original Language: LAD) + + SelCheckBrixSource(); + + // Network 23: Check Water Cooling System Temperature (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InverterRecirPumpPPM306" THEN + CTRLCoolingSystem(); + END_IF; + + // Network 24: Tank Level (Original Language: LAD) + + TankLevel(); + + // Network 25: Production ONS (Original Language: LAD) + + // PBox SymPy processed, logic in consumer + "M19001" := "gBlenderProdMode"; // P_TRIG("gBlenderProdMode") - Mem: "M19001" + + "gProductionONS" := "gBlenderProdMode" AND "mDelayPowerOnTmr" AND NOT "M19001"; + + // Network 26: Blender Prod Mode Init (Original Language: LAD) + + IF ("gProductionONS" AND "Blender_Variables_Pers"."gBlenderStarted") OR ("Procedure_Variables"."Blender_Rinse"."ONS_Done" AND "Blender_Variables_Pers"."gBlenderStarted") THEN + BlenderCtrl_ProdModeInit(); + END_IF; + + // Network 27: Rinse ONS (Original Language: LAD) + + // PBox SymPy processed, logic in consumer + "M19002" := "HMI_Variables_Status"."System"."Blender_Prod_CIP"; // P_TRIG("HMI_Variables_Status"."System"."Blender_Prod_CIP") - Mem: "M19002" + + "gRinseONS" := "mDelayPowerOnTmr" AND "HMI_Variables_Status"."System"."Blender_Prod_CIP" AND NOT "M19002"; + + // Network 28: CIP ONS (Original Language: LAD) + + // PBox SymPy processed, logic in consumer + "M19003" := "gBlenderCIPMode"; // P_TRIG("gBlenderCIPMode") - Mem: "M19003" + + "gCIPONS" := "gBlenderCIPMode" AND "mDelayPowerOnTmr" AND NOT "M19003"; + + // Network 29: CIp Mode Init (Original Language: LAD) + + IF "gCIPONS" THEN + BlenderCtrl_CIPModeInit(); + END_IF; + + // Network 30: Reset SPWords (Original Language: LAD) + + BlenderCtrl_ResetSPWord(); + + // Network 31: Blender Run Control (Original Language: LAD) + + BlenderRun__Control(); + + // Network 32: Tank Pressure Control (Original Language: LAD) + + Prod_Tank_PressCtrl(); + + // Network 33: Balaiage (Original Language: LAD) + + Baialage(); + + // Network 34: First Production (Original Language: LAD) + + "FirstProduction_Data"(); + + // Network 35: CIP MAIN Calling (Original Language: LAD) + + CIPMain(); + + // Network 36: Blender Rinse (Original Language: LAD) + + BlenderRinse(); + + // Network 37: Safeties (Original Language: LAD) + + Safeties(); + + // Network 38: Instrument Scanner (Original Language: LAD) + + Instrument_Scanner(); + + // Network 39: Vacuum Control (Original Language: LAD) + + VacuumCtrl(); + + // Network 40: Syrup Room Control (Original Language: LAD) + + SyrupRoomCtrl(); + + // Network 41: Blend Procedure Data (Original Language: LAD) + + IF "mDelayPowerOnTmr" THEN + "Blender_Procedure Data"(); + END_IF; + + // Network 42: Pneumatic Valve Control (Original Language: LAD) + + Pneumatic_Valve_Ctrl(); + + // Network 43: Pumps Control (Original Language: LAD) + + PumpsControl(); + + // Network 44: Prod Report Manager (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Report" THEN + ProdReportManager(); + END_IF; + + // Network 45: Outputs (Original Language: LAD) + + Output(); + + // Network 46: SLIM BLOCK (Original Language: LAD) + + SLIM_Block(); + + // Network 47: Interlocking Panel 1 (Original Language: LAD) + + Interlocking_Panel_1(); + + // Network 48: Filler Control (Original Language: LAD) + + FillerControl(); + + // Network 49: Blender Ctrl Update PWORD (Original Language: LAD) + + BlenderCtrl_UpdatePWord(); + + // Network 50: ResetTotalizer (Original Language: LAD) + + "mResetTotalizerTmr"(IN := "gBlendResetTotalizer", PT := S5T#2S); // TODO: Declarar "mResetTotalizerTmr" : TP; + + // Network 51: ResetWaterTot (Original Language: LAD) + + "mResetFTN301TotTmr"(IN := "gFTN301_ResetTot" OR "mResetTotalizerTmr", PT := S5T#2S); // TODO: Declarar "mResetFTN301TotTmr" : TP; + + "mResetWaterTot" := "mResetFTN301TotTmr".Q; + + // Network 52: Water VFM Reset Totalizer (Original Language: LAD) + + IF "gFTN301_ResetTot" THEN + "gFTN301_ResetTot" := FALSE; + END_IF; + + // Network 53: ResetCO2Tot (Original Language: LAD) + + "mResetFTP302TotTmr"(IN := "mResetTotalizerTmr" OR "gFTP302_ResetTot", PT := S5T#2S); // TODO: Declarar "mResetFTP302TotTmr" : TP; + + "mResetSyrupTot" := "gSyrupRoomEn" AND "mResetFTP302TotTmr".Q; + + // Network 54: Syrup MFM Reset Totalizer (Original Language: LAD) + + IF "gFTP302_ResetTot" THEN + "gFTP302_ResetTot" := FALSE; + END_IF; + + // Network 55: ResetProductTot (Original Language: LAD) + + "mResetFTM303TotTmr"(IN := "mResetTotalizerTmr" OR "gFTM303_ResetTot", PT := S5T#2S); // TODO: Declarar "mResetFTM303TotTmr" : TP; + + "mResetCO2Tot" := "mResetFTM303TotTmr".Q; + + // Network 56: CO2 MFM Reset Tot (Original Language: LAD) + + IF "gFTM303_ResetTot" THEN + "gFTM303_ResetTot" := FALSE; + END_IF; + + // Network 57: ResetCO2Tot (Original Language: LAD) + + "mResetProductTotTmr"(IN := "mResetTotalizerTmr" OR "gProductMFMResetTot", PT := S5T#2S); // TODO: Declarar "mResetProductTotTmr" : TP; + + "mResetProductTot" := "mResetProductTotTmr".Q; + + // Network 58: Reset Totalizer (Original Language: LAD) + + IF "gProductMFMResetTot" THEN + "gProductMFMResetTot" := FALSE; + END_IF; + + // Network 59: Reset Totalizer (Original Language: LAD) + + IF "gBlendResetTotalizer" THEN + "gBlendResetTotalizer" := FALSE; + END_IF; + + // Network 60: Blender Ctrl Command (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" THEN + BlenderCtrl_MFM_Command(mResetCO2Tot := "mResetCO2Tot", mResetProductTot := "mResetProductTot", mResetSyrupTot := "mResetSyrupTot", mResetWaterTot := "mResetWaterTot"); + END_IF; + + // Network 61: DP Global Diag (Original Language: LAD) + + CPU_DP_Global_Diag(); + + // Network 62: Profibus (Original Language: LAD) + + Profibus_Network(); + + // Network 63: Valve Fault (Original Language: LAD) + + ModValveFault(); + + // Network 64: All Auto (Original Language: LAD) + + // NBox SymPy processed, logic in consumer + "M19011" := "HMI_Variables_Cmd"."Commands_From_HMI"."F7_DeviceControl"."Command" AND "HMI_Variables_Cmd"."Commands_From_HMI"."F7_DeviceControl"."Enable"; // N_TRIG("HMI_Variables_Cmd"."Commands_From_HMI"."F7_DeviceControl"."Command" AND "HMI_Variables_Cmd"."Commands_From_HMI"."F7_DeviceControl"."Enable") - Mem: "M19011" + + IF ("M19011" AND NOT "HMI_Variables_Cmd"."Commands_From_HMI"."F7_DeviceControl"."Command") OR ("M19011" AND NOT "HMI_Variables_Cmd"."Commands_From_HMI"."F7_DeviceControl"."Enable") THEN + BlenderCtrl_All_Auto(); + END_IF; + + "HMI_Variables_Cmd"."Commands_From_HMI"."F7_DeviceControl"."Light" := "HMI_Variables_Cmd"."Commands_From_HMI"."F7_DeviceControl"."Command" AND "HMI_Variables_Cmd"."Commands_From_HMI"."F7_DeviceControl"."Enable"; + + // Network 65: Ctrl HMI Manual Active (Original Language: LAD) + + BlenderCtrl_ManualActive(); + + // Network 66: Mod Copy Recipe (Original Language: LAD) + + "mAux_FP_M700_1" := "HMI_Variables_Cmd"."Recipe"."Main_Page" AND "mFP_Recip_Main_Page"; + + "mFP_Recip_Main_Page" := "HMI_Variables_Cmd"."Recipe"."Main_Page"; + + IF "mAux_FP_M700_1" THEN + "HMI_Variables_Cmd"."Recipe"."Edit" := TRUE; + END_IF; + + // Network 67: to HMI - Recipe Management (Original Language: LAD) + + IF "AUX TRUE" THEN + "RecipeManagement_Data"(Active_Recipe_Req := "HMI_Variables_Cmd"."Recipe"."Active_Request", Active_Recipe_Running := "HMI_Variables_Cmd"."Recipe"."Active_Recipe_Running", Active_Recipe_Start := "HMI_Variables_Cmd"."Recipe"."Active_Recipe_Start", Copy := "HMI_Variables_Cmd"."Recipe"."Copy", Copy_to := "HMI_Variables_Cmd"."Recipe"."Copy_Request", Delete := "HMI_Variables_Cmd"."Recipe"."Delete", Download := "HMI_Variables_Cmd"."Recipe"."Download", Edit := "HMI_Variables_Cmd"."Recipe"."Edit", HMI_Recipe_Main_Page := "HMI_Variables_Cmd"."Recipe"."Main_Page", HMI_Recipe_Page_Running := "HMI_Variables_Cmd"."Recipe"."Page_Running", Max_Recipe_Number := 50, Read := "HMI_Variables_Cmd"."Recipe"."Read", Upload := "HMI_Variables_Cmd"."Recipe"."Upload", UploadPC := "HMI_Variables_Cmd"."Recipe"."UploadPC", Work_Recipe := "HMI_Variables_Cmd"."Recipe"."Edit_Request", Write := "HMI_Variables_Cmd"."Recipe"."Write"); + END_IF; + + // Network 68: Recipe Calculation (Original Language: LAD) + + RecipeCalculation(); + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPIDCtrl_Monitor.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPIDCtrl_Monitor.md new file mode 100644 index 0000000..b0b889f --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPIDCtrl_Monitor.md @@ -0,0 +1,97 @@ +```pascal +// Block Type: FB +// Block Number: 1787 +// Original Network Languages: LAD + +FUNCTION_BLOCK "BlenderPIDCtrl_Monitor" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + i_Value : Real; + i_Cols : Int; + i_Rows : Int; +END_VAR + +VAR_OUTPUT + MeanValue : Real; + Variance : Real; + Std_Deviation : Real; +END_VAR + +VAR_STAT + Water_Stat : "Statistical_Analisys"; + Syrup_Stat : "Statistical_Analisys"; + Carbo_CO2_Stat : "Statistical_Analisys"; + Gas2_Stat : "Statistical_Analisys"; +END_VAR + +BEGIN + + // Network 1: Water Statistic analisys (Original Language: LAD) + + "Water_Stat"(i_Cols := 14, i_Rows := 1, i_Value := "HMI_PID"."RMM301"."Out"); + + // Network 2: Water Values (Original Language: LAD) + + "HMI_Service"."PID_Monitoring"."_RMM301_MeanValue" := "Blender_Variables"."gWaterStat_MeanValue"; + + "HMI_Service"."PID_Monitoring"."_RMM301_Variance" := "Blender_Variables"."gWaterStat_Variance"; + + "HMI_Service"."PID_Monitoring"."_RMM301_StdDev" := "Blender_Variables"."gWaterStat_DevStd"; + + // Network 3: Water PID Controlling Ok (Original Language: LAD) + + // Network 3 did not produce printable SCL code. + + // Network 4: Syrup Statistic analisys (Original Language: LAD) + + "Syrup_Stat"(i_Cols := 14, i_Rows := 1, i_Value := "HMI_PID"."RMP302"."Out"); + + // Network 5: Syrup Values (Original Language: LAD) + + "HMI_Service"."PID_Monitoring"."_RMP302_MeanValue" := "Blender_Variables"."gSyrupStat_MeanValue"; + + "HMI_Service"."PID_Monitoring"."_RMP302_Variance" := "Blender_Variables"."gSyrupStat_Variance"; + + "HMI_Service"."PID_Monitoring"."_RMP302_StdDev" := "Blender_Variables"."gSyrupStat_DevStd"; + + // Network 6: Syrup PID Controlling Ok (Original Language: LAD) + + // Network 6 did not produce printable SCL code. + + // Network 7: Co2 Statistic analisys (Original Language: LAD) + + "Carbo_CO2_Stat"(i_Cols := 12, i_Rows := 1, i_Value := "HMI_PID"."RMM303"."Out"); + + // Network 8: Co2 Values (Original Language: LAD) + + "HMI_Service"."PID_Monitoring"."_RMM303_MeanValue" := "Blender_Variables"."gCarboCO2Stat_MeanValue"; + + "HMI_Service"."PID_Monitoring"."_RMM303_Variance" := "Blender_Variables"."gCarboCO2Stat_Variance"; + + "HMI_Service"."PID_Monitoring"."_RMM303_StdDev" := "Blender_Variables"."gCarboCO2Stat_DevStd"; + + // Network 9: CO2 PID Controlling Ok (Original Language: LAD) + + // Network 9 did not produce printable SCL code. + + // Network 10: Gas2 Statistic analisys (Original Language: LAD) + + "Gas2_Stat"(i_Cols := 12, i_Rows := 1, i_Value := "HMI_PID"."RMM304"."Out"); + + // Network 11: Gas2 Values (Original Language: LAD) + + "HMI_Service"."PID_Monitoring"."_RMM304_MeanValue" := "Blender_Variables"."gGAS2Stat_MeanValue"; + + "HMI_Service"."PID_Monitoring"."_RMM304_Variance" := "Blender_Variables"."gGAS2Stat_Variance"; + + "HMI_Service"."PID_Monitoring"."_RMM304_StdDev" := "Blender_Variables"."gGAS2Stat_DevStd"; + + // Network 12: Gas2 PID Controlling Ok (Original Language: LAD) + + // Network 12 did not produce printable SCL code. + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPIDCtrl_PresRelea.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPIDCtrl_PresRelea.md new file mode 100644 index 0000000..8219e95 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPIDCtrl_PresRelea.md @@ -0,0 +1,34 @@ +```pascal +FUNCTION "BlenderPIDCtrl_PresRelea" : Void +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : TASK1 +NAME : 'Name' +VERSION : 1.0 + +BEGIN + + + "Blender_Variables".gPrdTankPressError := "HMI_PID".RVM301.Sp - "HMI_PID".RVM301.Pv ; + IF "HMI_PID".RVM301.KP > 0 AND NOT "HMI_PID".RVM301.ManualControl.ManOut AND "Procedure_Variables".TM301_Pressure.Qualifier THEN (* Product Tank Pressure Release *) + IF "Blender_Variables".gPrdTankPressError < 0 THEN + IF "gBlenderTankPress_Ok" OR "gFirstProdPressHold" THEN + "PID_Variables".PID_RVM301_Release := FALSE; + // "HMI_PID".VEP1.ManualControl.ManOut := FALSE ; + ELSE + (* classic code: "HMI_PID".RVM301.OutMan := 0.0 ;*) + "HMI_PID".RVM301.OutMan := REAL#0.0; + // "HMI_PID".VEP1.ManualControl.ManOut := TRUE ; + "PID_Variables".PID_RVM301_Release := TRUE; + END_IF; + ELSE + "PID_Variables".PID_RVM301_Release := FALSE; + // "HMI_PID".VEP1.ManualControl.ManOut := FALSE ; + END_IF; + END_IF; + + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPIDCtrl_ReadAnIn.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPIDCtrl_ReadAnIn.md new file mode 100644 index 0000000..45b8999 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPIDCtrl_ReadAnIn.md @@ -0,0 +1,172 @@ +```pascal +// Block Type: FB +// Block Number: 1790 +// Original Network Languages: LAD +// Block Comment: +// TASK1 PID + +FUNCTION_BLOCK "BlenderPIDCtrl_ReadAnIn" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + i_Value : Real; + i_Num : Int; + i_Enable : Bool; +END_VAR + +VAR_OUTPUT + FilterOut : Real; +END_VAR + +VAR_STAT + mDiffSensFaultEnON : Bool; + mProdTnkPressFlted : "LowPassFilter"; + mWaterTempFlted : "LowPassFilter"; + mProdTempFlted : "LowPassFilter"; + mSyrupTnkLvlFlted : "LowPassFilter"; + mCIPHeatTempFlted : "LowPassFilter"; + mP3_Freq_Flted : "LowPassFilter"; + mFlrFreqPrdctPump : "LowPassFilter"; + mDiffTrasducerFlted : "LowPassFilter"; + mInletSirupPress : "LowPassFilter"; + mDeairTnkLvlFlted : "LowPassFilter"; + mBaialageFlowFlted : "LowPassFilter"; + mDiffSensFaultEn : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + +END_VAR + +VAR_TEMP + RealTemp : Real; + mH_Fault : Bool; + mL_Fault : Bool; + mDummy : Bool; + mDifferentialTrasducer : Word; +END_VAR + + #_0 : Bool; // Auto-generated temporary + #_27648 : Bool; // Auto-generated temporary + #_2S : Bool; // Auto-generated temporary + #TON_INSTANCE_30 : Bool; // Auto-generated temporary +BEGIN + + // Network 1: Product Tank Pressure (Original Language: LAD) + // Product Tank Pressure + // DB972.DBW36 = 27648 + + ReadAnalogIn(ANALOG := "HMI_Instrument"."PTM304", MAX_Analog_Value := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := 0, PEW := "P_AI_PTM304"); + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" THEN + "mProdTnkPressFlted"(i_Enable := "AUX TRUE", i_Num := 3, i_Value := "HMI_Instrument"."PTM304"."PV"); + END_IF; + + "mDummy" := TRUE; + + // Network 2: Syrup Tank Level (Original Language: LAD) + + ReadAnalogIn(ANALOG := "HMI_Instrument"."LTP303", MAX_Analog_Value := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := 0, PEW := "P_AI_LTP303"); + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" THEN + "mSyrupTnkLvlFlted"(i_Enable := "AUX TRUE", i_Num := 3, i_Value := "HMI_Instrument"."LTP303"."PV"); + END_IF; + + "mDummy" := TRUE; + + // Network 3: Chiller Temperature (Original Language: LAD) + + IF "AUX FALSE" THEN + ReadAnalogIn(ANALOG := "HMI_Instrument"."TTM306_H2O", MAX_Analog_Value := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := 0, PEW := "P_AI_TTM306"); + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" THEN + "mWaterTempFlted"(i_Enable := "AUX TRUE", i_Num := 10, i_Value := "HMI_Instrument"."TTM306_H2O"."PV"); + END_IF; + + "mDummy" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" OR "AUX FALSE"; + + // Network 4: Chiller Temperature (Original Language: LAD) + + ReadAnalogIn(ANALOG := "HMI_Instrument"."TTM306_PRD", MAX_Analog_Value := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := 0, PEW := "P_AI_TTM306"); + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" THEN + "mProdTempFlted"(i_Enable := "AUX TRUE", i_Num := 10, i_Value := "HMI_Instrument"."TTM306_PRD"."PV"); + END_IF; + + "mDummy" := TRUE; + + // Network 5: Cip Heating Temperature (Original Language: LAD) + + IF "AUX FALSE" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Conductimeter_Profibus" THEN + ReadAnalogIn(ANALOG := "HMI_Instrument"."TT_S5", MAX_Analog_Value := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := 0, PEW := "P_AI_CIPHeaterTemperature"); + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" THEN + "mCIPHeatTempFlted"(i_Enable := "AUX TRUE", i_Num := 10, i_Value := "HMI_Instrument"."TT_S5"."PV"); + END_IF; + + "mDummy" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" OR ("AUX FALSE" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Conductimeter_Profibus"); + + // Network 6: Differential Trasducer (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" THEN + "mDifferentialTrasducer" := "P_AI_PTF203"; + END_IF; + + IF "mDifferentialTrasducer" <= 0 THEN + "mDifferentialTrasducer" := INT#0; + END_IF; + + IF "mDifferentialTrasducer" > 27648 THEN + "mDifferentialTrasducer" := INT#27648; + END_IF; + + // Network 7: Differential Pressure (Original Language: LAD) + + IF "HMI_Instrument"."PTF203"."Config" THEN + ReadAnalogIn(ANALOG := "HMI_Instrument"."PTF203", MAX_Analog_Value := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := 0, PEW := "mDifferentialTrasducer"); + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" THEN + "mDiffTrasducerFlted"(i_Enable := "AUX TRUE", i_Num := 4, i_Value := "HMI_Instrument"."PTF203"."PV"); + END_IF; + + "mDummy" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" OR "HMI_Instrument"."PTF203"."Config"; + + // Network 8: Differential Pressure Fault (Original Language: LAD) + + #TON_INSTANCE_30(IN := "gIN_ResetBtn" AND "Procedure_Variables"."BlendFill_StartUp"."Done", PT := T#2S); // TODO: Declarar #TON_INSTANCE_30 : TON; + + "gDiffSensor_Analog_Fault" := #TON_INSTANCE_30.Q AND "mDiffSensFaultEnON" AND "HMI_Instrument"."PTF203"."Alarm" AND "gWorkshopTest"; + + // Network 9: Syrup Inlet Pressure (Original Language: LAD) + + IF "HMI_Instrument"."PTP338"."Config" THEN + ReadAnalogIn(ANALOG := "HMI_Instrument"."PTP338", MAX_Analog_Value := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := 0, PEW := "P_AI_PTP338"); + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" THEN + "mInletSirupPress"(i_Enable := "AUX TRUE", i_Num := 5, i_Value := "HMI_Instrument"."PTP338"."PV"); + END_IF; + + "mDummy" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" OR "HMI_Instrument"."PTP338"."Config"; + + // Network 10: TTS305 - Local Cip Heating Temperature (Original Language: LAD) + + IF "AUX TRUE" THEN + ReadAnalogIn(ANALOG := "HMI_Instrument"."FTM305", MAX_Analog_Value := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := 0, PEW := "P_AI_FTM305"); + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" THEN + "mBaialageFlowFlted"(i_Enable := "AUX TRUE", i_Num := 5, i_Value := "HMI_Instrument"."FTM305"."PV"); + END_IF; + + "mDummy" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" OR "AUX TRUE"; + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPIDCtrl_SaveInteg.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPIDCtrl_SaveInteg.md new file mode 100644 index 0000000..74302de --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPIDCtrl_SaveInteg.md @@ -0,0 +1,233 @@ +```pascal +FUNCTION_BLOCK "BlenderPIDCtrl_SaveInteg" +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : TASK1 +NAME : 'Name' +VERSION : 1.0 + VAR + mMinProd : Bool; + Timer135En : Bool; + Timer136En : Bool; + Timer137En : Bool; + Timer144En : Bool; + Timer145En : Bool; + Timer146En : Bool; + END_VAR + + VAR_TEMP + ValBinTmr135 : Word; + ValBcdTmr135 : S5Time; + ValBinTmr136 : Word; + ValBcdTmr136 : S5Time; + ValBinTmr137 : Word; + ValBcdTmr137 : S5Time; + ValBinTmr144 : Word; + ValBcdTmr144 : S5Time; + ValBinTmr145 : Word; + ValBcdTmr145 : S5Time; + ValBinTmr146 : Word; + ValBcdTmr146 : S5Time; + END_VAR + + +BEGIN + + + (* This block save the Integral Component for each PID when the prod flow is minimum *) + (* for the next blender start, that is at minimum speed *) + + (* classic code: IF ABS("Blender_Variables".gActual_Prod_SP - "Blender_Variables".gMinProduction) < 0.1 * "Blender_Variables".gMinProduction THEN*) + IF ABS("Blender_Variables".gActual_Prod_SP - "Blender_Variables".gMinProduction) < REAL#0.1 * "Blender_Variables".gMinProduction THEN + #mMinProd := TRUE ; + ELSE + #mMinProd := FALSE ; + END_IF; + + "ONS_R"(Enable_ONS := "HMI_PID".RMM301.ManualControl.PidEnable, + Aux_ONS := "mRMM301_Int_Init", + ONS_R => "mRMM301_Int_ONS" ); + + #Timer135En := #mMinProd; + IF "HMI_PID".RMM301.ManualControl.PidEnable THEN + #ValBcdTmr135:= S_ODT (T_NO := "mSaveRMM301_IntTON", + S := #Timer135En, + TV := s5time#20s, + R := "AUX FALSE", + BI => #ValBinTmr135, + Q => "mSaveRMM301_IntTON.Q"); + + IF "mSaveRMM301_IntTON.Q" AND "gRMM301_PIDCtrlOk" THEN + "PID_Variables".RMM301PIDIntValue := "mPID_RMM301_Int" ; + "HMI_PID".RMM301.I_ITLVAL := "PID_Variables".RMM301PIDIntValue ; + #Timer135En := FALSE ; + END_IF; + ELSE + #Timer135En := FALSE ; + END_IF; + + IF "HMI_PID".RMM301.High_Limit OR "HMI_PID".RMM301.Low_Limit THEN + (* classic code: "HMI_PID".RMM301.I_ITLVAL := 0.0 ;*) + "HMI_PID".RMM301.I_ITLVAL := REAL#0.0 ; + END_IF; + + IF "mRMM301_Int_ONS" THEN + "HMI_PID".RMM301.I_ITL := TRUE ; + END_IF; + + "ONS_R"(Enable_ONS := "HMI_PID".RMP302.ManualControl.PidEnable, + Aux_ONS := "mRMP302_Int_Init", + ONS_R => "mRMP302_Int_ONS" ); + + #Timer136En := #mMinProd; + IF "HMI_PID".RMP302.ManualControl.PidEnable THEN + #ValBcdTmr136:= S_ODT (T_NO := "mSaveRMP302_IntTON", + S := #Timer136En, + TV := s5time#20s, + R := "AUX FALSE", + BI => #ValBinTmr136, + Q => "mSaveRMP302_IntTON.Q"); + + IF "mSaveRMP302_IntTON.Q" AND "gRMP302_PIDCtrlOk" THEN + "PID_Variables".RMP302PIDIntValue := "mPID_RMP302_Int" ; + "HMI_PID".RMP302.I_ITLVAL := "PID_Variables".RMP302PIDIntValue ; + #Timer136En := FALSE ; + END_IF; + ELSE; + #Timer136En := FALSE ; + END_IF; + IF "HMI_PID".RMP302.High_Limit OR "HMI_PID".RMP302.Low_Limit THEN + (* classic code: "HMI_PID".RMP302.I_ITLVAL := 0.0 ;*) + "HMI_PID".RMP302.I_ITLVAL := REAL#0.0 ; + END_IF; + + IF "mRMP302_Int_ONS" THEN + "HMI_PID".RMP302.I_ITL := TRUE ; + END_IF; + + "ONS_R"(Enable_ONS := "HMI_PID".RMM303.ManualControl.PidEnable , + Aux_ONS := "mRMM303_Int_Init", + ONS_R => "mRMM303_Int_ONS" ); + + #Timer137En := #mMinProd; + IF "HMI_PID".RMM303.ManualControl.PidEnable THEN + #ValBcdTmr137:= S_ODT (T_NO := "mSaveRMM303_IntTON", + S := #Timer137En, + TV := s5time#20s, + R := "AUX FALSE", + BI => #ValBinTmr137, + Q => "mSaveRMM303_IntTON.Q"); + + IF "mSaveRMM303_IntTON.Q" AND "gRMM303_PIDCtrlOk" THEN + "PID_Variables".RMM303PIDIntValue := "mPID_RMM303_Int" ; + "HMI_PID".RMM303.I_ITLVAL := "PID_Variables".RMM303PIDIntValue ; + #Timer137En := FALSE ; + END_IF; + ELSE + #Timer137En := FALSE ; + END_IF; + IF ("HMI_PID".RMM303.High_Limit OR "HMI_PID".RMM303.Low_Limit) THEN + (* classic code: "HMI_PID".RMM303.I_ITLVAL := 0.0 ;*) + "HMI_PID".RMM303.I_ITLVAL := REAL#0.0 ; + END_IF; + + IF "mRMM303_Int_ONS" THEN + "HMI_PID".RMM303.I_ITL := TRUE ; + END_IF; + + // SECOND GAS INJECTION + "ONS_R"(Enable_ONS := "HMI_PID".RMM304.ManualControl.PidEnable , + Aux_ONS := "mRMM304_Int_Init", + ONS_R => "mRMM304_Int_ONS" ); + + #Timer146En := #mMinProd; + IF "HMI_PID".RMM304.ManualControl.PidEnable THEN + #ValBcdTmr137:= S_ODT (T_NO := "mSaveRMM304_IntTON", + S := #Timer146En, + TV := s5time#20s, + R := "AUX FALSE", + BI => #ValBinTmr146, + Q => "mSaveRMM304_IntTON.Q"); + + IF "mSaveRMM304_IntTON.Q" AND "gRMM304_PIDCtrlOk" THEN + "PID_Variables".RMM304PIDIntValue := "mPID_RMM304_Int" ; + "HMI_PID".RMM304.I_ITLVAL := "PID_Variables".RMM304PIDIntValue ; + #Timer146En := FALSE ; + END_IF; + ELSE + #Timer146En := FALSE ; + END_IF; + IF ("HMI_PID".RMM304.High_Limit OR "HMI_PID".RMM304.Low_Limit) THEN + (* classic code: "HMI_PID".RMM304.I_ITLVAL := 0.0 ;*) + "HMI_PID".RMM304.I_ITLVAL := REAL#0.0 ; + END_IF; + + IF "mRMM304_Int_ONS" THEN + "HMI_PID".RMM304.I_ITL := TRUE ; + END_IF; + + "ONS_R"(Enable_ONS := "HMI_PID".RVP303.ManualControl.PidEnable, + Aux_ONS := "mRVP303_Int_Init", + ONS_R => "mRVP303_Int_ONS" ); + + #Timer144En := #mMinProd; + IF "HMI_PID".RVP303.ManualControl.PidEnable THEN + #ValBcdTmr144:= S_ODT (T_NO := "mSaveRVP303_IntTON", + S := #Timer144En, + TV := S5TIME#20s, + R := "AUX FALSE", + BI => #ValBinTmr144, + Q => "mSaveRVP303_IntTON.Q"); + + IF "mSaveRVP303_IntTON.Q" THEN + "PID_Variables".RVP303PIDIntValue := "mPID_RVP303_Int" ; + "HMI_PID".RVP303.I_ITLVAL := "PID_Variables".RVP303PIDIntValue ; + #Timer144En := FALSE ; + END_IF; + ELSE; + #Timer144En := FALSE ; + END_IF; + IF "HMI_PID".RVP303.High_Limit OR "HMI_PID".RVP303.Low_Limit THEN + (* classic code: "HMI_PID".RVP303.I_ITLVAL := 0.0 ;*) + "HMI_PID".RVP303.I_ITLVAL := REAL#0.0 ; + END_IF; + + IF "mRVP303_Int_ONS" THEN + "HMI_PID".RVP303.I_ITL := TRUE ; + END_IF; + + "ONS_R"(Enable_ONS := "HMI_PID".RVN302.ManualControl.PidEnable, + Aux_ONS := "mRVN302_Int_Init", + ONS_R => "mRVN302_Int_ONS" ); + + #Timer145En := #mMinProd; + IF "HMI_PID".RVN302.ManualControl.PidEnable THEN + #ValBcdTmr145:= S_ODT (T_NO := "mSaveRVN302_IntTON", + S := #Timer145En, + TV := S5TIME#20s, + R := "AUX FALSE", + BI => #ValBinTmr145, + Q => "mSaveRVN302_IntTON.Q"); + + IF "mSaveRVN302_IntTON.Q" THEN + "PID_Variables".RVN302PIDIntValue := "mPID_RVN302_Int" ; + "HMI_PID".RVN302.I_ITLVAL := "PID_Variables".RVN302PIDIntValue ; + #Timer145En := FALSE ; + END_IF; + ELSE; + #Timer145En := FALSE ; + END_IF; + IF "HMI_PID".RVN302.High_Limit OR "HMI_PID".RVN302.Low_Limit THEN + (* classic code: "HMI_PID".RVN302.I_ITLVAL := 0.0 ;*) + "HMI_PID".RVN302.I_ITLVAL := REAL#0.0 ; + END_IF; + + IF "mRVN302_Int_ONS" THEN + "HMI_PID".RVN302.I_ITL := TRUE ; + END_IF; + + +END_FUNCTION_BLOCK + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPIDCtrl_SaveValve.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPIDCtrl_SaveValve.md new file mode 100644 index 0000000..f0cb512 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPIDCtrl_SaveValve.md @@ -0,0 +1,44 @@ +```pascal +FUNCTION "BlenderPIDCtrl_SaveValve" : Void +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : TASK1 +NAME : 'Name' +VERSION : 1.0 + VAR_TEMP + ValBinTmr138 : Word; + ValBcdTmr138 : S5Time; + Timer138En : Bool; + END_VAR + + VAR CONSTANT + "Time" : S5Time := S5T#40s; + END_VAR + + +BEGIN + + + (* classic code: IF ABS("Blender_Variables".gActual_Prod_SP - "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProductionRate) < "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProductionRate * 0.1 THEN*) + IF ABS("Blender_Variables".gActual_Prod_SP - "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProductionRate) < "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProductionRate * REAL#0.1 THEN + #Timer138En := TRUE; + #ValBcdTmr138:= S_ODT (T_NO := "mSpeedConstTmr", + S := #Timer138En, + TV := #Time, + R := "AUX FALSE", + BI => #ValBinTmr138, + Q => "mSpeedConstTmr.Q"); + ELSE + #Timer138En := FALSE; + END_IF; + + IF "mSpeedConstTmr.Q" THEN + "HMI_Variables_Cmd".Recipe_Updates.ValvesUpdate := TRUE ; + #Timer138En := FALSE ; + END_IF; + + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPIDCtrl_WriteAnOu.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPIDCtrl_WriteAnOu.md new file mode 100644 index 0000000..4f3a628 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPIDCtrl_WriteAnOu.md @@ -0,0 +1,265 @@ +```pascal +// Block Type: FC +// Block Number: 1925 +// Original Network Languages: LAD +// Block Comment: +// TASK1 PID + +FUNCTION "BlenderPIDCtrl_WriteAnOu" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + mVLT_freq_REAL : Real; + mDummy : Bool; + mVLT_PumpP2_freq_REAL : Real; + mVLT_PumpP1_freq_REAL : Real; +END_VAR + +BEGIN + + // Network 1: Carbonated Water Valve (Original Language: LAD) + // Water Valve + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" AND "HMI_PID"."RMM301"."Config" THEN + WritePeripheral(Analog_Value := "HMI_PID"."RMM301"."Out", MAX_Analog_Value := 100.0, MAX_Out := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := 0.0, MIN_Out := 0); + END_IF; + + // Network 2: Syrup Valve (Original Language: LAD) + // Syrup + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" AND "HMI_PID"."RMP302"."Config" THEN + WritePeripheral(Analog_Value := "HMI_PID"."RMP302"."Out", MAX_Analog_Value := 100.0, MAX_Out := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := 0.0, MIN_Out := 0); + END_IF; + + // Network 3: Co2 Valve (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" AND "HMI_PID"."RMM303"."Config" THEN + WritePeripheral(Analog_Value := "HMI_PID"."RMM303"."Out", MAX_Analog_Value := 100.0, MAX_Out := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := 0.0, MIN_Out := 0); + END_IF; + + // Network 4: Gas2 Valve (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" AND "HMI_PID"."RMM304"."Config" THEN + WritePeripheral(Analog_Value := "HMI_PID"."RMM304"."Out", MAX_Analog_Value := 100.0, MAX_Out := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := 0.0, MIN_Out := 0); + END_IF; + + // Network 5: Product Tank Pressure Valve (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" AND "HMI_PID"."RVM301"."Config" THEN + WritePeripheral(Analog_Value := "HMI_PID"."RVM301"."Out", MAX_Analog_Value := 100.0, MAX_Out := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := 0.0, MIN_Out := 0); + END_IF; + + // Network 6: Syrup Tank Level Valve (Original Language: LAD) + + IF "HMI_PID"."RVP303"."Out" >= 1.0 THEN + WritePeripheral(Analog_Value := "HMI_PID"."RVP303"."Out", MAX_Analog_Value := 100.0, MAX_Out := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := 0.0, MIN_Out := 5530); + END_IF; + + // Network 7: Valve Power Enable (Power Supply Analog Signal) (Original Language: LAD) + + IF "HMI_PID"."RVP303"."Out" < 1.0 THEN + "P_AO_RVP303" := 0; + END_IF; + + "DO_SyrupValve_Enable" := "HMI_PID"."RVP303"."Out" < 1.0; + + // Network 8: Deaireator Level Valve (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" AND "HMI_PID"."RVN302"."ConfigPID" AND "HMI_PID"."RVN302"."Config" THEN + WritePeripheral(Analog_Value := "HMI_PID"."RVN302"."Out", MAX_Analog_Value := 100.0, MAX_Out := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := 0.0, MIN_Out := 0); + END_IF; + + // Network 9: CIp Heating Valve (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" AND "HMI_PID"."RVS318"."Config" THEN + WritePeripheral(Analog_Value := "HMI_PID"."RVS318"."Out", MAX_Analog_Value := 100.0, MAX_Out := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := 0.0, MIN_Out := 0); + END_IF; + + // Network 10: Chiller Temperature (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" AND "HMI_PID"."RVM319_PRD"."Config" THEN + WritePeripheral(Analog_Value := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_SP_ProdTemp", MAX_Analog_Value := 50.0, MAX_Out := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := 0.0, MIN_Out := 0); + END_IF; + + IF "HMI_Variables_Status"."Procedures"."WarmRinseRun" THEN + "HMI_PID"."RVM319_H2O"."Out" := "HMI_PID"."RVM319_PRD"."Out"; + END_IF; + + // Network 11: Cip Return Temperature (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" THEN + WritePeripheral(Analog_Value := "HMI_Instrument"."TTS305_1"."PVFiltered", MAX_Analog_Value := 100.0, MAX_Out := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := 0.0, MIN_Out := 0); + END_IF; + + // Network 12: Cip Conductivity (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" THEN + WritePeripheral(Analog_Value := "HMI_Instrument"."CTS301"."PVFiltered", MAX_Analog_Value := 2000.0, MAX_Out := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := 0.0, MIN_Out := 0); + END_IF; + + // Network 13: Cip Caustic Conductivity (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" THEN + WritePeripheral(Analog_Value := "HMI_Instrument"."CTS302"."PVFiltered", MAX_Analog_Value := 200.0, MAX_Out := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := 0.0, MIN_Out := 0); + END_IF; + + // Network 14: Product Pump (Original Language: LAD) + + IF "gBlenderProdMode" AND "gBlenderRinseMode" AND "HMI_Device"."PPM303"."Out" AND "gIN_Filler1ProductReq" AND "HMI_PID"."PPM303"."PID_FIX" AND "HMI_PID"."PPM303"."ManualControl"."ManOut" THEN + "HMI_PID"."PPM303"."Out" := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_ProdPump1_Hz"; + END_IF; + + IF "gBlenderProdMode" AND "gBlenderRinseMode" AND "HMI_Device"."PPM303"."Out" AND "gIN_Filler1ProductReq" AND "HMI_PID"."PPM303"."PID_FIX" AND "HMI_PID"."PPM303"."ManualControl"."ManOut" THEN + "HMI_PID"."PPM303"."Out" := 10.0; + END_IF; + + IF ("gBlenderProdMode" AND "gBlenderRinseMode" AND "HMI_Device"."PPM303"."Out" AND "HMI_PID"."PPM303"."PID_FIX" AND "HMI_PID"."PPM303"."ManualControl"."ManOut" AND "HMI_Alarms"."gH_Status") OR ("gBlenderProdMode" AND "gBlenderRinseMode" AND "HMI_Device"."PPM303"."Out" AND "HMI_PID"."PPM303"."ManualControl"."ManOut" AND "HMI_Alarms"."gH_Status" AND "Disable_Bit") THEN + "HMI_PID"."PPM303"."Out" := 15.0; + END_IF; + + IF "gBlenderProdMode" AND "gBlenderRinseMode" AND "HMI_Device"."PPM303"."Out" AND "HMI_PID"."PPM303"."ManualControl"."ManOut" THEN + "HMI_PID"."PPM303"."Out" := "HMI_Blender_Parameters"."ProcessSetup"."_RinsePPM303Freq"; + END_IF; + + IF "HMI_Device"."PPM303"."Out" AND "HMI_PID"."PPM303"."ManualControl"."ManOut" AND "gBlenderCIPMode" THEN + "HMI_PID"."PPM303"."Out" := "HMI_Blender_Parameters"."ProcessSetup"."_CIPPPM303Freq"; + END_IF; + + IF "HMI_PID"."PPM303"."ManualControl"."ManOut" THEN + "HMI_PID"."PPM303"."Out" := "HMI_PID"."PPM303"."OutMan"; + END_IF; + + IF "HMI_Device"."PPM303"."Out" AND "HMI_PID"."PPM303"."ManualControl"."ManOut" THEN + "HMI_PID"."PPM303"."Out" := 0.0; + END_IF; + + "mDummy" := "gBlenderProdMode" AND "gBlenderRinseMode" AND "HMI_Device"."PPM303"."Out" AND "gIN_Filler1ProductReq" AND "HMI_PID"."PPM303"."PID_FIX" AND "HMI_PID"."PPM303"."ManualControl"."ManOut"; + + // Network 15: Product Pump Reference Value (Original Language: LAD) + // N.B. impostare il MAX_Analog_Value al valore di produzione + 10 Hz ( con + // macchina a 50Hz verrà impostato a 60Hz). + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" AND "HMI_PID"."PPM303"."Config" THEN + WritePeripheral(Analog_Value := "HMI_PID"."PPM303"."Out", MAX_Analog_Value := 50.0, MAX_Out := "Blender_Constants"."gAnalogMaxValue_VFC", MIN_Analog_Value := 0.0, MIN_Out := 0); + END_IF; + + // Network 16: Product Pump 2 (Original Language: LAD) + + IF "gBlenderProdMode" AND "gBlenderRinseMode" AND "HMI_PID"."PPM303"."PID_FIX" AND "HMI_PID"."PPM303"."ManualControl"."ManOut" AND "HMI_Device"."PPM305"."Out" AND "gIN_Filler2ProductReq" THEN + "HMI_PID"."PPM305"."Out" := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_ProdPump2_Hz"; + END_IF; + + IF "gBlenderProdMode" AND "gBlenderRinseMode" AND "HMI_PID"."PPM303"."PID_FIX" AND "HMI_PID"."PPM303"."ManualControl"."ManOut" AND "HMI_Device"."PPM305"."Out" AND "gIN_Filler2ProductReq" THEN + "HMI_PID"."PPM305"."Out" := 10.0; + END_IF; + + IF "gBlenderProdMode" AND "HMI_Device"."PPM303"."Out" AND "HMI_PID"."PPM303"."PID_FIX" THEN + "HMI_PID"."PPM305"."Out" := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_FillingValveHead_SP"; + END_IF; + + IF "gBlenderProdMode" AND "gBlenderRinseMode" AND "HMI_Device"."PPM305"."Out" AND "HMI_PID"."PPM305"."ManualControl"."ManOut" THEN + "HMI_PID"."PPM305"."Out" := "HMI_Blender_Parameters"."ProcessSetup"."_RinsePPM303Freq"; + END_IF; + + IF "gBlenderCIPMode" AND "HMI_Device"."PPM305"."Out" AND "HMI_PID"."PPM305"."ManualControl"."ManOut" THEN + "HMI_PID"."PPM305"."Out" := "HMI_Blender_Parameters"."ProcessSetup"."_CIPPPM303Freq"; + END_IF; + + IF "HMI_Device"."PPM305"."Out" AND "HMI_PID"."PPM305"."ManualControl"."ManOut" THEN + "HMI_PID"."PPM305"."Out" := 0.0; + END_IF; + + IF "HMI_PID"."PPM305"."ManualControl"."ManOut" THEN + "HMI_PID"."PPM305"."Out" := "HMI_PID"."PPM305"."OutMan"; + END_IF; + + "mDummy" := "gBlenderProdMode" AND "gBlenderRinseMode" AND "HMI_PID"."PPM303"."PID_FIX" AND "HMI_PID"."PPM303"."ManualControl"."ManOut" AND "HMI_Device"."PPM305"."Out" AND "gIN_Filler2ProductReq"; + + // Network 17: Product Pump 2 Reference Value (Original Language: LAD) + // N.B. impostare il MAX_Analog_Value al valore di produzione + 10 Hz ( con + // macchina a 50Hz verrà impostato a 60Hz). + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" AND "HMI_PID"."PPM305"."Config" THEN + WritePeripheral(Analog_Value := "HMI_PID"."PPM305"."Out", MAX_Analog_Value := 50.0, MAX_Out := "Blender_Constants"."gAnalogMaxValue_VFC", MIN_Analog_Value := 0.0, MIN_Out := 0); + END_IF; + + // Network 18: Syrup Pump (Original Language: LAD) + + IF "gBlenderProdMode" AND "HMI_Device"."PPP302"."Out" THEN + "mVLT_PumpP2_freq_REAL" := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_SyrupPumpFreq"; + END_IF; + + IF "gBlenderRinseMode" AND "HMI_Device"."PPP302"."Out" THEN + "mVLT_PumpP2_freq_REAL" := "HMI_Blender_Parameters"."ProcessSetup"."_RinsePPP302Freq"; + END_IF; + + IF "gBlenderCIPMode" AND "HMI_Device"."PPP302"."Out" THEN + "mVLT_PumpP2_freq_REAL" := "HMI_Blender_Parameters"."ProcessSetup"."_CIPPPP302Freq"; + END_IF; + + IF "HMI_Device"."PPP302"."Out" THEN + "mVLT_PumpP2_freq_REAL" := 0.0; + END_IF; + + IF "HMI_PID"."PPP302"."ManualControl"."ManOut" THEN + "HMI_PID"."PPP302"."OutMan" := "mVLT_PumpP2_freq_REAL"; + END_IF; + + IF "HMI_PID"."PPP302"."ManualControl"."ManOut" THEN + "mVLT_PumpP2_freq_REAL" := "HMI_PID"."PPP302"."OutMan"; + END_IF; + + "HMI_PID"."PPP302"."Out" := "mVLT_PumpP2_freq_REAL"; + + "mDummy" := ("gBlenderProdMode" AND "HMI_Device"."PPP302"."Out") OR ("gBlenderRinseMode" AND "HMI_Device"."PPP302"."Out"); + + // Network 19: Syrup Pump Reference Value (Original Language: LAD) + // N.B. impostare il MAX_Analog_Value al valore di produzione + 10 Hz ( con + // macchina a 50Hz verrà impostato a 60Hz). + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" AND "HMI_PID"."PPP302"."Config" THEN + WritePeripheral(Analog_Value := "HMI_PID"."PPP302"."Out", MAX_Analog_Value := 60.0, MAX_Out := "Blender_Constants"."gAnalogMaxValue_VFC", MIN_Analog_Value := 0.0, MIN_Out := 0); + END_IF; + + // Network 20: Water Pump (Original Language: LAD) + + IF "gBlenderProdMode" AND "HMI_Device"."PPN301"."Out" THEN + "mVLT_PumpP1_freq_REAL" := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_WaterPumpFreq"; + END_IF; + + IF "gBlenderRinseMode" AND "HMI_Device"."PPN301"."Out" THEN + "mVLT_PumpP1_freq_REAL" := "HMI_Blender_Parameters"."ProcessSetup"."_RinsePPN301Freq"; + END_IF; + + IF "gBlenderCIPMode" THEN + "mVLT_PumpP1_freq_REAL" := "HMI_Blender_Parameters"."ProcessSetup"."_CIPPPN301Freq"; + END_IF; + + IF "HMI_Device"."PPN301"."Out" THEN + "mVLT_PumpP1_freq_REAL" := 0.0; + END_IF; + + IF "HMI_PID"."PPN301"."ManualControl"."ManOut" THEN + "HMI_PID"."PPN301"."OutMan" := "mVLT_PumpP1_freq_REAL"; + END_IF; + + IF "HMI_PID"."PPN301"."ManualControl"."ManOut" THEN + "mVLT_PumpP1_freq_REAL" := "HMI_PID"."PPN301"."OutMan"; + END_IF; + + "HMI_PID"."PPN301"."Out" := "mVLT_PumpP1_freq_REAL"; + + "mDummy" := ("gBlenderProdMode" AND "HMI_Device"."PPN301"."Out") OR ("gBlenderRinseMode" AND "HMI_Device"."PPN301"."Out"); + + // Network 21: Water Pump Reference Value (Original Language: LAD) + // N.B. impostare il MAX_Analog_Value al valore di produzione + 10 Hz ( con + // macchina a 50Hz verrà impostato a 60Hz). + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" AND "HMI_PID"."PPN301"."Config" THEN + WritePeripheral(Analog_Value := "HMI_PID"."PPN301"."Out", MAX_Analog_Value := 60.0, MAX_Out := "Blender_Constants"."gAnalogMaxValue_VFC", MIN_Analog_Value := 0.0, MIN_Out := 0); + END_IF; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPIDCtrl__Loop.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPIDCtrl__Loop.md new file mode 100644 index 0000000..e416098 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPIDCtrl__Loop.md @@ -0,0 +1,135 @@ +```pascal +// Block Type: FB +// Block Number: 1729 +// Original Network Languages: LAD +// Block Comment: +// TASK1 PID + +FUNCTION_BLOCK "BlenderPIDCtrl__Loop" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + i_InValue : Real; + i_SlewMax : Real; + i_Cycle : Real; +END_VAR + +VAR_OUTPUT + MeanValue : Real; + Variance : Real; + Std_Deviation : Real; +END_VAR + +VAR_INOUT + out : Real; +END_VAR + +VAR_STAT + PID_1_300ms : Bool; + PID_2_300ms : Bool; + PID_3_300ms : Bool; + PID_4_300ms : Bool; + PID_5_300ms : Bool; + PID_6_300ms : Bool; + Flow_Meter_Error_RETVAL : Real; + PID_FF_Calc : "BlenderPID_PIDFFCalc"; + PID_Blending_Fault : "BlenderPID_BlendingFault"; + PID_Save_Integral : "BlenderPIDCtrl_SaveInteg"; + PID_Monitor : "BlenderPIDCtrl_Monitor"; + Read_AnalogInput : "BlenderPIDCtrl_ReadAnIn"; +END_VAR + +BEGIN + + // Network 1: Read Analoc Inputs (Original Language: LAD) + + "Read_AnalogInput"(); + + // Network 2: MIX - OB35 scan counter (Original Language: LAD) + // PID Control Time Bit (300ms) + + "PID_1_300ms" := Eq("MW1968", 1); + + "PID_2_300ms" := Eq("MW1968", 2); + + "PID_3_300ms" := Eq("MW1968", 3); + + "PID_4_300ms" := Eq("MW1968", 4); + + "PID_5_300ms" := Eq("MW1968", 5); + + "PID_6_300ms" := Eq("MW1968", 6); + + // Network 3: PID Call (Original Language: LAD) + // Water PID + // Syrup PID + // CO2 PID + + IF "PID_1_300ms" THEN + "PID_FF_Calc"(); + "PID_Blending_Fault"(); + BlenderPID_FlowMeterErro(); + "PID_Monitor"(); + "PID_Save_Integral"(); + BlenderPIDCtrl_SaveValve(); + END_IF; + + IF "PID_1_300ms" AND "HMI_PID"."RMM301"."Config" THEN + "PID_RMM301_Data"(); + END_IF; + + IF "PID_1_300ms" AND "HMI_PID"."RMP302"."Config" THEN + "PID_RMP302_Data"(); + END_IF; + + IF "PID_1_300ms" AND "HMI_PID"."RMM303"."Config" THEN + "PID_RMM303_Data"(); + END_IF; + + IF "PID_1_300ms" AND "HMI_PID"."RMM304"."Config" THEN + "PID_RMM304_Data"(); + END_IF; + + // Network 4: PID Product Tank Pressure (Original Language: LAD) + + IF "PID_2_300ms" AND "HMI_PID"."RVM301"."Config" THEN + "PID_RVM301_Data"(); + BlenderPIDCtrl_PresRelea(); + END_IF; + + // Network 5: Pid Call (Original Language: LAD) + + IF "PID_4_300ms" AND "HMI_PID"."RVM319_PRD"."Config" THEN + "PID_RVM319_Data"(); + END_IF; + + IF "HMI_PID"."RVP303"."Config" AND "PID_4_300ms" THEN + "PID_RVP303_Data"(); + END_IF; + + IF "HMI_PID"."RVN302"."ConfigPID" AND "HMI_PID"."RVN302"."Config" AND "PID_4_300ms" THEN + "PID_RVN302_Data"(); + END_IF; + + // Network 6: Filling Head (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "PID_5_300ms" AND "HMI_PID"."PPM303"."Config" THEN + "PID_Filling_Head_Data"(); + END_IF; + + // Network 7: CIp Heating PID (Original Language: LAD) + + IF "PID_6_300ms" AND "HMI_PID"."RVS318"."Config" THEN + "PID_RVS318_Data"(); + END_IF; + + // Network 8: Write Analog Outputs (Original Language: LAD) + + IF "AUX TRUE" THEN + BlenderPIDCtrl_WriteAnOu(); + END_IF; + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPID_ActualRecipe.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPID_ActualRecipe.md new file mode 100644 index 0000000..1a8a689 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPID_ActualRecipe.md @@ -0,0 +1,146 @@ +```pascal +FUNCTION_BLOCK "BlenderPID_ActualRecipe" +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : TASK1 +NAME : 'Name' +VERSION : 1.0 + VAR + mPrevRecipeName : String[32]; + END_VAR + + +BEGIN + + + IF "HMI_Blender_Parameters".Processor_Options.Blender_OPT._BrixMeter AND (("HMI_Blender_Parameters".Processor_Options.Blender_OPT._MeterType <>3 OR "HMI_Blender_Parameters".Processor_Options.Blender_OPT._MeterType <>4 + AND "Blender_Variables".gProductRecipeNum <> "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProdMeterRecipeNum) + OR "HMI_Blender_Parameters".Processor_Options.Blender_OPT._MeterType = 4) AND NOT "gBlenderCIPMode" AND NOT "mPDS_PA_Data".Input_From_mPDS.gPAmPDS_ReceiveOnly THEN + "gProdMeterTransferRecipe" := TRUE ; + END_IF ; + + IF "HMI_Blender_Parameters".Processor_Options.Blender_OPT._Promass = 1 THEN + "HMI_Blender_Parameters".Actual_Recipe_Parameters._Type := 1 ; + "HMI_Blender_Parameters".Actual_Recipe_Parameters._Ratio := 20 ; + END_IF ; + + CASE "HMI_Blender_Parameters".Actual_Recipe_Parameters._Type OF + 1: // Recipe Diet Type + "Blender_Variables_Pers".gSugarBeverage := FALSE ; + "gNotARecipe_Fault" := FALSE ; + + 2: // Recipe Regular Type + "Blender_Variables_Pers".gSugarBeverage := TRUE ; + "gNotARecipe_Fault" := FALSE ; + + 3: // Recipe Ratio Type + "Blender_Variables_Pers".gSugarBeverage := TRUE ; + "gNotARecipe_Fault" := FALSE ; + ELSE: + "gNotARecipe_Fault" := TRUE ; + "Blender_Variables_Pers".gSugarBeverage := FALSE ; + END_CASE; + + IF "HMI_Blender_Parameters".Processor_Options.Blender_OPT._CoolerPresent AND ("HMI_Blender_Parameters".Processor_Options.Blender_OPT._CoolerControl >= 1) AND "HMI_Blender_Parameters".Actual_Recipe_Parameters._EnProdTemp THEN + "Blender_Variables_Pers".gCoolerEnabled := TRUE ; + ELSE + "Blender_Variables_Pers".gCoolerEnabled := FALSE ; + END_IF; + + IF NOT "HMI_Blender_Parameters".Processor_Options.Blender_OPT._CarboPresent THEN + (* classic code: "HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Vols := 0.0 ;*) + "HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Vols := REAL#0.0 ; + END_IF; + + IF "HMI_Blender_Parameters".Processor_Options.Blender_OPT._CO2_GAS2_Injection AND ("HMI_Blender_Parameters".Processor_Options.Blender_OPT._VacuumPump >= 1) THEN + (* classic code: IF ("HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Vols > 0.1) AND ("HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Fact > 0.1 ) AND NOT "HMI_Blender_Parameters".Actual_Recipe_Parameters._GAS2_Injection THEN*) + IF ("HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Vols > REAL#0.1) AND ("HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Fact > REAL#0.1 ) AND NOT "HMI_Blender_Parameters".Actual_Recipe_Parameters._GAS2_Injection THEN + "Blender_Variables_Pers".gCarboStillRecipe := TRUE ; + ELSE + "Blender_Variables_Pers".gCarboStillRecipe := FALSE ; + END_IF; + ELSE + IF #mPrevRecipeName <> "HMI_Blender_Parameters".Actual_Recipe_Parameters._Name THEN + (* classic code: IF ("HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Vols > 0.1) AND ("HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Fact > 0.1 ) THEN*) + IF ("HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Vols > REAL#0.1) AND ("HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Fact > REAL#0.1 ) THEN + "Blender_Variables_Pers".gCarboStillRecipe := TRUE ; + ELSE + "Blender_Variables_Pers".gCarboStillRecipe := FALSE ; + END_IF; + END_IF; + END_IF; + + IF "HMI_Blender_Parameters".Processor_Options.Blender_OPT._CO2_GAS2_Injection AND "HMI_Blender_Parameters".Actual_Recipe_Parameters._GAS2_Injection THEN + // IF ("HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Vols > 0.1) AND ("HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Fact > 0.1 ) THEN + // "Blender_Variables_Pers".gCarboStillProduct := TRUE ; + // ELSE + "Blender_Variables_Pers".gCarboStillProduct := FALSE ; + (* classic code: "HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Vols := 0.0 ;*) + "HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Vols := REAL#0.0 ; + (* classic code: "HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Fact := 0.0 ;*) + "HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Fact := REAL#0.0 ; + // END_IF; + ELSE + (* classic code: IF ("HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Vols > 0.1) AND ("HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Fact > 0.1 ) THEN*) + IF ("HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Vols > REAL#0.1) AND ("HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Fact > REAL#0.1 ) THEN + "Blender_Variables_Pers".gCarboStillProduct := TRUE ; + ELSE + "Blender_Variables_Pers".gCarboStillProduct := FALSE ; + END_IF; + END_IF; + + //IF NOT "HMI_Blender_Parameters".Processor_Options.Blender_OPT._CO2_GAS2_Injection AND ("HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Vols > 0.1) THEN + // "HMI_Blender_Parameters".Actual_Recipe_Parameters._GAS2_Injection := true; + //END_IF; + + "gActualSP_RatioVol" := "HMI_Blender_Parameters".Actual_Recipe_Parameters._Ratio ; + + IF ("HMI_Blender_Parameters".Actual_Recipe_Parameters._Ratio > 19) THEN + "Blender_Variables_Pers".gWaterRecipe := TRUE ; + "Blender_Variables_Pers".gSugarBeverage := FALSE ; + ELSE + "Blender_Variables_Pers".gWaterRecipe := FALSE ; + END_IF; + + IF ("HMI_Blender_Parameters".Processor_Options.Blender_OPT._ByPassDeair AND NOT "HMI_Blender_Parameters".Actual_Recipe_Parameters._EnDeaireation) OR + ("HMI_Blender_Parameters".Processor_Options.Blender_OPT._StillWaterByPass AND "Blender_Variables_Pers".gWaterRecipe AND + NOT "Blender_Variables_Pers".gCarboStillRecipe) THEN + "Blender_Variables_Pers".gSkipDeaireation := TRUE ; + ELSE + "Blender_Variables_Pers".gSkipDeaireation := FALSE ; + END_IF; + + IF ("HMI_Blender_Parameters".Actual_Recipe_Parameters._ProductionRate > "Blender_Variables".gMinProduction) AND NOT "HMI_Blender_Parameters".Processor_Options.Blender_OPT._BlendFillSystem THEN + "Blender_Variables".gProdTankStartLvl := "Blender_Constants".gStartLvl_NormalSpeed ; + ELSE + "Blender_Variables".gProdTankStartLvl := "Blender_Constants".gStartLvl_VeryLowSpeed ; + END_IF ; + IF "HMI_Blender_Parameters".Processor_Options.Blender_OPT._BlendFillSystem THEN + (* "Blender_Variables".gProdTankStopLvl := "Blender_Constants".gStopLvl_BlendFill ; + "Blender_Variables".gProdTankTargetLvl := "Blender_Constants".gTargetLvl_BlendFill ;*) + (* classic code: "Blender_Variables".gProdTankStopLvl := ((("HMI_Blender_Parameters".ProcessSetup._FillingValveHeight + "HMI_Blender_Parameters".Actual_Recipe_Parameters._FillingValveHead_SP) - + "HMI_Blender_Parameters".ProcessSetup._TM301Height_0) / "Blender_Variables".gBufferTankProbeHeight) * 100.0 ;*) + "Blender_Variables".gProdTankStopLvl := ((("HMI_Blender_Parameters".ProcessSetup._FillingValveHeight + "HMI_Blender_Parameters".Actual_Recipe_Parameters._FillingValveHead_SP) - + "HMI_Blender_Parameters".ProcessSetup._TM301Height_0) / "Blender_Variables".gBufferTankProbeHeight) * REAL#100.0; + (* classic code: "Blender_Variables".gProdTankStopLvl := LIMIT(MN:= 30.0, IN:= "Blender_Variables".gProdTankStopLvl, MX:= 80.0);*) + "Blender_Variables".gProdTankStopLvl := LIMIT(MN := REAL#30.0, IN := "Blender_Variables".gProdTankStopLvl, MX := REAL#50);//80.0); + (* classic code: "Blender_Variables".gProdTankTargetLvl := "Blender_Variables".gProdTankStopLvl - 15.0 ;*) + "Blender_Variables".gProdTankTargetLvl := "Blender_Variables".gProdTankStopLvl - REAL#15.0; + (* classic code: "Blender_Variables".gProdTankStartLvl := 10.0 ;*) + "Blender_Variables".gProdTankStartLvl := REAL#20.0; + ELSE + "Blender_Variables".gProdTankStopLvl := "Blender_Constants".gStopLvl_OnlyBlend; + "Blender_Variables".gProdTankTargetLvl := "Blender_Constants".gTargetLvl_OnlyBlend; + END_IF; + + IF "HMI_Blender_Parameters".Actual_Recipe_Parameters._PrdTankMinLevel > "Blender_Variables".gProdTankTargetLvl THEN + "Blender_Variables".gProdTankTargetLvl := "HMI_Blender_Parameters".Actual_Recipe_Parameters._PrdTankMinLevel ; + END_IF; + + #mPrevRecipeName := "HMI_Blender_Parameters".Actual_Recipe_Parameters._Name ; + + +END_FUNCTION_BLOCK + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPID_BlendingFault.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPID_BlendingFault.md new file mode 100644 index 0000000..84583c7 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPID_BlendingFault.md @@ -0,0 +1,109 @@ +```pascal +FUNCTION_BLOCK "BlenderPID_BlendingFault" +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : TASK1 +NAME : 'Name' +VERSION : 1.0 + VAR + Timer132Enable : Bool; + Timer133Enable : Bool; + Timer134Enable : Bool; + END_VAR + + VAR_TEMP + ValBinTmr132 : Word; + ValBcdTmr132 : S5Time; + ValBinTmr133 : Word; + ValBcdTmr133 : S5Time; + ValBinTmr134 : Word; + ValBcdTmr134 : S5Time; + END_VAR + + +BEGIN + + + IF "Procedure_Variables".First_Production.Latch AND "gBlenderEnToRamp" THEN + #Timer132Enable := TRUE; + #ValBcdTmr132:= S_ODT (T_NO := "mFirstProdBlendErrEnTON", + S := #Timer132Enable, + TV := s5time#20s, + R := "AUX FALSE", + BI => #ValBinTmr132, + Q => "mFirstProdBlendErrEn.Q"); + ELSE + #Timer132Enable := FALSE ; + END_IF; + + IF (ABS("Blender_Variables".gBlendError) > "HMI_Variables_Status".Analog_Values.MaxBlendError AND "gBlenderBlending") AND ("mFirstProdBlendErrEn.Q" OR "Procedure_Variables".First_Production.Done) THEN + IF "Blender_Variables".gBlendError > 0 THEN + "gBlendErrorLowSyr_Fault" := TRUE ; + ELSE + "gBlendErrorHighSyr_Fault" := TRUE ; + END_IF; + END_IF; + + IF ("gBlendErrorLowSyr_Fault" OR "gBlendErrorHighSyr_Fault") AND "gIN_ResetBtn" THEN + "Blender_Variables".gBlendError := 0 ; + "gMaxBlendErrorAfterFault" := TRUE ; + "gBlendErrorLowSyr_Fault" := FALSE ; + "gBlendErrorHighSyr_Fault" := FALSE ; + END_IF; + + IF "gMaxBlendErrorAfterFault" AND "gBlenderStableFlow" THEN + #Timer133Enable := TRUE; + END_IF; + + #ValBcdTmr133:= S_ODT (T_NO := "mBlendErrorRecTmr", + S := #Timer133Enable, + TV := s5time#10s, + R := "AUX FALSE", + BI => #ValBinTmr133, + Q => "mBlendErrorRecTmr.Q"); + + IF "mBlendErrorRecTmr.Q" THEN + IF ABS("Blender_Variables".gBlendError) < "HMI_Variables_Status".Analog_Values.MaxBlendError THEN + #Timer133Enable := FALSE ; + "gMaxBlendErrorAfterFault" := FALSE ; + END_IF; + END_IF; + + IF (ABS("Blender_Variables".gCarboCO2Error) > "HMI_Variables_Status".Analog_Values.MaxCarboCO2Error AND "gBlenderBlending") AND ("mFirstProdBlendErrEn.Q" OR "Procedure_Variables".First_Production.Done) THEN + IF "Blender_Variables".gCarboCO2Error > 0 THEN + "gCarboCO2Err_L_CO2_Fault" := TRUE ; + ELSE + "gCarboCO2Err_H_CO2_Fault" := FALSE ; + END_IF; + END_IF; + + IF ("gCarboCO2Err_L_CO2_Fault" OR "gCarboCO2Err_H_CO2_Fault") AND "gIN_ResetBtn" THEN + "Blender_Variables".gCarboCO2Error := 0 ; + "gMaxCarboErrorAfterFault" := TRUE ; + "gCarboCO2Err_L_CO2_Fault" := FALSE ; + "gCarboCO2Err_H_CO2_Fault" := FALSE ; + END_IF; + + IF "gMaxCarboErrorAfterFault" AND "gBlenderStableFlow" THEN + #Timer134Enable := TRUE; + END_IF; + + #ValBcdTmr134:= S_ODT (T_NO := "mCarboErrorRecTmr", + S := #Timer134Enable, + TV := s5time#20s, + R := "AUX FALSE", + BI => #ValBinTmr134, + Q => "mCarboErrorRecTmr.Q"); + + IF "mCarboErrorRecTmr.Q" THEN + IF ABS("Blender_Variables".gCarboCO2Error) < "HMI_Variables_Status".Analog_Values.MaxCarboCO2Error THEN + #Timer134Enable := FALSE ; + "gMaxCarboErrorAfterFault":= FALSE ; + END_IF; + END_IF; + + +END_FUNCTION_BLOCK + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPID_FlowMeterErro.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPID_FlowMeterErro.md new file mode 100644 index 0000000..b0c62d9 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPID_FlowMeterErro.md @@ -0,0 +1,56 @@ +```pascal +FUNCTION "BlenderPID_FlowMeterErro" : Real +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : TASK1 +NAME : 'Name' +VERSION : 1.0 + VAR_TEMP + mWaterMaxFlow : Real; + mWaterMinFlow : Real; + mSyrupMaxFlow : Real; + mSyrupMinFlow : Real; + mMinRatio : Real; + mMaxRatio : Real; + mBevBrixMax : Real; + mBevBrixMin : Real; + END_VAR + + +BEGIN + + + IF "Blender_Variables".gSP_H2O <> 0 THEN + "Blender_Variables".gWaterVFMCalcError := "Blender_Variables".gWaterVFMMeasError / 100 * "Blender_Variables".gSP_H2O ; + END_IF; + IF "Blender_Variables".gSP_SYR <> 0 THEN + "Blender_Variables".gSyrupMFMCalcError := ("Blender_Variables".gSyrupMFMMeasError / 100 + ("Blender_Variables".gSyrupMFMZeroStab / ("Blender_Variables".gSP_SYR * 60)) / 100) * "Blender_Variables".gSP_SYR ; + END_IF; + IF "Blender_Variables".gSP_CO2 <>0 THEN + "Blender_Variables".gCO2MFMCalcError := ("Blender_Variables".gCO2MFMMeasError / 100 + ("Blender_Variables".gCO2MFMZeroStab / ("Blender_Variables".gSP_CO2 * 60 / 1000)) / 100) * "Blender_Variables".gSP_CO2 ; + END_IF; + #mWaterMaxFlow := "Blender_Variables".gSP_H2O + "Blender_Variables".gWaterVFMCalcError ; + #mWaterMinFlow := "Blender_Variables".gSP_H2O - "Blender_Variables".gWaterVFMCalcError ; + IF "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupDensity <> 0 THEN + #mSyrupMaxFlow := ("Blender_Variables".gSP_SYR + "Blender_Variables".gSyrupMFMCalcError) / "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupDensity ; + #mSyrupMinFlow := ("Blender_Variables".gSP_SYR - "Blender_Variables".gSyrupMFMCalcError) / "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupDensity ; + END_IF; + IF #mSyrupMaxFlow <> 0 THEN + #mMinRatio := #mWaterMinFlow / #mSyrupMaxFlow ; + END_IF; + IF #mSyrupMinFlow <> 0 THEN + #mMaxRatio := #mWaterMaxFlow / #mSyrupMinFlow ; + END_IF; + IF "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupDensity <> 0 THEN + #mBevBrixMax := "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupBrix / ((#mMinRatio / "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupDensity) + 1) ; + #mBevBrixMin := "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupBrix / ((#mMaxRatio / "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupDensity) + 1) ; + END_IF; + "Blender_Variables".gBlenderBlendMaxError := #mBevBrixMax - #mBevBrixMin ; + + #BlenderPID_FlowMeterErro := "Blender_Variables".gBlenderBlendMaxError ; + + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPID_NextRecipe.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPID_NextRecipe.md new file mode 100644 index 0000000..39489b2 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPID_NextRecipe.md @@ -0,0 +1,26 @@ +```pascal +// Block Type: FC +// Block Number: 1916 +// Original Network Languages: LAD + +FUNCTION "BlenderPID_NextRecipe" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + Block_Move_Err : Int; +END_VAR + +BEGIN + + // Network 1: (Original Language: LAD) + + "Block_Move_Err" := BLKMOV(SRCBLK := "System_RunOut_Variables"."gNext_Recipe", DSTBLK => "HMI_Blender_Parameters"."Actual_Recipe_Parameters"); // ADVERTENCIA: BLKMOV usado directamente, probablemente no compile! + + // Network 2: (Original Language: LAD) + + "HMI_Variables_Cmd"."Recipe"."Active_Recipe_Running" := "HMI_Blender_Parameters"."Next_Recipe_Number"; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPID_PIDFFCalc.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPID_PIDFFCalc.md new file mode 100644 index 0000000..cd6e0d7 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPID_PIDFFCalc.md @@ -0,0 +1,213 @@ +```pascal +FUNCTION_BLOCK "BlenderPID_PIDFFCalc" +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : TASK1 +NAME : 'Name' +VERSION : 1.0 + VAR + mWaterFF_SlewLimit : "SlewLimit"; + mSP_SYR_Flow : Real; + END_VAR + + +BEGIN + + + "PID_Variables".PPN301FrictionLoss := "FrictionLoss"(i_Flow := "Blender_Variables".gSP_H2O, + i_K := "HMI_Blender_Parameters".ProcessSetup._KWaterLoss, + i_Dens := "Blender_Constants".gH2O_Density) ; + + IF "PID_Variables".PPN301FrictionLoss > "HMI_Blender_Parameters".ProcessSetup._PPN301Pressure THEN + "PID_Variables".PPN301FrictionLoss := "HMI_Blender_Parameters".ProcessSetup._PPN301Pressure ; + ELSIF "PID_Variables".PPN301FrictionLoss < 0 THEN + (* classic code: "PID_Variables".PPN301FrictionLoss := 0.0 ;*) + "PID_Variables".PPN301FrictionLoss := REAL#0.0 ; + END_IF; + + "PID_Variables".PPP302FrictionLoss := "FrictionLoss"(i_Flow := "Blender_Variables".gSP_SYR, + i_K := "HMI_Blender_Parameters".ProcessSetup._KSyrupLoss, + i_Dens := "Blender_Variables".gActualSyrupDens) ; + + "gHProcessSetup_KWatPump" := (("HMI_Blender_Parameters".ProcessSetup._PPN301Pressure * 10) / 2500) ; (* Kwat = Pwat [METERS]/(fxf) f=50Hz*) + + IF "PID_Variables".PPP302FrictionLoss > "HMI_Blender_Parameters".ProcessSetup._PPP302Pressure THEN + "PID_Variables".PPP302FrictionLoss := "HMI_Blender_Parameters".ProcessSetup._PPP302Pressure ; + ELSIF "PID_Variables".PPP302FrictionLoss < 0 THEN + (* classic code: "PID_Variables".PPP302FrictionLoss := 0.0 ;*) + "PID_Variables".PPP302FrictionLoss := REAL#0.0 ; + END_IF; + + IF "gBlenderBlending" THEN + IF "HMI_PID".RMM301.ManualControl.PidEnable THEN + IF "gEqPressSelected" THEN + "PID_Variables".RMM301DeltaP := "HMI_Blender_Parameters".ProcessSetup._PPN301Pressure + "HMI_Instrument".PTN313.PVFiltered - "PID_Variables".PPN301FrictionLoss - "HMI_PID".RVM301.Pv ; + ELSE + "PID_Variables".RMM301DeltaP := "HMI_Blender_Parameters".ProcessSetup._PPN301Pressure + "HMI_Instrument".PTN313.PVFiltered - "PID_Variables".PPN301FrictionLoss - "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProdTankPress ; + END_IF; + IF "gBlenderStableFlow" THEN + // 100% / 12.5 sec = 8 %/sec slew LIMIT TO Water PID Feed Forward + #mWaterFF_SlewLimit(i_InValue := "FeedForward"(i_Flow := "Blender_Variables".gSP_H2O, + i_KFF := "HMI_PID".RMM301.Ff, + i_Delta_P := "PID_Variables".RMM301DeltaP), + i_SlewMax := 8, + i_Cycle := "Time_300ms", + out := "HMI_PID".RMM301.FfOut) ; + ELSE + "HMI_PID".RMM301.FfOut := "FeedForward"(i_Flow:="Blender_Variables".gSP_H2O ,i_KFF:="HMI_PID".RMM301.Ff, i_Delta_P:="PID_Variables".RMM301DeltaP) ; + END_IF; + + IF NOT "gModValveRiseTimeCalcEn" THEN + "gModValveRiseTimeCalcEn":= TRUE ; + "Blender_Variables".gH2OValveRiseUpTime := REAL_TO_INT ("HMI_PID".RMM301.FfOut / 18) ; + END_IF; + END_IF; + ELSE + (* classic code: "HMI_PID".RMM301.FfOut := 0.0 ;*) + "HMI_PID".RMM301.FfOut := REAL#0.0 ; + "gModValveRiseTimeCalcEn" := FALSE ; + END_IF; + + (* classic code: IF "HMI_PID".PPN301.Out <= 0.0 THEN*) + IF "HMI_PID".PPN301.Out <= REAL#0.0 THEN + "P1_Pressure" := "HMI_Blender_Parameters".ProcessSetup._PPN301Pressure; + ELSE + "P1_Pressure" := ("gHProcessSetup_KWatPump"*(SQR("HMI_PID".PPN301.Out))/10) - "PID_Variables".PPN301FrictionLoss; + END_IF; + + IF "gBlenderBlending" THEN + IF "HMI_PID".RMP302.ManualControl.PidEnable THEN + IF "Procedure_Variables".First_Production.Latch THEN + "PID_Variables".RMP302DeltaP := "HMI_Blender_Parameters".ProcessSetup._PPP302Pressure - "PID_Variables".PPP302FrictionLoss - "HMI_PID".RVM301.Pv ; + ELSE + "PID_Variables".RMP302DeltaP := "HMI_Blender_Parameters".ProcessSetup._PPP302Pressure - "PID_Variables".PPP302FrictionLoss - "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProdTankPress ; + END_IF; + "HMI_PID".RMP302.FfOut := "FeedForward"(i_Flow := "Blender_Variables".gSP_SYR , + i_KFF := "HMI_PID".RMP302.Ff , + i_Delta_P := "PID_Variables".RMP302DeltaP) ; + END_IF; + ELSIF "gSyrupQcoRinse" OR "Procedure_Variables".FTP302Line_Preparation.Latch THEN + "PID_Variables".RMP302DeltaP := "HMI_Blender_Parameters".ProcessSetup._PPP302Pressure - "PID_Variables".PPP302FrictionLoss ; + "HMI_PID".RMP302.FfOut := "FeedForward"(i_Flow := "Blender_Variables".gSP_SYR , + i_KFF := "HMI_PID".RMP302.Ff , + i_Delta_P := "PID_Variables".RMP302DeltaP) ; + ELSE + (* classic code: "HMI_PID".RMP302.FfOut := 0.0 ;*) + "HMI_PID".RMP302.FfOut := REAL#0.0 ; + END_IF; + + IF "gBlenderBlending" OR "gP_CarboPipe_En" OR ("HMI_Service".Workshop_Test.CO2TestRequest AND "gWorkshopTest") THEN + IF "HMI_PID".RMM303.ManualControl.PidEnable THEN + IF "HMI_Service".Workshop_Test.CO2TestRequest AND "gWorkshopTest" THEN + "PID_Variables".RMM303DeltaP := "HMI_PID".PCM306.Sp - "HMI_PID".RVM301.Pv ; + ELSE + IF "HMI_Blender_Parameters".Processor_Options.Blender_OPT._InverterWaterPumpPPN301 THEN + "PID_Variables".RMM303DeltaP := "HMI_Blender_Parameters".ProcessSetup._CarboCO2Pressure - "P1_Pressure" ; + ELSE + "PID_Variables".RMM303DeltaP := "HMI_Blender_Parameters".ProcessSetup._CarboCO2Pressure - "HMI_Blender_Parameters".ProcessSetup._PPN301Pressure ; + END_IF; + END_IF; + "HMI_PID".RMM303.FfOut := "FeedForward"(i_Flow := "Blender_Variables".gSP_CO2 , + i_KFF := "HMI_PID".RMM303.Ff , + i_Delta_P := "PID_Variables".RMM303DeltaP ) ; + IF "HMI_PID".RMM303.FfOut < 0 THEN + "HMI_PID".RMM303.FfOut := 0; + END_IF; + END_IF; + ELSE + (* classic code: "HMI_PID".RMM303.FfOut := 0.0 ;*) + "HMI_PID".RMM303.FfOut := REAL#0.0 ; + END_IF ; + + // SECOND GAS INJECTION + IF "HMI_Blender_Parameters".Processor_Options.Blender_OPT._CO2_GAS2_Injection THEN + IF "gBlenderBlending" AND "HMI_Blender_Parameters".Actual_Recipe_Parameters._GAS2_Injection + AND ("HMI_Blender_Parameters".Processor_Options.Blender_OPT._GAS2InjectionType > 0) THEN + IF "HMI_PID".RMM304.ManualControl.PidEnable THEN + "PID_Variables".RMM304DeltaP := "HMI_Blender_Parameters".ProcessSetup._GAS2InjectionPress - "HMI_Blender_Parameters".ProcessSetup._PPN301Pressure ; + "HMI_PID".RMM304.FfOut := "FeedForward"(i_Flow := "Blender_Variables".gSP_GAS2 , + i_KFF := "HMI_PID".RMM304.Ff , + i_Delta_P := "PID_Variables".RMM304DeltaP ) ; + IF "HMI_PID".RMM304.FfOut < 0 THEN + "HMI_PID".RMM304.FfOut := 0; + END_IF; + END_IF; + ELSE + (* classic code: "HMI_PID".RMM304.FfOut := 0.0 ;*) + "HMI_PID".RMM304.FfOut := REAL#0.0 ; + END_IF ; + ELSE + (* classic code: "HMI_PID".RMM304.FfOut := 0.0 ;*) + "HMI_PID".RMM304.FfOut := REAL#0.0 ; + END_IF ; + + IF "gBlenderBlending" THEN + #mSP_SYR_Flow := "Blender_Variables".gSP_SYR ; + ELSIF "Procedure_Variables".FTP302Line_Preparation.Latch OR "Procedure_Variables".FTP302_StartUp.Latch THEN + #mSP_SYR_Flow := "Blender_Constants".gTP301_FirstProdRate ; + ELSIF "gSyrupQcoRinse" THEN + #mSP_SYR_Flow := "Blender_Constants".gTP301_RinseRate ; + ELSE + (* classic code: #mSP_SYR_Flow := 0.0 ;*) + #mSP_SYR_Flow := REAL#0.0 ; + END_IF ; + + IF "gBlenderBlending" OR "Procedure_Variables".FTP302Line_Preparation.Latch OR "Procedure_Variables".FTP302_StartUp.Latch OR "gSyrupQcoRinse" THEN + IF "HMI_PID".RVP303.ManualControl.PidEnable THEN + "HMI_PID".RVP303.FfOut := "FeedForward"(i_Flow:=#mSP_SYR_Flow , + i_KFF:="HMI_PID".RVP303.Ff , + i_Delta_P:= "HMI_Blender_Parameters".ProcessSetup._SyrupLinePressure) ; + END_IF ; + ELSE + (* classic code: "HMI_PID".RVP303.FfOut := 0.0 ;*) + "HMI_PID".RVP303.FfOut := REAL#0.0 ; + END_IF ; + + IF NOT "Blender_Variables_Pers".gSkipDeaireation THEN + IF "gBlenderBlending" OR "Procedure_Variables".TN301_StartUp.Latch THEN + IF "HMI_PID".RVN302.ManualControl.PidEnable THEN + IF "HMI_Device".PPN304.Out THEN + "PID_Variables".RVN302DeltaP := "HMI_Blender_Parameters".ProcessSetup._WaterLinePressure - "HMI_Instrument".PTN313.PVFiltered ; + ELSE + "PID_Variables".RVN302DeltaP := "HMI_Blender_Parameters".ProcessSetup._WaterLinePressure ; + END_IF ; + "HMI_PID".RVN302.FfOut := "FeedForward"(i_Flow := "Blender_Variables".gSP_H2O , + i_KFF := "HMI_PID".RVN302.Ff , + i_Delta_P := "PID_Variables".RVN302DeltaP) ; + END_IF ; + ELSE + (* classic code: "HMI_PID".RVN302.FfOut := 0.0 ;*) + "HMI_PID".RVN302.FfOut := REAL#0.0 ; + END_IF ; + ELSE + IF "gBlenderBlending" OR "Procedure_Variables".BlendFill_StartUp.Latch THEN + IF "HMI_PID".RVN302.ManualControl.PidEnable THEN + "PID_Variables".RVN302DeltaP := "HMI_Blender_Parameters".ProcessSetup._WaterLinePressure ; + "HMI_PID".RVN302.FfOut := "FeedForward"(i_Flow := "Filler_Head_Variables".Prod_FlowEstimated , + i_KFF := "HMI_PID".RVN302_TM301.Ff , + i_Delta_P := "PID_Variables".RVN302DeltaP) ; + END_IF ; + ELSE + (* classic code: "HMI_PID".RVN302.FfOut := 0.0 ;*) + "HMI_PID".RVN302.FfOut := REAL#0.0 ; + END_IF ; + END_IF; + + IF "gGencoldChillerEn" AND "HMI_Blender_Parameters".Actual_Recipe_Parameters._EnProdTemp THEN + (* classic code: "HMI_PID".RVM319_H2O.FfOut := 100.0 - "CVQ_1p7_8_Perc"("HMI_PID".RVM319_H2O.Sp) ;*) + "HMI_PID".RVM319_H2O.FfOut := REAL#100.0 - "CVQ_1p7_8_Perc"("HMI_PID".RVM319_H2O.Sp) ; + (* classic code: "HMI_PID".RVM319_PRD.FfOut := 100.0 - "CVQ_1p7_8_Perc"("HMI_PID".RVM319_PRD.Sp) ;*) + "HMI_PID".RVM319_PRD.FfOut := REAL#100.0 - "CVQ_1p7_8_Perc"("HMI_PID".RVM319_PRD.Sp); + ELSIF + NOT "gGencoldChillerEn" AND "HMI_Blender_Parameters".Actual_Recipe_Parameters._EnProdTemp THEN + (* classic code: "HMI_PID".RVM319_H2O.FfOut := 0.0 ;*) + "HMI_PID".RVM319_H2O.FfOut := REAL#80.0 ; + (* classic code: "HMI_PID".RVM319_PRD.FfOut := 0.0 ;*) + "HMI_PID".RVM319_PRD.FfOut := REAL#80.0 ; + END_IF; + + +END_FUNCTION_BLOCK + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPID_PIDInitParam.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPID_PIDInitParam.md new file mode 100644 index 0000000..bc1b226 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPID_PIDInitParam.md @@ -0,0 +1,232 @@ +```pascal +FUNCTION_BLOCK "BlenderPID_PIDInitParam" +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : TASK1 +NAME : 'Name' +VERSION : 1.0 + VAR + mCO2DevStdInt : Int; + mGAS2DevStdInt : Int; + mH2OKp : Real; + mSyrKp : Real; + mCO2DevStdFOut : Real; + mCO2Kp : Real; + mGAS2DevStdFOut : Real; + mGAS2Kp : Real; + mH2OKpLimit : "SlewLimit"; + mSyrKpLimit : "SlewLimit"; + mCO2KpLimit : "SlewLimit"; + mGAS2KpLimit : "SlewLimit"; + mCO2DevStdFlt : "LowPassFilter"; + mGAS2DevStdFlt : "LowPassFilter"; + END_VAR + + VAR_TEMP + mAuxONS_Q : Bool; + mAuxONS1_Q : Bool; + END_VAR + + +BEGIN + + + + "Blender_Variables".gK_RecBlendError := "HMI_Blender_Parameters".ProcessSetup._KRecBlendError ; + "Blender_Variables".gK_RecCarboCO2Error := "HMI_Blender_Parameters".ProcessSetup._KRecCarboCO2Error ; + + "HMI_PID".RMM301.Cycle_Time := "Time_300ms" ; + "HMI_PID".RMP302.Cycle_Time := "Time_300ms" ; + "HMI_PID".RMM303.Cycle_Time := "Time_300ms" ; + "HMI_PID".RMM304.Cycle_Time := "Time_300ms" ; + "HMI_PID".RVM301.Cycle_Time := "Time_300ms" ; + "HMI_PID".RVP303.Cycle_Time := "Time_300ms" ; + "HMI_PID".RVN302.Cycle_Time := "Time_300ms" ; + "HMI_PID".RVS318.Cycle_Time := "Time_300ms" ; + "HMI_PID".RVM319_PRD.Cycle_Time := "Time_300ms" ; + "HMI_PID".RVM319_H2O.Cycle_Time := "Time_300ms" ; + + IF "HMI_PID".RMM301.Bp <> 0 THEN + "HMI_PID".RMM301.KP := 100 / "HMI_PID".RMM301.Bp ; + #mH2OKp := "HMI_PID".RMM301.KP ; + (* classic code: #mH2OKpLimit(i_InValue := #mH2OKp , + i_SlewMax := 0.02 , + i_Cycle := "Time_300ms", + out := "HMI_PID".RMM301.KP) ;*) + #mH2OKpLimit(i_InValue := #mH2OKp , + i_SlewMax := REAL#0.02 , + i_Cycle := "Time_300ms", + out := "HMI_PID".RMM301.KP) ; + ELSE + (* classic code: "HMI_PID".RMM301.KP := 0.0 ;*) + "HMI_PID".RMM301.KP := REAL#0.0 ; + END_IF; + + IF "HMI_PID".RMP302.Bp <> 0 THEN + "HMI_PID".RMP302.KP := 100 / "HMI_PID".RMP302.Bp ; + IF "gBlenderStopping" THEN + (* classic code: #mSyrKp := "HMI_PID".RMP302.KP * 1.4 ;*) + #mSyrKp := "HMI_PID".RMP302.KP * REAL#1.4 ; + ELSE + #mSyrKp := "HMI_PID".RMP302.KP ; + END_IF; + (* classic code: #mSyrKpLimit(i_InValue := #mSyrKp , + i_SlewMax := 0.08 , + i_Cycle := "Time_300ms" , + out := "HMI_PID".RMP302.KP) ;*) + #mSyrKpLimit(i_InValue := #mSyrKp , + i_SlewMax := REAL#0.08 , + i_Cycle := "Time_300ms" , + out := "HMI_PID".RMP302.KP) ; + + ELSE + (* classic code: "HMI_PID".RMP302.KP := 0.0 ;*) + "HMI_PID".RMP302.KP := REAL#0.0 ; + END_IF; + + IF "HMI_PID".RMM303.Bp <> 0 THEN + "HMI_PID".RMM303.KP := 100 / "HMI_PID".RMM303.Bp ; + #mCO2DevStdFlt(i_Value := "Blender_Variables".gCarboCO2Stat_DevStd , + i_Num := 10 , + i_Enable := "gBlenderFlowFltEn") ; + #mCO2DevStdFOut := ABS(#mCO2DevStdFlt.FilterOut) ; + + "ONS_R"(Enable_ONS := "gP_CarboPipe_En", Aux_ONS := "mCO2TdOns", ONS_R => #mAuxONS_Q); + + IF #mAuxONS_Q THEN + "mCO2TD" := "HMI_PID".RMM303.Td ; + END_IF; + + "ONS_R"(Enable_ONS := NOT "gP_CarboPipe_En", Aux_ONS := "mCO2Td1Ons", ONS_R => #mAuxONS1_Q); + + IF #mAuxONS1_Q THEN + "HMI_PID".RMM303.Td := "mCO2TD" ; + END_IF; + + IF "gBlenderStableFlow" THEN + #mCO2DevStdInt := REAL_TO_INT(#mCO2DevStdFOut * 1) ; + END_IF; + + IF #mCO2DevStdInt < 1 THEN + #mCO2Kp := 1 ; + ELSIF #mCO2DevStdInt > 10 THEN + #mCO2DevStdInt := 10 ; + END_IF; + + IF "gBlenderStopping" THEN + (* classic code: #mCO2Kp := "HMI_PID".RMM303.KP * 1.3 ;*) + #mCO2Kp := "HMI_PID".RMM303.KP * REAL#1.3 ; + ELSIF "gP_CarboPipe_En" THEN + // mCO2Kp := "PID_Variables".CO2_PID.KP / 2.5 ; + (* classic code: #mCO2Kp := 0.006 ;*) + #mCO2Kp := REAL#0.006 ; + "HMI_PID".RMM303.KP := #mCO2Kp ; + (* classic code: "HMI_PID".RMM303.Td := 0.0 ;*) + "HMI_PID".RMM303.Td := REAL#0.0 ; + // gR_CO2_TI := 30 ; + ELSIF #mCO2DevStdInt > 5 AND NOT "gBlenderStopping" THEN + #mCO2Kp := "HMI_PID".RMM303.KP / 2; + ELSE + #mCO2Kp := "HMI_PID".RMM303.KP ; + END_IF; + (* classic code: #mCO2KpLimit(i_InValue := #mCO2Kp , + i_SlewMax := 0.8 , + i_Cycle := "Time_300ms", + out := "HMI_PID".RMM303.KP) ;*) + #mCO2KpLimit(i_InValue := #mCO2Kp , + i_SlewMax := REAL#0.8 , + i_Cycle := "Time_300ms", + out := "HMI_PID".RMM303.KP) ; + ELSE + (* classic code: "HMI_PID".RMM303.KP:= 0.0 ;*) + "HMI_PID".RMM303.KP:= REAL#0.0 ; + END_IF; + + // SECOND GAS INJECTION + IF "HMI_PID".RMM304.Bp <> 0 THEN + "HMI_PID".RMM304.KP := 100 / "HMI_PID".RMM304.Bp ; + #mGAS2DevStdFlt(i_Value := "Blender_Variables".gGAS2Stat_DevStd , + i_Num := 10 , + i_Enable := "gBlenderFlowFltEn") ; + #mGAS2DevStdFOut := ABS(#mGAS2DevStdFlt.FilterOut) ; + + IF "gBlenderStableFlow" THEN + #mGAS2DevStdInt := REAL_TO_INT(#mGAS2DevStdFOut * 1) ; + END_IF; + + IF #mGAS2DevStdInt < 1 THEN + #mGAS2Kp := 1 ; + ELSIF #mGAS2DevStdInt > 10 THEN + #mGAS2DevStdInt := 10 ; + END_IF; + + IF "gBlenderStopping" THEN + (* classic code: #mGAS2Kp := "HMI_PID".RMM304.KP * 1.3 ;*) + #mGAS2Kp := "HMI_PID".RMM304.KP * REAL#1.3 ; + ELSIF #mGAS2DevStdInt > 5 AND NOT "gBlenderStopping" THEN + #mGAS2Kp := "HMI_PID".RMM304.KP / 2; + ELSE + #mGAS2Kp := "HMI_PID".RMM304.KP ; + END_IF; + (* classic code: #mGAS2KpLimit(i_InValue := #mGAS2Kp , + i_SlewMax := 0.8 , + i_Cycle := "Time_300ms", + out := "HMI_PID".RMM304.KP) ;*) + #mGAS2KpLimit(i_InValue := #mGAS2Kp , + i_SlewMax := REAL#0.8 , + i_Cycle := "Time_300ms", + out := "HMI_PID".RMM304.KP) ; + ELSE + (* classic code: "HMI_PID".RMM304.KP:= 0.0 ;*) + "HMI_PID".RMM304.KP:= REAL#0.0 ; + END_IF; + + IF "HMI_PID".RVP303.Bp <> 0 THEN + "HMI_PID".RVP303.KP := 100 / "HMI_PID".RVP303.Bp ; + ELSE + (* classic code: "HMI_PID".RVP303.KP := 0.0 ;*) + "HMI_PID".RVP303.KP := REAL#0.0 ; + END_IF; + + IF NOT "Blender_Variables_Pers".gSkipDeaireation THEN + IF "HMI_PID".RVN302.Bp <> 0 THEN + "HMI_PID".RVN302.KP := 100 / "HMI_PID".RVN302.Bp ; + ELSE + (* classic code: "HMI_PID".RVN302.KP := 0.0 ;*) + "HMI_PID".RVN302.KP := REAL#0.0 ; + END_IF; + ELSE + IF "HMI_PID".RVN302_TM301.Bp <> 0 THEN + "HMI_PID".RVN302.KP := 100 / "HMI_PID".RVN302_TM301.Bp ; + ELSE + (* classic code: "HMI_PID".RVN302.KP := 0.0 ;*) + "HMI_PID".RVN302.KP := REAL#0.0 ; + END_IF; + END_IF ; + + IF "HMI_PID".RVS318.Bp <> 0 THEN + "HMI_PID".RVS318.KP := 100 / "HMI_PID".RVS318.Bp ; + ELSE + (* classic code: "HMI_PID".RVS318.KP := 0.0 ;*) + "HMI_PID".RVS318.KP := REAL#0.0 ; + END_IF; + + IF "HMI_PID".RVM319_PRD.Bp <> 0 THEN + "HMI_PID".RVM319_PRD.KP := 100 / "HMI_PID".RVM319_PRD.Bp ; + ELSE + (* classic code: "HMI_PID".RVM319_PRD.KP := 0.0 ;*) + "HMI_PID".RVM319_PRD.KP := REAL#0.0 ; + END_IF; + + IF "HMI_PID".RVM319_H2O.Bp <> 0 THEN + "HMI_PID".RVM319_H2O.KP := 100 / "HMI_PID".RVM319_H2O.Bp ; + ELSE + (* classic code: "HMI_PID".RVM319_H2O.KP := 0.0 ;*) + "HMI_PID".RVM319_H2O.KP := REAL#0.0 ; + END_IF; + + +END_FUNCTION_BLOCK + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPID_PIDResInteg.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPID_PIDResInteg.md new file mode 100644 index 0000000..f0794e5 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPID_PIDResInteg.md @@ -0,0 +1,61 @@ +```pascal +FUNCTION "BlenderPID_PIDResInteg" : Void +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : TASK1 +NAME : 'Name' +VERSION : 1.0 + +BEGIN + + + (* classic code: "HMI_PID".RMM301.I_ITLVAL := 0.0 ;*) + "HMI_PID".RMM301.I_ITLVAL := REAL#0.0 ; + (* classic code: "PID_Variables".RMM301PIDIntValue := 0.0 ;*) + "PID_Variables".RMM301PIDIntValue := REAL#0.0 ; + "HMI_PID".RMM301.I_ITL := TRUE ; + + (* classic code: "HMI_PID".RMP302.I_ITLVAL := 0.0 ;*) + "HMI_PID".RMP302.I_ITLVAL := REAL#0.0 ; + (* classic code: "PID_Variables".RMP302PIDIntValue := 0.0 ;*) + "PID_Variables".RMP302PIDIntValue := REAL#0.0 ; + "HMI_PID".RMP302.I_ITL := TRUE ; + + (* classic code: "HMI_PID".RMM303.I_ITLVAL := 0.0 ;*) + "HMI_PID".RMM303.I_ITLVAL := REAL#0.0 ; + (* classic code: "PID_Variables".RMM303PIDIntValue := 0.0;*) + "PID_Variables".RMM303PIDIntValue := REAL#0.0; + "HMI_PID".RMM303.I_ITL := TRUE ; + + // SECOND GAS INJECTION + (* classic code: "HMI_PID".RMM304.I_ITLVAL := 0.0 ;*) + "HMI_PID".RMM304.I_ITLVAL := REAL#0.0 ; + (* classic code: "PID_Variables".RMM304PIDIntValue := 0.0;*) + "PID_Variables".RMM304PIDIntValue := REAL#0.0; + "HMI_PID".RMM304.I_ITL := TRUE ; + + (* classic code: "HMI_PID".RVM301.I_ITLVAL := 0.0 ;*) + "HMI_PID".RVM301.I_ITLVAL := REAL#0.0 ; + "HMI_PID".RVM301.I_ITL := TRUE ; + + (* classic code: "HMI_PID".RVP303.I_ITLVAL := 0.0 ;*) + "HMI_PID".RVP303.I_ITLVAL := REAL#0.0 ; + "HMI_PID".RVP303.I_ITL := TRUE ; + + (* classic code: "HMI_PID".RVN302.I_ITLVAL := 0.0 ;*) + "HMI_PID".RVN302.I_ITLVAL := REAL#0.0 ; + "HMI_PID".RVN302.I_ITL := TRUE ; + + (* classic code: "HMI_PID".RVM319_PRD.I_ITLVAL := 0.0 ;*) + "HMI_PID".RVM319_PRD.I_ITLVAL := REAL#0.0 ; + "HMI_PID".RVM319_PRD.I_ITL := TRUE ; + + (* classic code: "HMI_PID".RVM319_H2O.I_ITLVAL := 0.0 ;*) + "HMI_PID".RVM319_H2O.I_ITLVAL := REAL#0.0 ; + "HMI_PID".RVM319_H2O.I_ITL := TRUE ; + + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPID_PIDSPCalc.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPID_PIDSPCalc.md new file mode 100644 index 0000000..92c7573 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPID_PIDSPCalc.md @@ -0,0 +1,464 @@ +```pascal +FUNCTION_BLOCK "BlenderPID_PIDSPCalc" +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : TASK1 +NAME : 'Name' +VERSION : 1.0 + VAR + mCriticalBlending : Bool; + TimerConvDINT : DInt; + TimerConvTIME : Time; + TimerConvS5TIME : S5Time; + mTargetRatioSlewOut : Real; + mBevBrixDelta : Real; + mTargetProdSlwd : "SlewLimit"; + mTargetFillerProdSlwd : "SlewLimit"; + mTargetRatioSlwd : "SlewLimit"; + mTargetSyrupLvlSlwd : "SlewLimit"; + mTargetDeairLvlSlwd : "SlewLimit"; + mTargetStorgLvlSlwd : "SlewLimit"; + END_VAR + + VAR_TEMP + ValBinTmr131 : Word; + ValBcdTmr131 : S5Time; + END_VAR + + +BEGIN + + + IF "HMI_Blender_Parameters".Processor_Options.Blender_OPT._BrixMeter AND "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProdMeterHighBrix > "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProductBrix + AND "AUX FALSE" THEN + (* classic code: #mBevBrixDelta := ("HMI_Blender_Parameters".Actual_Recipe_Parameters._ProdMeterHighBrix - "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProductBrix) / 2.0 ;*) + #mBevBrixDelta := ("HMI_Blender_Parameters".Actual_Recipe_Parameters._ProdMeterHighBrix - "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProductBrix) / REAL#2.0 ; + ELSE + // mBevBrixDelta := 0.1 ; Pepsico Vitoria Plant - New Eurostar 2000 140 Valves + (* classic code: #mBevBrixDelta := 0.06 ;*) + #mBevBrixDelta := REAL#0.06 ; //Coca Cola Begano Plant - New Starcans 2000 91 Valves + END_IF; + + IF "Blender_Variables_Pers".gSugarBeverage AND "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupBrix <> 0 THEN + IF "Procedure_Variables".First_Production.Latch THEN + "Blender_Variables".gActualSyrupPerc := ("HMI_Blender_Parameters".Actual_Recipe_Parameters._ProductBrix + "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProdBrixOffset + "Blender_Variables".gFirstProdExtraBrix) + / "Blender_Variables".gActualSyrupBrix ; + ELSE + "Blender_Variables".gActualSyrupPerc := ("HMI_Blender_Parameters".Actual_Recipe_Parameters._ProductBrix + "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProdBrixOffset + "Blender_Variables".gBrixTrackingCorr) + / "Blender_Variables".gActualSyrupBrix ; + END_IF; + ELSE + IF "Procedure_Variables".First_Production.Latch THEN + "Blender_Variables".gActualSyrupPerc := 1 / ("HMI_Blender_Parameters".Actual_Recipe_Parameters._Ratio + 1 ) + "Blender_Variables".gFirstProdDietExtraSyr ; // During First Production: syrup injection 1.2% more + ELSE + "Blender_Variables".gActualSyrupPerc := 1 / ("HMI_Blender_Parameters".Actual_Recipe_Parameters._Ratio + 1 ) ; + END_IF; + END_IF; + + IF "Blender_Variables_Pers".gWaterRecipe THEN + (* classic code: "Blender_Variables".gActualWaterPerc := 1.0 ;*) + "Blender_Variables".gActualWaterPerc := REAL#1.0 ; + (* classic code: "Blender_Variables".gActualSyrupPerc := 0.0 ;*) + "Blender_Variables".gActualSyrupPerc := REAL#0.0 ; + ELSE + "Blender_Variables".gActualWaterPerc := 1 - "Blender_Variables".gActualSyrupPerc ; + END_IF; + + IF "Blender_Variables".gActualSyrupPerc <> 0 THEN + (* classic code: IF "Blender_Variables".gActualSyrupDens > 0.99 AND NOT "Blender_Variables_Pers".gSugarBeverage THEN*) + IF "Blender_Variables".gActualSyrupDens > REAL#0.99 AND NOT "Blender_Variables_Pers".gSugarBeverage THEN + "Blender_Variables".gActual_RatioM := "Blender_Variables".gActualWaterPerc / ("Blender_Variables".gActualSyrupPerc * "Blender_Variables".gActualSyrupDens) ; + ELSE + "Blender_Variables".gActual_RatioM := "Blender_Variables".gActualWaterPerc / "Blender_Variables".gActualSyrupPerc ; + END_IF; + END_IF; + + IF "Blender_Constants".gH2O_Density <> 0 THEN + "gActualSP_RatioVol" := "Blender_Variables".gActual_RatioM * "Blender_Variables".gActualSyrupDens / "Blender_Constants".gH2O_Density ; + END_IF; + + IF "gActualSP_RatioVol" = 0 THEN + (* classic code: "gActualSP_RatioVol" := 0.01 ;*) + "gActualSP_RatioVol" := REAL#0.01 ; + END_IF; + + IF "Blender_Constants".gModValveFullStrokeTime <> 0 THEN + "Blender_Variables".gBlenderProdSlewMax := "Blender_Variables".gBlenderNomSpeed / "Blender_Constants".gModValveFullStrokeTime ; + IF "Blender_Constants".gProductionSlewRate > "Blender_Variables".gBlenderProdSlewMax THEN + "Blender_Constants".gProductionSlewRate := "Blender_Variables".gBlenderProdSlewMax ; + END_IF; + END_IF; + + //Limit the minimum and maximum recipe Production Rate + IF "Blender_Variables".gActual_Prod_SP > "Blender_Variables".gBlenderNomSpeed THEN + "Blender_Variables".gActual_Prod_SP := "Blender_Variables".gBlenderNomSpeed ; + END_IF; + + IF "Blender_Variables".gActual_Prod_SP < "Blender_Variables".gMinProduction AND NOT "Procedure_Variables".Blender_Run.Wait THEN + "Blender_Variables".gActual_Prod_SP := "Blender_Variables".gMinProduction ; + END_IF; + + IF "gBlenderProdMode" THEN + //Calculates the CO2 Equilibrium Pressure plus 0.5 Atm, to Pressurize Product Tank + IF "Blender_Variables_Pers".gCarboStillRecipe THEN + (* classic code: "Blender_Variables".gCO2EqPressure := LIMIT (MN:= 0, IN:= "CO2EqPress"(i_CO2Vol := "HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Vols * "Blender_Variables".gFirstProdExtraCO2Fact + * "HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Fact , + i_Temp := "HMI_Blender_Parameters".Actual_Recipe_Parameters._SP_ProdTemp ), MX:= "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProdTankPress) + 0.3 ;*) + "Blender_Variables".gCO2EqPressure := LIMIT(MN := 0, IN := "CO2EqPress"(i_CO2Vol := "HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Vols * "Blender_Variables".gFirstProdExtraCO2Fact + * "HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Fact, + i_Temp := "HMI_Blender_Parameters".Actual_Recipe_Parameters._SP_ProdTemp), MX := "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProdTankPress) + REAL#0.8; // REAL#0.3 ; + ELSE + "Blender_Variables".gCO2EqPressure := "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProdTankPress ; + END_IF; + + // Transfer the Set Point TO the PID's SP Input + IF "gBlenderRinseMode" AND NOT "Procedure_Variables".TM301_Drain.Latch THEN + "HMI_PID".RVM301.Sp := "HMI_Blender_Parameters".ProcessSetup._RinseTM301Press ; + ELSIF "Procedure_Variables".TM301_Drain.Latch THEN + "HMI_PID".RVM301.Sp := "HMI_Blender_Parameters".ProcessSetup._DrainTM301Press ; + ELSIF NOT "gWaitLevToHold_TankPress" AND NOT "Procedure_Variables".First_Production.Done THEN + "HMI_PID".RVM301.Sp := "Blender_Variables".gCO2EqPressure ; + ELSE + "HMI_PID".RVM301.Sp := "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProdTankPress ; + END_IF; + + IF "Procedure_Variables".First_Production.Latch AND NOT "Procedure_Variables".Blender_Run.Wait THEN // During First Production set minimum speed + "Blender_Variables".gActual_Prod_SP := "Blender_Variables".gMinProduction * "Blender_Constants".gFirstProdSpeedGain ; + END_IF; + IF "gBlenderStartPumps" AND NOT "gBlenderBlending" AND "gEnRampDownToStop" THEN // Start blending with minimum speed + (* classic code: IF "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProductionRate >= (0.5 * "Blender_Variables".gBlenderNomSpeed) THEN*) + IF "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProductionRate >= (REAL#0.5 * "Blender_Variables".gBlenderNomSpeed) THEN + (* classic code: "Blender_Variables".gActual_Prod_SP := 0.5 * "Blender_Variables".gBlenderNomSpeed ;*) + "Blender_Variables".gActual_Prod_SP := REAL#0.5 * "Blender_Variables".gBlenderNomSpeed ; + ELSE + "Blender_Variables".gActual_Prod_SP := "Blender_Variables".gMinProduction ; + END_IF; + ELSIF NOT "gEnRampDownToStop" THEN + "Blender_Variables".gActual_Prod_SP := "Blender_Variables".gSP_ProdTrackFiller ; + ELSE + IF NOT "Procedure_Variables".First_Production.Latch AND "gBlenderEnToRamp" THEN + #mTargetFillerProdSlwd(i_InValue := "Blender_Variables".gSP_ProdTrackFiller , + i_SlewMax := "Blender_Constants".gFillerSpeedTrackSlew , + i_Cycle := "Time_300ms" , + out := "Blender_Variables".gActual_Prod_SP) ; + END_IF; + IF "Procedure_Variables".Blender_Run.Wait THEN + // Stop Blender with the Maximum Slope + (* classic code: #mTargetProdSlwd(i_InValue := 0.0 , + i_SlewMax := "Blender_Variables".gBlenderProdSlewMax , + i_Cycle := "Time_300ms" , + out := "Blender_Variables".gActual_Prod_SP ) ;*) + #mTargetProdSlwd(i_InValue := REAL#0.0 , + i_SlewMax := "Blender_Variables".gBlenderProdSlewMax , + i_Cycle := "Time_300ms" , + out := "Blender_Variables".gActual_Prod_SP ) ; // Slewed AT ""Blender_Variables".gBlenderProdSlewMax" L/sec + END_IF; + END_IF; + ELSE + (* classic code: "Blender_Variables".gActual_Prod_SP := 0.0 ;*) + "Blender_Variables".gActual_Prod_SP := REAL#0.0 ; + END_IF; + + (* classic code: #mTargetRatioSlwd(i_InValue := "gActualSP_RatioVol", + i_SlewMax := 0.02, + i_Cycle := "Time_300ms", + out := #mTargetRatioSlewOut ) ;*) + #mTargetRatioSlwd(i_InValue := "gActualSP_RatioVol", + i_SlewMax := REAL#0.02, + i_Cycle := "Time_300ms", + out := #mTargetRatioSlewOut ) ; // Slewed AT 0.02 + + IF "Procedure_Variables".Blender_Run.Running AND NOT "gBlenderRinseMode" THEN + (* classic code: IF NOT "Blender_Variables_Pers".gWaterRecipe AND ("gActualSP_RatioVol" + 1.0) <> 0 THEN*) + IF NOT "Blender_Variables_Pers".gWaterRecipe AND ("gActualSP_RatioVol" + REAL#1.0) <> 0 THEN + (* classic code: "Blender_Variables".gSP_H2O := "Blender_Variables".gActual_Prod_SP / ("gActualSP_RatioVol" + 1.0) * "gActualSP_RatioVol" ;*) + "Blender_Variables".gSP_H2O := "Blender_Variables".gActual_Prod_SP / ("gActualSP_RatioVol" + REAL#1.0) * "gActualSP_RatioVol" ; + ELSE + "Blender_Variables".gSP_H2O := "Blender_Variables".gActual_Prod_SP ; + END_IF; + ELSE + (* classic code: "Blender_Variables".gSP_H2O := 0.0 ;*) + "Blender_Variables".gSP_H2O := REAL#0.0 ; + END_IF; + + IF "HMI_PID".RMM301.Sp > 0 THEN + (* classic code: IF ABS("Blender_Variables".gBlendError) > 0.5 AND ABS(("HMI_PID".RMM301.Sp - "HMI_PID".RMM301.Pv) / "HMI_PID".RMM301.Sp) > 0.2 + AND ("Blender_Variables".gActual_Prod_SP >(0.6 * "Blender_Variables".gBlenderNomSpeed)) AND "gFlowToFiller" THEN*) + IF ABS("Blender_Variables".gBlendError) > REAL#0.5 AND ABS(("HMI_PID".RMM301.Sp - "HMI_PID".RMM301.Pv) / "HMI_PID".RMM301.Sp) > REAL#0.2 + AND ("Blender_Variables".gActual_Prod_SP >(REAL#0.6 * "Blender_Variables".gBlenderNomSpeed)) AND "gFlowToFiller" THEN + #mCriticalBlending := TRUE ; + ELSE + #mCriticalBlending := FALSE ; + END_IF; + ELSE + #mCriticalBlending := FALSE ; + END_IF; + + #TimerConvDINT := REAL_TO_DINT ("Blender_Constants".gModValveFullStrokeTime * 1000) ; + #TimerConvTIME := DINT_TO_TIME (#TimerConvDINT); + #TimerConvS5TIME := TIME_TO_S5TIME(IN := #TimerConvTIME // IN: TIME FC40 + ); // S5TIME + + #ValBcdTmr131:= S_OFFDT (T_NO := "mCriticalBlendingTOF" , + S := #mCriticalBlending , + TV := #TimerConvS5TIME , // Timer in sec + R := "AUX FALSE" , + BI => #ValBinTmr131 , + Q => "gCriticalBlending" ) ; + + IF ("gBlenderEnToRamp" AND ("HMI_PID".RMM301.Out > 95)) OR "gCriticalBlending" OR ("gBlenderStopping" AND "gBlenderBlending") + OR "HMI_Blender_Parameters".Processor_Options.Blender_OPT._TrackH2OEnable THEN + "PID_Variables".Track_H2O_Enable := TRUE ; + ELSE + "PID_Variables".Track_H2O_Enable := FALSE ; + END_IF; + + IF "Procedure_Variables".Blender_Run.Running AND NOT "Blender_Variables_Pers".gWaterRecipe AND NOT "gBlenderRinseMode" AND NOT "Procedure_Variables".FTP302Line_Preparation.Latch THEN + IF "gBlenderStableFlow" THEN + IF "PID_Variables".Track_H2O_Enable AND "gBlenderEnToRamp" THEN + "Blender_Variables".gSyrSPRef := "Blender_Variables".gH2O_Flow_Meas / "gActualSP_RatioVol" ; + ELSE + (* classic code: "Blender_Variables".gSyrSPRef := "Blender_Variables".gActual_Prod_SP / ("gActualSP_RatioVol" + 1.0) ;*) + "Blender_Variables".gSyrSPRef := "Blender_Variables".gActual_Prod_SP / ("gActualSP_RatioVol" + REAL#1.0) ; + END_IF; + ELSE + IF "PID_Variables".Track_H2O_Enable THEN + "Blender_Variables".gSyrSPRef := "Blender_Variables".gH2O_Flow_Meas / "gActualSP_RatioVol" ; + ELSE + (* classic code: "Blender_Variables".gSyrSPRef := "Blender_Variables".gActual_Prod_SP / ("gActualSP_RatioVol" + 1.0) ;*) + "Blender_Variables".gSyrSPRef := "Blender_Variables".gActual_Prod_SP / ("gActualSP_RatioVol" + REAL#1.0) ; + END_IF; + END_IF; + (* classic code: "Blender_Variables".gSyrSPTemp := LIMIT(MN:= (-1.0 * "Blender_Variables".gSyrSPRef * "Blender_Constants".gSyrupSPRecFact), + IN:= ("Blender_Variables".gBlendError * "Blender_Variables".gK_RecBlendError), + MX:= ("Blender_Variables".gSyrSPRef * "Blender_Constants".gSyrupSPRecFact));*) + "Blender_Variables".gSyrSPTemp := LIMIT(MN:= (REAL#-1.0 * "Blender_Variables".gSyrSPRef * "Blender_Constants".gSyrupSPRecFact), + IN:= ("Blender_Variables".gBlendError * "Blender_Variables".gK_RecBlendError), + MX:= ("Blender_Variables".gSyrSPRef * "Blender_Constants".gSyrupSPRecFact)); + + "Blender_Variables".gSP_SYR := ("Blender_Variables".gSyrSPRef + "Blender_Variables".gSyrSPTemp) * "Blender_Variables".gActualSyrupDens ; + ELSIF "Procedure_Variables".FTP302Line_Preparation.Latch OR "Procedure_Variables".FTP302_StartUp.Latch THEN + "Blender_Variables".gSP_SYR := "Blender_Constants".gTP301_FirstProdRate; + ELSIF "gSyrupQcoRinse" THEN + "Blender_Variables".gSP_SYR := "Blender_Constants".gTP301_RinseRate; + ELSE + (* classic code: "Blender_Variables".gSP_SYR := 0.0 ;*) + "Blender_Variables".gSP_SYR := REAL#0.0 ; + END_IF; + + "Blender_Variables".gDeairCO2Comp := "DeairCO2TempComp"(i_Temp := "HMI_Instrument".TTN321.PVFiltered, + i_CO2Off := "HMI_Blender_Parameters".Processor_Options.Blender_OPT._CO2_Offset) ; + "Blender_Variables".gWaterO2 := "PPM O2"(i_Temp := "HMI_Instrument".TTN321.PVFiltered); + "Blender_Variables".gSyrupO2 := "PPM O2"(i_Temp := "Profibus_Variables".gFTP302_Temp) * (1 - "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupBrix / 100) ; + IF ("Blender_Variables".gActual_RatioM + 1) <> 0 THEN + "Blender_Variables".gProductO2 := ("Blender_Variables".gActual_RatioM * "Blender_Variables".gDeairWaterO2 + "Blender_Variables".gSyrupO2) / ("Blender_Variables".gActual_RatioM + 1) ; + END_IF; + "Blender_Variables".gCO2Solubility := "CO2 Solubility"(i_Temp :="HMI_Instrument".TTN321.PVFiltered) *"Blender_Constants".gTN301Efficiency ; + IF "gBlenderEnToRamp" OR "gBlenderRinseMode" OR "gBlenderCIPMode" OR "Procedure_Variables"."CarboWaterLine".Latch THEN + "Blender_Variables".gDeairCO2Vol := "MaxCarboCO2 Vol"(i_Temp := "HMI_Instrument".TTN321.PVFiltered, + i_Press := "Blender_Constants".gTN301Pressure) * "Blender_Constants".gTN301Efficiency ; + END_IF; + + IF NOT "gOUT_PPN304_Run" THEN + "Blender_Variables".gDeairCO2Comp := "Blender_Variables".gDeairCO2Vol - "HMI_Blender_Parameters".Processor_Options.Blender_OPT._CO2_Offset ; + ELSE + (* classic code: "Blender_Variables".gDeairCO2Comp := 0.0 ;*) + "Blender_Variables".gDeairCO2Comp := REAL#0.0 ; + END_IF ; + + "Blender_Variables".gFillerCO2Loss := "HMI_Blender_Parameters".Processor_Options.Blender_OPT._CO2_Offset ; + + IF "Procedure_Variables".First_Production.Latch THEN + (* classic code: "Blender_Variables".gActual_SP_CO2 := ("HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Vols - "Blender_Variables".gDeairCO2Comp) * "Blender_Variables".gFirstProdExtraCO2Fact + * "HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Fact * (1 - "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProductBrix / 100.0) ;*) + "Blender_Variables".gActual_SP_CO2 := ("HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Vols - "Blender_Variables".gDeairCO2Comp) * "Blender_Variables".gFirstProdExtraCO2Fact + * "HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Fact * (1 - "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProductBrix / REAL#100.0) ; // nL/MIN + ELSE + (* classic code: "Blender_Variables".gActual_SP_CO2 := ("HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Vols - "Blender_Variables".gDeairCO2Comp + "Blender_Variables".gCO2TrackingCorr) * "HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Fact + * (1 - "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProductBrix / 100.0) ;*) + "Blender_Variables".gActual_SP_CO2 := ("HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Vols - "Blender_Variables".gDeairCO2Comp + "Blender_Variables".gCO2TrackingCorr) * "HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Fact + * (1 - "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProductBrix / REAL#100.0) ; // nL/MIN + END_IF; + + IF "gBlenderBlending" AND "Blender_Variables_Pers".gCarboStillProduct AND "gBlenderStableFlow" AND NOT "gBlenderRinseMode" THEN + "Blender_Variables".gCO2SPRef := "Blender_Variables".gActual_SP_CO2 * "Blender_Variables".gActual_Prod_Flow ; + "Blender_Variables".gCO2SPTemp2 := "Blender_Variables".gCarboCO2Error * "Blender_Variables".gK_RecCarboCO2Error ; + ELSIF "gBlenderBlending" AND NOT "gBlenderStableFlow" AND "Blender_Variables_Pers".gCarboStillProduct AND NOT "gBlenderRinseMode" THEN + "Blender_Variables".gCO2SPRef := "Blender_Variables".gActual_SP_CO2 * "Blender_Variables".gActual_Prod_SP ; + "Blender_Variables".gCO2SPTemp2 := "Blender_Variables".gCarboCO2Error * "Blender_Variables".gK_RecCarboCO2Error ; + ELSIF "gP_CarboPipe_En" AND "Blender_Variables_Pers".gCarboStillProduct AND NOT "gBlenderRinseMode" THEN + IF "gActualSP_RatioVol" <> 0 AND NOT "Blender_Variables_Pers".gWaterRecipe THEN + "Blender_Variables".gCO2SPRef := "Blender_Variables".gActual_SP_CO2 *("Blender_Variables".gH2O_Flow_Meas + + "Blender_Variables".gH2O_Flow_Meas / "gActualSP_RatioVol") ; + (* classic code: "Blender_Variables".gCO2SPTemp2 := 0.0 ;*) + "Blender_Variables".gCO2SPTemp2 := REAL#0.0 ; + ELSE + "Blender_Variables".gCO2SPRef := ("Blender_Variables".gActual_SP_CO2 * "Blender_Variables".gActual_Prod_Flow) ; + (* classic code: "Blender_Variables".gCO2SPTemp2 := 0.0 ;*) + "Blender_Variables".gCO2SPTemp2 := REAL#0.0 ; + END_IF; + (*ELSIF "HMI_Service".Workshop_Test.CO2TestRequest AND "gWorkshopTest" THEN + "Blender_Variables".gCO2SPRef := "HMI_Service".Workshop_Test.SIMCO2_Test_SP ; + (* classic code: "Blender_Variables".gCO2SPTemp2 := 0.0 ;*) + "Blender_Variables".gCO2SPTemp2 := REAL#0.0 ;*) + ELSE + (* classic code: "Blender_Variables".gCO2SPRef := 0.0 ;*) + "Blender_Variables".gCO2SPRef := REAL#0.0 ; + (* classic code: "Blender_Variables".gCO2SPTemp2 := 0.0 ;*) + "Blender_Variables".gCO2SPTemp2 := REAL#0.0 ; + END_IF; + + (* classic code: "Blender_Variables".gCO2SPTemp := LIMIT(MN:= (-1.0 * "Blender_Variables".gCO2SPRef * "Blender_Constants".gCO2SPRecFact), + IN:= ("Blender_Variables".gCO2SPTemp2), + MX:= ("Blender_Variables".gCO2SPRef * "Blender_Constants".gCO2SPRecFact));*) + "Blender_Variables".gCO2SPTemp := LIMIT(MN:= (REAL#-1.0 * "Blender_Variables".gCO2SPRef * "Blender_Constants".gCO2SPRecFact), + IN:= ("Blender_Variables".gCO2SPTemp2), + MX:= ("Blender_Variables".gCO2SPRef * "Blender_Constants".gCO2SPRecFact)); + + "Blender_Variables".gSP_CO2 := "Blender_Variables".gCO2SPRef + "Blender_Variables".gCO2SPTemp ; + + // SECOND GAS INJECTION + IF "HMI_Blender_Parameters".Processor_Options.Blender_OPT._CO2_GAS2_Injection THEN + (* classic code: "Blender_Variables".gActual_SP_GAS2 := "HMI_Blender_Parameters".Actual_Recipe_Parameters._Gas2Vols * "HMI_Blender_Parameters".Actual_Recipe_Parameters._Gas2Fact + * (1 - "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProductBrix / 100.0) ;*) + "Blender_Variables".gActual_SP_GAS2 := "HMI_Blender_Parameters".Actual_Recipe_Parameters._Gas2Vols * "HMI_Blender_Parameters".Actual_Recipe_Parameters._Gas2Fact + * (1 - "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProductBrix / REAL#100.0) ; // nL/MIN + IF "gBlenderBlending" AND "gBlenderStableFlow" AND NOT "gBlenderRinseMode" THEN + "Blender_Variables".gSP_GAS2 := "Blender_Variables".gActual_SP_GAS2 * "Blender_Variables".gActual_Prod_Flow ; + ELSIF "gBlenderBlending" AND NOT "gBlenderStableFlow" AND NOT "gBlenderRinseMode" THEN + "Blender_Variables".gSP_GAS2 := "Blender_Variables".gActual_SP_GAS2 * "Blender_Variables".gActual_Prod_SP ; + ELSE + (* classic code: "Blender_Variables".gSP_GAS2 := 0.0 ;*) + "Blender_Variables".gSP_GAS2 := REAL#0.0 ; + END_IF ; + ELSE + (* classic code: "Blender_Variables".gSP_GAS2 := 0.0 ;*) + "Blender_Variables".gSP_GAS2 := REAL#0.0 ; + END_IF ; + + //"HMI_PID".RMM301.SP := "Blender_Variables".gSP_H2O ; + //"HMI_PID".RMP302.SP := "Blender_Variables".gSP_SYR ; + + (* classic code: "Blender_Variables".gMaxCarboCO2_V := "MaxCarboCO2 Vol"(i_Temp := "HMI_Instrument".TTN321.PVFiltered , + i_Press := "HMI_Blender_Parameters".ProcessSetup._PPN301Pressure - 1.5 ) ;*) + "Blender_Variables".gMaxCarboCO2_V := "MaxCarboCO2 Vol"(i_Temp := "HMI_Instrument".TTN321.PVFiltered , + i_Press := "HMI_Blender_Parameters".ProcessSetup._PPN301Pressure - REAL#1.5 ) ; + IF NOT ("gP_CarboPipe_En" OR ("HMI_Service".Workshop_Test.CO2TestRequest AND "gWorkshopTest")) THEN + "Blender_Variables".gSP_CO2 := LIMIT(MN:= 0, IN:= "Blender_Variables".gSP_CO2, MX:= ("Blender_Variables".gMaxCarboCO2_V * "Blender_Variables".gSP_H2O)) ; + END_IF; + + IF "gBlenderProdMode" THEN + IF "gBlenderRinseMode" AND NOT "System_RunOut_Variables".FastChangeOverActivated THEN + "Blender_Variables".gSP_SYR_Level := "Blender_Constants".gTP301FirstProdLvl; + ELSIF "Procedure_Variables".FTP302Line_Preparation.Latch OR "Procedure_Variables".FTP302_StartUp.Latch THEN + "Blender_Variables".gSP_SYR_Level := "Blender_Constants".gTP301FirstProdLvl; + ELSIF "Procedure_Variables".First_Production.Running AND "gBlenderBlending" THEN + #mTargetSyrupLvlSlwd(i_InValue:="Blender_Constants".gTP301ProdLvl , + i_SlewMax:="Blender_Constants".gTP301_LvlSlewRate , + i_Cycle:="Time_300ms" , + out:="Blender_Variables".gSP_SYR_Level ) ; + ELSIF "Procedure_Variables".Syr_RunOut.Latch AND "gBlenderBlending" THEN + #mTargetSyrupLvlSlwd(i_InValue:="Blender_Constants".gTP301FirstProdLvl , + i_SlewMax:="Blender_Constants".gTP301_LvlSlewRate , + i_Cycle:="Time_300ms" , + out:="Blender_Variables".gSP_SYR_Level ) ; + "Blender_Variables".gSP_SYR_Level := "Blender_Constants".gTP301ProdLvl; + ELSIF "System_RunOut_Variables".FastChangeOverActivated AND "gSyrupQcoRinse" THEN + "Blender_Variables".gSP_SYR_Level := "HMI_Blender_Parameters".ProcessSetup._CIPTP301MinLevel; + ELSIF "Procedure_Variables".First_Production.Done AND NOT "Procedure_Variables".Syr_RunOut.Latch THEN + "Blender_Variables".gSP_SYR_Level := "Blender_Constants".gTP301ProdLvl; + END_IF ; + ELSE + IF "HMI_Variables_Status".Procedures.CIP_SyrTankFloodRun THEN + (* classic code: "Blender_Variables".gSP_SYR_Level := 100.0 ;*) + "Blender_Variables".gSP_SYR_Level := REAL#100.0 ; + ELSE + "Blender_Variables".gSP_SYR_Level := "HMI_Blender_Parameters".ProcessSetup._CIPTP301MinLevel; + END_IF ; + END_IF; + + IF "gBlenderProdMode" THEN + IF "gBlenderRinseMode" THEN + "Blender_Variables".gSP_DEAIR_Level := "HMI_Blender_Parameters".ProcessSetup._CIPTN301MinLevel; + ELSIF "Procedure_Variables".TN301_StartUp.Latch OR ("Procedure_Variables".First_Production.Running AND "gBlenderBlending") THEN + #mTargetDeairLvlSlwd(i_InValue:="Blender_Constants".gTN301ProdLvl , + i_SlewMax:="Blender_Constants".gTN301_LvlSlewRate , + i_Cycle:="Time_300ms" , + out:="Blender_Variables".gSP_DEAIR_Level ) ; + ELSIF "Procedure_Variables".First_Production.Done THEN + "Blender_Variables".gSP_DEAIR_Level := "Blender_Constants".gTN301ProdLvl; + END_IF ; + ELSE + IF "HMI_Variables_Status".Procedures.CIP_DeairTankFloodRun THEN + (* classic code: "Blender_Variables".gSP_DEAIR_Level := 100.0 ;*) + "Blender_Variables".gSP_DEAIR_Level := REAL#100.0 ; + ELSE + "Blender_Variables".gSP_DEAIR_Level := "HMI_Blender_Parameters".ProcessSetup._CIPTN301MinLevel; + END_IF ; + END_IF; + + IF "gBlenderProdMode" THEN + IF "Procedure_Variables".BlendFill_StartUp.Latch THEN + #mTargetStorgLvlSlwd(i_InValue:="Blender_Variables".gProdTankTargetLvl , + i_SlewMax:="Blender_Constants".gTM301_LvlSlewRate , + i_Cycle:="Time_300ms" , + out:="Blender_Variables".gSP_STORAGE_Level ) ; + ELSIF "Procedure_Variables".First_Production.Done THEN + "Blender_Variables".gSP_STORAGE_Level := "Blender_Variables".gProdTankTargetLvl ; + END_IF ; + END_IF; + + IF "gBlenderProdMode" THEN + IF "gProductChillerEn" OR "gProdDoubleChillerEn" THEN + "Blender_Variables".gSP_H2O_Temperature := "HMI_Blender_Parameters".Actual_Recipe_Parameters._SP_ProdTemp ; + "Blender_Variables".gSP_Prod_Temperature := "HMI_Blender_Parameters".Actual_Recipe_Parameters._SP_ProdTemp ; + ELSIF "gWaterChillerEn" THEN + "Blender_Variables".gSP_H2O_Temperature := "HMI_Blender_Parameters".Actual_Recipe_Parameters._SP_ProdTemp - ("Blender_Constants".gCpSyrup + * ("Blender_Variables".gMeterSyrTemp - "HMI_Blender_Parameters".Actual_Recipe_Parameters._SP_ProdTemp) * "Blender_Variables".gActualSyrupDens / "Blender_Constants".gCpH2O) ; + END_IF; + IF "HMI_Variables_Status".Procedures.ColdRinseRun OR "Procedure_Variables".First_Production.Latch OR "Procedure_Variables"."CarboWaterLine".Latch THEN + "Blender_Variables".gSP_H2O_Temperature := "Blender_Constants".gFirstProdRinseTempSP ; + "Blender_Variables".gSP_Prod_Temperature := "Blender_Constants".gFirstProdRinseTempSP ; + END_IF; + ELSIF "gBlenderCIPMode" AND "gGencoldChillerEn" THEN + (* classic code: "Blender_Variables".gSP_H2O_Temperature := 0.0 ;*) + "Blender_Variables".gSP_H2O_Temperature := REAL#0.0 ; + (* classic code: "Blender_Variables".gSP_Prod_Temperature := 0.0 ;*) + "Blender_Variables".gSP_Prod_Temperature := REAL#0.0 ; + ELSE + (* classic code: "Blender_Variables".gSP_H2O_Temperature := 100.0 ;*) + "Blender_Variables".gSP_H2O_Temperature := REAL#100.0 ; + (* classic code: "Blender_Variables".gSP_Prod_Temperature := 100.0 ;*) + "Blender_Variables".gSP_Prod_Temperature := REAL#100.0 ; + END_IF; + + IF "gBlenderProdMode" AND "HMI_Device".RVN301.Out OR "Procedure_Variables".TN301_StartUp.Latch THEN + IF "gBlenderRinseMode" OR "Procedure_Variables"."CarboWaterLine".Running THEN + (*"HMI_PID".RVN304.Sp := "Blender_Variables".gH2O_Flow_Meas *"HMI_Blender_Parameters".Actual_Recipe_Parameters._DeareationFactor;*) + "HMI_PID".RVN304.Sp := "Blender_Variables".gH2O_Flow_Meas *0.7 ; + ; + ELSE + "HMI_PID".RVN304.Sp := "Blender_Variables".gH2O_Flow_Meas * "HMI_Blender_Parameters".Actual_Recipe_Parameters._DeareationFactor; + END_IF ; + IF "gDeairTank_Loading" OR (NOT "HMI_Digital".LSN301L.Filtered AND NOT "Procedure_Variables".TN301_StartUp.Done) THEN + "HMI_PID".RVN304.Sp := "Blender_Variables".gBlenderNomSpeed * "HMI_Blender_Parameters".Actual_Recipe_Parameters._DeareationFactor; + ELSIF "HMI_Digital".LSN301L.Filtered AND NOT "Procedure_Variables".TN301_StartUp.Done THEN + "HMI_PID".RVN304.Sp := "Blender_Variables".gMinProduction ; + END_IF ; + IF NOT "Blender_Variables_Pers".gCarboStillRecipe OR NOT "HMI_Blender_Parameters".Processor_Options.Blender_OPT._Deaireation THEN + "HMI_PID".RVN304.Sp := "HMI_PID".RVN304.Sp / 10 ; + END_IF ; + ELSE + (* classic code: "HMI_PID".RVN304.Sp := 0.0;*) + "HMI_PID".RVN304.Sp := REAL#0.0; + END_IF ; + + IF NOT "HMI_Device".AVN347.Out AND NOT "HMI_Blender_Parameters".Processor_Options.Blender_OPT._Flowtronic THEN + "HMI_PID".RVN304.Sp := "HMI_Instrument".RVN304.PVFiltered ; + END_IF ; + + +END_FUNCTION_BLOCK + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPID__Main.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPID__Main.md new file mode 100644 index 0000000..f68e0d2 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPID__Main.md @@ -0,0 +1,438 @@ +```pascal +FUNCTION_BLOCK "BlenderPID__Main" +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : TASK1 +NAME : 'Name' +VERSION : 1.0 + VAR + mSlewOk : Bool; + mWaterFlowSlewMFMSav : Real; + mWaterFlowSlewCycleCount : Real; + mSyrupFlowSlewMFM : Real; + mSyrFact : Real; + mProdSimLt : Real; + mProdBrixFlowF : Real; + mPressCO2Flow : Real; + mPressCO2Total : Real; + mProdTotalizerLt : "Integral"; + gBlendErrorInt : "Integral"; + gCarboCO2ErrorInt : "Integral"; + mProdBrixFlowFlt : "LowPassFilter"; + _PID_SP_Calc : "BlenderPID_PIDSPCalc"; + Init_PID_Parameters : "BlenderPID_PIDInitParam"; + PID_ActualRecipe : "BlenderPID_ActualRecipe"; + mAuxONS : Bool; + mAux1ONS : Bool; + END_VAR + + VAR_TEMP + ValBinTmr130 : Word; + ValBcdTmr130 : S5Time; + mAuxONS_Q : Bool; + mAux1ONS_Q : Bool; + END_VAR + + +BEGIN + + + #Init_PID_Parameters (); + #_PID_SP_Calc (); + //Not A Recipe Check + IF ("HMI_Blender_Parameters".Actual_Recipe_Parameters._Type >= 1) AND ("HMI_Blender_Parameters".Actual_Recipe_Parameters._Type <= 3) OR NOT "gBlenderProdMode" THEN + "gNotARecipe_Fault" := FALSE ; + ELSE + "gNotARecipe_Fault" := TRUE ; + END_IF; + + IF NOT "HMI_Blender_Parameters".Processor_Options.Blender_OPT._Simulation THEN + "HMI_PID".RVM301.Pv := "HMI_Instrument".PTM304.PVFiltered ; + END_IF; + + IF NOT "HMI_PID".RVP303.ManualControl.ManOut THEN + "HMI_PID".RVP303.OutMan := "HMI_PID".RVP303.Out ; + END_IF; + + IF NOT "HMI_PID".RVN302.ManualControl.ManOut AND NOT "HMI_PID".RVN302.ConfigPID THEN + "HMI_PID".RVN302.OutMan := "HMI_PID".RVN302.Out ; + ELSE + IF "HMI_PID".RVN302.ManualControl.ManOut AND "HMI_PID".RVN302.ConfigPID AND "HMI_PID".RVN302.ManualControl.ManOut THEN + "HMI_PID".RVN302.OutMan := REAL#100.0; + END_IF; + END_IF; + + IF "HMI_PID".RVN304.ManualControl.ManOut THEN + "HMI_PID".RVN304.Out := "HMI_PID".RVN304.OutMan ; + ELSE + IF "gBlenderProdMode" AND NOT "HMI_Blender_Parameters".Processor_Options.Blender_OPT._Flowtronic THEN + IF "HMI_PID".RVN304.Sp > 0 THEN + IF "HMI_Device".AVN347.Out THEN + "HMI_PID".RVN304.Out := "DeaireationValve"(in_DeaireationFlow:= "HMI_PID".RVN304.Sp , + in_InletPressure:= "HMI_Instrument".PCM306.PVFiltered , + in_FlowCoefficient:= "HMI_Blender_Parameters".ProcessSetup._RVN304KV); + ELSE + "HMI_PID".RVN304.Out := "DeaireationValve"(in_DeaireationFlow:= "HMI_PID".RVN304.Sp, + in_InletPressure:= "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProdTankPress , + in_FlowCoefficient:= "HMI_Blender_Parameters".ProcessSetup._RVN304KV); + END_IF; + ELSE + (* classic code: "HMI_PID".RVN304.Out := 0.0 ;*) + "HMI_PID".RVN304.Out := REAL#0.0 ; + END_IF; + ELSIF "HMI_Blender_Parameters".Processor_Options.Blender_OPT._Flowtronic AND ("Blender_Variables".gFlowTronicFullScale <> 0) THEN + (* classic code: "HMI_PID".RVN304.Out := "HMI_Instrument".RVN304.PVFiltered * 100.0 / "Blender_Variables".gFlowTronicFullScale ;*) + "HMI_PID".RVN304.Out := "HMI_Instrument".RVN304.PVFiltered * REAL#100.0 / "Blender_Variables".gFlowTronicFullScale ; + END_IF; + "HMI_PID".RVN304.OutMan := "HMI_PID".RVN304.Out ; + END_IF; + + IF NOT "HMI_PID".RVS318.ManualControl.ManOut THEN + "HMI_PID".RVS318.OutMan := "HMI_PID".RVS318.Out ; + END_IF; + + IF NOT "HMI_PID".RVM319_PRD.ManualControl.ManOut THEN + "HMI_PID".RVM319_PRD.OutMan := "HMI_PID".RVM319_PRD.Out ; + END_IF; + + IF "gBlenderProdMode" THEN + IF "HMI_Blender_Parameters".Processor_Options.Blender_OPT._Simulation THEN + // Product Totalizer in Liters + IF ("Procedure_Variables".TN301_StartUp.Done AND NOT "Blender_Variables_Pers".gCarboStillProduct) OR (("Blender_Variables_Pers".gCarboStillProduct AND "Procedure_Variables"."CarboWaterLine".Done) + AND "Procedure_Variables"."CarboWaterLine".Done) THEN + #mProdTotalizerLt.i_NewValue :=("Blender_Variables".gActual_Prod_Flow - "Blender_Variables".gFillerProductFlow) / 60 ; + #mProdTotalizerLt.i_IntCycle := "Time_300ms" ; + #mProdTotalizerLt(Out_Integral := #mProdSimLt) ; + ELSE + (* classic code: #mProdSimLt := 0.1 ;*) + #mProdSimLt := REAL#0.1 ; + END_IF; + // Product Tank Level Variation during simulation + IF #mProdSimLt > "Blender_Variables".gProdTankBottomVol THEN + "HMI_Instrument".LTM302.PVFiltered := ((#mProdSimLt - "Blender_Variables".gProdTankBottomVol) / ("Blender_Variables".gProdTankVolume - "Blender_Variables".gProdTankBottomVol)) * 100 ; + END_IF; + + IF "HMI_PID".RVM301.ManualControl.PidEnable THEN + IF NOT "PID_Variables".PID_RVM301_Release THEN + (* classic code: #mPressCO2Flow := "ValveFlow" (i_DeltaP := "HMI_PID".RVM301.Sp - "HMI_PID".RVM301.Pv, + i_ValveOp := "HMI_PID".RVM301.Out , + i_KFF := 1100.5, + i_Dens := "Blender_Constants".gCO2_Density / 1000.0);*) + #mPressCO2Flow := "ValveFlow" (i_DeltaP := "HMI_PID".RVM301.Sp - "HMI_PID".RVM301.Pv, + i_ValveOp := "HMI_PID".RVM301.Out , + i_KFF := REAL#1100.5, + i_Dens := "Blender_Constants".gCO2_Density / REAL#1000.0); + + + #mPressCO2Total := #mPressCO2Total + (#mPressCO2Flow * "HMI_PID".RVM301.Cycle_Time * 60) ; + ELSE + #mPressCO2Total := #mPressCO2Total - "ValveFlow"(i_DeltaP := "HMI_PID".RVM301.Pv, + i_ValveOp := 9 , + i_KFF := 20, + i_Dens := "Blender_Constants".gCO2_Density / 1000); + + END_IF; + END_IF; + IF "HMI_Device".AVM312.Out THEN + #mPressCO2Total := #mPressCO2Total - "ValveFlow"(i_DeltaP := "HMI_PID".RVM301.Pv, + i_ValveOp := 2 , + i_KFF := 20, + i_Dens := "Blender_Constants".gCO2_Density / 1000); + + END_IF; + IF "Blender_Variables".gProdTankVolume > 0 AND #mProdSimLt < "Blender_Variables".gProdTankVolume THEN + "HMI_PID".RVM301.Pv := #mPressCO2Total / ("Blender_Variables".gProdTankVolume - #mProdSimLt) ; + END_IF; + ELSE + ; + END_IF; // End OF IF gH_Blender_OPT_Simulation THEN... + // Transfer the Flowrate Measure TO the PID's PV Input + "HMI_PID".RMM301.Pv := "Blender_Variables".gH2O_Flow_Meas ; + "HMI_PID".RMP302.Pv := "Blender_Variables".gSYR_Flow_Meas ; + "HMI_PID".RMM303.Pv := "Blender_Variables".gCO2_Flow_Meas ; + "HMI_PID".RMM304.Pv := "Blender_Variables".gCO2_Flow_Meas ; + + IF "gBlenderStableFlow" AND ("Blender_Variables".gH2O_Flow_Meas < 50) THEN + "gFTN301_FlowTooLow" := TRUE ; + ELSE + "gFTN301_FlowTooLow" := FALSE ; + END_IF; + + // Calculates the actual product brix from Flows + IF "Blender_Variables".gH2O_Flow_Meas <> 0 AND "Blender_Variables".gSYR_Flow_Meas <> 0 THEN + #mProdBrixFlowF := ("Blender_Variables".gSYR_Flow_Meas * "Blender_Variables".gActualSyrupBrix) / ("Blender_Variables".gH2O_Flow_Meas + "Blender_Variables".gSYR_Flow_Meas ) ; + #mProdBrixFlowFlt(i_Value := #mProdBrixFlowF , + i_Num := 49 , + i_Enable := "gBlenderBlending") ; + "Blender_Variables".gFlowProdBrix := #mProdBrixFlowFlt.FilterOut ; + + END_IF; + + IF ("HMI_PID".RMM301.Sp + "HMI_PID".RMP302.Sp) <> 0 AND "Blender_Variables".gActualSyrupDens <> 0 THEN + "Blender_Variables".gProductDensity := ("HMI_PID".RMM301.Sp + "HMI_PID".RMP302.Sp) / ("HMI_PID".RMM301.Sp + "HMI_PID".RMP302.Sp / "Blender_Variables".gActualSyrupDens) ; + END_IF; + + // PID's Manual Bit + IF NOT "HMI_PID".RMM301.ManualControl.ManOut THEN + "HMI_PID".RMM301.OutMan := "HMI_PID".RMM301.Out ; + END_IF; + + IF "HMI_Service".Workshop_Test.CO2TestRequest AND "gWorkshopTest" AND NOT "Procedure_Variables".Blender_Run.Running THEN + // "HMI_PID".RMM301.ManualControl.ManOut := TRUE ; + (* classic code: "HMI_PID".RMM301.OutMan := 60.0 ;*) + "HMI_PID".RMM301.OutMan := REAL#60.0 ; + END_IF; + + IF ("System_RunOut_Variables".ProdPipe_RunOut.Running OR "Procedure_Variables".TM301_RunOut.Running) AND "System_RunOut_Variables".ProdPipeRunOutWaterCount THEN + // "HMI_PID".RMM301.ManualControl.ManOut := TRUE ; + "HMI_PID".RMM301.OutMan := "System_RunOut_Variables".RMM301_OV_ProdPipeRunOut ; + END_IF; + + IF NOT "HMI_PID".RMP302.ManualControl.ManOut THEN + "HMI_PID".RMP302.OutMan := "HMI_PID".RMP302.Out ; + END_IF; + + IF ("System_RunOut_Variables".ProdPipe_RunOut.Running OR "Procedure_Variables".TM301_RunOut.Running) AND "System_RunOut_Variables".ProdPipeRunOutWaterCount THEN + // "HMI_PID".RMP302.ManualControl.ManOut := TRUE ; + "HMI_PID".RMP302.OutMan := "System_RunOut_Variables".RMP302_OV_ProdPipeRunOut ; + END_IF; + + IF NOT "HMI_PID".RMM303.ManualControl.ManOut THEN + "HMI_PID".RMM303.OutMan := "HMI_PID".RMM303.Out ; + END_IF; + + IF NOT "HMI_PID".RMM304.ManualControl.ManOut THEN + "HMI_PID".RMM304.OutMan := "HMI_PID".RMM304.Out ; + END_IF; + + IF NOT "HMI_PID".RVM301.ManualControl.ManOut AND NOT "PID_Variables".PID_RVM301_Release THEN + "HMI_PID".RVM301.OutMan := "HMI_PID".RVM301.Out ; + END_IF; + IF "Procedure_Variables".Balaiage.Latch THEN + IF "Procedure_Variables".First_Production.Latch OR (NOT "Procedure_Variables".BlendFill_StartUp.Done AND "HMI_Blender_Parameters".Processor_Options.Blender_OPT._BlendFillSystem) + OR NOT "gBalaiage_MaxFlow" THEN + "HMI_PID".RVM301.OutMan := "HMI_Blender_Parameters".ProcessSetup._BaialageRVM301OVMin ; + ELSE + "HMI_PID".RVM301.OutMan := "HMI_Blender_Parameters".ProcessSetup._BaialageRVM301OVMax ; + END_IF ; + END_IF ; + + IF "gBlenderBlending" THEN + IF #mWaterFlowSlewCycleCount > 0 AND NOT #mSlewOk THEN + "Blender_Variables".gWaterFlowSlewValve := "HMI_PID".RMM301.Out / #mWaterFlowSlewCycleCount ; + "Blender_Variables".gWaterFlowSlewMFM := "Profibus_Variables".gFTN301_Flow / #mWaterFlowSlewCycleCount ; + #mSyrupFlowSlewMFM := "Profibus_Variables".gFTP302_Flow / #mWaterFlowSlewCycleCount ; + #mWaterFlowSlewCycleCount := "Time_300ms" + #mWaterFlowSlewCycleCount ; + IF "Blender_Variables".gWaterFlowSlewMFM > #mWaterFlowSlewMFMSav THEN + #mSlewOk := TRUE ; + END_IF; + #mWaterFlowSlewMFMSav := "Blender_Variables".gWaterFlowSlewMFM ; + ELSE + #mWaterFlowSlewCycleCount := "Time_300ms" + #mWaterFlowSlewCycleCount ; + END_IF; + ELSE + (* classic code: #mWaterFlowSlewMFMSav := 0.0 ;*) + #mWaterFlowSlewMFMSav := REAL#0.0 ; + (* classic code: #mWaterFlowSlewCycleCount := 0.0 ;*) + #mWaterFlowSlewCycleCount := REAL#0.0 ; + (* classic code: "Blender_Variables".gWaterFlowSlewValve := 0.0 ;*) + "Blender_Variables".gWaterFlowSlewValve := REAL#0.0 ; + (* classic code: "Blender_Variables".gWaterFlowSlewMFM := 0.0 ;*) + "Blender_Variables".gWaterFlowSlewMFM := REAL#0.0 ; + (* classic code: #mSyrupFlowSlewMFM := 0.0 ;*) + #mSyrupFlowSlewMFM := REAL#0.0 ; + #mSlewOk := FALSE ; + END_IF; + + IF "Blender_Variables".gSYR_Flow_Meas > 0 AND "Blender_Variables".gActualSyrupDens <> 0 THEN + "Blender_Variables".gActual_Ratio := "Blender_Variables".gH2O_Flow_Meas / "Blender_Variables".gSYR_Flow_Meas * "Blender_Variables".gActualSyrupDens ; + END_IF; + + IF "Blender_Variables".gH2O_Flow_Meas > 0 AND "Blender_Constants".gCO2_Density <> 0 AND "Blender_Variables".gActualSyrupDens <> 0 THEN + "Blender_Variables".gActual_CO2_Vol := ("Blender_Variables".gCO2_Flow_Meas / "Blender_Constants".gCO2_Density) / ("Blender_Variables".gH2O_Flow_Meas + ("Blender_Variables".gSYR_Flow_Meas / "Blender_Variables".gActualSyrupDens)) ; + END_IF; + + IF "Blender_Variables".gWaterVFM_Area <> 0 THEN + (* classic code: "Blender_Variables".gWaterSpeedToStopError := "Blender_Variables".gH2O_Flow_Meas / "Blender_Variables".gWaterVFM_Area / 10.0 / 60.0 ;*) + "Blender_Variables".gWaterSpeedToStopError := "Blender_Variables".gH2O_Flow_Meas / "Blender_Variables".gWaterVFM_Area / REAL#10.0 / REAL#60.0 ; // m/s + (* classic code: "Blender_Variables".gWaterVFM_Vel := "Blender_Variables".gSP_H2O / "Blender_Variables".gWaterVFM_Area / 10.0 / 60.0 ;*) + "Blender_Variables".gWaterVFM_Vel := "Blender_Variables".gSP_H2O / "Blender_Variables".gWaterVFM_Area / REAL#10.0 / REAL#60.0 ; // m/s + END_IF; + + #ValBcdTmr130 := S_ODT(T_NO := "mStopErrorsTimeOut", + S := NOT "gBlenderBlending", + TV := S5TIME#10s, + R := "AUX FALSE", + BI => #ValBinTmr130, + Q => "mStopErrorsTimeOut.Q"); + + IF "Blender_Variables".gWaterSpeedToStopError > "Blender_Constants".gFTN301_MinVel AND NOT "mStopErrorsTimeOut.Q" THEN + "gStopBlendCarboError" := FALSE ; + ELSE + "gStopBlendCarboError" := TRUE ; + END_IF; + + IF "Blender_Variables".gWaterVFM_Vel > "Blender_Constants".gFTN301_MinVel THEN + "gFTN301_SpeedToStop" := FALSE ; + ELSE + "gFTN301_SpeedToStop" := TRUE ; + END_IF; + + IF "Blender_Variables".gWaterPipe_Area <> 0 THEN + (* classic code: "Blender_Variables".gWaterPipe_Vel := "Blender_Variables".gH2O_Flow_Meas / "Blender_Variables".gWaterPipe_Area / 10.0 / 60.0 ;*) + "Blender_Variables".gWaterPipe_Vel := "Blender_Variables".gH2O_Flow_Meas / "Blender_Variables".gWaterPipe_Area / REAL#10.0 / REAL#60.0 ; // m/s + END_IF; + + (* classic code: IF "gBlenderStableFlow" AND ("Blender_Variables".gWaterPipe_Vel < 0.6) AND "HMI_Blender_Parameters".Processor_Options.Blender_OPT._CarboPresent THEN*) + IF "gBlenderStableFlow" AND ("Blender_Variables".gWaterPipe_Vel < REAL#0.6) AND "HMI_Blender_Parameters".Processor_Options.Blender_OPT._CarboPresent THEN + "gFTN301_SpeedTooLow" := TRUE ; + ELSE + "gFTN301_SpeedTooLow" := FALSE ; + END_IF; + + (********************************************************************************************************************************************************) + + // Calculates blend error + IF "Blender_Variables".gActualSyrupDens <> 0 THEN + "Blender_Variables".gSyrupVolFlow_PV := "HMI_PID".RMP302.Pv / "Blender_Variables".gActualSyrupDens ; + END_IF; + + IF "Blender_Variables_Pers".gWaterRecipe THEN + (* classic code: "Blender_Variables".gBlendError := 0.0 ;*) + "Blender_Variables".gBlendError := REAL#0.0 ; + END_IF; + + IF "PID_Variables".Blend_Error_Enable AND "Blender_Variables".gActualSyrupDens <> 0 THEN + IF "Procedure_Variables".First_Production.Latch AND "Blender_Variables_Pers".gSugarBeverage THEN + IF "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupBrix <> 0 THEN + #mSyrFact := "Blender_Variables".gMeterSyrBrix / "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupBrix ; + END_IF; + + #gBlendErrorInt.i_NewValue := ("HMI_PID".RMM301.Pv + ((1 - #mSyrFact) * "Blender_Variables".gSyrupVolFlow_PV) - "Blender_Variables".gSyrupVolFlow_PV * #mSyrFact * "gActualSP_RatioVol") / 60 ; + #gBlendErrorInt.i_IntCycle := "Time_300ms" ; + #gBlendErrorInt(Out_Integral:= "Blender_Variables".gBlendError); + + ELSE + #gBlendErrorInt.i_NewValue:=("HMI_PID".RMM301.Pv - ("HMI_PID".RMP302.Pv / "Blender_Variables".gActualSyrupDens) * "gActualSP_RatioVol") / 60 ; + #gBlendErrorInt.i_IntCycle := "Time_300ms" ; + #gBlendErrorInt(Out_Integral:= "Blender_Variables".gBlendError) ; + END_IF; + ELSE + // gBlendErrorInt(Out_Integral:= "Blender_Variables".gBlendError); + ; + END_IF; + + IF "PID_Variables".CarboCO2_Error_Enable THEN + #gCarboCO2ErrorInt.i_NewValue:=(("Blender_Variables".gActual_Prod_Flow * "Blender_Variables".gActual_SP_CO2) - "Blender_Variables".gCO2_Flow_Meas) / 60 ; + #gCarboCO2ErrorInt.i_IntCycle := "Time_300ms" ; + #gCarboCO2ErrorInt(Out_Integral:="Blender_Variables".gCarboCO2Error) ; + ELSE + // gCarboCO2ErrorInt(Out_Integral:="Blender_Variables".gCarboCO2Error); + ; + END_IF; + + IF "gBlenderRinseMode" AND ("Procedure_Variables".TN301_StartUp.Done OR NOT "HMI_Blender_Parameters".Processor_Options.Blender_OPT._Deaireation) THEN + // "HMI_PID".RMM301.ManualControl.ManOut := TRUE; + IF "gCIPRinseOpenValves" THEN + "HMI_PID".RMM301.OutMan := "HMI_Blender_Parameters".ProcessSetup._RinseRMM301OV ; + ELSE + (* classic code: "HMI_PID".RMM301.OutMan := 0.0 ;*) + "HMI_PID".RMM301.OutMan := REAL#0.0 ; + END_IF; + END_IF; + IF "gBlenderRinseMode" THEN + "HMI_PID".RMP302.OutMan := "HMI_Blender_Parameters".ProcessSetup._RinseRMP302OV ; + IF "gRinseDrainRunning" AND NOT "HMI_Blender_Parameters".Processor_Options.Blender_OPT._FastChangeOverEnabled THEN + IF "gDrainPressNotOK" THEN + "HMI_PID".RVM301.OutMan := "Blender_Constants".gRinseDrainOpPressValve ; + ELSE + (* classic code: "HMI_PID".RVM301.OutMan := 0.0 ;*) + "HMI_PID".RVM301.OutMan := REAL#0.0 ; + END_IF; + END_IF; + END_IF; + // "HMI_PID".RVS318.SP := 0.0 ; + ELSE // CIP + // "HMI_PID".RVS318.SP := "CIP_Program_Variables".General_Data.SPTemperature + "Blender_Constants".gCIP_SP_DeltaT ; // Increasing REAL Temperature Set Point + (* classic code: "HMI_PID".RVM301.Sp := 0.0 ;*) + "HMI_PID".RVM301.Sp := REAL#0.0 ; + "PID_Variables".PID_RVM301_Release := TRUE ; + // "HMI_PID".RVM301.ManualControl.ManOut := TRUE ; + (* classic code: "HMI_PID".RVM301.OutMan := 0.0 ;*) + "HMI_PID".RVM301.OutMan := REAL#0.0 ; + + // "HMI_PID".RMM301.ManualControl.ManOut := TRUE ; + IF "HMI_Variables_Status".Procedures.CIP_SyrTankFloodRun OR NOT "gOUT_PPN301_Run" OR NOT "gCIPRinseOpenValves" THEN + (* classic code: "HMI_PID".RMM301.OutMan := 0.0 ;*) + "HMI_PID".RMM301.OutMan := REAL#0.0 ; + ELSE + "HMI_PID".RMM301.OutMan := "HMI_Blender_Parameters".ProcessSetup._CIPRMM301OV ; + END_IF; + // "HMI_PID".RMP302.ManualControl.ManOut := TRUE ; + IF "HMI_Variables_Status".Procedures.CIP_SyrTankFloodRun OR NOT "gOUT_PPP302_Run" OR NOT "gCIPRinseOpenRMP302" THEN + (* classic code: "HMI_PID".RMP302.OutMan := 0.0 ;*) + "HMI_PID".RMP302.OutMan := REAL#0.0 ; + ELSE + "HMI_PID".RMP302.OutMan := "HMI_Blender_Parameters".ProcessSetup._CIPRMP302OV ; + END_IF; + + // "HMI_PID".RMM303.ManualControl.ManOut := TRUE; + IF "gP_CIP_CO2_Inj" THEN + "HMI_PID".RMM303.OutMan := "Blender_Constants".gCIP_CO2_InjectionValue ; + ELSE + (* classic code: "HMI_PID".RMM303.OutMan := 0.0;*) + "HMI_PID".RMM303.OutMan := REAL#0.0; + END_IF; + + (* classic code: "HMI_PID".RMM304.OutMan := 0.0;*) + "HMI_PID".RMM304.OutMan := REAL#0.0; + + IF "HMI_Blender_Parameters".Processor_Options.Blender_OPT._Simulation THEN + (* classic code: #mPressCO2Total := 0.0 ;*) + #mPressCO2Total := REAL#0.0 ; + (* classic code: #mProdSimLt := 0.0 ;*) + #mProdSimLt := REAL#0.0 ; + (* classic code: "HMI_Instrument".LTM302.PVFiltered := 0.0 ;*) + "HMI_Instrument".LTM302.PVFiltered := REAL#0.0 ; + END_IF; + END_IF; + + IF "System_RunOut_Variables".FastChangeOverActivated THEN + "ONS_R"(Enable_ONS := "System_RunOut_Variables".LoadNextRecipe, + Aux_ONS := #mAux1ONS, + ONS_R => #mAux1ONS_Q ); + IF #mAux1ONS_Q THEN + "BlenderPID_NextRecipe" () ; + #PID_ActualRecipe () ; + "System_RunOut_Variables".LoadNextRecipe := FALSE ; + "System_RunOut_Variables".NextRecipeOk := TRUE ; + END_IF; + ELSE + "System_RunOut_Variables".LoadNextRecipe := FALSE ; + END_IF; + + "ONS_R"(Enable_ONS := ("HMI_Variables_Cmd".Recipe.Active_Recipe_Start OR "HMI_Variables_Cmd".Recipe.Download) AND NOT "gRecipeManagement_Busy", + Aux_ONS := #mAuxONS, + ONS_R => #mAuxONS_Q ); + IF #mAuxONS_Q THEN + #PID_ActualRecipe () ; + END_IF; + + "HMI_PID".RVP303.Pv := "HMI_Instrument".LTP303.PVFiltered ; + IF "HMI_Blender_Parameters".Processor_Options.Blender_OPT._BlendFillSystem AND "HMI_Blender_Parameters".Processor_Options.Blender_OPT._StillWaterByPass THEN + IF NOT "Blender_Variables_Pers".gSkipDeaireation THEN + "HMI_PID".RVN302.Pv := "HMI_Instrument".LTN301.PVFiltered; + ELSE + "HMI_PID".RVN302.Pv := "HMI_Instrument".LTM302.PVFiltered; + END_IF; + ELSE + "HMI_PID".RVN302.Pv := "HMI_Instrument".LTN301.PVFiltered; + END_IF ; + "HMI_PID".RVS318.Pv := "HMI_Instrument".TTS305_1.PVFiltered ; + "HMI_PID".RVM319_PRD.Pv := "HMI_Instrument".TTM306_PRD.PVFiltered ; + + +END_FUNCTION_BLOCK + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPID__Main_Data.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPID__Main_Data.md new file mode 100644 index 0000000..7ae4fc0 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderPID__Main_Data.md @@ -0,0 +1,34 @@ +```pascal +// Block Type: InstanceDB +// Block Number: 950 + +DATA_BLOCK "BlenderPID__Main_Data" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + mSlewOk : Bool := FALSE; + mWaterFlowSlewMFMSav : Real := 0.0; + mWaterFlowSlewCycleCount : Real := 0.0; + mSyrupFlowSlewMFM : Real := 0.0; + mSyrFact : Real := 0.9908964; + mProdSimLt : Real := 0.0; + mProdBrixFlowF : Real := 12.47313; + mPressCO2Flow : Real := 0.0; + mPressCO2Total : Real := 0.0; + mProdTotalizerLt : "Integral"; + gBlendErrorInt : "Integral"; + gCarboCO2ErrorInt : "Integral"; + mProdBrixFlowFlt : "LowPassFilter"; + _PID_SP_Calc : "BlenderPID_PIDSPCalc"; + Init_PID_Parameters : "BlenderPID_PIDInitParam"; + PID_ActualRecipe : "BlenderPID_ActualRecipe"; + mAuxONS : Bool := FALSE; + mAux1ONS : Bool := FALSE; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderRinse.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderRinse.md new file mode 100644 index 0000000..53fd986 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderRinse.md @@ -0,0 +1,148 @@ +```pascal +// Block Type: FC +// Block Number: 2019 +// Original Network Languages: LAD + +FUNCTION "BlenderRinse" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + mColdReq : Bool; + mWarmReq : Bool; + mColdStop : Bool; + mWarmStop : Bool; +END_VAR + +BEGIN + + // Network 1: Qualifier (Original Language: LAD) + + "Procedure_Variables"."Blender_Rinse"."Qualifier" := "HMI_Variables_Status"."System"."Blender_Prod_CIP" AND "gBlenderSuppliesOk" AND "gBlenderBlending" AND "gBlenderCIPMode" AND "Procedure_Variables"."TM301_Drain"."Latch"; + + // Network 2: Stop / Request (Original Language: LAD) + + // PBox SymPy processed, logic in consumer + "M19014" := ("System_RunOut_Variables"."FastChangeOverActivated" AND "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_ColdRinseReq") OR ("System_RunOut_Variables"."FastChangeOverActivated" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Done" AND "Blender_Variables_Pers"."gCoolerEnabled"); // P_TRIG(("System_RunOut_Variables"."FastChangeOverActivated" AND "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_ColdRinseReq") OR ("System_RunOut_Variables"."FastChangeOverActivated" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Done" AND "Blender_Variables_Pers"."gCoolerEnabled")) - Mem: "M19014" + + "mColdReq" := ("System_RunOut_Variables"."FastChangeOverActivated" AND "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_ColdRinseReq" AND "Procedure_Variables"."Blender_Rinse"."Qualifier" AND NOT "M19014") OR ("System_RunOut_Variables"."FastChangeOverActivated" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Done" AND "Blender_Variables_Pers"."gCoolerEnabled" AND "Procedure_Variables"."Blender_Rinse"."Qualifier" AND NOT "M19014"); + + "mColdStop" := ("ColdRinseON" AND "System_RunOut_Variables"."FastChangeOverActivated" AND "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_ColdRinseReq" AND NOT "M19014") OR ("ColdRinseON" AND "System_RunOut_Variables"."FastChangeOverActivated" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Done" AND "Blender_Variables_Pers"."gCoolerEnabled" AND NOT "M19014"); + + // Network 3: Warm Request / Stop (Original Language: LAD) + + // PBox SymPy processed, logic in consumer + "M19015" := ("HMI_Variables_Cmd"."Commands_From_HMI"."CMD_WarmRinseReq" AND "System_RunOut_Variables"."FastChangeOverActivated") OR ("System_RunOut_Variables"."FastChangeOverActivated" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Done" AND "Blender_Variables_Pers"."gCoolerEnabled"); // P_TRIG(("HMI_Variables_Cmd"."Commands_From_HMI"."CMD_WarmRinseReq" AND "System_RunOut_Variables"."FastChangeOverActivated") OR ("System_RunOut_Variables"."FastChangeOverActivated" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Done" AND "Blender_Variables_Pers"."gCoolerEnabled")) - Mem: "M19015" + + "mWarmReq" := ("HMI_Variables_Cmd"."Commands_From_HMI"."CMD_WarmRinseReq" AND "System_RunOut_Variables"."FastChangeOverActivated" AND "Procedure_Variables"."Blender_Rinse"."Qualifier" AND NOT "M19015") OR ("System_RunOut_Variables"."FastChangeOverActivated" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Done" AND "Blender_Variables_Pers"."gCoolerEnabled" AND "Procedure_Variables"."Blender_Rinse"."Qualifier" AND NOT "M19015"); + + "mWarmStop" := ("HMI_Variables_Cmd"."Commands_From_HMI"."CMD_WarmRinseReq" AND "WarmRinseON" AND "System_RunOut_Variables"."FastChangeOverActivated" AND NOT "M19015") OR ("WarmRinseON" AND "System_RunOut_Variables"."FastChangeOverActivated" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Done" AND "Blender_Variables_Pers"."gCoolerEnabled" AND NOT "M19015"); + + // Network 4: Rinse Request (Original Language: LAD) + + "Procedure_Variables"."Blender_Rinse"."Request" := ("mColdReq" AND "Procedure_Variables"."Blender_Rinse"."Qualifier") OR ("mWarmReq" AND "Procedure_Variables"."Blender_Rinse"."Qualifier"); + + // Network 5: ColdRinseSR (Original Language: LAD) + + // Network 5 did not produce printable SCL code. + + // Network 6: WarmRinse (Original Language: LAD) + + // Network 6 did not produce printable SCL code. + + // Network 7: Wait (Original Language: LAD) + + "Procedure_Variables"."Blender_Rinse"."Wait" := "Procedure_Variables"."TM301_Drain"."Latch" OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Deaireation" AND "Procedure_Variables"."TN301_StartUp"."Done"); + + // Network 8: Reset (Original Language: LAD) + + "Procedure_Variables"."Blender_Rinse"."Reset" := "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_TM301DrainReq" OR "gBlenderCIPMode"; + + // Network 9: Done (Original Language: LAD) + + IF "Procedure_Variables"."Blender_Rinse"."Reset" OR "Procedure_Variables"."Blender_Rinse"."Latch" THEN + "HMI_Variables_Status"."Procedures"."Rinse_WarmRinseDone" := FALSE; + END_IF; + + IF "Procedure_Variables"."Blender_Rinse"."Reset" OR "Procedure_Variables"."Blender_Rinse"."Latch" THEN + "HMI_Variables_Status"."Procedures"."Rinse_ColdRinseDone" := FALSE; + END_IF; + + // Network 10: Latch (Original Language: LAD) + + "Procedure_Variables"."Blender_Rinse"."Latch" := ("Procedure_Variables"."Blender_Rinse"."Reset" AND "Procedure_Variables"."Blender_Rinse"."Latch" AND "FirstScan" AND "Procedure_Variables"."Blender_Rinse"."Done") OR ("Procedure_Variables"."Blender_Rinse"."Reset" AND "Procedure_Variables"."Blender_Rinse"."Request" AND "FirstScan" AND "Procedure_Variables"."Blender_Rinse"."Done"); + + // Network 11: Rinse Mode (Original Language: LAD) + + "gBlenderRinseMode" := "Procedure_Variables"."Blender_Rinse"."Latch"; + + IF "Procedure_Variables"."Blender_Rinse"."Latch" THEN + "HMI_Variables_Status"."Procedures"."BlenderStateNum" := 18; + END_IF; + + // Network 12: Running (Original Language: LAD) + + "Procedure_Variables"."Blender_Rinse"."Running" := "Procedure_Variables"."Blender_Rinse"."Latch" AND "Procedure_Variables"."Blender_Rinse"."Wait"; + + // Network 13: Warm Rinse Running (Original Language: LAD) + + "HMI_Alarms"."gH_Status" := "WarmRinseON" AND "Procedure_Variables"."Blender_Rinse"."Latch"; + + "HMI_Variables_Status"."Procedures"."WarmRinseRun" := "WarmRinseON" AND "Procedure_Variables"."Blender_Rinse"."Latch"; + + // Network 14: Cold Rinse Running (Original Language: LAD) + + "HMI_Alarms"."gH_Status" := "ColdRinseON" AND "Procedure_Variables"."Blender_Rinse"."Latch"; + + "HMI_Variables_Status"."Procedures"."ColdRinseRun" := "ColdRinseON" AND "Procedure_Variables"."Blender_Rinse"."Latch"; + + // Network 15: Rinse Drain Active (Original Language: LAD) + + "HMI_Alarms"."gH_Status" := "gBlenderRinseMode" AND "Procedure_Variables"."TM301_Drain"."Latch"; + + "gRinseDrainRunning" := "gBlenderRinseMode" AND "Procedure_Variables"."TM301_Drain"."Latch"; + + // Network 16: Done (Original Language: LAD) + + "Procedure_Variables"."Blender_Rinse"."Done" := ("Procedure_Variables"."Blender_Rinse"."Latch" AND "Procedure_Variables"."TM301_Drain"."Done") OR ("Procedure_Variables"."Blender_Rinse"."Latch" AND "M19077") OR ("Procedure_Variables"."Blender_Rinse"."Reset" AND "Procedure_Variables"."Blender_Rinse"."Done" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled"); + + // Network 17: Done (Original Language: LAD) + + IF "Procedure_Variables"."Blender_Rinse"."Done" OR "gBlenderCIPMode" THEN + "Blender_Variables_Pers"."gFillerRinse_DoneLatch" := FALSE; + END_IF; + + // Network 18: Rinse Completed (Original Language: LAD) + + // PBox SymPy processed, logic in consumer + "M19020" := "System_RunOut_Variables"."In_Flr_FastRinseComplete"; // P_TRIG("System_RunOut_Variables"."In_Flr_FastRinseComplete") - Mem: "M19020" + + IF ("WarmRinseON" AND "mWarmStop") OR ("Procedure_Variables"."Blender_Rinse"."Latch" AND "System_RunOut_Variables"."In_Flr_FastRinseComplete") THEN + "Blender_Variables_Pers"."gFillerRinse_DoneLatch" := TRUE; + END_IF; + + IF ("WarmRinseON" AND "mWarmStop") OR ("WarmRinseON" AND "Procedure_Variables"."Blender_Rinse"."Latch" AND "System_RunOut_Variables"."In_Flr_FastRinseComplete") THEN + "HMI_Variables_Status"."Procedures"."Rinse_WarmRinseDone" := TRUE; + END_IF; + + IF ("ColdRinseON" AND "WarmRinseON" AND "mWarmStop") OR ("ColdRinseON" AND "Procedure_Variables"."Blender_Rinse"."Latch" AND "System_RunOut_Variables"."In_Flr_FastRinseComplete") THEN + "HMI_Variables_Status"."Procedures"."Rinse_ColdRinseDone" := TRUE; + END_IF; + + // Network 19: Rinse Done ONS (Original Language: LAD) + + // Edge Logic handled by Coil 26 + "M19021" := "Procedure_Variables"."Blender_Rinse"."Done"; // P_TRIG("Procedure_Variables"."Blender_Rinse"."Done") - Mem: "M19021" + + "Procedure_Variables"."Blender_Rinse"."ONS_Done" := "Procedure_Variables"."Blender_Rinse"."Done" AND NOT "M19021"; + "M19021" := "Procedure_Variables"."Blender_Rinse"."Done"; // P_TRIG("Procedure_Variables"."Blender_Rinse"."Done") - Mem: "M19021" + + // Network 20: Blender Rinse Done (Original Language: LAD) + + IF "Procedure_Variables"."Blender_Rinse"."ONS_Done" THEN + BlenderRinse_Done(); + END_IF; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderRinse_Done.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderRinse_Done.md new file mode 100644 index 0000000..0716058 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderRinse_Done.md @@ -0,0 +1,22 @@ +```pascal +// Block Type: FC +// Block Number: 2042 +// Original Network Languages: LAD + +FUNCTION "BlenderRinse_Done" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +BEGIN + + // Network 1: PID Reset Integral (Original Language: LAD) + + BlenderPID_PIDResInteg(); + + // Network 2: Init Errors (Original Language: LAD) + + BlenderCtrl_InitErrors(); + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderRun_MeasFilSpeed.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderRun_MeasFilSpeed.md new file mode 100644 index 0000000..16b272a --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderRun_MeasFilSpeed.md @@ -0,0 +1,293 @@ +```pascal +// Block Type: FB +// Block Number: 1719 +// Original Network Languages: LAD, STL + +FUNCTION_BLOCK "BlenderRun_MeasFilSpeed" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + i_Value : Real; + i_Num : Int; + i_Enable : Bool; +END_VAR + +VAR_OUTPUT + FilterOut : Real; +END_VAR + +VAR_STAT + mNumOfCycle : Int; + mInitialLevel : Real; + mPrevSpeed : Real; + mAcqTime : Real; + mProdLt : Real; + mSaveDeltaV : Real; + mFillerTracked : Bool; + mFillerTrackedTmrON : Bool; + mFlrFlowDelayOnON : Bool; + mFlrFlowDelayOffON : Bool; + mFillerTrackedTmr : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mFlrFlowDelayOn : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mFlrFlowDelayOff : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mFillerDeltaVFilter : "LowPassFilter"; + mFillerSpeedFilter : "LowPassFilter"; +END_VAR + +VAR_TEMP + mReadLevel : Bool; + mNotZero : Bool; + mSave : Bool; + gBlenderSpeedUp : Bool; + gBlenderSpeedDown : Bool; + mDummy : Bool; + Aux_calc1 : Real; + Aux_calc2 : Real; + mTemp : Real; + mSpeedPerc : Real; + mFillerEstimatedFlow : Real; + __PlcmigTempFillBits_22B0 : Array[0..7] of Bool; +END_VAR + + #_20S : Bool; // Auto-generated temporary + #TON_INSTANCE_29 : Bool; // Auto-generated temporary +BEGIN + + // Network 1: Track Filler Speed Start (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_TrackFillerSpeed" THEN + "gTrackFillerSpeed" := TRUE; + END_IF; + + // Network 2: Track Filler Speed Stop (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_TrackFillerSpeed" OR "HMI_PID"."RMM301"."ManualControl"."ManOut" THEN + "gTrackFillerSpeed" := FALSE; + END_IF; + + // Network 3: Qualifier (Original Language: LAD) + + "Procedure_Variables"."Filler_Speed"."Qualifier" := "Procedure_Variables"."Blender_Run"."Latch" OR "AUX FALSE"; + + // Network 4: Read Level (Original Language: LAD) + + "mReadLevel" := Eq("mNumOfCycle", 0); + + // Network 5: Read level & Product Target (Original Language: LAD) + + IF "mReadLevel" THEN + "mInitialLevel" := "HMI_Instrument"."LTM302"."PVFiltered"; + "mPrevSpeed" := "Blender_Variables"."gActual_Prod_SP"; + END_IF; + + // Network 6: Acquisition Time (Original Language: LAD) + + IF "Procedure_Variables"."Filler_Speed"."Qualifier" AND "Procedure_Variables"."Filler_Speed"."Latch" THEN + "mAcqTime" := "mAcqTime" + "Time_300ms"; + END_IF; + + // Network 7: Speed Request (Original Language: LAD) + + IF "Procedure_Variables"."Filler_Speed"."Qualifier" THEN + "mNumOfCycle" := "mNumOfCycle" + 1; + END_IF; + + "Procedure_Variables"."Filler_Speed"."Request" := "mNumOfCycle" > 8; + + // Network 8: Speed Latch (Original Language: LAD) + + "Procedure_Variables"."Filler_Speed"."Latch" := ("FirstScan" AND "Procedure_Variables"."Filler_Speed"."Done" AND "Procedure_Variables"."Filler_Speed"."Qualifier" AND "Procedure_Variables"."Filler_Speed"."Latch") OR ("FirstScan" AND "Procedure_Variables"."Filler_Speed"."Done" AND "Procedure_Variables"."Filler_Speed"."Qualifier" AND "Procedure_Variables"."Filler_Speed"."Request"); + + // Network 9: Product Liters Calculation (Original Language: LAD) + + IF "Procedure_Variables"."Filler_Speed"."Latch" THEN + "Aux_calc1" := "Blender_Variables"."gProdTankVolume" - "Blender_Variables"."gProdTankBottomVol"; + "mNumOfCycle" := 0; + END_IF; + + IF "Procedure_Variables"."Filler_Speed"."Latch" THEN + "Aux_calc1" := "Aux_calc1" / 100.0; + END_IF; + + IF "Procedure_Variables"."Filler_Speed"."Latch" THEN + "Aux_calc2" := "mInitialLevel" - "HMI_Instrument"."LTM302"."PVFiltered"; + END_IF; + + IF "Procedure_Variables"."Filler_Speed"."Latch" THEN + "mProdLt" := "Aux_calc1" * "Aux_calc2"; + END_IF; + + // Network 10: Reset Product Liters (Original Language: LAD) + + IF "Procedure_Variables"."First_Production"."Done" THEN + "mProdLt" := 0.0; + END_IF; + + // Network 11: Acquisition Time not Zero (Original Language: LAD) + + "mNotZero" := Ne("mAcqTime", 0.0); + + // Network 12: Filler DeltaV Filter (Original Language: STL) + // Aggiungere il LowPassFilter!! + + // --- BEGIN STL Network 12 --- + + A "mNotZero" + A "Procedure_Variables".Filler_Speed.Latch + = "__PlcmigTempFillBits_22B0"[0] + A "AUX TRUE" + = "__PlcmigTempFillBits_22B0"[1] + BLD 103 + A_BRACK + A_BRACK + A "__PlcmigTempFillBits_22B0"[0] + JNB _00b + L "mProdLt" + L "mAcqTime" + DIV_R + T "Aux_calc1" + AN _Statusword_? + SAVE + CLR + _00b: A _Statusword_? + BRACKET + JNB _00c + L "Aux_calc1" + L 60.0 + MUL_R + T "Aux_calc1" + AN _Statusword_? + SAVE + CLR + _00c: A _Statusword_? + BRACKET + JNB _00d + CALL "mFillerDeltaVFilter" + _00d: NOP_0 + A "__PlcmigTempFillBits_22B0"[0] + JNB _00e + L 0 + T "mAcqTime" + _00e: NOP_0 + + // --- END STL Network 12 --- + + // Network 13: Save (Original Language: LAD) + + IF "Procedure_Variables"."Filler_Speed"."Qualifier" THEN + "Aux_calc1" := "mSaveDeltaV" - "Blender_Variables"."gBlenderFillerDeltaV"; + END_IF; + + "mSave" := "Aux_calc1" < 20.0; + + // Network 14: Delta V (Original Language: LAD) + + "Blender_Variables"."gBlenderFillerDeltaV" := "mSaveDeltaV"; + + // Network 15: Actual Product Target With Slew Limitation (Original Language: LAD) + + "gBlenderSpeedUp" := "Blender_Variables"."gActual_Prod_SP" > "mPrevSpeed"; + + // Network 16: Actual Product Target With Slew Limitation (Original Language: LAD) + + "gBlenderSpeedDown" := "mPrevSpeed" < "Blender_Variables"."gActual_Prod_SP"; + + // Network 17: FillerTracked (Original Language: LAD) + + #TON_INSTANCE_29(IN := "HMI_Device"."PPM303"."Out" AND "HMI_Device"."AVM362"."Out" AND "DI_Flr1_PROD_ok", PT := T#20S); // TODO: Declarar #TON_INSTANCE_29 : TON; + + "gFlowToFiller" := #TON_INSTANCE_29.Q; + + // Network 18: Calculates blender target production Set Point TO track Filler. (Original Language: LAD) + // Calculates blender target production Set Point TO track Filler. + + "Aux_calc1" := "Blender_Variables"."gBlenderFillerDeltaV" / 4.0; + + "mTemp" := "Blender_Variables"."gActual_Prod_SP" + "Aux_calc1"; + + // Network 19: Blender Filler Production Rate difference - L/min - (Original Language: LAD) + + "Aux_calc1" := "Blender_Variables"."gSP_ProdTrackFiller" - "mTemp"; + + // Network 20: Product Tank Bottom Volume Below level Probe (Original Language: LAD) + + IF "gWorkshopTest" THEN + SpeedAdjust(i_IstLvl := "Blender_Constants"."gTM301TargetL_Ist", i_PrdTnkLvl := "HMI_Instrument"."LTM302"."PVFiltered", i_SpeedPerc := "Blender_Constants"."gTM301LvlPercRange", i_TrgTnkLvl := "Blender_Variables"."gProdTankTargetLvl"); + END_IF; + + IF "gWorkshopTest" THEN + "mSpeedPerc" := 1.0; + END_IF; + + "mDummy" := "gWorkshopTest"; + + // Network 21: Speed Perc (Original Language: LAD) + + IF "gWorkshopTest" AND "AUX TRUE" THEN + SpeedAdjust(i_IstLvl := "Blender_Constants"."gTM301TargetL_Ist", i_PrdTnkLvl := "HMI_Instrument"."LTM302"."PVFiltered", i_SpeedPerc := "Blender_Constants"."gTM301LvlPercRange", i_TrgTnkLvl := "Blender_Variables"."gProdTankTargetLvl"); + END_IF; + + IF "gWorkshopTest" AND "AUX TRUE" THEN + "mSpeedPerc" := 1.0; + END_IF; + + // Network 22: Estimated Filler Speed (Original Language: LAD) + + IF "mFillerTracked" THEN + "mFillerSpeedFilter"(i_Enable := "gBlenderBlending" AND "gBlenderStableFlow", i_Num := 10, i_Value := "mTemp"); + END_IF; + + // Network 23: Estimated Flow (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" THEN + "mFillerEstimatedFlow" := "Filler_Head_Variables"."Prod_FlowEstimatedSlw"; + END_IF; + + IF NOT "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" THEN + "mFillerEstimatedFlow" := "Blender_Variables"."gEstimateFillerSpeed"; + END_IF; + + // Network 24: Estimated Flow (Original Language: LAD) + + IF NOT "gTrackFillerSpeed" OR NOT "gEnRampDownToStop" THEN + "mFillerEstimatedFlow" := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_ProductionRate"; + END_IF; + + // Network 25: L / min (Original Language: LAD) + + "Blender_Variables"."gSP_ProdTrackFiller" := "mFillerEstimatedFlow" * "mSpeedPerc"; + + // Network 26: Analog Values (Original Language: LAD) + + "HMI_Variables_Status"."Analog_Values"."BlenderProd" := "Blender_Variables"."gActual_Prod_SP"; + + "HMI_Variables_Status"."Analog_Values"."EstFillerProd" := "Blender_Variables"."gEstimateFillerSpeed"; + + "mDummy" := TRUE; + + // Network 27: Speed Measuring Done (Original Language: LAD) + + "Procedure_Variables"."Filler_Speed"."Done" := "Procedure_Variables"."Filler_Speed"."Latch" AND "Procedure_Variables"."Filler_Speed"."Request"; + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderRun_MeasFil_Data.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderRun_MeasFil_Data.md new file mode 100644 index 0000000..3f8d37b --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderRun_MeasFil_Data.md @@ -0,0 +1,49 @@ +```pascal +// Block Type: InstanceDB +// Block Number: 974 + +DATA_BLOCK "BlenderRun_MeasFil_Data" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + mNumOfCycle : Int := 8; + mInitialLevel : Real := 0.1653909; + mPrevSpeed : Real := 0.0; + mAcqTime : Real := 2.1; + mProdLt : Real := 0.0; + mSaveDeltaV : Real := 0.0; + mFillerTracked : Bool := FALSE; + mFillerTrackedTmrON : Bool := FALSE; + mFlrFlowDelayOnON : Bool := FALSE; + mFlrFlowDelayOffON : Bool := FALSE; + mFillerTrackedTmr : STRUCT + PT : Time := T#0MS; + ET : Time := T#0MS; + IN : Bool := FALSE; + Q : Bool := FALSE; + END_STRUCT; + + mFlrFlowDelayOn : STRUCT + PT : Time; + ET : Time := T#0MS; + IN : Bool := FALSE; + Q : Bool := FALSE; + END_STRUCT; + + mFlrFlowDelayOff : STRUCT + PT : Time; + ET : Time := T#0MS; + IN : Bool := FALSE; + Q : Bool := FALSE; + END_STRUCT; + + mFillerDeltaVFilter : "LowPassFilter"; + mFillerSpeedFilter : "LowPassFilter"; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderRun_ProdTime.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderRun_ProdTime.md new file mode 100644 index 0000000..4ae5cf8 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderRun_ProdTime.md @@ -0,0 +1,115 @@ +```pascal +// Block Type: FC +// Block Number: 2040 +// Original Network Languages: LAD + +FUNCTION "BlenderRun_ProdTime" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + m1MinONS : Bool; + m1HourONS : Bool; + Buffer : Bool; + mRunMin : Bool; + mRunHr : Bool; + I_DIRunning_sec : DInt; + I_DIRunning_min : DInt; + MOD60 : DInt; +END_VAR + + #_60 : Bool; // Auto-generated temporary +BEGIN + + // Network 1: Seconds (Original Language: LAD) + + IF "Procedure_Variables"."Blender_Run"."Running" AND "CLK_1.0S" THEN + "Blender_Variables_Pers"."gSLIM_Sec" := "Blender_Variables_Pers"."gSLIM_Sec" + 1; + END_IF; + + // Network 2: Reset Hours (Original Language: LAD) + + IF "SLIM_Variables"."ResetHour" THEN + "Blender_Variables_Pers"."gSLIM_Sec" := 0; + END_IF; + + // Network 3: Seconds Counter (Original Language: LAD) + + IF "CLK_1.0S" AND "gBlenderBlending" THEN + "Blender_Variables_Pers"."gProdSec" := "Blender_Variables_Pers"."gProdSec" + 1; + END_IF; + + // Network 4: Minute (Original Language: LAD) + + "m1MinONS" := Eq("Blender_Variables_Pers"."gProdSec", 60); + + // Network 5: Minute Counter (Original Language: LAD) + + IF "m1MinONS" THEN + "Blender_Variables_Pers"."gProdSec" := 0; + "Blender_Variables_Pers"."gProdMin" := "Blender_Variables_Pers"."gProdMin" + 1; + END_IF; + + // Network 6: Hour (Original Language: LAD) + + "m1HourONS" := Eq("Blender_Variables_Pers"."gProdMin", 60); + + // Network 7: Hour Counter (Original Language: LAD) + + IF "m1HourONS" THEN + "Blender_Variables_Pers"."gProdMin" := 0; + "Blender_Variables_Pers"."gProdHour" := "Blender_Variables_Pers"."gProdHour" + 1; + "Blender_Variables_Pers"."gBlendingMaintHour" := "Blender_Variables_Pers"."gBlendingMaintHour" + 1; + END_IF; + + // Network 8: Counter reset (Original Language: LAD) + + IF "gBlenderCIPMode" OR "gBlenderRinseMode" THEN + "Blender_Variables_Pers"."gProdSec" := 0; + "Blender_Variables_Pers"."gProdMin" := 0; + "Blender_Variables_Pers"."gProdHour" := 0; + END_IF; + + // Network 9: Running Seconds (Original Language: LAD) + + IF "Procedure_Variables"."Blender_Run"."Running" AND "CLK_1.0S" THEN + "Blender_Variables_Pers"."gRunningSeconds" := "Blender_Variables_Pers"."gRunningSeconds" + 1; + END_IF; + + // Network 10: Running Minutes (Original Language: LAD) + + "I_DIRunning_sec" := "Blender_Variables_Pers"."gRunningSeconds"; + + "MOD60" := "I_DIRunning_sec" MOD DINT#60; + + IF "Procedure_Variables"."Blender_Run"."Running" AND "CLK_1.0S" AND Eq("MOD60", DINT) THEN + "Blender_Variables_Pers"."gRunningMinutes" := "Blender_Variables_Pers"."gRunningMinutes" + 1; + END_IF; + + // Edge Logic handled by Coil 42 + "M19012" := Eq("MOD60", DINT); // P_TRIG(Eq("MOD60", DINT)) - Mem: "M19012" + + "mRunMin" := NOT "M19012" AND Eq("MOD60", DINT); + "M19012" := Eq("MOD60", DINT); // P_TRIG(Eq("MOD60", DINT)) - Mem: "M19012" + + // Network 11: Running Hours for Maintenance (Original Language: LAD) + + IF "mRunMin" THEN + "I_DIRunning_min" := "Blender_Variables_Pers"."gRunningMinutes"; + END_IF; + + IF "mRunMin" THEN + "MOD60" := "I_DIRunning_min" MOD DINT#60; + END_IF; + + IF Eq("MOD60", DINT) THEN + "Blender_Variables_Pers"."gRunningMaintHour" := "Blender_Variables_Pers"."gRunningMaintHour" + 1; + END_IF; + + // Network 12: Running Hours for Maintenance (Original Language: LAD) + + "HMI_Variables_Status"."System"."BlendingMaintHour" := "Blender_Variables_Pers"."gRunningMaintHour"; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderRun_SelectConstan.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderRun_SelectConstan.md new file mode 100644 index 0000000..c070d36 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderRun_SelectConstan.md @@ -0,0 +1,212 @@ +```pascal +FUNCTION "BlenderRun_SelectConstan" : Void +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : TASK2 +NAME : 'Name' +VERSION : 1.0 + +BEGIN + + + CASE "HMI_Blender_Parameters".Processor_Options.Blender_OPT._ModelNum OF + + 0: "Blender_Variables".gWaterVFM_DN := 25 ; + "Blender_Variables".gSyrupMFM_DN := 15 ; + "Blender_Variables".gWaterPipe_DN := 32 ; + (* classic code: "Blender_Variables".gSyrupMFMZeroStab := 0.325 ;*) + "Blender_Variables".gSyrupMFMZeroStab := REAL#0.325 ; + "Blender_Variables".gProdTankVolume := 550 ; + (* classic code: "Blender_Variables".gBlenderNomSpeed := 116.7 * "Blender_Constants".gBlenderNominalSpeedAdj ;*) + "Blender_Variables".gBlenderNomSpeed := REAL#116.7 * "Blender_Constants".gBlenderNominalSpeedAdj ; + "Blender_Variables".gProdTankBottomVol := 105 ; + (* classic code: "Blender_Variables".gFlowTronic := 1000.0 ;*) + "Blender_Variables".gFlowTronic := REAL#1000.0 ; + + 1: "Blender_Variables".gWaterVFM_DN := 25 ; + "Blender_Variables".gSyrupMFM_DN := 15 ; + "Blender_Variables".gWaterPipe_DN := 38 ; + (* classic code: "Blender_Variables".gSyrupMFMZeroStab := 0.325 ;*) + "Blender_Variables".gSyrupMFMZeroStab := REAL#0.325 ; + "Blender_Variables".gProdTankVolume := 550 ; + (* classic code: "Blender_Variables".gBlenderNomSpeed := 116.7 * "Blender_Constants".gBlenderNominalSpeedAdj ;*) + "Blender_Variables".gBlenderNomSpeed := REAL#116.7 * "Blender_Constants".gBlenderNominalSpeedAdj ; + "Blender_Variables".gProdTankBottomVol := 105 ; + (* classic code: "Blender_Variables".gFlowTronic := 1000.0 ;*) + "Blender_Variables".gFlowTronic := REAL#1000.0 ; + + 2: "Blender_Variables".gWaterVFM_DN := 25 ; // NOT Exists + "Blender_Variables".gSyrupMFM_DN := 15 ; + "Blender_Variables".gWaterPipe_DN := 50 ; + (* classic code: "Blender_Variables".gSyrupMFMZeroStab := 0.325 ;*) + "Blender_Variables".gSyrupMFMZeroStab := REAL#0.325 ; + "Blender_Variables".gProdTankVolume := 550 ; + (* classic code: "Blender_Variables".gBlenderNomSpeed := 150.0 * "Blender_Constants".gBlenderNominalSpeedAdj ;*) + "Blender_Variables".gBlenderNomSpeed := REAL#150.0 * "Blender_Constants".gBlenderNominalSpeedAdj ; + "Blender_Variables".gProdTankBottomVol := 105 ; + (* classic code: "Blender_Variables".gFlowTronic := 1000.0 ;*) + "Blender_Variables".gFlowTronic := REAL#1000.0 ; + + 3: "Blender_Variables".gWaterVFM_DN := 25 ; + "Blender_Variables".gSyrupMFM_DN := 15 ; + "Blender_Variables".gWaterPipe_DN := 50 ; + (* classic code: "Blender_Variables".gSyrupMFMZeroStab := 0.325 ;*) + "Blender_Variables".gSyrupMFMZeroStab := REAL#0.325 ; + "Blender_Variables".gProdTankVolume := 550 ; + "Blender_Variables".gDeairTankVolume := 550 ; + (* classic code: "Blender_Variables".gBlenderNomSpeed := 200.0 * "Blender_Constants".gBlenderNominalSpeedAdj ;*) + "Blender_Variables".gBlenderNomSpeed := REAL#200.0 * "Blender_Constants".gBlenderNominalSpeedAdj ; + "Blender_Variables".gProdTankBottomVol := 105 ; + (* classic code: "Blender_Variables".gFlowTronic := 1000.0 ;*) + "Blender_Variables".gFlowTronic := REAL#1000.0 ; + + 4: "Blender_Variables".gWaterVFM_DN := 40 ; + "Blender_Variables".gSyrupMFM_DN := 25 ; + "Blender_Variables".gWaterPipe_DN := 65 ; + (* classic code: "Blender_Variables".gSyrupMFMZeroStab := 0.9 ;*) + "Blender_Variables".gSyrupMFMZeroStab := REAL#0.9 ; + "Blender_Variables".gProdTankVolume := 1150 ; + "Blender_Variables".gDeairTankVolume := 550 ; + (* classic code: "Blender_Variables".gBlenderNomSpeed := 283.0 * "Blender_Constants".gBlenderNominalSpeedAdj ;*) + "Blender_Variables".gBlenderNomSpeed := REAL#283.0 * "Blender_Constants".gBlenderNominalSpeedAdj ; + "Blender_Variables".gProdTankBottomVol := 105 ; + (* classic code: "Blender_Variables".gFlowTronic := 1000.0 ;*) + "Blender_Variables".gFlowTronic := REAL#1000.0 ; + "Blender_Variables".gBufferTankProbeHeight := "Blender_Constants".gBufferTankProbeHtD4_5_6 ; + + 5: "Blender_Variables".gWaterVFM_DN := 40 ; + "Blender_Variables".gSyrupMFM_DN := 25 ; + "Blender_Variables".gWaterPipe_DN := 65 ; + (* classic code: "Blender_Variables".gSyrupMFMZeroStab := 0.9 ;*) + "Blender_Variables".gSyrupMFMZeroStab := REAL#0.9 ; + "Blender_Variables".gProdTankVolume := 1150 ; + "Blender_Variables".gDeairTankVolume := 550 ; + (* classic code: "Blender_Variables".gBlenderNomSpeed := 350.0 * "Blender_Constants".gBlenderNominalSpeedAdj ;*) + "Blender_Variables".gBlenderNomSpeed := REAL#350.0 * "Blender_Constants".gBlenderNominalSpeedAdj ; + "Blender_Variables".gProdTankBottomVol := 105 ; + (* classic code: "Blender_Variables".gFlowTronic := 1000.0 ;*) + "Blender_Variables".gFlowTronic := REAL#1000.0 ; + "Blender_Variables".gBufferTankProbeHeight := "Blender_Constants".gBufferTankProbeHtD4_5_6 ; + + + 6: "Blender_Variables".gWaterVFM_DN := 40 ; + "Blender_Variables".gSyrupMFM_DN :=25 ; + "Blender_Variables".gWaterPipe_DN := 80 ; + (* classic code: "Blender_Variables".gSyrupMFMZeroStab := 0.9;*) + "Blender_Variables".gSyrupMFMZeroStab := REAL#0.9; + "Blender_Variables".gProdTankVolume := 1150 ; + "Blender_Variables".gDeairTankVolume := 1150 ; + (* classic code: "Blender_Variables".gBlenderNomSpeed := 450.0 * "Blender_Constants".gBlenderNominalSpeedAdj ;*) + "Blender_Variables".gBlenderNomSpeed := REAL#450.0 * "Blender_Constants".gBlenderNominalSpeedAdj ; + "Blender_Variables".gProdTankBottomVol := 105 ; + (* classic code: "Blender_Variables".gFlowTronic := 1000.0 ;*) + "Blender_Variables".gFlowTronic := REAL#1000.0 ; + "Blender_Variables".gBufferTankProbeHeight := "Blender_Constants".gBufferTankProbeHtD4_5_6 ; + + 7: "Blender_Variables".gWaterVFM_DN := 50 ; + "Blender_Variables".gSyrupMFM_DN := 40 ; + "Blender_Variables".gWaterPipe_DN := 80 ; + (* classic code: "Blender_Variables".gSyrupMFMZeroStab := 2.25 ;*) + "Blender_Variables".gSyrupMFMZeroStab := REAL#2.25 ; + "Blender_Variables".gProdTankVolume := 2170 ; + "Blender_Variables".gDeairTankVolume := 1150 ; + (* classic code: "Blender_Variables".gBlenderNomSpeed := 567.0 * "Blender_Constants".gBlenderNominalSpeedAdj ;*) + "Blender_Variables".gBlenderNomSpeed := REAL#600.0 * "Blender_Constants".gBlenderNominalSpeedAdj ; + "Blender_Variables".gProdTankBottomVol := 105 ; + (* classic code: "Blender_Variables".gFlowTronic := 1000.0 ;*) + "Blender_Variables".gFlowTronic := REAL#1000.0 ; + "Blender_Variables".gBufferTankProbeHeight := "Blender_Constants".gBufferTankProbeHtD7_8_9 ; + + 8: "Blender_Variables".gWaterVFM_DN := 50 ; + "Blender_Variables".gSyrupMFM_DN := 40 ; + "Blender_Variables".gWaterPipe_DN := 105 ; + (* classic code: "Blender_Variables".gSyrupMFMZeroStab := 2.25 ;*) + "Blender_Variables".gSyrupMFMZeroStab := REAL#2.25 ; + "Blender_Variables".gProdTankVolume := 2170 ; + "Blender_Variables".gDeairTankVolume := 1150 ; + (* classic code: "Blender_Variables".gBlenderNomSpeed := 700.0 * "Blender_Constants".gBlenderNominalSpeedAdj ;*) + "Blender_Variables".gBlenderNomSpeed := REAL#700.0 * "Blender_Constants".gBlenderNominalSpeedAdj ; + "Blender_Variables".gProdTankBottomVol := 100 ; + (* classic code: "Blender_Variables".gFlowTronic := 1000.0 ;*) + "Blender_Variables".gFlowTronic := REAL#1000.0 ; + "Blender_Variables".gBufferTankProbeHeight := "Blender_Constants".gBufferTankProbeHtD7_8_9 ; + + 9: "Blender_Variables".gWaterVFM_DN := 50 ; + "Blender_Variables".gSyrupMFM_DN := 40 ; + "Blender_Variables".gWaterPipe_DN := 100 ; + (* classic code: "Blender_Variables".gSyrupMFMZeroStab := 2.25 ;*) + "Blender_Variables".gSyrupMFMZeroStab := REAL#2.25 ; + "Blender_Variables".gProdTankVolume := 2170 ; + "Blender_Variables".gDeairTankVolume := 1150 ; + (* classic code: "Blender_Variables".gBlenderNomSpeed := 900.0 * "Blender_Constants".gBlenderNominalSpeedAdj ;*) + "Blender_Variables".gBlenderNomSpeed := REAL#900.0 * "Blender_Constants".gBlenderNominalSpeedAdj ; + "Blender_Variables".gProdTankBottomVol := 105 ; + (* classic code: "Blender_Variables".gFlowTronic := 1000.0 ;*) + "Blender_Variables".gFlowTronic := REAL#1000.0 ; + "Blender_Variables".gBufferTankProbeHeight := "Blender_Constants".gBufferTankProbeHtD7_8_9 ; + + 10: "Blender_Variables".gWaterVFM_DN := 65 ; + "Blender_Variables".gSyrupMFM_DN := 50 ; + "Blender_Variables".gWaterPipe_DN := 100 ; + (* classic code: "Blender_Variables".gSyrupMFMZeroStab := 2.25 ;*) + "Blender_Variables".gSyrupMFMZeroStab := REAL#2.25 ; + "Blender_Variables".gProdTankVolume := 2170 ; + "Blender_Variables".gDeairTankVolume := 1150 ; + (* classic code: "Blender_Variables".gBlenderNomSpeed := 1100.0 * "Blender_Constants".gBlenderNominalSpeedAdj ;*) + "Blender_Variables".gBlenderNomSpeed := REAL#1100.0 * "Blender_Constants".gBlenderNominalSpeedAdj ; + "Blender_Variables".gProdTankBottomVol := 105 ; + (* classic code: "Blender_Variables".gFlowTronic := 1000.0 ;*) + "Blender_Variables".gFlowTronic := REAL#666.66 ; + + ELSE: + ; + END_CASE; + + (* classic code: "HMI_Variables_Status".Analog_Values.BlenderSlowProd := "Blender_Variables".gBlenderNomSpeed * 0.5;*) + "HMI_Variables_Status".Analog_Values.BlenderSlowProd := "Blender_Variables".gBlenderNomSpeed * REAL#0.5; + IF "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProductionRate >= "HMI_Variables_Status".Analog_Values.BlenderSlowProd THEN + "Blender_Variables".gMinProduction := "Blender_Variables".gBlenderNomSpeed * "HMI_Blender_Parameters".ProcessSetup._MinSpeedNominalProd; + ELSE + "Blender_Variables".gMinProduction := "Blender_Variables".gBlenderNomSpeed * "HMI_Blender_Parameters".ProcessSetup._MinSpeedSlowProd; + END_IF; + + "Blender_Variables".gCarboCO2MFM_DN := 15 ; + "Blender_Variables".gWaterVFM_Area := "Blender_Constants".gP_Greek * "Blender_Variables".gWaterVFM_DN / 2 / 100 * "Blender_Variables".gWaterVFM_DN / 2 / 100 ; + "Blender_Variables".gWaterPipe_Area := "Blender_Constants".gP_Greek * "Blender_Variables".gWaterPipe_DN / 2 / 100 * "Blender_Variables".gWaterPipe_DN / 2 / 100 ; + + (* classic code: "Blender_Variables".gWaterVFMMeasError := 0.2 ;*) + "Blender_Variables".gWaterVFMMeasError := REAL#0.2 ; + (* classic code: "Blender_Variables".gWaterVFMRepeatibility := 0.1 ;*) + "Blender_Variables".gWaterVFMRepeatibility := REAL#0.1 ; + (* classic code: "Blender_Variables".gSyrupMFMMeasError := 0.1 ;*) + "Blender_Variables".gSyrupMFMMeasError := REAL#0.1 ; + (* classic code: "Blender_Variables".gSyrupMFMRepeatibility := 0.05 ;*) + "Blender_Variables".gSyrupMFMRepeatibility := REAL#0.05 ; + (* classic code: "Blender_Variables".gCO2MFMMeasError := 0.5 ;*) + "Blender_Variables".gCO2MFMMeasError := REAL#0.5 ; + (* classic code: "Blender_Variables".gCO2MFMRepeatibility := 0.25 ;*) + "Blender_Variables".gCO2MFMRepeatibility := REAL#0.25 ; + (* classic code: "Blender_Variables".gCO2MFMZeroStab := 0.325 ;*) + "Blender_Variables".gCO2MFMZeroStab := REAL#0.325 ; + + "Blender_Variables".gFirstProdExtraBrix := "HMI_Blender_Parameters".ProcessSetup._FirstProdExtraBrix ; + "Blender_Variables".gFirstProdDietExtraSyr := "HMI_Blender_Parameters".ProcessSetup._FirstProdDietExtraSyr ; + "Blender_Variables".gFirstProdExtraCO2Fact := "HMI_Blender_Parameters".Actual_Recipe_Parameters._FirstProdExtraCO2Fact ; + + "System_RunOut_Variables".TM301_Drain.Time_Preset.Step0 := DINT_TO_INT(WORD_TO_DINT("HMI_Blender_Parameters".ProcessSetup._TM301DrainSt0Time)); + "System_RunOut_Variables".TM301_Drain.Time_Preset.Step1 := DINT_TO_INT(WORD_TO_DINT("HMI_Blender_Parameters".ProcessSetup._TM301DrainSt1Time)); + "System_RunOut_Variables".TM301_Drain.Time_Preset.Step2 := DINT_TO_INT(WORD_TO_DINT("HMI_Blender_Parameters".ProcessSetup._TM301DrainSt2Time)); + "System_RunOut_Variables".TM301_Drain.Time_Preset.Step3 := DINT_TO_INT(WORD_TO_DINT("HMI_Blender_Parameters".ProcessSetup._TM301DrainSt3Time)); + "System_RunOut_Variables".Prod_Pipe_RunOut.Time_Preset.Step0 := DINT_TO_INT(WORD_TO_DINT("HMI_Blender_Parameters".ProcessSetup._ProdPipeRunOutSt0Time)); + + "System_RunOut_Variables".RMM301_OV_ProdPipeRunOut := "HMI_Blender_Parameters".ProcessSetup._RMM301ProdPipeRunOu ; + "System_RunOut_Variables".RMP302_OV_ProdPipeRunOut := "HMI_Blender_Parameters".ProcessSetup._RMP302ProdPipeRunOu; + + "System_RunOut_Variables".ProdPipeRunOutProdAmount := "HMI_Blender_Parameters".ProcessSetup._ProdPipeRunOutAmount ; + "System_RunOut_Variables".TM301RunOutChillerAm := "HMI_Blender_Parameters".ProcessSetup._TM301RunOutChiller; + + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderRun_Stopping.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderRun_Stopping.md new file mode 100644 index 0000000..86e87e3 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderRun_Stopping.md @@ -0,0 +1,48 @@ +```pascal +// Block Type: FC +// Block Number: 2041 +// Original Network Languages: LAD + +FUNCTION "BlenderRun_Stopping" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +BEGIN + + // Network 1: Request (Original Language: LAD) + + "Procedure_Variables"."Blender_Stop"."Request" := "gIN_StopBtn" OR "gBlenderAlarm"; + + // Network 2: Latch (Original Language: LAD) + + "Procedure_Variables"."Blender_Stop"."Latch" := ("Procedure_Variables"."Blender_Stop"."Request" AND "Procedure_Variables"."Blender_Run"."Latch" AND "Procedure_Variables"."Blender_Stop"."Done" AND "gBlenderSuppliesOk") OR ("Procedure_Variables"."Blender_Stop"."Latch" AND "Procedure_Variables"."Blender_Run"."Latch" AND "Procedure_Variables"."Blender_Stop"."Done" AND "gBlenderSuppliesOk"); + + // Network 3: OperatorStop (Original Language: LAD) + + // Network 3 did not produce printable SCL code. + + // Network 4: Stop Done Reset (Original Language: LAD) + + IF "Procedure_Variables"."Blender_Stop"."Done" THEN + "Procedure_Variables"."Blender_Stop"."Done" := FALSE; + END_IF; + + // Network 5: Stop (Original Language: LAD) + + "gEnRampDownToStop" := ("Blender_Variables_Pers"."gWaterRecipe" AND "HMI_PID"."RMM303"."ManualControl"."ManOut" AND "HMI_PID"."RMM301"."ManualControl"."ManOut") OR ("Blender_Variables_Pers"."gWaterRecipe" AND "Blender_Variables_Pers"."gCarboStillProduct" AND "HMI_PID"."RMM301"."ManualControl"."ManOut") OR ("HMI_PID"."RMM303"."ManualControl"."ManOut" AND "HMI_PID"."RMM301"."ManualControl"."ManOut" AND "HMI_PID"."RMP302"."ManualControl"."ManOut") OR ("Blender_Variables_Pers"."gCarboStillProduct" AND "HMI_PID"."RMM301"."ManualControl"."ManOut" AND "HMI_PID"."RMP302"."ManualControl"."ManOut"); + + // Network 6: Stop Done (Original Language: LAD) + + IF "gBlenderStopping" AND "gEnRampDownToStop" AND "gFTN301_SpeedToStop" THEN + "Procedure_Variables"."Blender_Stop"."Done" := TRUE; + END_IF; + + // Network 7: Stop Done (Original Language: LAD) + + IF "gBlenderStopping" AND "gEnRampDownToStop" THEN + "Procedure_Variables"."Blender_Stop"."Done" := TRUE; + END_IF; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderRun__Control.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderRun__Control.md new file mode 100644 index 0000000..4f1f824 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BlenderRun__Control.md @@ -0,0 +1,247 @@ +```pascal +// Block Type: FC +// Block Number: 2015 +// Original Network Languages: LAD, STL + +FUNCTION "BlenderRun__Control" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + Buffer : Bool; + mInitBlendError : Bool; + gRunningMaintHour : DInt; + MOD_DI_OUT_Seg31 : DInt; + gCheckOilModValves : DInt; + gCheckOilWaterPumpMotor : DInt; + MOD_DI_OUT_Seg33 : DInt; + mRealEnRecPHE01 : Real; + mRealEnRecPHE02 : Real; + __PlcmigTempFillBits_30B0 : Array[0..7] of Bool; +END_VAR + + #_2S : Bool; // Auto-generated temporary + #_2m : Bool; // Auto-generated temporary + #_3S : Bool; // Auto-generated temporary + #_4M : Bool; // Auto-generated temporary + #_5M : Bool; // Auto-generated temporary + #_5m : Bool; // Auto-generated temporary +BEGIN + + // Network 1: Buffer (Original Language: LAD) + + BlenderRun_SelectConstan(); + + BlenderRun_ProdTime(); + + "Buffer" := TRUE; + + // Network 2: Qualifier (Original Language: LAD) + + "Procedure_Variables"."Blender_Run"."Qualifier" := ("gBlenderProdMode" AND "gProductionONS" AND "gHighPriorityAlarm" AND "Procedure_Variables"."Blender_Rinse"."ONS_Done") OR ("gBlenderProdMode" AND "gProductionONS" AND "gHighPriorityAlarm" AND "System_RunOut_Variables"."FastChangeOverActivated") OR ("gBlenderCIPMode" AND "gCIPONS" AND "gHighPriorityAlarm" AND "Procedure_Variables"."Blender_Rinse"."ONS_Done") OR ("gBlenderCIPMode" AND "gCIPONS" AND "gHighPriorityAlarm" AND "System_RunOut_Variables"."FastChangeOverActivated"); + + // Network 3: Blender Run Stopping (Original Language: LAD) + + BlenderRun_Stopping(); + + // Network 4: Reset (Original Language: LAD) + + "Procedure_Variables"."Blender_Run"."Reset" := ("gBlenderProdMode" AND "Procedure_Variables"."TM301_RunOut"."Done" AND "HMI_Variables_Status"."System_Run_Out"."SystemRunOutEnabled" AND "System_RunOut_Variables"."System_RunOut"."Reset" AND "gBlenderRinseMode") OR ("gBlenderProdMode" AND "Procedure_Variables"."TM301_RunOut"."Done" AND "HMI_Variables_Status"."System_Run_Out"."SystemRunOutEnabled" AND "gBlenderRinseMode" AND "System_RunOut_Variables"."FastChangeOverActivated") OR ("gBlenderProdMode" AND "HMI_Variables_Status"."System_Run_Out"."SystemRunOutEnabled" AND "System_RunOut_Variables"."System_RunOut"."Reset" AND "gBlenderRinseMode" AND "Procedure_Variables"."TM301_RunOut"."Latch") OR ("gBlenderProdMode" AND "HMI_Variables_Status"."System_Run_Out"."SystemRunOutEnabled" AND "gBlenderRinseMode" AND "System_RunOut_Variables"."FastChangeOverActivated" AND "Procedure_Variables"."TM301_RunOut"."Latch"); + + // Network 5: Request (Original Language: LAD) + + // PBox SymPy processed, logic in consumer + "M19007" := "gIN_StartBtn" AND "mEnableStartTmr"; // P_TRIG("gIN_StartBtn" AND "mEnableStartTmr") - Mem: "M19007" + + "Procedure_Variables"."Blender_Run"."Request" := "gIN_StartBtn" AND "mEnableStartTmr" AND "Procedure_Variables"."Blender_Run"."Qualifier" AND NOT "M19007"; + + // Network 6: Running (Original Language: LAD) + + "Procedure_Variables"."Blender_Run"."Latch" := ("Procedure_Variables"."Blender_Run"."Qualifier" AND "Procedure_Variables"."Blender_Run"."Request" AND "FirstScan" AND "Procedure_Variables"."Blender_Run"."Reset" AND "Procedure_Variables"."Blender_Run"."Done") OR ("Procedure_Variables"."Blender_Run"."Qualifier" AND "DI_PB_Machine_Start" AND "FirstScan" AND "Procedure_Variables"."Blender_Run"."Reset" AND "Procedure_Variables"."Blender_Run"."Done"); + + "HMI_Variables_Status"."System"."Blender_Running" := ("Procedure_Variables"."Blender_Run"."Qualifier" AND "Procedure_Variables"."Blender_Run"."Request" AND "FirstScan" AND "Procedure_Variables"."Blender_Run"."Reset" AND "Procedure_Variables"."Blender_Run"."Done") OR ("Procedure_Variables"."Blender_Run"."Qualifier" AND "DI_PB_Machine_Start" AND "FirstScan" AND "Procedure_Variables"."Blender_Run"."Reset" AND "Procedure_Variables"."Blender_Run"."Done"); + + // Network 7: EnableStart (Original Language: LAD) + + // Network 7 did not produce printable SCL code. + + // Network 8: Blender Stopping (Original Language: LAD) + + // Network 8 did not produce printable SCL code. + + // Network 9: Wait (Original Language: LAD) + + "Procedure_Variables"."Blender_Run"."Wait" := ("gBlenderProdMode" AND "Blender_Variables_Pers"."gWaterRecipe" AND "Procedure_Variables"."FTP302Line_Preparation"."Done" AND "gBlenderRinseMode") OR ("gBlenderProdMode" AND "Procedure_Variables"."First_Production"."Latch" AND "gPTM304_OkToRun" AND "gEqPressSelected" AND "gBlenderRinseMode") OR ("gBlenderProdMode" AND "Procedure_Variables"."First_Production"."Latch" AND "gEqPressOk" AND "gEqPressSelected" AND "gBlenderRinseMode"); + + // Network 10: Running (Original Language: LAD) + + "Procedure_Variables"."Blender_Run"."Running" := "Procedure_Variables"."Blender_Run"."Latch" AND "Procedure_Variables"."Blender_Run"."Wait"; + + // Network 11: Pumps Start (Original Language: LAD) + + "gBlenderStartPumps" := "Procedure_Variables"."Blender_Run"."Running"; + + // Network 12: Pumps Start ONS (Original Language: LAD) + + // Edge Logic handled by Coil 26 + "M19010" := "gBlenderStartPumps"; // P_TRIG("gBlenderStartPumps") - Mem: "M19010" + + "gBlenderStartPumpsONS" := "gBlenderStartPumps" AND NOT "M19010"; + "M19010" := "gBlenderStartPumps"; // P_TRIG("gBlenderStartPumps") - Mem: "M19010" + + // Network 13: Blend Error Reset (Original Language: LAD) + + IF "Procedure_Variables"."First_Production"."Latch" AND "gBlenderStartPumpsONS" AND "gProductChillerEn" THEN + "HMI_Variables_Status"."Analog_Values"."BlendError" := 0.0; + END_IF; + + // Network 14: Carbo Co2 Error Reset (Original Language: LAD) + + IF "Procedure_Variables"."First_Production"."Latch" AND "gBlenderStartPumpsONS" AND "gProductChillerEn" AND "AUX FALSE" THEN + "Blender_Variables"."gCarboCO2Error" := 0.0; + END_IF; + + // Network 15: Blend Error (Original Language: LAD) + + "mInitBlendError" := "gBlenderBlending" AND "gHighPriorityAlarm"; + + // Network 16: Blend Error (Original Language: LAD) + + IF "mInitBlendError" AND "gStopBlendCarboError" THEN + "Blender_Variables"."gBlendError" := "Blender_Variables"."gBlendError" + "Blender_Constants"."gBlendErrorAfterAlarm"; + END_IF; + + // Network 17: Reset Started (Original Language: LAD) + + IF "gBlenderCIPMode" OR "gBlenderRinseMode" THEN + "Blender_Variables_Pers"."gBlenderStarted" := FALSE; + END_IF; + + // Network 18: Started (Original Language: LAD) + + IF "gBlenderProdMode" AND "gBlenderCIPMode" AND "gBlenderRinseMode" AND "Blender_Variables_Pers"."gFirstProdLatched" THEN + "Blender_Variables_Pers"."gBlenderStarted" := TRUE; + END_IF; + + // Network 19: DelayBlendEn (Original Language: LAD) + // Water Pump Rise Pressure TIME = 2.6 sec + + "mDelayBlendEn"(IN := "gBlenderProdMode" AND "gBlenderRinseMode" AND "gBlenderStartPumps", PT := S5T#3S); // TODO: Declarar "mDelayBlendEn" : TON; + + "gBlenderBlending" := "mDelayBlendEn".Q; + + // Network 20: Stable Flow (Original Language: LAD) + + "mWaitStableFlow"(IN := "gBlenderBlending", PT := S5T#2S); // TODO: Declarar "mWaitStableFlow" : TON; + + "gBlenderStableFlow" := "mWaitStableFlow".Q; + + // Network 21: Flow Filter Enable (Original Language: LAD) + // gBlenderFlowFltEn: Enables the Product Flow Filter, in order TO disable the + // filter itself during product ramp-up AND down + + "gBlenderFlowFltEn" := "gBlenderStableFlow" OR ("Procedure_Variables"."Blender_Stop"."Latch" AND "gBlenderStopping" AND "gBlenderFlowFltEn"); + + // Network 22: EnToRamp (Original Language: LAD) + + "mEnToRamp"(IN := "gBlenderStableFlow", PT := S5T#3S); // TODO: Declarar "mEnToRamp" : TON; + + "gBlenderEnToRamp" := "mEnToRamp".Q; + + // Network 23: EnCooler (Original Language: LAD) + + "mEnCooler"(IN := "gBlenderProdMode" AND "gBlenderStartPumps", PT := S5T#2m); // TODO: Declarar "mEnCooler" : TON; + + "PID_Variables"."PID_RVM319_H2O_EnInt" := "mEnCooler".Q; + + "PID_Variables"."PID_RVM319_PRD_EnInt" := "mEnCooler".Q; + + // Network 24: DlyOffRecirc (Original Language: LAD) + + // Network 24 did not produce printable SCL code. + + // Network 25: EnRecircPHE (Original Language: LAD) + + "m_StartRecircPHE"(IN := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CoolerControl" >= 2, PT := S5T#5M); // TODO: Declarar "m_StartRecircPHE" : TON; + + IF "m_StartRecircPHE".Q THEN + "gEnRecircPHE" := TRUE; + END_IF; + + // Network 26: EnRecircPHE01 (Original Language: STL) + + // --- BEGIN STL Network 26 --- + + L "HMI_PID".RVM319_PRD.KP + L 0.0 + NE_R + = "__PlcmigTempFillBits_30B0"[0] + A "__PlcmigTempFillBits_30B0"[0] + JNB _004 + L "HMI_PID".RVM319_PRD.KP + T "mRealEnRecPHE01" + _004: NOP_0 + A "__PlcmigTempFillBits_30B0"[0] + NEG + JNB _005 + L 1 + T "mRealEnRecPHE01" + _005: NOP_0 + + // --- END STL Network 26 --- + + // Network 27: EnRecircPHE02 (Original Language: LAD) + + "mRealEnRecPHE02" := "HMI_PID.RVM319.Error" / "mRealEnRecPHE01"; + + // Network 28: EnRecircPHE Reset (Original Language: LAD) + + "m_StopRecircPHE"(IN := "gEnRecircPHE", PT := S5T#5M); // TODO: Declarar "m_StopRecircPHE" : TON; + + "mTON_Reset_RecircPHE_Goo"(IN := "mRealEnRecPHE02" <= 1.0, PT := S5T#4M); // TODO: Declarar "mTON_Reset_RecircPHE_Goo" : TON; + + IF "HMI_Device"."AVM381"."Config" OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CoolerControl" <= 1) THEN + "gEnRecircPHE" := FALSE; + END_IF; + + // Network 29: EnStopFromFiller (Original Language: LAD) + + "mEnStopFromFillerTmr"(IN := "gBlenderBlending", PT := S5T#5m); // TODO: Declarar "mEnStopFromFillerTmr" : TON; + + // Network 30: DelayToRestart (Original Language: LAD) + + // Network 30 did not produce printable SCL code. + + // Network 31: Check Oil in Modulating Valve (Original Language: LAD) + // Check Oil in Modulating Valve Recirculating Balls Screw + + "gRunningMaintHour" := "Blender_Variables_Pers"."gRunningMaintHour"; + + "gCheckOilModValves" := "Blender_Constants"."gCheckOilModValves"; + + "MOD_DI_OUT_Seg31" := "gRunningMaintHour" MOD "gCheckOilModValves"; + + // Network 32: Check Oil in Modulating Valve (Original Language: LAD) + // Check Oil in Modulating Valve Recirculating Balls Screw + + "HMI_Alarms"."gH_Message" := Ne(0, "Blender_Variables_Pers"."gRunningMaintHour"); + + // Network 33: Check Oil in Water Pump Motor (Original Language: LAD) + // Check Oil in Water Pump Motor + + "gCheckOilWaterPumpMotor" := "Blender_Constants"."gCheckOilWaterPumpMotor"; + + "MOD_DI_OUT_Seg33" := "gRunningMaintHour" MOD "gCheckOilWaterPumpMotor"; + + // Network 34: Check Oil in Water Pump Motor (Original Language: LAD) + // Check Oil in Water Pump Motor + + "HMI_Alarms"."gH_Message" := Ne(0, "Blender_Variables_Pers"."gRunningMaintHour"); + + // Network 35: Done (Original Language: LAD) + + "Procedure_Variables"."Blender_Run"."Done" := ("Procedure_Variables"."Blender_Run"."Latch" AND "Procedure_Variables"."Blender_Stop"."Done" AND "Procedure_Variables"."Blender_Stop"."Latch") OR ("Procedure_Variables"."Blender_Run"."Latch" AND "Procedure_Variables"."Blender_Stop"."Request" AND "Procedure_Variables"."Blender_Stop"."Done" AND "gBlenderStopping") OR ("Procedure_Variables"."Blender_Run"."Latch" AND "Procedure_Variables"."Blender_Stop"."Request" AND "Procedure_Variables"."Blender_Stop"."Latch" AND "gBlenderCIPMode") OR ("Procedure_Variables"."Blender_Run"."Latch" AND "Procedure_Variables"."Blender_Stop"."Request" AND "gBlenderCIPMode" AND "gBlenderStopping"); + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Blender_Constants.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Blender_Constants.md new file mode 100644 index 0000000..9835766 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Blender_Constants.md @@ -0,0 +1,102 @@ +```pascal +// Block Type: GlobalDB +// Block Number: 972 + +DATA_BLOCK "Blender_Constants" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + gP_Greek : Real := 3.141593; + gH2O_Density : Real := 1.0; + gCO2_Density : Real := 1.98; + gRMM303ValveCv : Real := 0.022; + gDens_Sucrose_1 : Real := 1.6055; + gDens_Sucrose : Real := 1.589; + gDens_Fructose : Real := 1.6055; + gCpSyrup : Real := 0.2145; + gCpH2O : Real := 1.0; + gAnalogMaxValue : Int := 27648; + gAnalogMaxValue_VFC : Int := 16384; + gZeroAbsolute : Real := 273.15; + gBlenderNominalSpeedAdj : Real := 1.05; + gFirstProdRinseTempSP : Real := 5.0; + gFirstProdSpeedGain : Real := 1.0; + gGoodSyrupDensThrsd : Real := 0.9999; + gGoodSyrupDensOffset : Real := 0.0014; + gSugaredSyrupBrixThrsd : Real := 20.548; + gBlendErrorAfterAlarm : Real := 0.0; + gRinseDrainOpPressValve : Real := 20.0; + gProdAmountInSerpentine : Real := 30.0; + gCIP_SP_DeltaT : Real := 5.0; + gCIP_CO2_DeareationValue : Real := 0.0; + gCIP_CO2_InjectionValue : Real := 15.0; + gPressCO2StartUpValue : Real := 0.25; + gMinProdAvailAmount : Real := 200.0; + gMaxProdAvailAmount : Real := 800.0; + gWaterLineTime : Int := 4; + gTP301PrepStep1Time : Int := 4; + gTP301PrepStep2Time : Int := 6; + gBlendFillStartUp_Step1 : Int := 16; + gBlendFillStartUp_Step2 : Int := 6; + gBlendFillStartUp_Step3 : Int := 2; + gBlendFillStartUp_Step4 : Int := 10; + gBlendFillStartUp_Step5 : Int := 10; + gBlendFillStartUp_Step6 : Int := 10; + gFoamCipEnable : Bool := FALSE; + gAir_Density : Real := 1.295; + gN2_Density : Real := 1.252; + Delta_Press_CO2_Test : Real := 2.0; + gSpare07 : Int := 0; + gSpare08 : Int := 0; + gTN301Pressure : Real := 0.05; + gTN301Efficiency : Real := 0.7; + gTN301VacuumPress : Real := -0.7; + gRVN304_Min : Real := 5.5; + gTN301VacuumIst : Real := 0.3; + gTM301PressIst : Real := 0.1; + gStopLvl_OnlyBlend : Real := 80.0; + gTargetLvl_OnlyBlend : Real := 60.0; + gStopLvl_BlendFill : Real := 60.0; + gTargetLvl_BlendFill : Real := 40.0; + gStartLvl_NormalSpeed : Real := 20.0; + gStartLvl_VeryLowSpeed : Real := 30.0; + gTM301PressWaitLvl : Real := 10.0; + gStartMeasFillerSpeedLvl : Real := 4.0; + gTM301TargetL_Ist : Real := 20.0; + gTM301LvlPercRange : Real := 18.0; + gTM301MinLvl : Real := 5.0; + gTP301ProdLvl : Real := 60.0; + gTP301FirstProdLvl : Real := 25.0; + gTP301CIPLvl : Real := 5.0; + gRVP303_Load : Real := 50.0; + gTP301_LvlSlewRate : Real := 2.0; + gTP301_FirstProdRate : Real := 40.0; + gFTN301_MinVel : Real := 0.8; + gWater_MinVel : Real := 1.4; + gModValveFullStrokeTime : Real := 12.0; + gProductionSlewRate : Real := 8.0; + gFillerSpeedTrackSlew : Real := 12.0; + gBrixTrackingMinCorr : Real := 0.01; + gBrixTrackingMaxCorr : Real := 0.2; + gTestSyrBrix : Real := 54.85; + gCheckOilModValves : Int := 2000; + gCheckOilWaterPumpMotor : Int := 2880; + gCO2TrackingMinCorr : Real := 0.01; + gCO2TrackingMaxCorr : Real := 0.2; + gBufferTankProbeHtD4_5_6 : Real := 1850.0; + gBufferTankProbeHtD7_8_9 : Real := 2000.0; + gSyrupSPRecFact : Real := 1.5; + gCO2SPRecFact : Real := 1.5; + gTN301ProdLvl : Real := 35.0; + gTN301_LvlSlewRate : Real := 2.0; + gBalaiageFlowIts : Real := 0.2; + gTM301_LvlSlewRate : Real := 2.0; + gTP301_RinseRate : Real := 40.0; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Blender_Procedure_Data.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Blender_Procedure_Data.md new file mode 100644 index 0000000..65ccbef --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Blender_Procedure_Data.md @@ -0,0 +1,27 @@ +```pascal +// Block Type: InstanceDB +// Block Name (Original): Blender_Procedure Data +// Block Number: 930 + +DATA_BLOCK "Blender_Procedure_Data" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Deaireator_StartUp : "ProcedureDeaireator StartUp"; + CarboWaterLine : "ProcedureCarboWaterLine"; + Syrup_RunOut : "ProcedureSyrup RunOut"; + SyrBrix_Autocorrection : "SyrBrix Autocorrection"; + ProdBrixRecovery : "ProcedureProdBrixRecovery"; + Syrup_MFM_StartUp : "ProcedureSyrupMFMStartUp"; + ProdTankDrain : "ProcedureProdTankDrain"; + ProdTank_RunOut : "ProcedureProdTankRunOut"; + Syrup_Line_MFM_Prep : "ProcedureSyrupLineMFMPrep"; + BlendFill_StartUp : "ProcedureBlendFill StartUp"; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Blender_Variables.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Blender_Variables.md new file mode 100644 index 0000000..c885728 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Blender_Variables.md @@ -0,0 +1,185 @@ +```pascal +// Block Type: GlobalDB +// Block Number: 971 + +DATA_BLOCK "Blender_Variables" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + gProdTankStopLvl : Real := 40.0; + gProdTankTargetLvl : Real := 25.0; + gProdTankStartLvl : Real := 20.0; + gSyrupMFMBrixSlope : Real := 0.0; + gH2O_Flow_Meas : Real := 0.0; + gSYR_Flow_Meas : Real := 0.0; + gSYR_Vol_Flow_Meas : Real := 0.0; + gCO2_Flow_Meas : Real := 0.0; + gProd_Flow_Meas : Real := 0.0; + gCO2Solubility : Real := 0.5889701; + gDeairCO2Vol : Real := 0.6569746; + gFillerCO2Loss : Real := 0.15; + gCO2EqPressure : Real := 2.755885; + gCO2InjPressureCalc : Real := 10.0; + gProductLiters : Real := 87.11034; + gProductTemperature : Real := 0.0; + gBlendError : Real := 10.0; + gCarboCO2Error : Real := 87.14999; + gK_RecBlendError : Real := 5.0; + gK_RecCarboCO2Error : Real := 5.0; + gMaxCarboCO2_V : Real := 7.92015; + gWaterFlowSlewValve : Real := 0.0; + gWaterFlowSlewMFM : Real := 0.0; + gDeairCO2Comp : Real := 0.5069746; + gWaterO2 : Real := 9.074822; + gDeairWaterO2 : Real := 0.0; + gSyrupO2 : Real := 4.556799; + gProductO2 : Real := 0.8366871; + gProductDensity : Real := 1.075568; + gProdDensFromMeter : Real := 1.0; + gTankProdAmount : Real := 108.361; + gPrdTankPressError : Real := -0.0853588; + gH2OValveRiseUpTime : Int := 2; + gFillerProductFlow : Real := 0.0; + gWaterVFM_DN : Int := 50; + gWaterPipe_DN : Int := 80; + gSyrupMFM_DN : Int := 40; + gCarboCO2MFM_DN : Int := 15; + gWaterVFMMeasError : Real := 0.2; + gWaterVFMRepeatibility : Real := 0.1; + gWaterVFMCalcError : Real := 0.4721645; + gSyrupMFMMeasError : Real := 0.1; + gSyrupMFMRepeatibility : Real := 0.05; + gSyrupMFMZeroStab : Real := 2.25; + gSyrupMFMCalcError : Real := 0.2303126; + gCO2MFMMeasError : Real := 0.5; + gCO2MFMRepeatibility : Real := 0.25; + gCO2MFMZeroStab : Real := 0.325; + gCO2MFMCalcError : Real := 6.144543; + gFirstProdExtraBrix : Real := 0.15; + gFirstProdDietExtraSyr : Real := 0.002; + gFirstProdExtraCO2Fact : Real := 1.05; + gBlenderBlendMaxError : Real := 0.0; + gWaterVFM_Area : Real := 0.1963496; + gWaterVFM_Vel : Real := 0.0; + gWaterPipe_Area : Real := 0.5026549; + gWaterPipe_Vel : Real := 1.652169; + gWaterSpeedToStopError : Real := 4.229551; + gProdTankVolume : Real := 2170.0; + gProdTankBottomVol : Real := 105.0; + gDeairTankVolume : Real := 1150.0; + gBlenderNomSpeed : Real := 630.0; + gBlenderProdSlewMax : Real := 52.5; + gProductLitTank : Real := 108.4153; + gProductO2Conc : Real := 0.0; + gBlenderFillerDeltaV : Real := 0.0; + gSP_ProdTrackFiller : Real := 350.0; + gEstimateFillerSpeed : Real := 0.0; + gFlowTronic : Real := 1000.0; + gFlowTronicFullScale : Real := 100.0; + gActualGasFactor : Real := 1.235718; + gWaterStat_MeanValue : Real := 0.0; + gWaterStat_Variance : Real := 0.0; + gWaterStat_DevStd : Real := 0.1527207; + gSyrupStat_MeanValue : Real := 0.0; + gSyrupStat_Variance : Real := 0.0; + gSyrupStat_DevStd : Real := 0.3818018; + gCarboCO2Stat_MeanValue : Real := 0.0; + gCarboCO2Stat_Variance : Real := 0.0; + gCarboCO2Stat_DevStd : Real := 0.8522521; + gProdBxStat_MeanValue : Real := 0.0; + gProdBxStat_Variance : Real := 0.0; + gProdBxStat_DevStd : Real := 0.0; + gProdCO2Stat_MeanValue : Real := 0.0; + gProdCO2Stat_Variance : Real := 0.0; + gProdCO2Stat_DevStd : Real := 0.0; + gProdTankBrix : Real := 0.0; + gFlowProdBrix : Real := 12.47313; + gBrixTrackingCorr : Real := 0.0; + gCO2TrackingCorr : Real := 0.0; + gProdRunSyrFact : Real := 1.0; + gProdRunSyrMFMFact : Real := 1.0; + gActualSyrupDens : Real := 1.237; + gActualSyrupBrix : Real := 51.37; + gActualSyrupPerc : Real := 0.1836129; + gActualWaterPerc : Real := 0.8163871; + gSyrupVolFlow_PV : Real := 129.1715; + gProductRecipeNum : Int := 0; + gProductBrix : Real := 0.0; + gProductDens : Real := 0.0; + gProductCO2 : Real := 0.0; + gProductTemp : Real := 0.0; + gProductLinePress : Real := 0.0; + gMeterSyrBrix : Real := 5.0; + gMeterSyrDens : Real := 0.8; + gMeterSyrTemp : Real := 18.69626; + gSP_H2O : Real := 0.0; + gSP_SYR : Real := 0.0; + gSP_CO2 : Real := 0.0; + gSP_SYR_Level : Real := 25.0; + gSP_Prod_Temperature : Real := 0.0; + gSP_H2O_Temperature : Real := 0.0; + gActual_Prod_SP : Real := 0.0; + gActual_SP_CO2 : Real := 3.464378; + gActual_Prod_Flow : Real := 0.0; + gActual_Ratio : Real := 3.857526; + gActual_RatioM : Real := 4.446241; + gActual_CO2_Vol : Real := 0.0; + gInUVLampReady : Bool := TRUE; + gInUVLampAlarm : Bool := FALSE; + gBufferTankProbeHeight : Real := 2000.0; + gMinProduction : Real := 315.0; + gSyrSPRef : Real := 135.8833; + gSyrSPTemp : Real := 50.0; + gCO2SPRef : Real := 0.0; + gCO2SPTemp : Real := 0.0; + gCO2SPTemp2 : Real := 0.0; + gSP_DEAIR_Level : Real := 15.0; + gActual_SP_GAS2 : Real := 0.0; + gSP_GAS2 : Real := 0.0; + gGAS2Stat_MeanValue : Real := 0.0; + gGAS2Stat_Variance : Real := 0.0; + gGAS2Stat_DevStd : Real := 0.0; + gBalaiageFlowError : Real := 3.5; + gSP_STORAGE_Level : Real := 25.0; + Aux_RVN302_PID : STRUCT + ConfigPID : Bool := FALSE; + Hold_Int : Bool := FALSE; + I_ITL : Bool := FALSE; + Alarm : Bool := FALSE; + Spare0_4 : Bool := FALSE; + Spare0_5 : Bool := FALSE; + Spare0_6 : Bool := FALSE; + Config : Bool := FALSE; + PID_FIX : Bool := FALSE; + Spare1_1 : Bool := FALSE; + High_Limit : Bool := FALSE; + Low_Limit : Bool := FALSE; + ManualControl : "Struct"; + Bp : Real := 0.0; + Ti : Real := 0.0; + Td : Real := 0.0; + Ff : Real := 0.0; + KP : Real := 0.0; + Pv : Real := 0.0; + OutMan : Real := 0.0; + Lsp : Real := 0.0; + OutMaxHmi : Real := 0.0; + OutMin : Real := 0.0; + OutMax : Real := 100.0; + Spare52 : Real := 0.0; + FfOut : Real := 0.0; + Sp : Real := 0.0; + Out : Real := 0.0; + Cycle_Time : Real := 0.0; + I_ITLVAL : Real := 0.0; + Dead_Band : Real := 0.0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Blender_Variables_Pers.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Blender_Variables_Pers.md new file mode 100644 index 0000000..80b421a --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Blender_Variables_Pers.md @@ -0,0 +1,51 @@ +```pascal +// Block Type: GlobalDB +// Block Number: 970 + +DATA_BLOCK "Blender_Variables_Pers" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + gBlenderStarted : Bool := FALSE; + gWaterRecipe : Bool := FALSE; + gSugarBeverage : Bool := TRUE; + gCarboStillProduct : Bool := TRUE; + gCarboStillRecipe : Bool := TRUE; + gSkipDeaireation : Bool := FALSE; + gCoolerEnabled : Bool := TRUE; + gWaterTotal : Real := 0.0; + gSyrupTotal : Real := 0.0; + gCO2Total : Real := 0.0; + gProductVFMTotal : Real := 0.0; + gWaterTempTot : Real := 0.0; + gSyrupTempTot : Real := 0.0; + gCO2TempTot : Real := 0.0; + gProductVFMTempTot : Real := 0.0; + gSyrRunOutCountInit : Real := 0.0; + gSyrLinePrepCountInit : Real := 712.3425; + gSyrupRoomTankLiter : Array[1..15] of Real := [20.0, 320.0, 320.0, 0.0, 0.0, 305.0, 300.0, 310.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]; + gProdSec : Int := 0; + gProdMin : Int := 0; + gProdHour : Int := 0; + gBlendingMaintHour : Int := 598; + gRunningSeconds : Int := -11410; + gRunningMinutes : Int := -16542; + gRunningMaintHour : Int := 820; + gSLIM_Sec : Int := -11410; + gSLIM_Min : Int := 0; + gSLIM_Hour : Int := 0; + gFillerRinse_DoneLatch : Bool := FALSE; + gFirstProdLatched : Bool := FALSE; + Spare00 : Int := 0; + Spare01 : Int := 0; + Procedure_DONE : "Struct"; + SystemRunOut : "Struct"; + SyrupBrix_Aux : Real := 51.37; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Blocco_1.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Blocco_1.md new file mode 100644 index 0000000..fe3852d --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Blocco_1.md @@ -0,0 +1,20 @@ +```pascal +// Block Type: FC +// Block Number: 1 +// Original Network Languages: LAD + +FUNCTION "Blocco_1" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +BEGIN + + // Network 1: (Original Language: LAD) + + // Network 1 has no logic elements. + + // No executable logic generated by script. + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Blocco_dati_Test.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Blocco_dati_Test.md new file mode 100644 index 0000000..d22e6be --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Blocco_dati_Test.md @@ -0,0 +1,46 @@ +```pascal +// Block Type: GlobalDB +// Block Number: 5000 + +DATA_BLOCK "Blocco_dati_Test" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Test_1 : STRUCT + _LinkName : String[32]; + CIP_Simple_Prog : STRUCT + CIP_SimpleCode : Int; + CIP_SetPoint_Temp : Real; + CIP_SetPoint_Cond : Real; + CIP_SetPoint_Time : Int; + CIP_Chemical : "Struct"; + CIP_HotWaterPreLoad : Bool; + CIP_ChemicalRecovery : Bool; + CIP_WaterRecovery : Bool; + END_STRUCT; + + END_STRUCT; + + Static_1 : STRUCT + Raw : Bool := FALSE; + Filtered : Bool := FALSE; + Wait : Bool := FALSE; + Spare03 : Bool := FALSE; + Spare04 : Bool := FALSE; + Spare05 : Bool := FALSE; + Spare06 : Bool := FALSE; + Config : Bool := FALSE; + DelayOnSP : Int := 0; + DelayOffSP : Int := 0; + DelayOn : Int := 0; + DelayOff : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Block_compare.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Block_compare.md new file mode 100644 index 0000000..4278a03 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Block_compare.md @@ -0,0 +1,79 @@ +```pascal +// Block Type: FC +// Block Number: 61 +// Original Network Languages: STL + +FUNCTION "Block_compare" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + DB_source : Int; + DB_dest : Int; + Start_source : Int; + Start_dest : Int; + Nr_byte : Int; +END_VAR + +VAR_OUTPUT + mDifference : Bool; +END_VAR + +VAR_TEMP + DBNUM_Source : Word; + DBNUM_Dest : Word; + Pointer_Source : DWord; + Pointer_Dest : DWord; + Loop_Count : Int; +END_VAR + +BEGIN + + // Network 1: Byte Compare (Original Language: STL) + + // --- BEGIN STL Network 1 --- + + CLR + = "mDifference" + + L "DB_source" + T "DBNUM_Source" + L "DB_dest" + T "DBNUM_Dest" + + L P#0.0 + L "Start_source" + SLD 3 + ADD_D + T "Pointer_Source" + + L P#0.0 + L "Start_dest" + SLD 3 + ADD_D + T "Pointer_Dest" + + LAR1 "Pointer_Source" + LAR2 "Pointer_Dest" + L "Nr_byte" + m001: T "Loop_Count" + AUF DBB[AR?,P#0.0] + L DBB[AR1,P#0.0] + AUF DBB[AR?,P#0.0] + L DBB[AR2,P#0.0] + NE_I + ADDAR1 P#1.0 + ADDAR2 P#1.0 + JC diff + L "Loop_Count" + LOOP m001 + JU end + diff: SET + = "mDifference" + end: NOP_0 + + // --- END STL Network 1 --- + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Block_move.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Block_move.md new file mode 100644 index 0000000..03a16cd --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Block_move.md @@ -0,0 +1,77 @@ +```pascal +// Block Type: FC +// Block Number: 60 +// Original Network Languages: STL + +FUNCTION "Block_move" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + DB_source : Int; + DB_dest : Int; + Start_source : Int; + Start_dest : Int; + Nr_byte : Int; +END_VAR + +VAR_TEMP + DBNUM_Source : Word; + DBNUM_Dest : Word; + Pointer_Source : DWord; + Pointer_Dest : DWord; + mSource_Dint : DInt; + mDest_Dint : DInt; + Loop_Count : Int; +END_VAR + +BEGIN + + // Network 1: Byte Transfert (Original Language: STL) + + // --- BEGIN STL Network 1 --- + + L "Start_source" + T "mSource_Dint" + + L "Start_dest" + T "mDest_Dint" + + L 0 + T "Loop_Count" + + L "DB_source" + T "DBNUM_Source" + L "DB_dest" + T "DBNUM_Dest" + + L P#0.0 + L "mSource_Dint" + SLD 3 + ADD_D + T "Pointer_Source" + + L P#0.0 + L "mDest_Dint" + SLD 3 + ADD_D + T "Pointer_Dest" + + LAR1 "Pointer_Source" + LAR2 "Pointer_Dest" + L "Nr_byte" + m001: T "Loop_Count" + AUF DBB[AR?,P#0.0] + L DBB[AR1,P#0.0] + AUF DBB[AR?,P#0.0] + T DBB[AR2,P#0.0] + ADDAR1 P#1.0 + ADDAR2 P#1.0 + L "Loop_Count" + LOOP m001 + + // --- END STL Network 1 --- + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BrixTracking_Data.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BrixTracking_Data.md new file mode 100644 index 0000000..84e19fa --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BrixTracking_Data.md @@ -0,0 +1,26 @@ +```pascal +// Block Type: InstanceDB +// Block Number: 975 + +DATA_BLOCK "BrixTracking_Data" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + mTakeSample : Bool := FALSE; + mTakeProdSample : Bool := FALSE; + mProdBrixSample : Int := 35; + mAuxProdBrixCorr : Real := 0.0; + mLocalProdLevel : Real := 0.1627604; + mProdBrixStat : "Statistical_Analisys"; + mProdSamples : "BrixTracking_ProdSamples"; + mSampleTimeCalc : "BrixTracking_SampleTime"; + mAuxONS : Bool := FALSE; + mAuxONS1 : Bool := FALSE; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BrixTracking_ProdSamples.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BrixTracking_ProdSamples.md new file mode 100644 index 0000000..eaeca66 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BrixTracking_ProdSamples.md @@ -0,0 +1,45 @@ +```pascal +FUNCTION_BLOCK "BrixTracking_ProdSamples" +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : TASK2 +NAME : 'Name' +VERSION : 1.0 + VAR_IN_OUT + mTakeProdSample : Bool; + END_VAR + + VAR + gProductTotalizerLt : "Integral"; + mProdInit : Real; + END_VAR + + +BEGIN + + + (* Calculates the product liters during blending. Every 60 Liters of product take a sample for the statistical analisys + in order to correct the product brix *) + + IF "gBlenderBlending" THEN + #gProductTotalizerLt.i_NewValue := "Blender_Variables".gActual_Prod_Flow ; + #gProductTotalizerLt.i_IntCycle := "Time_250ms" ; + #gProductTotalizerLt(Out_Integral := "Blender_Variables".gProductLiters) ; + END_IF; + + IF "gBlenderRinseMode" OR "gBlenderCIPMode" THEN + (* classic code: "Blender_Variables".gProductLiters := 0.0 ;*) + "Blender_Variables".gProductLiters := REAL#0.0 ; + #gProductTotalizerLt(Out_Integral := "Blender_Variables".gProductLiters) ; + END_IF; + + IF ("Blender_Variables".gProductLiters - #mProdInit) > 60 THEN + #mTakeProdSample := TRUE ; + #mProdInit := "Blender_Variables".gProductLiters ; + END_IF; + + +END_FUNCTION_BLOCK + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BrixTracking_SampleTime.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BrixTracking_SampleTime.md new file mode 100644 index 0000000..e469a1d --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/BrixTracking_SampleTime.md @@ -0,0 +1,95 @@ +```pascal +FUNCTION_BLOCK "BrixTracking_SampleTime" +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : TASK2 +NAME : 'Name' +VERSION : 1.0 + VAR_IN_OUT + mTakeSample : Bool; + mCycleCount : Int; + mProdBrixSample : Int; + mAuxProdBrixCorr : Real; + END_VAR + + VAR + mStart : Bool; + mAllSamples : Bool; + mWaitCycleToSample : Int; + mTotalCount : Int; + mProdRefresh : Real; + mProdRefreshS : Real; + mAuxProdBrixCorrInit : Real; + END_VAR + + +BEGIN + + + (* classic code: IF "Blender_Variables".gActual_Prod_SP <> 0.0 THEN*) + IF "Blender_Variables".gActual_Prod_SP <> REAL#0.0 THEN + #mProdRefresh := "Blender_Variables".gProductLitTank / "Blender_Variables".gActual_Prod_SP ; + ELSE + #mProdRefresh := 0 ; + END_IF; + + (* classic code: #mProdRefreshS := #mProdRefresh * 1.6 * 60 ;*) + #mProdRefreshS := #mProdRefresh * REAL#1.6 * 60 ; + + IF "Time_250ms" <> 0 AND #mProdBrixSample <> 0 THEN + #mWaitCycleToSample := REAL_TO_INT(#mProdRefreshS / #mProdBrixSample / "Time_250ms") ; + END_IF; + + IF #mWaitCycleToSample < 1 THEN + #mWaitCycleToSample := 1 ; + END_IF; + + IF "Procedure_Variables".ProdBrix_Track.Latch AND NOT "gNoFreezeProductMeter" THEN + IF #mCycleCount <= #mWaitCycleToSample THEN + #mCycleCount := #mCycleCount + 1 ; + ELSE + #mTakeSample := TRUE ; + #mCycleCount := 0 ; + END_IF; + ELSE + #mTakeSample := FALSE ; + // mCycleCount := 0 ; + END_IF; + + IF #mTakeSample THEN + #mTotalCount := #mTotalCount + 1 ; + END_IF; + + IF #mTotalCount >= #mProdBrixSample THEN + IF "Procedure_Variables".ProdBrix_Track.Running THEN + IF NOT #mStart THEN + #mStart := TRUE ; + #mAuxProdBrixCorrInit := "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProductBrix - "Blender_Variables".gProdBxStat_MeanValue ; + IF #mAuxProdBrixCorr=0 THEN + #mAuxProdBrixCorr := ("HMI_Blender_Parameters".Actual_Recipe_Parameters._ProductBrix - "Blender_Variables".gProdBxStat_MeanValue) / 3 ; + END_IF; + ELSE + #mStart := FALSE ; + #mAuxProdBrixCorr := #mAuxProdBrixCorr + ("HMI_Blender_Parameters".Actual_Recipe_Parameters._ProductBrix - "Blender_Variables".gProdBxStat_MeanValue) / 10 ; + END_IF; + END_IF; + #mAllSamples := TRUE ; + #mTotalCount := 0 ; + ELSE + #mAllSamples := FALSE ; + END_IF; + + // Check the LIMIT boundaries TO act the product tracking + IF "Procedure_Variables".ProdBrix_Track.Running THEN + IF NOT (ABS(#mAuxProdBrixCorr) < "Blender_Constants".gBrixTrackingMinCorr OR ABS(#mAuxProdBrixCorr) > "Blender_Constants".gBrixTrackingMaxCorr) THEN + "Blender_Variables".gBrixTrackingCorr := #mAuxProdBrixCorr ; + END_IF; + END_IF; + + + + +END_FUNCTION_BLOCK + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIP CVQ.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIP CVQ.md new file mode 100644 index 0000000..34fb078 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIP CVQ.md @@ -0,0 +1,35 @@ +```pascal +FUNCTION "CIP CVQ" : Real +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : 'Function' +NAME : 'Name' +VERSION : 1.0 + VAR_INPUT + i_TempIn : Real; + i_TempOut : Real; + END_VAR + + +BEGIN + (* classic code: IF #i_TempOut <= 0.5 THEN*) + IF #i_TempOut <= REAL#0.5 THEN + (* classic code: #"CIP CVQ" := 50.0 ;*) + #"CIP CVQ" := REAL#50.0 ; + ELSIF #i_TempIn-#i_TempOut <= 1 THEN + (* classic code: #"CIP CVQ" := 100.0 ;*) + #"CIP CVQ" := REAL#100.0 ; + ELSIF (#i_TempIn-#i_TempOut > 1) AND (#i_TempIn-#i_TempOut <= 5) THEN + (* classic code: #"CIP CVQ" := (#i_TempOut - #i_TempIn) * 12.5 + 87.5 ;*) + #"CIP CVQ" := (#i_TempOut - #i_TempIn) * REAL#12.5 + REAL#87.5 ; + ELSIF #i_TempIn-#i_TempOut > 5 THEN + (* classic code: #"CIP CVQ" := 50.0 ;*) + #"CIP CVQ" := REAL#50.0 ; + ELSE + (* classic code: #"CIP CVQ" := 0.0;*) + #"CIP CVQ" := REAL#0.0; + END_IF; +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPLocal.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPLocal.md new file mode 100644 index 0000000..dbe6a27 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPLocal.md @@ -0,0 +1,159 @@ +```pascal +// Block Type: FC +// Block Number: 1933 +// Original Network Languages: LAD +// Block Comment: +// The following PROGRAM handle the CIP software modules. The module interface is +// the Standard one: Qualifier,Request, Latch, Wait, Reset (Inizialize) AND Done. +// Qualifier: (Level Signal) Qualify the module TO be executed; all the conditions +// that enable the module TO run must be included in the Qualifier. +// Request: (Pulse ONS) Request TO execute the module. +// Latch: (Level Signal) IF the Qualifier is enabled AND the module is NOT already +// executed AND is NOT Reset, than the Latch latches UNTIL th Done OR the Reset +// comes. +// Done: (Level Signal) Is Setted as soon as the module complete its functions, +// AND +// staies On UNTIL next Reset. + +FUNCTION "CIPLocal" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + mNewProgram : Bool; + mRET_VAL : Bool; +END_VAR + + #_3M : Bool; // Auto-generated temporary +BEGIN + + // Network 1: (Original Language: LAD) + + "CIP_Program_Variables"."CIP_Run"."Qualifier" := "gBlenderCIPMode" AND "gBlenderSuppliesOk" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP"; + + // Network 2: CIP Inizialized Signal (Original Language: LAD) + + // PBox SymPy processed, logic in consumer + "mRequestTP" := "gIN_StartBtn"; // P_TRIG("gIN_StartBtn") - Mem: "mRequestTP" + + IF "gIN_StartBtn" AND "CIP_Program_Variables"."CIP_Run"."Qualifier" AND NOT "mRequestTP" THEN + "CIP_Program_Variables"."Status"."Inizialized" := FALSE; + END_IF; + + "CIP_Program_Variables"."CIP_Run"."Request" := "gIN_StartBtn" AND "CIP_Program_Variables"."CIP_Run"."Qualifier" AND NOT "mRequestTP"; + + // Network 3: MIX - Air and CO2 pressure ok and auxiliary ok (Original Language: LAD) + + // Network 3 did not produce printable SCL code. + + // Network 4: MIX - CIP Local (Original Language: LAD) + + // Network 4 did not produce printable SCL code. + + // Network 5: (Original Language: LAD) + + "HMI_Local_CIP_Variables"."Cip_Commands"."_RunPause" := "CIP_Program_Variables"."CIP_Run"."Latch" AND "HMI_Local_CIP_Variables"."Cip_Commands"."_ProgPause"; + + // Network 6: (Original Language: LAD) + + "CIP_Program_Variables"."CIP_Run"."Wait" := ("gBlenderCIPMode" AND "Procedure_Variables"."Blender_Run"."Wait") OR ("gBlenderCIPMode" AND "HMI_Local_CIP_Variables"."Cip_Commands"."_RunPause"); + + // Network 7: (Original Language: LAD) + + "CIP_Program_Variables"."CIP_Run"."Latch" := ("CIP_Program_Variables"."CIP_Run"."Request" AND "CIP_Program_Variables"."CIP_Run"."Reset" AND "gBlenderAlarm" AND "CIP_Program_Variables"."CIP_Run"."Done") OR ("CIP_Program_Variables"."CIP_Run"."Reset" AND "gBlenderAlarm" AND "CIP_Program_Variables"."CIP_Run"."Done" AND "CIP_Program_Variables"."CIP_Run"."Latch"); + + IF ("CIP_Program_Variables"."CIP_Run"."Request" AND "CIP_Program_Variables"."CIP_Run"."Reset" AND "gBlenderAlarm" AND "CIP_Program_Variables"."CIP_Run"."Done" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Report") OR ("CIP_Program_Variables"."CIP_Run"."Reset" AND "gBlenderAlarm" AND "CIP_Program_Variables"."CIP_Run"."Done" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Report" AND "CIP_Program_Variables"."CIP_Run"."Latch") THEN + "CIPReportDB"."General"."AuxReportCipStart" := TRUE; + END_IF; + + // Network 8: CIP Running Signal (Original Language: LAD) + + "CIP_Program_Variables"."CIP_Run"."Running" := "CIP_Program_Variables"."CIP_Run"."Wait" AND "CIP_Program_Variables"."CIP_Run"."Latch"; + + "HMI_Local_CIP_Variables"."Cip_Commands"."_Running" := "CIP_Program_Variables"."CIP_Run"."Latch"; + + // Network 9: (Original Language: LAD) + + // PBox SymPy processed, logic in consumer + "mONS" := "gIN_StopBtn"; // P_TRIG("gIN_StopBtn") - Mem: "mONS" + + // PBox SymPy processed, logic in consumer + "mONS2" := "CIP_Program_Variables"."CIP_Run"."Latch"; // P_TRIG("CIP_Program_Variables"."CIP_Run"."Latch") - Mem: "mONS2" + + "CIP_Program_Variables"."CIP_Run"."Done" := "CIP_Program_Variables"."Status"."Completed" OR ("gIN_StopBtn" AND NOT "mONS"); + + // Network 10: (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Report" AND "CIP_Program_Variables"."Status"."Completed" THEN + "CIPReportDB"."General"."AuxReportCipEnd" := TRUE; + END_IF; + + // Network 11: MIX - CIP Local (Original Language: LAD) + + "mNoRecircFlowDly"(IN := "HMI_Device"."PPM303"."Out" AND (("HMI_Digital"."FSS301"."Filtered" AND "HMI_Device"."AVS336"."Out" AND "CIP_Program_Variables"."CIP_Run"."Latch") OR ("HMI_Digital"."FSS301"."Filtered" AND "HMI_Device"."AVS337"."Out" AND "CIP_Program_Variables"."CIP_Run"."Latch")), PT := S5T#3M); // TODO: Declarar "mNoRecircFlowDly" : TON; + + "gCIPRecirFlowMiss_Fault" := "mNoRecircFlowDly".Q; + + // Network 12: (Original Language: LAD) + + "CIP_Program_Variables"."Status"."WaitFillerReadyToCIP" := "gBlenderCIPMode" AND "Procedure_Variables"."Blender_Run"."Latch" AND "gIN_FillerCIPRequest" AND "CIP_Program_Variables"."Status"."WaitEventRequest"."ReadyForCIP"; + + "HMI_Alarms"."gH_Message" := "gBlenderCIPMode" AND "Procedure_Variables"."Blender_Run"."Latch" AND "gIN_FillerCIPRequest" AND "CIP_Program_Variables"."Status"."WaitEventRequest"."ReadyForCIP"; + + // Network 13: Local CIP Wait Temperature (Original Language: LAD) + + "HMI_Alarms"."gH_Message" := "CIP_Program_Variables"."Status"."WaitEventRequest"."Temperature_Ok" AND "CIP_Program_Variables"."Status"."WaitEventStatus"."Temperature_Ok" AND "CIP_Program_Variables"."CIP_Run"."Latch"; + + // Network 14: (Original Language: LAD) + + "HMI_Alarms"."gH_Message" := "CIP_Program_Variables"."Status"."WaitEventRequest"."HighConductivity" AND "CIP_Program_Variables"."Status"."WaitEventStatus"."HighConductivity" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Conductimeter" AND "CIP_Program_Variables"."CIP_Run"."Latch"; + + // Network 15: (Original Language: LAD) + + "HMI_Alarms"."gH_Message" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Conductimeter" AND "CIP_Program_Variables"."Status"."WaitEventRequest"."LowConductivity" AND "CIP_Program_Variables"."Status"."WaitEventStatus"."LowConductivity" AND "CIP_Program_Variables"."CIP_Run"."Latch"; + + // Network 16: (Original Language: LAD) + + "HMI_Alarms"."gH_Message" := "CIP_Program_Variables"."Status"."WaitEventRequest"."DrainCompleted" AND "CIP_Program_Variables"."Status"."WaitEventStatus"."DrainCompleted" AND "CIP_Program_Variables"."CIP_Run"."Latch"; + + // Network 17: (Original Language: LAD) + + "HMI_Alarms"."gH_Message" := "CIP_Program_Variables"."Status"."WaitEventRequest"."CIPChangeReady" AND "CIP_Program_Variables"."Status"."WaitEventStatus"."CIPChangeReady" AND "CIP_Program_Variables"."CIP_Run"."Latch"; + + // Network 18: (Original Language: LAD) + + "HMI_Alarms"."gH_Message" := "CIP_Program_Variables"."Status"."WaitEventRequest"."CIPCycleEnded" AND "CIP_Program_Variables"."Status"."WaitEventStatus"."CIPCycleEnded" AND "CIP_Program_Variables"."CIP_Run"."Latch"; + + // Network 19: Local CIP Hold (Original Language: LAD) + + "HMI_Alarms"."gH_Status" := "CIP_Program_Variables"."CIP_Run"."Wait" AND "CIP_Program_Variables"."CIP_Run"."Latch"; + + // Network 20: Local CIP Completed (Original Language: LAD) + + "HMI_Alarms"."gH_Status" := "CIP_Program_Variables"."Status"."Completed" AND "gBlenderProdMode" AND "gBlenderRinseMode"; + + // Network 21: (Original Language: LAD) + + "CIPRecipeManagement_Data"(Active_Recipe_Req := "HMI_Variables_Cmd"."RecipeCIP"."Active_Request", Active_Recipe_Running := "HMI_Variables_Cmd"."RecipeCIP"."Active_Recipe_Running", Active_Recipe_Start := "HMI_Variables_Cmd"."RecipeCIP"."Active_Recipe_Start", Copy := "HMI_Variables_Cmd"."RecipeCIP"."Copy", Copy_to := "HMI_Variables_Cmd"."RecipeCIP"."Copy_Request", Delete := "HMI_Variables_Cmd"."RecipeCIP"."Delete", Download := "HMI_Variables_Cmd"."RecipeCIP"."Download", Edit := "HMI_Variables_Cmd"."RecipeCIP"."Edit", HMI_Recipe_Main_Page := "HMI_Variables_Cmd"."RecipeCIP"."Main_Page", HMI_Recipe_Page_Running := "HMI_Variables_Cmd"."RecipeCIP"."Page_Running", Max_Recipe_Number := 30, Read := "HMI_Variables_Cmd"."RecipeCIP"."Read", Upload := "HMI_Variables_Cmd"."RecipeCIP"."Upload", UploadPC := "HMI_Variables_Cmd"."RecipeCIP"."UploadPC", Work_Recipe := "HMI_Variables_Cmd"."RecipeCIP"."Edit_Request", Write := "HMI_Variables_Cmd"."RecipeCIP"."Write"); + + // Network 22: (Original Language: LAD) + + "HMI_Local_CIP_Variables"."Cip_Commands"."_ProgNoSaveAllwd" := "HMI_Variables_Cmd"."RecipeCIP"."Work_Rec_is_Active_Recip" AND "HMI_Local_CIP_Variables"."Cip_Commands"."_Running"; + + // Network 23: (Original Language: LAD) + + CIPLocal_WaitEvent_Ctrl(); + + // Network 24: (Original Language: LAD) + + CIPLocal_ExecSimpleCIP(Clock := "Clock_1Hz", Hold := "CIP_Program_Variables"."CIP_Run"."Wait", Inizialize := "CIP_Program_Variables"."CIP_Run"."Reset", Start := "CIP_Program_Variables"."CIP_Run"."Latch", StepDown := "HMI_Local_CIP_Variables"."Cip_Commands"."_ProgStepDown", StepUp := "HMI_Local_CIP_Variables"."Cip_Commands"."_ProgStepUp"); + + // Network 25: (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Report" THEN + CIPReportManager(); + END_IF; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPLocal_ExecSimpleCIP.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPLocal_ExecSimpleCIP.md new file mode 100644 index 0000000..1998f76 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPLocal_ExecSimpleCIP.md @@ -0,0 +1,128 @@ +```pascal +FUNCTION "CIPLocal_ExecSimpleCIP" : Void +{ S7_Optimized_Access := 'FALSE' } +VERSION : 0.0 + VAR_INPUT + Start : Bool; + Hold : Bool; + StepUp : Bool; + StepDown : Bool; + Inizialize : Bool; + Clock : Bool; + END_VAR + + VAR_TEMP + mInizialize_ONS : Bool; + mStepUp_ONS : Bool; + mStepDown_ONS : Bool; + mClock_ONS : Bool; + mRecipeChanged_ONS : Bool; + mCycleCount : Int; + mCIPTotalTime : Int; + mStepTotalTime : Int; + i : Int; + j : Int; + END_VAR + + +BEGIN + + + "ONS_R"(Enable_ONS := #Inizialize, + Aux_ONS := "mInizialize_ONS", + ONS_R => #mInizialize_ONS ); + "ONS_R"(Enable_ONS := #StepUp AND NOT "CIP_Program_Variables".Status.Completed, + Aux_ONS := "mStepUp_ONS", + ONS_R => #mStepUp_ONS ); + "ONS_R"(Enable_ONS := #StepDown AND NOT "CIP_Program_Variables".Status.Inizialized, + Aux_ONS := "mStepDown_ONS", + ONS_R => #mStepDown_ONS ); + "ONS_R"(Enable_ONS := #Clock, + Aux_ONS := "mClock_ONS", + ONS_R => #mClock_ONS ); + IF #mInizialize_ONS THEN + "CIPLocal_ProgInizialize"(); + "HMI_Local_CIP_Variables".Cip_Recipe.ActualSimpleProgram :="HMI_Local_CIP_Variables".Cip_Recipe.ActualLinkProgram.CIP_Simple_Prog[1] ; + ELSE + "CIP_Program_Variables".General_Data.ActualSimpleNum := LIMIT (MN:= 1, IN:= "CIP_Program_Variables".General_Data.ActualSimpleNum, MX:= "CIP_Program_Variables".General_Data.CIPMaxSimpleNum) ; + "CIP_Program_Variables".General_Data.ActualStepNum := LIMIT (MN:= 1, IN:= "CIP_Program_Variables".General_Data.ActualStepNum, MX:= "CIP_Program_Variables".General_Data.CIPMaxStepNum) ; + IF #mStepUp_ONS THEN + "CIPLocal_ProgStepUp"() ; + END_IF ; + IF #mStepDown_ONS THEN + "CIPLocal_ProgStepDown"() ; + END_IF ; + #i := "CIP_Program_Variables".General_Data.ActualSimpleNum ; + "CIP_SimpleProgr_Init"(i_SimpleProgr:= "HMI_Local_CIP_Variables".Cip_Recipe.ActualLinkProgram.CIP_Simple_Prog[#i], + i_StepNumber:= "CIP_Program_Variables".General_Data.ActualStepNum, o_Step=> "CIP_Program_Variables".mCIP_ActualStep); + "CIP_Program_Variables".General_Data.mStepTimeValue := "CIP_Program_Variables".mCIP_ActualStep.CIP_StepTime ; + #mCycleCount := 0 ; + WHILE "CIP_Program_Variables".General_Data.mStepTimeValue = 0 AND NOT "CIP_Program_Variables".Status.Completed AND NOT "CIP_Program_Variables".Status.Inizialized + AND NOT (#mCycleCount>"CIP_Program_Variables".General_Data.CIPMaxSimpleNum*"CIP_Program_Variables".General_Data.CIPMaxStepNum) DO + #mCycleCount := #mCycleCount + 1 ; + IF #mStepUp_ONS OR ("CIP_Program_Variables".CIP_Run.Running AND "CIP_Program_Variables".General_Data.mStepTimeValue = 0) THEN + "mSteppingUp" := TRUE ; + END_IF ; + IF #mStepDown_ONS THEN + "mSteppingDown" := TRUE ; + END_IF ; + IF "mSteppingUp" THEN + "CIPLocal_ProgStepUp"() ; + ELSIF NOT ("mSteppingUp" OR "mSteppingDown") THEN + EXIT ; + END_IF ; + IF "mSteppingDown" THEN + "CIPLocal_ProgStepDown"() ; + ELSIF NOT ("mSteppingUp" OR "mSteppingDown") THEN + EXIT ; + END_IF ; + #i := "CIP_Program_Variables".General_Data.ActualSimpleNum ; + "CIP_SimpleProgr_Init"(i_SimpleProgr:= "HMI_Local_CIP_Variables".Cip_Recipe.ActualLinkProgram.CIP_Simple_Prog[#i], + i_StepNumber:= "CIP_Program_Variables".General_Data.ActualStepNum, o_Step=> "CIP_Program_Variables".mCIP_ActualStep); + "CIP_Program_Variables".General_Data.mStepTimeValue := "CIP_Program_Variables".mCIP_ActualStep.CIP_StepTime ; + END_WHILE ; + "mSteppingUp" := FALSE ; + "mSteppingDown" := FALSE ; + IF #mStepDown_ONS THEN + IF "CIP_Program_Variables".General_Data.StepActualTime=0 THEN + "CIP_Program_Variables".General_Data.TotalElapsedTime := "CIP_Program_Variables".General_Data.TotalElapsedTime - "CIP_Program_Variables".General_Data.mStepTimeValue ; + ELSE + "CIP_Program_Variables".General_Data.TotalElapsedTime := "CIP_Program_Variables".General_Data.TotalElapsedTime - "CIP_Program_Variables".General_Data.StepActualTime ; + END_IF ; + "CIP_Program_Variables".General_Data.StepActualTime := 0 ; + END_IF ; + IF #Start THEN + "CIPLocal_ExecStep"() ; + END_IF ; + END_IF ; + "ONS_R"(Enable_ONS := ("HMI_Variables_Cmd".RecipeCIP.Download AND "HMI_Variables_Cmd".RecipeCIP.Work_Rec_is_Active_Recip) OR #mInizialize_ONS, + Aux_ONS := "mRecipeChanged_ONS", + ONS_R => #mRecipeChanged_ONS ); + IF #mRecipeChanged_ONS THEN + #mCIPTotalTime := 0 ; + FOR #i:=1 TO "CIP_Program_Variables".General_Data.CIPMaxSimpleNum DO + FOR #j:= 1 TO "CIP_Program_Variables".General_Data.CIPMaxStepNum DO + "CIP_SimpleProgr_Init"(i_SimpleProgr:= "HMI_Local_CIP_Variables".Cip_Recipe.ActualLinkProgram.CIP_Simple_Prog[#i],i_StepNumber:= #j, + o_Step=> "CIP_Program_Variables".mCIP_ActualStep); + #mCIPTotalTime := #mCIPTotalTime + "CIP_Program_Variables".mCIP_ActualStep.CIP_StepTime ; + END_FOR ; + END_FOR ; + "HMI_Local_CIP_Variables".CIP_AnalogValues._TotalTime := #mCIPTotalTime ; + END_IF ; + #mStepTotalTime := 0 ; + FOR #j:= 1 TO "CIP_Program_Variables".General_Data.CIPMaxStepNum DO + "CIP_SimpleProgr_Init"(i_SimpleProgr:= "HMI_Local_CIP_Variables".Cip_Recipe.ActualSimpleProgram, i_StepNumber:= #j, o_Step=> "CIP_Program_Variables".mCIP_ActualStep); + #mStepTotalTime := #mStepTotalTime + "CIP_Program_Variables".mCIP_ActualStep.CIP_StepTime ; + END_FOR ; + "HMI_Local_CIP_Variables".CIP_AnalogValues._StepTime := #mStepTotalTime ; + "HMI_Local_CIP_Variables".CIP_AnalogValues._StepElapsedTime := "CIP_Program_Variables".General_Data.mStepTotalActualTime ; + "HMI_Local_CIP_Variables".CIP_AnalogValues._ElapsedTime := LIMIT (MN:=0, IN:="CIP_Program_Variables".General_Data.TotalElapsedTime, MX:="CIP_Program_Variables".General_Data.TotalElapsedTime ) ; + "HMI_Local_CIP_Variables".CIP_AnalogValues._StepNum := "CIP_Program_Variables".General_Data.ActualSimpleNum ; + "HMI_Local_CIP_Variables".Cip_Recipe.ActualSimpleProgram.CIP_SimpleCode := "HMI_Local_CIP_Variables".Cip_Recipe.ActualLinkProgram.CIP_Simple_Prog["CIP_Program_Variables".General_Data.ActualSimpleNum].CIP_SimpleCode ; + "HMI_Local_CIP_Variables".CIP_SimpleEditType := "HMI_Local_CIP_Variables".Cip_Recipe.EditLinkProgram.CIP_Simple_Prog["HMI_Local_CIP_Variables".Cip_SimpleEditPhaseNum].CIP_SimpleCode ; + + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPLocal_ExecStep.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPLocal_ExecStep.md new file mode 100644 index 0000000..97fbb34 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPLocal_ExecStep.md @@ -0,0 +1,93 @@ +```pascal +FUNCTION "CIPLocal_ExecStep" : Void +{ S7_Optimized_Access := 'FALSE' } +VERSION : 0.0 + VAR_TEMP + i : Int; + END_VAR + + +BEGIN + + + "HMI_Alarms".gH_Status["CIP_Program_Variables".mCIP_ActualStep.CIP_StatusMsgCode]:= FALSE ; + IF "CLK_1.0S" THEN (* One Second Clock *) + IF "CIP_Program_Variables".General_Data.mStepTimeValue > "CIP_Program_Variables".General_Data.StepActualTime THEN + #i:= "CIP_Program_Variables".General_Data.ActualSimpleNum; + "HMI_Local_CIP_Variables".Cip_Recipe.ActualSimpleProgram := "HMI_Local_CIP_Variables".Cip_Recipe.ActualLinkProgram.CIP_Simple_Prog[#i] ; + "CIP_SimpleProgr_Init"(i_SimpleProgr:= "HMI_Local_CIP_Variables".Cip_Recipe.ActualSimpleProgram , i_StepNumber:= "CIP_Program_Variables".General_Data.ActualStepNum, o_Step=> "CIP_Program_Variables".mCIP_ActualStep); + "CIP_Program_Variables".Status.WaitEventRequest := "CIP_Program_Variables".mCIP_ActualStep.CIP_Control ; + + IF (%DB963.%DBW6 <> 0) AND ((%DB963.%DBW4 XOR %DB963.%DBW6) <> 0) THEN + "CIP_Program_Variables".Status.WaitAnyCond := TRUE ; + ELSE + "CIP_Program_Variables".Status.WaitAnyCond := FALSE ; + END_IF ; + + "CIP_Program_Variables".General_Data.SPConductivity := "HMI_Local_CIP_Variables".Cip_Recipe.ActualSimpleProgram.CIP_SetPoint_Cond ; + "CIP_Program_Variables".General_Data.SPTemperature := "HMI_Local_CIP_Variables".Cip_Recipe.ActualSimpleProgram.CIP_SetPoint_Temp ; + + IF NOT "CIP_Program_Variables".Status.Completed THEN + "CIP_Program_Variables".General_Data.TotalElapsedTime := "CIP_Program_Variables".General_Data.TotalElapsedTime + 1 ; + IF NOT "CIP_Program_Variables".CIP_Run.Wait THEN + "CIP_Program_Variables".General_Data.StepActualTime := "CIP_Program_Variables".General_Data.StepActualTime + 1 ; + "CIP_Program_Variables".General_Data.mStepTotalActualTime := "CIP_Program_Variables".General_Data.mStepTotalActualTime + 1 ; + END_IF ; + END_IF ; + ELSE + "CIPLocal_ProgStepUp"() ; + END_IF ; + END_IF ; + "HMI_Alarms".gH_Status["CIP_Program_Variables".mCIP_ActualStep.CIP_StatusMsgCode]:= TRUE ; + + (************************************************************************************************************) + (* Transfer the X in the Simple program i-th Step to the Sp Sustain Memory *) + (************************************************************************************************************) + + "gSP_CIP_Temp_En" :="CIP_Program_Variables".mCIP_ActualStep.CIP_Temp_En ; + "gSP_RVN301" :="CIP_Program_Variables".mCIP_ActualStep.CIP_RVN301 ; + "gSP_RVN302" :="CIP_Program_Variables".mCIP_ActualStep.CIP_RVN302 ; + "gSP_RVN301_1" :="CIP_Program_Variables".mCIP_ActualStep.CIP_RVN301 ; + "gSP_RVN302_1" :="CIP_Program_Variables".mCIP_ActualStep.CIP_RVN302 ; + "gSP_RVP303" :="CIP_Program_Variables".mCIP_ActualStep.CIP_RVP303 ; + "gSP_CIP_CO2_Inj" :="CIP_Program_Variables".mCIP_ActualStep.CIP_CO2_Inj ; + "gSP_AVM313" :="CIP_Program_Variables".mCIP_ActualStep.CIP_AVM313 ; + "gSP_AVN314" :="CIP_Program_Variables".mCIP_ActualStep.CIP_AVN314 ; + "gSP_AVM315" :="CIP_Program_Variables".mCIP_ActualStep.CIP_AVM315 ; + "gSP_AVP316" :="CIP_Program_Variables".mCIP_ActualStep.CIP_AVP316 ; + "gSP_AVM317" :="CIP_Program_Variables".mCIP_ActualStep.CIP_AVM317 ; + "gSP_AVM322" :="CIP_Program_Variables".mCIP_ActualStep.CIP_AVM322 ; + "gSP_AVM323" :="CIP_Program_Variables".mCIP_ActualStep.CIP_AVM323 ; + "gSP_AVP324" :="CIP_Program_Variables".mCIP_ActualStep.CIP_AVP324 ; + "gSP_AVN327" :="CIP_Program_Variables".mCIP_ActualStep.CIP_AVN327 ; + "gSP_AVS331" :="CIP_Program_Variables".mCIP_ActualStep.CIP_AVS331 ; + "gSP_AVS332" :="CIP_Program_Variables".mCIP_ActualStep.CIP_AVS332 ; + "gSP_AVS333" :="CIP_Program_Variables".mCIP_ActualStep.CIP_AVS333 ; + "gSP_AVS334" :="CIP_Program_Variables".mCIP_ActualStep.CIP_AVS334 ; + "gSP_AVS335" :="CIP_Program_Variables".mCIP_ActualStep.CIP_AVS335 ; + "gSP_AVS336" :="CIP_Program_Variables".mCIP_ActualStep.CIP_AVS336 ; + "gSP_AVS337" :="CIP_Program_Variables".mCIP_ActualStep.CIP_AVS337 ; + "gSP_AVS338" :="CIP_Program_Variables".mCIP_ActualStep.CIP_AVS338 ; + "gSP_AVP344" :="CIP_Program_Variables".mCIP_ActualStep.CIP_AVP344 ; + "gSP_AVM345" :="CIP_Program_Variables".mCIP_ActualStep.CIP_AVM345 ; + "gSP_AVP361" :="CIP_Program_Variables".mCIP_ActualStep.CIP_AVP361 ; + "gSP_AVM369" :="CIP_Program_Variables".mCIP_ActualStep.CIP_AVM369 ; + "gSP_AVM371" :="CIP_Program_Variables".mCIP_ActualStep.CIP_AVM371 ; + "gSP_AVM380" :="CIP_Program_Variables".mCIP_ActualStep.CIP_AVM380 ; + "gSP_AVM381" :="CIP_Program_Variables".mCIP_ActualStep.CIP_AVM381 ; + "gSP_AVM388" :="CIP_Program_Variables".mCIP_ActualStep.CIP_AVM388 ; + "gSP_AVM389" :="CIP_Program_Variables".mCIP_ActualStep.CIP_AVM389 ; + + "gSP_CIPRunning" :="CIP_Program_Variables".mCIP_ActualStep.CIP_CIPRunning ; + "gSP_CIPDrainRequest" :="CIP_Program_Variables".mCIP_ActualStep.CIP_CIPDrainRequest ; + "gSP_CIPHotPhase" :="CIP_Program_Variables".mCIP_ActualStep.CIP_CIPHotPhase ; + "gSP_HotWaterRequest" :="CIP_Program_Variables".mCIP_ActualStep.CIP_HOTWaterReq ; + "gSP_SendSodaRequest" :="CIP_Program_Variables".mCIP_ActualStep.CIP_SendSodaBack ; + + "gSP_PPN301" :="CIP_Program_Variables".mCIP_ActualStep.CIP_PPN301 ; + "gSP_SyrRoomPump" :="CIP_Program_Variables".mCIP_ActualStep.CIP_SyrRoomPump ; + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPLocal_ProgInizialize.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPLocal_ProgInizialize.md new file mode 100644 index 0000000..c436e5c --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPLocal_ProgInizialize.md @@ -0,0 +1,54 @@ +```pascal +// Block Type: FC +// Block Number: 1937 +// Original Network Languages: LAD + +FUNCTION "CIPLocal_ProgInizialize" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +BEGIN + + // Network 1: (Original Language: LAD) + + "CIP_Program_Variables"."General_Data"."ActualSimpleNum" := 1; + + // Network 2: (Original Language: LAD) + + "CIP_Program_Variables"."General_Data"."ActualStepNum" := 1; + + // Network 3: (Original Language: LAD) + + "CIP_Program_Variables"."General_Data"."StepActualTime" := 0; + + // Network 4: (Original Language: LAD) + + "CIP_Program_Variables"."General_Data"."mStepTotalActualTime" := 0; + + // Network 5: (Original Language: LAD) + + "CIP_Program_Variables"."General_Data"."TotalElapsedTime" := 0; + + // Network 6: MIX - (Original Language: LAD) + + IF "AUX TRUE" THEN + "gCIP_RecipePhaseLoadReq" := TRUE; + END_IF; + + IF "AUX TRUE" THEN + "CIP_Program_Variables"."Status"."Completed" := FALSE; + END_IF; + + IF "AUX TRUE" THEN + "CIP_Program_Variables"."Status"."WaitAnyCond" := FALSE; + END_IF; + + "CIP_Program_Variables"."Status"."Inizialized" := "AUX TRUE"; + + IF "AUX TRUE" THEN + "CIP_Program_Variables"."CIP_Run"."Reset" := FALSE; + END_IF; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPLocal_ProgStepDown.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPLocal_ProgStepDown.md new file mode 100644 index 0000000..5b65d7f --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPLocal_ProgStepDown.md @@ -0,0 +1,34 @@ +```pascal +FUNCTION "CIPLocal_ProgStepDown" : Void +{ S7_Optimized_Access := 'FALSE' } +VERSION : 0.0 + +BEGIN + + + IF "CIP_Program_Variables".General_Data.ActualSimpleNum >= 1 THEN + IF "CIP_Program_Variables".General_Data.ActualStepNum > 1 THEN + IF "CIP_Program_Variables".General_Data.StepActualTime <= 0 THEN + "CIP_Program_Variables".General_Data.ActualStepNum := "CIP_Program_Variables".General_Data.ActualStepNum - 1 ; + END_IF ; + ELSIF "CIP_Program_Variables".General_Data.ActualSimpleNum > 1 THEN + "CIP_Program_Variables".General_Data.ActualSimpleNum := "CIP_Program_Variables".General_Data.ActualSimpleNum - 1 ; + "CIP_Program_Variables".General_Data.ActualStepNum := "CIP_Program_Variables".General_Data.CIPMaxStepNum ; + "CIP_Program_Variables".General_Data.StepActualTime := 0 ; + END_IF ; + END_IF ; + + IF "CIP_Program_Variables".General_Data.ActualSimpleNum = 1 AND "CIP_Program_Variables".General_Data.ActualStepNum = 1 THEN + "CIP_Program_Variables".Status.Inizialized := TRUE ; + ELSE + "CIP_Program_Variables".Status.Inizialized := FALSE ; + END_IF ; + + IF "CIP_Program_Variables".Status.Completed THEN + "CIP_Program_Variables".Status.Completed := FALSE ; + END_IF ; + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPLocal_ProgStepUp.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPLocal_ProgStepUp.md new file mode 100644 index 0000000..97e9d23 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPLocal_ProgStepUp.md @@ -0,0 +1,40 @@ +```pascal +FUNCTION "CIPLocal_ProgStepUp" : Void +{ S7_Optimized_Access := 'FALSE' } +VERSION : 0.0 + +BEGIN + + + IF "CIP_Program_Variables".General_Data.ActualSimpleNum < "CIP_Program_Variables".General_Data.CIPMaxSimpleNum THEN + IF "CIP_Program_Variables".General_Data.ActualStepNum < "CIP_Program_Variables".General_Data.CIPMaxStepNum THEN + "CIP_Program_Variables".General_Data.ActualStepNum := "CIP_Program_Variables".General_Data.ActualStepNum + 1 ; + ELSIF "CIP_Program_Variables".General_Data.ActualStepNum = "CIP_Program_Variables".General_Data.CIPMaxStepNum THEN + "CIP_Program_Variables".General_Data.ActualSimpleNum := "CIP_Program_Variables".General_Data.ActualSimpleNum + 1 ; + "CIP_Program_Variables".General_Data.ActualStepNum := 1 ; + "CIP_Program_Variables".General_Data.mStepTotalActualTime := 0 ; + END_IF ; + ELSIF "CIP_Program_Variables".General_Data.ActualSimpleNum = "CIP_Program_Variables".General_Data.CIPMaxSimpleNum THEN + IF "CIP_Program_Variables".General_Data.ActualStepNum < "CIP_Program_Variables".General_Data.CIPMaxStepNum THEN + "CIP_Program_Variables".General_Data.ActualStepNum := "CIP_Program_Variables".General_Data.ActualStepNum + 1 ; + ELSIF "CIP_Program_Variables".General_Data.ActualStepNum = "CIP_Program_Variables".General_Data.CIPMaxStepNum THEN + IF "CIP_Program_Variables".General_Data.mStepTimeValue = 0 OR ("CIP_Program_Variables".General_Data.mStepTimeValue <= "CIP_Program_Variables".General_Data.StepActualTime) THEN + "CIP_Program_Variables".Status.Completed := TRUE ; + "CIP_Program_Variables".mCIP_ActualStep := "CIP_Program_Variables".mCIP_StepEmpty ; + END_IF ; + END_IF ; + END_IF ; + + IF "CIP_Program_Variables".Status.Inizialized THEN + "CIP_Program_Variables".Status.Inizialized := FALSE ; + END_IF ; + IF "CIP_Program_Variables".General_Data.mStepTimeValue > 0 AND "HMI_Local_CIP_Variables".Cip_Commands._ProgStepUp THEN + "CIP_Program_Variables".General_Data.TotalElapsedTime := "CIP_Program_Variables".General_Data.TotalElapsedTime + + LIMIT(MN :=0, IN:=("CIP_Program_Variables".General_Data.mStepTimeValue - "CIP_Program_Variables".General_Data.StepActualTime), MX:="CIP_Program_Variables".General_Data.mStepTimeValue) ; + END_IF ; + "CIP_Program_Variables".General_Data.StepActualTime := 0 ; + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPLocal_WaitEvent_Ctrl.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPLocal_WaitEvent_Ctrl.md new file mode 100644 index 0000000..0de7b04 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPLocal_WaitEvent_Ctrl.md @@ -0,0 +1,102 @@ +```pascal +// Block Type: FC +// Block Number: 1934 +// Original Network Languages: LAD + +FUNCTION "CIPLocal_WaitEvent_Ctrl" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + mCalc : Real; + mSPCondHigh : Real; +END_VAR + + #_2S : Bool; // Auto-generated temporary + #_3S : Bool; // Auto-generated temporary + #_5S : Bool; // Auto-generated temporary +BEGIN + + // Network 1: MIX - CIPLocal_WaitEvent_Ctrl (Original Language: LAD) + + "mCalc" := "CIP_Program_Variables"."General_Data"."SPTemperature" - "HMI_Instrument"."TTS305_1"."PVFiltered"; + + "mTempAcheavedDly"(IN := "CIP_Program_Variables"."Status"."WaitEventRequest"."Temperature_Ok" AND ("mCalc" < 2.0), PT := S5T#2S); // TODO: Declarar "mTempAcheavedDly" : TON; + + "CIP_Program_Variables"."Status"."WaitEventStatus"."Temperature_Ok" := "mTempAcheavedDly".Q; + + // Network 2: Local CIP: Wait "Product Tank 100% Level Achieved" (Original Language: LAD) + + "CIP_Program_Variables"."Status"."WaitEventStatus"."ProdTankMaxLev" := "gCIP_PrdTank_MaxLevel" AND "CIP_Program_Variables"."Status"."WaitEventRequest"."ProdTankMaxLev"; + + // Network 3: Local CIP: Wait "Syrup Tank 100% Level Achieved" (Original Language: LAD) + + "CIP_Program_Variables"."Status"."WaitEventStatus"."SyrupTankMaxLev" := "gCIP_SyrTank_Flood" AND "CIP_Program_Variables"."Status"."WaitEventRequest"."SyrupTankMaxLev"; + + // Network 4: Local CIP: Wait "Deaireator Tank 100% Level Achieved" (Original Language: LAD) + + "CIP_Program_Variables"."Status"."WaitEventStatus"."DeairTankMaxLev" := "gCIP_DeairTank_Flood" AND "CIP_Program_Variables"."Status"."WaitEventRequest"."DeairTankMaxLev"; + + // Network 5: SP COND FOR HIGH CONDUCTIVITY (mS) (Original Language: LAD) + + "mSPCondHigh" := "CIP_Program_Variables"."General_Data"."SPConductivity" / 1000.0; + + // Network 6: MIX - CIPLocal_WaitEvent_Ctrl (Original Language: LAD) + + "mCTS302AcheavedDly"(IN := "CIP_Program_Variables"."Status"."WaitEventRequest"."HighConductivity" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Conductimeter" AND ("HMI_Instrument"."CTS302"."PVFiltered" > "mSPCondHigh"), PT := S5T#5S); // TODO: Declarar "mCTS302AcheavedDly" : TON; + + "CIP_Program_Variables"."Status"."WaitEventStatus"."HighConductivity" := "mCTS302AcheavedDly".Q; + + // Network 7: MIX - CIPLocal_WaitEvent_Ctrl (Original Language: LAD) + + "mOpenAVS333_335TOF"(IN := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Conductimeter" AND (Eq("CIP_Program_Variables"."General_Data"."SPConductivity", 0.0) OR ("HMI_Instrument"."CTS302"."PVFiltered" < "mSPCondHigh")), PT := S5T#3S); // TODO: Declarar "mOpenAVS333_335TOF" : TON; + + "CIP_Program_Variables"."Status"."OpenAVS333_335Valve" := "mOpenAVS333_335TOF".Q; + + // Network 8: MIX - CIPLocal_WaitEvent_Ctrl (Original Language: LAD) + + "mCTS301AcheavedDly"(IN := "CIP_Program_Variables"."Status"."WaitEventRequest"."LowConductivity" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Conductimeter" AND ("HMI_Instrument"."CTS301"."PVFiltered" < "CIP_Program_Variables"."General_Data"."SPConductivity"), PT := S5T#5S); // TODO: Declarar "mCTS301AcheavedDly" : TON; + + "CIP_Program_Variables"."Status"."WaitEventStatus"."LowConductivity" := "mCTS301AcheavedDly".Q; + + // Network 9: Local CIP: Wait "Ready For CIP" (Original Language: LAD) + + "CIP_Program_Variables"."Status"."WaitEventStatus"."ReadyForCIP" := "gIN_FillerCIPRequest" AND "CIP_Program_Variables"."Status"."WaitEventRequest"."ReadyForCIP"; + + // Network 10: Local CIP: Wait "Drain Completed" (Original Language: LAD) + + "CIP_Program_Variables"."Status"."WaitEventStatus"."DrainCompleted" := "gIN_FillerCIPDrainCompl" AND "CIP_Program_Variables"."Status"."WaitEventRequest"."DrainCompleted"; + + // Network 11: From Filler CIP Change Ready (Original Language: LAD) + + "CIP_Program_Variables"."Status"."WaitEventStatus"."CIPChangeReady" := "gIN_FillerCIPChangeReady" AND "CIP_Program_Variables"."Status"."WaitEventRequest"."CIPChangeReady"; + + // Network 12: From Filler CIP Cycle Ended (Original Language: LAD) + + "CIP_Program_Variables"."Status"."WaitEventStatus"."CIPCycleEnded" := "gIN_FillerCIPCycleEnded" AND "CIP_Program_Variables"."Status"."WaitEventRequest"."CIPCycleEnded"; + + // Network 13: From CIP Unit: Hot Water Receiving (Original Language: LAD) + + "CIP_Program_Variables"."Status"."WaitEventStatus"."CIPHotWaterReceiving" := "gIN_CIP_HotWaterSending" AND "CIP_Program_Variables"."Status"."WaitEventRequest"."CIPHotWaterReceiving"; + + // Network 14: From CIP Unit: Hot Water Stop (Original Language: LAD) + + "CIP_Program_Variables"."Status"."WaitEventStatus"."CIPHotWaterStop" := "gIN_CIP_HotWaterSending" AND "CIP_Program_Variables"."Status"."WaitEventRequest"."CIPHotWaterStop"; + + // Network 15: From CIP Unit: Hot Water Stop (Original Language: LAD) + + IF "CIP_Program_Variables"."Status"."WaitEventRequest"."CIPHotWaterStop" THEN + "CIP_Program_Variables"."Status"."WaitEventStatus"."CIPHotWaterStop" := FALSE; + END_IF; + + // Network 16: Local CIP: Wait "CIP Unit Ready to receive Soda Back" (Original Language: LAD) + + "CIP_Program_Variables"."Status"."WaitEventStatus"."CIPFreeSodaTank" := "gIN_CIP_FreeSodaTank" AND "CIP_Program_Variables"."Status"."WaitEventRequest"."CIPFreeSodaTank"; + + // Network 17: Local CIP: Wait "System Low Level Acheaved" (Original Language: LAD) + + "CIP_Program_Variables"."Status"."WaitEventStatus"."CIPLowLevel" := "gCIP_SystemLowLevel" AND "CIP_Program_Variables"."Status"."WaitEventRequest"."CIPLowLevel"; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPMain.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPMain.md new file mode 100644 index 0000000..fc6f0ac --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPMain.md @@ -0,0 +1,107 @@ +```pascal +// Block Type: FC +// Block Number: 1930 +// Original Network Languages: LAD + +FUNCTION "CIPMain" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + #_6S : Bool; // Auto-generated temporary +END_VAR + +BEGIN + + // Network 1: CIP - Low pressure (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" THEN + CIPLocal(); + END_IF; + + // Network 2: CIP - Product Tank Low Pressure (Original Language: LAD) + + "gCIP_PrdTank_PressLow" := "HMI_PID"."RVM301"."Pv" < 1.0; + + // Network 3: CIP - Product Tank Low Pressure (Original Language: LAD) + + IF "gBlenderCIPMode" THEN + "gCIP_PrdTank_PressLow" := FALSE; + END_IF; + + // Network 4: CIP Completed Signal (Original Language: LAD) + + // PBox SymPy processed, logic in consumer + "mCIP_CompletedONS" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" AND "gIN_CIP_CIPCompleted"; // P_TRIG("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" AND "gIN_CIP_CIPCompleted") - Mem: "mCIP_CompletedONS" + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" AND "gIN_CIP_CIPCompleted" AND NOT "mCIP_CompletedONS" THEN + "CIP_Program_Variables"."Status"."Completed" := TRUE; + END_IF; + + // Network 5: CIP Completed Signal (Original Language: LAD) + + IF "gBlenderCIPMode" OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" AND "gCIP_BlenderDrainDone") THEN + "CIP_Program_Variables"."Status"."Completed" := FALSE; + END_IF; + + IF "gBlenderCIPMode" OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" AND "gCIP_BlenderDrainDone") THEN + "CIP_Program_Variables"."Status"."BlenderDrainRunning" := FALSE; + END_IF; + + // Network 6: CIP Flood (Original Language: LAD) + + CIPMain_Flood(); + + // Network 7: CIp Total Drain (Original Language: LAD) + + CIPMain_Total_Drain(); + + // Network 8: Blender total Drain In CIP Running (Original Language: LAD) + + "HMI_Variables_Status"."Procedures"."CIP_BlenderDrainRun" := "CIP_Program_Variables"."Status"."BlenderDrainRunning"; + + // Network 9: Blender Empty (Original Language: LAD) + + IF "CIP_Program_Variables"."Status"."CausticRecoveryRun" AND "gBlenderEmpty" THEN + "CIP_Program_Variables"."Status"."BlenderEmpty" := TRUE; + END_IF; + + // Network 10: MIX - To CIP Room (Original Language: LAD) + + "gOUT_CIPChangeReady" := "gIN_FillerCIPChangeReady"; + + // Network 11: Blender Empty (Original Language: LAD) + + "mBlenderEmprtyTON"(IN := "CIP_Program_Variables"."Status"."CausticRecoveryRun", PT := S5T#6S); // TODO: Declarar "mBlenderEmprtyTON" : TON; + + IF "mBlenderEmprtyTON".Q THEN + "CIP_Program_Variables"."Status"."BlenderEmpty" := FALSE; + END_IF; + + // Network 12: Started (Original Language: LAD) + + IF "gBlenderCIPMode" AND "Procedure_Variables"."Blender_Run"."Latch" AND "gIN_FillerCIPRequest" THEN + "CIP_Program_Variables"."Status"."Started" := TRUE; + END_IF; + + // Network 13: Started (Original Language: LAD) + + IF "gOUT_FillerCIPCompleted" OR "gBlenderCIPMode" THEN + "CIP_Program_Variables"."Status"."Started" := FALSE; + END_IF; + + // Network 14: Alarms (Original Language: LAD) + + "HMI_Alarms"."gH_Status" := "gIN_CIP_DrainRequest" AND "gBlenderCIPMode"; + + "HMI_Alarms"."gH_Status" := "DI_CIP_CIP_Enable" AND "HMI_Alarms"."gH_Status" AND "gBlenderCIPMode"; + + "HMI_Alarms"."gH_Status" := ("HMI_Alarms"."gH_Status" AND "gBlenderCIPMode") OR ("DI_CIP_End" AND "gBlenderCIPMode"); + + "HMI_Alarms"."gH_Status" := "DI_CIP_End" AND "DI_CIP_Fault" AND "gBlenderCIPMode"; + + "HMI_Alarms"."gH_Status" := "DI_CIP_End" AND "DI_Flr1_CIP/RinseFiller" AND "gBlenderCIPMode"; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPMain_Flood.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPMain_Flood.md new file mode 100644 index 0000000..8fade4e --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPMain_Flood.md @@ -0,0 +1,146 @@ +```pascal +// Block Type: FC +// Block Number: 1931 +// Original Network Languages: LAD + +FUNCTION "CIPMain_Flood" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + mProdTankFloodReq : Bool; + mSyrTankFloodReq : Bool; + mDeairTankFloodReq : Bool; + mSyrTankFlooded : Bool; +END_VAR + + #_0MS : Bool; // Auto-generated temporary + #_1M_15S : Bool; // Auto-generated temporary + #_20S : Bool; // Auto-generated temporary +BEGIN + + // Network 1: HMI Variables Cmd (Original Language: LAD) + + // Edge Logic handled by Coil 26 + "M19062" := "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_CIP_TM301FloodReq"; // P_TRIG("HMI_Variables_Cmd"."Commands_From_HMI"."CMD_CIP_TM301FloodReq") - Mem: "M19062" + + "mProdTankFloodReq" := "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_CIP_TM301FloodReq" AND NOT "M19062"; + "M19062" := "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_CIP_TM301FloodReq"; // P_TRIG("HMI_Variables_Cmd"."Commands_From_HMI"."CMD_CIP_TM301FloodReq") - Mem: "M19062" + + // Network 2: CIP Product Tank Flood Running (Original Language: LAD) + + "HMI_Variables_Status"."Procedures"."CIP_ProdTankFloodRun" := ("gIN_CIP_TankFilling" AND "Interlocking_Variables"."FILLER_MIXER_RECEIVE"."CIP_System_Flooded" AND "gCIP_PrdTank_Flood" AND "gBlenderCIPMode") OR ("gIN_CIP_TankFilling" AND "Interlocking_Variables"."SIDEL_FILLER_REC_DATA"."CIP_Cycle_Ended" AND "gCIP_PrdTank_Flood" AND "gBlenderCIPMode"); + + // Network 3: CIP Flood (Original Language: LAD) + + "mPrdTank_Flood"(IN := "gCIP_PrdTank_MaxLevel" AND ("HMI_Variables_Status"."Procedures"."CIP_ProdTankFloodRun" OR ("gIN_CIP_TankFilling" AND "gCIP_PrdTank_Flood")), PT := S5T#0MS); // TODO: Declarar "mPrdTank_Flood" : TON; + + "gCIP_PrdTank_Flood" := "mPrdTank_Flood".Q; + + "HMI_Variables_Status"."Procedures"."CIP_ProdTankFloodDone" := "mPrdTank_Flood".Q; + + // Network 4: From CIP Room Flood Request (Original Language: LAD) + + // Edge Logic handled by Coil 26 + "M19063" := "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_CIP_TP301FloodReq"; // P_TRIG("HMI_Variables_Cmd"."Commands_From_HMI"."CMD_CIP_TP301FloodReq") - Mem: "M19063" + + "mSyrTankFloodReq" := "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_CIP_TP301FloodReq" AND NOT "M19063"; + "M19063" := "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_CIP_TP301FloodReq"; // P_TRIG("HMI_Variables_Cmd"."Commands_From_HMI"."CMD_CIP_TP301FloodReq") - Mem: "M19063" + + // Network 5: CIP Syrup Tank Flood Running (Original Language: LAD) + + "HMI_Variables_Status"."Procedures"."CIP_SyrTankFloodRun" := ("mSyrTankFloodReq" AND "HMI_Variables_Status"."Procedures"."CIP_SyrTankFloodRun" AND "gCIP_SyrTank_Flood" AND "gBlenderCIPMode") OR ("gCIP_SyrTank_Flood" AND "gIN_CIP_TankFilling" AND "gCIP_PrdTank_Flood" AND "gBlenderCIPMode"); + + // Network 6: Procedure auxiliary variable (Original Language: LAD) + + IF "HMI_Variables_Status"."Procedures"."CIP_SyrTankFloodRun" AND "Procedure_Variables"."Blender_Run"."Latch" THEN + "gSP_EV04" := TRUE; + END_IF; + + IF "HMI_Variables_Status"."Procedures"."CIP_SyrTankFloodRun" AND "Procedure_Variables"."Blender_Run"."Latch" THEN + "gSP_RVN301" := TRUE; + END_IF; + + IF "HMI_Variables_Status"."Procedures"."CIP_SyrTankFloodRun" AND "Procedure_Variables"."Blender_Run"."Latch" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" THEN + "gSP_PPN305" := TRUE; + END_IF; + + IF "HMI_Variables_Status"."Procedures"."CIP_SyrTankFloodRun" AND "Procedure_Variables"."Blender_Run"."Latch" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" THEN + "gSP_RVN301_1" := TRUE; + END_IF; + + IF "HMI_Variables_Status"."Procedures"."CIP_SyrTankFloodRun" AND "Procedure_Variables"."Blender_Run"."Latch" THEN + "gSP_PPN301" := TRUE; + END_IF; + + IF "HMI_Variables_Status"."Procedures"."CIP_SyrTankFloodRun" AND "Procedure_Variables"."Blender_Run"."Latch" THEN + "gSP_AVM317" := TRUE; + END_IF; + + IF "HMI_Variables_Status"."Procedures"."CIP_SyrTankFloodRun" AND "Procedure_Variables"."Blender_Run"."Latch" THEN + "gSP_AVM389" := TRUE; + END_IF; + + IF "HMI_Variables_Status"."Procedures"."CIP_SyrTankFloodRun" AND "Procedure_Variables"."Blender_Run"."Latch" THEN + "gSP_AVP361" := TRUE; + END_IF; + + // Network 7: Tank Flooded (Original Language: LAD) + + "mSyrTankFlooded" := "HMI_Instrument"."LTP303"."PVFiltered" > 99.0; + + // Network 8: CIP Flood (Original Language: LAD) + + "mSyrTank_Flood"(IN := ("HMI_Variables_Status"."Procedures"."CIP_SyrTankFloodRun" AND "HMI_Digital"."LAL_S3"."Filtered") OR ("gCIP_SyrTank_Flood" AND "gIN_CIP_TankFilling"), PT := S5T#20S); // TODO: Declarar "mSyrTank_Flood" : TON; + + "gCIP_SyrTank_Flood" := "mSyrTankFlooded" OR "mSyrTank_Flood".Q; + + "HMI_Variables_Status"."Procedures"."CIP_SyrTankFloodDone" := "mSyrTankFlooded" OR "mSyrTank_Flood".Q; + + // Network 9: ProdTankFloodREQ FP (Original Language: LAD) + + // Edge Logic handled by Coil 26 + "M19064" := "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_CIP_TN301FloodReq"; // P_TRIG("HMI_Variables_Cmd"."Commands_From_HMI"."CMD_CIP_TN301FloodReq") - Mem: "M19064" + + "mDeairTankFloodReq" := "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_CIP_TN301FloodReq" AND NOT "M19064"; + "M19064" := "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_CIP_TN301FloodReq"; // P_TRIG("HMI_Variables_Cmd"."Commands_From_HMI"."CMD_CIP_TN301FloodReq") - Mem: "M19064" + + // Network 10: CIP Deaerator Tank Flood Running (Original Language: LAD) + + "HMI_Variables_Status"."Procedures"."CIP_DeairTankFloodRun" := ("mDeairTankFloodReq" AND "HMI_Variables_Status"."Procedures"."CIP_DeairTankFloodRun" AND "gCIP_DeairTank_Flood" AND "gBlenderCIPMode") OR ("gCIP_SyrTank_Flood" AND "gIN_CIP_TankFilling" AND "gCIP_DeairTank_Flood" AND "gCIP_PrdTank_Flood" AND "gBlenderCIPMode") OR ("gIN_CIP_TankFilling" AND "gSyrupRoomEn" AND "gCIP_DeairTank_Flood" AND "gCIP_PrdTank_Flood" AND "gBlenderCIPMode"); + + // Network 11: CIP Flood (Original Language: LAD) + + "mDeairTank_Flood"(IN := ("gIN_CIP_TankFilling" AND "gCIP_DeairTank_Flood") OR ("HMI_Variables_Status"."Procedures"."CIP_DeairTankFloodRun" AND "HMI_Digital"."LSN301L"."Filtered"), PT := S5T#1M_15S); // TODO: Declarar "mDeairTank_Flood" : TON; + + // Network 12: CIP Flood (Original Language: LAD) + + "mDeairTank2_Flood"(IN := ("gIN_CIP_TankFilling" AND "gCIP_DeairTank_Flood") OR ("HMI_Variables_Status"."Procedures"."CIP_DeairTankFloodRun" AND "HMI_Digital"."LSN302L"."Filtered"), PT := S5T#1M_15S); // TODO: Declarar "mDeairTank2_Flood" : TON; + + // Network 13: CIP - Deaireator Tank Flood (Original Language: LAD) + + "gCIP_DeairTank_Flood" := ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" AND "mDeairTank_Flood") OR ("mDeairTank_Flood" AND "mDeairTank2_Flood"); + + "HMI_Variables_Status"."Procedures"."CIP_DeairTankFloodDone" := ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" AND "mDeairTank_Flood") OR ("mDeairTank_Flood" AND "mDeairTank2_Flood"); + + // Network 14: Procedure auxiliary variable (Original Language: LAD) + + IF "Procedure_Variables"."Blender_Run"."Latch" AND "HMI_Variables_Status"."Procedures"."CIP_DeairTankFloodRun" AND "mDeairTank_Flood" THEN + "gSP_RVN302" := TRUE; + END_IF; + + IF "Procedure_Variables"."Blender_Run"."Latch" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" AND "HMI_Variables_Status"."Procedures"."CIP_DeairTankFloodRun" AND "mDeairTank_Flood" THEN + "gSP_PPN305" := TRUE; + END_IF; + + IF "Procedure_Variables"."Blender_Run"."Latch" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" AND "HMI_Variables_Status"."Procedures"."CIP_DeairTankFloodRun" AND "mDeairTank_Flood" THEN + "gSP_RVN301_1" := TRUE; + END_IF; + + IF "Procedure_Variables"."Blender_Run"."Latch" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" AND "HMI_Variables_Status"."Procedures"."CIP_DeairTankFloodRun" AND "mDeairTank_Flood" THEN + "gSP_RVN302_1" := TRUE; + END_IF; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPMain_Total_Drain.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPMain_Total_Drain.md new file mode 100644 index 0000000..42781ca --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPMain_Total_Drain.md @@ -0,0 +1,146 @@ +```pascal +// Block Type: FC +// Block Name (Original): CIPMain_Total Drain +// Block Number: 1932 +// Original Network Languages: LAD + +FUNCTION "CIPMain_Total_Drain" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + mCIPTotalDrainReq : Bool; + mDrainEnd : Bool; +END_VAR + + #_10M : Bool; // Auto-generated temporary + #_60s : Bool; // Auto-generated temporary +BEGIN + + // Network 1: Request (Original Language: LAD) + + "mCIPTotalDrainReq" := "gBlenderCIPMode" AND "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_CIP_TotalDrainReq" AND "CIP_Program_Variables"."CIP_Run"."Latch"; + + // Network 2: End (Original Language: LAD) + + // Edge Logic handled by Coil 30 + "M19061" := "gBlenderCIPMode" AND "CIP_Program_Variables"."CIP_Run"."Latch" AND "gIN_CIP_DrainRequest"; // N_TRIG("gBlenderCIPMode" AND "CIP_Program_Variables"."CIP_Run"."Latch" AND "gIN_CIP_DrainRequest") - Mem: "M19061" + + "mDrainEnd" := ("M19061" AND NOT "gBlenderCIPMode") OR ("M19061" AND NOT "CIP_Program_Variables"."CIP_Run"."Latch") OR ("M19061" AND NOT "gIN_CIP_DrainRequest"); + "M19061" := "gBlenderCIPMode" AND "CIP_Program_Variables"."CIP_Run"."Latch" AND "gIN_CIP_DrainRequest"; // N_TRIG("gBlenderCIPMode" AND "CIP_Program_Variables"."CIP_Run"."Latch" AND "gIN_CIP_DrainRequest") - Mem: "M19061" + + // Network 3: Running (Original Language: LAD) + + "CIP_Program_Variables"."Status"."BlenderDrainRunning" := ("gBlenderCIPMode" AND "gIN_CIP_DrainRequest") OR ("gBlenderCIPMode" AND "gIN_CIP_CIPCompleted" AND "Disable_Bit"); + + // Network 4: Blender Drain T (Original Language: LAD) + + "mBlenderDrainTimer"(IN := "CIP_Program_Variables"."Status"."BlenderDrainRunning", PT := S5T#10M); // TODO: Declarar "mBlenderDrainTimer" : TON; + + // Network 5: CIP - Drain (Original Language: LAD) + + "mBlenderDrainTimerDelay"(IN := "gBlenderEmpty", PT := S5T#60s); // TODO: Declarar "mBlenderDrainTimerDelay" : TON; + + "gCIP_BlenderDrainDone" := "mBlenderDrainTimerDelay".Q OR "mBlenderDrainTimer"; + + "HMI_Variables_Status"."Procedures"."CIP_BlenderDrainDone" := "mBlenderDrainTimerDelay".Q OR "mBlenderDrainTimer"; + + // Network 6: Procedure auxiliary variable (Original Language: LAD) + + IF "gOUT_PPN301_Run" AND "gOUT_PPN305_Run" AND "CIP_Program_Variables"."Status"."BlenderDrainRunning" THEN + "gSP_AVN314" := TRUE; + END_IF; + + IF "gOUT_PPN301_Run" AND "gOUT_PPN305_Run" AND "CIP_Program_Variables"."Status"."BlenderDrainRunning" THEN + "gSP_AVP316" := TRUE; + END_IF; + + // Network 7: Buffer Tank Empty (Original Language: LAD) + + // Network 7 did not produce printable SCL code. + + // Network 8: Procedure auxiliary variable (Original Language: LAD) + + IF "CIP_Program_Variables"."Status"."BlenderDrainRunning" THEN + "gSP_AVM323" := TRUE; + END_IF; + + IF "CIP_Program_Variables"."Status"."BlenderDrainRunning" THEN + "gSP_AVP324" := TRUE; + END_IF; + + IF "CIP_Program_Variables"."Status"."BlenderDrainRunning" THEN + "gSP_AVP389" := TRUE; + END_IF; + + IF "CIP_Program_Variables"."Status"."BlenderDrainRunning" THEN + "gSP_AVP390" := TRUE; + END_IF; + + IF "CIP_Program_Variables"."Status"."BlenderDrainRunning" THEN + "gSP_AVM317" := TRUE; + END_IF; + + IF "CIP_Program_Variables"."Status"."BlenderDrainRunning" THEN + "gSP_AVN327" := TRUE; + END_IF; + + IF "CIP_Program_Variables"."Status"."BlenderDrainRunning" THEN + "gSP_AVP344" := TRUE; + END_IF; + + IF "CIP_Program_Variables"."Status"."BlenderDrainRunning" THEN + "gSP_AVP361" := TRUE; + END_IF; + + IF "CIP_Program_Variables"."Status"."BlenderDrainRunning" THEN + "gSP_AVM389" := TRUE; + END_IF; + + IF "CIP_Program_Variables"."Status"."BlenderDrainRunning" THEN + "gSP_AVM372" := TRUE; + END_IF; + + IF "CIP_Program_Variables"."Status"."BlenderDrainRunning" THEN + "gSP_AVM388" := TRUE; + END_IF; + + IF "CIP_Program_Variables"."Status"."BlenderDrainRunning" THEN + "gSP_AVM330" := TRUE; + END_IF; + + IF "CIP_Program_Variables"."Status"."BlenderDrainRunning" THEN + "gSP_AVM385" := TRUE; + END_IF; + + IF "CIP_Program_Variables"."Status"."BlenderDrainRunning" THEN + "gSP_AVM386" := TRUE; + END_IF; + + IF "CIP_Program_Variables"."Status"."BlenderDrainRunning" THEN + "gSP_AVM369" := TRUE; + END_IF; + + IF "CIP_Program_Variables"."Status"."BlenderDrainRunning" THEN + "gSP_AVM322" := TRUE; + END_IF; + + IF "CIP_Program_Variables"."Status"."BlenderDrainRunning" THEN + "gSP_AVM315" := TRUE; + END_IF; + + IF "CIP_Program_Variables"."Status"."BlenderDrainRunning" THEN + "gSP_AVM345" := TRUE; + END_IF; + + IF "CIP_Program_Variables"."Status"."BlenderDrainRunning" THEN + "gSP_AVM353" := TRUE; + END_IF; + + IF "CIP_Program_Variables"."Status"."BlenderDrainRunning" THEN + "gSP_AVM362" := TRUE; + END_IF; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipeManagement.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipeManagement.md new file mode 100644 index 0000000..53f9727 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipeManagement.md @@ -0,0 +1,565 @@ +```pascal +// Block Type: FB +// Block Number: 1799 +// Original Network Languages: STL +// Block Comment: +// Machine CIP Recipe Management +// DB1003.DBB246 -> Active Recipe (DB124) +// DB1003.DBB2 -> Working Recipe (Edit, Copy, Erase) (DB400) +// DB963.DBB48 -> Working Recipe (Data Save) +// DB501 -:- DB530 -> Recipe 1-:-30 data + +FUNCTION_BLOCK "CIPRecipeManagement" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + HMI_Recipe_Main_Page : Bool; + HMI_Recipe_Page_Running : Bool; + Active_Recipe_Start : Bool; + Edit : Bool; + Write : Bool; + Read : Bool; + Delete : Bool; + Copy : Bool; + Upload : Bool; + UploadPC : Bool; + Download : Bool; + Max_Recipe_Number : Int; +END_VAR + +VAR_OUTPUT + Save_Requested : Bool; + Work_Rec_is_Active_Recip : Bool; + Copy_Rec_is_Active_Recip : Bool; + Recipe_Activated : Bool; +END_VAR + +VAR_INOUT + Active_Recipe_Running : Int; + Active_Recipe_Req : Int; + Work_Recipe : Int; + Copy_to : Int; +END_VAR + +VAR_STAT + Active_Recipe_First : Bool; + Active_Recipe_Start_FP : Bool; + Active_Recipe_Run : Bool; + Active_Recipe_Source_DB : Int; + Read_FP : Bool; + Read_Start : Bool; + Read_First_FP : Bool; + Read_First_Start : Bool; + Read_Change : Bool; + Work_Recipe_Save : Int; + Work_Recipe_Source_DB : Int; + Loop_Count : Int; + Delete_FP : Bool; + Delete_Start : Bool; + Delete_Write : Bool; + Copy_FP : Bool; + Copy_Request : Bool; + Copy_Start : Bool; + Copy_Recipe_Source_DB : Int; + Copy_Write : Bool; + Write_FP : Bool; + Write_Start : Bool; + Write_REQ : Bool; + Save_Active_Recipe : Bool; + Recipe_Destination_DB : Int; + Save_requested_FP : Bool; + Save_requested_veri : Bool; + Save_requested_read_FP : Bool; + Save_requested_read_veri : Bool; + Read_act_BUSY : Bool; + Read_wrk_BUSY : Bool; + Read_wrk_Running : Bool; + Write_BUSY : Bool; + Upload_FP : Bool; + Upload_Start : Bool; + Download_FP : Bool; + Download_Start : Bool; + Recipe_Activated_FN : Bool; + Save_requested_upldPC_FP : Bool; + Save_requested_upldPC_ve : Bool; + mUploadPC : Bool; +END_VAR + +VAR_TEMP + Active_Recipe_Source : Int; + Work_Recipe_Source : Int; + Recipe_Destination : Int; + Read_act_DB : "Any"; + Read_act_RET_VAL : Int; + Read_wrk_REQ : Bool; + Read_wrk_DB : "Any"; + Read_wrk_RET_VAL : Int; + Write_DB : "Any"; + Write_RET_VAL : Int; + Buffer_Pointer : DInt; + mAux : Bool; + TUDT900 : STRUCT + _LinkName : String[32]; + CIP_Simple_Prog : STRUCT + CIP_SimpleCode : Int; + CIP_SetPoint_Temp : Real; + CIP_SetPoint_Cond : Real; + CIP_SetPoint_Time : Int; + CIP_Chemical : "Struct"; + CIP_HotWaterPreLoad : Bool; + CIP_ChemicalRecovery : Bool; + CIP_WaterRecovery : Bool; + END_STRUCT; + + END_STRUCT; + + End_UDT900 : Byte; + Lenght_UDT900 : Int; +END_VAR + +BEGIN + + // Network 1: (Original Language: STL) + // Active Recipe Request Number Control + + // --- BEGIN STL Network 1 --- + + CALL "LIMIT_I" + + L _ERR_CONST_ + L _ERR_CONST_ + SUB_D + SRD 3 + T "Lenght_UDT900" + + // --- END STL Network 1 --- + + // Network 2: (Original Language: STL) + // Active Recipe Number Control + + // --- BEGIN STL Network 2 --- + + L "Active_Recipe_Running" + L 1 + LT_I + JC aact + L "Active_Recipe_Running" + L "Max_Recipe_Number" + GT_I + JC aact + JU bact + aact: S "Active_Recipe_First" + bact: CALL "LIMIT_I" + + // --- END STL Network 2 --- + + // Network 3: MIX - (Original Language: STL) + // Active Recipe Number Start + + // --- BEGIN STL Network 3 --- + + A "Active_Recipe_Start" + Rise "Active_Recipe_Start_FP" + = "Active_Recipe_Run" + + A "Active_Recipe_Run" + O "Active_Recipe_First" + O "Read_act_BUSY" + JC Rrun + JU Erun + Rrun: R "Active_Recipe_First" + L "Active_Recipe_Req" + T "Active_Recipe_Running" + ADD 500 + T "Active_Recipe_Source_DB" + + LAR1 _ERR_CONST_ + L BYTE#16#10 + T LocalB[AR1,P#0.0] + L BYTE#16#02 + T LocalB[AR1,P#1.0] + L "Lenght_UDT900" + T LocalW[AR1,P#2.0] + L "Active_Recipe_Source_DB" + T LocalW[AR1,P#4.0] + L P#DBX0.0 + T LocalD[AR1,P#6.0] + CALL _Call_? + Erun: NOP_0 + + A "Read_act_BUSY" + Fall "Recipe_Activated_FN" + = "Recipe_Activated" + + // --- END STL Network 3 --- + + // Network 4: (Original Language: STL) + // Work Recipe Number Control + + // --- BEGIN STL Network 4 --- + + CALL "LIMIT_I" + + L "Work_Recipe" + L "Active_Recipe_Running" + EQ_I + = "Work_Rec_is_Active_Recip" + + // --- END STL Network 4 --- + + // Network 5: (Original Language: STL) + // Work Recipe READ (Data Uploading from archive) + + // --- BEGIN STL Network 5 --- + + A "Read" + O "HMI_Recipe_Page_Running" + Rise "Read_FP" + S "Read_Start" + L "Work_Recipe_Save" + L "Work_Recipe" + NE_I + = "Read_Change" + + A "Read_Change" + O "Read_Start" + = "Read_wrk_REQ" + + A "Read_wrk_REQ" + JC Rupl + A "Read_wrk_BUSY" + O "Read_wrk_Running" + JC Cupl + JU Eupl + Rupl: NOP_0 + A "mUploadPC" + JC Eupl + L "Work_Recipe" + ADD 500 + T "Work_Recipe_Source_DB" + + Cupl: LAR1 _ERR_CONST_ + L BYTE#16#10 + T LocalB[AR1,P#0.0] + L BYTE#16#02 + T LocalB[AR1,P#1.0] + L "Lenght_UDT900" + T LocalW[AR1,P#2.0] + L "Work_Recipe_Source_DB" + T LocalW[AR1,P#4.0] + L P#DBX0.0 + T LocalD[AR1,P#6.0] + CALL _Call_? + A "Read_wrk_BUSY" + S "Read_wrk_Running" + + A "Read_wrk_Running" + AN "Read_wrk_BUSY" + JC Dupl + JU Eupl + Dupl: R "Read_Start" + R "Read_wrk_Running" + L "Work_Recipe" + T "Work_Recipe_Save" + + L "Work_Recipe_Save" + L 34 + MUL_I + ADD 576 + SLW 3 + T "Buffer_Pointer" + LAR1_ACCU1 + L "HMI_Local_CIP_Variables".Cip_Recipe.EditLinkProgram._LinkName[32] + AUF "HMI_Local_CIP_Variables" + T DBD[AR1,P#0.0] + ADDAR1 P#4.0 + L DB1003.DBD6.0 + AUF "HMI_Local_CIP_Variables" + T DBD[AR1,P#0.0] + ADDAR1 P#4.0 + L DB1003.DBD10.0 + AUF "HMI_Local_CIP_Variables" + T DBD[AR1,P#0.0] + ADDAR1 P#4.0 + L DB1003.DBD14.0 + AUF "HMI_Local_CIP_Variables" + T DBD[AR1,P#0.0] + ADDAR1 P#4.0 + L DB1003.DBD18.0 + AUF "HMI_Local_CIP_Variables" + T DBD[AR1,P#0.0] + ADDAR1 P#4.0 + L DB1003.DBD22.0 + AUF "HMI_Local_CIP_Variables" + T DBD[AR1,P#0.0] + ADDAR1 P#4.0 + L DB1003.DBD26.0 + AUF "HMI_Local_CIP_Variables" + T DBD[AR1,P#0.0] + ADDAR1 P#4.0 + L DB1003.DBD30.0 + AUF "HMI_Local_CIP_Variables" + T DBD[AR1,P#0.0] + LAR1 P#0.0 + + L "Lenght_UDT900" + L 2 + DIV_I + Bupl: T "Loop_Count" + AUF "HMI_Local_CIP_Variables" + L DBW[AR1,P#2.0] + AUF "CIP_Program_Variables" + T DBW[AR1,P#50.0] + ADDAR1 P#2.0 + L "Loop_Count" + LOOP Bupl + Eupl: NOP_0 + + // --- END STL Network 5 --- + + // Network 6: (Original Language: STL) + // Work Recipe Data DELETE (Erase DB500 Data + Write in Work_Recipe_Source) + + // --- BEGIN STL Network 6 --- + + A "Delete" + Rise "Delete_FP" + = "Delete_Start" + + A "Delete_Start" + AN "Work_Rec_is_Active_Recip" + AN "Save_Requested" + AN "Write" + AN "Write_BUSY" + JC Rdel + JU Edel + Rdel: LAR1 P#0.0 + L "Lenght_UDT900" + Bdel: T "Loop_Count" + L "Work_Recipe_Source_DB" + T "Work_Recipe_Source" + L DINT#0 + AUF "HMI_Local_CIP_Variables" + T DBW[AR1,P#2.0] + ADDAR1 P#2.0 + L "Loop_Count" + LOOP Bdel + SET + S "Delete_Write" + Edel: NOP_0 + + // --- END STL Network 6 --- + + // Network 7: (Original Language: STL) + // Work Recipe Data COPY (DB1008 Data Write to different Recipe DB + // Copy_Recipe_Source_DB) + + // --- BEGIN STL Network 7 --- + + CALL "LIMIT_I" + + A "Copy" + Rise "Copy_FP" + = "Copy_Request" + + L "Copy_to" + L "Active_Recipe_Running" + EQ_I + = "Copy_Rec_is_Active_Recip" + + AN "Copy_Rec_is_Active_Recip" + AN "Save_Requested" + AN "Write" + AN "Write_BUSY" + A "Copy_Request" + = "Copy_Start" + + A "Copy_Start" + JC Ccop + JU Ecop + Ccop: L "Copy_to" + ADD 500 + T "Copy_Recipe_Source_DB" + S "Copy_Write" + Ecop: NOP_0 + + // --- END STL Network 7 --- + + // Network 8: (Original Language: STL) + // Work Recipe WRITE (Data Downloading to archive) + + // --- BEGIN STL Network 8 --- + + A "Write" + Rise "Write_FP" + = "Write_Start" + + A "Write_Start" + O "Delete_Write" + O "Copy_Write" + AN "Write_BUSY" + = "Write_REQ" + + A "Write_Start" + O "Delete_Write" + AN "Write_BUSY" + JC Rdow + A "Write_BUSY" + JC Cdow + A "Copy_Write" + JC CoDB + JU Edow + CoDB: R "Copy_Write" + L "Copy_Recipe_Source_DB" + T "Recipe_Destination_DB" + L "Copy_to" + JU Copy + Rdow: R "Save_Requested" + R "Delete_Write" + R "mUploadPC" + L "Work_Recipe_Source_DB" + T "Recipe_Destination_DB" + + L "Work_Recipe_Save" + L "Active_Recipe_Running" + EQ_I + = "Save_Active_Recipe" + + LAR1 P#0.0 + L "Lenght_UDT900" + L 2 + DIV_I + Bdow: T "Loop_Count" + AUF "HMI_Local_CIP_Variables" + L DBW[AR1,P#2.0] + AUF "CIP_Program_Variables" + T DBW[AR1,P#50.0] + AN "Save_Active_Recipe" + JC Ndow + AUF "HMI_Local_CIP_Variables" + T DBW[AR1,P#276.0] + Ndow: ADDAR1 P#2.0 + L "Loop_Count" + LOOP Bdow + + L "Work_Recipe_Save" + Copy: L 34 + MUL_I + ADD 576 + SLW 3 + T "Buffer_Pointer" + LAR1_ACCU1 + L DB1003.DBD2.0 + AUF "HMI_Local_CIP_Variables" + T DBD[AR1,P#0.0] + ADDAR1 P#4.0 + L DB1003.DBD6.0 + AUF "HMI_Local_CIP_Variables" + T DBD[AR1,P#0.0] + ADDAR1 P#4.0 + L DB1003.DBD10.0 + AUF "HMI_Local_CIP_Variables" + T DBD[AR1,P#0.0] + ADDAR1 P#4.0 + L DB1003.DBD14.0 + AUF "HMI_Local_CIP_Variables" + T DBD[AR1,P#0.0] + ADDAR1 P#4.0 + L DB1003.DBD18.0 + AUF "HMI_Local_CIP_Variables" + T DBD[AR1,P#0.0] + ADDAR1 P#4.0 + L DB1003.DBD22.0 + AUF "HMI_Local_CIP_Variables" + T DBD[AR1,P#0.0] + ADDAR1 P#4.0 + L DB1003.DBD26.0 + AUF "HMI_Local_CIP_Variables" + T DBD[AR1,P#0.0] + ADDAR1 P#4.0 + L DB1003.DBD32.0 + AUF "HMI_Local_CIP_Variables" + T DBD[AR1,P#0.0] + Cdow: LAR1 _ERR_CONST_ + + L BYTE#16#10 + T LocalB[AR1,P#0.0] + L BYTE#16#02 + T LocalB[AR1,P#1.0] + L "Lenght_UDT900" + T LocalW[AR1,P#2.0] + L "Recipe_Destination_DB" + T LocalW[AR1,P#4.0] + L P#DBX0.0 + T LocalD[AR1,P#6.0] + CALL _Call_? + Edow: NOP_0 + + // --- END STL Network 8 --- + + // Network 9: (Original Language: STL) + // Work Recipe SAVE REQUESTED + + // --- BEGIN STL Network 9 --- + + A "HMI_Recipe_Main_Page" + Rise "Save_requested_FP" + = "Save_requested_veri" + + AN "Read_wrk_Running" + Rise "Save_requested_read_FP" + = "Save_requested_read_veri" + + A "mUploadPC" + AN "UploadPC" + Rise "Save_requested_upldPC_FP" + = "Save_requested_upldPC_ve" + + A "Save_requested_veri" + O "Save_requested_read_veri" + O "Save_requested_upldPC_ve" + JC Vsav + JU Esav + Vsav: CLR + = "Save_Requested" + LAR1 P#0.0 + L "Lenght_UDT900" + L 2 + DIV_I + L 17 + SUB_I + Bsav: T "Loop_Count" + AUF "CIP_Program_Variables" + L DBW[AR1,P#50.0] + AUF "HMI_Local_CIP_Variables" + L DBW[AR1,P#2.0] + NE_D + JC Sreq + ADDAR1 P#2.0 + L "Loop_Count" + LOOP Bsav + JU Esav + Sreq: SET + = "Save_Requested" + Esav: NOP_0 + + // --- END STL Network 9 --- + + // Network 10: (Original Language: STL) + + // --- BEGIN STL Network 10 --- + + A "UploadPC" + JCN Noup + S "mUploadPC" + Noup: A "Edit" + JCN Roup + R "mUploadPC" + Roup: NOP_0 + + // --- END STL Network 10 --- + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipeManagement_Data.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipeManagement_Data.md new file mode 100644 index 0000000..e2a2f72 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipeManagement_Data.md @@ -0,0 +1,57 @@ +```pascal +// Block Type: InstanceDB +// Block Number: 399 + +DATA_BLOCK "CIPRecipeManagement_Data" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Active_Recipe_First : Bool := FALSE; + Active_Recipe_Start_FP : Bool := FALSE; + Active_Recipe_Run : Bool := FALSE; + Active_Recipe_Source_DB : Int := 501; + Read_FP : Bool := FALSE; + Read_Start : Bool := FALSE; + Read_First_FP : Bool := FALSE; + Read_First_Start : Bool := FALSE; + Read_Change : Bool := TRUE; + Work_Recipe_Save : Int := 0; + Work_Recipe_Source_DB : Int := 501; + Loop_Count : Int := 0; + Delete_FP : Bool := FALSE; + Delete_Start : Bool := FALSE; + Delete_Write : Bool := FALSE; + Copy_FP : Bool := FALSE; + Copy_Request : Bool := FALSE; + Copy_Start : Bool := FALSE; + Copy_Recipe_Source_DB : Int := 0; + Copy_Write : Bool := FALSE; + Write_FP : Bool := FALSE; + Write_Start : Bool := FALSE; + Write_REQ : Bool := FALSE; + Save_Active_Recipe : Bool := FALSE; + Recipe_Destination_DB : Int := 0; + Save_requested_FP : Bool := FALSE; + Save_requested_veri : Bool := FALSE; + Save_requested_read_FP : Bool := FALSE; + Save_requested_read_veri : Bool := FALSE; + Read_act_BUSY : Bool := FALSE; + Read_wrk_BUSY : Bool := TRUE; + Read_wrk_Running : Bool := TRUE; + Write_BUSY : Bool := FALSE; + Upload_FP : Bool := FALSE; + Upload_Start : Bool := FALSE; + Download_FP : Bool := FALSE; + Download_Start : Bool := FALSE; + Recipe_Activated_FN : Bool := FALSE; + Save_requested_upldPC_FP : Bool := FALSE; + Save_requested_upldPC_ve : Bool := FALSE; + mUploadPC : Bool := FALSE; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_01.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_01.md new file mode 100644 index 0000000..c4181f6 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_01.md @@ -0,0 +1,32 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): CIPRecipe#01 +// Block Number: 501 + +DATA_BLOCK "CIPRecipe_01" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + LinkProgram : STRUCT + _LinkName : String[32]; + CIP_Simple_Prog : STRUCT + CIP_SimpleCode : Int; + CIP_SetPoint_Temp : Real; + CIP_SetPoint_Cond : Real; + CIP_SetPoint_Time : Int; + CIP_Chemical : "Struct"; + CIP_HotWaterPreLoad : Bool; + CIP_ChemicalRecovery : Bool; + CIP_WaterRecovery : Bool; + END_STRUCT; + + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_02.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_02.md new file mode 100644 index 0000000..ef5082a --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_02.md @@ -0,0 +1,32 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): CIPRecipe#02 +// Block Number: 502 + +DATA_BLOCK "CIPRecipe_02" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + LinkProgram : STRUCT + _LinkName : String[32]; + CIP_Simple_Prog : STRUCT + CIP_SimpleCode : Int; + CIP_SetPoint_Temp : Real; + CIP_SetPoint_Cond : Real; + CIP_SetPoint_Time : Int; + CIP_Chemical : "Struct"; + CIP_HotWaterPreLoad : Bool; + CIP_ChemicalRecovery : Bool; + CIP_WaterRecovery : Bool; + END_STRUCT; + + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_03.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_03.md new file mode 100644 index 0000000..21099e8 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_03.md @@ -0,0 +1,32 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): CIPRecipe#03 +// Block Number: 503 + +DATA_BLOCK "CIPRecipe_03" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + LinkProgram : STRUCT + _LinkName : String[32]; + CIP_Simple_Prog : STRUCT + CIP_SimpleCode : Int; + CIP_SetPoint_Temp : Real; + CIP_SetPoint_Cond : Real; + CIP_SetPoint_Time : Int; + CIP_Chemical : "Struct"; + CIP_HotWaterPreLoad : Bool; + CIP_ChemicalRecovery : Bool; + CIP_WaterRecovery : Bool; + END_STRUCT; + + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_04.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_04.md new file mode 100644 index 0000000..c635ed5 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_04.md @@ -0,0 +1,32 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): CIPRecipe#04 +// Block Number: 504 + +DATA_BLOCK "CIPRecipe_04" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + LinkProgram : STRUCT + _LinkName : String[32]; + CIP_Simple_Prog : STRUCT + CIP_SimpleCode : Int; + CIP_SetPoint_Temp : Real; + CIP_SetPoint_Cond : Real; + CIP_SetPoint_Time : Int; + CIP_Chemical : "Struct"; + CIP_HotWaterPreLoad : Bool; + CIP_ChemicalRecovery : Bool; + CIP_WaterRecovery : Bool; + END_STRUCT; + + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_05.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_05.md new file mode 100644 index 0000000..2a0ac8d --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_05.md @@ -0,0 +1,32 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): CIPRecipe#05 +// Block Number: 505 + +DATA_BLOCK "CIPRecipe_05" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + LinkProgram : STRUCT + _LinkName : String[32]; + CIP_Simple_Prog : STRUCT + CIP_SimpleCode : Int; + CIP_SetPoint_Temp : Real; + CIP_SetPoint_Cond : Real; + CIP_SetPoint_Time : Int; + CIP_Chemical : "Struct"; + CIP_HotWaterPreLoad : Bool; + CIP_ChemicalRecovery : Bool; + CIP_WaterRecovery : Bool; + END_STRUCT; + + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_06.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_06.md new file mode 100644 index 0000000..309dbca --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_06.md @@ -0,0 +1,32 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): CIPRecipe#06 +// Block Number: 506 + +DATA_BLOCK "CIPRecipe_06" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + LinkProgram : STRUCT + _LinkName : String[32]; + CIP_Simple_Prog : STRUCT + CIP_SimpleCode : Int; + CIP_SetPoint_Temp : Real; + CIP_SetPoint_Cond : Real; + CIP_SetPoint_Time : Int; + CIP_Chemical : "Struct"; + CIP_HotWaterPreLoad : Bool; + CIP_ChemicalRecovery : Bool; + CIP_WaterRecovery : Bool; + END_STRUCT; + + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_07.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_07.md new file mode 100644 index 0000000..ef4913a --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_07.md @@ -0,0 +1,32 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): CIPRecipe#07 +// Block Number: 507 + +DATA_BLOCK "CIPRecipe_07" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + LinkProgram : STRUCT + _LinkName : String[32]; + CIP_Simple_Prog : STRUCT + CIP_SimpleCode : Int; + CIP_SetPoint_Temp : Real; + CIP_SetPoint_Cond : Real; + CIP_SetPoint_Time : Int; + CIP_Chemical : "Struct"; + CIP_HotWaterPreLoad : Bool; + CIP_ChemicalRecovery : Bool; + CIP_WaterRecovery : Bool; + END_STRUCT; + + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_08.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_08.md new file mode 100644 index 0000000..9eec9c6 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_08.md @@ -0,0 +1,32 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): CIPRecipe#08 +// Block Number: 508 + +DATA_BLOCK "CIPRecipe_08" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + LinkProgram : STRUCT + _LinkName : String[32]; + CIP_Simple_Prog : STRUCT + CIP_SimpleCode : Int; + CIP_SetPoint_Temp : Real; + CIP_SetPoint_Cond : Real; + CIP_SetPoint_Time : Int; + CIP_Chemical : "Struct"; + CIP_HotWaterPreLoad : Bool; + CIP_ChemicalRecovery : Bool; + CIP_WaterRecovery : Bool; + END_STRUCT; + + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_09.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_09.md new file mode 100644 index 0000000..fab782d --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_09.md @@ -0,0 +1,32 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): CIPRecipe#09 +// Block Number: 509 + +DATA_BLOCK "CIPRecipe_09" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + LinkProgram : STRUCT + _LinkName : String[32]; + CIP_Simple_Prog : STRUCT + CIP_SimpleCode : Int; + CIP_SetPoint_Temp : Real; + CIP_SetPoint_Cond : Real; + CIP_SetPoint_Time : Int; + CIP_Chemical : "Struct"; + CIP_HotWaterPreLoad : Bool; + CIP_ChemicalRecovery : Bool; + CIP_WaterRecovery : Bool; + END_STRUCT; + + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_10.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_10.md new file mode 100644 index 0000000..d46e91f --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_10.md @@ -0,0 +1,32 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): CIPRecipe#10 +// Block Number: 510 + +DATA_BLOCK "CIPRecipe_10" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + LinkProgram : STRUCT + _LinkName : String[32]; + CIP_Simple_Prog : STRUCT + CIP_SimpleCode : Int; + CIP_SetPoint_Temp : Real; + CIP_SetPoint_Cond : Real; + CIP_SetPoint_Time : Int; + CIP_Chemical : "Struct"; + CIP_HotWaterPreLoad : Bool; + CIP_ChemicalRecovery : Bool; + CIP_WaterRecovery : Bool; + END_STRUCT; + + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_11.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_11.md new file mode 100644 index 0000000..e7801d4 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_11.md @@ -0,0 +1,32 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): CIPRecipe#11 +// Block Number: 511 + +DATA_BLOCK "CIPRecipe_11" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + LinkProgram : STRUCT + _LinkName : String[32]; + CIP_Simple_Prog : STRUCT + CIP_SimpleCode : Int; + CIP_SetPoint_Temp : Real; + CIP_SetPoint_Cond : Real; + CIP_SetPoint_Time : Int; + CIP_Chemical : "Struct"; + CIP_HotWaterPreLoad : Bool; + CIP_ChemicalRecovery : Bool; + CIP_WaterRecovery : Bool; + END_STRUCT; + + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_12.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_12.md new file mode 100644 index 0000000..1353479 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_12.md @@ -0,0 +1,32 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): CIPRecipe#12 +// Block Number: 512 + +DATA_BLOCK "CIPRecipe_12" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + LinkProgram : STRUCT + _LinkName : String[32]; + CIP_Simple_Prog : STRUCT + CIP_SimpleCode : Int; + CIP_SetPoint_Temp : Real; + CIP_SetPoint_Cond : Real; + CIP_SetPoint_Time : Int; + CIP_Chemical : "Struct"; + CIP_HotWaterPreLoad : Bool; + CIP_ChemicalRecovery : Bool; + CIP_WaterRecovery : Bool; + END_STRUCT; + + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_13.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_13.md new file mode 100644 index 0000000..76cf77d --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_13.md @@ -0,0 +1,32 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): CIPRecipe#13 +// Block Number: 513 + +DATA_BLOCK "CIPRecipe_13" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + LinkProgram : STRUCT + _LinkName : String[32]; + CIP_Simple_Prog : STRUCT + CIP_SimpleCode : Int; + CIP_SetPoint_Temp : Real; + CIP_SetPoint_Cond : Real; + CIP_SetPoint_Time : Int; + CIP_Chemical : "Struct"; + CIP_HotWaterPreLoad : Bool; + CIP_ChemicalRecovery : Bool; + CIP_WaterRecovery : Bool; + END_STRUCT; + + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_14.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_14.md new file mode 100644 index 0000000..46bc248 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_14.md @@ -0,0 +1,32 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): CIPRecipe#14 +// Block Number: 514 + +DATA_BLOCK "CIPRecipe_14" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + LinkProgram : STRUCT + _LinkName : String[32]; + CIP_Simple_Prog : STRUCT + CIP_SimpleCode : Int; + CIP_SetPoint_Temp : Real; + CIP_SetPoint_Cond : Real; + CIP_SetPoint_Time : Int; + CIP_Chemical : "Struct"; + CIP_HotWaterPreLoad : Bool; + CIP_ChemicalRecovery : Bool; + CIP_WaterRecovery : Bool; + END_STRUCT; + + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_15.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_15.md new file mode 100644 index 0000000..655a7b1 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_15.md @@ -0,0 +1,32 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): CIPRecipe#15 +// Block Number: 515 + +DATA_BLOCK "CIPRecipe_15" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + LinkProgram : STRUCT + _LinkName : String[32]; + CIP_Simple_Prog : STRUCT + CIP_SimpleCode : Int; + CIP_SetPoint_Temp : Real; + CIP_SetPoint_Cond : Real; + CIP_SetPoint_Time : Int; + CIP_Chemical : "Struct"; + CIP_HotWaterPreLoad : Bool; + CIP_ChemicalRecovery : Bool; + CIP_WaterRecovery : Bool; + END_STRUCT; + + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_16.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_16.md new file mode 100644 index 0000000..78921a8 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_16.md @@ -0,0 +1,32 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): CIPRecipe#16 +// Block Number: 516 + +DATA_BLOCK "CIPRecipe_16" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + LinkProgram : STRUCT + _LinkName : String[32]; + CIP_Simple_Prog : STRUCT + CIP_SimpleCode : Int; + CIP_SetPoint_Temp : Real; + CIP_SetPoint_Cond : Real; + CIP_SetPoint_Time : Int; + CIP_Chemical : "Struct"; + CIP_HotWaterPreLoad : Bool; + CIP_ChemicalRecovery : Bool; + CIP_WaterRecovery : Bool; + END_STRUCT; + + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_17.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_17.md new file mode 100644 index 0000000..4f47540 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_17.md @@ -0,0 +1,32 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): CIPRecipe#17 +// Block Number: 517 + +DATA_BLOCK "CIPRecipe_17" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + LinkProgram : STRUCT + _LinkName : String[32]; + CIP_Simple_Prog : STRUCT + CIP_SimpleCode : Int; + CIP_SetPoint_Temp : Real; + CIP_SetPoint_Cond : Real; + CIP_SetPoint_Time : Int; + CIP_Chemical : "Struct"; + CIP_HotWaterPreLoad : Bool; + CIP_ChemicalRecovery : Bool; + CIP_WaterRecovery : Bool; + END_STRUCT; + + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_18.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_18.md new file mode 100644 index 0000000..9baed83 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_18.md @@ -0,0 +1,32 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): CIPRecipe#18 +// Block Number: 518 + +DATA_BLOCK "CIPRecipe_18" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + LinkProgram : STRUCT + _LinkName : String[32]; + CIP_Simple_Prog : STRUCT + CIP_SimpleCode : Int; + CIP_SetPoint_Temp : Real; + CIP_SetPoint_Cond : Real; + CIP_SetPoint_Time : Int; + CIP_Chemical : "Struct"; + CIP_HotWaterPreLoad : Bool; + CIP_ChemicalRecovery : Bool; + CIP_WaterRecovery : Bool; + END_STRUCT; + + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_19.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_19.md new file mode 100644 index 0000000..cbee47e --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_19.md @@ -0,0 +1,32 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): CIPRecipe#19 +// Block Number: 519 + +DATA_BLOCK "CIPRecipe_19" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + LinkProgram : STRUCT + _LinkName : String[32]; + CIP_Simple_Prog : STRUCT + CIP_SimpleCode : Int; + CIP_SetPoint_Temp : Real; + CIP_SetPoint_Cond : Real; + CIP_SetPoint_Time : Int; + CIP_Chemical : "Struct"; + CIP_HotWaterPreLoad : Bool; + CIP_ChemicalRecovery : Bool; + CIP_WaterRecovery : Bool; + END_STRUCT; + + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_20.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_20.md new file mode 100644 index 0000000..ba6e329 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_20.md @@ -0,0 +1,32 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): CIPRecipe#20 +// Block Number: 520 + +DATA_BLOCK "CIPRecipe_20" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + LinkProgram : STRUCT + _LinkName : String[32]; + CIP_Simple_Prog : STRUCT + CIP_SimpleCode : Int; + CIP_SetPoint_Temp : Real; + CIP_SetPoint_Cond : Real; + CIP_SetPoint_Time : Int; + CIP_Chemical : "Struct"; + CIP_HotWaterPreLoad : Bool; + CIP_ChemicalRecovery : Bool; + CIP_WaterRecovery : Bool; + END_STRUCT; + + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_21.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_21.md new file mode 100644 index 0000000..030eae3 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_21.md @@ -0,0 +1,32 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): CIPRecipe#21 +// Block Number: 521 + +DATA_BLOCK "CIPRecipe_21" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + LinkProgram : STRUCT + _LinkName : String[32]; + CIP_Simple_Prog : STRUCT + CIP_SimpleCode : Int; + CIP_SetPoint_Temp : Real; + CIP_SetPoint_Cond : Real; + CIP_SetPoint_Time : Int; + CIP_Chemical : "Struct"; + CIP_HotWaterPreLoad : Bool; + CIP_ChemicalRecovery : Bool; + CIP_WaterRecovery : Bool; + END_STRUCT; + + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_22.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_22.md new file mode 100644 index 0000000..58e66e7 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_22.md @@ -0,0 +1,32 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): CIPRecipe#22 +// Block Number: 522 + +DATA_BLOCK "CIPRecipe_22" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + LinkProgram : STRUCT + _LinkName : String[32]; + CIP_Simple_Prog : STRUCT + CIP_SimpleCode : Int; + CIP_SetPoint_Temp : Real; + CIP_SetPoint_Cond : Real; + CIP_SetPoint_Time : Int; + CIP_Chemical : "Struct"; + CIP_HotWaterPreLoad : Bool; + CIP_ChemicalRecovery : Bool; + CIP_WaterRecovery : Bool; + END_STRUCT; + + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_23.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_23.md new file mode 100644 index 0000000..3f66b44 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_23.md @@ -0,0 +1,32 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): CIPRecipe#23 +// Block Number: 523 + +DATA_BLOCK "CIPRecipe_23" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + LinkProgram : STRUCT + _LinkName : String[32]; + CIP_Simple_Prog : STRUCT + CIP_SimpleCode : Int; + CIP_SetPoint_Temp : Real; + CIP_SetPoint_Cond : Real; + CIP_SetPoint_Time : Int; + CIP_Chemical : "Struct"; + CIP_HotWaterPreLoad : Bool; + CIP_ChemicalRecovery : Bool; + CIP_WaterRecovery : Bool; + END_STRUCT; + + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_24.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_24.md new file mode 100644 index 0000000..74e1443 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_24.md @@ -0,0 +1,32 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): CIPRecipe#24 +// Block Number: 524 + +DATA_BLOCK "CIPRecipe_24" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + LinkProgram : STRUCT + _LinkName : String[32]; + CIP_Simple_Prog : STRUCT + CIP_SimpleCode : Int; + CIP_SetPoint_Temp : Real; + CIP_SetPoint_Cond : Real; + CIP_SetPoint_Time : Int; + CIP_Chemical : "Struct"; + CIP_HotWaterPreLoad : Bool; + CIP_ChemicalRecovery : Bool; + CIP_WaterRecovery : Bool; + END_STRUCT; + + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_25.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_25.md new file mode 100644 index 0000000..b1bf0f1 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_25.md @@ -0,0 +1,32 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): CIPRecipe#25 +// Block Number: 525 + +DATA_BLOCK "CIPRecipe_25" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + LinkProgram : STRUCT + _LinkName : String[32]; + CIP_Simple_Prog : STRUCT + CIP_SimpleCode : Int; + CIP_SetPoint_Temp : Real; + CIP_SetPoint_Cond : Real; + CIP_SetPoint_Time : Int; + CIP_Chemical : "Struct"; + CIP_HotWaterPreLoad : Bool; + CIP_ChemicalRecovery : Bool; + CIP_WaterRecovery : Bool; + END_STRUCT; + + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_26.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_26.md new file mode 100644 index 0000000..6a634ee --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_26.md @@ -0,0 +1,32 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): CIPRecipe#26 +// Block Number: 526 + +DATA_BLOCK "CIPRecipe_26" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + LinkProgram : STRUCT + _LinkName : String[32]; + CIP_Simple_Prog : STRUCT + CIP_SimpleCode : Int; + CIP_SetPoint_Temp : Real; + CIP_SetPoint_Cond : Real; + CIP_SetPoint_Time : Int; + CIP_Chemical : "Struct"; + CIP_HotWaterPreLoad : Bool; + CIP_ChemicalRecovery : Bool; + CIP_WaterRecovery : Bool; + END_STRUCT; + + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_27.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_27.md new file mode 100644 index 0000000..8b0ccff --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_27.md @@ -0,0 +1,32 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): CIPRecipe#27 +// Block Number: 527 + +DATA_BLOCK "CIPRecipe_27" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + LinkProgram : STRUCT + _LinkName : String[32]; + CIP_Simple_Prog : STRUCT + CIP_SimpleCode : Int; + CIP_SetPoint_Temp : Real; + CIP_SetPoint_Cond : Real; + CIP_SetPoint_Time : Int; + CIP_Chemical : "Struct"; + CIP_HotWaterPreLoad : Bool; + CIP_ChemicalRecovery : Bool; + CIP_WaterRecovery : Bool; + END_STRUCT; + + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_28.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_28.md new file mode 100644 index 0000000..da38b3e --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_28.md @@ -0,0 +1,32 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): CIPRecipe#28 +// Block Number: 528 + +DATA_BLOCK "CIPRecipe_28" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + LinkProgram : STRUCT + _LinkName : String[32]; + CIP_Simple_Prog : STRUCT + CIP_SimpleCode : Int; + CIP_SetPoint_Temp : Real; + CIP_SetPoint_Cond : Real; + CIP_SetPoint_Time : Int; + CIP_Chemical : "Struct"; + CIP_HotWaterPreLoad : Bool; + CIP_ChemicalRecovery : Bool; + CIP_WaterRecovery : Bool; + END_STRUCT; + + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_29.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_29.md new file mode 100644 index 0000000..df1777b --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_29.md @@ -0,0 +1,32 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): CIPRecipe#29 +// Block Number: 529 + +DATA_BLOCK "CIPRecipe_29" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + LinkProgram : STRUCT + _LinkName : String[32]; + CIP_Simple_Prog : STRUCT + CIP_SimpleCode : Int; + CIP_SetPoint_Temp : Real; + CIP_SetPoint_Cond : Real; + CIP_SetPoint_Time : Int; + CIP_Chemical : "Struct"; + CIP_HotWaterPreLoad : Bool; + CIP_ChemicalRecovery : Bool; + CIP_WaterRecovery : Bool; + END_STRUCT; + + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_30.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_30.md new file mode 100644 index 0000000..76d9acf --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPRecipe_30.md @@ -0,0 +1,32 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): CIPRecipe#30 +// Block Number: 530 + +DATA_BLOCK "CIPRecipe_30" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + LinkProgram : STRUCT + _LinkName : String[32]; + CIP_Simple_Prog : STRUCT + CIP_SimpleCode : Int; + CIP_SetPoint_Temp : Real; + CIP_SetPoint_Cond : Real; + CIP_SetPoint_Time : Int; + CIP_Chemical : "Struct"; + CIP_HotWaterPreLoad : Bool; + CIP_ChemicalRecovery : Bool; + CIP_WaterRecovery : Bool; + END_STRUCT; + + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPReportDB.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPReportDB.md new file mode 100644 index 0000000..0995917 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPReportDB.md @@ -0,0 +1,216 @@ +```pascal +// Block Type: GlobalDB +// Block Number: 600 + +DATA_BLOCK "CIPReportDB" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + General : "Struct"; + Spare32 : Array[0..8] of Int := [0, 0, 0, 0, 0, 0, 0, 0, 0]; + AnalogAVSupport : "Struct"; + Spare66 : Array[0..16] of Int := [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; + SIMPLE01 : STRUCT + TotalTime : DInt := 0; + CleaningTime : Array[0..2] of DInt := [0, 0, 0]; + WaitingTime : DInt := 7143424; + Spare20 : DInt := 7143424; + TemperatureAV : Int := 108; + TemperatureSP : Int := 0; + ConducibilityAV : Int := 0; + ConducibilitySP : Int := 0; + Spare40 : DInt := 65536; + END_STRUCT; + + SIMPLE02 : STRUCT + TotalTime : DInt := 207; + CleaningTime : Array[0..2] of DInt := [16384000, 3932160, 0]; + WaitingTime : DInt := 0; + Spare20 : DInt := 0; + TemperatureAV : Int := 0; + TemperatureSP : Int := 0; + ConducibilityAV : Int := 0; + ConducibilitySP : Int := 0; + Spare40 : DInt := 0; + END_STRUCT; + + SIMPLE03 : STRUCT + TotalTime : DInt := 0; + CleaningTime : Array[0..2] of DInt := [0, 0, 0]; + WaitingTime : DInt := 0; + Spare20 : DInt := 0; + TemperatureAV : Int := 0; + TemperatureSP : Int := 0; + ConducibilityAV : Int := 0; + ConducibilitySP : Int := 0; + Spare40 : DInt := 0; + END_STRUCT; + + SIMPLE04 : STRUCT + TotalTime : DInt := 0; + CleaningTime : Array[0..2] of DInt := [0, 0, 0]; + WaitingTime : DInt := 0; + Spare20 : DInt := 0; + TemperatureAV : Int := 0; + TemperatureSP : Int := 0; + ConducibilityAV : Int := 0; + ConducibilitySP : Int := 0; + Spare40 : DInt := 0; + END_STRUCT; + + SIMPLE05 : STRUCT + TotalTime : DInt := 0; + CleaningTime : Array[0..2] of DInt := [0, 0, 0]; + WaitingTime : DInt := 0; + Spare20 : DInt := 0; + TemperatureAV : Int := 0; + TemperatureSP : Int := 0; + ConducibilityAV : Int := 0; + ConducibilitySP : Int := 0; + Spare40 : DInt := 0; + END_STRUCT; + + SIMPLE06 : STRUCT + TotalTime : DInt := 0; + CleaningTime : Array[0..2] of DInt := [0, 0, 0]; + WaitingTime : DInt := 0; + Spare20 : DInt := 0; + TemperatureAV : Int := 0; + TemperatureSP : Int := 0; + ConducibilityAV : Int := 0; + ConducibilitySP : Int := 0; + Spare40 : DInt := 0; + END_STRUCT; + + SIMPLE07 : STRUCT + TotalTime : DInt := 0; + CleaningTime : Array[0..2] of DInt := [0, 0, 0]; + WaitingTime : DInt := 0; + Spare20 : DInt := 0; + TemperatureAV : Int := 0; + TemperatureSP : Int := 0; + ConducibilityAV : Int := 0; + ConducibilitySP : Int := 0; + Spare40 : DInt := 0; + END_STRUCT; + + SIMPLE08 : STRUCT + TotalTime : DInt := 0; + CleaningTime : Array[0..2] of DInt := [0, 0, 0]; + WaitingTime : DInt := 0; + Spare20 : DInt := 0; + TemperatureAV : Int := 0; + TemperatureSP : Int := 0; + ConducibilityAV : Int := 0; + ConducibilitySP : Int := 0; + Spare40 : DInt := 0; + END_STRUCT; + + SIMPLE09 : STRUCT + TotalTime : DInt := 0; + CleaningTime : Array[0..2] of DInt := [0, 0, 0]; + WaitingTime : DInt := 0; + Spare20 : DInt := 0; + TemperatureAV : Int := 0; + TemperatureSP : Int := 0; + ConducibilityAV : Int := 0; + ConducibilitySP : Int := 0; + Spare40 : DInt := 0; + END_STRUCT; + + SIMPLE10 : STRUCT + TotalTime : DInt := 0; + CleaningTime : Array[0..2] of DInt := [0, 0, 0]; + WaitingTime : DInt := 0; + Spare20 : DInt := 0; + TemperatureAV : Int := 0; + TemperatureSP : Int := 0; + ConducibilityAV : Int := 0; + ConducibilitySP : Int := 0; + Spare40 : DInt := 0; + END_STRUCT; + + SIMPLE11 : STRUCT + TotalTime : DInt := 0; + CleaningTime : Array[0..2] of DInt := [0, 0, 0]; + WaitingTime : DInt := 0; + Spare20 : DInt := 0; + TemperatureAV : Int := 0; + TemperatureSP : Int := 0; + ConducibilityAV : Int := 0; + ConducibilitySP : Int := 0; + Spare40 : DInt := 0; + END_STRUCT; + + SIMPLE12 : STRUCT + TotalTime : DInt := 0; + CleaningTime : Array[0..2] of DInt := [0, 0, 0]; + WaitingTime : DInt := 0; + Spare20 : DInt := 0; + TemperatureAV : Int := 0; + TemperatureSP : Int := 0; + ConducibilityAV : Int := 0; + ConducibilitySP : Int := 0; + Spare40 : DInt := 0; + END_STRUCT; + + SIMPLE13 : STRUCT + TotalTime : DInt := 0; + CleaningTime : Array[0..2] of DInt := [0, 0, 0]; + WaitingTime : DInt := 0; + Spare20 : DInt := 0; + TemperatureAV : Int := 0; + TemperatureSP : Int := 0; + ConducibilityAV : Int := 0; + ConducibilitySP : Int := 0; + Spare40 : DInt := 0; + END_STRUCT; + + SIMPLE14 : STRUCT + TotalTime : DInt := 0; + CleaningTime : Array[0..2] of DInt := [0, 0, 0]; + WaitingTime : DInt := 0; + Spare20 : DInt := 0; + TemperatureAV : Int := 0; + TemperatureSP : Int := 0; + ConducibilityAV : Int := 0; + ConducibilitySP : Int := 0; + Spare40 : DInt := 0; + END_STRUCT; + + SIMPLE15 : STRUCT + TotalTime : DInt := 0; + CleaningTime : Array[0..2] of DInt := [17676, 1436302744, 1443692544]; + WaitingTime : DInt := 17112; + Spare20 : DInt := 0; + TemperatureAV : Int := 0; + TemperatureSP : Int := 0; + ConducibilityAV : Int := 0; + ConducibilitySP : Int := 0; + Spare40 : DInt := 0; + END_STRUCT; + + Spare870 : Array[0..29] of Int := [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; + Recipe : STRUCT + _LinkName : String[32]; + CIP_Simple_Prog : STRUCT + CIP_SimpleCode : Int; + CIP_SetPoint_Temp : Real; + CIP_SetPoint_Cond : Real; + CIP_SetPoint_Time : Int; + CIP_Chemical : "Struct"; + CIP_HotWaterPreLoad : Bool; + CIP_ChemicalRecovery : Bool; + CIP_WaterRecovery : Bool; + END_STRUCT; + + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPReportManager.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPReportManager.md new file mode 100644 index 0000000..9729b46 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIPReportManager.md @@ -0,0 +1,314 @@ +```pascal +// Block Type: FC +// Block Number: 600 +// Original Network Languages: LAD, STL + +FUNCTION "CIPReportManager" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + DUTY_TIME : Real; + FAULT : Int; + DBDim : Word; + Loop_Count : Int; +END_VAR + + #_1 : Bool; // Auto-generated temporary +BEGIN + + // Network 1: EMPTY SEG. (Original Language: STL) + + // --- BEGIN STL Network 1 --- + + NOP_0 + A "HMI_Local_CIP_Variables".Cip_Commands._ProgInizialize + R "CIPRepStarted" + R "CIPReportDB".General.AuxReportCipStart + + // --- END STL Network 1 --- + + // Network 2: REPORT END (Original Language: STL) + + // --- BEGIN STL Network 2 --- + + A "CIPReportDB".General.AuxReportCipEnd + A "CIPRepStarted" + Rise "FN_CIPRepEndSupport" + JCN M250 + AN "CIP_Program_Variables".CIP_Run.Reset + JC M200 + L 2 + JU M201 + M200: L 0 + L "CIPRepComment" + NE_I + JC M201 + L 1 + M201: T "CIPReportDB".General.Comment + + SET + R "CIPReportDB".General.ReportCipStart + S "CIPReportDB".General.ReportCipEnd + R "CIPReportDB".General.AuxReportCipStart + L 0 + T "MB600" + T "CIPRepComment" + BEU + M250: NOP_0 + + // --- END STL Network 2 --- + + // Network 3: REPORT INITIALIZATION (Original Language: STL) + + // --- BEGIN STL Network 3 --- + + A "HMI_Blender_Parameters".Processor_Options.Blender_OPT._LocalCIP + A "CIPReportDB".General.AuxReportCipStart + Rise "FP_CIPRepStartSupport" + JCN M350 + + AUF DI "CIPReportDB" + L_DILG + T "DBDim" + LAR1 P#0.0 + L "DBDim" + L 2 + DIV_I + M300: T "Loop_Count" + L 0 + T DIW[AR1,P#0.0] + ADDAR1 P#2.0 + L "Loop_Count" + LOOP M300 + + SET + S "CIPReportDB".General.ReportCipStart + R "CIPReportDB".General.ReportCipEnd + R "CIPReportDB".General.AuxReportCipEnd + S "CIPRepStarted" + L "HMI_Variables_Cmd".RecipeCIP.Active_Recipe_Running + T "CIPReportDB".General.Active_Recipe_Running + L 0 + T "CIPRepComment" + M350: NOP_0 + + // --- END STL Network 3 --- + + // Network 4: REPORT START (Original Language: STL) + + // --- BEGIN STL Network 4 --- + + A "HMI_Blender_Parameters".Processor_Options.Blender_OPT._LocalCIP + AN "CIPRepStarted" + BEC + AUF DI "CIPReportDB" + + // --- END STL Network 4 --- + + // Network 5: REPORT ACTUAL RECIPE UPDATE (Original Language: STL) + + // --- BEGIN STL Network 5 --- + + CALL _Call_? + + // --- END STL Network 5 --- + + // Network 6: REPORT COMMENT (Original Language: STL) + + // --- BEGIN STL Network 6 --- + + A "HMI_Local_CIP_Variables".Cip_Commands._ProgStepUp + JNB _001 + L 0.0 + T "CIPReportDB".AnalogAVSupport.Temperature + T "CIPReportDB".AnalogAVSupport.Conducibility + T "CIPReportDB".AnalogAVSupport.SpareAV + T "CIPReportDB".AnalogAVSupport.DutyTime + _001: NOP_0 + + // --- END STL Network 6 --- + + // Network 7: REPORT CIP TOTAL TIME (Original Language: LAD) + + IF "CLK_1.0S" THEN + "CIPReportDB"."General"."TotalTime" := DINT#1 + "CIPReportDB"."General"."TotalTime"; + END_IF; + + // Network 8: REPORT CIP CLEANING TIME (Original Language: LAD) + + IF "CLK_1.0S" AND "CIP_Program_Variables"."CIP_Run"."Latch" AND "CIP_Program_Variables"."CIP_Run"."Wait" THEN + "CIPReportDB"."General"."CleaningTime" := DINT#1 + "CIPReportDB"."General"."CleaningTime"; + END_IF; + + // Network 9: REPORT CIP WAITING TIME (Original Language: LAD) + + IF "CLK_1.0S" AND "CIP_Program_Variables"."CIP_Run"."Latch" AND "CIP_Program_Variables"."CIP_Run"."Wait" THEN + "CIPReportDB"."General"."WaitingTime" := DINT#1 + "CIPReportDB"."General"."WaitingTime"; + END_IF; + + // Network 10: REPORT CIP FAULT TIME (Original Language: STL) + + // --- BEGIN STL Network 10 --- + + A "CIP_Program_Variables".CIP_Run.Latch + R "CIPRepFaultPresent" + + A "gBlenderCIPMode" + A "gBlenderAlarm" + S "CIPRepFaultPresent" + + A "CIPRepStarted" + AN "CIP_Program_Variables".CIP_Run.Latch + S "CIPRepFaultPresent" + + AN CLK_1.0S + ON "CIPRepFaultPresent" + JC M500 + L "CIPReportDB".General.CipFaultTime + L DINT#1 + ADD_D + T "CIPReportDB".General.CipFaultTime + L 3 + T "CIPRepComment" + M500: NOP_0 + + // --- END STL Network 10 --- + + // Network 11: CIP SEQUENCE MANAGER (Original Language: STL) + + // --- BEGIN STL Network 11 --- + + L "HMI_Local_CIP_Variables".CIP_AnalogValues._StepNum + L 0 + EQ_I + JC M919 + AN CLK_1.0S + A "gBlenderCIPMode" + JC M919 + L "CIPReportDB".General.StepNum + L 0 + EQ_I + JCN M400 + L "HMI_Local_CIP_Variables".CIP_AnalogValues._StepNum + T "CIPReportDB".General.StepNum + M400: L "HMI_Local_CIP_Variables".CIP_AnalogValues._StepNum + L 1 + SUB_I + L P#36.0 + MUL_D + LAR1_ACCU1 + + L DID[AR1,P#100.0] + L DINT#1 + ADD_D + T DID[AR1,P#100.0] + + L DID[AR1,P#104.0] + L DINT#1 + ADD_D + T DID[AR1,P#104.0] + AN "CIPRepFaultPresent" + JC M914 + L DID[AR1,P#108.0] + L DINT#1 + ADD_D + T DID[AR1,P#108.0] + M914: NOP_0 + + L "HMI_Local_CIP_Variables".CIP_AnalogValues._StepNum + L "CIPReportDB".General.StepNum + EQ_I + A "CIP_Program_Variables".CIP_Run.Latch + JC M915 + L 0.0 + T "CIPReportDB".AnalogAVSupport.Temperature + T "CIPReportDB".AnalogAVSupport.Conducibility + L "HMI_Local_CIP_Variables".CIP_AnalogValues._StepNum + T "CIPReportDB".General.StepNum + M915: NOP_0 + + A "gBlenderCIPMode" + A "CIP_Program_Variables".CIP_Run.Latch + JCN M916 + + L "HMI_Local_CIP_Variables".Cip_Recipe.ActualSimpleProgram.CIP_SetPoint_Temp + L 10.0 + MUL_R + TRUNC + T DIW[AR1,P#126.0] + + L "HMI_Local_CIP_Variables".Cip_Recipe.ActualSimpleProgram.CIP_SetPoint_Cond + L 0.01 + MUL_R + TRUNC + T DIW[AR1,P#130.0] + + A "CIP_Program_Variables".CIP_Run.Wait + JCN M917 + L DID[AR1,P#116.0] + L DINT#1 + ADD_D + T DID[AR1,P#116.0] + JU M916 + M917: NOP_0 + + L "CIPReportDB".AnalogAVSupport.DutyTime + L 1.0 + ADD_R + T "CIPReportDB".AnalogAVSupport.DutyTime + T "DUTY_TIME" + + L "CIPReportDB".AnalogAVSupport.Temperature + L "HMI_Instrument".TTS305_1.PVFiltered + ADD_R + T "CIPReportDB".AnalogAVSupport.Temperature + L "DUTY_TIME" + DIV_R + L 10.0 + MUL_R + TRUNC + T DIW[AR1,P#124.0] + + L "HMI_Local_CIP_Variables".Cip_Recipe.ActualSimpleProgram.CIP_SimpleCode + L 1 + EQ_I + O_BRACK + L "HMI_Local_CIP_Variables".Cip_Recipe.ActualSimpleProgram.CIP_SimpleCode + L 5 + EQ_I + BRACKET + JCN M920 + L "HMI_Instrument".CTS301.PVFiltered + JU M921 + M920: L "HMI_Instrument".CTS302.PVFiltered + M921: L 0.001 + MUL_R + L "CIPReportDB".AnalogAVSupport.Conducibility + ADD_R + T "CIPReportDB".AnalogAVSupport.Conducibility + L "DUTY_TIME" + DIV_R + L 10.0 + MUL_R + TRUNC + T DIW[AR1,P#128.0] + + M916: NOP_0 + + M919: NOP_0 + + // --- END STL Network 11 --- + + // Network 12: (Original Language: STL) + + // --- BEGIN STL Network 12 --- + + L "CIPRepComment" + T "CIPReportDB".General.Comment + + // --- END STL Network 12 --- + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIP_FlipFlop.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIP_FlipFlop.md new file mode 100644 index 0000000..0a85aac --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIP_FlipFlop.md @@ -0,0 +1,258 @@ +```pascal +// Block Type: FC +// Block Name (Original): CIP FlipFlop +// Block Number: 1812 +// Original Network Languages: LAD, STL + +FUNCTION "CIP_FlipFlop" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INOUT + mStep : Int; + mTime : Int; + mTransition : Bool; +END_VAR + +VAR_TEMP + Buffer : Bool; + mProdTankMinLevel : Bool; + mFlipFlop : Bool; + mOverPress : Bool; + mDummy : Bool; + mPresetTimer : Int; + sp : Real; + mUnderPress : Bool; + sp_1 : Real; + __PlcmigTempFillBits_14B0 : Array[0..7] of Bool; +END_VAR + +BEGIN + + // Network 1: STEP CONTROL (Original Language: STL) + + // --- BEGIN STL Network 1 --- + + L "mStep" + JL LEND + JU ST00 + JU ST01 + JU ST02 + JU ST03 + JU ST04 + JU ST05 + JU ST06 + JU ST07 + JU ST08 + JU ST09 + JU ST10 + JU ST11 + JU ST12 + JU ST13 + JU ST14 + JU ST15 + LEND: JU FULL + FULL: L 0 + T "mStep" + JU END + + // --- END STL Network 1 --- + + // Network 2: STEP 00 First Valve open Flip Flop (Original Language: LAD) + + "gSP_AVN314" := TRUE; + + // Network 3: STEP 00 First Valve open Flip Flop (Original Language: STL) + + // --- BEGIN STL Network 3 --- + + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 3 --- + + // Network 4: STEP 01 Pause Flip Flop (Original Language: STL) + + // --- BEGIN STL Network 4 --- + + + ST01: CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 4 --- + + // Network 5: STEP 02 Second Valve open Flip Flop (Original Language: LAD) + + "gSP_AVM323" := TRUE; + + // Network 6: STEP 02 Second Valve open Flip Flop (Original Language: STL) + + // --- BEGIN STL Network 6 --- + + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 6 --- + + // Network 7: STEP 03 Pause Flip Flop (Original Language: STL) + + // --- BEGIN STL Network 7 --- + + ST03: CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 7 --- + + // Network 8: STEP 04 Third Valve open Flip Flop (Original Language: LAD) + + "gSP_AVM322" := TRUE; + + // Network 9: STEP 04 Third Valve open Flip Flop (Original Language: STL) + + // --- BEGIN STL Network 9 --- + + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 9 --- + + // Network 10: STEP 05 Pause Flip Flop (Original Language: STL) + + // --- BEGIN STL Network 10 --- + + ST05: CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 10 --- + + // Network 11: STEP 06 Fourth Valve open Flip Flop (Original Language: LAD) + + "gSP_AVP316" := TRUE; + + // Network 12: STEP 06 Fourth Valve open Flip Flop (Original Language: STL) + + // --- BEGIN STL Network 12 --- + + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 12 --- + + // Network 13: STEP 07 Pause Flip Flop (Original Language: STL) + + // --- BEGIN STL Network 13 --- + + ST07: CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 13 --- + + // Network 14: STEP 08 FifthValve open Flip Flop (Original Language: LAD) + + "gSP_AVP344" := TRUE; + + // Network 15: STEP 08 FifthValve open Flip Flop (Original Language: STL) + + // --- BEGIN STL Network 15 --- + + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 15 --- + + // Network 16: STEP 09 Pause Flip Flop (Original Language: STL) + + // --- BEGIN STL Network 16 --- + + ST09: CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 16 --- + + // Network 17: STEP 10 Sixth Valve open Flip Flop (Original Language: LAD) + + "gSP_AVM315" := TRUE; + + // Network 18: STEP 10 Sixth Valve open Flip Flop (Original Language: STL) + + // --- BEGIN STL Network 18 --- + + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 18 --- + + // Network 19: STEP 11 Pause Flip Flop (Original Language: STL) + + // --- BEGIN STL Network 19 --- + + ST11: CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 19 --- + + // Network 20: STEP 12 Seventh Valve open Flip Flop (Original Language: LAD) + + "gSP_AVM353" := TRUE; + + // Network 21: STEP 12 Seventh Valve open Flip Flop (Original Language: STL) + + // --- BEGIN STL Network 21 --- + + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 21 --- + + // Network 22: STEP 13 Pause Flip Flop (Original Language: STL) + + // --- BEGIN STL Network 22 --- + + ST13: CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 22 --- + + // Network 23: STEP 14 Eighth Valve open Flip Flop (Original Language: LAD) + + "gSP_AVM369" := TRUE; + + // Network 24: STEP 14 Eighth Valve open Flip Flop (Original Language: STL) + + // --- BEGIN STL Network 24 --- + + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 24 --- + + // Network 25: STEP 13 done (Original Language: LAD) + + "gCIP_FlipFlopDone" := "AUX FALSE"; + + // Network 26: END (Original Language: STL) + + // --- BEGIN STL Network 26 --- + + END: NOP_0 + + // --- END STL Network 26 --- + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIP_Link_Type.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIP_Link_Type.md new file mode 100644 index 0000000..2638144 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIP_Link_Type.md @@ -0,0 +1,17 @@ +# UDT: CIP_Link_Type + +## Members + +| Name | Datatype | Start Value | Comment | +|---|---|---|---| +| `_LinkName` | `String[32]` | `None` | | +| `CIP_Simple_Prog` | `Array[1..15] of "CIP_Simple_Type"` | `` | | +|     `CIP_SimpleCode` | `Int` | `` | | +|     `CIP_SetPoint_Temp` | `Real` | `` | | +|     `CIP_SetPoint_Cond` | `Real` | `` | | +|     `CIP_SetPoint_Time` | `Int` | `` | | +|     `CIP_Chemical` | `Struct` | `` | | +|     `CIP_HotWaterPreLoad` | `Bool` | `` | | +|     `CIP_ChemicalRecovery` | `Bool` | `` | | +|     `CIP_WaterRecovery` | `Bool` | `` | | + diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIP_Program_Variables.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIP_Program_Variables.md new file mode 100644 index 0000000..5d8abe0 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIP_Program_Variables.md @@ -0,0 +1,247 @@ +```pascal +// Block Type: GlobalDB +// Block Number: 963 + +DATA_BLOCK "CIP_Program_Variables" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + CIP_Run : "Struct"; + Status : "Struct"; + General_Data : "Struct"; + LinkProgramEditDataSave : STRUCT + _LinkName : String[32]; + CIP_Simple_Prog : STRUCT + CIP_SimpleCode : Int; + CIP_SetPoint_Temp : Real; + CIP_SetPoint_Cond : Real; + CIP_SetPoint_Time : Int; + CIP_Chemical : "Struct"; + CIP_HotWaterPreLoad : Bool; + CIP_ChemicalRecovery : Bool; + CIP_WaterRecovery : Bool; + END_STRUCT; + + END_STRUCT; + + mCIP_ActualStep : STRUCT + CIP_StepTime : Int := 0; + CIP_Temp_En : Bool := FALSE; + CIP_RVN301 : Bool := FALSE; + CIP_RVN302 : Bool := FALSE; + CIP_RVP303 : Bool := FALSE; + CIP_CO2_Inj : Bool := FALSE; + CIP_AVM313 : Bool := FALSE; + CIP_AVN314 : Bool := FALSE; + CIP_AVM315 : Bool := FALSE; + CIP_AVP316 : Bool := FALSE; + CIP_AVM317 : Bool := FALSE; + CIP_AVM322 : Bool := FALSE; + CIP_AVM323 : Bool := FALSE; + CIP_AVP324 : Bool := FALSE; + CIP_AVN327 : Bool := FALSE; + CIP_AVS331 : Bool := FALSE; + CIP_AVS332 : Bool := FALSE; + CIP_AVS333 : Bool := FALSE; + CIP_AVS334 : Bool := FALSE; + CIP_AVS335 : Bool := FALSE; + CIP_AVS336 : Bool := FALSE; + CIP_AVS337 : Bool := FALSE; + CIP_AVS338 : Bool := FALSE; + CIP_AVS339 : Bool := FALSE; + CIP_AVS340 : Bool := FALSE; + CIP_AVS341 : Bool := FALSE; + CIP_AVS342 : Bool := FALSE; + CIP_AVS343 : Bool := FALSE; + CIP_AVS344 : Bool := FALSE; + CIP_AVS345 : Bool := FALSE; + CIP_AVS349 : Bool := FALSE; + CIP_AVS351 : Bool := FALSE; + CIP_AVS353 : Bool := FALSE; + CIP_AVP344 : Bool := FALSE; + CIP_AVM345 : Bool := FALSE; + CIP_AVP361 : Bool := FALSE; + CIP_AVM369 : Bool := FALSE; + CIP_AVM371 : Bool := FALSE; + CIP_AVM380 : Bool := FALSE; + CIP_AVM381 : Bool := FALSE; + CIP_AVP388 : Bool := FALSE; + CIP_AVM388 : Bool := FALSE; + CIP_AVM389 : Bool := FALSE; + CIP_CIPRunning : Bool := FALSE; + CIP_CIPDrainRequest : Bool := FALSE; + CIP_CIPHotPhase : Bool := FALSE; + CIP_PPN301 : Bool := FALSE; + CIP_SyrRoomPump : Bool := FALSE; + CIP_HOTWaterReq : Bool := FALSE; + CIP_SendSodaBack : Bool := FALSE; + CIP_Control : STRUCT + Temperature_Ok : Bool := FALSE; + HighConductivity : Bool := FALSE; + LowConductivity : Bool := FALSE; + ProdTankMaxLev : Bool := FALSE; + ReadyForCIP : Bool := FALSE; + DrainCompleted : Bool := FALSE; + CIPCycleEnded : Bool := FALSE; + CIPChangeReady : Bool := FALSE; + CIPHotWaterReceiving : Bool := FALSE; + CIPHotWaterStop : Bool := FALSE; + CIPLowLevel : Bool := FALSE; + SyrupTankMaxLev : Bool := FALSE; + DeairTankMaxLev : Bool := FALSE; + CIPFreeSodaTank : Bool := FALSE; + END_STRUCT; + + CIP_StatusMsgCode : Int := 0; + END_STRUCT; + + mCIP_StepEmpty : STRUCT + CIP_StepTime : Int := 0; + CIP_Temp_En : Bool := FALSE; + CIP_RVN301 : Bool := FALSE; + CIP_RVN302 : Bool := FALSE; + CIP_RVP303 : Bool := FALSE; + CIP_CO2_Inj : Bool := FALSE; + CIP_AVM313 : Bool := FALSE; + CIP_AVN314 : Bool := FALSE; + CIP_AVM315 : Bool := FALSE; + CIP_AVP316 : Bool := FALSE; + CIP_AVM317 : Bool := FALSE; + CIP_AVM322 : Bool := FALSE; + CIP_AVM323 : Bool := FALSE; + CIP_AVP324 : Bool := FALSE; + CIP_AVN327 : Bool := FALSE; + CIP_AVS331 : Bool := FALSE; + CIP_AVS332 : Bool := FALSE; + CIP_AVS333 : Bool := FALSE; + CIP_AVS334 : Bool := FALSE; + CIP_AVS335 : Bool := FALSE; + CIP_AVS336 : Bool := FALSE; + CIP_AVS337 : Bool := FALSE; + CIP_AVS338 : Bool := FALSE; + CIP_AVS339 : Bool := FALSE; + CIP_AVS340 : Bool := FALSE; + CIP_AVS341 : Bool := FALSE; + CIP_AVS342 : Bool := FALSE; + CIP_AVS343 : Bool := FALSE; + CIP_AVS344 : Bool := FALSE; + CIP_AVS345 : Bool := FALSE; + CIP_AVS349 : Bool := FALSE; + CIP_AVS351 : Bool := FALSE; + CIP_AVS353 : Bool := FALSE; + CIP_AVP344 : Bool := FALSE; + CIP_AVM345 : Bool := FALSE; + CIP_AVP361 : Bool := FALSE; + CIP_AVM369 : Bool := FALSE; + CIP_AVM371 : Bool := FALSE; + CIP_AVM380 : Bool := FALSE; + CIP_AVM381 : Bool := FALSE; + CIP_AVP388 : Bool := FALSE; + CIP_AVM388 : Bool := FALSE; + CIP_AVM389 : Bool := FALSE; + CIP_CIPRunning : Bool := FALSE; + CIP_CIPDrainRequest : Bool := FALSE; + CIP_CIPHotPhase : Bool := FALSE; + CIP_PPN301 : Bool := FALSE; + CIP_SyrRoomPump : Bool := FALSE; + CIP_HOTWaterReq : Bool := FALSE; + CIP_SendSodaBack : Bool := FALSE; + CIP_Control : STRUCT + Temperature_Ok : Bool := FALSE; + HighConductivity : Bool := FALSE; + LowConductivity : Bool := FALSE; + ProdTankMaxLev : Bool := FALSE; + ReadyForCIP : Bool := FALSE; + DrainCompleted : Bool := FALSE; + CIPCycleEnded : Bool := FALSE; + CIPChangeReady : Bool := FALSE; + CIPHotWaterReceiving : Bool := FALSE; + CIPHotWaterStop : Bool := FALSE; + CIPLowLevel : Bool := FALSE; + SyrupTankMaxLev : Bool := FALSE; + DeairTankMaxLev : Bool := FALSE; + CIPFreeSodaTank : Bool := FALSE; + END_STRUCT; + + CIP_StatusMsgCode : Int := 0; + END_STRUCT; + + mCIP_SimpleEmpty : STRUCT + CIP_StepTime : Int; + CIP_Temp_En : Bool; + CIP_RVN301 : Bool; + CIP_RVN302 : Bool; + CIP_RVP303 : Bool; + CIP_CO2_Inj : Bool; + CIP_AVM313 : Bool; + CIP_AVN314 : Bool; + CIP_AVM315 : Bool; + CIP_AVP316 : Bool; + CIP_AVM317 : Bool; + CIP_AVM322 : Bool; + CIP_AVM323 : Bool; + CIP_AVP324 : Bool; + CIP_AVN327 : Bool; + CIP_AVS331 : Bool; + CIP_AVS332 : Bool; + CIP_AVS333 : Bool; + CIP_AVS334 : Bool; + CIP_AVS335 : Bool; + CIP_AVS336 : Bool; + CIP_AVS337 : Bool; + CIP_AVS338 : Bool; + CIP_AVS339 : Bool; + CIP_AVS340 : Bool; + CIP_AVS341 : Bool; + CIP_AVS342 : Bool; + CIP_AVS343 : Bool; + CIP_AVS344 : Bool; + CIP_AVS345 : Bool; + CIP_AVS349 : Bool; + CIP_AVS351 : Bool; + CIP_AVS353 : Bool; + CIP_AVP344 : Bool; + CIP_AVM345 : Bool; + CIP_AVP361 : Bool; + CIP_AVM369 : Bool; + CIP_AVM371 : Bool; + CIP_AVM380 : Bool; + CIP_AVM381 : Bool; + CIP_AVP388 : Bool; + CIP_AVM388 : Bool; + CIP_AVM389 : Bool; + CIP_CIPRunning : Bool; + CIP_CIPDrainRequest : Bool; + CIP_CIPHotPhase : Bool; + CIP_PPN301 : Bool; + CIP_SyrRoomPump : Bool; + CIP_HOTWaterReq : Bool; + CIP_SendSodaBack : Bool; + CIP_Control : STRUCT + Temperature_Ok : Bool; + HighConductivity : Bool; + LowConductivity : Bool; + ProdTankMaxLev : Bool; + ReadyForCIP : Bool; + DrainCompleted : Bool; + CIPCycleEnded : Bool; + CIPChangeReady : Bool; + CIPHotWaterReceiving : Bool; + CIPHotWaterStop : Bool; + CIPLowLevel : Bool; + SyrupTankMaxLev : Bool; + DeairTankMaxLev : Bool; + CIPFreeSodaTank : Bool; + END_STRUCT; + + CIP_StatusMsgCode : Int; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIP_SimpleProgr_Init.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIP_SimpleProgr_Init.md new file mode 100644 index 0000000..aee8a63 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIP_SimpleProgr_Init.md @@ -0,0 +1,359 @@ +```pascal +FUNCTION "CIP_SimpleProgr_Init" : Void +{ S7_Optimized_Access := 'FALSE' } +VERSION : 0.0 + VAR_INPUT + i_SimpleProgr : "CIP_Simple_Type"; + i_StepNumber : Int; + END_VAR + + VAR_OUTPUT + o_Step : "CIP_Step_Type"; + END_VAR + + VAR_TEMP + m_Step : Array[1..15] of "CIP_Step_Type"; + END_VAR + + +BEGIN + + (* per ogni tipo di ricetta semplice, settare a true le uscite e le condizioni necessarie per ogni fase *) + #m_Step := "CIP_Program_Variables".mCIP_SimpleEmpty ; + CASE #i_SimpleProgr.CIP_SimpleCode OF + 1: (* Rinse *) + #m_Step[1].CIP_RVN301 := NOT "HMI_Blender_Parameters".Processor_Options.Blender_OPT._DeaireatorLevel ; (* Rinse away dust *) + #m_Step[1].CIP_RVN302 := "HMI_Blender_Parameters".Processor_Options.Blender_OPT._DeaireatorLevel ; + #m_Step[1].CIP_RVP303 := TRUE ; + #m_Step[1].CIP_AVM317 := TRUE ; + #m_Step[1].CIP_AVP324 := TRUE ; + #m_Step[1].CIP_AVN327 := TRUE ; + #m_Step[1].CIP_AVS331 := TRUE ; + #m_Step[1].CIP_AVS332 := TRUE ; + #m_Step[1].CIP_AVS336 := FALSE ; + #m_Step[1].CIP_AVS337 := TRUE ; + #m_Step[1].CIP_AVS345 := TRUE ; + #m_Step[1].CIP_AVP361 := TRUE ; + #m_Step[1].CIP_AVP388 := TRUE ; + #m_Step[1].CIP_AVM380 := TRUE ; + #m_Step[1].CIP_AVM381 := TRUE ; + #m_Step[1].CIP_PPN301 := TRUE; + #m_Step[1].CIP_StepTime := 60 ; + + #m_Step[2].CIP_RVN301 := NOT "HMI_Blender_Parameters".Processor_Options.Blender_OPT._DeaireatorLevel ; (* Rinse *) + #m_Step[2].CIP_RVN302 := "HMI_Blender_Parameters".Processor_Options.Blender_OPT._DeaireatorLevel ; + #m_Step[2].CIP_RVP303 := TRUE ; + #m_Step[2].CIP_AVM317 := TRUE ; + #m_Step[2].CIP_AVP324 := TRUE ; + #m_Step[2].CIP_AVN327 := TRUE ; + #m_Step[2].CIP_AVS331 := TRUE ; + #m_Step[2].CIP_AVS332 := TRUE ; + #m_Step[2].CIP_AVS336 := FALSE ; + #m_Step[2].CIP_AVS337 := TRUE ; + #m_Step[2].CIP_AVS345 := TRUE ; + #m_Step[2].CIP_AVP361 := TRUE ; + #m_Step[2].CIP_AVP388 := TRUE ; + #m_Step[2].CIP_AVM380 := TRUE ; + #m_Step[2].CIP_AVM381 := TRUE ; + #m_Step[2].CIP_PPN301 := TRUE; + #m_Step[2].CIP_CIPRunning := TRUE ; + #m_Step[2].CIP_StepTime := #i_SimpleProgr.CIP_SetPoint_Time ; + + #m_Step[3].CIP_RVN301 := NOT "HMI_Blender_Parameters".Processor_Options.Blender_OPT._DeaireatorLevel ; (* Check water conductivity - optional *) + #m_Step[3].CIP_RVN302 := "HMI_Blender_Parameters".Processor_Options.Blender_OPT._DeaireatorLevel ; + #m_Step[3].CIP_RVP303 := TRUE ; + #m_Step[3].CIP_AVM317 := TRUE ; + #m_Step[3].CIP_AVP324 := TRUE ; + #m_Step[3].CIP_AVN327 := TRUE ; + #m_Step[3].CIP_AVS331 := TRUE ; + #m_Step[3].CIP_AVS332 := TRUE ; + #m_Step[3].CIP_AVS336 := FALSE ; + #m_Step[3].CIP_AVS337 := TRUE ; + #m_Step[2].CIP_AVS345 := TRUE ; + #m_Step[3].CIP_AVP361 := TRUE ; + #m_Step[3].CIP_AVM380 := TRUE ; + #m_Step[3].CIP_AVM381 := TRUE ; + #m_Step[3].CIP_PPN301 := TRUE; + #m_Step[3].CIP_Control.LowConductivity := #i_SimpleProgr.CIP_SetPoint_Cond <> 0 ; + #m_Step[3].CIP_StepTime :=60 ; + + 2: (* Recirculation - chemicals, temperature and conductivity optional *) + #m_Step[1].CIP_RVN301 := NOT "HMI_Blender_Parameters".Processor_Options.Blender_OPT._DeaireatorLevel ; (* Water and Syrup tank initial fill up *) + #m_Step[1].CIP_RVN302 := "HMI_Blender_Parameters".Processor_Options.Blender_OPT._DeaireatorLevel ; (* with hot water pre-load optional *) + #m_Step[1].CIP_RVP303 := TRUE ; + #m_Step[1].CIP_AVS331 := TRUE ; + #m_Step[1].CIP_AVS332 := TRUE ; + #m_Step[1].CIP_AVS333 := #i_SimpleProgr.CIP_Chemical.Acid AND NOT "gIN_CIP_ChemicalProd"; + #m_Step[1].CIP_AVS334 := #i_SimpleProgr.CIP_Chemical.Caustic AND NOT "gIN_CIP_ChemicalProd" ; + #m_Step[1].CIP_AVS335 := #i_SimpleProgr.CIP_Chemical.Disinfectant AND NOT "gIN_CIP_ChemicalProd" ; + #m_Step[1].CIP_AVS336 := TRUE ; + #m_Step[1].CIP_AVS337 := NOT #i_SimpleProgr.CIP_HotWaterPreLoad ; + #m_Step[1].CIP_AVS338 := FALSE ; + #m_Step[1].CIP_AVS340 := FALSE ; + #m_Step[1].CIP_AVS341 := #i_SimpleProgr.CIP_HotWaterPreLoad ; + #m_Step[1].CIP_AVS343 := FALSE ; + #m_Step[1].CIP_AVS345 := NOT #i_SimpleProgr.CIP_HotWaterPreLoad ; + #m_Step[1].CIP_AVS351 := #i_SimpleProgr.CIP_HotWaterPreLoad ; + #m_Step[1].CIP_AVS353 := #i_SimpleProgr.CIP_HotWaterPreLoad ; + #m_Step[1].CIP_AVP388 := TRUE ; + #m_Step[1].CIP_CIPRunning := TRUE ; + #m_Step[1].CIP_HOTWaterReq := #i_SimpleProgr.CIP_HotWaterPreLoad ; + #m_Step[1].CIP_Control.CIPHotWaterReceiving := #i_SimpleProgr.CIP_HotWaterPreLoad ; + #m_Step[1].CIP_StepTime := 10 ; + + #m_Step[2].CIP_RVN301 := NOT "HMI_Blender_Parameters".Processor_Options.Blender_OPT._DeaireatorLevel ; (* End of hot water pre-load *) + #m_Step[2].CIP_RVN302 := "HMI_Blender_Parameters".Processor_Options.Blender_OPT._DeaireatorLevel ; + #m_Step[2].CIP_RVP303 := TRUE ; + #m_Step[2].CIP_AVS331 := TRUE ; + #m_Step[2].CIP_AVS332 := TRUE ; + #m_Step[2].CIP_AVS333 := #i_SimpleProgr.CIP_Chemical.Acid AND NOT "gIN_CIP_ChemicalProd" ; + #m_Step[2].CIP_AVS334 := #i_SimpleProgr.CIP_Chemical.Caustic AND NOT "gIN_CIP_ChemicalProd" ; + #m_Step[2].CIP_AVS335 := #i_SimpleProgr.CIP_Chemical.Disinfectant AND NOT "gIN_CIP_ChemicalProd" ; + #m_Step[2].CIP_AVS336 := TRUE ; + #m_Step[2].CIP_AVS337 := NOT #i_SimpleProgr.CIP_HotWaterPreLoad ; + #m_Step[2].CIP_AVS338 := FALSE ; + #m_Step[2].CIP_AVS340 := FALSE ; + #m_Step[2].CIP_AVS341 := #i_SimpleProgr.CIP_HotWaterPreLoad ; + #m_Step[2].CIP_AVS343 := FALSE ; + #m_Step[2].CIP_AVS345 := NOT #i_SimpleProgr.CIP_HotWaterPreLoad ; + #m_Step[2].CIP_AVS351 := #i_SimpleProgr.CIP_HotWaterPreLoad ; + #m_Step[2].CIP_AVS353 := #i_SimpleProgr.CIP_HotWaterPreLoad ; + #m_Step[2].CIP_AVP388 := TRUE ; + #m_Step[2].CIP_CIPRunning := TRUE ; + #m_Step[2].CIP_HOTWaterReq := #i_SimpleProgr.CIP_HotWaterPreLoad ; + #m_Step[2].CIP_Control.CIPHotWaterStop := #i_SimpleProgr.CIP_HotWaterPreLoad ; + #m_Step[2].CIP_StepTime := 10 ; + + #m_Step[3].CIP_Temp_En := #i_SimpleProgr.CIP_SetPoint_Temp <> 0 ; (* Chemical preparation and optional warming up *) + #m_Step[3].CIP_RVN301 := NOT "HMI_Blender_Parameters".Processor_Options.Blender_OPT._DeaireatorLevel ; + #m_Step[3].CIP_RVN302 := "HMI_Blender_Parameters".Processor_Options.Blender_OPT._DeaireatorLevel ; + #m_Step[3].CIP_RVP303 := TRUE ; + #m_Step[3].CIP_AVS331 := TRUE ; + #m_Step[3].CIP_AVS332 := NOT( #i_SimpleProgr.CIP_Chemical.Acid OR #i_SimpleProgr.CIP_Chemical.Caustic OR #i_SimpleProgr.CIP_Chemical.Disinfectant ) ; + #m_Step[3].CIP_AVS333 := #i_SimpleProgr.CIP_Chemical.Acid ; + #m_Step[3].CIP_AVS334 := #i_SimpleProgr.CIP_Chemical.Caustic ; + #m_Step[3].CIP_AVS335 := #i_SimpleProgr.CIP_Chemical.Disinfectant ; + #m_Step[3].CIP_AVS336 := TRUE ; + #m_Step[3].CIP_AVS341 := TRUE ; + #m_Step[3].CIP_CIPRunning := TRUE ; + #m_Step[3].CIP_Control.Temperature_Ok := #i_SimpleProgr.CIP_SetPoint_Temp <> 0 ; + #m_Step[3].CIP_Control.HighConductivity := #i_SimpleProgr.CIP_SetPoint_Cond <> 0 ; + #m_Step[3].CIP_StepTime := 15 ; + + #m_Step[4].CIP_Temp_En := #i_SimpleProgr.CIP_SetPoint_Temp <> 0 ; (* Solution recirculation *) + #m_Step[4].CIP_RVN301 := NOT "HMI_Blender_Parameters".Processor_Options.Blender_OPT._DeaireatorLevel ; + #m_Step[4].CIP_RVN302 := "HMI_Blender_Parameters".Processor_Options.Blender_OPT._DeaireatorLevel ; + #m_Step[4].CIP_RVP303 := TRUE ; + #m_Step[4].CIP_AVS331 := TRUE ; + #m_Step[4].CIP_AVS332 := NOT( #i_SimpleProgr.CIP_Chemical.Acid OR #i_SimpleProgr.CIP_Chemical.Caustic OR #i_SimpleProgr.CIP_Chemical.Disinfectant ) ; + #m_Step[4].CIP_AVS333 := #i_SimpleProgr.CIP_Chemical.Acid ; + #m_Step[4].CIP_AVS334 := #i_SimpleProgr.CIP_Chemical.Caustic ; + #m_Step[4].CIP_AVS335 := #i_SimpleProgr.CIP_Chemical.Disinfectant ; + #m_Step[4].CIP_AVS336 := TRUE ; + #m_Step[4].CIP_AVS341 := TRUE ; + #m_Step[4].CIP_CIPRunning := TRUE ; + #m_Step[4].CIP_CIPHotPhase := TRUE ; + #m_Step[4].CIP_Control.HighConductivity := #i_SimpleProgr.CIP_SetPoint_Cond <> 0 ; + #m_Step[4].CIP_StepTime := #i_SimpleProgr.CIP_SetPoint_Time ; + + #m_Step[5].CIP_RVN301 := NOT "HMI_Blender_Parameters".Processor_Options.Blender_OPT._DeaireatorLevel ; (* Venturi rinse *) + #m_Step[5].CIP_RVN302 := "HMI_Blender_Parameters".Processor_Options.Blender_OPT._DeaireatorLevel ; + #m_Step[5].CIP_RVP303 := TRUE ; + #m_Step[5].CIP_AVS331 := TRUE ; + #m_Step[5].CIP_AVS332 := TRUE ; + #m_Step[5].CIP_AVS333 := FALSE ; + #m_Step[5].CIP_AVS334 := FALSE ; + #m_Step[5].CIP_AVS335 := FALSE ; + #m_Step[5].CIP_AVS336 := TRUE ; + #m_Step[5].CIP_AVS341 := TRUE ; + #m_Step[5].CIP_StepTime := 10 ; + + 3: (* Drain *) + #m_Step[1].CIP_AVN314 := TRUE ; (* Drain *) + #m_Step[1].CIP_AVM315 := TRUE ; + #m_Step[1].CIP_AVP316 := TRUE ; + #m_Step[1].CIP_AVM317 := TRUE ; + #m_Step[1].CIP_AVM323 := TRUE ; + #m_Step[1].CIP_AVP324 := TRUE ; + #m_Step[1].CIP_AVN327 := TRUE ; + #m_Step[1].CIP_AVS331 := TRUE ; + #m_Step[1].CIP_AVS332 := TRUE ; + #m_Step[1].CIP_AVS336 := TRUE ; + #m_Step[1].CIP_AVS337 := TRUE ; + #m_Step[1].CIP_AVS341 := TRUE ; + #m_Step[1].CIP_AVS342 := TRUE ; + #m_Step[1].CIP_AVP344 := TRUE ; + #m_Step[1].CIP_AVM345 := TRUE ; + #m_Step[1].CIP_AVP361 := TRUE ; + #m_Step[1].CIP_AVM369 := TRUE ; + #m_Step[1].CIP_AVM371 := TRUE ; + #m_Step[1].CIP_AVM380 := TRUE ; + #m_Step[1].CIP_AVM381 := TRUE ; + #m_Step[1].CIP_CIPDrainRequest := TRUE ; + #m_Step[1].CIP_StepTime := #i_SimpleProgr.CIP_SetPoint_Time ; + + #m_Step[2].CIP_AVN314 := TRUE ; (* Wait Drain Completed *) + #m_Step[2].CIP_AVM315 := TRUE ; + #m_Step[2].CIP_AVP316 := TRUE ; + #m_Step[2].CIP_AVM317 := TRUE ; + #m_Step[2].CIP_AVM323 := TRUE ; + #m_Step[2].CIP_AVP324 := TRUE ; + #m_Step[2].CIP_AVN327 := TRUE ; + #m_Step[2].CIP_AVS331 := TRUE ; + #m_Step[2].CIP_AVS332 := TRUE ; + #m_Step[2].CIP_AVS336 := TRUE ; + #m_Step[2].CIP_AVS337 := TRUE ; + #m_Step[2].CIP_AVS341 := TRUE ; + #m_Step[2].CIP_AVS342 := TRUE ; + #m_Step[2].CIP_AVP344 := TRUE ; + #m_Step[2].CIP_AVM345 := TRUE ; + #m_Step[2].CIP_AVP361 := TRUE ; + #m_Step[2].CIP_AVM369 := TRUE ; + #m_Step[2].CIP_AVM371 := TRUE ; + #m_Step[2].CIP_AVM380 := TRUE ; + #m_Step[2].CIP_AVM381 := TRUE ; + #m_Step[2].CIP_CIPDrainRequest := TRUE ; + #m_Step[2].CIP_Control.DrainCompleted := TRUE; + #m_Step[2].CIP_StepTime := 3 ; + + 4: (* Flood *) + #m_Step[1].CIP_RVN301 := NOT "HMI_Blender_Parameters".Processor_Options.Blender_OPT._DeaireatorLevel ; (* Filling Product tank *) + #m_Step[1].CIP_RVN302 := "HMI_Blender_Parameters".Processor_Options.Blender_OPT._DeaireatorLevel ; + #m_Step[1].CIP_RVP303 := TRUE ; + #m_Step[1].CIP_AVM317 := TRUE ; + #m_Step[1].CIP_AVN327 := TRUE ; + #m_Step[1].CIP_AVS331 := TRUE ; + #m_Step[1].CIP_AVS332 := NOT( #i_SimpleProgr.CIP_Chemical.Acid OR #i_SimpleProgr.CIP_Chemical.Caustic OR #i_SimpleProgr.CIP_Chemical.Disinfectant ) ; + #m_Step[1].CIP_AVS333 := #i_SimpleProgr.CIP_Chemical.Acid ; + #m_Step[1].CIP_AVS334 := #i_SimpleProgr.CIP_Chemical.Caustic ; + #m_Step[1].CIP_AVS335 := #i_SimpleProgr.CIP_Chemical.Disinfectant ; + #m_Step[1].CIP_AVS336 := FALSE ; + #m_Step[1].CIP_AVS345 := TRUE ; + #m_Step[1].CIP_AVP361 := TRUE ; + #m_Step[1].CIP_AVP388 := TRUE ; + #m_Step[1].CIP_PPN301 := TRUE ; + #m_Step[1].CIP_Control.ProdTankMaxLev := TRUE ; + #m_Step[1].CIP_StepTime := 5 ; + + #m_Step[2].CIP_RVN301 := NOT "HMI_Blender_Parameters".Processor_Options.Blender_OPT._DeaireatorLevel ; (* Filling Syrup tank *) + #m_Step[2].CIP_RVN302 := "HMI_Blender_Parameters".Processor_Options.Blender_OPT._DeaireatorLevel ; + #m_Step[2].CIP_RVP303 := TRUE ; + #m_Step[2].CIP_AVM317 := FALSE ; + #m_Step[2].CIP_AVN327 := TRUE ; + #m_Step[2].CIP_AVS331 := TRUE ; + #m_Step[2].CIP_AVS332 := NOT( #i_SimpleProgr.CIP_Chemical.Acid OR #i_SimpleProgr.CIP_Chemical.Caustic OR #i_SimpleProgr.CIP_Chemical.Disinfectant ) ; + #m_Step[2].CIP_AVS333 := #i_SimpleProgr.CIP_Chemical.Acid ; + #m_Step[2].CIP_AVS334 := #i_SimpleProgr.CIP_Chemical.Caustic ; + #m_Step[2].CIP_AVS335 := #i_SimpleProgr.CIP_Chemical.Disinfectant ; + #m_Step[2].CIP_AVS336 := FALSE ; + #m_Step[2].CIP_AVS345 := TRUE ; + #m_Step[2].CIP_AVP361 := TRUE ; + #m_Step[2].CIP_AVP388 := TRUE ; + #m_Step[2].CIP_PPN301 := TRUE ; + #m_Step[2].CIP_Control.SyrupTankMaxLev := TRUE ; + #m_Step[2].CIP_StepTime := 5 ; + + #m_Step[3].CIP_RVN302 := TRUE ; (* Filling Water tank *) + #m_Step[3].CIP_RVP303 := FALSE ; + #m_Step[3].CIP_AVM317 := FALSE ; + #m_Step[3].CIP_AVN327 := TRUE ; + #m_Step[3].CIP_AVS331 := TRUE ; + #m_Step[3].CIP_AVS332 := NOT( #i_SimpleProgr.CIP_Chemical.Acid OR #i_SimpleProgr.CIP_Chemical.Caustic OR #i_SimpleProgr.CIP_Chemical.Disinfectant ) ; + #m_Step[3].CIP_AVS333 := #i_SimpleProgr.CIP_Chemical.Acid ; + #m_Step[3].CIP_AVS334 := #i_SimpleProgr.CIP_Chemical.Caustic ; + #m_Step[3].CIP_AVS335 := #i_SimpleProgr.CIP_Chemical.Disinfectant ; + #m_Step[3].CIP_AVS336 := FALSE ; + #m_Step[3].CIP_AVS345 := TRUE ; + #m_Step[3].CIP_AVP361 := FALSE ; + #m_Step[3].CIP_AVP388 := FALSE ; + #m_Step[3].CIP_PPN301 := TRUE ; + #m_Step[3].CIP_Control.DeairTankMaxLev := "HMI_Blender_Parameters".Processor_Options.Blender_OPT._DeaireatorLevel ; + IF "HMI_Blender_Parameters".Processor_Options.Blender_OPT._DeaireatorLevel THEN + #m_Step[3].CIP_StepTime := 5 ; + ELSE + #m_Step[3].CIP_StepTime := #i_SimpleProgr.CIP_SetPoint_Time ; + END_IF ; + + 5: (* Rinse with CO2 *) + #m_Step[1].CIP_RVN301 := NOT "HMI_Blender_Parameters".Processor_Options.Blender_OPT._DeaireatorLevel ; + #m_Step[1].CIP_RVN302 := "HMI_Blender_Parameters".Processor_Options.Blender_OPT._DeaireatorLevel ; + #m_Step[1].CIP_RVP303 := TRUE ; + #m_Step[1].CIP_AVM317 := TRUE ; + #m_Step[1].CIP_AVP324 := TRUE ; + #m_Step[1].CIP_AVN327 := TRUE ; + #m_Step[1].CIP_AVS331 := TRUE ; + #m_Step[1].CIP_AVS332 := TRUE ; + #m_Step[1].CIP_AVS336 := FALSE ; + #m_Step[1].CIP_AVS337 := TRUE ; + #m_Step[1].CIP_AVS345 := TRUE ; + #m_Step[1].CIP_AVP361 := TRUE ; + #m_Step[1].CIP_AVP388 := TRUE ; + #m_Step[1].CIP_AVM380 := TRUE ; + #m_Step[1].CIP_AVM381 := TRUE ; + #m_Step[1].CIP_PPN301 := TRUE; + #m_Step[1].CIP_CIPRunning := TRUE ; + #m_Step[1].CIP_StepTime := 3 ; + + #m_Step[2].CIP_RVN301 := NOT "HMI_Blender_Parameters".Processor_Options.Blender_OPT._DeaireatorLevel ; (* Rinse *) + #m_Step[2].CIP_RVN302 := "HMI_Blender_Parameters".Processor_Options.Blender_OPT._DeaireatorLevel ; + #m_Step[2].CIP_RVP303 := TRUE ; + #m_Step[2].CIP_AVM317 := TRUE ; + #m_Step[2].CIP_AVP324 := TRUE ; + #m_Step[2].CIP_AVN327 := TRUE ; + #m_Step[2].CIP_AVS331 := TRUE ; + #m_Step[2].CIP_AVS332 := TRUE ; + #m_Step[2].CIP_AVS336 := FALSE ; + #m_Step[2].CIP_AVS337 := TRUE ; + #m_Step[2].CIP_AVS345 := TRUE ; + #m_Step[2].CIP_AVP361 := TRUE ; + #m_Step[2].CIP_AVP388 := TRUE ; + #m_Step[2].CIP_AVM380 := TRUE ; + #m_Step[2].CIP_AVM381 := TRUE ; + #m_Step[2].CIP_PPN301 := TRUE; + #m_Step[2].CIP_CO2_Inj := TRUE; + #m_Step[2].CIP_CIPRunning := TRUE ; + #m_Step[2].CIP_StepTime := #i_SimpleProgr.CIP_SetPoint_Time ; + #m_Step[2].CIP_Control.LowConductivity := #i_SimpleProgr.CIP_SetPoint_Cond <> 0 ; + + 6: (* CIP start *) + #m_Step[1].CIP_CIPRunning := TRUE ; + #m_Step[1].CIP_Control.ReadyForCIP := TRUE ; + #m_Step[1].CIP_StepTime := 3 ; + + 7: (* Product Recover *) + #m_Step[1].CIP_RVN301 := NOT "HMI_Blender_Parameters".Processor_Options.Blender_OPT._DeaireatorLevel ; + #m_Step[1].CIP_RVN302 := "HMI_Blender_Parameters".Processor_Options.Blender_OPT._DeaireatorLevel ; + #m_Step[1].CIP_RVP303 := TRUE ; + #m_Step[1].CIP_AVS331 := TRUE ; + #m_Step[1].CIP_AVS332 := TRUE ; + #m_Step[1].CIP_AVS333 := FALSE ; + #m_Step[1].CIP_AVS334 := FALSE ; + #m_Step[1].CIP_AVS335 := FALSE ; + #m_Step[1].CIP_AVS336 := TRUE ; + #m_Step[1].CIP_AVS341 := TRUE ; + #m_Step[1].CIP_CIPRunning := TRUE ; + #m_Step[1].CIP_SendSodaBack := #i_SimpleProgr.CIP_ChemicalRecovery ; + #m_Step[1].CIP_Control.CIPFreeSodaTank := #i_SimpleProgr.CIP_ChemicalRecovery ; + #m_Step[1].CIP_StepTime := 2 ; + + #m_Step[2].CIP_RVN301 := FALSE ; + #m_Step[2].CIP_RVN302 := FALSE ; + #m_Step[2].CIP_RVP303 := FALSE ; + #m_Step[2].CIP_AVS336 := #i_SimpleProgr.CIP_WaterRecovery ; + #m_Step[2].CIP_AVS341 := #i_SimpleProgr.CIP_WaterRecovery ; + #m_Step[2].CIP_AVS343 := #i_SimpleProgr.CIP_WaterRecovery ; + #m_Step[2].CIP_AVS345 := #i_SimpleProgr.CIP_WaterRecovery ; + #m_Step[2].CIP_SendSodaBack := #i_SimpleProgr.CIP_ChemicalRecovery ; + #m_Step[2].CIP_Control.CIPFreeSodaTank := #i_SimpleProgr.CIP_ChemicalRecovery ; + #m_Step[2].CIP_Control.CIPLowLevel := TRUE ; + #m_Step[2].CIP_StepTime := 15 ; + + ELSE + #m_Step := "CIP_Program_Variables".mCIP_SimpleEmpty ; + END_CASE ; + #o_Step := #m_Step[#i_StepNumber] ; + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIP_Simple_Type.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIP_Simple_Type.md new file mode 100644 index 0000000..2baaf27 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIP_Simple_Type.md @@ -0,0 +1,15 @@ +# UDT: CIP_Simple_Type + +## Members + +| Name | Datatype | Start Value | Comment | +|---|---|---|---| +| `CIP_SimpleCode` | `Int` | `` | | +| `CIP_SetPoint_Temp` | `Real` | `` | | +| `CIP_SetPoint_Cond` | `Real` | `` | | +| `CIP_SetPoint_Time` | `Int` | `` | | +| `CIP_Chemical` | `Struct` | `` | | +| `CIP_HotWaterPreLoad` | `Bool` | `` | | +| `CIP_ChemicalRecovery` | `Bool` | `` | | +| `CIP_WaterRecovery` | `Bool` | `` | | + diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIP_Step_Type.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIP_Step_Type.md new file mode 100644 index 0000000..a21d8b0 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIP_Step_Type.md @@ -0,0 +1,73 @@ +# UDT: CIP_Step_Type + +## Members + +| Name | Datatype | Start Value | Comment | +|---|---|---|---| +| `CIP_StepTime` | `Int` | `` | | +| `CIP_Temp_En` | `Bool` | `` | | +| `CIP_RVN301` | `Bool` | `` | | +| `CIP_RVN302` | `Bool` | `` | | +| `CIP_RVP303` | `Bool` | `` | | +| `CIP_CO2_Inj` | `Bool` | `` | | +| `CIP_AVM313` | `Bool` | `` | | +| `CIP_AVN314` | `Bool` | `` | | +| `CIP_AVM315` | `Bool` | `` | | +| `CIP_AVP316` | `Bool` | `` | | +| `CIP_AVM317` | `Bool` | `` | | +| `CIP_AVM322` | `Bool` | `` | | +| `CIP_AVM323` | `Bool` | `` | | +| `CIP_AVP324` | `Bool` | `` | | +| `CIP_AVN327` | `Bool` | `` | | +| `CIP_AVS331` | `Bool` | `` | | +| `CIP_AVS332` | `Bool` | `` | | +| `CIP_AVS333` | `Bool` | `` | | +| `CIP_AVS334` | `Bool` | `` | | +| `CIP_AVS335` | `Bool` | `` | | +| `CIP_AVS336` | `Bool` | `` | | +| `CIP_AVS337` | `Bool` | `` | | +| `CIP_AVS338` | `Bool` | `` | | +| `CIP_AVS339` | `Bool` | `` | | +| `CIP_AVS340` | `Bool` | `` | | +| `CIP_AVS341` | `Bool` | `` | | +| `CIP_AVS342` | `Bool` | `` | | +| `CIP_AVS343` | `Bool` | `` | | +| `CIP_AVS344` | `Bool` | `` | | +| `CIP_AVS345` | `Bool` | `` | | +| `CIP_AVS349` | `Bool` | `` | | +| `CIP_AVS351` | `Bool` | `` | | +| `CIP_AVS353` | `Bool` | `` | | +| `CIP_AVP344` | `Bool` | `` | | +| `CIP_AVM345` | `Bool` | `` | | +| `CIP_AVP361` | `Bool` | `` | | +| `CIP_AVM369` | `Bool` | `` | | +| `CIP_AVM371` | `Bool` | `` | | +| `CIP_AVM380` | `Bool` | `` | | +| `CIP_AVM381` | `Bool` | `` | | +| `CIP_AVP388` | `Bool` | `` | | +| `CIP_AVM388` | `Bool` | `` | | +| `CIP_AVM389` | `Bool` | `` | | +| `CIP_CIPRunning` | `Bool` | `` | | +| `CIP_CIPDrainRequest` | `Bool` | `` | | +| `CIP_CIPHotPhase` | `Bool` | `` | | +| `CIP_PPN301` | `Bool` | `` | | +| `CIP_SyrRoomPump` | `Bool` | `` | | +| `CIP_HOTWaterReq` | `Bool` | `` | | +| `CIP_SendSodaBack` | `Bool` | `` | | +| `CIP_Control` | `"CIP_WaitEvent_Type"` | `` | | +|     `Temperature_Ok` | `Bool` | `` | | +|     `HighConductivity` | `Bool` | `` | | +|     `LowConductivity` | `Bool` | `` | | +|     `ProdTankMaxLev` | `Bool` | `` | | +|     `ReadyForCIP` | `Bool` | `` | | +|     `DrainCompleted` | `Bool` | `` | | +|     `CIPCycleEnded` | `Bool` | `` | | +|     `CIPChangeReady` | `Bool` | `` | | +|     `CIPHotWaterReceiving` | `Bool` | `` | | +|     `CIPHotWaterStop` | `Bool` | `` | | +|     `CIPLowLevel` | `Bool` | `` | | +|     `SyrupTankMaxLev` | `Bool` | `` | | +|     `DeairTankMaxLev` | `Bool` | `` | | +|     `CIPFreeSodaTank` | `Bool` | `` | | +| `CIP_StatusMsgCode` | `Int` | `` | | + diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIP_WaitEvent_Type.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIP_WaitEvent_Type.md new file mode 100644 index 0000000..020c570 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CIP_WaitEvent_Type.md @@ -0,0 +1,21 @@ +# UDT: CIP_WaitEvent_Type + +## Members + +| Name | Datatype | Start Value | Comment | +|---|---|---|---| +| `Temperature_Ok` | `Bool` | `` | | +| `HighConductivity` | `Bool` | `` | | +| `LowConductivity` | `Bool` | `` | | +| `ProdTankMaxLev` | `Bool` | `` | | +| `ReadyForCIP` | `Bool` | `` | | +| `DrainCompleted` | `Bool` | `` | | +| `CIPCycleEnded` | `Bool` | `` | | +| `CIPChangeReady` | `Bool` | `` | | +| `CIPHotWaterReceiving` | `Bool` | `` | | +| `CIPHotWaterStop` | `Bool` | `` | | +| `CIPLowLevel` | `Bool` | `` | | +| `SyrupTankMaxLev` | `Bool` | `` | | +| `DeairTankMaxLev` | `Bool` | `` | | +| `CIPFreeSodaTank` | `Bool` | `` | | + diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CO2 Solubility.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CO2 Solubility.md new file mode 100644 index 0000000..c75850a --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CO2 Solubility.md @@ -0,0 +1,39 @@ +```pascal +FUNCTION "CO2 Solubility" : Real +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : 'Function' +NAME : 'Name' +VERSION : 1.0 + VAR_INPUT + i_Temp : Real; + END_VAR + + VAR_TEMP + mT_Cub : Real; + mT_Quad : Real; + END_VAR + + +BEGIN + (* This FUNCTION calculates the CO2 absorption FOR a complete saturation *) + + #mT_Cub := SQR(#i_Temp) * #i_Temp ; + #mT_Quad := SQR(#i_Temp); + + IF "Blender_Constants".gCO2_Density <> 0 THEN + (* classic code: #"CO2 Solubility" := (-1.41118E-06 * #mT_Cub + 0.000202893 * #mT_Quad - 0.011685848 * #i_Temp + 0.331474668) / "Blender_Constants".gCO2_Density * 10;*) + #"CO2 Solubility" := (REAL#-1.41118E-06 * #mT_Cub + REAL#0.000202893 * #mT_Quad - REAL#0.011685848 * #i_Temp + REAL#0.331474668) / "Blender_Constants".gCO2_Density * 10; + (* classic code: ELSIF "Blender_Constants".gCO2_Density = 0.0 THEN*) + ELSIF "Blender_Constants".gCO2_Density = REAL#0.0 THEN + (* classic code: #"CO2 Solubility" := 0.0;*) + #"CO2 Solubility" := REAL#0.0; + ELSE + (* classic code: #"CO2 Solubility" := 0.0;*) + #"CO2 Solubility" := REAL#0.0; + END_IF; + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CO2EqPress.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CO2EqPress.md new file mode 100644 index 0000000..9abdc02 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CO2EqPress.md @@ -0,0 +1,41 @@ +```pascal +FUNCTION "CO2EqPress" : Real +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : 'Function' +NAME : 'Name' +VERSION : 1.0 + VAR_INPUT + i_CO2Vol : Real; + i_Temp : Real; + END_VAR + + VAR_TEMP + mAbsTemp : Real; + mAux : Real; + END_VAR + + +BEGIN + + + (**************************************************************************************************) + (* The following Formula is supplied by Coca Cola Company, used in QC Labs *) + (**************************************************************************************************) + + (* classic code: #mAbsTemp := #i_Temp + 273.16 ;*) + #mAbsTemp := #i_Temp + REAL#273.16 ; + (* classic code: IF (0.03275 * #mAbsTemp - 7.9567) <> 0 AND (0.000261 * #mAbsTemp + #mAux) <> 0 THEN*) + IF (REAL#0.03275 * #mAbsTemp - REAL#7.9567) <> 0 AND (REAL#0.000261 * #mAbsTemp + #mAux) <> 0 THEN + (* classic code: #mAux :=(0.01898 - 0.0000476 * #mAbsTemp) / (0.03275 * #mAbsTemp - 7.9567) * #mAbsTemp ;*) + #mAux :=(REAL#0.01898 - REAL#0.0000476 * #mAbsTemp) / (REAL#0.03275 * #mAbsTemp - REAL#7.9567) * #mAbsTemp ; + (* classic code: #CO2EqPress := (#i_CO2Vol - #mAux) * 1.0332 / (0.000261 * #mAbsTemp + #mAux) ;*) + #CO2EqPress := (#i_CO2Vol - #mAux) * REAL#1.0332 / (REAL#0.000261 * #mAbsTemp + #mAux) ; + END_IF; + (* classic code: #CO2EqPress := (#i_CO2Vol - #mAux) * 1.0332 / (0.000261 * #mAbsTemp + #mAux);*) + #CO2EqPress := (#i_CO2Vol - #mAux) * REAL#1.0332 / (REAL#0.000261 * #mAbsTemp + #mAux); + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CO2InjPressure.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CO2InjPressure.md new file mode 100644 index 0000000..07a6b1a --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CO2InjPressure.md @@ -0,0 +1,24 @@ +```pascal +FUNCTION "CO2InjPressure" : Real +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : 'Function' +NAME : 'Name' +VERSION : 1.0 + VAR_INPUT + i_Temp : Real; + i_Dens : Real; + END_VAR + + +BEGIN + + + (* classic code: #CO2InjPressure := 5191.739 * #i_Dens * #i_Dens + 231.0227 * #i_Dens + 0.146326 * #i_Temp ;*) + #CO2InjPressure := REAL#5191.739 * #i_Dens * #i_Dens + REAL#231.0227 * #i_Dens + REAL#0.146326 * #i_Temp ; + + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CO2Tracking.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CO2Tracking.md new file mode 100644 index 0000000..58b3409 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CO2Tracking.md @@ -0,0 +1,144 @@ +```pascal +// Block Type: FB +// Block Number: 1818 +// Original Network Languages: LAD + +FUNCTION_BLOCK "CO2Tracking" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + i_Value : Real; + i_Cols : Int; + i_Rows : Int; +END_VAR + +VAR_OUTPUT + MeanValue : Real; + Variance : Real; + Std_Deviation : Real; +END_VAR + +VAR_INOUT + mTakeProdSample : Bool; +END_VAR + +VAR_STAT + mTakeSample : Bool; + mTakeProdSample : Bool; + mProdCO2Sample : Int := 35; + mAuxProdCO2Corr : Real; + mLocalProdLevel : Real; + mProdCO2Stat : "Statistical_Analisys"; + mProdSamples : "CO2Tracking_ProdSamples"; + mSampleTimeCalc : "CO2Tracking_SampleTime"; + mAuxONS : Bool; + mAuxONS1 : Bool; +END_VAR + +VAR_TEMP + mProdCO2QualityGood : Bool; + mLatchONS : Bool; +END_VAR + +BEGIN + + // Network 1: Qualifier (Original Language: LAD) + + "Procedure_Variables"."ProdCO2_Track"."Qualifier" := "gBlenderProdMode" AND "Procedure_Variables"."First_Production"."Done" AND "gProductMeterOK" AND "Blender_Variables_Pers"."gCarboStillRecipe"; + + // Network 2: Tracking Request Pulse (Original Language: LAD) + + // Edge Logic handled by Coil 26 + "Co2TrackingReq" := "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_PrdCO2TrackingReq"; // P_TRIG("HMI_Variables_Cmd"."Commands_From_HMI"."CMD_PrdCO2TrackingReq") - Mem: "Co2TrackingReq" + + "Procedure_Variables"."ProdCO2_Track"."Request" := "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_PrdCO2TrackingReq" AND NOT "Co2TrackingReq"; + "Co2TrackingReq" := "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_PrdCO2TrackingReq"; // P_TRIG("HMI_Variables_Cmd"."Commands_From_HMI"."CMD_PrdCO2TrackingReq") - Mem: "Co2TrackingReq" + + // Network 3: Tracking Reset (Original Language: LAD) + + "Procedure_Variables"."ProdCO2_Track"."Reset" := "Procedure_Variables"."ProdCO2_Track"."Qualifier"; + + // Network 4: Quality Good (Original Language: LAD) + + "mProdCO2QualityGood" := "Blender_Variables"."gProdCO2Stat_DevStd" < 0.008; + + // Network 5: Wait (Original Language: LAD) + + "Procedure_Variables"."ProdCO2_Track"."Wait" := "mProdCO2QualityGood" OR "gNoFreezeProductMeter"; + + // Network 6: Latch (Original Language: LAD) + + "Procedure_Variables"."ProdCO2_Track"."Latch" := ("Procedure_Variables"."ProdCO2_Track"."Request" AND "FirstScan" AND "Procedure_Variables"."ProdCO2_Track"."Reset" AND "Procedure_Variables"."ProdCO2_Track"."Done") OR ("FirstScan" AND "Procedure_Variables"."ProdCO2_Track"."Reset" AND "Procedure_Variables"."ProdCO2_Track"."Done" AND "Procedure_Variables"."ProdCO2_Track"."Latch"); + + // Network 7: Latch Pulse (Original Language: LAD) + + // Edge Logic handled by Coil 26 + "Co2TrackingLatch" := "Procedure_Variables"."ProdCO2_Track"."Latch"; // P_TRIG("Procedure_Variables"."ProdCO2_Track"."Latch") - Mem: "Co2TrackingLatch" + + "mLatchONS" := "Procedure_Variables"."ProdCO2_Track"."Latch" AND NOT "Co2TrackingLatch"; + "Co2TrackingLatch" := "Procedure_Variables"."ProdCO2_Track"."Latch"; // P_TRIG("Procedure_Variables"."ProdCO2_Track"."Latch") - Mem: "Co2TrackingLatch" + + // Network 8: Tracking Running (Original Language: LAD) + + "Procedure_Variables"."ProdCO2_Track"."Running" := "Procedure_Variables"."ProdCO2_Track"."Wait" AND "Procedure_Variables"."ProdCO2_Track"."Latch"; + + "HMI_Alarms"."gH_Status" := "Procedure_Variables"."ProdCO2_Track"."Wait" AND "Procedure_Variables"."ProdCO2_Track"."Latch"; + + "HMI_Variables_Status"."Procedures"."PrdCO2TrackingRun" := "Procedure_Variables"."ProdCO2_Track"."Latch"; + + // Network 9: Product level (Original Language: LAD) + + SEL_R(G := "HMI_Instrument"."LTM302"."PVFiltered" > 50.0, IN0 := "HMI_Instrument"."LTM302"."PVFiltered", IN1 := 60.0); + + // Network 10: Liters in Tank (Original Language: LAD) + + ProductLiterInTank(i_TankLevel := "mLocalProdLevel"); + + // Network 11: Sample (Original Language: LAD) + + "mProdSamples"(mTakeProdSample := "mTakeProdSample"); + + // Network 12: Sample Time (Original Language: LAD) + + IF "Procedure_Variables"."ProdCO2_Track"."Latch" THEN + "mSampleTimeCalc"(mAuxProdCO2Corr := "mAuxProdCO2Corr", mCycleCount := "MW1998", mProdCO2Sample := "mProdCO2Sample", mTakeSample := "mTakeSample"); + END_IF; + + // Network 13: Reset Tracking (Original Language: LAD) + + IF "Procedure_Variables"."ProdCO2_Track"."Latch" THEN + "Blender_Variables"."gCO2TrackingCorr" := 0.0; + "mAuxProdCO2Corr" := 0.0; + END_IF; + + // Network 14: Product Brix Tracking (Original Language: LAD) + + "HMI_Alarms"."gH_Status" := "Procedure_Variables"."ProdCO2_Track"."Running"; + + // Network 15: Tracking Done (Original Language: LAD) + + "Procedure_Variables"."ProdCO2_Track"."Done" := "gBlenderRinseMode" OR ("Procedure_Variables"."ProdCO2_Track"."Request" AND "mLatchONS" AND "Procedure_Variables"."ProdCO2_Track"."Latch"); + + // Network 16: Quality Monitor (Original Language: LAD) + + IF "mTakeSample" OR ("AUX FALSE" AND "mTakeProdSample") THEN + "mProdCO2Stat"(i_Cols := "mProdCO2Sample", i_Rows := 1, i_Value := "Blender_Variables"."gProductCO2"); + END_IF; + + // Network 17: Reset Take Sample (Original Language: LAD) + // Product Quality Monitor + + IF "mTakeSample" THEN + "mTakeSample" := FALSE; + END_IF; + + // Network 18: Reset Product Sample (Original Language: LAD) + + IF "mTakeProdSample" THEN + "mTakeProdSample" := FALSE; + END_IF; + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CO2Tracking_Data.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CO2Tracking_Data.md new file mode 100644 index 0000000..b41a7a2 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CO2Tracking_Data.md @@ -0,0 +1,26 @@ +```pascal +// Block Type: InstanceDB +// Block Number: 976 + +DATA_BLOCK "CO2Tracking_Data" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + mTakeSample : Bool := FALSE; + mTakeProdSample : Bool := FALSE; + mProdCO2Sample : Int := 35; + mAuxProdCO2Corr : Real := 0.0; + mLocalProdLevel : Real := 0.1627604; + mProdCO2Stat : "Statistical_Analisys"; + mProdSamples : "CO2Tracking_ProdSamples"; + mSampleTimeCalc : "CO2Tracking_SampleTime"; + mAuxONS : Bool := FALSE; + mAuxONS1 : Bool := FALSE; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CO2Tracking_ProdSamples.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CO2Tracking_ProdSamples.md new file mode 100644 index 0000000..6556312 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CO2Tracking_ProdSamples.md @@ -0,0 +1,45 @@ +```pascal +FUNCTION_BLOCK "CO2Tracking_ProdSamples" +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : TASK2 +NAME : 'Name' +VERSION : 1.0 + VAR_IN_OUT + mTakeProdSample : Bool; + END_VAR + + VAR + gProductTotalizerLt : "Integral"; + mProdInit : Real; + END_VAR + + +BEGIN + + + (* Calculates the product liters during blending. Every 60 Liters of product take a sample for the statistical analisys + in order to correct the product brix *) + + IF "gBlenderBlending" THEN + #gProductTotalizerLt.i_NewValue := "Blender_Variables".gActual_Prod_Flow ; + #gProductTotalizerLt.i_IntCycle := "Time_250ms" ; + #gProductTotalizerLt(Out_Integral := "Blender_Variables".gProductLiters) ; + END_IF; + + IF "gBlenderRinseMode" OR "gBlenderCIPMode" THEN + (* classic code: "Blender_Variables".gProductLiters := 0.0 ;*) + "Blender_Variables".gProductLiters := REAL#0.0 ; + #gProductTotalizerLt(Out_Integral := "Blender_Variables".gProductLiters) ; + END_IF; + + IF ("Blender_Variables".gProductLiters - #mProdInit) > 60 THEN + #mTakeProdSample := TRUE ; + #mProdInit := "Blender_Variables".gProductLiters ; + END_IF; + + +END_FUNCTION_BLOCK + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CO2Tracking_SampleTime.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CO2Tracking_SampleTime.md new file mode 100644 index 0000000..bccb8ba --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CO2Tracking_SampleTime.md @@ -0,0 +1,92 @@ +```pascal +FUNCTION_BLOCK "CO2Tracking_SampleTime" +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : TASK2 +NAME : 'Name' +VERSION : 1.0 + VAR_IN_OUT + mTakeSample : Bool; + mCycleCount : Int; + mProdCO2Sample : Int; + mAuxProdCO2Corr : Real; + END_VAR + + VAR + mStart : Bool; + mAllSamples : Bool; + mWaitCycleToSample : Int; + mTotalCount : Int; + mProdRefresh : Real; + mProdRefreshS : Real; + mAuxProdCO2CorrInit : Real; + END_VAR + + +BEGIN + + + (* classic code: IF "Blender_Variables".gActual_Prod_SP <> 0.0 THEN*) + IF "Blender_Variables".gActual_Prod_SP <> REAL#0.0 THEN + #mProdRefresh := "Blender_Variables".gProductLitTank / "Blender_Variables".gActual_Prod_SP ; + ELSE + #mProdRefresh := 0 ; + END_IF; + + (* classic code: #mProdRefreshS := #mProdRefresh * 1.6 * 60 ;*) + #mProdRefreshS := #mProdRefresh * REAL#1.6 * 60 ; + + IF "Time_250ms" <> 0 AND #mProdCO2Sample <> 0 THEN + #mWaitCycleToSample := REAL_TO_INT(#mProdRefreshS / #mProdCO2Sample / "Time_250ms") ; + END_IF; + + IF #mWaitCycleToSample < 1 THEN + #mWaitCycleToSample := 1 ; + END_IF; + + IF "Procedure_Variables".ProdCO2_Track.Latch AND NOT "gNoFreezeProductMeter" THEN + IF #mCycleCount <= #mWaitCycleToSample THEN + #mCycleCount := #mCycleCount + 1 ; + ELSE + #mTakeSample := TRUE ; + #mCycleCount := 0 ; + END_IF; + ELSE + #mTakeSample := FALSE ; + END_IF; + + IF #mTakeSample THEN + #mTotalCount := #mTotalCount + 1 ; + END_IF; + + IF #mTotalCount >= #mProdCO2Sample THEN + IF "Procedure_Variables".ProdCO2_Track.Running THEN + IF NOT #mStart THEN + #mStart := TRUE ; + #mAuxProdCO2CorrInit := "HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Vols - "Blender_Variables".gProdCO2Stat_MeanValue ; + IF #mAuxProdCO2Corr=0 THEN + #mAuxProdCO2Corr := ("HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Vols - "Blender_Variables".gProdCO2Stat_MeanValue) / 3 ; + END_IF; + ELSE + #mStart := FALSE ; + #mAuxProdCO2Corr := #mAuxProdCO2Corr + ("HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Vols - "Blender_Variables".gProdCO2Stat_MeanValue) / 10 ; + END_IF; + END_IF; + #mAllSamples := TRUE ; + #mTotalCount := 0 ; + ELSE + #mAllSamples := FALSE ; + END_IF; + + // Check the LIMIT boundaries TO act the product tracking + IF "Procedure_Variables".ProdCO2_Track.Running THEN + IF NOT (ABS(#mAuxProdCO2Corr) < "Blender_Constants".gCO2TrackingMinCorr OR ABS(#mAuxProdCO2Corr) > "Blender_Constants".gCO2TrackingMaxCorr) THEN + "Blender_Variables".gCO2TrackingCorr := #mAuxProdCO2Corr ; + END_IF; + END_IF; + + +END_FUNCTION_BLOCK + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/COMPLETE_RESTART.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/COMPLETE_RESTART.md new file mode 100644 index 0000000..aa240e8 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/COMPLETE_RESTART.md @@ -0,0 +1,77 @@ +```pascal +// Block Type: OB +// Block Name (Original): COMPLETE RESTART +// Block Number: 100 +// Original Network Languages: LAD, STL + +ORGANIZATION_BLOCK "COMPLETE_RESTART" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + OB100_EV_CLASS : Byte; + OB100_STRTUP : Byte; + OB100_PRIORITY : Byte; + OB100_OB_NUMBR : Byte; + OB100_RESERVED_1 : Byte; + OB100_RESERVED_2 : Byte; + OB100_STOP : Word; + OB100_STRT_INFO : DWord; + OB100_DATE_TIME : "Date_And_Time"; + All_Auto_RETVAL : Int; + TempBlockDB : "DB_ANY"; +END_VAR + +BEGIN + + // Network 1: MIX - Complete Restart Memory (Original Language: LAD) + + IF "M19512" THEN + "M19512" := TRUE; + END_IF; + + // Network 2: DB (Original Language: LAD) + // HMI Variables Command + + "TempBlockDB" := "HMI_Variables_Cmd"; + + // Network 3: Open DB (Original Language: STL) + + // --- BEGIN STL Network 3 --- + + AUF "HMI_Variables_Cmd" + + // --- END STL Network 3 --- + + // Network 4: Clear Commands (Original Language: STL) + // HMI Variables Command - Commands From HMI + + // --- BEGIN STL Network 4 --- + + L 0 + T DBD0.0 + T DBD4.0 + + // --- END STL Network 4 --- + + // Network 5: Clear Tests Bits & Simulation (Original Language: STL) + + // --- BEGIN STL Network 5 --- + + CLR + = "HMI_Blender_Parameters".Processor_Options.Blender_OPT._Simulation + = "HMI_Service".Workshop_Test.WorkshopTest + = "HMI_Service".Workshop_Test.CIPSignalsTestRequest + = "HMI_Service".Workshop_Test.CO2TestPresent + = "HMI_Service".Workshop_Test.FillerSignalsTestRequest + = "HMI_Service".Workshop_Test.SyrupTestRequest + + // --- END STL Network 5 --- + + // Network 6: All in Automatic (Original Language: LAD) + + BlenderCtrl_All_Auto(); + +END_ORGANIZATION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CPU_DP_Global_Diag.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CPU_DP_Global_Diag.md new file mode 100644 index 0000000..849380d --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CPU_DP_Global_Diag.md @@ -0,0 +1,120 @@ +```pascal +// Block Type: FC +// Block Name (Original): CPU_DP Global Diag +// Block Number: 14 +// Original Network Languages: LAD, STL +// Block Comment: +// *** PLC Profibus Node Comunication Control *** + +FUNCTION "CPU_DP_Global_Diag" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + SZL_HEADER : "Struct"; +END_VAR + + #_2S : Bool; // Auto-generated temporary +BEGIN + + // Network 1: Air Pressure Switch (Original Language: STL) + // Read Status PLC Led + + // --- BEGIN STL Network 1 --- + + AN "HMI CPU_DP Diag".Led_PLC.SFC_51.Busy + = "HMI CPU_DP Diag".Led_PLC.SFC_51.REQ + CALL _Call_? + + L "SZL_HEADER".LENGTHDR + T "HMI CPU_DP Diag".Led_PLC.SFC_51.Length + L "SZL_HEADER".N_DR + T "HMI CPU_DP Diag".Led_PLC.SFC_51.Set_Data + + L "HMI CPU_DP Diag".Led_PLC.SF.Led_GR_FLT + L "HMI CPU_DP Diag".Led_PLC.SF.Led_GR_ON_OFF + L "HMI CPU_DP Diag".Led_PLC.SF.Flash_Led_Y_N + ADD_I + T "HMI CPU_DP Diag".Led_PLC.Staus.SF_ON + L "HMI CPU_DP Diag".Led_PLC.RUN.Led_GR_FLT + L "HMI CPU_DP Diag".Led_PLC.RUN.Led_GR_ON_OFF + L "HMI CPU_DP Diag".Led_PLC.RUN.Flash_Led_Y_N + ADD_I + T "HMI CPU_DP Diag".Led_PLC.Staus.RUN_ON + L "HMI CPU_DP Diag".Led_PLC.STOP.Led_GR_FLT + L "HMI CPU_DP Diag".Led_PLC.STOP.Led_GR_ON_OFF + L "HMI CPU_DP Diag".Led_PLC.STOP.Flash_Led_Y_N + ADD_I + T "HMI CPU_DP Diag".Led_PLC.Staus.STOP_ON + L "HMI CPU_DP Diag".Led_PLC.Force.Led_GR_FLT + L "HMI CPU_DP Diag".Led_PLC.Force.Led_GR_ON_OFF + L "HMI CPU_DP Diag".Led_PLC.Force.Flash_Led_Y_N + ADD_I + T "HMI CPU_DP Diag".Led_PLC.Staus.FORCE_ON + L "HMI CPU_DP Diag".Led_PLC.BF1.Led_GR_FLT + L "HMI CPU_DP Diag".Led_PLC.BF1.Led_GR_ON_OFF + L "HMI CPU_DP Diag".Led_PLC.BF1.Flash_Led_Y_N + ADD_I + T "HMI CPU_DP Diag".Led_PLC.Staus.BF1_ON + L "HMI CPU_DP Diag".Led_PLC.BF2.Led_GR_FLT + L "HMI CPU_DP Diag".Led_PLC.BF2.Led_GR_ON_OFF + L "HMI CPU_DP Diag".Led_PLC.BF2.Flash_Led_Y_N + ADD_I + T "HMI CPU_DP Diag".Led_PLC.Staus.BF2_ON + + // --- END STL Network 1 --- + + // Network 2: HMI Global Diagnosis (Original Language: LAD) + // Setting: + // -DP Master #1 + // -External DP Interface + // -Manual/Automatic Mode + + IF "AUX TRUE" THEN + "HMI CPU_DP Diag"."Cmd"."DP_Master_Number" := 1; + END_IF; + + IF "AUX TRUE" THEN + "HMI CPU_DP Diag"."Cmd"."External_Interface" := FALSE; + END_IF; + + IF "AUX TRUE" THEN + "HMI CPU_DP Diag"."Cmd"."Manual_Mode" := TRUE; + END_IF; + + // Network 3: HMI Global Diagnosis (Original Language: LAD) + // Set Check Active Fault + + // PBox SymPy processed, logic in consumer + "HMI CPU_DP Diag"."Cmd"."FP_Reset" := "HMI CPU_DP Diag"."Cmd"."Reset"; // P_TRIG("HMI CPU_DP Diag"."Cmd"."Reset") - Mem: "HMI CPU_DP Diag"."Cmd"."FP_Reset" + + IF "M19510" OR "M19511" THEN + "M19514" := TRUE; + END_IF; + + // Network 4: HMI Global Diagnosis (Original Language: LAD) + // Set Single Diag Request + + // PBox SymPy processed, logic in consumer + "HMI CPU_DP Diag"."Cmd"."FP_Single_Diag" := "HMI CPU_DP Diag"."Cmd"."Single_Diag"; // P_TRIG("HMI CPU_DP Diag"."Cmd"."Single_Diag") - Mem: "HMI CPU_DP Diag"."Cmd"."FP_Single_Diag" + + IF "HMI CPU_DP Diag"."Cmd"."Single_Diag" AND NOT "HMI CPU_DP Diag"."Cmd"."FP_Single_Diag" THEN + "M19515" := TRUE; + END_IF; + + // Network 5: HMI Global Diagnosis (Original Language: LAD) + // Reset First Access Page + + "T019"(IN := "HMI CPU_DP Diag"."Cmd"."Reset" OR "HMI CPU_DP Diag"."Cmd"."Single_Diag", PT := S5T#2S); // TODO: Declarar "T019" : TON; + + IF "HMI CPU_DP Diag"."Cmd"."Reset" AND "T019".Q THEN + "HMI CPU_DP Diag"."Cmd"."Reset" := FALSE; + END_IF; + + IF "HMI CPU_DP Diag"."Cmd"."Single_Diag" AND "T019".Q THEN + "HMI CPU_DP Diag"."Cmd"."Single_Diag" := FALSE; + END_IF; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CTRLCoolingSystem.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CTRLCoolingSystem.md new file mode 100644 index 0000000..b92445b --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CTRLCoolingSystem.md @@ -0,0 +1,69 @@ +```pascal +// Block Type: FC +// Block Number: 1700 +// Original Network Languages: LAD + +FUNCTION "CTRLCoolingSystem" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + #_15S : Bool; // Auto-generated temporary + #_5S : Bool; // Auto-generated temporary +END_VAR + +BEGIN + + // Network 1: Cooling Bypass (Original Language: LAD) + // Controllo temperatura ingresso Acqua Glicolata attivando Bypass + // Gestisce inoltre isteresi per il reset iniziale a -4 °C + + // PBox SymPy processed, logic in consumer + "gCoolingSystemBypassFP" := ("HMI_Instrument"."TTM307"."PVFiltered" <= -5.0) OR ("HMI_Instrument"."TTM307"."PVFiltered" <= -4.0); // P_TRIG(("HMI_Instrument"."TTM307"."PVFiltered" <= -5.0) OR ("HMI_Instrument"."TTM307"."PVFiltered" <= -4.0)) - Mem: "gCoolingSystemBypassFP" + + IF (NOT "gCoolingSystemBypassFP" AND ("HMI_Instrument"."TTM307"."PVFiltered" <= -5.0)) OR (NOT "gCoolingSystemBypassFP" AND ("HMI_Instrument"."TTM307"."PVFiltered" <= -4.0)) THEN + "gCoolingSystemBypass" := TRUE; + END_IF; + + "gCoolingTempMaxLowAlrm" := ("HMI_Instrument"."TTM307"."PVFiltered" <= -5.0) OR ("HMI_Instrument"."TTM307"."PVFiltered" <= -4.0); + + // Network 2: Warning Low Temnperature (Original Language: LAD) + // warning di controllo per temperatura minima sotto i -3°C + + "HMI_Alarms"."gH_Message" := "HMI_Instrument"."TTM307"."PVFiltered" <= -3.0; + + // Network 3: Cooling Bypass (Original Language: LAD) + + "gBypassGlicoleSysDelay"(IN := "gCoolingSystemBypass", PT := S5T#5S); // TODO: Declarar "gBypassGlicoleSysDelay" : TON; + + IF "gBypassGlicoleSysDelay".Q THEN + "gCoolingSysBypassAct" := TRUE; + END_IF; + + // Network 4: Cooling Bypass Reset (Original Language: LAD) + // Il controllo della temperatura può essere eseguito confrontando: + // - TTM307 tramite il parametro di riferimento controllo temperatura impostato a + // pannello + + "gRSTBYPSGlicoleSys"(IN := "HMI_Instrument"."TTM307"."PVFiltered" >= "HMI_Blender_Parameters"."ProcessSetup"."_RefTempCoolingCTRL", PT := S5T#15S); // TODO: Declarar "gRSTBYPSGlicoleSys" : TON; + + // Network 5: Cooling System Bypass Reset (Original Language: LAD) + + "gColingSystemBypassReset" := "gRSTBYPSGlicoleSys"; + + // Network 6: Mix - Reset Bypass Glycole (Original Language: LAD) + + // PBox SymPy processed, logic in consumer + "gColingSysBypassResetFP" := "gColingSystemBypassReset"; // P_TRIG("gColingSystemBypassReset") - Mem: "gColingSysBypassResetFP" + + IF "gColingSystemBypassReset" AND NOT "gColingSysBypassResetFP" THEN + "gCoolingSystemBypass" := FALSE; + END_IF; + + IF "gColingSystemBypassReset" AND NOT "gColingSysBypassResetFP" THEN + "gCoolingSysBypassAct" := FALSE; + END_IF; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CVQ_1p7_8_Perc.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CVQ_1p7_8_Perc.md new file mode 100644 index 0000000..451a021 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CVQ_1p7_8_Perc.md @@ -0,0 +1,42 @@ +```pascal +FUNCTION "CVQ_1p7_8_Perc" : Real +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : 'Function' +NAME : 'Name' +VERSION : 1.0 + VAR_INPUT + i_Temp : Real; + END_VAR + + VAR_TEMP + a : Real; + b : Real; + c : Real; + d : Real; + END_VAR + + +BEGIN + + + (* CVQ Valve in 1.7 - 8 bar range. Min Actuator Temperature 83°C; max Actuator temperature 110°C *) + (* 110 - 83 = 27°C *) + + (* classic code: #a := 0.000176883 ;*) + #a := REAL#0.000176883 ; + (* classic code: #b := -0.000322 ;*) + #b := REAL#-0.000322; + (* classic code: #c := 1.4005362 ;*) + #c := REAL#1.4005362 ; + (* classic code: #d := 80.987085 ;*) + #d := REAL#80.987085; + + (* classic code: #CVQ_1p7_8_Perc := LIMIT( MN:= 0, IN:= ((SQR(#i_Temp)* #i_Temp * #a + SQR(#i_Temp) * #b + #i_Temp * #c + #d) - 83) / 27 * 100.0, MX:= 100) ;*) + #CVQ_1p7_8_Perc := LIMIT( MN:= 0, IN:= ((SQR(#i_Temp)* #i_Temp * #a + SQR(#i_Temp) * #b + #i_Temp * #c + #d) - 83) / 27 * REAL#100.0, MX:= 100) ; + + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CYC_INT5.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CYC_INT5.md new file mode 100644 index 0000000..c87a70e --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CYC_INT5.md @@ -0,0 +1,192 @@ +```pascal +// Block Type: OB +// Block Number: 35 +// Original Network Languages: LAD, STL +// Block Comment: +// OB35_EXC_FREQ = 50ms + +ORGANIZATION_BLOCK "CYC_INT5" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + OB35_EV_CLASS : Byte; + OB35_STRT_INF : Byte; + OB35_PRIORITY : Byte; + OB35_OB_NUMBR : Byte; + OB35_RESERVED_1 : Byte; + OB35_RESERVED_2 : Byte; + OB35_PHASE_OFFSET : Word; + OB35_RESERVED_3 : Int; + OB35_EXC_FREQ : Int; + OB35_DATE_TIME : "Date_And_Time"; +END_VAR + +BEGIN + + // Network 1: Cycles Counter (Original Language: LAD) + // PID Control Time Bit (300ms) + + "MW1968" := "MW1968" + 1; + + IF "MW1968" >= 7 THEN + "MW1968" := 1; + END_IF; + + // Network 2: Signal Gen (Original Language: LAD) + + "Signal_Gen_Data"(); + + // Network 3: Analog Values (PV) (Original Language: LAD) + + "MFM_Analog_Value_Data"(); + + // Network 4: PIDs Call (Original Language: LAD) + + IF Eq("MW1968", 6) THEN + "BlenderPID__Main_Data"(); + END_IF; + + // Network 5: Meas Fill Speed Call (Original Language: LAD) + + IF Eq("MW1968", 4) THEN + "BlenderRun_MeasFil_Data"(); + END_IF; + + // Network 6: Brix Tracking (Original Language: LAD) + + IF Eq("MW1968", 3) THEN + "BrixTracking_Data"(); + END_IF; + + // Network 7: Co2 Tracking Data (Original Language: LAD) + + IF Eq("MW1968", 6) THEN + "CO2Tracking_Data"(); + END_IF; + + // Network 8: Water Totalizer Reset (Original Language: STL) + // Reset Totalizer + + // --- BEGIN STL Network 8 --- + + O "gBlenderCIPMode" + O "gBlenderRinseMode" + O "SLIM_Variables".ResetCounter + JCN nore + L 0.0 + T "Blender_Variables_Pers".gWaterTotal + T "Blender_Variables_Pers".gWaterTempTot + nore: NOP_0 + + // --- END STL Network 8 --- + + // Network 9: Syrup Totalizer Reset (Original Language: STL) + // Reset Totalizer + + // --- BEGIN STL Network 9 --- + + O "gBlenderCIPMode" + O "gBlenderRinseMode" + O "SLIM_Variables".ResetCounter + JCN nore_1 + L 0.0 + T "Blender_Variables_Pers".gSyrupTotal + T "Blender_Variables_Pers".gSyrupTempTot + T "HMI_Variables_Status".Analog_Values.SyrupTotalizerLt + nore_1: NOP_0 + + // --- END STL Network 9 --- + + // Network 10: CO2 Totalizer Reset (Original Language: STL) + // Reset Totalizer + + // --- BEGIN STL Network 10 --- + + O "gBlenderCIPMode" + O "gBlenderRinseMode" + O "SLIM_Variables".ResetCounter + JCN nore_2 + L 0.0 + T "Blender_Variables_Pers".gWaterTotal + T "Blender_Variables_Pers".gSyrupTotal + T "Blender_Variables_Pers".gCO2Total + T "Blender_Variables_Pers".gProductVFMTotal + T "Blender_Variables_Pers".gWaterTempTot + T "Blender_Variables_Pers".gSyrupTempTot + T "Blender_Variables_Pers".gCO2TempTot + T "Blender_Variables_Pers".gProductVFMTempTot + T "HMI_Variables_Status".Analog_Values.SyrupTotalizerLt + nore_2: NOP_0 + + // --- END STL Network 10 --- + + // Network 11: Product Totalizer Reset (Original Language: STL) + // Reset Totalizer + + // --- BEGIN STL Network 11 --- + + O "gBlenderCIPMode" + O "gBlenderRinseMode" + O "SLIM_Variables".ResetCounter + JCN nore_3 + L 0.0 + T "Blender_Variables_Pers".gProductVFMTotal + T "Blender_Variables_Pers".gProductVFMTempTot + nore_3: NOP_0 + + // --- END STL Network 11 --- + + // Network 12: PID Main Data (Original Language: LAD) + + "PID MAIN Data"(); + + // Network 13: 1 Cycle OB35 in msec (Original Language: STL) + // 50ms Task (See FB29) + + // --- BEGIN STL Network 13 --- + + L "OB35_EXC_FREQ" + ITD + DTR + L 1000.0 + DIV_R + T "Time_50ms" + + // --- END STL Network 13 --- + + // Network 14: 5 Cycle OB35 in msec (Original Language: STL) + // 250ms Task (See FB29) + + // --- BEGIN STL Network 14 --- + + L "OB35_EXC_FREQ" + L 5 + MUL_I + ITD + DTR + L 1000.0 + DIV_R + T "Time_250ms" + + // --- END STL Network 14 --- + + // Network 15: 6 Cycle OB35 in msec (Original Language: STL) + // 300ms Task (See FB29) + + // --- BEGIN STL Network 15 --- + + L "OB35_EXC_FREQ" + L 6 + MUL_I + ITD + DTR + L 1000.0 + DIV_R + T "Time_300ms" + + // --- END STL Network 15 --- + +END_ORGANIZATION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CarboWaterLine_Seq.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CarboWaterLine_Seq.md new file mode 100644 index 0000000..d87251d --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/CarboWaterLine_Seq.md @@ -0,0 +1,174 @@ +```pascal +// Block Type: FC +// Block Number: 1802 +// Original Network Languages: LAD, STL + +FUNCTION "CarboWaterLine_Seq" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INOUT + mStep_Number : Int; + mTimer : Int; + mTransition : Bool; +END_VAR + +VAR_TEMP + mAuxTimer : Int; + __PlcmigTempFillBits_2B0 : Array[0..7] of Bool; +END_VAR + +BEGIN + + // Network 1: STEP CONTROL (Original Language: STL) + + // --- BEGIN STL Network 1 --- + + L "mStep_Number" + JL LEND + JU ST00 + JU ST01 + JU ST02 + LEND: JU FULL + FULL: L 0 + T "mStep_Number" + JU END + + // --- END STL Network 1 --- + + // Network 2: STEP 00 (Original Language: LAD) + // Step 0: Wait To Carbonate Water Line + + IF "AUX FALSE" THEN + "gSP_RVN301" := TRUE; + END_IF; + + IF "AUX FALSE" AND "Disable_Bit" THEN + "gSP_AVM322" := TRUE; + END_IF; + + IF "AUX FALSE" THEN + "gSP_PPN301" := TRUE; + END_IF; + + IF "AUX FALSE" THEN + "gSP_AVM326" := TRUE; + END_IF; + + IF "AUX FALSE" THEN + "gSP_CarboPipe_En" := TRUE; + END_IF; + + IF "AUX FALSE" THEN + "gSP_AVN328" := TRUE; + END_IF; + + // Network 3: STEP 00 (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" THEN + "gSP_PPN305" := TRUE; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" THEN + "gSP_RVN301_1" := TRUE; + END_IF; + + // Network 4: STEP 00 (Original Language: LAD) + + SEL_I(G := Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CoolerControl", 1) OR Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CoolerControl", 3), IN0 := 0, IN1 := 0); + + // Network 5: STEP 00 (Original Language: STL) + + // --- BEGIN STL Network 5 --- + + A "AUX TRUE" + = "__PlcmigTempFillBits_2B0"[0] + BLD 103 + A "AUX TRUE" + = "__PlcmigTempFillBits_2B0"[1] + BLD 103 + A "Procedure_Variables".CarboWaterLine.Wait + = "__PlcmigTempFillBits_2B0"[2] + BLD 103 + A CLK_0.5S + = "__PlcmigTempFillBits_2B0"[3] + BLD 103 + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 5 --- + + // Network 6: STEP 01 (Original Language: LAD) + // Step 1: Wait To Carbonate Water Line + + IF "AUX TRUE" THEN + "gSP_RVN301" := TRUE; + END_IF; + + IF "AUX TRUE" THEN + "gSP_PPN301" := TRUE; + END_IF; + + IF "AUX TRUE" THEN + "gSP_AVM326" := TRUE; + END_IF; + + IF "AUX TRUE" THEN + "gSP_CarboPipe_En" := TRUE; + END_IF; + + IF "AUX TRUE" THEN + "gSP_AVN328" := TRUE; + END_IF; + + // Network 7: STEP 01 (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" THEN + "gSP_PPN305" := TRUE; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" THEN + "gSP_RVN301_1" := TRUE; + END_IF; + + // Network 8: STEP 01 (Original Language: STL) + + // --- BEGIN STL Network 8 --- + + A "AUX TRUE" + = "__PlcmigTempFillBits_2B0"[0] + BLD 103 + A "AUX TRUE" + = "__PlcmigTempFillBits_2B0"[1] + BLD 103 + A "Procedure_Variables".CarboWaterLine.Wait + = "__PlcmigTempFillBits_2B0"[2] + BLD 103 + A CLK_0.5S + = "__PlcmigTempFillBits_2B0"[3] + BLD 103 + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 8 --- + + // Network 9: STEP 02 (Original Language: LAD) + // Water Line Carbonation Completed + + IF "AUX TRUE" THEN + "Procedure_Variables"."CarboWaterLine"."Done" := TRUE; + END_IF; + + // Network 10: END (Original Language: STL) + + // --- BEGIN STL Network 10 --- + + END: NOP_0 + + // --- END STL Network 10 --- + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Cetrifugal_Head.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Cetrifugal_Head.md new file mode 100644 index 0000000..81e96b6 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Cetrifugal_Head.md @@ -0,0 +1,35 @@ +```pascal +FUNCTION "Cetrifugal_Head" : Real +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : 'Function' +NAME : 'Name' +VERSION : 1.0 + VAR_INPUT + i_Diameter : Real; // Carousel Diameter [mm] + i_NumValve : Int; // Filling Valve Number + i_Speed : Real; // Speed [BpH] + END_VAR + + VAR_TEMP + Omega : Real; + Radius : Real; + END_VAR + + +BEGIN + + + // Filler Centrifugal Head [mm] + IF #i_NumValve <> 0 THEN + #Omega := ( #i_Speed / #i_NumValve / 3600 ) * 2 * "Blender_Constants".gP_Greek ; + END_IF; + #Radius := #i_Diameter / 2 / 1000 ; + (* classic code: #Cetrifugal_Head := (( 0.5 * #Omega*#Omega * #Radius * #Radius ) / 9.8 ) * 1000 ;*) + #Cetrifugal_Head := (( REAL#0.5 * #Omega*#Omega * #Radius * #Radius ) / REAL#9.8 ) * 1000 ; + + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Clock_Signal.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Clock_Signal.md new file mode 100644 index 0000000..a02fe12 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Clock_Signal.md @@ -0,0 +1,107 @@ +```pascal +// Block Type: FC +// Block Name (Original): Clock Signal +// Block Number: 1860 +// Original Network Languages: LAD + +FUNCTION "Clock_Signal" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + Actual_Time : DInt; + Timer_For_Clock : Word; +END_VAR + + #_2M : Bool; // Auto-generated temporary +BEGIN + + // Network 1: MIX - CLK_0.1S (Original Language: LAD) + + // Edge Logic handled by Coil 26 + "CLK_0.05S_SUPPORT" := "Clock_10Hz"; // P_TRIG("Clock_10Hz") - Mem: "CLK_0.05S_SUPPORT" + + "CLK_0.1S" := "Clock_10Hz" AND NOT "CLK_0.05S_SUPP OR T"; + "CLK_0.05S_SUPPORT" := "Clock_10Hz"; // P_TRIG("Clock_10Hz") - Mem: "CLK_0.05S_SUPPORT" + + // Network 2: MIX - CLK_0.2S (Original Language: LAD) + + // Edge Logic handled by Coil 26 + "CLK_0.1S_SUPPORT" := "Clock_5Hz"; // P_TRIG("Clock_5Hz") - Mem: "CLK_0.1S_SUPPORT" + + "CLK_0.2S" := "Clock_5Hz" AND NOT "CLK_0.1S_SUPP OR T"; + "CLK_0.1S_SUPPORT" := "Clock_5Hz"; // P_TRIG("Clock_5Hz") - Mem: "CLK_0.1S_SUPPORT" + + // Network 3: MIX - CLK_0.5S (Original Language: LAD) + + // Edge Logic handled by Coil 26 + "CLK_0.25S_SUPPORT" := "Clock_2Hz"; // P_TRIG("Clock_2Hz") - Mem: "CLK_0.25S_SUPPORT" + + "CLK_0.5S" := "Clock_2Hz" AND NOT "CLK_0.25S_SUPP OR T"; + "CLK_0.25S_SUPPORT" := "Clock_2Hz"; // P_TRIG("Clock_2Hz") - Mem: "CLK_0.25S_SUPPORT" + + // Network 4: MIX - CLK_0.8S (Original Language: LAD) + + // Edge Logic handled by Coil 26 + "CLK_0.4S_SUPPORT" := "Clock_1.25Hz"; // P_TRIG("Clock_1.25Hz") - Mem: "CLK_0.4S_SUPPORT" + + "CLK_0.8S" := "Clock_1.25Hz" AND NOT "CLK_0.4S_SUPP OR T"; + "CLK_0.4S_SUPPORT" := "Clock_1.25Hz"; // P_TRIG("Clock_1.25Hz") - Mem: "CLK_0.4S_SUPPORT" + + // Network 5: MIX - CLK_1.0S (Original Language: LAD) + + // Edge Logic handled by Coil 26 + "CLK_0.5S_SUPPORT" := "Clock_1Hz"; // P_TRIG("Clock_1Hz") - Mem: "CLK_0.5S_SUPPORT" + + "CLK_1.0S" := "Clock_1Hz" AND NOT "CLK_0.5S_SUPP OR T"; + "CLK_0.5S_SUPPORT" := "Clock_1Hz"; // P_TRIG("Clock_1Hz") - Mem: "CLK_0.5S_SUPPORT" + + // Network 6: MIX - CLK_2.0S (Original Language: LAD) + + // Edge Logic handled by Coil 26 + "CLK_0.8S_SUPPORT" := "Clock_0.625Hz"; // P_TRIG("Clock_0.625Hz") - Mem: "CLK_0.8S_SUPPORT" + + "CLK_1.6S" := "Clock_0.625Hz" AND NOT "CLK_0.8S_SUPP OR T"; + "CLK_0.8S_SUPPORT" := "Clock_0.625Hz"; // P_TRIG("Clock_0.625Hz") - Mem: "CLK_0.8S_SUPPORT" + + // Network 7: MIX - CLK_2.0S (Original Language: LAD) + + // Edge Logic handled by Coil 26 + "CLK_1.0S_SUPPORT" := "Clock_0.5Hz"; // P_TRIG("Clock_0.5Hz") - Mem: "CLK_1.0S_SUPPORT" + + "CLK_2.0S" := "Clock_0.5Hz" AND NOT "CLK_1.0S_SUPP OR T"; + "CLK_1.0S_SUPPORT" := "Clock_0.5Hz"; // P_TRIG("Clock_0.5Hz") - Mem: "CLK_1.0S_SUPPORT" + + // Network 8: (Original Language: LAD) + + // Network 8 did not produce printable SCL code. + + // Network 9: Clock Generation (Original Language: LAD) + // Timer Loading + + "T105"(IN := "T105", PT := S5T#2M); // TODO: Declarar "T105" : TON; + + // Network 10: (Original Language: LAD) + // MOVE For Change DATA-TYPE + + "Actual_Time" := "Timer_For_Clock"; + + // Network 11: Clock 120 seconds (Original Language: LAD) + + "gClock_120s" := "Actual_Time" <= DINT; + + // Network 12: Clock 60 seconds (Original Language: LAD) + + "gClock_60s" := "Actual_Time" >= DINT; + + // Network 13: Clock 40 Seconds (Original Language: LAD) + + "gClock_40s" := "Actual_Time" >= DINT; + + // Network 14: Clock 20 Seconds (Original Language: LAD) + + "gClock_20s" := "Actual_Time" >= DINT; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Co2_Counters.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Co2_Counters.md new file mode 100644 index 0000000..84fc4e6 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Co2_Counters.md @@ -0,0 +1,184 @@ +```pascal +// Block Type: FB +// Block Number: 1020 +// Original Network Languages: LAD + +FUNCTION_BLOCK "Co2_Counters" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + ons_1 : Bool; +END_VAR + +BEGIN + + // Network 1: DRAIN (Original Language: LAD) + + "Machine_Co2_Cons"."Drain" := "Machine_Co2_Cons"."Drain"; + + // Network 2: DRAIN (Original Language: LAD) + + // PBox SymPy processed, logic in consumer + "Machine_Co2_Cons"."Ons_1_A" := "Machine_Co2_Cons"."Drain"; // P_TRIG("Machine_Co2_Cons"."Drain") - Mem: "Machine_Co2_Cons"."Ons_1_A" + + IF "Machine_Co2_Cons"."Drain" AND NOT "Machine_Co2_Cons"."Ons_1_A" THEN + "Machine_Co2_Cons"."CO2_Counter_Drain_Start_Value" := "Machine_Co2_Cons"."CO2_Actual_Counter"; + END_IF; + + // NBox SymPy processed, logic in consumer + "Machine_Co2_Cons"."Ons_2_A" := "Machine_Co2_Cons"."Drain"; // N_TRIG("Machine_Co2_Cons"."Drain") - Mem: "Machine_Co2_Cons"."Ons_2_A" + + IF "Machine_Co2_Cons"."Ons_2_A" AND NOT "Machine_Co2_Cons"."Drain" THEN + "Machine_Co2_Cons"."CO2_Counter_Drain_End_Value" := "Machine_Co2_Cons"."CO2_Actual_Counter"; + END_IF; + + // NBox SymPy processed, logic in consumer + "Machine_Co2_Cons"."Ons_3_A" := "Machine_Co2_Cons"."Drain"; // N_TRIG("Machine_Co2_Cons"."Drain") - Mem: "Machine_Co2_Cons"."Ons_3_A" + + IF "Machine_Co2_Cons"."Ons_3_A" AND NOT "Machine_Co2_Cons"."Drain" THEN + "Machine_Co2_Cons"."CO2_Counter_Drain_Total" := "Machine_Co2_Cons"."CO2_Counter_Rinser_End_Value" - "Machine_Co2_Cons"."CO2_Counter_Drain_Start_Value"; + END_IF; + + // Network 3: RINSE ON (Original Language: LAD) + + "Machine_Co2_Cons"."Rinser" := "ColdRinseON"; + + // Network 4: RINSER (Original Language: LAD) + + // PBox SymPy processed, logic in consumer + "Machine_Co2_Cons"."Ons_4_A" := "Machine_Co2_Cons"."Rinser"; // P_TRIG("Machine_Co2_Cons"."Rinser") - Mem: "Machine_Co2_Cons"."Ons_4_A" + + IF "Machine_Co2_Cons"."Rinser" AND NOT "Machine_Co2_Cons"."Ons_4_A" THEN + "Machine_Co2_Cons"."CO2_Counter_Rinser_Start_Value" := "Machine_Co2_Cons"."CO2_Actual_Counter"; + END_IF; + + // NBox SymPy processed, logic in consumer + "Machine_Co2_Cons"."Ons_5_A" := "Machine_Co2_Cons"."Rinser"; // N_TRIG("Machine_Co2_Cons"."Rinser") - Mem: "Machine_Co2_Cons"."Ons_5_A" + + IF "Machine_Co2_Cons"."Ons_5_A" AND NOT "Machine_Co2_Cons"."Rinser" THEN + "Machine_Co2_Cons"."CO2_Counter_Rinser_End_Value" := "Machine_Co2_Cons"."CO2_Actual_Counter"; + END_IF; + + // NBox SymPy processed, logic in consumer + "Machine_Co2_Cons"."Ons_6_A" := "Machine_Co2_Cons"."Rinser"; // N_TRIG("Machine_Co2_Cons"."Rinser") - Mem: "Machine_Co2_Cons"."Ons_6_A" + + IF "Machine_Co2_Cons"."Ons_6_A" AND NOT "Machine_Co2_Cons"."Rinser" THEN + "Machine_Co2_Cons"."CO2_Counter_Rinser_Total" := "Machine_Co2_Cons"."CO2_Counter_Rinser_End_Value" - "Machine_Co2_Cons"."CO2_Counter_Rinser_Start_Value"; + END_IF; + + // Network 5: PROD RUNNING (Original Language: LAD) + + "Machine_Co2_Cons"."First_Prod" := "Procedure_Variables"."First_Production"."Running"; + + // Network 6: STARTUP DEAREATION (Original Language: LAD) + + // PBox SymPy processed, logic in consumer + "Machine_Co2_Cons"."Ons_10_A" := "Procedure_Variables"."TN301_StartUp"."Latch"; // P_TRIG("Procedure_Variables"."TN301_StartUp"."Latch") - Mem: "Machine_Co2_Cons"."Ons_10_A" + + IF "Procedure_Variables"."TN301_StartUp"."Latch" AND NOT "Machine_Co2_Cons"."Ons_10_A" THEN + "Machine_Co2_Cons"."CO2_Counter_Dear_Prep_Start_Value" := "Machine_Co2_Cons"."CO2_Actual_Counter"; + END_IF; + + // NBox SymPy processed, logic in consumer + "Machine_Co2_Cons"."Ons_11_A" := "Procedure_Variables"."TN301_StartUp"."Latch"; // N_TRIG("Procedure_Variables"."TN301_StartUp"."Latch") - Mem: "Machine_Co2_Cons"."Ons_11_A" + + IF "Machine_Co2_Cons"."Ons_11_A" AND NOT "Procedure_Variables"."TN301_StartUp"."Latch" THEN + "Machine_Co2_Cons"."CO2_Counter_Dear_Prep_End_Value" := "Machine_Co2_Cons"."CO2_Actual_Counter"; + END_IF; + + // NBox SymPy processed, logic in consumer + "Machine_Co2_Cons"."Ons_12_A" := "Procedure_Variables"."TN301_StartUp"."Latch"; // N_TRIG("Procedure_Variables"."TN301_StartUp"."Latch") - Mem: "Machine_Co2_Cons"."Ons_12_A" + + IF "Machine_Co2_Cons"."Ons_12_A" AND NOT "Procedure_Variables"."TN301_StartUp"."Latch" THEN + "Machine_Co2_Cons"."CO2_Counter_Dear_Prep_Total" := "Machine_Co2_Cons"."CO2_Counter_Dear_Prep_End_Value" - "Machine_Co2_Cons"."CO2_Counter_Dear_Prep_Start_Value"; + END_IF; + + // Network 7: CARBO WATER LINE (Original Language: LAD) + + // PBox SymPy processed, logic in consumer + "Machine_Co2_Cons"."Ons_16_A" := "Procedure_Variables"."CarboWaterLine"."Latch"; // P_TRIG("Procedure_Variables"."CarboWaterLine"."Latch") - Mem: "Machine_Co2_Cons"."Ons_16_A" + + IF "Procedure_Variables"."CarboWaterLine"."Latch" AND NOT "Machine_Co2_Cons"."Ons_16_A" THEN + "Machine_Co2_Cons"."CO2_Carb_Water_Line_Start_Value" := "Machine_Co2_Cons"."CO2_Actual_Counter"; + END_IF; + + // NBox SymPy processed, logic in consumer + "Machine_Co2_Cons"."Ons_17_A" := "Procedure_Variables"."CarboWaterLine"."Latch"; // N_TRIG("Procedure_Variables"."CarboWaterLine"."Latch") - Mem: "Machine_Co2_Cons"."Ons_17_A" + + IF "Machine_Co2_Cons"."Ons_17_A" AND NOT "Procedure_Variables"."CarboWaterLine"."Latch" THEN + "Machine_Co2_Cons"."CO2_Carb_Water_Line_End_Value" := "Machine_Co2_Cons"."CO2_Actual_Counter"; + END_IF; + + // NBox SymPy processed, logic in consumer + "Machine_Co2_Cons"."Ons_18_A" := "Procedure_Variables"."CarboWaterLine"."Latch"; // N_TRIG("Procedure_Variables"."CarboWaterLine"."Latch") - Mem: "Machine_Co2_Cons"."Ons_18_A" + + IF "Machine_Co2_Cons"."Ons_18_A" AND NOT "Procedure_Variables"."CarboWaterLine"."Latch" THEN + "Machine_Co2_Cons"."CO2_Carb_Water_Line_Total" := "Machine_Co2_Cons"."CO2_Carb_Water_Line_End_Value" - "Machine_Co2_Cons"."CO2_Carb_Water_Line_Start_Value"; + END_IF; + + // Network 8: PRODUCTION LATCH (Original Language: LAD) + + "Machine_Co2_Cons"."First_Prod" := "Procedure_Variables"."First_Production"."Latch"; + + // Network 9: FIRST PRODUCTION (Original Language: LAD) + + // PBox SymPy processed, logic in consumer + "Machine_Co2_Cons"."Ons_7_A" := "Machine_Co2_Cons"."First_Prod"; // P_TRIG("Machine_Co2_Cons"."First_Prod") - Mem: "Machine_Co2_Cons"."Ons_7_A" + + IF "Machine_Co2_Cons"."First_Prod" AND NOT "Machine_Co2_Cons"."Ons_7_A" THEN + "Machine_Co2_Cons"."CO2_Counter_First_Prod_Start_Value" := "Machine_Co2_Cons"."CO2_Actual_Counter"; + END_IF; + + // NBox SymPy processed, logic in consumer + "Machine_Co2_Cons"."Ons_8_A" := "Machine_Co2_Cons"."First_Prod"; // N_TRIG("Machine_Co2_Cons"."First_Prod") - Mem: "Machine_Co2_Cons"."Ons_8_A" + + IF "Machine_Co2_Cons"."Ons_8_A" AND NOT "Machine_Co2_Cons"."First_Prod" THEN + "Machine_Co2_Cons"."CO2_Counter_First_Prod_End_Value" := "Machine_Co2_Cons"."CO2_Actual_Counter"; + END_IF; + + // NBox SymPy processed, logic in consumer + "Machine_Co2_Cons"."Ons_9_A" := "Machine_Co2_Cons"."First_Prod"; // N_TRIG("Machine_Co2_Cons"."First_Prod") - Mem: "Machine_Co2_Cons"."Ons_9_A" + + IF "Machine_Co2_Cons"."Ons_9_A" AND NOT "Machine_Co2_Cons"."First_Prod" THEN + "Machine_Co2_Cons"."CO2_Counter_First_Prod_Total" := "Machine_Co2_Cons"."CO2_Counter_First_Prod_End_Value" - "Machine_Co2_Cons"."CO2_Counter_First_Prod_Start_Value"; + END_IF; + + // Network 10: CIP (Original Language: LAD) + + "Machine_Co2_Cons"."First_Prod" := "Procedure_Variables"."First_Production"."Running"; + + // Network 11: CIP (Original Language: LAD) + + // PBox SymPy processed, logic in consumer + "Machine_Co2_Cons"."Ons_13_A" := "gBlenderCIPMode"; // P_TRIG("gBlenderCIPMode") - Mem: "Machine_Co2_Cons"."Ons_13_A" + + IF "gBlenderCIPMode" AND NOT "Machine_Co2_Cons"."Ons_13_A" THEN + "Machine_Co2_Cons"."CO2_Counter_First_Prod_Start_Value" := "Machine_Co2_Cons"."CO2_Actual_Counter"; + END_IF; + + // NBox SymPy processed, logic in consumer + "Machine_Co2_Cons"."Ons_14_A" := "gBlenderCIPMode"; // N_TRIG("gBlenderCIPMode") - Mem: "Machine_Co2_Cons"."Ons_14_A" + + IF "Machine_Co2_Cons"."Ons_14_A" AND NOT "gBlenderCIPMode" THEN + "Machine_Co2_Cons"."CO2_Counter_CIP_End_Value" := "Machine_Co2_Cons"."CO2_Actual_Counter"; + END_IF; + + // NBox SymPy processed, logic in consumer + "Machine_Co2_Cons"."Ons_15_A" := "gBlenderCIPMode"; // N_TRIG("gBlenderCIPMode") - Mem: "Machine_Co2_Cons"."Ons_15_A" + + IF "Machine_Co2_Cons"."Ons_15_A" AND NOT "gBlenderCIPMode" THEN + "Machine_Co2_Cons"."CO2_Counter_CIP_Total" := "Machine_Co2_Cons"."CO2_Counter_CIP_End_Value" - "Machine_Co2_Cons"."CO2_Counter_CIP_Start_Value"; + END_IF; + + // Network 12: ACTUAL COUNTER (Original Language: LAD) + + "Machine_Co2_Cons"."CO2_Actual_Counter" := "Tag_24"; + + // Network 13: *** (Original Language: LAD) + + // Network 13 has no logic elements. + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Co2_Counters_DB.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Co2_Counters_DB.md new file mode 100644 index 0000000..a6460f0 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Co2_Counters_DB.md @@ -0,0 +1,16 @@ +```pascal +// Block Type: InstanceDB +// Block Number: 1021 + +DATA_BLOCK "Co2_Counters_DB" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/DELETE.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/DELETE.md new file mode 100644 index 0000000..db83438 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/DELETE.md @@ -0,0 +1,160 @@ +```pascal +// Block Type: FC +// Block Number: 4 +// Original Network Languages: STL + +FUNCTION "DELETE" : String[254] +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + IN : String[254]; + L : Int; + P : Int; +END_VAR + +VAR_TEMP + w_Temp : Word; + yAnzChar : Byte; + yMaxZiel : Byte; + yAnzIN : Byte; + yLoopCnt : Byte; + b_Fehl : Bool; + b_Null : Bool; + b_PgAnz1 : Bool; +END_VAR + +BEGIN + + // Network 1: Fehlermerker (Original Language: STL) + // Adressen Quelle/Ziel bestimmen + + // --- BEGIN STL Network 1 --- + + SET + SAVE + L _ERR_CONST_ + LAR1_ACCU1 + L NoneW[AR1,P#0.0] + T "w_Temp" + AUF DBB[AR?,P#0.0] + L NoneD[AR1,P#2.0] + LAR1_ACCU1 + L NoneB[AR1,P#1.0] + T "yAnzIN" + L _ERR_CONST_ + LAR2_ACCU1 + L NoneW[AR2,P#0.0] + T "w_Temp" + AUF DIB[AR?,P#0.0] + L NoneD[AR2,P#2.0] + OD DW#16#0100_0000 + LAR2_ACCU1 + L NoneB[AR2,P#0.0] + T "yMaxZiel" + + L 0 + T "yAnzChar" + + L "L" + GT_I + CAC + L "P" + ADD_I + O _Statusword_? + = "b_Fehl" + JC AZIL + + L "P" + L 0 + EQ_I + L "L" + SUB_I + O _Statusword_? + = "b_Null" + L "yAnzIN" + JC LCNT + + L "P" + L "yAnzIN" + GT_I + = "b_PgAnz1" + JC LCNT + CAC + DEC 1 + + LCNT: L "yMaxZiel" + GT_I + S "b_Fehl" + JC VGL + CAC + VGL: L 0 + ADD_I + JZ QUE2 + T "yAnzChar" + + LOP1: T "yLoopCnt" + L NoneB[AR1,P#2.0] + T NoneB[AR2,P#2.0] + ADDAR1 P#1.0 + ADDAR2 P#1.0 + L "yLoopCnt" + LOOP LOP1 + QUE2: O "b_Null" + O "b_Fehl" + O "b_PgAnz1" + JC AZIL + + TAR1_ACCU1 + L "L" + SLW 3 + ADD_D + LAR1_ACCU1 + + L "yAnzIN" + L "P" + DEC 1 + SUB_I + L "L" + SUB_I + JMZ AZIL + T "w_Temp" + L "yMaxZiel" + L "yAnzChar" + SUB_I + L "w_Temp" + GE_I + JC UEBR + S "b_Fehl" + CAC + T "w_Temp" + UEBR: L "yAnzChar" + ADD_I + T "yAnzChar" + L "w_Temp" + LOP2: T "yLoopCnt" + L NoneB[AR1,P#2.0] + T NoneB[AR2,P#2.0] + ADDAR1 P#1.0 + ADDAR2 P#1.0 + L "yLoopCnt" + LOOP LOP2 + + AZIL: TAR2_ACCU1 + L "yAnzChar" + SLW 3 + SUB_D + LAR2_ACCU1 + L "yAnzChar" + T NoneB[AR2,P#1.0] + AN "b_Fehl" + JC ENDE + CLR + SAVE + ENDE: BE + + // --- END STL Network 1 --- + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/DeairCO2TempComp.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/DeairCO2TempComp.md new file mode 100644 index 0000000..29fc70d --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/DeairCO2TempComp.md @@ -0,0 +1,24 @@ +```pascal +FUNCTION "DeairCO2TempComp" : Real +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : 'Function' +NAME : 'Name' +VERSION : 1.0 + VAR_INPUT + i_Temp : Real; + i_CO2Off : Real; + END_VAR + + +BEGIN + + + (* classic code: #DeairCO2TempComp := (15.0 - #i_Temp ) * 0.01 + #i_CO2Off ;*) + #DeairCO2TempComp := (REAL#15.0 - #i_Temp ) * REAL#0.01 + #i_CO2Off ; + + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/DeaireationValve.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/DeaireationValve.md new file mode 100644 index 0000000..4bd38ea --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/DeaireationValve.md @@ -0,0 +1,37 @@ +```pascal +FUNCTION "DeaireationValve" : Real +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : 'Function' +NAME : 'Name' +VERSION : 1.0 + VAR_INPUT + in_DeaireationFlow : Real; + in_InletPressure : Real; + in_FlowCoefficient : Real; + END_VAR + + VAR_TEMP + mAux : Real; + END_VAR + + +BEGIN + (* Regime Sonico P2 < P1/2 *) + (* OV = Flow / 14.3 * kv * P1 *) + (* classic code: #mAux := #in_FlowCoefficient * 14.3 * (#in_InletPressure + 1.0) ;*) + #mAux := #in_FlowCoefficient * REAL#14.3 * (#in_InletPressure + REAL#1.0) ; + + IF #mAux <> 0 THEN + (* classic code: #DeaireationValve := LIMIT (MN:="Blender_Constants".gRVN304_Min , IN:= #in_DeaireationFlow / #mAux, MX:= 100.0) ;*) + #DeaireationValve := LIMIT (MN:="Blender_Constants".gRVN304_Min , IN:= #in_DeaireationFlow / #mAux, MX:= REAL#100.0) ; + ELSE + (* classic code: #DeaireationValve := 0.0;*) + #DeaireationValve := REAL#0.0; + END_IF; + + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Deaireator_StartUp_Seq.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Deaireator_StartUp_Seq.md new file mode 100644 index 0000000..e5479d8 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Deaireator_StartUp_Seq.md @@ -0,0 +1,582 @@ +```pascal +// Block Type: FC +// Block Name (Original): Deaireator StartUp_Seq +// Block Number: 1803 +// Original Network Languages: LAD, STL + +FUNCTION "Deaireator_StartUp_Seq" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INOUT + mStep : Int; + mTimer : Int; + mTransition : Bool; +END_VAR + +VAR_TEMP + mAuxStep : Int; + mVacuumOk : Bool; + mAuxTimer : Int; + mAuxWaterSpeedPrimeOK : Bool; + __PlcmigTempFillBit_6B1 : Bool; + __PlcmigTempFillBit_6B2 : Bool; + __PlcmigTempFillBit_6B3 : Bool; + __PlcmigTempFillBit_6B4 : Bool; + __PlcmigTempFillBit_6B5 : Bool; + __PlcmigTempFillBit_6B6 : Bool; + __PlcmigTempFillBit_6B7 : Bool; + __PlcmigTempFillBit_7B0 : Bool; + __PlcmigTempFillBit_7B1 : Bool; + __PlcmigTempFillBit_7B2 : Bool; + __PlcmigTempFillBit_7B3 : Bool; + __PlcmigTempFillBit_7B4 : Bool; + __PlcmigTempFillBit_7B5 : Bool; + __PlcmigTempFillBit_7B6 : Bool; + __PlcmigTempFillBit_7B7 : Bool; +END_VAR + + #_10S : Bool; // Auto-generated temporary +BEGIN + + // Network 1: STEP CONTROL (Original Language: STL) + + // --- BEGIN STL Network 1 --- + + L "mStep" + JL LEND + JU ST00 + JU ST01 + JU ST02 + JU ST03 + JU ST04 + JU ST05 + JU ST06 + JU ST07 + JU ST08 + JU ST09 + JU ST10 + LEND: JU FULL + FULL: L 0 + T "mStep" + JU END + + // --- END STL Network 1 --- + + // Network 2: STEP 00 (Original Language: LAD) + // Step 0: Select if execute the procedure + + IF "AUX FALSE" THEN + "gSP_LimitCO2PressValve" := TRUE; + END_IF; + + // Network 3: STEP 00 (Original Language: LAD) + + SEL_I(G := "Procedure_Variables"."TN301_StartUp"."Done", IN0 := 1, IN1 := 5); + + // Network 4: STEP 00 (Original Language: LAD) + + SEL_I(G := "Procedure_Variables"."First_Production"."Done", IN0 := "mAuxStep", IN1 := 5); + + // Network 5: (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_UVLamp" THEN + "mAuxStep" := 2; + END_IF; + + // Network 6: STEP 00 (Original Language: LAD) + + IF "gStillWaterByPassEn" THEN + SEL_I(G := "Blender_Variables_Pers"."gSkipDeaireation" AND "gBlenderRinseMode", IN0 := 1, IN1 := 10); + END_IF; + + // Network 7: STEP 00 (Original Language: STL) + + // --- BEGIN STL Network 7 --- + + A "AUX TRUE" + = "__PlcmigTempFillBit_7B0" + BLD 103 + A "AUX TRUE" + = "__PlcmigTempFillBit_7B1" + BLD 103 + A "Procedure_Variables".TN301_StartUp.Wait + = "__PlcmigTempFillBit_7B2" + BLD 103 + A CLK_0.5S + = "__PlcmigTempFillBit_7B3" + BLD 103 + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 7 --- + + // Network 8: STEP 01 (Original Language: LAD) + // Step 1: Blow off the air from the buffer Tank and deareator + + "mTimeTN301_StartupFilter"(IN := "AUX FALSE", PT := S5T#10S); // TODO: Declarar "mTimeTN301_StartupFilter" : TON; + + "Procedure_Variables"."TN301_StartUp"."H2OFilterOK" := "mTimeTN301_StartupFilter".Q; + + // Network 9: STEP 01 (Original Language: LAD) + + IF "Procedure_Variables"."TN301_StartUp"."H2OFilterOK" THEN + "gSP_EV83" := TRUE; + END_IF; + + // Network 10: STEP 01 (Original Language: STL) + + // --- BEGIN STL Network 10 --- + + A "Blender_Variables".gInUVLampReady + A "AUX FALSE" + = "__PlcmigTempFillBit_7B0" + BLD 103 + A "Procedure_Variables".TN301_StartUp.H2OFilterOK + = "__PlcmigTempFillBit_7B1" + BLD 103 + A "Procedure_Variables".TN301_StartUp.Wait + = "__PlcmigTempFillBit_7B2" + BLD 103 + A CLK_0.5S + = "__PlcmigTempFillBit_7B3" + BLD 103 + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 10 --- + + // Network 11: STEP 02 (Original Language: LAD) + // Step 2: Flush Deaireator Tank + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Deaireation" AND "gFinalPressureOk" AND ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InjectionPress_Ctrl" > 0) THEN + "gSP_AVN328" := TRUE; + END_IF; + + // Network 12: STEP 02 (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Deaireation" THEN + "gSP_AVM312" := TRUE; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Deaireation" THEN + "gSP_AVN314" := TRUE; + END_IF; + + // Network 13: STEP 02 (Original Language: LAD) + + IF "AUX FALSE" THEN + "gSP_LimitCO2PressValve" := TRUE; + END_IF; + + // Network 14: STEP 02 (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" THEN + "gSP_AVM315" := TRUE; + END_IF; + + // Network 15: STEP 02 (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" THEN + "gSP_AVM362" := TRUE; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" THEN + "gSP_AVM369" := TRUE; + END_IF; + + // Network 16: STEP 02 (Original Language: STL) + + // --- BEGIN STL Network 16 --- + + A "AUX TRUE" + = "__PlcmigTempFillBit_7B0" + BLD 103 + A "AUX TRUE" + = "__PlcmigTempFillBit_7B1" + BLD 103 + A "Procedure_Variables".TN301_StartUp.Wait + = "__PlcmigTempFillBit_7B2" + BLD 103 + A CLK_0.5S + = "__PlcmigTempFillBit_7B3" + BLD 103 + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 16 --- + + // Network 17: STEP 03 (Original Language: LAD) + // Step 3: In CASE OF SAG check that the product tank is empty before loading + // product + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Deaireation" AND "gFinalPressureOk" AND ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InjectionPress_Ctrl" > 0) THEN + "gSP_AVN328" := TRUE; + END_IF; + + // Network 18: STEP 03 (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Deaireation" THEN + "gSP_AVM312" := TRUE; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Deaireation" THEN + "gSP_AVN314" := TRUE; + END_IF; + + // Network 19: STEP 03 (Original Language: LAD) + + SEL_I(G := "HMI_Digital"."LSN301L"."Filtered" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Deaireation", IN0 := 4, IN1 := 2); + + // Network 20: STEP 03 (Original Language: STL) + + // --- BEGIN STL Network 20 --- + + A_BRACK + O "gPTM304_OkToRun" + O "HMI_Blender_Parameters".Processor_Options.Blender_OPT._Deaireation + BRACKET + = "__PlcmigTempFillBit_7B0" + BLD 103 + A "AUX TRUE" + A "AUX FALSE" + = "__PlcmigTempFillBit_7B1" + BLD 103 + A "Procedure_Variables".TN301_StartUp.Wait + = "__PlcmigTempFillBit_7B2" + BLD 103 + A CLK_0.5S + = "__PlcmigTempFillBit_7B3" + BLD 103 + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 20 --- + + // Network 21: STEP 04 (Original Language: LAD) + // Step 4: Wait FOR Vacuum if still product + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Deaireation" AND "gFinalPressureOk" AND ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InjectionPress_Ctrl" > 0) THEN + "gSP_AVN328" := TRUE; + END_IF; + + // Network 22: STEP 04 (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Deaireation" THEN + "gSP_AVM312" := TRUE; + END_IF; + + // Network 23: STEP 04 (Original Language: STL) + + // --- BEGIN STL Network 23 --- + + A "AUX TRUE" + = "__PlcmigTempFillBit_7B0" + BLD 103 + A "AUX TRUE" + = "__PlcmigTempFillBit_7B1" + BLD 103 + A "Procedure_Variables".TN301_StartUp.Wait + = "__PlcmigTempFillBit_7B2" + BLD 103 + A CLK_0.5S + = "__PlcmigTempFillBit_7B3" + BLD 103 + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 23 --- + + // Network 24: STEP 05 (Original Language: LAD) + // Step 5: Wait Vacuum IF Still Product + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Deaireation" THEN + "gSP_AVM312" := TRUE; + END_IF; + + // Network 25: STEP 05 (Original Language: LAD) + + "mVacuumOk" := "gPTN313_Acheaved" OR ("HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_Deareation_Vacum" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair"); + + // Network 26: STEP 05 (Original Language: STL) + + // --- BEGIN STL Network 26 --- + + A "mVacuumOk" + = "__PlcmigTempFillBit_7B0" + BLD 103 + A "AUX TRUE" + = "__PlcmigTempFillBit_7B1" + BLD 103 + A "Procedure_Variables".TN301_StartUp.Wait + = "__PlcmigTempFillBit_7B2" + BLD 103 + A CLK_0.5S + = "__PlcmigTempFillBit_7B3" + BLD 103 + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 26 --- + + // Network 27: STEP 06 (Original Language: LAD) + // Step 6: Load Deair Tank Wait Minimum Level + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Deaireation" THEN + "gSP_AVM312" := TRUE; + END_IF; + + // Network 28: MIX - Procedure auxiliary variable (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Deaireation" AND "gFinalPressureOk" AND ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InjectionPress_Ctrl" > 0) THEN + "gSP_AVN328" := TRUE; + END_IF; + + // Network 29: STEP 06 (Original Language: LAD) + + IF "AUX FALSE" THEN + "gSP_RVN301" := TRUE; + END_IF; + + IF "AUX FALSE" THEN + "gSP_AVM322" := TRUE; + END_IF; + + // Network 30: STEP 06 (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" THEN + "gSP_PPN305" := TRUE; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" THEN + "gSP_RVN301_1" := TRUE; + END_IF; + + // Network 31: STEP 06 (Original Language: STL) + + // --- BEGIN STL Network 31 --- + + A_BRACK + A "HMI_Digital".LSN301L.Filtered + AN "HMI_Blender_Parameters".Processor_Options.Blender_OPT._DoubleDeair + O + A "HMI_Digital".LSN301L.Filtered + A "HMI_Digital".LSN302L.Filtered + A "HMI_Blender_Parameters".Processor_Options.Blender_OPT._DoubleDeair + BRACKET + = "__PlcmigTempFillBit_7B0" + BLD 103 + A "AUX TRUE" + = "__PlcmigTempFillBit_7B1" + BLD 103 + A "Procedure_Variables".TN301_StartUp.Wait + = "__PlcmigTempFillBit_7B2" + BLD 103 + A CLK_0.5S + = "__PlcmigTempFillBit_7B3" + BLD 103 + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 31 --- + + // Network 32: STEP 07 (Original Language: LAD) + // Step 7: close EV22 + + IF "gFinalPressureOk" AND ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InjectionPress_Ctrl" > 0) THEN + "gSP_AVN328" := TRUE; + END_IF; + + // Network 33: STEP 07 (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Deaireation" THEN + "gSP_AVM312" := TRUE; + END_IF; + + // Network 34: STEP 07 (Original Language: LAD) + + IF "AUX FALSE" THEN + "gSP_RVN301" := TRUE; + END_IF; + + IF "AUX FALSE" THEN + "gSP_PPN301" := TRUE; + END_IF; + + // Network 35: STEP 07 (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" THEN + "gSP_PPN305" := TRUE; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" THEN + "gSP_RVN301_1" := TRUE; + END_IF; + + // Network 36: Water Speed Prime OK (Original Language: LAD) + + "mAuxWaterSpeedPrimeOK" := "Profibus_Variables"."gFTN301_Flow" < 100.0; + + // Network 37: STEP 07 (Original Language: STL) + + // --- BEGIN STL Network 37 --- + + A "mAuxWaterSpeedPrimeOK" + = "__PlcmigTempFillBit_7B0" + BLD 103 + A "AUX TRUE" + = "__PlcmigTempFillBit_7B1" + BLD 103 + A "Procedure_Variables".TN301_StartUp.Wait + = "__PlcmigTempFillBit_7B2" + BLD 103 + A CLK_0.5S + = "__PlcmigTempFillBit_7B3" + BLD 103 + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 37 --- + + // Network 38: STEP 08 (Original Language: LAD) + // Deaireator StartUp Sequence Completed + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Deaireation" AND "gFinalPressureOk" AND ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InjectionPress_Ctrl" > 0) THEN + "gSP_AVN328" := TRUE; + END_IF; + + // Network 39: STEP 08 (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Deaireation" THEN + "gSP_AVM312" := TRUE; + END_IF; + + // Network 40: STEP 08 (Original Language: LAD) + + IF "AUX FALSE" THEN + "gSP_RVN301" := TRUE; + END_IF; + + IF "AUX FALSE" THEN + "gSP_PPN301" := TRUE; + END_IF; + + IF "AUX FALSE" THEN + "gSP_AVM322" := TRUE; + END_IF; + + // Network 41: STEP 08 (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" THEN + "gSP_PPN305" := TRUE; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" THEN + "gSP_RVN301_1" := TRUE; + END_IF; + + // Network 42: STEP 08 (Original Language: LAD) + + SEL_I(G := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CoolerPresent", IN0 := 40, IN1 := 80); + + // Network 43: STEP 08 (Original Language: STL) + + // --- BEGIN STL Network 43 --- + + A "AUX TRUE" + = "__PlcmigTempFillBit_7B0" + BLD 103 + A "AUX TRUE" + = "__PlcmigTempFillBit_7B1" + BLD 103 + A "Procedure_Variables".TN301_StartUp.Wait + = "__PlcmigTempFillBit_7B2" + BLD 103 + A CLK_0.5S + = "__PlcmigTempFillBit_7B3" + BLD 103 + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 43 --- + + // Network 44: STEP 09 (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Deaireation" THEN + "gSP_AVM312" := TRUE; + END_IF; + + // Network 45: MIX - Procedure auxiliary variable (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Deaireation" AND "gFinalPressureOk" AND ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InjectionPress_Ctrl" > 0) THEN + "gSP_AVN328" := TRUE; + END_IF; + + // Network 46: STEP 09 (Original Language: LAD) + + IF "AUX FALSE" THEN + "gSP_RVN301" := TRUE; + END_IF; + + IF "AUX FALSE" THEN + "gSP_PPN301" := TRUE; + END_IF; + + // Network 47: STEP 09 (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" THEN + "gSP_PPN305" := TRUE; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" THEN + "gSP_RVN301_1" := TRUE; + END_IF; + + // Network 48: STEP 09 (Original Language: STL) + + // --- BEGIN STL Network 48 --- + + A "AUX TRUE" + = "__PlcmigTempFillBit_7B0" + BLD 103 + A "AUX TRUE" + = "__PlcmigTempFillBit_7B1" + BLD 103 + A "Procedure_Variables".TN301_StartUp.Wait + = "__PlcmigTempFillBit_7B2" + BLD 103 + A CLK_0.5S + = "__PlcmigTempFillBit_7B3" + BLD 103 + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 48 --- + + // Network 49: STEP 10 (Original Language: LAD) + + IF Eq("mStep", 10) THEN + "Procedure_Variables"."TN301_StartUp"."Done" := TRUE; + END_IF; + + // Network 50: SEQUENCER END (Original Language: STL) + + // --- BEGIN STL Network 50 --- + + END: NOP_0 + + // --- END STL Network 50 --- + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Default_SupervisionDB.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Default_SupervisionDB.md new file mode 100644 index 0000000..7b24051 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Default_SupervisionDB.md @@ -0,0 +1,41 @@ +```pascal +// Block Type: InstanceDB +// Block Number: 3 + +DATA_BLOCK "Default_SupervisionDB" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + State : STRUCT + Total_Number : UInt; + All : Bool; + O : Bool; + I : Bool; + R : Bool; + A : Bool; + P : Bool; + Merr : Bool; + Mtxt : Bool; + SV_Types : Byte; + C1 : Bool; + C2 : Bool; + C3 : Bool; + C4 : Bool; + C5 : Bool; + C6 : Bool; + C7 : Bool; + C8 : Bool; + Categories : Byte; + Sub_Cat_1 : DWord; + Sub_Cat_2 : DWord; + Reserved : Byte; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Delay.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Delay.md new file mode 100644 index 0000000..1673ed3 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Delay.md @@ -0,0 +1,38 @@ +```pascal +FUNCTION_BLOCK "Delay" +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : 'Function' +NAME : 'Name' +VERSION : 1.0 + VAR_INPUT + i_Value : Real; + i_Sample : Int; + END_VAR + + VAR_OUTPUT + i_out : Real; + END_VAR + + VAR + mVarArray : Array[0..5] of Real; + i : Int; + END_VAR + + +BEGIN + + + IF #i_Sample <= 5 THEN + FOR #i:=#i_Sample TO 1 BY -1 DO + #mVarArray[#i] := #mVarArray[#i - 1] ; + END_FOR; + #mVarArray[0] := #i_Value ; + END_IF; + #i_out := #mVarArray[#i_Sample] ; + + +END_FUNCTION_BLOCK + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/DeltaP.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/DeltaP.md new file mode 100644 index 0000000..ea7bd2f --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/DeltaP.md @@ -0,0 +1,30 @@ +```pascal +FUNCTION "DeltaP" : Real +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : 'Function' +NAME : 'Name' +VERSION : 1.0 + VAR_INPUT + i_Flow : Real; + i_K : Real; + i_Valve : Real; + END_VAR + + +BEGIN + + + (* classic code: IF #i_Valve <> 0.0 THEN*) + IF #i_Valve <> REAL#0.0 THEN + #DeltaP := SQR(#i_Flow) * SQR(#i_K) / #i_Valve / #i_Valve ; + ELSE + (* classic code: #DeltaP :=0.0;*) + #DeltaP :=REAL#0.0; + END_IF; + + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Device.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Device.md new file mode 100644 index 0000000..8a1e342 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Device.md @@ -0,0 +1,19 @@ +# UDT: Device + +## Members + +| Name | Datatype | Start Value | Comment | +|---|---|---|---| +| `Auto` | `Bool` | `` | | +| `ManOn` | `Bool` | `` | | +| `Out` | `Bool` | `` | | +| `Alarm` | `Bool` | `` | | +| `Mask` | `Bool` | `` | | +| `FeedBackOn` | `Bool` | `` | | +| `FeedBackOff` | `Bool` | `` | | +| `Config` | `Bool` | `` | | +| `FeedbackOnConfig` | `Bool` | `` | | +| `FeedbackOffConfig` | `Bool` | `` | | +| `Spare12` | `Bool` | `` | | +| `Spare13` | `Bool` | `` | | + diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/DigitalInstrument.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/DigitalInstrument.md new file mode 100644 index 0000000..c74a534 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/DigitalInstrument.md @@ -0,0 +1,19 @@ +# UDT: DigitalInstrument + +## Members + +| Name | Datatype | Start Value | Comment | +|---|---|---|---| +| `Raw` | `Bool` | `` | | +| `Filtered` | `Bool` | `` | | +| `Wait` | `Bool` | `` | | +| `Spare03` | `Bool` | `` | | +| `Spare04` | `Bool` | `` | | +| `Spare05` | `Bool` | `` | | +| `Spare06` | `Bool` | `` | | +| `Config` | `Bool` | `` | | +| `DelayOnSP` | `Int` | `` | | +| `DelayOffSP` | `Int` | `` | | +| `DelayOn` | `Int` | `` | | +| `DelayOff` | `Int` | `` | | + diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/EQ_STRNG.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/EQ_STRNG.md new file mode 100644 index 0000000..181cf98 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/EQ_STRNG.md @@ -0,0 +1,62 @@ +```pascal +// Block Type: FC +// Block Number: 10 +// Original Network Languages: STL + +FUNCTION "EQ_STRNG" : Bool +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + S1 : String[254]; + S2 : String[254]; +END_VAR + +VAR_TEMP + w_Temp : Word; + y_Loop : Byte; +END_VAR + +BEGIN + + // Network 1: (Original Language: STL) + + // --- BEGIN STL Network 1 --- + + L _ERR_CONST_ + LAR1_ACCU1 + L _ERR_CONST_ + LAR2_ACCU1 + L NoneW[AR1,P#0.0] + T "w_Temp" + AUF DBB[AR?,P#0.0] + L NoneD[AR1,P#2.0] + LAR1_ACCU1 + L NoneW[AR2,P#0.0] + T "w_Temp" + AUF DIB[AR?,P#0.0] + L NoneD[AR2,P#2.0] + OD DW#16#0100_0000 + LAR2_ACCU1 + SET + SAVE + L NoneB[AR1,P#0.0] + LOP: T "y_Loop" + L NoneB[AR1,P#2.0] + L NoneB[AR2,P#2.0] + NE_I + JC RESE + ADDAR1 P#1.0 + ADDAR2 P#1.0 + L "y_Loop" + LOOP LOP + S "EQ_STRNG" + JC ENDE + RESE: R "EQ_STRNG" + ENDE: BE + + // --- END STL Network 1 --- + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/FW_DRand.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/FW_DRand.md new file mode 100644 index 0000000..3783b08 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/FW_DRand.md @@ -0,0 +1,43 @@ +```pascal +// Block Type: FC +// Block Number: 1922 +// Original Network Languages: STL + +FUNCTION "FW_DRand" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + Channel : Real; +END_VAR + +VAR_OUTPUT + RandomNumber : Real; +END_VAR + +VAR_TEMP + mAux : Real; +END_VAR + +BEGIN + + // Network 1: (Original Language: STL) + + // --- BEGIN STL Network 1 --- + + L "gSystem_Time" + L "Channel" + MOD_D + CAC + RLD + DTR + ABS_R + L 2.147484E+09 + DIV_R + T "RandomNumber" + + // --- END STL Network 1 --- + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/FeedForward.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/FeedForward.md new file mode 100644 index 0000000..cf72759 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/FeedForward.md @@ -0,0 +1,29 @@ +```pascal +FUNCTION "FeedForward" : Real +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : 'Function' +NAME : 'Name' +VERSION : 1.0 + VAR_INPUT + i_Flow : Real; // Liquid Flow in l/min + i_KFF : Real; // Adjusting parameter + i_Delta_P : Real; // Delta Pressure: Friction Losses Across the Valve + END_VAR + + +BEGIN + + + (* classic code: IF #i_Delta_P > 0.0 THEN*) + IF #i_Delta_P > REAL#0.0 THEN + #FeedForward := LIMIT (MN:=0, IN:= #i_Flow * #i_KFF / SQRT(#i_Delta_P), MX:= 100) ; + ELSE + #FeedForward := -1 ; + END_IF; + + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/FillerControl.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/FillerControl.md new file mode 100644 index 0000000..9ef7984 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/FillerControl.md @@ -0,0 +1,266 @@ +```pascal +// Block Type: FC +// Block Number: 2028 +// Original Network Languages: LAD, STL + +FUNCTION "FillerControl" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + Buffer : Bool; + EnableNextRecipe : Int; + mFillerTracked : Bool; + mAuxCalc : Real; + mAuxCalc1 : DInt; + mAuxRunOut : Int; + mAuxProdTemp : Int; + mAuxProductCarbo : Int; + mAuxProdTankPress : Int; + mAuxRecCarbo : Real; + mAuxProdCO2PressSP : Real; +END_VAR + +BEGIN + + // Network 1: To Filler Production (Original Language: LAD) + + "gOUT_FillerProduction" := ("gBlenderProdMode" AND "gBlenderRinseMode") OR ("gBlenderProdMode" AND "System_RunOut_Variables"."FastChangeOverActivated"); + + // Network 2: #mFillerTracked (Original Language: LAD) + + "mAuxCalc" := "Blender_Variables"."gMinProduction" / 2.0; + + "mAuxCalc" := "Blender_Variables"."gEstimateFillerSpeed" + "mAuxCalc"; + + "mFillerTracked" := "Blender_Variables"."gActual_Prod_SP" >= "mAuxCalc"; + + // Network 3: To Filler Product Available (Original Language: LAD) + + "gProdAvailable" := "gBlenderProdMode" AND "Procedure_Variables"."First_Production"."Done" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Latch"; + + // Network 4: To Filler Minimum Level (Original Language: LAD) + + "gOUT_FillerMinimumLevel" := "gBlenderLevelOk" AND "gProdAvailable"; + + // Network 5: To Filler Product Available (Original Language: LAD) + + "gOUT_FillerProductAvail" := ("gPrdTank_Empty" AND "gIN_VoltageOk" AND "gPrdTank_Press_Fault" AND "HMI_Device"."PPM303"."Alarm" AND "gProdAvailable") OR ("gIN_VoltageOk" AND "gPrdTank_Press_Fault" AND "HMI_Device"."PPM303"."Alarm" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Latch" AND "gProdAvailable"); + + // Network 6: RunOut Request (Original Language: LAD) + + "System_RunOut_Variables"."Out_Flr_FillerRunOutReq" := "System_RunOut_Variables"."ToFillerProdRunOut"; + + // Network 7: Product Completed (Original Language: LAD) + + "System_RunOut_Variables"."Out_Flr_ProductCompleted" := "System_RunOut_Variables"."ToFillerProductCompleted"; + + // Network 8: Filler RunOut (Original Language: LAD) + + // PBox SymPy processed, logic in consumer + "M19013" := "System_RunOut_Variables"."In_Flr_WaterRinseRequest" OR "System_RunOut_Variables"."In_Flr_LastContainer"; // P_TRIG("System_RunOut_Variables"."In_Flr_WaterRinseRequest" OR "System_RunOut_Variables"."In_Flr_LastContainer") - Mem: "M19013" + + IF ("System_RunOut_Variables"."In_Flr_WaterRinseRequest" AND NOT "M19013") OR ("System_RunOut_Variables"."In_Flr_LastContainer" AND NOT "M19013") THEN + "System_RunOut_Variables"."FillerRanOut" := TRUE; + END_IF; + + // Network 9: Fast Rinse Complete (Original Language: LAD) + + "System_RunOut_Variables"."FromFillerFastRinseCompl" := "System_RunOut_Variables"."In_Flr_FastRinseComplete"; + + // Network 10: Fast Rinse Request (Original Language: LAD) + + // Network 10 did not produce printable SCL code. + + // Network 11: Water Rinse Ready (Original Language: LAD) + + "System_RunOut_Variables"."Out_Flr_WaterRinseReady" := ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "Procedure_Variables"."Blender_Rinse"."Latch" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Done") OR ("System_RunOut_Variables"."FillerTankRinseLoaded" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Done" AND "System_RunOut_Variables"."FastChangeOverActivated") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FillerRinseTank" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Done" AND "System_RunOut_Variables"."FastChangeOverActivated"); + + // Network 12: To Filler Rinse Mode (Original Language: LAD) + + "gOUT_FillerRinseMode" := "gBlenderRinseMode" AND "Procedure_Variables"."Blender_Run"."Latch"; + + // Network 13: To Filler CIP Mode (Original Language: LAD) + + "gOUT_FillerCIPMode" := ("Procedure_Variables"."Blender_Run"."Latch" AND "gBlenderCIPMode" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP") OR ("Procedure_Variables"."Blender_Run"."Latch" AND "gBlenderCIPMode" AND "gIN_CIP_CIPMode"); + + // Network 14: Caustic Recovery Run (Original Language: LAD) + + // PBox SymPy processed, logic in consumer + "M19022" := "gIN_CIP_ChangeSanitize" AND "gWorkshopTest"; // P_TRIG("gIN_CIP_ChangeSanitize" AND "gWorkshopTest") - Mem: "M19022" + + // Network 15: To Filler CIP Running (Original Language: LAD) + + "gOUT_FillerCIPRunning" := ("gBlenderCIPMode" AND "HMI_Digital"."LSM302L"."Filtered" AND "gIN_CIP_CIPRunning") OR ("gBlenderCIPMode" AND "gBlenderMinLevel" AND "gIN_CIP_CIPRunning") OR ("Procedure_Variables"."Blender_Run"."Latch" AND "gBlenderCIPMode" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" AND "HMI_Digital"."LSM302L"."Filtered" AND "gP_CIPRunning") OR ("Procedure_Variables"."Blender_Run"."Latch" AND "gBlenderCIPMode" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" AND "gBlenderMinLevel" AND "gP_CIPRunning"); + + // Network 16: To Filler CIP (Original Language: LAD) + + "gOUT_FillerCIPChangeSani" := ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" AND "gP_CIPChangeSanitize") OR ("CIP_Program_Variables"."Status"."CausticRecoveryRun" AND "CIP_Program_Variables"."Status"."BlenderEmpty"); + + // Network 17: To Filler CIP Drain Request (Original Language: LAD) + + "gOUT_FillerCIPDrainReq" := "gIN_CIP_DrainRequest" OR ("CIP_Program_Variables"."Status"."BlenderDrainRunning" AND "CIP_Program_Variables"."Status"."Completed"); + + // Network 18: To Filler CIP Completed (Original Language: LAD) + + "gOUT_FillerCIPCompleted" := ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" AND "CIP_Program_Variables"."Status"."Completed") OR ("gIN_CIP_CIPCompleted" AND "Interlocking_Variables"."FILLER_MIXER_RECEIVE"."CIP_Selected"); + + // Network 19: Wait Filler Product Request After First Production (Original Language: LAD) + // Wait Filler Product Request After First Production + + "HMI_Alarms"."gH_Message" := ("gBlenderProdMode" AND "gFirstProdStop") OR ("gBlenderProdMode" AND "gFiilerStopBlender"); + + // Network 20: Wait Filler Rinse Completed Signal (Original Language: LAD) + // Wait Filler Rinse Completed + + // PBox SymPy processed, logic in consumer + "M19023" := "System_RunOut_Variables"."FastChangeOverActivated" AND "Procedure_Variables"."Blender_Rinse"."Running"; // P_TRIG("System_RunOut_Variables"."FastChangeOverActivated" AND "Procedure_Variables"."Blender_Rinse"."Running") - Mem: "M19023" + + // Network 21: Filler Loads next recipe (Original Language: LAD) + // Filler Loads next recipe on the rising edge OF the Product Completed Signal, so + // AT that point the next recipe must be already selected. + + IF "HMI_Variables_Cmd"."GLOBAL_CMD"."_EnableNextRecipe" THEN + "EnableNextRecipe" := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_FillerNextRecipeNum"; + END_IF; + + IF "HMI_Variables_Cmd"."GLOBAL_CMD"."_EnableNextRecipe" THEN + "EnableNextRecipe" := 0; + END_IF; + + IF "System_RunOut_Variables"."FastChangeOverActivated" AND "HMI_Variables_Cmd"."GLOBAL_CMD"."_EnableNextRecipe" AND "Procedure_Variables"."Syr_RunOut"."Done" THEN + "System_RunOut_Variables"."FillerNextRecipeNum" := "EnableNextRecipe"; + END_IF; + + IF "System_RunOut_Variables"."FastChangeOverActivated" OR "Procedure_Variables"."Syr_RunOut"."Done" THEN + "System_RunOut_Variables"."FillerNextRecipeNum" := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_FillerNextRecipeNum"; + END_IF; + + "Buffer" := "System_RunOut_Variables"."FastChangeOverActivated" OR "Procedure_Variables"."Syr_RunOut"."Done"; + + // Network 22: RunOut Amount (Original Language: LAD) + + // Network 22 did not produce printable SCL code. + + // Network 23: RunOut Amount (Original Language: STL) + + // --- BEGIN STL Network 23 --- + + A_BRACK + L "System_RunOut_Variables".TotalProductAvailable + DTR + T "mAuxRunOut" + SET + SAVE + CLR + A _Statusword_? + BRACKET + JNB _007 + L "mAuxRunOut" + T "MW116" + _007: NOP_0 + + // --- END STL Network 23 --- + + // Network 24: RunOut Amount (Original Language: LAD) + + "Interlocking_Variables"."SIDEL_FILLER_SEND_DATA"."Run_Out_Amount1" := "MB116"; + + // Network 25: RunOut Amount (Original Language: LAD) + + "Interlocking_Variables"."SIDEL_FILLER_SEND_DATA"."Run_Out_Amount2" := "MB117"; + + // Network 26: Product Temperature (Original Language: STL) + + // --- BEGIN STL Network 26 --- + + A_BRACK + L "HMI_PID".RVM319_H2O.Pv + RND + T "mAuxProdTemp" + SET + SAVE + CLR + A _Statusword_? + BRACKET + JNB _008 + L "mAuxProdTemp" + T "MB118" + _008: NOP_0 + + // --- END STL Network 26 --- + + // Network 27: Product Temperature (Original Language: LAD) + + "Interlocking_Variables"."SIDEL_FILLER_SEND_DATA"."Product_Temperature" := "MB118"; + + // Network 28: mAuxRecCarbo (Original Language: LAD) + + "mAuxRecCarbo" := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_CO2Vols" * 10.0; + + // Network 29: AuxRecCarbo (Original Language: STL) + + // --- BEGIN STL Network 29 --- + + A_BRACK + L "mAuxRecCarbo" + RND + T "mAuxProductCarbo" + SET + SAVE + CLR + A _Statusword_? + BRACKET + JNB _009 + L "mAuxProductCarbo" + T "MB120" + _009: NOP_0 + + // --- END STL Network 29 --- + + // Network 30: Product Carbonation (Original Language: LAD) + + "Interlocking_Variables"."SIDEL_FILLER_SEND_DATA"."Product_Carbonation" := "MB120"; + + // Network 31: Product C02 Pressure SP (Original Language: LAD) + // "Blender_Variables".gSP_CO2 + + "mAuxProdCO2PressSP" := "HMI_PID"."RVM301"."Pv" * 10.0; + + // Network 32: Product C02 Pressure (Original Language: STL) + + // --- BEGIN STL Network 32 --- + + A_BRACK + L "mAuxProdCO2PressSP" + RND + T "mAuxProdTankPress" + SET + SAVE + CLR + A _Statusword_? + BRACKET + JNB _00a + L "mAuxProdTankPress" + T "MB122" + _00a: NOP_0 + + // --- END STL Network 32 --- + + // Network 33: Product Tank Pressure SP (Original Language: LAD) + + "Interlocking_Variables"."SIDEL_FILLER_SEND_DATA"."Prod_Tank_Press_SP" := "MB122"; + + // Network 34: Filler Data Send (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" THEN + FillerControl_DataSend(); + END_IF; + + // Network 35: Next Recipe (Original Language: LAD) + + "Interlocking_Variables"."SIMO_FILLER_SEND_DATA"."Next_Recipe" := "System_RunOut_Variables"."FillerNextRecipeNum"; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/FillerControl_DataSend.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/FillerControl_DataSend.md new file mode 100644 index 0000000..c6043c2 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/FillerControl_DataSend.md @@ -0,0 +1,43 @@ +```pascal +FUNCTION "FillerControl_DataSend" : Void +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : TASK2 +NAME : 'Name' +VERSION : 1.0 + +BEGIN + + //BlendFillSystem + "Interlocking_Variables".MIXER_FILLER_SEND.ProdAvailableLit := REAL_TO_INT ("System_RunOut_Variables".TotalProductAvailable) ; + "Interlocking_Variables".MIXER_FILLER_SEND.Pressure_SP := REAL_TO_INT ("HMI_Blender_Parameters".Actual_Recipe_Parameters._FillingValveHead_SP) ; + "Interlocking_Variables".MIXER_FILLER_SEND.Pressure_PV := REAL_TO_INT ("HMI_PID".PPM303.Pv) ; + "Interlocking_Variables".MIXER_FILLER_SEND.Tank_Level := REAL_TO_INT ("HMI_Instrument".LTM302.PVFiltered * 10 ) ; + "Interlocking_Variables".MIXER_FILLER_SEND.Pump_Freq := REAL_TO_INT ("HMI_PID".PPM303.Out * 10 ) ; + "Interlocking_Variables".MIXER_FILLER_SEND.Recipe_Number := BYTE_TO_INT ("System_RunOut_Variables".FillerNextRecipeNum) ; + "Interlocking_Variables".MIXER_FILLER_SEND.Tank_Pressure_PV := REAL_TO_INT("HMI_PID".RVM301.Pv * 10); + "Interlocking_Variables".MIXER_FILLER_SEND.Tank_Pressure_SP := REAL_TO_INT ("HMI_PID".RVM301.Sp * 10 ) ; + "Interlocking_Variables".MIXER_FILLER_SEND.CO2_Prod_Pressure := "P_AI_PTF203":P ; + "Interlocking_Variables".MIXER_FILLER_SEND.Tank_Min_Lvl := "gOUT_FillerMinimumLevel"; + "Interlocking_Variables".MIXER_FILLER_SEND.Stop_Filler_Critical_Level := NOT "gBlenderMinLevel"; + "Interlocking_Variables".MIXER_FILLER_SEND.Alive_Bit := "AUX TRUE"; + "Interlocking_Variables".MIXER_FILLER_SEND.GEN_AVM362_Status := "HMI_Device".AVM362.Out ; + "Interlocking_Variables".MIXER_FILLER_SEND.GEN_AVM346_Status := "HMI_Device".AVM346.Out ; + "Interlocking_Variables".MIXER_FILLER_SEND.GEN_AVM315_Status := "HMI_Device".AVM315.Out ; + "Interlocking_Variables".MIXER_FILLER_SEND.GEN_AVM313_Status := "HMI_Device".AVM313.Out; + "Interlocking_Variables".MIXER_FILLER_SEND.GEN_PPM303_Status := "HMI_Device".PPM303.Out ; + "Interlocking_Variables".MIXER_FILLER_SEND.GEN_PPM306_Status := "HMI_Device".PPM306.Out ; + "Interlocking_Variables".MIXER_FILLER_SEND.PROD_Press_Running := "HMI_Variables_Status".Procedures.BlendFillSysPressRun ; + "Interlocking_Variables".MIXER_FILLER_SEND.PROD_Prod_Load := "HMI_Variables_Status".Procedures.BlendFillSysProdLoadRun ; + "Interlocking_Variables".MIXER_FILLER_SEND.PROD_Prod_Send := "HMI_Variables_Status".Procedures.BlendFillSysProdSendRun ; + "Interlocking_Variables".MIXER_FILLER_SEND.PROD_Product_Completed := "System_RunOut_Variables".Out_Flr_ProductCompleted ; + + //Simonazzi Filler with tank + + + + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Filler_Head_Variables.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Filler_Head_Variables.md new file mode 100644 index 0000000..c1f7b58 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Filler_Head_Variables.md @@ -0,0 +1,68 @@ +```pascal +// Block Type: GlobalDB +// Block Number: 964 + +DATA_BLOCK "Filler_Head_Variables" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Sensor_Head_PV : Real := 0.0; + TM301_Height : Real := 1002.496; + DiffSensor_Height : Real := 518.0; + Head_PID_Manual_Value : Real := 5.741542; + FillerCentrifugalHead : Real := 0.0; + TotalPressLoss : Real := 1.7; + Filler_Speed : Real := 0.0; + Filler_Temperature : Real := 15.7; + Prod_Flow : Real := 0.0; + Prod_FlowEstimated : Real := 0.0; + Prod_FlowEstimatedSlw : Real := 0.0; + FillingTime : Real := 3.565371; + Head_CIP_Rinse : Bool := TRUE; + Head_Drain : Bool := FALSE; + EstimatedFlowEnable : Bool := TRUE; + gBlendFillStartUp_EnBlen : Bool := FALSE; + Prod_HeadPIDMax_Freq : Real := 50.0; + mKp_Loss : Real := 0.017; + FillerHead : STRUCT + ConfigPID : Bool := FALSE; + Hold_Int : Bool := TRUE; + I_ITL : Bool := FALSE; + Alarm : Bool := FALSE; + Spare0_4 : Bool := FALSE; + Spare0_5 : Bool := FALSE; + Spare0_6 : Bool := FALSE; + Config : Bool := TRUE; + PID_FIX : Bool := TRUE; + Spare1_1 : Bool := FALSE; + High_Limit : Bool := FALSE; + Low_Limit : Bool := FALSE; + ManualControl : "Struct"; + Bp : Real := 50.0; + Ti : Real := 3.0; + Td : Real := 5.0; + Ff : Real := 0.0; + KP : Real := 2.0; + Pv : Real := -948.5061; + OutMan : Real := 5850.0; + Lsp : Real := 700.0; + OutMaxHmi : Real := 100.0; + OutMin : Real := 6.5; + OutMax : Real := 16250.0; + Spare52 : Real := 0.0; + FfOut : Real := 1219.204; + Sp : Real := 700.0; + Out : Real := 0.0; + Cycle_Time : Real := 0.3; + I_ITLVAL : Real := 0.0; + Dead_Band : Real := 0.0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/FillingTime.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/FillingTime.md new file mode 100644 index 0000000..d82e123 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/FillingTime.md @@ -0,0 +1,47 @@ +```pascal +FUNCTION "FillingTime" : Void +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : 'Function' +NAME : 'Name' +VERSION : 1.0 + VAR_INPUT + i_FillingValveHead : Real; // in mmH2O + i_BottleSize : Real; + END_VAR + + VAR_OUTPUT + FillingTime : Real; + END_VAR + + VAR_TEMP + a : Real; + b : Real; + c : Real; + d : Real; + mFillingSpeed : Real; // in ml/sec + END_VAR + + +BEGIN + (* classic code: #a := 1.2522E-7 ;*) + #a := REAL#1.2522E-7 ; + (* classic code: #b := -3.8E-4 ;*) + #b := REAL#-3.8E-4 ; + (* classic code: #c := 4.4505E-1 ;*) + #c := REAL#4.4505E-1 ; + (* classic code: #d := 0.0 ;*) + #d := REAL#0.0 ; + + #mFillingSpeed := #a * SQR (#i_FillingValveHead)* #i_FillingValveHead + #b * SQR (#i_FillingValveHead) + #c * #i_FillingValveHead + #d ; + + (* classic code: IF #mFillingSpeed <> 0.0 THEN*) + IF #mFillingSpeed <> REAL#0.0 THEN + #FillingTime := #i_BottleSize /(#mFillingSpeed / 1000) ; + END_IF; + + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/FirstProduction_Data.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/FirstProduction_Data.md new file mode 100644 index 0000000..2610ecd --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/FirstProduction_Data.md @@ -0,0 +1,59 @@ +```pascal +// Block Type: InstanceDB +// Block Number: 935 + +DATA_BLOCK "FirstProduction_Data" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Switch_Level : Real := 0.0; + mFirstProdONS : Bool := FALSE; + mAuxONS : Bool := FALSE; + mFirstProdTPON : Bool := FALSE; + mFirstProdTP1ON : Bool := FALSE; + mAuxTPON : Bool := FALSE; + mDelaySyrOkON : Bool := FALSE; + mTimeDoneON : Bool := FALSE; + mFirstProdTP : STRUCT + PT : Time; + ET : Time := T#0MS; + IN : Bool := FALSE; + Q : Bool := FALSE; + END_STRUCT; + + mFirstProdTP1 : STRUCT + PT : Time := T#0MS; + ET : Time := T#0MS; + IN : Bool := FALSE; + Q : Bool := FALSE; + END_STRUCT; + + mAuxTP : STRUCT + PT : Time; + ET : Time := T#0MS; + IN : Bool := FALSE; + Q : Bool := FALSE; + END_STRUCT; + + mDelaySyrOk : STRUCT + PT : Time; + ET : Time; + IN : Bool := FALSE; + Q : Bool := TRUE; + END_STRUCT; + + mTimeDone : STRUCT + PT : Time; + ET : Time := T#0MS; + IN : Bool := FALSE; + Q : Bool := FALSE; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Flow_To_Press_Loss.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Flow_To_Press_Loss.md new file mode 100644 index 0000000..0638c48 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Flow_To_Press_Loss.md @@ -0,0 +1,34 @@ +```pascal +FUNCTION "Flow_To_Press_Loss" : Real +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : 'Function' +NAME : 'Name' +VERSION : 1.0 + VAR_INPUT + i_Flow : Real; // Product Flow in l/MIN + i_K_Loss : Real; // Pressure Loss Constant: pump + pipe + filler collector + END_VAR + + +BEGIN + + + (* Pressure Loss along Pipe in mmH2O + + Head [ mmH2O] = i_Flow ^ 2 i_K_Loss + + SAE131==> i_K_Loss = 9.420000e-003 + *) + + (******* Pompa INOXPA Modello ______ Motore 4 Poli 1450 RPM ********* *) + + (*KP_Carico :=0.158;*) + + #Flow_To_Press_Loss := SQR(#i_Flow) * #i_K_Loss ; + + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Freq_To_mmH2O.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Freq_To_mmH2O.md new file mode 100644 index 0000000..5c28cd8 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Freq_To_mmH2O.md @@ -0,0 +1,23 @@ +```pascal +FUNCTION "Freq_To_mmH2O" : Real +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : 'Function' +NAME : 'Name' +VERSION : 1.0 + VAR_INPUT + i_Freq : Real; + i_K_freq : Real; + END_VAR + + +BEGIN + + + #Freq_To_mmH2O := SQR(#i_Freq) * #i_K_freq ; + + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/FrictionLoss.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/FrictionLoss.md new file mode 100644 index 0000000..c40256d --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/FrictionLoss.md @@ -0,0 +1,24 @@ +```pascal +FUNCTION "FrictionLoss" : Real +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : 'Function' +NAME : 'Name' +VERSION : 1.0 + VAR_INPUT + i_Flow : Real; + i_K : Real; + i_Dens : Real; + END_VAR + + +BEGIN + + + #FrictionLoss := (#i_Flow * #i_K * #i_Flow * #i_K )* #i_Dens ; + + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/FunctionButton.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/FunctionButton.md new file mode 100644 index 0000000..af54dea --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/FunctionButton.md @@ -0,0 +1,10 @@ +# UDT: FunctionButton + +## Members + +| Name | Datatype | Start Value | Comment | +|---|---|---|---| +| `Enable` | `Bool` | `` | | +| `Command` | `Bool` | `` | | +| `Light` | `Bool` | `` | | + diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/GLOBAL_DIAG_DB.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/GLOBAL_DIAG_DB.md new file mode 100644 index 0000000..5195c5f --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/GLOBAL_DIAG_DB.md @@ -0,0 +1,24 @@ +```pascal +// Block Type: GlobalDB +// Block Number: 11 + +DATA_BLOCK "GLOBAL_DIAG_DB" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + DATA_FIELD : Array[1..50] of Byte := [/* Array[1] unsupported init */, /* Array[2] unsupported init */, /* Array[3] unsupported init */, /* Array[4] unsupported init */, /* Array[5] unsupported init */, /* Array[6] unsupported init */, /* Array[7] unsupported init */, /* Array[8] unsupported init */, /* Array[9] unsupported init */, /* Array[10] unsupported init */, /* Array[11] unsupported init */, /* Array[12] unsupported init */, /* Array[13] unsupported init */, /* Array[14] unsupported init */, /* Array[15] unsupported init */, /* Array[16] unsupported init */, /* Array[17] unsupported init */, /* Array[18] unsupported init */, /* Array[19] unsupported init */, /* Array[20] unsupported init */, /* Array[21] unsupported init */, /* Array[22] unsupported init */, /* Array[23] unsupported init */, /* Array[24] unsupported init */, /* Array[25] unsupported init */, /* Array[26] unsupported init */, /* Array[27] unsupported init */, /* Array[28] unsupported init */, /* Array[29] unsupported init */, /* Array[30] unsupported init */, /* Array[31] unsupported init */, /* Array[32] unsupported init */, /* Array[33] unsupported init */, /* Array[34] unsupported init */, /* Array[35] unsupported init */, /* Array[36] unsupported init */, /* Array[37] unsupported init */, /* Array[38] unsupported init */, /* Array[39] unsupported init */, /* Array[40] unsupported init */, /* Array[41] unsupported init */, /* Array[42] unsupported init */, /* Array[43] unsupported init */, /* Array[44] unsupported init */, /* Array[45] unsupported init */, /* Array[46] unsupported init */, /* Array[47] unsupported init */, /* Array[48] unsupported init */, /* Array[49] unsupported init */, /* Array[50] unsupported init */]; + SUM_SLAVES_DIAG : Int := 0; + LIST_SLAVES_NOT_PRESENT : Array[1..4] of DWord := [/* Array[1] unsupported init */, /* Array[2] unsupported init */, /* Array[3] unsupported init */, /* Array[4] unsupported init */]; + LIST_SLAVES_ERROR : Array[1..4] of DWord := [/* Array[1] unsupported init */, /* Array[2] unsupported init */, /* Array[3] unsupported init */, /* Array[4] unsupported init */]; + RETVAL : Int := 0; + BUSY : Bool := FALSE; + spare88 : Word; + LIST_SLAVES_FAULT_SAVE : Array[1..4] of DWord := [/* Array[1] unsupported init */, /* Array[2] unsupported init */, /* Array[3] unsupported init */, /* Array[4] unsupported init */]; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/GNS_PLCdia_MainRoutine.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/GNS_PLCdia_MainRoutine.md new file mode 100644 index 0000000..2bdadd4 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/GNS_PLCdia_MainRoutine.md @@ -0,0 +1,39 @@ +```pascal +// Block Type: FC +// Block Name (Original): GNS PLCdia MainRoutine +// Block Number: 2410 +// Original Network Languages: LAD +// Block Comment: +// (c) by SIDEL +// Name : General Safety: PLC Diagnostic: Main Call +// Description: +// Function: General Safeties +// Module : PLC Diagnostic +// - Options Main Call +// -------------------------------------------------------------------------------- + +FUNCTION "GNS_PLCdia_MainRoutine" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +BEGIN + + // Network 1: Option: Profinet-IO Node Diagnostic (Original Language: LAD) + + IF "AUX FALSE" THEN + GNS_PLCdia_Profinet(); + END_IF; + + // Network 2: Option: Profibus DP Node Diagnostic (Original Language: LAD) + + GNS_PLCdia_Profibus(); + + // Network 3: PROFIBUS NETWORK FAULT (Original Language: LAD) + + "SFM Profibus" := "PNetF" OR "PBusF"; + + "HMI_Alarms"."Fault"."Alarm049" := "PNetF" OR "PBusF"; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/GNS_PLCdia_Profibus.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/GNS_PLCdia_Profibus.md new file mode 100644 index 0000000..9bbcc73 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/GNS_PLCdia_Profibus.md @@ -0,0 +1,105 @@ +```pascal +// Block Type: FC +// Block Name (Original): GNS PLCdia Profibus +// Block Number: 2416 +// Original Network Languages: LAD, STL +// Block Comment: +// (c) by SIDEL +// Name : General Safety: PLC Diagnostic: Profibus Node Diagnostic +// Description: +// Function: General Safety +// Modul : PLC Diagnostic +// Option : Profibus Node Diagnostic +// - PLC Profibus Node Diagnostic Control Logic with SFC51 "RDSYSST" +// -------------------------------------------------------------------------------- + +FUNCTION "GNS_PLCdia_Profibus" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +BEGIN + + // Network 1: Diagnostic Memory (Original Language: STL) + // - Request Memory + + // --- BEGIN STL Network 1 --- + + A "GNS PLCdia ProfibusData".I_O_FLT1 + O "GNS PLCdia ProfibusData".I_O_FLT2 + O "GNS PLCdia ProfibusData".RACK_FLT + O "GNS PLCdia ProfibusData".COMPLETE_RESTART + O_BRACK + A "GNS PLCdia ProfibusData".Device_status[1] + A "gIN_ResetBtn" + BRACKET + S "GNS PLCdia ProfibusData".State_REQ + R "GNS PLCdia ProfibusData".I_O_FLT1 + R "GNS PLCdia ProfibusData".I_O_FLT2 + R "GNS PLCdia ProfibusData".RACK_FLT + R "GNS PLCdia ProfibusData".COMPLETE_RESTART + + // --- END STL Network 1 --- + + // Network 2: Diagnostic Call (Original Language: LAD) + + // Network 2 did not produce printable SCL code. + + // Network 3: ProfiBus Network Fault (Original Language: LAD) + + IF "gIN_ResetBtn" THEN + "PBusF" := FALSE; + END_IF; + + IF "GNS PLCdia ProfibusData"."Device_status" THEN + "PBusF" := TRUE; + END_IF; + + // Network 4: ProfiBus Network Fault (Original Language: LAD) + + IF "GNS PLCdia ProfibusData"."Device_status" THEN + "HMI CPU_DP Diag"."Slave_Status" := 1; + END_IF; + + IF "GNS PLCdia ProfibusData"."Device_status" THEN + "HMI CPU_DP Diag"."Slave_Status" := 1; + END_IF; + + IF "GNS PLCdia ProfibusData"."Device_status" THEN + "HMI CPU_DP Diag"."Slave_Status" := 1; + END_IF; + + IF "GNS PLCdia ProfibusData"."Device_status" THEN + "HMI CPU_DP Diag"."Slave_Status" := 1; + END_IF; + + IF "GNS PLCdia ProfibusData"."Device_status" THEN + "HMI CPU_DP Diag"."Slave_Status" := 1; + END_IF; + + IF "GNS PLCdia ProfibusData"."Device_status" THEN + "HMI CPU_DP Diag"."Slave_Status" := 1; + END_IF; + + IF "GNS PLCdia ProfibusData"."Device_status" THEN + "HMI CPU_DP Diag"."Slave_Status" := 1; + END_IF; + + IF "GNS PLCdia ProfibusData"."Device_status" THEN + "PBusF" := TRUE; + END_IF; + + // Network 5: (Original Language: LAD) + + IF "gIN_ResetBtn" THEN + "HMI CPU_DP Diag"."Slave_Status" := 0; + "HMI CPU_DP Diag"."Slave_Status" := 0; + "HMI CPU_DP Diag"."Slave_Status" := 0; + "HMI CPU_DP Diag"."Slave_Status" := 0; + "HMI CPU_DP Diag"."Slave_Status" := 0; + "HMI CPU_DP Diag"."Slave_Status" := 0; + "HMI CPU_DP Diag"."Slave_Status" := 0; + END_IF; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/GNS_PLCdia_ProfibusData.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/GNS_PLCdia_ProfibusData.md new file mode 100644 index 0000000..30a7bb1 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/GNS_PLCdia_ProfibusData.md @@ -0,0 +1,26 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): GNS PLCdia ProfibusData +// Block Number: 2416 + +DATA_BLOCK "GNS_PLCdia_ProfibusData" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + LADDR : "HW_IOSYSTEM"; + MODE : UInt := 5; + Device_status : Array[0..1024] of Bool := [FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE]; + _RET_VAL : Int := 0; + I_O_FLT1 : Bool := FALSE; + I_O_FLT2 : Bool := FALSE; + RACK_FLT : Bool := FALSE; + COMPLETE_RESTART : Bool := FALSE; + State_REQ : Bool := FALSE; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/GNS_PLCdia_Profinet.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/GNS_PLCdia_Profinet.md new file mode 100644 index 0000000..403926c --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/GNS_PLCdia_Profinet.md @@ -0,0 +1,59 @@ +```pascal +// Block Type: FC +// Block Name (Original): GNS PLCdia Profinet +// Block Number: 2415 +// Original Network Languages: LAD, STL +// Block Comment: +// (c) by SIDEL +// Name : General Safety: PLC Diagnostic: Profinet Node Diagnostic +// Description: +// Function: General Safety +// Module : PLC Diagnostic +// Option : Profinet Node Diagnostic +// - PLC Profinet Node Diagnostic Control Logic with SFC51 "RDSYSST" +// -------------------------------------------------------------------------------- + +FUNCTION "GNS_PLCdia_Profinet" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +BEGIN + + // Network 1: Diagnostic Memory (Original Language: STL) + // - Request Memory + + // --- BEGIN STL Network 1 --- + + A "GNS PLCdia ProfinetData".I_O_FLT1 + O "GNS PLCdia ProfinetData".I_O_FLT2 + O "GNS PLCdia ProfinetData".RACK_FLT + O "GNS PLCdia ProfinetData".COMPLETE_RESTART + O_BRACK + A "GNS PLCdia ProfinetData".Device_status[0] + A "gIN_ResetBtn" + BRACKET + S "GNS PLCdia ProfinetData".State_REQ + R "GNS PLCdia ProfinetData".I_O_FLT1 + R "GNS PLCdia ProfinetData".I_O_FLT2 + R "GNS PLCdia ProfinetData".RACK_FLT + R "GNS PLCdia ProfinetData".COMPLETE_RESTART + + // --- END STL Network 1 --- + + // Network 2: Diagnostic Call (Original Language: LAD) + + // Network 2 did not produce printable SCL code. + + // Network 3: Profinet Network Fault (Original Language: LAD) + + IF "gIN_ResetBtn" THEN + "PNetF" := FALSE; + END_IF; + + IF "GNS PLCdia ProfinetData"."Device_status" THEN + "PNetF" := TRUE; + END_IF; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/GNS_PLCdia_ProfinetData.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/GNS_PLCdia_ProfinetData.md new file mode 100644 index 0000000..8642ac8 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/GNS_PLCdia_ProfinetData.md @@ -0,0 +1,26 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): GNS PLCdia ProfinetData +// Block Number: 2415 + +DATA_BLOCK "GNS_PLCdia_ProfinetData" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + LADDR : "HW_IOSYSTEM"; + MODE : UInt := 5; + Device_status : Array[0..1024] of Bool := [FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE]; + _RET_VAL : Int := 0; + I_O_FLT1 : Bool := FALSE; + I_O_FLT2 : Bool := FALSE; + RACK_FLT : Bool := FALSE; + COMPLETE_RESTART : Bool := FALSE; + State_REQ : Bool := FALSE; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/GetProdBrixCO2_Anal_Inpt.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/GetProdBrixCO2_Anal_Inpt.md new file mode 100644 index 0000000..4c55f93 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/GetProdBrixCO2_Anal_Inpt.md @@ -0,0 +1,35 @@ +```pascal +// Block Type: FC +// Block Number: 1894 +// Original Network Languages: LAD + +FUNCTION "GetProdBrixCO2_Anal_Inpt" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + mAnalogicSel : Bool; + mDummy : Bool; +END_VAR + +BEGIN + + // Network 1: Analogic Selection (Original Language: LAD) + + "mAnalogicSel" := Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_MeterType", 3); + + // Network 2: C02 (Original Language: LAD) + + ReadAnalogIn(ANALOG := "HMI_Instrument"."QTM_302", MAX_Analog_Value := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := 0, PEW := "P_AI_ProductCO2"); + + "Blender_Variables"."gProductCO2" := "HMI_Instrument"."QTM_302"."PV"; + + "mDummy" := TRUE; + + // Network 3: MIX - ProductMeterOK (Original Language: LAD) + + "gProductMeterOK" := "mAnalogicSel"; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Alarms.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Alarms.md new file mode 100644 index 0000000..f39910d --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Alarms.md @@ -0,0 +1,26 @@ +```pascal +// Block Type: GlobalDB +// Block Number: 1000 + +DATA_BLOCK "HMI_Alarms" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Fault : "Struct"; + Supplies : "Struct"; + External : "Struct"; + Operator : "Struct"; + gH_Message : Array[1..88] of Bool := [FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE]; + gH_Message_code : Int := 0; + gH_Status : Array[1..80] of Bool := [FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE]; + gH_Status_code : Int := 0; + Profibus_Node_Fault : Int := 0; + Profibus_Node_Fault_1 : Int := 0; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Blender_Parameters.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Blender_Parameters.md new file mode 100644 index 0000000..0189283 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Blender_Parameters.md @@ -0,0 +1,83 @@ +```pascal +// Block Type: GlobalDB +// Block Number: 1001 + +DATA_BLOCK "HMI_Blender_Parameters" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Processor_Options : "Struct"; + Spare1 : Array[1..8] of Int := [0, 0, 0, 0, 0, 0, 0, 0]; + Spare4 : Real := 0.09967054; + _RVM301_Kp : Real := 200.0; + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := FALSE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := FALSE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 0; + _ProdMeterRecipeNum : Int := 1; + _SyrupBrix : Real; + _SyrupDensity : Real; + _SyrupFactor : Real := -0.1389141; + _ProductBrix : Real; + _ProductionRate : Real := 4.173888e-08; + _Ratio : Real; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 0.0; + _CO2Fact : Real; + _ProdTankPress : Real; + _SP_ProdTemp : Real; + _PrdTankMinLevel : Real; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 0.0; + _FillingValveHead_SP : Real := 0.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 0; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + + Spare2 : Array[1..13] of Int := [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; + Next_Recipe_Name : String[32]; + Next_Recipe_Number : Int := 0; + Spare3 : Array[1..18] of Int := [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; + ProcessSetup : "Struct"; + _SwitchOff_DensityOK : Bool := FALSE; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_CPU_DP_Diag.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_CPU_DP_Diag.md new file mode 100644 index 0000000..5b2ae01 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_CPU_DP_Diag.md @@ -0,0 +1,35 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): HMI CPU_DP Diag +// Block Number: 174 + +DATA_BLOCK "HMI_CPU_DP_Diag" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Support : Int := 0; + Led_PLC : "Struct"; + Spare40 : Int := 0; + Spare42 : Int := 0; + Spare46 : Int := 0; + Slave_Status_Index : DInt := 0; + Slave_Status : Array[1..129] of Byte := [/* Array[1] unsupported init */, /* Array[2] unsupported init */, /* Array[3] unsupported init */, /* Array[4] unsupported init */, /* Array[5] unsupported init */, /* Array[6] unsupported init */, /* Array[7] unsupported init */, /* Array[8] unsupported init */, /* Array[9] unsupported init */, /* Array[10] unsupported init */, /* Array[11] unsupported init */, /* Array[12] unsupported init */, /* Array[13] unsupported init */, /* Array[14] unsupported init */, /* Array[15] unsupported init */, /* Array[16] unsupported init */, /* Array[17] unsupported init */, /* Array[18] unsupported init */, /* Array[19] unsupported init */, /* Array[20] unsupported init */, /* Array[21] unsupported init */, /* Array[22] unsupported init */, /* Array[23] unsupported init */, /* Array[24] unsupported init */, /* Array[25] unsupported init */, /* Array[26] unsupported init */, /* Array[27] unsupported init */, /* Array[28] unsupported init */, /* Array[29] unsupported init */, /* Array[30] unsupported init */, /* Array[31] unsupported init */, /* Array[32] unsupported init */, /* Array[33] unsupported init */, /* Array[34] unsupported init */, /* Array[35] unsupported init */, /* Array[36] unsupported init */, /* Array[37] unsupported init */, /* Array[38] unsupported init */, /* Array[39] unsupported init */, /* Array[40] unsupported init */, /* Array[41] unsupported init */, /* Array[42] unsupported init */, /* Array[43] unsupported init */, /* Array[44] unsupported init */, /* Array[45] unsupported init */, /* Array[46] unsupported init */, /* Array[47] unsupported init */, /* Array[48] unsupported init */, /* Array[49] unsupported init */, /* Array[50] unsupported init */, /* Array[51] unsupported init */, /* Array[52] unsupported init */, /* Array[53] unsupported init */, /* Array[54] unsupported init */, /* Array[55] unsupported init */, /* Array[56] unsupported init */, /* Array[57] unsupported init */, /* Array[58] unsupported init */, /* Array[59] unsupported init */, /* Array[60] unsupported init */, /* Array[61] unsupported init */, /* Array[62] unsupported init */, /* Array[63] unsupported init */, /* Array[64] unsupported init */, /* Array[65] unsupported init */, /* Array[66] unsupported init */, /* Array[67] unsupported init */, /* Array[68] unsupported init */, /* Array[69] unsupported init */, /* Array[70] unsupported init */, /* Array[71] unsupported init */, /* Array[72] unsupported init */, /* Array[73] unsupported init */, /* Array[74] unsupported init */, /* Array[75] unsupported init */, /* Array[76] unsupported init */, /* Array[77] unsupported init */, /* Array[78] unsupported init */, /* Array[79] unsupported init */, /* Array[80] unsupported init */, /* Array[81] unsupported init */, /* Array[82] unsupported init */, /* Array[83] unsupported init */, /* Array[84] unsupported init */, /* Array[85] unsupported init */, /* Array[86] unsupported init */, /* Array[87] unsupported init */, /* Array[88] unsupported init */, /* Array[89] unsupported init */, /* Array[90] unsupported init */, /* Array[91] unsupported init */, /* Array[92] unsupported init */, /* Array[93] unsupported init */, /* Array[94] unsupported init */, /* Array[95] unsupported init */, /* Array[96] unsupported init */, /* Array[97] unsupported init */, /* Array[98] unsupported init */, /* Array[99] unsupported init */, /* Array[100] unsupported init */, /* Array[101] unsupported init */, /* Array[102] unsupported init */, /* Array[103] unsupported init */, /* Array[104] unsupported init */, /* Array[105] unsupported init */, /* Array[106] unsupported init */, /* Array[107] unsupported init */, /* Array[108] unsupported init */, /* Array[109] unsupported init */, /* Array[110] unsupported init */, /* Array[111] unsupported init */, /* Array[112] unsupported init */, /* Array[113] unsupported init */, /* Array[114] unsupported init */, /* Array[115] unsupported init */, /* Array[116] unsupported init */, /* Array[117] unsupported init */, /* Array[118] unsupported init */, /* Array[119] unsupported init */, /* Array[120] unsupported init */, /* Array[121] unsupported init */, /* Array[122] unsupported init */, /* Array[123] unsupported init */, /* Array[124] unsupported init */, /* Array[125] unsupported init */, /* Array[126] unsupported init */, /* Array[127] unsupported init */, /* Array[128] unsupported init */, /* Array[129] unsupported init */]; + Spare180 : DInt := 0; + Spare184 : DInt := 0; + Spare188 : DInt := 0; + Spare192 : DInt := 0; + Spare196 : DInt := 0; + Cmd : "Struct"; + Diag : "Struct"; + State : "Struct"; + MyLADDR : "HW_IO"; + MyLED : UInt := 1; + returnValue : Int := 2; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Device.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Device.md new file mode 100644 index 0000000..c964bc9 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Device.md @@ -0,0 +1,1681 @@ +```pascal +// Block Type: GlobalDB +// Block Number: 1010 + +DATA_BLOCK "HMI_Device" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + RVN301 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + RVN301_1 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + RVN302 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + RVN302_1 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + RVP303 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + EV04 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM311 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := TRUE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM312 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM313 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVN314 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM315 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVP316 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVP316_1 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM318 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := TRUE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := TRUE; + FeedbackOffConfig : Bool := TRUE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVP317_1 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := TRUE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM317 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM317_1 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVN318 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := TRUE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + _Spare_AV32 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM330 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM321 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := TRUE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM322 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM323 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVP324 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := TRUE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVN325 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM326 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVN327 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVN328 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVN347 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVN350 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVN329 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + _Spare_AV54 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVS331 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVS332 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVS333 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVS334 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVS335 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVS336 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVS337 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVS338 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM339 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := TRUE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM340 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM341 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM342 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + _EV43 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVP344 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM345 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM346 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := TRUE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := TRUE; + FeedbackOffConfig : Bool := TRUE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + _Spare_AV88 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVN348 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVN349 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + _Spare_AV94 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + _EV51 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + _EV52 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM327_NoCMD : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM328_NoCMD : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM329_NoCMD : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM331 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM327 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM328 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM329 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVP361 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM362 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := TRUE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := TRUE; + FeedbackOffConfig : Bool := TRUE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVP363 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVP364 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVP365 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM366 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM367 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM368 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM369 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM363 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM371 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM372 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVN373 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVN374 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVN377 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := TRUE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVN378 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM353 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM388 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := TRUE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := TRUE; + FeedbackOffConfig : Bool := TRUE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM389 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := TRUE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := TRUE; + FeedbackOffConfig : Bool := TRUE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM380 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := TRUE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM381 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := TRUE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVP389 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVP390 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM391 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM385 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM386 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM387 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVN395 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := TRUE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := TRUE; + FeedbackOffConfig : Bool := TRUE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM396 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM397 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + PPN301 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + PPP302 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + PPM303 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + PPN304 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + PPN305 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + PPM306 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + PPM305 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + _Spare_PP190 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + _Spare_PP192 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + SyrupRoom_SyrupPump : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + SyrupRoom_WaterPump : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + PPM307 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVP391 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := TRUE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := TRUE; + FeedbackOffConfig : Bool := TRUE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVN390 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVP395 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := TRUE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM323_1 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM323_2 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + RVN302_2 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM317_2 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := FALSE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + + AVM345_1 : STRUCT + Auto : Bool := TRUE; + ManOn : Bool := FALSE; + Out : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + FeedBackOn : Bool := FALSE; + FeedBackOff : Bool := FALSE; + Config : Bool := TRUE; + FeedbackOnConfig : Bool := FALSE; + FeedbackOffConfig : Bool := FALSE; + Spare12 : Bool := FALSE; + Spare13 : Bool := FALSE; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Digital.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Digital.md new file mode 100644 index 0000000..3609167 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Digital.md @@ -0,0 +1,271 @@ +```pascal +// Block Type: GlobalDB +// Block Number: 1012 + +DATA_BLOCK "HMI_Digital" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + LSN301L : STRUCT + Raw : Bool := FALSE; + Filtered : Bool := FALSE; + Wait : Bool := FALSE; + Spare03 : Bool := FALSE; + Spare04 : Bool := FALSE; + Spare05 : Bool := FALSE; + Spare06 : Bool := FALSE; + Config : Bool := TRUE; + DelayOnSP : Int := 100; + DelayOffSP : Int := 0; + DelayOn : Int := 0; + DelayOff : Int := 0; + END_STRUCT; + + LSN302L : STRUCT + Raw : Bool := FALSE; + Filtered : Bool := FALSE; + Wait : Bool := FALSE; + Spare03 : Bool := FALSE; + Spare04 : Bool := FALSE; + Spare05 : Bool := FALSE; + Spare06 : Bool := FALSE; + Config : Bool := FALSE; + DelayOnSP : Int := 100; + DelayOffSP : Int := 0; + DelayOn : Int := 0; + DelayOff : Int := 0; + END_STRUCT; + + LSM302L : STRUCT + Raw : Bool := FALSE; + Filtered : Bool := FALSE; + Wait : Bool := FALSE; + Spare03 : Bool := FALSE; + Spare04 : Bool := FALSE; + Spare05 : Bool := FALSE; + Spare06 : Bool := FALSE; + Config : Bool := TRUE; + DelayOnSP : Int := 20; + DelayOffSP : Int := 0; + DelayOn : Int := 0; + DelayOff : Int := 0; + END_STRUCT; + + LAL_S3 : STRUCT + Raw : Bool := FALSE; + Filtered : Bool := FALSE; + Wait : Bool := FALSE; + Spare03 : Bool := FALSE; + Spare04 : Bool := FALSE; + Spare05 : Bool := FALSE; + Spare06 : Bool := FALSE; + Config : Bool := FALSE; + DelayOnSP : Int := 60; + DelayOffSP : Int := 0; + DelayOn : Int := 0; + DelayOff : Int := 0; + END_STRUCT; + + _LS : STRUCT + Raw : Bool := FALSE; + Filtered : Bool := FALSE; + Wait : Bool := FALSE; + Spare03 : Bool := FALSE; + Spare04 : Bool := FALSE; + Spare05 : Bool := FALSE; + Spare06 : Bool := FALSE; + Config : Bool := FALSE; + DelayOnSP : Int := 0; + DelayOffSP : Int := 0; + DelayOn : Int := 0; + DelayOff : Int := 0; + END_STRUCT; + + _PAL_S11 : STRUCT + Raw : Bool := TRUE; + Filtered : Bool := TRUE; + Wait : Bool := FALSE; + Spare03 : Bool := FALSE; + Spare04 : Bool := FALSE; + Spare05 : Bool := FALSE; + Spare06 : Bool := FALSE; + Config : Bool := TRUE; + DelayOnSP : Int := 20; + DelayOffSP : Int := 0; + DelayOn : Int := 0; + DelayOff : Int := 0; + END_STRUCT; + + _PAL : STRUCT + Raw : Bool := FALSE; + Filtered : Bool := FALSE; + Wait : Bool := FALSE; + Spare03 : Bool := FALSE; + Spare04 : Bool := FALSE; + Spare05 : Bool := FALSE; + Spare06 : Bool := FALSE; + Config : Bool := FALSE; + DelayOnSP : Int := 0; + DelayOffSP : Int := 0; + DelayOn : Int := 0; + DelayOff : Int := 0; + END_STRUCT; + + FSS301 : STRUCT + Raw : Bool := FALSE; + Filtered : Bool := FALSE; + Wait : Bool := FALSE; + Spare03 : Bool := FALSE; + Spare04 : Bool := FALSE; + Spare05 : Bool := FALSE; + Spare06 : Bool := FALSE; + Config : Bool := FALSE; + DelayOnSP : Int := 20; + DelayOffSP : Int := 0; + DelayOn : Int := 0; + DelayOff : Int := 0; + END_STRUCT; + + _FS : STRUCT + Raw : Bool := FALSE; + Filtered : Bool := FALSE; + Wait : Bool := FALSE; + Spare03 : Bool := FALSE; + Spare04 : Bool := FALSE; + Spare05 : Bool := FALSE; + Spare06 : Bool := FALSE; + Config : Bool := FALSE; + DelayOnSP : Int := 0; + DelayOffSP : Int := 0; + DelayOn : Int := 0; + DelayOff : Int := 0; + END_STRUCT; + + GSM307 : STRUCT + Raw : Bool := FALSE; + Filtered : Bool := FALSE; + Wait : Bool := FALSE; + Spare03 : Bool := FALSE; + Spare04 : Bool := FALSE; + Spare05 : Bool := FALSE; + Spare06 : Bool := FALSE; + Config : Bool := FALSE; + DelayOnSP : Int := 0; + DelayOffSP : Int := 0; + DelayOn : Int := 0; + DelayOff : Int := 0; + END_STRUCT; + + GSM308 : STRUCT + Raw : Bool := FALSE; + Filtered : Bool := FALSE; + Wait : Bool := FALSE; + Spare03 : Bool := FALSE; + Spare04 : Bool := FALSE; + Spare05 : Bool := FALSE; + Spare06 : Bool := FALSE; + Config : Bool := FALSE; + DelayOnSP : Int := 0; + DelayOffSP : Int := 0; + DelayOn : Int := 0; + DelayOff : Int := 0; + END_STRUCT; + + GSM309 : STRUCT + Raw : Bool := FALSE; + Filtered : Bool := FALSE; + Wait : Bool := FALSE; + Spare03 : Bool := FALSE; + Spare04 : Bool := FALSE; + Spare05 : Bool := FALSE; + Spare06 : Bool := FALSE; + Config : Bool := FALSE; + DelayOnSP : Int := 0; + DelayOffSP : Int := 0; + DelayOn : Int := 0; + DelayOff : Int := 0; + END_STRUCT; + + GSM310 : STRUCT + Raw : Bool := FALSE; + Filtered : Bool := FALSE; + Wait : Bool := FALSE; + Spare03 : Bool := FALSE; + Spare04 : Bool := FALSE; + Spare05 : Bool := FALSE; + Spare06 : Bool := FALSE; + Config : Bool := FALSE; + DelayOnSP : Int := 0; + DelayOffSP : Int := 0; + DelayOn : Int := 0; + DelayOff : Int := 0; + END_STRUCT; + + GSM311 : STRUCT + Raw : Bool := FALSE; + Filtered : Bool := FALSE; + Wait : Bool := FALSE; + Spare03 : Bool := FALSE; + Spare04 : Bool := FALSE; + Spare05 : Bool := FALSE; + Spare06 : Bool := FALSE; + Config : Bool := FALSE; + DelayOnSP : Int := 0; + DelayOffSP : Int := 0; + DelayOn : Int := 0; + DelayOff : Int := 0; + END_STRUCT; + + GSM312 : STRUCT + Raw : Bool := FALSE; + Filtered : Bool := FALSE; + Wait : Bool := FALSE; + Spare03 : Bool := FALSE; + Spare04 : Bool := FALSE; + Spare05 : Bool := FALSE; + Spare06 : Bool := FALSE; + Config : Bool := FALSE; + DelayOnSP : Int := 0; + DelayOffSP : Int := 0; + DelayOn : Int := 0; + DelayOff : Int := 0; + END_STRUCT; + + GSM322 : STRUCT + Raw : Bool := FALSE; + Filtered : Bool := FALSE; + Wait : Bool := FALSE; + Spare03 : Bool := FALSE; + Spare04 : Bool := FALSE; + Spare05 : Bool := FALSE; + Spare06 : Bool := FALSE; + Config : Bool := FALSE; + DelayOnSP : Int := 0; + DelayOffSP : Int := 0; + DelayOn : Int := 0; + DelayOff : Int := 0; + END_STRUCT; + + GSM323 : STRUCT + Raw : Bool := FALSE; + Filtered : Bool := FALSE; + Wait : Bool := FALSE; + Spare03 : Bool := FALSE; + Spare04 : Bool := FALSE; + Spare05 : Bool := FALSE; + Spare06 : Bool := FALSE; + Config : Bool := FALSE; + DelayOnSP : Int := 0; + DelayOffSP : Int := 0; + DelayOn : Int := 0; + DelayOff : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_IO_Showing.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_IO_Showing.md new file mode 100644 index 0000000..a5c71d4 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_IO_Showing.md @@ -0,0 +1,22 @@ +```pascal +// Block Type: GlobalDB +// Block Number: 1002 + +DATA_BLOCK "HMI_IO_Showing" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Filler_IO_Signal : "Struct"; + Syrup_Room_IO_Signal : "Struct"; + Cip_Room_IO_Signal : "Struct"; + Sidel_Cip_Room_IO_Signal : "Struct"; + Sidel_Filler_IO_Signal : "Struct"; + Mixer_Filler_IO_Signal : "Struct"; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Instrument.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Instrument.md new file mode 100644 index 0000000..1db6cf2 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Instrument.md @@ -0,0 +1,961 @@ +```pascal +// Block Type: GlobalDB +// Block Number: 1011 + +DATA_BLOCK "HMI_Instrument" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + LTM302 : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := TRUE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 0.1663773; + SP : Real := 0.0; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 100.0; + PVFiltered : Real := 0.1650621; + END_STRUCT; + + LTP303 : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := TRUE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 0.06148726; + SP : Real := 25.0; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 100.0; + PVFiltered : Real := 0.06148726; + END_STRUCT; + + LTP304 : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := FALSE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 0.0; + SP : Real := 0.0; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 100.0; + PVFiltered : Real := 0.0; + END_STRUCT; + + _FillerLevel : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := FALSE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 0.0; + SP : Real := 0.0; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 100.0; + PVFiltered : Real := 0.0; + END_STRUCT; + + LTN301 : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := FALSE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 0.0; + SP : Real := 0.0; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 100.0; + PVFiltered : Real := 0.0; + END_STRUCT; + + PTM304 : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := TRUE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 0.08391203; + SP : Real := 0.0; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 10.0; + PVFiltered : Real := 0.08373119; + END_STRUCT; + + PTN313 : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := FALSE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 0.0; + SP : Real := 0.0; + Offset : Real := 0.0; + Zero : Real := -1.0; + Span : Real := 0.0; + PVFiltered : Real := 0.0; + END_STRUCT; + + PCM306 : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := FALSE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 0.0; + SP : Real := 0.0; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 16.0; + PVFiltered : Real := 0.0; + END_STRUCT; + + PCM306_Offset : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := TRUE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 1.0; + SP : Real := 0.0; + Offset : Real := 0.0; + Zero : Real := 1.0; + Span : Real := 0.0; + PVFiltered : Real := 0.0; + END_STRUCT; + + PTF203 : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := TRUE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 54.43432; + SP : Real := 0.0; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 5000.0; + PVFiltered : Real := 54.03646; + END_STRUCT; + + PTM308 : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := FALSE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 0.0; + SP : Real := 0.0; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 10.0; + PVFiltered : Real := 0.0; + END_STRUCT; + + TT_S5 : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := FALSE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 0.0; + SP : Real := 0.0; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 100.0; + PVFiltered : Real := 0.0; + END_STRUCT; + + TTS305_1 : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := FALSE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 27.81033; + SP : Real := 0.0; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 100.0; + PVFiltered : Real := 27.81033; + END_STRUCT; + + TTM306_PRD : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := TRUE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 19.29615; + SP : Real := 0.0; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 100.0; + PVFiltered : Real := 19.29286; + END_STRUCT; + + TTM306_H2O : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := FALSE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 8.452691; + SP : Real := 16.0; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 100.0; + PVFiltered : Real := 8.452691; + END_STRUCT; + + TTN321 : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := TRUE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 20.21123; + SP : Real := 0.0; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 100.0; + PVFiltered : Real := 20.20985; + END_STRUCT; + + TTN322 : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := FALSE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 0.0; + SP : Real := 0.0; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 100.0; + PVFiltered : Real := 0.0; + END_STRUCT; + + _TT : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := FALSE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 0.0; + SP : Real := 0.0; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 100.0; + PVFiltered : Real := 0.0; + END_STRUCT; + + FTN301 : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := TRUE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 0.0; + SP : Real := 0.0; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 0.0; + PVFiltered : Real := 0.0; + END_STRUCT; + + FTP302 : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := TRUE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 0.0; + SP : Real := 0.0; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 0.0; + PVFiltered : Real := 0.0; + END_STRUCT; + + FTP302_Density : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := TRUE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 0.0; + SP : Real := 1.237; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 0.0; + PVFiltered : Real := 0.001204447; + END_STRUCT; + + FTP302_Brix : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := TRUE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 0.0; + SP : Real := 51.37; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 0.0; + PVFiltered : Real := -1156.81; + END_STRUCT; + + FTP302_Temperature : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := TRUE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 0.0; + SP : Real := 0.0; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 0.0; + PVFiltered : Real := 18.69626; + END_STRUCT; + + FTM303 : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := TRUE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 0.0; + SP : Real := 0.0; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 0.0; + PVFiltered : Real := 0.0; + END_STRUCT; + + FTP304 : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := FALSE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 0.0; + SP : Real := 0.0; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 0.0; + PVFiltered : Real := 0.0; + END_STRUCT; + + FTP304_Density : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := FALSE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 0.0; + SP : Real := 0.0; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 0.0; + PVFiltered : Real := 0.0; + END_STRUCT; + + FTP304_Brix : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := FALSE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 0.0; + SP : Real := 0.0; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 0.0; + PVFiltered : Real := 0.0; + END_STRUCT; + + FTM305 : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := FALSE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 0.0; + SP : Real := 0.0; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 0.0; + PVFiltered : Real := 0.0; + END_STRUCT; + + CTS301 : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := FALSE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 0.0; + SP : Real := 0.0; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 0.0; + PVFiltered : Real := 0.0; + END_STRUCT; + + CTS302 : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := FALSE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 0.0; + SP : Real := 0.0; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 0.0; + PVFiltered : Real := 0.0; + END_STRUCT; + + _CTS : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := FALSE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 0.0; + SP : Real := 0.0; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 0.0; + PVFiltered : Real := 0.0; + END_STRUCT; + + CTM304 : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := FALSE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 0.0; + SP : Real := 0.0; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 0.0; + PVFiltered : Real := 0.0; + END_STRUCT; + + _CTM : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := FALSE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 0.0; + SP : Real := 0.0; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 0.0; + PVFiltered : Real := 0.0; + END_STRUCT; + + QTM_302 : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := FALSE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 0.0; + SP : Real := 4.3575; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 0.0; + PVFiltered : Real := 0.0; + END_STRUCT; + + QTM_301 : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := FALSE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 0.0; + SP : Real := 9.432194; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 0.0; + PVFiltered : Real := 0.0; + END_STRUCT; + + QTM_RecipeNum : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := FALSE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 0.0; + SP : Real := 0.0; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 0.0; + PVFiltered : Real := 0.0; + END_STRUCT; + + QTM_Temperature : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := FALSE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 0.0; + SP : Real := 0.0; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 100.0; + PVFiltered : Real := 0.0; + END_STRUCT; + + _ProductO2Conc : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := FALSE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 0.0; + SP : Real := 0.0; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 10.0; + PVFiltered : Real := 0.0; + END_STRUCT; + + RVM301 : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := TRUE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 0.0; + SP : Real := 0.0; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 100.0; + PVFiltered : Real := 0.0; + END_STRUCT; + + RVN304 : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := TRUE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := -0.4580946; + SP : Real := 0.0; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 666.6; + PVFiltered : Real := -0.4580946; + END_STRUCT; + + RVN305 : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := TRUE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 0.0; + SP : Real := 0.0; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 809.2461; + PVFiltered : Real := 0.0; + END_STRUCT; + + PPM303_VFC_ActualValue : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := TRUE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 0.0; + SP : Real := 0.0; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 500.0; + PVFiltered : Real := 0.0; + END_STRUCT; + + _VFC : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := FALSE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 0.0; + SP : Real := 0.0; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 100.0; + PVFiltered : Real := 0.0; + END_STRUCT; + + PTP338 : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := FALSE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 0.1837384; + SP : Real := 1.5; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 5.0; + PVFiltered : Real := 0.1837384; + END_STRUCT; + + TTM307 : STRUCT + Spare00 : Bool := FALSE; + Spare01 : Bool := FALSE; + Wait : Bool := FALSE; + Alarm : Bool := FALSE; + Mask : Bool := FALSE; + _LessThanSP : Bool := FALSE; + _GreaterThanSP : Bool := FALSE; + Config : Bool := FALSE; + Spare10 : Bool := FALSE; + Spare11 : Bool := FALSE; + Spare12 : Bool := FALSE; + _AckAlarm : Bool := FALSE; + PV : Real := 0.0; + SP : Real := 0.0; + Offset : Real := 0.0; + Zero : Real := 0.0; + Span : Real := 0.0; + PVFiltered : Real := 0.0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Key_User.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Key_User.md new file mode 100644 index 0000000..c65e854 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Key_User.md @@ -0,0 +1,32 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): HMI Key User +// Block Number: 500 + +DATA_BLOCK "HMI_Key_User" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Key_User : Array[0..40] of "Struct"; + Actual_User_Name : String[16] := ''; + Actual_UserLevel : Byte; + Actual_UserTimeOut : Byte; + Key_Row : Byte; + Cmd_Bit : "Struct"; + Key_Code_Read : String[10]; + Invalid_Code_Empty : String[10] := ''; + Invalid_Code_Error : String[10]; + Administrator_Code : String[10]; + Administrator_User_Name : String[16]; + No_User_Name : String[16]; + Spare : Array[0..14] of Word := [/* Array[0] unsupported init */, /* Array[1] unsupported init */, /* Array[2] unsupported init */, /* Array[3] unsupported init */, /* Array[4] unsupported init */, /* Array[5] unsupported init */, /* Array[6] unsupported init */, /* Array[7] unsupported init */, /* Array[8] unsupported init */, /* Array[9] unsupported init */, /* Array[10] unsupported init */, /* Array[11] unsupported init */, /* Array[12] unsupported init */, /* Array[13] unsupported init */, /* Array[14] unsupported init */]; + Act_UserTimeOut_Preset : Int := 14400; + Act_UserTimeOut_Counter : Int := 14400; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Local_CIP_Variables.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Local_CIP_Variables.md new file mode 100644 index 0000000..5d8ed9f --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Local_CIP_Variables.md @@ -0,0 +1,22 @@ +```pascal +// Block Type: GlobalDB +// Block Number: 1003 + +DATA_BLOCK "HMI_Local_CIP_Variables" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Cip_Commands : "Struct"; + Cip_Recipe : "Struct"; + CIP_AnalogValues : "Struct"; + CIPRecipeNames : "Struct"; + Cip_SimpleEditPhaseNum : Int := 0; + CIP_SimpleEditType : Int := 0; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_PID.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_PID.md new file mode 100644 index 0000000..f74d273 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_PID.md @@ -0,0 +1,730 @@ +```pascal +// Block Type: GlobalDB +// Block Number: 1013 + +DATA_BLOCK "HMI_PID" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + RMM301 : STRUCT + ConfigPID : Bool := FALSE; + Hold_Int : Bool := FALSE; + I_ITL : Bool := FALSE; + Alarm : Bool := FALSE; + Spare0_4 : Bool := FALSE; + Spare0_5 : Bool := FALSE; + Spare0_6 : Bool := FALSE; + Config : Bool := TRUE; + PID_FIX : Bool := FALSE; + Spare1_1 : Bool := FALSE; + High_Limit : Bool := FALSE; + Low_Limit : Bool := TRUE; + ManualControl : "Struct"; + Bp : Real := 4000.0; + Ti : Real := 8.0; + Td : Real := 0.0; + Ff : Real := 0.22; + KP : Real := 0.025; + Pv : Real := 0.0; + OutMan : Real := 0.0; + Lsp : Real := 0.0; + OutMaxHmi : Real := 0.0; + OutMin : Real := 0.0; + OutMax : Real := 100.0; + Spare52 : Real := 0.0; + FfOut : Real := 0.0; + Sp : Real := 0.0; + Out : Real := 0.0; + Cycle_Time : Real := 0.3; + I_ITLVAL : Real := 0.0; + Dead_Band : Real := 0.0; + END_STRUCT; + + RMP302 : STRUCT + ConfigPID : Bool := FALSE; + Hold_Int : Bool := FALSE; + I_ITL : Bool := FALSE; + Alarm : Bool := FALSE; + Spare0_4 : Bool := FALSE; + Spare0_5 : Bool := FALSE; + Spare0_6 : Bool := FALSE; + Config : Bool := TRUE; + PID_FIX : Bool := FALSE; + Spare1_1 : Bool := FALSE; + High_Limit : Bool := FALSE; + Low_Limit : Bool := TRUE; + ManualControl : "Struct"; + Bp : Real := 450.0; + Ti : Real := 3.0; + Td : Real := 1.0; + Ff : Real := 0.87; + KP : Real := 0.2222222; + Pv : Real := 0.0; + OutMan : Real := 0.0; + Lsp : Real := 0.0; + OutMaxHmi : Real := 0.0; + OutMin : Real := 0.0; + OutMax : Real := 100.0; + Spare52 : Real := 0.0; + FfOut : Real := 0.0; + Sp : Real := 0.0; + Out : Real := 0.0; + Cycle_Time : Real := 0.3; + I_ITLVAL : Real := 0.0; + Dead_Band : Real := 0.0; + END_STRUCT; + + RMM303 : STRUCT + ConfigPID : Bool := FALSE; + Hold_Int : Bool := FALSE; + I_ITL : Bool := FALSE; + Alarm : Bool := FALSE; + Spare0_4 : Bool := FALSE; + Spare0_5 : Bool := FALSE; + Spare0_6 : Bool := FALSE; + Config : Bool := TRUE; + PID_FIX : Bool := FALSE; + Spare1_1 : Bool := FALSE; + High_Limit : Bool := FALSE; + Low_Limit : Bool := TRUE; + ManualControl : "Struct"; + Bp : Real := 2500.0; + Ti : Real := 0.8; + Td : Real := 0.0; + Ff : Real := 0.009; + KP : Real := 0.04; + Pv : Real := 0.0; + OutMan : Real := 0.0; + Lsp : Real := 0.0; + OutMaxHmi : Real := 0.0; + OutMin : Real := 0.0; + OutMax : Real := 100.0; + Spare52 : Real := 0.0; + FfOut : Real := 0.0; + Sp : Real := 0.0; + Out : Real := 0.0; + Cycle_Time : Real := 0.3; + I_ITLVAL : Real := 0.0; + Dead_Band : Real := 0.0; + END_STRUCT; + + RMP304 : STRUCT + ConfigPID : Bool := FALSE; + Hold_Int : Bool := FALSE; + I_ITL : Bool := FALSE; + Alarm : Bool := FALSE; + Spare0_4 : Bool := FALSE; + Spare0_5 : Bool := FALSE; + Spare0_6 : Bool := FALSE; + Config : Bool := FALSE; + PID_FIX : Bool := FALSE; + Spare1_1 : Bool := FALSE; + High_Limit : Bool := FALSE; + Low_Limit : Bool := FALSE; + ManualControl : "Struct"; + Bp : Real := 0.0; + Ti : Real := 0.0; + Td : Real := 0.0; + Ff : Real := 0.0; + KP : Real := 0.0; + Pv : Real := 0.0; + OutMan : Real := 0.0; + Lsp : Real := 0.0; + OutMaxHmi : Real := 0.0; + OutMin : Real := 0.0; + OutMax : Real := 100.0; + Spare52 : Real := 0.0; + FfOut : Real := 0.0; + Sp : Real := 0.0; + Out : Real := 0.0; + Cycle_Time : Real := 0.0; + I_ITLVAL : Real := 0.0; + Dead_Band : Real := 0.0; + END_STRUCT; + + RMM304 : STRUCT + ConfigPID : Bool := FALSE; + Hold_Int : Bool := FALSE; + I_ITL : Bool := TRUE; + Alarm : Bool := FALSE; + Spare0_4 : Bool := FALSE; + Spare0_5 : Bool := FALSE; + Spare0_6 : Bool := FALSE; + Config : Bool := FALSE; + PID_FIX : Bool := FALSE; + Spare1_1 : Bool := FALSE; + High_Limit : Bool := FALSE; + Low_Limit : Bool := FALSE; + ManualControl : "Struct"; + Bp : Real := 0.0; + Ti : Real := 0.0; + Td : Real := 0.0; + Ff : Real := 0.0; + KP : Real := 0.0; + Pv : Real := 0.0; + OutMan : Real := 0.0; + Lsp : Real := 0.0; + OutMaxHmi : Real := 0.0; + OutMin : Real := 0.0; + OutMax : Real := 100.0; + Spare52 : Real := 0.0; + FfOut : Real := 0.0; + Sp : Real := 0.0; + Out : Real := 0.0; + Cycle_Time : Real := 0.3; + I_ITLVAL : Real := 0.0; + Dead_Band : Real := 0.0; + END_STRUCT; + + RVM301 : STRUCT + ConfigPID : Bool := FALSE; + Hold_Int : Bool := FALSE; + I_ITL : Bool := FALSE; + Alarm : Bool := FALSE; + Spare0_4 : Bool := FALSE; + Spare0_5 : Bool := FALSE; + Spare0_6 : Bool := FALSE; + Config : Bool := TRUE; + PID_FIX : Bool := FALSE; + Spare1_1 : Bool := FALSE; + High_Limit : Bool := FALSE; + Low_Limit : Bool := TRUE; + ManualControl : "Struct"; + Bp : Real := 0.0; + Ti : Real := 0.0; + Td : Real := 0.0; + Ff : Real := 0.0; + KP : Real := 300.0; + Pv : Real := 0.08364077; + OutMan : Real := 0.0; + Lsp : Real := 0.0; + OutMaxHmi : Real := 0.0; + OutMin : Real := 0.0; + OutMax : Real := 100.0; + Spare52 : Real := 0.0; + FfOut : Real := 0.0; + Sp : Real := 0.0; + Out : Real := 0.0; + Cycle_Time : Real := 0.3; + I_ITLVAL : Real := 0.0; + Dead_Band : Real := 0.09967054; + END_STRUCT; + + RVN302 : STRUCT + ConfigPID : Bool := FALSE; + Hold_Int : Bool := FALSE; + I_ITL : Bool := TRUE; + Alarm : Bool := FALSE; + Spare0_4 : Bool := FALSE; + Spare0_5 : Bool := FALSE; + Spare0_6 : Bool := FALSE; + Config : Bool := FALSE; + PID_FIX : Bool := FALSE; + Spare1_1 : Bool := FALSE; + High_Limit : Bool := FALSE; + Low_Limit : Bool := FALSE; + ManualControl : "Struct"; + Bp : Real := 0.0; + Ti : Real := 0.0; + Td : Real := 0.0; + Ff : Real := 0.0; + KP : Real := 0.0; + Pv : Real := 0.0; + OutMan : Real := 0.0; + Lsp : Real := 0.0; + OutMaxHmi : Real := 0.0; + OutMin : Real := 0.0; + OutMax : Real := 100.0; + Spare52 : Real := 0.0; + FfOut : Real := 0.0; + Sp : Real := 0.0; + Out : Real := 0.0; + Cycle_Time : Real := 0.3; + I_ITLVAL : Real := 0.0; + Dead_Band : Real := 0.0; + END_STRUCT; + + RVP303 : STRUCT + ConfigPID : Bool := FALSE; + Hold_Int : Bool := FALSE; + I_ITL : Bool := FALSE; + Alarm : Bool := FALSE; + Spare0_4 : Bool := FALSE; + Spare0_5 : Bool := FALSE; + Spare0_6 : Bool := FALSE; + Config : Bool := TRUE; + PID_FIX : Bool := FALSE; + Spare1_1 : Bool := FALSE; + High_Limit : Bool := FALSE; + Low_Limit : Bool := FALSE; + ManualControl : "Struct"; + Bp : Real := 80.0; + Ti : Real := 15.0; + Td : Real := 1.0; + Ff : Real := 0.001; + KP : Real := 1.25; + Pv : Real := 0.06148726; + OutMan : Real := 0.0; + Lsp : Real := 25.0; + OutMaxHmi : Real := 0.0; + OutMin : Real := 0.0; + OutMax : Real := 100.0; + Spare52 : Real := 0.0; + FfOut : Real := 0.0; + Sp : Real := 25.0; + Out : Real := 0.0; + Cycle_Time : Real := 0.3; + I_ITLVAL : Real := 0.0; + Dead_Band : Real := 0.0; + END_STRUCT; + + RVN304 : STRUCT + ConfigPID : Bool := TRUE; + Hold_Int : Bool := FALSE; + I_ITL : Bool := FALSE; + Alarm : Bool := FALSE; + Spare0_4 : Bool := FALSE; + Spare0_5 : Bool := FALSE; + Spare0_6 : Bool := FALSE; + Config : Bool := TRUE; + PID_FIX : Bool := FALSE; + Spare1_1 : Bool := FALSE; + High_Limit : Bool := FALSE; + Low_Limit : Bool := FALSE; + ManualControl : "Struct"; + Bp : Real := 0.0; + Ti : Real := 0.0; + Td : Real := 0.0; + Ff : Real := 0.0; + KP : Real := 0.0; + Pv : Real := 0.0; + OutMan : Real := -0.4580946; + Lsp : Real := 0.0; + OutMaxHmi : Real := 0.0; + OutMin : Real := 0.0; + OutMax : Real := 100.0; + Spare52 : Real := 0.0; + FfOut : Real := 0.0; + Sp : Real := 0.0; + Out : Real := -0.4580946; + Cycle_Time : Real := 0.0; + I_ITLVAL : Real := 0.0; + Dead_Band : Real := 0.0; + END_STRUCT; + + RVP305 : STRUCT + ConfigPID : Bool := FALSE; + Hold_Int : Bool := FALSE; + I_ITL : Bool := FALSE; + Alarm : Bool := FALSE; + Spare0_4 : Bool := FALSE; + Spare0_5 : Bool := FALSE; + Spare0_6 : Bool := FALSE; + Config : Bool := FALSE; + PID_FIX : Bool := FALSE; + Spare1_1 : Bool := FALSE; + High_Limit : Bool := FALSE; + Low_Limit : Bool := FALSE; + ManualControl : "Struct"; + Bp : Real := 0.0; + Ti : Real := 0.0; + Td : Real := 0.0; + Ff : Real := 0.0; + KP : Real := 0.0; + Pv : Real := 0.0; + OutMan : Real := 0.0; + Lsp : Real := 0.0; + OutMaxHmi : Real := 0.0; + OutMin : Real := 0.0; + OutMax : Real := 100.0; + Spare52 : Real := 0.0; + FfOut : Real := 0.0; + Sp : Real := 0.0; + Out : Real := 0.0; + Cycle_Time : Real := 0.0; + I_ITLVAL : Real := 0.0; + Dead_Band : Real := 0.0; + END_STRUCT; + + PCM306 : STRUCT + ConfigPID : Bool := TRUE; + Hold_Int : Bool := FALSE; + I_ITL : Bool := FALSE; + Alarm : Bool := FALSE; + Spare0_4 : Bool := FALSE; + Spare0_5 : Bool := FALSE; + Spare0_6 : Bool := FALSE; + Config : Bool := TRUE; + PID_FIX : Bool := FALSE; + Spare1_1 : Bool := FALSE; + High_Limit : Bool := FALSE; + Low_Limit : Bool := FALSE; + ManualControl : "Struct"; + Bp : Real := 0.0; + Ti : Real := 0.0; + Td : Real := 0.0; + Ff : Real := 0.0; + KP : Real := 0.0; + Pv : Real := 0.0; + OutMan : Real := 0.0; + Lsp : Real := 0.0; + OutMaxHmi : Real := 0.0; + OutMin : Real := 0.0; + OutMax : Real := 16.0; + Spare52 : Real := 0.0; + FfOut : Real := 0.0; + Sp : Real := 0.0; + Out : Real := 0.0; + Cycle_Time : Real := 0.0; + I_ITLVAL : Real := 0.0; + Dead_Band : Real := 0.0; + END_STRUCT; + + RVN302_TM301 : STRUCT + ConfigPID : Bool := FALSE; + Hold_Int : Bool := FALSE; + I_ITL : Bool := FALSE; + Alarm : Bool := FALSE; + Spare0_4 : Bool := FALSE; + Spare0_5 : Bool := FALSE; + Spare0_6 : Bool := FALSE; + Config : Bool := FALSE; + PID_FIX : Bool := FALSE; + Spare1_1 : Bool := FALSE; + High_Limit : Bool := FALSE; + Low_Limit : Bool := FALSE; + ManualControl : "Struct"; + Bp : Real := 0.0; + Ti : Real := 0.0; + Td : Real := 0.0; + Ff : Real := 0.0; + KP : Real := 0.0; + Pv : Real := 0.0; + OutMan : Real := 0.0; + Lsp : Real := 0.0; + OutMaxHmi : Real := 0.0; + OutMin : Real := 0.0; + OutMax : Real := 100.0; + Spare52 : Real := 0.0; + FfOut : Real := 0.0; + Sp : Real := 0.0; + Out : Real := 0.0; + Cycle_Time : Real := 0.0; + I_ITLVAL : Real := 0.0; + Dead_Band : Real := 0.0; + END_STRUCT; + + RVS318 : STRUCT + ConfigPID : Bool := FALSE; + Hold_Int : Bool := FALSE; + I_ITL : Bool := FALSE; + Alarm : Bool := FALSE; + Spare0_4 : Bool := FALSE; + Spare0_5 : Bool := FALSE; + Spare0_6 : Bool := FALSE; + Config : Bool := FALSE; + PID_FIX : Bool := FALSE; + Spare1_1 : Bool := FALSE; + High_Limit : Bool := FALSE; + Low_Limit : Bool := FALSE; + ManualControl : "Struct"; + Bp : Real := 0.0; + Ti : Real := 0.0; + Td : Real := 0.0; + Ff : Real := 0.0; + KP : Real := 0.0; + Pv : Real := 27.81033; + OutMan : Real := 0.0; + Lsp : Real := 0.0; + OutMaxHmi : Real := 0.0; + OutMin : Real := 0.0; + OutMax : Real := 100.0; + Spare52 : Real := 0.0; + FfOut : Real := 0.0; + Sp : Real := 0.0; + Out : Real := 0.0; + Cycle_Time : Real := 0.3; + I_ITLVAL : Real := 0.0; + Dead_Band : Real := 0.0; + END_STRUCT; + + RVM319_PRD : STRUCT + ConfigPID : Bool := TRUE; + Hold_Int : Bool := FALSE; + I_ITL : Bool := FALSE; + Alarm : Bool := FALSE; + Spare0_4 : Bool := FALSE; + Spare0_5 : Bool := FALSE; + Spare0_6 : Bool := FALSE; + Config : Bool := TRUE; + PID_FIX : Bool := FALSE; + Spare1_1 : Bool := FALSE; + High_Limit : Bool := FALSE; + Low_Limit : Bool := FALSE; + ManualControl : "Struct"; + Bp : Real := 10.0; + Ti : Real := 2.0; + Td : Real := 1.0; + Ff : Real := 0.0; + KP : Real := 10.0; + Pv : Real := 19.29254; + OutMan : Real := 100.0; + Lsp : Real := 0.0; + OutMaxHmi : Real := 0.0; + OutMin : Real := 0.0; + OutMax : Real := 100.0; + Spare52 : Real := 0.0; + FfOut : Real := 100.0; + Sp : Real := 0.0; + Out : Real := 100.0; + Cycle_Time : Real := 0.3; + I_ITLVAL : Real := 0.0; + Dead_Band : Real := 0.0; + END_STRUCT; + + RVM319_H2O : STRUCT + ConfigPID : Bool := FALSE; + Hold_Int : Bool := FALSE; + I_ITL : Bool := TRUE; + Alarm : Bool := FALSE; + Spare0_4 : Bool := FALSE; + Spare0_5 : Bool := FALSE; + Spare0_6 : Bool := FALSE; + Config : Bool := TRUE; + PID_FIX : Bool := FALSE; + Spare1_1 : Bool := FALSE; + High_Limit : Bool := FALSE; + Low_Limit : Bool := FALSE; + ManualControl : "Struct"; + Bp : Real := 10.0; + Ti : Real := 2.0; + Td : Real := 1.0; + Ff : Real := 0.0; + KP : Real := 10.0; + Pv : Real := 8.452691; + OutMan : Real := 0.0; + Lsp : Real := 16.0; + OutMaxHmi : Real := 0.0; + OutMin : Real := 0.0; + OutMax : Real := 100.0; + Spare52 : Real := 0.0; + FfOut : Real := 22.08244; + Sp : Real := 16.0; + Out : Real := 100.0; + Cycle_Time : Real := 0.3; + I_ITLVAL : Real := 0.0; + Dead_Band : Real := 0.0; + END_STRUCT; + + RVN305 : STRUCT + ConfigPID : Bool := TRUE; + Hold_Int : Bool := FALSE; + I_ITL : Bool := FALSE; + Alarm : Bool := FALSE; + Spare0_4 : Bool := FALSE; + Spare0_5 : Bool := FALSE; + Spare0_6 : Bool := FALSE; + Config : Bool := TRUE; + PID_FIX : Bool := FALSE; + Spare1_1 : Bool := FALSE; + High_Limit : Bool := FALSE; + Low_Limit : Bool := FALSE; + ManualControl : "Struct"; + Bp : Real := 0.0; + Ti : Real := 0.0; + Td : Real := 0.0; + Ff : Real := 0.0; + KP : Real := 0.0; + Pv : Real := 0.0; + OutMan : Real := 0.0; + Lsp : Real := 0.0; + OutMaxHmi : Real := 0.0; + OutMin : Real := 0.0; + OutMax : Real := 100.0; + Spare52 : Real := 0.0; + FfOut : Real := 0.0; + Sp : Real := 0.0; + Out : Real := 0.0; + Cycle_Time : Real := 0.3; + I_ITLVAL : Real := 0.0; + Dead_Band : Real := 0.0; + END_STRUCT; + + PPM303 : STRUCT + ConfigPID : Bool := FALSE; + Hold_Int : Bool := FALSE; + I_ITL : Bool := FALSE; + Alarm : Bool := FALSE; + Spare0_4 : Bool := FALSE; + Spare0_5 : Bool := FALSE; + Spare0_6 : Bool := FALSE; + Config : Bool := TRUE; + PID_FIX : Bool := TRUE; + Spare1_1 : Bool := FALSE; + High_Limit : Bool := FALSE; + Low_Limit : Bool := FALSE; + ManualControl : "Struct"; + Bp : Real := 50.0; + Ti : Real := 3.0; + Td : Real := 5.0; + Ff : Real := 0.0; + KP : Real := 2.0; + Pv : Real := -948.5061; + OutMan : Real := 30.0; + Lsp : Real := 60.0; + OutMaxHmi : Real := 100.0; + OutMin : Real := 1.0; + OutMax : Real := 50.0; + Spare52 : Real := 0.0; + FfOut : Real := 13.69562; + Sp : Real := 700.0; + Out : Real := 0.0; + Cycle_Time : Real := 0.3; + I_ITLVAL : Real := 0.0; + Dead_Band : Real := 0.0; + END_STRUCT; + + PPN301 : STRUCT + ConfigPID : Bool := FALSE; + Hold_Int : Bool := FALSE; + I_ITL : Bool := FALSE; + Alarm : Bool := FALSE; + Spare0_4 : Bool := FALSE; + Spare0_5 : Bool := FALSE; + Spare0_6 : Bool := FALSE; + Config : Bool := FALSE; + PID_FIX : Bool := FALSE; + Spare1_1 : Bool := FALSE; + High_Limit : Bool := FALSE; + Low_Limit : Bool := FALSE; + ManualControl : "Struct"; + Bp : Real := 0.0; + Ti : Real := 0.0; + Td : Real := 0.0; + Ff : Real := 0.0; + KP : Real := 0.0; + Pv : Real := 0.0; + OutMan : Real := 0.0; + Lsp : Real := 0.0; + OutMaxHmi : Real := 0.0; + OutMin : Real := 0.0; + OutMax : Real := 100.0; + Spare52 : Real := 0.0; + FfOut : Real := 0.0; + Sp : Real := 0.0; + Out : Real := 0.0; + Cycle_Time : Real := 0.0; + I_ITLVAL : Real := 0.0; + Dead_Band : Real := 0.0; + END_STRUCT; + + PPP302 : STRUCT + ConfigPID : Bool := FALSE; + Hold_Int : Bool := FALSE; + I_ITL : Bool := FALSE; + Alarm : Bool := FALSE; + Spare0_4 : Bool := FALSE; + Spare0_5 : Bool := FALSE; + Spare0_6 : Bool := FALSE; + Config : Bool := FALSE; + PID_FIX : Bool := FALSE; + Spare1_1 : Bool := FALSE; + High_Limit : Bool := FALSE; + Low_Limit : Bool := FALSE; + ManualControl : "Struct"; + Bp : Real := 0.0; + Ti : Real := 0.0; + Td : Real := 0.0; + Ff : Real := 0.0; + KP : Real := 0.0; + Pv : Real := 0.0; + OutMan : Real := 0.0; + Lsp : Real := 0.0; + OutMaxHmi : Real := 0.0; + OutMin : Real := 0.0; + OutMax : Real := 100.0; + Spare52 : Real := 0.0; + FfOut : Real := 0.0; + Sp : Real := 0.0; + Out : Real := 0.0; + Cycle_Time : Real := 0.0; + I_ITLVAL : Real := 0.0; + Dead_Band : Real := 0.0; + END_STRUCT; + + PPM307 : STRUCT + ConfigPID : Bool := FALSE; + Hold_Int : Bool := FALSE; + I_ITL : Bool := FALSE; + Alarm : Bool := FALSE; + Spare0_4 : Bool := FALSE; + Spare0_5 : Bool := FALSE; + Spare0_6 : Bool := FALSE; + Config : Bool := FALSE; + PID_FIX : Bool := FALSE; + Spare1_1 : Bool := FALSE; + High_Limit : Bool := FALSE; + Low_Limit : Bool := FALSE; + ManualControl : "Struct"; + Bp : Real := 0.0; + Ti : Real := 0.0; + Td : Real := 0.0; + Ff : Real := 0.0; + KP : Real := 0.0; + Pv : Real := 0.0; + OutMan : Real := 0.0; + Lsp : Real := 0.0; + OutMaxHmi : Real := 0.0; + OutMin : Real := 0.0; + OutMax : Real := 50.0; + Spare52 : Real := 0.0; + FfOut : Real := 0.0; + Sp : Real := 0.0; + Out : Real := 0.0; + Cycle_Time : Real := 0.0; + I_ITLVAL : Real := 0.0; + Dead_Band : Real := 0.0; + END_STRUCT; + + PPM305 : STRUCT + ConfigPID : Bool := TRUE; + Hold_Int : Bool := FALSE; + I_ITL : Bool := FALSE; + Alarm : Bool := FALSE; + Spare0_4 : Bool := FALSE; + Spare0_5 : Bool := FALSE; + Spare0_6 : Bool := FALSE; + Config : Bool := TRUE; + PID_FIX : Bool := TRUE; + Spare1_1 : Bool := FALSE; + High_Limit : Bool := FALSE; + Low_Limit : Bool := FALSE; + ManualControl : "Struct"; + Bp : Real := 0.0; + Ti : Real := 0.0; + Td : Real := 0.0; + Ff : Real := 0.0; + KP : Real := 0.0; + Pv : Real := 0.0; + OutMan : Real := 0.0; + Lsp : Real := 0.0; + OutMaxHmi : Real := 100.0; + OutMin : Real := 0.0; + OutMax : Real := 50.0; + Spare52 : Real := 0.0; + FfOut : Real := 0.0; + Sp : Real := 0.0; + Out : Real := 0.0; + Cycle_Time : Real := 0.3; + I_ITLVAL : Real := 0.0; + Dead_Band : Real := 0.0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Recipe_Edit.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Recipe_Edit.md new file mode 100644 index 0000000..4896486 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Recipe_Edit.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Number: 1008 + +DATA_BLOCK "HMI_Recipe_Edit" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := TRUE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := TRUE; + _Deareation_Co2 : Bool := TRUE; + _Pasteur : Bool; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 3; + _ProdMeterRecipeNum : Int := 0; + _SyrupBrix : Real := 51.37; + _SyrupDensity : Real := 1.237; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 9.432194; + _ProductionRate : Real := 350.0; + _Ratio : Real := 5.5; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 4.15; + _CO2Fact : Real := 1.05; + _ProdTankPress : Real := 4.5; + _SP_ProdTemp : Real := 2.0; + _PrdTankMinLevel : Real := 20.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 0.6; + _FillingValveHead_SP : Real := 700.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real := 1.05; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 1; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.5; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 30.0; + _ProdPump2_Hz : Real := 30.0; + _Prod_Temp_Heating_Cooling : Int; + END_STRUCT; + + AUX : Byte; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Recipe_Name.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Recipe_Name.md new file mode 100644 index 0000000..1228860 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Recipe_Name.md @@ -0,0 +1,67 @@ +```pascal +// Block Type: GlobalDB +// Block Number: 1009 + +DATA_BLOCK "HMI_Recipe_Name" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Recipe00_Null : String[32]; + Recipe01_Name : String[32]; + Recipe02_Name : String[32]; + Recipe03_Name : String[32]; + Recipe04_Name : String[32]; + Recipe05_Name : String[32]; + Recipe06_Name : String[32]; + Recipe07_Name : String[32]; + Recipe08_Name : String[32]; + Recipe09_Name : String[32]; + Recipe10_Name : String[32]; + Recipe11_Name : String[32]; + Recipe12_Name : String[32]; + Recipe13_Name : String[32]; + Recipe14_Name : String[32]; + Recipe15_Name : String[32]; + Recipe16_Name : String[32]; + Recipe17_Name : String[32]; + Recipe18_Name : String[32]; + Recipe19_Name : String[32]; + Recipe20_Name : String[32]; + Recipe21_Name : String[32]; + Recipe22_Name : String[32]; + Recipe23_Name : String[32]; + Recipe24_Name : String[32]; + Recipe25_Name : String[32]; + Recipe26_Name : String[32]; + Recipe27_Name : String[32]; + Recipe28_Name : String[32]; + Recipe29_Name : String[32]; + Recipe30_Name : String[32]; + Recipe31_Name : String[32]; + Recipe32_Name : String[32]; + Recipe33_Name : String[32]; + Recipe34_Name : String[32]; + Recipe35_Name : String[32]; + Recipe36_Name : String[32]; + Recipe37_Name : String[32]; + Recipe38_Name : String[32]; + Recipe39_Name : String[32]; + Recipe40_Name : String[32]; + Recipe41_Name : String[32]; + Recipe42_Name : String[32]; + Recipe43_Name : String[32]; + Recipe44_Name : String[32]; + Recipe45_Name : String[32]; + Recipe46_Name : String[32]; + Recipe47_Name : String[32]; + Recipe48_Name : String[32]; + Recipe49_Name : String[32]; + Recipe50_Name : String[32]; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Refrige_IO_Showing.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Refrige_IO_Showing.md new file mode 100644 index 0000000..9078119 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Refrige_IO_Showing.md @@ -0,0 +1,19 @@ +```pascal +// Block Type: GlobalDB +// Block Number: 1007 + +DATA_BLOCK "HMI_Refrige_IO_Showing" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Filler_IO_Signal : "Struct"; + Syrup_Room_IO_Signal : "Struct"; + Cip_Room_IO_Signal : "Struct"; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Service.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Service.md new file mode 100644 index 0000000..fba607b --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Service.md @@ -0,0 +1,23 @@ +```pascal +// Block Type: GlobalDB +// Block Number: 1004 + +DATA_BLOCK "HMI_Service" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Service_Status : "Struct"; + TotalEmptyContainer : Real := 2100.0; + Workshop_Test : "Struct"; + Revision_Master_HMI : Real := 45.0; + Revision_Master_PLC : Real := 45.0; + PID_Monitoring : "Struct"; + CO2_Counter : Real := 0.0; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Variables_Cmd.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Variables_Cmd.md new file mode 100644 index 0000000..02b41f3 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Variables_Cmd.md @@ -0,0 +1,22 @@ +```pascal +// Block Type: GlobalDB +// Block Number: 1005 + +DATA_BLOCK "HMI_Variables_Cmd" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Commands_From_HMI : "Struct"; + System_Run_Out : "Struct"; + GLOBAL_CMD : "Struct"; + Recipe_Updates : "Struct"; + Recipe : "Struct"; + RecipeCIP : "Struct"; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Variables_Status.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Variables_Status.md new file mode 100644 index 0000000..1fa5e9f --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/HMI_Variables_Status.md @@ -0,0 +1,22 @@ +```pascal +// Block Type: GlobalDB +// Block Number: 1006 + +DATA_BLOCK "HMI_Variables_Status" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Procedures : "Struct"; + Meters : "Struct"; + System_Run_Out : "Struct"; + System : "Struct"; + Profibus : "Struct"; + Analog_Values : "Struct"; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ISOonTCP_or_TCP_Protocol.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ISOonTCP_or_TCP_Protocol.md new file mode 100644 index 0000000..ca96dcd --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ISOonTCP_or_TCP_Protocol.md @@ -0,0 +1,221 @@ +```pascal +// Block Type: FB +// Block Number: 1 +// Original Network Languages: +// Block Comment: +// v1.0 by UTRC Sidel 2008/05/28 (previous name: ISO-on-TCP Protocol) +// +// v2.0 by Sidel 2009/07/17: +// - TCP protocol management adding +// - PRTCL_TYPE input adding +// - CP_PN input suppression (associated communication selection error too) +// - Remote TSAP management debug (remote TSAP length; remote TSAP name) +// - Comments adding +// +// V2.1 by Sidel 2009/10/30: +// - Integration of IMCPU-PN, 414-3PN/DP and 416-3PN/DP capability +// +// V2.2 by Sidel 2010/03/24: +// - input comments modification +// - #UNSPECIF_PARTNER network cleanup +// +// V2.3 by Sidel 2010/09/22: +// - The FB65 and UDT65 blocks from the Siemens librairies were updated. The function was regenerated to avoid timestamp alarm. +// +// V2.4 by Sidel 2011/08/23: +// - Input "remote_PN-slot" removal. +// - Addition of Inputs LOCAL_CPU_RACK, LOCAL_CPU_SLOT, REMOTE_CPU_RACK, REMOTE_CPU_SLOT +// +// TIA Portal Migartion +// +// V2.5 by Sidel 2020/09/28: +// -New TCP or UDP Connection parameter TCON_IP_V4 +// -New ISO on TCP Connection parameter TCON_IP_RFC + +FUNCTION_BLOCK "ISOonTCP_or_TCP_Protocol" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + INIT : Bool; + REQ : Bool; + TCP_PROTOCOL : Bool := TRUE; + ACTIVE : Bool; + LOCAL_DEVICE_ID : "HW_ANY"; + ID : "CONN_OUC"; + LOCAL_PORT : Int; + REMOTE_PORT : Int; + REMOTE_IP_1 : Int; + REMOTE_IP_2 : Int; + REMOTE_IP_3 : Int; + REMOTE_IP_4 : Int; + ISO_on_TCP_PN_PN : Bool; + ISO_on_TCP_LOCAL_CPU_RACK : Int; + ISO_on_TCP_LOCAL_CPU_SLOT : Int; + ISO_on_TCP_REMOTE_CPU_RACK : Int; + ISO_on_TCP_REMOTE_CPU_SLOT : Int; + TSEND_LEN : Int; + TRCV_ENABLE : Bool; + TRCV_LEN : Int; + TSEND_DATA : "Any"; + TRCV_DATA : "Any"; + TIME_ACT_SP : Time := T#100MS; + TIME_ALARM_SP : Time := T#500MS; +END_VAR + +VAR_OUTPUT + DONE : Bool; + BUSY : Bool; + ERROR : Bool; +END_VAR + +VAR_INOUT + CONNECT : Variant; +END_VAR + +VAR_STAT + REQUEST_CONFIG : Bool; + REQ_MEM : Bool; + REQ_MEM_PULSE : Bool; + TCON_REQ : Bool; + TCON_DONE : Bool; + TCON_DONE_MEM : Bool; + TCON_BUSY : Bool; + TCON_ERROR : Bool; + TCON_STATUS : Word; + TCON_LAST_ERROR : Word; + TSEND_REQ : Bool; + TSEND_DONE : Bool; + TSEND_DONE_MEM : Bool; + TSEND_BUSY : Bool; + TSEND_ERROR : Bool; + TSEND_STATUS : Word; + TSEND_LAST_ERROR : Word; + TSEND_COUNTER : Int; + TSEND_COUNTER_OLD : Int; + TRCV_REQ : Bool; + TRCV_NDR : Bool; + TRCV_NDR_MEM : Bool; + TRCV_BUSY : Bool; + TRCV_ERROR : Bool; + TRCVD_LEN : Int; + TRCV_STATUS : Word; + TRCV_LAST_ERROR : Word; + TRCV_COUNTER : Int; + TRCV_COUNTER_OLD : Int; + TDISCON_REQ_MEM : Bool; + TDISCON_REQ : Bool; + TDISCON_DONE : Bool; + TDISCON_DONE_MEM : Bool; + TDISCON_BUSY : Bool; + TDISCON_ERROR : Bool; + TDISCON_B_ERR : Bool; + TDISCON_STATUS : Word; + TDISCON_LAST_ERROR : Word; + TSEND_COM_ERR : Bool; + TRCV_COM_ERR : Bool; + DONE_COM_ERR : Bool; + BUSY_COM_ERR : Bool; + COM_ALARM_PRESENT : Bool; + COM_ALARM_MEM : Bool; + FB_ALARM_PRESENT : Bool; + FB_ALARM_MEM : Bool; + ALARM_MEM_PULSE : Bool; + DELAY_ALARM_MEM : Bool; + UNSPECIF_PARTNER : Bool; + TCON_COLL_TCP : STRUCT + InterfaceId : "HW_ANY"; + ID : "CONN_OUC"; + ConnectionType : Byte; + ActiveEstablished : Bool; + RemoteAddress : STRUCT + ADDR : Array[1..4] of Byte; + END_STRUCT; + + RemotePort : UInt; + LocalPort : UInt; + END_STRUCT; + + TCON_COLL_ISO : STRUCT + InterfaceId : "HW_ANY"; + ID : "CONN_OUC"; + ConnectionType : Byte; + ActiveEstablished : Bool; + RemoteAddress : STRUCT + ADDR : Array[1..4] of Byte; + END_STRUCT; + + RemoteTSelector : STRUCT + TSelLength : UInt; + TSel : Array[1..32] of Byte; + END_STRUCT; + + LocalTSelector : STRUCT + TSelLength : UInt; + TSel : Array[1..32] of Byte; + END_STRUCT; + + END_STRUCT; + + TIME_TSEND_REQ : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + TIME_TDISCON_REQ : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + TSEND_ALARM_COM : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + TRCV_ALARM_COM : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + DONE_ALARM_COM : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + BUSY_ALARM_COM : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + TIME_ALARM : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + TCON : "TCON:v4.0"; + TSEND : "TSEND:v4.0"; + TRCV : "TRCV:v4.0"; + TDISCON : "TDISCON:v2.1"; +END_VAR + +BEGIN + + // No executable logic generated by script. + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ISOonTCP_or_TCP_Protocol_DB.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ISOonTCP_or_TCP_Protocol_DB.md new file mode 100644 index 0000000..ee5fb8e --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ISOonTCP_or_TCP_Protocol_DB.md @@ -0,0 +1,152 @@ +```pascal +// Block Type: InstanceDB +// Block Number: 3524 + +DATA_BLOCK "ISOonTCP_or_TCP_Protocol_DB" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + REQUEST_CONFIG : Bool := FALSE; + REQ_MEM : Bool := FALSE; + REQ_MEM_PULSE : Bool := FALSE; + TCON_REQ : Bool := FALSE; + TCON_DONE : Bool := FALSE; + TCON_DONE_MEM : Bool := FALSE; + TCON_BUSY : Bool := FALSE; + TCON_ERROR : Bool := FALSE; + TCON_STATUS : Word; + TCON_LAST_ERROR : Word; + TSEND_REQ : Bool := FALSE; + TSEND_DONE : Bool := FALSE; + TSEND_DONE_MEM : Bool := FALSE; + TSEND_BUSY : Bool := FALSE; + TSEND_ERROR : Bool := FALSE; + TSEND_STATUS : Word; + TSEND_LAST_ERROR : Word; + TSEND_COUNTER : Int := 0; + TSEND_COUNTER_OLD : Int := 0; + TRCV_REQ : Bool := FALSE; + TRCV_NDR : Bool := FALSE; + TRCV_NDR_MEM : Bool := FALSE; + TRCV_BUSY : Bool := FALSE; + TRCV_ERROR : Bool := FALSE; + TRCVD_LEN : Int := 0; + TRCV_STATUS : Word; + TRCV_LAST_ERROR : Word; + TRCV_COUNTER : Int := 0; + TRCV_COUNTER_OLD : Int := 0; + TDISCON_REQ_MEM : Bool := TRUE; + TDISCON_REQ : Bool := FALSE; + TDISCON_DONE : Bool := FALSE; + TDISCON_DONE_MEM : Bool := FALSE; + TDISCON_BUSY : Bool := FALSE; + TDISCON_ERROR : Bool := FALSE; + TDISCON_B_ERR : Bool := FALSE; + TDISCON_STATUS : Word; + TDISCON_LAST_ERROR : Word; + TSEND_COM_ERR : Bool := FALSE; + TRCV_COM_ERR : Bool := FALSE; + DONE_COM_ERR : Bool := TRUE; + BUSY_COM_ERR : Bool := FALSE; + COM_ALARM_PRESENT : Bool := TRUE; + COM_ALARM_MEM : Bool := TRUE; + FB_ALARM_PRESENT : Bool := FALSE; + FB_ALARM_MEM : Bool := TRUE; + ALARM_MEM_PULSE : Bool := TRUE; + DELAY_ALARM_MEM : Bool := TRUE; + UNSPECIF_PARTNER : Bool := FALSE; + TCON_COLL_TCP : STRUCT + InterfaceId : "HW_ANY"; + ID : "CONN_OUC"; + ConnectionType : Byte; + ActiveEstablished : Bool; + RemoteAddress : STRUCT + ADDR : Array[1..4] of Byte; + END_STRUCT; + + RemotePort : UInt; + LocalPort : UInt; + END_STRUCT; + + TCON_COLL_ISO : STRUCT + InterfaceId : "HW_ANY"; + ID : "CONN_OUC"; + ConnectionType : Byte; + ActiveEstablished : Bool; + RemoteAddress : STRUCT + ADDR : Array[1..4] of Byte; + END_STRUCT; + + RemoteTSelector : STRUCT + TSelLength : UInt; + TSel : Array[1..32] of Byte; + END_STRUCT; + + LocalTSelector : STRUCT + TSelLength : UInt; + TSel : Array[1..32] of Byte; + END_STRUCT; + + END_STRUCT; + + TIME_TSEND_REQ : STRUCT + PT : Time := T#0MS; + ET : Time := T#0MS; + IN : Bool := FALSE; + Q : Bool := FALSE; + END_STRUCT; + + TIME_TDISCON_REQ : STRUCT + PT : Time; + ET : Time := T#1S_353MS; + IN : Bool := TRUE; + Q : Bool := FALSE; + END_STRUCT; + + TSEND_ALARM_COM : STRUCT + PT : Time := T#0MS; + ET : Time := T#0MS; + IN : Bool := FALSE; + Q : Bool := FALSE; + END_STRUCT; + + TRCV_ALARM_COM : STRUCT + PT : Time := T#0MS; + ET : Time := T#0MS; + IN : Bool := FALSE; + Q : Bool := FALSE; + END_STRUCT; + + DONE_ALARM_COM : STRUCT + PT : Time; + ET : Time; + IN : Bool := TRUE; + Q : Bool := TRUE; + END_STRUCT; + + BUSY_ALARM_COM : STRUCT + PT : Time := T#0MS; + ET : Time := T#0MS; + IN : Bool := FALSE; + Q : Bool := FALSE; + END_STRUCT; + + TIME_ALARM : STRUCT + PT : Time; + ET : Time; + IN : Bool := TRUE; + Q : Bool := TRUE; + END_STRUCT; + + TCON : "TCON:v4.0"; + TSEND : "TSEND:v4.0"; + TRCV : "TRCV:v4.0"; + TDISCON : "TDISCON:v2.1"; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_Communic_CIPRoom.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_Communic_CIPRoom.md new file mode 100644 index 0000000..4592218 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_Communic_CIPRoom.md @@ -0,0 +1,29 @@ +```pascal +// Block Type: FC +// Block Name (Original): ITC Communic CIPRoom +// Block Number: 3523 +// Original Network Languages: LAD + +FUNCTION "ITC_Communic_CIPRoom" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + #_16 : Bool; // Auto-generated temporary + #_2 : Bool; // Auto-generated temporary + #_200MS : Bool; // Auto-generated temporary + #_2S : Bool; // Auto-generated temporary + #DB900 : Bool; // Auto-generated temporary +END_VAR + +BEGIN + + // Network 1: CIP Comunication (Original Language: LAD) + + IF "E5_007161" AND "AUX FALSE" THEN + "ISOonTCP_or_TCP_Protocol_DB"(ACTIVE := TRUE, ID := W#16#2, INIT := "FirstScan", ISO_on_TCP_LOCAL_CPU_SLOT := 2, ISO_on_TCP_PN_PN := TRUE, ISO_on_TCP_REMOTE_CPU_SLOT := 2, LOCAL_PORT := 1, LOCAL_DEVICE_ID := 72, REMOTE_PORT := 2, REMOTE_IP_1 := 192, REMOTE_IP_2 := 168, REMOTE_IP_3 := 1, REMOTE_IP_4 := 32, REQ := FALSE, TCP_PROTOCOL := FALSE, TIME_ACT_SP := T#200MS, TIME_ALARM_SP := T#2S, TRCV_DATA := P#DB900.DBX230.0 BYTE 10, TRCV_ENABLE := TRUE, TRCV_LEN := 10, TSEND_DATA := P#DB900.DBX220.0 BYTE 10, TSEND_LEN := 10); + END_IF; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_Communic_CIP_DI.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_Communic_CIP_DI.md new file mode 100644 index 0000000..ac53520 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_Communic_CIP_DI.md @@ -0,0 +1,153 @@ +```pascal +// Block Type: InstanceDB +// Block Name (Original): ITC Communic CIP DI +// Block Number: 3523 + +DATA_BLOCK "ITC_Communic_CIP_DI" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + REQUEST_CONFIG : Bool := FALSE; + REQ_MEM : Bool := FALSE; + REQ_MEM_PULSE : Bool := FALSE; + TCON_REQ : Bool := FALSE; + TCON_DONE : Bool := FALSE; + TCON_DONE_MEM : Bool := FALSE; + TCON_BUSY : Bool := FALSE; + TCON_ERROR : Bool := FALSE; + TCON_STATUS : Word; + TCON_LAST_ERROR : Word; + TSEND_REQ : Bool := FALSE; + TSEND_DONE : Bool := FALSE; + TSEND_DONE_MEM : Bool := FALSE; + TSEND_BUSY : Bool := FALSE; + TSEND_ERROR : Bool := FALSE; + TSEND_STATUS : Word; + TSEND_LAST_ERROR : Word; + TSEND_COUNTER : Int := 0; + TSEND_COUNTER_OLD : Int := 0; + TRCV_REQ : Bool := FALSE; + TRCV_NDR : Bool := FALSE; + TRCV_NDR_MEM : Bool := FALSE; + TRCV_BUSY : Bool := FALSE; + TRCV_ERROR : Bool := FALSE; + TRCVD_LEN : Int := 0; + TRCV_STATUS : Word; + TRCV_LAST_ERROR : Word; + TRCV_COUNTER : Int := 0; + TRCV_COUNTER_OLD : Int := 0; + TDISCON_REQ_MEM : Bool := FALSE; + TDISCON_REQ : Bool := FALSE; + TDISCON_DONE : Bool := FALSE; + TDISCON_DONE_MEM : Bool := FALSE; + TDISCON_BUSY : Bool := FALSE; + TDISCON_ERROR : Bool := FALSE; + TDISCON_B_ERR : Bool := FALSE; + TDISCON_STATUS : Word; + TDISCON_LAST_ERROR : Word; + TSEND_COM_ERR : Bool := FALSE; + TRCV_COM_ERR : Bool := FALSE; + DONE_COM_ERR : Bool := FALSE; + BUSY_COM_ERR : Bool := FALSE; + COM_ALARM_PRESENT : Bool := FALSE; + COM_ALARM_MEM : Bool := FALSE; + FB_ALARM_PRESENT : Bool := FALSE; + FB_ALARM_MEM : Bool := FALSE; + ALARM_MEM_PULSE : Bool := FALSE; + DELAY_ALARM_MEM : Bool := FALSE; + UNSPECIF_PARTNER : Bool := FALSE; + TCON_COLL_TCP : STRUCT + InterfaceId : "HW_ANY"; + ID : "CONN_OUC"; + ConnectionType : Byte; + ActiveEstablished : Bool; + RemoteAddress : STRUCT + ADDR : Array[1..4] of Byte; + END_STRUCT; + + RemotePort : UInt; + LocalPort : UInt; + END_STRUCT; + + TCON_COLL_ISO : STRUCT + InterfaceId : "HW_ANY"; + ID : "CONN_OUC"; + ConnectionType : Byte; + ActiveEstablished : Bool; + RemoteAddress : STRUCT + ADDR : Array[1..4] of Byte; + END_STRUCT; + + RemoteTSelector : STRUCT + TSelLength : UInt; + TSel : Array[1..32] of Byte; + END_STRUCT; + + LocalTSelector : STRUCT + TSelLength : UInt; + TSel : Array[1..32] of Byte; + END_STRUCT; + + END_STRUCT; + + TIME_TSEND_REQ : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + TIME_TDISCON_REQ : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + TSEND_ALARM_COM : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + TRCV_ALARM_COM : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + DONE_ALARM_COM : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + BUSY_ALARM_COM : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + TIME_ALARM : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + TCON : "TCON:v4.0"; + TSEND : "TSEND:v4.0"; + TRCV : "TRCV:v4.0"; + TDISCON : "TDISCON:v2.1"; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_Communic_Filler.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_Communic_Filler.md new file mode 100644 index 0000000..49f3183 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_Communic_Filler.md @@ -0,0 +1,34 @@ +```pascal +// Block Type: FC +// Block Name (Original): ITC Communic Filler +// Block Number: 3512 +// Original Network Languages: LAD + +FUNCTION "ITC_Communic_Filler" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + #_200MS : Bool; // Auto-generated temporary + #_500MS : Bool; // Auto-generated temporary +END_VAR + +BEGIN + + // Network 1: (Original Language: LAD) + + IF Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1) THEN + "ITC Communic Filler DI"(ACTIVE := FALSE, ID := 1, INIT := "FirstScan", ISO_on_TCP_LOCAL_CPU_SLOT := 2, ISO_on_TCP_PN_PN := TRUE, ISO_on_TCP_REMOTE_CPU_SLOT := 2, LOCAL_PORT := 1, LOCAL_DEVICE_ID := 72, REMOTE_PORT := 2, REMOTE_IP_1 := 10, REMOTE_IP_2 := 1, REMOTE_IP_3 := 20, REMOTE_IP_4 := 11, REQ := FALSE, TCP_PROTOCOL := FALSE, TIME_ACT_SP := T#200MS, TIME_ALARM_SP := T#500MS, TRCV_DATA := "Interlocking_Variables"."FILLER_MIXER_RECEIVE", TRCV_ENABLE := TRUE, TRCV_LEN := 40, TSEND_DATA := "Interlocking_Variables"."MIXER_FILLER_SEND", TSEND_LEN := 40); + END_IF; + + // Network 2: Communication Mixer - Filler (Original Language: LAD) + + // Network 2 did not produce printable SCL code. + + // Network 3: (Original Language: LAD) + + // Network 3 has no logic elements. + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_Communic_Filler_DI.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_Communic_Filler_DI.md new file mode 100644 index 0000000..c332339 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_Communic_Filler_DI.md @@ -0,0 +1,153 @@ +```pascal +// Block Type: InstanceDB +// Block Name (Original): ITC Communic Filler DI +// Block Number: 3512 + +DATA_BLOCK "ITC_Communic_Filler_DI" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + REQUEST_CONFIG : Bool := FALSE; + REQ_MEM : Bool := FALSE; + REQ_MEM_PULSE : Bool := FALSE; + TCON_REQ : Bool := FALSE; + TCON_DONE : Bool := FALSE; + TCON_DONE_MEM : Bool := FALSE; + TCON_BUSY : Bool := FALSE; + TCON_ERROR : Bool := FALSE; + TCON_STATUS : Word; + TCON_LAST_ERROR : Word; + TSEND_REQ : Bool := FALSE; + TSEND_DONE : Bool := FALSE; + TSEND_DONE_MEM : Bool := FALSE; + TSEND_BUSY : Bool := FALSE; + TSEND_ERROR : Bool := FALSE; + TSEND_STATUS : Word; + TSEND_LAST_ERROR : Word; + TSEND_COUNTER : Int := 0; + TSEND_COUNTER_OLD : Int := 0; + TRCV_REQ : Bool := FALSE; + TRCV_NDR : Bool := FALSE; + TRCV_NDR_MEM : Bool := FALSE; + TRCV_BUSY : Bool := FALSE; + TRCV_ERROR : Bool := FALSE; + TRCVD_LEN : Int := 0; + TRCV_STATUS : Word; + TRCV_LAST_ERROR : Word; + TRCV_COUNTER : Int := 0; + TRCV_COUNTER_OLD : Int := 0; + TDISCON_REQ_MEM : Bool := FALSE; + TDISCON_REQ : Bool := FALSE; + TDISCON_DONE : Bool := FALSE; + TDISCON_DONE_MEM : Bool := FALSE; + TDISCON_BUSY : Bool := FALSE; + TDISCON_ERROR : Bool := FALSE; + TDISCON_B_ERR : Bool := FALSE; + TDISCON_STATUS : Word; + TDISCON_LAST_ERROR : Word; + TSEND_COM_ERR : Bool := FALSE; + TRCV_COM_ERR : Bool := FALSE; + DONE_COM_ERR : Bool := FALSE; + BUSY_COM_ERR : Bool := FALSE; + COM_ALARM_PRESENT : Bool := FALSE; + COM_ALARM_MEM : Bool := FALSE; + FB_ALARM_PRESENT : Bool := FALSE; + FB_ALARM_MEM : Bool := FALSE; + ALARM_MEM_PULSE : Bool := FALSE; + DELAY_ALARM_MEM : Bool := FALSE; + UNSPECIF_PARTNER : Bool := FALSE; + TCON_COLL_TCP : STRUCT + InterfaceId : "HW_ANY"; + ID : "CONN_OUC"; + ConnectionType : Byte; + ActiveEstablished : Bool; + RemoteAddress : STRUCT + ADDR : Array[1..4] of Byte; + END_STRUCT; + + RemotePort : UInt; + LocalPort : UInt; + END_STRUCT; + + TCON_COLL_ISO : STRUCT + InterfaceId : "HW_ANY"; + ID : "CONN_OUC"; + ConnectionType : Byte; + ActiveEstablished : Bool; + RemoteAddress : STRUCT + ADDR : Array[1..4] of Byte; + END_STRUCT; + + RemoteTSelector : STRUCT + TSelLength : UInt; + TSel : Array[1..32] of Byte; + END_STRUCT; + + LocalTSelector : STRUCT + TSelLength : UInt; + TSel : Array[1..32] of Byte; + END_STRUCT; + + END_STRUCT; + + TIME_TSEND_REQ : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + TIME_TDISCON_REQ : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + TSEND_ALARM_COM : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + TRCV_ALARM_COM : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + DONE_ALARM_COM : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + BUSY_ALARM_COM : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + TIME_ALARM : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + TCON : "TCON:v4.0"; + TSEND : "TSEND:v4.0"; + TRCV : "TRCV:v4.0"; + TDISCON : "TDISCON:v2.1"; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_Communic_MainData.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_Communic_MainData.md new file mode 100644 index 0000000..89c2e7d --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_Communic_MainData.md @@ -0,0 +1,47 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): ITC Communic MainData +// Block Number: 3510 + +DATA_BLOCK "ITC_Communic_MainData" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + QTB : "Struct"; + PAST : "Struct"; + MIXER : "Struct"; + LABELLER : "Struct"; + CIP : "Struct"; + PRODUCT_ROOM : "Struct"; + Conveyors_GEBO : "Struct"; + CIP_Sidel : "Struct"; + Ozonizer : "Struct"; + CO2 : "Struct"; + QTB_SEND_DATA : "Struct"; + QTB_REC_DATA : "Struct"; + FLASH_PASTO_SEND_DATA : "Struct"; + FLASH_PASTO_REC_DATA : "Struct"; + FILLER_SEND_DATA : "Struct"; + FILLER_REC_DATA : "Struct"; + LABELLER_SEND_DATA : "Struct"; + LABELLER_REC_DATA : "Struct"; + CIP_SEND_DATA : "Struct"; + CIP_REC_DATA : "Struct"; + PRODUCT_ROOM_SEND_DATA : "Struct"; + PRODUCT_ROOM_REC_DATA : "Struct"; + Conveyors_GEBO_SEND_DATA : "Struct"; + Conveyors_GEBO_REC_DATA : "Struct"; + CIP_Sidel_SEND_DATA : "Struct"; + CIP_Sidel_REC_DATA : "Struct"; + OZONIZER_SEND_DATA : "Struct"; + OZONIZER_REC_DATA : "Struct"; + CO2_SEND_DATA : "Struct"; + CO2_REC_DATA : "Struct"; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_Communic_MainRoutine.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_Communic_MainRoutine.md new file mode 100644 index 0000000..f9a10d2 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_Communic_MainRoutine.md @@ -0,0 +1,37 @@ +```pascal +// Block Type: FC +// Block Name (Original): ITC Communic MainRoutine +// Block Number: 3510 +// Original Network Languages: LAD +// Block Comment: +// (c) by SIDEL +// Name : Interchange Signals: Communication: Main Call +// Description: +// Function: Interchange Signals +// Module : Communication +// - Options Main Call + +FUNCTION "ITC_Communic_MainRoutine" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +BEGIN + + // Network 1: (Original Language: LAD) + // Filler Comunication + + ITC_Communic_Filler(); + + // Network 2: (Original Language: LAD) + // Option: Product Room + + ITC_Communic_ProdRoom(); + + // Network 3: (Original Language: LAD) + // Option: CIP SIDEL + + ITC_Communic_CIPRoom(); + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_Communic_Mixer_DI.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_Communic_Mixer_DI.md new file mode 100644 index 0000000..2166391 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_Communic_Mixer_DI.md @@ -0,0 +1,153 @@ +```pascal +// Block Type: InstanceDB +// Block Name (Original): ITC Communic Mixer DI +// Block Number: 3521 + +DATA_BLOCK "ITC_Communic_Mixer_DI" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + REQUEST_CONFIG : Bool := FALSE; + REQ_MEM : Bool := FALSE; + REQ_MEM_PULSE : Bool := FALSE; + TCON_REQ : Bool := FALSE; + TCON_DONE : Bool := FALSE; + TCON_DONE_MEM : Bool := FALSE; + TCON_BUSY : Bool := FALSE; + TCON_ERROR : Bool := FALSE; + TCON_STATUS : Word; + TCON_LAST_ERROR : Word; + TSEND_REQ : Bool := FALSE; + TSEND_DONE : Bool := FALSE; + TSEND_DONE_MEM : Bool := FALSE; + TSEND_BUSY : Bool := FALSE; + TSEND_ERROR : Bool := FALSE; + TSEND_STATUS : Word; + TSEND_LAST_ERROR : Word; + TSEND_COUNTER : Int := 0; + TSEND_COUNTER_OLD : Int := 0; + TRCV_REQ : Bool := FALSE; + TRCV_NDR : Bool := FALSE; + TRCV_NDR_MEM : Bool := FALSE; + TRCV_BUSY : Bool := FALSE; + TRCV_ERROR : Bool := FALSE; + TRCVD_LEN : Int := 0; + TRCV_STATUS : Word; + TRCV_LAST_ERROR : Word; + TRCV_COUNTER : Int := 0; + TRCV_COUNTER_OLD : Int := 0; + TDISCON_REQ_MEM : Bool := FALSE; + TDISCON_REQ : Bool := FALSE; + TDISCON_DONE : Bool := FALSE; + TDISCON_DONE_MEM : Bool := FALSE; + TDISCON_BUSY : Bool := FALSE; + TDISCON_ERROR : Bool := FALSE; + TDISCON_B_ERR : Bool := FALSE; + TDISCON_STATUS : Word; + TDISCON_LAST_ERROR : Word; + TSEND_COM_ERR : Bool := FALSE; + TRCV_COM_ERR : Bool := FALSE; + DONE_COM_ERR : Bool := FALSE; + BUSY_COM_ERR : Bool := FALSE; + COM_ALARM_PRESENT : Bool := FALSE; + COM_ALARM_MEM : Bool := FALSE; + FB_ALARM_PRESENT : Bool := FALSE; + FB_ALARM_MEM : Bool := FALSE; + ALARM_MEM_PULSE : Bool := FALSE; + DELAY_ALARM_MEM : Bool := FALSE; + UNSPECIF_PARTNER : Bool := FALSE; + TCON_COLL_TCP : STRUCT + InterfaceId : "HW_ANY"; + ID : "CONN_OUC"; + ConnectionType : Byte; + ActiveEstablished : Bool; + RemoteAddress : STRUCT + ADDR : Array[1..4] of Byte; + END_STRUCT; + + RemotePort : UInt; + LocalPort : UInt; + END_STRUCT; + + TCON_COLL_ISO : STRUCT + InterfaceId : "HW_ANY"; + ID : "CONN_OUC"; + ConnectionType : Byte; + ActiveEstablished : Bool; + RemoteAddress : STRUCT + ADDR : Array[1..4] of Byte; + END_STRUCT; + + RemoteTSelector : STRUCT + TSelLength : UInt; + TSel : Array[1..32] of Byte; + END_STRUCT; + + LocalTSelector : STRUCT + TSelLength : UInt; + TSel : Array[1..32] of Byte; + END_STRUCT; + + END_STRUCT; + + TIME_TSEND_REQ : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + TIME_TDISCON_REQ : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + TSEND_ALARM_COM : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + TRCV_ALARM_COM : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + DONE_ALARM_COM : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + BUSY_ALARM_COM : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + TIME_ALARM : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + TCON : "TCON:v4.0"; + TSEND : "TSEND:v4.0"; + TRCV : "TRCV:v4.0"; + TDISCON : "TDISCON:v2.1"; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_Communic_ProdRoom.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_Communic_ProdRoom.md new file mode 100644 index 0000000..98033f8 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_Communic_ProdRoom.md @@ -0,0 +1,60 @@ +```pascal +// Block Type: FC +// Block Name (Original): ITC Communic ProdRoom +// Block Number: 3522 +// Original Network Languages: LAD +// Block Comment: +// Interchange Signals: Communication: Product Room + +FUNCTION "ITC_Communic_ProdRoom" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + #_16 : Bool; // Auto-generated temporary + #_200MS : Bool; // Auto-generated temporary + #_3 : Bool; // Auto-generated temporary + #_500MS : Bool; // Auto-generated temporary +END_VAR + +BEGIN + + // Network 1: BBT Data Send/Receive (Original Language: LAD) + + IF "E5_007161" AND "AUX FALSE" THEN + "ITC Communic Product Room DI"(ACTIVE := TRUE, ID := W#16#3, INIT := "FirstScan", ISO_on_TCP_LOCAL_CPU_SLOT := 2, ISO_on_TCP_PN_PN := TRUE, ISO_on_TCP_REMOTE_CPU_SLOT := 2, LOCAL_PORT := 1, LOCAL_DEVICE_ID := 72, REMOTE_PORT := 2, REMOTE_IP_1 := 10, REMOTE_IP_2 := 1, REMOTE_IP_3 := 60, REMOTE_IP_4 := 11, REQ := FALSE, TCP_PROTOCOL := FALSE, TIME_ACT_SP := T#200MS, TIME_ALARM_SP := T#500MS, TRCV_DATA := "ITC Communic MainData"."PRODUCT_ROOM_REC_DATA", TRCV_ENABLE := TRUE, TRCV_LEN := 10, TSEND_DATA := "ITC Communic MainData"."PRODUCT_ROOM_SEND_DATA", TSEND_LEN := 10); + END_IF; + + // Network 2: *** (Original Language: LAD) + + // Network 2 has no logic elements. + + // Network 3: CIP (Original Language: LAD) + + IF "AUX TRUE" THEN + "HMI_IO_Showing"."Cip_Room_IO_Signal"."_AI0" := "AI_SYRUP_Cip_Phase"; + "HMI_IO_Showing"."Cip_Room_IO_Signal"."_AI1" := "AI_SYRUP_Cip_RemaningTime" * 10; + "HMI_IO_Showing"."Cip_Room_IO_Signal"."_AI2" := "AI_SYRUP_Cip_TotalTime"; + "HMI_IO_Showing"."Cip_Room_IO_Signal"."_AI3" := "AI_CIP_SetPoint_Temeperature"; + "HMI_IO_Showing"."Cip_Room_IO_Signal"."_AI4" := "AI_CIP_CIP_Total_Time"; + END_IF; + + // Network 4: Syrup Room (Original Language: LAD) + + IF "AUX TRUE" THEN + "HMI_Refrige_IO_Showing"."Syrup_Room_IO_Signal"."_AI0" := "DI_SYR_TANK_LEVEL"; + END_IF; + + // Network 5: Syrup Room (Original Language: LAD) + + IF "AUX TRUE" THEN + "HMI_IO_Showing"."Syrup_Room_IO_Signal"."_AI0" := "DI_SYR_COUNTER_LT"; + END_IF; + + // Network 6: *** (Original Language: LAD) + + // Network 6 has no logic elements. + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_Communic_Product_Room_DI.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_Communic_Product_Room_DI.md new file mode 100644 index 0000000..74a8683 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_Communic_Product_Room_DI.md @@ -0,0 +1,153 @@ +```pascal +// Block Type: InstanceDB +// Block Name (Original): ITC Communic Product Room DI +// Block Number: 3522 + +DATA_BLOCK "ITC_Communic_Product_Room_DI" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + REQUEST_CONFIG : Bool := FALSE; + REQ_MEM : Bool := FALSE; + REQ_MEM_PULSE : Bool := FALSE; + TCON_REQ : Bool := FALSE; + TCON_DONE : Bool := FALSE; + TCON_DONE_MEM : Bool := FALSE; + TCON_BUSY : Bool := FALSE; + TCON_ERROR : Bool := FALSE; + TCON_STATUS : Word; + TCON_LAST_ERROR : Word; + TSEND_REQ : Bool := FALSE; + TSEND_DONE : Bool := FALSE; + TSEND_DONE_MEM : Bool := FALSE; + TSEND_BUSY : Bool := FALSE; + TSEND_ERROR : Bool := FALSE; + TSEND_STATUS : Word; + TSEND_LAST_ERROR : Word; + TSEND_COUNTER : Int := 0; + TSEND_COUNTER_OLD : Int := 0; + TRCV_REQ : Bool := FALSE; + TRCV_NDR : Bool := FALSE; + TRCV_NDR_MEM : Bool := FALSE; + TRCV_BUSY : Bool := FALSE; + TRCV_ERROR : Bool := FALSE; + TRCVD_LEN : Int := 0; + TRCV_STATUS : Word; + TRCV_LAST_ERROR : Word; + TRCV_COUNTER : Int := 0; + TRCV_COUNTER_OLD : Int := 0; + TDISCON_REQ_MEM : Bool := FALSE; + TDISCON_REQ : Bool := FALSE; + TDISCON_DONE : Bool := FALSE; + TDISCON_DONE_MEM : Bool := FALSE; + TDISCON_BUSY : Bool := FALSE; + TDISCON_ERROR : Bool := FALSE; + TDISCON_B_ERR : Bool := FALSE; + TDISCON_STATUS : Word; + TDISCON_LAST_ERROR : Word; + TSEND_COM_ERR : Bool := FALSE; + TRCV_COM_ERR : Bool := FALSE; + DONE_COM_ERR : Bool := FALSE; + BUSY_COM_ERR : Bool := FALSE; + COM_ALARM_PRESENT : Bool := FALSE; + COM_ALARM_MEM : Bool := FALSE; + FB_ALARM_PRESENT : Bool := FALSE; + FB_ALARM_MEM : Bool := FALSE; + ALARM_MEM_PULSE : Bool := FALSE; + DELAY_ALARM_MEM : Bool := FALSE; + UNSPECIF_PARTNER : Bool := FALSE; + TCON_COLL_TCP : STRUCT + InterfaceId : "HW_ANY"; + ID : "CONN_OUC"; + ConnectionType : Byte; + ActiveEstablished : Bool; + RemoteAddress : STRUCT + ADDR : Array[1..4] of Byte; + END_STRUCT; + + RemotePort : UInt; + LocalPort : UInt; + END_STRUCT; + + TCON_COLL_ISO : STRUCT + InterfaceId : "HW_ANY"; + ID : "CONN_OUC"; + ConnectionType : Byte; + ActiveEstablished : Bool; + RemoteAddress : STRUCT + ADDR : Array[1..4] of Byte; + END_STRUCT; + + RemoteTSelector : STRUCT + TSelLength : UInt; + TSel : Array[1..32] of Byte; + END_STRUCT; + + LocalTSelector : STRUCT + TSelLength : UInt; + TSel : Array[1..32] of Byte; + END_STRUCT; + + END_STRUCT; + + TIME_TSEND_REQ : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + TIME_TDISCON_REQ : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + TSEND_ALARM_COM : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + TRCV_ALARM_COM : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + DONE_ALARM_COM : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + BUSY_ALARM_COM : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + TIME_ALARM : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + TCON : "TCON:v4.0"; + TSEND : "TSEND:v4.0"; + TRCV : "TRCV:v4.0"; + TDISCON : "TDISCON:v2.1"; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_DataIn.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_DataIn.md new file mode 100644 index 0000000..03dfc47 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_DataIn.md @@ -0,0 +1,29 @@ +```pascal +// Block Type: FC +// Block Name (Original): ITC DataIn +// Block Number: 3501 +// Original Network Languages: LAD +// Block Comment: +// (c) by SIDEL +// Name : Interchange Signals: Function Data Input save +// Description: +// Function: Interchange Signals +// Module : Function Data Input save +// - Data Input Save into Function Local Data Memory +// -------------------------------------------------------------------------------- + +FUNCTION "ITC_DataIn" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +BEGIN + + // Network 1: (Original Language: LAD) + + // Network 1 has no logic elements. + + // No executable logic generated by script. + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_DataOut.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_DataOut.md new file mode 100644 index 0000000..bf37c28 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_DataOut.md @@ -0,0 +1,25 @@ +```pascal +// Block Type: FC +// Block Name (Original): ITC DataOut +// Block Number: 3502 +// Original Network Languages: +// Block Comment: +// (c) by SIDEL +// Name : Interchange Signals: Function Data Output save +// Description: +// Function: Interchange Signals +// Module : Function Data Output save +// - Data Output Save into Function Local Data Memory +// -------------------------------------------------------------------------------- + +FUNCTION "ITC_DataOut" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +BEGIN + + // No executable logic generated by script. + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_Exchange_MainRoutine.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_Exchange_MainRoutine.md new file mode 100644 index 0000000..e4ed840 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_Exchange_MainRoutine.md @@ -0,0 +1,25 @@ +```pascal +// Block Type: FC +// Block Name (Original): ITC Exchange MainRoutine +// Block Number: 3550 +// Original Network Languages: +// Block Comment: +// (c) by SIDEL +// Name : Interchange Signals: Exchange: Main Call +// Description: +// Function: Interchange Signals +// Module : Exchange +// - Options Main Call +// -------------------------------------------------------------------------------- + +FUNCTION "ITC_Exchange_MainRoutine" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +BEGIN + + // No executable logic generated by script. + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_MainRoutine.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_MainRoutine.md new file mode 100644 index 0000000..fe3a364 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ITC_MainRoutine.md @@ -0,0 +1,42 @@ +```pascal +// Block Type: FC +// Block Name (Original): ITC MainRoutine +// Block Number: 3500 +// Original Network Languages: LAD +// Block Comment: +// (c) by SIDEL +// Name : Interchange Signals: Function Main Call +// Description: +// Function: Interchange Signals +// - Modules Main Call +// -------------------------------------------------------------------------------- + +FUNCTION "ITC_MainRoutine" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + ParamError : Bool; +END_VAR + +BEGIN + + // Network 1: Function: Data In (Original Language: LAD) + + ITC_DataIn(); + + // Network 2: Module: Machine Communication (Original Language: LAD) + + ITC_Communic_MainRoutine(); + + // Network 3: Module: Signal Exchange (Original Language: LAD) + + ITC_Exchange_MainRoutine(); + + // Network 4: Function: Data Out (Original Language: LAD) + + ITC_DataOut(); + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/I_O_FLT1.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/I_O_FLT1.md new file mode 100644 index 0000000..362380f --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/I_O_FLT1.md @@ -0,0 +1,58 @@ +```pascal +// Block Type: OB +// Block Name (Original): I/O_FLT1 +// Block Number: 82 +// Original Network Languages: LAD + +ORGANIZATION_BLOCK "I_O_FLT1" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + OB82_EV_CLASS : Byte; + OB82_FLT_ID : Byte; + OB82_PRIORITY : Byte; + OB82_OB_NUMBR : Byte; + OB82_RESERVED_1 : Byte; + OB82_IO_FLAG : Byte; + OB82_MDL_ADDR : Word; + OB82_MDL_DEFECT : Bool; + OB82_INT_FAULT : Bool; + OB82_EXT_FAULT : Bool; + OB82_PNT_INFO : Bool; + OB82_EXT_VOLTAGE : Bool; + OB82_FLD_CONNCTR : Bool; + OB82_NO_CONFIG : Bool; + OB82_CONFIG_ERR : Bool; + OB82_MDL_TYPE : Byte; + OB82_SUB_MDL_ERR : Bool; + OB82_COMM_FAULT : Bool; + OB82_MDL_STOP : Bool; + OB82_WTCH_DOG_FLT : Bool; + OB82_INT_PS_FLT : Bool; + OB82_PRIM_BATT_FLT : Bool; + OB82_BCKUP_BATT_FLT : Bool; + OB82_RESERVED_2 : Bool; + OB82_RACK_FLT : Bool; + OB82_PROC_FLT : Bool; + OB82_EPROM_FLT : Bool; + OB82_RAM_FLT : Bool; + OB82_ADU_FLT : Bool; + OB82_FUSE_FLT : Bool; + OB82_HW_INTR_FLT : Bool; + OB82_RESERVED_3 : Bool; + OB82_DATE_TIME : "Date_And_Time"; +END_VAR + +BEGIN + + // Network 1: I/O Point Fault Memory (Original Language: LAD) + // PRIFIBUS DIAG I/O Fault Memory + + IF "M19510" THEN + "M19510" := TRUE; + END_IF; + +END_ORGANIZATION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Input.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Input.md new file mode 100644 index 0000000..3a4cc03 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Input.md @@ -0,0 +1,1184 @@ +```pascal +// Block Type: FB +// Block Number: 1718 +// Original Network Languages: LAD, STL + +FUNCTION_BLOCK "Input" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + i_Value : Real; + i_Num : Int; + i_Enable : Bool; +END_VAR + +VAR_OUTPUT + FilterOut : Real; +END_VAR + +VAR_STAT + CO2_LowPressure : Bool; + H_Fault_Temp : Bool; + L_Fault_Temp : Bool; + mRealTemp : Real; + mCO2PressOkON : Bool; + mDelayFaultAVM346ON : Bool; + mDelayFaultAVM362ON : Bool; + mDelayFaultAVM327ON : Bool; + mDelayFaultAVM328ON : Bool; + mDeairTank_VacuumOkON : Bool; + mDeairTank_VacuumFltON : Bool; + mFlrRinseTankMaxLvlON : Bool; + mFlrRinseTankMinLvlON : Bool; + mFiller1ProReqDlyON : Bool; + mFiller2ProReqDlyON : Bool; + mFillerEndTankFillingON : Bool; + mFillerCIPReadyDlyON : Bool; + mUVLampDelayReadyON : Bool; + mUVLampDelayFaultON : Bool; + mUVLampDelayTempHighON : Bool; + mDeairTank_DelayFaultON : Bool; + mRVM301_DelayFaultON : Bool; + mCO2PressOk : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayFaultAVP361 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM342 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM341 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM346 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM362 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM369 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM327 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayFaultAVN314 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM317 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM316 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM315 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM314 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM313 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM312 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM311 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM323_2 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM323_1 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM321 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM324 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayFaultAVN318 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM322 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM326 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayFaultAVN328 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayFaultAVN327 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM323 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM388 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM389 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayFaultAVN395 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayFaultAVP317 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayFaultAVP316_1 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayFaultAVP316 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayFaultAVP317_1 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayFaultAVP391 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayFaultAVP344 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayFaultAVP324 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM328 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDeairTank_VacuumOk : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDeairTank_VacuumFlt : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mFlrRinseTankMaxLvl : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mFlrRinseTankMinLvl : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mFillerProReqDly : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mFiller2ProReqDly : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mFillerEndTankFilling : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mFillerCIPReadyDly : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mFiller2CIPReadyDly : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mUVLampDelayReady : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mUVLampDelayFault : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mUVLampDelayTempHigh : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDeairTank_DelayFault : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mRVM301_DelayFault : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + Deair_Water_Temp : "LowPassFilter"; + Product_Tank_Level : "LowPassFilter"; + C1_Conductivity_Caustic : "LowPassFilter"; + C1_Conductivity_Water : "LowPassFilter"; + CIP_Retur_Temperature : "LowPassFilter"; + Fille_Level : "LowPassFilter"; + Syrup_Conductivity : "LowPassFilter"; + Product_Conductivity : "LowPassFilter"; + Deaireator_Pressure : "LowPassFilter"; + CO2InjPressFlted : "LowPassFilter"; + DeairValveFlted : "LowPassFilter"; + ProductO2Conc : "LowPassFilter"; + NorgrenPressSafety : "LowPassFilter"; + mDelayFaultAVM317_1 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + +END_VAR + +VAR_TEMP + mF8_AuxiliaryOn_ONS : Bool; + mF1_StartStop_ONS : Bool; + mDummy : Bool; + mCalc : Real; + mCO2InjPressThreshold : Real; + mCO2InjPressNotOk : Bool; + mSyrTankMinLevel : Bool; + mDivertPanelSensor : Bool; + mRVN304Fault : Bool; + mRVN305Fault : Bool; + mProdTankPressValveFault : Bool; + mH_Fault : Bool; + mL_Fault : Bool; + mAuxDI : DInt; + mFTFS : Real; + mAuxInt1 : Int; + mAuxInt2 : Int; + mAI_RVM301 : Word; + mAuxFlowTronic : Real; + AuxManifoldCIP_Stat : Bool; + AuxManifoldProd_Stat : Bool; + AuxNot_WST : Bool; + PCM306_Error : Real; + PCM306_MaxError : Real; + RVN304_MaxError : Real; + RVN305_MaxError : Real; +END_VAR + + #_15S : Bool; // Auto-generated temporary + #_1M : Bool; // Auto-generated temporary + #_2S : Bool; // Auto-generated temporary + #_30S : Bool; // Auto-generated temporary + #_30s : Bool; // Auto-generated temporary + #_3s : Bool; // Auto-generated temporary + #_5S : Bool; // Auto-generated temporary + #_6s : Bool; // Auto-generated temporary + #TOF_INSTANCE_31 : Bool; // Auto-generated temporary + #TOF_INSTANCE_33 : Bool; // Auto-generated temporary + #TON_INSTANCE_25 : Bool; // Auto-generated temporary + #TON_INSTANCE_27 : Bool; // Auto-generated temporary + #TON_INSTANCE_28 : Bool; // Auto-generated temporary + #TON_INSTANCE_29 : Bool; // Auto-generated temporary + #TON_INSTANCE_30 : Bool; // Auto-generated temporary + #TON_INSTANCE_32 : Bool; // Auto-generated temporary + #TON_INSTANCE_36 : Bool; // Auto-generated temporary +BEGIN + + // Network 1: Check Flow Meter (Original Language: LAD) + + Input_CheckFlowMetersSta(); + + // Network 2: MIX - Use during Workshop test - BF - (Original Language: LAD) + + "gWorkshopTest" := "HMI_Service"."Workshop_Test"."WorkshopTest"; + + IF NOT "HMI_Service"."Workshop_Test"."WorkshopTest" THEN + "HMI_Service"."Workshop_Test"."SIMTestWithGas" := FALSE; + END_IF; + + "gWorkshop_Syrup_Test" := "HMI_Service"."Workshop_Test"."WorkshopTest" AND "HMI_Service"."Workshop_Test"."SyrupTestRequest"; + + "gWorkshop_CIP_Signals" := "HMI_Service"."Workshop_Test"."WorkshopTest" AND "HMI_Service"."Workshop_Test"."CIPSignalsTestRequest"; + + "gWorkshop_Filler_Signals_SIM" := "HMI_Service"."Workshop_Test"."WorkshopTest" AND "HMI_Service"."Workshop_Test"."FillerSignalsTestRequest"; + + "gWorkshop_Co2_Presence" := "HMI_Service"."Workshop_Test"."WorkshopTest" AND "HMI_Service"."Workshop_Test"."CO2TestPresent"; + + // Network 3: Auxiliary On (Original Language: LAD) + + "mAuxiliaryOn" := ("DI_AuxVoltage_On" AND "DI_Emergency_Pilz_On" AND "DI_Emergency_Pressed") OR ("DO_CtrlCircuitRun" AND "DI_Emergency_Pilz_On" AND "DI_Emergency_Pressed"); + + // Network 4: Voltage Ok (Original Language: LAD) + + "gIN_VoltageOk" := "mAuxiliaryOn" AND "DI_AuxVoltage_On"; + + // Network 5: E-Stop Pressed (Original Language: LAD) + + "HMI_Alarms"."gH_Message" := "DI_Emergency_Pressed"; + + // Network 6: Shut Down (Original Language: LAD) + + "HMI_Variables_Status"."Procedures"."ShutDownRequest" := "DI_UPSsupply" AND "HMI_ShutDownDelay"; + + // Network 7: (Original Language: LAD) + + "T169"(IN := "DO_HMIPowerSupply", PT := S5T#1M); // TODO: Declarar "T169" : TON; + + // Network 8: Temp Too High (Original Language: LAD) + + "gElCabTooHigh" := "DI_MaxTempAlarm"; + + // Network 9: Horn Reset (Original Language: LAD) + + "gIN_ResetHorn" := ("HMI_Variables_Cmd"."Commands_From_HMI"."F9_HornReset"."Command" AND "HMI_Variables_Cmd"."Commands_From_HMI"."F9_HornReset"."Enable") OR ("DI_PB_HornReset" AND "HMI_Variables_Cmd"."Commands_From_HMI"."F9_HornReset"."Enable"); + + // Network 10: Reset (Original Language: LAD) + + "gIN_ResetBtn" := "DI_AlarmReset" OR ("HMI_Variables_Cmd"."Commands_From_HMI"."F10_FaultReset"."Command" AND "HMI_Variables_Cmd"."Commands_From_HMI"."F10_FaultReset"."Enable"); + + // Network 11: StartStop (Original Language: LAD) + + // Edge Logic handled by Coil 28 + "M19025" := "HMI_Variables_Cmd"."Commands_From_HMI"."F1_StartStop"."Command" AND "HMI_Variables_Cmd"."Commands_From_HMI"."F1_StartStop"."Enable"; // P_TRIG("HMI_Variables_Cmd"."Commands_From_HMI"."F1_StartStop"."Command" AND "HMI_Variables_Cmd"."Commands_From_HMI"."F1_StartStop"."Enable") - Mem: "M19025" + + "mF1_StartStop_ONS" := "HMI_Variables_Cmd"."Commands_From_HMI"."F1_StartStop"."Command" AND "HMI_Variables_Cmd"."Commands_From_HMI"."F1_StartStop"."Enable" AND NOT "M19025"; + "M19025" := "HMI_Variables_Cmd"."Commands_From_HMI"."F1_StartStop"."Command" AND "HMI_Variables_Cmd"."Commands_From_HMI"."F1_StartStop"."Enable"; // P_TRIG("HMI_Variables_Cmd"."Commands_From_HMI"."F1_StartStop"."Command" AND "HMI_Variables_Cmd"."Commands_From_HMI"."F1_StartStop"."Enable") - Mem: "M19025" + + // Network 12: Stop (Original Language: LAD) + + "gIN_StopBtn" := "mF1_StartStop_ONS" AND "HMI_Variables_Cmd"."Commands_From_HMI"."F1_StartStop"."Light"; + + // Network 13: Start (Original Language: LAD) + + "gIN_StartBtn" := "mF1_StartStop_ONS" AND "HMI_Variables_Cmd"."Commands_From_HMI"."F1_StartStop"."Light"; + + // Network 14: Use during Workshop test - BF - (Original Language: LAD) + + "mCO2InjPressThreshold" := "HMI_Blender_Parameters"."ProcessSetup"."_PPN301Pressure" + 0.1; + + SEL_R(G := "Blender_Variables_Pers"."gCarboStillRecipe" AND "gBlenderRinseMode", IN0 := "HMI_Blender_Parameters"."ProcessSetup"."_N2MinPressure", IN1 := "mCO2InjPressThreshold"); + + "mDummy" := TRUE; + + // Network 15: Use during Workshop test - BF - (Original Language: LAD) + + "mCalc" := "mCO2InjPressThreshold" / 2.0; + + SEL_R(G := "Procedure_Variables"."TN301_StartUp"."Latch", IN0 := "mCO2InjPressThreshold", IN1 := "mCalc"); + + "mDummy" := TRUE; + + // Network 16: C02 Injection Not Ok (Original Language: LAD) + + "mCO2InjPressNotOk" := Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InjectionPress_Ctrl", 0) OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InjectionPress_Ctrl" > 0); + + // Network 17: CO2 Low Presure Fault (Original Language: LAD) + + "gCO2PressNotOk" := ("Procedure_Variables"."BlendFill_StartUp"."Done" AND "mCO2InjPressNotOk" AND "gWorkshopTest" AND "gBlenderCIPMode") OR ("Procedure_Variables"."BlendFill_StartUp"."Latch" AND "mCO2InjPressNotOk" AND "gWorkshopTest" AND "gBlenderCIPMode" AND ("HMI_PID"."RVM301"."Out" < 50.0)); + + // Network 18: Co2 Line Pressure Ok (Original Language: LAD) + + "gIN_LinePressCO2Ok" := "gCO2LowPress_Fault"; + + // Network 19: CO2 inlet line pressure not stable (Original Language: LAD) + + "HMI_Alarms"."gH_Message" := "Blender_Variables_Pers"."gCarboStillRecipe" AND "gCO2LowPress_Fault" AND "gBlenderBlending" AND ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InjectionPress_Ctrl" > 0); + + IF "Blender_Variables_Pers"."gCarboStillRecipe" AND "gCO2LowPress_Fault" AND "gBlenderBlending" AND ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InjectionPress_Ctrl" > 0) THEN + "mCalc" := "HMI_PID"."PCM306"."Sp" - "HMI_Instrument"."PCM306"."PVFiltered"; + END_IF; + + // Network 20: *** (Original Language: LAD) + + // Network 20 has no logic elements. + + // Network 21: MIX - (Original Language: LAD) + + "HMI_Device"."AVM362"."FeedBackOff" := "HMI_Device"."AVM362"."Config" AND "HMI_Device"."AVM362"."Out" AND "DI_AVM362_Close"; + + "HMI_Device"."AVM362"."FeedBackOn" := "HMI_Device"."AVM362"."Config" AND "HMI_Device"."AVM362"."Out" AND "DI_AVM362_Open"; + + // Network 22: AVM362 Fault Valve (Original Language: LAD) + + #TON_INSTANCE_32(IN := ("DI_AVM362_Close" AND "HMI_Device"."AVM362"."FeedBackOff") OR ("DI_AVM362_Open" AND "HMI_Device"."AVM362"."FeedBackOn"), PT := T#5S); // TODO: Declarar #TON_INSTANCE_32 : TON; + + "gAVM362Fault" := #TON_INSTANCE_32.Q; + + // Network 23: MIX - (Original Language: LAD) + + "HMI_Device"."AVM346"."FeedBackOff" := "HMI_Device"."AVM346"."Config" AND "HMI_Device"."AVM346"."Out" AND "DI_AVM346_Close"; + + "HMI_Device"."AVM346"."FeedBackOn" := "HMI_Device"."AVM346"."Config" AND "HMI_Device"."AVM346"."Out" AND "DI_AVM346_Open"; + + // Network 24: AVM346 Fault Valve (Original Language: LAD) + + #TON_INSTANCE_36(IN := ("gWorkshopTest" AND "DI_AVM346_Close" AND "HMI_Device"."AVM346"."FeedBackOff") OR ("gWorkshopTest" AND "DI_AVM346_Open" AND "HMI_Device"."AVM346"."FeedBackOn"), PT := T#5S); // TODO: Declarar #TON_INSTANCE_36 : TON; + + "gAVM346Fault" := #TON_INSTANCE_36.Q; + + // Network 25: Raw signal (Original Language: LAD) + + "HMI_Digital"."_PAL_S11"."Raw" := "DI_Air_InletPress_OK"; + + "HMI_Digital"."_PAL_S11"."Filtered" := "DI_Air_InletPress_OK"; + + // Network 26: Syrup Line Drain Valve Aux (Original Language: LAD) + + "gIN_HVP301_Aux" := "AUX TRUE" AND "DI_HVP301_Sensor"; + + // Network 27: Water Manual Drain Valve Aux (Original Language: LAD) + + "gIN_HVM302_Aux" := "DI_HVM302_Sensor" AND "AUX FALSE"; + + // Network 28: Raw signal (Original Language: LAD) + + "HMI_Digital"."FSS301"."Raw" := "DI_FSS301"; + + // Network 29: Raw signal (Original Language: LAD) + + "HMI_Digital"."LSN301L"."Raw" := "DI_LSN301L"; + + // Network 30: Raw signal (Original Language: LAD) + + "HMI_Digital"."LSN302L"."Raw" := "DI_Min_Deair2_Level"; + + // Network 31: Raw signal (Original Language: LAD) + + "HMI_Digital"."LSM302L"."Raw" := "DI_LSM302L"; + + // Network 32: Raw signal (Original Language: LAD) + + "HMI_Digital"."LAL_S3"."Raw" := "DI_Min_Syrup_Level"; + + // Network 33: Deaireator Tank Vacuum OK (Original Language: LAD) + + #TON_INSTANCE_29(IN := "DI_DeairVacuumOk" OR "gDeairTank_VacuumOk", PT := T#15S); // TODO: Declarar #TON_INSTANCE_29 : TON; + + #TOF_INSTANCE_31(IN := #TON_INSTANCE_29.Q, PT := T#15S); // TODO: Declarar #TOF_INSTANCE_31 : TOF; + + "gIN_DeairTank_Vacuum_Ok" := #TOF_INSTANCE_31.Q; + + // Network 34: Water Valve Closed (Original Language: LAD) + + "gIN_RMM301_Closed" := "DI_RMM301_Closed"; + + // Network 35: Syrup Valve Closed (Original Language: LAD) + + "gIN_RMP302_Closed" := "DI_RMP302_Closed"; + + // Network 36: Carbo CO2 Valve Closed (Original Language: LAD) + + "gIN_RMM303_Closed" := "DI_RMM303_Closed"; + + // Network 37: GAS2 Valve Closed (Original Language: LAD) + + "gIN_RMM304_Closed" := "DI_RMM304_Closed"; + + // Network 38: Water Pump FC Ready (Original Language: LAD) + + "gIN_PPN301_FCReady" := "HMI_PID"."PPN301"."Config" AND "PPN301_B01_DriveReady" AND "PPN301_B03_Trip"; + + // Network 39: Syrup Pump FC Ready (Original Language: LAD) + + "gIN_PPP302_FCReady" := "HMI_PID"."PPP302"."Config" AND "PPP302_B01_DriveReady" AND "PPP302_B03_Trip"; + + // Network 40: Product Pump FC Ready (Original Language: LAD) + + "gIN_PPM303_FCReady" := "PPM303_B01_DriveReady" AND "PPM303_B03_Trip"; + + // Network 41: From Syrup Room Syrup ready (Original Language: LAD) + + "gIN_SyrRoomOk" := ("DI_SyrRoom_SyrPump_Running" AND "gBlenderProdMode" AND "DI_SyrRoom_Cip_Mode") OR ("Procedure_Variables"."Syr_RunOut"."Latch" AND "DI_SYRUP_Runout" AND "gBlenderProdMode" AND "DI_SyrRoom_Cip_Mode"); + + "Interlocking_Variables"."SYRUP_ROOM_REC_DATA"."Syrup_1_Ready" := ("DI_SyrRoom_SyrPump_Running" AND "gBlenderProdMode" AND "DI_SyrRoom_Cip_Mode") OR ("Procedure_Variables"."Syr_RunOut"."Latch" AND "DI_SYRUP_Runout" AND "gBlenderProdMode" AND "DI_SyrRoom_Cip_Mode"); + + "Interlocking_Variables"."SYRUP_ROOM_REC_DATA"."Syrup_2_Ready" := ("DI_SyrRoom_SyrPump_Running" AND "gBlenderProdMode" AND "DI_SyrRoom_Cip_Mode") OR ("Procedure_Variables"."Syr_RunOut"."Latch" AND "DI_SYRUP_Runout" AND "gBlenderProdMode" AND "DI_SyrRoom_Cip_Mode"); + + // Network 42: Syrup RunOut (Original Language: LAD) + + "Interlocking_Variables"."SYRUP_ROOM_REC_DATA"."Syrup_RunOut" := "DI_SYRUP_Runout" AND "gBlenderProdMode" AND "DI_SyrRoom_Cip_Mode"; + + // Network 43: Syrup Room Alarm (Original Language: LAD) + + "Interlocking_Variables"."SYRUP_ROOM_REC_DATA"."Syrup_Room_Alarm" := "gBlenderProdMode" AND "DI_SyrRoom_Pump_Ready"; + + // Network 44: Syrup Room CIP (Original Language: LAD) + + "Interlocking_Variables"."SYRUP_ROOM_REC_DATA"."Syrup_Room_Cip" := "DI_SyrRoom_Cip_Mode"; + + // Network 45: AVM327 Status (Original Language: LAD) + + "HMI_Device"."AVM327_NoCMD"."Out" := "Interlocking_Variables"."SIMO_FILLER_REC_DATA"."MixProof_AVM327_Status"; + + // Network 46: Divert Panel Sensor (Original Language: LAD) + + "mDivertPanelSensor" := Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DivertPanel", 1); + + // Network 47: MainFold Not Ready Prod (Original Language: LAD) + + "gIN_ManifoldNotReadyProd" := "gBlenderRinseMode" AND "gBlenderCIPMode" AND "AuxManifoldCIP_Stat" AND "Procedure_Variables"."Blender_Run"."Latch" AND "mDivertPanelSensor"; + + // Network 48: MainFold Not Ready CIP (Original Language: LAD) + + "gIN_ManifoldNotReadyCIP" := "gBlenderRinseMode" AND "gBlenderCIPMode" AND "Procedure_Variables"."Blender_Run"."Latch" AND "mDivertPanelSensor" AND "AuxManifoldProd_Stat"; + + // Network 49: Filler product request delay (Original Language: LAD) + + "gIN_FillerProdReady" := "Interlocking_Variables"."SIMO_FILLER_REC_DATA"."PROD_Selected" OR "Interlocking_Variables"."FILLER_MIXER_RECEIVE"."PROD_Selected"; + + // Network 50: FillerProReqDly (Original Language: LAD) + + "gIN_Filler1ProductReq" := "Interlocking_Variables"."SIDEL_FILLER_REC_DATA"."PROD_Request" OR "Interlocking_Variables"."FILLER_MIXER_RECEIVE"."GEN_AVM362_Enable"; + + "gIN_Filler_AVM362_En" := "Interlocking_Variables"."SIDEL_FILLER_REC_DATA"."PROD_Request" OR "Interlocking_Variables"."FILLER_MIXER_RECEIVE"."GEN_AVM362_Enable"; + + // Network 51: FillerProReqDly (Original Language: LAD) + + "gIN_Filler2ProductReq" := "DI_Flr2_PROD_Request"; + + "gIN_Filler_AVM363_En" := "DI_Flr2_PROD_Request"; + + // Network 52: Filler Filling (Original Language: LAD) + + "gIN_FillerBottleFilling" := "Interlocking_Variables"."FILLER_MIXER_RECEIVE"."PROD_Bott_Filling"; + + // Network 53: Filler End Flushing (Original Language: LAD) + // gBlendFillReceiveData.Prod_BottlePresence + + "gIN_FillerEndFlushing" := "Interlocking_Variables"."FILLER_MIXER_RECEIVE"."PROD_End_Flushing" OR ("gWorkshopTest" AND "gWorkshop_Filler_Signals_SIM" AND "HMI_Service"."Workshop_Test"."SIMFillerEndFlushing"); + + // Network 54: Filler End Tank (Original Language: LAD) + // gBlendFillReceiveData.Prod_End_Tank_Filling + + #TOF_INSTANCE_33(IN := "Interlocking_Variables"."FILLER_MIXER_RECEIVE"."PROD_End_Tank_Filling" OR ("gWorkshopTest" AND "gWorkshop_Filler_Signals_SIM" AND "HMI_Service"."Workshop_Test"."SIMFillerEndTankFilling"), PT := T#2S); // TODO: Declarar #TOF_INSTANCE_33 : TOF; + + "gIN_FillerEndTankFilling" := #TOF_INSTANCE_33.Q AND "mFillerEndTankFillingON"; + + // Network 55: Rinse Complete (Original Language: LAD) + + "System_RunOut_Variables"."In_Flr_FastRinseComplete" := "Interlocking_Variables"."SIMO_FILLER_REC_DATA"."CIP_RinseCompleted" OR "Interlocking_Variables"."FILLER_MIXER_RECEIVE"."RINSE_Ended"; + + // Network 56: Last Container (Original Language: LAD) + + "System_RunOut_Variables"."In_Flr_LastContainer" := "DI_Flr_EndProdLastBottleFilled" OR "Interlocking_Variables"."SIMO_FILLER_REC_DATA"."PROD_Last_Bottle"; + + // Network 57: Water Rinser Request (Original Language: LAD) + + "System_RunOut_Variables"."In_Flr_WaterRinseRequest" := "Interlocking_Variables"."SIMO_FILLER_REC_DATA"."Fast_ChangeOver_WaterReq" OR "Interlocking_Variables"."SIMO_FILLER_REC_DATA"."CIP_RinseRequest"; + + // Network 58: Filler AVM346 En (Original Language: LAD) + + "gIN_Filler_AVM346_En" := "Interlocking_Variables"."FILLER_MIXER_RECEIVE"."GEN_AVM346_Enable" OR ("HMI_Service"."Workshop_Test"."SIMFillerAVM346Enable" AND "gWorkshopTest"); + + // Network 59: Filler CIP Request (Original Language: LAD) + + #TON_INSTANCE_30(IN := "DI_Flr1_CIP/RinseFiller" OR "gWorkshopTest", PT := T#5S); // TODO: Declarar #TON_INSTANCE_30 : TON; + + "gIN_FillerCIPRequest" := #TON_INSTANCE_30.Q; + + // Network 60: Filler2 CIP Request (Original Language: LAD) + + #TON_INSTANCE_28(IN := "DI_Flr2_CIP/RinseFiller" OR "gWorkshopTest", PT := T#5S); // TODO: Declarar #TON_INSTANCE_28 : TON; + + "gIN_Filler2CIPRequest" := #TON_INSTANCE_28.Q; + + // Network 61: Filler CIp Cycle Ended (Original Language: LAD) + + "gIN_FillerCIPCycleEnded" := "Interlocking_Variables"."SIMO_FILLER_REC_DATA"."CIP_FlipCompleted" OR "Interlocking_Variables"."FILLER_MIXER_RECEIVE"."CIP_FlipFlop_Completed"; + + // Network 62: From Filler Drain Completed (Original Language: LAD) + + "gIN_FillerCIPDrainCompl" := "DI_Flr1_CIP_DrainComplete" OR "Interlocking_Variables"."SIMO_FILLER_REC_DATA"."CIP_DrainCompleted"; + + // Network 63: From Filler Spare (Original Language: LAD) + + "gIN_FillerCIPChangeReady" := "DI_Flr1_CIP/RinseFiller" OR "DI_Flr_CIP_RecoverReq"; + + // Network 64: From Filler CIP Open AVM313 (Original Language: LAD) + + "T121"(IN := "T122" AND "gBlenderCIPMode" AND "Procedure_Variables"."Blender_Run"."Latch", PT := S5T#30S); // TODO: Declarar "T121" : TON; + + // Network 65: AVM313 Cip Pulsing ON (Original Language: LAD) + + "gIN_FillerCIPOpen_AVM313" := "Interlocking_Variables"."FILLER_MIXER_RECEIVE"."CIP_Open_AVM313" OR ("HMI_Device"."PPM303"."Out" AND "T121"); + + // Network 66: From Filler Drain Selecteted (Original Language: LAD) + + "gIN_FillerCIPDrainSelect" := "Interlocking_Variables"."FILLER_MIXER_RECEIVE"."DREN_Selected"; + + // Network 67: Filler Speed (Original Language: LAD) + + "mCalc" := "Interlocking_Variables"."FILLER_MIXER_RECEIVE"."Filler_Speed"; + + "Filler_Head_Variables"."Filler_Speed" := "mCalc" * 1.0; + + // Network 68: Filler Bottles Count (Original Language: LAD) + + "mAuxDI" := "Interlocking_Variables"."FILLER_MIXER_RECEIVE"."RunOut_BottleCount"; + + "System_RunOut_Variables"."FillerBottleCount" := "mAuxDI"; + + // Network 69: From CIP Room Drain Request (Original Language: LAD) + + "gIN_CIP_DrainRequest" := "Interlocking_Variables"."CIP_REC_DATA"."Drain_Request" OR "Interlocking_Variables"."SIDEL_CIP_REC_DATA"."Cip_DrainRequest"; + + // Network 70: From CIP Room Flood Request (Original Language: LAD) + + "gIN_CIP_TankFilling" := "DI_CIP_TankFilling" OR "Interlocking_Variables"."SIDEL_CIP_REC_DATA"."Cip_FloodingRequest"; + + // Network 71: From CIP Room CIP running (Original Language: LAD) + + "gIN_CIP_CIPRunning" := "DI_CIP_CIP_Rinse" OR "DI_CIP_CIP_Enable"; + + "gIN_CIP_CIPMode" := "DI_CIP_CIP_Rinse" OR "DI_CIP_CIP_Enable"; + + // Network 72: From CIP Room CIP change sanitize (Original Language: LAD) + + "gIN_CIP_ChangeSanitize" := "Interlocking_Variables"."CIP_REC_DATA"."Change_Sanitize" OR "Interlocking_Variables"."SIDEL_CIP_REC_DATA"."CIP_RecoveryRequest"; + + // Network 73: From CIP Room CIP completed (Original Language: LAD) + + "gIN_CIP_CIPCompleted" := "DI_CIP_CleaningCompleted" OR "Interlocking_Variables"."CIP_REC_DATA"."Completed"; + + // Network 74: From CIP Room CIP Product Sending (Original Language: LAD) + + "gIN_CIP_CIPProdSending" := "DI_CIP_CIP_Enable" OR "Interlocking_Variables"."SIDEL_CIP_REC_DATA"."Cip_ProductSending"; + + // Network 75: From CIP Room CIP Fault (Original Language: LAD) + + "gIN_CIP_Fault" := ("DI_CIP_CleaningFault" AND "gWorkshopTest") OR ("Interlocking_Variables"."SIDEL_CIP_REC_DATA"."CIP_CleaningAlarm" AND "gWorkshopTest"); + + // Network 76: Chiler Ammonia level too high (Original Language: LAD) + + "HMI_Alarms"."gH_Message" := "gGencoldChillerEn" AND "Blender_Variables_Pers"."gCoolerEnabled" AND "gWorkshopTest" AND (("gProductChillerEn" AND "DI_Ammonia_High_Lev_Prod" AND ("HMI_Variables_Status"."Procedures"."ColdRinseRun" OR "gBlenderProdMode")) OR ("gWaterChillerEn" AND "DI_AmmoniaHighLev_Water" AND ("HMI_Variables_Status"."Procedures"."ColdRinseRun" OR "gBlenderProdMode"))); + + "gIN_AmmoniaHighLevel" := "gGencoldChillerEn" AND "Blender_Variables_Pers"."gCoolerEnabled" AND "gWorkshopTest" AND (("gProductChillerEn" AND "DI_Ammonia_High_Lev_Prod" AND ("HMI_Variables_Status"."Procedures"."ColdRinseRun" OR "gBlenderProdMode")) OR ("gWaterChillerEn" AND "DI_AmmoniaHighLev_Water" AND ("HMI_Variables_Status"."Procedures"."ColdRinseRun" OR "gBlenderProdMode"))); + + // Network 77: UV Lamp Ready (Original Language: LAD) + + #TON_INSTANCE_25(IN := "DI_UV_Lamp_Ready", PT := T#30s); // TODO: Declarar #TON_INSTANCE_25 : TON; + + "Blender_Variables"."gInUVLampReady" := #TON_INSTANCE_25.Q; + + // Network 78: UV Lamp (Original Language: LAD) + + "HMI_Alarms"."gH_Message" := "DI_UV_Lamp_Ready" AND "Blender_Variables"."gInUVLampReady"; + + // Network 79: UV Lamp (Original Language: LAD) + + #TON_INSTANCE_27(IN := "DI_UV_Lamp_Ready" AND "gOUT_UVLamp_ONOFF", PT := T#5S); // TODO: Declarar #TON_INSTANCE_27 : TON; + + "Blender_Variables"."gInUVLampAlarm" := #TON_INSTANCE_27.Q; + + // Network 80: UV Lamp (Original Language: LAD) + + #TON_INSTANCE_28(IN := "DI_UV_Lamp_Ready" AND "gOUT_UVLamp_ONOFF", PT := T#3s); // TODO: Declarar #TON_INSTANCE_28 : TON; + + "gUVLampHighTemperature" := "mUVLampDelayTempHighON" AND #TON_INSTANCE_28.Q; + + // Network 81: mAI_RVM301 (Original Language: STL) + + // --- BEGIN STL Network 81 --- + + AN "AUX FALSE" + A "AUX FALSE" + JNB _009 + L "P_AI_RVM301" + T "mAI_RVM301" + SET + SAVE + CLR + _009: A _Statusword_? + = LX26.0 + A LX26.0 + A_BRACK + L "mAI_RVM301" + L 0 + LE_I + BRACKET + JNB _00a + L 0 + T "mAI_RVM301" + _00a: NOP_0 + A LX26.0 + A_BRACK + L "mAI_RVM301" + L 27648 + GT_I + BRACKET + JNB _OOb + L 27648 + T "mAI_RVM301" + _OOb: NOP_0 + + // --- END STL Network 81 --- + + // Network 82: Read Analog Input (Original Language: LAD) + + ReadAnalogIn(ANALOG := "HMI_Instrument"."RVM301", MAX_Analog_Value := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := 0, PEW := "mAI_RVM301"); + + // Network 83: Prod Tank Pressure Fault (Original Language: LAD) + + IF "AUX FALSE" THEN + "mRealTemp" := "HMI_Instrument"."RVM301"."PV" - "HMI_PID"."RVM301"."Out"; + END_IF; + + // Network 84: RVM301 Fault (Original Language: LAD) + + #TON_INSTANCE_29(IN := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" AND "HMI_Instrument"."RVM301"."Config" AND "mProdTankPressValveFault", PT := T#6s); // TODO: Declarar #TON_INSTANCE_29 : TON; + + "gRVM301_Fault" := #TON_INSTANCE_29.Q; + + // Network 85: TTN321 (Original Language: LAD) + // DB972.DBW36 = 27648 + + ReadAnalogIn(ANALOG := "HMI_Instrument"."TTN321", MAX_Analog_Value := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := 0, PEW := "P_AI_TTN321"); + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" THEN + "Deair_Water_Temp"(i_Enable := "AUX TRUE", i_Num := 20, i_Value := "HMI_Instrument"."TTN321"."PV"); + END_IF; + + "mDummy" := TRUE; + + // Network 86: PCM306 (Original Language: LAD) + // DB972.DBW36 = 27648 + + IF "gBlenderCIPMode" THEN + ReadAnalogIn(ANALOG := "HMI_Instrument"."PCM306", MAX_Analog_Value := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := 0, PEW := "P_AI_PCM306"); + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" THEN + "CO2InjPressFlted"(i_Enable := "AUX TRUE", i_Num := 10, i_Value := "HMI_Instrument"."PCM306"."PV"); + END_IF; + + "mDummy" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" OR "gBlenderCIPMode"; + + // Network 87: To HMI - Instrument in fault (Original Language: LAD) + + IF "HMI_PID"."PCM306"."Sp" > 1.0 THEN + "PCM306_MaxError" := "HMI_PID"."PCM306"."Sp" * 0.15; + END_IF; + + IF "HMI_PID"."PCM306"."Sp" > 1.0 THEN + "PCM306_Error" := "HMI_Instrument"."PCM306"."PV" - "HMI_PID"."PCM306"."Sp"; + END_IF; + + // Network 88: PTM308 (Original Language: LAD) + // DB972.DBW36 = 27648 + + IF "AUX FALSE" THEN + ReadAnalogIn(ANALOG := "HMI_Instrument"."PTM308", MAX_Analog_Value := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := 0, PEW := "P_AI_PTM308"); + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" THEN + "NorgrenPressSafety"(i_Enable := "AUX TRUE", i_Num := 5, i_Value := "HMI_Instrument"."PTM308"."PV"); + END_IF; + + "mDummy" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" OR "AUX FALSE"; + + // Network 89: LTM302 (Original Language: LAD) + + ReadAnalogIn(ANALOG := "HMI_Instrument"."LTM302", MAX_Analog_Value := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := 0, PEW := "P_AI_LTM302"); + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" THEN + "Product_Tank_Level"(i_Enable := "AUX TRUE", i_Num := 10, i_Value := "HMI_Instrument"."LTM302"."PV"); + END_IF; + + "mDummy" := TRUE; + + // Network 90: CTS302 (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Conductimeter_Profibus" AND "AUX FALSE" THEN + ReadAnalogIn(ANALOG := "HMI_Instrument"."CTS302", MAX_Analog_Value := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := 0, PEW := "P_AI_CTS302"); + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" THEN + "C1_Conductivity_Caustic"(i_Enable := "AUX TRUE", i_Num := 10, i_Value := "HMI_Instrument"."CTS302"."PV"); + END_IF; + + "mDummy" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Conductimeter_Profibus" AND "AUX FALSE"); + + // Network 91: CTS301 (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Conductimeter_Profibus" AND "AUX FALSE" THEN + ReadAnalogIn(ANALOG := "HMI_Instrument"."CTS301", MAX_Analog_Value := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := 0, PEW := "P_AI_CTS301"); + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" THEN + "C1_Conductivity_Water"(i_Enable := "AUX TRUE", i_Num := 10, i_Value := "HMI_Instrument"."CTS301"."PV"); + END_IF; + + "mDummy" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Conductimeter_Profibus" AND "AUX FALSE"); + + // Network 92: TTS305_1 (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Conductimeter_Profibus" AND "AUX FALSE" THEN + ReadAnalogIn(ANALOG := "HMI_Instrument"."TTS305_1", MAX_Analog_Value := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := 0, PEW := "P_AI_CIPReturnTemperature"); + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" THEN + "CIP_Retur_Temperature"(i_Enable := "AUX TRUE", i_Num := 10, i_Value := "HMI_Instrument"."TTS305_1"."PV"); + END_IF; + + "mDummy" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Conductimeter_Profibus" AND "AUX FALSE"); + + // Network 93: Filler Level (Original Language: LAD) + + IF "AUX FALSE" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0) THEN + ReadAnalogIn(ANALOG := "HMI_Instrument"."_FillerLevel", MAX_Analog_Value := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := 0, PEW := "P_AI_FillerLevel"); + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" THEN + "Fille_Level"(i_Enable := "AUX TRUE", i_Num := 10, i_Value := "HMI_Instrument"."_FillerLevel"."PV"); + END_IF; + + "mDummy" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" OR ("AUX FALSE" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)); + + // Network 94: CTM304 (Original Language: LAD) + + IF "AUX FALSE" THEN + ReadAnalogIn(ANALOG := "HMI_Instrument"."CTM304", MAX_Analog_Value := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := 0, PEW := "P_AI_CTM304"); + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" THEN + "Product_Conductivity"(i_Enable := "AUX TRUE", i_Num := 4, i_Value := "HMI_Instrument"."CTM304"."PV"); + END_IF; + + "mDummy" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" OR "AUX FALSE"; + + // Network 95: PTN313 (Original Language: LAD) + + IF "AUX FALSE" THEN + ReadAnalogIn(ANALOG := "HMI_Instrument"."PTN313", MAX_Analog_Value := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := 0, PEW := "P_AI_PTN313"); + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" THEN + "Deaireator_Pressure"(i_Enable := "AUX TRUE", i_Num := 4, i_Value := "HMI_Instrument"."PTN313"."PV"); + END_IF; + + "mDummy" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" OR "AUX FALSE"; + + // Network 96: Gas Factor (Original Language: LAD) + + SEL_R(G := "Blender_Variables_Pers"."gCarboStillProduct" OR "gBlenderCIPMode", IN0 := 0.9848858, IN1 := 1.235718); + + // Network 97: RVN305 (Original Language: LAD) + + SEL_R(G := "HMI_Service"."Workshop_Test"."SIMTestWithGas" AND "gWorkshopTest", IN0 := "Blender_Variables"."gActualGasFactor", IN1 := 1.0); + + SEL_R(G := Ne("Blender_Variables"."gActualGasFactor", 0.0), IN0 := 1.0, IN1 := "mFTFS"); + + "HMI_Instrument"."RVN305"."Span" := "Blender_Variables"."gFlowTronic" / "mFTFS"; + + // Network 98: RVN304 (Original Language: LAD) + + ReadAnalogIn(ANALOG := "HMI_Instrument"."RVN304", MAX_Analog_Value := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := 0, PEW := "P_AI_RVN304"); + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" THEN + "HMI_Instrument"."RVN304"."PVFiltered" := "HMI_Instrument"."RVN304"."PV"; + END_IF; + + "mDummy" := TRUE; + + // Network 99: RVN304 Fault (Original Language: LAD) + + IF "HMI_PID"."RVN304"."Sp" > 100.0 THEN + "mRealTemp" := "HMI_Instrument"."RVN304"."PVFiltered" - "HMI_PID"."RVN304"."Sp"; + END_IF; + + // Network 100: RVN304 Fault (Original Language: LAD) + + #TON_INSTANCE_30(IN := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" AND "HMI_Instrument"."RVN304"."Config" AND "mRVN304Fault", PT := T#1M); // TODO: Declarar #TON_INSTANCE_30 : TON; + + "gRVN304Fault" := #TON_INSTANCE_30.Q AND "AUX FALSE"; + + // Network 101: RVN305 (Original Language: LAD) + + IF "HMI_Device"."AVN328"."Out" AND "HMI_Device"."AVN350"."Out" THEN + ReadAnalogIn(ANALOG := "HMI_Instrument"."RVN305", MAX_Analog_Value := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := 0, PEW := "P_AI_RVN305"); + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" THEN + "DeairValveFlted"(i_Enable := "AUX TRUE", i_Num := 4, i_Value := "HMI_Instrument"."RVN305"."PV"); + END_IF; + + "mDummy" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" OR ("HMI_Device"."AVN328"."Out" AND "HMI_Device"."AVN350"."Out"); + + // Network 102: RVN305 Fault (Original Language: LAD) + + IF "HMI_PID"."RVN305"."Sp" > 100.0 THEN + "mRealTemp" := "HMI_Instrument"."RVN305"."PVFiltered" - "HMI_PID"."RVN304"."Sp"; + END_IF; + + // Network 103: RVN305 Fault (Original Language: LAD) + + #TON_INSTANCE_30(IN := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" AND "HMI_Instrument"."RVN304"."Config" AND "mRVN304Fault", PT := T#1M); // TODO: Declarar #TON_INSTANCE_30 : TON; + + "gRVN305Fault" := #TON_INSTANCE_30.Q AND "AUX FALSE"; + + // Network 104: RVN305 Filtered (Original Language: LAD) + + SEL_R(G := "HMI_Device"."AVN350"."Out", IN0 := 0.0, IN1 := "HMI_Instrument"."RVN305"."PVFiltered"); + + // Network 105: Product Tank Pressure (Original Language: LAD) + // Product Tank Pressure + // DB972.DBW36 = 27648 + + IF "AUX FALSE" THEN + ReadAnalogIn(ANALOG := "HMI_Instrument"."_ProductO2Conc", MAX_Analog_Value := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := 0, PEW := "P_AI_ProductO2"); + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" THEN + "ProductO2Conc"(i_Enable := "AUX TRUE", i_Num := 4, i_Value := "HMI_Instrument"."_ProductO2Conc"."PV"); + END_IF; + + "mDummy" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" OR "AUX FALSE"; + + // Network 106: No Test (Original Language: LAD) + + IF "gWorkshopTest" THEN + "HMI_Service"."Workshop_Test"."CO2TestRequest" := FALSE; + END_IF; + + IF "gWorkshopTest" THEN + "HMI_Service"."Workshop_Test"."SIMCipMode" := FALSE; + END_IF; + + IF "gWorkshopTest" THEN + "HMI_Service"."Workshop_Test"."SIMCipRunning" := FALSE; + END_IF; + + IF "gWorkshopTest" THEN + "HMI_Service"."Workshop_Test"."SIMCipChangeSanitize" := FALSE; + END_IF; + + IF "gWorkshopTest" THEN + "HMI_Service"."Workshop_Test"."SIMCipDrainRequest" := FALSE; + END_IF; + + IF "gWorkshopTest" THEN + "HMI_Service"."Workshop_Test"."SIMCipCompleted" := FALSE; + END_IF; + + IF "gWorkshopTest" THEN + "HMI_Service"."Workshop_Test"."SIMCipCausticSanitizeRun" := FALSE; + END_IF; + + IF "gWorkshopTest" THEN + "HMI_Service"."Workshop_Test"."SIMFillerAVM346Enable" := FALSE; + END_IF; + + IF "gWorkshopTest" THEN + "HMI_Service"."Workshop_Test"."SIMFillerAVM362Enable" := FALSE; + END_IF; + + // Network 107: Digital Scanner (Original Language: LAD) + + Input_DigitalScanner(); + + // Network 108: Digital Ctrl (Original Language: LAD) + + Input_DigitalCtrl(); + + // Network 109: CIP Hot Water Sending to Mixer (Original Language: LAD) + + "gIN_CIP_HotWaterSending" := "DI_CIP_HotWaterSending"; + + // Network 110: CIP Soda Tank is able to receive soda from mixer (Original Language: LAD) + + "gIN_CIP_FreeSodaTank" := "DI_CIP_FreeSodaTank"; + + // Network 111: From CIPRoom (Original Language: LAD) + + "gIN_CIP_ChemicalProd" := "DI_CIP_ChemicalProd"; + + // Network 112: MIX - Supplies Alarm (Original Language: LAD) + + "gAmmoniaCompressor_Fault" := "gGencoldChillerEn" AND "DI_Ammonia_CompressorReady" AND "gIN_VoltageOk" AND "gBlenderProdMode"; + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Input_CheckFlowMetersSta.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Input_CheckFlowMetersSta.md new file mode 100644 index 0000000..f2b8d7f --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Input_CheckFlowMetersSta.md @@ -0,0 +1,198 @@ +```pascal +FUNCTION "Input_CheckFlowMetersSta" : Void +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : TASK2 +NAME : 'Name' +VERSION : 1.0 + VAR_TEMP + WaterFlow_State : Int; + WaterTot_State : Int; + Syrup1Flow_State : Int; + CO2Flow_State : Int; + ProductFlow_State : Int; + ProductTot_State : Int; + END_VAR + + +BEGIN + + + #WaterFlow_State := BYTE_TO_INT("Profibus_Variables".gFTN301_Flow_State); + #WaterTot_State := BYTE_TO_INT("Profibus_Variables".gFTN301_Tot_State); + #Syrup1Flow_State := BYTE_TO_INT("Profibus_Variables".gFTP302_Flow_State); + #CO2Flow_State := BYTE_TO_INT("Profibus_Variables".gFTM303_Flow_State); + #ProductFlow_State := BYTE_TO_INT("Profibus_Variables".gVFM_ProductFlow_State); + #ProductTot_State := BYTE_TO_INT("Profibus_Variables".gVFM_ProductTot_State); + + IF "HMI_Blender_Parameters".Processor_Options.Blender_OPT._WaterPromass THEN + CASE #WaterFlow_State OF + 16#53: + "gFTN301_EPD" := TRUE ; + "gFTN301_Fault" := FALSE ; + + 16#64: + IF "gBlenderBlending" AND NOT ("System_RunOut_Variables".FastChangeOverActivated AND "Procedure_Variables".Syr_RunOut.Done) AND NOT "gBlenderCIPMode" THEN + "gFTN301_EPD" := TRUE ; + END_IF; + "gFTN301_Fault" := FALSE ; + + 16#80: + "gFTN301_EPD":= FALSE ; + "gFTN301_Fault" := FALSE ; + + 16#9C: + "gFTN301_EPD" := FALSE ; + "gFTN301_Fault" := FALSE ; + + 16#78: + "gFTN301_EPD" := FALSE; + "gFTN301_Fault" := FALSE; + + ELSE: + "gFTN301_Fault" := TRUE ; + "gFTN301_EPD" := FALSE ; + END_CASE; + ELSE + CASE #WaterFlow_State OF + 16#47: + IF "gBlenderBlending" AND NOT ("System_RunOut_Variables".FastChangeOverActivated AND "Procedure_Variables".Syr_RunOut.Done) AND NOT "gBlenderCIPMode" THEN + "gFTN301_EPD" := TRUE ; + END_IF; + "gFTN301_Fault" := FALSE ; + + 16#80: + "gFTN301_EPD" := FALSE ; + "gFTN301_Fault" := FALSE ; + + 16#4F: + "gFTN301_EPD" := FALSE ; + "gFTN301_Fault" := FALSE ; + ELSE: + CASE #WaterTot_State OF + 16#03: + "gFTN301_Fault" := FALSE ; + "gFTN301_EPD" := FALSE ; + + 16#47: + IF "gBlenderBlending" AND NOT ("System_RunOut_Variables".FastChangeOverActivated AND "Procedure_Variables".Syr_RunOut.Done) AND NOT "gBlenderCIPMode" THEN + "gFTN301_EPD" := TRUE ; + END_IF; + "gFTN301_Fault" := FALSE ; + // ELSE: + "gFTN301_Fault" := TRUE ; + "gFTN301_EPD" := FALSE ;// + + 16#00: + "gFTN301_Fault" := FALSE; + "gFTN301_EPD" := FALSE; + END_CASE; + END_CASE; + END_IF; + + IF "Blender_Variables_Pers".gWaterRecipe THEN + "gFTP302_Fault" := FALSE ; + "gFTP302_EPD" := FALSE ; + ELSE + CASE #Syrup1Flow_State OF + 16#43: + "gFTP302_EPD" := TRUE ; + "gFTP302_Fault" := FALSE ; + + 16#53: + "gFTP302_EPD" := TRUE ; + "gFTP302_Fault" := FALSE ; + + 16#64: + "gFTP302_EPD" := TRUE ; + "gFTP302_Fault" := FALSE ; + + 16#78: + IF "gBlenderBlending" OR "Procedure_Variables".FTP302Line_Preparation.Latch THEN + "gFTP302_EPD" := TRUE; + "gFTP302_Fault" := FALSE; + END_IF; + 16#80: + "gFTP302_EPD" := FALSE ; + "gFTP302_Fault" := FALSE ; + + 16#9C: + "gFTP302_EPD" := FALSE ; + "gFTP302_Fault" := FALSE ; + ELSE: + "gFTP302_Fault" := FALSE ; + "gFTP302_EPD" := FALSE ; + END_CASE; + END_IF; + + CASE #CO2Flow_State OF + 16#43: + "gFTM303_EPD" := TRUE ; + "gFTM303_Fault" := FALSE ; + + 16#53: + "gFTM303_EPD" := TRUE ; + "gFTM303_Fault" := FALSE ; + + 16#64: + "gFTM303_EPD" := TRUE ; + "gFTM303_Fault" := FALSE ; + + 16#80: + "gFTM303_EPD" := FALSE ; + "gFTM303_Fault" := FALSE ; + + 16#9C: + "gFTM303_EPD" := FALSE ; + "gFTM303_Fault" := FALSE ; + ELSE: + "gFTM303_Fault" := TRUE ; + "gFTM303_EPD" := FALSE ; + END_CASE; + + IF "gBlenderBlending" AND NOT ("System_RunOut_Variables".FastChangeOverActivated AND "Procedure_Variables".Syr_RunOut.Done) AND NOT "gBlenderCIPMode" AND "Procedure_Variables".BlendFill_StartUp.Done THEN + CASE #ProductFlow_State OF + 16#47: + IF "gBlenderBlending" AND NOT ("System_RunOut_Variables".FastChangeOverActivated AND "Procedure_Variables".Syr_RunOut.Done) AND NOT "gBlenderCIPMode" AND "Procedure_Variables".BlendFill_StartUp.Done THEN + "gProductVFM_EPD" := TRUE ; + END_IF; + "gProductVFM_Fault" := FALSE ; + 16#80: + "gProductVFM_EPD" := FALSE ; + "gProductVFM_Fault" := FALSE ; + ELSE: + CASE #ProductTot_State OF + 16#47: + IF "gBlenderBlending" AND NOT ("System_RunOut_Variables".FastChangeOverActivated AND "Procedure_Variables".Syr_RunOut.Done) AND NOT "gBlenderCIPMode" AND "Procedure_Variables".BlendFill_StartUp.Done THEN + "gProductVFM_EPD" := TRUE ; + END_IF; + "gProductVFM_Fault" := FALSE ; + ELSE: + "gProductVFM_Fault" := TRUE ; + "gProductVFM_EPD" := FALSE ; + END_CASE; + END_CASE; + ELSE + "gProductVFM_Fault" := FALSE ; + "gProductVFM_EPD" := FALSE ; + END_IF; + + IF "HMI_Blender_Parameters".Processor_Options.Blender_OPT._Simulation OR "gBlenderCIPMode" OR "HMI_Blender_Parameters".Processor_Options.Blender_OPT._FlowMeterType THEN + "gFTN301_Fault" := FALSE ; + "gFTN301_EPD" := FALSE ; + "gFTP302_Fault" := FALSE ; + "gFTP302_EPD" := FALSE ; + "gProductVFM_Fault" := FALSE ; + "gProductVFM_EPD" := FALSE ; + END_IF; + + IF "HMI_Blender_Parameters".Processor_Options.Blender_OPT._Simulation OR "gBlenderCIPMode" OR NOT "HMI_Blender_Parameters".Processor_Options.Blender_OPT._CarboPresent OR "HMI_Blender_Parameters".Processor_Options.Blender_OPT._FlowMeterType THEN + "gFTM303_Fault" := FALSE ; + "gFTM303_EPD" := FALSE ; + END_IF; + + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Input_Data.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Input_Data.md new file mode 100644 index 0000000..49805ab --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Input_Data.md @@ -0,0 +1,415 @@ +```pascal +// Block Type: InstanceDB +// Block Number: 940 + +DATA_BLOCK "Input_Data" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + CO2_LowPressure : Bool := FALSE; + H_Fault_Temp : Bool := FALSE; + L_Fault_Temp : Bool := FALSE; + mRealTemp : Real := 120.2518; + mCO2PressOkON : Bool := FALSE; + mDelayFaultAVM346ON : Bool := FALSE; + mDelayFaultAVM362ON : Bool := FALSE; + mDelayFaultAVM327ON : Bool := FALSE; + mDelayFaultAVM328ON : Bool := FALSE; + mDeairTank_VacuumOkON : Bool := FALSE; + mDeairTank_VacuumFltON : Bool := FALSE; + mFlrRinseTankMaxLvlON : Bool := FALSE; + mFlrRinseTankMinLvlON : Bool := FALSE; + mFiller1ProReqDlyON : Bool := FALSE; + mFiller2ProReqDlyON : Bool := FALSE; + mFillerEndTankFillingON : Bool := FALSE; + mFillerCIPReadyDlyON : Bool := FALSE; + mUVLampDelayReadyON : Bool := FALSE; + mUVLampDelayFaultON : Bool := FALSE; + mUVLampDelayTempHighON : Bool := FALSE; + mDeairTank_DelayFaultON : Bool := FALSE; + mRVM301_DelayFaultON : Bool := FALSE; + mCO2PressOk : STRUCT + PT : Time; + ET : Time := T#0MS; + IN : Bool := FALSE; + Q : Bool := FALSE; + END_STRUCT; + + mDelayFaultAVP361 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM342 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM341 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM346 : STRUCT + PT : Time; + ET : Time := T#0MS; + IN : Bool := FALSE; + Q : Bool := FALSE; + END_STRUCT; + + mDelayFaultAVM362 : STRUCT + PT : Time; + ET : Time := T#0MS; + IN : Bool := FALSE; + Q : Bool := FALSE; + END_STRUCT; + + mDelayFaultAVM369 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM327 : STRUCT + PT : Time; + ET : Time := T#0MS; + IN : Bool := FALSE; + Q : Bool := FALSE; + END_STRUCT; + + mDelayFaultAVN314 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM317 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM316 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM315 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM314 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM313 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM312 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM311 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM323_2 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM323_1 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM321 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM324 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + mDelayFaultAVN318 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM322 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM326 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + mDelayFaultAVN328 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + mDelayFaultAVN327 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM323 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM388 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM389 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + mDelayFaultAVN395 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + mDelayFaultAVP317 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + mDelayFaultAVP316_1 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + mDelayFaultAVP316 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + mDelayFaultAVP317_1 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + mDelayFaultAVP391 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + mDelayFaultAVP344 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + mDelayFaultAVP324 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + mDelayFaultAVM328 : STRUCT + PT : Time := T#0MS; + ET : Time := T#0MS; + IN : Bool := FALSE; + Q : Bool := FALSE; + END_STRUCT; + + mDeairTank_VacuumOk : STRUCT + PT : Time; + ET : Time; + IN : Bool := FALSE; + Q : Bool := TRUE; + END_STRUCT; + + mDeairTank_VacuumFlt : STRUCT + PT : Time; + ET : Time := T#0MS; + IN : Bool := FALSE; + Q : Bool := TRUE; + END_STRUCT; + + mFlrRinseTankMaxLvl : STRUCT + PT : Time := T#0MS; + ET : Time := T#0MS; + IN : Bool := FALSE; + Q : Bool := FALSE; + END_STRUCT; + + mFlrRinseTankMinLvl : STRUCT + PT : Time := T#0MS; + ET : Time := T#0MS; + IN : Bool := FALSE; + Q : Bool := FALSE; + END_STRUCT; + + mFillerProReqDly : STRUCT + PT : Time; + ET : Time; + IN : Bool := FALSE; + Q : Bool := TRUE; + END_STRUCT; + + mFiller2ProReqDly : STRUCT + PT : Time; + ET : Time; + IN : Bool := TRUE; + Q : Bool; + END_STRUCT; + + mFillerEndTankFilling : STRUCT + PT : Time; + ET : Time := T#0MS; + IN : Bool := FALSE; + Q : Bool := FALSE; + END_STRUCT; + + mFillerCIPReadyDly : STRUCT + PT : Time; + ET : Time := T#0MS; + IN : Bool := FALSE; + Q : Bool := FALSE; + END_STRUCT; + + mFiller2CIPReadyDly : STRUCT + PT : Time; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + mUVLampDelayReady : STRUCT + PT : Time; + ET : Time := T#0MS; + IN : Bool := TRUE; + Q : Bool := FALSE; + END_STRUCT; + + mUVLampDelayFault : STRUCT + PT : Time := T#0MS; + ET : Time := T#0MS; + IN : Bool := FALSE; + Q : Bool := FALSE; + END_STRUCT; + + mUVLampDelayTempHigh : STRUCT + PT : Time := T#0MS; + ET : Time := T#0MS; + IN : Bool := FALSE; + Q : Bool := FALSE; + END_STRUCT; + + mDeairTank_DelayFault : STRUCT + PT : Time; + ET : Time := T#0MS; + IN : Bool := FALSE; + Q : Bool := FALSE; + END_STRUCT; + + mRVM301_DelayFault : STRUCT + PT : Time := T#0MS; + ET : Time := T#0MS; + IN : Bool := FALSE; + Q : Bool := FALSE; + END_STRUCT; + + Deair_Water_Temp : "LowPassFilter"; + Product_Tank_Level : "LowPassFilter"; + C1_Conductivity_Caustic : "LowPassFilter"; + C1_Conductivity_Water : "LowPassFilter"; + CIP_Retur_Temperature : "LowPassFilter"; + Fille_Level : "LowPassFilter"; + Syrup_Conductivity : "LowPassFilter"; + Product_Conductivity : "LowPassFilter"; + Deaireator_Pressure : "LowPassFilter"; + CO2InjPressFlted : "LowPassFilter"; + DeairValveFlted : "LowPassFilter"; + ProductO2Conc : "LowPassFilter"; + NorgrenPressSafety : "LowPassFilter"; + mDelayFaultAVM317_1 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Input_DigitalCtrl.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Input_DigitalCtrl.md new file mode 100644 index 0000000..2ca6506 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Input_DigitalCtrl.md @@ -0,0 +1,26 @@ +```pascal +// Block Type: FC +// Block Number: 1720 +// Original Network Languages: LAD + +FUNCTION "Input_DigitalCtrl" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +BEGIN + + // Network 1: Waiting condition (Original Language: LAD) + + "HMI_Digital"."LSN301L"."Wait" := ("gCIP_DeairTank_Flood" AND "Procedure_Variables"."Blender_Run"."Latch" AND "HMI_Variables_Status"."Procedures"."CIP_DeairTankFloodRun") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Deaireation" AND Eq("Blender_Procedure Data"."Deaireator_StartUp"."mStepNum", 2)); + + // Network 2: Waiting condition (Original Language: LAD) + + "HMI_Digital"."LSM302L"."Wait" := ("AUX FALSE" AND Eq("Blender_Procedure Data"."ProdTankDrain"."mStepNum", 0)) OR ("AUX FALSE" AND Eq("Blender_Procedure Data"."ProdTank_RunOut"."mStepNum", 2)); + + // Network 3: Waiting condition (Original Language: LAD) + + "HMI_Digital"."FSS301"."Wait" := ("HMI_Digital"."FSS301"."Filtered" AND "CIP_Program_Variables"."CIP_Run"."Latch" AND "HMI_Device"."AVS336"."Out" AND "HMI_Device"."PPM303"."Out") OR ("HMI_Digital"."FSS301"."Filtered" AND "CIP_Program_Variables"."CIP_Run"."Latch" AND "HMI_Device"."AVS337"."Out" AND "HMI_Device"."PPM303"."Out"); + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Input_DigitalScanner.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Input_DigitalScanner.md new file mode 100644 index 0000000..03b01f0 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Input_DigitalScanner.md @@ -0,0 +1,91 @@ +```pascal +// Block Type: FC +// Block Number: 1719 +// Original Network Languages: STL + +FUNCTION "Input_DigitalScanner" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + Dim_HMI_Digital : Int; + PDim_HMI_Digital : DWord; +END_VAR + +BEGIN + + // Network 1: (Original Language: STL) + + // --- BEGIN STL Network 1 --- + + AUF "HMI_Digital" + L_DBLG + T "Dim_HMI_Digital" + L P#0.0 + L "Dim_HMI_Digital" + SLD 3 + ADD_D + T "PDim_HMI_Digital" + + // --- END STL Network 1 --- + + // Network 2: DIGITAL SCANNER (Original Language: STL) + + // --- BEGIN STL Network 2 --- + + AUF "HMI_Digital" + L P#0.0 + LAR1_ACCU1 + M011: NOP_0 + A DBX[AR1,P#0.7] + JC M012 + SET + R DBX[AR1,P#0.1] + R DBX[AR1,P#0.2] + L 0 + T DBW[AR1,P#6.0] + T DBW[AR1,P#8.0] + JU M030 + M012: AN DBX[AR1,P#0.0] + JC M022 + L 0 + T DBW[AR1,P#8.0] + A DBX[AR1,P#0.1] + JC M030 + L DBW[AR1,P#6.0] + AN CLK_0.1S + JC M013 + ADD 1 + T DBW[AR1,P#6.0] + M013: L DBW[AR1,P#2.0] + LT_I + JC M030 + SET + S DBX[AR1,P#0.1] + JU M030 + M022: L 0 + T DBW[AR1,P#6.0] + AN DBX[AR1,P#0.1] + JC M030 + L DBW[AR1,P#8.0] + AN CLK_0.1S + JC M023 + ADD 1 + T DBW[AR1,P#8.0] + M023: L DBW[AR1,P#4.0] + LT_I + JC M030 + SET + R DBX[AR1,P#0.1] + M030: NOP_0 + ADDAR1 P#10.0 + TAR1_ACCU1 + L "PDim_HMI_Digital" + LT_D + JC M011 + + // --- END STL Network 2 --- + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Inputs.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Inputs.md new file mode 100644 index 0000000..d53ef40 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Inputs.md @@ -0,0 +1,73 @@ +# Tag Table: Inputs + +| Name | Datatype | Address | Comment | +|---|---|---|---| +| `CARLOS_TESTE` | `Bool` | `%M2.2` | | +| `DI_Emergency_Pilz_On` | `Bool` | `%I0.5` | Pilz Emergency | +| `DI_LSN301L` | `Bool` | `%I0.6` | LSN301_L - Deaireator Tank Minimun Level | +| `DI_LSM302L` | `Bool` | `%I1.0` | LSM302_L - Product Tank Minimun Level | +| `DI_PPN301_SoftStart_Ovrld` | `Bool` | `%I10.0` | PPN301 - Water_Pump_SoftStart_Ovrld | +| `DI_UPSBatteryReady` | `Bool` | `%I3.7` | UPS Battery ready | +| `DI_RMM301_Closed` | `Bool` | `%I1.5` | RMM301 - Feedback OFF (VM1WATER) | +| `DI_RMP302_Closed` | `Bool` | `%I1.6` | RMP302 - Feedback OFF (VM2 SYRUP) | +| `DI_RMM303_Closed` | `Bool` | `%I1.7` | RMM303 - Feedback OFF (VM3 CO2) | +| `DI_PPN301_Contactor` | `Bool` | `%I11.0` | PPN301 - Deaireator Pump Feedback | +| `DI_PPP302_Ovrld` | `Bool` | `%I2.2` | PPP302 - Syrup Pump Overload | +| `DI_PPP302_Contactor` | `Bool` | `%I2.3` | PPP302 - Syrup Pump Feedback | +| `DI_PPM303_Ovrld` | `Bool` | `%I2.4` | PPM303 - Product Pump Overload | +| `DI_PPM306_Contactor` | `Bool` | `%I11.3` | PPM306 - Recirculating Pump Feedback | +| `DI_SyrRoom_SyrPump_Running` | `Bool` | `%I5.0` | From Syrup Room - Syrup Pump Running | +| `DI_SyrRoom_WatPumpReady` | `Bool` | `%I68.1` | From Syrup Room - Water Pump Ready | +| `DI_CIP_CIP_Rinse` | `Bool` | `%I60.1` | From CIP Running | +| `DI_CIP_Drain` | `Bool` | `%I60.2` | From CIP Drain | +| `DI_Air_InletPress_OK` | `Bool` | `%I7.1` | Air Pressure Switch | +| `P_AI_LTM302` | `Word` | `%IW100` | LTM302 - Product Tank Level | +| `P_AI_PTM304` | `Word` | `%IW102` | PTM304 - Product Tank Pressure | +| `P_AI_LTP303` | `Word` | `%IW808` | LTP303 - Syrup Tank Level | +| `P_AI_TTN321` | `Word` | `%IW112` | TTN321 - Deaireator Temperature | +| `P_AI_PTF203` | `Word` | `%IW810` | PTF203 - Differential Pressure | +| `DI_CIP_CIP_Enable` | `Bool` | `%I60.0` | From CIP Enable | +| `DI_AVM362_Open` | `Bool` | `%I102.3` | AVM362 - Feedback ON | +| `DI_AVM362_Close` | `Bool` | `%I112.3` | AVM362 - Feedback OFF | +| `DI_AVM346_Open` | `Bool` | `%I102.2` | AVM346 - Feedback ON | +| `DI_AVM346_Close` | `Bool` | `%I112.2` | AVM346 - Feedback OFF | +| `DI_UPSAlarm` | `Bool` | `%I3.5` | UPS Alarm | +| `DI_UPSsupply` | `Bool` | `%I3.6` | UPS supply OK | +| `DI_Emergency_Pressed` | `Bool` | `%I4.3` | Electrical Panel Emergency Button | +| `P_AI_PTP338` | `Word` | `%IW816` | PTP338 - Syrup Inlet Pressure | +| `P_FTM303_Density` | `Real` | `%ID3215` | MIX - Profibus Variables | +| `P_FTM303_Density_State` | `Byte` | `%IB3219` | MIX - Profibus Variables | +| `P_FTM303_Flow` | `Real` | `%ID3200` | MIX - Profibus Variables | +| `P_FTM303_Flow_State` | `Byte` | `%IB3204` | MIX - Profibus Variables | +| `P_FTM303_Temperature` | `Real` | `%ID3225` | MIX - Profibus Variables | +| `P_FTM303_Temperature_State` | `Byte` | `%IB3229` | MIX - Profibus Variables | +| `P_FTM303_Totalizer` | `Real` | `%ID3240` | MIX - Profibus Variables | +| `P_FTM303_Totalizer_State` | `Byte` | `%IB3244` | MIX - Profibus Variables | +| `P_FTN301_Flow` | `Real` | `%ID3080` | MIX - Profibus Variables | +| `P_FTN301_Flow_State` | `Byte` | `%IB3084` | MIX - Profibus Variables | +| `P_FTN301_Totaliz_State` | `Byte` | `%IB3104` | MIX - Profibus Variables | +| `P_FTN301_Totalizer` | `Real` | `%ID3100` | MIX - Profibus Variables | +| `P_FTP302_Brix` | `Real` | `%ID2050` | MIX - Profibus Variables | +| `P_FTP302_Brix_State` | `Byte` | `%IB2054` | MIX - Profibus Variables | +| `P_FTP302_Density` | `Real` | `%ID2045` | MIX - Profibus Variables | +| `P_FTP302_Density_State` | `Byte` | `%IB2049` | MIX - Profibus Variables | +| `P_FTP302_Flow` | `Real` | `%ID2030` | MIX - Profibus Variables | +| `P_FTP302_Flow_State` | `Byte` | `%IB2034` | MIX - Profibus Variables | +| `P_FTP302_Temp` | `Real` | `%ID2055` | MIX - Profibus Variables | +| `P_FTP302_Temp_State` | `Byte` | `%IB2059` | MIX - Profibus Variables | +| `P_FTP302_Totaliz_State` | `Byte` | `%IB2074` | MIX - Profibus Variables | +| `P_FTP302_Totalizer` | `Real` | `%ID2070` | MIX - Profibus Variables | +| `DI_MaxTempAlarm` | `Bool` | `%I5.0` | Electrical Cabinet High Temperature | +| `DI_PPM306_Ovrld` | `Bool` | `%I10.3` | PPM306 - Recirculating Pump Overload | +| `DI_CIP_CleaningCompleted` | `Bool` | `%I60.3` | CIP - Cip Cleaning Completed | +| `P_AI_TTM306` | `Word` | `%IW108` | TTM306 - Chiller Temperature | +| `P_AI_RVN304` | `Word` | `%IW104` | RVN304 - Deaireation Valve | +| `P_AI_PCM306` | `Word` | `%IW106` | PCM306 - Gas Pressure Injection | +| `P_AI_ProductCO2` | `Word` | `%IW826` | Product Analizer - Product CO2 | +| `P_gPPM303_VFC_StatusWord` | `Word` | `%IW1640` | MIX - Product Pump - Profibus Variables | +| `P_gPPM303_VFC_ActualValue` | `Word` | `%IW1642` | MIX - Product Pump - Profibus Variables | +| `P_PDS_CO2` | `Real` | `%ID15060` | | +| `P_PDS_Product_Brix` | `Real` | `%ID15084` | | +| `P_PDS_Temperature` | `Real` | `%ID15104` | | +| `P_PDS_Density` | `Real` | `%ID15112` | | + diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/InputsMaster.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/InputsMaster.md new file mode 100644 index 0000000..bb09218 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/InputsMaster.md @@ -0,0 +1,191 @@ +# Tag Table: InputsMaster + +| Name | Datatype | Address | Comment | +|---|---|---|---| +| `PPN301_SoftStart_Averia` | `Bool` | `%M3003.3` | PPN301_SoftStart_Averia | +| `DI_PPN304_Contactor` | `Bool` | `%M3003.2` | PPN304 - Vaccum Pump Feedback | +| `DI_AmmoniaHighLev_Water` | `Bool` | `%M3003.1` | Water Chiller Ammonia High Level | +| `DI_Ammonia_High_Lev_Prod` | `Bool` | `%M3003.7` | Product Chiller Ammonia High Level | +| `DI_UV_Lamp_Ready` | `Bool` | `%M3004.7` | Water UV Lamp Ready | +| `DI_PPM305_Ovrld` | `Bool` | `%M3005.0` | PPM305 - Product Pump 2 Overload | +| `DI_PPN301_SoftStOvr` | `Bool` | `%I2.1` | PPN301 - Deaireator Pump Softstarter Ready | +| `DI_Product_Analyzer_Prod_NO_OK` | `Bool` | `%M3003.4` | | +| `DI_Min_Syrup_Level` | `Bool` | `%I0.7` | - Syrup Tank Minimun Level | +| `DI_DeairVacuumOk` | `Bool` | `%M3004.2` | - Deairator Vaccum Switch | +| `DI_CO2_InletPress_OK` | `Bool` | `%M3004.0` | - CO2 Inlet Pressure Switch | +| `DI_FSS301` | `Bool` | `%I7.3` | FSS301 - Local Cip Return Flow Switch | +| `DI_Water_Pump2_Contactor` | `Bool` | `%M3004.4` | PPN305 - Deaireator Pump #2 Feedback | +| `DI_RMM304_Closed` | `Bool` | `%M3004.5` | RMM304 - Feedback OFF | +| `DI_Log_Sidel` | `Bool` | `%I4.4` | Log son usuario Sidel | +| `DI_SYRUP_Runout` | `Bool` | `%M3003.5` | | +| `DI_SYR_TANK_LEVEL` | `Word` | `%MW3206` | DI_Syrup Room Tank Level % | +| `DI_SYR_COUNTER_LT` | `Word` | `%MW3210` | DI_Syrup Room Liter Counter | +| `AI_SYRUP_Cip_Phase` | `Byte` | `%MB3090` | "AI_SYRUP_Cip_Phase" | +| `AI_SYRUP_Cip_RemaningTime` | `Byte` | `%MB3089` | "AI_SYRUP_Cip_RemaningTime" | +| `AI_SYRUP_Cip_TotalTime` | `Byte` | `%MB3088` | "AI_SYRUP_Cip_TotalTime" | +| `AI_CIP_SetPoint_Temeperature` | `Byte` | `%MB3087` | "AI_CIP_SetPoint_Temeperature" | +| `AI_CIP_CIP_Total_Time` | `Int` | `%MW3116` | "AI_CIP_CIP_Total_Time" | +| `DI_CIP_Fault` | `Bool` | `%M3002.6` | From CIP Fault | +| `DI_CIP_FlpflpEn` | `Bool` | `%M3001.2` | From CIP Flip flop Drain Valve Enable | +| `DI_CIP_FirstRinsedone` | `Bool` | `%M3000.1` | From CIP First Rinse Done (without dummy Bottles | +| `DI_Flr_EndProdLastBottleFilled` | `Bool` | `%M3000.2` | From FILLER - Production done Last bottle filled | +| `DI_Flr_OpenAVM369` | `Bool` | `%M3000.3` | From FILLER - AVM369 Opening request | +| `DI_Flr_RinseMode` | `Bool` | `%M3000.4` | From FILLER Rinse Mode | +| `DI_WaterPipeCIP_Sensor` | `Bool` | `%M3000.5` | MIX - N10_I32_ | +| `DI_HVM302_Sensor` | `Bool` | `%M3000.7` | GCM302 - Manual Water Valve Closed (NO) | +| `DI_Min_Deair2_Level` | `Bool` | `%M3001.0` | LSN302_L - Deaireator Tank #2 Minimun Level | +| `DI_Water_Pump2_Ovrld` | `Bool` | `%M3001.1` | PPN305 - Deaireator Pump #2 Overload | +| `DI_Flr_CIP_CleaningAlarm` | `Bool` | `%M3002.7` | FILLER - Alarm | +| `DI_CIP_CleaningFault` | `Bool` | `%M3002.5` | CIP - Cip in Fault | +| `DI_CIP_TankFilling` | `Bool` | `%M3001.4` | CIP - Flooding Request | +| `DI_CIP_ChemicalProd` | `Bool` | `%M3001.5` | CIP - Chemical Prod [for local CIP only] | +| `DI_CIP_HotWaterSending` | `Bool` | `%M3001.6` | CIP - Hot Water Sending [for local CIP only] | +| `DI_CIP_FreeSodaTank` | `Bool` | `%M3001.7` | CIP - Soda Tank is able to receive soda from mixer [for local CIP only] | +| `DI_Flr_CIP_FloodingEnd` | `Bool` | `%M3002.0` | FILLER - Flooding End | +| `DI_Flr_CIP_RinseMode` | `Bool` | `%M3002.1` | FILLER - Rinse Mode | +| `DI_Flr_CIP_RecoverReq` | `Bool` | `%M3002.2` | FILLER - Recover Request | +| `DI_SyrRoom_Cip_Mode` | `Bool` | `%M3002.3` | Syrup Room - Cip Mode | +| `P_CTS301_Conductivity` | `Real` | `%MD3180` | MIX - Profibus Variables | +| `P_CTS301_Conductiv_State` | `Byte` | `%MB3085` | MIX - Profibus Variables | +| `P_CTS301_Temperature` | `Real` | `%MD3184` | MIX - Profibus Variables | +| `P_CTS301_Temperat_State` | `Byte` | `%MB3084` | MIX - Profibus Variables | +| `P_CTS302_Conductivity` | `Real` | `%MD3188` | MIX - Profibus Variables | +| `P_CTS302_Conductiv_State` | `Byte` | `%MB3083` | MIX - Profibus Variables | +| `P_CTS302_Temperature` | `Real` | `%MD3196` | MIX - Profibus Variables | +| `P_CTS302_Temperat_State` | `Byte` | `%MB3082` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock01_0` | `Byte` | `%MB3081` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock01_1` | `Byte` | `%MB3080` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock01_2` | `Byte` | `%MB3079` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock01_3` | `Byte` | `%MB3078` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock01_4` | `Byte` | `%MB3077` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock01_5` | `Byte` | `%MB3076` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock01_6` | `Byte` | `%MB3075` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock01_7` | `Byte` | `%MB3074` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock01_8` | `Byte` | `%MB3073` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock01_9` | `Byte` | `%MB3072` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock01_10` | `Byte` | `%MB3091` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock01_11` | `Byte` | `%MB3092` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock01_12` | `Byte` | `%MB3095` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock01_13` | `Byte` | `%MB3094` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock01_14` | `Byte` | `%MB3107` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock01_15` | `Byte` | `%MB3108` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock01_16` | `Byte` | `%MB3109` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock01_17` | `Byte` | `%MB3111` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock01_18` | `Byte` | `%MB3113` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock01_19` | `Byte` | `%MB3112` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock01_20` | `Byte` | `%MB3110` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock01_21` | `Byte` | `%MB3106` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock01_22` | `Byte` | `%MB3105` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock01_23` | `Byte` | `%MB3114` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock01_24` | `Byte` | `%MB3103` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock01_25` | `Byte` | `%MB3102` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock01_26` | `Byte` | `%MB3070` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock01_27` | `Byte` | `%MB3101` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock01_28` | `Byte` | `%MB3100` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock01_29` | `Byte` | `%MB3099` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock02_30` | `Byte` | `%MB3097` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock02_31` | `Byte` | `%MB3096` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock02_32` | `Byte` | `%MB3104` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock02_33` | `Byte` | `%MB3098` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock02_34` | `Byte` | `%MB3071` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock02_35` | `Byte` | `%MB3086` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock02_36` | `Byte` | `%MB3069` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock02_37` | `Byte` | `%MB3058` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock02_38` | `Byte` | `%MB3017` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock02_39` | `Byte` | `%MB3018` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock02_40` | `Byte` | `%MB3019` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock02_41` | `Byte` | `%MB3020` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock02_42` | `Byte` | `%MB3021` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock02_43` | `Byte` | `%MB3022` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock02_44` | `Byte` | `%MB3023` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock02_45` | `Byte` | `%MB3024` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock02_46` | `Byte` | `%MB3026` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock02_47` | `Byte` | `%MB3035` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock02_48` | `Byte` | `%MB3027` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock02_49` | `Byte` | `%MB3028` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock02_50` | `Byte` | `%MB3029` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock02_51` | `Byte` | `%MB3030` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock02_52` | `Byte` | `%MB3031` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock02_53` | `Byte` | `%MB3015` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock02_54` | `Byte` | `%MB3033` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock02_55` | `Byte` | `%MB3034` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock02_56` | `Byte` | `%MB3016` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock02_57` | `Byte` | `%MB3025` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock02_58` | `Byte` | `%MB3013` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock02_59` | `Byte` | `%MB3006` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock02_60` | `Byte` | `%MB3007` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock02_61` | `Byte` | `%MB3008` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock03_62` | `Byte` | `%MB3009` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock03_63` | `Byte` | `%MB3010` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock03_64` | `Byte` | `%MB3011` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock03_65` | `Byte` | `%MB3012` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock03_66` | `Byte` | `%MB3032` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock03_67` | `Byte` | `%MB3036` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock03_68` | `Byte` | `%MB3068` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock03_69` | `Byte` | `%MB3038` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock03_70` | `Byte` | `%MB3067` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock03_71` | `Byte` | `%MB3066` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock03_72` | `Byte` | `%MB3065` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock03_73` | `Byte` | `%MB3064` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock03_74` | `Byte` | `%MB3063` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock03_75` | `Byte` | `%MB3062` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock03_76` | `Byte` | `%MB3061` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock03_77` | `Byte` | `%MB3060` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock03_78` | `Byte` | `%MB3037` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock03_79` | `Byte` | `%MB3059` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock03_80` | `Byte` | `%MB3057` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock03_81` | `Byte` | `%MB3056` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock03_82` | `Byte` | `%MB3300` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock03_83` | `Byte` | `%MB3054` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock03_84` | `Byte` | `%MB3053` | MIX - Profibus Variables | +| `P_gPAmPDS_INBlock03_85` | `Byte` | `%MB3052` | MIX - Profibus Variables | +| `P_gMaselli_ProductBrix` | `Real` | `%MD3168` | MIX - Profibus Variables | +| `P_gMaselli_ProductTemp` | `Real` | `%MD3164` | MIX - Profibus Variables | +| `P_gMaselli_ProdPerStandard` | `Real` | `%MD3160` | MIX - Profibus Variables | +| `P_gMaselli_ProductCO2` | `Real` | `%MD3156` | MIX - Profibus Variables | +| `P_gMaselli_AlcoholVolume` | `Real` | `%MD3200` | MIX - Profibus Variables | +| `P_gMaselli_ProfibusStatus` | `Byte` | `%MB3051` | MIX - Profibus Variables | +| `P_gMaselli_ProductNumber` | `Byte` | `%MB3050` | MIX - Profibus Variables | +| `P_gPPN301_VFC_StatusWord` | `Word` | `%MW3212` | MIX - Water Pump - Profibus Variables | +| `P_gPPN301_VFC_ActualValue` | `Word` | `%MW3232` | MIX - Water Pump - Profibus Variables | +| `P_gPPP302_VFC_StatusWord` | `Word` | `%MW3248` | MIX - Syrup Pump - Profibus Variables | +| `P_gPPP302_VFC_ActualValue` | `Word` | `%MW3234` | MIX - Syrup Pump - Profibus Variables | +| `P_gPPM307_VFC_StatusWord` | `Word` | `%MW3240` | | +| `P_gPPM307_VFC_ActualVaule` | `Int` | `%MW3118` | MIX - ProductPump - Profibus Variables | +| `P_gPPM305_VFC_StatusWord` | `Word` | `%MW3242` | MIX - Product Pump 2 - Profibus Variables | +| `P_gPPM305_VFC_ActualValue` | `Word` | `%MW3244` | MIX - Product Pump 2 - Profibus Variables | +| `Tag_24` | `Real` | `%MD3144` | | +| `P_FTM303_EPD` | `Byte` | `%MB3305` | MIX - Profibus Variables | +| `P_AI_CIPHeaterTemperature` | `Word` | `%MW3250` | TTS305 - Local Cip Heating Temperature | +| `P_AI_FTM305` | `Word` | `%MW3252` | FTM305 - Storage Tank Baialage Flow | +| `P_AI_PTM308` | `Word` | `%MW3254` | PTM308 - PCM306 Infeed Pressure | +| `P_AI_CTS302` | `Word` | `%MW3256` | CTS302 - Local Cip Delivery Conductivity | +| `P_AI_CTS301` | `Word` | `%MW3258` | CTS301 - Local Cip Return Conductivity | +| `P_AI_CIPReturnTemperature` | `Word` | `%MW3260` | TTS305_1 - Local Cip Return Temperature | +| `P_AI_FillerLevel` | `Word` | `%MW3262` | Filler level | +| `P_AI_CTM304` | `Word` | `%MW3264` | CTM304 - Product Conductivity | +| `P_AI_PTN313` | `Word` | `%MW3266` | PTN313 - Deaireator Pressure (vacuostato) | +| `P_AI_RVN305` | `Word` | `%MW3268` | RVN305 - Deaireation Valve | +| `P_AI_ProductO2` | `Word` | `%MW3270` | Product Analizer - Product O2 | +| `P_AI_RVM301` | `Word` | `%IW114` | RVM301 - Product Tank Pressure Valve | +| `DI_AlarmReset` | `Bool` | `%I0.2` | PB Machine Reset | +| `DI_Ammonia_CompressorReady` | `Bool` | `%M3606.7` | Cooler Power Supply | +| `DI_AuxVoltage_On` | `Bool` | `%I0.0` | Electrical Panel Restored | +| `DI_Flr1_CIP/RinseFiller` | `Bool` | `%M3605.4` | From FILLER 1 - Cip/rinse | +| `DI_Flr1_CIP_DrainComplete` | `Bool` | `%M3605.5` | From FILLER - Cip Drain Complete | +| `DI_Flr1_PROD_ok` | `Bool` | `%M3605.2` | From Filler Producion Filling Bottles | +| `DI_Flr1_PROD_Request` | `Bool` | `%M3605.3` | From FILLER 1 - Product Request | +| `DI_Flr1_WaterRequest` | `Bool` | `%M3605.7` | From FILLER - Water Request | +| `DI_Flr2_CIP/RinseFiller` | `Bool` | `%M3606.0` | From FILLER 2 - Cip/Rinse | +| `DI_Flr2_CIP_DrainComplete` | `Bool` | `%M3606.1` | From FILLER 2 - Cip Drain Complete | +| `DI_Flr2_PROD_Request` | `Bool` | `%M3607.4` | From FILLER 2 - Product Request | +| `DI_HVP301_Sensor` | `Bool` | `%I7.2` | GCP301 - Manual Syrup Valve Closed (NO) | +| `DI_PB_HornReset` | `Bool` | `%I0.1` | PB Horn Reset | +| `DI_PB_Machine_Start` | `Bool` | `%I0.4` | PB Machine Start | +| `DI_PB_Machine_Stop` | `Bool` | `%I0.3` | PB Machine Stop | +| `DI_PPM303_Contactor` | `Bool` | `%I2.5` | PPM303 - Product Pump Feedback | +| `DI_PPN301_Ovrld` | `Bool` | `%I2.0` | PPN301 - Deaireator Pump Overload | +| `DI_SyrRoom_Alarm_Reset` | `Bool` | `%M3605.0` | From Syrup Room - Alarm Reset | +| `DI_SyrRoom_Pump_Ready` | `Bool` | `%M3606.5` | Syrup Room - Pump ready | +| `DI_CIP_End` | `Bool` | `%M3660.3` | From CIP End (Completed) | + diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Instrument_Scanner.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Instrument_Scanner.md new file mode 100644 index 0000000..f76e01e --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Instrument_Scanner.md @@ -0,0 +1,64 @@ +```pascal +// Block Type: FC +// Block Number: 1968 +// Original Network Languages: STL + +FUNCTION "Instrument_Scanner" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + mAirPressureOk : Bool; + Dim_HMI_Instrument : Int; + PDim_HMI_Instrument : DWord; +END_VAR + +BEGIN + + // Network 1: MIX - SAFETIES (Original Language: STL) + + // --- BEGIN STL Network 1 --- + + AUF "HMI_Instrument" + L_DBLG + T "Dim_HMI_Instrument" + L P#0.0 + L "Dim_HMI_Instrument" + SLD 3 + ADD_D + T "PDim_HMI_Instrument" + + // --- END STL Network 1 --- + + // Network 2: MIX - SAFETIES (Original Language: STL) + + // --- BEGIN STL Network 2 --- + + A "gIN_VoltageOk" + JCN M012 + SET + R "gInstrumentFault" + AUF "HMI_Instrument" + L P#0.0 + LAR1_ACCU1 + M010: SET + AN DBX[AR1,P#0.7] + O DBX[AR1,P#0.4] + JC M011 + A DBX[AR1,P#0.7] + AN DBX[AR1,P#0.4] + A DBX[AR1,P#0.3] + S "gInstrumentFault" + M011: NOP_0 + ADDAR1 P#26.0 + TAR1_ACCU1 + L "PDim_HMI_Instrument" + LT_D + JC M010 + M012: NOP_0 + + // --- END STL Network 2 --- + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Integral.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Integral.md new file mode 100644 index 0000000..793b348 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Integral.md @@ -0,0 +1,34 @@ +```pascal +FUNCTION_BLOCK "Integral" +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : 'Function' +NAME : 'Name' +VERSION : 1.0 + VAR_INPUT + i_NewValue : Real; + i_IntCycle : Real; + END_VAR + + VAR_IN_OUT + Out_Integral : Real; + END_VAR + + VAR + mOldValue : Real; + END_VAR + + +BEGIN + + //Trapezoidal Integral Method + + (* classic code: #Out_Integral := #Out_Integral + ( #mOldValue + (#i_NewValue - #mOldValue ) * 0.5 ) * #i_IntCycle;*) + #Out_Integral := #Out_Integral + ( #mOldValue + (#i_NewValue - #mOldValue ) * REAL#0.5 ) * #i_IntCycle; + #mOldValue := #i_NewValue; + + +END_FUNCTION_BLOCK + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Interlocking_Panel.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Interlocking_Panel.md new file mode 100644 index 0000000..e16c63d --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Interlocking_Panel.md @@ -0,0 +1,202 @@ +```pascal +// Block Type: FC +// Block Number: 1999 +// Original Network Languages: LAD + +FUNCTION "Interlocking_Panel" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + mDummy : Bool; + retval : Int; + diffpress : DInt; +END_VAR + +BEGIN + + // Network 1: FILLER RECEIVE DATA (Original Language: LAD) + + "HMI_IO_Showing"."Filler_IO_Signal"."Production"."_DI0" := ("gIN_FillerProdReady" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "gIN_FillerProdReady" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + "HMI_IO_Showing"."Filler_IO_Signal"."Production"."_DI1" := ("gIN_Filler1ProductReq" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "gIN_Filler1ProductReq" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + "HMI_IO_Showing"."Filler_IO_Signal"."Production"."_DI2" := ("System_RunOut_Variables"."In_Flr_FastRinseComplete" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "System_RunOut_Variables"."In_Flr_FastRinseComplete" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + "HMI_IO_Showing"."Filler_IO_Signal"."Production"."_DI3" := ("System_RunOut_Variables"."In_Flr_LastContainer" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "System_RunOut_Variables"."In_Flr_LastContainer" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + "HMI_IO_Showing"."Filler_IO_Signal"."Production"."_DI4" := ("System_RunOut_Variables"."In_Flr_WaterRinseRequest" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "System_RunOut_Variables"."In_Flr_WaterRinseRequest" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + "HMI_IO_Showing"."Filler_IO_Signal"."Production"."_DI5" := ("gIN_FillerCIPDrainSelect" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "gIN_FillerCIPDrainSelect" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + "HMI_IO_Showing"."Filler_IO_Signal"."Cip"."_DI6" := ("gIN_FillerCIPDrainSelect" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "gIN_FillerCIPDrainSelect" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + "HMI_IO_Showing"."Filler_IO_Signal"."Production"."_DI6" := ("System_RunOut_Variables"."In_Flr_OpAVM369ProdPipeD" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "System_RunOut_Variables"."In_Flr_OpAVM369ProdPipeD" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + "HMI_IO_Showing"."Filler_IO_Signal"."Cip"."_DI0" := ("gIN_FillerCIPRequest" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("gIN_FillerCIPRequest" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + "HMI_IO_Showing"."Filler_IO_Signal"."Cip"."_DI1" := ("gIN_FillerCIPDrainCompl" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("gIN_FillerCIPDrainCompl" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + "HMI_IO_Showing"."Filler_IO_Signal"."Cip"."_DI2" := ("gIN_FillerCIPCycleEnded" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("gIN_FillerCIPCycleEnded" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + "HMI_IO_Showing"."Filler_IO_Signal"."Cip"."_DI3" := ("gIN_FillerCIPChangeReady" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("gIN_FillerCIPChangeReady" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + // Network 2: FILLER SEND DATA (Original Language: LAD) + + "HMI_IO_Showing"."Filler_IO_Signal"."Production"."_DO0" := ("gOUT_FillerProduction" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("gOUT_FillerProduction" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + "DO_FlrProdMode" := ("gOUT_FillerProduction" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("gOUT_FillerProduction" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + "HMI_IO_Showing"."Filler_IO_Signal"."Production"."_DO1" := ("gOUT_FillerProductAvail" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("gOUT_FillerProductAvail" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + "HMI_IO_Showing"."Filler_IO_Signal"."Production"."_DO2" := ("gOUT_FillerMinimumLevel" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("gOUT_FillerMinimumLevel" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + "HMI_IO_Showing"."Filler_IO_Signal"."Production"."_DO3" := ("gOUT_FillerRinseMode" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("gOUT_FillerRinseMode" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + "DO_Flr_RinseMode" := ("gOUT_FillerRinseMode" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("gOUT_FillerRinseMode" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + "HMI_IO_Showing"."Filler_IO_Signal"."Production"."_DO4" := ("System_RunOut_Variables"."Out_Flr_FastRinseReq" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("System_RunOut_Variables"."Out_Flr_FastRinseReq" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + "HMI_IO_Showing"."Filler_IO_Signal"."Production"."_DO5" := ("System_RunOut_Variables"."Out_Flr_WaterRinseReady" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("System_RunOut_Variables"."Out_Flr_WaterRinseReady" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + "HMI_IO_Showing"."Filler_IO_Signal"."Production"."_DO6" := ("System_RunOut_Variables"."Out_Flr_ProductCompleted" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "System_RunOut_Variables"."Out_Flr_ProductCompleted" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + "HMI_IO_Showing"."Filler_IO_Signal"."Production"."_DO7" := ("System_RunOut_Variables"."Out_Flr_FillerRunOutReq" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "System_RunOut_Variables"."Out_Flr_FillerRunOutReq" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + "HMI_IO_Showing"."Filler_IO_Signal"."Cip"."_DO0" := ("gOUT_FillerCIPMode" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "gOUT_FillerCIPMode" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + "HMI_IO_Showing"."Filler_IO_Signal"."Cip"."_DO1" := ("gOUT_FillerCIPRunning" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "gOUT_FillerCIPRunning" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + "HMI_IO_Showing"."Filler_IO_Signal"."Cip"."_DO2" := ("gOUT_FillerCIPChangeSani" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "gOUT_FillerCIPChangeSani" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + "HMI_IO_Showing"."Filler_IO_Signal"."Cip"."_DO3" := ("gOUT_FillerCIPDrainReq" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "gOUT_FillerCIPDrainReq" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + "HMI_IO_Showing"."Filler_IO_Signal"."Cip"."_DO4" := ("gOUT_FillerCIPCompleted" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "gOUT_FillerCIPCompleted" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + "HMI_IO_Showing"."Filler_IO_Signal"."Cip"."_DO5" := ("gOUT_FillerCIPCaSanitRun" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "gOUT_FillerCIPCaSanitRun" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + // Network 3: SYRUP ROOM RECEIVE DATA (Original Language: LAD) + + "HMI_IO_Showing"."Syrup_Room_IO_Signal"."_DI0" := "AUX TRUE" AND "gIN_SyrRoomOk"; + + "HMI_IO_Showing"."Syrup_Room_IO_Signal"."_DI1" := "AUX TRUE" AND "gIN_SyrRoomOk"; + + // Network 4: SYRUP ROOM SEND DATA (Original Language: LAD) + + "HMI_IO_Showing"."Syrup_Room_IO_Signal"."_DO0" := "AUX TRUE" AND "HMI_Device"."SyrupRoom_SyrupPump"."Out"; + + "HMI_IO_Showing"."Syrup_Room_IO_Signal"."_DO1" := "AUX TRUE" AND "HMI_Device"."SyrupRoom_WaterPump"."Out"; + + // Network 5: CIP ROOM RECEIVE DATA (Original Language: LAD) + + "HMI_IO_Showing"."Cip_Room_IO_Signal"."_DI0" := "AUX TRUE" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CIPSignalExchange" AND "gIN_CIP_DrainRequest"; + + "HMI_IO_Showing"."Cip_Room_IO_Signal"."_DI1" := "AUX TRUE" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CIPSignalExchange" AND "gIN_CIP_TankFilling"; + + "HMI_IO_Showing"."Cip_Room_IO_Signal"."_DI2" := "AUX TRUE" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CIPSignalExchange" AND "gIN_CIP_RinseMode"; + + "HMI_IO_Showing"."Cip_Room_IO_Signal"."_DI3" := "AUX TRUE" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CIPSignalExchange" AND "gIN_CIP_CIPRunning"; + + "HMI_IO_Showing"."Cip_Room_IO_Signal"."_DI4" := "AUX TRUE" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CIPSignalExchange" AND "gIN_CIP_ChangeSanitize"; + + "HMI_IO_Showing"."Cip_Room_IO_Signal"."_DI5" := "AUX TRUE" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CIPSignalExchange" AND "gIN_CIP_CIPCompleted"; + + "HMI_IO_Showing"."Cip_Room_IO_Signal"."_DI6" := "AUX TRUE" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CIPSignalExchange" AND "gIN_CIP_CIPMode"; + + "HMI_IO_Showing"."Cip_Room_IO_Signal"."_DI7" := "AUX TRUE" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CIPSignalExchange" AND "gIN_CIP_CausticSanRun"; + + // Network 6: CIP ROOM SEND DATA (Original Language: LAD) + + "HMI_IO_Showing"."Cip_Room_IO_Signal"."_DO0" := "AUX TRUE" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CIPSignalExchange" AND "gBlenderCIPMode" AND "CIP_Program_Variables"."Status"."Started"; + + "HMI_IO_Showing"."Cip_Room_IO_Signal"."_DO1" := "AUX TRUE" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CIPSignalExchange" AND "DI_WaterPipeCIP_Sensor"; + + "HMI_IO_Showing"."Cip_Room_IO_Signal"."_DO2" := "AUX TRUE" AND "gIN_FillerCIPDrainCompl" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CIPSignalExchange" AND "gIN_CIP_DrainRequest" AND "gCIP_BlenderDrainDone"; + + "HMI_IO_Showing"."Cip_Room_IO_Signal"."_DO3" := "AUX TRUE" AND "gIN_FillerCIPCycleEnded" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CIPSignalExchange"; + + "HMI_IO_Showing"."Cip_Room_IO_Signal"."_DO5" := "AUX TRUE" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CIPSignalExchange" AND "gOUT_CIPChangeReady"; + + // Network 7: SIDEL CIP ROOM RECEIVE DATA (Original Language: LAD) + + // ERROR: BLKMOV 32 sin SRCBLK válido. + + // Network 8: SIDEL CIP ROOM SEND DATA (Original Language: LAD) + + // ERROR: BLKMOV 32 sin SRCBLK válido. + + // Network 9: SIDEL FILLER RECEIVE DATA (Original Language: LAD) + + // ERROR: BLKMOV 36 sin SRCBLK válido. + + // ERROR: BLKMOV 37 sin SRCBLK válido. + + // Network 10: SIDEL FILLER SEND DATA (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1) THEN + "HMI_IO_Showing"."Sidel_Filler_IO_Signal"."Production"."_DO2" := "Interlocking_Variables"."SIDEL_FILLER_SEND_DATA"."Run_Out_Amount1"; + "HMI_IO_Showing"."Sidel_Filler_IO_Signal"."Production"."_DO3" := "Interlocking_Variables"."SIDEL_FILLER_SEND_DATA"."Run_Out_Amount2"; + "HMI_IO_Showing"."Sidel_Filler_IO_Signal"."Production"."_DO4" := "Interlocking_Variables"."SIDEL_FILLER_SEND_DATA"."Product_Temperature"; + "HMI_IO_Showing"."Sidel_Filler_IO_Signal"."Production"."_DO5" := "Interlocking_Variables"."SIDEL_FILLER_SEND_DATA"."Product_Carbonation"; + "HMI_IO_Showing"."Sidel_Filler_IO_Signal"."Production"."_DO6" := "Interlocking_Variables"."SIDEL_FILLER_SEND_DATA"."Prod_Tank_Press_SP"; + END_IF; + + // ERROR: BLKMOV 46 sin SRCBLK válido. + + // ERROR: BLKMOV 52 sin SRCBLK válido. + + // Network 11: BLENDFILL FILLER RECEIVE DATA (Original Language: LAD) + + // ERROR: BLKMOV 57 sin SRCBLK válido. + + // ERROR: BLKMOV 58 sin SRCBLK válido. + + "HMI_IO_Showing"."Mixer_Filler_IO_Signal"."Cip"."_DI100" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "Interlocking_Variables"."FILLER_MIXER_RECEIVE"."CIP_Sanitize_Request" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1); + + "HMI_IO_Showing"."Mixer_Filler_IO_Signal"."Cip"."_DI101" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "Interlocking_Variables"."FILLER_MIXER_RECEIVE"."CIP_Cleaning_Alarm" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1); + + "HMI_IO_Showing"."Mixer_Filler_IO_Signal"."Cip"."_DI102" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "Interlocking_Variables"."FILLER_MIXER_RECEIVE"."CIP_Solution_Return" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1); + + "HMI_IO_Showing"."Mixer_Filler_IO_Signal"."Cip"."_DI103" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "Interlocking_Variables"."FILLER_MIXER_RECEIVE"."CIP_Recovery_Completed" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1); + + "HMI_IO_Showing"."Mixer_Filler_IO_Signal"."Cip"."_DI104" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "Interlocking_Variables"."FILLER_MIXER_RECEIVE"."CIP_Drain_Completed" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1); + + "HMI_IO_Showing"."Mixer_Filler_IO_Signal"."Cip"."_DI105" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "Interlocking_Variables"."FILLER_MIXER_RECEIVE"."CIP_System_Flooded" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1); + + // ERROR: BLKMOV 71 sin SRCBLK válido. + + // ERROR: BLKMOV 72 sin SRCBLK válido. + + // ERROR: BLKMOV 73 sin destino DSTBLK válido. + + // Network 12: BLENDFILL FILLER SEND DATA (Original Language: LAD) + + // ERROR: BLKMOV 59 sin SRCBLK válido. + + // ERROR: BLKMOV 60 sin SRCBLK válido. + + "HMI_IO_Showing"."Mixer_Filler_IO_Signal"."Cip"."_DO100" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "Interlocking_Variables"."MIXER_FILLER_SEND"."CIP_Completed" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1); + + "HMI_IO_Showing"."Mixer_Filler_IO_Signal"."Cip"."_DO101" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "Interlocking_Variables"."MIXER_FILLER_SEND"."CIP_CleaningAlarm" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1); + + "HMI_IO_Showing"."Mixer_Filler_IO_Signal"."Cip"."_DO102" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "Interlocking_Variables"."MIXER_FILLER_SEND"."CIP_ProductSending" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1); + + "HMI_IO_Showing"."Mixer_Filler_IO_Signal"."Cip"."_DO103" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "Interlocking_Variables"."MIXER_FILLER_SEND"."CIP_RecoveryRequest" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1); + + "HMI_IO_Showing"."Mixer_Filler_IO_Signal"."Cip"."_DO104" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "Interlocking_Variables"."MIXER_FILLER_SEND"."CIP_Drain_Request" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1); + + "HMI_IO_Showing"."Mixer_Filler_IO_Signal"."Cip"."_DO105" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "Interlocking_Variables"."MIXER_FILLER_SEND"."CIP_FloodingRequest" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1); + + "HMI_IO_Showing"."Mixer_Filler_IO_Signal"."Cip"."_DO106" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "Interlocking_Variables"."MIXER_FILLER_SEND"."Cip_Running" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1); + + // ERROR: BLKMOV 75 sin SRCBLK válido. + + // ERROR: BLKMOV 76 sin SRCBLK válido. + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1) THEN + "retval" := BLKMOV(SRCBLK := "Interlocking_Variables"."MIXER_FILLER_SEND"."SPARE34", DSTBLK => "HMI_IO_Showing"."Mixer_Filler_IO_Signal"."Drain"."_DO10B"); // ADVERTENCIA: BLKMOV usado directamente, probablemente no compile! + END_IF; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Interlocking_Panel_1.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Interlocking_Panel_1.md new file mode 100644 index 0000000..ac2f886 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Interlocking_Panel_1.md @@ -0,0 +1,160 @@ +```pascal +// Block Type: FC +// Block Number: 2004 +// Original Network Languages: LAD + +FUNCTION "Interlocking_Panel_1" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + mDummy : Bool; + retval : Int; + diffpress : DInt; +END_VAR + +BEGIN + + // Network 1: FILLER RECEIVE DATA (Original Language: LAD) + // Signals From Krones Filler + + "HMI_IO_Showing"."Filler_IO_Signal"."Production"."_DI0" := ("DI_Flr1_PROD_ok" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "DI_Flr1_PROD_ok" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + "HMI_IO_Showing"."Filler_IO_Signal"."Production"."_DI1" := ("DI_Flr1_PROD_Request" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "DI_Flr1_PROD_Request" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + "HMI_IO_Showing"."Filler_IO_Signal"."Production"."_DI2" := ("DI_Flr1_CIP/RinseFiller" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "DI_Flr1_CIP/RinseFiller" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + "HMI_IO_Showing"."Filler_IO_Signal"."Production"."_DI3" := ("DI_Flr1_CIP_DrainComplete" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "DI_Flr1_CIP_DrainComplete" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + "HMI_IO_Showing"."Filler_IO_Signal"."Production"."_DI4" := ("DI_Flr1_WaterRequest" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "DI_Flr1_WaterRequest" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + // Network 2: FILLER SEND DATA (Original Language: LAD) + + "HMI_IO_Showing"."Filler_IO_Signal"."Production"."_DO0" := ("DO_Flr1_Productionmode" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "DO_Flr1_Productionmode" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + "HMI_IO_Showing"."Filler_IO_Signal"."Production"."_DO1" := ("DO_Flr1_PROD_Available" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "DO_Flr1_PROD_Available" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + "HMI_IO_Showing"."Filler_IO_Signal"."Production"."_DO2" := ("DO_Flr1_OpenBottleblock" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("DO_Flr1_OpenBottleblock" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + "HMI_IO_Showing"."Filler_IO_Signal"."Production"."_DO3" := ("DO_Flr1_CIPMode" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("DO_Flr1_CIPMode" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + "HMI_IO_Showing"."Filler_IO_Signal"."Production"."_DO4" := ("DO_Flr1_RinseMode" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("DO_Flr1_RinseMode" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + "HMI_IO_Showing"."Filler_IO_Signal"."Production"."_DO5" := ("DO_Flr1_CIP_DrainRequest" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("DO_Flr1_CIP_DrainRequest" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + "HMI_IO_Showing"."Filler_IO_Signal"."Production"."_DO6" := ("DO_Flr1_CIP_CleaningEnd" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("DO_Flr1_CIP_CleaningEnd" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + "HMI_IO_Showing"."Filler_IO_Signal"."Production"."_DO7" := ("DO_Flr1_Spare0" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0)) OR ("DO_Flr1_Spare0" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1)); + + // Network 3: SYRUP ROOM RECEIVE DATA (Original Language: LAD) + + "HMI_IO_Showing"."Syrup_Room_IO_Signal"."_DI0" := "AUX TRUE" AND "DI_SyrRoom_SyrPump_Running"; + + "HMI_Refrige_IO_Showing"."Syrup_Room_IO_Signal"."_DI1" := "AUX TRUE" AND "DI_SyrRoom_Pump_Ready"; + + "HMI_Refrige_IO_Showing"."Syrup_Room_IO_Signal"."_DI2" := "AUX TRUE" AND "DI_SyrRoom_WatPumpReady"; + + // Network 4: SYRUP ROOM SEND DATA (Original Language: LAD) + + "HMI_IO_Showing"."Syrup_Room_IO_Signal"."_DO0" := "AUX TRUE" AND "DO_SyRm_SyrupReques"; + + "HMI_IO_Showing"."Syrup_Room_IO_Signal"."_DO1" := "AUX TRUE" AND "DO_SyRm_WaterRequest"; + + // Network 5: CIP ROOM RECEIVE DATA (Original Language: LAD) + // Signal Exchange From CIP Autosan + + "HMI_IO_Showing"."Cip_Room_IO_Signal"."_DI0" := "AUX TRUE" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CIPSignalExchange" AND "DI_CIP_CIP_Enable"; + + "HMI_IO_Showing"."Cip_Room_IO_Signal"."_DI1" := "AUX TRUE" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CIPSignalExchange" AND "DI_CIP_CIP_Rinse"; + + "HMI_IO_Showing"."Cip_Room_IO_Signal"."_DI2" := "AUX TRUE" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CIPSignalExchange" AND "DI_CIP_Drain"; + + "HMI_IO_Showing"."Cip_Room_IO_Signal"."_DI3" := "AUX TRUE" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CIPSignalExchange" AND "DI_CIP_End"; + + // Network 6: CIP ROOM SEND DATA (Original Language: LAD) + + "HMI_IO_Showing"."Cip_Room_IO_Signal"."_DO1" := "AUX TRUE" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CIPSignalExchange" AND "DO_CIP_DrainCompleted"; + + // Network 7: SIDEL CIP ROOM RECEIVE DATA (Original Language: LAD) + + // ERROR: BLKMOV 32 sin SRCBLK válido. + + // Network 8: SIDEL CIP ROOM SEND DATA (Original Language: LAD) + + // ERROR: BLKMOV 32 sin SRCBLK válido. + + // Network 9: SIDEL FILLER RECEIVE DATA (Original Language: LAD) + + // ERROR: BLKMOV 36 sin SRCBLK válido. + + // ERROR: BLKMOV 37 sin SRCBLK válido. + + // Network 10: SIDEL FILLER SEND DATA (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1) THEN + "HMI_IO_Showing"."Sidel_Filler_IO_Signal"."Production"."_DO2" := "Interlocking_Variables"."SIDEL_FILLER_SEND_DATA"."Run_Out_Amount1"; + "HMI_IO_Showing"."Sidel_Filler_IO_Signal"."Production"."_DO3" := "Interlocking_Variables"."SIDEL_FILLER_SEND_DATA"."Run_Out_Amount2"; + "HMI_IO_Showing"."Sidel_Filler_IO_Signal"."Production"."_DO4" := "Interlocking_Variables"."SIDEL_FILLER_SEND_DATA"."Product_Temperature"; + "HMI_IO_Showing"."Sidel_Filler_IO_Signal"."Production"."_DO5" := "Interlocking_Variables"."SIDEL_FILLER_SEND_DATA"."Product_Carbonation"; + "HMI_IO_Showing"."Sidel_Filler_IO_Signal"."Production"."_DO6" := "Interlocking_Variables"."SIDEL_FILLER_SEND_DATA"."Prod_Tank_Press_SP"; + END_IF; + + // ERROR: BLKMOV 46 sin SRCBLK válido. + + // ERROR: BLKMOV 52 sin SRCBLK válido. + + // Network 11: BLENDFILL FILLER RECEIVE DATA (Original Language: LAD) + + // ERROR: BLKMOV 57 sin SRCBLK válido. + + // ERROR: BLKMOV 58 sin SRCBLK válido. + + "HMI_IO_Showing"."Mixer_Filler_IO_Signal"."Cip"."_DI100" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "Interlocking_Variables"."FILLER_MIXER_RECEIVE"."CIP_Sanitize_Request" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1); + + "HMI_IO_Showing"."Mixer_Filler_IO_Signal"."Cip"."_DI101" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "Interlocking_Variables"."FILLER_MIXER_RECEIVE"."CIP_Cleaning_Alarm" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1); + + "HMI_IO_Showing"."Mixer_Filler_IO_Signal"."Cip"."_DI102" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "Interlocking_Variables"."FILLER_MIXER_RECEIVE"."CIP_Solution_Return" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1); + + "HMI_IO_Showing"."Mixer_Filler_IO_Signal"."Cip"."_DI103" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "Interlocking_Variables"."FILLER_MIXER_RECEIVE"."CIP_Recovery_Completed" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1); + + "HMI_IO_Showing"."Mixer_Filler_IO_Signal"."Cip"."_DI104" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "Interlocking_Variables"."FILLER_MIXER_RECEIVE"."CIP_Drain_Completed" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1); + + "HMI_IO_Showing"."Mixer_Filler_IO_Signal"."Cip"."_DI105" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "Interlocking_Variables"."FILLER_MIXER_RECEIVE"."CIP_System_Flooded" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1); + + // ERROR: BLKMOV 71 sin SRCBLK válido. + + // ERROR: BLKMOV 72 sin SRCBLK válido. + + // ERROR: BLKMOV 73 sin destino DSTBLK válido. + + // Network 12: BLENDFILL FILLER SEND DATA (Original Language: LAD) + + // ERROR: BLKMOV 59 sin SRCBLK válido. + + // ERROR: BLKMOV 60 sin SRCBLK válido. + + "HMI_IO_Showing"."Mixer_Filler_IO_Signal"."Cip"."_DO100" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "Interlocking_Variables"."MIXER_FILLER_SEND"."CIP_Completed" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1); + + "HMI_IO_Showing"."Mixer_Filler_IO_Signal"."Cip"."_DO101" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "Interlocking_Variables"."MIXER_FILLER_SEND"."CIP_CleaningAlarm" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1); + + "HMI_IO_Showing"."Mixer_Filler_IO_Signal"."Cip"."_DO102" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "Interlocking_Variables"."MIXER_FILLER_SEND"."CIP_ProductSending" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1); + + "HMI_IO_Showing"."Mixer_Filler_IO_Signal"."Cip"."_DO103" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "Interlocking_Variables"."MIXER_FILLER_SEND"."CIP_RecoveryRequest" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1); + + "HMI_IO_Showing"."Mixer_Filler_IO_Signal"."Cip"."_DO104" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "Interlocking_Variables"."MIXER_FILLER_SEND"."CIP_Drain_Request" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1); + + "HMI_IO_Showing"."Mixer_Filler_IO_Signal"."Cip"."_DO105" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "Interlocking_Variables"."MIXER_FILLER_SEND"."CIP_FloodingRequest" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1); + + "HMI_IO_Showing"."Mixer_Filler_IO_Signal"."Cip"."_DO106" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "Interlocking_Variables"."MIXER_FILLER_SEND"."Cip_Running" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1); + + // ERROR: BLKMOV 75 sin SRCBLK válido. + + // ERROR: BLKMOV 76 sin SRCBLK válido. + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 1) THEN + "retval" := BLKMOV(SRCBLK := "Interlocking_Variables"."MIXER_FILLER_SEND"."SPARE34", DSTBLK => "HMI_IO_Showing"."Mixer_Filler_IO_Signal"."Drain"."_DO10B"); // ADVERTENCIA: BLKMOV usado directamente, probablemente no compile! + END_IF; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Interlocking_Variables.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Interlocking_Variables.md new file mode 100644 index 0000000..b838cd0 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Interlocking_Variables.md @@ -0,0 +1,42 @@ +```pascal +// Block Type: GlobalDB +// Block Number: 900 + +DATA_BLOCK "Interlocking_Variables" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + itc : "Struct"; + CIP : "Struct"; + PAST : "Struct"; + FILLER : "Struct"; + PRODUCT_ROOM : "Struct"; + SIDEL_FILLER : "Struct"; + SIDEL_CIP : "Struct"; + SPARE08 : "Struct"; + SPARE009 : "Struct"; + SPARE010 : "Struct"; + SYRUP_ROOM_SEND_DATA : "Struct"; + SYRUP_ROOM_REC_DATA : "Struct"; + CIP_SEND_DATA : "Struct"; + CIP_REC_DATA : "Struct"; + PAST_SEND_DATA : "Struct"; + PAST_REC_DATA : "Struct"; + SIMO_FILLER_SEND_DATA : "Struct"; + SIMO_FILLER_REC_DATA : "Struct"; + MIXER_FILLER_SEND : "Struct"; + FILLER_MIXER_RECEIVE : "Struct"; + PRODUCT_ROOM_SEND_DATA : "Struct"; + PRODUCT_ROOM_REC_DATA : "Struct"; + SIDEL_FILLER_SEND_DATA : "Struct"; + SIDEL_FILLER_REC_DATA : "Struct"; + SIDEL_CIP_SEND_DATA : "Struct"; + SIDEL_CIP_REC_DATA : "Struct"; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Key_Read___Write.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Key_Read___Write.md new file mode 100644 index 0000000..4cbc03c --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Key_Read___Write.md @@ -0,0 +1,1456 @@ +```pascal +// Block Type: FB +// Block Name (Original): Key Read & Write +// Block Number: 50 +// Original Network Languages: LAD, STL + +FUNCTION_BLOCK "Key_Read___Write" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_STAT + Key_Code : String[10]; + Key_User_Name : String[16]; + Key_POINTER : DInt; + Check_COUNT : DInt; + Check_Active : Bool; + Equal_String : Bool; + Login_Active : Bool; + LogOut_Old_User : Bool; + String_Not_Valid : Bool; + Cmd_User_Key_Assign_FP : Bool; + Cmd_User_Key_Assign : Bool; + LogOut_Time : Time; + LogOut_Timer : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + LogOut_T : Bool; + LogOut_FP : Bool; +END_VAR + +VAR_TEMP + Pointer_01 : DWord; + Pointer_02 : DWord; + Pointer_03 : DWord; + Pointer_04 : DWord; + Buffer_I : Int; + Buffer_DI : DInt; + Buffer_R : Real; + LogOut_TimeCounter : Time; + Key_POINTER_1 : DInt; +END_VAR + + #_2S : Bool; // Auto-generated temporary + #_60000 : Bool; // Auto-generated temporary + #_600s : Bool; // Auto-generated temporary + #TOF_INSTANCE_39 : Bool; // Auto-generated temporary + #TON_INSTANCE_32 : Bool; // Auto-generated temporary + #TON_INSTANCE_37 : Bool; // Auto-generated temporary +BEGIN + + // Network 1: Remote request (Original Language: LAD) + // User Administrator -Request From Remote Connection + + // Network 1 did not produce printable SCL code. + + // Network 2: Check User Code Valid (Original Language: STL) + // Check User Code Valid + + // --- BEGIN STL Network 2 --- + + L "Check_COUNT" + T "Key_POINTER_1" + + // --- END STL Network 2 --- + + // Network 3: Check User Code Valid (Original Language: STL) + // Check User Code Valid + + // --- BEGIN STL Network 3 --- + + AN "HMI Key User".Cmd_Bit.User_Key_Read_Ok + JC Find + + CALL _Call_? + + A "String_Not_Valid" + JC Find + + CALL _Call_? + + A "String_Not_Valid" + JC Find + A "HMI Key User".Cmd_Bit.KeyUser_Page_Active + JC Find + SET + S "Check_Active" + + // --- END STL Network 3 --- + + // Network 4: Check User Code (Original Language: STL) + // Check User Code + + // --- BEGIN STL Network 4 --- + + AN "Check_Active" + JC Find + + CALL _Call_? + + A "Equal_String" + JCN Admi + + Remo: NOP_0 + + CALL _Call_? + + L 9 + T "HMI Key User".Actual_UserLevel + L 240 + T "HMI Key User".Actual_UserTimeOut + SET + S "Login_Active" + S "LogOut_Old_User" + JU Find + Admi: NOP_0 + L DINT#0 + T "Check_COUNT" + Chk: NOP_0 + L P#0.0 + T "Pointer_01" + L P#2.0 + T "Pointer_02" + L P#6.0 + T "Pointer_03" + L P#10.0 + T "Pointer_04" + L "Check_COUNT" + SLW 8 + T "Key_POINTER" + LAR1_ACCU1 + AUF "HMI Key User" + AUF DI "Key Read & Write Data" + L DBW[AR1,P#0.0] + T DIW[AR?,P#0.0] + L DBD[AR1,P#2.0] + T DID[AR?,P#0.0] + L DBD[AR1,P#6.0] + T DID[AR?,P#0.0] + L DBW[AR1,P#10.0] + T DIW[AR?,P#0.0] + + CALL _Call_? + + A "Equal_String" + JCN Equa + + L "Key_POINTER" + LAR1_ACCU1 + AUF "HMI Key User" + AUF DI "Key Read & Write Data" + + L DBW[AR1,P#0.0] + T DIW[AR?,P#0.0] + + L DBD[AR1,P#2.0] + T DID[AR?,P#0.0] + L DBD[AR1,P#6.0] + T DID[AR?,P#0.0] + L DBW[AR1,P#10.0] + T DIW[AR?,P#0.0] + + L "Check_COUNT" + T "HMI Key User".Actual_UserLevel + + L "HMI Key User".Key_User["Key_POINTER_1"].User_TimeOut + T "HMI Key User".Actual_UserTimeOut + SET + S "Login_Active" + S "LogOut_Old_User" + JU Find + Equa: NOP_0 + L "Check_COUNT" + L DINT#1 + ADD_D + T "Check_COUNT" + L DINT#20 + GE_D + JCN Chk + Find: SET + R "Check_Active" + + // --- END STL Network 4 --- + + // Network 5: Logout Time (Original Language: LAD) + // LogOut Time + + #TON_INSTANCE_37(IN := Ne("HMI Key User"."Actual_UserLevel", 9) OR ("Login_Active" AND "LogOut_Old_User" AND "T_302"."Q"), PT := "LogOut_Time"); // TODO: Declarar #TON_INSTANCE_37 : TON; + + IF #TON_INSTANCE_37.Q OR "HMI Key User"."Cmd_Bit"."User_LogOut_Req" THEN + "Login_Active" := FALSE; + END_IF; + + // Network 6: Logout Old User (Original Language: LAD) + + IF "Login_Active" AND "LogOut_Old_User" THEN + "Buffer_DI" := "HMI Key User"."Actual_UserTimeOut"; + END_IF; + + IF "Login_Active" AND "LogOut_Old_User" THEN + "Buffer_DI" := "Buffer_DI" * DINT#60000; + END_IF; + + IF "Login_Active" AND "LogOut_Old_User" THEN + "LogOut_Time" := "Buffer_DI"; + END_IF; + + IF "Login_Active" AND "LogOut_Old_User" THEN + "LogOut_Old_User" := FALSE; + END_IF; + + // Network 7: User TimeOut Preset and Counter (Original Language: STL) + // User TimeOut Preset and Counter + + // --- BEGIN STL Network 7 --- + + L "HMI Key User".Actual_UserTimeOut + L 60 + MUL_I + T "HMI Key User".Act_UserTimeOut_Preset + + L "LogOut_Timer".ET + L DINT#1000 + DIV_D + L "HMI Key User".Act_UserTimeOut_Preset + CAC + SUB_I + T "HMI Key User".Act_UserTimeOut_Counter + + // --- END STL Network 7 --- + + // Network 8: LogOut (Original Language: STL) + // LogOut + + // --- BEGIN STL Network 8 --- + + A_BRACK + AN "Login_Active" + A_BRACK + L "HMI Key User".Actual_UserLevel + L 0 + NE_I + BRACKET + JNB _004 + L 0 + T "HMI Key User".Actual_UserLevel + SET + SAVE + CLR + _004: A _Statusword_? + BRACKET + JNB _005 + + CALL _Call_? + + _005: NOP_0 + + // --- END STL Network 8 --- + + // Network 9: Keys Write (20 User) (Original Language: STL) + // Save User Code + + // --- BEGIN STL Network 9 --- + + + AN "HMI Key User".Cmd_Bit.Key_Assign + JC End + + L "HMI Key User".Key_Row + L 1 + EQ_I + JC USER_1 + L "HMI Key User".Key_Row + L 2 + EQ_I + JC USER_2 + L "HMI Key User".Key_Row + L 3 + EQ_I + JC USER_3 + L "HMI Key User".Key_Row + L 4 + EQ_I + JC USER_4 + L "HMI Key User".Key_Row + L 5 + EQ_I + JC USER_5 + + L "HMI Key User".Key_Row + L 6 + EQ_I + JC USER_6 + + L "HMI Key User".Key_Row + L 7 + EQ_I + JC USER_7 + + L "HMI Key User".Key_Row + L 8 + EQ_I + JC USER_8 + + L "HMI Key User".Key_Row + L 9 + EQ_I + JC USER_9 + + L "HMI Key User".Key_Row + L 10 + EQ_I + JC USER_10 + + L "HMI Key User".Key_Row + L 11 + EQ_I + JC USER_11 + + L "HMI Key User".Key_Row + L 12 + EQ_I + JC USER_12 + + L "HMI Key User".Key_Row + L 13 + EQ_I + JC USER_13 + + L "HMI Key User".Key_Row + L 14 + EQ_I + JC USER_14 + + L "HMI Key User".Key_Row + L 15 + EQ_I + JC USER_15 + + L "HMI Key User".Key_Row + L 16 + EQ_I + JC USER_16 + + L "HMI Key User".Key_Row + L 17 + EQ_I + JC USER_17 + + L "HMI Key User".Key_Row + L 18 + EQ_I + JC USER_18 + + L "HMI Key User".Key_Row + L 19 + EQ_I + JC USER_19 + + L "HMI Key User".Key_Row + L 20 + EQ_I + JC USER_20 + + USER_1: NOP_0 + L "HMI Key User".Key_Code_Read[1] + T "HMI Key User".Key_User[1].Key_Code[1] + L "HMI Key User".Key_Code_Read[2] + T "HMI Key User".Key_User[1].Key_Code[2] + L "HMI Key User".Key_Code_Read[3] + T "HMI Key User".Key_User[1].Key_Code[3] + L "HMI Key User".Key_Code_Read[4] + T "HMI Key User".Key_User[1].Key_Code[4] + L "HMI Key User".Key_Code_Read[5] + T "HMI Key User".Key_User[1].Key_Code[5] + L "HMI Key User".Key_Code_Read[6] + T "HMI Key User".Key_User[1].Key_Code[6] + L "HMI Key User".Key_Code_Read[7] + T "HMI Key User".Key_User[1].Key_Code[7] + L "HMI Key User".Key_Code_Read[8] + T "HMI Key User".Key_User[1].Key_Code[8] + L "HMI Key User".Key_Code_Read[9] + T "HMI Key User".Key_User[1].Key_Code[9] + L "HMI Key User".Key_Code_Read[10] + T "HMI Key User".Key_User[1].Key_Code[10] + JU End + USER_2: L "HMI Key User".Key_Code_Read[1] + T "HMI Key User".Key_User[2].Key_Code[1] + L "HMI Key User".Key_Code_Read[2] + T "HMI Key User".Key_User[2].Key_Code[2] + L "HMI Key User".Key_Code_Read[3] + T "HMI Key User".Key_User[2].Key_Code[3] + L "HMI Key User".Key_Code_Read[4] + T "HMI Key User".Key_User[2].Key_Code[4] + L "HMI Key User".Key_Code_Read[5] + T "HMI Key User".Key_User[2].Key_Code[5] + L "HMI Key User".Key_Code_Read[6] + T "HMI Key User".Key_User[2].Key_Code[6] + L "HMI Key User".Key_Code_Read[7] + T "HMI Key User".Key_User[2].Key_Code[7] + L "HMI Key User".Key_Code_Read[8] + T "HMI Key User".Key_User[2].Key_Code[8] + L "HMI Key User".Key_Code_Read[9] + T "HMI Key User".Key_User[2].Key_Code[9] + L "HMI Key User".Key_Code_Read[10] + T "HMI Key User".Key_User[2].Key_Code[10] + JU End + USER_3: L "HMI Key User".Key_Code_Read[1] + T "HMI Key User".Key_User[3].Key_Code[1] + L "HMI Key User".Key_Code_Read[2] + T "HMI Key User".Key_User[3].Key_Code[2] + L "HMI Key User".Key_Code_Read[3] + T "HMI Key User".Key_User[3].Key_Code[3] + L "HMI Key User".Key_Code_Read[4] + T "HMI Key User".Key_User[3].Key_Code[4] + L "HMI Key User".Key_Code_Read[5] + T "HMI Key User".Key_User[3].Key_Code[5] + L "HMI Key User".Key_Code_Read[6] + T "HMI Key User".Key_User[3].Key_Code[6] + L "HMI Key User".Key_Code_Read[7] + T "HMI Key User".Key_User[3].Key_Code[7] + L "HMI Key User".Key_Code_Read[8] + T "HMI Key User".Key_User[3].Key_Code[8] + L "HMI Key User".Key_Code_Read[9] + T "HMI Key User".Key_User[3].Key_Code[9] + L "HMI Key User".Key_Code_Read[10] + T "HMI Key User".Key_User[3].Key_Code[10] + JU End + USER_4: L "HMI Key User".Key_Code_Read[1] + T "HMI Key User".Key_User[4].Key_Code[1] + L "HMI Key User".Key_Code_Read[2] + T "HMI Key User".Key_User[4].Key_Code[2] + L "HMI Key User".Key_Code_Read[3] + T "HMI Key User".Key_User[4].Key_Code[3] + L "HMI Key User".Key_Code_Read[4] + T "HMI Key User".Key_User[4].Key_Code[4] + L "HMI Key User".Key_Code_Read[5] + T "HMI Key User".Key_User[4].Key_Code[5] + L "HMI Key User".Key_Code_Read[6] + T "HMI Key User".Key_User[4].Key_Code[6] + L "HMI Key User".Key_Code_Read[7] + T "HMI Key User".Key_User[4].Key_Code[7] + L "HMI Key User".Key_Code_Read[8] + T "HMI Key User".Key_User[4].Key_Code[8] + L "HMI Key User".Key_Code_Read[9] + T "HMI Key User".Key_User[4].Key_Code[9] + L "HMI Key User".Key_Code_Read[10] + T "HMI Key User".Key_User[4].Key_Code[10] + JU End + USER_5: L "HMI Key User".Key_Code_Read[1] + T "HMI Key User".Key_User[5].Key_Code[1] + L "HMI Key User".Key_Code_Read[2] + T "HMI Key User".Key_User[5].Key_Code[2] + L "HMI Key User".Key_Code_Read[3] + T "HMI Key User".Key_User[5].Key_Code[3] + L "HMI Key User".Key_Code_Read[4] + T "HMI Key User".Key_User[5].Key_Code[4] + L "HMI Key User".Key_Code_Read[5] + T "HMI Key User".Key_User[5].Key_Code[5] + L "HMI Key User".Key_Code_Read[6] + T "HMI Key User".Key_User[5].Key_Code[6] + L "HMI Key User".Key_Code_Read[7] + T "HMI Key User".Key_User[5].Key_Code[7] + L "HMI Key User".Key_Code_Read[8] + T "HMI Key User".Key_User[5].Key_Code[8] + L "HMI Key User".Key_Code_Read[9] + T "HMI Key User".Key_User[5].Key_Code[9] + L "HMI Key User".Key_Code_Read[10] + T "HMI Key User".Key_User[5].Key_Code[10] + JU End + USER_6: L "HMI Key User".Key_Code_Read[1] + T "HMI Key User".Key_User[6].Key_Code[1] + L "HMI Key User".Key_Code_Read[2] + T "HMI Key User".Key_User[6].Key_Code[2] + L "HMI Key User".Key_Code_Read[3] + T "HMI Key User".Key_User[6].Key_Code[3] + L "HMI Key User".Key_Code_Read[4] + T "HMI Key User".Key_User[6].Key_Code[4] + L "HMI Key User".Key_Code_Read[5] + T "HMI Key User".Key_User[6].Key_Code[5] + L "HMI Key User".Key_Code_Read[6] + T "HMI Key User".Key_User[6].Key_Code[6] + L "HMI Key User".Key_Code_Read[7] + T "HMI Key User".Key_User[6].Key_Code[7] + L "HMI Key User".Key_Code_Read[8] + T "HMI Key User".Key_User[6].Key_Code[8] + L "HMI Key User".Key_Code_Read[9] + T "HMI Key User".Key_User[6].Key_Code[9] + L "HMI Key User".Key_Code_Read[10] + T "HMI Key User".Key_User[6].Key_Code[10] + JU End + USER_7: L "HMI Key User".Key_Code_Read[1] + T "HMI Key User".Key_User[7].Key_Code[1] + L "HMI Key User".Key_Code_Read[2] + T "HMI Key User".Key_User[7].Key_Code[2] + L "HMI Key User".Key_Code_Read[3] + T "HMI Key User".Key_User[7].Key_Code[3] + L "HMI Key User".Key_Code_Read[4] + T "HMI Key User".Key_User[7].Key_Code[4] + L "HMI Key User".Key_Code_Read[5] + T "HMI Key User".Key_User[7].Key_Code[5] + L "HMI Key User".Key_Code_Read[6] + T "HMI Key User".Key_User[7].Key_Code[6] + L "HMI Key User".Key_Code_Read[7] + T "HMI Key User".Key_User[7].Key_Code[7] + L "HMI Key User".Key_Code_Read[8] + T "HMI Key User".Key_User[7].Key_Code[8] + L "HMI Key User".Key_Code_Read[9] + T "HMI Key User".Key_User[7].Key_Code[9] + L "HMI Key User".Key_Code_Read[10] + T "HMI Key User".Key_User[7].Key_Code[10] + JU End + USER_8: L "HMI Key User".Key_Code_Read[1] + T "HMI Key User".Key_User[8].Key_Code[1] + L "HMI Key User".Key_Code_Read[2] + T "HMI Key User".Key_User[8].Key_Code[2] + L "HMI Key User".Key_Code_Read[3] + T "HMI Key User".Key_User[8].Key_Code[3] + L "HMI Key User".Key_Code_Read[4] + T "HMI Key User".Key_User[8].Key_Code[4] + L "HMI Key User".Key_Code_Read[5] + T "HMI Key User".Key_User[8].Key_Code[5] + L "HMI Key User".Key_Code_Read[6] + T "HMI Key User".Key_User[8].Key_Code[6] + L "HMI Key User".Key_Code_Read[7] + T "HMI Key User".Key_User[8].Key_Code[7] + L "HMI Key User".Key_Code_Read[8] + T "HMI Key User".Key_User[8].Key_Code[8] + L "HMI Key User".Key_Code_Read[9] + T "HMI Key User".Key_User[8].Key_Code[9] + L "HMI Key User".Key_Code_Read[10] + T "HMI Key User".Key_User[8].Key_Code[10] + JU End + USER_9: L "HMI Key User".Key_Code_Read[1] + T "HMI Key User".Key_User[9].Key_Code[1] + L "HMI Key User".Key_Code_Read[2] + T "HMI Key User".Key_User[9].Key_Code[2] + L "HMI Key User".Key_Code_Read[3] + T "HMI Key User".Key_User[9].Key_Code[3] + L "HMI Key User".Key_Code_Read[4] + T "HMI Key User".Key_User[9].Key_Code[4] + L "HMI Key User".Key_Code_Read[5] + T "HMI Key User".Key_User[9].Key_Code[5] + L "HMI Key User".Key_Code_Read[6] + T "HMI Key User".Key_User[9].Key_Code[6] + L "HMI Key User".Key_Code_Read[7] + T "HMI Key User".Key_User[9].Key_Code[7] + L "HMI Key User".Key_Code_Read[8] + T "HMI Key User".Key_User[9].Key_Code[8] + L "HMI Key User".Key_Code_Read[9] + T "HMI Key User".Key_User[9].Key_Code[9] + L "HMI Key User".Key_Code_Read[10] + T "HMI Key User".Key_User[9].Key_Code[10] + JU End + USER_10: L "HMI Key User".Key_Code_Read[1] + T "HMI Key User".Key_User[10].Key_Code[1] + L "HMI Key User".Key_Code_Read[2] + T "HMI Key User".Key_User[10].Key_Code[2] + L "HMI Key User".Key_Code_Read[3] + T "HMI Key User".Key_User[10].Key_Code[3] + L "HMI Key User".Key_Code_Read[4] + T "HMI Key User".Key_User[10].Key_Code[4] + L "HMI Key User".Key_Code_Read[5] + T "HMI Key User".Key_User[10].Key_Code[5] + L "HMI Key User".Key_Code_Read[6] + T "HMI Key User".Key_User[10].Key_Code[6] + L "HMI Key User".Key_Code_Read[7] + T "HMI Key User".Key_User[10].Key_Code[7] + L "HMI Key User".Key_Code_Read[8] + T "HMI Key User".Key_User[10].Key_Code[8] + L "HMI Key User".Key_Code_Read[9] + T "HMI Key User".Key_User[10].Key_Code[9] + L "HMI Key User".Key_Code_Read[10] + T "HMI Key User".Key_User[10].Key_Code[10] + JU End + USER_11: L "HMI Key User".Key_Code_Read[1] + T "HMI Key User".Key_User[11].Key_Code[1] + L "HMI Key User".Key_Code_Read[2] + T "HMI Key User".Key_User[11].Key_Code[2] + L "HMI Key User".Key_Code_Read[3] + T "HMI Key User".Key_User[11].Key_Code[3] + L "HMI Key User".Key_Code_Read[4] + T "HMI Key User".Key_User[11].Key_Code[4] + L "HMI Key User".Key_Code_Read[5] + T "HMI Key User".Key_User[11].Key_Code[5] + L "HMI Key User".Key_Code_Read[6] + T "HMI Key User".Key_User[11].Key_Code[6] + L "HMI Key User".Key_Code_Read[7] + T "HMI Key User".Key_User[11].Key_Code[7] + L "HMI Key User".Key_Code_Read[8] + T "HMI Key User".Key_User[11].Key_Code[8] + L "HMI Key User".Key_Code_Read[9] + T "HMI Key User".Key_User[11].Key_Code[9] + L "HMI Key User".Key_Code_Read[10] + T "HMI Key User".Key_User[11].Key_Code[10] + JU End + USER_12: L "HMI Key User".Key_Code_Read[1] + T "HMI Key User".Key_User[12].Key_Code[1] + L "HMI Key User".Key_Code_Read[2] + T "HMI Key User".Key_User[12].Key_Code[2] + L "HMI Key User".Key_Code_Read[3] + T "HMI Key User".Key_User[12].Key_Code[3] + L "HMI Key User".Key_Code_Read[4] + T "HMI Key User".Key_User[12].Key_Code[4] + L "HMI Key User".Key_Code_Read[5] + T "HMI Key User".Key_User[12].Key_Code[5] + L "HMI Key User".Key_Code_Read[6] + T "HMI Key User".Key_User[12].Key_Code[6] + L "HMI Key User".Key_Code_Read[7] + T "HMI Key User".Key_User[12].Key_Code[7] + L "HMI Key User".Key_Code_Read[8] + T "HMI Key User".Key_User[12].Key_Code[8] + L "HMI Key User".Key_Code_Read[9] + T "HMI Key User".Key_User[12].Key_Code[9] + L "HMI Key User".Key_Code_Read[10] + T "HMI Key User".Key_User[12].Key_Code[10] + JU End + USER_13: L "HMI Key User".Key_Code_Read[1] + T "HMI Key User".Key_User[13].Key_Code[1] + L "HMI Key User".Key_Code_Read[2] + T "HMI Key User".Key_User[13].Key_Code[2] + L "HMI Key User".Key_Code_Read[3] + T "HMI Key User".Key_User[13].Key_Code[3] + L "HMI Key User".Key_Code_Read[4] + T "HMI Key User".Key_User[13].Key_Code[4] + L "HMI Key User".Key_Code_Read[5] + T "HMI Key User".Key_User[13].Key_Code[5] + L "HMI Key User".Key_Code_Read[6] + T "HMI Key User".Key_User[13].Key_Code[6] + L "HMI Key User".Key_Code_Read[7] + T "HMI Key User".Key_User[13].Key_Code[7] + L "HMI Key User".Key_Code_Read[8] + T "HMI Key User".Key_User[13].Key_Code[8] + L "HMI Key User".Key_Code_Read[9] + T "HMI Key User".Key_User[13].Key_Code[9] + L "HMI Key User".Key_Code_Read[10] + T "HMI Key User".Key_User[13].Key_Code[10] + JU End + USER_14: L "HMI Key User".Key_Code_Read[1] + T "HMI Key User".Key_User[14].Key_Code[1] + L "HMI Key User".Key_Code_Read[2] + T "HMI Key User".Key_User[14].Key_Code[2] + L "HMI Key User".Key_Code_Read[3] + T "HMI Key User".Key_User[14].Key_Code[3] + L "HMI Key User".Key_Code_Read[4] + T "HMI Key User".Key_User[14].Key_Code[4] + L "HMI Key User".Key_Code_Read[5] + T "HMI Key User".Key_User[14].Key_Code[5] + L "HMI Key User".Key_Code_Read[6] + T "HMI Key User".Key_User[14].Key_Code[6] + L "HMI Key User".Key_Code_Read[7] + T "HMI Key User".Key_User[14].Key_Code[7] + L "HMI Key User".Key_Code_Read[8] + T "HMI Key User".Key_User[14].Key_Code[8] + L "HMI Key User".Key_Code_Read[9] + T "HMI Key User".Key_User[14].Key_Code[9] + L "HMI Key User".Key_Code_Read[10] + T "HMI Key User".Key_User[14].Key_Code[10] + JU End + USER_15: L "HMI Key User".Key_Code_Read[1] + T "HMI Key User".Key_User[15].Key_Code[1] + L "HMI Key User".Key_Code_Read[2] + T "HMI Key User".Key_User[15].Key_Code[2] + L "HMI Key User".Key_Code_Read[3] + T "HMI Key User".Key_User[15].Key_Code[3] + L "HMI Key User".Key_Code_Read[4] + T "HMI Key User".Key_User[15].Key_Code[4] + L "HMI Key User".Key_Code_Read[5] + T "HMI Key User".Key_User[15].Key_Code[5] + L "HMI Key User".Key_Code_Read[6] + T "HMI Key User".Key_User[15].Key_Code[6] + L "HMI Key User".Key_Code_Read[7] + T "HMI Key User".Key_User[15].Key_Code[7] + L "HMI Key User".Key_Code_Read[8] + T "HMI Key User".Key_User[15].Key_Code[8] + L "HMI Key User".Key_Code_Read[9] + T "HMI Key User".Key_User[15].Key_Code[9] + L "HMI Key User".Key_Code_Read[10] + T "HMI Key User".Key_User[15].Key_Code[10] + JU End + USER_16: L "HMI Key User".Key_Code_Read[1] + T "HMI Key User".Key_User[16].Key_Code[1] + L "HMI Key User".Key_Code_Read[2] + T "HMI Key User".Key_User[16].Key_Code[2] + L "HMI Key User".Key_Code_Read[3] + T "HMI Key User".Key_User[16].Key_Code[3] + L "HMI Key User".Key_Code_Read[4] + T "HMI Key User".Key_User[16].Key_Code[4] + L "HMI Key User".Key_Code_Read[5] + T "HMI Key User".Key_User[16].Key_Code[5] + L "HMI Key User".Key_Code_Read[6] + T "HMI Key User".Key_User[16].Key_Code[6] + L "HMI Key User".Key_Code_Read[7] + T "HMI Key User".Key_User[16].Key_Code[7] + L "HMI Key User".Key_Code_Read[8] + T "HMI Key User".Key_User[16].Key_Code[8] + L "HMI Key User".Key_Code_Read[9] + T "HMI Key User".Key_User[16].Key_Code[9] + L "HMI Key User".Key_Code_Read[10] + T "HMI Key User".Key_User[16].Key_Code[10] + JU End + USER_17: L "HMI Key User".Key_Code_Read[1] + T "HMI Key User".Key_User[17].Key_Code[1] + L "HMI Key User".Key_Code_Read[2] + T "HMI Key User".Key_User[17].Key_Code[2] + L "HMI Key User".Key_Code_Read[3] + T "HMI Key User".Key_User[17].Key_Code[3] + L "HMI Key User".Key_Code_Read[4] + T "HMI Key User".Key_User[17].Key_Code[4] + L "HMI Key User".Key_Code_Read[5] + T "HMI Key User".Key_User[17].Key_Code[5] + L "HMI Key User".Key_Code_Read[6] + T "HMI Key User".Key_User[17].Key_Code[6] + L "HMI Key User".Key_Code_Read[7] + T "HMI Key User".Key_User[17].Key_Code[7] + L "HMI Key User".Key_Code_Read[8] + T "HMI Key User".Key_User[17].Key_Code[8] + L "HMI Key User".Key_Code_Read[9] + T "HMI Key User".Key_User[17].Key_Code[9] + L "HMI Key User".Key_Code_Read[10] + T "HMI Key User".Key_User[17].Key_Code[10] + JU End + USER_18: L "HMI Key User".Key_Code_Read[1] + T "HMI Key User".Key_User[18].Key_Code[1] + L "HMI Key User".Key_Code_Read[2] + T "HMI Key User".Key_User[18].Key_Code[2] + L "HMI Key User".Key_Code_Read[3] + T "HMI Key User".Key_User[18].Key_Code[3] + L "HMI Key User".Key_Code_Read[4] + T "HMI Key User".Key_User[18].Key_Code[4] + L "HMI Key User".Key_Code_Read[5] + T "HMI Key User".Key_User[18].Key_Code[5] + L "HMI Key User".Key_Code_Read[6] + T "HMI Key User".Key_User[18].Key_Code[6] + L "HMI Key User".Key_Code_Read[7] + T "HMI Key User".Key_User[18].Key_Code[7] + L "HMI Key User".Key_Code_Read[8] + T "HMI Key User".Key_User[18].Key_Code[8] + L "HMI Key User".Key_Code_Read[9] + T "HMI Key User".Key_User[18].Key_Code[9] + L "HMI Key User".Key_Code_Read[10] + T "HMI Key User".Key_User[18].Key_Code[10] + JU End + USER_19: L "HMI Key User".Key_Code_Read[1] + T "HMI Key User".Key_User[19].Key_Code[1] + L "HMI Key User".Key_Code_Read[2] + T "HMI Key User".Key_User[19].Key_Code[2] + L "HMI Key User".Key_Code_Read[3] + T "HMI Key User".Key_User[19].Key_Code[3] + L "HMI Key User".Key_Code_Read[4] + T "HMI Key User".Key_User[19].Key_Code[4] + L "HMI Key User".Key_Code_Read[5] + T "HMI Key User".Key_User[19].Key_Code[5] + L "HMI Key User".Key_Code_Read[6] + T "HMI Key User".Key_User[19].Key_Code[6] + L "HMI Key User".Key_Code_Read[7] + T "HMI Key User".Key_User[19].Key_Code[7] + L "HMI Key User".Key_Code_Read[8] + T "HMI Key User".Key_User[19].Key_Code[8] + L "HMI Key User".Key_Code_Read[9] + T "HMI Key User".Key_User[19].Key_Code[9] + L "HMI Key User".Key_Code_Read[10] + T "HMI Key User".Key_User[19].Key_Code[10] + JU End + USER_20: L "HMI Key User".Key_Code_Read[1] + T "HMI Key User".Key_User[20].Key_Code[1] + L "HMI Key User".Key_Code_Read[2] + T "HMI Key User".Key_User[20].Key_Code[2] + L "HMI Key User".Key_Code_Read[3] + T "HMI Key User".Key_User[20].Key_Code[3] + L "HMI Key User".Key_Code_Read[4] + T "HMI Key User".Key_User[20].Key_Code[4] + L "HMI Key User".Key_Code_Read[5] + T "HMI Key User".Key_User[20].Key_Code[5] + L "HMI Key User".Key_Code_Read[6] + T "HMI Key User".Key_User[20].Key_Code[6] + L "HMI Key User".Key_Code_Read[7] + T "HMI Key User".Key_User[20].Key_Code[7] + L "HMI Key User".Key_Code_Read[8] + T "HMI Key User".Key_User[20].Key_Code[8] + L "HMI Key User".Key_Code_Read[9] + T "HMI Key User".Key_User[20].Key_Code[9] + L "HMI Key User".Key_Code_Read[10] + T "HMI Key User".Key_User[20].Key_Code[10] + JU End + + End: NOP_0 + + // --- END STL Network 9 --- + + // Network 10: Write Actual User Name and Actual Level (Original Language: STL) + + // --- BEGIN STL Network 10 --- + + AN "Key Read & Write Data".Login_Active + JC No_User + L "HMI Key User".Actual_UserLevel + L 9 + EQ_I + JC End_2 + L "Key Read & Write Data".Check_COUNT + L 1 + EQ_I + JC USER_R1 + L "Key Read & Write Data".Check_COUNT + L 2 + EQ_I + JC USER_R2 + L "Key Read & Write Data".Check_COUNT + L 3 + EQ_I + JC USER_R3 + L "Key Read & Write Data".Check_COUNT + L 4 + EQ_I + JC USER_R4 + L "Key Read & Write Data".Check_COUNT + L 5 + EQ_I + JC USER_R5 + L "Key Read & Write Data".Check_COUNT + L 6 + EQ_I + JC USER_R6 + L "Key Read & Write Data".Check_COUNT + L 7 + EQ_I + JC USER_R7 + L "Key Read & Write Data".Check_COUNT + L 8 + EQ_I + JC USER_R8 + L "Key Read & Write Data".Check_COUNT + L 9 + EQ_I + JC USER_R9 + L "Key Read & Write Data".Check_COUNT + L 10 + EQ_I + JC USER_R10 + L "Key Read & Write Data".Check_COUNT + L 11 + EQ_I + JC USER_R11 + L "Key Read & Write Data".Check_COUNT + L 12 + EQ_I + JC USER_R12 + L "Key Read & Write Data".Check_COUNT + L 13 + EQ_I + JC USER_R13 + L "Key Read & Write Data".Check_COUNT + L 14 + EQ_I + JC USER_R14 + L "Key Read & Write Data".Check_COUNT + L 15 + EQ_I + JC USER_R15 + L "Key Read & Write Data".Check_COUNT + L 16 + EQ_I + JC USER_R16 + L "Key Read & Write Data".Check_COUNT + L 17 + EQ_I + JC USER_R17 + L "Key Read & Write Data".Check_COUNT + L 18 + EQ_I + JC USER_R18 + L "Key Read & Write Data".Check_COUNT + L 19 + EQ_I + JC USER_R19 + L "Key Read & Write Data".Check_COUNT + L 20 + EQ_I + JC USER_R20 + + USER_R1: NOP_0 + L "HMI Key User".Key_User[1].User_Level + T "HMI Key User".Actual_UserLevel + + L "HMI Key User".Key_User[1].Key_User_Name[1] + T "HMI Key User".Actual_User_Name[1] + L "HMI Key User".Key_User[1].Key_User_Name[2] + T "HMI Key User".Actual_User_Name[2] + L "HMI Key User".Key_User[1].Key_User_Name[3] + T "HMI Key User".Actual_User_Name[3] + L "HMI Key User".Key_User[1].Key_User_Name[4] + T "HMI Key User".Actual_User_Name[4] + L "HMI Key User".Key_User[1].Key_User_Name[5] + T "HMI Key User".Actual_User_Name[5] + L "HMI Key User".Key_User[1].Key_User_Name[6] + T "HMI Key User".Actual_User_Name[6] + L "HMI Key User".Key_User[1].Key_User_Name[7] + T "HMI Key User".Actual_User_Name[7] + L "HMI Key User".Key_User[1].Key_User_Name[8] + T "HMI Key User".Actual_User_Name[8] + L "HMI Key User".Key_User[1].Key_User_Name[9] + T "HMI Key User".Actual_User_Name[9] + L "HMI Key User".Key_User[1].Key_User_Name[10] + T "HMI Key User".Actual_User_Name[10] + JU End_2 + USER_R2: L "HMI Key User".Key_User[2].User_Level + T "HMI Key User".Actual_UserLevel + + L "HMI Key User".Key_User[2].Key_User_Name[1] + T "HMI Key User".Actual_User_Name[1] + L "HMI Key User".Key_User[2].Key_User_Name[2] + T "HMI Key User".Actual_User_Name[2] + L "HMI Key User".Key_User[2].Key_User_Name[3] + T "HMI Key User".Actual_User_Name[3] + L "HMI Key User".Key_User[2].Key_User_Name[4] + T "HMI Key User".Actual_User_Name[4] + L "HMI Key User".Key_User[2].Key_User_Name[5] + T "HMI Key User".Actual_User_Name[5] + L "HMI Key User".Key_User[2].Key_User_Name[6] + T "HMI Key User".Actual_User_Name[6] + L "HMI Key User".Key_User[2].Key_User_Name[7] + T "HMI Key User".Actual_User_Name[7] + L "HMI Key User".Key_User[2].Key_User_Name[8] + T "HMI Key User".Actual_User_Name[8] + L "HMI Key User".Key_User[2].Key_User_Name[9] + T "HMI Key User".Actual_User_Name[9] + L "HMI Key User".Key_User[2].Key_User_Name[10] + T "HMI Key User".Actual_User_Name[10] + JU End_2 + USER_R3: L "HMI Key User".Key_User[3].User_Level + T "HMI Key User".Actual_UserLevel + + L "HMI Key User".Key_User[3].Key_User_Name[1] + T "HMI Key User".Actual_User_Name[1] + L "HMI Key User".Key_User[3].Key_User_Name[2] + T "HMI Key User".Actual_User_Name[2] + L "HMI Key User".Key_User[3].Key_User_Name[3] + T "HMI Key User".Actual_User_Name[3] + L "HMI Key User".Key_User[3].Key_User_Name[4] + T "HMI Key User".Actual_User_Name[4] + L "HMI Key User".Key_User[3].Key_User_Name[5] + T "HMI Key User".Actual_User_Name[5] + L "HMI Key User".Key_User[3].Key_User_Name[6] + T "HMI Key User".Actual_User_Name[6] + L "HMI Key User".Key_User[3].Key_User_Name[7] + T "HMI Key User".Actual_User_Name[7] + L "HMI Key User".Key_User[3].Key_User_Name[8] + T "HMI Key User".Actual_User_Name[8] + L "HMI Key User".Key_User[3].Key_User_Name[9] + T "HMI Key User".Actual_User_Name[9] + L "HMI Key User".Key_User[3].Key_User_Name[10] + T "HMI Key User".Actual_User_Name[10] + JU End_2 + + USER_R4: L "HMI Key User".Key_User[4].User_Level + T "HMI Key User".Actual_UserLevel + + L "HMI Key User".Key_User[4].Key_User_Name[1] + T "HMI Key User".Actual_User_Name[1] + L "HMI Key User".Key_User[4].Key_User_Name[2] + T "HMI Key User".Actual_User_Name[2] + L "HMI Key User".Key_User[4].Key_User_Name[3] + T "HMI Key User".Actual_User_Name[3] + L "HMI Key User".Key_User[4].Key_User_Name[4] + T "HMI Key User".Actual_User_Name[4] + L "HMI Key User".Key_User[4].Key_User_Name[5] + T "HMI Key User".Actual_User_Name[5] + L "HMI Key User".Key_User[4].Key_User_Name[6] + T "HMI Key User".Actual_User_Name[6] + L "HMI Key User".Key_User[4].Key_User_Name[7] + T "HMI Key User".Actual_User_Name[7] + L "HMI Key User".Key_User[4].Key_User_Name[8] + T "HMI Key User".Actual_User_Name[8] + L "HMI Key User".Key_User[4].Key_User_Name[9] + T "HMI Key User".Actual_User_Name[9] + L "HMI Key User".Key_User[4].Key_User_Name[10] + T "HMI Key User".Actual_User_Name[10] + JU End_2 + + USER_R5: NOP_0 + L "HMI Key User".Key_User[5].User_Level + T "HMI Key User".Actual_UserLevel + + L "HMI Key User".Key_User[5].Key_User_Name[1] + T "HMI Key User".Actual_User_Name[1] + L "HMI Key User".Key_User[5].Key_User_Name[2] + T "HMI Key User".Actual_User_Name[2] + L "HMI Key User".Key_User[5].Key_User_Name[3] + T "HMI Key User".Actual_User_Name[3] + L "HMI Key User".Key_User[5].Key_User_Name[4] + T "HMI Key User".Actual_User_Name[4] + L "HMI Key User".Key_User[5].Key_User_Name[5] + T "HMI Key User".Actual_User_Name[5] + L "HMI Key User".Key_User[5].Key_User_Name[6] + T "HMI Key User".Actual_User_Name[6] + L "HMI Key User".Key_User[5].Key_User_Name[7] + T "HMI Key User".Actual_User_Name[7] + L "HMI Key User".Key_User[5].Key_User_Name[8] + T "HMI Key User".Actual_User_Name[8] + L "HMI Key User".Key_User[5].Key_User_Name[9] + T "HMI Key User".Actual_User_Name[9] + L "HMI Key User".Key_User[5].Key_User_Name[10] + T "HMI Key User".Actual_User_Name[10] + JU End_2 + + USER_R6: NOP_0 + L "HMI Key User".Key_User[6].User_Level + T "HMI Key User".Actual_UserLevel + + L "HMI Key User".Key_User[6].Key_User_Name[1] + T "HMI Key User".Actual_User_Name[1] + L "HMI Key User".Key_User[6].Key_User_Name[2] + T "HMI Key User".Actual_User_Name[2] + L "HMI Key User".Key_User[6].Key_User_Name[3] + T "HMI Key User".Actual_User_Name[3] + L "HMI Key User".Key_User[6].Key_User_Name[4] + T "HMI Key User".Actual_User_Name[4] + L "HMI Key User".Key_User[6].Key_User_Name[5] + T "HMI Key User".Actual_User_Name[5] + L "HMI Key User".Key_User[6].Key_User_Name[6] + T "HMI Key User".Actual_User_Name[6] + L "HMI Key User".Key_User[6].Key_User_Name[7] + T "HMI Key User".Actual_User_Name[7] + L "HMI Key User".Key_User[6].Key_User_Name[8] + T "HMI Key User".Actual_User_Name[8] + L "HMI Key User".Key_User[6].Key_User_Name[9] + T "HMI Key User".Actual_User_Name[9] + L "HMI Key User".Key_User[6].Key_User_Name[10] + T "HMI Key User".Actual_User_Name[10] + JU End_2 + + USER_R7: NOP_0 + L "HMI Key User".Key_User[7].User_Level + T "HMI Key User".Actual_UserLevel + + L "HMI Key User".Key_User[7].Key_User_Name[1] + T "HMI Key User".Actual_User_Name[1] + L "HMI Key User".Key_User[7].Key_User_Name[2] + T "HMI Key User".Actual_User_Name[2] + L "HMI Key User".Key_User[7].Key_User_Name[3] + T "HMI Key User".Actual_User_Name[3] + L "HMI Key User".Key_User[7].Key_User_Name[4] + T "HMI Key User".Actual_User_Name[4] + L "HMI Key User".Key_User[7].Key_User_Name[5] + T "HMI Key User".Actual_User_Name[5] + L "HMI Key User".Key_User[7].Key_User_Name[6] + T "HMI Key User".Actual_User_Name[6] + L "HMI Key User".Key_User[7].Key_User_Name[7] + T "HMI Key User".Actual_User_Name[7] + L "HMI Key User".Key_User[7].Key_User_Name[8] + T "HMI Key User".Actual_User_Name[8] + L "HMI Key User".Key_User[7].Key_User_Name[9] + T "HMI Key User".Actual_User_Name[9] + L "HMI Key User".Key_User[7].Key_User_Name[10] + T "HMI Key User".Actual_User_Name[10] + JU End_2 + + USER_R8: NOP_0 + L "HMI Key User".Key_User[8].User_Level + T "HMI Key User".Actual_UserLevel + + L "HMI Key User".Key_User[8].Key_User_Name[1] + T "HMI Key User".Actual_User_Name[1] + L "HMI Key User".Key_User[8].Key_User_Name[2] + T "HMI Key User".Actual_User_Name[2] + L "HMI Key User".Key_User[8].Key_User_Name[3] + T "HMI Key User".Actual_User_Name[3] + L "HMI Key User".Key_User[8].Key_User_Name[4] + T "HMI Key User".Actual_User_Name[4] + L "HMI Key User".Key_User[8].Key_User_Name[5] + T "HMI Key User".Actual_User_Name[5] + L "HMI Key User".Key_User[8].Key_User_Name[6] + T "HMI Key User".Actual_User_Name[6] + L "HMI Key User".Key_User[8].Key_User_Name[7] + T "HMI Key User".Actual_User_Name[7] + L "HMI Key User".Key_User[8].Key_User_Name[8] + T "HMI Key User".Actual_User_Name[8] + L "HMI Key User".Key_User[8].Key_User_Name[9] + T "HMI Key User".Actual_User_Name[9] + L "HMI Key User".Key_User[8].Key_User_Name[10] + T "HMI Key User".Actual_User_Name[10] + JU End_2 + + USER_R9: NOP_0 + L "HMI Key User".Key_User[9].User_Level + T "HMI Key User".Actual_UserLevel + + L "HMI Key User".Key_User[9].Key_User_Name[1] + T "HMI Key User".Actual_User_Name[1] + L "HMI Key User".Key_User[9].Key_User_Name[2] + T "HMI Key User".Actual_User_Name[2] + L "HMI Key User".Key_User[9].Key_User_Name[3] + T "HMI Key User".Actual_User_Name[3] + L "HMI Key User".Key_User[9].Key_User_Name[4] + T "HMI Key User".Actual_User_Name[4] + L "HMI Key User".Key_User[9].Key_User_Name[5] + T "HMI Key User".Actual_User_Name[5] + L "HMI Key User".Key_User[9].Key_User_Name[6] + T "HMI Key User".Actual_User_Name[6] + L "HMI Key User".Key_User[9].Key_User_Name[7] + T "HMI Key User".Actual_User_Name[7] + L "HMI Key User".Key_User[9].Key_User_Name[8] + T "HMI Key User".Actual_User_Name[8] + L "HMI Key User".Key_User[9].Key_User_Name[9] + T "HMI Key User".Actual_User_Name[9] + L "HMI Key User".Key_User[9].Key_User_Name[10] + T "HMI Key User".Actual_User_Name[10] + JU End_2 + + USER_R10: NOP_0 + L "HMI Key User".Key_User[10].User_Level + T "HMI Key User".Actual_UserLevel + + L "HMI Key User".Key_User[10].Key_User_Name[1] + T "HMI Key User".Actual_User_Name[1] + L "HMI Key User".Key_User[10].Key_User_Name[2] + T "HMI Key User".Actual_User_Name[2] + L "HMI Key User".Key_User[10].Key_User_Name[3] + T "HMI Key User".Actual_User_Name[3] + L "HMI Key User".Key_User[10].Key_User_Name[4] + T "HMI Key User".Actual_User_Name[4] + L "HMI Key User".Key_User[10].Key_User_Name[5] + T "HMI Key User".Actual_User_Name[5] + L "HMI Key User".Key_User[10].Key_User_Name[6] + T "HMI Key User".Actual_User_Name[6] + L "HMI Key User".Key_User[10].Key_User_Name[7] + T "HMI Key User".Actual_User_Name[7] + L "HMI Key User".Key_User[10].Key_User_Name[8] + T "HMI Key User".Actual_User_Name[8] + L "HMI Key User".Key_User[10].Key_User_Name[9] + T "HMI Key User".Actual_User_Name[9] + L "HMI Key User".Key_User[10].Key_User_Name[10] + T "HMI Key User".Actual_User_Name[10] + JU End_2 + + USER_R11: NOP_0 + L "HMI Key User".Key_User[11].User_Level + T "HMI Key User".Actual_UserLevel + + L "HMI Key User".Key_User[11].Key_User_Name[1] + T "HMI Key User".Actual_User_Name[1] + L "HMI Key User".Key_User[11].Key_User_Name[2] + T "HMI Key User".Actual_User_Name[2] + L "HMI Key User".Key_User[11].Key_User_Name[3] + T "HMI Key User".Actual_User_Name[3] + L "HMI Key User".Key_User[11].Key_User_Name[4] + T "HMI Key User".Actual_User_Name[4] + L "HMI Key User".Key_User[11].Key_User_Name[5] + T "HMI Key User".Actual_User_Name[5] + L "HMI Key User".Key_User[11].Key_User_Name[6] + T "HMI Key User".Actual_User_Name[6] + L "HMI Key User".Key_User[11].Key_User_Name[7] + T "HMI Key User".Actual_User_Name[7] + L "HMI Key User".Key_User[11].Key_User_Name[8] + T "HMI Key User".Actual_User_Name[8] + L "HMI Key User".Key_User[11].Key_User_Name[9] + T "HMI Key User".Actual_User_Name[9] + L "HMI Key User".Key_User[11].Key_User_Name[10] + T "HMI Key User".Actual_User_Name[10] + JU End_2 + + USER_R12: NOP_0 + L "HMI Key User".Key_User[12].User_Level + T "HMI Key User".Actual_UserLevel + + L "HMI Key User".Key_User[12].Key_User_Name[1] + T "HMI Key User".Actual_User_Name[1] + L "HMI Key User".Key_User[12].Key_User_Name[2] + T "HMI Key User".Actual_User_Name[2] + L "HMI Key User".Key_User[12].Key_User_Name[3] + T "HMI Key User".Actual_User_Name[3] + L "HMI Key User".Key_User[12].Key_User_Name[4] + T "HMI Key User".Actual_User_Name[4] + L "HMI Key User".Key_User[12].Key_User_Name[5] + T "HMI Key User".Actual_User_Name[5] + L "HMI Key User".Key_User[12].Key_User_Name[6] + T "HMI Key User".Actual_User_Name[6] + L "HMI Key User".Key_User[12].Key_User_Name[7] + T "HMI Key User".Actual_User_Name[7] + L "HMI Key User".Key_User[12].Key_User_Name[8] + T "HMI Key User".Actual_User_Name[8] + L "HMI Key User".Key_User[12].Key_User_Name[9] + T "HMI Key User".Actual_User_Name[9] + L "HMI Key User".Key_User[12].Key_User_Name[10] + T "HMI Key User".Actual_User_Name[10] + JU End_2 + + USER_R13: NOP_0 + L "HMI Key User".Key_User[13].User_Level + T "HMI Key User".Actual_UserLevel + + L "HMI Key User".Key_User[13].Key_User_Name[1] + T "HMI Key User".Actual_User_Name[1] + L "HMI Key User".Key_User[13].Key_User_Name[2] + T "HMI Key User".Actual_User_Name[2] + L "HMI Key User".Key_User[13].Key_User_Name[3] + T "HMI Key User".Actual_User_Name[3] + L "HMI Key User".Key_User[13].Key_User_Name[4] + T "HMI Key User".Actual_User_Name[4] + L "HMI Key User".Key_User[13].Key_User_Name[5] + T "HMI Key User".Actual_User_Name[5] + L "HMI Key User".Key_User[13].Key_User_Name[6] + T "HMI Key User".Actual_User_Name[6] + L "HMI Key User".Key_User[13].Key_User_Name[7] + T "HMI Key User".Actual_User_Name[7] + L "HMI Key User".Key_User[13].Key_User_Name[8] + T "HMI Key User".Actual_User_Name[8] + L "HMI Key User".Key_User[13].Key_User_Name[9] + T "HMI Key User".Actual_User_Name[9] + L "HMI Key User".Key_User[13].Key_User_Name[10] + T "HMI Key User".Actual_User_Name[10] + JU End_2 + + USER_R14: NOP_0 + L "HMI Key User".Key_User[14].User_Level + T "HMI Key User".Actual_UserLevel + + L "HMI Key User".Key_User[14].Key_User_Name[1] + T "HMI Key User".Actual_User_Name[1] + L "HMI Key User".Key_User[14].Key_User_Name[2] + T "HMI Key User".Actual_User_Name[2] + L "HMI Key User".Key_User[14].Key_User_Name[3] + T "HMI Key User".Actual_User_Name[3] + L "HMI Key User".Key_User[14].Key_User_Name[4] + T "HMI Key User".Actual_User_Name[4] + L "HMI Key User".Key_User[14].Key_User_Name[5] + T "HMI Key User".Actual_User_Name[5] + L "HMI Key User".Key_User[14].Key_User_Name[6] + T "HMI Key User".Actual_User_Name[6] + L "HMI Key User".Key_User[14].Key_User_Name[7] + T "HMI Key User".Actual_User_Name[7] + L "HMI Key User".Key_User[14].Key_User_Name[8] + T "HMI Key User".Actual_User_Name[8] + L "HMI Key User".Key_User[14].Key_User_Name[9] + T "HMI Key User".Actual_User_Name[9] + L "HMI Key User".Key_User[14].Key_User_Name[10] + T "HMI Key User".Actual_User_Name[10] + JU End_2 + + USER_R15: NOP_0 + L "HMI Key User".Key_User[15].User_Level + T "HMI Key User".Actual_UserLevel + + L "HMI Key User".Key_User[15].Key_User_Name[1] + T "HMI Key User".Actual_User_Name[1] + L "HMI Key User".Key_User[15].Key_User_Name[2] + T "HMI Key User".Actual_User_Name[2] + L "HMI Key User".Key_User[15].Key_User_Name[3] + T "HMI Key User".Actual_User_Name[3] + L "HMI Key User".Key_User[15].Key_User_Name[4] + T "HMI Key User".Actual_User_Name[4] + L "HMI Key User".Key_User[15].Key_User_Name[5] + T "HMI Key User".Actual_User_Name[5] + L "HMI Key User".Key_User[15].Key_User_Name[6] + T "HMI Key User".Actual_User_Name[6] + L "HMI Key User".Key_User[15].Key_User_Name[7] + T "HMI Key User".Actual_User_Name[7] + L "HMI Key User".Key_User[15].Key_User_Name[8] + T "HMI Key User".Actual_User_Name[8] + L "HMI Key User".Key_User[15].Key_User_Name[9] + T "HMI Key User".Actual_User_Name[9] + L "HMI Key User".Key_User[15].Key_User_Name[10] + T "HMI Key User".Actual_User_Name[10] + JU End_2 + + USER_R16: NOP_0 + L "HMI Key User".Key_User[16].User_Level + T "HMI Key User".Actual_UserLevel + + L "HMI Key User".Key_User[16].Key_User_Name[1] + T "HMI Key User".Actual_User_Name[1] + L "HMI Key User".Key_User[16].Key_User_Name[2] + T "HMI Key User".Actual_User_Name[2] + L "HMI Key User".Key_User[16].Key_User_Name[3] + T "HMI Key User".Actual_User_Name[3] + L "HMI Key User".Key_User[16].Key_User_Name[4] + T "HMI Key User".Actual_User_Name[4] + L "HMI Key User".Key_User[16].Key_User_Name[5] + T "HMI Key User".Actual_User_Name[5] + L "HMI Key User".Key_User[16].Key_User_Name[6] + T "HMI Key User".Actual_User_Name[6] + L "HMI Key User".Key_User[16].Key_User_Name[7] + T "HMI Key User".Actual_User_Name[7] + L "HMI Key User".Key_User[16].Key_User_Name[8] + T "HMI Key User".Actual_User_Name[8] + L "HMI Key User".Key_User[16].Key_User_Name[9] + T "HMI Key User".Actual_User_Name[9] + L "HMI Key User".Key_User[16].Key_User_Name[10] + T "HMI Key User".Actual_User_Name[10] + JU End_2 + + USER_R17: NOP_0 + L "HMI Key User".Key_User[17].User_Level + T "HMI Key User".Actual_UserLevel + + L "HMI Key User".Key_User[17].Key_User_Name[1] + T "HMI Key User".Actual_User_Name[1] + L "HMI Key User".Key_User[17].Key_User_Name[2] + T "HMI Key User".Actual_User_Name[2] + L "HMI Key User".Key_User[17].Key_User_Name[3] + T "HMI Key User".Actual_User_Name[3] + L "HMI Key User".Key_User[17].Key_User_Name[4] + T "HMI Key User".Actual_User_Name[4] + L "HMI Key User".Key_User[17].Key_User_Name[5] + T "HMI Key User".Actual_User_Name[5] + L "HMI Key User".Key_User[17].Key_User_Name[6] + T "HMI Key User".Actual_User_Name[6] + L "HMI Key User".Key_User[17].Key_User_Name[7] + T "HMI Key User".Actual_User_Name[7] + L "HMI Key User".Key_User[17].Key_User_Name[8] + T "HMI Key User".Actual_User_Name[8] + L "HMI Key User".Key_User[17].Key_User_Name[9] + T "HMI Key User".Actual_User_Name[9] + L "HMI Key User".Key_User[17].Key_User_Name[10] + T "HMI Key User".Actual_User_Name[10] + JU End_2 + + USER_R18: NOP_0 + L "HMI Key User".Key_User[18].User_Level + T "HMI Key User".Actual_UserLevel + + L "HMI Key User".Key_User[18].Key_User_Name[1] + T "HMI Key User".Actual_User_Name[1] + L "HMI Key User".Key_User[18].Key_User_Name[2] + T "HMI Key User".Actual_User_Name[2] + L "HMI Key User".Key_User[18].Key_User_Name[3] + T "HMI Key User".Actual_User_Name[3] + L "HMI Key User".Key_User[18].Key_User_Name[4] + T "HMI Key User".Actual_User_Name[4] + L "HMI Key User".Key_User[18].Key_User_Name[5] + T "HMI Key User".Actual_User_Name[5] + L "HMI Key User".Key_User[18].Key_User_Name[6] + T "HMI Key User".Actual_User_Name[6] + L "HMI Key User".Key_User[18].Key_User_Name[7] + T "HMI Key User".Actual_User_Name[7] + L "HMI Key User".Key_User[18].Key_User_Name[8] + T "HMI Key User".Actual_User_Name[8] + L "HMI Key User".Key_User[18].Key_User_Name[9] + T "HMI Key User".Actual_User_Name[9] + L "HMI Key User".Key_User[18].Key_User_Name[10] + T "HMI Key User".Actual_User_Name[10] + JU End_2 + + USER_R19: NOP_0 + L "HMI Key User".Key_User[19].User_Level + T "HMI Key User".Actual_UserLevel + + L "HMI Key User".Key_User[19].Key_User_Name[1] + T "HMI Key User".Actual_User_Name[1] + L "HMI Key User".Key_User[19].Key_User_Name[2] + T "HMI Key User".Actual_User_Name[2] + L "HMI Key User".Key_User[19].Key_User_Name[3] + T "HMI Key User".Actual_User_Name[3] + L "HMI Key User".Key_User[19].Key_User_Name[4] + T "HMI Key User".Actual_User_Name[4] + L "HMI Key User".Key_User[19].Key_User_Name[5] + T "HMI Key User".Actual_User_Name[5] + L "HMI Key User".Key_User[19].Key_User_Name[6] + T "HMI Key User".Actual_User_Name[6] + L "HMI Key User".Key_User[19].Key_User_Name[7] + T "HMI Key User".Actual_User_Name[7] + L "HMI Key User".Key_User[19].Key_User_Name[8] + T "HMI Key User".Actual_User_Name[8] + L "HMI Key User".Key_User[19].Key_User_Name[9] + T "HMI Key User".Actual_User_Name[9] + L "HMI Key User".Key_User[19].Key_User_Name[10] + T "HMI Key User".Actual_User_Name[10] + JU End_2 + + USER_R20: NOP_0 + L "HMI Key User".Key_User[20].User_Level + T "HMI Key User".Actual_UserLevel + + L "HMI Key User".Key_User[20].Key_User_Name[1] + T "HMI Key User".Actual_User_Name[1] + L "HMI Key User".Key_User[20].Key_User_Name[2] + T "HMI Key User".Actual_User_Name[2] + L "HMI Key User".Key_User[20].Key_User_Name[3] + T "HMI Key User".Actual_User_Name[3] + L "HMI Key User".Key_User[20].Key_User_Name[4] + T "HMI Key User".Actual_User_Name[4] + L "HMI Key User".Key_User[20].Key_User_Name[5] + T "HMI Key User".Actual_User_Name[5] + L "HMI Key User".Key_User[20].Key_User_Name[6] + T "HMI Key User".Actual_User_Name[6] + L "HMI Key User".Key_User[20].Key_User_Name[7] + T "HMI Key User".Actual_User_Name[7] + L "HMI Key User".Key_User[20].Key_User_Name[8] + T "HMI Key User".Actual_User_Name[8] + L "HMI Key User".Key_User[20].Key_User_Name[9] + T "HMI Key User".Actual_User_Name[9] + L "HMI Key User".Key_User[20].Key_User_Name[10] + T "HMI Key User".Actual_User_Name[10] + JU End_2 + + No_User: NOP_0 + L "HMI Key User".No_User_Name[1] + T "HMI Key User".Actual_User_Name[1] + L "HMI Key User".No_User_Name[2] + T "HMI Key User".Actual_User_Name[2] + L "HMI Key User".No_User_Name[3] + T "HMI Key User".Actual_User_Name[3] + L "HMI Key User".No_User_Name[4] + T "HMI Key User".Actual_User_Name[4] + L "HMI Key User".No_User_Name[5] + T "HMI Key User".Actual_User_Name[5] + L "HMI Key User".No_User_Name[6] + T "HMI Key User".Actual_User_Name[6] + L "HMI Key User".No_User_Name[7] + T "HMI Key User".Actual_User_Name[7] + L "HMI Key User".No_User_Name[8] + T "HMI Key User".Actual_User_Name[8] + L "HMI Key User".No_User_Name[9] + T "HMI Key User".Actual_User_Name[9] + L "HMI Key User".No_User_Name[10] + T "HMI Key User".Actual_User_Name[10] + L "HMI Key User".No_User_Name[11] + T "HMI Key User".Actual_User_Name[11] + L "HMI Key User".No_User_Name[12] + T "HMI Key User".Actual_User_Name[12] + L "HMI Key User".No_User_Name[13] + T "HMI Key User".Actual_User_Name[13] + L "HMI Key User".No_User_Name[14] + T "HMI Key User".Actual_User_Name[14] + L "HMI Key User".No_User_Name[15] + T "HMI Key User".Actual_User_Name[15] + L "HMI Key User".No_User_Name[16] + T "HMI Key User".Actual_User_Name[16] + + End_2: NOP_0 + + // --- END STL Network 10 --- + + // Network 11: Memories (Original Language: LAD) + + #TON_INSTANCE_32(IN := "AUX TRUE" AND "HMI Key User"."Cmd_Bit"."User_Key_Read_Ok", PT := T#2S); // TODO: Declarar #TON_INSTANCE_32 : TON; + + IF #TON_INSTANCE_32.Q THEN + "HMI Key User"."Cmd_Bit"."User_Key_Read_Ok" := FALSE; + END_IF; + + IF "HMI Key User"."Cmd_Bit"."SuperUser_Remote_Request" AND "AUX TRUE" THEN + "HMI Key User"."Cmd_Bit"."SuperUser_Remote_Request" := FALSE; + END_IF; + + "HMI Key User"."Cmd_Bit"."SuperUser_Remote_Request" := "AUX TRUE" AND "DI_Log_Sidel"; + + #TOF_INSTANCE_39(IN := "AUX TRUE" AND "DI_Log_Sidel", PT := T#600s); // TODO: Declarar #TOF_INSTANCE_39 : TOF; + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Key_Read___Write_Data.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Key_Read___Write_Data.md new file mode 100644 index 0000000..f6aaf24 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Key_Read___Write_Data.md @@ -0,0 +1,38 @@ +```pascal +// Block Type: InstanceDB +// Block Name (Original): Key Read & Write Data +// Block Number: 50 + +DATA_BLOCK "Key_Read___Write_Data" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Key_Code : String[10]; + Key_User_Name : String[16] := ''; + Key_POINTER : DInt := 512; + Check_COUNT : DInt := 2; + Check_Active : Bool := FALSE; + Equal_String : Bool := TRUE; + Login_Active : Bool := TRUE; + LogOut_Old_User : Bool := FALSE; + String_Not_Valid : Bool := FALSE; + Cmd_User_Key_Assign_FP : Bool := FALSE; + Cmd_User_Key_Assign : Bool := FALSE; + LogOut_Time : Time; + LogOut_Timer : STRUCT + PT : Time; + ET : Time := T#30S_653MS; + IN : Bool := FALSE; + Q : Bool := FALSE; + END_STRUCT; + + LogOut_T : Bool := FALSE; + LogOut_FP : Bool := FALSE; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/LIMIT_I.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/LIMIT_I.md new file mode 100644 index 0000000..38fa64c --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/LIMIT_I.md @@ -0,0 +1,40 @@ +```pascal +// Block Type: FC +// Block Number: 1849 +// Original Network Languages: LAD + +FUNCTION "LIMIT_I" : Int +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + MN : Int; + IN : Int; + MX : Int; +END_VAR + +BEGIN + + // Network 1: (Original Language: LAD) + + "LIMIT_I" := "IN"; + + // Network 2: (Original Language: LAD) + + IF "IN" < "MN" THEN + "LIMIT_I" := "MN"; + END_IF; + + // Network 3: (Original Language: LAD) + + IF "IN" > "MX" THEN + "LIMIT_I" := "MX"; + END_IF; + + // Network 4: (Original Language: LAD) + + // Network 4 did not produce printable SCL code. + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/LIMIT_R.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/LIMIT_R.md new file mode 100644 index 0000000..3c6e2f4 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/LIMIT_R.md @@ -0,0 +1,40 @@ +```pascal +// Block Type: FC +// Block Number: 1848 +// Original Network Languages: LAD + +FUNCTION "LIMIT_R" : Real +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + MN : Real; + IN : Real; + MX : Real; +END_VAR + +BEGIN + + // Network 1: (Original Language: LAD) + + "LIMIT_R" := "IN"; + + // Network 2: (Original Language: LAD) + + IF "IN" < "MN" THEN + "LIMIT_R" := "MN"; + END_IF; + + // Network 3: (Original Language: LAD) + + IF "IN" > "MX" THEN + "LIMIT_R" := "MX"; + END_IF; + + // Network 4: (Original Language: LAD) + + // Network 4 did not produce printable SCL code. + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/LowPassFilter.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/LowPassFilter.md new file mode 100644 index 0000000..6388085 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/LowPassFilter.md @@ -0,0 +1,70 @@ +```pascal +FUNCTION_BLOCK "LowPassFilter" +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : 'Function' +NAME : 'Name' +VERSION : 1.0 + VAR_INPUT + i_Value : Real; // Istant Value TO Filter + i_Num : Int; // Number OF sample TO Average - 0 = No filter - + i_Enable : Bool; // Enable the filter + END_VAR + + VAR_OUTPUT + FilterOut : Real; + END_VAR + + VAR + mDataArray : Array[0..49] of Real; + i : Int; + j : Int; + mArrayPtr : Int; // Actual ARRAY index during ARRAY charge + mTemp : Real; + END_VAR + + +BEGIN + + + IF #i_Enable THEN + IF #i_Num >0 THEN + IF #i_Num > 49 THEN + #i_Num := 49 ; // LIMIT the number OF samples + END_IF; + IF #mArrayPtr <= #i_Num THEN // Charging the ARRAY + FOR #j:=#mArrayPtr TO 1 BY -1 DO + #mDataArray[#j] := #mDataArray[#j - 1] ; // RIGHT Shifting + END_FOR; + #mDataArray[0] := #i_Value ; + (* classic code: #mTemp := 0.0 ;*) + #mTemp := REAL#0.0 ; + FOR #i:=0 TO #mArrayPtr DO + #mTemp := #mTemp + #mDataArray[#i] ; // Dinamic Averaging + END_FOR; + IF (#mArrayPtr + 1)<>0 THEN + #FilterOut := #mTemp / (#mArrayPtr + 1) ; + END_IF; + #mArrayPtr := #mArrayPtr + 1 ; + IF #mArrayPtr > #i_Num THEN + #mArrayPtr := #i_Num ; + END_IF; + ELSE + #mArrayPtr := 0 ; + END_IF; + ELSE + #FilterOut := #i_Value ; + END_IF; + ELSE + FOR #i:=0 TO #mArrayPtr DO + #mDataArray[#i] := 0 ; // RIGHT Shifting + END_FOR; + #mArrayPtr := 0 ; + #FilterOut := #i_Value ; + END_IF; + ; + +END_FUNCTION_BLOCK + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/MFMAnalogValues.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/MFMAnalogValues.md new file mode 100644 index 0000000..3eae5aa --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/MFMAnalogValues.md @@ -0,0 +1,372 @@ +```pascal +FUNCTION_BLOCK "MFMAnalogValues" +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : TASK0 +NAME : 'Name' +VERSION : 1.0 + VAR + mCO2InjPressure : Real; + mCarboCO2DeltaPSim : Real; + mWaterFlowTmp : Real; + mSyrupFlowTmp : Real; + mCarboCO2FlowTmp : Real; + mWaterVFMError : Real; + mWaterDRand : Real; + mCO2WaterEffectDRand : Real; + mCO2WaterCoupling : Real; + mSyrupMFMError : Real; + mSyrupDRand : Real; + mCO2MFMError : Real; + mCO2DRand : Real; + mCO2DensSim : Real; + mWaterFlowDld : "Delay"; + mSyrupFlowDld : "Delay"; + mCarboCO2FlowDld : "Delay"; + mCO2InjPressFlted : "LowPassFilter"; + mProdFlowFlt : "LowPassFilter"; + mProdFlowFlted : "LowPassFilter"; + mH2OValveSlew : "SlewLimit"; + mH2OFlowFlted : "LowPassFilter"; + mSyrValveSlew : "SlewLimit"; + mSyrFlowFlted : "LowPassFilter"; + mCarboCO2ValveSlew : "SlewLimit"; + mCarboCO2FlowFlted : "LowPassFilter"; + END_VAR + + VAR_TEMP + mAux0 : Real; + mAux1 : Real; + mTime_sec : Real; + END_VAR + + +BEGIN + + + IF NOT "HMI_Blender_Parameters".Processor_Options.Blender_OPT._Simulation THEN + IF "HMI_Blender_Parameters".Processor_Options.Blender_OPT._Conductimeter_Profibus THEN + "Profibus_Variables".gCTS301_Cond := "P_CTS301_Conductivity" ; + "Profibus_Variables".gCTS301_Cond_State := "P_CTS301_Conductiv_State" ; + "HMI_Instrument".CTS301.PV := 1000 * "Profibus_Variables".gCTS301_Cond; + + "Profibus_Variables".gCTS301_Temp := "P_CTS301_Temperature"; + "Profibus_Variables".gCTS301_Temp_State := "P_CTS301_Temperat_State" ; + "HMI_Instrument".TT_S5.PV := "P_CTS301_Temperature" ; + + "Profibus_Variables".gCTS302_Cond := "P_CTS302_Conductivity" ; + "Profibus_Variables".gCTS302_Cond_State := "P_CTS302_Conductiv_State" ; + "HMI_Instrument".CTS302.PV := 1 * "Profibus_Variables".gCTS302_Cond; + + "Profibus_Variables".gCTS302_Temp := "P_CTS302_Temperature" ; + "Profibus_Variables".gCTS302_Temp_State := "P_CTS302_Temperat_State" ; + "HMI_Instrument".TTS305_1.PV := "P_CTS302_Temperature" ; + END_IF ; + (* "Profibus_Variables".gVFM_ProductFlow := ; (* Product Flowrate Reading From FM Node17 *) + "Profibus_Variables".gVFM_ProductFlow_State := ; (* Product Flowrate Error Code *) + + "Profibus_Variables".gVFM_ProductTotalizer := ; (* Product Totalizer Reading From FM Node17 *) + "Profibus_Variables".gVFM_ProductTot_State:= ; (* Product Totalizer Error Code *) + + "Profibus_Variables".gProdPH_PHValue := ; + "Profibus_Variables".gProdPH_PHValue_State := ; + + "Profibus_Variables".gProdPH_Temperature := ; + "Profibus_Variables".gProdPH_Temp_State := ; + + "Profibus_Variables".gProdCond_Conductivity := ; + "Profibus_Variables".gProdCond_Cond_State := ; + "Blender_Variables".gProductConductivity := 1000 * "Profibus_Variables".gProdCond_Conductivity; + + "Profibus_Variables".gProdCond_Temperature := ; + "Profibus_Variables".gProdCond_Temp_State := ; *) + + IF NOT "HMI_Blender_Parameters".Processor_Options.Blender_OPT._FlowMeterType THEN + (* Endress Hauser *) + "Profibus_Variables".gFTN301_Flow := "P_FTN301_Flow" ; (* Water Flowrate Reading From VFM Node20 *) + "Profibus_Variables".gFTN301_Flow_State := "P_FTN301_Flow_State"; (* Water Flowrate Error Code *) + + "Profibus_Variables".gFTN301_Tot := "P_FTN301_Totalizer" ; (* Water Totalizer Reading From VFM Node20 *) + "Profibus_Variables".gFTN301_Tot_State := "P_FTN301_Totaliz_State" ; (* Water Totalizer Error Code *) + + IF ("HMI_Blender_Parameters".Processor_Options.Blender_OPT._Promass > 1) THEN + "Profibus_Variables".gFTP302_Flow := "P_FTP302_Flow"; (* Syrup Flowrate Reading From MFM Node21 *) + "Profibus_Variables".gFTP302_Flow_State := "P_FTP302_Flow_State"; (* Syrup Flowrate Error Code *) + + "Profibus_Variables".gFTP302_Temp := "P_FTP302_Temp"; (* Syrup Temperature Reading From MFM Node21 *) + IF "Profibus_Variables".gFTP302_Temp > 200 THEN + "Profibus_Variables".gFTP302_Temp := "Profibus_Variables".gFTP302_Temp - "Blender_Constants".gZeroAbsolute; + END_IF; + "Profibus_Variables".gFTP302_Temp_State := "P_FTP302_Temp_State"; (* Syrup Temperature Error Code *) + + "Profibus_Variables".gFTP302_Tot := "P_FTP302_Totalizer"; + "Profibus_Variables".gFTP302_Tot_State := "P_FTP302_Totaliz_State"; + + "Profibus_Variables".gFTP302_Density := "P_FTP302_Density" ; + "Profibus_Variables".gFTP302_Density_State := "P_FTP302_Density_State"; + + IF "gWorkshopTest" THEN + "Profibus_Variables".gFTP302_Brix := "Blender_Constants".gTestSyrBrix; + ELSE + "Profibus_Variables".gFTP302_Brix := "P_FTP302_Brix"; + END_IF; + "Profibus_Variables".gFTP302_Brix_State := "P_FTP302_Brix_State"; + END_IF; + + IF "HMI_Blender_Parameters".Processor_Options.Blender_OPT._CarboPresent THEN + "Profibus_Variables".gFTM303_Flow := "P_FTM303_Flow" ; + "Profibus_Variables".gFTM303_Flow_State := "P_FTM303_Flow_State"; + + "Profibus_Variables".gFTM303_Temp := "P_FTM303_Temperature" ; + IF "Profibus_Variables".gFTM303_Temp > 200 THEN + "Profibus_Variables".gFTM303_Temp := "Profibus_Variables".gFTM303_Temp - "Blender_Constants".gZeroAbsolute ; + END_IF; + "Profibus_Variables".gFTM303_Temp_State := "P_FTM303_Temperature_State" ; + + "Profibus_Variables".gFTM303_Density := "P_FTM303_Density" ; + "Profibus_Variables".gFTM303_Density_State := "P_FTM303_Density_State" ; + + "Profibus_Variables".gFTM303_Tot := "P_FTM303_Totalizer" ; + "Profibus_Variables".gFTM303_Tot_State := "P_FTM303_Totalizer_State" ; + END_IF ; + ELSE + (* MicroMotion *) + IF "HMI_Blender_Parameters".Processor_Options.Blender_OPT._WaterPromass THEN + "Profibus_Variables".gFTN301_Flow := "P_FTN301_Flow" ; (* Water Flowrate Reading From VFM Node20 *) + "Profibus_Variables".gFTN301_Tot := "P_FTN301_Totalizer" ; (* Water Totalizer Reading From VFM Node20 *) + ELSE + (* Promag 53 *) + "Profibus_Variables".gFTN301_Flow := "P_FTN301_Flow" ; (* Water Flowrate Reading From VFM Node20 *) + "Profibus_Variables".gFTN301_Flow_State := "P_FTN301_Flow_State"; (* Water Flowrate Error Code *) + + "Profibus_Variables".gFTN301_Tot := "P_FTN301_Totalizer" ; (* Water Totalizer Reading From VFM Node20 *) + "Profibus_Variables".gFTN301_Tot_State := "P_FTN301_Totaliz_State" ; (* Water Totalizer Error Code *) + END_IF; + + IF "HMI_Blender_Parameters".Processor_Options.Blender_OPT._Promass > 1 THEN + "Profibus_Variables".gFTP302_Flow := "P_FTP302_Flow" ; (* Syrup Flowrate Reading From MFM Node21 *) + "Profibus_Variables".gFTP302_Flow_State := "P_FTP302_Flow_State" ; (* Syrup Flowrate Error Code *) + + "Profibus_Variables".gFTP302_Temp := "P_FTP302_Temp" ; (* Syrup Temperature Reading From MFM Node21 *) + IF "Profibus_Variables".gFTP302_Temp > 200 THEN + "Profibus_Variables".gFTP302_Temp := "Profibus_Variables".gFTP302_Temp - "Blender_Constants".gZeroAbsolute ; + END_IF; + + "Profibus_Variables".gFTP302_Tot := "P_FTP302_Totalizer" ; + + "Profibus_Variables".gFTP302_Density := "P_FTP302_Density" ; + + IF "gWorkshopTest" AND NOT "HMI_Service".Workshop_Test.SyrupTestRequest THEN + "Profibus_Variables".gFTP302_Brix := "Blender_Constants".gTestSyrBrix ; + ELSE + "Profibus_Variables".gFTP302_Brix := "P_FTP302_Brix" ; + END_IF; + END_IF ; + + IF "HMI_Blender_Parameters".Processor_Options.Blender_OPT._CarboPresent THEN + "Profibus_Variables".gFTM303_Flow := "P_FTM303_Flow" ; + "Profibus_Variables".gFTM303_Flow_State := "P_FTM303_Flow_State" ; + + "Profibus_Variables".gFTM303_Temp := "P_FTM303_Temperature" ; + IF "Profibus_Variables".gFTM303_Temp > 200 THEN + "Profibus_Variables".gFTM303_Temp := "Profibus_Variables".gFTM303_Temp - "Blender_Constants".gZeroAbsolute ; + END_IF; + (* "Profibus_Variables".gFTM303_Temp_State := "MFM_CO2_Temper_State" ; *) + + "Profibus_Variables".gFTM303_Density := "P_FTM303_Density" ; + + "Profibus_Variables".gFTM303_Tot := "P_FTM303_Totalizer" ; + END_IF; + END_IF; + + #mCO2InjPressure := "CO2InjPressure"(i_Temp := "Profibus_Variables".gFTM303_Temp, + i_Dens := "Profibus_Variables".gFTM303_Density); + ELSE // Simulation active + IF "gBlenderProdMode" THEN + //Calculates the flow across the water valve + (* classic code: #mH2OValveSlew(i_InValue := "HMI_PID".RMM301.Out, + i_SlewMax := 15.0, + i_Cycle := "Time_50ms", + out := "PID_Variables".Simulation.H2OValve_Slew_Out );*) + #mH2OValveSlew(i_InValue := "HMI_PID".RMM301.Out, + i_SlewMax := REAL#15.0, + i_Cycle := "Time_50ms", + out := "PID_Variables".Simulation.H2OValve_Slew_Out ); + + IF ("Procedure_Variables"."CarboWaterLine".Running OR "Procedure_Variables".TN301_StartUp.Running ) AND "HMI_Device".AVM322.Out THEN + "PID_Variables".Simulation.H2OValve_Slew_Out := 4 ; + END_IF; + #mCarboCO2DeltaPSim := "DeltaP"(i_Flow := "PID_Variables".Simulation.CarboCO2_Flow, + i_K := "Blender_Constants".gRMM303ValveCv, + i_Valve := "PID_Variables".Simulation.CarboCO2_Slew_Out); + + (* classic code: #mWaterFlowTmp := "ValveFlow"(i_DeltaP := "PID_Variables".RMM301DeltaP - 0.02 * #mCarboCO2DeltaPSim, + i_ValveOp := "PID_Variables".Simulation.H2OValve_Slew_Out, + i_KFF := 0.055, + i_Dens := "Blender_Constants".gH2O_Density )+ #mWaterVFMError + #mCO2WaterCoupling ;*) + #mWaterFlowTmp := "ValveFlow"(i_DeltaP := "PID_Variables".RMM301DeltaP - REAL#0.02 * #mCarboCO2DeltaPSim, + i_ValveOp := "PID_Variables".Simulation.H2OValve_Slew_Out, + i_KFF := REAL#0.055, + i_Dens := "Blender_Constants".gH2O_Density )+ #mWaterVFMError + #mCO2WaterCoupling ; + + #mH2OFlowFlted(i_Value := #mWaterFlowTmp, + i_Num := 10, + i_Enable := TRUE); + + #mWaterFlowDld(i_Value := #mH2OFlowFlted.FilterOut, + i_Sample := 2); + + "FW_DRand"(Channel := 100, + RandomNumber => #mCO2WaterEffectDRand); + + IF ("Blender_Variables_Pers".gCarboStillProduct OR "HMI_Blender_Parameters".Processor_Options.Blender_OPT._DoubleDeair) AND "Blender_Variables".gWaterPipe_Vel > 0 AND "gBlenderStableFlow" THEN + (* classic code: #mCO2WaterCoupling := #mCO2WaterEffectDRand * (1 / SQR("Blender_Variables".gWaterPipe_Vel)* "Blender_Variables".gWaterPipe_Vel ) * #mWaterFlowDld.i_out * 0.02 ;*) + #mCO2WaterCoupling := #mCO2WaterEffectDRand * (1 / SQR("Blender_Variables".gWaterPipe_Vel)* "Blender_Variables".gWaterPipe_Vel ) * #mWaterFlowDld.i_out * REAL#0.02 ; + ELSE + (* classic code: #mCO2WaterCoupling := 0.0 ;*) + #mCO2WaterCoupling := REAL#0.0 ; + END_IF; + + "FW_DRand"(Channel := 101, + RandomNumber => #mWaterDRand); + #mWaterVFMError := #mWaterDRand * "Blender_Variables".gWaterVFMCalcError ; + "PID_Variables".Simulation.Water_Flow := #mWaterFlowDld.i_out ; + + #mSyrValveSlew(i_InValue := "HMI_PID".RMP302.Out, + i_SlewMax := 20, + i_Cycle := "Time_50ms", + out := "PID_Variables".Simulation.SyrupValve_Slew_Out); + + (* classic code: #mSyrupFlowTmp := "ValveFlow"(i_DeltaP := "PID_Variables".RMP302DeltaP, + i_ValveOp := "PID_Variables".Simulation.SyrupValve_Slew_Out, + i_KFF := 0.35, + i_Dens := "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupDensity)+ #mSyrupMFMError;*) + #mSyrupFlowTmp := "ValveFlow"(i_DeltaP := "PID_Variables".RMP302DeltaP, + i_ValveOp := "PID_Variables".Simulation.SyrupValve_Slew_Out, + i_KFF := REAL#0.35, + i_Dens := "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupDensity)+ #mSyrupMFMError; + + #mSyrFlowFlted(i_Value := #mSyrupFlowTmp, + i_Num := 10, + i_Enable := TRUE); + + #mSyrupFlowDld(i_Value := #mSyrFlowFlted.FilterOut, + i_Sample := 5); + + "FW_DRand"(Channel := 102, + RandomNumber => #mSyrupDRand); + #mSyrupMFMError := #mSyrupDRand * "Blender_Variables".gSyrupMFMCalcError ; + "PID_Variables".Simulation.Syrup_Flow := #mSyrupFlowDld.i_out ; + + #mCarboCO2ValveSlew(i_InValue := "HMI_PID".RMM303.Out, + i_SlewMax := 20, + i_Cycle := "Time_50ms", + out := "PID_Variables".Simulation.CarboCO2_Slew_Out); + + (* classic code: #mCarboCO2FlowTmp := "ValveFlow"(i_DeltaP := "PID_Variables".RMM303DeltaP, + i_ValveOp := "PID_Variables".Simulation.CarboCO2_Slew_Out, + i_KFF := 0.34, + i_Dens := "Blender_Constants".gCO2_Density / 1000)+ #mCO2MFMError;*) + #mCarboCO2FlowTmp := "ValveFlow"(i_DeltaP := "PID_Variables".RMM303DeltaP, + i_ValveOp := "PID_Variables".Simulation.CarboCO2_Slew_Out, + i_KFF := REAL#0.34, + i_Dens := "Blender_Constants".gCO2_Density / 1000)+ #mCO2MFMError; + + #mCarboCO2FlowFlted(i_Value := #mCarboCO2FlowTmp, + i_Num := 10, + i_Enable := TRUE); + + #mCarboCO2FlowDld(i_Value := #mCarboCO2FlowFlted.FilterOut, + i_Sample := 3); + + "FW_DRand"(Channel := 2147483647, + RandomNumber => #mCO2DRand); + #mCO2MFMError := #mCO2DRand * "Blender_Variables".gCO2MFMCalcError ; + "PID_Variables".Simulation.CarboCO2_Flow := #mCarboCO2FlowDld.i_out ; + + "Profibus_Variables".gFTN301_Flow := "PID_Variables".Simulation.Water_Flow ; + "Profibus_Variables".gFTP302_Flow := "PID_Variables".Simulation.Syrup_Flow ; + "Profibus_Variables".gFTM303_Flow := "PID_Variables".Simulation.CarboCO2_Flow ; + + #mAux0 := DINT_TO_REAL(TIME_TO_DINT("gSystem_Time")/10 MOD 100); + #mAux1 := DINT_TO_REAL(TIME_TO_DINT("gSystem_Time")/1000 MOD 60); + (* classic code: #mTime_sec := #mAux1 + #mAux0 / 100.0;*) + #mTime_sec := #mAux1 + #mAux0 / REAL#100.0; + + (* classic code: #mCO2DensSim := 0.028 + 0.0015 * SIN(2 * "Blender_Constants".gP_Greek * #mTime_sec * 5 / 60) ;*) + #mCO2DensSim := REAL#0.028 + REAL#0.0015 * SIN(2 * "Blender_Constants".gP_Greek * #mTime_sec * 5 / 60) ; + (* classic code: #mCO2InjPressure := "CO2InjPressure"(i_Temp := 20.0, + i_Dens := #mCO2DensSim);*) + #mCO2InjPressure := "CO2InjPressure"(i_Temp := REAL#20.0, + i_Dens := #mCO2DensSim); + + "Profibus_Variables".gFTP302_Brix := "Blender_Constants".gTestSyrBrix; + "Profibus_Variables".gFTP302_Density := "SyrupDensity"(i_SyrupBrix := "Blender_Constants".gTestSyrBrix ); + END_IF; + END_IF; + + #mCO2InjPressFlted(i_Value := #mCO2InjPressure, + i_Num := 8, + i_Enable := TRUE); + (* classic code: "Blender_Variables".gCO2InjPressureCalc := LIMIT(MN:= 10,IN:= #mCO2InjPressFlted.FilterOut,MX:= 20) * 1.0 ;*) + "Blender_Variables".gCO2InjPressureCalc := LIMIT(MN:= 10,IN:= #mCO2InjPressFlted.FilterOut,MX:= 20) * REAL#1.0 ; + + #mProdFlowFlted(i_Value := "Profibus_Variables".gVFM_ProductFlow, + i_Num := 8, + i_Enable := TRUE); + "Blender_Variables".gProd_Flow_Meas := #mProdFlowFlted.FilterOut ; + + IF "gBlenderProdMode" THEN + #mH2OFlowFlted(i_Value := "Profibus_Variables".gFTN301_Flow, + i_Num := 6, + i_Enable := "gBlenderFlowFltEn"); + "Blender_Variables".gH2O_Flow_Meas := #mH2OFlowFlted.FilterOut ; + + #mSyrFlowFlted(i_Value := "Profibus_Variables".gFTP302_Flow, + i_Num := 6, + i_Enable := "gBlenderFlowFltEn"); + "Blender_Variables".gSYR_Flow_Meas := #mSyrFlowFlted.FilterOut ; + + #mCarboCO2FlowFlted(i_Value := "Profibus_Variables".gFTM303_Flow, + i_Num := 6, + i_Enable := "gBlenderFlowFltEn"); + "MFMAnalogValues_Totalize"(); + ELSE + #mH2OFlowFlted(i_Value := "Profibus_Variables".gFTN301_Flow, + i_Num := 10, + i_Enable := "gBlenderFlowFltEn"); + "Blender_Variables".gH2O_Flow_Meas := #mH2OFlowFlted.FilterOut ; + + #mSyrFlowFlted(i_Value := "Profibus_Variables".gFTP302_Flow, + i_Num := 0, + i_Enable := "gBlenderFlowFltEn"); + "Blender_Variables".gSYR_Flow_Meas := #mSyrFlowFlted.FilterOut ; + + #mCarboCO2FlowFlted(i_Value := "Profibus_Variables".gFTM303_Flow, + i_Num := 0, + i_Enable := "gBlenderFlowFltEn"); + END_IF; + + IF "Blender_Constants".gCO2_Density <> 0 THEN + "Blender_Variables".gCO2_Flow_Meas := #mCarboCO2FlowFlted.FilterOut / "Blender_Constants".gCO2_Density ; + END_IF; + + IF "Blender_Constants".gCO2_Density <> 0 AND "gWorkshopTest" AND "HMI_Service".Workshop_Test.CO2TestRequest THEN + "Blender_Variables".gCO2_Flow_Meas := #mCarboCO2FlowFlted.FilterOut / "Blender_Constants".gAir_Density ; + END_IF; + + IF "Blender_Variables".gActualSyrupDens > 0 THEN + "Blender_Variables".gSYR_Vol_Flow_Meas := "Blender_Variables".gSYR_Flow_Meas / "Blender_Variables".gActualSyrupDens ; + ELSE + "Blender_Variables".gSYR_Vol_Flow_Meas := "Blender_Variables".gSYR_Flow_Meas ; + END_IF; + #mProdFlowFlt(i_Value := "Blender_Variables".gH2O_Flow_Meas + "Blender_Variables".gSYR_Vol_Flow_Meas, + i_Num := 18, + i_Enable := "gBlenderFlowFltEn"); + "Blender_Variables".gActual_Prod_Flow := #mProdFlowFlt.FilterOut ; + + +END_FUNCTION_BLOCK + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/MFMAnalogValues_Totalize.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/MFMAnalogValues_Totalize.md new file mode 100644 index 0000000..3b0582c --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/MFMAnalogValues_Totalize.md @@ -0,0 +1,70 @@ +```pascal +// Block Type: FC +// Block Number: 2025 +// Original Network Languages: LAD + +FUNCTION "MFMAnalogValues_Totalize" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + CO2_Tot_temp : Real; + CO2_Temp_pulse : Real; + Water_Tot_temp : Real; + Water_Temp_pulse : Real; + Syrup_Tot_temp : Real; + Syrup_Temp_pulse : Real; + CO2_Totalizer_ : Real; + CO2_Totalizer_1 : Real; + Water_Tot_Temp_1 : Real; +END_VAR + + #_1S : Bool; // Auto-generated temporary +BEGIN + + // Network 1: MIX - MFMAnalogValues_Totalize (Original Language: LAD) + + // Network 1 did not produce printable SCL code. + + // Network 2: MIX - (Original Language: LAD) + + "mAuxTP1"(IN := "Procedure_Variables"."Blender_Run"."Running" OR ("AUX FALSE" AND "M19080"), PT := S5T#1S); // TODO: Declarar "mAuxTP1" : TP; + + IF "mAuxTP1".Q THEN + "gBlendResetTotalizer" := TRUE; + END_IF; + + // Network 3: (Original Language: LAD) + + IF "gBlenderBlending" THEN + "Blender_Variables_Pers"."gWaterTotal" := "Profibus_Variables"."gFTN301_Tot" + "Blender_Variables_Pers"."gWaterTempTot"; + "Blender_Variables_Pers"."gSyrupTotal" := "Profibus_Variables"."gFTP302_Tot" + "Blender_Variables_Pers"."gSyrupTempTot"; + "Blender_Variables_Pers"."gProductVFMTotal" := "Profibus_Variables"."gVFM_ProductTotalizer" + "Blender_Variables_Pers"."gProductVFMTempTot"; + "Blender_Variables_Pers"."gCO2TempTot" := "Profibus_Variables"."gFTM303_Tot" + "Blender_Variables_Pers"."gCO2TempTot"; + END_IF; + + IF "gBlenderBlending" THEN + "Blender_Variables_Pers"."gCO2Total" := "Blender_Variables_Pers"."gCO2TempTot" / 1000.0; + END_IF; + + // Network 4: MIX - Water Counter Pulse ( 1 Pulse = 10 Lt.) (Original Language: LAD) + + "Water_Tot_temp" := "Blender_Variables_Pers"."gWaterTotal" - "H2O_Counter_Tot"; + + "DO_Water_Counter_Pulse" := "mPulse_10Lt_Water"; + + // Network 5: MIX - Syrup Counter Pulse ( 1 Pulse = 100 Lt.) (Original Language: LAD) + + "Syrup_Tot_temp" := "Blender_Variables_Pers"."gSyrupTotal" - "Syr_Counter_Tot"; + + "DO_Syrup_Counter_Pulse" := "mPulse_100Lt_Syrup"; + + // Network 6: Pulsos Contadores Kg CO2 (Original Language: LAD) + + "CO2_Tot_temp" := "Blender_Variables_Pers"."gCO2Total" - "CO2_Counter_Tot"; + + "DO_CO2_Counter_Pulse" := "mPulse_100Kg_CO2"; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/MFM_Analog_Value_Data.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/MFM_Analog_Value_Data.md new file mode 100644 index 0000000..8e334ad --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/MFM_Analog_Value_Data.md @@ -0,0 +1,42 @@ +```pascal +// Block Type: InstanceDB +// Block Number: 942 + +DATA_BLOCK "MFM_Analog_Value_Data" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + mCO2InjPressure : Real := 2.799436; + mCarboCO2DeltaPSim : Real := 0.0; + mWaterFlowTmp : Real := 0.0; + mSyrupFlowTmp : Real := 0.0; + mCarboCO2FlowTmp : Real := 0.0; + mWaterVFMError : Real := 0.0; + mWaterDRand : Real := 0.0; + mCO2WaterEffectDRand : Real := 0.0; + mCO2WaterCoupling : Real := 0.0; + mSyrupMFMError : Real := 0.0; + mSyrupDRand : Real := 0.0; + mCO2MFMError : Real := 0.0; + mCO2DRand : Real := 0.0; + mCO2DensSim : Real := 0.0; + mWaterFlowDld : "Delay"; + mSyrupFlowDld : "Delay"; + mCarboCO2FlowDld : "Delay"; + mCO2InjPressFlted : "LowPassFilter"; + mProdFlowFlt : "LowPassFilter"; + mProdFlowFlted : "LowPassFilter"; + mH2OValveSlew : "SlewLimit"; + mH2OFlowFlted : "LowPassFilter"; + mSyrValveSlew : "SlewLimit"; + mSyrFlowFlted : "LowPassFilter"; + mCarboCO2ValveSlew : "SlewLimit"; + mCarboCO2FlowFlted : "LowPassFilter"; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/MOD_ERR.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/MOD_ERR.md new file mode 100644 index 0000000..e19a2cb --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/MOD_ERR.md @@ -0,0 +1,33 @@ +```pascal +// Block Type: OB +// Block Number: 122 +// Original Network Languages: LAD + +ORGANIZATION_BLOCK "MOD_ERR" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + OB122_EV_CLASS : Byte; + OB122_SW_FLT : Byte; + OB122_PRIORITY : Byte; + OB122_OB_NUMBR : Byte; + OB122_BLK_TYPE : Byte; + OB122_MEM_AREA : Byte; + OB122_MEM_ADDR : Word; + OB122_BLK_NUM : Word; + OB122_PRG_ADDR : Word; + OB122_DATE_TIME : "Date_And_Time"; +END_VAR + +BEGIN + + // Network 1: (Original Language: LAD) + + // Network 1 has no logic elements. + + // No executable logic generated by script. + +END_ORGANIZATION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/MSE Slope.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/MSE Slope.md new file mode 100644 index 0000000..1ad6d35 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/MSE Slope.md @@ -0,0 +1,75 @@ +```pascal +FUNCTION_BLOCK "MSE Slope" +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : 'Function' +NAME : 'Name' +VERSION : 1.0 + VAR_INPUT + i_Value : Real; // Istant Value TO compute + i_Num : Int; // Number OF sample used TO compute slope + i_Cycle : Real; // Cycle TIME + i_Enable : Bool; // Enable the block + END_VAR + + VAR_OUTPUT + o_MSESlope : Real; + END_VAR + + VAR + mSumX2 : Real; // Sum OF square + mX2Sum : Real; // Square OF sum + mSumX : Real; + mSumY : Real; + mSumXY : Real; + mPtr : Int; + END_VAR + + +BEGIN + + + IF #i_Enable THEN + IF #i_Num > 0 THEN + IF #i_Num > 30 THEN + #i_Num := 30 ; // LIMIT the number OF samples + END_IF; + IF #mPtr <= #i_Num THEN + #mPtr := #mPtr + 1 ; + #mSumY := #mSumY + #i_Value ; + #mSumX2 := #mSumX2 + (#i_Cycle * #mPtr)*(#i_Cycle * #mPtr); + #mSumXY := #mSumXY + (#i_Cycle * #mPtr * #i_Value) ; + #mSumX := #mSumX + #mPtr * #i_Cycle ; + IF #mPtr = #i_Num THEN + #mX2Sum := (#mSumX * #mSumX) ; + IF (#mPtr * #mSumX2 - #mX2Sum) <> 0 THEN + #o_MSESlope := (#mPtr * #mSumXY - #mSumX * #mSumY) / (#mPtr * #mSumX2 - #mX2Sum) ; + END_IF; + #mPtr := 0 ; + #mSumX2 := 0 ; + #mX2Sum := 0 ; + #mSumXY := 0 ; + #mSumX := 0 ; + #mSumY := 0 ; + END_IF; + END_IF; + ELSE + (* classic code: #o_MSESlope := 0.0 ;*) + #o_MSESlope := REAL#0.0 ; + END_IF; + ELSE + #mPtr := 0 ; + #mSumY := 0 ; + #mSumX2 := 0 ; + #mX2Sum := 0 ; + #mSumXY := 0 ; + #mSumX := 0 ; + (* classic code: #o_MSESlope := 0.0 ;*) + #o_MSESlope := REAL#0.0 ; + END_IF; + + +END_FUNCTION_BLOCK + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Machine_Co2_Cons.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Machine_Co2_Cons.md new file mode 100644 index 0000000..4a938f9 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Machine_Co2_Cons.md @@ -0,0 +1,56 @@ +```pascal +// Block Type: GlobalDB +// Block Number: 1020 + +DATA_BLOCK "Machine_Co2_Cons" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + CO2_Actual_Counter : Real := 0.0; + CO2_Counter_Drain_Start_Value : Real := 0.0; + CO2_Counter_Drain_End_Value : Real := 0.0; + CO2_Counter_Drain_Total : Real := 0.0; + CO2_Counter_Rinser_Start_Value : Real := 0.0; + CO2_Counter_Rinser_End_Value : Real := 0.0; + CO2_Counter_Dear_Prep_Start_Value : Real := 0.0; + CO2_Counter_Dear_Prep_End_Value : Real := 0.0; + CO2_Counter_Dear_Prep_Total : Real := 0.0; + CO2_Counter_Rinser_Total : Real := 0.0; + CO2_Carb_Water_Line_Start_Value : Real := 0.0; + CO2_Carb_Water_Line_End_Value : Real := 0.0; + CO2_Carb_Water_Line_Total : Real := 0.0; + CO2_Counter_First_Prod_Start_Value : Real := 0.0; + CO2_Counter_First_Prod_End_Value : Real := 0.0; + CO2_Counter_First_Prod_Total : Real := 0.0; + CO2_Counter_CIP_Start_Value : Real := 0.0; + CO2_Counter_CIP_End_Value : Real := 0.0; + CO2_Counter_CIP_Total : Real := 0.0; + Drain : Bool := FALSE; + Rinser : Bool := FALSE; + First_Prod : Bool := FALSE; + Ons_1_A : Bool := FALSE; + Ons_2_A : Bool := FALSE; + Ons_3_A : Bool := FALSE; + Ons_4_A : Bool := FALSE; + Ons_5_A : Bool := FALSE; + Ons_6_A : Bool := FALSE; + Ons_7_A : Bool := FALSE; + Ons_8_A : Bool := FALSE; + Ons_9_A : Bool := FALSE; + Ons_10_A : Bool := FALSE; + Ons_11_A : Bool := FALSE; + Ons_12_A : Bool := FALSE; + Ons_13_A : Bool := TRUE; + Ons_14_A : Bool := TRUE; + Ons_15_A : Bool := TRUE; + Ons_16_A : Bool := FALSE; + Ons_17_A : Bool := FALSE; + Ons_18_A : Bool := FALSE; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Maselli_PA_Control.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Maselli_PA_Control.md new file mode 100644 index 0000000..e6b6f0c --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Maselli_PA_Control.md @@ -0,0 +1,56 @@ +```pascal +// Block Type: FC +// Block Number: 1890 +// Original Network Languages: LAD + +FUNCTION "Maselli_PA_Control" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + mPAReset : Bool; + mPASel : Bool; +END_VAR + +BEGIN + + // Network 1: Enabled (Original Language: LAD) + + "Maselli_PA_Data"."Input_From_Maselli"."gPAMaselli_Enabled" := Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_MeterType", 6); + + "mPASel" := Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_MeterType", 6); + + // Network 2: Reset (Original Language: LAD) + + // Network 2 did not produce printable SCL code. + + // Network 3: Recipe Trasnsfer (Original Language: LAD) + + IF "mPAReset" THEN + Maselli_PA_Ctrl_Transfer(); + END_IF; + + // Network 4: Read / Write (Original Language: LAD) + + IF "mPASel" THEN + Maselli_PA_Ctrl_Read(); + Maselli_PA_Ctrl_Write(); + END_IF; + + // Network 5: No Freeze Product Meter (Original Language: LAD) + + // Network 5 did not produce printable SCL code. + + // Network 6: Run (Original Language: LAD) + + IF "gNoFreezeProductMeter" AND "HMI_Variables_Status"."Meters"."QTM3012_PRD_Fault" AND "Maselli_PA_Data"."Input_From_Maselli"."gPAMaselli_CommActive" AND "mPASel" THEN + "HMI_Variables_Status"."Meters"."QTM3012_PRD_Run" := TRUE; + END_IF; + + // Network 7: ProductMeterOK (Original Language: LAD) + + "gProductMeterOK" := "Maselli_PA_Data"."Input_From_Maselli"."gPAMaselli_CommActive" AND "mPASel" AND "Maselli_PA_Data"."Input_From_Maselli"."gPAMaselli_Error"; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Maselli_PA_Ctrl_Read.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Maselli_PA_Ctrl_Read.md new file mode 100644 index 0000000..165af70 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Maselli_PA_Ctrl_Read.md @@ -0,0 +1,103 @@ +```pascal +// Block Type: FC +// Block Number: 1891 +// Original Network Languages: LAD, STL + +FUNCTION "Maselli_PA_Ctrl_Read" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + mPACountError : Int; + __PlcmigTempFillBits_2B0 : Array[0..7] of Bool; +END_VAR + + #_25S : Bool; // Auto-generated temporary +BEGIN + + // Network 1: Brix (Original Language: LAD) + + "Blender_Variables"."gProductBrix" := "P_gMaselli_ProductBrix"; + + // Network 2: Temperature (Original Language: LAD) + + "Blender_Variables"."gProductTemp" := "P_gMaselli_ProductTemp"; + + // Network 3: Co2 (Original Language: LAD) + + "Blender_Variables"."gProductCO2" := "P_gMaselli_ProductCO2"; + + // Network 4: Recipe Number (Original Language: LAD) + + "Blender_Variables"."gProductRecipeNum" := "P_gMaselli_ProductNumber"; + + // Network 5: Error (Original Language: LAD) + + "Maselli_PA_Data"."Input_From_Maselli"."gPAMaselli_CommErr" := "M18833"; + + // Network 6: Communication Ok (Original Language: LAD) + + "Maselli_PA_Data"."Input_From_Maselli"."gPAMaselli_CommActive" := "Maselli_PA_Data"."Input_From_Maselli"."gPAMaselli_CommErr"; + + // Network 7: Data (Original Language: STL) + + // --- BEGIN STL Network 7 --- + + A "Maselli_PA_Data".Input_From_Maselli.gPAMaselli_CommErr + AN "Maselli_PA_Data".Input_From_Maselli.gPAMaselli_Error + = "__PlcmigTempFillBits_2B0"[0] + A "__PlcmigTempFillBits_2B0"[0] + JNB _001 + L "Maselli_PA_Data".mPAMaselliCountError + L 1 + ADD_I + T "Maselli_PA_Data".mPAMaselliCountError + _001: NOP_0 + A "__PlcmigTempFillBits_2B0"[0] + JNB _002 + L 0 + T "Blender_Variables".gProductRecipeNum + _002: NOP_0 + A "__PlcmigTempFillBits_2B0"[0] + JNB _003 + L 0 + T "Blender_Variables".gProductCO2 + _003: NOP_0 + A "__PlcmigTempFillBits_2B0"[0] + JNB _004 + L 0 + T "Blender_Variables".gProductBrix + _004: NOP_0 + A "__PlcmigTempFillBits_2B0"[0] + JNB _005 + L 0 + T "Blender_Variables".gProductTemp + _005: NOP_0 + + // --- END STL Network 7 --- + + // Network 8: Error Count reset (Original Language: LAD) + + IF "Maselli_PA_Data"."Input_From_Maselli"."gPAMaselli_CommErr" OR "gBlenderCIPMode" THEN + "mPACountError" := 0; + END_IF; + + // Network 9: Error (Original Language: LAD) + + "Maselli_PA_Data"."Input_From_Maselli"."gPAMaselli_Error" := "mPACountError" >= 6; + + // Network 10: Fault (Original Language: LAD) + + "mPAMaselliTmrFault"(IN := "gProdMeterTransferRecipe", PT := S5T#25S); // TODO: Declarar "mPAMaselliTmrFault" : TON; + + IF ("mPAMaselliTmrFault".Q AND "Maselli_PA_Data"."Input_From_Maselli"."gPAMaselli_Error" AND "Procedure_Variables"."ProdBrix_Track"."Latch") OR ("mPAMaselliTmrFault".Q AND "Maselli_PA_Data"."Input_From_Maselli"."gPAMaselli_Error" AND "Procedure_Variables"."ProdCO2_Track"."Latch") THEN + "gPAMaselli_Error_Fault" := TRUE; + END_IF; + + // Network 11: Fault (Original Language: LAD) + + // Network 11 did not produce printable SCL code. + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Maselli_PA_Ctrl_Transfer.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Maselli_PA_Ctrl_Transfer.md new file mode 100644 index 0000000..6f8b613 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Maselli_PA_Ctrl_Transfer.md @@ -0,0 +1,33 @@ +```pascal +// Block Type: FC +// Block Number: 1893 +// Original Network Languages: LAD + +FUNCTION "Maselli_PA_Ctrl_Transfer" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + mPAMaselliRecipeTrnsfr : Bool; + mAux1 : Int; +END_VAR + +BEGIN + + // Network 1: Recipe Nr (Original Language: LAD) + + "P_gMaselli_RecipeSetNum" := "P_gMaselli_ProductNumber"; + + // Network 2: Recipe Transfer (Original Language: LAD) + + // Network 2 did not produce printable SCL code. + + // Network 3: Recipe Number (Original Language: LAD) + + SEL_I(G := "mPAMaselliRecipeTrnsfr", IN0 := 0, IN1 := 255); + + "P_gMaselli_RecipeSetNumStr" := "mAux1"; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Maselli_PA_Ctrl_Write.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Maselli_PA_Ctrl_Write.md new file mode 100644 index 0000000..a87066f --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Maselli_PA_Ctrl_Write.md @@ -0,0 +1,87 @@ +```pascal +// Block Type: FC +// Block Number: 1892 +// Original Network Languages: LAD + +FUNCTION "Maselli_PA_Ctrl_Write" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + mPAMaselliRecipeTrnsfr : Bool; + mTrnsfrOK : Bool; + mAux1 : Int; + mAux2 : Int; +END_VAR + + #_10S : Bool; // Auto-generated temporary + #_5S : Bool; // Auto-generated temporary +BEGIN + + // Network 1: Recipe Number (Original Language: LAD) + + LIMIT_I(IN := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_ProdMeterRecipeNum", MN := 1, MX := 40); + + "mAux2" := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_ProdMeterRecipeNum"; + + // Network 2: Recipe Number (Original Language: LAD) + + IF "gBlenderCIPMode" THEN + "mAux2" := 0; + END_IF; + + // Network 3: Recipe Number (Original Language: LAD) + + "P_gMaselli_RecipeSetNum" := "mAux2"; + + // Network 4: Recipe Transfer (Original Language: LAD) + + "mPAMaselli_RecipeTmr1"(IN := "gBlenderCIPMode" OR "gProdMeterTransferRecipe", PT := S5T#10S); // TODO: Declarar "mPAMaselli_RecipeTmr1" : TP; + + "mPAMaselliRecipeTrnsfr" := "mPAMaselli_RecipeTmr1".Q; + + // Network 5: Recipe Data Edit (Original Language: LAD) + + IF "gProdMeterTransferRecipe" AND "HMI_Variables_Cmd"."Recipe"."Download" THEN + "gProdMeterTransferRecipe" := FALSE; + END_IF; + + // Network 6: Recipe Data Edit (Original Language: LAD) + + // NBox SymPy processed, logic in consumer + "mPAMaselli_RecipeFTRIG" := "mPAMaselliRecipeTrnsfr"; // N_TRIG("mPAMaselliRecipeTrnsfr") - Mem: "mPAMaselli_RecipeFTRIG" + + IF "mPAMaselli_RecipeFTRIG" AND NOT "mPAMaselliRecipeTrnsfr" THEN + "mPAMaselliRecipeTrnsfr" := FALSE; + END_IF; + + // Network 7: Recipe Data Edit (Original Language: LAD) + + // PBox SymPy processed, logic in consumer + "mPAMaselli_RecipeRTRIG" := "mPAMaselliRecipeTrnsfr"; // P_TRIG("mPAMaselliRecipeTrnsfr") - Mem: "mPAMaselli_RecipeRTRIG" + + IF "mPAMaselliRecipeTrnsfr" AND NOT "mPAMaselli_RecipeRTRIG" THEN + "mPAMaselliRecipeTrnsfr" := TRUE; + END_IF; + + // Network 8: Recipe Number (Original Language: LAD) + + SEL_I(G := "mPAMaselliRecipeTrnsfr", IN0 := 0, IN1 := 255); + + "P_gMaselli_RecipeSetNumStr" := "mAux1"; + + // Network 9: Transfer Ok (Original Language: LAD) + + "mAux1" := "P_gMaselli_ProductNumber"; + + "mTrnsfrOK" := Eq("mAux1", "mAux2"); + + // Network 10: Transfer Fault / Recipe Error (Original Language: LAD) + + "mPAMaselli_TrnsfrFault"(IN := "mPAMaselliRecipeTrnsfr" AND "mTrnsfrOK", PT := S5T#5S); // TODO: Declarar "mPAMaselli_TrnsfrFault" : TON; + + "Maselli_PA_Data"."Input_From_Maselli"."gPAMaselli_RecipeError" := "mPAMaselli_TrnsfrFault".Q; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Maselli_PA_Data.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Maselli_PA_Data.md new file mode 100644 index 0000000..4fefd79 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Maselli_PA_Data.md @@ -0,0 +1,19 @@ +```pascal +// Block Type: GlobalDB +// Block Number: 967 + +DATA_BLOCK "Maselli_PA_Data" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Input_From_Maselli : "Struct"; + mPAMaselliCountError : Int := 0; + mWritePAMaselli_Count : Word; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/MaxCarboCO2 Vol.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/MaxCarboCO2 Vol.md new file mode 100644 index 0000000..942eea4 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/MaxCarboCO2 Vol.md @@ -0,0 +1,46 @@ +```pascal +FUNCTION "MaxCarboCO2 Vol" : Real +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : 'Function' +NAME : 'Name' +VERSION : 1.0 + VAR_INPUT + i_Press : Real; + END_VAR + + VAR_IN_OUT + i_Temp : Real; + END_VAR + + VAR_TEMP + mAbsTemp : Real; + mAux : Real; + END_VAR + + +BEGIN + + + IF #i_Temp <= 0 THEN + (* classic code: #i_Temp := 12.0 ;*) + #i_Temp := REAL#12.0 ; + END_IF; + + #mAbsTemp := #i_Temp + "Blender_Constants".gZeroAbsolute ; + + (* classic code: IF (0.03275 * #mAbsTemp - 7.9567) <> 0 AND #i_Press <> 0 AND (0.000261 + #mAux * (1 + 1.0332 / #i_Press)) <> 0 THEN*) + IF (REAL#0.03275 * #mAbsTemp - REAL#7.9567) <> 0 AND #i_Press <> 0 AND (REAL#0.000261 + #mAux * (1 + REAL#1.0332 / #i_Press)) <> 0 THEN + (* classic code: #mAux := (0.01898 - 0.0000476 * #mAbsTemp) / (0.03275 * #mAbsTemp - 7.9567) ;*) + #mAux := (REAL#0.01898 - REAL#0.0000476 * #mAbsTemp) / (REAL#0.03275 * #mAbsTemp - REAL#7.9567) ; + (* classic code: #"MaxCarboCO2 Vol" := #i_Press * #mAbsTemp / 1.0332 * (0.000261 + #mAux * (1 + 1.0332 / #i_Press)) ;*) + #"MaxCarboCO2 Vol" := #i_Press * #mAbsTemp / REAL#1.0332 * (REAL#0.000261 + #mAux * (1 + REAL#1.0332 / #i_Press)) ; + ELSE + #"MaxCarboCO2 Vol" := -1 ; + END_IF; + + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Memories.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Memories.md new file mode 100644 index 0000000..cefc490 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Memories.md @@ -0,0 +1,1138 @@ +# Tag Table: Memories + +| Name | Datatype | Address | Comment | +|---|---|---|---| +| `AlwaysFALSE` | `Bool` | `%M1.3` | Always OFF | +| `AlwaysTRUE` | `Bool` | `%M1.2` | Always ON | +| `AUX Clock_0.1s` | `Bool` | `%M1.7` | TIMER 0.1 sec. CLOCK | +| `AUX Clock_1.0s` | `Bool` | `%M1.5` | TIMER 1.0 sec. CLOCK | +| `AUX FALSE` | `Bool` | `%M3.0` | Always OFF | +| `AUX FP_Clock_0.1s` | `Bool` | `%M2.0` | FP TIMER 0.1 sec. CLOCK | +| `AUX FP_Clock_1.0s` | `Bool` | `%M2.1` | FP TIMER 1.0 sec. CLOCK | +| `AUX TRUE` | `Bool` | `%M3.1` | Always ON | +| `CIPRepComment` | `Int` | `%MW602` | CIP Report Comment | +| `CIPRepFaultPresent` | `Bool` | `%M601.4` | CIP Report Fault Present | +| `CIPRepStarted` | `Bool` | `%M600.0` | CIP Report Started | +| `CLK_0.1S` | `Bool` | `%M1931.0` | MIX - CLK_0.1S | +| `CLK_0.05S_SUPPORT` | `Bool` | `%M1930.0` | MIX - CLK_0.05S_SUPPORT | +| `CLK_0.2S` | `Bool` | `%M1931.1` | MIX - CLK_0.2S | +| `CLK_0.1S_SUPPORT` | `Bool` | `%M1930.1` | MIX - CLK_0.1S_SUPPORT | +| `CLK_0.4S` | `Bool` | `%M1931.2` | MIX - CLK_0.4S | +| `CLK_0.2S_SUPPORT` | `Bool` | `%M1930.2` | MIX - CLK_0.2S_SUPPORT | +| `CLK_0.5S` | `Bool` | `%M1931.3` | MIX - CLK_0.5S | +| `CLK_0.25S_SUPPORT` | `Bool` | `%M1930.3` | MIX - CLK_0.25S_SUPPORT | +| `CLK_0.8S` | `Bool` | `%M1931.4` | MIX - CLK_0.8S | +| `CLK_0.4S_SUPPORT` | `Bool` | `%M1930.4` | MIX - CLK_0.4S SUPPORT | +| `CLK_1.0S` | `Bool` | `%M1931.5` | MIX - CLK_1.0S | +| `CLK_0.5S_SUPPORT` | `Bool` | `%M1930.5` | MIX - CLK_0.5S_SUPPORT | +| `CLK_1.6S` | `Bool` | `%M1931.6` | MIX - CLK_1.6S | +| `CLK_0.8S_SUPPORT` | `Bool` | `%M1930.6` | MIX - CLK_1.6S_SUPPORT | +| `CLK_2.0S` | `Bool` | `%M1931.7` | MIX - CLK_2.0S | +| `CLK_1.0S_SUPPORT` | `Bool` | `%M1930.7` | MIX - CLK_2.0S_SUPPORT | +| `Clock_0.5Hz` | `Bool` | `%M0.7` | Clock Bit | +| `Clock_0.625Hz` | `Bool` | `%M0.6` | Clock Bit | +| `Clock_1.25Hz` | `Bool` | `%M0.4` | Clock Bit | +| `Clock_10Hz` | `Bool` | `%M0.0` | Clock Bit | +| `Clock_1Hz` | `Bool` | `%M0.5` | Clock Bit | +| `Clock_2.5Hz` | `Bool` | `%M0.2` | Clock Bit | +| `Clock_2Hz` | `Bool` | `%M0.3` | Clock Bit | +| `Clock_5Hz` | `Bool` | `%M0.1` | Clock Bit | +| `Clock_Byte` | `Byte` | `%MB0` | Clock Byte | +| `CO2_Counter_Tot` | `Real` | `%MD148` | CO2_Counter_Tot | +| `Co2TrackingLatch` | `Bool` | `%M1906.7` | MIX - FP******* | +| `Co2TrackingReq` | `Bool` | `%M1906.6` | MIX - FP****** | +| `DiagStatusUpdate` | `Bool` | `%M1.1` | Diag Status Update | +| `FastRinseReset` | `Bool` | `%M1905.1` | MIX - FP ****** | +| `FillerRinseReset` | `Bool` | `%M1905.2` | MIX - FP ****** | +| `FillingHeadIntegrInit` | `Bool` | `%M1907.3` | MIX - FP ****** | +| `FirstProductiontReset` | `Bool` | `%M1907.1` | MIX - FP ****** | +| `FirstScan` | `Bool` | `%M1.0` | PLC First Scan | +| `Fn_UserLogOut` | `Bool` | `%M2520.2` | Flanco descendente para salir de usuario Sidel | +| `FN_CIPRepEndSupport` | `Bool` | `%M601.1` | FN - CIP Report End Support | +| `FP_CIPRepStartSupport` | `Bool` | `%M601.0` | FP - CIP Report Start Support | +| `FP_PRDRepEndSupport` | `Bool` | `%M605.1` | FP - PRODUCTION Report End Support | +| `FP_PRDRepStartSupport` | `Bool` | `%M605.0` | FP - PRODUCTION Report Start Support | +| `gActualSP_RatioVol` | `Real` | `%MD1964` | MIX - Target Volumetric Ratio | +| `gAirLowPress_Fault` | `Bool` | `%M1817.0` | MIX - Supplies Alarm | +| `gAlarmHorn` | `Bool` | `%M1713.6` | MIX - SAFETIES | +| `gAVM311Fault` | `Bool` | `%M1721.4` | Valve Fault | +| `gAVM313Fault` | `Bool` | `%M1721.6` | Valve Fault | +| `gAVM314Fault` | `Bool` | `%M1719.2` | Valve Fault | +| `gAVM315Fault` | `Bool` | `%M1721.5` | Valve Fault | +| `gAVM317_1Fault` | `Bool` | `%M1725.0` | Valve Fault | +| `gAVM317Fault` | `Bool` | `%M1721.7` | Valve Fault | +| `gAVM318Fault` | `Bool` | `%M1719.1` | Valve Fault | +| `gAVM321Fault` | `Bool` | `%M1721.3` | Valve Fault | +| `gAVM322Fault` | `Bool` | `%M1720.5` | Valve Fault | +| `gAVM323_1Fault` | `Bool` | `%M1722.1` | Valve Fault | +| `gAVM323_2Fault` | `Bool` | `%M1722.2` | Valve Fault | +| `gAVM323Fault` | `Bool` | `%M1719.3` | Valve Fault | +| `gAVM326Fault` | `Bool` | `%M1719.6` | Valve Fault | +| `gAVM327Fault` | `Bool` | `%M1738.4` | Valve Fault | +| `gAVM328Fault` | `Bool` | `%M1743.0` | Valve Fault | +| `gAVM341Fault` | `Bool` | `%M1722.3` | Valve Fault | +| `gAVM342Fault` | `Bool` | `%M1722.4` | Valve Fault | +| `gAVM346Fault` | `Bool` | `%M1738.0` | Valve Fault | +| `gAVM362Fault` | `Bool` | `%M1738.1` | Valve Fault | +| `gAVM369Fault` | `Bool` | `%M1723.1` | Valve Fault | +| `gAVM388Fault` | `Bool` | `%M1720.4` | Valve Fault | +| `gAVM389Fault` | `Bool` | `%M1720.6` | Valve Fault | +| `gAVN327Fault` | `Bool` | `%M1719.7` | Valve Fault | +| `gAVN328Fault` | `Bool` | `%M1720.0` | Valve Fault | +| `gAVN395Fault` | `Bool` | `%M1719.4` | Valve Fault | +| `gAVP316_1Fault` | `Bool` | `%M1721.2` | Valve Fault | +| `gAVP316Fault` | `Bool` | `%M1720.1` | Valve Fault | +| `gAVP317_1Fault` | `Bool` | `%M1719.5` | Valve Fault | +| `gAVP324Fault` | `Bool` | `%M1720.2` | Valve Fault | +| `gAVP344Fault` | `Bool` | `%M1720.3` | Valve Fault | +| `gAVP361Fault` | `Bool` | `%M1722.0` | Valve Fault | +| `gAVP391Fault` | `Bool` | `%M1724.7` | Valve Fault | +| `gBalaiage_Fault` | `Bool` | `%M1810.5` | MIX - Balaiage Flow Error - Fault Alarm | +| `gBalaiage_MaxFlow` | `Bool` | `%M1733.7` | MIX - Balaiage OK to Max Flow | +| `gBalaiageTankFlowOK` | `Bool` | `%M1740.6` | MIX - Balaiage | +| `gBlenderAlarm` | `Bool` | `%M1713.5` | MIX - SAFETIES | +| `gBlenderBlending` | `Bool` | `%M1724.2` | MIX - RUN CTRL | +| `gBlenderCIPMode` | `Bool` | `%M1741.7` | MIX - | +| `gBlenderEmpty` | `Bool` | `%M1734.6` | MIX - LEVEL | +| `gBlenderEnToRamp` | `Bool` | `%M1723.7` | MIX - RUN CTRL | +| `gDelayFillerStopEn` | `Bool` | `%M1715.0` | MIX - RUN CTRL - Both Blender and Filler are running | +| `gBlenderFlowFltEn` | `Bool` | `%M1724.6` | MIX - RUN CTRL | +| `gBlenderLevelOk` | `Bool` | `%M1734.2` | MIX - LEVEL - Product Tank Recipe Minimum Level Acheaved | +| `gBlenderLevelTarget` | `Bool` | `%M1734.3` | MIX - LEVEL - Product Tank Target Level Acheaved | +| `gBlenderMinLevel` | `Bool` | `%M1734.4` | MIX - LEVEL - Product Tank 5% Level Acheaved | +| `gBlenderOperatorStop` | `Bool` | `%M1724.4` | MIX - RUN CTRL | +| `gBlenderProdMode` | `Bool` | `%M1741.5` | MIX - Production Mode | +| `gBlenderRinseMode` | `Bool` | `%M1741.6` | MIX - Rinse Mode | +| `gBlendErrorHighSyr_Fault` | `Bool` | `%M1812.7` | MIX - Fault Alarm | +| `gBlendErrorLowSyr_Fault` | `Bool` | `%M1813.0` | MIX - Fault Alarm | +| `gBlenderStableFlow` | `Bool` | `%M1723.6` | MIX - RUN CTRL | +| `gBlenderStartLevel` | `Bool` | `%M1734.1` | MIX - LEVEL - Product Tank Pump Start Level Acheaved | +| `gBlenderStartPumps` | `Bool` | `%M1724.0` | MIX - RUN CTRL | +| `gBlenderStartPumpsONS` | `Bool` | `%M1724.1` | MIX - RUN CTRL | +| `gBlenderStopLevel` | `Bool` | `%M1734.0` | MIX - LEVEL - Product Tank Maximum Level Acheaved | +| `gBlenderStopping` | `Bool` | `%M1724.3` | MIX - RUN CTRL | +| `gBlenderSuppliesOk` | `Bool` | `%M1739.7` | MIX - Air and CO2 pressure ok and auxiliary ok | +| `gBlenderTankPress_Ok` | `Bool` | `%M1738.2` | MIX - PRESSURE - | +| `gBlendFiStillWaterByPass` | `Bool` | `%M1716.1` | MIX - Still Water Bypass | +| `gBlendRecircActive` | `Bool` | `%M1722.7` | MIX - Recirculation Active | +| `gBlendResetTotalizer` | `Bool` | `%M1741.2` | MIX - Reset Totalizer | +| `gCarboCO2Err_H_CO2_Fault` | `Bool` | `%M1813.1` | MIX - Fault Alarm | +| `gCarboCO2Err_L_CO2_Fault` | `Bool` | `%M1813.2` | MIX - Fault Alarm | +| `gCARBOStopProductMeter` | `Bool` | `%M1740.3` | MIX - ProdAnalizer - CARBO Stop Signal To Product Meter | +| `gCIP_BlenderDrainDone` | `Bool` | `%M1736.1` | MIX - CIP - Drain | +| `gCIP_DeairTank_Flood` | `Bool` | `%M1736.2` | MIX - CIP - Deaireator Tank Flood | +| `gCIP_DeairTank_MaxLevel` | `Bool` | `%M1737.4` | MIX - LEVEL - Maximum Deaireator Tank Level during CIP | +| `gCIP_PrdTank_Flood` | `Bool` | `%M1736.0` | MIX - CIP - Product Tank Flood | +| `gCIP_PrdTank_MaxLevel` | `Bool` | `%M1735.1` | MIX - LEVEL - 100% Product Tank Level during CIP | +| `gCIP_PrdTank_PressLow` | `Bool` | `%M1736.4` | MIX - CIP - Product Tank Low Pressure | +| `gCIP_RecipePhaseLoadReq` | `Bool` | `%M1716.0` | MIX - Recipe Phase Load Request | +| `gCIP_SyrTank_Flood` | `Bool` | `%M1736.3` | MIX - CIP - Syrup Tank Flood | +| `gCIP_SyrTank_MaxLevel` | `Bool` | `%M1737.3` | MIX - LEVEL - Maximum Syrup Tank Level during CIP | +| `gCIP_SystemLowLevel` | `Bool` | `%M1735.3` | MIX - CIP -Product Tank Low Level | +| `gCIPONS` | `Bool` | `%M1721.0` | MIX - System Low Level | +| `gCIPRecirFlowMiss_Fault` | `Bool` | `%M1815.3` | MIX - Fault Alarm | +| `gCIPRinseEnableRMP302` | `Bool` | `%M1736.7` | MIX - CIP/Rinse Enable RMP302 Command | +| `gCIPRinseOpenRMP302` | `Bool` | `%M1736.6` | MIX - CIP/Rinse Open RMP302 Command | +| `gCIPRinseOpenValves` | `Bool` | `%M1736.5` | MIX - CIP/Rinse Open Valve Command | +| `gCIPStopLevel` | `Bool` | `%M1735.0` | MIX - LEVEL - Maximum Tank Level during CIP | +| `gClock_120s` | `Bool` | `%M1950.0` | MIX - Clock 120 Seconds (60 OFF - 60 ON) | +| `gClock_20s` | `Bool` | `%M1950.3` | MIX - Clock 20 Seconds (10 OFF - 10 ON) | +| `gClock_40s` | `Bool` | `%M1950.2` | MIX - Clock 40 Seconds (20 OFF - 20 ON) | +| `gClock_60s` | `Bool` | `%M1950.1` | MIX - Clock 60 Seconds (30 OFF - 30 ON) | +| `gCloseMainCO2Valve` | `Bool` | `%M1739.4` | MIX - PRESSURE - | +| `gCO2LowPress_Fault` | `Bool` | `%M1817.1` | MIX - Supplies Alarm | +| `gCO2PressNotOk` | `Bool` | `%M1742.5` | MIX - Low pressure | +| `gColingSysBypassResetFP` | `Bool` | `%M1718.4` | MIX - Cooling System Bypass Reset FP | +| `gColingSystemBypassReset` | `Bool` | `%M1718.2` | MIX - Cooling System Bypass Reset | +| `gCoolingSysBypassAct` | `Bool` | `%M1718.0` | Mix - System Bypass Actived | +| `gCoolingSystemBypass` | `Bool` | `%M1718.1` | MIX - Cooling System Bypass Reset | +| `gCoolingSystemBypassFP` | `Bool` | `%M1718.3` | MIX - Cooling System Bypass Reset FP | +| `gCoolingTempMaxLowAlrm` | `Bool` | `%M1719.0` | Mix - Glycole temperature Max Low Alarm | +| `gCriticalBlending` | `Bool` | `%M1723.0` | MIX - Critical Blending | +| `gDeairTank_HighLvl_Fault` | `Bool` | `%M1814.1` | MIX - Deair Tank High Level Fault - Fault Alarm | +| `gDeairTank_Loading` | `Bool` | `%M1723.4` | MIX - Deaireator Tank Loading | +| `gDeairTank_LowLvl_Fault` | `Bool` | `%M1817.2` | MIX - Deaireator Tank Low Level Fault - Supplies Alarm | +| `gDeairTank_VacuumOk` | `Bool` | `%M1739.3` | MIX - PRESSURE - Deaireator vacuum pressure acheaved | +| `gDeviceFault` | `Bool` | `%M1713.2` | MIX - SAFETIES | +| `gDiffSensor_Analog_Fault` | `Bool` | `%M1816.2` | MIX - Fault Alarm | +| `gDrainPressNotOK` | `Bool` | `%M1742.6` | MIX - Drain Pressure not Ok | +| `gElCabTooHigh` | `Bool` | `%M1818.1` | MIX - Supplies Alarm | +| `gEmergencyPressed` | `Bool` | `%M1713.0` | MIX - Emergency Pressed | +| `gEnRampDownToStop` | `Bool` | `%M1714.7` | MIX - RUN CTRL | +| `gEnRecircPHE` | `Bool` | `%M1715.5` | MIX - PHE Recirculation | +| `gFiilerStopBlender` | `Bool` | `%M1722.5` | MIX - RUN CTRL - Next Filler stop, stop blender | +| `gEqPressOk` | `Bool` | `%M1739.1` | MIX - PRESSURE - Equilibrium pressure acheaved during First Production | +| `gEqPressSelected` | `Bool` | `%M1738.7` | MIX - PRESSURE - Selected | +| `gFinalPressureOk` | `Bool` | `%M1739.0` | MIX - PRESSURE - Final Pressure acheaved during First Production | +| `gFirstProdPressHold` | `Bool` | `%M1739.2` | MIX - PRESSURE - Pressure control enable during first production | +| `gFirstProdStop` | `Bool` | `%M1734.7` | MIX - LEVEL - Stop Blender when First Production Done | +| `gFlowToFiller` | `Bool` | `%M1722.6` | MIX - RUN CTRL - Product is Flowing to Filler | +| `gNoFreezeProductMeter` | `Bool` | `%M1740.1` | MIX - ProdAnalizer - Masseli Run Reading activated | +| `gFreezeSyrupMeter` | `Bool` | `%M1740.0` | MIX - ProdAnalizer - Hold Signal To Syrup Densimeter | +| `gFTM303_EPD` | `Bool` | `%M1811.1` | MIX - CO2 MFM EPD - Fault Alarm | +| `gFTM303_Fault` | `Bool` | `%M1811.5` | MIX - CO2 MFM Fault - Fault Alarm | +| `gFTM303_ResetTot` | `Bool` | `%M1742.2` | MIX - CO2 MFM Reset Tot | +| `gFTN301_EPD` | `Bool` | `%M1810.7` | MIX - Water VFM EPD - Fault Alarm | +| `gFTN301_Fault` | `Bool` | `%M1811.3` | MIX - Water VFM Fault - Fault Alarm | +| `gFTN301_FlowTooLow` | `Bool` | `%M1812.5` | MIX - Water Flow Too Low - Fault Alarm | +| `gFTN301_ResetTot` | `Bool` | `%M1742.0` | MIX - Water VFM Reset Totalizer | +| `gFTN301_SpeedTooLow` | `Bool` | `%M1812.6` | MIX - Water Speed Too Low - Fault Alarm | +| `gFTN301_SpeedToStop` | `Bool` | `%M1714.5` | MIX - Water Speed To Stop - RUN CTRL | +| `gFTP302_EPD` | `Bool` | `%M1811.0` | MIX - Syrup MFM EPD - Fault Alarm | +| `gFTP302_Fault` | `Bool` | `%M1811.4` | MIX - Syrup MFM - Fault Alarm | +| `gFTP302_ResetTot` | `Bool` | `%M1742.1` | MIX - Syrup MFM Reset Totalizer | +| `gGencoldChillerEn` | `Bool` | `%M1714.0` | MIX - Chiller Enable | +| `gHighPriorityAlarm` | `Bool` | `%M1713.3` | MIX - Safeties | +| `gHProcessSetup_KWatPump` | `Real` | `%MD1640` | MIX - K Water Pump | +| `gHVM302_Open` | `Bool` | `%M1820.1` | MIX - Manual Water Drain Valve - Operator Alarm | +| `gHVP301_Open` | `Bool` | `%M1820.0` | MIX - Manual Syrup Drain Valve Open - Operator Alarm | +| `gIN_AmmoniaCompressorRdy` | `Bool` | `%M1500.0` | MIX - From Chiller Ammonia Compressor Ready | +| `gIN_AmmoniaHighLevel` | `Bool` | `%M1500.1` | MIX - From Chiller Ammonia High Level | +| `gIN_AmmoniaLowPressure` | `Bool` | `%M1500.2` | MIX - From Chiller Ammonia Low Pressure | +| `gIN_CIP_CausticSanRun` | `Bool` | `%M1500.3` | MIX - From CIP Room CIP Change Sanitize | +| `gIN_CIP_ChangeSanitize` | `Bool` | `%M1500.4` | MIX - From CIP Room CIP change sanitize | +| `gIN_CIP_ChemicalProd` | `Bool` | `%M1500.5` | Mix - From CIPRoom | +| `gIN_CIP_CIPCompleted` | `Bool` | `%M1500.6` | MIX - From CIP Room CIP completed | +| `gIN_CIP_CIPMode` | `Bool` | `%M1500.7` | MIX - From CIP Room CIP Mode | +| `gIN_CIP_CIPProdSending` | `Bool` | `%M1501.0` | MIX - From CIP Room CIP Product Sending | +| `gIN_CIP_CIPRunning` | `Bool` | `%M1501.1` | MIX - From CIP Room CIP running | +| `gIN_CIP_DrainRequest` | `Bool` | `%M1501.2` | MIX - From CIP Room Drain Request | +| `gIN_CIP_Fault` | `Bool` | `%M1501.3` | MIX - From CIP Room CIP Fault | +| `gIN_CIP_FreeSodaTank` | `Bool` | `%M1501.4` | MIX - CIP Soda Tank is able to receive soda from mixer | +| `gIN_CIP_HotWaterSending` | `Bool` | `%M1501.5` | MIX - CIP Hot Water Sending to Mixer | +| `gIN_CIP_RinseMode` | `Bool` | `%M1501.6` | MIX - From CIP Room Rinse Mode | +| `gIN_CIP_TankFilling` | `Bool` | `%M1501.7` | MIX - From CIP Room Flood Request | +| `gIN_DeairTank_MinLvl` | `Bool` | `%M1502.0` | MIX - Deaireator Tank Minimum Level | +| `gIN_DeairTank_Vacuum_Ok` | `Bool` | `%M1502.1` | MIX - Deaireator Tank Vacuum OK | +| `gIN_Filler_AVM346_En` | `Bool` | `%M1502.2` | MIX - From Filler AVM346 Enable | +| `gIN_Filler_AVM362_En` | `Bool` | `%M1502.3` | MIX - From Filler AVM362 Enable | +| `gIN_FillerBottleFilling` | `Bool` | `%M1502.4` | MIX - From Filler | +| `gIN_FillerCIPChangeReady` | `Bool` | `%M1502.5` | MIX - From Filler Spare | +| `gIN_FillerCIPCycleEnded` | `Bool` | `%M1502.6` | MIX - From Filler Spare | +| `gIN_FillerCIPDrainCompl` | `Bool` | `%M1502.7` | MIX - From Filler Drain Completed | +| `gIN_FillerCIPDrainSelect` | `Bool` | `%M1503.0` | MIX - From Filler Drain Selecteted | +| `gIN_FillerCIPModeSelect` | `Bool` | `%M1503.1` | MIX - From Filler CIP Mode Selected | +| `gIN_FillerCIPOpen_AVM313` | `Bool` | `%M1503.2` | MIX - From Filler CIP Open AVM313 | +| `gIN_FillerCIPRequest` | `Bool` | `%M1503.3` | MIX - From Filler Ready to CIP | +| `gIN_FillerCIPStopRetPump` | `Bool` | `%M1503.4` | MIX - From Filler | +| `gIN_FillerEndFlushing` | `Bool` | `%M1503.5` | MIX - From Filler | +| `gIN_FillerEndTankFilling` | `Bool` | `%M1503.6` | MIX - From Filler | +| `gIN_FillerProdReady` | `Bool` | `%M1503.7` | MIX - From Filler Ready to Production | +| `gIN_FillerProdRunOutReq` | `Bool` | `%M1504.0` | MIX - From Filler Product Run Out request | +| `gIN_Filler1ProductReq` | `Bool` | `%M1504.1` | MIX - From Filler Product request | +| `gIN_HVM302_Aux` | `Bool` | `%M1504.2` | MIX - Water Manual Drain Valve Aux | +| `gIN_HVP301_Aux` | `Bool` | `%M1504.3` | MIX - Syrup Line Drain Valve Aux | +| `gIN_Line1_CIP_Ready` | `Bool` | `%M1504.4` | MIX - From Line1 Ready to CIP | +| `gIN_Line1_end_Drain` | `Bool` | `%M1504.5` | MIX - From Line1 Drain Completed | +| `gIN_Line1_spare` | `Bool` | `%M1504.6` | MIX - From Line1 Spare | +| `gIN_LinePressCO2Ok` | `Bool` | `%M1504.7` | MIX - Line Co2 Pressure Ok | +| `gIN_ManifoldNotReadyCIP` | `Bool` | `%M1505.0` | MIX - Manifold Not Ready CIP | +| `gIN_ManifoldNotReadyProd` | `Bool` | `%M1505.1` | MIX - Manifold Not Ready PROD | +| `gIN_MaxPPN304` | `Bool` | `%M1505.2` | MIX - Maximum level vacuum pump | +| `gIN_MinPPN304` | `Bool` | `%M1505.3` | MIX - Minimum level vacuum pump | +| `gIN_PPM303_FCReady` | `Bool` | `%M1505.4` | MIX - Product Pump FC Ready | +| `gIN_PPN301_FCReady` | `Bool` | `%M1505.5` | MIX - Water Pump FC Ready | +| `gIN_PPP302_FCReady` | `Bool` | `%M1505.6` | MIX - Syrup Pump FC Ready | +| `gIN_ResetBtn` | `Bool` | `%M1505.7` | MIX - Pb Reset | +| `gIN_ResetHorn` | `Bool` | `%M1508.0` | MIX - Pb Horn Reset | +| `gIN_RMM301_Closed` | `Bool` | `%M1508.1` | MIX - Water Valve Closed | +| `gIN_RMM303_Closed` | `Bool` | `%M1508.2` | MIX - Carbo CO2 Valve Closed | +| `gIN_RMM304_Closed` | `Bool` | `%M1508.3` | MIX - GAS2 Valve Closed | +| `gIN_RMP302_Closed` | `Bool` | `%M1508.4` | MIX - Syrup Valve Closed | +| `gIN_Spare0.6` | `Bool` | `%M1508.5` | Spare | +| `gIN_Spare2.5` | `Bool` | `%M1508.6` | Spare | +| `gIN_StartBtn` | `Bool` | `%M1508.7` | MIX - Start | +| `gIN_StopBtn` | `Bool` | `%M1509.0` | MIX - Stop | +| `gIN_SyrRoomOk` | `Bool` | `%M1509.1` | MIX - From Syrup Room Syrup ready | +| `gIN_SyrTank_MinLvl` | `Bool` | `%M1509.2` | MIX - Syrup Tank Minimum Level | +| `gIN_VoltageOk` | `Bool` | `%M1509.3` | MIX - Voltage ok | +| `gInstrumentFault` | `Bool` | `%M1716.3` | MIX - Safeties | +| `gLowPriorityAlarm` | `Bool` | `%M1713.4` | MIX - Safeties | +| `gMaselli_Error_Fault` | `Bool` | `%M1814.6` | MIX - Fault Alarm | +| `gMaselliUC05_Com_Fault` | `Bool` | `%M1815.0` | MIX - Fault Alarm | +| `gMaselliUC05_Error_Fault` | `Bool` | `%M1814.7` | MIX - Fault Alarm | +| `gMaselliUR22_Com_Fault` | `Bool` | `%M1815.2` | MIX - Fault Alarm | +| `gMaselliUR22_Error_Fault` | `Bool` | `%M1815.1` | MIX - Fault Alarm | +| `gMaxBlendErrorAfterFault` | `Bool` | `%M1741.3` | MIX - Fault Alarm | +| `gMaxCarboErrorAfterFault` | `Bool` | `%M1741.4` | MIX - Fault Alarm | +| `gMaxSyrAutoCorrDone` | `Bool` | `%M1740.5` | MIX - Maximum Syrup Brix Autocorr Acheaved maximum autocorr perc | +| `gMinRatio` | `Bool` | `%M1740.4` | MIX - Maximum Syrup Brix Autocorr Acheaved - minimum ratio - | +| `gModValveRiseTimeCalcEn` | `Bool` | `%M1724.5` | MIX - Valve Rinse Time Calc | +| `gmPDS_PA_Error_Fault` | `Bool` | `%M1816.6` | MIX - Fault Alarm | +| `gmPDS_SYR_PA_Error_Fault` | `Bool` | `%M1814.0` | MIX - Fault Alarm | +| `gmPDS1000_Error_Fault` | `Bool` | `%M1814.3` | MIX - Fault Alarm | +| `gmPDS1000_NoOscillation` | `Bool` | `%M1814.4` | MIX - Fault Alarm | +| `gmPDS2000_Error_Fault` | `Bool` | `%M1814.5` | MIX - Fault Alarm | +| `gNotARecipe_Fault` | `Bool` | `%M1812.4` | MIX - Fault Alarm | +| `gOUT_CIPChangeReady` | `Bool` | `%M1600.0` | MIX - To CIP Room | +| `gOUT_CIPCycleEnded` | `Bool` | `%M1600.1` | MIX - To CIP Room | +| `gOUT_CIPDrainCompleted` | `Bool` | `%M1600.2` | MIX - To CIP Room | +| `gOUT_CIPHotWaterRequest` | `Bool` | `%M1600.3` | MIX - To CIP Room | +| `gOUT_CIPSendSodaRequest` | `Bool` | `%M1600.4` | MIX - To CIP Room | +| `gOUT_CIPWaterPipe_Ready` | `Bool` | `%M1600.5` | MIX - To CIP Room | +| `gOUT_FillerCIPCaSanitRun` | `Bool` | `%M1600.6` | MIX - To Filler CIP (FillerCIPCausticSanitizeRunning) | +| `gOUT_FillerCIPChangeSani` | `Bool` | `%M1600.7` | MIX - To Filler CIP Change sanitize | +| `gOUT_FillerCIPCompleted` | `Bool` | `%M1601.0` | MIX - To Filler CIP Completed | +| `gOUT_FillerCIPDrainReq` | `Bool` | `%M1601.1` | MIX - To Filler CIP Drain | +| `gOUT_FillerCIPMode` | `Bool` | `%M1601.2` | MIX - To Filler CIP Request | +| `gOUT_FillerCIPRunning` | `Bool` | `%M1601.3` | MIX - To Filler CIP Running | +| `gOUT_FillerMinimumLevel` | `Bool` | `%M1601.4` | MIX - To Filler Product under minimum level | +| `gOUT_FillerProductAvail` | `Bool` | `%M1601.5` | MIX - To Filler Product sending available | +| `gOUT_FillerProduction` | `Bool` | `%M1601.6` | MIX - To Filler Production | +| `gOUT_FillerRinseMode` | `Bool` | `%M1601.7` | MIX - To Filler Rinse Request | +| `gOUT_PPM303_Run` | `Bool` | `%M1602.0` | MIX - PPM303 Product Pump Run | +| `gOUT_PPM306_Run` | `Bool` | `%M1602.1` | MIX - PPM306 Recycle Pump Run | +| `gOUT_PPM307_Run` | `Bool` | `%M1603.1` | MIX - PPM307 CIP Pump Run | +| `gOUT_PPN301_Run` | `Bool` | `%M1602.2` | MIX - PPN301 Water Pump Run | +| `gOUT_PPN301_VFCRun` | `Bool` | `%M1602.3` | MIX - PPN301 Water Pump VFC Run | +| `gOUT_PPN304_Run` | `Bool` | `%M1602.4` | MIX - PPN304 Vacuum Pump Run | +| `gOUT_PPN305_Run` | `Bool` | `%M1602.5` | MIX - PPN305 Water Pump Run | +| `gOUT_PPP302_Run` | `Bool` | `%M1602.6` | MIX - PPP302 Syrup Pump Run | +| `gOUT_UVLamp_ONOFF` | `Bool` | `%M1602.7` | MIX - UV Lamp On-Off | +| `gP_AVM311` | `Bool` | `%M1400.0` | MIX - Procedure auxiliary variable | +| `gP_AVM312` | `Bool` | `%M1400.1` | MIX - Procedure auxiliary variable | +| `gP_AVM313` | `Bool` | `%M1400.2` | MIX - Procedure auxiliary variable | +| `gP_AVM315` | `Bool` | `%M1400.3` | MIX - Procedure auxiliary variable | +| `gP_AVM317` | `Bool` | `%M1400.4` | MIX - Procedure auxiliary variable | +| `gP_AVM317_1` | `Bool` | `%M1405.1` | MIX - Procedure auxiliary variable | +| `gP_AVM321` | `Bool` | `%M1400.5` | MIX - Procedure auxiliary variable | +| `gP_AVM322` | `Bool` | `%M1400.6` | MIX - Procedure auxiliary variable | +| `gP_AVM323` | `Bool` | `%M1400.7` | MIX - Procedure auxiliary variable | +| `gP_AVM326` | `Bool` | `%M1401.0` | MIX - Procedure auxiliary variable | +| `gP_AVM327` | `Bool` | `%M1408.2` | MIX - Procedure auxiliary variable | +| `gP_AVM328` | `Bool` | `%M1408.3` | MIX - Procedure auxiliary variable | +| `gP_AVM329` | `Bool` | `%M1408.4` | MIX - Procedure auxiliary variable | +| `gP_AVM330` | `Bool` | `%M1408.5` | MIX - Procedure auxiliary variable | +| `gP_AVM339` | `Bool` | `%M1408.6` | MIX - Procedure auxiliary variable | +| `gP_AVM340` | `Bool` | `%M1408.7` | MIX - Procedure auxiliary variable | +| `gP_AVM341` | `Bool` | `%M1401.1` | MIX - Procedure auxiliary variable | +| `gP_AVM342` | `Bool` | `%M1401.2` | MIX - Procedure auxiliary variable | +| `gP_AVM345` | `Bool` | `%M1401.3` | MIX - Procedure auxiliary variable | +| `gP_AVM346` | `Bool` | `%M1401.4` | MIX - Procedure auxiliary variable | +| `gP_AVM362` | `Bool` | `%M1401.5` | MIX - Procedure auxiliary variable | +| `gP_AVM366` | `Bool` | `%M1401.6` | MIX - Procedure auxiliary variable | +| `gP_AVM367` | `Bool` | `%M1401.7` | MIX - Procedure auxiliary variable | +| `gP_AVM368` | `Bool` | `%M1402.0` | MIX - Procedure auxiliary variable | +| `gP_AVM369` | `Bool` | `%M1402.1` | MIX - Procedure auxiliary variable | +| `gP_AVM371` | `Bool` | `%M1402.2` | MIX - Procedure auxiliary variable | +| `gP_AVM372` | `Bool` | `%M1402.3` | MIX - Procedure auxiliary variable | +| `gP_AVM380` | `Bool` | `%M1402.4` | MIX - Procedure auxiliary variable | +| `gP_AVM381` | `Bool` | `%M1402.5` | MIX - Procedure auxiliary variable | +| `gP_AVM385` | `Bool` | `%M1413.3` | MIX - Procedure auxiliary variable | +| `gP_AVM386` | `Bool` | `%M1409.0` | MIX - Procedure auxiliary variable | +| `gP_AVM388` | `Bool` | `%M1402.6` | MIX - Procedure auxiliary variable | +| `gP_AVM389` | `Bool` | `%M1402.7` | MIX - Procedure auxiliary variable | +| `gP_AVM391` | `Bool` | `%M1409.1` | MIX - Procedure auxiliary variable | +| `gP_AVM396` | `Bool` | `%M1403.0` | MIX - Procedure auxiliary variable | +| `gP_AVM397` | `Bool` | `%M1403.1` | MIX - Procedure auxiliary variable | +| `gP_AVN314` | `Bool` | `%M1403.2` | MIX - Procedure auxiliary variable | +| `gP_AVN318` | `Bool` | `%M1403.3` | MIX - Procedure auxiliary variable | +| `gP_AVN325` | `Bool` | `%M1403.4` | MIX - Procedure auxiliary variable | +| `gP_AVN327` | `Bool` | `%M1403.5` | MIX - Procedure auxiliary variable | +| `gP_AVN328` | `Bool` | `%M1403.6` | MIX - Procedure auxiliary variable | +| `gP_AVN329` | `Bool` | `%M1403.7` | MIX - Procedure auxiliary variable | +| `gP_AVN339` | `Bool` | `%M1404.0` | MIX - Procedure auxiliary variable | +| `gP_AVN340` | `Bool` | `%M1404.1` | MIX - Procedure auxiliary variable | +| `gP_AVN348` | `Bool` | `%M1404.2` | MIX - Procedure auxiliary variable | +| `gP_AVN349` | `Bool` | `%M1404.3` | MIX - Procedure auxiliary variable | +| `gP_AVN373` | `Bool` | `%M1404.4` | MIX - Procedure auxiliary variable | +| `gP_AVN374` | `Bool` | `%M1404.5` | MIX - Procedure auxiliary variable | +| `gP_AVN377` | `Bool` | `%M1788.7` | MIX - Procedure auxiliary variable | +| `gP_AVN378` | `Bool` | `%M1789.0` | MIX - Procedure auxiliary variable | +| `gP_AVN395` | `Bool` | `%M1404.6` | MIX - Procedure auxiliary variable | +| `gP_AVP316` | `Bool` | `%M1404.7` | MIX - Procedure auxiliary variable | +| `gP_AVP316_1` | `Bool` | `%M1405.0` | MIX - Procedure auxiliary variable | +| `gP_AVP324` | `Bool` | `%M1405.2` | MIX - Procedure auxiliary variable | +| `gP_AVP344` | `Bool` | `%M1405.3` | MIX - Procedure auxiliary variable | +| `gP_AVP361` | `Bool` | `%M1405.4` | MIX - Procedure auxiliary variable | +| `gP_AVP363` | `Bool` | `%M1405.5` | MIX - Procedure auxiliary variable | +| `gP_AVP364` | `Bool` | `%M1405.6` | MIX - Procedure auxiliary variable | +| `gP_AVP365` | `Bool` | `%M1405.7` | MIX - Procedure auxiliary variable | +| `gP_AVP389` | `Bool` | `%M1410.7` | MIX - Procedure auxiliary variable | +| `gP_AVP390` | `Bool` | `%M1411.0` | MIX - Procedure auxiliary variable | +| `gP_AVS331` | `Bool` | `%M1406.0` | MIX - Procedure auxiliary variable | +| `gP_AVS332` | `Bool` | `%M1406.1` | MIX - Procedure auxiliary variable | +| `gP_AVS333` | `Bool` | `%M1406.2` | MIX - Procedure auxiliary variable | +| `gP_AVS334` | `Bool` | `%M1406.3` | MIX - Procedure auxiliary variable | +| `gP_AVS335` | `Bool` | `%M1406.4` | MIX - Procedure auxiliary variable | +| `gP_AVS336` | `Bool` | `%M1406.5` | MIX - Procedure auxiliary variable | +| `gP_AVS337` | `Bool` | `%M1406.6` | MIX - Procedure auxiliary variable | +| `gP_AVS338` | `Bool` | `%M1406.7` | MIX - Procedure auxiliary variable | +| `gP_BldTankPress_En` | `Bool` | `%M1407.0` | MIX - Procedure auxiliary variable | +| `gP_CarboPipe_En` | `Bool` | `%M1407.1` | MIX - Procedure auxiliary variable | +| `gP_CIP_CO2_Inj` | `Bool` | `%M1407.2` | MIX - Procedure auxiliary variable | +| `gP_CIP_Temp_En` | `Bool` | `%M1407.3` | MIX - Procedure auxiliary variable | +| `gP_CIPChangeSanitize` | `Bool` | `%M1407.4` | MIX - Procedure auxiliary variable | +| `gP_CIPDrainRequest` | `Bool` | `%M1407.5` | MIX - Procedure auxiliary variable | +| `gP_CIPHotPhase` | `Bool` | `%M1407.6` | MIX - Procedure auxiliary variable | +| `gP_CIPRunning` | `Bool` | `%M1407.7` | MIX - Procedure auxiliary variable | +| `gP_EV04` | `Bool` | `%M1408.1` | MIX - Procedure auxiliary variable | +| `gP_EV52` | `Bool` | `%M1409.2` | MIX - Procedure auxiliary variable | +| `gP_EV53` | `Bool` | `%M1409.3` | MIX - Procedure auxiliary variable | +| `gP_EV54` | `Bool` | `%M1409.4` | MIX - Procedure auxiliary variable | +| `gP_AVM353` | `Bool` | `%M1409.5` | MIX - Procedure auxiliary variable | +| `gP_EV56` | `Bool` | `%M1409.6` | MIX - Procedure auxiliary variable | +| `gP_EV57` | `Bool` | `%M1409.7` | MIX - Procedure auxiliary variable | +| `gP_EV58` | `Bool` | `%M1410.0` | MIX - Procedure auxiliary variable | +| `gP_EV75` | `Bool` | `%M1410.1` | MIX - Procedure auxiliary variable | +| `gP_EV76` | `Bool` | `%M1410.2` | MIX - Procedure auxiliary variable | +| `gP_EV77` | `Bool` | `%M1410.3` | MIX - Procedure auxiliary variable | +| `gP_EV78` | `Bool` | `%M1410.4` | MIX - Procedure auxiliary variable | +| `gP_EV79` | `Bool` | `%M1410.5` | MIX - Procedure auxiliary variable | +| `gP_EV83` | `Bool` | `%M1410.6` | MIX - Procedure auxiliary variable | +| `gP_FillerProdLoad` | `Bool` | `%M1411.1` | MIX - Procedure auxiliary variable | +| `gP_FillerProdSend` | `Bool` | `%M1411.2` | MIX - Procedure auxiliary variable | +| `gP_HotWaterRequest` | `Bool` | `%M1411.3` | MIX - Procedure auxiliary variable | +| `gP_LimitCO2PressValve` | `Bool` | `%M1411.4` | MIX - Procedure auxiliary variable | +| `gP_PID_Head_Enable` | `Bool` | `%M1411.5` | MIX - Procedure auxiliary variable | +| `gP_PID_Head_Manual` | `Bool` | `%M1411.6` | MIX - Procedure auxiliary variable | +| `gP_PPM303` | `Bool` | `%M1411.7` | MIX - Procedure auxiliary variable | +| `gP_PPN301` | `Bool` | `%M1412.0` | MIX - Procedure auxiliary variable | +| `gP_PPN304` | `Bool` | `%M1412.1` | MIX - Procedure auxiliary variable | +| `gP_PPN305` | `Bool` | `%M1412.2` | MIX - Procedure auxiliary variable | +| `gP_PPP302` | `Bool` | `%M1412.3` | MIX - Procedure auxiliary variable | +| `gP_RVN301` | `Bool` | `%M1412.4` | MIX - Procedure auxiliary variable | +| `gP_RVN301_1` | `Bool` | `%M1412.5` | MIX - Procedure auxiliary variable | +| `gP_RVN302` | `Bool` | `%M1412.6` | MIX - Procedure auxiliary variable | +| `gP_RVN302_1` | `Bool` | `%M1412.7` | MIX - Procedure auxiliary variable | +| `gP_RVP303` | `Bool` | `%M1413.0` | MIX - Procedure auxiliary variable | +| `gP_SendSodaRequest` | `Bool` | `%M1413.1` | MIX - Procedure auxiliary variable | +| `gP_Spare14080` | `Bool` | `%M1408.0` | MIX - Procedure auxiliary variable | +| `gP_SyrRoomPump` | `Bool` | `%M1413.2` | MIX - Procedure auxiliary variable | +| `gPAMaselli_Error_Fault` | `Bool` | `%M1816.7` | MIX - Fault Alarm | +| `gPCM306HighPress` | `Bool` | `%M1818.2` | MIX - PCM306 High Pressure - Supplies Alarm | +| `gPrdTank_Empty` | `Bool` | `%M1734.5` | MIX - LEVEL - Product Tank Empty | +| `gPrdTank_Press_Fault` | `Bool` | `%M1812.2` | MIX - Product Tank Pressure Fault - Fault Alarm | +| `gProdAvailable` | `Bool` | `%M1723.2` | MIX - Product Available | +| `gProdDoubleChillerEn` | `Bool` | `%M1715.4` | MIX - Double Chiller Enable | +| `gProdMeterTransferRecipe` | `Bool` | `%M1740.2` | MIX - ProdAnalizer - Signal to the Product Meter Recipe Transfer | +| `gProductChillerEn` | `Bool` | `%M1714.1` | MIX - Product Chiller Enable | +| `gProductionONS` | `Bool` | `%M1720.7` | MIX - Production ONS | +| `gProductMeterOK` | `Bool` | `%M2001.1` | MIX - BlenderCtrl__Main | +| `gProductMFMResetTot` | `Bool` | `%M1742.3` | MIX - Total Reset | +| `gProductVFM_EPD` | `Bool` | `%M1811.2` | MIX - Fault Alarm | +| `gProductVFM_Fault` | `Bool` | `%M1811.6` | MIX - Fault Alarm | +| `gPTM304_HighLimit` | `Bool` | `%M1738.3` | MIX - Product Tank Pressure High Limit - PRESSURE - | +| `gPTM304_OkToRun` | `Bool` | `%M1738.5` | MIX - Product Tank Pressure OK To Blend - PRESSURE - | +| `gPTN313_Acheaved` | `Bool` | `%M1713.1` | MIX - Vacuum Acheaved - still product signal from vacuum probe | +| `gPV_SyrBrixOk` | `Bool` | `%M1739.5` | MIX - Syrup Brix value not Zero | +| `gPV_SyrDensOk` | `Bool` | `%M1739.6` | MIX - Syrup Density value not zero | +| `gQTM301_TooHigh` | `Bool` | `%M1813.3` | MIX - Product Brix Too High - Fault Alarm | +| `gQTM301_TooLow` | `Bool` | `%M1813.4` | MIX - Product Brix Too Low - Fault Alarm | +| `gQTM302_TooHigh` | `Bool` | `%M1813.5` | MIX - Product CO2 Too High - Fault Alarm | +| `gQTM302_TooLow` | `Bool` | `%M1813.6` | MIX - Product CO2 Too Low - Fault Alarm | +| `gRecipeManagement_Busy` | `Bool` | `%M1715.7` | MIX - Recipe Management Busy | +| `gRinseClose_RMM301` | `Bool` | `%M1737.0` | MIX - RINSE | +| `gRinseClose_RMP302` | `Bool` | `%M1737.1` | MIX - RINSE | +| `gRinseDrainRunning` | `Bool` | `%M1737.2` | MIX - RINSE | +| `gRinseONS` | `Bool` | `%M1721.1` | MIX - RINSE | +| `gRMM301_PIDCtrlOk` | `Bool` | `%M1740.7` | MIX - Water PID Controlling Ok | +| `gRMM301_Pos_Fault` | `Bool` | `%M1811.7` | MIX - Water Valve Position Fault - Fault Alarm | +| `gRMM303_PIDCtrlOk` | `Bool` | `%M1741.1` | MIX - CO2 PID Controlling Ok | +| `gRMM303_Pos_Fault` | `Bool` | `%M1812.1` | MIX - Carbo CO2 Valve Position - Fault Alarm | +| `gRMM304_PIDCtrlOk` | `Bool` | `%M1742.7` | MIX - GAS2 PID Controlling Ok | +| `gRMM304_Pos_Fault` | `Bool` | `%M1810.6` | MIX - GAS2 Valve Position - Fault Alarm | +| `gRMP302_PIDCtrlOk` | `Bool` | `%M1741.0` | MIX - Syrup PID Controlling Ok | +| `gRMP302_Pos_Fault` | `Bool` | `%M1812.0` | MIX - Syrup Valve Position Fault - Fault Alarm | +| `gRVM301_Fault` | `Bool` | `%M1816.3` | MIX - Product Tank Pressure Valve Fault - Fault Alarm | +| `gRVN304Fault` | `Bool` | `%M1816.4` | MIX - Deaireation Valve Fault - Fault Alarm | +| `gSP_AVM311` | `Bool` | `%M1300.0` | MIX - Procedure auxiliary variable | +| `gSP_AVM312` | `Bool` | `%M1300.1` | MIX - Procedure auxiliary variable | +| `gSP_AVM313` | `Bool` | `%M1300.2` | MIX - Procedure auxiliary variable | +| `gSP_AVM315` | `Bool` | `%M1300.3` | MIX - Procedure auxiliary variable | +| `gSP_AVM317` | `Bool` | `%M1300.4` | MIX - Procedure auxiliary variable | +| `gSP_AVM317_1` | `Bool` | `%M1305.1` | MIX - Procedure auxiliary variable | +| `gSP_AVM321` | `Bool` | `%M1300.5` | MIX - Procedure auxiliary variable | +| `gSP_AVM322` | `Bool` | `%M1300.6` | MIX - Procedure auxiliary variable | +| `gSP_AVM323` | `Bool` | `%M1300.7` | MIX - Procedure auxiliary variable | +| `gSP_AVM323_2` | `Bool` | `%M1768.1` | MIX - Procedure auxiliary variable | +| `gSP_AVM326` | `Bool` | `%M1301.0` | MIX - Procedure auxiliary variable | +| `gSP_AVM327` | `Bool` | `%M1308.2` | MIX - Procedure auxiliary variable | +| `gSP_AVM328` | `Bool` | `%M1308.3` | MIX - Procedure auxiliary variable | +| `gSP_AVM329` | `Bool` | `%M1308.4` | MIX - Procedure auxiliary variable | +| `gSP_AVM330` | `Bool` | `%M1308.5` | MIX - Procedure auxiliary variable | +| `gSP_AVM339` | `Bool` | `%M1308.6` | MIX - Procedure auxiliary variable | +| `gSP_AVM340` | `Bool` | `%M1308.7` | MIX - Procedure auxiliary variable | +| `gSP_AVM341` | `Bool` | `%M1301.1` | MIX - Procedure auxiliary variable | +| `gSP_AVM342` | `Bool` | `%M1301.2` | MIX - Procedure auxiliary variable | +| `gSP_AVM345` | `Bool` | `%M1301.3` | MIX - Procedure auxiliary variable | +| `gSP_AVM346` | `Bool` | `%M1301.4` | MIX - Procedure auxiliary variable | +| `gSP_AVM362` | `Bool` | `%M1301.5` | MIX - Procedure auxiliary variable | +| `gSP_AVM366` | `Bool` | `%M1301.6` | MIX - Procedure auxiliary variable | +| `gSP_AVM367` | `Bool` | `%M1301.7` | MIX - Procedure auxiliary variable | +| `gSP_AVM368` | `Bool` | `%M1302.0` | MIX - Procedure auxiliary variable | +| `gSP_AVM369` | `Bool` | `%M1302.1` | MIX - Procedure auxiliary variable | +| `gSP_AVM371` | `Bool` | `%M1302.2` | MIX - Procedure auxiliary variable | +| `gSP_AVM372` | `Bool` | `%M1302.3` | MIX - Procedure auxiliary variable | +| `gSP_AVM380` | `Bool` | `%M1302.4` | MIX - Procedure auxiliary variable | +| `gSP_AVM381` | `Bool` | `%M1302.5` | MIX - Procedure auxiliary variable | +| `gSP_AVM385` | `Bool` | `%M1313.3` | MIX - Procedure auxiliary variable | +| `gSP_AVM386` | `Bool` | `%M1309.0` | MIX - Procedure auxiliary variable | +| `gSP_AVM388` | `Bool` | `%M1302.6` | MIX - Procedure auxiliary variable | +| `gSP_AVM389` | `Bool` | `%M1302.7` | MIX - Procedure auxiliary variable | +| `gSP_AVM391` | `Bool` | `%M1309.1` | MIX - Procedure auxiliary variable | +| `gSP_AVM396` | `Bool` | `%M1303.0` | MIX - Procedure auxiliary variable | +| `gSP_AVM397` | `Bool` | `%M1303.1` | MIX - Procedure auxiliary variable | +| `gSP_AVN314` | `Bool` | `%M1303.2` | MIX - Procedure auxiliary variable | +| `gSP_AVN318` | `Bool` | `%M1303.3` | MIX - Procedure auxiliary variable | +| `gSP_AVN325` | `Bool` | `%M1303.4` | MIX - Procedure auxiliary variable | +| `gSP_AVN327` | `Bool` | `%M1303.5` | MIX - Procedure auxiliary variable | +| `gSP_AVN328` | `Bool` | `%M1303.6` | MIX - Procedure auxiliary variable | +| `gSP_AVN329` | `Bool` | `%M1303.7` | MIX - Procedure auxiliary variable | +| `gSP_AVN339` | `Bool` | `%M1304.0` | MIX - Procedure auxiliary variable | +| `gSP_AVN340` | `Bool` | `%M1304.1` | MIX - Procedure auxiliary variable | +| `gSP_AVN348` | `Bool` | `%M1304.2` | MIX - Procedure auxiliary variable | +| `gSP_AVN349` | `Bool` | `%M1304.3` | MIX - Procedure auxiliary variable | +| `gSP_AVN373` | `Bool` | `%M1304.4` | MIX - Procedure auxiliary variable | +| `gSP_AVN374` | `Bool` | `%M1304.5` | MIX - Procedure auxiliary variable | +| `gSP_AVN377` | `Bool` | `%M1768.7` | MIX - Procedure auxiliary variable | +| `gSP_AVN378` | `Bool` | `%M1768.0` | MIX - Procedure auxiliary variable | +| `gSP_AVN395` | `Bool` | `%M1304.6` | MIX - Procedure auxiliary variable | +| `gSP_AVP316` | `Bool` | `%M1304.7` | MIX - Procedure auxiliary variable | +| `gSP_AVP316_1` | `Bool` | `%M1305.0` | MIX - Procedure auxiliary variable | +| `gSP_AVP317_1` | `Bool` | `%M1768.2` | MIX - Procedure auxiliary variable | +| `gSP_AVP324` | `Bool` | `%M1305.2` | MIX - Procedure auxiliary variable | +| `gSP_AVP344` | `Bool` | `%M1305.3` | MIX - Procedure auxiliary variable | +| `gSP_AVP361` | `Bool` | `%M1305.4` | MIX - Procedure auxiliary variable | +| `gSP_AVP363` | `Bool` | `%M1305.5` | MIX - Procedure auxiliary variable | +| `gSP_AVP364` | `Bool` | `%M1305.6` | MIX - Procedure auxiliary variable | +| `gSP_AVP365` | `Bool` | `%M1305.7` | MIX - Procedure auxiliary variable | +| `gSP_AVP389` | `Bool` | `%M1310.7` | MIX - Procedure auxiliary variable | +| `gSP_AVP390` | `Bool` | `%M1311.0` | MIX - Procedure auxiliary variable | +| `gSP_AVS331` | `Bool` | `%M1306.0` | MIX - Procedure auxiliary variable | +| `gSP_AVS332` | `Bool` | `%M1306.1` | MIX - Procedure auxiliary variable | +| `gSP_AVS333` | `Bool` | `%M1306.2` | MIX - Procedure auxiliary variable | +| `gSP_AVS334` | `Bool` | `%M1306.3` | MIX - Procedure auxiliary variable | +| `gSP_AVS335` | `Bool` | `%M1306.4` | MIX - Procedure auxiliary variable | +| `gSP_AVS336` | `Bool` | `%M1306.5` | MIX - Procedure auxiliary variable | +| `gSP_AVS337` | `Bool` | `%M1306.6` | MIX - Procedure auxiliary variable | +| `gSP_AVS338` | `Bool` | `%M1306.7` | MIX - Procedure auxiliary variable | +| `gSP_BldTankPress_En` | `Bool` | `%M1307.0` | MIX - Procedure auxiliary variable | +| `gSP_CarboPipe_En` | `Bool` | `%M1307.1` | MIX - Procedure auxiliary variable | +| `gSP_CIP_CO2_Inj` | `Bool` | `%M1307.2` | MIX - Procedure auxiliary variable | +| `gSP_CIP_Temp_En` | `Bool` | `%M1307.3` | MIX - Procedure auxiliary variable | +| `gSP_CIPChangeSanitize` | `Bool` | `%M1307.4` | MIX - Procedure auxiliary variable | +| `gSP_CIPDrainRequest` | `Bool` | `%M1307.5` | MIX - Procedure auxiliary variable | +| `gSP_CIPHotPhase` | `Bool` | `%M1307.6` | MIX - Procedure auxiliary variable | +| `gSP_CIPRunning` | `Bool` | `%M1307.7` | MIX - Procedure auxiliary variable | +| `gSP_EV04` | `Bool` | `%M1308.1` | MIX - Procedure auxiliary variable | +| `gSP_EV52` | `Bool` | `%M1309.2` | MIX - Procedure auxiliary variable | +| `gSP_EV53` | `Bool` | `%M1309.3` | MIX - Procedure auxiliary variable | +| `gSP_EV54` | `Bool` | `%M1309.4` | MIX - Procedure auxiliary variable | +| `gSP_AVM353` | `Bool` | `%M1309.5` | MIX - Procedure auxiliary variable | +| `gSP_EV56` | `Bool` | `%M1309.6` | MIX - Procedure auxiliary variable | +| `gSP_EV57` | `Bool` | `%M1309.7` | MIX - Procedure auxiliary variable | +| `gSP_EV58` | `Bool` | `%M1310.0` | MIX - Procedure auxiliary variable | +| `gSP_EV75` | `Bool` | `%M1310.1` | MIX - Procedure auxiliary variable | +| `gSP_EV76` | `Bool` | `%M1310.2` | MIX - Procedure auxiliary variable | +| `gSP_EV77` | `Bool` | `%M1310.3` | MIX - Procedure auxiliary variable | +| `gSP_EV78` | `Bool` | `%M1310.4` | MIX - Procedure auxiliary variable | +| `gSP_EV79` | `Bool` | `%M1310.5` | MIX - Procedure auxiliary variable | +| `gSP_EV83` | `Bool` | `%M1310.6` | MIX - Procedure auxiliary variable | +| `gSP_FillerProdLoad` | `Bool` | `%M1311.1` | MIX - Procedure auxiliary variable | +| `gSP_FillerProdSend` | `Bool` | `%M1311.2` | MIX - Procedure auxiliary variable | +| `gSP_HotWaterRequest` | `Bool` | `%M1311.3` | MIX - Procedure auxiliary variable | +| `gSP_LimitCO2PressValve` | `Bool` | `%M1311.4` | MIX - Procedure auxiliary variable | +| `gSP_PID_Head_Enable` | `Bool` | `%M1311.5` | MIX - Procedure auxiliary variable | +| `gSP_PID_Head_Manual` | `Bool` | `%M1311.6` | MIX - Procedure auxiliary variable | +| `gSP_PPM303` | `Bool` | `%M1311.7` | MIX - Procedure auxiliary variable | +| `gSP_PPN301` | `Bool` | `%M1312.0` | MIX - Procedure auxiliary variable | +| `gSP_PPN304` | `Bool` | `%M1312.1` | MIX - Procedure auxiliary variable | +| `gSP_PPN305` | `Bool` | `%M1312.2` | MIX - Procedure auxiliary variable | +| `gSP_PPP302` | `Bool` | `%M1312.3` | MIX - Procedure auxiliary variable | +| `gSP_RVN301` | `Bool` | `%M1312.4` | MIX - Procedure auxiliary variable | +| `gSP_RVN301_1` | `Bool` | `%M1312.5` | MIX - Procedure auxiliary variable | +| `gSP_RVN302` | `Bool` | `%M1312.6` | MIX - Procedure auxiliary variable | +| `gSP_RVN302_1` | `Bool` | `%M1312.7` | MIX - Procedure auxiliary variable | +| `gSP_RVP303` | `Bool` | `%M1313.0` | MIX - Procedure auxiliary variable | +| `gSP_SendSodaRequest` | `Bool` | `%M1313.1` | MIX - Procedure auxiliary variable | +| `gSP_Spare13080` | `Bool` | `%M1308.0` | MIX - Procedure auxiliary variable | +| `gSP_SyrRoomPump` | `Bool` | `%M1313.2` | MIX - Procedure auxiliary variable | +| `gStillWaterByPassEn` | `Bool` | `%M1715.1` | MIX - Water Bypass Enable | +| `gStopBlendCarboError` | `Bool` | `%M1714.6` | MIX - RUN CTRL - Water Speed to stop Blend error and Carbo error | +| `gSyrBrixOutSpec_Fault` | `Bool` | `%M1817.5` | MIX - Supplies Alarm | +| `gSyrRoomPump_Fault` | `Bool` | `%M1817.4` | MIX - Supplies Alarm | +| `gSyrTank_HighLvl_Fault` | `Bool` | `%M1816.5` | MIX - Syrup Tank High Level Fault - Fault Alarm | +| `gSyrTank_Loading` | `Bool` | `%M1723.5` | MIX - Syrup Tank Loading | +| `gSyrTank_LowLvl_Fault` | `Bool` | `%M1817.3` | MIX - Syrup Tank Low Level Fault - Supplies Alarm | +| `gSyrupDensOutSpec_Fault` | `Bool` | `%M1817.6` | MIX - Supplies Alarm | +| `gSyrupLineNotSelected` | `Bool` | `%M1820.2` | MIX - Operator Alarm | +| `gSyrupMeterOK` | `Bool` | `%M2001.3` | MIX - mPDS_SYR_PA_Control | +| `gSyrupQcoRinse` | `Bool` | `%M1743.1` | MIX - Syrup Line QCO Rinse | +| `gSyrupRoomEn` | `Bool` | `%M1714.3` | MIX - Syrup Room Enable | +| `gSystem_Time` | `Time` | `%MD1990` | MIX - System time | +| `gTrackFillerSpeed` | `Bool` | `%M1723.3` | MIX - Track Filler Speed | +| `gTTM306_H2O_TempTooHigh` | `Bool` | `%M1817.7` | MIX - Water Temperature Too High - Supplies Alarm | +| `gTTM306_PRD_TempTooHigh` | `Bool` | `%M1818.0` | MIX - Product Temperature Too High - Supplies Alarm | +| `gUVLampHighTemperature` | `Bool` | `%M1715.6` | MIX - LAmp High Temperature | +| `gVacuumTimeOut_Fault` | `Bool` | `%M1812.3` | MIX - Fault Alarm | +| `gWaitLevToHold_TankPress` | `Bool` | `%M1738.6` | MIX - PRESSURE - | +| `gWarningHorn` | `Bool` | `%M1713.7` | MIX - SAFETIES | +| `gWaterChillerEn` | `Bool` | `%M1714.2` | MIX - Water Chiller Enable | +| `gWorkshop_CIP_Signals` | `Bool` | `%M1716.5` | Workshop Test CIP Signals (On Signals Simulation) | +| `gWorkshop_Co2_Presence` | `Bool` | `%M1716.7` | Workshop Test With CO2 | +| `gWorkshop_Filler_Signals_SIM` | `Bool` | `%M1716.6` | Workshop Test Filler Signals (On Signals Simulation) | +| `gWorkshop_Syrup_Test` | `Bool` | `%M1716.4` | Workshop Test with Syrup | +| `gWorkshopTest` | `Bool` | `%M1714.4` | MIX - Use during Workshop test - BF - | +| `H2O_Counter_Tot` | `Real` | `%MD144` | H2O_Counter_Tot | +| `HMI_PID.RVM319.Error` | `Real` | `%MD2000` | MIX - RVM319 Error | +| `M100.0` | `Bool` | `%M100.0` | QCO Started | +| `M100.1` | `Bool` | `%M100.1` | Spare | +| `M100.2` | `Bool` | `%M100.2` | QCO Rinse completed | +| `M100.3` | `Bool` | `%M100.3` | QCO Filler flushing FP | +| `M100.4` | `Bool` | `%M100.4` | Spare | +| `M100.5` | `Bool` | `%M100.5` | Spare | +| `M100.6` | `Bool` | `%M100.6` | QCO Ended | +| `M100.7` | `Bool` | `%M100.7` | QCO | +| `M110.0` | `Bool` | `%M110.0` | DEOX Recovery completed | +| `M18100` | `Bool` | `%M1810.0` | MIX - Fault Alarm | +| `M18101` | `Bool` | `%M1810.1` | MIX - Fault Alarm | +| `M18102` | `Bool` | `%M1810.2` | MIX - Fault Alarm | +| `M18103` | `Bool` | `%M1810.3` | MIX - Fault Alarm | +| `M18104` | `Bool` | `%M1810.4` | MIX - Fault Alarm | +| `gAmmoniaCompressor_Fault` | `Bool` | `%M1818.4` | MIX - Ammonia Compressor Fault - Supplies Alarm | +| `M18185` | `Bool` | `%M1818.5` | MIX - Supplies Alarm | +| `M18186` | `Bool` | `%M1818.6` | MIX - Supplies Alarm | +| `M18187` | `Bool` | `%M1818.7` | MIX - Supplies Alarm | +| `M18190` | `Bool` | `%M1819.0` | MIX - Supplies Alarm | +| `M18191` | `Bool` | `%M1819.1` | MIX - Supplies Alarm | +| `M18192` | `Bool` | `%M1819.2` | MIX - Supplies Alarm | +| `M18193` | `Bool` | `%M1819.3` | MIX - Supplies Alarm | +| `M18194` | `Bool` | `%M1819.4` | MIX - Supplies Alarm | +| `M18195` | `Bool` | `%M1819.5` | MIX - Supplies Alarm | +| `M18196` | `Bool` | `%M1819.6` | MIX - Supplies Alarm | +| `M18197` | `Bool` | `%M1819.7` | MIX - Supplies Alarm | +| `M18203` | `Bool` | `%M1820.3` | MIX - Operator Alarm | +| `M18204` | `Bool` | `%M1820.4` | MIX - Operator Alarm | +| `M18205` | `Bool` | `%M1820.5` | MIX - Operator Alarm | +| `M18206` | `Bool` | `%M1820.6` | MIX - Operator Alarm | +| `M18207` | `Bool` | `%M1820.7` | MIX - Operator Alarm | +| `M18210` | `Bool` | `%M1821.0` | MIX - Operator Alarm | +| `M18211` | `Bool` | `%M1821.1` | MIX - Operator Alarm | +| `M18212` | `Bool` | `%M1821.2` | MIX - Operator Alarm | +| `M18213` | `Bool` | `%M1821.3` | MIX - Operator Alarm | +| `M18214` | `Bool` | `%M1821.4` | MIX - Operator Alarm | +| `M18215` | `Bool` | `%M1821.5` | MIX - Operator Alarm | +| `M18216` | `Bool` | `%M1821.6` | MIX - Operator Alarm | +| `M18217` | `Bool` | `%M1821.7` | MIX - Operator Alarm | +| `M18700` | `Bool` | `%M1870.0` | MIX - Profibus network Fault - Node01 | +| `M18701` | `Bool` | `%M1870.1` | MIX - Profibus network Fault - Node02 | +| `M18702` | `Bool` | `%M1870.2` | MIX - Profibus network Fault - Node03 | +| `M18703` | `Bool` | `%M1870.3` | MIX - Profibus network Fault - Node04 | +| `M18704` | `Bool` | `%M1870.4` | MIX - Profibus network Fault - Node05 | +| `M18705` | `Bool` | `%M1870.5` | MIX - Profibus network Fault - Node06 | +| `M18706` | `Bool` | `%M1870.6` | MIX - Profibus network Fault - Node07 | +| `M18707` | `Bool` | `%M1870.7` | MIX - Profibus network Fault - Node08 | +| `M18710` | `Bool` | `%M1871.0` | MIX - Profibus network Fault - Node09 | +| `M18711` | `Bool` | `%M1871.1` | MIX - Profibus network Fault - Node10 | +| `M18712` | `Bool` | `%M1871.2` | MIX - Profibus network Fault - Node11 | +| `M18713` | `Bool` | `%M1871.3` | MIX - Profibus network Fault - Node12 | +| `M18714` | `Bool` | `%M1871.4` | MIX - Profibus network Fault - Node13 | +| `M18715` | `Bool` | `%M1871.5` | MIX - Profibus network Fault - Node14 | +| `M18716` | `Bool` | `%M1871.6` | MIX - Profibus network Fault - Node15 | +| `M18717` | `Bool` | `%M1871.7` | MIX - Profibus network Fault - Node16 | +| `M18720` | `Bool` | `%M1872.0` | MIX - Profibus network Fault - Node17 | +| `M18721` | `Bool` | `%M1872.1` | MIX - Profibus network Fault - Node18 | +| `M18722` | `Bool` | `%M1872.2` | MIX - Profibus network Fault - Node19 | +| `M18723` | `Bool` | `%M1872.3` | MIX - Profibus network Fault - Node20 | +| `M18724` | `Bool` | `%M1872.4` | MIX - Profibus network Fault - Node21 | +| `M18725` | `Bool` | `%M1872.5` | MIX - Profibus network Fault - Node22 | +| `M18726` | `Bool` | `%M1872.6` | MIX - Profibus network Fault - Node23 | +| `M18727` | `Bool` | `%M1872.7` | MIX - Profibus network Fault - Node24 | +| `M18730` | `Bool` | `%M1873.0` | MIX - Profibus network Fault - Node25 | +| `M18731` | `Bool` | `%M1873.1` | MIX - Profibus network Fault - Node26 | +| `M18732` | `Bool` | `%M1873.2` | MIX - Profibus network Fault - Node27 | +| `M18733` | `Bool` | `%M1873.3` | MIX - Profibus network Fault - Node28 | +| `M18734` | `Bool` | `%M1873.4` | MIX - Profibus network Fault - Node29 | +| `M18735` | `Bool` | `%M1873.5` | MIX - Profibus network Fault - Node30 | +| `M18736` | `Bool` | `%M1873.6` | MIX - Profibus network Fault - Node31 | +| `M18737` | `Bool` | `%M1873.7` | MIX - Profibus network Fault - Node32 | +| `M18740` | `Bool` | `%M1874.0` | MIX - Profibus network Fault - Node33 | +| `M18741` | `Bool` | `%M1874.1` | MIX - Profibus network Fault - Node34 | +| `M18742` | `Bool` | `%M1874.2` | MIX - Profibus network Fault - Node35 | +| `M18743` | `Bool` | `%M1874.3` | MIX - Profibus network Fault - Node36 | +| `M18744` | `Bool` | `%M1874.4` | MIX - Profibus network Fault - Node37 | +| `M18745` | `Bool` | `%M1874.5` | MIX - Profibus network Fault - Node38 | +| `M18746` | `Bool` | `%M1874.6` | MIX - Profibus network Fault - Node39 | +| `M18747` | `Bool` | `%M1874.7` | MIX - Profibus network Fault - Node40 | +| `M18750` | `Bool` | `%M1875.0` | MIX - Profibus network Fault - Node41 | +| `M18751` | `Bool` | `%M1875.1` | MIX - Profibus network Fault - Node42 | +| `M18752` | `Bool` | `%M1875.2` | MIX - Profibus network Fault - Node43 | +| `M18753` | `Bool` | `%M1875.3` | MIX - Profibus network Fault - Node44 | +| `M18754` | `Bool` | `%M1875.4` | MIX - Profibus network Fault - Node45 | +| `M18755` | `Bool` | `%M1875.5` | MIX - Profibus network Fault - Node46 | +| `M18756` | `Bool` | `%M1875.6` | MIX - Profibus network Fault - Node47 | +| `M18757` | `Bool` | `%M1875.7` | MIX - Profibus network Fault - Node48 | +| `M18760` | `Bool` | `%M1876.0` | MIX - Profibus network Fault - Node49 | +| `M18761` | `Bool` | `%M1876.1` | MIX - Profibus network Fault - Node50 | +| `M18762` | `Bool` | `%M1876.2` | MIX - Profibus network Fault - Node51 | +| `M18763` | `Bool` | `%M1876.3` | MIX - Profibus network Fault - Node52 | +| `M18764` | `Bool` | `%M1876.4` | MIX - Profibus network Fault - Node53 | +| `M18765` | `Bool` | `%M1876.5` | MIX - Profibus network Fault - Node54 | +| `M18766` | `Bool` | `%M1876.6` | MIX - Profibus network Fault - Node55 | +| `M18767` | `Bool` | `%M1876.7` | MIX - Profibus network Fault - Node56 | +| `M18770` | `Bool` | `%M1877.0` | MIX - Profibus network Fault - Node57 | +| `M18771` | `Bool` | `%M1877.1` | MIX - Profibus network Fault - Node58 | +| `M18772` | `Bool` | `%M1877.2` | MIX - Profibus network Fault - Node59 | +| `M18773` | `Bool` | `%M1877.3` | MIX - Profibus network Fault - Node60 | +| `M18774` | `Bool` | `%M1877.4` | MIX - Profibus network Fault - Node61 | +| `M18775` | `Bool` | `%M1877.5` | MIX - Profibus network Fault - Node62 | +| `M18776` | `Bool` | `%M1877.6` | MIX - Profibus network Fault - Node63 | +| `M18777` | `Bool` | `%M1877.7` | MIX - Profibus network Fault - Node64 | +| `M18780` | `Bool` | `%M1878.0` | MIX - Profibus network Fault - Node65 | +| `M18781` | `Bool` | `%M1878.1` | MIX - Profibus network Fault - Node66 | +| `M18782` | `Bool` | `%M1878.2` | MIX - Profibus network Fault - Node67 | +| `M18783` | `Bool` | `%M1878.3` | MIX - Profibus network Fault - Node68 | +| `M18784` | `Bool` | `%M1878.4` | MIX - Profibus network Fault - Node69 | +| `M18785` | `Bool` | `%M1878.5` | MIX - Profibus network Fault - Node70 | +| `M18786` | `Bool` | `%M1878.6` | MIX - Profibus network Fault - Node71 | +| `M18787` | `Bool` | `%M1878.7` | MIX - Profibus network Fault - Node72 | +| `M18790` | `Bool` | `%M1879.0` | MIX - Profibus network Fault - Node73 | +| `M18791` | `Bool` | `%M1879.1` | MIX - Profibus network Fault - Node74 | +| `M18792` | `Bool` | `%M1879.2` | MIX - Profibus network Fault - Node75 | +| `M18793` | `Bool` | `%M1879.3` | MIX - Profibus network Fault - Node76 | +| `M18794` | `Bool` | `%M1879.4` | MIX - Profibus network Fault - Node77 | +| `M18795` | `Bool` | `%M1879.5` | MIX - Profibus network Fault - Node78 | +| `M18796` | `Bool` | `%M1879.6` | MIX - Profibus network Fault - Node79 | +| `M18797` | `Bool` | `%M1879.7` | MIX - Profibus network Fault - Node80 | +| `M18800` | `Bool` | `%M1880.0` | MIX - Profibus network Fault - Node81 | +| `M18801` | `Bool` | `%M1880.1` | MIX - Profibus network Fault - Node82 | +| `M18802` | `Bool` | `%M1880.2` | MIX - Profibus network Fault - Node83 | +| `M18803` | `Bool` | `%M1880.3` | MIX - Profibus network Fault - Node84 | +| `M18804` | `Bool` | `%M1880.4` | MIX - Profibus network Fault - Node85 | +| `M18805` | `Bool` | `%M1880.5` | MIX - Profibus network Fault - Node86 | +| `M18806` | `Bool` | `%M1880.6` | MIX - Profibus network Fault - Node87 | +| `M18807` | `Bool` | `%M1880.7` | MIX - Profibus network Fault - Node88 | +| `M18810` | `Bool` | `%M1881.0` | MIX - Profibus network Fault - Node89 | +| `M18811` | `Bool` | `%M1881.1` | MIX - Profibus network Fault - Node90 | +| `M18812` | `Bool` | `%M1881.2` | MIX - Profibus network Fault - Node91 | +| `M18813` | `Bool` | `%M1881.3` | MIX - Profibus network Fault - Node92 | +| `M18814` | `Bool` | `%M1881.4` | MIX - Profibus network Fault - Node93 | +| `M18815` | `Bool` | `%M1881.5` | MIX - Profibus network Fault - Node94 | +| `M18816` | `Bool` | `%M1881.6` | MIX - Profibus network Fault - Node95 | +| `M18817` | `Bool` | `%M1881.7` | MIX - Profibus network Fault - Node96 | +| `M18820` | `Bool` | `%M1882.0` | MIX - Profibus network Fault - Node97 | +| `M18821` | `Bool` | `%M1882.1` | MIX - Profibus network Fault - Node98 | +| `M18822` | `Bool` | `%M1882.2` | MIX - Profibus network Fault - Node99 | +| `M18823` | `Bool` | `%M1882.3` | MIX - Profibus network Fault - Node100 | +| `M18824` | `Bool` | `%M1882.4` | MIX - Profibus network Fault - Node101 | +| `M18825` | `Bool` | `%M1882.5` | MIX - Profibus network Fault - Node102 | +| `M18826` | `Bool` | `%M1882.6` | MIX - Profibus network Fault - Node103 | +| `M18827` | `Bool` | `%M1882.7` | MIX - Profibus network Fault - Node104 | +| `M18830` | `Bool` | `%M1883.0` | MIX - Profibus network Fault - Node105 | +| `M18831` | `Bool` | `%M1883.1` | MIX - Profibus network Fault - Node106 | +| `M18832` | `Bool` | `%M1883.2` | MIX - Profibus network Fault - Node107 | +| `M18833` | `Bool` | `%M1883.3` | MIX - Profibus network Fault - Node108 | +| `M18834` | `Bool` | `%M1883.4` | MIX - Profibus network Fault - Node109 | +| `M18835` | `Bool` | `%M1883.5` | MIX - Profibus network Fault - Node110 | +| `M18836` | `Bool` | `%M1883.6` | MIX - Profibus network Fault - Node111 | +| `M18837` | `Bool` | `%M1883.7` | MIX - Profibus network Fault - Node112 | +| `M18840` | `Bool` | `%M1884.0` | MIX - Profibus network Fault - Node113 | +| `M18841` | `Bool` | `%M1884.1` | MIX - Profibus network Fault - Node114 | +| `M18842` | `Bool` | `%M1884.2` | MIX - Profibus network Fault - Node115 | +| `M18843` | `Bool` | `%M1884.3` | MIX - Profibus network Fault - Node116 | +| `M18844` | `Bool` | `%M1884.4` | MIX - Profibus network Fault - Node117 | +| `M18845` | `Bool` | `%M1884.5` | MIX - Profibus network Fault - Node118 | +| `M18846` | `Bool` | `%M1884.6` | MIX - Profibus network Fault - Node119 | +| `M18847` | `Bool` | `%M1884.7` | MIX - Profibus network Fault - Node120 | +| `M18850` | `Bool` | `%M1885.0` | MIX - Profibus network Fault - Node121 | +| `M18851` | `Bool` | `%M1885.1` | MIX - Profibus network Fault - Node122 | +| `M18852` | `Bool` | `%M1885.2` | MIX - Profibus network Fault - Node123 | +| `M18853` | `Bool` | `%M1885.3` | MIX - Profibus network Fault - Node124 | +| `M18854` | `Bool` | `%M1885.4` | MIX - Profibus network Fault - Node125 | +| `M18855` | `Bool` | `%M1885.5` | MIX - Profibus network Fault - Node126 | +| `M18856` | `Bool` | `%M1885.6` | MIX - Profibus network Fault - Node127 | +| `M18857` | `Bool` | `%M1885.7` | MIX - Profibus network Fault - Node128 | +| `M19000` | `Bool` | `%M1900.0` | MIX - EmergencyPressONS | +| `M19001` | `Bool` | `%M1900.1` | MIX - Prod FP | +| `M19002` | `Bool` | `%M1900.2` | MIX - Rinse FP | +| `M19003` | `Bool` | `%M1900.3` | MIX - CIP FP | +| `M19007` | `Bool` | `%M1900.7` | MIX - Start FP | +| `M19010` | `Bool` | `%M1901.0` | MIX - StartPump FP | +| `M19011` | `Bool` | `%M1901.1` | MIX - All Auto FP | +| `M19012` | `Bool` | `%M1901.2` | MIX - 1Min FP | +| `M19013` | `Bool` | `%M1901.3` | MIX - Stop FP | +| `M19014` | `Bool` | `%M1901.4` | MIX - ColdReq FP | +| `M19015` | `Bool` | `%M1901.5` | MIX - WarmReq FP | +| `M19016` | `Bool` | `%M1901.6` | MIX - ColdDone FP | +| `M19017` | `Bool` | `%M1901.7` | MIX - WarmDone FP | +| `M19020` | `Bool` | `%M1902.0` | MIX - FillerRinseDone FP | +| `M19021` | `Bool` | `%M1902.1` | MIX - RinseDone FP | +| `M19022` | `Bool` | `%M1902.2` | MIX - CIPChange FP | +| `M19023` | `Bool` | `%M1902.3` | MIX - RinseRunning FP | +| `M19024` | `Bool` | `%M1902.4` | MIX - PressREQ FP | +| `M19025` | `Bool` | `%M1902.5` | MIX - F1_StartStop_Command FP | +| `M19026` | `Bool` | `%M1902.6` | MIX - PressLatch FP | +| `M19027` | `Bool` | `%M1902.7` | MIX - ProdBrixHigh FP | +| `M19030` | `Bool` | `%M1903.0` | MIX - ProdBrixLow FP | +| `M19031` | `Bool` | `%M1903.1` | MIX - ProdCO2High FP | +| `M19032` | `Bool` | `%M1903.2` | MIX - ProdCO2Low FP | +| `M19033` | `Bool` | `%M1903.3` | MIX - WaterHighTemp FP | +| `M19034` | `Bool` | `%M1903.4` | MIX - ProdHighTemp FP | +| `M19060` | `Bool` | `%M1906.0` | MIX - CIPTotalDrainREQ FP | +| `M19061` | `Bool` | `%M1906.1` | MIX - CIPDrainEnd FP | +| `M19062` | `Bool` | `%M1906.2` | MIX - ProdTankFloodREQ FP | +| `M19063` | `Bool` | `%M1906.3` | MIX - SyrTankFloodREQ FP | +| `M19064` | `Bool` | `%M1906.4` | MIX - DeairTankFloodREQ FP | +| `M19074` | `Bool` | `%M1907.4` | MIX - FP ****** | +| `M19075` | `Bool` | `%M1907.5` | MIX - FP ****** | +| `M19076` | `Bool` | `%M1907.6` | MIX - Product tank Drain Manual Reset FP | +| `M19077` | `Bool` | `%M1907.7` | MIX - Product tank Drain Manual Reset ONS | +| `M19080` | `Bool` | `%M1908.0` | MIX - Totalize FN | +| `M19083` | `Bool` | `%M1908.3` | MIX - Load Next Recipe ONS | +| `M19084` | `Bool` | `%M1908.4` | MIX - Load Next Recipe FP | +| `M19086` | `Bool` | `%M1908.6` | MIX - FP ****** | +| `M19091` | `Bool` | `%M1909.1` | MIX - FP ****** | +| `M19094` | `Bool` | `%M1909.4` | MIX - FP ****** | +| `M19095` | `Bool` | `%M1909.5` | MIX - FP ****** | +| `M19100` | `Bool` | `%M1910.0` | MIX - Interlocking Net : SYRUP Room Communication Error | +| `M19101` | `Bool` | `%M1910.1` | MIX - Interlocking Net : CIP Communication Error | +| `M19102` | `Bool` | `%M1910.2` | MIX - Interlocking Net : PAST Communication Error | +| `Flr_ComunicationFault` | `Bool` | `%M1910.3` | MIX - Interlocking Net : FILLER Communication Error | +| `M19104` | `Bool` | `%M1910.4` | MIX - Interlocking Net : PRODUCT Room Communication Error | +| `M19105` | `Bool` | `%M1910.5` | MIX - Interlocking Net : XX Communication Error | +| `M19106` | `Bool` | `%M1910.6` | MIX - Interlocking Net : XX Communication Error | +| `M19107` | `Bool` | `%M1910.7` | MIX - Interlocking Net : XX Communication Error | +| `M19110` | `Bool` | `%M1911.0` | MIX - | +| `M19111` | `Bool` | `%M1911.1` | MIX - | +| `M19112` | `Bool` | `%M1911.2` | MIX - | +| `M19113` | `Bool` | `%M1911.3` | MIX - | +| `M19114` | `Bool` | `%M1911.4` | MIX - | +| `M19115` | `Bool` | `%M1911.5` | MIX - | +| `M19116` | `Bool` | `%M1911.6` | MIX - Interlocking Net : General Communication Error | +| `M19117` | `Bool` | `%M1911.7` | MIX - | +| `M19120` | `Bool` | `%M1920.0` | MIX - Valves Global Ssfety | +| `M19150` | `Bool` | `%M1915.0` | MIX - FP ****** | +| `M19151` | `Bool` | `%M1915.1` | MIX - FP ****** | +| `M19152` | `Bool` | `%M1915.2` | MIX - FP ****** | +| `M19153` | `Bool` | `%M1915.3` | MIX - FP ****** | +| `M19154` | `Bool` | `%M1915.4` | MIX - | +| `M19155` | `Bool` | `%M1915.5` | MIX - | +| `M19156` | `Bool` | `%M1915.6` | Setting N2 Recipe | +| `M19157` | `Bool` | `%M1915.7` | Setting Air Sterile Recipe | +| `M19504` | `Bool` | `%M1950.4` | MIX - | +| `M19505` | `Bool` | `%M1950.5` | MIX - | +| `M19506` | `Bool` | `%M1950.6` | MIX - | +| `M19507` | `Bool` | `%M1950.7` | MIX - | +| `M19510` | `Bool` | `%M1951.0` | MIX - I/O Point Fault Memory | +| `M19511` | `Bool` | `%M1951.1` | MIX - Loss Of Rack Fault Memory | +| `M19512` | `Bool` | `%M1951.2` | MIX - Complete Restart Memory | +| `M19513` | `Bool` | `%M1951.3` | MIX - Profibus diag "CHECK_ACTIVE" | +| `M19514` | `Bool` | `%M1951.4` | MIX - Profibus diag "HMI RESET - CHECK_ACTIVE" | +| `M19515` | `Bool` | `%M1951.5` | MIX - Profibus diag "HMI SINGLE DIAG REQUEST" | +| `M19517` | `Bool` | `%M1951.7` | MIX - | +| `M20000` | `Bool` | `%M2000.0` | MIX - Stop_SR | +| `mAlarmHornReset` | `Bool` | `%M1715.2` | MIX - SAFETIES | +| `mAuxiliaryOn` | `Bool` | `%M130.0` | Auxiliary On | +| `MB101` | `Byte` | `%MB101` | QCO Database Pointer | +| `mBaialage_Request` | `Bool` | `%M1908.2` | MIX - Baialage Request | +| `mBaialageReqONS` | `Bool` | `%M1908.1` | MIX - Baialage Request FP | +| `mBalaiageDoneONS` | `Bool` | `%M1908.5` | MIX - FP ****** | +| `mBlendErrorRecTmr.Q` | `Bool` | `%M2010.2` | MIX - BlenderPID_BlendingFault | +| `mCarboErrorRecTmr.Q` | `Bool` | `%M2010.3` | MIX - BlenderPID_BlendingFault | +| `mCIP_CompletedONS` | `Bool` | `%M1900.4` | MIX - CIP MAIN | +| `mClock_ONS` | `Bool` | `%M1903.7` | MIX - CIPLocal_ExecSimpleCIP | +| `mCO2TD` | `Real` | `%MD2016` | MIX - CIp Prod Flow | +| `mCO2Td1Ons` | `Bool` | `%M1725.5` | | +| `mCO2TdOns` | `Bool` | `%M1725.4` | | +| `MD1870` | `DWord` | `%MD1870` | MIX - Profibus network Fault array 1 | +| `MD1874` | `DWord` | `%MD1874` | MIX - Profibus network Fault array 2 | +| `MD1878` | `DWord` | `%MD1878` | MIX - Profibus network Fault array 3 | +| `MD1882` | `DWord` | `%MD1882` | MIX - Profibus network Fault array 4 | +| `mDeairTank_HighLvlONS` | `Bool` | `%M1909.0` | MIX - High deair level fault FP | +| `mFillerFirstLoadTimeOut` | `Bool` | `%M2000.6` | MIX - BlendFill StartUp | +| `mFillerProdLoadedInit` | `Real` | `%MD2004` | MIX - BlendFill StartUp | +| `mFirstProdBlendErrEn.Q` | `Bool` | `%M2010.1` | MIX - BlenderPID_BlendingFault | +| `mGasInjectionPressNotOK` | `Bool` | `%M1818.3` | MIX - Injection Gas Pressure not ok | +| `mInizialize_ONS` | `Bool` | `%M1904.0` | MIX - CIPLocal_ExecSimpleCIP | +| `mONS` | `Bool` | `%M1900.6` | MIX - CIP Local | +| `mONS2` | `Bool` | `%M1907.2` | MIX - CIP Local | +| `mPAMaselli_RecipeFTRIG` | `Bool` | `%M1909.7` | MIX - mPAMaselli_RecipeFTRIG | +| `mPAMaselli_RecipeRTRIG` | `Bool` | `%M1909.6` | MIX - mPAMaselli_RecipeRTRIG | +| `mPDS_PA_OutDigitByte` | `Byte` | `%MB1793` | MIX - mPDS_PA_Data Cyclical Output Data | +| `mPDS_PA_OutDigitByteDI1` | `Bool` | `%M1793.0` | Freeze Meter | +| `mPDS_PA_OutDigitByteDI1E` | `Bool` | `%M1793.4` | Freeze Meter Enable | +| `mPDS_PA_OutDigitByteDI2` | `Bool` | `%M1793.1` | CARBO Stop | +| `mPDS_PA_OutDigitByteDI2E` | `Bool` | `%M1793.5` | CARBO Stop Enable | +| `mPDS_PA_OutDigitByteDI3` | `Bool` | `%M1793.2` | MIX - Antoon Paar Control Bit DI3 | +| `mPDS_PA_OutDigitByteDI3E` | `Bool` | `%M1793.6` | MIX - Antoon Paar Enable Control Bit DI3 | +| `mPDS_PA_OutDigitByteDI4` | `Bool` | `%M1793.3` | MIX - Antoon Paar Control Bit DI4 | +| `mPDS_PA_OutDigitByteDI4E` | `Bool` | `%M1793.7` | MIX - Antoon Paar Enable Control Bit DI4 | +| `mPID_RMM301_Int` | `Real` | `%MD1970` | MIX - PID_Water_Integral | +| `mPID_RMM303_Int` | `Real` | `%MD1978` | MIX - PID_CO2_Integral | +| `mPID_RMM304_Int` | `Real` | `%MD1926` | MIX - PID_GAS2_Integral | +| `mPID_RMP302_Int` | `Real` | `%MD1974` | MIX - PID_Syrup_Integral | +| `mPID_RVN302_Int` | `Real` | `%MD1986` | MIX - PID_RVN302_Level_Integral | +| `mPID_RVP303_Int` | `Real` | `%MD1982` | MIX - PID_Syrup_Level_Integral | +| `mPPM303RampEndFreq` | `Real` | `%MD1744` | PPM303 end ramp frequency | +| `mPPM303RampFreq` | `Real` | `%MD1726` | PPM303 ramp freq aux | +| `mPPM303RampSlewMax` | `Real` | `%MD1730` | PPM303 ramp max slew | +| `mProdTankPressCO2_N2` | `Bool` | `%M1700.2` | Prod Tank Press CO2+N2 | +| `mProdTankPressCO2_StAir` | `Bool` | `%M1700.1` | Prod Tank Press CO2+StAir | +| `mProdTankPressOnlyCO2` | `Bool` | `%M1700.0` | Prod Tank Press Only CO2 | +| `mRecipeCalculationONS` | `Bool` | `%M1921.1` | MIX - Save Syrup Level Integral ONS | +| `mRecipeChanged_ONS` | `Bool` | `%M1904.1` | MIX - CIPLocal_ExecSimpleCIP | +| `mRequestTP` | `Bool` | `%M1900.5` | MIX - CIP Local | +| `mRMM301_Int_Init` | `Bool` | `%M1920.3` | MIX - Save Syrup Level Integral FP | +| `mRMM301_Int_ONS` | `Bool` | `%M1920.4` | MIX - Save Syrup Level Integral ONS | +| `mRMM303_Int_Init` | `Bool` | `%M1920.7` | MIX - Save Syrup Level Integral FP | +| `mRMM303_Int_ONS` | `Bool` | `%M1921.0` | MIX - Save Syrup Level Integral ONS | +| `mRMM304_Int_Init` | `Bool` | `%M1921.4` | MIX - Save GAS 2 Flow Integral FP | +| `mRMM304_Int_ONS` | `Bool` | `%M1921.5` | MIX - Save GAS 2 Flow Integral ONS | +| `mRMP302_Int_Init` | `Bool` | `%M1920.5` | MIX - Save Syrup Level Integral FP | +| `mRMP302_Int_ONS` | `Bool` | `%M1920.6` | MIX - Save Syrup Level Integral ONS | +| `mRVN302_Int_Init` | `Bool` | `%M1921.2` | MIX - Save Deair Level Integral FP | +| `mRVN302_Int_ONS` | `Bool` | `%M1921.3` | MIX - Save Deair Level Integral ONS | +| `mRVP303_Int_Init` | `Bool` | `%M1920.1` | MIX - Save Syrup Level Integral FP | +| `mRVP303_Int_ONS` | `Bool` | `%M1920.2` | MIX - Save Syrup Level Integral ONS | +| `mSaveNumTank` | `Int` | `%MW1994` | MIX - mSaveNumTank | +| `mSaveRMM301_IntTON.Q` | `Bool` | `%M2010.4` | MIX - BlenderPIDCtrl_SaveInteg | +| `mSaveRMM303_IntTON.Q` | `Bool` | `%M2010.6` | MIX - BlenderPIDCtrl_SaveInteg | +| `mSaveRMM304_IntTON.Q` | `Bool` | `%M2011.2` | MIX - BlenderPIDCtrl_SaveInteg | +| `mSaveRMP302_IntTON.Q` | `Bool` | `%M2010.5` | MIX - BlenderPIDCtrl_SaveInteg | +| `mSaveRVN302_IntTON.Q` | `Bool` | `%M2011.1` | MIX - BlenderPIDCtrl_SaveInteg | +| `mSaveRVP303_IntTON.Q` | `Bool` | `%M2011.0` | MIX - BlenderPIDCtrl_SaveInteg | +| `mSpeedConstTmr.Q` | `Bool` | `%M2010.7` | MIX - BlenderPIDCtrl_SaveInteg | +| `mStepDown_ONS` | `Bool` | `%M1903.6` | MIX - CIPLocal_ExecSimpleCIP | +| `mSteppingDown` | `Bool` | `%M1680.1` | MIX - CIP Stepping Down | +| `mSteppingUp` | `Bool` | `%M1680.0` | MIX - CIP Stepping Up | +| `mStepUp_ONS` | `Bool` | `%M1903.5` | MIX - CIPLocal_ExecSimpleCIP | +| `mStopErrorsTimeOut.Q` | `Bool` | `%M2010.0` | MIX - BlenderPID__Main | +| `mSyrTank_HighLvlONS` | `Bool` | `%M1908.7` | MIX - High syrup level fault FP | +| `MW1968` | `Int` | `%MW1968` | MIX - OB35 Scan cycle count | +| `MW1996` | `Int` | `%MW1996` | MIX - Brix track - Sample Time Calc - Cycle Count | +| `MW1998` | `Int` | `%MW1998` | MIX - CO2 Track -Sample Time Calc - Cycle Count | +| `mWarningHornReset` | `Bool` | `%M1715.3` | MIX - SAFETIES | +| `mWritePAmPDS_RT` | `Bool` | `%M1909.2` | MIX - mWritePAmPDS_RT FP | +| `mWritePAmPDS_SYR_RT` | `Bool` | `%M1909.3` | MIX - mWritePAmPDS_SYR_RT FP | +| `P1_Pres_Edit_Recipe` | `Real` | `%MD2012` | MIX - Water pump pressure | +| `P1_Pressure` | `Real` | `%MD2008` | MIX - Water pump pressure | +| `PAmPDS_Aux_Real_IN` | `Real` | `%MD1752` | MIX - Aux Real Input | +| `PCM306_Fault` | `Bool` | `%M182.3` | PCM306 fault Memory | +| `PPM303_B00_ControlReady` | `Bool` | `%M1941.0` | MIX - FC_Status_Word | +| `PPM303_B00_RefValue_LSB` | `Bool` | `%M1943.0` | MIX - FC_Control_Word | +| `PPM303_B01_DriveReady` | `Bool` | `%M1941.1` | MIX - FC_Status_Word | +| `PPM303_B01_RefValue_MSB` | `Bool` | `%M1943.1` | MIX - FC_Control_Word | +| `PPM303_B02_Brake` | `Bool` | `%M1943.2` | MIX - FC_Control_Word | +| `PPM303_B02_Coasting` | `Bool` | `%M1941.2` | MIX - FC_Status_Word | +| `PPM303_B03_Coast` | `Bool` | `%M1943.3` | MIX - FC_Control_Word | +| `PPM303_B03_Trip` | `Bool` | `%M1941.3` | MIX - FC_Status_Word | +| `PPM303_B04_Error` | `Bool` | `%M1941.4` | MIX - FC_Status_Word | +| `PPM303_B04_QuickStop` | `Bool` | `%M1943.4` | MIX - FC_Control_Word | +| `PPM303_B05_HoldOutputFrq` | `Bool` | `%M1943.5` | MIX - FC_Control_Word | +| `PPM303_B05_Reserved` | `Bool` | `%M1941.5` | MIX - FC_Status_Word | +| `PPM303_B06_RampStop` | `Bool` | `%M1943.6` | MIX - FC_Control_Word | +| `PPM303_B06_Triplock` | `Bool` | `%M1941.6` | MIX - FC_Status_Word | +| `PPM303_B07_Reset` | `Bool` | `%M1943.7` | MIX - FC_Control_Word | +| `PPM303_B07_Warning` | `Bool` | `%M1941.7` | MIX - FC_Status_Word | +| `PPM303_B08_Jog` | `Bool` | `%M1942.0` | MIX - FC_Control_Word | +| `PPM303_B08_Speed_OK` | `Bool` | `%M1940.0` | MIX - FC_Status_Word | +| `PPM303_B09_BusControl` | `Bool` | `%M1940.1` | MIX - FC_Status_Word | +| `PPM303_B09_RampSelection` | `Bool` | `%M1942.1` | MIX - FC_Control_Word | +| `PPM303_B10_DataValid` | `Bool` | `%M1942.2` | MIX - FC_Control_Word | +| `PPM303_B10_FreqLimit_OK` | `Bool` | `%M1940.2` | MIX - FC_Status_Word | +| `PPM303_B11_InOperation` | `Bool` | `%M1940.3` | MIX - FC_Status_Word | +| `PPM303_B11_Relay01Active` | `Bool` | `%M1942.3` | MIX - FC_Control_Word | +| `PPM303_B12_Drive_OK` | `Bool` | `%M1940.4` | MIX - FC_Status_Word | +| `PPM303_B12_Relay04Active` | `Bool` | `%M1942.4` | MIX - FC_Control_Word | +| `PPM303_B13_SetUp_LSB` | `Bool` | `%M1942.5` | MIX - FC_Control_Word | +| `PPM303_B13_Voltage_OK` | `Bool` | `%M1940.5` | MIX - FC_Status_Word | +| `PPM303_B14_SetUp_MSB` | `Bool` | `%M1942.6` | MIX - FC_Control_Word | +| `PPM303_B14_Torque_OK` | `Bool` | `%M1940.6` | MIX - FC_Status_Word | +| `PPM303_B15_Reverse` | `Bool` | `%M1942.7` | MIX - FC_Control_Word | +| `PPM303_B15_Timer_OK` | `Bool` | `%M1940.7` | MIX - FC_Status_Word | +| `PPM303_FC_Control_Word` | `Word` | `%MW1942` | MIX - PPM303_ProductPump_CtrlWord_VFC_Ctrl | +| `PPM303_FC_Status_Word` | `Word` | `%MW1940` | MIX - PPM303_ProductPump_StatusWord_VFC_Ctrl | +| `PPM307_B00_RefValue_LSB` | `Bool` | `%M2143.0` | | +| `PPM307_B02_Brake` | `Bool` | `%M2143.2` | | +| `PPM307_B03_Coast` | `Bool` | `%M2143.3` | | +| `PPM307_B04_QuickStop` | `Bool` | `%M2143.4` | | +| `PPM307_B05_HoldOutputFrq` | `Bool` | `%M2143.5` | | +| `PPM307_B06_RampStop` | `Bool` | `%M2143.6` | | +| `PPM307_B07_Reset` | `Bool` | `%M2143.7` | | +| `PPM307_B09_RampSelection` | `Bool` | `%M2142.1` | | +| `PPM307_B10_DataValid` | `Bool` | `%M2142.2` | | +| `PPM307_FC_Control_Word` | `Word` | `%MW2142` | | +| `PPM307_FC_Status_Word` | `Word` | `%MW2140` | | +| `PPN301_B00_ControlReady` | `Bool` | `%M1933.0` | MIX - FC_Status_Word | +| `PPN301_B00_RefValue_LSB` | `Bool` | `%M1935.0` | MIX - FC_Control_Word | +| `PPN301_B01_DriveReady` | `Bool` | `%M1933.1` | MIX - FC_Status_Word | +| `PPN301_B01_RefValue_MSB` | `Bool` | `%M1935.1` | MIX - FC_Control_Word | +| `PPN301_B02_Brake` | `Bool` | `%M1935.2` | MIX - FC_Control_Word | +| `PPN301_B02_Coasting` | `Bool` | `%M1933.2` | MIX - FC_Status_Word | +| `PPN301_B03_Coast` | `Bool` | `%M1935.3` | MIX - FC_Control_Word | +| `PPN301_B03_Trip` | `Bool` | `%M1933.3` | MIX - FC_Status_Word | +| `PPN301_B04_Error` | `Bool` | `%M1933.4` | MIX - FC_Status_Word | +| `PPN301_B04_QuickStop` | `Bool` | `%M1935.4` | MIX - FC_Control_Word | +| `PPN301_B05_HoldOutputFrq` | `Bool` | `%M1935.5` | MIX - FC_Control_Word | +| `PPN301_B05_Reserved` | `Bool` | `%M1933.5` | MIX - FC_Status_Word | +| `PPN301_B06_RampStop` | `Bool` | `%M1935.6` | MIX - FC_Control_Word | +| `PPN301_B06_Triplock` | `Bool` | `%M1933.6` | MIX - FC_Status_Word | +| `PPN301_B07_Reset` | `Bool` | `%M1935.7` | MIX - FC_Control_Word | +| `PPN301_B07_Warning` | `Bool` | `%M1933.7` | MIX - FC_Status_Word | +| `PPN301_B08_Jog` | `Bool` | `%M1934.0` | MIX - FC_Control_Word | +| `PPN301_B08_Speed_OK` | `Bool` | `%M1932.0` | MIX - FC_Status_Word | +| `PPN301_B09_BusControl` | `Bool` | `%M1932.1` | MIX - FC_Status_Word | +| `PPN301_B09_RampSelection` | `Bool` | `%M1934.1` | MIX - FC_Control_Word | +| `PPN301_B10_DataValid` | `Bool` | `%M1934.2` | MIX - FC_Control_Word | +| `PPN301_B10_FreqLimit_OK` | `Bool` | `%M1932.2` | MIX - FC_Status_Word | +| `PPN301_B11_InOperation` | `Bool` | `%M1932.3` | MIX - FC_Status_Word | +| `PPN301_B11_Relay01Active` | `Bool` | `%M1934.3` | MIX - FC_Control_Word | +| `PPN301_B12_Drive_OK` | `Bool` | `%M1932.4` | MIX - FC_Status_Word | +| `PPN301_B12_Relay04Active` | `Bool` | `%M1934.4` | MIX - FC_Control_Word | +| `PPN301_B13_SetUp_LSB` | `Bool` | `%M1934.5` | MIX - FC_Control_Word | +| `PPN301_B13_Voltage_OK` | `Bool` | `%M1932.5` | MIX - FC_Status_Word | +| `PPN301_B14_SetUp_MSB` | `Bool` | `%M1934.6` | MIX - FC_Control_Word | +| `PPN301_B14_Torque_OK` | `Bool` | `%M1932.6` | MIX - FC_Status_Word | +| `PPN301_B15_Reverse` | `Bool` | `%M1934.7` | MIX - FC_Control_Word | +| `PPN301_B15_Timer_OK` | `Bool` | `%M1932.7` | MIX - FC_Status_Word | +| `PPN301_FC_Control_Word` | `Word` | `%MW1934` | MIX - PPN301_WaterPump_CtrlWord_VFC_Ctrl | +| `PPN301_FC_Status_Word` | `Word` | `%MW1932` | MIX - PPN301_WaterPump_StatusWord_VFC_Ctrl | +| `PPP302_B00_ControlReady` | `Bool` | `%M1937.0` | MIX - FC_Status_Word | +| `PPP302_B00_RefValue_LSB` | `Bool` | `%M1939.0` | MIX - FC_Control_Word | +| `PPP302_B01_DriveReady` | `Bool` | `%M1937.1` | MIX - FC_Status_Word | +| `PPP302_B01_RefValue_MSB` | `Bool` | `%M1939.1` | MIX - FC_Control_Word | +| `PPP302_B02_Brake` | `Bool` | `%M1939.2` | MIX - FC_Control_Word | +| `PPP302_B02_Coasting` | `Bool` | `%M1937.2` | MIX - FC_Status_Word | +| `PPP302_B03_Coast` | `Bool` | `%M1939.3` | MIX - FC_Control_Word | +| `PPP302_B03_Trip` | `Bool` | `%M1937.3` | MIX - FC_Status_Word | +| `PPP302_B04_Error` | `Bool` | `%M1937.4` | MIX - FC_Status_Word | +| `PPP302_B04_QuickStop` | `Bool` | `%M1939.4` | MIX - FC_Control_Word | +| `PPP302_B05_HoldOutputFrq` | `Bool` | `%M1939.5` | MIX - FC_Control_Word | +| `PPP302_B05_Reserved` | `Bool` | `%M1937.5` | MIX - FC_Status_Word | +| `PPP302_B06_RampStop` | `Bool` | `%M1939.6` | MIX - FC_Control_Word | +| `PPP302_B06_Triplock` | `Bool` | `%M1937.6` | MIX - FC_Status_Word | +| `PPP302_B07_Reset` | `Bool` | `%M1939.7` | MIX - FC_Control_Word | +| `PPP302_B07_Warning` | `Bool` | `%M1937.7` | MIX - FC_Status_Word | +| `PPP302_B08_Jog` | `Bool` | `%M1938.0` | MIX - FC_Control_Word | +| `PPP302_B08_Speed_OK` | `Bool` | `%M1936.0` | MIX - FC_Status_Word | +| `PPP302_B09_BusControl` | `Bool` | `%M1936.1` | MIX - FC_Status_Word | +| `PPP302_B09_RampSelection` | `Bool` | `%M1938.1` | MIX - FC_Control_Word | +| `PPP302_B10_DataValid` | `Bool` | `%M1938.2` | MIX - FC_Control_Word | +| `PPP302_B10_FreqLimit_OK` | `Bool` | `%M1936.2` | MIX - FC_Status_Word | +| `PPP302_B11_InOperation` | `Bool` | `%M1936.3` | MIX - FC_Status_Word | +| `PPP302_B11_Relay01Active` | `Bool` | `%M1938.3` | MIX - FC_Control_Word | +| `PPP302_B12_Drive_OK` | `Bool` | `%M1936.4` | MIX - FC_Status_Word | +| `PPP302_B12_Relay04Active` | `Bool` | `%M1938.4` | MIX - FC_Control_Word | +| `PPP302_B13_SetUp_LSB` | `Bool` | `%M1938.5` | MIX - FC_Control_Word | +| `PPP302_B13_Voltage_OK` | `Bool` | `%M1936.5` | MIX - FC_Status_Word | +| `PPP302_B14_SetUp_MSB` | `Bool` | `%M1938.6` | MIX - FC_Control_Word | +| `PPP302_B14_Torque_OK` | `Bool` | `%M1936.6` | MIX - FC_Status_Word | +| `PPP302_B15_Reverse` | `Bool` | `%M1938.7` | MIX - FC_Control_Word | +| `PPP302_B15_Timer_OK` | `Bool` | `%M1936.7` | MIX - FC_Status_Word | +| `PPP302_FC_Control_Word` | `Word` | `%MW1938` | MIX - PPP302_SyrupPump_CtrlWord_VFC_Ctrl | +| `PPP302_FC_Status_Word` | `Word` | `%MW1936` | MIX - PPP302_SyrupPump_StatusWord_VFC_Ctrl | +| `PRDRepComment` | `Int` | `%MW606` | PRODUCTION Report Comment | +| `PRDRepExtFaultPresent` | `Bool` | `%M604.7` | PRODUCTION Report External Fault Present | +| `PRDRepExtFaultPresentAux` | `Bool` | `%M604.6` | PRODUCTION Report External Fault Present Aux | +| `PRDRepFaultPresent` | `Bool` | `%M604.4` | PRODUCTION Report Fault Present | +| `PRDRepFaultPresentAux` | `Bool` | `%M604.5` | PRODUCTION Report Fault Present Aux | +| `PRDRepStarted` | `Bool` | `%M604.0` | PRODUCTION Report Started | +| `Press_Request` | `Bool` | `%M1904.4` | MIX - FP ****** | +| `ProdBrixRecoveryReq` | `Bool` | `%M1907.0` | MIX - FP ****** | +| `ProdPipeDrainReset` | `Bool` | `%M1905.3` | MIX - FP ****** | +| `ProdPipeRunOutReset` | `Bool` | `%M1904.5` | MIX - FP ****** | +| `ProdTankDrainReq` | `Bool` | `%M1905.4` | MIX - FP ****** | +| `ProdTankDrainReset` | `Bool` | `%M1905.5` | MIX - FP ****** | +| `ProdTankRunOutReq` | `Bool` | `%M1904.7` | MIX - FP ****** | +| `ProdTankRunOutReq_ONS` | `Bool` | `%M1904.2` | MIX - FP ****** | +| `ProdTankRunOutReset` | `Bool` | `%M1905.0` | MIX - FP ****** | +| `Reset Init ONS Prod Pump` | `Bool` | `%M1904.3` | MIX - FP Reset Init ONS Prod Pump | +| `SFM Profibus` | `Bool` | `%M1951.6` | MIX - Profibus network fault | +| `Syr_Counter_Tot` | `Real` | `%MD146` | Syr_Counter_Tot | +| `SyrAutoCorrBlink2Sec` | `Bool` | `%M1906.5` | MIX - FP******* | +| `SyrAutoCorrLatch` | `Bool` | `%M1905.7` | MIX - FP ****** | +| `SyrAutoCorrReq` | `Bool` | `%M1905.6` | MIX - FP ****** | +| `SyrupRunOutReset` | `Bool` | `%M1904.6` | MIX - FP ****** | +| `System_Byte` | `Byte` | `%MB1` | System Byte | +| `M106.0` | `Bool` | `%M106.0` | Recipe Write_REQ | +| `MB117` | `Byte` | `%MB117` | Run Out Amount Aux | +| `MB118` | `Byte` | `%MB118` | Product Temperature | +| `MB120` | `Byte` | `%MB120` | AuxRecCarbo - Product Carbonation | +| `MB122` | `Byte` | `%MB122` | Product Tank Pressure Aux | +| `MB600` | `Byte` | `%MB600` | CIP report Bits | +| `gP_AVM363` | `Bool` | `%M1417.4` | MIX - Procedure auxiliary variable | +| `MB604` | `Byte` | `%MB604` | Production report Bits | +| `PPM307_Scale_RetVal` | `Word` | `%MW2020` | | +| `mPDS_mem1` | `Byte` | `%MB1752` | Temporary Memory | +| `mPDS_mem2` | `Byte` | `%MB1753` | Temporary Memory | +| `mPDS_mem3` | `Byte` | `%MB1754` | Temporary Memory | +| `mPDS_mem4` | `Byte` | `%MB1755` | Temporary Memory | +| `MW116` | `Word` | `%MW116` | Run Out Amount Aux | +| `MB116` | `Byte` | `%MB116` | Run Out Amount Aux | +| `ColdRinseEn` | `Bool` | `%M200.1` | Cold Rinse Enable | +| `Time_250ms` | `Real` | `%MD1956` | MIX - 250ms Task (Blender Ctrl Main) | +| `Time_300ms` | `Real` | `%MD1960` | MIX - 300ms Task (PID) | +| `Time_50ms` | `Real` | `%MD1952` | MIX - 50ms Task (Void) | +| `Flip Enable` | `Bool` | `%M50.0` | Flip Enable | +| `MD600` | `DWord` | `%MD600` | Valve Flip Test Counter | +| `gOUT_PPM305_Run` | `Bool` | `%M1603.7` | MIX - PPM305 Product Pump 2 Run | +| `gIN_Filler2ProductReq` | `Bool` | `%M1506.0` | MIX - From Filler 2 Product request | +| `gIN_Filler_AVM363_En` | `Bool` | `%M1506.1` | MIX - From Filler AVM363 Enable | +| `gIN_Filler2CIPRequest` | `Bool` | `%M1506.3` | MIX - From Filler 2 Ready to CIP | +| `PPM305_FC_Status_Word` | `Word` | `%MW1944` | MIX - PPM303_ProductPump_StatusWord_VFC_Ctrl | +| `PPM305_B08_Speed_OK` | `Bool` | `%M1944.0` | MIX - FC_Status_Word | +| `PPM305_B09_BusControl` | `Bool` | `%M1944.1` | MIX - FC_Status_Word | +| `PPM305_B10_FreqLimit_OK` | `Bool` | `%M1944.2` | MIX - FC_Status_Word | +| `PPM305_B11_InOperation` | `Bool` | `%M1944.3` | MIX - FC_Status_Word | +| `PPM305_B12_Drive_OK` | `Bool` | `%M1944.4` | MIX - FC_Status_Word | +| `PPM305_B13_Voltage_OK` | `Bool` | `%M1944.5` | MIX - FC_Status_Word | +| `PPM305_B14_Torque_OK` | `Bool` | `%M1944.6` | MIX - FC_Status_Word | +| `PPM305_B15_Timer_OK` | `Bool` | `%M1944.7` | MIX - FC_Status_Word | +| `PPM305_B00_ControlReady` | `Bool` | `%M1945.0` | MIX - FC_Status_Word | +| `PPM305_B01_DriveReady` | `Bool` | `%M1945.1` | MIX - FC_Status_Word | +| `PPM305_B02_Coasting(` | `Bool` | `%M1945.2` | MIX - FC_Status_Word | +| `PPM305_B03_Trip` | `Bool` | `%M1945.3` | MIX - FC_Status_Word | +| `PPM305_B04_Error` | `Bool` | `%M1945.4` | MIX - FC_Status_Word | +| `PPM305_B05_Reserved` | `Bool` | `%M1945.5` | MIX - FC_Status_Word | +| `PPM305_B06_Triplock` | `Bool` | `%M1945.6` | MIX - FC_Status_Word | +| `PPM305_B07_Warning` | `Bool` | `%M1945.7` | MIX - FC_Status_Word | +| `PPM305_FC_Control_Word` | `Word` | `%MW1946` | MIX - PPM303_ProductPump_CtrlWord_VFC_Ctrl | +| `PPM305_B08_Jog` | `Bool` | `%M1946.0` | MIX - FC_Control_Word | +| `PPM305_B09_RampSelection` | `Bool` | `%M1946.1` | MIX - FC_Control_Word | +| `PPM305_B10_DataValid` | `Bool` | `%M1946.2` | MIX - FC_Control_Word | +| `PPM305_B11_Relay01Active` | `Bool` | `%M1946.3` | MIX - FC_Control_Word | +| `PPM305_B12_Relay04Active` | `Bool` | `%M1946.4` | MIX - FC_Control_Word | +| `PPM305_B13_SetUp_LSB` | `Bool` | `%M1946.5` | MIX - FC_Control_Word | +| `PPM305_B14_SetUp_MSB` | `Bool` | `%M1946.6` | MIX - FC_Control_Word | +| `PPM305_B15_Reverse` | `Bool` | `%M1946.7` | MIX - FC_Control_Word | +| `PPM305_B00_RefValue_LSB` | `Bool` | `%M1947.0` | MIX - FC_Control_Word | +| `PPM305_B01_RefValue_MSB` | `Bool` | `%M1947.1` | MIX - FC_Control_Word | +| `PPM305_B02_Brake` | `Bool` | `%M1947.2` | MIX - FC_Control_Word | +| `PPM305_B03_Coast` | `Bool` | `%M1947.3` | MIX - FC_Control_Word | +| `PPM305_B04_QuickStop` | `Bool` | `%M1947.4` | MIX - FC_Control_Word | +| `PPM305_B05_HoldOutputFrq` | `Bool` | `%M1947.5` | MIX - FC_Control_Word | +| `PPM305_B06_RampStop` | `Bool` | `%M1947.6` | MIX - FC_Control_Word | +| `PPM305_B07_Reset` | `Bool` | `%M1947.7` | MIX - FC_Control_Word | +| `gSP_AVM363` | `Bool` | `%M1313.4` | MIX - Procedure auxiliary variable | +| `gCIP_FlipflopRunning` | `Bool` | `%M1603.2` | MIX - CIP FlipFlop running | +| `gCIP_FlipFlopWait` | `Bool` | `%M1603.3` | MIX - CIP Flip Flop Wait | +| `gCIP_FlipFlopReset` | `Bool` | `%M1603.4` | MIX - CIP FlipFlop Reset | +| `gCIP_FlipFlopDone` | `Bool` | `%M1603.5` | MIX - CIP FlipFlop Done | +| `ColdRinseON` | `Bool` | `%M200.4` | Cold Rinse On | +| `WarmRinseEn` | `Bool` | `%M200.2` | Warm Rinse Enable | +| `WarmRinseON` | `Bool` | `%M200.5` | Warm Rinse On | +| `gRVN305Fault` | `Bool` | `%M1816.1` | MIX - CIp Return Temperature Fault | +| `First_Production_Done_Aux` | `Bool` | `%M4.2` | | +| `Start_Stop_BBlend_Aux` | `Bool` | `%M1350.0` | | +| `BlenderLevelStopSByFiller` | `Bool` | `%M1735.4` | | +| `E5_000000` | `Bool` | `%M5.0` | !!!!Modification Tracking Bit!!!! | +| `M195.0` | `Bool` | `%M195.0` | PC OFF | +| `PNetF` | `Bool` | `%M251.0` | ProfiNet Network Fail | +| `PBusF` | `Bool` | `%M251.1` | ProfiBus Network Fail | +| `mFP_Recip_Main_Page` | `Bool` | `%M700.1` | | +| `mAux_FP_M700_1` | `Bool` | `%M700.0` | | +| `T_Pulse_Recipe_Edit` | `Timer` | `%T210` | | +| `Tag_11` | `Real` | `%MD610` | | +| `Disable_Bit` | `Bool` | `%M5.1` | !!!!Disable Bit !!! | +| `Tag_1` | `Word` | `%QW5` | | +| `AB5` | `Byte` | `%QB5` | | +| `Tag_2` | `Byte` | `%QB11` | | +| `Tag_3` | `Byte` | `%QB60` | | +| `Tag_4` | `Byte` | `%QB68` | | +| `Tag_5` | `Word` | `%MW1990` | | +| `Tag_6` | `UInt` | `%MW1992` | | +| `E5_007161` | `Bool` | `%M3699.0` | Modifica O&U 01-04-2025 | +| `Tag_7` | `Real` | `%ID1584` | | +| `P_PDS_Running` | `Bool` | `%I15008.7` | | + diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/MessageScroll.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/MessageScroll.md new file mode 100644 index 0000000..0b16113 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/MessageScroll.md @@ -0,0 +1,86 @@ +```pascal +// Block Type: FC +// Block Number: 210 +// Original Network Languages: STL + +FUNCTION "MessageScroll" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + Data_B : "DB_ANY"; + First : Int; + Last : Int; + Time_Vis : Timer; +END_VAR + +VAR_INOUT + Code : Int; +END_VAR + +VAR_TEMP + First_bit : Int; + Last_bit : Int; + Point : DWord; +END_VAR + +BEGIN + + // Network 1: (Original Language: STL) + + // --- BEGIN STL Network 1 --- + + AUF "Data_B" + A "Time_Vis" + BEC + CLR + L S5T#3S + Pulse "Time_Vis" + L "First" + L 8 + MUL_I + ADD -1 + T "First_bit" + L "Last" + L 8 + MUL_I + ADD 7 + T "Last_bit" + L "Code" + ADD 1 + L "First_bit" + ADD_I + T "Point" + L "Point" + L "Last_bit" + GT_I + JC rest + L "Point" + loop: LAR1_ACCU1 + A DBX[AR1,P#0.0] + L S5T#3S + Pulse "Time_Vis" + JC code + L "Point" + L "Last_bit" + GE_I + JC rest + L "Point" + L 1 + ADD_I + T "Point" + JU loop + rest: L 0 + T "Code" + BEU + code: NOP_0 + L "Point" + L "First_bit" + SUB_I + T "Code" + + // --- END STL Network 1 --- + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ModValveFault.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ModValveFault.md new file mode 100644 index 0000000..bb15643 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ModValveFault.md @@ -0,0 +1,52 @@ +```pascal +// Block Type: FC +// Block Number: 2035 +// Original Network Languages: LAD + +FUNCTION "ModValveFault" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + #_12S : Bool; // Auto-generated temporary + #_12s : Bool; // Auto-generated temporary + #_5S : Bool; // Auto-generated temporary +END_VAR + +BEGIN + + // Network 1: MIX - ModValveFault (Original Language: LAD) + + "mFaultOpenRMM301Tmr"(IN := "HMI_PID"."RMM301"."Out" >= 10.0, PT := S5T#5S); // TODO: Declarar "mFaultOpenRMM301Tmr" : TON; + + "mFaultCloseRMM301Tmr"(IN := Eq("HMI_PID"."RMM301"."Out", 0.0), PT := S5T#12s); // TODO: Declarar "mFaultCloseRMM301Tmr" : TON; + + "gRMM301_Pos_Fault" := "mFaultOpenRMM301Tmr".Q OR "mFaultCloseRMM301Tmr".Q; + + // Network 2: MIX - ModValveFault (Original Language: LAD) + + "mFaultOpenRMP302Tmr"(IN := "HMI_PID"."RMP302"."Out" >= 10.0, PT := S5T#5S); // TODO: Declarar "mFaultOpenRMP302Tmr" : TON; + + "mFaultCloseRMP302Tmr"(IN := Eq("HMI_PID"."RMP302"."Out", 0.0), PT := S5T#12s); // TODO: Declarar "mFaultCloseRMP302Tmr" : TON; + + "gRMP302_Pos_Fault" := "mFaultOpenRMP302Tmr".Q OR "mFaultCloseRMP302Tmr".Q; + + // Network 3: FaultOpenVM3 (Original Language: LAD) + + "mFaultOpenRMM303Tmr"(IN := "HMI_PID"."RMM303"."Out" >= 10.0, PT := S5T#5S); // TODO: Declarar "mFaultOpenRMM303Tmr" : TON; + + "mFaultCloseRMM303Tmr"(IN := Eq("HMI_PID"."RMM303"."Out", 0.0), PT := S5T#12S); // TODO: Declarar "mFaultCloseRMM303Tmr" : TON; + + "gRMM303_Pos_Fault" := "mFaultOpenRMM303Tmr".Q OR "mFaultCloseRMM303Tmr".Q; + + // Network 4: MIX - ModValveFault (Original Language: LAD) + + "mFaultOpenRMM304Tmr"(IN := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_GAS2_Injection" AND "gWorkshopTest" AND ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_GAS2InjectionType" > 0), PT := S5T#5S); // TODO: Declarar "mFaultOpenRMM304Tmr" : TON; + + "mFaultCloseRMM304Tmr"(IN := "gBlenderCIPMode" AND "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_BlenderMaintenance" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" AND "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_GAS2_Injection" AND "gBlenderRinseMode" AND ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_GAS2InjectionType" > 0), PT := S5T#5S); // TODO: Declarar "mFaultCloseRMM304Tmr" : TON; + + "gRMM304_Pos_Fault" := "mFaultOpenRMM304Tmr".Q OR "mFaultCloseRMM304Tmr".Q; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ONS_R.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ONS_R.md new file mode 100644 index 0000000..8dedcdc --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ONS_R.md @@ -0,0 +1,34 @@ +```pascal +// Block Type: FC +// Block Number: 1920 +// Original Network Languages: LAD + +FUNCTION "ONS_R" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + Enable_ONS : Bool; +END_VAR + +VAR_OUTPUT + ONS_R : Bool; +END_VAR + +VAR_INOUT + Aux_ONS : Bool; +END_VAR + +BEGIN + + // Network 1: (Original Language: LAD) + + // Edge Logic handled by Coil 26 + "Aux_ONS" := "Enable_ONS"; // P_TRIG("Enable_ONS") - Mem: "Aux_ONS" + + "ONS_R" := "Enable_ONS" AND NOT "Aux_ONS"; + "Aux_ONS" := "Enable_ONS"; // P_TRIG("Enable_ONS") - Mem: "Aux_ONS" + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Output.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Output.md new file mode 100644 index 0000000..91aa646 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Output.md @@ -0,0 +1,866 @@ +```pascal +// Block Type: FC +// Block Number: 2026 +// Original Network Languages: LAD + +FUNCTION "Output" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + mDummy : Bool; + mOutWordToVFC : Real; + mRealAnalog : Real; + mRealMax : Real; + mRealMax_Half : Real; + mRealMax_2 : Real; + mFTFS : Real; +END_VAR + + #_0S : Bool; // Auto-generated temporary + #_10S : Bool; // Auto-generated temporary +BEGIN + + // Network 1: Analog To HMI (Original Language: LAD) + + Output_AnalogValueToHMI(); + + // Network 2: Ctrl Circuit Run (Original Language: LAD) + + "DO_CtrlCircuitRun" := ("mAuxiliaryOn" AND "DI_Emergency_Pilz_On" AND "DI_Emergency_Pressed") OR ("DO_CtrlCircuitRun" AND "DI_Emergency_Pilz_On" AND "DI_Emergency_Pressed"); + + // Network 3: Auxiliary Light (Original Language: LAD) + + "HMI_Variables_Cmd"."Commands_From_HMI"."F8_AuxiliaryControl"."Light" := "gIN_VoltageOk" AND "DI_AuxVoltage_On"; + + // Network 4: Horn (Original Language: LAD) + + "DO_Horn" := "gAlarmHorn" OR "gWarningHorn"; + + "DO_PB_HornReset" := "gAlarmHorn" OR "gWarningHorn"; + + "HMI_Variables_Cmd"."Commands_From_HMI"."F9_HornReset"."Light" := "gAlarmHorn" OR "gWarningHorn"; + + // Network 5: Start Stop Light (Original Language: LAD) + + "HMI_Variables_Cmd"."Commands_From_HMI"."F1_StartStop"."Light" := ("Clock_2Hz" AND "Procedure_Variables"."Blender_Stop"."Latch") OR ("Procedure_Variables"."Blender_Stop"."Latch" AND "Procedure_Variables"."Blender_Run"."Latch"); + + // Network 6: Reset Light (Original Language: LAD) + + "HMI_Variables_Cmd"."Commands_From_HMI"."F10_FaultReset"."Light" := "Clock_2Hz" AND "gBlenderAlarm"; + + // Network 7: 24DC ON (Original Language: LAD) + + "DO_Aux24DC" := "gIN_VoltageOk"; + + // Network 8: PPN301 Water Pump Run (Original Language: LAD) + + "DO_PPN301_Run" := "HMI_Device"."PPN301"."Out"; + + // Network 9: PPP302 Syrup Pump Run (Original Language: LAD) + + "DO_PPP302_Run" := "HMI_Device"."PPP302"."Out"; + + // Network 10: PPM303 Product Pump Run (Original Language: LAD) + + "DO_PPM303_Run" := "HMI_Device"."PPM303"."Out"; + + // Network 11: PPN304 Run (Original Language: LAD) + + "DO_PPN304_Run" := "HMI_Device"."PPN304"."Out"; + + // Network 12: PPM306 Run (Original Language: LAD) + + "DO_PPM306_Run" := "HMI_Device"."PPM306"."Out"; + + // Network 13: PCM306 Powered Enable (Original Language: LAD) + + "mPCM306_Reset"(IN := ("HMI_Instrument"."PCM306"."Alarm" AND "HMI_Device"."AVM341"."Out" AND "gIN_ResetBtn") OR ("HMI_Instrument"."PCM306"."Alarm" AND "HMI_Device"."AVM342"."Out" AND "gIN_ResetBtn") OR ("HMI_Alarms"."Supplies"."Alarm061" AND "HMI_Device"."AVM341"."Out" AND "gIN_ResetBtn") OR ("HMI_Alarms"."Supplies"."Alarm061" AND "HMI_Device"."AVM342"."Out" AND "gIN_ResetBtn"), PT := S5T#10S); // TODO: Declarar "mPCM306_Reset" : TP; + + // Network 14: PCM306 Powered Enable On (Original Language: LAD) + + "DO_PCM306En" := "mPCM306_Reset" OR ("HMI_Instrument"."PCM306"."Alarm" AND "HMI_Instrument"."PCM306"."Mask"); + + // Network 15: Green Lamp (Original Language: LAD) + + "DO_Green_Lamp" := "Procedure_Variables"."Blender_Run"."Latch"; + + "DO_PB_Green_Lamp" := "Procedure_Variables"."Blender_Run"."Latch"; + + // Network 16: Blu Lamp (Original Language: LAD) + + "DO_Blu_Lamp" := "Procedure_Variables"."Blender_Run"."Wait" AND "Clock_1Hz" AND "Procedure_Variables"."Blender_Run"."Latch"; + + // Network 17: Yellow Lamp (Original Language: LAD) + + "DO_Yellow_Lamp" := "Clock_1Hz" AND "gBlenderCIPMode" AND "Procedure_Variables"."Blender_Run"."Latch"; + + // Network 18: DO_Red_Lamp (Original Language: LAD) + + "DO_Red_Lamp" := "gBlenderAlarm"; + + // Network 19: RVN301- Deaireator Level Control (Original Language: LAD) + + "DO_RVN302" := "HMI_Device"."RVN301"."Out" AND "HMI_Device"."RVN301"."Config"; + + // Network 20: RVN301_1 - Deaireator Fill Up (Original Language: LAD) + + "DO_RVN302_1" := "HMI_Device"."RVN301_1"."Out" AND "HMI_Device"."RVN301_1"."Config"; + + // Network 21: EV03 Syrup Level Ctrl (Original Language: LAD) + + "DO_EV03_SyrupLvlCtrl" := "HMI_Device"."RVP303"."Out" AND "HMI_Device"."RVP303"."Config"; + + // Network 22: EV04 Syrup Fillup (Original Language: LAD) + + "DO_EV04_SyrupFillUp" := "HMI_Device"."EV04"."Out" AND "HMI_Device"."EV04"."Config"; + + // Network 23: Syrup Room Pump (Original Language: LAD) + + "DO_SyrupRoomPump_Run" := "HMI_Device"."SyrupRoom_SyrupPump"."Out" AND "Procedure_Variables"."Syr_RunOut"."Latch"; + + "DO_SyRm_SyrupReques" := "HMI_Device"."SyrupRoom_SyrupPump"."Out" AND "Procedure_Variables"."Syr_RunOut"."Latch"; + + // Network 24: Syrup Room - Production Mode (Original Language: LAD) + + "DO_SyRm_ProdMode" := "gBlenderProdMode"; + + // Network 25: Syrup Room - Water Request (Original Language: LAD) + + "DO_SyrupRoomWaterReq" := "HMI_Device"."SyrupRoom_WaterPump"."Out"; + + // Network 26: To syrup Room Water Request (Original Language: LAD) + + "DO_SyRm_WaterRequest" := "Procedure_Variables"."Syr_RunOut"."Latch" OR ("gBlenderRinseMode" AND "Procedure_Variables"."Blender_Run"."Latch"); + + // Network 27: Filler - Production Mode (Original Language: LAD) + + "Interlocking_Variables"."SIDEL_FILLER_SEND_DATA"."PROD_Production_Mode" := "gOUT_FillerProduction"; + + "Interlocking_Variables"."MIXER_FILLER_SEND"."PROD_Mode" := "gOUT_FillerProduction"; + + "Interlocking_Variables"."SIMO_FILLER_SEND_DATA"."PROD_Mode" := "gOUT_FillerProduction"; + + "DO_Flr1_Productionmode" := "gOUT_FillerProduction"; + + // Network 28: Filler - Comm Status (Original Language: LAD) + + "Interlocking_Variables"."SIDEL_FILLER_SEND_DATA"."AliveBit" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelFiller" AND "Clock_2.5Hz"; + + // Network 29: Filler - Product Available (Original Language: LAD) + + "Interlocking_Variables"."SIMO_FILLER_SEND_DATA"."PROD_Available" := "gOUT_FillerProductAvail"; + + "Interlocking_Variables"."SIDEL_FILLER_SEND_DATA"."PROD_ProductAvailable" := "gOUT_FillerProductAvail"; + + "DO_Flr1_PROD_Available" := "gOUT_FillerProductAvail"; + + // Network 30: Filler - Fault (Original Language: LAD) + + "DO_Flr1_Fault" := "HMI_Alarms"."Fault"."Alarm027" OR ("gBlenderLevelOk" AND "Procedure_Variables"."TM301_RunOut"."Latch"); + + "DO_Flr2_Fault" := "HMI_Alarms"."Fault"."Alarm027" OR ("gBlenderLevelOk" AND "Procedure_Variables"."TM301_RunOut"."Latch"); + + // Network 31: Filler - Minimum Level (Original Language: LAD) + + "Interlocking_Variables"."SIMO_FILLER_SEND_DATA"."PROD_Minimum_Level" := ("Procedure_Variables"."TM301_RunOut"."Latch" AND "gOUT_FillerMinimumLevel") OR ("gOUT_FillerMinimumLevel" AND "Procedure_Variables"."Blender_Run"."Latch"); + + "Interlocking_Variables"."SIDEL_FILLER_SEND_DATA"."PROD_MinimumProductLevel" := ("Procedure_Variables"."TM301_RunOut"."Latch" AND "gOUT_FillerMinimumLevel") OR ("gOUT_FillerMinimumLevel" AND "Procedure_Variables"."Blender_Run"."Latch"); + + "DO_Flr1_OpenBottleblock" := ("Procedure_Variables"."TM301_RunOut"."Latch" AND "gOUT_FillerMinimumLevel") OR ("gOUT_FillerMinimumLevel" AND "Procedure_Variables"."Blender_Run"."Latch"); + + // Network 32: Filler - Rinse Mode (Original Language: LAD) + + "Interlocking_Variables"."SIMO_FILLER_SEND_DATA"."CIP_RinseMode" := "gOUT_FillerRinseMode"; + + "Interlocking_Variables"."MIXER_FILLER_SEND"."Rinse_Mode" := "gOUT_FillerRinseMode"; + + "Interlocking_Variables"."SIDEL_FILLER_SEND_DATA"."PROD_Rinse_Mode" := "gOUT_FillerRinseMode"; + + "DO_Flr1_RinseMode" := "gOUT_FillerRinseMode"; + + // Network 33: Filler - CIP Mode (Original Language: LAD) + + "Interlocking_Variables"."SIDEL_CIP_SEND_DATA"."CIP_Mode" := "gBlenderCIPMode"; + + // Network 34: Filler - Fast Rinse (Original Language: LAD) + + "Interlocking_Variables"."SIDEL_CIP_SEND_DATA"."PROD_FastRinseRequest" := "System_RunOut_Variables"."Out_Flr_FastRinseReq"; + + "DO_Flr_FastRinseRequest" := "System_RunOut_Variables"."Out_Flr_FastRinseReq"; + + // Network 35: Filler - Rinse Water ready (Original Language: LAD) + + "Interlocking_Variables"."SIDEL_CIP_SEND_DATA"."PROD_WaterRinseReady" := "System_RunOut_Variables"."Out_Flr_WaterRinseReady"; + + "DO_Flr_WaterRinseReady" := "System_RunOut_Variables"."Out_Flr_WaterRinseReady"; + + // Network 36: Filler - Rinse Sending (Original Language: LAD) + + "Interlocking_Variables"."MIXER_FILLER_SEND"."Rinse_Sending" := "HMI_Device"."PPM303"."Out" AND "gOUT_FillerRinseMode"; + + "Interlocking_Variables"."SIMO_FILLER_SEND_DATA"."CIP_RinseSending" := "HMI_Device"."PPM303"."Out" AND "gOUT_FillerRinseMode"; + + "Interlocking_Variables"."SIDEL_FILLER_SEND_DATA"."PROD_WaterRinseReady" := "HMI_Device"."PPM303"."Out" AND "gOUT_FillerRinseMode"; + + "DO_Flr_CIP_RinseSending" := "HMI_Device"."PPM303"."Out" AND "gOUT_FillerRinseMode"; + + "DO_MIXER _Rinse_mode" := "HMI_Device"."PPM303"."Out" AND "gOUT_FillerRinseMode"; + + // Network 37: Filler - Product Completed (Original Language: LAD) + + "Interlocking_Variables"."SIMO_FILLER_SEND_DATA"."PROD_Product_Completed" := "System_RunOut_Variables"."Out_Flr_ProductCompleted"; + + "Interlocking_Variables"."SIDEL_FILLER_SEND_DATA"."PROD_ProductCompleted" := "System_RunOut_Variables"."Out_Flr_ProductCompleted"; + + "DO_Flr_ProductCompleted" := "System_RunOut_Variables"."Out_Flr_ProductCompleted"; + + // Network 38: Filler - RunOut Request (Original Language: LAD) + + "Interlocking_Variables"."SIMO_FILLER_SEND_DATA"."PROD_Run_Out" := "System_RunOut_Variables"."Out_Flr_FillerRunOutReq"; + + "Interlocking_Variables"."MIXER_FILLER_SEND"."PROD_Prod_Run_Out" := "System_RunOut_Variables"."Out_Flr_FillerRunOutReq"; + + "Interlocking_Variables"."SIDEL_CIP_SEND_DATA"."PROD_FillerRunOut" := "System_RunOut_Variables"."Out_Flr_FillerRunOutReq"; + + "DO_Flr_PROD_Run_Out" := "System_RunOut_Variables"."Out_Flr_FillerRunOutReq"; + + // Network 39: Filler - Fast Change Request (Original Language: LAD) + + "Interlocking_Variables"."MIXER_FILLER_SEND"."PROD_FastChangeRequest" := ("gBlenderCIPMode" AND "System_RunOut_Variables"."FastChangeOverActivated") OR ("gBlenderCIPMode" AND "gBlenderRinseMode" AND "Interlocking_Variables"."MIXER_FILLER_SEND"."PROD_FastChangeRequest" AND "Procedure_Variables"."BlendFill_StartUp"."Done"); + + // Network 40: Filler - Comm Status (Original Language: LAD) + + "Interlocking_Variables"."MIXER_FILLER_SEND"."CIP_CommStatus" := "AUX TRUE"; + + // Network 41: Filler - Comm Status (Original Language: LAD) + + "Interlocking_Variables"."SIMO_FILLER_SEND_DATA"."CIP_CommStatus" := "AUX TRUE"; + + // Network 42: Filler - CIP Completed (Original Language: LAD) + + "Interlocking_Variables"."SIMO_FILLER_SEND_DATA"."CIP_CleaningEnded" := "gOUT_FillerCIPCompleted"; + + "Interlocking_Variables"."MIXER_FILLER_SEND"."CIP_Completed" := "gOUT_FillerCIPCompleted"; + + "Interlocking_Variables"."MIXER_FILLER_SEND"."CIP_CleaningEnded_ex" := "gOUT_FillerCIPCompleted" AND "E5_007161"; + + "Interlocking_Variables"."SIDEL_FILLER_SEND_DATA"."CIP_Completed" := "gOUT_FillerCIPCompleted"; + + // Network 43: Filler - Cip Cleaning Ended (Original Language: LAD) + + "DO_Flr1_CIP_CleaningEnd" := "gOUT_FillerCIPCompleted" OR "Interlocking_Variables"."SIDEL_CIP_REC_DATA"."CIP_RecipeAborted"; + + // Network 44: Filler - CIP Recipe Aborted (Original Language: LAD) + + "Interlocking_Variables"."MIXER_FILLER_SEND"."CIP_RecipeAborted" := "Interlocking_Variables"."SIDEL_CIP_REC_DATA"."CIP_RecipeAborted"; + + "Interlocking_Variables"."SIMO_FILLER_SEND_DATA"."CIP_RecipeAborted" := "Interlocking_Variables"."SIDEL_CIP_REC_DATA"."CIP_RecipeAborted"; + + // Network 45: Filler - CIP Cleaning Alarm (Original Language: LAD) + + "Interlocking_Variables"."SIMO_FILLER_SEND_DATA"."CIP_CleaningAlarm" := "gIN_CIP_Fault"; + + "Interlocking_Variables"."MIXER_FILLER_SEND"."CIP_CleaningAlarm" := "gIN_CIP_Fault"; + + "DO_Flr_CIP_CleaningFault" := "gIN_CIP_Fault"; + + // Network 46: Filler - CIP Product Sending (Original Language: LAD) + + "Interlocking_Variables"."SIMO_FILLER_SEND_DATA"."Cip_ProductSending" := "gIN_CIP_CIPProdSending" OR ("Interlocking_Variables"."SIDEL_CIP_REC_DATA"."CIP_RecoveryRequest" AND "gBlenderEmpty"); + + "Interlocking_Variables"."MIXER_FILLER_SEND"."CIP_ProductSending" := "gIN_CIP_CIPProdSending" OR ("Interlocking_Variables"."SIDEL_CIP_REC_DATA"."CIP_RecoveryRequest" AND "gBlenderEmpty"); + + "DO_Flr_CIP_ProdSending" := "gIN_CIP_CIPProdSending" OR ("Interlocking_Variables"."SIDEL_CIP_REC_DATA"."CIP_RecoveryRequest" AND "gBlenderEmpty"); + + // Network 47: Filler - CIP Recovery Request (Original Language: LAD) + + "Interlocking_Variables"."SIDEL_FILLER_SEND_DATA"."CIP_ChangeSanitize" := "Interlocking_Variables"."SIDEL_CIP_REC_DATA"."CIP_RecoveryRequest" AND "gBlenderEmpty"; + + "Interlocking_Variables"."MIXER_FILLER_SEND"."CIP_RecoveryRequest" := "Interlocking_Variables"."SIDEL_CIP_REC_DATA"."CIP_RecoveryRequest" AND "gBlenderEmpty"; + + "DO_Flr_CIP_RecoverReq" := "Interlocking_Variables"."SIDEL_CIP_REC_DATA"."CIP_RecoveryRequest" AND "gBlenderEmpty"; + + "Interlocking_Variables"."SIMO_FILLER_SEND_DATA"."CIP_RecoveryRequest" := "Interlocking_Variables"."SIDEL_CIP_REC_DATA"."CIP_RecoveryRequest" AND "gBlenderEmpty"; + + // Network 48: Filler - CIP Flooding Request (Original Language: LAD) + + "Interlocking_Variables"."SIMO_FILLER_SEND_DATA"."Cip_FloodingRequest" := "gIN_CIP_TankFilling"; + + "Interlocking_Variables"."MIXER_FILLER_SEND"."CIP_FloodingRequest" := "gIN_CIP_TankFilling"; + + "DO_Flr_CIP_TankFilling" := "gIN_CIP_TankFilling"; + + // Network 49: Filler - CIP Condition Ok (Original Language: LAD) + + "Interlocking_Variables"."SIMO_FILLER_SEND_DATA"."Cip_ConditionOk" := "Interlocking_Variables"."SIDEL_CIP_REC_DATA"."Cip_ConditionOk"; + + "Interlocking_Variables"."MIXER_FILLER_SEND"."CIP_ConditionOK" := "Interlocking_Variables"."SIDEL_CIP_REC_DATA"."Cip_ConditionOk"; + + // Network 50: Filler - CIP Flip Enable (Original Language: LAD) + + "Interlocking_Variables"."SIMO_FILLER_SEND_DATA"."Cip_FlipEnable" := "Interlocking_Variables"."SIDEL_CIP_REC_DATA"."Cip_FlipEnable"; + + "Interlocking_Variables"."MIXER_FILLER_SEND"."CIP_FlipEnable" := "Interlocking_Variables"."SIDEL_CIP_REC_DATA"."Cip_FlipEnable"; + + // Network 51: Filler - CIP Running (Original Language: LAD) + + "Interlocking_Variables"."SIMO_FILLER_SEND_DATA"."CIP_Running" := "gOUT_FillerCIPRunning"; + + "Interlocking_Variables"."MIXER_FILLER_SEND"."Cip_Running" := "gOUT_FillerCIPRunning"; + + "Interlocking_Variables"."SIDEL_FILLER_SEND_DATA"."CIP_Running" := "gOUT_FillerCIPRunning"; + + "Interlocking_Variables"."MIXER_FILLER_SEND"."CIP_Running_ex" := "E5_007161" AND "gOUT_FillerCIPRunning"; + + "DO_Flr_CIP_Running" := "gOUT_FillerCIPRunning"; + + "DO_ Flr_CIPRinseSending" := "gOUT_FillerCIPRunning"; + + // Network 52: Filler - CIP Drain Request (Original Language: LAD) + + "Interlocking_Variables"."SIMO_FILLER_SEND_DATA"."Cip_DrainRequest" := "gOUT_FillerCIPDrainReq"; + + "Interlocking_Variables"."MIXER_FILLER_SEND"."CIP_Drain_Request" := "gOUT_FillerCIPDrainReq"; + + "Interlocking_Variables"."MIXER_FILLER_SEND"."CIP_DrainRequest_ex" := "E5_007161" AND "gOUT_FillerCIPDrainReq"; + + "Interlocking_Variables"."SIDEL_FILLER_SEND_DATA"."CIP_DrainRequest" := "gOUT_FillerCIPDrainReq"; + + IF "gOUT_FillerCIPDrainReq" AND "gCIP_BlenderDrainDone" THEN + "DO_Flr1_CIP_DrainRequest" := TRUE; + END_IF; + + "DO_MIXER _Rinse_mode" := "gOUT_FillerCIPDrainReq"; + + IF "gCIP_BlenderDrainDone" OR "DO_CIP_Mode_En" THEN + "DO_Flr1_CIP_DrainRequest" := FALSE; + END_IF; + + // Network 53: Filler - Rinse from CIP (Original Language: LAD) + + "Interlocking_Variables"."MIXER_FILLER_SEND"."CIP_UW_Rinse_from_Cip" := "Interlocking_Variables"."SIDEL_CIP_REC_DATA"."Cip_UW_Rinse_from_Cip"; + + // Network 54: Filler - Rinse From Line (Original Language: LAD) + + "Interlocking_Variables"."MIXER_FILLER_SEND"."CIP_UW_Rinse_from_Line" := "Interlocking_Variables"."SIDEL_CIP_REC_DATA"."Cip_UW_Rinse_from_Line"; + + // Network 55: Filler - CIP UW Sanitation (Original Language: LAD) + + "Interlocking_Variables"."MIXER_FILLER_SEND"."CIP_UW_Sanitation" := "Interlocking_Variables"."SIDEL_CIP_REC_DATA"."Cip_UW_Sanitation"; + + // Network 56: Filler - CIP UW Caustic (Original Language: LAD) + + "Interlocking_Variables"."MIXER_FILLER_SEND"."CIP_UW_Caustic" := "Interlocking_Variables"."SIDEL_CIP_REC_DATA"."Cip_UW_Caustic"; + + // Network 57: Filler - CIP UW Acid (Original Language: LAD) + + "Interlocking_Variables"."MIXER_FILLER_SEND"."CIP_UW_Acid" := "Interlocking_Variables"."SIDEL_CIP_REC_DATA"."Cip_UW_Acid"; + + // Network 58: Filler - CIP UW Disinfectant (Original Language: LAD) + + "Interlocking_Variables"."MIXER_FILLER_SEND"."CIP_UW_Disinfectant" := "Interlocking_Variables"."SIDEL_CIP_REC_DATA"."Cip_UW_disinfectant"; + + // Network 59: Syrup Pump Request (Original Language: LAD) + + "DO_SyrRoom_SyrupRequest" := ("gBlenderProdMode" AND "Procedure_Variables"."FTP302Line_Preparation"."Latch" AND "Blender_Variables_Pers"."gWaterRecipe") OR ("gBlenderProdMode" AND "gBlenderStartPumps" AND "Blender_Variables_Pers"."gWaterRecipe" AND "Procedure_Variables"."Blender_Run"."Latch"); + + // Network 60: CIP - Line ready (Original Language: LAD) + + "Interlocking_Variables"."CIP_SEND_DATA"."Line_Ready" := "gBlenderCIPMode" AND "Procedure_Variables"."Blender_Run"."Latch"; + + "Interlocking_Variables"."SIDEL_CIP_SEND_DATA"."CIP_Running" := "gBlenderCIPMode" AND "Procedure_Variables"."Blender_Run"."Latch"; + + "DO_Glycol_LineCIP" := "gBlenderCIPMode"; + + // Network 61: To Syrup Room- Alarm (Original Language: LAD) + + "DO_SyrupRoom_Aux1" := ("DO_SyrupRoom_Aux2" AND "DO_SyrupRoomPump_Run") OR ("gBlenderCIPMode" AND "DO_SyrupRoom_Aux2" AND "Procedure_Variables"."Blender_Run"."Latch"); + + // Network 62: (Original Language: LAD) + + "DO_SyrupRoom_Aux2" := ("gBlenderProdMode" AND "DO_SyrupRoom_Aux1") OR ("DO_SyrupRoomPump_Run" AND "DO_SyrupRoom_Aux1"); + + // Network 63: To Syrup Room- Alarm (Original Language: LAD) + + "DO_SyrupRoom_Aux1" := "gBlenderCIPMode" AND "DO_SyrupRoom_Aux2" AND "DO_SyrupRoom_Aux1" AND "DO_CIP_DrainCompleted"; + + // Network 64: CIP - Comm Status (Original Language: LAD) + + "Interlocking_Variables"."SIDEL_CIP_SEND_DATA"."CIP_Mode" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SidelCip"; + + // Network 65: CIP - Cleaning Alarm (Original Language: LAD) + + "Interlocking_Variables"."SIDEL_CIP_SEND_DATA"."CIP_Completed" := "gBlenderAlarm" OR "Interlocking_Variables"."SIDEL_FILLER_REC_DATA"."PROD_Selected"; + + "DO_CIP_CleaningFault" := "gBlenderAlarm" OR "Interlocking_Variables"."SIDEL_FILLER_REC_DATA"."PROD_Selected"; + + // Network 66: CIP - Solution Return (Original Language: LAD) + + "Interlocking_Variables"."SIDEL_CIP_SEND_DATA"."CIP_DrainRequest" := ("HMI_Device"."PPM303"."Out" AND "Interlocking_Variables"."FILLER_MIXER_RECEIVE"."CIP_Solution_Return") OR ("HMI_Device"."PPM303"."Out" AND "Interlocking_Variables"."SIMO_FILLER_REC_DATA"."CIP_SolutionReturn"); + + "DO_CIP_SolutionReturn" := ("HMI_Device"."PPM303"."Out" AND "Interlocking_Variables"."FILLER_MIXER_RECEIVE"."CIP_Solution_Return") OR ("HMI_Device"."PPM303"."Out" AND "Interlocking_Variables"."SIMO_FILLER_REC_DATA"."CIP_SolutionReturn"); + + // Network 67: CIP - Recovery Completed (Original Language: LAD) + + "Interlocking_Variables"."SIDEL_CIP_SEND_DATA"."PROD_Rinse_Mode" := ("Interlocking_Variables"."SIDEL_CIP_REC_DATA"."CIP_RecoveryRequest" AND "Interlocking_Variables"."SIDEL_CIP_SEND_DATA"."PROD_Rinse_Mode") OR ("Interlocking_Variables"."SIDEL_CIP_REC_DATA"."CIP_RecoveryRequest" AND "gBlenderEmpty" AND "gIN_FillerCIPChangeReady"); + + "DO_CIP_RecoverCompleted" := ("Interlocking_Variables"."SIDEL_CIP_REC_DATA"."CIP_RecoveryRequest" AND "Interlocking_Variables"."SIDEL_CIP_SEND_DATA"."PROD_Rinse_Mode") OR ("Interlocking_Variables"."SIDEL_CIP_REC_DATA"."CIP_RecoveryRequest" AND "gBlenderEmpty" AND "gIN_FillerCIPChangeReady"); + + "Interlocking_Variables"."CIP_SEND_DATA"."Change_Ready" := ("Interlocking_Variables"."SIDEL_CIP_REC_DATA"."CIP_RecoveryRequest" AND "Interlocking_Variables"."SIDEL_CIP_SEND_DATA"."PROD_Rinse_Mode") OR ("Interlocking_Variables"."SIDEL_CIP_REC_DATA"."CIP_RecoveryRequest" AND "gBlenderEmpty" AND "gIN_FillerCIPChangeReady"); + + // Network 68: CIP - Condition Ok (Original Language: LAD) + + "Interlocking_Variables"."SIDEL_CIP_SEND_DATA"."PROD_Production_Mode" := ("gBlenderAlarm" AND "gBlenderCIPMode" AND "Interlocking_Variables"."SIDEL_FILLER_REC_DATA"."CIP_ChangeReady") OR ("gBlenderAlarm" AND "gBlenderCIPMode" AND "Interlocking_Variables"."FILLER_MIXER_RECEIVE"."CIP_Condition_OK"); + + // Network 69: CIP - Cycle Ended (Original Language: LAD) + + "Interlocking_Variables"."CIP_SEND_DATA"."Cycle_Ended" := "gIN_FillerCIPCycleEnded"; + + // Network 70: CIP - Flip Completed (Original Language: LAD) + + "Interlocking_Variables"."SIDEL_CIP_SEND_DATA"."PROD_FillerRunOut" := ("Interlocking_Variables"."SIDEL_CIP_SEND_DATA"."PROD_FillerRunOut" AND "Interlocking_Variables"."SIDEL_CIP_REC_DATA"."Cip_FlipEnable") OR ("Interlocking_Variables"."SIDEL_CIP_REC_DATA"."Cip_FlipEnable" AND "Interlocking_Variables"."FILLER_MIXER_RECEIVE"."CIP_FlipFlop_Completed"); + + // Network 71: CIP - Water Pipe Ready (Original Language: LAD) + + "DO_CIP_WaterPipe_Ready" := "DI_WaterPipeCIP_Sensor"; + + // Network 72: CIP - Drain Completed (Original Language: LAD) + + "Interlocking_Variables"."CIP_SEND_DATA"."Drain_Completed" := ("gIN_FillerCIPDrainCompl" AND "gBlenderEmpty") OR ("gIN_CIP_DrainRequest" AND "gIN_FillerCIPDrainCompl" AND "gCIP_BlenderDrainDone"); + + "DO_CIP_DrainCompleted" := ("gIN_FillerCIPDrainCompl" AND "gBlenderEmpty") OR ("gIN_CIP_DrainRequest" AND "gIN_FillerCIPDrainCompl" AND "gCIP_BlenderDrainDone"); + + "Interlocking_Variables"."SIDEL_CIP_SEND_DATA"."CIP_ChangeSanitize" := ("gIN_FillerCIPDrainCompl" AND "gBlenderEmpty") OR ("gIN_CIP_DrainRequest" AND "gIN_FillerCIPDrainCompl" AND "gCIP_BlenderDrainDone"); + + // Network 73: Filler - Bottle Stop (Original Language: LAD) + + "DO_Flr_BottleStop" := "AUX FALSE"; + + // Network 74: Filler - Next Recipe (Original Language: LAD) + + "DO_FillerNextRecipe" := "System_RunOut_Variables"."FillerNextRecipeNum"; + + // Network 75: AVM311 - Product Tank Blow Off (Original Language: LAD) + + "DO_AVM311" := "HMI_Device"."AVM311"."Out" AND "HMI_Device"."AVM311"."Config"; + + // Network 76: AVM312 - Deaireator Reflux (Original Language: LAD) + + "DO_AVM312_Deair_Reflux" := "HMI_Device"."AVM312"."Out" AND "HMI_Device"."AVM312"."Config"; + + // Network 77: AVM313 - Product Recirculation (Original Language: LAD) + + "DO_AVM313" := "HMI_Device"."AVM313"."Out" AND "HMI_Device"."AVM313"."Config"; + + // Network 78: AVM313 - Product Recirculation (Original Language: LAD) + + "DO_AVM382" := "gBlenderCIPMode" OR "gBlenderRinseMode"; + + // Network 79: AVM315 - Product Tank Drain (Original Language: LAD) + + "DO_AVM315" := "HMI_Device"."AVM315"."Out" AND "HMI_Device"."AVM315"."Config"; + + // Network 80: AVM317 - Product Tank Spray Ball (Original Language: LAD) + + "DO_AVM317" := ("HMI_Device"."AVM317"."Out" AND "HMI_Device"."AVM317"."Config") OR ("HMI_Device"."AVM317_1"."Out" AND "HMI_Device"."AVM317_1"."Config"); + + // Network 81: AVP317_1 - Product Tank Spray Ball (Original Language: LAD) + + "DO_AVP317_1" := "HMI_Device"."AVP317_1"."Out" AND "HMI_Device"."AVP317_1"."Config"; + + // Network 82: AVM321 - Product Tank Over Fill (Original Language: LAD) + + "DO_AVM321" := "HMI_Device"."AVM321"."Out" AND "HMI_Device"."AVM321"."Config"; + + // Network 83: AVM322 - Water Pump PPN301 Priming (Original Language: LAD) + + "DO_AVM322" := "HMI_Device"."AVM322"."Out" AND "HMI_Device"."AVM322"."Config"; + + // Network 84: AVM323 - Water Pipe Drain (Original Language: LAD) + + "DO_AVM323" := ("HMI_Device"."AVM323"."Out" AND "HMI_Device"."AVM323"."Config") OR ("HMI_Device"."AVM323_1"."Out" AND "HMI_Device"."AVM323_1"."Config"); + + // Network 85: AVM326 - CO2 Injection Shut Off (Original Language: LAD) + + "DO_AVM326" := "HMI_Device"."AVM326"."Out" AND "HMI_Device"."AVM326"."Config"; + + // Network 86: AVM327 - Blendfill Still Water By-Pass Mixproof 1 (Original Language: LAD) + + "DO_AVM327" := "HMI_Device"."AVM327"."Out" AND "HMI_Device"."AVM327"."Config"; + + // Network 87: AVM328 - Blendfill Still Water By-Pass Mixproof 2 (Original Language: LAD) + + "DO_AVM328" := "HMI_Device"."AVM328"."Out" AND "HMI_Device"."AVM328"."Config"; + + // Network 88: AVM329 - Blendfill Still Water By-Pass Mixproof 3 (Original Language: LAD) + + "DO_AVM329" := "HMI_Device"."AVM329"."Out" AND "HMI_Device"."AVM329"."Config"; + + // Network 89: AVM330 - Blendfill Still Water By-Pass Drain Inlet Deaireator Tank (Original Language: LAD) + + "DO_AVM330" := "HMI_Device"."AVM330"."Out" AND "HMI_Device"."AVM330"."Config"; + + // Network 90: AVM339 - Still Water By-Pass Inlet Deaireator Tank (Original Language: LAD) + + "DO_AVM339" := "HMI_Device"."AVM339"."Out" AND "HMI_Device"."AVM339"."Config"; + + // Network 91: AVM340 - Still Water By-Pass Product Intercept (Original Language: LAD) + + "DO_AVM340" := "HMI_Device"."AVM340"."Out" AND "HMI_Device"."AVM340"."Config"; + + // Network 92: AVM341 - CO2 Inlet (Original Language: LAD) + + "DO_AVM341" := "HMI_Device"."AVM341"."Config" AND "HMI_Device"."AVM341"."Out"; + + // Network 93: AVM342 - N2 Inlet (Original Language: LAD) + + "DO_AVM342" := "HMI_Device"."AVM342"."Config" AND "HMI_Device"."AVM342"."Out"; + + // Network 94: AVM345 - Product Chiller Drain (Original Language: LAD) + + "DO_AVM345" := ("HMI_Device"."AVM345"."Out" AND "HMI_Device"."AVM345"."Config") OR ("HMI_Device"."AVM345_1"."Out" AND "HMI_Device"."AVM345_1"."Config"); + + // Network 95: AVM346 - Filler CO2 (Original Language: LAD) + + "DO_AVM346" := "HMI_Device"."AVM346"."Out" AND "HMI_Device"."AVM346"."Config"; + + // Network 96: AVM362 - Product Outlet (Original Language: LAD) + + "DO_AVM362" := "HMI_Device"."AVM362"."Out" AND "HMI_Device"."AVM362"."Config"; + + // Network 97: AVM363 - Product Outlet (Original Language: LAD) + + "DO_AVM363" := "HMI_Device"."AVM363"."Out" AND "HMI_Device"."AVM363"."Config"; + + // Network 98: AVM366 (Original Language: LAD) + + "DO_EV66_FillerRinseWater" := "HMI_Device"."AVM366"."Out" AND "HMI_Device"."AVM366"."Config"; + + // Network 99: AVM367 (Original Language: LAD) + + "DO_EV67_SyrupLineDrain" := "HMI_Device"."AVM367"."Out" AND "HMI_Device"."AVM367"."Config"; + + // Network 100: AVM368 (Original Language: LAD) + + "DO_EV68_FillerRinseWater" := "HMI_Device"."AVM368"."Out" AND "HMI_Device"."AVM368"."Config"; + + // Network 101: AVM369 - Blender Product Pipe Drain (Original Language: LAD) + + "DO_AVM369" := "HMI_Device"."AVM369"."Out" AND "HMI_Device"."AVM369"."Config"; + + // Network 102: AVM353 - Blender Product Pipe Drain (Original Language: LAD) + + "DO_AVM353" := "HMI_Device"."AVM353"."Out" AND "HMI_Device"."AVM353"."Config"; + + // Network 103: AVM371 (Original Language: LAD) + + "DO_EV71_FillerPrPipeDrai" := "HMI_Device"."AVM371"."Out" AND "HMI_Device"."AVM371"."Config"; + + "DO_EV71_FiRinseSprayBall" := "HMI_Device"."AVM371"."Out" AND "HMI_Device"."AVM371"."Config"; + + // Network 104: AVM372 (Original Language: LAD) + + "DO_EV72_FlrRinseTankDrai" := "HMI_Device"."AVM372"."Out" AND "HMI_Device"."AVM372"."Config"; + + // Network 105: AVM380 - Product Recirculation Without Chiller (Original Language: LAD) + + "DO_AVM380" := "HMI_Device"."AVM380"."Out" AND "HMI_Device"."AVM380"."Config"; + + // Network 106: AVM381 - Product Recirculation With Chiller (Original Language: LAD) + + "DO_AVM381" := "HMI_Device"."AVM381"."Out" AND "HMI_Device"."AVM381"."Config"; + + // Network 107: AVM396 - Steril Air Inlet (Original Language: LAD) + + "DO_AVM396" := "HMI_Device"."AVM396"."Out" AND "HMI_Device"."AVM396"."Config"; + + // Network 108: AVN314 - Deaireator Drain (Original Language: LAD) + + "DO_AVN314" := "HMI_Device"."AVN314"."Out" AND "HMI_Device"."AVN314"."Config"; + + // Network 109: AVN318 - Deaireator Over Fill (Original Language: LAD) + + "DO_AVN318" := "HMI_Device"."AVN318"."Out" AND "HMI_Device"."AVN318"."Config"; + + // Network 110: AVN325 - Vacuum Pump PPN304 Water In (Original Language: LAD) + + "DO_AVN325" := "HMI_Device"."AVN325"."Out" AND "HMI_Device"."AVN325"."Config"; + + // Network 111: AVN327 - Deaireator Tank Spray Ball (Original Language: LAD) + + "DO_AVN327" := "HMI_Device"."AVN327"."Out" AND "HMI_Device"."AVN327"."Config"; + + // Network 112: RVM301 - Product Tank Pressure Valve (Original Language: LAD) + + "DO_RVM301_Discharge" := "HMI_PID"."RVM301"."Out" < 0.1; + + // Network 113: AVN328 - Deaireator Tank Start CO2 Injection (Original Language: LAD) + + "DO_AVN328" := "HMI_Device"."AVN328"."Out" AND "HMI_Device"."AVN328"."Config"; + + // Network 114: AVN329 - Deaireator 2 Tank Spray Ball (Original Language: LAD) + + "DO_AVN329" := "HMI_Device"."AVN329"."Out" AND "HMI_Device"."AVN329"."Config"; + + // Network 115: AVN347 - Deaireator Tank Start CO2 Injection (Original Language: LAD) + + "DO_AVN347" := "HMI_Device"."AVN347"."Out" AND "HMI_Device"."AVN347"."Config"; + + // Network 116: AVN348 - Deaireator Inlet (Original Language: LAD) + + "DO_AVN348" := "HMI_Device"."AVN348"."Out" AND "HMI_Device"."AVN348"."Config"; + + // Network 117: AVN349 - Deaireator Bypass 1 (Original Language: LAD) + + "DO_AVN349" := "HMI_Device"."AVN349"."Out" AND "HMI_Device"."AVN349"."Config"; + + // Network 118: AVN350 - Deaireator Tank Start CO2 Injection (Original Language: LAD) + + "DO_AVN350" := "HMI_Device"."AVN350"."Out" AND "HMI_Device"."AVN350"."Config"; + + // Network 119: AVN373 - Deaireator 2 Drain (Original Language: LAD) + + "DO_AVN373" := "HMI_Device"."AVN373"."Out" AND "HMI_Device"."AVN373"."Config"; + + // Network 120: AVN374 - Deaireators Connection Drain (Original Language: LAD) + + "DO_AVN374" := "HMI_Device"."AVN374"."Out" AND "HMI_Device"."AVN374"."Config"; + + // Network 121: AVN377 - Deaireators Connection Drain (Original Language: LAD) + + "DO_AVN377" := "HMI_Device"."AVN377"."Out" AND "HMI_Device"."AVN377"."Config"; + + // Network 122: AVN378 - Deaireators Connection Drain (Original Language: LAD) + + "DO_AVN378" := "HMI_Device"."AVN378"."Out" AND "HMI_Device"."AVN378"."Config"; + + // Network 123: AVN390 (Original Language: LAD) + + "DO_AVN390" := "HMI_Device"."AVN390"."Out" AND "HMI_Device"."AVN390"."Config"; + + // Network 124: AVP316 - Syrup Tank Drain (Original Language: LAD) + + "DO_AVP316" := ("HMI_Device"."AVP316"."Out" AND "HMI_Device"."AVP316"."Config") OR ("HMI_Device"."AVP316_1"."Out" AND "HMI_Device"."AVP316_1"."Config"); + + // Network 125: AVP324 - Syrup Recirculation (Original Language: LAD) + + "DO_AVP324" := "HMI_Device"."AVP324"."Out" AND "HMI_Device"."AVP324"."Config"; + + // Network 126: AVP344 - Syrup Line Drain (Original Language: LAD) + + "DO_AVP344" := "HMI_Device"."AVP344"."Out" AND "HMI_Device"."AVP344"."Config"; + + // Network 127: AVP361 - Syrup Tank Spray Ball (Original Language: LAD) + + "DO_AVP361" := "HMI_Device"."AVP361"."Out" AND "HMI_Device"."AVP361"."Config"; + + // Network 128: AVP363 - Syrup Line In H2O (Original Language: LAD) + + "DO_AVP363" := "HMI_Device"."AVP363"."Out" AND "HMI_Device"."AVP363"."Config"; + + // Network 129: AVS337 - Syrup Line In Syrup 2 (Original Language: LAD) + + "DO_AVS337" := "HMI_Device"."AVP365"."Out" AND "HMI_Device"."AVP365"."Config"; + + // Network 130: AVP391 (Original Language: LAD) + + "DO_AVP391" := "HMI_Device"."AVP391"."Out" AND "HMI_Device"."AVP391"."Config"; + + // Network 131: AVS331 - CIP Venturi (Original Language: LAD) + + "DO_AVS331" := "HMI_Device"."AVS331"."Out" AND "HMI_Device"."AVS331"."Config"; + + // Network 132: AVS332 - CIP Wash Venturi (Original Language: LAD) + + "DO_AVS332" := "HMI_Device"."AVS332"."Out" AND "HMI_Device"."AVS332"."Config"; + + // Network 133: AVS333 - CIP Caustic (Original Language: LAD) + + "DO_AVS333" := "HMI_Device"."AVS333"."Out" AND "HMI_Device"."AVS333"."Config"; + + // Network 134: AVS334 - CIP Acid (Original Language: LAD) + + "DO_AVS334" := "HMI_Device"."AVS334"."Out" AND "HMI_Device"."AVS334"."Config"; + + // Network 135: AVS335 - CIP Peracetic Acid (Original Language: LAD) + + "DO_AVS335" := "HMI_Device"."AVS335"."Out" AND "HMI_Device"."AVS335"."Config"; + + // Network 136: AVS336 - CIP Recirculation (Original Language: LAD) + + "DO_AVS336" := "HMI_Device"."AVS336"."Out" AND "HMI_Device"."AVS336"."Config"; + + // Network 137: AVS337 - CIP Drain (Original Language: LAD) + + "DO_AVS337" := "HMI_Device"."AVS337"."Out" AND "HMI_Device"."AVS337"."Config"; + + // Network 138: Cooling (Original Language: LAD) + + "DO_Glycol_LineEnabled" := "gProductChillerEn" AND "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_EnProdTemp" AND "HMI_Variables_Status"."Procedures"."WarmRinseRun" AND "gBlenderCIPMode" AND "gBlenderProdMode"; + + "DO_Glycol_ColdRequest" := ("gProductChillerEn" AND "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_EnProdTemp" AND "HMI_Variables_Status"."Procedures"."WarmRinseRun" AND "gBlenderBlending" AND "gBlenderCIPMode" AND "gBlenderProdMode") OR ("gProductChillerEn" AND "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_EnProdTemp" AND "HMI_Variables_Status"."Procedures"."WarmRinseRun" AND "HMI_Variables_Status"."Procedures"."ColdRinseRun" AND "gBlenderCIPMode" AND "gBlenderProdMode"); + + // Network 139: Cooling Request (Original Language: LAD) + + // Network 139 has no logic elements. + + // Network 140: AVS338 - CIP Heater (Original Language: LAD) + + "DO_AVS338" := "HMI_Device"."AVS338"."Out" AND "HMI_Device"."AVS338"."Config"; + + // Network 141: MIX - SAFETIES (Original Language: LAD) + + SEL_R(G := "gWorkshopTest" AND "gWorkshop_Co2_Presence", IN0 := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_DeareationFactor", IN1 := 1.0); + + "mRealAnalog" := "HMI_PID"."RVN304"."Sp" * "mFTFS"; + + SEL_R(G := "HMI_PID"."RVN304"."ManualControl"."ManOut" OR "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Flowtronic", IN0 := "mRealAnalog", IN1 := "HMI_PID"."RVN304"."Out"); + + SEL_R(G := "HMI_PID"."RVN304"."ManualControl"."ManOut" OR "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Flowtronic", IN0 := "Blender_Variables"."gFlowTronic", IN1 := 100.0); + + // Network 142: mRealMax Half (Original Language: LAD) + + "mRealMax_Half" := "mRealMax" / 1.0; + + // Network 143: RVN304 - Analog Output (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" AND "Blender_Variables_Pers"."gCarboStillRecipe" AND "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_Deareation_Co2" AND "HMI_PID"."RVN304"."Config" THEN + WritePeripheral(Analog_Value := "HMI_PID"."RVN304"."Sp", MAX_Analog_Value := 666.6, MAX_Out := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := 0.0, MIN_Out := 0); + END_IF; + + // Network 144: RVN305 - Analog Output (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" AND "Blender_Variables_Pers"."gCarboStillRecipe" AND "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_Deareation_Co2" AND "HMI_PID"."RVN305"."Config" THEN + WritePeripheral(Analog_Value := "HMI_PID"."RVN304"."Sp", MAX_Analog_Value := "mRealMax_Half", MAX_Out := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := 0.0, MIN_Out := 0); + END_IF; + + // Network 145: CO2 Injection Pressure (Original Language: LAD) + + Output_CO2InjPress(); + + // Network 146: PCM306 - Analog Output (Original Language: LAD) + // Supposing that the MAX reference freq. in the VFC is 100 Hz, so 50% in + // production means 50Hz, 73.2% in CIP means 73.2Hz that is about 3Bar. + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" AND "HMI_PID"."PCM306"."Config" THEN + WritePeripheral(Analog_Value := "HMI_PID"."PCM306"."Sp", MAX_Analog_Value := "HMI_PID"."PCM306"."OutMax", MAX_Out := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := "HMI_PID"."PCM306"."OutMin", MIN_Out := 0); + END_IF; + + // Network 147: Filler EQ Press - Analog Output (Original Language: LAD) + + IF Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0) THEN + WritePeripheral(Analog_Value := "Blender_Variables"."gCO2EqPressure", MAX_Analog_Value := 100.0, MAX_Out := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := 0.0, MIN_Out := 0); + END_IF; + + // Network 148: ProductRunOut Amount - Analog Output (Original Language: LAD) + + IF Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SignalExchange", 0) THEN + WritePeripheral(Analog_Value := "System_RunOut_Variables"."TotalProductAvailable", MAX_Analog_Value := "Blender_Constants"."gMaxProdAvailAmount", MAX_Out := "Blender_Constants"."gAnalogMaxValue", MIN_Analog_Value := "Blender_Constants"."gMinProdAvailAmount", MIN_Out := 0); + END_IF; + + // Network 149: CIP - Hot Water Request (Original Language: LAD) + + "DO_CIP_HotWaterReq" := "gOUT_CIPHotWaterRequest"; + + // Network 150: CIP - Send Soda Request (Original Language: LAD) + + "DO_CIP_SendSodaReq" := "gOUT_CIPSendSodaRequest"; + + // Network 151: ProdAnalizer - Hold Signal To Product Meter (Original Language: LAD) + + "MaselliHold" := "gNoFreezeProductMeter" AND "gBlenderProdMode"; + + // Network 152: To CIP Solution Request (Original Language: LAD) + + "DO_CIP_Fault" := "gBlenderAlarm" AND "gBlenderCIPMode"; + + // Network 153: To CIP Solution Request (Original Language: LAD) + + "DO_CIP_Mode_En" := "gIN_CIP_CIPMode" AND "gBlenderCIPMode"; + + "DO_Flr1_CIPMode" := "gIN_CIP_CIPMode" AND "gBlenderCIPMode"; + + // Network 154: To CIP Ready (Original Language: LAD) + + "DO_CIP_RdyChmcl" := "gBlenderAlarm" AND "DI_Flr1_CIP/RinseFiller" AND "gBlenderCIPMode"; + + // Network 155: Maselli Spare (Original Language: LAD) + + "MaselliSpare" := TRUE; + + // Network 156: *** (Original Language: LAD) + + // Network 156 has no logic elements. + + // Network 157: MES - Production (Original Language: LAD) + + "DO_MES_PRODUCTION" := "gBlenderProdMode"; + + // Network 158: MES - CIP Mode (Original Language: LAD) + + "DO_MES_CIP" := "gBlenderCIPMode"; + + // Network 159: MES - Running 1(Running - 0 Stop) (Original Language: LAD) + + "DO_MES_Running" := "gBlenderBlending"; + + // Network 160: MES - FAULT (1= FAULT) (Original Language: LAD) + + "DO_MES_FAULT" := "gBlenderAlarm"; + + // Network 161: PC Restart (Original Language: LAD) + + // Network 161 did not produce printable SCL code. + + // Network 162: Sub_Carb (Original Language: LAD) + + IF "Disable_Bit" THEN + "SubCarb_DB"(ALARM := "gHighPriorityAlarm", CIP := "gBlenderCIPMode" OR "Blender_Variables_Pers"."gCarboStillProduct", CloseLimit1 := 244.0, CloseLimit2 := 255.0, CloseLimit3 := 540.0, CloseLimit4 := 580.0, DelayClose1 := T#0S, DelayClose2 := T#0S, DelayClose3 := T#0S, DelayClose4 := T#0S, DelayOpen1 := T#0S, DelayOpen2 := T#0S, DelayOpen3 := T#0S, DelayOpen4 := T#0S, NUM := 4, OpenLimit1 := 244.0, OpenLimit2 := 255.0, OpenLimit3 := 540.0, OpenLimit4 := 580.0); + END_IF; + + // Network 163: (Original Language: LAD) + + "Tag_11" := "HMI_Instrument"."FTN301"."PVFiltered" + "HMI_Instrument"."FTP302"."PVFiltered"; + + // Network 164: Sub Carbo Customer (Original Language: LAD) + + "DO_EV1_SubCarb" := ("HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_ProductionRate" >= 244.0) OR ("gBlenderCIPMode" AND "gHighPriorityAlarm"); + + "DO_EV2_SubCarb" := ("HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_ProductionRate" >= 255.0) OR ("gBlenderCIPMode" AND "gHighPriorityAlarm"); + + "DO_EV3_SubCarb" := ("HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_ProductionRate" >= 540.0) OR ("gBlenderCIPMode" AND "gHighPriorityAlarm"); + + "DO_EV4_SubCarb" := ("HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_ProductionRate" >= 540.0) OR ("gBlenderCIPMode" AND "gHighPriorityAlarm"); + + // Network 165: Sud_Carb Booster Pump (Original Language: LAD) + + "DO_BoosterPump_SubCarb" := "HMI_Device"."PPN301"."Out" AND "Blender_Variables_Pers"."gCarboStillProduct" AND "gBlenderProdMode"; + + // Network 166: New Water Bypass valves (Original Language: LAD) + + "DO_WaterBypass1" := ("HMI_Device"."AVM346"."Out" AND "gBlenderCIPMode") OR ("gBlenderCIPMode" AND "gStillWaterByPassEn"); + + // Network 167: New Water Bypass 2 (Original Language: LAD) + + "DO_EV105_WaterBypass" := ("HMI_Device"."AVM346"."Out" AND "gBlenderCIPMode") OR ("gBlenderCIPMode" AND "gStillWaterByPassEn"); + + // Network 168: New Water Inlet Before Mixer (Original Language: LAD) + + "DO_EV100_WaterInlet" := ("gBlenderCIPMode" AND "Blender_Variables_Pers"."gCarboStillProduct") OR ("gBlenderCIPMode" AND "gStillWaterByPassEn"); + + // Network 169: New Syrup And CIP inlet before Mixer (Original Language: LAD) + + "DO_EV102_Syrup And CIP Inlet" := "gBlenderCIPMode" OR ("gBlenderRinseMode" AND "Blender_Variables_Pers"."gWaterRecipe"); + + // Network 170: Spare (Original Language: LAD) + + "DO_EV103_WaterInterception" := "gBlenderCIPMode" OR ("Blender_Variables_Pers"."gCarboStillProduct" AND "Blender_Variables_Pers"."gWaterRecipe"); + + // Network 171: (Original Language: LAD) + + // Network 171 has no logic elements. + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Output_AnalogValueToHMI.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Output_AnalogValueToHMI.md new file mode 100644 index 0000000..f5dcbea --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Output_AnalogValueToHMI.md @@ -0,0 +1,116 @@ +```pascal +FUNCTION "Output_AnalogValueToHMI" : Void +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : TASK2 +NAME : 'Name' +VERSION : 1.0 + +BEGIN + + + // TO the HMI FOR display + + "HMI_Instrument".FTN301.PVFiltered := "Blender_Variables".gH2O_Flow_Meas ; + "HMI_Variables_Status".Analog_Values.WaterTotalizer := "Blender_Variables_Pers".gWaterTotal ; + + "HMI_Instrument".FTP302.PVFiltered := "Blender_Variables".gSYR_Flow_Meas ; + "HMI_Variables_Status".Analog_Values.SyrupTotalizerKg := "Blender_Variables_Pers".gSyrupTotal ; + + (* classic code: IF "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupDensity <> 0.0 AND "gBlenderBlending" THEN*) + IF "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupDensity <> REAL#0.0 AND "gBlenderBlending" THEN + "HMI_Variables_Status".Analog_Values.SyrupTotalizerLt := "Blender_Variables_Pers".gSyrupTotal / "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupDensity ; + END_IF; + + "HMI_Instrument".FTP302_Brix.PVFiltered := "Profibus_Variables".gFTP302_Brix ; //"Blender_Variables".gMeterSyrBrix + "HMI_Instrument".FTP302_Density.PVFiltered := "Profibus_Variables".gFTP302_Density ; //"Blender_Variables".gMeterSyrDensity + "HMI_Instrument".FTP302_Temperature.PVFiltered := "Profibus_Variables".gFTP302_Temp ; //"Blender_Variables".gMeterSyrTemp + + "HMI_Instrument".FTM303.PVFiltered := "Blender_Variables".gCO2_Flow_Meas; + "HMI_Variables_Status".Analog_Values.CO2Temperature := "Profibus_Variables".gFTM303_Temp ; + "HMI_Variables_Status".Analog_Values.CO2Density := "Profibus_Variables".gFTM303_Density ; + "HMI_Variables_Status".Analog_Values.CO2Totalizer := "Blender_Variables_Pers".gCO2Total ; // Kg + + "HMI_Variables_Status".Analog_Values.ProductTotalizer := "Blender_Variables_Pers".gWaterTotal + "HMI_Variables_Status".Analog_Values.SyrupTotalizerLt ; + + "HMI_Variables_Status".Analog_Values.ProductBrixCorrection := "Blender_Variables".gBrixTrackingCorr ; + "HMI_Variables_Status".Analog_Values.ProductCO2Correction := "Blender_Variables".gCO2TrackingCorr ; + + "HMI_Instrument".QTM_301.PVFiltered := "Blender_Variables".gProductBrix ; + "HMI_Instrument".QTM_302.PVFiltered := "Blender_Variables".gProductCO2 ; + "HMI_Instrument"._ProductO2Conc.PVFiltered := "Blender_Variables".gProductO2Conc ; + "HMI_Instrument".QTM_RecipeNum.PVFiltered := "mPDS_PA_Data".Output_To_mPDS.gPAmPDSNumRecipe; + "HMI_Instrument".QTM_Temperature.PVFiltered := "Blender_Variables".gProductTemp ; + + // Blending Error TO HMI + + IF NOT "Procedure_Variables".First_Production.Done OR "gBlenderCIPMode" OR "gBlenderRinseMode" OR "gBlendErrorLowSyr_Fault" OR "gBlendErrorHighSyr_Fault" THEN + "HMI_Variables_Status".Analog_Values.MaxBlendError := "HMI_Blender_Parameters".ProcessSetup._MaxBlendError ; + "HMI_Variables_Status".Analog_Values.MaxCarboCO2Error := "HMI_Blender_Parameters".ProcessSetup._MaxCarboCO2Error ; + ELSIF "gBlenderEnToRamp" THEN + (* classic code: "HMI_Variables_Status".Analog_Values.MaxBlendError := "HMI_Blender_Parameters".ProcessSetup._MaxBlendError / 6.0 ;*) + "HMI_Variables_Status".Analog_Values.MaxBlendError := "HMI_Blender_Parameters".ProcessSetup._MaxBlendError / REAL#3.0 ; + (* classic code: "HMI_Variables_Status".Analog_Values.MaxCarboCO2Error := "HMI_Blender_Parameters".ProcessSetup._MaxCarboCO2Error / 6.0 ;*) + "HMI_Variables_Status".Analog_Values.MaxCarboCO2Error := "HMI_Blender_Parameters".ProcessSetup._MaxCarboCO2Error / REAL#3.0 ; + ELSE + (* classic code: "HMI_Variables_Status".Analog_Values.MaxBlendError := "HMI_Blender_Parameters".ProcessSetup._MaxBlendError / 2.0 ;*) + "HMI_Variables_Status".Analog_Values.MaxBlendError := "HMI_Blender_Parameters".ProcessSetup._MaxBlendError / REAL#1.0 ; + (* classic code: "HMI_Variables_Status".Analog_Values.MaxCarboCO2Error := "HMI_Blender_Parameters".ProcessSetup._MaxCarboCO2Error / 2.0 ;*) + "HMI_Variables_Status".Analog_Values.MaxCarboCO2Error := "HMI_Blender_Parameters".ProcessSetup._MaxCarboCO2Error / REAL#1.0 ; + END_IF; + + "HMI_Variables_Status".Analog_Values.BlendError := "Blender_Variables".gBlendError ; + "HMI_Variables_Status".Analog_Values.CarboError := "Blender_Variables".gCarboCO2Error ; + + "HMI_Alarms".gH_Message[012] := "gFTN301_FlowTooLow" ; + "HMI_Alarms".gH_Message[013] := "gFTN301_SpeedTooLow" ; + "HMI_Variables_Status".Analog_Values.ActualRatio := "gActualSP_RatioVol" ; + "HMI_Variables_Status".Analog_Values.WaterPercentage := "Blender_Variables".gActualWaterPerc ; + "HMI_Variables_Status".Analog_Values.SyrupPercentage := "Blender_Variables".gActualSyrupPerc ; + "HMI_Variables_Status".Analog_Values.ActualCO2 := "Blender_Variables".gActual_SP_CO2 ; + + "HMI_Instrument".LTP303.SP := "HMI_PID".RVP303.Sp ; + "HMI_Instrument".PTM304.SP := "HMI_PID".RVM301.Sp ; + IF NOT "Blender_Variables_Pers".gCarboStillRecipe THEN + "HMI_Instrument".PTN313.SP := "Blender_Constants".gTN301VacuumPress ; + ELSE + (* classic code: "HMI_Instrument".PTN313.SP := 0.0 ;*) + "HMI_Instrument".PTN313.SP := REAL#0.0 ; + END_IF ; + "HMI_Instrument".PCM306.SP := "HMI_PID".PCM306.Sp ; + "HMI_Instrument".TT_S5.SP := "HMI_PID".RVS318.Sp ; + "HMI_Instrument".TTS305_1.SP := "HMI_PID".RVS318.Sp ; + "HMI_Instrument".TTM306_PRD.SP := "HMI_PID".RVM319_PRD.Sp ; + "HMI_Instrument".TTM306_H2O.SP := "HMI_PID".RVM319_H2O.Sp ; + "HMI_Instrument".FTN301.SP := "HMI_PID".RMM301.Sp ; + "HMI_Instrument".FTP302.SP := "HMI_PID".RMP302.Sp ; + "HMI_Instrument".FTP302_Density.SP := "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupDensity ; + "HMI_Instrument".FTP302_Brix.SP := "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupBrix ; + "HMI_Instrument".FTM303.SP := "HMI_PID".RMM303.Sp ; + "HMI_Instrument".PTP338.SP := "HMI_Blender_Parameters".ProcessSetup._SyrupLinePressure ; + IF "CIP_Program_Variables".Status.WaitEventRequest.LowConductivity THEN + "HMI_Instrument".CTS301.SP := "CIP_Program_Variables".General_Data.SPConductivity ; + ELSE + (* classic code: "HMI_Instrument".CTS301.SP := 0.0 ;*) + "HMI_Instrument".CTS301.SP := REAL#0.0 ; + END_IF ; + IF "CIP_Program_Variables".Status.WaitEventRequest.HighConductivity THEN + "HMI_Instrument".CTS302.SP := "CIP_Program_Variables".General_Data.SPConductivity ; + ELSE + (* classic code: "HMI_Instrument".CTS302.SP := 0.0 ;*) + "HMI_Instrument".CTS302.SP := REAL#0.0 ; + END_IF ; + "HMI_Instrument".QTM_302.SP := "HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Vols * "HMI_Blender_Parameters".Actual_Recipe_Parameters._CO2Fact ; + "HMI_Instrument".QTM_301.SP := "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProductBrix + "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProdBrixOffset ; + "HMI_Instrument".QTM_Temperature.SP := "HMI_PID".RVM319_PRD.Sp ; + "HMI_Instrument".RVN304.SP := "HMI_PID".RVN304.Sp ; + + "P1_Pres_Edit_Recipe" := ("gHProcessSetup_KWatPump"*(SQR("HMI_Recipe_Edit".Actual_Recipe_Parameters._WaterPumpFreq))/10) - "PID_Variables".PPN301FrictionLoss; + + "HMI_Variables_Status".Analog_Values.PPN301_Pressure := "P1_Pres_Edit_Recipe" ; + + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Output_CO2InjPress.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Output_CO2InjPress.md new file mode 100644 index 0000000..a67cdb9 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Output_CO2InjPress.md @@ -0,0 +1,100 @@ +```pascal +// Block Type: FC +// Block Number: 2021 +// Original Network Languages: LAD, STL +// Block Comment: +// TASK2 + +FUNCTION "Output_CO2InjPress" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + gR_CO2_SP_Real : Real; + gR_CO2_SP_Int : Word; + gR_CO2_SP_DInt : DInt; + gR_CO2_Max : Int; + gR_CO2_Min : Int; + mAux : Bool; + mSel : Bool; + mAuxCalc : Real; + mAuxDInt : DInt; + mCO2InjOffset : Real; + mCO2TestReq : Bool; +END_VAR + +BEGIN + + // Network 1: Setpoint (Original Language: LAD) + + "gR_CO2_SP_Real" := "Blender_Variables"."gCarboCO2Error" * "Blender_Variables"."gK_RecCarboCO2Error"; + + "gR_CO2_SP_Real" := "HMI_PID"."RMM303"."Sp" - "gR_CO2_SP_Real"; + + LIMIT_R(IN := "gR_CO2_SP_Real", MN := "HMI_Blender_Parameters"."ProcessSetup"."_InjCO2Press_MinFlow", MX := "HMI_Blender_Parameters"."ProcessSetup"."_InjCO2Press_MaxFlow"); + + // Network 2: Max Value (Original Language: LAD) + + // Network 2 did not produce printable SCL code. + + // Network 3: Min Value (Original Language: LAD) + + // Network 3 did not produce printable SCL code. + + // Network 4: Offset (Original Language: LAD) + + "HMI_Instrument"."PCM306_Offset"."Zero" := "HMI_Blender_Parameters"."ProcessSetup"."_InjCO2Press_Offset"; + + // Network 5: Scaling (Original Language: LAD) + + ReadAnalogIn(ANALOG := "HMI_Instrument"."PCM306_Offset", MAX_Analog_Value := "gR_CO2_Max", MIN_Analog_Value := "gR_CO2_Min", PEW := "gR_CO2_SP_Int"); + + // Network 6: Test (Original Language: STL) + + // --- BEGIN STL Network 6 --- + + A "gWorkshopTest" + AN "Procedure_Variables".Blender_Run.Running + A "HMI_Service".Workshop_Test.CO2TestRequest + = "mCO2TestReq" + A "mCO2TestReq" + JNB _007 + L "HMI_PID".RVM301.Pv + L 2.0 + ADD_R + T "HMI_PID".PCM306.Sp + _007: NOP_0 + + // --- END STL Network 6 --- + + // Network 7: Injection Offset (Original Language: LAD) + + IF "mCO2TestReq" THEN + LIMIT_R(IN := "HMI_Instrument"."PCM306_Offset"."PV", MN := 0.0, MX := "HMI_Instrument"."PCM306_Offset"."Zero"); + END_IF; + + // Network 8: PCM306 - Carbo Co2 Pressure (Original Language: LAD) + + IF ("mCO2TestReq" AND "mPCM306_Reset" AND "HMI_Device"."AVM341"."Out" AND "gBlenderCIPMode" AND "Blender_Variables_Pers"."gCarboStillRecipe" AND "Procedure_Variables"."CarboWaterLine"."Latch" AND "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_GAS2_Injection") OR ("mCO2TestReq" AND "mPCM306_Reset" AND "HMI_Device"."AVM342"."Out" AND "gBlenderCIPMode" AND "Blender_Variables_Pers"."gCarboStillRecipe" AND "Procedure_Variables"."CarboWaterLine"."Latch" AND "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_GAS2_Injection") THEN + "HMI_PID"."PCM306"."Sp" := "HMI_Blender_Parameters"."ProcessSetup"."_CarboCO2Pressure" - "mCO2InjOffset"; + END_IF; + + IF ("mCO2TestReq" AND "mPCM306_Reset" AND "HMI_Device"."AVM341"."Out" AND "gBlenderCIPMode" AND "Blender_Variables_Pers"."gCarboStillRecipe" AND "Procedure_Variables"."CarboWaterLine"."Latch") OR ("mCO2TestReq" AND "mPCM306_Reset" AND "HMI_Device"."AVM342"."Out" AND "gBlenderCIPMode" AND "Blender_Variables_Pers"."gCarboStillRecipe" AND "Procedure_Variables"."CarboWaterLine"."Latch") THEN + "HMI_PID"."PCM306"."Sp" := 11.0; + END_IF; + + IF ("mCO2TestReq" AND "mPCM306_Reset" AND "HMI_Device"."AVM341"."Out" AND "gBlenderCIPMode" AND "Blender_Variables_Pers"."gCarboStillRecipe" AND "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_GAS2_Injection") OR ("mCO2TestReq" AND "mPCM306_Reset" AND "HMI_Device"."AVM342"."Out" AND "gBlenderCIPMode" AND "Blender_Variables_Pers"."gCarboStillRecipe" AND "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_GAS2_Injection") THEN + "HMI_PID"."PCM306"."Sp" := "HMI_Blender_Parameters"."ProcessSetup"."_GAS2InjectionPress"; + END_IF; + + IF ("mCO2TestReq" AND "mPCM306_Reset" AND "HMI_Device"."AVM341"."Out" AND "gBlenderCIPMode" AND "Blender_Variables_Pers"."gCarboStillRecipe" AND "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_GAS2_Injection") OR ("mCO2TestReq" AND "mPCM306_Reset" AND "HMI_Device"."AVM342"."Out" AND "gBlenderCIPMode" AND "Blender_Variables_Pers"."gCarboStillRecipe" AND "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_GAS2_Injection") THEN + "HMI_PID"."PCM306"."Sp" := 2.0; + END_IF; + + // Network 9: PCM306 High Pressure - Supplies Alarm (Original Language: LAD) + + "gPCM306HighPress" := "HMI_Instrument"."PTM308"."PVFiltered" >= 18.0; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Outputs.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Outputs.md new file mode 100644 index 0000000..1dfccdb --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Outputs.md @@ -0,0 +1,35 @@ +# Tag Table: Outputs + +| Name | Datatype | Address | Comment | +|---|---|---|---| +| `DO_PPM306_Run` | `Bool` | `%Q11.3` | DO_PPM306_Run | +| `DO_SyrupValve_Enable` | `Bool` | `%Q11.6` | Valve Power Enable (Power Supply Analog Signal) | +| `DO_Flr1_CIP_DrainRequest` | `Bool` | `%M3660.0` | FILLER - Cip Drain Request | +| `DO_Flr1_CIP_CleaningEnd` | `Bool` | `%M3660.1` | FILLER - Cip Cleaning Ended | +| `DO_PPN301_Run` | `Bool` | `%Q7.4` | DO_PPN301_SoftStartPower | +| `DO_PPP302_Run` | `Bool` | `%Q7.5` | DO_PPP302_Run | +| `DO_SyRm_WaterRequest` | `Bool` | `%Q68.1` | To syrup Room Water Request | +| `P_AO_RMM301` | `Word` | `%QW100` | RMM301 - Water Flow Control | +| `P_AO_RMP302` | `Word` | `%QW102` | RMP302 - Syrup Flow Control | +| `P_AO_RMM303` | `Word` | `%QW104` | RMM303 - Gas Flow Control | +| `P_AO_RVM301` | `Word` | `%QW114` | RVM301 - Product Tank Pressure Valve | +| `P_AO_RVN304` | `Word` | `%QW108` | RVN304 - Deaireation Valve | +| `P_AO_RVM319` | `Word` | `%QW110` | RVM319 - Chiller Temperature control | +| `P_AO_RVP303` | `Word` | `%QW806` | RVP303 - Syrup Tank Level Valve | +| `P_AO_PCM306` | `Word` | `%QW122` | PCM306 - Gas Injection Pressure Control | +| `P_FTM303_Tot_Ctrl` | `Byte` | `%QB3240` | MIX - | +| `P_FTP302_Tot_Ctrl` | `Byte` | `%QB2070` | MIX - | +| `P_FTN301_Tot_Ctrl` | `Byte` | `%QB3100` | MIX - | +| `DO_HMIPowerSupply` | `Bool` | `%Q0.0` | Cut Power to PC | +| `DO_CtrlCircuitRun` | `Bool` | `%Q5.1` | Electrical Panel Reset | +| `DO_Yellow_Lamp` | `Bool` | `%Q7.3` | DO_Yellow_Lamp | +| `DO_Horn` | `Bool` | `%Q7.0` | DO_Horn | +| `DO_CIP_Mode_En` | `Bool` | `%Q60.0` | To CIP Modo Enable | +| `DO_CIP_DrainCompleted` | `Bool` | `%Q60.1` | CIP - Drain Completed | +| `DO_SyrRoom_SyrupRequest` | `Bool` | `%Q68.0` | SYRUP ROOM - Syrup Request | +| `P_gPPM303_VFC_ControlWord` | `Word` | `%QW1640` | MIX - Product Pump - Profibus Variables | +| `P_gPPM303_VFC_Refvalue` | `Word` | `%QW1642` | MIX - Product Pump - Profibus Variables | +| `P_PDS_Recipe_Number` | `Byte` | `%QB15001` | PDS Recipe Number | +| `P_PDS_Freeze_To_PDS` | `Bool` | `%Q15002.0` | | +| `P_PDS_Stop_to_PDS` | `Bool` | `%Q15002.1` | | + diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/OutputsFesto.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/OutputsFesto.md new file mode 100644 index 0000000..11deee3 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/OutputsFesto.md @@ -0,0 +1,26 @@ +# Tag Table: OutputsFesto + +| Name | Datatype | Address | Comment | +|---|---|---|---| +| `DO_AVM311` | `Bool` | `%Q100.0` | MIX - Product Tank Blow Off | +| `DO_AVM313` | `Bool` | `%Q100.1` | MIX - Product Recirculation | +| `DO_AVN314` | `Bool` | `%Q100.2` | MIX - Deaireator Drain | +| `DO_AVM315` | `Bool` | `%Q100.3` | MIX - Product Tank Drain | +| `DO_AVP316` | `Bool` | `%Q100.4` | MIX - Syrup Tank Drain | +| `DO_AVM317` | `Bool` | `%Q100.5` | MIX - Product Tank Spray Ball | +| `DO_AVN318` | `Bool` | `%Q100.6` | MIX - Deaireator Over Fill | +| `DO_AVM321` | `Bool` | `%Q100.7` | MIX - Product Tank Over Fill | +| `DO_AVM322` | `Bool` | `%Q101.0` | MIX - Water Pump PPN301 Priming | +| `DO_AVM323` | `Bool` | `%Q101.1` | MIX - Water Pipe Drain | +| `DO_AVP324` | `Bool` | `%Q101.2` | MIX - Syrup Recirculation | +| `DO_AVM326` | `Bool` | `%Q101.3` | MIX - CO2 Injection Shut Off | +| `DO_AVN327` | `Bool` | `%Q101.4` | MIX - Deaireator Tank Spray Ball | +| `DO_AVN328` | `Bool` | `%Q101.5` | MIX - Deaireator Tank Start CO2 Injection | +| `DO_AVP344` | `Bool` | `%Q101.6` | MIX - Syrup Line Drain | +| `DO_AVM345` | `Bool` | `%Q101.7` | MIX - Product Chiller Drain | +| `DO_AVM362` | `Bool` | `%Q102.1` | MIX - Product Outlet | +| `DO_AVM381` | `Bool` | `%Q102.3` | MIX - Product Recirculation With Chiller | +| `DO_AVP361` | `Bool` | `%Q102.6` | MIX - Syrup Tank Spray Ball | +| `DO_RVN302` | `Bool` | `%Q103.4` | MIX - Deaireator Floater | +| `DO_RVN302_1` | `Bool` | `%Q103.5` | MIX - Deaireator 2 Fill Up | + diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/OutputsMaster.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/OutputsMaster.md new file mode 100644 index 0000000..c3aac21 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/OutputsMaster.md @@ -0,0 +1,186 @@ +# Tag Table: OutputsMaster + +| Name | Datatype | Address | Comment | +|---|---|---|---| +| `DO_Syrup_Counter_Pulse` | `Bool` | `%M3500.0` | MIX - Syrup Counter Pulse ( 1 Pulse = 100 Lt.) | +| `DO_Aux24DC` | `Bool` | `%M3500.1` | MIX - 24DC ON | +| `DO_Water_Counter_Pulse` | `Bool` | `%M3500.2` | DO_Water_Counter_Pulse | +| `DO_PB_HornReset` | `Bool` | `%M3500.3` | DO PB horn Reset | +| `DO_CO2_Counter_Pulse` | `Bool` | `%M3500.4` | MIX - Water Counter Pulse ( 1 Pulse = 100 Kg) | +| `DO_Green_Lamp` | `Bool` | `%M3500.5` | DO_Green_Lamp | +| `DO_Blu_Lamp` | `Bool` | `%M3500.6` | DO_Blu_Lamp | +| `DO_MES_CIP` | `Bool` | `%M3500.7` | MES - CIP Mode | +| `DO_MES_PRODUCTION` | `Bool` | `%M3501.0` | MES - Production | +| `DO_MES_Running` | `Bool` | `%M3501.1` | MES - Running 1(Running - 0 Stop) | +| `DO_MES_FAULT` | `Bool` | `%M3501.2` | MES - FAULT (1= FAULT) | +| `DO_PPN304_Run` | `Bool` | `%M3501.4` | DO_PPN304_Run | +| `DO_PPN301_1053K1` | `Bool` | `%M3501.5` | DO_PPN301_ElectonicStart | +| `DO_PCM306En` | `Bool` | `%M3501.6` | DO_PCM306_Enabled Power On | +| `DO_CIP_CleaningFault` | `Bool` | `%M3501.7` | CIP - Cleaning Fault | +| `DO_CIP_SolutionReturn` | `Bool` | `%M3502.0` | CIP - Solution Return | +| `DO_CIP_RecoverCompleted` | `Bool` | `%M3502.1` | CIP - Recover Completed | +| `DO_CIP_SendSodaReq` | `Bool` | `%M3502.2` | CIP - Send Soda Request [for local CIP only] | +| `DO_CIP_WaterPipe_Ready` | `Bool` | `%M3502.3` | CIP - Water Pipe Ready [for local CIP only] | +| `DO_CIP_HotWaterReq` | `Bool` | `%M3502.4` | CIP - Hot Water Request [for local CIP only] | +| `DO_Flr_CIP_CleaningFault` | `Bool` | `%M3502.5` | FILLER - Cip Fault | +| `DO_Flr_CIP_ProdSending` | `Bool` | `%M3502.6` | FILLER - Cip Product Sending | +| `DO_Flr_CIP_RecoverReq` | `Bool` | `%M3502.7` | FILLER - Cip Recover Request | +| `DO_Flr_CIP_Running` | `Bool` | `%M3503.0` | FILLER - Cip Running | +| `DO_Flr_CIP_TankFilling` | `Bool` | `%M3503.1` | FILLER - Flooding Request | +| `DO_Flr_CIP_RinseSending` | `Bool` | `%M3503.2` | FILLER - Rinse Sending | +| `DO_Flr_BottleStop` | `Bool` | `%M3503.3` | FILLER - Bottles Stop | +| `DO_Flr_PROD_Run_Out` | `Bool` | `%M3503.4` | FILLER - Run Out Request | +| `DO_Flr_ProductCompleted` | `Bool` | `%M3503.5` | FILLER - Product Completed | +| `DO_Flr_FastRinseRequest` | `Bool` | `%M3503.6` | FILLER - Fast Change Over Rinse Request | +| `DO_Flr_WaterRinseReady` | `Bool` | `%M3503.7` | FILLER - Fast Change Over Water Ready | +| `DO_FillerNextRecipe` | `Byte` | `%MB3504` | MIX - | +| `DO_SyrupRoomPump_Run` | `Bool` | `%M3505.0` | Syrup Room - Syrup Pump Request | +| `DO_SyrupRoomWaterReq` | `Bool` | `%Q1.1` | Syrup Room - Water Pump Request | +| `DO_AVP317_1` | `Bool` | `%Q19.1` | MIX - CIP To Syrup | +| `DO_AVM363` | `Bool` | `%M3505.4` | MIX - Blender to filler 1 | +| `DO_AVN390` | `Bool` | `%M3505.5` | | +| `DO_AVP391` | `Bool` | `%M3505.6` | MIX - | +| `DO_AVM353` | `Bool` | `%M3506.0` | MIX - Blender to filler 2 Drain | +| `DO_AVM328` | `Bool` | `%M3506.1` | MIX - Blendfill Still Water By-Pass Mixproof 2 | +| `DO_RVM301` | `Bool` | `%Q16.0` | MIX - Deaireator Level Control | +| `DO_AVN373` | `Bool` | `%Q16.3` | MIX - Deaireator 2 Drain | +| `DO_AVN374` | `Bool` | `%Q19.3` | MIX - Deaireators Connection Drain | +| `DO_RVN301_Level` | `Bool` | `%Q20.0` | MIX - Deaireator Level Control | +| `DO_AVS331` | `Bool` | `%Q18.0` | MIX - CIP Venturi | +| `DO_AVS332` | `Bool` | `%Q18.1` | MIX - CIP Wash Venturi | +| `DO_AVS333` | `Bool` | `%Q18.2` | MIX - CIP Caustic | +| `DO_AVS334` | `Bool` | `%Q18.3` | MIX - CIP Acid | +| `DO_AVS335` | `Bool` | `%Q18.4` | MIX - CIP Peracetic Acid | +| `DO_AVS336` | `Bool` | `%Q18.5` | MIX - CIP Recirculation | +| `DO_AVS337` | `Bool` | `%Q18.6` | MIX - CIP Drain | +| `DO_AVS338` | `Bool` | `%Q18.7` | MIX - CIP Heater | +| `DO_AVM312_Deair_Reflux` | `Bool` | `%M3507.6` | MIX - N10_O41_ | +| `DO_EV67_SyrupLineDrain` | `Bool` | `%Q19.2` | MIX - N10_O101_ | +| `DO_EV68_FillerRinseWater` | `Bool` | `%M3508.2` | MIX - N10_O102_ | +| `DO_EV71_FillerPrPipeDrai` | `Bool` | `%M3508.3` | MIX - N10_O104_ | +| `DO_EV71_FiRinseSprayBall` | `Bool` | `%M3508.4` | MIX - N10_O105_ | +| `DO_EV72_FlrRinseTankDrai` | `Bool` | `%M3508.5` | MIX - N10_O106_ | +| `DO_EV03_SyrupLvlCtrl` | `Bool` | `%Q20.2` | MIX - N10_O06_ | +| `DO_EV04_SyrupFillUp` | `Bool` | `%Q20.3` | MIX - N10_O07_ | +| `DO_AVN329` | `Bool` | `%Q17.6` | MIX - Deaireator 2 Tank Spray Ball | +| `DO_AVM396` | `Bool` | `%Q17.1` | MIX - Steril Air Inlet | +| `DO_EV66_FillerRinseWater` | `Bool` | `%M3509.4` | MIX - N10_O97_ | +| `DO_AVN325` | `Bool` | `%Q17.7` | MIX - Vacuum Pump PPN304 Water In | +| `DO_AVM317_1` | `Bool` | `%Q17.3` | MIX - CIP to Syrup Tank Inlet | +| `DO_AVN348` | `Bool` | `%Q16.1` | MIX - Deaireator Inlet | +| `DO_AVN349` | `Bool` | `%Q16.7` | MIX - Deaireator Bypass 1 | +| `DO_AVP363` | `Bool` | `%Q16.5` | MIX - Syrup Line In H2O | +| `DO_AVN378` | `Bool` | `%M3510.2` | | +| `DO_AVN377` | `Bool` | `%M3510.3` | | +| `DO_AVM327` | `Bool` | `%M3510.4` | MIX - Blendfill Still Water By-Pass Mixproof 1 | +| `DO_AVM329` | `Bool` | `%M3510.5` | MIX - Blendfill Still Water By-Pass Mixproof 3 | +| `DO_AVM330` | `Bool` | `%M3510.6` | MIX - Blendfill Still Water By-Pass Drain Inlet Deaireator Tank | +| `DO_CoolingON` | `Bool` | `%M3511.0` | EV Cooling Enbled | +| `MaselliHold` | `Bool` | `%M3511.2` | Masseli Hold activated | +| `MaselliSpare` | `Bool` | `%M3511.3` | Maselli Spare | +| `DO_Flr1_Fault` | `Bool` | `%M3511.4` | To Filler 1 Fault | +| `DO_Flr1_CIP/Rinse` | `Bool` | `%M3511.5` | To Filler 1 CIP/Rinse | +| `DO_Flr2_Fault` | `Bool` | `%M3511.6` | To Filler 2 Fault | +| `DO_Flr2_CIP/Rinse` | `Bool` | `%M3511.7` | To Filler 2 CIP/Rinse | +| `DO_SyRm_Fault` | `Bool` | `%M3512.0` | To Syrup Room Fault | +| `DO_SyRm_ProdMode` | `Bool` | `%M3512.1` | To Syrup Room Prod Mode | +| `DO_MIXER _Rinse_mode` | `Bool` | `%M3512.2` | MIXER en RinseMode | +| `DO_MIXER _CIP_Temperature_Return` | `Word` | `%MW3514` | | +| `DO_CIP_Fault` | `Bool` | `%M3516.0` | To CIP Fault | +| `DO_CIP_Empty` | `Bool` | `%M3516.1` | To CIP Mixer filler empty | +| `DO_CIP_RdyChmcl` | `Bool` | `%M3516.2` | To CIP Ready to receive Chimical (dummy bottles in) | +| `DO_CIP_Flpflp` | `Bool` | `%M3516.3` | To CIP Drain Valves Flip Flop Done | +| `DO_FlrProdMode` | `Bool` | `%M3516.4` | T o Filler Production Mode | +| `DO_ Flr_CIPRinseSending` | `Bool` | `%M3516.5` | To Filler CIP/Rinse Sending solution | +| `DO_Flr_RinseMode` | `Bool` | `%M3516.6` | To Filler Rinse Mode | +| `DO_Flr_ProdAvailable` | `Int` | `%MW3518` | To Filler Product Available liters | +| `P_AO_RVN305` | `Word` | `%MW3520` | | +| `P_AO_RVN302` | `Word` | `%MW3522` | RVN302 - Deaireation Tank Level Valve | +| `P_AO_ToFillerEqPress` | `Word` | `%MW3524` | FILLER - Product Saturation Pressure [0.0 … 100.0 Bar/10] | +| `P_AO_ProductRunOutAmount` | `Word` | `%MW3526` | FILLER - Product Run Out Amount [200.0 … 800.0 L] | +| `P_AO_RVS318` | `Word` | `%QW112` | RVS318 - Local Cip Heating Valve | +| `P_AO_CIPWaterCond` | `Word` | `%MW3530` | Recorder - Local Cip Return Conductivity [0.0 … 2000.0 mS] | +| `P_AO_CIPCausticCond` | `Word` | `%MW3532` | Recorder - Local Cip Delivery Conductivity [0.0 … 200.0 mS] | +| `P_AO_CIPReturnTemperature` | `Word` | `%MW3534` | Recorder - Local Cip Return Temperaure [0.0 … 100.0 °C] | +| `P_AO_RMM304` | `Word` | `%MW3536` | RMM304 - Gas 2 Flow Control | +| `P_AO_RVM302` | `Word` | `%MW3538` | RVM302 - Deaireation Tank Level / Product Tank Level Valve | +| `P_gPAmPDS_OUTBlock01_0` | `Byte` | `%MB3541` | MIX - Profibus Variables | +| `P_gPAmPDS_OUTBlock01_1` | `Byte` | `%MB3542` | MIX - Profibus Variables | +| `P_gPAmPDS_OUTBlock01_2` | `Byte` | `%MB3543` | MIX - Profibus Variables | +| `P_gPAmPDS_OUTBlock01_3` | `Byte` | `%MB3544` | MIX - Profibus Variables | +| `P_gPAmPDS_OUTBlock01_4` | `Byte` | `%MB3545` | MIX - Profibus Variables | +| `P_gPAmPDS_OUTBlock01_5` | `Byte` | `%MB3546` | MIX - Profibus Variables | +| `P_gPAmPDS_OUTBlock01_6` | `Byte` | `%MB3547` | MIX - Profibus Variables | +| `P_gPAmPDS_OUTBlock01_7` | `Byte` | `%MB3548` | MIX - Profibus Variables | +| `P_gPAmPDS_OUTBlock01_8` | `Byte` | `%MB3549` | MIX - Profibus Variables | +| `P_gPAmPDS_OUTBlock01_9` | `Byte` | `%MB3550` | MIX - Profibus Variables | +| `P_gPAmPDS_OUTBlock01_10` | `Byte` | `%MB3551` | MIX - Profibus Variables | +| `P_gPAmPDS_OUTBlock01_11` | `Byte` | `%MB3552` | MIX - Profibus Variables | +| `P_gPAmPDS_OUTBlock01_12` | `Byte` | `%MB3553` | MIX - Profibus Variables | +| `P_gPAmPDS_OUTBlock01_13` | `Byte` | `%MB3554` | MIX - Profibus Variables | +| `P_gPAmPDS_OUTBlock01_14` | `Byte` | `%MB3555` | MIX - Profibus Variables | +| `P_gPAmPDS_OUTBlock01_15` | `Byte` | `%MB3556` | MIX - Profibus Variables | +| `P_gPAmPDS_OUTBlock01_16` | `Byte` | `%MB3557` | MIX - Profibus Variables | +| `P_gPAmPDS_OUTBlock01_17` | `Byte` | `%MB3558` | MIX - Profibus Variables | +| `P_gPAmPDS_OUTBlock01_18` | `Byte` | `%MB3559` | MIX - Profibus Variables | +| `P_gPAmPDS_OUTBlock01_19` | `Byte` | `%MB3560` | MIX - Profibus Variables | +| `P_gPAmPDS_OUTBlock01_20` | `Byte` | `%MB3561` | MIX - Profibus Variables | +| `P_gPAmPDS_OUTBlock01_21` | `Byte` | `%MB3562` | MIX - Profibus Variables | +| `P_gPAmPDS_OUTBlock01_22` | `Byte` | `%MB3563` | MIX - Profibus Variables | +| `P_gPAmPDS_OUTBlock01_23` | `Byte` | `%MB3564` | MIX - Profibus Variables | +| `P_gPAmPDS_OUTBlock01_24` | `Byte` | `%MB3565` | MIX - Profibus Variables | +| `P_gPAmPDS_OUTBlock01_25` | `Byte` | `%MB3566` | MIX - Profibus Variables | +| `P_gPAmPDS_OUTBlock01_26` | `Byte` | `%MB3567` | MIX - Profibus Variables | +| `P_gPAmPDS_OUTBlock01_27` | `Byte` | `%MB3568` | MIX - Profibus Variables | +| `P_gMaselli_RecipeSetNum` | `Byte` | `%MB3569` | MIX - Profibus Variables | +| `P_gMaselli_RecipeSetNumStr` | `Byte` | `%MB3570` | MIX - Profibus Variables | +| `P_gPPN301_VFC_ControlWord` | `Word` | `%MW3572` | MIX - Product Pump - Profibus Variables | +| `P_gPPN301_VFC_Refvalue` | `Word` | `%MW3574` | MIX - Product Pump - Profibus Variables | +| `P_gPPP302_VFC_ControlWord` | `Word` | `%MW3576` | MIX - Product Pump - Profibus Variables | +| `P_gPPP302_VFC_Refvalue` | `Word` | `%MW3578` | MIX - Product Pump - Profibus Variables | +| `P_gPPM307_VFC_ControlWord` | `Word` | `%MW3584` | | +| `P_gPPM307_VFC_Refvalue` | `Word` | `%MW3586` | | +| `P_gPPM305_VFC_ControlWord` | `Word` | `%MW3588` | MIX - Product Pump 2 - Profibus Variables | +| `P_gPPM305_VFC_Refvalue` | `Word` | `%MW3590` | MIX - Product Pump 2 - Profibus Variables | +| `DO_AVN350` | `Bool` | `%M3540.0` | | +| `DO_AVN347` | `Bool` | `%Q20.1` | MIX - Deaireator Tank Start CO2 Injection 1 | +| `DO_AVP355` | `Bool` | `%M3505.3` | CIP | +| `DO_AVM382` | `Bool` | `%Q16.2` | Mix - Product Recirculation though chiller | +| `DO_200V26` | `Bool` | `%M3600.3` | Spare | +| `DO_200V28` | `Bool` | `%M3603.7` | Spare | +| `DO_Analayzer_Enable` | `Bool` | `%M3602.1` | To Analayzer ENABLE | +| `DO_AVM339` | `Bool` | `%M3605.6` | MIX - Still Water By-Pass Deaireator Tank | +| `DO_AVM340` | `Bool` | `%M3600.2` | MIX - Still Water By-Pass Product Intercept | +| `DO_AVM341` | `Bool` | `%Q17.5` | MIX - CO2 Inlet | +| `DO_AVM342` | `Bool` | `%M3600.4` | MIX - N2 Inlet | +| `DO_AVM346` | `Bool` | `%M3600.1` | MIX - Filler CO2 | +| `DO_AVM369` | `Bool` | `%M3601.3` | MIX - Blender to filler 1 Drain | +| `DO_AVM380` | `Bool` | `%M3600.6` | MIX - Product Recirculation Without Chiller | +| `DO_BoosterPump_SubCarb` | `Bool` | `%M3606.2` | Booster Pump Sub Carbo Customer | +| `DO_CIP_Spare` | `Bool` | `%M3601.4` | Spare | +| `DO_EV1_SubCarb` | `Bool` | `%M3607.1` | EV1 Sub Carbo Customer | +| `DO_EV100_WaterInlet` | `Bool` | `%M3601.6` | Spare | +| `DO_EV102_Syrup And CIP Inlet` | `Bool` | `%M3601.2` | Spare | +| `DO_EV103_WaterInterception` | `Bool` | `%M3601.1` | Spare | +| `DO_EV105_WaterBypass` | `Bool` | `%M3600.7` | Spare | +| `DO_EV2_SubCarb` | `Bool` | `%M3607.0` | EV2 Sub Carbo Customer | +| `DO_EV3_SubCarb` | `Bool` | `%M3606.4` | EV3 Sub Carbo Customer | +| `DO_EV4_SubCarb` | `Bool` | `%M3606.3` | EV4 Sub Carbo Customer | +| `DO_Flr1_CIPMode` | `Bool` | `%M3607.5` | To Filler CIP Mode | +| `DO_Flr1_OpenBottleblock` | `Bool` | `%M3603.6` | FILLER - Production Mode | +| `DO_Flr1_PROD_Available` | `Bool` | `%M3603.4` | FILLER - Product Available | +| `DO_Flr1_Productionmode` | `Bool` | `%M3603.3` | To Filler 1 Production Mode | +| `DO_Flr1_RinseMode` | `Bool` | `%M3603.5` | FILLER - Rinse Mode | +| `DO_Flr1_Spare0` | `Bool` | `%M3601.7` | Spare | +| `DO_Glycol_ColdRequest` | `Bool` | `%M3607.3` | Glycol Cold Request | +| `DO_Glycol_LineCIP` | `Bool` | `%M3607.2` | Glycol Line CIP | +| `DO_Glycol_LineEnabled` | `Bool` | `%M3604.0` | Glycol Line Enabled | +| `DO_PB_Green_Lamp` | `Bool` | `%Q7.1` | PB Machine Start Lamp | +| `DO_PPM303_Run` | `Bool` | `%Q7.6` | DO_PPM303_Run | +| `DO_Red_Lamp` | `Bool` | `%Q7.2` | DO_Red_Lamp | +| `DO_RVM301_Discharge` | `Bool` | `%M3602.0` | DO_RVM301_Discharge | +| `DO_SyrupRoom_Aux1` | `Bool` | `%M3602.2` | To Syrup Room- Alarm | +| `DO_SyrupRoom_Aux2` | `Bool` | `%M3602.3` | | +| `DO_WaterBypass1` | `Bool` | `%M3601.0` | Spare | +| `DO_SyRm_SyrupReques` | `Bool` | `%Q1.0` | To syrup Room Syrup Request | + diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID.md new file mode 100644 index 0000000..2b0e6d1 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID.md @@ -0,0 +1,38 @@ +# UDT: PID + +## Members + +| Name | Datatype | Start Value | Comment | +|---|---|---|---| +| `ConfigPID` | `Bool` | `` | | +| `Hold_Int` | `Bool` | `` | | +| `I_ITL` | `Bool` | `` | | +| `Alarm` | `Bool` | `` | | +| `Spare0_4` | `Bool` | `` | | +| `Spare0_5` | `Bool` | `` | | +| `Spare0_6` | `Bool` | `` | | +| `Config` | `Bool` | `` | | +| `PID_FIX` | `Bool` | `` | | +| `Spare1_1` | `Bool` | `` | | +| `High_Limit` | `Bool` | `` | | +| `Low_Limit` | `Bool` | `` | | +| `ManualControl` | `Struct` | `` | | +| `Bp` | `Real` | `` | | +| `Ti` | `Real` | `` | | +| `Td` | `Real` | `` | | +| `Ff` | `Real` | `` | | +| `KP` | `Real` | `` | | +| `Pv` | `Real` | `` | | +| `OutMan` | `Real` | `` | | +| `Lsp` | `Real` | `` | | +| `OutMaxHmi` | `Real` | `` | | +| `OutMin` | `Real` | `` | | +| `OutMax` | `Real` | `100.0` | | +| `Spare52` | `Real` | `` | | +| `FfOut` | `Real` | `` | | +| `Sp` | `Real` | `` | | +| `Out` | `Real` | `` | | +| `Cycle_Time` | `Real` | `` | | +| `I_ITLVAL` | `Real` | `` | | +| `Dead_Band` | `Real` | `` | | + diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PIDControl.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PIDControl.md new file mode 100644 index 0000000..de4ea13 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PIDControl.md @@ -0,0 +1,169 @@ +```pascal +// Block Type: FB +// Block Number: 40 +// Original Network Languages: LAD, STL + +FUNCTION_BLOCK "PIDControl" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + PID_Enable : Bool; + MAN_ON : Bool; + P_Sel : Bool; + I_Sel : Bool; + D_Sel : Bool; + FF_Enable : Bool; + REG_INV : Bool; + LMN_FAC : Real; + LMN_OFF : Real; +END_VAR + +VAR_OUTPUT + LMN_P : Real; + LMN_I : Real; + LMN_D : Real; +END_VAR + +VAR_INOUT + PID_Data : STRUCT + ConfigPID : Bool; + Hold_Int : Bool; + I_ITL : Bool; + Alarm : Bool; + Spare0_4 : Bool; + Spare0_5 : Bool; + Spare0_6 : Bool; + Config : Bool; + PID_FIX : Bool; + Spare1_1 : Bool; + High_Limit : Bool; + Low_Limit : Bool; + ManualControl : "Struct"; + Bp : Real; + Ti : Real; + Td : Real; + Ff : Real; + KP : Real; + Pv : Real; + OutMan : Real; + Lsp : Real; + OutMaxHmi : Real; + OutMin : Real; + OutMax : Real; + Spare52 : Real; + FfOut : Real; + Sp : Real; + Out : Real; + Cycle_Time : Real; + I_ITLVAL : Real; + Dead_Band : Real; + END_STRUCT; + +END_VAR + +VAR_STAT + COM_RST : Bool; + SP_INT : Real; + PV_IN : Real; + MAN : Real; + TI_PID : Time; + TD_PID : Time; + CYCLE_PID : Time; + DIVS_PID : Real; + PID : "CONT_C:v1.1"; +END_VAR + +VAR_TEMP + SCALE_MAX : Real; + KP : Real; +END_VAR + +BEGIN + + // Network 1: Manual Output Value (Original Language: STL) + + // --- BEGIN STL Network 1 --- + + A "MAN_ON" + L "PID_Data".OutMan + JC manu + L 0.0 + manu: T "MAN" + + // --- END STL Network 1 --- + + // Network 2: Integral Value Reset (Original Language: LAD) + + "COM_RST" := "PID_Enable" AND "MAN_ON"; + + // Network 3: Set Point Remote/Local (Original Language: STL) + + // --- BEGIN STL Network 3 --- + + A "PID_Data".ManualControl.LocalSP + L "PID_Data".Lsp + JC sp + L "PID_Data".Sp + T "PID_Data".Lsp + sp: T "PID_Data".Sp + T "SP_INT" + + // --- END STL Network 3 --- + + // Network 4: Process Value (Original Language: STL) + + // --- BEGIN STL Network 4 --- + + L "PID_Data".Pv + T "PV_IN" + + // --- END STL Network 4 --- + + // Network 5: PID Parameter (Original Language: STL) + + // --- BEGIN STL Network 5 --- + + L "PID_Data".Ti + L 1000.0 + MUL_R + RND + T "TI_PID" + + L "PID_Data".Td + L 1000.0 + MUL_R + RND + T "TD_PID" + + L "PID_Data".Cycle_Time + L 1000.0 + MUL_R + RND + T "CYCLE_PID" + + L "PID_Data".KP + AN "REG_INV" + JC FFEN + L -1.0 + MUL_R + FFEN: T "KP" + AN "FF_Enable" + L 0.0 + JC FFVA + L "PID_Data".FfOut + FFVA: T "DIVS_PID" + + // --- END STL Network 5 --- + + // Network 6: (Original Language: STL) + + // --- BEGIN STL Network 6 --- + + CALL _Call_? + + // --- END STL Network 6 --- + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_Filling_Head.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_Filling_Head.md new file mode 100644 index 0000000..040d645 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_Filling_Head.md @@ -0,0 +1,289 @@ +```pascal +// Block Type: FB +// Block Number: 1791 +// Original Network Languages: LAD, STL + +FUNCTION_BLOCK "PID_Filling_Head" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + i_InValue : Real; + i_SlewMax : Real; + i_Cycle : Real; +END_VAR + +VAR_OUTPUT + LMN_P : Real; + LMN_I : Real; + LMN_D : Real; +END_VAR + +VAR_INOUT + TNKLev : Real; +END_VAR + +VAR_STAT + mFillerProdSlew : Real; + mPIDFillHeadProp : Real; + mPIDFillHeadInt : Real; + mPIDFillHeadDer : Real; + mFillerEstSlew : "SlewLimit"; + mFillingHead_PID : "PIDControl"; + Calcolous : "PID_Filling_Head_Calc"; + mReset_Int_ONS : Bool; +END_VAR + +VAR_TEMP + mDummy : Bool; + mAuxCalc : Real; + mHr_Hs : Real; + Block_Move_Err : Int; + __PlcmigTempFillBits_12B0 : Array[0..7] of Bool; +END_VAR + +BEGIN + + // Network 1: To HMI (0: PID 1: fixed values) (Original Language: LAD) + + "Filler_Head_Variables"."FillerHead"."ConfigPID" := "HMI_PID"."PPM303"."ConfigPID"; + + // Network 2: To HMI (0: PID 1: fixed values) (Original Language: LAD) + + "Filler_Head_Variables"."FillerHead"."Hold_Int" := "HMI_PID"."PPM303"."Hold_Int"; + + // Network 3: To HMI (0: PID 1: fixed values) (Original Language: LAD) + + "Filler_Head_Variables"."FillerHead"."I_ITL" := "HMI_PID"."PPM303"."I_ITL"; + + // Network 4: To HMI (0: PID 1: fixed values) (Original Language: LAD) + + "Filler_Head_Variables"."FillerHead"."Alarm" := "HMI_PID"."PPM303"."Alarm"; + + // Network 5: To HMI (0: PID 1: fixed values) (Original Language: LAD) + + "Filler_Head_Variables"."FillerHead"."Config" := "HMI_PID"."PPM303"."Config"; + + // Network 6: To HMI (0: PID 1: fixed values) (Original Language: LAD) + + "Filler_Head_Variables"."FillerHead"."High_Limit" := "HMI_PID"."PPM303"."High_Limit"; + + // Network 7: To HMI (0: PID 1: fixed values) (Original Language: LAD) + + "Filler_Head_Variables"."FillerHead"."Low_Limit" := "HMI_PID"."PPM303"."Low_Limit"; + + // Network 8: From HMI - Local (Original Language: LAD) + + "Filler_Head_Variables"."FillerHead"."ManualControl"."LocalSP" := "HMI_PID"."PPM303"."ManualControl"."LocalSP"; + + // Network 9: BP (Original Language: LAD) + + "Filler_Head_Variables"."FillerHead"."Bp" := "HMI_PID"."PPM303"."Bp"; + + // Network 10: Integral (Original Language: LAD) + + "Filler_Head_Variables"."FillerHead"."Ti" := "HMI_PID"."PPM303"."Ti"; + + // Network 11: Differential (Original Language: LAD) + + "Filler_Head_Variables"."FillerHead"."Td" := "HMI_PID"."PPM303"."Td"; + + // Network 12: Feed Forward (Original Language: LAD) + + "Filler_Head_Variables"."FillerHead"."Ff" := "HMI_PID"."PPM303"."Ff"; + + // Network 13: Proportional (Original Language: LAD) + + "Filler_Head_Variables"."FillerHead"."KP" := "HMI_PID"."PPM303"."KP"; + + // Network 14: PV (Original Language: LAD) + + "Filler_Head_Variables"."FillerHead"."Pv" := "HMI_PID"."PPM303"."Pv"; + + // Network 15: Limit (Original Language: LAD) + + "Filler_Head_Variables"."FillerHead"."OutMaxHmi" := "HMI_PID"."PPM303"."OutMaxHmi"; + + // Network 16: Limit (Original Language: LAD) + + "Filler_Head_Variables"."FillerHead"."Lsp" := "HMI_PID"."PPM303"."Lsp"; + + // Network 17: Cycle Time (Original Language: LAD) + + "Filler_Head_Variables"."FillerHead"."Cycle_Time" := "HMI_PID"."PPM303"."Cycle_Time"; + + // Network 18: Integral (Original Language: LAD) + + IF "gIN_FillerBottleFilling" THEN + "Filler_Head_Variables"."FillerHead"."I_ITLVAL" := "HMI_PID"."PPM303"."I_ITLVAL"; + END_IF; + + // Network 19: Dead band (Original Language: LAD) + + "Filler_Head_Variables"."FillerHead"."Dead_Band" := "HMI_PID"."PPM303"."Dead_Band"; + + // Network 20: Fillig Head Calculation (Original Language: LAD) + + "Calcolous"(); + + // Network 21: Estimated Product Flow in l/min (Original Language: LAD) + + TankLevelToHeight(Level_Height0 := "HMI_Blender_Parameters"."ProcessSetup"."_TM301Height_0", Level_Height1 := "HMI_Blender_Parameters"."ProcessSetup"."_TM301Height_2", Level_Perc0 := 0.0, Level_Perc1 := "HMI_Blender_Parameters"."ProcessSetup"."_TM301LevelPerc_2", Level_Percentage := "HMI_Instrument"."LTM302"."PVFiltered"); + + "Filler_Head_Variables"."TM301_Height" := "HMI_Variables_Status"."Analog_Values"."TM301Heigh"; + + FillingTime(i_BottleSize := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_BottleSize", i_FillingValveHead := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_FillingValveHead_SP"); + + "HMI_Blender_Parameters"."ProcessSetup"."_FillingTime" := "Filler_Head_Variables"."FillingTime"; + + "mDummy" := TRUE; + + // Network 22: Estimated Product Flow in l/min (Original Language: LAD) + + "mAuxCalc" := "Filler_Head_Variables"."Filler_Speed" / 60.0; + + "Filler_Head_Variables"."Prod_FlowEstimated" := "mAuxCalc" * "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_BottleSize"; + + // Network 23: Estimated Product Flow in l/min (Original Language: LAD) + + SEL_R(G := "Filler_Head_Variables"."FillingTime" > 0.0, IN0 := 1.0, IN1 := "Filler_Head_Variables"."FillingTime"); + + "mAuxCalc" := "Filler_Head_Variables"."Prod_FlowEstimated" / "mAuxCalc"; + + SEL_R(G := "Filler_Head_Variables"."Filler_Speed" > 0.0, IN0 := "mFillerProdSlew", IN1 := "mAuxCalc"); + + // Network 24: Estimated Product Flow in l/min (Original Language: LAD) + + SEL_R(G := "gIN_FillerBottleFilling", IN0 := 0.0, IN1 := "Filler_Head_Variables"."Prod_FlowEstimated"); + + LIMIT_R(IN := "mFillerProdSlew", MN := 0.5, MX := 100000.0); + + "mFillerEstSlew"(i_Cycle := "HMI_PID"."PPM303"."Cycle_Time", i_InValue := "Filler_Head_Variables"."Prod_FlowEstimated", i_SlewMax := "mFillerProdSlew", out := "Filler_Head_Variables"."Prod_FlowEstimatedSlw"); + + // Network 25: 1 = CIP or Rinse (Original Language: LAD) + + "Filler_Head_Variables"."Head_CIP_Rinse" := "gBlenderCIPMode" OR ("gBlenderRinseMode" AND "Blender_Variables_Pers"."gFillerRinse_DoneLatch"); + + // Network 26: From HMI (Original Language: LAD) + + "Filler_Head_Variables"."FillerHead"."ManualControl"."ManOut" := "HMI_PID"."PPM303"."ManualControl"."ManOut" OR "Filler_Head_Variables"."Head_Drain"; + + // Network 27: Out min (Original Language: LAD) + + Freq_To_mmH2O(i_Freq := "HMI_PID"."PPM303"."OutMin", i_K_freq := "HMI_Blender_Parameters"."ProcessSetup"."_KPPM303"); + + // Network 28: Out Max (Original Language: LAD) + + SEL_R(G := "Filler_Head_Variables"."FillerHead"."ManualControl"."ManOut", IN0 := "Filler_Head_Variables"."Prod_HeadPIDMax_Freq", IN1 := "HMI_PID"."PPM303"."OutMax"); + + Freq_To_mmH2O(i_Freq := "mAuxCalc", i_K_freq := "HMI_Blender_Parameters"."ProcessSetup"."_KPPM303"); + + // Network 29: 1 = Enable Filling Valve Head PID (Original Language: LAD) + + "Filler_Head_Variables"."FillerHead"."ManualControl"."PidEnable" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND (("Filler_Head_Variables"."Head_CIP_Rinse" AND "Procedure_Variables"."Blender_Run"."Latch") OR ("gIN_Filler_AVM346_En" AND "HMI_Device"."AVM346"."Alarm" AND "gIN_Filler_AVM362_En" AND "HMI_Device"."AVM362"."Alarm" AND "gDiffSensor_Analog_Fault" AND ("gP_PID_Head_Enable" OR ("System_RunOut_Variables"."ProdPipe_RunOut"."Done" AND "Procedure_Variables"."BlendFill_StartUp"."Done")))); + + "HMI_PID"."PPM303"."ManualControl"."PidEnable" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND (("Filler_Head_Variables"."Head_CIP_Rinse" AND "Procedure_Variables"."Blender_Run"."Latch") OR ("gIN_Filler_AVM346_En" AND "HMI_Device"."AVM346"."Alarm" AND "gIN_Filler_AVM362_En" AND "HMI_Device"."AVM362"."Alarm" AND "gDiffSensor_Analog_Fault" AND ("gP_PID_Head_Enable" OR ("System_RunOut_Variables"."ProdPipe_RunOut"."Done" AND "Procedure_Variables"."BlendFill_StartUp"."Done")))); + + // Network 30: Integral PID Hold (Original Language: LAD) + + "Filler_Head_Variables"."FillerHead"."Hold_Int" := "Filler_Head_Variables"."FillerHead"."ManualControl"."PidEnable" OR "Procedure_Variables"."BlendFill_StartUp"."Latch"; + + // Network 31: Integral PID Inizilize (Original Language: STL) + // #mReset_Int_ONS + + // --- BEGIN STL Network 31 --- + + A_BRACK + O "Filler_Head_Variables".FillerHead.ManualControl.ManOut + O "Filler_Head_Variables".Head_CIP_Rinse + ON "gIN_FillerBottleFilling" + BRACKET + Rise "FillingHeadIntegrInit" + = "__PlcmigTempFillBits_12B0"[0] + A "__PlcmigTempFillBits_12B0"[0] + JC ZERO + JU NORM + ZERO: L 0.0 + T "Filler_Head_Variables".FillerHead.I_ITLVAL + NORM: NOP_0 + + // --- END STL Network 31 --- + + // Network 32: Centrifugal Head (Original Language: LAD) + + Cetrifugal_Head(i_Diameter := "HMI_Blender_Parameters"."ProcessSetup"."_FillerDiameter", i_NumValve := "HMI_Blender_Parameters"."ProcessSetup"."_FillingValveNum", i_Speed := "Filler_Head_Variables"."Filler_Speed"); + + // Network 33: Estimated Product Flow in l/min (Original Language: LAD) + + "mAuxCalc" := "Filler_Head_Variables"."Prod_Flow"; + + LIMIT_R(IN := "mAuxCalc", MN := 10.0, MX := 4000.0); + + Flow_To_Press_Loss(i_Flow := "mAuxCalc", i_K_Loss := "Filler_Head_Variables"."mKp_Loss"); + + // Network 34: FILLING HEAD SETPOINT SELECTION (Original Language: LAD) + // during the startup use fixed Filling head = 2,5 M + + SEL_R(G := "Procedure_Variables"."BlendFill_StartUp"."Latch", IN0 := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_FillingValveHead_SP", IN1 := 2.5); + + "Filler_Head_Variables"."FillerHead"."Sp" := "mAuxCalc"; + + "HMI_PID"."PPM303"."Sp" := "mAuxCalc"; + + // Network 35: FEEDFORWARD CALCULATION (Original Language: LAD) + + "mAuxCalc" := "mAuxCalc" + "HMI_Blender_Parameters"."ProcessSetup"."_FillingValveHeight"; + + "mAuxCalc" := "mAuxCalc" - "Filler_Head_Variables"."TM301_Height"; + + "mAuxCalc" := "Filler_Head_Variables"."TotalPressLoss" + "mAuxCalc"; + + LIMIT_R(IN := "mAuxCalc", MN := 0.0, MX := "Filler_Head_Variables"."FillerHead"."OutMax"); + + // Network 36: Feed Forward Out (Original Language: LAD) + + mmH2O_TO_Freq(i_Head := "Filler_Head_Variables"."FillerHead"."FfOut", i_K_Pump := "HMI_Blender_Parameters"."ProcessSetup"."_KPPM303"); + + // Network 37: Diff Height (Original Language: LAD) + + "mAuxCalc" := "HMI_Blender_Parameters"."ProcessSetup"."_DiffSensor_Height" + "HMI_Blender_Parameters"."ProcessSetup"."_DiffSensor_DeltaHeight"; + + "Filler_Head_Variables"."DiffSensor_Height" := "mAuxCalc" - "HMI_Blender_Parameters"."ProcessSetup"."_DiffSensor_Offset"; + + // Network 38: PV (Original Language: LAD) + + "mHr_Hs" := "HMI_Blender_Parameters"."ProcessSetup"."_FillingValveHeight" - "Filler_Head_Variables"."DiffSensor_Height"; + + "mAuxCalc" := "HMI_Instrument"."PTF203"."PVFiltered" + "Filler_Head_Variables"."FillerCentrifugalHead"; + + "Filler_Head_Variables"."FillerHead"."Pv" := "mAuxCalc" - "mHr_Hs"; + + "HMI_PID"."PPM303"."Pv" := "Filler_Head_Variables"."FillerHead"."Pv"; + + // Network 39: Out Manual (Original Language: LAD) + + Freq_To_mmH2O(i_Freq := "HMI_PID"."PPM303"."OutMan", i_K_freq := "HMI_Blender_Parameters"."ProcessSetup"."_KPPM303"); + + // Network 40: PID Control (Original Language: LAD) + + "mFillingHead_PID"(D_Sel := "AUX TRUE", FF_Enable := "AUX TRUE", I_Sel := "AUX TRUE", LMN_FAC := 1.0, LMN_OFF := 0.0, MAN_ON := "Filler_Head_Variables"."FillerHead"."ManualControl"."ManOut", PID_Data := "Filler_Head_Variables"."FillerHead", PID_Enable := "Filler_Head_Variables"."FillerHead"."ManualControl"."PidEnable" OR "Filler_Head_Variables"."FillerHead"."I_ITL", P_Sel := "AUX TRUE", REG_INV := "AUX FALSE"); + + // Network 41: Integral PID Inizilize (Original Language: LAD) + + IF "Filler_Head_Variables"."FillerHead"."I_ITL" THEN + "Filler_Head_Variables"."FillerHead"."I_ITL" := FALSE; + END_IF; + + // Network 42: Valve Output (Original Language: LAD) + + SEL_R(G := "Filler_Head_Variables"."FillerHead"."ManualControl"."PidEnable", IN0 := 0.0, IN1 := "Filler_Head_Variables"."FillerHead"."Out"); + + mmH2O_TO_Freq(i_Head := "Filler_Head_Variables"."FillerHead"."Out", i_K_Pump := "HMI_Blender_Parameters"."ProcessSetup"."_KPPM303"); + + // Network 43: Setpoint (Original Language: LAD) + + "HMI_PID"."PPM303"."Sp" := "Filler_Head_Variables"."FillerHead"."Sp"; + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_Filling_Head_Calc.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_Filling_Head_Calc.md new file mode 100644 index 0000000..a1601ed --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_Filling_Head_Calc.md @@ -0,0 +1,64 @@ +```pascal +FUNCTION_BLOCK "PID_Filling_Head_Calc" +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : TASK1 +NAME : 'Name' +VERSION : 1.0 + VAR + mHeadKP_SlewLimit : "SlewLimit"; + END_VAR + + VAR_TEMP + mHead_KP_Temp : Real; + END_VAR + + +BEGIN + + + "HMI_PID".PPM303.Cycle_Time := "Time_300ms" ; + + "Filler_Head_Variables".mKp_Loss := "HMI_Blender_Parameters".ProcessSetup._KProdLoss ; + + IF "HMI_PID".PPM303.Bp <> 0 THEN + (* classic code: #mHead_KP_Temp := 100.0 / "HMI_PID".PPM303.Bp ;*) + #mHead_KP_Temp := REAL#100.0 / "HMI_PID".PPM303.Bp ; + END_IF ; + (* classic code: #mHeadKP_SlewLimit(i_InValue := #mHead_KP_Temp , + i_SlewMax := 0.01 , + i_Cycle := "HMI_PID".PPM303.Cycle_Time , + out := "HMI_PID".PPM303.KP) ;*) + #mHeadKP_SlewLimit(i_InValue := #mHead_KP_Temp , + i_SlewMax := REAL#0.01 , + i_Cycle := "HMI_PID".PPM303.Cycle_Time , + out := "HMI_PID".PPM303.KP) ; + + IF "HMI_Device".PPM303.ManOn THEN + ; + ELSIF "gP_PID_Head_Manual" THEN + "HMI_PID".PPM303.OutMan := "Filler_Head_Variables".Head_PID_Manual_Value ; + ELSIF "Filler_Head_Variables".Head_Drain THEN + (* classic code: "HMI_PID".PPM303.OutMan := 0.0 ;*) + "HMI_PID".PPM303.OutMan := REAL#0.0 ; + ELSIF "Filler_Head_Variables".Head_CIP_Rinse AND "gBlenderRinseMode" THEN + "HMI_PID".PPM303.OutMan := "HMI_Blender_Parameters".ProcessSetup._RinsePPM303Freq ; + ELSIF "Filler_Head_Variables".Head_CIP_Rinse THEN + "HMI_PID".PPM303.OutMan := "HMI_Blender_Parameters".ProcessSetup._CIPPPM303Freq ; + ELSIF "HMI_PID".PPM303.ManualControl.PidEnable AND NOT "HMI_PID".PPM303.ManualControl.ManOut THEN + "HMI_PID".PPM303.OutMan := "HMI_PID".PPM303.Out ; + ELSIF NOT "HMI_PID".PPM303.ManualControl.ManOut THEN + (* classic code: "HMI_PID".PPM303.OutMan := 0.0 ;*) + "HMI_PID".PPM303.OutMan := REAL#0.0 ; + END_IF ; + + "Filler_Head_Variables".Prod_Flow := "SEL_R" (G:="gIN_FillerBottleFilling", + IN0:="Profibus_Variables".gVFM_ProductFlow, + IN1:="Filler_Head_Variables".Prod_FlowEstimatedSlw); + (* classic code: "Filler_Head_Variables".Filler_Temperature := "Interlocking_Variables".FILLER_MIXER_RECEIVE.Product_Temp / 10.0 ;*) + "Filler_Head_Variables".Filler_Temperature := "Interlocking_Variables".FILLER_MIXER_RECEIVE.Product_Temp / REAL#10.0 ; + +END_FUNCTION_BLOCK + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_Filling_Head_Data.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_Filling_Head_Data.md new file mode 100644 index 0000000..0f0dcd9 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_Filling_Head_Data.md @@ -0,0 +1,24 @@ +```pascal +// Block Type: InstanceDB +// Block Number: 990 + +DATA_BLOCK "PID_Filling_Head_Data" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + mFillerProdSlew : Real := 13.99574; + mPIDFillHeadProp : Real := 0.0; + mPIDFillHeadInt : Real := 0.0; + mPIDFillHeadDer : Real := 0.0; + mFillerEstSlew : "SlewLimit"; + mFillingHead_PID : "PIDControl"; + Calcolous : "PID_Filling_Head_Calc"; + mReset_Int_ONS : Bool := FALSE; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_MAIN_Data.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_MAIN_Data.md new file mode 100644 index 0000000..7b3587d --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_MAIN_Data.md @@ -0,0 +1,29 @@ +```pascal +// Block Type: InstanceDB +// Block Name (Original): PID MAIN Data +// Block Number: 729 + +DATA_BLOCK "PID_MAIN_Data" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + PID_1_300ms : Bool := FALSE; + PID_2_300ms : Bool := FALSE; + PID_3_300ms : Bool := FALSE; + PID_4_300ms : Bool := FALSE; + PID_5_300ms : Bool := FALSE; + PID_6_300ms : Bool := TRUE; + Flow_Meter_Error_RETVAL : Real := 0.0; + PID_FF_Calc : "BlenderPID_PIDFFCalc"; + PID_Blending_Fault : "BlenderPID_BlendingFault"; + PID_Save_Integral : "BlenderPIDCtrl_SaveInteg"; + PID_Monitor : "BlenderPIDCtrl_Monitor"; + Read_AnalogInput : "BlenderPIDCtrl_ReadAnIn"; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RMM301.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RMM301.md new file mode 100644 index 0000000..3f8cce9 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RMM301.md @@ -0,0 +1,92 @@ +```pascal +// Block Type: FB +// Block Number: 1780 +// Original Network Languages: LAD +// Block Comment: +// TASK1 PID + +FUNCTION_BLOCK "PID_RMM301" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + PID_Enable : Bool; + MAN_ON : Bool; + P_Sel : Bool; + I_Sel : Bool; + D_Sel : Bool; + FF_Enable : Bool; + REG_INV : Bool; + LMN_FAC : Real; + LMN_OFF : Real; +END_VAR + +VAR_OUTPUT + LMN_P : Real; + LMN_I : Real; + LMN_D : Real; +END_VAR + +VAR_INOUT + mH20PIDEn_Aux : Bool; +END_VAR + +VAR_STAT + PID_Water_Proportional : Real; + PID_Water_Integral : Real; + PID_Water_Derivative : Real; + Water_Valve_Out : Real; + mH20PIDEn : Bool; + PID : "PIDControl"; +END_VAR + +BEGIN + + // Network 1: Blend Error Enable (Original Language: LAD) + + "PID_Variables"."Blend_Error_Enable" := ("gBlenderBlending" AND "HMI_PID"."RMM301"."ManualControl"."ManOut" AND "HMI_PID"."RMP302"."ManualControl"."ManOut" AND "Blender_Variables_Pers"."gWaterRecipe" AND "gStopBlendCarboError") OR ("PID_Variables"."Blend_Error_Enable" AND "HMI_PID"."RMM301"."ManualControl"."ManOut" AND "HMI_PID"."RMP302"."ManualControl"."ManOut" AND "Blender_Variables_Pers"."gWaterRecipe" AND "gStopBlendCarboError"); + + // Network 2: Carbo Co2 Error Enable (Original Language: LAD) + + "PID_Variables"."CarboCO2_Error_Enable" := ("gBlenderBlending" AND "gStopBlendCarboError" AND "HMI_PID"."RMM303"."ManualControl"."ManOut" AND "Blender_Variables_Pers"."gCarboStillProduct" AND "gWorkshopTest") OR ("gStopBlendCarboError" AND "PID_Variables"."CarboCO2_Error_Enable" AND "HMI_PID"."RMM303"."ManualControl"."ManOut" AND "Blender_Variables_Pers"."gCarboStillProduct" AND "gWorkshopTest"); + + // Network 3: Manual Enable (Original Language: LAD) + + "HMI_PID"."RMM301"."ManualControl"."PidEnable" := ("gBlenderBlending" AND "gBlendFiStillWaterByPass") OR ("gBlenderCIPMode" AND "gCIPRinseOpenValves" AND "CIP_Program_Variables"."Status"."BlenderDrainRunning"); + + // Network 4: Setpoint (Original Language: LAD) + + "HMI_PID"."RMM301"."Sp" := "Blender_Variables"."gSP_H2O"; + + // Network 5: PV forcing (Original Language: LAD) + + IF "HMI_PID"."RMM301"."ManualControl"."PidEnable" AND "gBlenderStableFlow" THEN + "HMI_PID"."RMM301"."Pv" := "HMI_PID"."RMM301"."Sp"; + END_IF; + + // Network 6: PID Control (Original Language: LAD) + // Attenzione al Bit REG_INV !! + + "PID"(D_Sel := "AUX TRUE", FF_Enable := "AUX TRUE", I_Sel := "AUX TRUE", LMN_FAC := 1.0, LMN_OFF := 0.0, MAN_ON := "gBlenderCIPMode" OR ("gRinseClose_RMM301" AND "Procedure_Variables"."Blender_Rinse"."Running"), PID_Data := "HMI_PID"."RMM301", PID_Enable := "HMI_PID"."RMM301"."ManualControl"."PidEnable" OR "HMI_PID"."RMM301"."I_ITL", P_Sel := "AUX TRUE", REG_INV := "AUX FALSE"); + + // Network 7: Integral (Original Language: LAD) + + "mPID_RMM301_Int" := "PID_Water_Integral"; + + // Network 8: Integral PID Inizialize (Original Language: LAD) + + IF "HMI_PID"."RMM301"."I_ITL" THEN + "HMI_PID"."RMM301"."I_ITL" := FALSE; + END_IF; + + // Network 9: Water Valve Output (Original Language: LAD) + + // Network 9 did not produce printable SCL code. + + // Network 10: Water Valve Output (Original Language: LAD) + + SEL_R(G := "HMI_PID"."RMM301"."ManualControl"."PidEnable", IN0 := 0.0, IN1 := "HMI_PID"."RMM301"."Out"); + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RMM301_Data.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RMM301_Data.md new file mode 100644 index 0000000..cdd8ddf --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RMM301_Data.md @@ -0,0 +1,22 @@ +```pascal +// Block Type: InstanceDB +// Block Number: 980 + +DATA_BLOCK "PID_RMM301_Data" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + PID_Water_Proportional : Real := 0.0; + PID_Water_Integral : Real := 0.0; + PID_Water_Derivative : Real := 0.0; + Water_Valve_Out : Real := 0.0; + mH20PIDEn : Bool := FALSE; + PID : "PIDControl"; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RMM303.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RMM303.md new file mode 100644 index 0000000..58979cb --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RMM303.md @@ -0,0 +1,105 @@ +```pascal +// Block Type: FB +// Block Number: 1782 +// Original Network Languages: LAD +// Block Comment: +// TASK1 PID + +FUNCTION_BLOCK "PID_RMM303" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + PID_Enable : Bool; + MAN_ON : Bool; + P_Sel : Bool; + I_Sel : Bool; + D_Sel : Bool; + FF_Enable : Bool; + REG_INV : Bool; + LMN_FAC : Real; + LMN_OFF : Real; +END_VAR + +VAR_OUTPUT + LMN_P : Real; + LMN_I : Real; + LMN_D : Real; +END_VAR + +VAR_INOUT + PID_Data : "PID"; +END_VAR + +VAR_STAT + PID_CO2_Proportional : Real; + PID_CO2_Integral : Real; + PID_CO2_Derivative : Real; + mCO2ValveOut : Real; + mCO2PIDEn : Bool; + PID : "PIDControl"; +END_VAR + +VAR_TEMP + mAux : Real; +END_VAR + +BEGIN + + // Network 1: Manual Enable (Original Language: LAD) + + "HMI_PID"."RMM303"."ManualControl"."PidEnable" := ("gP_CarboPipe_En" AND "gWorkshopTest") OR ("gBlenderBlending" AND "Blender_Variables_Pers"."gCarboStillProduct" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_RemoteInjection" AND "gWorkshopTest"); + + // Network 2: Setpoint (Original Language: LAD) + + "HMI_PID"."RMM303"."Sp" := "Blender_Variables"."gSP_CO2"; + + // Network 3: PV forcing (Original Language: LAD) + + IF "HMI_PID"."RMM303"."ManualControl"."PidEnable" AND "gBlenderStableFlow" AND "Procedure_Variables"."Blender_Rinse"."Running" AND "AUX FALSE" AND "gP_CarboPipe_En" THEN + "HMI_PID"."RMM303"."Pv" := "HMI_PID"."RMM303"."Sp"; + END_IF; + + // Network 4: Error Ok (Original Language: LAD) + + IF "HMI_Service"."Workshop_Test"."CO2TestRequest" AND "gWorkshopTest" THEN + "mAux" := "HMI_Service"."Workshop_Test"."SIMCO2_Test_SP" - "HMI_PID"."RMM303"."Pv"; + END_IF; + + // Network 5: Error Ok (Original Language: LAD) + + IF "HMI_Service"."Workshop_Test"."CO2TestRequest" THEN + "HMI_Service"."Workshop_Test"."SIMCO2_Error_OK" := FALSE; + END_IF; + + // Network 6: PID Control (Original Language: LAD) + // Attenzione al Bit REG_INV !! + + "PID"(D_Sel := "AUX TRUE", FF_Enable := "AUX TRUE", I_Sel := "AUX TRUE", LMN_FAC := 1.0, LMN_OFF := 0.0, MAN_ON := "gBlenderCIPMode" OR "HMI_PID"."RMM303"."ManualControl"."ManOut", PID_Data := "HMI_PID"."RMM303", PID_Enable := "HMI_PID"."RMM303"."ManualControl"."PidEnable" OR "HMI_PID"."RMM303"."I_ITL", P_Sel := "AUX TRUE", REG_INV := "AUX FALSE"); + + // Network 7: Integral (Original Language: LAD) + + "mPID_RMM303_Int" := "PID_CO2_Integral"; + + // Network 8: Integral PID Inizialize (Original Language: LAD) + + IF "HMI_PID"."RMM303"."I_ITL" THEN + "HMI_PID"."RMM303"."I_ITL" := FALSE; + END_IF; + + // Network 9: C02 Valve Output (Original Language: LAD) + + // NBox SymPy processed, logic in consumer + "mCO2PIDEn" := "HMI_PID"."RMM303"."ManualControl"."PidEnable"; // N_TRIG("HMI_PID"."RMM303"."ManualControl"."PidEnable") - Mem: "mCO2PIDEn" + + IF "mCO2PIDEn" AND NOT "HMI_PID"."RMM303"."ManualControl"."PidEnable" THEN + "mCO2ValveOut" := "HMI_PID"."RMM303"."Out"; + END_IF; + + // Network 10: C02 Valve Output (Original Language: LAD) + + SEL_R(G := "HMI_PID"."RMM303"."ManualControl"."PidEnable", IN0 := 0.0, IN1 := "HMI_PID"."RMM303"."Out"); + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RMM303_Data.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RMM303_Data.md new file mode 100644 index 0000000..058d063 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RMM303_Data.md @@ -0,0 +1,22 @@ +```pascal +// Block Type: InstanceDB +// Block Number: 982 + +DATA_BLOCK "PID_RMM303_Data" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + PID_CO2_Proportional : Real := 0.0; + PID_CO2_Integral : Real := 0.0; + PID_CO2_Derivative : Real := 0.0; + mCO2ValveOut : Real := 0.0; + mCO2PIDEn : Bool := FALSE; + PID : "PIDControl"; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RMM304.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RMM304.md new file mode 100644 index 0000000..6d624e9 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RMM304.md @@ -0,0 +1,82 @@ +```pascal +// Block Type: FB +// Block Number: 1794 +// Original Network Languages: LAD +// Block Comment: +// TASK1 PID + +FUNCTION_BLOCK "PID_RMM304" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + PID_Enable : Bool; + MAN_ON : Bool; + P_Sel : Bool; + I_Sel : Bool; + D_Sel : Bool; + FF_Enable : Bool; + REG_INV : Bool; + LMN_FAC : Real; + LMN_OFF : Real; +END_VAR + +VAR_OUTPUT + LMN_P : Real; + LMN_I : Real; + LMN_D : Real; +END_VAR + +VAR_INOUT + PID_Data : "PID"; +END_VAR + +VAR_STAT + PID_GAS2_Proportional : Real; + PID_GAS2_Integral : Real; + PID_GAS2_Derivative : Real; + PID : "PIDControl"; +END_VAR + +VAR_TEMP + mAux : Real; +END_VAR + +BEGIN + + // Network 1: Manual Enable (Original Language: LAD) + + "HMI_PID"."RMM304"."ManualControl"."PidEnable" := ("Procedure_Variables"."Blender_Run"."Latch" AND "HMI_PID"."RMM304"."ManualControl"."ManOut") OR ("gBlenderBlending" AND "Blender_Variables_Pers"."gCarboStillProduct" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_RemoteInjection" AND "gWorkshopTest" AND ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_GAS2InjectionType" > 0)); + + // Network 2: Setpoint (Original Language: LAD) + + "HMI_PID"."RMM304"."Sp" := "Blender_Variables"."gSP_GAS2"; + + // Network 3: PV forcing (Original Language: LAD) + + IF "Procedure_Variables"."Blender_Rinse"."Running" AND "AUX FALSE" AND "HMI_PID"."RMM304"."ManualControl"."PidEnable" AND "gBlenderStableFlow" THEN + "HMI_PID"."RMM304"."Pv" := "HMI_PID"."RMM304"."Sp"; + END_IF; + + // Network 4: PID Control (Original Language: LAD) + // Attenzione al Bit REG_INV !! + + "PID"(D_Sel := "AUX TRUE", FF_Enable := "AUX TRUE", I_Sel := "AUX TRUE", LMN_FAC := 1.0, LMN_OFF := 0.0, MAN_ON := "HMI_PID"."RMM304"."ManualControl"."ManOut", PID_Data := "HMI_PID"."RMM304", PID_Enable := "HMI_PID"."RMM304"."I_ITL" OR "HMI_PID"."RMM304"."ManualControl"."PidEnable", P_Sel := "AUX TRUE", REG_INV := "AUX FALSE"); + + // Network 5: Integral (Original Language: LAD) + + "mPID_RMM304_Int" := "PID_GAS2_Integral"; + + // Network 6: Integral PID Inizialize (Original Language: LAD) + + IF "HMI_PID"."RMM304"."I_ITL" THEN + "HMI_PID"."RMM304"."I_ITL" := FALSE; + END_IF; + + // Network 7: Valve Output (Original Language: LAD) + + SEL_R(G := "HMI_PID"."RMM304"."ManualControl"."PidEnable", IN0 := 0.0, IN1 := "HMI_PID"."RMM304"."Out"); + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RMM304_Data.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RMM304_Data.md new file mode 100644 index 0000000..acbd7a8 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RMM304_Data.md @@ -0,0 +1,20 @@ +```pascal +// Block Type: InstanceDB +// Block Number: 994 + +DATA_BLOCK "PID_RMM304_Data" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + PID_GAS2_Proportional : Real := 0.0; + PID_GAS2_Integral : Real := 0.0; + PID_GAS2_Derivative : Real := 0.0; + PID : "PIDControl"; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RMP302.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RMP302.md new file mode 100644 index 0000000..f39cf50 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RMP302.md @@ -0,0 +1,89 @@ +```pascal +// Block Type: FB +// Block Number: 1781 +// Original Network Languages: LAD +// Block Comment: +// TASK1 PID + +FUNCTION_BLOCK "PID_RMP302" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + PID_Enable : Bool; + MAN_ON : Bool; + P_Sel : Bool; + I_Sel : Bool; + D_Sel : Bool; + FF_Enable : Bool; + REG_INV : Bool; + LMN_FAC : Real; + LMN_OFF : Real; +END_VAR + +VAR_OUTPUT + LMN_P : Real; + LMN_I : Real; + LMN_D : Real; +END_VAR + +VAR_INOUT + PID_Data : "PID"; +END_VAR + +VAR_STAT + PID_Syrup_Proportional : Real; + PID_Syrup_Integral : Real; + PID_Syrup_Derivative : Real; + Syrup_Valve_Out : Real; + mSyrPIDEn : Bool; + PID : "PIDControl"; +END_VAR + +BEGIN + + // Network 1: Manual Enable (Original Language: LAD) + + "HMI_PID"."RMP302"."ManualControl"."PidEnable" := "gBlenderCIPMode" OR ("gBlenderBlending" AND "Blender_Variables_Pers"."gWaterRecipe"); + + // Network 2: Setpoint (Original Language: LAD) + + "HMI_PID"."RMP302"."Sp" := "Blender_Variables"."gSP_SYR"; + + // Network 3: PV forcing (Original Language: LAD) + + IF "HMI_PID"."RMP302"."ManualControl"."PidEnable" AND "gBlenderStableFlow" AND "Procedure_Variables"."FTP302Line_Preparation"."Latch" AND "Procedure_Variables"."FTP302_StartUp"."Latch" AND "gSyrupQcoRinse" THEN + "HMI_PID"."RMP302"."Pv" := "HMI_PID"."RMP302"."Sp"; + END_IF; + + // Network 4: PID Control (Original Language: LAD) + // Attenzione al Bit REG_INV !! + + "PID"(D_Sel := "AUX TRUE", FF_Enable := "AUX TRUE", I_Sel := "AUX TRUE", LMN_FAC := 1.0, LMN_OFF := 0.0, MAN_ON := "gBlenderCIPMode" OR ("gRinseClose_RMP302" AND "System_RunOut_Variables"."FastChangeOverActivated" AND "Procedure_Variables"."Blender_Rinse"."Running"), PID_Data := "HMI_PID"."RMP302", PID_Enable := "HMI_PID"."RMP302"."ManualControl"."PidEnable" OR "HMI_PID"."RMP302"."I_ITL", P_Sel := "AUX TRUE", REG_INV := "AUX FALSE"); + + // Network 5: Integral (Original Language: LAD) + + "mPID_RMP302_Int" := "PID_Syrup_Integral"; + + // Network 6: Integral PID Inizialize (Original Language: LAD) + + IF "HMI_PID"."RMP302"."I_ITL" THEN + "HMI_PID"."RMP302"."I_ITL" := FALSE; + END_IF; + + // Network 7: Valve Output (Original Language: LAD) + + // NBox SymPy processed, logic in consumer + "mSyrPIDEn" := "HMI_PID"."RMP302"."ManualControl"."PidEnable"; // N_TRIG("HMI_PID"."RMP302"."ManualControl"."PidEnable") - Mem: "mSyrPIDEn" + + IF "mSyrPIDEn" AND NOT "HMI_PID"."RMP302"."ManualControl"."PidEnable" THEN + "Syrup_Valve_Out" := "HMI_PID"."RMP302"."Out"; + END_IF; + + // Network 8: Valve Output (Original Language: LAD) + + SEL_R(G := "HMI_PID"."RMP302"."ManualControl"."PidEnable", IN0 := 0.0, IN1 := "HMI_PID"."RMP302"."Out"); + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RMP302_Data.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RMP302_Data.md new file mode 100644 index 0000000..29a31a7 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RMP302_Data.md @@ -0,0 +1,22 @@ +```pascal +// Block Type: InstanceDB +// Block Number: 981 + +DATA_BLOCK "PID_RMP302_Data" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + PID_Syrup_Proportional : Real := 0.0; + PID_Syrup_Integral : Real := 0.0; + PID_Syrup_Derivative : Real := 0.0; + Syrup_Valve_Out : Real := 0.0; + mSyrPIDEn : Bool := TRUE; + PID : "PIDControl"; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RVM301.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RVM301.md new file mode 100644 index 0000000..e0b4666 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RVM301.md @@ -0,0 +1,83 @@ +```pascal +// Block Type: FB +// Block Number: 1783 +// Original Network Languages: LAD +// Block Comment: +// TASK1 PID + +FUNCTION_BLOCK "PID_RVM301" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + PID_Enable : Bool; + MAN_ON : Bool; + P_Sel : Bool; + I_Sel : Bool; + D_Sel : Bool; + FF_Enable : Bool; + REG_INV : Bool; + LMN_FAC : Real; + LMN_OFF : Real; +END_VAR + +VAR_OUTPUT + LMN_P : Real; + LMN_I : Real; + LMN_D : Real; +END_VAR + +VAR_INOUT + PID_Data : "PID"; +END_VAR + +VAR_STAT + PID_Press_CO2_Proport : Real; + PID_Press_CO2_Integral : Real; + PID_Press_CO2_Derivative : Real; + Press_CO2_Valve_Out : Real; + PID : "PIDControl"; +END_VAR + +VAR_TEMP + mDummy : Bool; + PID_CO2_LMN_FAC : Real; + temp : Real; +END_VAR + +BEGIN + + // Network 1: Manual Enable (Original Language: LAD) + + "HMI_PID"."RVM301"."ManualControl"."PidEnable" := "Procedure_Variables"."TM301_Pressure"."Running" OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Balaiage" AND "Procedure_Variables"."Balaiage"."Latch"); + + // Network 2: Dead Band & Proportional old "HMI_Blender_Parameters".Spare4 (Original Language: LAD) + + IF "AUX FALSE" THEN + "HMI_PID"."RVM301"."KP" := "HMI_Blender_Parameters"."_RVM301_Kp"; + END_IF; + + "mDummy" := "AUX FALSE"; + + // Network 3: Limit Factor (Original Language: LAD) + + SEL_R(G := "gP_LimitCO2PressValve", IN0 := 1.0, IN1 := "Blender_Constants"."gPressCO2StartUpValue"); + + // Network 4: PID Control (Original Language: LAD) + // Attenzione al Bit REG_INV !! + + "PID"(D_Sel := "AUX FALSE", FF_Enable := "AUX TRUE", I_Sel := "AUX FALSE", LMN_FAC := "PID_CO2_LMN_FAC", LMN_OFF := 0.0, MAN_ON := "PID_Variables"."PID_RVM301_Release" OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled" AND "gRinseDrainRunning"), PID_Data := "HMI_PID"."RVM301", PID_Enable := "HMI_PID"."RVM301"."ManualControl"."PidEnable" OR "HMI_PID"."RVM301"."I_ITL", P_Sel := "AUX TRUE", REG_INV := "AUX FALSE"); + + // Network 5: Integral PID Inizilize (Original Language: LAD) + + IF "HMI_PID"."RVM301"."I_ITL" THEN + "HMI_PID"."RVM301"."I_ITL" := FALSE; + END_IF; + + // Network 6: Valve Output (Original Language: LAD) + + SEL_R(G := "HMI_PID"."RVM301"."ManualControl"."PidEnable", IN0 := 0.0, IN1 := "HMI_PID"."RVM301"."Out"); + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RVM301_Data.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RVM301_Data.md new file mode 100644 index 0000000..dbde070 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RVM301_Data.md @@ -0,0 +1,21 @@ +```pascal +// Block Type: InstanceDB +// Block Number: 983 + +DATA_BLOCK "PID_RVM301_Data" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + PID_Press_CO2_Proport : Real := 0.0; + PID_Press_CO2_Integral : Real := 0.0; + PID_Press_CO2_Derivative : Real := 0.0; + Press_CO2_Valve_Out : Real := 0.0; + PID : "PIDControl"; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RVM319_Data.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RVM319_Data.md new file mode 100644 index 0000000..0e16d0b --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RVM319_Data.md @@ -0,0 +1,20 @@ +```pascal +// Block Type: InstanceDB +// Block Number: 985 + +DATA_BLOCK "PID_RVM319_Data" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + PID_Prod_Temp_Proport : Real := 0.0; + PID_Prod_Temp_Integral : Real := 0.0; + PID_Prod_Temp_Derivat : Real := 0.0; + PID : "PIDControl"; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RVM319_PRD.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RVM319_PRD.md new file mode 100644 index 0000000..a85f9d2 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RVM319_PRD.md @@ -0,0 +1,94 @@ +```pascal +// Block Type: FB +// Block Number: 1785 +// Original Network Languages: LAD +// Block Comment: +// TASK1 PID + +FUNCTION_BLOCK "PID_RVM319_PRD" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + PID_Enable : Bool; + MAN_ON : Bool; + P_Sel : Bool; + I_Sel : Bool; + D_Sel : Bool; + FF_Enable : Bool; + REG_INV : Bool; + LMN_FAC : Real; + LMN_OFF : Real; +END_VAR + +VAR_OUTPUT + LMN_P : Real; + LMN_I : Real; + LMN_D : Real; +END_VAR + +VAR_INOUT + CIP_CVQ : Real; +END_VAR + +VAR_STAT + PID_Prod_Temp_Proport : Real; + PID_Prod_Temp_Integral : Real; + PID_Prod_Temp_Derivat : Real; + PID : "PIDControl"; +END_VAR + +VAR_TEMP + mAux : Real; + SP_Choose : Real; + mDummy : Bool; +END_VAR + +BEGIN + + // Network 1: Manual Enable (Original Language: LAD) + + "HMI_PID"."RVM319_PRD"."ManualControl"."PidEnable" := ("HMI_Variables_Cmd"."Commands_From_HMI"."CMD_BlenderMaintenance" AND "HMI_PID"."RVM319_PRD"."ManualControl"."ManOut" AND "Procedure_Variables"."Blender_Run"."Latch") OR ("gBlenderCIPMode" AND "Blender_Variables_Pers"."gCoolerEnabled" AND (("gProdDoubleChillerEn" AND "HMI_Variables_Status"."Procedures"."WarmRinseRun" AND (("gBlenderProdMode" AND "Procedure_Variables"."Blender_Run"."Running") OR ("gBlenderProdMode" AND "Procedure_Variables"."Blender_Run"."Latch" AND "gEnRecircPHE"))) OR ("HMI_Variables_Status"."Procedures"."WarmRinseRun" AND "gProductChillerEn" AND (("gBlenderProdMode" AND "Procedure_Variables"."Blender_Run"."Running") OR ("gBlenderProdMode" AND "Procedure_Variables"."Blender_Run"."Latch" AND "gEnRecircPHE"))))); + + // Network 2: Setpoint (Original Language: LAD) + + "HMI_PID"."RVM319_PRD"."Sp" := "Blender_Variables"."gSP_Prod_Temperature"; + + // Network 3: Setpoint (Original Language: LAD) + + IF ("HMI_Variables_Cmd"."Commands_From_HMI"."CMD_BlenderMaintenance" AND "HMI_PID"."RVM319_PRD"."ManualControl"."ManOut" AND "Procedure_Variables"."Blender_Run"."Latch") OR ("HMI_PID"."RVM319_PRD"."ManualControl"."PidEnable" AND "gBlenderEnToRamp" AND "gEnRecircPHE" AND "Procedure_Variables"."Blender_Rinse"."Running" AND "Procedure_Variables"."CarboWaterLine"."Running") THEN + "HMI_PID"."RVM319_PRD"."Sp" := "HMI_PID"."RVM319_PRD"."Pv"; + END_IF; + + // Network 4: Integral PID Hold (Original Language: LAD) + + "HMI_PID"."RVM319_PRD"."Hold_Int" := "HMI_PID"."RVM319_PRD"."ManualControl"."PidEnable" AND "PID_Variables"."PID_RVM319_PRD_EnInt"; + + // Network 5: PID Control (Original Language: LAD) + // Attenzione al Bit REG_INV !! + + "PID"(D_Sel := "AUX TRUE", FF_Enable := "AUX TRUE", I_Sel := "AUX TRUE", LMN_FAC := 1.0, LMN_OFF := 0.0, MAN_ON := "HMI_PID"."RVM319_PRD"."ManualControl"."ManOut", PID_Data := "HMI_PID"."RVM319_PRD", PID_Enable := "HMI_PID"."RVM319_PRD"."ManualControl"."PidEnable" OR "HMI_PID"."RVM319_PRD"."I_ITL", P_Sel := "AUX TRUE", REG_INV := "AUX TRUE"); + + // Network 6: Integral PID Inizilize (Original Language: LAD) + + IF "HMI_PID"."RVM319_PRD"."I_ITL" THEN + "HMI_PID"."RVM319_PRD"."I_ITL" := FALSE; + END_IF; + + // Network 7: Valve Output (Original Language: LAD) + + SEL_R(G := "gGencoldChillerEn" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CoolerControl", 3), IN0 := "HMI_Instrument"."TTN321"."PVFiltered", IN1 := "HMI_PID"."RVM319_PRD"."Pv"); + + CIP_CVQ(i_TempIn := "mAux", i_TempOut := "HMI_Instrument"."TTM306_PRD"."PVFiltered"); + + // Network 8: Valve Output (Original Language: LAD) + + SEL_R(G := "Blender_Variables_Pers"."gCoolerEnabled" AND "gGencoldChillerEn" AND ("gBlenderCIPMode" OR "HMI_Variables_Status"."Procedures"."WarmRinseRun"), IN0 := 0.0, IN1 := "mAux"); + + // Network 9: Valve Output (Original Language: LAD) + + SEL_R(G := "HMI_PID"."RVM319_PRD"."ManualControl"."PidEnable", IN0 := "mAux", IN1 := "HMI_PID"."RVM319_PRD"."Out"); + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RVN302.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RVN302.md new file mode 100644 index 0000000..242c510 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RVN302.md @@ -0,0 +1,155 @@ +```pascal +// Block Type: FB +// Block Number: 1793 +// Original Network Languages: LAD +// Block Comment: +// TASK1 PID + +FUNCTION_BLOCK "PID_RVN302" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + PID_Enable : Bool; + MAN_ON : Bool; + P_Sel : Bool; + I_Sel : Bool; + D_Sel : Bool; + FF_Enable : Bool; + REG_INV : Bool; + LMN_FAC : Real; + LMN_OFF : Real; +END_VAR + +VAR_OUTPUT + LMN_P : Real; + LMN_I : Real; + LMN_D : Real; +END_VAR + +VAR_INOUT + PID_Data : "PID"; +END_VAR + +VAR_STAT + PID_RVN302_Prop : Real; + PID_RVN302_Int : Real; + PID_RVN302_Der : Real; + PID : "PIDControl"; +END_VAR + +VAR_TEMP + mDummy : Bool; + mMaxRVN302LevelAnalog : Bool; + mMaxRVN302Level : Real; + mAuxReal : Real; +END_VAR + +BEGIN + + // Network 1: Manual Enable (Original Language: LAD) + + "HMI_PID"."RVN302"."ManualControl"."PidEnable" := ("Blender_Variables_Pers"."gSkipDeaireation" AND "Procedure_Variables"."Blender_Run"."Latch" AND "gBlenderProdMode" AND "gBlenderRinseMode") OR ("Blender_Variables_Pers"."gSkipDeaireation" AND "Procedure_Variables"."TN301_StartUp"."Done" AND "Procedure_Variables"."TN301_StartUp"."Running" AND "gBlenderProdMode" AND "gBlenderRinseMode"); + + "Blender_Variables"."Aux_RVN302_PID"."ManualControl"."PidEnable" := ("Blender_Variables_Pers"."gSkipDeaireation" AND "Procedure_Variables"."Blender_Run"."Latch" AND "gBlenderProdMode" AND "gBlenderRinseMode") OR ("Blender_Variables_Pers"."gSkipDeaireation" AND "Procedure_Variables"."TN301_StartUp"."Done" AND "Procedure_Variables"."TN301_StartUp"."Running" AND "gBlenderProdMode" AND "gBlenderRinseMode"); + + // Network 2: Setpoint (Original Language: LAD) + + SEL_R(G := "Blender_Variables_Pers"."gSkipDeaireation", IN0 := "Blender_Variables"."gSP_DEAIR_Level", IN1 := "Blender_Variables"."gSP_ST OR AGE_Level"); + + // Network 3: 0 = Deaireation ON, 1 = Deaireation OFF (Original Language: LAD) + + "HMI_Variables_Status"."System"."SkipDeaireation" := "Blender_Variables_Pers"."gSkipDeaireation"; + + // Network 4: Setpoint (Original Language: LAD) + + IF ("Blender_Variables_Pers"."gSkipDeaireation" AND "HMI_PID"."RVN302"."ManualControl"."PidEnable" AND "Procedure_Variables"."Blender_Run"."Running" AND "Procedure_Variables"."BlendFill_StartUp"."Running") OR ("Blender_Variables_Pers"."gSkipDeaireation" AND "HMI_PID"."RVN302"."ManualControl"."PidEnable" AND "Procedure_Variables"."Blender_Run"."Running" AND "Procedure_Variables"."TN301_StartUp"."Running" AND "gDeairTank_Loading") THEN + "HMI_PID"."RVN302"."Sp" := "HMI_PID"."RVN302"."Pv"; + END_IF; + + // Network 5: Blender Variables - Persistent (Original Language: LAD) + + "Blender_Variables"."Aux_RVN302_PID"."Sp" := "HMI_PID"."RVN302"."Sp"; + + "Blender_Variables"."Aux_RVN302_PID"."Pv" := "HMI_PID"."RVN302"."Pv"; + + "Blender_Variables"."Aux_RVN302_PID"."KP" := "HMI_PID"."RVN302"."KP"; + + SEL_R(G := "Blender_Variables_Pers"."gSkipDeaireation", IN0 := "HMI_PID"."RVN302"."Ti", IN1 := "HMI_PID"."RVN302_TM301"."Ti"); + + SEL_R(G := "Blender_Variables_Pers"."gSkipDeaireation", IN0 := "HMI_PID"."RVN302"."Td", IN1 := "HMI_PID"."RVN302_TM301"."Td"); + + "Blender_Variables"."Aux_RVN302_PID"."FfOut" := "HMI_PID"."RVN302"."FfOut"; + + "Blender_Variables"."Aux_RVN302_PID"."OutMax" := "HMI_PID"."RVN302"."OutMax"; + + "Blender_Variables"."Aux_RVN302_PID"."OutMin" := "HMI_PID"."RVN302"."OutMin"; + + "Blender_Variables"."Aux_RVN302_PID"."I_ITLVAL" := "HMI_PID"."RVN302"."I_ITLVAL"; + + "Blender_Variables"."Aux_RVN302_PID"."Lsp" := "HMI_PID"."RVN302"."Lsp"; + + "Blender_Variables"."Aux_RVN302_PID"."OutMan" := "HMI_PID"."RVN302"."OutMan"; + + "Blender_Variables"."Aux_RVN302_PID"."Cycle_Time" := "HMI_PID"."RVN302"."Cycle_Time"; + + "Blender_Variables"."Aux_RVN302_PID"."Dead_Band" := "HMI_PID"."RVN302"."Dead_Band"; + + "mDummy" := TRUE; + + // Network 6: From HMI - Local (Original Language: LAD) + + "Blender_Variables"."Aux_RVN302_PID"."ManualControl"."LocalSP" := "HMI_PID"."RVN302"."ManualControl"."LocalSP"; + + // Network 7: Integral PID Inizialize (Original Language: LAD) + + "Blender_Variables"."Aux_RVN302_PID"."I_ITL" := "HMI_PID"."RVN302"."I_ITL"; + + // Network 8: PID Control (Original Language: LAD) + // Attenzione al Bit REG_INV !! + + "PID"(D_Sel := "AUX TRUE", FF_Enable := "AUX TRUE", I_Sel := "AUX TRUE", LMN_FAC := 1.0, LMN_OFF := 0.0, MAN_ON := "HMI_PID"."RVN302"."ManualControl"."ManOut", PID_Data := "Blender_Variables"."Aux_RVN302_PID", PID_Enable := "HMI_PID"."RVN302"."ManualControl"."PidEnable" OR "HMI_PID"."RVN302"."I_ITL", P_Sel := "AUX TRUE", REG_INV := "AUX FALSE"); + + // Network 9: Valve Output (Original Language: LAD) + + "HMI_PID"."RVN302"."Out" := "Blender_Variables"."Aux_RVN302_PID"."Out"; + + // Network 10: Integral PID Inizialize (Original Language: LAD) + + "HMI_PID"."RVN302"."I_ITL" := "Blender_Variables"."Aux_RVN302_PID"."I_ITL"; + + // Network 11: Limit (Original Language: LAD) + + "HMI_PID"."RVN302"."High_Limit" := "Blender_Variables"."Aux_RVN302_PID"."High_Limit"; + + // Network 12: Limit (Original Language: LAD) + + "HMI_PID"."RVN302"."Low_Limit" := "Blender_Variables"."Aux_RVN302_PID"."Low_Limit"; + + // Network 13: Integral (Original Language: LAD) + + "mPID_RVN302_Int" := "PID_RVN302_Int"; + + // Network 14: Integral PID Inizilize (Original Language: LAD) + + IF "HMI_PID"."RVN302"."I_ITL" THEN + "HMI_PID"."RVN302"."I_ITL" := FALSE; + END_IF; + + // Network 15: From HMI (Original Language: LAD) + + SEL_R(G := "Blender_Variables_Pers"."gSkipDeaireation", IN0 := "Blender_Variables"."gSP_DEAIR_Level", IN1 := "Blender_Variables"."gSP_ST OR AGE_Level"); + + "mMaxRVN302Level" := "mAuxReal" + 10.0; + + SEL_R(G := "Blender_Variables_Pers"."gSkipDeaireation", IN0 := "HMI_Instrument"."LTN301"."PVFiltered", IN1 := "HMI_Instrument"."LTM302"."PVFiltered"); + + "mMaxRVN302LevelAnalog" := "mAuxReal" > "mMaxRVN302Level"; + + // Network 16: Valve Output (Original Language: LAD) + + SEL_R(G := "HMI_PID"."RVN302"."ManualControl"."PidEnable" AND ("HMI_PID"."RVN302"."ManualControl"."ManOut" OR "mMaxRVN302LevelAnalog"), IN0 := 0.0, IN1 := "HMI_PID"."RVN302"."Out"); + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RVN302_Data.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RVN302_Data.md new file mode 100644 index 0000000..d1e2cc9 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RVN302_Data.md @@ -0,0 +1,20 @@ +```pascal +// Block Type: InstanceDB +// Block Number: 992 + +DATA_BLOCK "PID_RVN302_Data" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + PID_RVN302_Prop : Real := 0.0; + PID_RVN302_Int : Real := 0.0; + PID_RVN302_Der : Real := 0.0; + PID : "PIDControl"; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RVP303.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RVP303.md new file mode 100644 index 0000000..d499ace --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RVP303.md @@ -0,0 +1,85 @@ +```pascal +// Block Type: FB +// Block Number: 1789 +// Original Network Languages: LAD +// Block Comment: +// TASK1 PID + +FUNCTION_BLOCK "PID_RVP303" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + PID_Enable : Bool; + MAN_ON : Bool; + P_Sel : Bool; + I_Sel : Bool; + D_Sel : Bool; + FF_Enable : Bool; + REG_INV : Bool; + LMN_FAC : Real; + LMN_OFF : Real; +END_VAR + +VAR_OUTPUT + LMN_P : Real; + LMN_I : Real; + LMN_D : Real; +END_VAR + +VAR_INOUT + PID_Data : "PID"; +END_VAR + +VAR_STAT + PID_SyrLeve_Prop : Real; + PID_SyrLevel_Int : Real; + PID_SyrLevel_Der : Real; + PID : "PIDControl"; +END_VAR + +VAR_TEMP + mMaxSyrLevel : Real; + mMaxSyrLevelAnalog : Bool; +END_VAR + +BEGIN + + // Network 1: Manual Enable (Original Language: LAD) + + "HMI_PID"."RVP303"."ManualControl"."PidEnable" := ("gCIP_SyrTank_MaxLevel" AND (("gBlenderRinseMode" AND "Procedure_Variables"."TM301_Drain"."Latch") OR ("gBlenderCIPMode" AND "gCIPRinseOpenValves" AND "CIP_Program_Variables"."Status"."CausticRecoveryRun" AND "CIP_Program_Variables"."Status"."BlenderDrainRunning"))) OR ("Blender_Variables_Pers"."gWaterRecipe" AND "gBlenderProdMode" AND "gBlenderRinseMode" AND (("gIN_SyrRoomOk" AND ("Procedure_Variables"."FTP302Line_Preparation"."Running" OR "Procedure_Variables"."FTP302_StartUp"."Running")) OR ("Procedure_Variables"."Blender_Run"."Latch" AND ("Procedure_Variables"."Syr_RunOut"."Latch" OR ("Procedure_Variables"."First_Production"."Latch" AND "Procedure_Variables"."FTP302Line_Preparation"."Done"))))); + + // Network 2: Setpoint (Original Language: LAD) + + "HMI_PID"."RVP303"."Sp" := "Blender_Variables"."gSP_SYR_Level"; + + // Network 3: Setpoint (Original Language: LAD) + + IF "gSyrTank_Loading" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Running" AND (("gBlenderCIPMode" AND "HMI_PID"."RVP303"."ManualControl"."PidEnable" AND "Procedure_Variables"."Blender_Run"."Wait") OR ("System_RunOut_Variables"."FastChangeOverActivated" AND "Procedure_Variables"."FTP302Line_Preparation"."Running" AND "Procedure_Variables"."FTP302_StartUp"."Running" AND "HMI_PID"."RVP303"."ManualControl"."PidEnable" AND "Procedure_Variables"."Blender_Run"."Running")) THEN + "HMI_PID"."RVP303"."Sp" := "HMI_PID"."RVP303"."Pv"; + END_IF; + + // Network 4: PID Control (Original Language: LAD) + // Attenzione al Bit REG_INV !! + + "PID"(D_Sel := "AUX TRUE", FF_Enable := "AUX TRUE", I_Sel := "AUX TRUE", LMN_FAC := 1.0, LMN_OFF := 0.0, MAN_ON := "HMI_PID"."RVP303"."ManualControl"."ManOut", PID_Data := "HMI_PID"."RVP303", PID_Enable := "HMI_PID"."RVP303"."ManualControl"."PidEnable" OR "HMI_PID"."RVP303"."I_ITL", P_Sel := "AUX TRUE", REG_INV := "AUX FALSE"); + + // Network 5: Integral PID Inizilize (Original Language: LAD) + + IF "HMI_PID"."RVP303"."I_ITL" THEN + "HMI_PID"."RVP303"."I_ITL" := FALSE; + END_IF; + + // Network 6: Valve Output (Original Language: LAD) + + "mMaxSyrLevel" := "Blender_Variables"."gSP_SYR_Level" + 10.0; + + "mMaxSyrLevelAnalog" := "HMI_Instrument"."LTP303"."PVFiltered" > "mMaxSyrLevel"; + + // Network 7: Valve Output (Original Language: LAD) + + SEL_R(G := "HMI_PID"."RVP303"."ManualControl"."PidEnable" AND ("HMI_PID"."RVP303"."ManualControl"."ManOut" OR "mMaxSyrLevelAnalog"), IN0 := 0.0, IN1 := "HMI_PID"."RVP303"."Out"); + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RVP303_Data.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RVP303_Data.md new file mode 100644 index 0000000..0075f31 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RVP303_Data.md @@ -0,0 +1,20 @@ +```pascal +// Block Type: InstanceDB +// Block Number: 989 + +DATA_BLOCK "PID_RVP303_Data" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + PID_SyrLeve_Prop : Real := 0.0; + PID_SyrLevel_Int : Real := 0.0; + PID_SyrLevel_Der : Real := 0.0; + PID : "PIDControl"; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RVS318.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RVS318.md new file mode 100644 index 0000000..ff68db9 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RVS318.md @@ -0,0 +1,85 @@ +```pascal +// Block Type: FB +// Block Number: 1786 +// Original Network Languages: LAD +// Block Comment: +// TASK1 PID + +FUNCTION_BLOCK "PID_RVS318" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + PID_Enable : Bool; + MAN_ON : Bool; + P_Sel : Bool; + I_Sel : Bool; + D_Sel : Bool; + FF_Enable : Bool; + REG_INV : Bool; + LMN_FAC : Real; + LMN_OFF : Real; +END_VAR + +VAR_OUTPUT + LMN_P : Real; + LMN_I : Real; + LMN_D : Real; +END_VAR + +VAR_INOUT + PID_Data : "PID"; +END_VAR + +VAR_STAT + PID_CIP_Temp_Proport : Real; + PID_CIP_Temp_Integral : Real; + PID_CIP_Temp_Derivat : Real; + PID : "PIDControl"; +END_VAR + +VAR_TEMP + SP_Choose : Real; +END_VAR + +BEGIN + + // Network 1: Manual Enable (Original Language: LAD) + + "HMI_PID"."RVS318"."ManualControl"."PidEnable" := ("Procedure_Variables"."Blender_Run"."Latch" AND "HMI_PID"."RVS318"."ManualControl"."ManOut" AND "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_BlenderMaintenance") OR ("gP_CIP_Temp_En" AND "gBlenderCIPMode" AND "HMI_Device"."AVS336"."Out" AND "HMI_Digital"."FSS301"."Filtered" AND "CIP_Program_Variables"."CIP_Run"."Latch"); + + // Network 2: Setpoint (Original Language: LAD) + // Increasing REAL Temperature Set Point + + IF "gBlenderCIPMode" THEN + "HMI_PID"."RVS318"."Sp" := "CIP_Program_Variables"."General_Data"."SPTemperature" + "Blender_Constants"."gCIP_SP_DeltaT"; + END_IF; + + IF NOT "gBlenderCIPMode" THEN + "HMI_PID"."RVS318"."Sp" := 0.0; + END_IF; + + // Network 3: Setpoint (Original Language: LAD) + + IF "Procedure_Variables"."Blender_Run"."Latch" AND "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_BlenderMaintenance" THEN + "HMI_PID"."RVS318"."Sp" := "HMI_PID"."RVS318"."Pv"; + END_IF; + + // Network 4: PID Control (Original Language: LAD) + // Attenzione al Bit REG_INV !! + + "PID"(D_Sel := "AUX TRUE", FF_Enable := "AUX TRUE", I_Sel := "AUX TRUE", LMN_FAC := 1.0, LMN_OFF := 0.0, MAN_ON := "HMI_PID"."RVS318"."ManualControl"."ManOut", PID_Data := "HMI_PID"."RVS318", PID_Enable := "HMI_PID"."RVS318"."I_ITL" OR "HMI_PID"."RVS318"."ManualControl"."PidEnable", P_Sel := "AUX TRUE", REG_INV := "AUX FALSE"); + + // Network 5: Integral PID Inizialize (Original Language: LAD) + + IF "HMI_PID"."RVS318"."I_ITL" THEN + "HMI_PID"."RVS318"."I_ITL" := FALSE; + END_IF; + + // Network 6: Valve Output (Original Language: LAD) + + SEL_R(G := "HMI_PID"."RVS318"."ManualControl"."PidEnable", IN0 := 0.0, IN1 := "HMI_PID"."RVS318"."Out"); + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RVS318_Data.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RVS318_Data.md new file mode 100644 index 0000000..ff862ba --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_RVS318_Data.md @@ -0,0 +1,20 @@ +```pascal +// Block Type: InstanceDB +// Block Number: 986 + +DATA_BLOCK "PID_RVS318_Data" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + PID_CIP_Temp_Proport : Real := 0.0; + PID_CIP_Temp_Integral : Real := 0.0; + PID_CIP_Temp_Derivat : Real := 0.0; + PID : "PIDControl"; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_Variables.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_Variables.md new file mode 100644 index 0000000..7a95756 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PID_Variables.md @@ -0,0 +1,38 @@ +```pascal +// Block Type: GlobalDB +// Block Number: 961 + +DATA_BLOCK "PID_Variables" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + PID_RVM301_Release : Bool := TRUE; + PID_RVM319_H2O_EnInt : Bool := FALSE; + PID_RVM319_PRD_EnInt : Bool := FALSE; + Track_H2O_Enable : Bool := TRUE; + Blend_Error_Enable : Bool := FALSE; + CarboCO2_Error_Enable : Bool := FALSE; + RMM301PIDIntValue : Real := 0.0; + RMP302PIDIntValue : Real := 0.0; + RMM303PIDIntValue : Real := 0.0; + RVP303PIDIntValue : Real := 36.39022; + RMM301DeltaP : Real := 4.319419; + PPN301FrictionLoss : Real := 0.0; + RMP302DeltaP : Real := 1.732815; + PPP302FrictionLoss : Real := 0.0; + RMM303DeltaP : Real := 1.5; + RVN302PIDIntValue : Real := 0.0; + RVN302DeltaP : Real := 0.0; + RMM304PIDIntValue : Real := 0.0; + RMM304DeltaP : Real := 0.0; + RVM301PIDIntValue : Real := 0.0; + RVM301DeltaP : Real := 0.0; + Simulation : "Struct"; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PPM O2.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PPM O2.md new file mode 100644 index 0000000..82f986f --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PPM O2.md @@ -0,0 +1,35 @@ +```pascal +FUNCTION "PPM O2" : Real +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : 'Function' +NAME : 'Name' +VERSION : 1.0 + VAR_INPUT + i_Temp : Real; + END_VAR + + VAR_TEMP + a : Real; + b : Real; + c : Real; + END_VAR + + +BEGIN + + + (* classic code: #a := 0.00353376 ;*) + #a := REAL#0.00353376; + (* classic code: #b := -0.33438937 ;*) + #b := REAL#-0.33438937; + (* classic code: #c := 14.38695088 ;*) + #c := REAL#14.38695088; + + #"PPM O2" := SQR(#i_Temp) * #a + #i_Temp * #b + #c ; + + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PPM303_VFC_Ctrl.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PPM303_VFC_Ctrl.md new file mode 100644 index 0000000..e63e491 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PPM303_VFC_Ctrl.md @@ -0,0 +1,50 @@ +```pascal +// Block Type: FC +// Block Number: 1871 +// Original Network Languages: LAD + +FUNCTION "PPM303_VFC_Ctrl" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +BEGIN + + // Network 1: Status word (Original Language: LAD) + + "PPM303_FC_Status_Word" := "P_gPPM303_VFC_StatusWord"; + + // Network 2: MIX - FC_Control_Word (Original Language: LAD) + + "PPM303_B02_Brake" := "AUX TRUE"; + + "PPM303_B03_Coast" := "AUX TRUE"; + + "PPM303_B04_QuickStop" := "AUX TRUE"; + + "PPM303_B05_HoldOutputFrq" := "AUX TRUE"; + + // Network 3: MIX - FC_Control_Word (Original Language: LAD) + + "PPM303_B07_Reset" := "gIN_ResetBtn" AND "HMI_Alarms"."Fault"."Alarm025"; + + // Network 4: MIX - FC_Control_Word (Original Language: LAD) + + "PPM303_B06_RampStop" := "HMI_Device"."PPM303"."Out"; + + // Network 5: MIX - FC_Control_Word (Original Language: LAD) + + "PPM303_B00_RefValue_LSB" := "gBlenderCIPMode" OR "gBlenderRinseMode"; + + "PPM303_B09_RampSelection" := "gBlenderCIPMode" OR "gBlenderRinseMode"; + + // Network 6: MIX - FC_Control_Word (Original Language: LAD) + + "PPM303_B10_DataValid" := "AUX FALSE"; + + // Network 7: Control Word (Original Language: LAD) + + "P_gPPM303_VFC_ControlWord" := "PPM303_FC_Control_Word"; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PPM305_VFC_Ctrl.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PPM305_VFC_Ctrl.md new file mode 100644 index 0000000..8e54382 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PPM305_VFC_Ctrl.md @@ -0,0 +1,50 @@ +```pascal +// Block Type: FC +// Block Number: 1875 +// Original Network Languages: LAD + +FUNCTION "PPM305_VFC_Ctrl" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +BEGIN + + // Network 1: Status Word (Original Language: LAD) + + "PPM305_FC_Status_Word" := "P_gPPM305_VFC_StatusWord"; + + // Network 2: MIX - FC_Control_Word (Original Language: LAD) + + "PPM305_B02_Brake" := "AUX TRUE"; + + "PPM305_B03_Coast" := "AUX TRUE"; + + "PPM305_B04_QuickStop" := "AUX TRUE"; + + "PPM305_B05_HoldOutputFrq" := "AUX TRUE"; + + // Network 3: MIX - FC_Control_Word (Original Language: LAD) + + "PPM305_B07_Reset" := "gIN_ResetBtn" AND "HMI_Alarms"."Fault"."Alarm025"; + + // Network 4: MIX - FC_Control_Word (Original Language: LAD) + + "PPM305_B06_RampStop" := "HMI_Device"."PPM305"."Out"; + + // Network 5: MIX - FC_Control_Word (Original Language: LAD) + + "PPM305_B00_RefValue_LSB" := "gBlenderCIPMode" OR "gBlenderRinseMode"; + + "PPM305_B09_RampSelection" := "gBlenderCIPMode" OR "gBlenderRinseMode"; + + // Network 6: MIX - FC_Control_Word (Original Language: LAD) + + "PPM305_B10_DataValid" := "AUX FALSE"; + + // Network 7: Control Word (Original Language: LAD) + + "P_gPPM305_VFC_ControlWord" := "PPM305_FC_Control_Word"; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PPM307_VFC_Ctrl.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PPM307_VFC_Ctrl.md new file mode 100644 index 0000000..8000bf6 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PPM307_VFC_Ctrl.md @@ -0,0 +1,58 @@ +```pascal +// Block Type: FC +// Block Number: 1874 +// Original Network Languages: LAD + +FUNCTION "PPM307_VFC_Ctrl" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +BEGIN + + // Network 1: Status word (Original Language: LAD) + + "PPM307_FC_Status_Word" := "P_gPPM307_VFC_StatusWord"; + + // Network 2: MIX - FC_Control_Word (Original Language: LAD) + + "PPM307_B02_Brake" := "AUX TRUE"; + + "PPM307_B03_Coast" := "AUX TRUE"; + + "PPM307_B04_QuickStop" := "AUX TRUE"; + + "PPM307_B05_HoldOutputFrq" := "AUX TRUE"; + + // Network 3: MIX - FC_Control_Word (Original Language: LAD) + + "PPM307_B07_Reset" := ("gIN_ResetBtn" AND "HMI_Alarms"."Fault"."Alarm031") OR ("DI_AlarmReset" AND "HMI_Alarms"."Fault"."Alarm031"); + + // Network 4: MIX - FC_Control_Word (Original Language: LAD) + + "PPM307_B06_RampStop" := "HMI_Device"."PPM307"."Out"; + + // Network 5: MIX - FC_Control_Word (Original Language: LAD) + + "PPM307_B00_RefValue_LSB" := "gBlenderCIPMode" OR "gBlenderRinseMode"; + + "PPM307_B09_RampSelection" := "gBlenderCIPMode" OR "gBlenderRinseMode"; + + // Network 6: MIX - FC_Control_Word (Original Language: LAD) + + "PPM307_B10_DataValid" := "AUX FALSE"; + + // Network 7: MIX - FC_Control_Word (Original Language: LAD) + + "P_gPPM307_VFC_ControlWord" := "PPM307_FC_Control_Word"; + + // Network 8: Reference Speed to CIP Return Pump (Original Language: LAD) + + WritePeripheral(Analog_Value := "HMI_Blender_Parameters"."ProcessSetup"."_CIPPPM307Freq", MAX_Analog_Value := 100.0, MAX_Out := 16383, MIN_Analog_Value := 0.0, MIN_Out := 0); + + // Network 9: Control Word (Original Language: LAD) + + // Network 9 did not produce printable SCL code. + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PPN301_VFC_Ctrl.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PPN301_VFC_Ctrl.md new file mode 100644 index 0000000..19e2d0c --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PPN301_VFC_Ctrl.md @@ -0,0 +1,50 @@ +```pascal +// Block Type: FC +// Block Number: 1872 +// Original Network Languages: LAD + +FUNCTION "PPN301_VFC_Ctrl" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +BEGIN + + // Network 1: Status Word (Original Language: LAD) + + "PPN301_FC_Status_Word" := "P_gPPN301_VFC_StatusWord"; + + // Network 2: MIX - FC_Control_Word (Original Language: LAD) + + "PPN301_B02_Brake" := "AUX TRUE"; + + "PPN301_B03_Coast" := "AUX TRUE"; + + "PPN301_B04_QuickStop" := "AUX TRUE"; + + "PPN301_B05_HoldOutputFrq" := "AUX TRUE"; + + // Network 3: MIX - FC_Control_Word (Original Language: LAD) + + "PPN301_B07_Reset" := "gIN_ResetBtn" AND "HMI_Alarms"."Fault"."Alarm024"; + + // Network 4: MIX - FC_Control_Word (Original Language: LAD) + + "PPN301_B06_RampStop" := "HMI_Device"."PPN301"."Out"; + + // Network 5: MIX - FC_Control_Word (Original Language: LAD) + + "PPN301_B00_RefValue_LSB" := "gBlenderCIPMode" OR "gBlenderRinseMode"; + + "PPN301_B09_RampSelection" := "gBlenderCIPMode" OR "gBlenderRinseMode"; + + // Network 6: MIX - FC_Control_Word (Original Language: LAD) + + "PPN301_B10_DataValid" := "AUX FALSE"; + + // Network 7: Control Word (Original Language: LAD) + + "P_gPPN301_VFC_ControlWord" := "PPN301_FC_Control_Word"; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PPP302_VFC_Ctrl.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PPP302_VFC_Ctrl.md new file mode 100644 index 0000000..66eedc6 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PPP302_VFC_Ctrl.md @@ -0,0 +1,50 @@ +```pascal +// Block Type: FC +// Block Number: 1873 +// Original Network Languages: LAD + +FUNCTION "PPP302_VFC_Ctrl" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +BEGIN + + // Network 1: Status Word (Original Language: LAD) + + "PPP302_FC_Status_Word" := "P_gPPP302_VFC_StatusWord"; + + // Network 2: MIX - FC_Control_Word (Original Language: LAD) + + "PPP302_B02_Brake" := "AUX TRUE"; + + "PPP302_B03_Coast" := "AUX TRUE"; + + "PPP302_B04_QuickStop" := "AUX TRUE"; + + "PPP302_B05_HoldOutputFrq" := "AUX TRUE"; + + // Network 3: MIX - FC_Control_Word (Original Language: LAD) + + "PPP302_B07_Reset" := "gIN_ResetBtn" AND "HMI_Alarms"."Fault"."Alarm026"; + + // Network 4: MIX - FC_Control_Word (Original Language: LAD) + + "PPP302_B06_RampStop" := "HMI_Device"."PPP302"."Out"; + + // Network 5: MIX - FC_Control_Word (Original Language: LAD) + + "PPP302_B00_RefValue_LSB" := "gBlenderCIPMode" OR "gBlenderRinseMode"; + + "PPP302_B09_RampSelection" := "gBlenderCIPMode" OR "gBlenderRinseMode"; + + // Network 6: MIX - FC_Control_Word (Original Language: LAD) + + "PPP302_B10_DataValid" := "AUX FALSE"; + + // Network 7: Control Word (Original Language: LAD) + + "P_gPPP302_VFC_ControlWord" := "PPP302_FC_Control_Word"; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Pneumatic_Valve_Ctrl.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Pneumatic_Valve_Ctrl.md new file mode 100644 index 0000000..c0937be --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Pneumatic_Valve_Ctrl.md @@ -0,0 +1,443 @@ +```pascal +// Block Type: FC +// Block Name (Original): Pneumatic Valve Ctrl +// Block Number: 2020 +// Original Network Languages: LAD + +FUNCTION "Pneumatic_Valve_Ctrl" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + mAVM346_Status : Bool; + mFlipFlop : Bool; + mAVM362_Status : Bool; + mAVM363_Status : Bool; + mFlipFlop1 : Bool; + mFlipFlop2 : Bool; + mPressOnlyCO2 : Bool; + mPressOnlyCO2_SterilAir : Bool; + mPressOnlyCO2_N2 : Bool; + mfliptest : Bool; + EN_1 : Bool; + mfliptestEN : Bool; + _50__BlenderNomSpeed : Real; +END_VAR + + #_3S : Bool; // Auto-generated temporary + #_800ms : Bool; // Auto-generated temporary +BEGIN + + // Network 1: Flip Enable (Original Language: LAD) + + "Flip Enable" := "gBlenderCIPMode" AND "DI_CIP_CIP_Rinse" AND "gIN_CIP_DrainRequest"; + + // Network 2: Test (Original Language: LAD) + + IF "Flip Enable" AND "CLK_1.0S" THEN + "MD600" := 1 + "MD600"; + END_IF; + + "mfliptestEN" := "MD600" >= 300; + + IF "mfliptestEN" THEN + "MD600" := 0; + END_IF; + + "Tag_51"(IN := "mfliptestEN", PT := S5T#800ms); // TODO: Declarar "Tag_51" : TP; + + "mfliptest" := "Tag_51".Q; + + // Network 3: FlipFlop (Original Language: LAD) + + // Network 3 did not produce printable SCL code. + + // Network 4: FlipFlop (Original Language: LAD) + + // Network 4 did not produce printable SCL code. + + // Network 5: FlipFlop (Original Language: LAD) + + // Network 5 did not produce printable SCL code. + + // Network 6: RVN301 (Original Language: LAD) + // In CASE OF Deaireator Minimum Level Fault, pressing the reset button the + // blender reopen EV01 & EV12 TO reload the tank. + + // Network 6 did not produce printable SCL code. + + // Network 7: RVN301_1 (Original Language: LAD) + + // Network 7 did not produce printable SCL code. + + // Network 8: RVN302 (Original Language: LAD) + + "HMI_Device"."RVN302"."Out" := ("gIN_VoltageOk" AND "HMI_Device"."RVN302"."ManOn") OR ("gIN_VoltageOk" AND "gP_RVN302" AND "HMI_Device"."RVN302"."Auto"); + + // Network 9: RVN302_1 (Original Language: LAD) + + IF "HMI_Device"."RVN301"."Out" THEN + "50%_BlenderNomSpeed" := "Blender_Variables"."gBlenderNomSpeed" / 2.0; + END_IF; + + "HMI_Device"."RVN302_1"."Out" := ("gIN_VoltageOk" AND "HMI_Device"."RVN302_1"."ManOn") OR ("gIN_VoltageOk" AND "HMI_Device"."RVN302_1"."Auto" AND ("Blender_Variables"."gActual_Prod_SP" > "50%_BlenderNomSpeed")); + + // Network 10: RVP303 (Original Language: LAD) + + // Network 10 did not produce printable SCL code. + + // Network 11: EV04 (Original Language: LAD) + + "HMI_Device"."EV04"."Out" := ("gIN_VoltageOk" AND "HMI_Device"."EV04"."ManOn") OR ("gIN_VoltageOk" AND "gP_EV04" AND "HMI_Device"."EV04"."Auto"); + + // Network 12: AVM311 (Original Language: LAD) + + "HMI_Device"."AVM311"."Out" := ("gIN_VoltageOk" AND "HMI_Device"."AVM311"."ManOn") OR ("gIN_VoltageOk" AND "PID_Variables"."PID_RVM301_Release" AND "HMI_Device"."AVM311"."Auto" AND "gBlenderRinseMode") OR ("gIN_VoltageOk" AND "PID_Variables"."PID_RVM301_Release" AND "HMI_Device"."AVM311"."Auto" AND "gBlenderProdMode"); + + // Network 13: AVM312 (Original Language: LAD) + + "HMI_Device"."AVM312"."Out" := "gIN_VoltageOk" AND (("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "gP_AVM312") OR ("HMI_Device"."RVN301"."Out" AND "HMI_Device"."AVM312"."Auto" AND (("Procedure_Variables"."First_Production"."Latch" AND "gBlenderRinseMode" AND "gBlenderProdMode" AND (("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_ByPassDeair" AND (("Blender_Variables_Pers"."gCarboStillRecipe" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InjectionPress_Ctrl" > 0))) OR ("HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_EnDeaireation" AND (("Blender_Variables_Pers"."gCarboStillRecipe" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InjectionPress_Ctrl" > 0))))) OR ("Procedure_Variables"."First_Production"."Latch" AND "gFinalPressureOk" AND "gBlenderRinseMode" AND "gBlenderProdMode" AND (("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_ByPassDeair" AND (("Blender_Variables_Pers"."gCarboStillRecipe" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InjectionPress_Ctrl" > 0))) OR ("HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_EnDeaireation" AND (("Blender_Variables_Pers"."gCarboStillRecipe" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InjectionPress_Ctrl" > 0)))))))); + + // Network 14: AVM313 (Original Language: LAD) + + "HMI_Device"."AVM313"."Out" := "gIN_VoltageOk" AND ("HMI_Device"."AVM313"."ManOn" OR ("HMI_Device"."AVM313"."Auto" AND (("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Latch" AND "Procedure_Variables"."First_Production"."Running" AND "gBlenderStartPumps" AND "gBlenderProdMode") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Latch" AND "Procedure_Variables"."First_Production"."Running" AND "gBlendRecircActive" AND "gBlenderProdMode")))); + + // Network 15: AVM315 (Original Language: LAD) + + "HMI_Device"."AVM315"."Out" := ("gIN_VoltageOk" AND "HMI_Device"."AVM315"."ManOn") OR ("gIN_VoltageOk" AND "gP_AVM315" AND "HMI_Device"."AVM315"."Auto") OR ("gIN_VoltageOk" AND "mfliptest" AND "HMI_Device"."AVM315"."Auto"); + + // Network 16: AVM317 (Original Language: LAD) + + "HMI_Device"."AVM317"."Out" := "gIN_VoltageOk" AND (("HMI_Device"."AVM317_1"."Auto" AND "HMI_Device"."AVM317_1"."ManOn" AND "HMI_Device"."AVM317"."ManOn") OR ("HMI_Device"."AVM317"."Auto" AND ("gP_AVM317" OR ("Procedure_Variables"."Blender_Run"."Running" AND ("gBlenderCIPMode" OR "gBlenderRinseMode"))))); + + // Network 17: AVM317_1 (Original Language: LAD) + + "HMI_Device"."AVM317_1"."Out" := "gIN_VoltageOk" AND (("HMI_Device"."AVM317_1"."ManOn" AND "HMI_Device"."AVM317"."Auto" AND "HMI_Device"."AVM317"."ManOn") OR ("HMI_Device"."AVM317_1"."Auto" AND ("gP_AVM317" OR ("Procedure_Variables"."Blender_Run"."Running" AND ("gBlenderCIPMode" OR "gBlenderRinseMode"))))); + + // Network 18: AVM317_2 (Original Language: LAD) + + "HMI_Device"."AVM317_2"."Out" := "gIN_VoltageOk" AND (("HMI_Device"."AVM317_2"."ManOn" AND "HMI_Device"."AVM317"."Auto" AND "HMI_Device"."AVM317"."ManOn") OR ("HMI_Device"."AVM317_2"."Auto" AND ("gP_AVM317" OR ("Procedure_Variables"."Blender_Run"."Running" AND ("gBlenderCIPMode" OR "gBlenderRinseMode"))))); + + // Network 19: AVM318 (Original Language: LAD) + + "mDelayOpenAVM317"(IN := "gCIPRinseOpenValves" AND "gOUT_PPN301_Run" AND (("Procedure_Variables"."TN301_StartUp"."Done" AND "gBlenderRinseMode") OR ("gBlenderCIPMode" AND ("CIP_Program_Variables"."Status"."CausticRecoveryRun" OR ("CIP_Program_Variables"."Status"."CausticRecoveryRun" AND "CIP_Program_Variables"."Status"."BlenderEmpty")))), PT := S5T#3S); // TODO: Declarar "mDelayOpenAVM317" : TON; + + "HMI_Device"."AVM318"."Out" := ("gIN_VoltageOk" AND "HMI_Device"."AVM318"."ManOn") OR ("gIN_VoltageOk" AND "mDelayOpenAVM317".Q AND "HMI_Device"."AVM318"."Auto") OR ("gIN_VoltageOk" AND "gP_AVM317" AND "HMI_Device"."AVM318"."Auto"); + + // Network 20: AVM321 (Original Language: LAD) + // Product Tank OverFill valve + + "HMI_Device"."AVM321"."Out" := ("gIN_VoltageOk" AND "HMI_Device"."AVM321"."ManOn") OR ("gIN_VoltageOk" AND "gP_AVM321" AND "HMI_Device"."AVM321"."Auto") OR ("gBlenderCIPMode" AND "CIP_Program_Variables"."Status"."CausticRecoveryRun" AND "gIN_VoltageOk" AND "gCIP_PrdTank_PressLow" AND "HMI_Device"."AVM321"."Auto"); + + // Network 21: AVM322 (Original Language: LAD) + // Water Pump Priming Valve + + "HMI_Device"."AVM322"."Out" := ("gIN_VoltageOk" AND "HMI_Device"."AVM322"."ManOn") OR ("gIN_VoltageOk" AND "mfliptest" AND "HMI_Device"."AVM322"."Auto") OR ("gIN_VoltageOk" AND "gP_AVM322" AND "HMI_Device"."AVM322"."Auto"); + + // Network 22: AVM323 (Original Language: LAD) + // Water Pipe (Serpentine) Drain Valve + + "HMI_Device"."AVM323"."Out" := ("gIN_VoltageOk" AND "mfliptest" AND "HMI_Device"."AVM323"."Auto") OR ("gIN_VoltageOk" AND "gP_AVM323" AND "HMI_Device"."AVM323"."Auto") OR ("gIN_VoltageOk" AND "HMI_Device"."AVM323_1"."Auto" AND "HMI_Device"."AVM323_1"."ManOn" AND "HMI_Device"."AVM323"."ManOn"); + + // Network 23: AVM323_1 (Original Language: LAD) + // Water Pipe (Serpentine) Drain Valve + + "HMI_Device"."AVM323_1"."Out" := ("gIN_VoltageOk" AND "mfliptest" AND "HMI_Device"."AVM323_1"."Auto") OR ("gIN_VoltageOk" AND "gP_AVM323" AND "HMI_Device"."AVM323_1"."Auto") OR ("gIN_VoltageOk" AND "HMI_Device"."AVM323_1"."ManOn" AND "HMI_Device"."AVM323"."Auto" AND "HMI_Device"."AVM323"."ManOn"); + + // Network 24: AVM323_2 (Original Language: LAD) + // Water Pipe (Serpentine) Drain Valve + + "HMI_Device"."AVM323_2"."Out" := ("gIN_VoltageOk" AND "mfliptest" AND "HMI_Device"."AVM323_2"."Auto") OR ("gIN_VoltageOk" AND "gP_AVM323" AND "HMI_Device"."AVM323_2"."Auto") OR ("gIN_VoltageOk" AND "HMI_Device"."AVM323_2"."ManOn" AND "HMI_Device"."AVM323"."Auto" AND "HMI_Device"."AVM323"."ManOn"); + + // Network 25: AVM326 (Original Language: LAD) + + "HMI_Device"."AVM326"."Out" := "gIN_VoltageOk" AND (("HMI_Service"."Workshop_Test"."CO2TestRequest" AND "gWorkshopTest" AND "Procedure_Variables"."Blender_Run"."Running") OR ("HMI_Device"."AVM326"."Auto" AND ("gP_AVM326" OR ("gBlenderCIPMode" AND "gOUT_PPN301_Run" AND "gP_CIP_CO2_Inj")))); + + // Network 26: AVM327 (Original Language: LAD) + + "HMI_Device"."AVM327"."Out" := "gIN_VoltageOk" AND ("HMI_Device"."AVM327"."ManOn" OR ("HMI_Device"."AVM327"."Auto" AND ("gP_AVM327" OR ("Blender_Variables_Pers"."gCarboStillRecipe" AND "Blender_Variables_Pers"."gWaterRecipe" AND (("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_StillWaterByPass" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "gBlenderRinseMode") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_StillWaterByPass" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "gBlenderProdMode")))))); + + // Network 27: AVM328 (Original Language: LAD) + + "HMI_Device"."AVM328"."Out" := ("HMI_Device"."AVM328"."ManOn" AND "gIN_VoltageOk") OR ("gP_AVM328" AND "HMI_Device"."AVM328"."Auto" AND "gIN_VoltageOk") OR ("gBlenderCIPMode" AND "mFlipFlop1" AND "mFlipFlop2" AND "HMI_Device"."AVM328"."Auto" AND "gIN_VoltageOk") OR ("mFlipFlop1" AND "mFlipFlop2" AND "HMI_Device"."AVM328"."Auto" AND "gIN_VoltageOk" AND "gBlenderRinseMode"); + + // Network 28: AVM329 (Original Language: LAD) + + "HMI_Device"."AVM329"."Out" := ("HMI_Device"."AVM329"."ManOn" AND "gIN_VoltageOk") OR ("gP_AVM329" AND "HMI_Device"."AVM329"."Auto" AND "gIN_VoltageOk") OR ("gBlenderCIPMode" AND "mFlipFlop1" AND "mFlipFlop2" AND "HMI_Device"."AVM329"."Auto" AND "gIN_VoltageOk") OR ("mFlipFlop1" AND "mFlipFlop2" AND "HMI_Device"."AVM329"."Auto" AND "gIN_VoltageOk" AND "gBlenderRinseMode"); + + // Network 29: AVM330 (Original Language: LAD) + + "HMI_Device"."AVM330"."Out" := ("HMI_Device"."AVM330"."ManOn" AND "gIN_VoltageOk") OR ("gP_AVM330" AND "HMI_Device"."AVM330"."Auto" AND "gIN_VoltageOk") OR ("gRinseDrainRunning" AND "HMI_Device"."AVM330"."Auto" AND "gIN_VoltageOk"); + + // Network 30: AVM331 (Original Language: LAD) + + "HMI_Device"."AVM331"."Out" := ("HMI_Device"."AVM331"."ManOn" AND "gIN_VoltageOk") OR ("gBlenderCIPMode" AND "HMI_Device"."AVM331"."Config" AND "HMI_Device"."AVM327_NoCMD"."Out" AND "HMI_Device"."AVM331"."Auto" AND "Blender_Variables_Pers"."gCarboStillRecipe" AND "gIN_VoltageOk" AND "Blender_Variables_Pers"."gWaterRecipe"); + + // Network 31: AVM339 (Original Language: LAD) + + "HMI_Device"."AVM339"."Out" := ("HMI_Device"."AVM339"."ManOn" AND "gIN_VoltageOk") OR ("gP_AVM339" AND "HMI_Device"."AVM339"."Auto" AND "gIN_VoltageOk") OR ("HMI_Device"."AVM339"."Auto" AND "Blender_Variables_Pers"."gCarboStillRecipe" AND "gIN_VoltageOk" AND "Blender_Variables_Pers"."gWaterRecipe"); + + // Network 32: AVM340 (Original Language: LAD) + + "HMI_Device"."AVM340"."Out" := ("HMI_Device"."AVM340"."ManOn" AND "gIN_VoltageOk") OR ("gP_AVM340" AND "HMI_Device"."AVM340"."Auto" AND "gIN_VoltageOk") OR ("HMI_Device"."AVM340"."Auto" AND "Blender_Variables_Pers"."gCarboStillRecipe" AND "gIN_VoltageOk" AND "Blender_Variables_Pers"."gWaterRecipe" AND "gBlenderStartPumps" AND "gBlenderProdMode"); + + // Network 33: AVM341 (Original Language: LAD) + + "HMI_Device"."AVM341"."Out" := "gIN_VoltageOk" AND ("gP_CIP_CO2_Inj" OR ("HMI_Device"."AVM341"."Auto" AND "Blender_Variables_Pers"."gCarboStillRecipe" AND (("gBlenderCIPMode" AND "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_GAS2_Injection" AND "gBlenderRinseMode" AND ("gCloseMainCO2Valve" OR "Procedure_Variables"."TN301_StartUp"."Done")) OR ("gBlenderCIPMode" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CO2_GAS2_Injection" AND "gBlenderRinseMode" AND ("gCloseMainCO2Valve" OR "Procedure_Variables"."TN301_StartUp"."Done"))))); + + // Network 34: AVM342 (Original Language: LAD) + + "HMI_Device"."AVM342"."Out" := ("HMI_Device"."AVM342"."ManOn" AND "gIN_VoltageOk") OR ("gBlenderCIPMode" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CO2_GAS2_Injection" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Balaiage" AND "HMI_Device"."AVM342"."Auto" AND "Blender_Variables_Pers"."gCarboStillRecipe" AND "gIN_VoltageOk"); + + // Network 35: AVM345 (Original Language: LAD) + + "HMI_Device"."AVM345"."Out" := ("gP_AVM345" AND "HMI_Device"."AVM345"."Auto" AND "gIN_VoltageOk") OR ("HMI_Device"."AVM345_1"."Auto" AND "HMI_Device"."AVM345_1"."ManOn" AND "HMI_Device"."AVM345"."Auto" AND "gIN_VoltageOk") OR ("HMI_Device"."AVM345_1"."Auto" AND "HMI_Device"."AVM345_1"."ManOn" AND "HMI_Device"."AVM345"."ManOn" AND "gIN_VoltageOk"); + + // Network 36: AVM345_1 (Original Language: LAD) + + "HMI_Device"."AVM345_1"."Out" := ("gP_AVM345" AND "HMI_Device"."AVM345_1"."Auto" AND "gIN_VoltageOk") OR ("HMI_Device"."AVM345_1"."Auto" AND "HMI_Device"."AVM345"."Auto" AND "HMI_Device"."AVM345"."ManOn" AND "gIN_VoltageOk") OR ("HMI_Device"."AVM345_1"."ManOn" AND "HMI_Device"."AVM345"."Auto" AND "HMI_Device"."AVM345"."ManOn" AND "gIN_VoltageOk"); + + // Network 37: AVM346 Aux (Original Language: LAD) + + "mAVM346_Status" := ("HMI_Device"."AVM346"."ManOn" AND "gIN_VoltageOk") OR ("gIN_Filler_AVM346_En" AND "Procedure_Variables"."BlendFill_StartUp"."Latch" AND "HMI_PID"."PPM303"."ManualControl"."PidEnable" AND "Procedure_Variables"."First_Production"."Done" AND "HMI_Device"."AVM346"."Auto" AND "gIN_VoltageOk") OR ("gIN_Filler_AVM346_En" AND "Procedure_Variables"."BlendFill_StartUp"."Latch" AND "HMI_PID"."PPM303"."ManualControl"."PidEnable" AND "Procedure_Variables"."BlendFill_StartUp"."Done" AND "HMI_Device"."AVM346"."Auto" AND "gIN_VoltageOk"); + + // Network 38: AVM346 (Original Language: LAD) + // EV46 + + "HMI_Device"."AVM346"."Out" := "mAVM346_Status" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem"; + + // Network 39: AVM353 (Original Language: LAD) + + "HMI_Device"."AVM353"."Out" := ("HMI_Device"."AVM353"."ManOn" AND "gIN_VoltageOk") OR ("gP_AVM353" AND "HMI_Device"."AVM353"."Auto" AND "gIN_VoltageOk") OR ("HMI_Device"."AVM353"."Auto" AND "gIN_VoltageOk" AND "mfliptest"); + + // Network 40: AVM362 (Original Language: LAD) + + "mAVM362_Status" := "gIN_VoltageOk" AND ("HMI_Device"."AVM362"."ManOn" OR ("HMI_Device"."AVM362"."Auto" AND (("HMI_Device"."AVM327_NoCMD"."Out" AND "gProdAvailable" AND "gOUT_FillerMinimumLevel" AND "gIN_Filler1ProductReq" AND "System_RunOut_Variables"."FastChangeOverActivated" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem") OR ("Procedure_Variables"."TM301_Drain"."Latch" AND "Procedure_Variables"."TM301_Drain"."Done" AND "gPrdTank_Empty" AND (("gIN_FillerCIPRequest" AND (("HMI_Device"."AVM327_NoCMD"."Out" AND "System_RunOut_Variables"."FastChangeOverActivated" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "gBlenderRinseMode") OR ("gBlenderCIPMode" AND "HMI_Device"."AVM327_NoCMD"."Out" AND "System_RunOut_Variables"."FastChangeOverActivated" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "gCIP_PrdTank_PressLow"))) OR ("DI_Flr1_WaterRequest" AND (("HMI_Device"."AVM327_NoCMD"."Out" AND "System_RunOut_Variables"."FastChangeOverActivated" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "gBlenderRinseMode") OR ("gBlenderCIPMode" AND "HMI_Device"."AVM327_NoCMD"."Out" AND "System_RunOut_Variables"."FastChangeOverActivated" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "gCIP_PrdTank_PressLow")))))))); + + // Network 41: AVM362 (Original Language: LAD) + + "HMI_Device"."AVM362"."Out" := "mAVM362_Status" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem"; + + // Network 42: AVM363 (Original Language: LAD) + + "mAVM363_Status" := "gIN_VoltageOk" AND ("HMI_Device"."AVM363"."ManOn" OR ("HMI_Device"."AVM363"."Auto" AND (("HMI_Device"."AVM327_NoCMD"."Out" AND "gProdAvailable" AND "gOUT_FillerMinimumLevel" AND "gIN_Filler2ProductReq" AND "System_RunOut_Variables"."FastChangeOverActivated" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem") OR ("Procedure_Variables"."TM301_Drain"."Latch" AND "Procedure_Variables"."TM301_Drain"."Done" AND "gPrdTank_Empty" AND (("HMI_Device"."AVM327_NoCMD"."Out" AND "System_RunOut_Variables"."FastChangeOverActivated" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "gBlenderRinseMode") OR ("gBlenderCIPMode" AND "HMI_Device"."AVM327_NoCMD"."Out" AND "gIN_FillerCIPRequest" AND "System_RunOut_Variables"."FastChangeOverActivated" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "gCIP_PrdTank_PressLow")))))); + + // Network 43: AVM363 (Original Language: LAD) + + "HMI_Device"."AVM363"."Out" := "mAVM363_Status" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem"; + + // Network 44: AVM366 (Original Language: LAD) + + "HMI_Device"."AVM366"."Out" := ("HMI_Device"."AVM366"."ManOn" AND "gIN_VoltageOk") OR ("System_RunOut_Variables"."Out_OpAVM366FlrTankOut" AND "HMI_Device"."AVM366"."Auto" AND "gIN_VoltageOk") OR ("gP_AVM366" AND "HMI_Device"."AVM366"."Auto" AND "gIN_VoltageOk"); + + // Network 45: AVM367 (Original Language: LAD) + + "HMI_Device"."AVM367"."Out" := ("HMI_Device"."AVM367"."ManOn" AND "gIN_VoltageOk") OR ("gP_AVM367" AND "HMI_Device"."AVM367"."Auto" AND "gIN_VoltageOk"); + + // Network 46: AVM368 (Original Language: LAD) + + "HMI_Device"."AVM368"."Out" := ("HMI_Device"."AVM368"."ManOn" AND "gIN_VoltageOk") OR ("System_RunOut_Variables"."Out_OpAVM368InletWater" AND "HMI_Device"."AVM368"."Auto" AND "gIN_VoltageOk") OR ("gP_AVM368" AND "HMI_Device"."AVM368"."Auto" AND "gIN_VoltageOk"); + + // Network 47: AVM369 (Original Language: LAD) + + "HMI_Device"."AVM369"."Out" := ("HMI_Device"."AVM369"."ManOn" AND "gIN_VoltageOk") OR ("System_RunOut_Variables"."Out_OpAVM369ProdPipeDrai" AND "HMI_Device"."AVM369"."Auto" AND "gIN_VoltageOk") OR ("gP_AVM369" AND "HMI_Device"."AVM369"."Auto" AND "gIN_VoltageOk"); + + // Network 48: AVM371 (Original Language: LAD) + + "HMI_Device"."AVM371"."Out" := ("HMI_Device"."AVM371"."ManOn" AND "gIN_VoltageOk") OR ("System_RunOut_Variables"."Out_OpAVM371FillerProduc" AND "HMI_Device"."AVM371"."Auto" AND "gIN_VoltageOk") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FillerRinseTank" AND "System_RunOut_Variables"."Out_OpAVM371RinseTankSpr" AND "HMI_Device"."AVM371"."Auto" AND "gIN_VoltageOk"); + + // Network 49: AVM372 (Original Language: LAD) + + "HMI_Device"."AVM372"."Out" := ("HMI_Device"."AVM372"."ManOn" AND "gIN_VoltageOk") OR ("System_RunOut_Variables"."Out_OpAVM372RinseTankDra" AND "HMI_Device"."AVM372"."Auto" AND "gIN_VoltageOk") OR ("gP_AVM372" AND "HMI_Device"."AVM372"."Auto" AND "gIN_VoltageOk"); + + // Network 50: AVM380 (Original Language: LAD) + + "HMI_Device"."AVM380"."Out" := ("HMI_Device"."AVM380"."ManOn" AND "gIN_VoltageOk") OR ("gBlenderCIPMode" AND "HMI_Device"."AVM380"."Auto" AND "gIN_VoltageOk") OR ("HMI_Device"."AVM380"."Auto" AND "gIN_VoltageOk" AND "gEnRecircPHE"); + + // Network 51: AVM381 (Original Language: LAD) + + "HMI_Device"."AVM381"."Out" := ("HMI_Device"."AVM381"."ManOn" AND "gIN_VoltageOk") OR ("Procedure_Variables"."TM301_RunOut"."Latch" AND "HMI_Device"."AVM381"."Auto" AND "gIN_VoltageOk" AND "gBlenderRinseMode") OR ("gBlenderCIPMode" AND "CIP_Program_Variables"."Status"."CausticRecoveryRun" AND "Procedure_Variables"."TM301_RunOut"."Latch" AND "HMI_Device"."AVM381"."Auto" AND "gIN_VoltageOk"); + + // Network 52: AVM385 (Original Language: LAD) + + "HMI_Device"."AVM385"."Out" := ("HMI_Device"."AVM385"."ManOn" AND "gIN_VoltageOk") OR ("gRinseDrainRunning" AND "HMI_Device"."AVM385"."Auto" AND "gIN_VoltageOk") OR ("gP_AVM385" AND "HMI_Device"."AVM385"."Auto" AND "gIN_VoltageOk"); + + // Network 53: AVM386 (Original Language: LAD) + + "HMI_Device"."AVM386"."Out" := ("HMI_Device"."AVM386"."ManOn" AND "gIN_VoltageOk") OR ("gRinseDrainRunning" AND "HMI_Device"."AVM386"."Auto" AND "gIN_VoltageOk") OR ("gP_AVM386" AND "HMI_Device"."AVM386"."Auto" AND "gIN_VoltageOk"); + + // Network 54: AVM388 (Original Language: LAD) + + "HMI_Device"."AVM388"."Out" := ("HMI_Device"."AVM388"."ManOn" AND "gIN_VoltageOk") OR ("gP_AVM388" AND "HMI_Device"."AVM388"."Auto" AND "gIN_VoltageOk") OR ("HMI_Device"."AVM388"."Auto" AND "gIN_VoltageOk" AND "mfliptest"); + + // Network 55: AVM389 (Original Language: LAD) + + "HMI_Device"."AVM389"."Out" := "gIN_VoltageOk" AND ("HMI_Device"."AVM389"."ManOn" OR ("HMI_Device"."AVM389"."Auto" AND ("gP_AVM389" OR ("HMI_Device"."PPN301"."Out" AND (("gBlenderCIPMode" AND "CIP_Program_Variables"."Status"."BlenderDrainRunning") OR ("Procedure_Variables"."TM301_Drain"."Latch" AND "Procedure_Variables"."TN301_StartUp"."Done" AND "gBlenderRinseMode")))))); + + // Network 56: AVM391 (Original Language: LAD) + + "mDelayOpenAVM391"(IN := "gBlenderCIPMode" AND "gCIPRinseOpenValves" AND "gOUT_PPN301_Run" AND ("CIP_Program_Variables"."Status"."CausticRecoveryRun" OR ("CIP_Program_Variables"."Status"."CausticRecoveryRun" AND "CIP_Program_Variables"."Status"."BlenderEmpty")), PT := S5T#3S); // TODO: Declarar "mDelayOpenAVM391" : TON; + + "HMI_Device"."AVM391"."Out" := ("HMI_Device"."AVM391"."ManOn" AND "gIN_VoltageOk") OR ("gP_AVM391" AND "HMI_Device"."AVM391"."Auto" AND "gIN_VoltageOk") OR ("HMI_Device"."AVM391"."Auto" AND "gIN_VoltageOk" AND "mDelayOpenAVM391".Q); + + // Network 57: AVM396 (Original Language: LAD) + + "HMI_Device"."AVM396"."Out" := ("HMI_Device"."AVM396"."ManOn" AND "gIN_VoltageOk") OR ("HMI_Device"."AVM396"."Auto" AND "gIN_VoltageOk" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_GAS2InjectionType", 2)) OR ("gBlenderCIPMode" AND "gEqPressSelected" AND "Blender_Variables_Pers"."gCarboStillRecipe" AND "mProdTankPressCO2_StAir" AND "HMI_Device"."AVM396"."Auto" AND "gIN_VoltageOk"); + + // Network 58: AVM397 (Original Language: LAD) + + "HMI_Device"."AVM397"."Out" := ("HMI_Device"."AVM397"."ManOn" AND "gIN_VoltageOk") OR ("gBlenderCIPMode" AND "Blender_Variables_Pers"."gCarboStillRecipe" AND "mProdTankPressOnlyCO2" AND "HMI_Device"."AVM397"."Auto" AND "gIN_VoltageOk") OR ("gBlenderCIPMode" AND "gEqPressSelected" AND "Blender_Variables_Pers"."gCarboStillRecipe" AND "mProdTankPressCO2_StAir" AND "HMI_Device"."AVM397"."Auto" AND "gIN_VoltageOk"); + + // Network 59: AVN314 (Original Language: LAD) + + "HMI_Device"."AVN314"."Out" := ("HMI_Device"."AVN314"."ManOn" AND "gIN_VoltageOk") OR ("gP_AVN314" AND "HMI_Device"."AVN314"."Auto" AND "gIN_VoltageOk") OR ("HMI_Device"."AVN314"."Auto" AND "gIN_VoltageOk" AND "mfliptest"); + + // Network 60: AVN318 (Original Language: LAD) + + "HMI_Device"."AVN318"."Out" := ("HMI_Device"."AVN318"."ManOn" AND "gIN_VoltageOk") OR ("gP_AVN318" AND "HMI_Device"."AVN318"."Auto" AND "gIN_VoltageOk") OR ("gBlenderCIPMode" AND "HMI_Variables_Status"."Procedures"."CIP_SyrTankFloodRun" AND "HMI_Device"."AVN318"."Auto" AND "gIN_VoltageOk"); + + // Network 61: AVN325 (Original Language: LAD) + + "HMI_Device"."AVN325"."Out" := Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_VacuumPump", 1); + + // Network 62: AVN327 (Original Language: LAD) + + "HMI_Device"."AVN327"."Out" := "gIN_VoltageOk" AND ("HMI_Device"."AVN327"."ManOn" OR ("HMI_Device"."AVN327"."Auto" AND ("gP_AVN327" OR ("gBlenderCIPMode" AND "HMI_Variables_Status"."Procedures"."CIP_SyrTankFloodRun" AND "gCIP_DeairTank_MaxLevel" AND "gCIPRinseOpenValves" AND "gOUT_PPN301_Run")))); + + // Network 63: AVN328 (Original Language: LAD) + + "HMI_Device"."AVN328"."Out" := ("gIN_VoltageOk" AND "HMI_Device"."AVN328"."ManOn") OR ("gIN_VoltageOk" AND "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_Deareation_Co2" AND "HMI_Device"."AVN328"."Auto" AND "HMI_Device"."RVN301"."Out" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_GAS2InjectionType", 0)) OR ("gIN_VoltageOk" AND "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_Deareation_Co2" AND "HMI_Device"."AVN328"."Auto" AND "HMI_Device"."RVN301"."Out" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_GAS2InjectionType", 1)); + + // Network 64: AVN347 (Original Language: LAD) + + "HMI_Device"."AVN347"."Out" := "gIN_VoltageOk" AND ("HMI_Device"."AVN347"."ManOn" OR ("HMI_Device"."AVN347"."Auto" AND (("gP_AVN328" AND "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_Deareation_Co2" AND "HMI_Device"."RVN301"."Out" AND (Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_GAS2InjectionType", 0) OR Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_GAS2InjectionType", 1))) OR ("HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_Deareation_Co2" AND "HMI_PID"."RMM301"."ManualControl"."PidEnable" AND "HMI_Device"."RVN301"."Out" AND "gBlenderStartPumps" AND (Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_GAS2InjectionType", 0) OR Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_GAS2InjectionType", 1)))))); + + // Network 65: AVN350 (Original Language: LAD) + + "HMI_Device"."AVN350"."Out" := "gIN_VoltageOk" AND ("HMI_Device"."AVN350"."ManOn" OR ("HMI_Device"."AVN350"."Auto" AND (("gP_AVN328" AND "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_Deareation_Co2" AND "HMI_Device"."RVN301"."Out" AND (Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_GAS2InjectionType", 0) OR Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_GAS2InjectionType", 1))) OR ("HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_Deareation_Co2" AND "HMI_PID"."RMM301"."ManualControl"."PidEnable" AND "HMI_Device"."RVN301"."Out" AND "gBlenderStartPumps" AND (Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_GAS2InjectionType", 0) OR Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_GAS2InjectionType", 1)))))); + + // Network 66: AVN329 (Original Language: LAD) + + "HMI_Device"."AVN329"."Out" := ("gIN_VoltageOk" AND "HMI_Device"."AVN329"."ManOn") OR ("gIN_VoltageOk" AND "gP_AVN329" AND "HMI_Device"."AVN329"."Auto") OR ("gBlenderCIPMode" AND "HMI_Variables_Status"."Procedures"."CIP_SyrTankFloodRun" AND "gIN_VoltageOk" AND "HMI_Device"."AVN329"."Auto" AND "gCIPRinseOpenValves" AND "gOUT_PPN301_Run"); + + // Network 67: AVN348 (Original Language: LAD) + + "HMI_Device"."AVN348"."Out" := ("gIN_VoltageOk" AND "HMI_Device"."AVN348"."ManOn") OR ("HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_EnDeaireation" AND "gIN_VoltageOk" AND "HMI_Device"."AVN348"."Auto" AND "gBlenderProdMode") OR ("gBlenderCIPMode" AND "Procedure_Variables"."Blender_Run"."Latch" AND "gIN_VoltageOk" AND "mFlipFlop" AND "HMI_Device"."AVN348"."Auto"); + + // Network 68: AVN349 (Original Language: LAD) + + "HMI_Device"."AVN349"."Out" := ("gIN_VoltageOk" AND "HMI_Device"."AVN349"."ManOn") OR ("HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_EnDeaireation" AND "gIN_VoltageOk" AND "HMI_Device"."AVN349"."Auto" AND "gBlenderProdMode") OR ("gBlenderCIPMode" AND "Procedure_Variables"."Blender_Run"."Latch" AND "gIN_VoltageOk" AND "mFlipFlop" AND "HMI_Device"."AVN349"."Auto"); + + // Network 69: AVN373 (Original Language: LAD) + + "HMI_Device"."AVN373"."Out" := ("gIN_VoltageOk" AND "HMI_Device"."AVN373"."ManOn") OR ("gIN_VoltageOk" AND "gP_AVN373" AND "HMI_Device"."AVN373"."Auto"); + + // Network 70: AVN374 (Original Language: LAD) + // Deaireators Pipe Connection Drain Valve + + "HMI_Device"."AVN374"."Out" := ("gIN_VoltageOk" AND "HMI_Device"."AVN374"."ManOn") OR ("gIN_VoltageOk" AND "gP_AVN374" AND "HMI_Device"."AVN374"."Auto"); + + // Network 71: AVN377 (Original Language: LAD) + // Control temperature system cooling + + "HMI_Device"."AVN377"."Out" := ("gIN_VoltageOk" AND "HMI_Device"."AVN377"."ManOn") OR ("gIN_VoltageOk" AND "gP_AVN377" AND "HMI_Device"."AVN377"."Auto") OR ("gIN_VoltageOk" AND "gCoolingSysBypassAct" AND "HMI_Device"."AVN377"."Auto"); + + // Network 72: AVN378 (Original Language: LAD) + // Control temperature syste cooling + + "HMI_Device"."AVN378"."Out" := ("gIN_VoltageOk" AND "HMI_Device"."AVN378"."ManOn") OR ("gIN_VoltageOk" AND "gP_AVN378" AND "HMI_Device"."AVN378"."Auto") OR ("gIN_VoltageOk" AND "gCoolingSystemBypass" AND "HMI_Device"."AVN378"."Auto"); + + // Network 73: AVN390 (Original Language: LAD) + + "HMI_Device"."AVN390"."Out" := "gIN_VoltageOk" AND ("HMI_Device"."AVN390"."ManOn" OR ("Procedure_Variables"."FTP302Line_Preparation"."Latch" AND "Procedure_Variables"."FTP302_StartUp"."Latch" AND "gSyrupQcoRinse" AND "HMI_Device"."AVN390"."Auto" AND ("CIP_Program_Variables"."Status"."BlenderDrainRunning" OR ("gBlenderRinseMode" AND "gBlenderProdMode")))); + + // Network 74: AVN395 (Original Language: LAD) + + "HMI_Device"."AVN395"."Out" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_VacuumPump" >= 1; + + // Network 75: AVP316 (Original Language: LAD) + + "HMI_Device"."AVP316"."Out" := ("gIN_VoltageOk" AND "gP_AVP316" AND "HMI_Device"."AVP316"."Auto") OR ("gRinseDrainRunning" AND "gIN_VoltageOk" AND "HMI_Device"."AVP316"."Auto" AND "System_RunOut_Variables"."FastChangeOverActivated") OR ("gIN_VoltageOk" AND "HMI_Device"."AVP316_1"."Auto" AND "HMI_Device"."AVP316_1"."ManOn" AND "HMI_Device"."AVP316"."ManOn"); + + // Network 76: AVP316_1 (Original Language: LAD) + + "HMI_Device"."AVP316_1"."Out" := ("gIN_VoltageOk" AND "gP_AVP316" AND "HMI_Device"."AVP316_1"."Auto") OR ("gRinseDrainRunning" AND "gIN_VoltageOk" AND "HMI_Device"."AVP316_1"."Auto" AND "System_RunOut_Variables"."FastChangeOverActivated") OR ("gIN_VoltageOk" AND "HMI_Device"."AVP316_1"."ManOn" AND "HMI_Device"."AVP316"."Auto" AND "HMI_Device"."AVP316"."ManOn"); + + // Network 77: AVP324 (Original Language: LAD) + // Syrup Tank Recirculating Valve + + "HMI_Device"."AVP324"."Out" := ("gIN_VoltageOk" AND "HMI_Device"."AVP324"."ManOn") OR ("gBlenderCIPMode" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_LocalCIP" AND "gIN_VoltageOk" AND "HMI_Device"."AVP324"."Auto") OR ("gIN_VoltageOk" AND "HMI_Device"."AVP324"."Auto" AND "System_RunOut_Variables"."FastChangeOverActivated" AND "gBlenderRinseMode"); + + // Network 78: AVP344 (Original Language: LAD) + + "HMI_Device"."AVP344"."Out" := ("gIN_VoltageOk" AND "HMI_Device"."AVP344"."ManOn") OR ("gIN_VoltageOk" AND "gP_AVP344" AND "HMI_Device"."AVP344"."Auto"); + + // Network 79: AVP361 (Original Language: LAD) + + "HMI_Device"."AVP361"."Out" := "gIN_VoltageOk" AND ("HMI_Device"."AVP361"."ManOn" OR ("HMI_Device"."AVP361"."Auto" AND ("gP_AVP361" OR ("gCIP_SyrTank_MaxLevel" AND "gCIPRinseOpenValves" AND "gOUT_PPN301_Run" AND (("HMI_Digital"."GSM322"."Config" AND "HMI_Digital"."GSM322"."Filtered" AND "System_RunOut_Variables"."FastChangeOverActivated" AND "Procedure_Variables"."TN301_StartUp"."Done" AND "gBlenderRinseMode") OR ("gBlenderCIPMode" AND (("HMI_Device"."AVM346"."Out" AND ("CIP_Program_Variables"."Status"."CausticRecoveryRun" OR ("CIP_Program_Variables"."Status"."CausticRecoveryRun" AND "CIP_Program_Variables"."Status"."BlenderEmpty"))) OR ("HMI_Device"."AVS337"."Out" AND ("CIP_Program_Variables"."Status"."CausticRecoveryRun" OR ("CIP_Program_Variables"."Status"."CausticRecoveryRun" AND "CIP_Program_Variables"."Status"."BlenderEmpty")))))))))); + + // Network 80: AVP363 (Original Language: LAD) + + "HMI_Device"."AVP363"."Out" := ("gIN_VoltageOk" AND "HMI_Device"."AVP363"."ManOn") OR ("gIN_VoltageOk" AND "Procedure_Variables"."Syr_RunOut"."Running" AND "HMI_Device"."AVP363"."Auto") OR ("gIN_VoltageOk" AND "HMI_Digital"."GSM322"."Filtered" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled" AND "Procedure_Variables"."Blender_Rinse"."Running" AND "HMI_Device"."AVP363"."Auto" AND "System_RunOut_Variables"."FastChangeOverActivated"); + + // Network 81: AVP364 (Original Language: LAD) + + "HMI_Device"."AVP364"."Out" := ("gIN_VoltageOk" AND "HMI_Device"."AVP364"."ManOn") OR ("gIN_VoltageOk" AND "Interlocking_Variables"."SYRUP_ROOM_REC_DATA"."Syrup_Room_Cip" AND "HMI_Device"."AVP364"."Auto") OR ("gIN_VoltageOk" AND "HMI_Device"."SyrupRoom_SyrupPump"."Out" AND "System_RunOut_Variables"."SyrupLine1_AVP364" AND "Interlocking_Variables"."SYRUP_ROOM_REC_DATA"."Syrup_1_Ready" AND "HMI_Device"."AVP364"."Auto"); + + // Network 82: AVP365 (Original Language: LAD) + + "HMI_Device"."AVP365"."Out" := ("gIN_VoltageOk" AND "HMI_Device"."AVP365"."ManOn") OR ("gIN_VoltageOk" AND "Interlocking_Variables"."SYRUP_ROOM_REC_DATA"."Syrup_Room_Cip" AND "HMI_Device"."AVP365"."Auto") OR ("gIN_VoltageOk" AND "HMI_Device"."SyrupRoom_SyrupPump"."Out" AND "System_RunOut_Variables"."SyrupLine2_AVP365" AND "Interlocking_Variables"."SYRUP_ROOM_REC_DATA"."Syrup_2_Ready" AND "HMI_Device"."AVP365"."Auto"); + + // Network 83: AVP389 (Original Language: LAD) + + "HMI_Device"."AVP389"."Out" := ("gIN_VoltageOk" AND "HMI_Device"."AVP389"."ManOn") OR ("gIN_VoltageOk" AND "gP_AVP389" AND "HMI_Device"."AVP389"."Auto"); + + // Network 84: AVP390 (Original Language: LAD) + + "HMI_Device"."AVP390"."Out" := "gIN_VoltageOk" AND ("HMI_Device"."AVP390"."ManOn" OR ("Procedure_Variables"."FTP302Line_Preparation"."Latch" AND "Procedure_Variables"."FTP302_StartUp"."Latch" AND "gSyrupQcoRinse" AND "HMI_Device"."AVP390"."Auto" AND "gBlenderStartPumps" AND "gBlenderRinseMode" AND "gBlenderProdMode")); + + // Network 85: AVP391 (Original Language: LAD) + + "HMI_Device"."AVP391"."Out" := "gIN_VoltageOk" AND ("HMI_Device"."AVP391"."ManOn" OR ("Procedure_Variables"."FTP302Line_Preparation"."Latch" AND "Procedure_Variables"."FTP302_StartUp"."Latch" AND "gSyrupQcoRinse" AND "HMI_Device"."AVP391"."Auto" AND "gBlenderRinseMode" AND ("CIP_Program_Variables"."Status"."BlenderDrainRunning" OR "gBlenderProdMode"))); + + // Network 86: AVS331 (Original Language: LAD) + + "HMI_Device"."AVS331"."Out" := ("gIN_VoltageOk" AND "HMI_Device"."AVS331"."ManOn") OR ("gIN_VoltageOk" AND "gP_AVS331" AND "HMI_Device"."AVS331"."Auto"); + + // Network 87: AVS332 (Original Language: LAD) + + "HMI_Device"."AVS332"."Out" := ("gIN_VoltageOk" AND "HMI_Device"."AVS332"."ManOn") OR ("gIN_VoltageOk" AND "gP_AVS332" AND "HMI_Device"."AVS332"."Auto"); + + // Network 88: AVS333 (Original Language: LAD) + + "HMI_Device"."AVS333"."Out" := ("gIN_VoltageOk" AND "HMI_Device"."AVS333"."ManOn") OR ("gIN_VoltageOk" AND "gP_AVS333" AND "CIP_Program_Variables"."Status"."OpenAVS333_335Valve" AND "HMI_Device"."AVS333"."Auto" AND "gOUT_PPN301_Run"); + + // Network 89: AVS334 (Original Language: LAD) + + "HMI_Device"."AVS334"."Out" := ("gIN_VoltageOk" AND "HMI_Device"."AVS334"."ManOn") OR ("gIN_VoltageOk" AND "CIP_Program_Variables"."Status"."OpenAVS333_335Valve" AND "gP_AVS334" AND "HMI_Device"."AVS334"."Auto" AND "gOUT_PPN301_Run"); + + // Network 90: AVS335 (Original Language: LAD) + + "HMI_Device"."AVS335"."Out" := ("gIN_VoltageOk" AND "HMI_Device"."AVS335"."ManOn") OR ("gIN_VoltageOk" AND "CIP_Program_Variables"."Status"."OpenAVS333_335Valve" AND "gP_AVS335" AND "HMI_Device"."AVS335"."Auto" AND "gOUT_PPN301_Run"); + + // Network 91: AVS336 (Original Language: LAD) + + "HMI_Device"."AVS336"."Out" := ("gIN_VoltageOk" AND "HMI_Device"."AVS336"."ManOn") OR ("gIN_VoltageOk" AND "gP_AVS336" AND "HMI_Device"."AVS336"."Auto"); + + // Network 92: AVS337 (Original Language: LAD) + + "HMI_Device"."AVS337"."Out" := ("gIN_VoltageOk" AND "HMI_Device"."AVS337"."ManOn") OR ("gIN_VoltageOk" AND "gP_AVS337" AND "HMI_Device"."AVS337"."Auto"); + + // Network 93: AVS338 (Original Language: LAD) + + "HMI_Device"."AVS338"."Out" := ("gIN_VoltageOk" AND "HMI_Device"."AVS338"."ManOn") OR ("gIN_VoltageOk" AND "gP_AVS338" AND "HMI_Device"."AVS338"."Auto") OR ("gIN_VoltageOk" AND "HMI_PID"."RVS318"."ManualControl"."PidEnable" AND "HMI_Device"."AVS338"."Auto"); + + // Network 94: Pneumatic Valve Fault (Original Language: LAD) + + IF "gWorkshopTest" THEN + Pneumatic_Valve_Fault(); + END_IF; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Pneumatic_Valve_Fault.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Pneumatic_Valve_Fault.md new file mode 100644 index 0000000..523ec05 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Pneumatic_Valve_Fault.md @@ -0,0 +1,93 @@ +```pascal +// Block Type: FC +// Block Name (Original): Pneumatic Valve Fault +// Block Number: 1969 +// Original Network Languages: STL + +FUNCTION "Pneumatic_Valve_Fault" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + mAirPressureOk : Bool; +END_VAR + +BEGIN + + // Network 1: MIX - SAFETIES (Original Language: STL) + + // --- BEGIN STL Network 1 --- + + SET + A "HMI_Digital"._PAL_S11.Filtered + = "mAirPressureOk" + AUF "HMI_Device" + AUF DI "Pneumatic Valve Fault DB" + L P#0.0 + LAR1_ACCU1 + LAR2_ACCU1 + M011: SET + AN DBX[AR1,P#1.0] + AN DBX[AR1,P#1.1] + ON DBX[AR1,P#0.7] + O DBX[AR1,P#0.4] + ON "mAirPressureOk" + JC M012 + A DBX[AR1,P#0.2] + A_BRACK + AN DBX[AR1,P#0.5] + A DBX[AR1,P#1.0] + O_BRACK + A DBX[AR1,P#0.6] + A DBX[AR1,P#1.1] + BRACKET + BRACKET + O_BRACK + AN DBX[AR1,P#0.2] + A_BRACK + A DBX[AR1,P#0.5] + A DBX[AR1,P#1.0] + O_BRACK + AN DBX[AR1,P#0.6] + A DBX[AR1,P#1.1] + BRACKET + BRACKET + BRACKET + JCN M012 + L DIB[AR2,P#0.0] + L DIB[AR2,P#106.0] + LE_I + JC M014 + AN CLK_1.0S + JC M013 + ADD 1 + T DIB[AR2,P#106.0] + JU M013 + M012: NOP_0 + L 0 + T DIB[AR2,P#106.0] + M013: NOP_0 + A "gIN_ResetBtn" + R DBX[AR1,P#0.3] + R "gDeviceFault" + JU M010 + M014: NOP_0 + SET + S "gDeviceFault" + S "gBlenderAlarm" + SET + S DBX[AR1,P#0.3] + M010: NOP_0 + ADDAR2 P#1.0 + TAR2_ACCU1 + ADDAR1 P#2.0 + TAR1_ACCU1 + L P#211.0 + LT_D + JC M011 + + // --- END STL Network 1 --- + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Pneumatic_Valve_Fault_DB.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Pneumatic_Valve_Fault_DB.md new file mode 100644 index 0000000..4373bb8 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Pneumatic_Valve_Fault_DB.md @@ -0,0 +1,19 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Pneumatic Valve Fault DB +// Block Number: 969 + +DATA_BLOCK "Pneumatic_Valve_Fault_DB" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + DelaySP : "Struct"; + DelayElapsed : "Struct"; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Procedure.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Procedure.md new file mode 100644 index 0000000..ec8801d --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Procedure.md @@ -0,0 +1,130 @@ +```pascal +// Block Type: FB +// Block Number: 1800 +// Original Network Languages: LAD + +FUNCTION_BLOCK "Procedure" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + i_Value : Real; + i_Num : Int; + i_Enable : Bool; +END_VAR + +VAR_OUTPUT + FilterOut : Real; +END_VAR + +VAR_INOUT + mStepNum : Int; + mTimeStep : Int; + mTransition : Bool; + mFlipFlopDone : Bool; +END_VAR + +VAR_STAT + Deaireator_StartUp : "ProcedureDeaireator StartUp"; + CarboWaterLine : "ProcedureCarboWaterLine"; + Syrup_RunOut : "ProcedureSyrup RunOut"; + SyrBrix_Autocorrection : "SyrBrix Autocorrection"; + ProdBrixRecovery : "ProcedureProdBrixRecovery"; + Syrup_MFM_StartUp : "ProcedureSyrupMFMStartUp"; + ProdTankDrain : "ProcedureProdTankDrain"; + ProdTank_RunOut : "ProcedureProdTankRunOut"; + Syrup_Line_MFM_Prep : "ProcedureSyrupLineMFMPrep"; + BlendFill_StartUp : "ProcedureBlendFill StartUp"; +END_VAR + +BEGIN + + // Network 1: Run Out Data (Original Language: LAD) + + "System_Run_Out_Data"(); + + // Network 2: Deaireator Startup (Original Language: LAD) + + "Deaireator_StartUp"(); + + // Network 3: Carbo Water Line Procedure (Original Language: LAD) + + "CarboWaterLine"(); + + // Network 4: Syrup Line Procedure (Original Language: LAD) + + "Syrup_Line_MFM_Prep"(); + + // Network 5: Syrup StartUp (Original Language: LAD) + + "Syrup_MFM_StartUp"(); + + // Network 6: Syrup RunOut (Original Language: LAD) + + "Syrup_RunOut"(); + + // Network 7: Product Tank RunOut (Original Language: LAD) + + "ProdTank_RunOut"(); + + // Network 8: Product Tan Drain (Original Language: LAD) + + "ProdTankDrain"(); + + // Network 9: Brix AutoCorrection (Original Language: LAD) + + "SyrBrix_Autocorrection"(); + + // Network 10: BlendFill Startup (Original Language: LAD) + + "BlendFill_StartUp"(); + + // Network 11: QCO MONITOR (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled" THEN + QCO_Monitor(); + END_IF; + + // Network 12: Started (Original Language: LAD) + + IF "gBlenderCIPMode" AND "Procedure_Variables"."Blender_Run"."Latch" AND "gIN_FillerCIPRequest" THEN + "CIP_Program_Variables"."Status"."Started" := TRUE; + END_IF; + + // Network 13: Not Started (Original Language: LAD) + + IF "gBlenderCIPMode" OR "gOUT_FillerCIPCompleted" THEN + "CIP_Program_Variables"."Status"."Started" := FALSE; + END_IF; + + // Network 14: CIP FlipFlop running (Original Language: LAD) + + "gCIP_FlipflopRunning" := "gBlenderCIPMode" AND "Procedure_Variables"."Blender_Run"."Latch" AND "gIN_FillerCIPRequest" AND "gIN_CIP_CIPProdSending" AND "gCIP_FlipFlopReset" AND "gCIP_FlipFlopDone"; + + // Network 15: CIP Flip Flop Wait (Original Language: LAD) + + "gCIP_FlipFlopWait" := "Procedure_Variables"."Blender_Run"."Running"; + + // Network 16: CIP FlipFlop running (Original Language: LAD) + + "gCIP_FlipFlopReset" := "gCIP_FlipFlopDone"; + + // Network 17: CIP FlipFlop running (Original Language: LAD) + + IF "gCIP_FlipFlopReset" THEN + "mStepNum" := 0; + END_IF; + + IF "gCIP_FlipFlopReset" THEN + "gCIP_FlipFlopDone" := FALSE; + END_IF; + + // Network 18: Flip Flop (Original Language: LAD) + + IF "gCIP_FlipflopRunning" THEN + CIP_FlipFlop(mStep := "mStepNum", mTime := "mTimeStep", mTransition := "mTransition"); + END_IF; + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProcedureBlendFill_StartUp.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProcedureBlendFill_StartUp.md new file mode 100644 index 0000000..a30296b --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProcedureBlendFill_StartUp.md @@ -0,0 +1,154 @@ +```pascal +// Block Type: FB +// Block Name (Original): ProcedureBlendFill StartUp +// Block Number: 1814 +// Original Network Languages: LAD + +FUNCTION_BLOCK "ProcedureBlendFill_StartUp" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_STAT + mTransition : Bool; + mFillerLoadAgain_ONS : Bool; + mFillerFirstLoadTmrON : Bool; + mFillerLoadAgain : Bool; + mFillerLoadAfterDrain : Bool; + mStepNum : Int; + mTimeStep : Int; + mFillerFirstLoadTmr : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + +END_VAR + +VAR_TEMP + mFillerProdLoading : Real; +END_VAR + + #_1M : Bool; // Auto-generated temporary + #TON_INSTANCE_28 : Bool; // Auto-generated temporary +BEGIN + + // Network 1: Qualifier (Original Language: LAD) + + "Procedure_Variables"."BlendFill_StartUp"."Qualifier" := ("gBlenderProdMode" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "gBlenderSuppliesOk" AND "Procedure_Variables"."TN301_StartUp"."Done" AND "Procedure_Variables"."CarboWaterLine"."Done" AND "Procedure_Variables"."FTP302Line_Preparation"."Done") OR ("gBlenderProdMode" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "gBlenderSuppliesOk" AND "Procedure_Variables"."TN301_StartUp"."Done" AND "Procedure_Variables"."CarboWaterLine"."Done" AND "Blender_Variables_Pers"."gWaterRecipe") OR ("gBlenderProdMode" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "gBlenderSuppliesOk" AND "Procedure_Variables"."TN301_StartUp"."Done" AND "Blender_Variables_Pers"."gCarboStillProduct" AND "Procedure_Variables"."FTP302Line_Preparation"."Done") OR ("gBlenderProdMode" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "gBlenderSuppliesOk" AND "Procedure_Variables"."TN301_StartUp"."Done" AND "Blender_Variables_Pers"."gCarboStillProduct" AND "Blender_Variables_Pers"."gWaterRecipe"); + + // Network 2: Request (Original Language: LAD) + + "Procedure_Variables"."BlendFill_StartUp"."Request" := ("Procedure_Variables"."Blender_Run"."Latch" AND "Procedure_Variables"."BlendFill_StartUp"."Qualifier") OR ("Procedure_Variables"."TM301_RunOut"."Latch" AND "Procedure_Variables"."BlendFill_StartUp"."Qualifier"); + + // Network 3: Load Again (Original Language: LAD) + + // PBox SymPy processed, logic in consumer + "mFillerLoadAgain_ONS" := "Procedure_Variables"."BlendFill_StartUp"."Done" AND "gIN_FillerEndTankFilling"; // P_TRIG("Procedure_Variables"."BlendFill_StartUp"."Done" AND "gIN_FillerEndTankFilling") - Mem: "mFillerLoadAgain_ONS" + + IF "Procedure_Variables"."BlendFill_StartUp"."Done" AND "gIN_FillerEndTankFilling" AND NOT "mFillerLoadAgain_ONS" THEN + "mFillerLoadAgain" := TRUE; + END_IF; + + // Network 4: Wait (Original Language: LAD) + + "Procedure_Variables"."BlendFill_StartUp"."Wait" := "gIN_FillerProdReady" OR ("gIN_Filler_AVM362_En" AND "gP_FillerProdLoad") OR ("gIN_PPM303_FCReady" AND "gP_FillerProdLoad"); + + // Network 5: Reset (Original Language: LAD) + + "Procedure_Variables"."BlendFill_StartUp"."Reset" := "gBlenderCIPMode" OR "gBlenderRinseMode"; + + // Network 6: Reset (Original Language: LAD) + + IF "Procedure_Variables"."BlendFill_StartUp"."Reset" THEN + "mStepNum" := 0; + "mTimeStep" := 0; + END_IF; + + IF "gIN_FillerCIPDrainSelect" AND "Procedure_Variables"."BlendFill_StartUp"."Reset" THEN + "mFillerLoadAgain" := FALSE; + END_IF; + + IF "gIN_FillerCIPDrainSelect" AND "Procedure_Variables"."BlendFill_StartUp"."Reset" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled" THEN + "mStepNum" := 4; + END_IF; + + IF "gIN_FillerCIPDrainSelect" AND "Procedure_Variables"."BlendFill_StartUp"."Reset" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled" THEN + "mFillerLoadAfterDrain" := TRUE; + END_IF; + + IF "Procedure_Variables"."BlendFill_StartUp"."Reset" THEN + "Procedure_Variables"."BlendFill_StartUp"."Done" := FALSE; + END_IF; + + // Network 7: Step 4 if Load Again (Original Language: LAD) + + IF "mFillerLoadAgain_ONS" THEN + "mStepNum" := 4; + END_IF; + + // Network 8: Latch (Original Language: LAD) + + "Procedure_Variables"."BlendFill_StartUp"."Latch" := ("Procedure_Variables"."BlendFill_StartUp"."Done" AND "Procedure_Variables"."BlendFill_StartUp"."Latch" AND "Procedure_Variables"."BlendFill_StartUp"."Reset") OR ("Procedure_Variables"."BlendFill_StartUp"."Done" AND "Procedure_Variables"."BlendFill_StartUp"."Reset" AND "Procedure_Variables"."BlendFill_StartUp"."Request"); + + IF ("Procedure_Variables"."BlendFill_StartUp"."Done" AND "Procedure_Variables"."BlendFill_StartUp"."Latch" AND "Procedure_Variables"."BlendFill_StartUp"."Reset") OR ("Procedure_Variables"."BlendFill_StartUp"."Done" AND "Procedure_Variables"."BlendFill_StartUp"."Reset" AND "Procedure_Variables"."BlendFill_StartUp"."Request") THEN + "HMI_Variables_Status"."Procedures"."BlenderStateNum" := 9; + END_IF; + + // Network 9: Running (Original Language: LAD) + + "HMI_Variables_Status"."Procedures"."BlendFillSysStartUpRun" := "Procedure_Variables"."BlendFill_StartUp"."Latch" AND "Procedure_Variables"."BlendFill_StartUp"."Wait"; + + "Procedure_Variables"."BlendFill_StartUp"."Running" := "Procedure_Variables"."BlendFill_StartUp"."Latch" AND "Procedure_Variables"."BlendFill_StartUp"."Wait"; + + // Network 10: Sequence (Original Language: LAD) + + IF "Procedure_Variables"."BlendFill_StartUp"."Latch" THEN + BlendFill_StartUp_Seq(mFillerLoadAfterDrain := "mFillerLoadAfterDrain", mFillerLoadAgain := "mFillerLoadAgain", mFillerProdLoadedInit := "mFillerProdLoadedInit", mFillerProdLoading := "mFillerProdLoading", mStep := "mStepNum", mTimer := "mTimeStep", mTransition := "mTransition"); + END_IF; + + // Network 11: Status (Original Language: LAD) + + "HMI_Alarms"."gH_Status" := Eq("mStepNum", 4); + + // Network 12: Status (Original Language: LAD) + + "HMI_Alarms"."gH_Status" := "Procedure_Variables"."BlendFill_StartUp"."Latch" AND "Procedure_Variables"."TM301_Pressure"."Latch"; + + "HMI_Variables_Status"."Procedures"."BlendFillSysPressRun" := "Procedure_Variables"."BlendFill_StartUp"."Latch" AND "Procedure_Variables"."TM301_Pressure"."Latch"; + + // Network 13: Status (Original Language: LAD) + + "HMI_Alarms"."gH_Status" := "gP_FillerProdLoad" AND "Procedure_Variables"."BlendFill_StartUp"."Latch"; + + "HMI_Variables_Status"."Procedures"."BlendFillSysProdLoadRun" := "gP_FillerProdLoad" AND "Procedure_Variables"."BlendFill_StartUp"."Latch"; + + // Network 14: Send Run (Original Language: LAD) + + "HMI_Variables_Status"."Procedures"."BlendFillSysProdSendRun" := "Procedure_Variables"."BlendFill_StartUp"."Done" AND "gOUT_FillerProductAvail" AND "HMI_PID"."PPM303"."ManualControl"."PidEnable"; + + // Network 15: Blend Fill System Start Up To Do (Original Language: LAD) + + "HMI_Alarms"."gH_Message" := "Procedure_Variables"."BlendFill_StartUp"."Done" AND "gBlenderCIPMode" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "gBlenderRinseMode" AND "Procedure_Variables"."BlendFill_StartUp"."Latch"; + + // Network 16: Blend Fill System Start Up Wait Filler Ready (Original Language: LAD) + + "HMI_Alarms"."gH_Message" := "Procedure_Variables"."BlendFill_StartUp"."Done" AND "gIN_Filler_AVM362_En" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "Procedure_Variables"."BlendFill_StartUp"."Latch"; + + // Network 17: Wait filler flushing completed (Original Language: LAD) + + "HMI_Alarms"."gH_Message" := Eq("mStepNum", 2); + + // Network 18: Wait filler loading completed (Original Language: LAD) + + "HMI_Alarms"."gH_Message" := "gIN_FillerEndTankFilling" AND "gP_FillerProdLoad" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "Procedure_Variables"."BlendFill_StartUp"."Latch"; + + // Network 19: TimeOut (Original Language: LAD) + + #TON_INSTANCE_28(IN := Eq("mStepNum", 5), PT := T#1M); // TODO: Declarar #TON_INSTANCE_28 : TON; + + "mFillerFirstLoadTimeOut" := #TON_INSTANCE_28.Q; + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProcedureBrixTracking.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProcedureBrixTracking.md new file mode 100644 index 0000000..d9d7264 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProcedureBrixTracking.md @@ -0,0 +1,147 @@ +```pascal +// Block Type: FB +// Block Number: 1801 +// Original Network Languages: LAD + +FUNCTION_BLOCK "ProcedureBrixTracking" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + i_Value : Real; + i_Cols : Int; + i_Rows : Int; +END_VAR + +VAR_OUTPUT + MeanValue : Real; + Variance : Real; + Std_Deviation : Real; +END_VAR + +VAR_INOUT + mTakeProdSample : Bool; +END_VAR + +VAR_STAT + mTakeSample : Bool; + mTakeProdSample : Bool; + mProdBrixSample : Int := 35; + mAuxProdBrixCorr : Real; + mLocalProdLevel : Real; + mProdBrixStat : "Statistical_Analisys"; + mProdSamples : "BrixTracking_ProdSamples"; + mSampleTimeCalc : "BrixTracking_SampleTime"; + mAuxONS : Bool; + mAuxONS1 : Bool; +END_VAR + +VAR_TEMP + mProdQualityGood : Bool; + mLatchONS : Bool; +END_VAR + +BEGIN + + // Network 1: Qualifier (Original Language: LAD) + + "Procedure_Variables"."ProdBrix_Track"."Qualifier" := "gBlenderProdMode" AND "Procedure_Variables"."First_Production"."Done" AND "gProductMeterOK" AND "Blender_Variables_Pers"."gSugarBeverage" AND "Blender_Variables_Pers"."gWaterRecipe"; + + // Network 2: Request (Original Language: LAD) + + // Edge Logic handled by Coil 26 + "mAuxONS" := "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_PrdBrixTrackingReq"; // P_TRIG("HMI_Variables_Cmd"."Commands_From_HMI"."CMD_PrdBrixTrackingReq") - Mem: "mAuxONS" + + "Procedure_Variables"."ProdBrix_Track"."Request" := "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_PrdBrixTrackingReq" AND NOT "mAuxONS"; + "mAuxONS" := "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_PrdBrixTrackingReq"; // P_TRIG("HMI_Variables_Cmd"."Commands_From_HMI"."CMD_PrdBrixTrackingReq") - Mem: "mAuxONS" + + // Network 3: Tracking Reset (Original Language: LAD) + + "Procedure_Variables"."ProdBrix_Track"."Reset" := "Procedure_Variables"."ProdBrix_Track"."Qualifier"; + + // Network 4: Good Quality (Original Language: LAD) + + "mProdQualityGood" := "Blender_Variables"."gProdBxStat_DevStd" < 0.008; + + // Network 5: Wait (Original Language: LAD) + + "Procedure_Variables"."ProdBrix_Track"."Wait" := "mProdQualityGood" OR "gNoFreezeProductMeter"; + + // Network 6: Latch (Original Language: LAD) + + "Procedure_Variables"."ProdBrix_Track"."Latch" := ("Procedure_Variables"."ProdBrix_Track"."Request" AND "FirstScan" AND "Procedure_Variables"."ProdBrix_Track"."Reset" AND "Procedure_Variables"."ProdBrix_Track"."Done") OR ("FirstScan" AND "Procedure_Variables"."ProdBrix_Track"."Reset" AND "Procedure_Variables"."ProdBrix_Track"."Done" AND "Procedure_Variables"."ProdBrix_Track"."Latch"); + + // Network 7: Latch Pulse (Original Language: LAD) + + // Edge Logic handled by Coil 26 + "mAuxONS1" := "Procedure_Variables"."ProdBrix_Track"."Latch"; // P_TRIG("Procedure_Variables"."ProdBrix_Track"."Latch") - Mem: "mAuxONS1" + + "mLatchONS" := "Procedure_Variables"."ProdBrix_Track"."Latch" AND NOT "mAuxONS1"; + "mAuxONS1" := "Procedure_Variables"."ProdBrix_Track"."Latch"; // P_TRIG("Procedure_Variables"."ProdBrix_Track"."Latch") - Mem: "mAuxONS1" + + // Network 8: Product Brix Tracking procedure Running (Original Language: LAD) + + "HMI_Variables_Status"."Procedures"."PrdBrixTrackingRun" := "Procedure_Variables"."ProdBrix_Track"."Latch"; + + "Procedure_Variables"."ProdBrix_Track"."Running" := "Procedure_Variables"."ProdBrix_Track"."Wait" AND "Procedure_Variables"."ProdBrix_Track"."Latch"; + + "HMI_Alarms"."gH_Status" := "Procedure_Variables"."ProdBrix_Track"."Wait" AND "Procedure_Variables"."ProdBrix_Track"."Latch"; + + // Network 9: Product Level (Original Language: LAD) + + SEL_R(G := "HMI_Instrument"."LTM302"."PVFiltered" > 50.0, IN0 := "HMI_Instrument"."LTM302"."PVFiltered", IN1 := 60.0); + + // Network 10: Liters in Product Tank (Original Language: LAD) + + ProductLiterInTank(i_TankLevel := "mLocalProdLevel"); + + // Network 11: Product Sample (Original Language: LAD) + // Every 60 Liters of product take a sample for the statistical analisy + + "mProdSamples"(mTakeProdSample := "mTakeProdSample"); + + // Network 12: Sample Time (Original Language: LAD) + + IF "Procedure_Variables"."ProdBrix_Track"."Latch" THEN + "mSampleTimeCalc"(mAuxProdBrixCorr := "mAuxProdBrixCorr", mCycleCount := "MW1996", mProdBrixSample := "mProdBrixSample", mTakeSample := "mTakeSample"); + END_IF; + + // Network 13: Reset Tracking (Original Language: LAD) + + IF "Procedure_Variables"."ProdBrix_Track"."Latch" THEN + "Blender_Variables"."gBrixTrackingCorr" := 0.0; + "mAuxProdBrixCorr" := 0.0; + END_IF; + + // Network 14: Product Brix Tracking (Original Language: LAD) + + "HMI_Alarms"."gH_Status" := "Procedure_Variables"."ProdBrix_Track"."Running"; + + // Network 15: Tracking Done (Original Language: LAD) + + "Procedure_Variables"."ProdBrix_Track"."Done" := "gBlenderRinseMode" OR ("Procedure_Variables"."ProdBrix_Track"."Request" AND "mLatchONS" AND "Procedure_Variables"."ProdBrix_Track"."Latch"); + + // Network 16: Product Quality Monitor (Original Language: LAD) + // Product Quality Monitor + + IF "mTakeSample" OR ("AUX FALSE" AND "mTakeProdSample") THEN + "mProdBrixStat"(i_Cols := "mProdBrixSample", i_Rows := 1, i_Value := "Blender_Variables"."gProductBrix"); + END_IF; + + // Network 17: Reset Take Sample (Original Language: LAD) + // Product Quality Monitor + + IF "mTakeSample" THEN + "mTakeSample" := FALSE; + END_IF; + + // Network 18: Reset Product Sample (Original Language: LAD) + // Product Quality Monitor + + IF "mTakeProdSample" THEN + "mTakeProdSample" := FALSE; + END_IF; + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProcedureCarboWaterLine.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProcedureCarboWaterLine.md new file mode 100644 index 0000000..a7c2fa0 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProcedureCarboWaterLine.md @@ -0,0 +1,102 @@ +```pascal +// Block Type: FB +// Block Number: 1802 +// Original Network Languages: LAD + +FUNCTION_BLOCK "ProcedureCarboWaterLine" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_STAT + mStepNum : Int; + mTimeStep : Int; + mTransition : Bool; + mCarboWaterLineONS : Bool; + mCarboWaterLineTPON : Bool; + mCarboWaterLineTP : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + +END_VAR + +VAR_TEMP + mLowCO2Flow : Bool; + SP_PV : Real; + SP_PV_ABS : Real; + CO2_Mul : Real; +END_VAR + +BEGIN + + // Network 1: Qualifier (Original Language: LAD) + + "Procedure_Variables"."CarboWaterLine"."Qualifier" := "Procedure_Variables"."TN301_StartUp"."Done" AND "Blender_Variables_Pers"."gCarboStillProduct" AND (("gBlenderCIPMode" AND "gBlenderSuppliesOk" AND (("gBlenderProdMode" AND "gBlenderRinseMode") OR ("gBlenderProdMode" AND "System_RunOut_Variables"."FastChangeOverActivated" AND "Blender_Variables_Pers"."gFillerRinse_DoneLatch"))) OR ("gBlenderCIPMode" AND "Procedure_Variables"."CarboWaterLine"."Done" AND (("gBlenderProdMode" AND "gBlenderRinseMode") OR ("gBlenderProdMode" AND "System_RunOut_Variables"."FastChangeOverActivated" AND "Blender_Variables_Pers"."gFillerRinse_DoneLatch")))); + + // Network 2: Request (Original Language: LAD) + + // PBox SymPy processed, logic in consumer + "mCarboWaterLineONS" := ("System_RunOut_Variables"."FastChangeOverActivated" AND "Blender_Variables_Pers"."gFillerRinse_DoneLatch") OR ("gBlenderRinseMode" AND "System_RunOut_Variables"."FastChangeOverActivated" AND "Procedure_Variables"."TN301_StartUp"."Done" AND "Procedure_Variables"."Blender_Run"."Latch"); // P_TRIG(("System_RunOut_Variables"."FastChangeOverActivated" AND "Blender_Variables_Pers"."gFillerRinse_DoneLatch") OR ("gBlenderRinseMode" AND "System_RunOut_Variables"."FastChangeOverActivated" AND "Procedure_Variables"."TN301_StartUp"."Done" AND "Procedure_Variables"."Blender_Run"."Latch")) - Mem: "mCarboWaterLineONS" + + "Procedure_Variables"."CarboWaterLine"."Request" := ("Procedure_Variables"."CarboWaterLine"."Qualifier" AND "System_RunOut_Variables"."FastChangeOverActivated" AND "Blender_Variables_Pers"."gFillerRinse_DoneLatch" AND NOT "mCarboWaterLineONS") OR ("Procedure_Variables"."CarboWaterLine"."Qualifier" AND "gBlenderRinseMode" AND "System_RunOut_Variables"."FastChangeOverActivated" AND "Procedure_Variables"."TN301_StartUp"."Done" AND "Procedure_Variables"."Blender_Run"."Latch" AND NOT "mCarboWaterLineONS"); + + // Network 3: Reset (Original Language: LAD) + + "Procedure_Variables"."CarboWaterLine"."Reset" := "Procedure_Variables"."CarboWaterLine"."Qualifier" OR ("Procedure_Variables"."CarboWaterLine"."Latch" AND "gEmergencyPressed"); + + // Network 4: Done (Original Language: LAD) + + IF "Procedure_Variables"."CarboWaterLine"."Reset" THEN + "mStepNum" := 0; + "mTimeStep" := 0; + END_IF; + + IF "Procedure_Variables"."CarboWaterLine"."Reset" THEN + "Procedure_Variables"."CarboWaterLine"."Done" := FALSE; + END_IF; + + // Network 5: Limit Co2 Low (Original Language: LAD) + + "SP_PV" := "HMI_PID"."RMM303"."Sp" - "HMI_PID"."RMM303"."Pv"; + + "CO2_Mul" := "HMI_PID"."RMM303"."Sp" * 0.1; + + // Network 6: Wait (Original Language: LAD) + + "Procedure_Variables"."CarboWaterLine"."Wait" := ("HMI_Digital"."_PAL_S11"."Filtered" AND "gWorkshopTest") OR ("gCO2LowPress_Fault" AND "gWorkshopTest"); + + // Network 7: Latch (Original Language: LAD) + + "Procedure_Variables"."CarboWaterLine"."Latch" := ("Procedure_Variables"."CarboWaterLine"."Latch" AND "Procedure_Variables"."CarboWaterLine"."Reset" AND "FirstScan" AND "Procedure_Variables"."CarboWaterLine"."Done") OR ("Procedure_Variables"."CarboWaterLine"."Reset" AND "Procedure_Variables"."CarboWaterLine"."Request" AND "FirstScan" AND "Procedure_Variables"."CarboWaterLine"."Done"); + + IF ("Procedure_Variables"."CarboWaterLine"."Latch" AND "Procedure_Variables"."CarboWaterLine"."Reset" AND "FirstScan" AND "Procedure_Variables"."CarboWaterLine"."Done") OR ("Procedure_Variables"."CarboWaterLine"."Reset" AND "Procedure_Variables"."CarboWaterLine"."Request" AND "FirstScan" AND "Procedure_Variables"."CarboWaterLine"."Done") THEN + "HMI_Variables_Status"."Procedures"."BlenderStateNum" := 7; + END_IF; + + // Network 8: Water Line Carbonating Running (Original Language: LAD) + // Message TO HMI: Water Line Carbonating Running + + "HMI_Alarms"."gH_Status" := "Procedure_Variables"."CarboWaterLine"."Latch"; + + "Procedure_Variables"."CarboWaterLine"."Running" := "Procedure_Variables"."CarboWaterLine"."Latch" AND "Procedure_Variables"."CarboWaterLine"."Wait"; + + // Network 9: Carbo Water Line Step Sequence (Original Language: LAD) + // #Seq_Preset_Time is Not Used + + IF "Procedure_Variables"."CarboWaterLine"."Running" THEN + CarboWaterLine_Seq(mStep_Number := "mStepNum", mTimer := "mTimeStep", mTransition := "mTransition"); + END_IF; + + // Network 10: Running (Original Language: LAD) + + "HMI_Variables_Status"."System_Run_Out"."CarboWaterLineRun" := "Procedure_Variables"."CarboWaterLine"."Latch"; + + // Network 11: Done (Original Language: LAD) + + "HMI_Variables_Status"."System_Run_Out"."CarboWaterLineDone" := "Procedure_Variables"."CarboWaterLine"."Done"; + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProcedureDeaireator_StartUp.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProcedureDeaireator_StartUp.md new file mode 100644 index 0000000..55c5aaf --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProcedureDeaireator_StartUp.md @@ -0,0 +1,84 @@ +```pascal +// Block Type: FB +// Block Name (Original): ProcedureDeaireator StartUp +// Block Number: 1803 +// Original Network Languages: LAD + +FUNCTION_BLOCK "ProcedureDeaireator_StartUp" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_STAT + mStepNum : Int; + mTimeStep : Int; + mTransition : Bool; + mDeairStartUpONS : Bool; +END_VAR + +BEGIN + + // Network 1: Qualifier (Original Language: LAD) + + "Procedure_Variables"."TN301_StartUp"."Qualifier" := ("gBlenderProdMode" AND "gBlenderRinseMode" AND "gBlenderSuppliesOk") OR ("gBlenderRinseMode" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Deaireation" AND "gBlenderSuppliesOk"); + + // Network 2: Reset (Original Language: LAD) + + "Procedure_Variables"."TN301_StartUp"."Reset" := "gBlenderCIPMode" OR ("gBlenderRinseMode" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Deaireation"); + + // Network 3: Done (Original Language: LAD) + + IF "Procedure_Variables"."TN301_StartUp"."Reset" THEN + "mStepNum" := 0; + "mTimeStep" := 0; + END_IF; + + IF "Procedure_Variables"."TN301_StartUp"."Reset" THEN + "Procedure_Variables"."TN301_StartUp"."Done" := FALSE; + END_IF; + + // Network 4: Request (Original Language: LAD) + + // PBox SymPy processed, logic in consumer + "mDeairStartUpONS" := "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_TN301_StartUp" OR "Procedure_Variables"."Blender_Run"."Request"; // P_TRIG("HMI_Variables_Cmd"."Commands_From_HMI"."CMD_TN301_StartUp" OR "Procedure_Variables"."Blender_Run"."Request") - Mem: "mDeairStartUpONS" + + "Procedure_Variables"."TN301_StartUp"."Request" := ("HMI_Variables_Cmd"."Commands_From_HMI"."CMD_TN301_StartUp" AND "Procedure_Variables"."TN301_StartUp"."Qualifier" AND NOT "mDeairStartUpONS") OR ("Procedure_Variables"."Blender_Run"."Request" AND "Procedure_Variables"."TN301_StartUp"."Qualifier" AND NOT "mDeairStartUpONS"); + + // Network 5: Wait (Original Language: LAD) + + "Procedure_Variables"."TN301_StartUp"."Wait" := "HMI_Device"."PPN301"."Alarm" OR ("gCO2LowPress_Fault" AND "gWorkshopTest") OR ("HMI_Digital"."_PAL_S11"."Filtered" AND "Disable_Bit" AND "gWorkshopTest"); + + // Network 6: State (Original Language: LAD) + + "Procedure_Variables"."TN301_StartUp"."Latch" := ("Procedure_Variables"."TN301_StartUp"."Request" AND "Procedure_Variables"."TN301_StartUp"."Done" AND "Procedure_Variables"."TN301_StartUp"."Reset") OR ("Procedure_Variables"."TN301_StartUp"."Done" AND "Procedure_Variables"."TN301_StartUp"."Latch" AND "Procedure_Variables"."TN301_StartUp"."Reset"); + + IF ("Procedure_Variables"."TN301_StartUp"."Request" AND "Procedure_Variables"."TN301_StartUp"."Done" AND "Procedure_Variables"."TN301_StartUp"."Reset") OR ("Procedure_Variables"."TN301_StartUp"."Done" AND "Procedure_Variables"."TN301_StartUp"."Latch" AND "Procedure_Variables"."TN301_StartUp"."Reset") THEN + "HMI_Variables_Status"."Procedures"."BlenderStateNum" := 5; + END_IF; + + // Network 7: Message (Original Language: LAD) + + "HMI_Alarms"."gH_Message" := ("gBlenderProdMode" AND "Procedure_Variables"."TN301_StartUp"."Qualifier" AND "Procedure_Variables"."TN301_StartUp"."Done" AND "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_EnDeaireation" AND "Procedure_Variables"."TN301_StartUp"."Latch") OR ("gBlenderProdMode" AND "Procedure_Variables"."TN301_StartUp"."Qualifier" AND "Procedure_Variables"."TN301_StartUp"."Done" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_ByPassDeair" AND "Procedure_Variables"."TN301_StartUp"."Latch"); + + // Network 8: Running (Original Language: LAD) + + "Procedure_Variables"."TN301_StartUp"."Running" := "Procedure_Variables"."TN301_StartUp"."Wait" AND "Procedure_Variables"."TN301_StartUp"."Latch"; + + // Network 9: Deaireator Start UP Sequence (Original Language: LAD) + + IF "Procedure_Variables"."TN301_StartUp"."Running" THEN + Deaireator_StartUp_Seq(mStep := "mStepNum", mTimer := "mTimeStep", mTransition := "mTransition"); + END_IF; + + // Network 10: Deaerator StartUp Running (Original Language: LAD) + + "HMI_Variables_Status"."Procedures"."TN301StartUpRun" := "Procedure_Variables"."TN301_StartUp"."Latch"; + + "HMI_Alarms"."gH_Status" := "Procedure_Variables"."TN301_StartUp"."Latch"; + + // Network 11: MIX - Procedure auxiliary variable (Original Language: LAD) + + "gSP_PPN304" := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_Deareation_Vacum" AND "gStillWaterByPassEn" AND ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_VacuumPump" >= 1); + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProcedureFirstProduction.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProcedureFirstProduction.md new file mode 100644 index 0000000..35127fa --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProcedureFirstProduction.md @@ -0,0 +1,174 @@ +```pascal +// Block Type: FB +// Block Number: 1805 +// Original Network Languages: LAD + +FUNCTION_BLOCK "ProcedureFirstProduction" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_STAT + Switch_Level : Real; + mFirstProdONS : Bool; + mAuxONS : Bool; + mFirstProdTPON : Bool; + mFirstProdTP1ON : Bool; + mAuxTPON : Bool; + mDelaySyrOkON : Bool; + mTimeDoneON : Bool; + mFirstProdTP : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mFirstProdTP1 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mAuxTP : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelaySyrOk : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mTimeDone : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + +END_VAR + +VAR_TEMP + Switch_Level_RETVAL : Int; + mFirstProdCountDone : Bool; + mInitialSyrupOk : Bool; + mSyrupCountInit : Real; + Syrup_K : Real; + Syrup_SUB : Real; + SyrupLiters_MUL : Real; + Syrup_Brix_SUB : Real; + Syrup_Brix_ABS : Real; + Delta_Brix_MUL : Real; + Syrup_Brix_MUL : Real; +END_VAR + + #_10S : Bool; // Auto-generated temporary + #TON_INSTANCE_46 : Bool; // Auto-generated temporary +BEGIN + + // Network 1: Qualifier (Original Language: LAD) + + "Procedure_Variables"."First_Production"."Qualifier" := ("gBlenderProdMode" AND "gBlenderRinseMode" AND "gBlenderSuppliesOk") OR ("gBlenderProdMode" AND "gBlenderRinseMode" AND "Procedure_Variables"."First_Production"."Done"); + + // Network 2: FirstProd (Original Language: LAD) + // Exceptionally the Request Bit is Latched in order TO save it FOR the next + // Production switching + + "Procedure_Variables"."First_Production"."Request" := "gBlenderCIPMode" OR ("gBlenderRinseMode" AND "Procedure_Variables"."First_Production"."Done") OR ("Procedure_Variables"."First_Production"."Done" AND "Procedure_Variables"."First_Production"."Request"); + + // Network 3: Reset (Original Language: LAD) + + // PBox SymPy processed, logic in consumer + "FirstProductiontReset" := "Procedure_Variables"."First_Production"."Done" AND "Procedure_Variables"."First_Production"."Request" AND "System_RunOut_Variables"."FastChangeOverActivated"; // P_TRIG("Procedure_Variables"."First_Production"."Done" AND "Procedure_Variables"."First_Production"."Request" AND "System_RunOut_Variables"."FastChangeOverActivated") - Mem: "FirstProductiontReset" + + "Procedure_Variables"."First_Production"."Reset" := "Procedure_Variables"."First_Production"."Qualifier" OR "Procedure_Variables"."Blender_Rinse"."ONS_Done"; + + // Network 4: Reset (Original Language: LAD) + + IF "Procedure_Variables"."First_Production"."Reset" THEN + "mFirstProdCountDone" := FALSE; + END_IF; + + IF "Procedure_Variables"."First_Production"."Reset" THEN + "Blender_Variables_Pers"."gFirstProdLatched" := FALSE; + END_IF; + + IF "Procedure_Variables"."First_Production"."Reset" THEN + "Procedure_Variables"."First_Production"."Done" := FALSE; + END_IF; + + // Network 5: Wait (Original Language: LAD) + // Wait UNTIL Production is Selected + + "Procedure_Variables"."First_Production"."Wait" := "gBlenderProdMode"; + + // Network 6: Latched (Original Language: LAD) + + // Network 6 did not produce printable SCL code. + + // Network 7: LEVEL - Stop Blender when First Production Done (Original Language: LAD) + + // Network 7 did not produce printable SCL code. + + // Network 8: Count Init (Original Language: LAD) + + IF "Procedure_Variables"."FTP302Line_Preparation"."Done" AND "gPV_SyrDensOk" AND "Blender_Variables_Pers"."gFirstProdLatched" THEN + "mSyrupCountInit" := "HMI_Variables_Status"."Analog_Values"."SyrupTotalizerLt"; + END_IF; + + // Network 9: Prod Count Done (Original Language: LAD) + // During Fisrt Production the SyrupRunOutLiters Parameters is multiplied BY 1.3 + // (30% more syrup) AND used TO state when all the Low Brix Syrup is ran Out + + "Syrup_K" := "Blender_Variables_Pers"."gSyrupTotal" / "Blender_Variables"."gActualSyrupDens"; + + "Syrup_SUB" := "Syrup_K" - "mSyrupCountInit"; + + "SyrupLiters_MUL" := "HMI_Blender_Parameters"."ProcessSetup"."_SyrupRunOutLiters" * 1.0; + + "mFirstProdCountDone" := "Syrup_SUB" > "SyrupLiters_MUL"; + + // Network 10: Latch (Original Language: LAD) + + "Procedure_Variables"."First_Production"."Latch" := ("Procedure_Variables"."First_Production"."Reset" AND "FirstScan" AND "Procedure_Variables"."First_Production"."Done" AND "Procedure_Variables"."First_Production"."Request") OR ("Procedure_Variables"."First_Production"."Reset" AND "FirstScan" AND "Procedure_Variables"."First_Production"."Done" AND "Procedure_Variables"."First_Production"."Latch"); + + // Network 11: First Production Running (Original Language: LAD) + + "Procedure_Variables"."First_Production"."Running" := "Procedure_Variables"."First_Production"."Wait" AND "Procedure_Variables"."First_Production"."Latch"; + + "HMI_Alarms"."gH_Status" := "Procedure_Variables"."First_Production"."Wait" AND "Procedure_Variables"."First_Production"."Latch"; + + "HMI_Variables_Status"."Procedures"."FirstProdRun" := "Procedure_Variables"."First_Production"."Latch"; + + // Network 12: Reset Totalizer (Original Language: LAD) + + // Network 12 did not produce printable SCL code. + + // Network 13: DelaySyrOK (Original Language: LAD) + + "Syrup_Brix_MUL" := "Blender_Variables"."gMeterSyrBrix" * "HMI_Recipe_Edit"."Actual_Recipe_Parameters"."_SyrupFactor"; + + "Syrup_Brix_SUB" := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_SyrupBrix" - "Syrup_Brix_MUL"; + + "Delta_Brix_MUL" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_MaxSyrDeltaBrix" * 0.8; + + // Network 14: FirstProdDone (Original Language: LAD) + // First production stops when product tank level gets MAX Lvel (80%) OR when the + // Syrup Brix Error is minimum + + #TON_INSTANCE_46(IN := ("gBlenderLevelTarget" AND "gBlenderBlending" AND "AUX FALSE" AND "mInitialSyrupOk" AND "Procedure_Variables"."First_Production"."Latch") OR ("gBlenderLevelTarget" AND "gBlenderBlending" AND "AUX FALSE" AND "gSyrupRoomEn" AND "Procedure_Variables"."First_Production"."Latch"), PT := T#10S); // TODO: Declarar #TON_INSTANCE_46 : TON; + + "Procedure_Variables"."First_Production"."Done" := "mTimeDoneON" OR ("gBlenderRinseMode" AND "gBlenderStopLevel" AND "Procedure_Variables"."First_Production"."Latch"); + + // Network 15: FirstProdDone (Original Language: LAD) + + "HMI_Variables_Status"."System_Run_Out"."FirstProductionDone" := "Procedure_Variables"."First_Production"."Done"; + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProcedureProdBrixRecovery.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProcedureProdBrixRecovery.md new file mode 100644 index 0000000..e84c867 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProcedureProdBrixRecovery.md @@ -0,0 +1,57 @@ +```pascal +// Block Type: FB +// Block Number: 1806 +// Original Network Languages: LAD + +FUNCTION_BLOCK "ProcedureProdBrixRecovery" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_STAT + TooMuchProdInTank : Bool; + mAuxONS : Bool; +END_VAR + +BEGIN + + // Network 1: Qualifier (Original Language: LAD) + + "Procedure_Variables"."ProdBrix_Recovery"."Qualifier" := "gBlenderProdMode" AND "Procedure_Variables"."First_Production"."Done" AND "gProductMeterOK" AND "Blender_Variables_Pers"."gSugarBeverage" AND "Blender_Variables_Pers"."gWaterRecipe"; + + // Network 2: Request (Original Language: LAD) + + // Edge Logic handled by Coil 26 + "ProdBrixRecoveryReq" := "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_ProdBrixRecoveryReq"; // P_TRIG("HMI_Variables_Cmd"."Commands_From_HMI"."CMD_ProdBrixRecoveryReq") - Mem: "ProdBrixRecoveryReq" + + "Procedure_Variables"."ProdBrix_Recovery"."Request" := "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_ProdBrixRecoveryReq" AND NOT "ProdBrixRecoveryReq"; + "ProdBrixRecoveryReq" := "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_ProdBrixRecoveryReq"; // P_TRIG("HMI_Variables_Cmd"."Commands_From_HMI"."CMD_ProdBrixRecoveryReq") - Mem: "ProdBrixRecoveryReq" + + // Network 3: Reset (Original Language: LAD) + + "Procedure_Variables"."ProdBrix_Recovery"."Reset" := "Procedure_Variables"."ProdBrix_Recovery"."Qualifier"; + + // Network 4: Wait (Original Language: LAD) + + "Procedure_Variables"."ProdBrix_Recovery"."Wait" := "TooMuchProdInTank"; + + // Network 5: Tank Product Amount (Original Language: LAD) + + ProductLiterInTank(i_TankLevel := "HMI_Instrument"."LTM302"."PVFiltered"); + + // Network 6: Too Much Product in Tank (Original Language: LAD) + + ProdBrixRecovery_BrixCal(); + + // Network 7: Recovery Latch (Original Language: LAD) + + "Procedure_Variables"."ProdBrix_Recovery"."Latch" := ("FirstScan" AND "Procedure_Variables"."ProdBrix_Recovery"."Reset" AND "Procedure_Variables"."ProdBrix_Recovery"."Done" AND "Procedure_Variables"."ProdBrix_Recovery"."Request") OR ("FirstScan" AND "Procedure_Variables"."ProdBrix_Recovery"."Reset" AND "Procedure_Variables"."ProdBrix_Recovery"."Done" AND "Procedure_Variables"."ProdBrix_Recovery"."Latch"); + + // Network 8: Recovery Running (Original Language: LAD) + + "Procedure_Variables"."ProdBrix_Recovery"."Running" := "Procedure_Variables"."ProdBrix_Recovery"."Wait" AND "Procedure_Variables"."ProdBrix_Recovery"."Latch"; + + "HMI_Variables_Status"."Procedures"."ProdBrixRecoveryRun" := "Procedure_Variables"."ProdBrix_Recovery"."Latch"; + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProcedureProdTankDrain.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProcedureProdTankDrain.md new file mode 100644 index 0000000..61b2f21 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProcedureProdTankDrain.md @@ -0,0 +1,108 @@ +```pascal +// Block Type: FB +// Block Number: 1807 +// Original Network Languages: LAD + +FUNCTION_BLOCK "ProcedureProdTankDrain" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_STAT + mStepNum : Int; + mTimeStep : Int; + mTransition : Bool; + mAuxONS : Bool; + mAux1ONS : Bool; + mPrdTank_DrainTPON : Bool; + mPrdTank_DrainTP0ON : Bool; + mPrdTank_DrainTP1ON : Bool; + mPrdTank_DrainTP : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mPrdTank_DrainTP0 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mPrdTank_DrainTP1 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + +END_VAR + +VAR_TEMP + mAuxCalcInt : Int; + mAuxCalcDInt : DInt; + mAuxCalcReal : Real; +END_VAR + +BEGIN + + // Network 1: Qualifier (Original Language: LAD) + + "Procedure_Variables"."TM301_Drain"."Qualifier" := "System_RunOut_Variables"."FastChangeOverActivated" OR ("gBlenderProdMode" AND "Procedure_Variables"."Blender_Run"."Running" AND "Procedure_Variables"."TM301_RunOut"."Latch" AND "gBlenderSuppliesOk") OR ("gBlenderProdMode" AND "Blender_Variables_Pers"."gFillerRinse_DoneLatch" AND "Procedure_Variables"."TM301_RunOut"."Latch" AND "gBlenderSuppliesOk"); + + // Network 2: Request (Original Language: LAD) + + // Network 2 did not produce printable SCL code. + + // Network 3: Reset (Original Language: LAD) + + // PBox SymPy processed, logic in consumer + "ProdTankDrainReset" := ("Procedure_Variables"."Blender_Rinse"."Done" AND "System_RunOut_Variables"."FastChangeOverActivated") OR ("System_RunOut_Variables"."FastChangeOverActivated" AND "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_TM301DrainReq"); // P_TRIG(("Procedure_Variables"."Blender_Rinse"."Done" AND "System_RunOut_Variables"."FastChangeOverActivated") OR ("System_RunOut_Variables"."FastChangeOverActivated" AND "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_TM301DrainReq")) - Mem: "ProdTankDrainReset" + + "Procedure_Variables"."TM301_Drain"."Reset" := ("Procedure_Variables"."TM301_Drain"."Done" AND "Procedure_Variables"."Blender_Rinse"."Done" AND "System_RunOut_Variables"."FastChangeOverActivated" AND NOT "ProdTankDrainReset") OR ("Procedure_Variables"."TM301_Drain"."Done" AND "System_RunOut_Variables"."FastChangeOverActivated" AND "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_TM301DrainReq" AND NOT "ProdTankDrainReset") OR ("Procedure_Variables"."Blender_Rinse"."Done" AND "System_RunOut_Variables"."FastChangeOverActivated" AND "Procedure_Variables"."TM301_Drain"."Latch" AND NOT "ProdTankDrainReset") OR ("System_RunOut_Variables"."FastChangeOverActivated" AND "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_TM301DrainReq" AND "Procedure_Variables"."TM301_Drain"."Latch" AND NOT "ProdTankDrainReset"); + + // Network 4: Reset (Original Language: LAD) + + IF "Procedure_Variables"."TM301_Drain"."Reset" THEN + "mStepNum" := 0; + END_IF; + + IF "Procedure_Variables"."TM301_Drain"."Reset" THEN + "Procedure_Variables"."TM301_Drain"."Done" := FALSE; + END_IF; + + // Network 5: TM301 Drain Reset (Original Language: LAD) + + // PBox SymPy processed, logic in consumer + "M19076" := "Procedure_Variables"."TM301_Drain"."Request" AND "System_RunOut_Variables"."FastChangeOverActivated"; // P_TRIG("Procedure_Variables"."TM301_Drain"."Request" AND "System_RunOut_Variables"."FastChangeOverActivated") - Mem: "M19076" + + // Network 6: Wait (Original Language: LAD) + + "Procedure_Variables"."TM301_Drain"."Wait" := "gDrainPressNotOK" AND "Disable_Bit"; + + // Network 7: State Num (Original Language: LAD) + + "Procedure_Variables"."TM301_Drain"."Latch" := ("Procedure_Variables"."TM301_Drain"."Done" AND "Procedure_Variables"."TM301_Drain"."Reset" AND "Procedure_Variables"."TM301_Drain"."Request" AND "FirstScan") OR ("Procedure_Variables"."TM301_Drain"."Done" AND "Procedure_Variables"."TM301_Drain"."Reset" AND "FirstScan" AND "Procedure_Variables"."TM301_Drain"."Latch"); + + IF ("Procedure_Variables"."TM301_Drain"."Done" AND "Procedure_Variables"."TM301_Drain"."Reset" AND "Procedure_Variables"."TM301_Drain"."Request" AND "FirstScan") OR ("Procedure_Variables"."TM301_Drain"."Done" AND "Procedure_Variables"."TM301_Drain"."Reset" AND "FirstScan" AND "Procedure_Variables"."TM301_Drain"."Latch") THEN + "HMI_Variables_Status"."Procedures"."BlenderStateNum" := 10; + END_IF; + + // Network 8: Running (Original Language: LAD) + + "Procedure_Variables"."TM301_Drain"."Running" := "Procedure_Variables"."TM301_Drain"."Wait" AND "Procedure_Variables"."TM301_Drain"."Latch"; + + "HMI_Alarms"."gH_Status" := "Procedure_Variables"."TM301_Drain"."Latch"; + + "HMI_Variables_Status"."Procedures"."TM301DrainRun" := "Procedure_Variables"."TM301_Drain"."Latch"; + + // Network 9: Sequence (Original Language: LAD) + + IF "Procedure_Variables"."TM301_Drain"."Running" THEN + Prod_Tank_Drain_Seq(mStep := "mStepNum", mTime := "mTimeStep", mTransition := "mTransition"); + END_IF; + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProcedureProdTankRunOut.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProcedureProdTankRunOut.md new file mode 100644 index 0000000..5a9c03f --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProcedureProdTankRunOut.md @@ -0,0 +1,198 @@ +```pascal +// Block Type: FB +// Block Number: 1808 +// Original Network Languages: LAD + +FUNCTION_BLOCK "ProcedureProdTankRunOut" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_STAT + mStepNum : Int; + mTimeStep : Int; + mTransition : Bool; + mPrdTnkMinLvl : Bool; + mAuxONS : Bool; + mAuxONS1 : Bool; + mPrdTank_RunOutTPON : Bool; + mPrdTank_RunOutTP0ON : Bool; + mPrdTank_RunOutTP1ON : Bool; + mToFllrStartPipeRunOutON : Bool; + mPrdTank_RunOutTP : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mPrdTank_RunOutTP0 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mPrdTank_RunOutTP1 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mToFllrStartPipeRunOut : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + +END_VAR + +VAR_TEMP + mProdTankRanOut : Bool; + mAuxCalc1 : Real; + mAuxCalc2 : Real; + mProcSlctd : Bool; + mAuxCalcInt : Int; + mAuxCalcDInt : DInt; + mAuxCalcReal : Real; +END_VAR + +BEGIN + + // Network 1: Qualifier (Original Language: LAD) + + "Procedure_Variables"."TM301_RunOut"."Qualifier" := ("System_RunOut_Variables"."FastChangeOverActivated" AND "Procedure_Variables"."TM301_Drain"."Latch" AND "Procedure_Variables"."First_Production"."Done" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem") OR ("gBlenderProdMode" AND "gBlenderSuppliesOk" AND "Procedure_Variables"."TM301_Drain"."Latch" AND "Procedure_Variables"."First_Production"."Done" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem"); + + // Network 2: ProductTempRunOut (Original Language: LAD) + + // Edge Logic handled by Coil 68 + "ProdTankRunOutReq" := "Procedure_Variables"."TM301_RunOut"."Latch" AND "Procedure_Variables"."TM301_RunOut"."Done" AND "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_TM301RunOutReq" AND ("Procedure_Variables"."Syr_RunOut"."Latch" OR "Blender_Variables_Pers"."gWaterRecipe"); // P_TRIG("Procedure_Variables"."TM301_RunOut"."Latch" AND "Procedure_Variables"."TM301_RunOut"."Done" AND "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_TM301RunOutReq" AND ("Procedure_Variables"."Syr_RunOut"."Latch" OR "Blender_Variables_Pers"."gWaterRecipe")) - Mem: "ProdTankRunOutReq" + + "ProdTankRunOutReq_ONS" := ("Procedure_Variables"."TM301_RunOut"."Latch" AND "Procedure_Variables"."Syr_RunOut"."Latch" AND "Procedure_Variables"."TM301_RunOut"."Done" AND "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_TM301RunOutReq" AND NOT "ProdTankRunOutReq") OR ("Procedure_Variables"."TM301_RunOut"."Latch" AND "Blender_Variables_Pers"."gWaterRecipe" AND "Procedure_Variables"."TM301_RunOut"."Done" AND "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_TM301RunOutReq" AND NOT "ProdTankRunOutReq"); + "ProdTankRunOutReq" := "Procedure_Variables"."TM301_RunOut"."Latch" AND "Procedure_Variables"."TM301_RunOut"."Done" AND "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_TM301RunOutReq" AND ("Procedure_Variables"."Syr_RunOut"."Latch" OR "Blender_Variables_Pers"."gWaterRecipe"); // P_TRIG("Procedure_Variables"."TM301_RunOut"."Latch" AND "Procedure_Variables"."TM301_RunOut"."Done" AND "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_TM301RunOutReq" AND ("Procedure_Variables"."Syr_RunOut"."Latch" OR "Blender_Variables_Pers"."gWaterRecipe")) - Mem: "ProdTankRunOutReq" + + // Network 3: Reset (Original Language: LAD) + + // PBox SymPy processed, logic in consumer + "ProdTankRunOutReset" := "Procedure_Variables"."TM301_RunOut"."Request" AND "System_RunOut_Variables"."FastChangeOverActivated"; // P_TRIG("Procedure_Variables"."TM301_RunOut"."Request" AND "System_RunOut_Variables"."FastChangeOverActivated") - Mem: "ProdTankRunOutReset" + + "Procedure_Variables"."TM301_RunOut"."Reset" := ("Procedure_Variables"."TM301_RunOut"."Latch" AND "Procedure_Variables"."TM301_RunOut"."Request" AND "System_RunOut_Variables"."FastChangeOverActivated" AND NOT "ProdTankRunOutReset") OR ("Procedure_Variables"."TM301_RunOut"."Request" AND "System_RunOut_Variables"."FastChangeOverActivated" AND "Procedure_Variables"."TM301_RunOut"."Done" AND NOT "ProdTankRunOutReset"); + + // Network 4: Wait (Original Language: LAD) + + "Procedure_Variables"."TM301_RunOut"."Wait" := "gPTM304_OkToRun" OR "gIN_LinePressCO2Ok"; + + // Network 5: Reset (Original Language: LAD) + + IF "Procedure_Variables"."TM301_RunOut"."Reset" THEN + "mStepNum" := 0; + END_IF; + + IF "Procedure_Variables"."TM301_RunOut"."Reset" THEN + "Procedure_Variables"."TM301_RunOut"."Done" := FALSE; + END_IF; + + IF "Procedure_Variables"."TM301_RunOut"."Reset" THEN + "System_RunOut_Variables"."ChillerPushDone" := FALSE; + END_IF; + + IF "Procedure_Variables"."TM301_RunOut"."Reset" THEN + "gRinseClose_RMM301" := FALSE; + END_IF; + + IF "Procedure_Variables"."TM301_RunOut"."Reset" THEN + "gRinseClose_RMP302" := FALSE; + END_IF; + + // Network 6: Totalizer (Original Language: LAD) + + SEL_R(G := "System_RunOut_Variables"."RMM301_OV_ProdPipeRunOut" > 0.0, IN0 := 0.0, IN1 := "Profibus_Variables"."gFTN301_Tot"); + + SEL_R(G := "System_RunOut_Variables"."RMP302_OV_ProdPipeRunOut" > 0.0, IN0 := 0.0, IN1 := "Profibus_Variables"."gFTP302_Tot"); + + "System_RunOut_Variables"."TM301_RunOut2"."Totalizer" := "mAuxCalc1" + "mAuxCalc2"; + + // Network 7: Counter (Original Language: LAD) + + IF "Procedure_Variables"."TM301_RunOut"."Latch" AND "System_RunOut_Variables"."ChillerPushDone" AND "Procedure_Variables"."TM301_RunOut"."Done" THEN + "System_RunOut_Variables"."TM301_RunOut2"."Push_Count_Init" := "System_RunOut_Variables"."TM301_RunOut2"."Totalizer"; + END_IF; + + // Network 8: Counter Done (Original Language: LAD) + + IF ("System_RunOut_Variables"."TM301_RunOut2"."Push_Count" > "System_RunOut_Variables"."TM301RunOutChillerAm") OR ("Procedure_Variables"."TM301_RunOut"."Latch" AND "System_RunOut_Variables"."ChillerPushDone" AND "gProductChillerEn") THEN + "System_RunOut_Variables"."ChillerPushDone" := TRUE; + END_IF; + + // Network 9: Counter (Original Language: LAD) + + IF "Procedure_Variables"."TM301_RunOut"."Latch" AND "System_RunOut_Variables"."ChillerPushDone" THEN + "System_RunOut_Variables"."TM301_RunOut2"."Push_Count" := "System_RunOut_Variables"."TM301_RunOut2"."Totalizer" - "System_RunOut_Variables"."TM301_RunOut2"."Push_Count_Init"; + END_IF; + + // Network 10: Counter Init (Original Language: LAD) + + IF "HMI_Instrument"."LTM302"."PVFiltered" > 2.0 THEN + "System_RunOut_Variables"."TM301_RunOut2"."Push_Count_Init" := "System_RunOut_Variables"."FillerBottleCount" * "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_BottleSize"; + END_IF; + + // Network 11: Run Out (Original Language: LAD) + + IF "System_RunOut_Variables"."ChillerPushDone" THEN + "mAuxCalc1" := "Blender_Variables"."gMinProduction" / 12.0; + END_IF; + + IF "System_RunOut_Variables"."ChillerPushDone" THEN + "mAuxCalc1" := "Blender_Variables"."gProdTankBottomVol" - "mAuxCalc1"; + END_IF; + + "mProdTankRanOut" := "System_RunOut_Variables"."TM301_RunOut2"."Push_Count" > "mAuxCalc1"; + + // Network 12: Counter (Original Language: LAD) + + IF "System_RunOut_Variables"."ChillerPushDone" THEN + "mAuxCalc1" := "System_RunOut_Variables"."FillerBottleCount" * "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_BottleSize"; + END_IF; + + IF "System_RunOut_Variables"."ChillerPushDone" THEN + "System_RunOut_Variables"."TM301_RunOut2"."Push_Count" := "mAuxCalc1" - "System_RunOut_Variables"."TM301_RunOut2"."Push_Count_Init"; + END_IF; + + // Network 13: Latch (Original Language: LAD) + + "mProcSlctd" := "Procedure_Variables"."TM301_RunOut"."Latch"; + + // Network 14: Latch (Original Language: LAD) + + "Procedure_Variables"."TM301_RunOut"."Latch" := ("Procedure_Variables"."TM301_RunOut"."Latch" AND "Procedure_Variables"."TM301_RunOut"."Reset" AND "FirstScan" AND "Procedure_Variables"."TM301_RunOut"."Done") OR ("Procedure_Variables"."TM301_RunOut"."Request" AND "Procedure_Variables"."TM301_RunOut"."Reset" AND "FirstScan" AND "Procedure_Variables"."TM301_RunOut"."Done"); + + IF ("Procedure_Variables"."TM301_RunOut"."Latch" AND "Procedure_Variables"."TM301_RunOut"."Reset" AND "FirstScan" AND "Procedure_Variables"."TM301_RunOut"."Done") OR ("Procedure_Variables"."TM301_RunOut"."Request" AND "Procedure_Variables"."TM301_RunOut"."Reset" AND "FirstScan" AND "Procedure_Variables"."TM301_RunOut"."Done") THEN + "HMI_Variables_Status"."Procedures"."BlenderStateNum" := 8; + END_IF; + + // Network 15: Running (Original Language: LAD) + + "Procedure_Variables"."TM301_RunOut"."Running" := "Procedure_Variables"."TM301_RunOut"."Latch" AND "Procedure_Variables"."TM301_RunOut"."Wait"; + + // Network 16: Product Tank Run Out Running (Original Language: LAD) + + "HMI_Alarms"."gH_Status" := "Procedure_Variables"."TM301_RunOut"."Latch"; + + "HMI_Variables_Status"."Procedures"."TM301RunOutRun" := "Procedure_Variables"."TM301_RunOut"."Latch"; + + IF "Procedure_Variables"."TM301_RunOut"."Latch" THEN + Prod_Tank_RunOut_Seq(ProdTankRanOut := "mProdTankRanOut", mPrdTnkMinLvl := "mPrdTnkMinLvl", mStep := "mStepNum", mTime := "mTimeStep", mTransition := "mTransition"); + END_IF; + + // Network 17: MIX - ProdTank_RunOut (Original Language: LAD) + + // Network 17 did not produce printable SCL code. + + // Network 18: Run Out (Original Language: LAD) + + "HMI_Variables_Status"."System_Run_Out"."TM301RunOutDone" := "Procedure_Variables"."TM301_RunOut"."Done"; + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProcedureSyrupLineMFMPrep.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProcedureSyrupLineMFMPrep.md new file mode 100644 index 0000000..ba09735 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProcedureSyrupLineMFMPrep.md @@ -0,0 +1,322 @@ +```pascal +// Block Type: FB +// Block Number: 1810 +// Original Network Languages: LAD, STL + +FUNCTION_BLOCK "ProcedureSyrupLineMFMPrep" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_STAT + mStepNum : Int; + mTimeStep : Int; + Real_Time : Time; + mTransition : Bool; + mSyrLineMFMPrepONS : Bool; + mSyrupLineManualDrainSR : Bool; + mFTP302_PrepReqTPON : Bool; + mFTP302_PrepReqTP1ON : Bool; + mDelayON_StopPumpON : Bool; + mDelayON_SyrupMinON : Bool; + mDelayON_PumpStatusON : Bool; + mHVP301_TONON : Bool; + mFTP302_Prep_TimeOutON : Bool; + mFTP302_PrepReqTP : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mFTP302_PrepReqTP1 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayON_StopPump : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayON_SyrupMin : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mDelayON_PumpStatus : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mHVP301_TON : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mFTP302_Prep_TimeOut : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + +END_VAR + +VAR_TEMP + mDummy : Bool; + mAux1 : Real; + mAux2 : Real; + mTimeOutElapsed : Bool; + mStopPumpP2 : Bool; + mSyrMinLevel : Bool; + mPumpP2Running : Bool; + mWaterCountAcheaved : Bool; + mSyrupLineManualDrained : Bool; + mFuzzyNetOut : Bool; + Out_Time_DI : DInt; + Real_Time_S5 : S5Time; + mProcSlctd : Bool; + mFuzzyNetAdd1 : Real; + mFuzzyNetAdd2 : Real; + mFuzzyNetAdd3 : Real; + mSyrBrixAux : Real; + mSyrBrixAux_1 : Real; + __PlcmigTempFillBits_40B0 : Array[0..7] of Bool; +END_VAR + + #_4S : Bool; // Auto-generated temporary + #_4S_600MS : Bool; // Auto-generated temporary + #_500MS : Bool; // Auto-generated temporary + #_5S : Bool; // Auto-generated temporary + #TON_INSTANCE_25 : Bool; // Auto-generated temporary + #TON_INSTANCE_27 : Bool; // Auto-generated temporary + #TON_INSTANCE_28 : Bool; // Auto-generated temporary + #TON_INSTANCE_29 : Bool; // Auto-generated temporary +BEGIN + + // Network 1: Qualifier (Original Language: LAD) + + "Procedure_Variables"."FTP302Line_Preparation"."Qualifier" := ("gBlenderProdMode" AND "gBlenderSuppliesOk" AND "Blender_Variables_Pers"."gWaterRecipe" AND "gBlenderRinseMode") OR ("gBlenderProdMode" AND "gBlenderSuppliesOk" AND "Blender_Variables_Pers"."gWaterRecipe" AND "System_RunOut_Variables"."FastChangeOverActivated"); + + // Network 2: Request (Original Language: LAD) + + "Procedure_Variables"."FTP302Line_Preparation"."Request" := ("mFTP302_PrepReqTP1ON" AND "Procedure_Variables"."FTP302Line_Preparation"."Latch") OR ("HMI_Variables_Cmd"."Commands_From_HMI"."CMD_FTP302Line_Prep" AND "Procedure_Variables"."FTP302Line_Preparation"."Qualifier" AND "Procedure_Variables"."FTP302Line_Preparation"."Latch"); + + // Network 3: Reset (Original Language: LAD) + + // PBox SymPy processed, logic in consumer + "mSyrLineMFMPrepONS" := "Procedure_Variables"."FTP302Line_Preparation"."Done" AND "Procedure_Variables"."FTP302Line_Preparation"."Request" AND "Procedure_Variables"."Blender_Run"."Latch" AND "System_RunOut_Variables"."FastChangeOverActivated"; // P_TRIG("Procedure_Variables"."FTP302Line_Preparation"."Done" AND "Procedure_Variables"."FTP302Line_Preparation"."Request" AND "Procedure_Variables"."Blender_Run"."Latch" AND "System_RunOut_Variables"."FastChangeOverActivated") - Mem: "mSyrLineMFMPrepONS" + + "Procedure_Variables"."FTP302Line_Preparation"."Reset" := "gBlenderCIPMode" OR ("gBlenderRinseMode" AND "System_RunOut_Variables"."FastChangeOverActivated"); + + // Network 4: Reset (Original Language: LAD) + + IF "Procedure_Variables"."FTP302Line_Preparation"."Reset" THEN + "mStepNum" := 0; + END_IF; + + IF "Procedure_Variables"."FTP302Line_Preparation"."Reset" THEN + "Procedure_Variables"."FTP302Line_Preparation"."Done" := FALSE; + END_IF; + + IF "Procedure_Variables"."FTP302Line_Preparation"."Reset" THEN + "mWaterCountAcheaved" := FALSE; + END_IF; + + // Network 5: Wait (Original Language: LAD) + + "Procedure_Variables"."FTP302Line_Preparation"."Wait" := "HMI_Digital"."_PAL_S11"."Filtered" OR "HMI_Device"."PPP302"."Alarm"; + + // Network 6: Latch (Original Language: LAD) + + "Procedure_Variables"."FTP302Line_Preparation"."Latch" := ("Procedure_Variables"."FTP302Line_Preparation"."Done" AND "Procedure_Variables"."FTP302Line_Preparation"."Request" AND "Procedure_Variables"."FTP302Line_Preparation"."Reset" AND "FirstScan") OR ("Procedure_Variables"."FTP302Line_Preparation"."Done" AND "Procedure_Variables"."FTP302Line_Preparation"."Reset" AND "FirstScan" AND "Procedure_Variables"."FTP302Line_Preparation"."Latch"); + + IF ("Procedure_Variables"."FTP302Line_Preparation"."Done" AND "Procedure_Variables"."FTP302Line_Preparation"."Request" AND "Procedure_Variables"."FTP302Line_Preparation"."Reset" AND "FirstScan") OR ("Procedure_Variables"."FTP302Line_Preparation"."Done" AND "Procedure_Variables"."FTP302Line_Preparation"."Reset" AND "FirstScan" AND "Procedure_Variables"."FTP302Line_Preparation"."Latch") THEN + "HMI_Variables_Status"."Procedures"."BlenderStateNum" := 3; + END_IF; + + // Network 7: Running (Original Language: LAD) + + "Procedure_Variables"."FTP302Line_Preparation"."Running" := "Procedure_Variables"."FTP302Line_Preparation"."Wait" AND "Procedure_Variables"."FTP302Line_Preparation"."Latch"; + + // Network 8: #Out_Time_DI (Original Language: LAD) + + "mAux1" := "Blender_Variables"."gMinProduction" / 6.0; + + SEL_R(G := Ne("mAux1", 0.0), IN0 := 1.0, IN1 := "mAux1"); + + "mAux2" := "HMI_Blender_Parameters"."ProcessSetup"."_SyrupRunOutLiters" * 1.5; + + "mAux1" := "mAux2" / "mAux1"; + + // Network 9: Conversion in Real (Original Language: STL) + // #Out_Time_DI (DINT) converted in #Real_Time_S5 (Time) + // Use L#1000 IF #Out_Time_DI is in ms + + // --- BEGIN STL Network 9 --- + + L "Out_Time_DI" + L DINT#1000 + MUL_D + T "Real_Time" + + // --- END STL Network 9 --- + + // Network 10: TimeOut On (Original Language: LAD) + + #TON_INSTANCE_27(IN := "Procedure_Variables"."FTP302Line_Preparation"."Latch", PT := "Real_Time"); // TODO: Declarar #TON_INSTANCE_27 : TON; + + "mFTP302_Prep_TimeOutON" := #TON_INSTANCE_27.Q; + + "mTimeOutElapsed" := "mFTP302_Prep_TimeOutON" AND "Procedure_Variables"."FTP302Line_Preparation"."Latch"; + + // Network 11: DelayON_StopPump (Original Language: LAD) + + #TON_INSTANCE_29(IN := "gIN_SyrTank_MinLvl" AND "DI_Min_Syrup_Level", PT := T#4S_600MS); // TODO: Declarar #TON_INSTANCE_29 : TON; + + "mDelayON_StopPumpON" := #TON_INSTANCE_29.Q; + + "mStopPumpP2" := "gIN_SyrTank_MinLvl" AND "DI_Min_Syrup_Level" AND "mDelayON_StopPumpON"; + + // Network 12: DelayON_SyrupMin (Original Language: LAD) + + #TON_INSTANCE_27(IN := "DI_Min_Syrup_Level", PT := T#500MS); // TODO: Declarar #TON_INSTANCE_27 : TON; + + "mSyrMinLevel" := "gIN_SyrTank_MinLvl" OR ("mDelayON_SyrupMinON" AND #TON_INSTANCE_27.Q); + + // Network 13: DelayON_PumpStatus (Original Language: LAD) + + #TON_INSTANCE_25(IN := "HMI_Device"."PPP302"."Out", PT := T#4S); // TODO: Declarar #TON_INSTANCE_25 : TON; + + "mPumpP2Running" := #TON_INSTANCE_25.Q; + + // Network 14: SyrupLineManualDrain (Original Language: LAD) + + #TON_INSTANCE_28(IN := "gIN_HVP301_Aux", PT := T#5S); // TODO: Declarar #TON_INSTANCE_28 : TON; + + // Network 15: HMI Variables Cmd (Original Language: LAD) + + "mSyrupLineManualDrained" := "gIN_HVP301_Aux" AND "mSyrupLineManualDrainSR" AND "Procedure_Variables"."FTP302Line_Preparation"."Latch"; + + // Network 16: Count Limit (Original Language: LAD) + + IF "Procedure_Variables"."FTP302Line_Preparation"."Latch" THEN + "Blender_Variables_Pers"."gSyrLinePrepCountInit" := "Profibus_Variables"."gFTP302_Tot"; + END_IF; + + // Network 17: Brix Threshold (Original Language: LAD) + + "mSyrBrixAux" := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_SyrupBrix" * "HMI_Blender_Parameters"."ProcessSetup"."_PercSyrupBrixSyrStarUp"; + + "mSyrBrixAux_1" := "mSyrBrixAux" / 100.0; + + "Blender_Constants"."gSugaredSyrupBrixThrsd" := "mSyrBrixAux_1"; + + // Network 18: Fuzzy Net (Original Language: STL) + + // --- BEGIN STL Network 18 --- + + O_BRACK + AN "Blender_Variables_Pers".gSugarBeverage + A "gPV_SyrDensOk" + A "mPumpP2Running" + = "__PlcmigTempFillBits_40B0"[0] + BLD 103 + CALL "SEL_R" + A _Statusword_? + BRACKET + O_BRACK + A_BRACK + L "Profibus_Variables".gFTP302_Brix + L "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupFactor + MUL_R + T "mAux1" + AN _Statusword_? + SAVE + CLR + A _Statusword_? + BRACKET + A_BRACK + L "mAux1" + L "Blender_Constants".gSugaredSyrupBrixThrsd + GT_R + BRACKET + A "mPumpP2Running" + = "__PlcmigTempFillBits_40B0"[0] + BLD 103 + CALL "SEL_R" + A _Statusword_? + BRACKET + O_BRACK + A_BRACK + L "Profibus_Variables".gFTP302_Tot + L "Blender_Variables_Pers".gSyrLinePrepCountInit + SUB_R + T "mAux1" + AN _Statusword_? + SAVE + CLR + A _Statusword_? + BRACKET + A_BRACK + L "mAux1" + L "HMI_Blender_Parameters".ProcessSetup._SyrupRunOutLiters + GE_R + BRACKET + = "mWaterCountAcheaved" + A "mWaterCountAcheaved" + A "HMI_Device".PPP302.Out + = "__PlcmigTempFillBits_40B0"[0] + BLD 103 + CALL "SEL_R" + A _Statusword_? + BRACKET + = "mDummy" + + // --- END STL Network 18 --- + + // Network 19: Fuzzy Net (Original Language: LAD) + + "mFuzzyNetAdd1" := "mFuzzyNetAdd1" + "mFuzzyNetAdd2"; + + "mFuzzyNetAdd1" := "mFuzzyNetAdd1" + "mFuzzyNetAdd3"; + + "mFuzzyNetOut" := "Procedure_Variables"."FTP302Line_Preparation"."Latch" AND ("mFuzzyNetAdd1" > 100.0); + + // Network 20: Opeartor Run Syrup Prep (Original Language: LAD) + + "HMI_Alarms"."gH_Message" := "gBlenderProdMode" AND "Procedure_Variables"."FTP302Line_Preparation"."Done" AND "Blender_Variables_Pers"."gWaterRecipe" AND "Procedure_Variables"."FTP302_StartUp"."Latch" AND "gBlenderRinseMode" AND "System_RunOut_Variables"."FastChangeOverActivated" AND "Procedure_Variables"."FTP302Line_Preparation"."Qualifier" AND "Procedure_Variables"."FTP302Line_Preparation"."Latch"; + + // Network 21: Syrup Tank Prep Running (Original Language: LAD) + // Syrup Tank Prep Running Message + + "HMI_Variables_Status"."Procedures"."TP301PrepRun" := "Procedure_Variables"."FTP302Line_Preparation"."Latch"; + + // Network 22: Syrup Tank Prep Running (Original Language: LAD) + // Syrup Tank Prep Running Message + + "HMI_Alarms"."gH_Status" := "Procedure_Variables"."FTP302_StartUp"."Latch" OR "Procedure_Variables"."FTP302Line_Preparation"."Latch"; + + // Network 23: Syrup Preparation Sequence (Original Language: LAD) + + IF "Procedure_Variables"."FTP302Line_Preparation"."Running" THEN + Syrup_Line_MFM_Prep_Seq(FuzzyNetOut := "mFuzzyNetOut", SyrupLineManualDrained := "mSyrupLineManualDrained", WaterCountAcheaved := "mWaterCountAcheaved", mStep := "mStepNum", mStopPumpP2 := "mStopPumpP2", mSyrMinLevel := "mDelayON_SyrupMinON", mTimer := "mTimeStep", mTransition := "mTransition"); + END_IF; + + // Network 24: Preparation Done (Original Language: LAD) + + "HMI_Variables_Status"."System_Run_Out"."TP301PrepDone" := "Procedure_Variables"."FTP302Line_Preparation"."Done"; + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProcedureSyrupMFMStartUp.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProcedureSyrupMFMStartUp.md new file mode 100644 index 0000000..20cbe3d --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProcedureSyrupMFMStartUp.md @@ -0,0 +1,76 @@ +```pascal +// Block Type: FB +// Block Number: 1811 +// Original Network Languages: LAD + +FUNCTION_BLOCK "ProcedureSyrupMFMStartUp" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_STAT + mStepNum : Int; + mTimeStep : Int; + mTransition : Bool; + mSyrMFMStartUpONS : Bool; + mFTP302_StartUpReqTPON : Bool; + mFTP302_StartUpReqTP : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + +END_VAR + +BEGIN + + // Network 1: Qualifier (Original Language: LAD) + + "Procedure_Variables"."FTP302_StartUp"."Qualifier" := "gBlenderProdMode" AND "gBlenderSuppliesOk" AND "Blender_Variables_Pers"."gWaterRecipe"; + + // Network 2: SyrMFMStartUpReq (Original Language: LAD) + + // Network 2 did not produce printable SCL code. + + // Network 3: Reset (Original Language: LAD) + + // PBox SymPy processed, logic in consumer + "mSyrMFMStartUpONS" := "Procedure_Variables"."FTP302_StartUp"."Request" AND "Procedure_Variables"."Blender_Run"."Latch" AND "Procedure_Variables"."FTP302Line_Preparation"."Done" AND "System_RunOut_Variables"."FastChangeOverActivated"; // P_TRIG("Procedure_Variables"."FTP302_StartUp"."Request" AND "Procedure_Variables"."Blender_Run"."Latch" AND "Procedure_Variables"."FTP302Line_Preparation"."Done" AND "System_RunOut_Variables"."FastChangeOverActivated") - Mem: "mSyrMFMStartUpONS" + + "Procedure_Variables"."FTP302_StartUp"."Reset" := "gBlenderCIPMode" OR ("gBlenderRinseMode" AND "System_RunOut_Variables"."FastChangeOverActivated"); + + // Network 4: Done (Original Language: LAD) + + IF "Procedure_Variables"."FTP302_StartUp"."Reset" THEN + "mStepNum" := 0; + END_IF; + + IF "Procedure_Variables"."FTP302_StartUp"."Reset" THEN + "Procedure_Variables"."FTP302_StartUp"."Done" := FALSE; + END_IF; + + // Network 5: Wait (Original Language: LAD) + + "Procedure_Variables"."FTP302_StartUp"."Wait" := "HMI_Digital"."_PAL_S11"."Filtered" OR "HMI_Device"."PPP302"."Alarm"; + + // Network 6: Latch (Original Language: LAD) + + "Procedure_Variables"."FTP302_StartUp"."Latch" := ("Procedure_Variables"."FTP302_StartUp"."Latch" AND "Procedure_Variables"."FTP302_StartUp"."Reset" AND "FirstScan" AND "Procedure_Variables"."FTP302_StartUp"."Done") OR ("Procedure_Variables"."FTP302_StartUp"."Request" AND "Procedure_Variables"."FTP302_StartUp"."Reset" AND "FirstScan" AND "Procedure_Variables"."FTP302_StartUp"."Done"); + + // Network 7: Running (Original Language: LAD) + + "Procedure_Variables"."FTP302_StartUp"."Running" := "Procedure_Variables"."FTP302_StartUp"."Latch" AND "Procedure_Variables"."FTP302_StartUp"."Wait"; + + // Network 8: Syrup Autocorrection Running (Original Language: LAD) + + "HMI_Variables_Status"."Procedures"."FTP302PrepRun" := "Procedure_Variables"."FTP302_StartUp"."Latch"; + + // Network 9: Sequence (Original Language: LAD) + + IF "Procedure_Variables"."FTP302_StartUp"."Running" THEN + Syrup_MFM_StartUp_Seq(mStep := "mStepNum", mTime := "mTimeStep", mTransition := "mTransition"); + END_IF; + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProcedureSyrup_RunOut.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProcedureSyrup_RunOut.md new file mode 100644 index 0000000..0c59323 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProcedureSyrup_RunOut.md @@ -0,0 +1,118 @@ +```pascal +// Block Type: FB +// Block Name (Original): ProcedureSyrup RunOut +// Block Number: 1812 +// Original Network Languages: LAD + +FUNCTION_BLOCK "ProcedureSyrup_RunOut" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_STAT + mSyrupRanOut : Bool; + mAuxONS : Bool; + mSyrRunOutReqCMDTPON : Bool; + mSyrRunOutReqTPON : Bool; + mSyrRunOutReqCMDTP : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mSyrRunOutReqTP : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + +END_VAR + +BEGIN + + // Network 1: Qualifier (Original Language: LAD) + + "Procedure_Variables"."Syr_RunOut"."Qualifier" := "gBlenderProdMode" AND "gBlenderSuppliesOk" AND "Blender_Variables_Pers"."gWaterRecipe"; + + // Network 2: MIX - Syrup RunOut (Original Language: LAD) + + // Network 2 did not produce printable SCL code. + + // Network 3: Wait (Original Language: LAD) + + "Procedure_Variables"."Syr_RunOut"."Wait" := "HMI_Device"."SyrupRoom_SyrupPump"."Alarm"; + + // Network 4: Reset (Original Language: LAD) + + // PBox SymPy processed, logic in consumer + "SyrupRunOutReset" := ("System_RunOut_Variables"."FastChangeOverActivated" AND "Procedure_Variables"."Syr_RunOut"."Request") OR ("System_RunOut_Variables"."FastChangeOverActivated" AND "Procedure_Variables"."FTP302Line_Preparation"."Done"); // P_TRIG(("System_RunOut_Variables"."FastChangeOverActivated" AND "Procedure_Variables"."Syr_RunOut"."Request") OR ("System_RunOut_Variables"."FastChangeOverActivated" AND "Procedure_Variables"."FTP302Line_Preparation"."Done")) - Mem: "SyrupRunOutReset" + + "Procedure_Variables"."Syr_RunOut"."Reset" := ("Procedure_Variables"."Syr_RunOut"."Qualifier" AND "System_RunOut_Variables"."FastChangeOverActivated") OR ("System_RunOut_Variables"."FastChangeOverActivated" AND "gBlenderRinseMode"); + + // Network 5: Done (Original Language: LAD) + + IF "Procedure_Variables"."Syr_RunOut"."Reset" THEN + "Procedure_Variables"."Syr_RunOut"."Done" := FALSE; + END_IF; + + // Network 6: Latch (Original Language: LAD) + + "Procedure_Variables"."Syr_RunOut"."Latch" := ("Procedure_Variables"."Syr_RunOut"."Request" AND "Procedure_Variables"."Syr_RunOut"."Reset" AND "FirstScan" AND "Procedure_Variables"."Syr_RunOut"."Done") OR ("Procedure_Variables"."Syr_RunOut"."Reset" AND "FirstScan" AND "Procedure_Variables"."Syr_RunOut"."Latch" AND "Procedure_Variables"."Syr_RunOut"."Done"); + + // Network 7: Running (Original Language: LAD) + + "Procedure_Variables"."Syr_RunOut"."Running" := "Procedure_Variables"."Syr_RunOut"."Wait" AND "Procedure_Variables"."Syr_RunOut"."Latch"; + + // Network 8: RunOut Counter (Original Language: LAD) + + IF "Procedure_Variables"."Syr_RunOut"."Latch" AND "Procedure_Variables"."Syr_RunOut"."Done" THEN + "HMI_Variables_Status"."Analog_Values"."TP301RunOutCount" := 0.0; + END_IF; + + // Network 9: RunOut Counter (Original Language: LAD) + + IF "gPV_SyrDensOk" AND "Procedure_Variables"."Syr_RunOut"."Latch" THEN + "Blender_Variables_Pers"."gSyrRunOutCountInit" := "HMI_Variables_Status"."Analog_Values"."SyrupTotalizerLt"; + END_IF; + + // Network 10: RunOut Counter (Original Language: LAD) + + "mSyrupRanOut" := "HMI_Variables_Status"."Analog_Values"."TP301RunOutCount" > "HMI_Blender_Parameters"."ProcessSetup"."_SyrupRunOutLiters"; + + IF "gPV_SyrDensOk" AND "gBlenderBlending" AND "Procedure_Variables"."Syr_RunOut"."Latch" THEN + "HMI_Variables_Status"."Analog_Values"."TP301RunOutCount" := "HMI_Variables_Status"."Analog_Values"."SyrupTotalizerLt" - "Blender_Variables_Pers"."gSyrRunOutCountInit"; + END_IF; + + // Network 11: RunOut Counter (Original Language: LAD) + + IF "Procedure_Variables"."FTP302Line_Preparation"."Done" AND "Procedure_Variables"."Syr_RunOut"."Latch" AND "Procedure_Variables"."Syr_RunOut"."Done" THEN + "HMI_Variables_Status"."Analog_Values"."TP301RunOutCount" := "HMI_Blender_Parameters"."ProcessSetup"."_SyrupRunOutLiters"; + END_IF; + + // Network 12: Syrup Run Out Running (Original Language: LAD) + + "HMI_Variables_Status"."Procedures"."TP301RunOutRun" := "Procedure_Variables"."Syr_RunOut"."Latch"; + + // Network 13: Syrup Run Out Running (Original Language: LAD) + // Syrup Run Out Running Message TO HMI + + "HMI_Alarms"."gH_Status" := "Procedure_Variables"."Syr_RunOut"."Running"; + + // Network 14: RunOut Done (Original Language: LAD) + + IF "Procedure_Variables"."Syr_RunOut"."Done" THEN + "mSyrupRanOut" := FALSE; + END_IF; + + // Network 15: RunOut Done (Original Language: LAD) + + "Procedure_Variables"."Syr_RunOut"."Done" := ("System_RunOut_Variables"."FastChangeOverActivated" AND "Procedure_Variables"."Syr_RunOut"."Done") OR ("gBlenderRinseMode" AND "HMI_Variables_Cmd"."Recipe"."Transfer" AND "gBlenderCIPMode" AND "Procedure_Variables"."Syr_RunOut"."Done"); + + // Network 16: RunOut Done (Original Language: LAD) + + "HMI_Variables_Status"."System_Run_Out"."TP301RunOutDone" := "Procedure_Variables"."Syr_RunOut"."Done"; + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Procedure_Variables.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Procedure_Variables.md new file mode 100644 index 0000000..f9bb1b3 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Procedure_Variables.md @@ -0,0 +1,44 @@ +```pascal +// Block Type: GlobalDB +// Block Number: 960 + +DATA_BLOCK "Procedure_Variables" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + TN301_StartUp : "Struct"; + CarboWaterLine : "Struct"; + FTP302Line_Preparation : "Struct"; + FTP302_StartUp : "Struct"; + ProdBrix_Recovery : "Struct"; + Spare_01 : Bool := FALSE; + Spare_02 : Bool := FALSE; + Spare_03 : Bool := FALSE; + Spare_04 : Bool := FALSE; + Spare_05 : Bool := FALSE; + Spare_06 : Bool := FALSE; + Blender_Run : "Struct"; + Blender_Stop : "Struct"; + Blender_Rinse : "Struct"; + BlenderColdRinseLatch : Bool := FALSE; + BlenderWarmRinseLatch : Bool := FALSE; + Filler_Speed : "Struct"; + First_Production : "Struct"; + TM301_Pressure : "Struct"; + Syr_RunOut : "Struct"; + TM301_RunOut : "Struct"; + TM301_Drain : "Struct"; + SyrAuto_Corr : "Struct"; + ProdBrix_Track : "Struct"; + ProdCO2_Track : "Struct"; + BlendFill_StartUp : "Struct"; + UV_Lamp : "Struct"; + Balaiage : "Struct"; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProdBrixRecovery_BrixCal.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProdBrixRecovery_BrixCal.md new file mode 100644 index 0000000..40d1470 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProdBrixRecovery_BrixCal.md @@ -0,0 +1,93 @@ +```pascal +FUNCTION "ProdBrixRecovery_BrixCal" : Void +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : TASK2 +NAME : 'Name' +VERSION : 1.0 + VAR_OUTPUT + mTooMuchProdInTank : Bool; + END_VAR + + VAR_TEMP + mSyrPerc : Real; + mSyrupKgMissing : Real; + mSyrupLitMissing : Real; + mQSugarNominal : Real; + mQSugarActual : Real; + mH2OPerc : Real; + mRatio_M : Real; + mRatio_V : Real; + mKgH2OToRecover : Real; + mQH2OActual : Real; + mQH2ONominal : Real; + mTankSpaceAvail : Real; + mTotalRecoverProd : Real; + END_VAR + + +BEGIN + + + + (* classic code: IF "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupBrix <> 0.0 AND "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupFactor <> 0.0 THEN*) + IF "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupBrix <> REAL#0.0 AND "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupFactor <> REAL#0.0 THEN + #mSyrPerc := "Blender_Variables".gProductBrix / ("HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupBrix * "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupFactor) ; + (* classic code: #mSyrupKgMissing := (#mQSugarNominal - #mQSugarActual) / ("HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupBrix * "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupFactor) * 100.0 ;*) + #mSyrupKgMissing := (#mQSugarNominal - #mQSugarActual) / ("HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupBrix * "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupFactor) * REAL#100.0 ; + END_IF; + + #mH2OPerc := 1 - #mSyrPerc; + + IF #mSyrPerc <> 0 THEN + #mRatio_M := #mH2OPerc / #mSyrPerc ; + END_IF; + + (* classic code: IF "Blender_Constants".gH2O_Density <> 0.0 THEN*) + IF "Blender_Constants".gH2O_Density <> REAL#0.0 THEN + #mRatio_V := #mRatio_M * "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupDensity / "Blender_Constants".gH2O_Density ; + #mKgH2OToRecover := (#mQH2OActual - #mQH2ONominal) / "Blender_Constants".gH2O_Density ; + END_IF; + + CASE "HMI_Blender_Parameters".Processor_Options.Blender_OPT._MeterType OF + 1: ; + IF (#mRatio_V+1)<>0 THEN + "Blender_Variables".gProdDensFromMeter := "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupDensity * (#mRatio_M + 1) / (#mRatio_V + 1) ; // Maselli + ELSE + (* classic code: "Blender_Variables".gProdDensFromMeter := 1.0 ;*) + "Blender_Variables".gProdDensFromMeter := REAL#1.0 ; + END_IF; + 2: ; + "Blender_Variables".gProdDensFromMeter := "Blender_Variables".gProductDens ; // Anton Paar + ELSE: + (* classic code: "Blender_Variables".gProdDensFromMeter := 1.0 ;*) + "Blender_Variables".gProdDensFromMeter := REAL#1.0 ; + END_CASE; + + #mQSugarNominal := ("Blender_Variables".gTankProdAmount + "Blender_Constants".gProdAmountInSerpentine) * "Blender_Variables".gProdDensFromMeter * "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProductBrix / 100 ; + #mQSugarActual := ("Blender_Variables".gTankProdAmount + "Blender_Constants".gProdAmountInSerpentine) * "Blender_Variables".gProdDensFromMeter * "Blender_Variables".gProductBrix / 100 ; + #mQH2ONominal := "Blender_Variables".gTankProdAmount - #mQSugarNominal ; + #mQH2OActual := "Blender_Variables".gTankProdAmount - #mQSugarActual ; + + IF "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupDensity <> 0 THEN + #mTotalRecoverProd := (#mSyrupKgMissing / "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupDensity) * ("gActualSP_RatioVol" + 1); + END_IF; + + IF "Blender_Variables".gActualSyrupDens <> 0 THEN + #mSyrupLitMissing := #mSyrupKgMissing /"Blender_Variables".gActualSyrupDens ; + END_IF; + + (* classic code: #mTankSpaceAvail := ("Blender_Variables".gProdTankVolume * "Blender_Variables".gProdTankStopLvl / 100.0) - "Blender_Variables".gTankProdAmount ;*) + #mTankSpaceAvail := ("Blender_Variables".gProdTankVolume * "Blender_Variables".gProdTankStopLvl / REAL#100.0) - "Blender_Variables".gTankProdAmount ; + + IF #mTankSpaceAvail >= 2 * "Blender_Constants".gProdAmountInSerpentine THEN + #mTooMuchProdInTank := FALSE ; + ELSE + #mTooMuchProdInTank := TRUE ; + END_IF; + + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProdBrixRecovery_DB.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProdBrixRecovery_DB.md new file mode 100644 index 0000000..8ac7ad2 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProdBrixRecovery_DB.md @@ -0,0 +1,18 @@ +```pascal +// Block Type: InstanceDB +// Block Number: 2 + +DATA_BLOCK "ProdBrixRecovery_DB" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + TooMuchProdInTank : Bool := FALSE; + mAuxONS : Bool := FALSE; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProdReportDB.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProdReportDB.md new file mode 100644 index 0000000..7af3acf --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProdReportDB.md @@ -0,0 +1,83 @@ +```pascal +// Block Type: GlobalDB +// Block Number: 601 + +DATA_BLOCK "ProdReportDB" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + General : "Struct"; + Spare420 : Array[0..3] of Int := [0, 0, 0, 0]; + StartUp : "Struct"; + Spare130 : Array[0..9] of Int := [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; + Production : "Struct"; + Spare210 : Array[0..19] of Int := [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; + RunOut : "Struct"; + Spare314 : Array[0..17] of Int := [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; + Totalizer : "Struct"; + AnalogAVSupport : "Struct"; + Recipe : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := FALSE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := FALSE; + _Pasteur : Bool; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 1; + _ProdMeterRecipeNum : Int := 0; + _SyrupBrix : Real := 50.0; + _SyrupDensity : Real := 1.2558; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 10.45; + _ProductionRate : Real := 900.0; + _Ratio : Real := 20.0; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 0.0; + _CO2Fact : Real := 1.0; + _ProdTankPress : Real := 1.0; + _SP_ProdTemp : Real := 10.0; + _PrdTankMinLevel : Real := 10.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 0.0; + _FillingValveHead_SP : Real := 0.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real := 0.97; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 1.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 0; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProdReportManager.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProdReportManager.md new file mode 100644 index 0000000..37a4255 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProdReportManager.md @@ -0,0 +1,970 @@ +```pascal +// Block Type: FC +// Block Number: 601 +// Original Network Languages: LAD, STL + +FUNCTION "ProdReportManager" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + DUTY_TIME : Real; + FAULT : Int; + DBDim : Word; + Loop_Count : Int; +END_VAR + + #_1 : Bool; // Auto-generated temporary +BEGIN + + // Network 1: EMPTY SEG. (Original Language: STL) + + // --- BEGIN STL Network 1 --- + + NOP_0 + + // --- END STL Network 1 --- + + // Network 2: REPORT END (Original Language: STL) + + // --- BEGIN STL Network 2 --- + + AN "PRDRepStarted" + JC M250 + + L 2 + A "gBlenderCIPMode" + JC M201 + + A "System_RunOut_Variables".ProdPipe_RunOut.Done + Rise "FP_PRDRepEndSupport" + JCN M250 + L 0 + L "PRDRepComment" + NE_I + JC M201 + L 1 + M201: T "ProdReportDB".General.Comment + SET + R "ProdReportDB".General.ReportProdStart + S "ProdReportDB".General.ReportProdEnd + L 0 + T "MB604" + BEU + M250: NOP_0 + + // --- END STL Network 2 --- + + // Network 3: REPORT INITIALIZATION (Original Language: STL) + + // --- BEGIN STL Network 3 --- + + A "HMI_Blender_Parameters".Processor_Options.Blender_OPT._Report + A "Procedure_Variables".Blender_Run.Latch + AN "gBlenderRinseMode" + AN "PRDRepStarted" + A "gBlenderProdMode" + Rise "FP_PRDRepStartSupport" + JCN M350 + + AUF DI "ProdReportDB" + L_DILG + T "DBDim" + LAR1 P#0.0 + L "DBDim" + L 2 + DIV_I + M300: T "Loop_Count" + L 0 + T DIW[AR1,P#0.0] + ADDAR1 P#2.0 + L "Loop_Count" + LOOP M300 + + SET + S "ProdReportDB".General.ReportProdStart + R "ProdReportDB".General.ReportProdEnd + S "PRDRepStarted" + L "HMI_Variables_Cmd".Recipe.Active_Recipe_Running + T "ProdReportDB".General.ActiveRecipeRunning + L 0 + T "PRDRepComment" + M350: NOP_0 + + // --- END STL Network 3 --- + + // Network 4: REPORT CHECK START (Original Language: STL) + + // --- BEGIN STL Network 4 --- + + A "HMI_Blender_Parameters".Processor_Options.Blender_OPT._Report + AN "PRDRepStarted" + BEC + AUF DI "ProdReportDB" + + // --- END STL Network 4 --- + + // Network 5: REPORT ACTUAL RECIPE UPDATE (Original Language: STL) + + // --- BEGIN STL Network 5 --- + + CALL _Call_? + + // --- END STL Network 5 --- + + // Network 6: REPORT PRODUCTION TOTAL TIME (Original Language: LAD) + + IF "CLK_1.0S" THEN + "ProdReportDB"."General"."TotalTime" := DINT#1 + "ProdReportDB"."General"."TotalTime"; + END_IF; + + // Network 7: REPORT PRODUCTION PREPARATION TIME (Original Language: LAD) + + IF ("CLK_1.0S" AND "Procedure_Variables"."TN301_StartUp"."Latch") OR ("CLK_1.0S" AND "Procedure_Variables"."CarboWaterLine"."Latch") THEN + "ProdReportDB"."General"."PreparationTime" := DINT#1 + "ProdReportDB"."General"."PreparationTime"; + END_IF; + + // Network 8: REPORT PRODUCTION PRODUCTION TIME (Original Language: STL) + + // --- BEGIN STL Network 8 --- + + A CLK_1.0S + A "Procedure_Variables".Blender_Run.Latch + A "Procedure_Variables".First_Production.Done + AN_BRACK + O "Procedure_Variables".Syr_RunOut.Latch + O "Procedure_Variables".TM301_RunOut.Latch + O "System_RunOut_Variables".System_RunOut.Latch + O "System_RunOut_Variables".ProdPipe_RunOut.Latch + BRACKET + JNB _006 + L DINT#1 + L "ProdReportDB".General.ProductionTime + ADD_D + T "ProdReportDB".General.ProductionTime + _006: NOP_0 + + // --- END STL Network 8 --- + + // Network 9: REPORT PRODUCTION RUN OUT TIME (Original Language: LAD) + + IF ("CLK_1.0S" AND "Procedure_Variables"."Blender_Run"."Latch" AND "Procedure_Variables"."Syr_RunOut"."Latch") OR ("CLK_1.0S" AND "Procedure_Variables"."Blender_Run"."Latch" AND "Procedure_Variables"."TM301_RunOut"."Latch") THEN + "ProdReportDB"."General"."RunOutTime" := DINT#1 + "ProdReportDB"."General"."RunOutTime"; + END_IF; + + // Network 10: REPORT PRODUCTION WAITING TIME (Original Language: STL) + + // --- BEGIN STL Network 10 --- + + A_BRACK + AN "Procedure_Variables".First_Production.Done + A_BRACK + O_BRACK + A "Procedure_Variables".TN301_StartUp.Latch + A "Procedure_Variables".TN301_StartUp.Wait + AN "Procedure_Variables".TN301_StartUp.Done + BRACKET + O_BRACK + A "Procedure_Variables".CarboWaterLine.Latch + A "Procedure_Variables".CarboWaterLine.Wait + AN "Procedure_Variables".CarboWaterLine.Done + BRACKET + O_BRACK + A "Procedure_Variables".FTP302Line_Preparation.Latch + A "Procedure_Variables".FTP302Line_Preparation.Wait + AN "Procedure_Variables".FTP302Line_Preparation.Done + O_BRACK + A "Procedure_Variables".FTP302_StartUp.Latch + A "Procedure_Variables".FTP302_StartUp.Wait + AN "Procedure_Variables".FTP302_StartUp.Done + BRACKET + BRACKET + O_BRACK + A "Procedure_Variables".BlendFill_StartUp.Latch + A "Procedure_Variables".BlendFill_StartUp.Wait + AN "Procedure_Variables".BlendFill_StartUp.Done + BRACKET + O_BRACK + A "Procedure_Variables".First_Production.Latch + A "Procedure_Variables".First_Production.Wait + BRACKET + BRACKET + + O_BRACK + A "Procedure_Variables".First_Production.Done + A "Procedure_Variables".Blender_Run.Latch + A "Procedure_Variables".Blender_Run.Wait + AN_BRACK + O "Procedure_Variables".Syr_RunOut.Latch + O "Procedure_Variables".TM301_RunOut.Latch + O "System_RunOut_Variables".System_RunOut.Latch + O "System_RunOut_Variables".ProdPipe_RunOut.Latch + BRACKET + BRACKET + + O_BRACK + A "Procedure_Variables".First_Production.Done + A_BRACK + O_BRACK + A "Procedure_Variables".Syr_RunOut.Latch + A "Procedure_Variables".Syr_RunOut.Wait + BRACKET + O_BRACK + A "Procedure_Variables".TM301_RunOut.Latch + A "Procedure_Variables".TM301_RunOut.Wait + BRACKET + O_BRACK + A "System_RunOut_Variables".System_RunOut.Latch + A "System_RunOut_Variables".System_RunOut.Wait + BRACKET + O_BRACK + A "System_RunOut_Variables".ProdPipe_RunOut.Latch + A "System_RunOut_Variables".ProdPipe_RunOut.Wait + BRACKET + BRACKET + BRACKET + BRACKET + A CLK_1.0S + JCN _008 + L DINT#1 + L "ProdReportDB".General.WaitingTime + ADD_D + T "ProdReportDB".General.WaitingTime + _008: NOP_0 + + // --- END STL Network 10 --- + + // Network 11: REPORT PRODUCTION FAULT TIME (Original Language: STL) + + // --- BEGIN STL Network 11 --- + + SET + R "PRDRepFaultPresentAux" + + A "Procedure_Variables".Blender_Run.Latch + R "PRDRepFaultPresent" + + AUF "HMI_Alarms" + L P#0.0 + LAR1_ACCU1 + _011: L DBB[AR1,P#0.0] + L WORD#2#0000_0000_0000_0000 + NE_I + S "PRDRepFaultPresentAux" + ADDAR1 P#1.0 + TAR1_ACCU1 + L P#8.0 + LT_D + JC _011 + + L P#16.0 + LAR1_ACCU1 + _012: L DBB[AR1,P#0.0] + L WORD#2#0000_0000_0000_0000 + NE_I + S "PRDRepFaultPresentAux" + ADDAR1 P#1.0 + TAR1_ACCU1 + L P#20.0 + LT_D + JC _012 + + A "gBlenderProdMode" + A "gBlenderAlarm" + A_BRACK + O "PRDRepFaultPresentAux" + O "gDeviceFault" + O "gInstrumentFault" + O "HMI_Device".PPN301.Alarm + O "HMI_Device".PPP302.Alarm + O "HMI_Device".PPM303.Alarm + O "HMI_Device".PPN304.Alarm + O "HMI_Device".PPN305.Alarm + O "HMI_Device".PPM306.Alarm + BRACKET + S "PRDRepFaultPresent" + + AN CLK_1.0S + ON "PRDRepFaultPresent" + JC _009 + L "ProdReportDB".General.MixerFaultTime + L DINT#1 + ADD_D + T "ProdReportDB".General.MixerFaultTime + _009: NOP_0 + + NOP_0 + + // --- END STL Network 11 --- + + // Network 12: REPORT PRODUCTION EXTERNAL FAULT TIME (Original Language: STL) + + // --- BEGIN STL Network 12 --- + + SET + R "PRDRepExtFaultPresentAux" + + A "Procedure_Variables".Blender_Run.Latch + R "PRDRepExtFaultPresent" + + AUF "HMI_Alarms" + L P#8.0 + LAR1_ACCU1 + _013: L DBB[AR1,P#0.0] + L WORD#2#0000_0000_0000_0000 + NE_I + S "PRDRepExtFaultPresentAux" + ADDAR1 P#1.0 + TAR1_ACCU1 + L P#16.0 + LT_D + JC _013 + + A "gBlenderProdMode" + A "gBlenderAlarm" + A_BRACK + O "PRDRepExtFaultPresentAux" + O "HMI_Device".SyrupRoom_SyrupPump.Alarm + O "HMI_Device".SyrupRoom_WaterPump.Alarm + BRACKET + S "PRDRepExtFaultPresent" + + AN CLK_1.0S + ON "PRDRepExtFaultPresent" + JC _010 + L "ProdReportDB".General.ExternalFaultTime + L DINT#1 + ADD_D + T "ProdReportDB".General.ExternalFaultTime + _010: NOP_0 + + // --- END STL Network 12 --- + + // Network 13: PRODUCTION PREPARATION SEQUENCE MANAGER (Original Language: STL) + + // --- BEGIN STL Network 13 --- + + AN CLK_1.0S + ON_BRACK + A "gBlenderProdMode" + AN "gBlenderRinseMode" + AN "Procedure_Variables".First_Production.Done + BRACKET + JC MS13 + + A "Procedure_Variables".TN301_StartUp.Latch + JCN M130 + AN "Procedure_Variables".TN301_StartUp.Wait + AN "PRDRepFaultPresent" + AN "PRDRepExtFaultPresent" + JCN M131 + L "ProdReportDB".StartUp.Deaireator[0] + L DINT#1 + ADD_D + T "ProdReportDB".StartUp.Deaireator[0] + JU M130 + M131: A "PRDRepFaultPresent" + JCN M132 + L "ProdReportDB".StartUp.Deaireator[1] + L DINT#1 + ADD_D + T "ProdReportDB".StartUp.Deaireator[1] + M132: A "PRDRepExtFaultPresent" + JCN M133 + L "ProdReportDB".StartUp.Deaireator[2] + L DINT#1 + ADD_D + T "ProdReportDB".StartUp.Deaireator[2] + M133: A "Procedure_Variables".TN301_StartUp.Wait + JCN M130 + L "ProdReportDB".StartUp.Deaireator[3] + L DINT#1 + ADD_D + T "ProdReportDB".StartUp.Deaireator[3] + M130: NOP_0 + + A "Procedure_Variables".FTP302Line_Preparation.Latch + O "Procedure_Variables".FTP302_StartUp.Latch + JCN M134 + AN_BRACK + O "Procedure_Variables".FTP302Line_Preparation.Wait + O "Procedure_Variables".FTP302_StartUp.Wait + BRACKET + AN "PRDRepFaultPresent" + AN "PRDRepExtFaultPresent" + JCN M135 + L "ProdReportDB".StartUp.Syrup[0] + L DINT#1 + ADD_D + T "ProdReportDB".StartUp.Syrup[0] + JU M134 + M135: A "PRDRepFaultPresent" + JCN M136 + L "ProdReportDB".StartUp.Syrup[1] + L DINT#1 + ADD_D + T "ProdReportDB".StartUp.Syrup[1] + M136: A "PRDRepExtFaultPresent" + JCN M137 + L "ProdReportDB".StartUp.Syrup[2] + L DINT#1 + ADD_D + T "ProdReportDB".StartUp.Syrup[2] + M137: A "Procedure_Variables".FTP302Line_Preparation.Wait + O "Procedure_Variables".FTP302_StartUp.Wait + JCN M134 + L "ProdReportDB".StartUp.Syrup[3] + L DINT#1 + ADD_D + T "ProdReportDB".StartUp.Syrup[3] + M134: NOP_0 + + A "Procedure_Variables".CarboWaterLine.Latch + JCN M138 + AN "Procedure_Variables".CarboWaterLine.Wait + AN "PRDRepFaultPresent" + AN "PRDRepExtFaultPresent" + JCN M139 + L "ProdReportDB".StartUp.CarboWaterLine[0] + L DINT#1 + ADD_D + T "ProdReportDB".StartUp.CarboWaterLine[0] + JU M138 + M139: A "PRDRepFaultPresent" + JCN M13A + L "ProdReportDB".StartUp.CarboWaterLine[1] + L DINT#1 + ADD_D + T "ProdReportDB".StartUp.CarboWaterLine[1] + M13A: A "PRDRepExtFaultPresent" + JCN M13B + L "ProdReportDB".StartUp.CarboWaterLine[2] + L DINT#1 + ADD_D + T "ProdReportDB".StartUp.CarboWaterLine[2] + M13B: A "Procedure_Variables".CarboWaterLine.Wait + JCN M138 + L "ProdReportDB".StartUp.CarboWaterLine[3] + L DINT#1 + ADD_D + T "ProdReportDB".StartUp.CarboWaterLine[3] + M138: NOP_0 + + A "Procedure_Variables".BlendFill_StartUp.Latch + JCN M13C + AN "Procedure_Variables".BlendFill_StartUp.Wait + AN "PRDRepFaultPresent" + AN "PRDRepExtFaultPresent" + JCN M13D + L "ProdReportDB".StartUp.BlendFill[0] + L DINT#1 + ADD_D + T "ProdReportDB".StartUp.BlendFill[0] + JU M13C + M13D: A "PRDRepFaultPresent" + JCN M13E + L "ProdReportDB".StartUp.BlendFill[1] + L DINT#1 + ADD_D + T "ProdReportDB".StartUp.BlendFill[1] + M13E: A "PRDRepExtFaultPresent" + JCN M13F + L "ProdReportDB".StartUp.BlendFill[2] + L DINT#1 + ADD_D + T "ProdReportDB".StartUp.BlendFill[2] + M13F: A "Procedure_Variables".BlendFill_StartUp.Wait + JCN M13C + L "ProdReportDB".StartUp.BlendFill[3] + L DINT#1 + ADD_D + T "ProdReportDB".StartUp.BlendFill[3] + M13C: NOP_0 + + A "Procedure_Variables".First_Production.Latch + JCN M13G + AN "Procedure_Variables".First_Production.Wait + AN "PRDRepFaultPresent" + AN "PRDRepExtFaultPresent" + JCN M13H + L "ProdReportDB".StartUp.FirstProd[0] + L DINT#1 + ADD_D + T "ProdReportDB".StartUp.FirstProd[0] + JU M13G + M13H: A "PRDRepFaultPresent" + JCN M13I + L "ProdReportDB".StartUp.FirstProd[1] + L DINT#1 + ADD_D + T "ProdReportDB".StartUp.FirstProd[1] + M13I: A "PRDRepExtFaultPresent" + JCN M13J + L "ProdReportDB".StartUp.FirstProd[2] + L DINT#1 + ADD_D + T "ProdReportDB".StartUp.FirstProd[2] + M13J: A "Procedure_Variables".First_Production.Wait + JCN M13G + L "ProdReportDB".StartUp.FirstProd[3] + L DINT#1 + ADD_D + T "ProdReportDB".StartUp.FirstProd[3] + M13G: NOP_0 + + MS13: NOP_0 + + // --- END STL Network 13 --- + + // Network 14: PRODUCTION PRODUCTION SEQUENCE MANAGER (Original Language: STL) + + // --- BEGIN STL Network 14 --- + + AN CLK_1.0S + ON_BRACK + A "gBlenderProdMode" + AN "gBlenderRinseMode" + A "Procedure_Variables".First_Production.Done + AN "Procedure_Variables".Syr_RunOut.Latch + BRACKET + JC MS14 + + AN "Procedure_Variables".Blender_Run.Wait + AN "PRDRepFaultPresent" + AN "PRDRepExtFaultPresent" + JCN M140 + + L "ProdReportDB".Production.Times[0] + L DINT#1 + ADD_D + T "ProdReportDB".Production.Times[0] + JU M143 + + M140: A "PRDRepFaultPresent" + JCN M141 + L "ProdReportDB".Production.Times[1] + L DINT#1 + ADD_D + T "ProdReportDB".Production.Times[1] + + M141: A "PRDRepExtFaultPresent" + JCN M142 + L "ProdReportDB".Production.Times[2] + L DINT#1 + ADD_D + T "ProdReportDB".Production.Times[2] + + M142: A "Procedure_Variables".Blender_Run.Wait + JCN M143 + L "ProdReportDB".Production.Times[3] + L DINT#1 + ADD_D + T "ProdReportDB".Production.Times[3] + + M143: NOP_0 + + A "Blender_Variables_Pers".gWaterRecipe + JC M144 + L "ProdReportDB".Recipe._SyrupBrix + L 100.0 + MUL_R + TRUNC + T "ProdReportDB".Production.BrixSyrupSP + M144: NOP_0 + + A "Blender_Variables_Pers".gWaterRecipe + JC M145 + L "ProdReportDB".Recipe._SyrupDensity + L 10000.0 + MUL_R + TRUNC + T "ProdReportDB".Production.DensitySyrupSP + M145: NOP_0 + + L "ProdReportDB".Recipe._ProductionRate + TRUNC + T "ProdReportDB".Production.ProductionRateSP + + A "gBlenderBlending" + A "Blender_Variables_Pers".gCarboStillProduct + A "gBlenderStableFlow" + JCN M146 + L "Blender_Variables".gSP_CO2 + TRUNC + T "ProdReportDB".Production.CO2RateSP + M146: NOP_0 + + A "Procedure_Variables".Blender_Run.Running + JCN M147 + L "Blender_Variables".gSP_H2O + TRUNC + T "ProdReportDB".Production.H2ORateSP + M147: NOP_0 + + A "Procedure_Variables".Blender_Run.Running + A "gBlenderStableFlow" + AN "Blender_Variables_Pers".gWaterRecipe + JCN M148 + L "Blender_Variables".gSP_SYR + TRUNC + T "ProdReportDB".Production.SyrupRateSP + M148: NOP_0 + + A "ProdReportDB".Recipe._EnProdTemp + JCN M149 + L "ProdReportDB".Recipe._SP_ProdTemp + L 10.0 + MUL_R + TRUNC + T "ProdReportDB".Production.TemperatureChillerSP + JU M14A + M149: L 0 + T "ProdReportDB".Production.TemperatureChillerSP + M14A: NOP_0 + + L "ProdReportDB".Recipe._Ratio + L 10.0 + MUL_R + TRUNC + T "ProdReportDB".Production.ProductRatioSP + + A "Blender_Variables_Pers".gCarboStillProduct + JCN M14B + L "ProdReportDB".Recipe._CO2Vols + L 100.0 + MUL_R + TRUNC + T "ProdReportDB".Production.CO2VolSP + M14B: NOP_0 + + A "HMI_Blender_Parameters".Processor_Options.Blender_OPT._BlendFillSystem + JCN M14C + L "ProdReportDB".Recipe._FillingValveHead_SP + TRUNC + T "ProdReportDB".Production.FillerValveHeadSP + M14C: NOP_0 + + L "ProdReportDB".AnalogAVSupport.DutyTime + L 1.0 + ADD_R + T "ProdReportDB".AnalogAVSupport.DutyTime + T "DUTY_TIME" + + AN "Blender_Variables_Pers".gWaterRecipe + A "HMI_Device".PPP302.Out + JCN M14D + L "ProdReportDB".AnalogAVSupport.BrixSyrup + L "HMI_Instrument".FTP302_Brix.PVFiltered + ADD_R + T "ProdReportDB".AnalogAVSupport.BrixSyrup + L "DUTY_TIME" + DIV_R + L 100.0 + MUL_R + TRUNC + T "ProdReportDB".Production.BrixSyrupAV + M14D: NOP_0 + + AN "Blender_Variables_Pers".gWaterRecipe + A "HMI_Device".PPP302.Out + JCN M14E + L "ProdReportDB".AnalogAVSupport.DensitySyrup + L "HMI_Instrument".FTP302_Density.PVFiltered + ADD_R + T "ProdReportDB".AnalogAVSupport.DensitySyrup + L "DUTY_TIME" + DIV_R + L 10000.0 + MUL_R + TRUNC + T "ProdReportDB".Production.DensitySyrupAV + M14E: NOP_0 + + A "Blender_Variables_Pers".gCarboStillProduct + A "gBlenderBlending" + JCN M14F + L "ProdReportDB".AnalogAVSupport.CO2Rate + L "HMI_Instrument".FTM303.PVFiltered + ADD_R + T "ProdReportDB".AnalogAVSupport.CO2Rate + L "DUTY_TIME" + DIV_R + TRUNC + T "ProdReportDB".Production.CO2RateAV + M14F: NOP_0 + + A "gBlenderBlending" + JCN M14G + L "ProdReportDB".AnalogAVSupport.H2ORate + L "HMI_Instrument".FTN301.PVFiltered + ADD_R + T "ProdReportDB".AnalogAVSupport.H2ORate + L "DUTY_TIME" + DIV_R + TRUNC + T "ProdReportDB".Production.H2ORateAV + M14G: NOP_0 + + AN "Blender_Variables_Pers".gWaterRecipe + A "HMI_Device".PPP302.Out + JCN M14H + L "ProdReportDB".AnalogAVSupport.SyrupRate + L "HMI_Instrument".FTP302.PVFiltered + ADD_R + T "ProdReportDB".AnalogAVSupport.SyrupRate + L "DUTY_TIME" + DIV_R + TRUNC + T "ProdReportDB".Production.SyrupRateAV + M14H: NOP_0 + + A "ProdReportDB".Recipe._EnProdTemp + A "gBlenderBlending" + JCN M14I + L "ProdReportDB".AnalogAVSupport.TemperatureChiller + A "HMI_Instrument".TTM306_H2O.Config + JCN M14J + L "HMI_Instrument".TTM306_H2O.PVFiltered + JU M14K + M14J: L "HMI_Instrument".TTM306_PRD.PVFiltered + M14K: ADD_R + T "ProdReportDB".AnalogAVSupport.TemperatureChiller + L "DUTY_TIME" + DIV_R + L 10.0 + MUL_R + TRUNC + T "ProdReportDB".Production.TemperatureChillerAV + M14I: NOP_0 + + A "HMI_Instrument".TTN321.Config + JCN M14L + L "ProdReportDB".AnalogAVSupport.TemperatureDeair + L "HMI_Instrument".TTN321.PVFiltered + ADD_R + T "ProdReportDB".AnalogAVSupport.TemperatureDeair + L "DUTY_TIME" + DIV_R + L 10.0 + MUL_R + TRUNC + T "ProdReportDB".Production.TemperatureDeairAV + M14L: NOP_0 + + AN "Blender_Variables_Pers".gWaterRecipe + A "HMI_Device".PPP302.Out + JCN M14M + L "ProdReportDB".AnalogAVSupport.TemperatureSyrup + L "HMI_Instrument".FTP302_Temperature.PVFiltered + ADD_R + T "ProdReportDB".AnalogAVSupport.TemperatureSyrup + L "DUTY_TIME" + DIV_R + L 10.0 + MUL_R + TRUNC + T "ProdReportDB".Production.TemperatureSyrupAV + M14M: NOP_0 + + A "HMI_Blender_Parameters".Processor_Options.Blender_OPT._BlendFillSystem + A "HMI_Device".PPM303.Out + JCN M14N + L "ProdReportDB".AnalogAVSupport.FillerValveHead + L "HMI_PID".PPM303.Pv + ADD_R + T "ProdReportDB".AnalogAVSupport.FillerValveHead + L "DUTY_TIME" + DIV_R + TRUNC + T "ProdReportDB".Production.FillerValveHeadAV + M14N: NOP_0 + + MS14: NOP_0 + + // --- END STL Network 14 --- + + // Network 15: PRODUCTION RUN OUT SEQUENCE MANAGER (Original Language: STL) + + // --- BEGIN STL Network 15 --- + + AN CLK_1.0S + ON_BRACK + A "gBlenderProdMode" + AN "gBlenderRinseMode" + A "Procedure_Variables".First_Production.Done + A_BRACK + O "Procedure_Variables".Syr_RunOut.Latch + O "Procedure_Variables".TM301_RunOut.Latch + O "System_RunOut_Variables".System_RunOut.Latch + O "System_RunOut_Variables".ProdPipe_RunOut.Latch + BRACKET + BRACKET + JC MS15 + + A "Procedure_Variables".Syr_RunOut.Latch + JCN M150 + AN "Procedure_Variables".Syr_RunOut.Wait + AN "PRDRepFaultPresent" + AN "PRDRepExtFaultPresent" + JCN M151 + L "ProdReportDB".RunOut.Syrup[0] + L DINT#1 + ADD_D + T "ProdReportDB".RunOut.Syrup[0] + JU M150 + M151: A "PRDRepFaultPresent" + JCN M152 + L "ProdReportDB".RunOut.Syrup[1] + L DINT#1 + ADD_D + T "ProdReportDB".RunOut.Syrup[1] + M152: A "PRDRepExtFaultPresent" + JCN M153 + L "ProdReportDB".RunOut.Syrup[2] + L DINT#1 + ADD_D + T "ProdReportDB".RunOut.Syrup[2] + M153: A "Procedure_Variables".Syr_RunOut.Wait + JCN M150 + L "ProdReportDB".RunOut.Syrup[3] + L DINT#1 + ADD_D + T "ProdReportDB".RunOut.Syrup[3] + M150: NOP_0 + + A "Procedure_Variables".TM301_RunOut.Latch + AN "System_RunOut_Variables".ChillerPushDone + JCN M154 + AN "Procedure_Variables".TM301_RunOut.Wait + AN "PRDRepFaultPresent" + AN "PRDRepExtFaultPresent" + JCN M155 + L "ProdReportDB".RunOut.ChillerPush[0] + L DINT#1 + ADD_D + T "ProdReportDB".RunOut.ChillerPush[0] + JU M154 + M155: A "PRDRepFaultPresent" + JCN M156 + L "ProdReportDB".RunOut.ChillerPush[1] + L DINT#1 + ADD_D + T "ProdReportDB".RunOut.ChillerPush[1] + M156: A "PRDRepExtFaultPresent" + JCN M157 + L "ProdReportDB".RunOut.ChillerPush[2] + L DINT#1 + ADD_D + T "ProdReportDB".RunOut.ChillerPush[2] + M157: A "Procedure_Variables".TM301_RunOut.Wait + JCN M154 + L "ProdReportDB".RunOut.ChillerPush[3] + L DINT#1 + ADD_D + T "ProdReportDB".RunOut.ChillerPush[3] + M154: NOP_0 + + A "Procedure_Variables".TM301_RunOut.Latch + JCN M158 + AN "Procedure_Variables".TM301_RunOut.Wait + AN "PRDRepFaultPresent" + AN "PRDRepExtFaultPresent" + JCN M159 + L "ProdReportDB".RunOut.ProdTank[0] + L DINT#1 + ADD_D + T "ProdReportDB".RunOut.ProdTank[0] + JU M158 + M159: A "PRDRepFaultPresent" + JCN M15A + L "ProdReportDB".RunOut.ProdTank[1] + L DINT#1 + ADD_D + T "ProdReportDB".RunOut.ProdTank[1] + M15A: A "PRDRepExtFaultPresent" + JCN M15B + L "ProdReportDB".RunOut.ProdTank[2] + L DINT#1 + ADD_D + T "ProdReportDB".RunOut.ProdTank[2] + M15B: A "Procedure_Variables".TM301_RunOut.Wait + JCN M158 + L "ProdReportDB".RunOut.ProdTank[3] + L DINT#1 + ADD_D + T "ProdReportDB".RunOut.ProdTank[3] + M158: NOP_0 + + A "System_RunOut_Variables".ProdPipe_RunOut.Latch + JCN M15C + AN "System_RunOut_Variables".ProdPipe_RunOut.Wait + AN "PRDRepFaultPresent" + AN "PRDRepExtFaultPresent" + JCN M15D + L "ProdReportDB".RunOut.ProdPipe[0] + L DINT#1 + ADD_D + T "ProdReportDB".RunOut.ProdPipe[0] + JU M15C + M15D: A "PRDRepFaultPresent" + JCN M15E + L "ProdReportDB".RunOut.ProdPipe[1] + L DINT#1 + ADD_D + T "ProdReportDB".RunOut.ProdPipe[1] + M15E: A "PRDRepExtFaultPresent" + JCN M15F + L "ProdReportDB".RunOut.ProdPipe[2] + L DINT#1 + ADD_D + T "ProdReportDB".RunOut.ProdPipe[2] + M15F: A "System_RunOut_Variables".ProdPipe_RunOut.Wait + JCN M15C + L "ProdReportDB".RunOut.ProdPipe[3] + L DINT#1 + ADD_D + T "ProdReportDB".RunOut.ProdPipe[3] + M15C: NOP_0 + + MS15: NOP_0 + + // --- END STL Network 15 --- + + // Network 16: PRODUCTION TOTALIZER MANAGER (Original Language: STL) + + // --- BEGIN STL Network 16 --- + + L "HMI_Variables_Status".Analog_Values.WaterTotalizer + T "ProdReportDB".Totalizer.H2O + + A "Blender_Variables_Pers".gCarboStillProduct + A "gBlenderBlending" + JCN M160 + L "HMI_Variables_Status".Analog_Values.CO2Totalizer + T "ProdReportDB".Totalizer.CO2 + M160: NOP_0 + + AN "Blender_Variables_Pers".gWaterRecipe + A "HMI_Device".PPP302.Out + JCN M161 + L "HMI_Variables_Status".Analog_Values.SyrupTotalizerLt + T "ProdReportDB".Totalizer.Syrup + M161: NOP_0 + + L "HMI_Variables_Status".Analog_Values.ProductTotalizer + T "ProdReportDB".Totalizer.Product + + // --- END STL Network 16 --- + + // Network 17: COMMENT (Original Language: STL) + + // --- BEGIN STL Network 17 --- + + L "PRDRepComment" + T "ProdReportDB".General.Comment + + // --- END STL Network 17 --- + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Prod_Tank_Drain_Seq.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Prod_Tank_Drain_Seq.md new file mode 100644 index 0000000..cd8c8d8 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Prod_Tank_Drain_Seq.md @@ -0,0 +1,178 @@ +```pascal +// Block Type: FC +// Block Name (Original): Prod Tank Drain_Seq +// Block Number: 1807 +// Original Network Languages: LAD, STL + +FUNCTION "Prod_Tank_Drain_Seq" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INOUT + mStep : Int; + mTime : Int; + mTransition : Bool; +END_VAR + +VAR_TEMP + Buffer : Bool; + mProdTankMinLevel : Bool; + mFlipFlop : Bool; + mOverPress : Bool; + mDummy : Bool; + mPresetTimer : Int; + sp : Real; + mUnderPress : Bool; + sp_1 : Real; + __PlcmigTempFillBits_14B0 : Array[0..7] of Bool; +END_VAR + + #_10S : Bool; // Auto-generated temporary +BEGIN + + // Network 1: STEP CONTROL (Original Language: STL) + + // --- BEGIN STL Network 1 --- + + L "mStep" + JL LEND + JU ST00 + JU ST01 + JU ST02 + JU ST03 + JU ST04 + LEND: JU FULL + FULL: L 0 + T "mStep" + JU END + + // --- END STL Network 1 --- + + // Network 2: STEP 00 (Original Language: LAD) + + "__PlcmigTempFillBits_14B0" := "AUX TRUE"; + + // Network 3: STEP 00 (Original Language: STL) + + // --- BEGIN STL Network 3 --- + + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 3 --- + + // Network 4: STEP 01 (Original Language: LAD) + + IF "AUX FALSE" THEN + "gSP_AVM315" := TRUE; + END_IF; + + // Network 5: STEP 01 (Original Language: STL) + + // --- BEGIN STL Network 5 --- + + AN "HMI_Digital".LSM302L.Filtered + = "__PlcmigTempFillBits_14B0"[0] + BLD 103 + A "AUX TRUE" + = "__PlcmigTempFillBits_14B0"[1] + BLD 103 + A "Procedure_Variables".TM301_Drain.Wait + = "__PlcmigTempFillBits_14B0"[2] + BLD 103 + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 5 --- + + // Network 6: STEP 02 (Original Language: LAD) + // OFF For 8sec + // ON For 2sec + + "mFlipFlopTON1"(IN := "gClock_20s", PT := S5T#10S); // TODO: Declarar "mFlipFlopTON1" : TP; + + "mFlipFlop" := "mFlipFlopTON1".Q; + + // Network 7: STEP 02 (Original Language: LAD) + + IF "AUX TRUE" AND "HMI_Digital"."LSM302L"."Filtered" THEN + "gSP_AVM315" := TRUE; + END_IF; + + IF "AUX TRUE" THEN + "gSP_AVM345" := TRUE; + END_IF; + + IF "AUX TRUE" AND "gBlenderProdMode" THEN + "gSP_AVP316" := TRUE; + END_IF; + + IF "AUX TRUE" THEN + "gSP_AVP316_1" := TRUE; + END_IF; + + // Network 8: STEP 02 (Original Language: STL) + + // --- BEGIN STL Network 8 --- + + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 8 --- + + // Network 9: STEP 02 (Original Language: LAD) + // OFF For 8sec + // ON For 2sec + + IF "AUX TRUE" THEN + "gSP_AVM369" := TRUE; + END_IF; + + IF "AUX TRUE" THEN + "gSP_AVM353" := TRUE; + END_IF; + + IF "AUX TRUE" THEN + "gSP_AVM345" := TRUE; + END_IF; + + // Network 10: STEP 03 (Original Language: STL) + + // --- BEGIN STL Network 10 --- + + A "AUX TRUE" + = "__PlcmigTempFillBits_14B0"[0] + BLD 103 + A "AUX TRUE" + = "__PlcmigTempFillBits_14B0"[1] + BLD 103 + A "Procedure_Variables".TM301_Drain.Wait + = "__PlcmigTempFillBits_14B0"[2] + BLD 103 + A CLK_0.5S + = "__PlcmigTempFillBits_14B0"[3] + BLD 103 + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 10 --- + + // Network 11: STEP 03 (Original Language: LAD) + + "Procedure_Variables"."TM301_Drain"."Done" := "AUX FALSE"; + + // Network 12: END (Original Language: STL) + + // --- BEGIN STL Network 12 --- + + END: NOP_0 + + // --- END STL Network 12 --- + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Prod_Tank_PressCtrl.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Prod_Tank_PressCtrl.md new file mode 100644 index 0000000..d6e1d43 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Prod_Tank_PressCtrl.md @@ -0,0 +1,162 @@ +```pascal +// Block Type: FC +// Block Name (Original): Prod Tank PressCtrl +// Block Number: 2016 +// Original Network Languages: LAD + +FUNCTION "Prod_Tank_PressCtrl" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + mLatchONS : Bool; + PrdTankErrorABS : Real; + PrdTankPressIst_2 : Real; + CO2_Press : Real; + CO2_Press_ABS : Real; + mPress_Request : Bool; + mAuxPress_ONS : Bool; + SP : Real; + SP_Max : Real; + SP_Min : Real; +END_VAR + + #_1M : Bool; // Auto-generated temporary + #_1S : Bool; // Auto-generated temporary + #_300MS : Bool; // Auto-generated temporary + #_6S : Bool; // Auto-generated temporary +BEGIN + + // Network 1: Qualifier (Original Language: LAD) + + "Procedure_Variables"."TM301_Pressure"."Qualifier" := ("System_RunOut_Variables"."FastChangeOverActivated" AND "Procedure_Variables"."Balaiage"."Latch") OR ("gBlenderProdMode" AND "gIN_VoltageOk" AND "gCO2LowPress_Fault" AND "Procedure_Variables"."Balaiage"."Latch") OR ("gBlenderRinseMode" AND "gIN_VoltageOk" AND "gCO2LowPress_Fault" AND "Procedure_Variables"."Balaiage"."Latch"); + + // Network 2: Request (Original Language: LAD) + + "Procedure_Variables"."TM301_Pressure"."Request" := ("Procedure_Variables"."TM301_Pressure"."Latch" AND "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_TM301PressReq") OR ("Procedure_Variables"."TM301_Pressure"."Latch" AND "Procedure_Variables"."FTP302Line_Preparation"."Latch"); + + // Network 3: Reset (Original Language: LAD) + + "Procedure_Variables"."TM301_Pressure"."Reset" := "Procedure_Variables"."TM301_Pressure"."Qualifier"; + + // Network 4: Request (Original Language: LAD) + + // Edge Logic handled by Coil 26 + "Press_Request" := "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_TM301PressReq"; // P_TRIG("HMI_Variables_Cmd"."Commands_From_HMI"."CMD_TM301PressReq") - Mem: "Press_Request" + + "mPress_Request" := "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_TM301PressReq" AND NOT "Press_Request"; + "Press_Request" := "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_TM301PressReq"; // P_TRIG("HMI_Variables_Cmd"."Commands_From_HMI"."CMD_TM301PressReq") - Mem: "Press_Request" + + // Network 5: PRESSURE - Pressure control enable during first productio (Original Language: LAD) + + "gFirstProdPressHold" := "Procedure_Variables"."TM301_Drain"."Latch" AND "gBlenderRinseMode" AND "gEqPressSelected" AND "gEqPressOk" AND "gFinalPressureOk" AND "gWaitLevToHold_TankPress"; + + // Network 6: Wait (Original Language: LAD) + + "Procedure_Variables"."TM301_Pressure"."Wait" := "gFirstProdPressHold" OR "gIN_LinePressCO2Ok"; + + // Network 7: Latch (Original Language: LAD) + + "Procedure_Variables"."TM301_Pressure"."Latch" := ("Procedure_Variables"."TM301_Pressure"."Request" AND "FirstScan" AND "Procedure_Variables"."TM301_Pressure"."Done" AND "Procedure_Variables"."TM301_Pressure"."Reset") OR ("mPress_Request" AND "FirstScan" AND "Procedure_Variables"."TM301_Pressure"."Done" AND "Procedure_Variables"."TM301_Pressure"."Reset"); + + // Network 8: Latch ONS (Original Language: LAD) + + // Edge Logic handled by Coil 26 + "M19026" := "Procedure_Variables"."TM301_Pressure"."Latch"; // P_TRIG("Procedure_Variables"."TM301_Pressure"."Latch") - Mem: "M19026" + + "mLatchONS" := "Procedure_Variables"."TM301_Pressure"."Latch" AND NOT "M19026"; + "M19026" := "Procedure_Variables"."TM301_Pressure"."Latch"; // P_TRIG("Procedure_Variables"."TM301_Pressure"."Latch") - Mem: "M19026" + + // Network 9: Product Tank Pressure Running (Original Language: LAD) + + "Procedure_Variables"."TM301_Pressure"."Running" := "Procedure_Variables"."TM301_Pressure"."Latch" AND "Procedure_Variables"."TM301_Pressure"."Wait"; + + "HMI_Variables_Status"."Procedures"."TM301PressRun" := "Procedure_Variables"."TM301_Pressure"."Latch"; + + // Network 10: PrdTankPressFault (Original Language: LAD) + + "mRVM301_Fault"(IN := "Procedure_Variables"."TM301_Drain"."Latch" AND "gBlenderRinseMode" AND "Procedure_Variables"."TM301_Pressure"."Running" AND "gPTM304_OkToRun", PT := S5T#1M); // TODO: Declarar "mRVM301_Fault" : TON; + + "gPrdTank_Press_Fault" := "mRVM301_Fault".Q; + + // Network 11: Pressure Ok (Original Language: LAD) + // PrdTankPressError = Press_SP - Press_PV + + // Network 11 did not produce printable SCL code. + + // Network 12: Product Tank Pressure OK To Run (Original Language: LAD) + // Pressure OK To Blend + + IF "gBlenderProdMode" AND "gBlenderRinseMode" THEN + "PrdTankPressIst_2" := "Blender_Constants"."gTM301PressIst" * 10.0; + END_IF; + + IF "gBlenderProdMode" AND "gBlenderRinseMode" THEN + "PrdTankPressIst_2" := 0.8; + END_IF; + + IF "gBlenderCIPMode" THEN + "PrdTankPressIst_2" := 3.5; + END_IF; + + "gPTM304_OkToRun" := ("gEqPressSelected" AND "gEqPressOk") OR ("PrdTankErrorABS" < "PrdTankPressIst_2"); + + // Network 13: CO2MainValveDelay (Original Language: LAD) + + "mCO2MainValveDelay"(IN := "Procedure_Variables"."TM301_Pressure"."Latch" AND "Procedure_Variables"."Blender_Run"."Running" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Latch" AND "gCO2LowPress_Fault" AND ("Blender_Variables"."gPrdTankPressError" < 0.0), PT := S5T#6S); // TODO: Declarar "mCO2MainValveDelay" : TON; + + "gCloseMainCO2Valve" := "mCO2MainValveDelay".Q; + + // Network 14: Product Tank Pressure High Limit - PRESSURE - (Original Language: LAD) + + "CO2_Press" := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_ProdTankPress" - "HMI_PID"."RVM301"."Pv"; + + // Network 15: Selected (Original Language: LAD) + + IF ("gEqPressOk" AND "Blender_Variables_Pers"."gCarboStillRecipe" AND Eq("HMI_PID"."RVM301"."Sp", "Blender_Variables"."gCO2EqPressure")) OR ("gWaitLevToHold_TankPress" AND "Blender_Variables_Pers"."gCarboStillRecipe" AND Eq("HMI_PID"."RVM301"."Sp", "Blender_Variables"."gCO2EqPressure")) THEN + "gEqPressSelected" := TRUE; + END_IF; + + // Network 16: EqPressOk (Original Language: LAD) + + "mEqPressOk"(IN := "Procedure_Variables"."TM301_Pressure"."Latch" AND "gBlenderRinseMode" AND "gEqPressSelected" AND "gPTM304_OkToRun", PT := S5T#1S); // TODO: Declarar "mEqPressOk" : TON; + + // Network 17: FinalPressOk (Original Language: LAD) + + "mFinalPressOk"(IN := "Procedure_Variables"."TM301_Pressure"."Latch" AND "gBlenderRinseMode" AND "gEqPressSelected" AND "gEqPressOk" AND (("gBlenderBlending" AND ("gPTM304_HighLimit" OR "gWorkshopTest")) OR ("gBlenderStopLevel" AND ("gPTM304_HighLimit" OR "gWorkshopTest"))), PT := S5T#300MS); // TODO: Declarar "mFinalPressOk" : TON; + + "gFinalPressureOk" := "mFinalPressOk".Q; + + // Network 18: Not Selected (Original Language: LAD) + + IF "gEqPressSelected" AND "gFinalPressureOk" AND "Procedure_Variables"."First_Production"."Latch" THEN + "gEqPressSelected" := FALSE; + END_IF; + + // Network 19: Waiting tank pressure (Original Language: LAD) + + "HMI_Alarms"."gH_Status" := ("gBlenderProdMode" AND "gBlenderRinseMode" AND "gPTM304_OkToRun" AND "Procedure_Variables"."First_Production"."Done") OR ("gBlenderProdMode" AND "gBlenderRinseMode" AND "gEqPressSelected" AND "gEqPressOk" AND "Procedure_Variables"."First_Production"."Latch") OR ("gBlenderProdMode" AND "gBlenderRinseMode" AND "gEqPressSelected" AND "gPTM304_OkToRun" AND "Procedure_Variables"."First_Production"."Latch"); + + // Network 20: Pressure Not Ok (Original Language: LAD) + + IF "gRinseDrainRunning" THEN + LIMIT_R(IN := "HMI_Blender_Parameters"."ProcessSetup"."_DrainTM301Press", MN := 0.0, MX := 1.0); + END_IF; + + IF "gRinseDrainRunning" THEN + "SP_Min" := "SP" - 0.1; + END_IF; + + IF "gRinseDrainRunning" THEN + "SP_Max" := "SP" + 0.2; + END_IF; + + "gDrainPressNotOK" := ("SP_Max" >= "HMI_Instrument"."PTM304"."PVFiltered") OR ("HMI_Instrument"."PTM304"."PVFiltered" <= "SP_Min"); + + // Network 21: Done (Original Language: LAD) + + "Procedure_Variables"."TM301_Pressure"."Done" := "gBlenderCIPMode" OR "Procedure_Variables"."Blender_Rinse"."Done"; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Prod_Tank_RunOut_Seq.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Prod_Tank_RunOut_Seq.md new file mode 100644 index 0000000..98c8868 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Prod_Tank_RunOut_Seq.md @@ -0,0 +1,204 @@ +```pascal +// Block Type: FC +// Block Name (Original): Prod Tank RunOut_Seq +// Block Number: 1808 +// Original Network Languages: LAD, STL + +FUNCTION "Prod_Tank_RunOut_Seq" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + ProdTankRanOut : Bool; +END_VAR + +VAR_INOUT + mStep : Int; + mTime : Int; + mTransition : Bool; + mPrdTnkMinLvl : Bool; +END_VAR + +VAR_TEMP + mProdTankMinLevel : Bool; + __PlcmigTempFillBit_0B1 : Bool; + __PlcmigTempFillBit_0B2 : Bool; + __PlcmigTempFillBit_0B3 : Bool; + __PlcmigTempFillBit_0B4 : Bool; + __PlcmigTempFillBit_0B5 : Bool; + __PlcmigTempFillBit_0B6 : Bool; + __PlcmigTempFillBit_0B7 : Bool; + __PlcmigTempFillBit_1B0 : Bool; + __PlcmigTempFillBit_1B1 : Bool; + __PlcmigTempFillBit_1B2 : Bool; + __PlcmigTempFillBit_1B3 : Bool; + __PlcmigTempFillBit_1B4 : Bool; + __PlcmigTempFillBit_1B5 : Bool; + __PlcmigTempFillBit_1B6 : Bool; + __PlcmigTempFillBit_1B7 : Bool; +END_VAR + +BEGIN + + // Network 1: STEP CONTROL (Original Language: STL) + + // --- BEGIN STL Network 1 --- + + L "mStep" + JL LEND + JU ST00 + JU ST01 + JU ST02 + JU ST03 + LEND: JU FULL + FULL: L 0 + T "mStep" + JU END + + // --- END STL Network 1 --- + + // Network 2: STEP 00 (Original Language: LAD) + + IF "HMI_Digital"."LSN301L"."Filtered" AND ("System_RunOut_Variables"."RMM301_OV_ProdPipeRunOut" > 0.0) THEN + "gSP_PPN301" := TRUE; + END_IF; + + // Network 3: STEP 00 (Original Language: LAD) + + IF ("HMI_Digital"."LAL_S3"."Filtered" AND "System_RunOut_Variables"."FastChangeOverActivated" AND ("System_RunOut_Variables"."RMP302_OV_ProdPipeRunOut" > 0)) OR ("gIN_SyrTank_MinLvl" AND "System_RunOut_Variables"."FastChangeOverActivated" AND ("System_RunOut_Variables"."RMP302_OV_ProdPipeRunOut" > 0)) THEN + "gSP_PPP302" := TRUE; + END_IF; + + IF ("HMI_Digital"."LAL_S3"."Filtered" AND "System_RunOut_Variables"."FastChangeOverActivated" AND ("System_RunOut_Variables"."RMP302_OV_ProdPipeRunOut" > 0)) OR ("gIN_SyrTank_MinLvl" AND "System_RunOut_Variables"."FastChangeOverActivated" AND ("System_RunOut_Variables"."RMP302_OV_ProdPipeRunOut" > 0)) THEN + "gSP_AVP390" := TRUE; + END_IF; + + // Network 4: STEP 00 (Original Language: LAD) + + IF "AUX TRUE" THEN + "gSP_RVN301" := TRUE; + END_IF; + + IF "System_RunOut_Variables"."FastChangeOverActivated" AND "AUX TRUE" THEN + "gSP_RVP303" := TRUE; + END_IF; + + // Network 5: STEP 00 (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" THEN + "gSP_RVN301_1" := TRUE; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" THEN + "gSP_PPN305" := TRUE; + END_IF; + + // Network 6: STEP 00 (Original Language: STL) + + // --- BEGIN STL Network 6 --- + + A "System_RunOut_Variables".ChillerPushDone + = "__PlcmigTempFillBit_1B0" + BLD 103 + A "AUX TRUE" + = "__PlcmigTempFillBit_1B1" + BLD 103 + A "Procedure_Variables".TM301_RunOut.Wait + = "__PlcmigTempFillBit_1B2" + BLD 103 + A CLK_0.5S + = "__PlcmigTempFillBit_1B3" + BLD 103 + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 6 --- + + // Network 7: STEP 01 (Original Language: LAD) + + IF "AUX TRUE" THEN + "gRinseClose_RMM301" := TRUE; + END_IF; + + IF "AUX TRUE" THEN + "gRinseClose_RMP302" := TRUE; + END_IF; + + // Network 8: STEP 01 (Original Language: STL) + + // --- BEGIN STL Network 8 --- + + A "AUX TRUE" + = "__PlcmigTempFillBit_1B0" + BLD 103 + A "AUX TRUE" + = "__PlcmigTempFillBit_1B1" + BLD 103 + A "Procedure_Variables".TM301_RunOut.Wait + = "__PlcmigTempFillBit_1B2" + BLD 103 + A CLK_0.5S + = "__PlcmigTempFillBit_1B3" + BLD 103 + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 8 --- + + // Network 9: STEP 02 (Original Language: LAD) + + "mProdTankMinLevel" := ("HMI_Instrument"."LTM302"."PVFiltered" < 2.0) OR ("ProdTankRanOut" AND "System_RunOut_Variables"."ProdPipeRunOutFillerBott"); + + // Network 10: STEP 02 (Original Language: STL) + + // --- BEGIN STL Network 10 --- + + A "mProdTankMinLevel" + = "__PlcmigTempFillBit_1B0" + BLD 103 + A "AUX TRUE" + = "__PlcmigTempFillBit_1B1" + BLD 103 + A "Procedure_Variables".TM301_RunOut.Wait + = "__PlcmigTempFillBit_1B2" + BLD 103 + A CLK_0.5S + = "__PlcmigTempFillBit_1B3" + BLD 103 + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 10 --- + + // Network 11: STEP 03 (Original Language: LAD) + + IF "AUX FALSE" THEN + "gRinseClose_RMM301" := FALSE; + END_IF; + + IF "AUX FALSE" THEN + "gRinseClose_RMP302" := FALSE; + END_IF; + + IF "AUX FALSE" THEN + "System_RunOut_Variables"."ChillerPushDone" := FALSE; + END_IF; + + IF "AUX FALSE" THEN + "Procedure_Variables"."TM301_RunOut"."Done" := TRUE; + END_IF; + + // Network 12: (Original Language: STL) + + // --- BEGIN STL Network 12 --- + + END: NOP_0 + + // --- END STL Network 12 --- + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProductAvailable.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProductAvailable.md new file mode 100644 index 0000000..c11e15d --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProductAvailable.md @@ -0,0 +1,106 @@ +```pascal +FUNCTION_BLOCK "ProductAvailable" +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : TASK2 +NAME : 'Name' +VERSION : 1.0 + VAR + mSyrupAvailable_Line : Real; + mSyrupAvailable_Tank : Real; + mSyrupProductAvailable : Real; + END_VAR + + +BEGIN + + + "System_RunOut_Variables".ContainerSize := "HMI_Blender_Parameters".Actual_Recipe_Parameters._BottleSize ; + + IF NOT "System_RunOut_Variables".FastChangeOverActivated THEN + "System_RunOut_Variables".TotalEmptyContainer := 2100 ; + "System_RunOut_Variables".ProdAvailToFillerRunOut := 1000 ; + END_IF ; + + IF NOT "System_RunOut_Variables".FillerRanOut AND NOT "HMI_Blender_Parameters".Processor_Options.Blender_OPT._BlendFillSystem THEN + "System_RunOut_Variables".FillerProductAvailable := "System_RunOut_Variables".FillerProductAvailAmount ; + ELSE + (* classic code: "System_RunOut_Variables".FillerProductAvailable := 0.0 ;*) + "System_RunOut_Variables".FillerProductAvailable := REAL#0.0 ; + END_IF ; + + #mSyrupAvailable_Line := LIMIT (MN:= 0, IN:= "HMI_Blender_Parameters".ProcessSetup._SyrupRunOutLiters - + "HMI_Variables_Status".Analog_Values.TP301RunOutCount, MX:= "HMI_Blender_Parameters".ProcessSetup._SyrupRunOutLiters ); + + IF "HMI_Blender_Parameters".Processor_Options.Blender_OPT._SyrupLevel THEN + #mSyrupAvailable_Tank := LIMIT (MN:= 0, IN:= "System_RunOut_Variables".TP301BottomVol + ("System_RunOut_Variables".TP301Volume - + "System_RunOut_Variables".TP301BottomVol) * "HMI_Instrument".LTP303.PVFiltered / 100, MX:= "System_RunOut_Variables".TP301Volume) ; + ELSE + #mSyrupAvailable_Tank := "System_RunOut_Variables".TP301SyrupAmount ; + END_IF ; + + IF NOT ("Procedure_Variables".Syr_RunOut.Done OR "Procedure_Variables".TM301_RunOut.Latch) THEN + IF "Blender_Variables_Pers".gSugarBeverage THEN + "System_RunOut_Variables".SyrupProductAvailable := (#mSyrupAvailable_Line + #mSyrupAvailable_Tank) * ("gActualSP_RatioVol" + 1) ; + ELSE + "System_RunOut_Variables".SyrupProductAvailable := #mSyrupAvailable_Line * ("gActualSP_RatioVol" + 1) ; + END_IF ; + ELSE + (* classic code: "System_RunOut_Variables".SyrupProductAvailable := 0.0 ;*) + "System_RunOut_Variables".SyrupProductAvailable := REAL#0.0 ; + END_IF ; + IF NOT "Procedure_Variables".TM301_RunOut.Done THEN + "System_RunOut_Variables".TankProductAvailable := "ProductLiterInTank"(i_TankLevel:="HMI_Instrument".LTM302.PVFiltered) ; + ELSE + (* classic code: "System_RunOut_Variables".TankProductAvailable := 0.0 ;*) + "System_RunOut_Variables".TankProductAvailable := REAL#0.0 ; + END_IF ; + + "System_RunOut_Variables".PrdPipeProductAvailable := LIMIT(MN:= 0, IN:= "System_RunOut_Variables".ProdPipeRunOutProdAmount - + "System_RunOut_Variables".Prod_Pipe_RunOut.Push_Count, MX:= "System_RunOut_Variables".ProdPipeRunOutProdAmount) ; + "System_RunOut_Variables".TotalProductAvailable := ("System_RunOut_Variables".TankProductAvailable + "System_RunOut_Variables".SyrupProductAvailable + + "System_RunOut_Variables".PrdPipeProductAvailable + "System_RunOut_Variables".FillerProductAvailable) ; + + "HMI_Service".Service_Status.SyrupProductAvailable := "System_RunOut_Variables".SyrupProductAvailable ; + "HMI_Service".Service_Status.PrdTankProductAvailable := "System_RunOut_Variables".TankProductAvailable ; + "HMI_Service".Service_Status.PrdPipeProductAvailable := "System_RunOut_Variables".PrdPipeProductAvailable ; + "HMI_Service".Service_Status.FillerProductAvailable := "System_RunOut_Variables".FillerProductAvailable ; + "HMI_Service".Service_Status.TotalProductAvailable := "System_RunOut_Variables".TotProdAvailableBottle ; + "HMI_Service".TotalEmptyContainer := "System_RunOut_Variables".TotalEmptyContainer ; + IF "System_RunOut_Variables".ContainerSize <> 0 THEN + "System_RunOut_Variables".TotProdAvailableBottle := "System_RunOut_Variables".TotalProductAvailable / "System_RunOut_Variables".ContainerSize ; + END_IF ; + IF ("Procedure_Variables".Syr_RunOut.Latch OR "Procedure_Variables".Syr_RunOut.Done OR "Procedure_Variables".TM301_RunOut.Latch OR "Procedure_Variables".TM301_RunOut.Done) + AND ("System_RunOut_Variables".ProdPipe_RunOut.Done OR "System_RunOut_Variables".ToFillerProductCompleted) + + AND NOT "System_RunOut_Variables".In_Flr_LastContainer THEN + "System_RunOut_Variables".ToFillerProductCompleted := TRUE ; + ELSE + "System_RunOut_Variables".ToFillerProductCompleted := FALSE ; + END_IF ; + IF "System_RunOut_Variables".FastChangeOverActivated AND ((("System_RunOut_Variables".TotProdAvailableBottle < "System_RunOut_Variables".ProdAvailBottle_FillerBB) OR + "HMI_Service".Service_Status.FillerStopContainer) AND NOT "System_RunOut_Variables".InConveyerFull) THEN + "HMI_Service".Service_Status.FillerStopContainer := TRUE ; + ELSE + "HMI_Service".Service_Status.FillerStopContainer := FALSE ; + END_IF ; + IF "System_RunOut_Variables".FastChangeOverActivated AND (("System_RunOut_Variables".TotProdAvailableBottle < "HMI_Service".TotalEmptyContainer) + OR "HMI_Service".Service_Status.DepallStop) THEN + "HMI_Service".Service_Status.DepallStop := TRUE ; + ELSE + "HMI_Service".Service_Status.DepallStop := FALSE ; + END_IF ; + + IF (*"Procedure_Variables".Syr_RunOut.Latch OR "Procedure_Variables".Syr_RunOut.Done OR "Procedure_Variables".TM301_RunOut.Latch OR "Procedure_Variables".TM301_RunOut.Done OR + "System_RunOut_Variables".ProdPipe_RunOut.Latch OR "System_RunOut_Variables".ProdPipe_RunOut.Done THEN*) + "Procedure_Variables".TM301_RunOut.Latch THEN + "System_RunOut_Variables".ToFillerProdRunOut := TRUE ; + ELSE + "System_RunOut_Variables".ToFillerProdRunOut := FALSE ; + END_IF ; + + +END_FUNCTION_BLOCK + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProductLiterInTank.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProductLiterInTank.md new file mode 100644 index 0000000..36a6c94 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProductLiterInTank.md @@ -0,0 +1,22 @@ +```pascal +FUNCTION "ProductLiterInTank" : Real +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : 'Function' +NAME : 'Name' +VERSION : 1.0 + VAR_INPUT + i_TankLevel : Real; + END_VAR + + +BEGIN + + + #ProductLiterInTank := "Blender_Variables".gProdTankBottomVol + ("Blender_Variables".gProdTankVolume - "Blender_Variables".gProdTankBottomVol) * #i_TankLevel / 100 ; + + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProductPipeDrain.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProductPipeDrain.md new file mode 100644 index 0000000..0609899 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProductPipeDrain.md @@ -0,0 +1,85 @@ +```pascal +// Block Type: FB +// Block Number: 1824 +// Original Network Languages: LAD + +FUNCTION_BLOCK "ProductPipeDrain" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_STAT + mStepNum : Int; + mTimeStep : Int; + mTransition : Bool; + mAuxONS : Bool; + mProdPipeDrainCMDTPON : Bool; + mProdPipeDrainTPON : Bool; + mProdPipeDrainCMDTP : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mProdPipeDrainTP : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + +END_VAR + +BEGIN + + // Network 1: Qualifier (Original Language: LAD) + + "System_RunOut_Variables"."ProdPipe_Drain"."Qualifier" := ("System_RunOut_Variables"."ProdPipe_Drain"."Latch" AND "AUX FALSE") OR ("gBlenderProdMode" AND "gBlenderSuppliesOk" AND "System_RunOut_Variables"."FastChangeOverActivated" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Done" AND "AUX FALSE"); + + // Network 2: ProductPipeDrain (Original Language: LAD) + + // Network 2 did not produce printable SCL code. + + // Network 3: Reset (Original Language: LAD) + + // PBox SymPy processed, logic in consumer + "ProdPipeDrainReset" := "System_RunOut_Variables"."ProdPipe_RunOut"."Done" OR "HMI_Variables_Cmd"."System_Run_Out"."CMD"."_ProdPipeDrainReq"; // P_TRIG("System_RunOut_Variables"."ProdPipe_RunOut"."Done" OR "HMI_Variables_Cmd"."System_Run_Out"."CMD"."_ProdPipeDrainReq") - Mem: "ProdPipeDrainReset" + + "System_RunOut_Variables"."ProdPipe_Drain"."Reset" := ("System_RunOut_Variables"."ProdPipe_Drain"."Qualifier" AND "System_RunOut_Variables"."FastChangeOverActivated") OR ("System_RunOut_Variables"."ProdPipe_RunOut"."Done" AND NOT "ProdPipeDrainReset") OR ("HMI_Variables_Cmd"."System_Run_Out"."CMD"."_ProdPipeDrainReq" AND NOT "ProdPipeDrainReset"); + + // Network 4: Wait (Original Language: LAD) + + "System_RunOut_Variables"."ProdPipe_Drain"."Wait" := "AUX FALSE"; + + // Network 5: Reset (Original Language: LAD) + + IF "System_RunOut_Variables"."ProdPipe_Drain"."Reset" THEN + "mStepNum" := 0; + "mTimeStep" := 0; + END_IF; + + IF "System_RunOut_Variables"."ProdPipe_Drain"."Reset" THEN + "System_RunOut_Variables"."ProdPipe_Drain"."Done" := FALSE; + END_IF; + + // Network 6: Latch (Original Language: LAD) + + "System_RunOut_Variables"."ProdPipe_Drain"."Latch" := ("System_RunOut_Variables"."ProdPipe_Drain"."Reset" AND "System_RunOut_Variables"."ProdPipe_Drain"."Request" AND "System_RunOut_Variables"."ProdPipe_Drain"."Done") OR ("System_RunOut_Variables"."ProdPipe_Drain"."Reset" AND "System_RunOut_Variables"."ProdPipe_Drain"."Latch" AND "System_RunOut_Variables"."ProdPipe_Drain"."Done"); + + // Network 7: Running (Original Language: LAD) + + "System_RunOut_Variables"."ProdPipe_Drain"."Running" := "System_RunOut_Variables"."ProdPipe_Drain"."Wait" AND "System_RunOut_Variables"."ProdPipe_Drain"."Latch"; + + "HMI_Alarms"."gH_Status" := "System_RunOut_Variables"."ProdPipe_Drain"."Wait" AND "System_RunOut_Variables"."ProdPipe_Drain"."Latch"; + + IF "System_RunOut_Variables"."ProdPipe_Drain"."Wait" AND "System_RunOut_Variables"."ProdPipe_Drain"."Latch" THEN + ProductPipeDrain_Seq(mStep := "mStepNum", mTime := "mTimeStep", mTransition := "mTransition"); + END_IF; + + // Network 8: ToFillerStartPipeRunOut (Original Language: LAD) + + "HMI_Variables_Status"."System_Run_Out"."ProductPipeDrainDone" := "System_RunOut_Variables"."ProdPipe_Drain"."Done"; + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProductPipeDrain_Seq.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProductPipeDrain_Seq.md new file mode 100644 index 0000000..800a6d0 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProductPipeDrain_Seq.md @@ -0,0 +1,91 @@ +```pascal +// Block Type: FC +// Block Number: 1824 +// Original Network Languages: LAD, STL + +FUNCTION "ProductPipeDrain_Seq" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INOUT + mStep : Int; + mTime : Int; + mTransition : Bool; +END_VAR + +VAR_TEMP + __PlcmigTempFillBits_0B0 : Array[0..7] of Bool; +END_VAR + +BEGIN + + // Network 1: STEP CONTROL (Original Language: STL) + + // --- BEGIN STL Network 1 --- + + L "mStep" + JL LEND + JU ST00 + JU ST01 + LEND: JU FULL + FULL: L 0 + T "mStep" + JU END + + // --- END STL Network 1 --- + + // Network 2: STEP 00 (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" THEN + "gSP_AVM369" := TRUE; + END_IF; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" THEN + "gSP_AVM353" := TRUE; + END_IF; + + // Network 3: MIX - Procedure auxiliary variable (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" THEN + "gSP_AVM315" := TRUE; + END_IF; + + // Network 4: STEP 00 (Original Language: STL) + + // --- BEGIN STL Network 4 --- + + A "AUX TRUE" + = "__PlcmigTempFillBits_0B0"[0] + BLD 103 + A "AUX TRUE" + = "__PlcmigTempFillBits_0B0"[1] + BLD 103 + A "System_RunOut_Variables".ProdPipe_Drain.Wait + = "__PlcmigTempFillBits_0B0"[2] + BLD 103 + A CLK_0.5S + = "__PlcmigTempFillBits_0B0"[3] + BLD 103 + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 4 --- + + // Network 5: STEP 01 (Original Language: LAD) + + IF "AUX FALSE" THEN + "System_RunOut_Variables"."ProdPipe_Drain"."Done" := TRUE; + END_IF; + + // Network 6: (Original Language: STL) + + // --- BEGIN STL Network 6 --- + + END: NOP_0 + + // --- END STL Network 6 --- + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProductPipeRunOut.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProductPipeRunOut.md new file mode 100644 index 0000000..ab71657 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProductPipeRunOut.md @@ -0,0 +1,167 @@ +```pascal +// Block Type: FB +// Block Number: 1825 +// Original Network Languages: LAD + +FUNCTION_BLOCK "ProductPipeRunOut" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_STAT + mStepNum : Int; + mTimeStep : Int; + mTransition : Bool; + mAuxONS : Bool; + mProdPipeRunOutTPON : Bool; + mProdPipeRunOutTP0ON : Bool; + mFillingHaltedTONON : Bool; + mProdPipeRunOutTP : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mProdPipeRunOutTP0 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mFillingHaltedTON : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + +END_VAR + +VAR_TEMP + mProdPushDone : Bool; + mFillingPaused : Bool; + mProdPipeRunOutHalted : Bool; + mAuxCalc1 : Real; + mAuxCalc2 : Real; +END_VAR + + #_40S : Bool; // Auto-generated temporary + #TON_INSTANCE_30 : Bool; // Auto-generated temporary +BEGIN + + // Network 1: Qualifier (Original Language: LAD) + + "System_RunOut_Variables"."ProdPipe_RunOut"."Qualifier" := "gBlenderProdMode" AND "gBlenderSuppliesOk" AND "Procedure_Variables"."TM301_RunOut"."Done"; + + // Network 2: ProductTempRunOut (Original Language: LAD) + + // Network 2 did not produce printable SCL code. + + // Network 3: Reset (Original Language: LAD) + + // PBox SymPy processed, logic in consumer + "ProdPipeRunOutReset" := "HMI_Variables_Cmd"."System_Run_Out"."CMD"."_ProdPipeRunOutReq" OR ("Procedure_Variables"."TM301_RunOut"."Done" AND "System_RunOut_Variables"."FastChangeOverActivated"); // P_TRIG("HMI_Variables_Cmd"."System_Run_Out"."CMD"."_ProdPipeRunOutReq" OR ("Procedure_Variables"."TM301_RunOut"."Done" AND "System_RunOut_Variables"."FastChangeOverActivated")) - Mem: "ProdPipeRunOutReset" + + "System_RunOut_Variables"."ProdPipe_RunOut"."Reset" := "gBlenderCIPMode" OR ("HMI_Variables_Cmd"."System_Run_Out"."CMD"."_ProdPipeRunOutReq" AND NOT "ProdPipeRunOutReset") OR ("Procedure_Variables"."TM301_RunOut"."Done" AND "System_RunOut_Variables"."FastChangeOverActivated" AND NOT "ProdPipeRunOutReset"); + + // Network 4: Wait (Original Language: LAD) + + "System_RunOut_Variables"."ProdPipe_RunOut"."Wait" := "gBlenderStopLevel"; + + // Network 5: Reset (Original Language: LAD) + + IF "System_RunOut_Variables"."ProdPipe_RunOut"."Reset" THEN + "mStepNum" := 0; + "mTimeStep" := 0; + END_IF; + + IF "System_RunOut_Variables"."ProdPipe_RunOut"."Reset" THEN + "System_RunOut_Variables"."ProdPipe_RunOut"."Done" := FALSE; + END_IF; + + IF "System_RunOut_Variables"."ProdPipe_RunOut"."Reset" THEN + "gRinseClose_RMM301" := FALSE; + END_IF; + + IF "System_RunOut_Variables"."ProdPipe_RunOut"."Reset" THEN + "gRinseClose_RMP302" := FALSE; + END_IF; + + IF "System_RunOut_Variables"."ProdPipe_RunOut"."Reset" THEN + "System_RunOut_Variables"."FillerRanOut" := FALSE; + END_IF; + + // Network 6: Latch (Original Language: LAD) + + "System_RunOut_Variables"."ProdPipe_RunOut"."Latch" := ("System_RunOut_Variables"."ProdPipe_RunOut"."Reset" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Request" AND "FirstScan" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Done") OR ("System_RunOut_Variables"."ProdPipe_RunOut"."Reset" AND "FirstScan" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Done" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Latch"); + + // Network 7: Running (Original Language: LAD) + + "System_RunOut_Variables"."ProdPipe_RunOut"."Running" := "System_RunOut_Variables"."ProdPipe_RunOut"."Wait" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Latch"; + + // Network 8: Totalizer (Original Language: LAD) + + SEL_R(G := "System_RunOut_Variables"."RMM301_OV_ProdPipeRunOut" > 0.0, IN0 := 0.0, IN1 := "Profibus_Variables"."gFTN301_Tot"); + + SEL_R(G := "System_RunOut_Variables"."RMP302_OV_ProdPipeRunOut" > 0.0, IN0 := 0.0, IN1 := "Profibus_Variables"."gFTP302_Tot"); + + "System_RunOut_Variables"."Prod_Pipe_RunOut"."Totalizer" := "mAuxCalc1" + "mAuxCalc2"; + + // Network 9: Push Count Init (Original Language: LAD) + + IF "System_RunOut_Variables"."ProdPipeRunOutWaterCount" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Done" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Latch" THEN + "System_RunOut_Variables"."Prod_Pipe_RunOut"."Push_Count_Init" := "System_RunOut_Variables"."Prod_Pipe_RunOut"."Totalizer"; + END_IF; + + IF "System_RunOut_Variables"."ProdPipeRunOutFillerBott" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Done" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Latch" THEN + "System_RunOut_Variables"."Prod_Pipe_RunOut"."Push_Count_Init" := "System_RunOut_Variables"."FillerBottleCount" * "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_BottleSize"; + END_IF; + + // Network 10: Push Count (Original Language: LAD) + + "mProdPushDone" := "System_RunOut_Variables"."Prod_Pipe_RunOut"."Push_Count" > "System_RunOut_Variables"."ProdPipeRunOutProdAmount"; + + // Network 11: Push Count (Original Language: LAD) + + IF "System_RunOut_Variables"."ProdPipeRunOutWaterCount" THEN + "System_RunOut_Variables"."Prod_Pipe_RunOut"."Push_Count" := "System_RunOut_Variables"."Prod_Pipe_RunOut"."Totalizer" - "System_RunOut_Variables"."Prod_Pipe_RunOut"."Push_Count_Init"; + END_IF; + + // Network 12: Push Count (Original Language: LAD) + + IF "System_RunOut_Variables"."ProdPipeRunOutFillerBott" THEN + "mAuxCalc1" := "System_RunOut_Variables"."FillerBottleCount" * "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_BottleSize"; + END_IF; + + IF "System_RunOut_Variables"."ProdPipeRunOutFillerBott" THEN + "System_RunOut_Variables"."Prod_Pipe_RunOut"."Push_Count" := "mAuxCalc1" - "System_RunOut_Variables"."Prod_Pipe_RunOut"."Push_Count_Init"; + END_IF; + + // Network 13: Push Count (Original Language: LAD) + + "mFillingPaused" := "Blender_Variables"."gEstimateFillerSpeed" <= 0.0; + + // Network 14: Filler Halted (Original Language: LAD) + + #TON_INSTANCE_30(IN := "mFillingPaused" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Running", PT := T#40S); // TODO: Declarar #TON_INSTANCE_30 : TON; + + "mProdPipeRunOutHalted" := ("System_RunOut_Variables"."ProdPipeRunOutWaterCount" AND "System_RunOut_Variables"."ProdPipeRunOutFillerBott") OR ("mFillingHaltedTONON" AND #TON_INSTANCE_30.Q); + + // Network 15: Product Tank Run Out Running (Original Language: LAD) + + "HMI_Variables_Status"."System_Run_Out"."ProductPipeRunOutRun" := "System_RunOut_Variables"."ProdPipe_RunOut"."Latch"; + + "HMI_Alarms"."gH_Status" := "System_RunOut_Variables"."ProdPipe_RunOut"."Latch"; + + IF "System_RunOut_Variables"."ProdPipe_RunOut"."Latch" THEN + ProductPipeRunOut_Seq(mProdPipeRunOutHalted := "mProdPipeRunOutHalted", mProdPushDone := "mProdPushDone", mStep := "mStepNum", mTime := "mTimeStep", mTransition := "mTransition"); + END_IF; + + // Network 16: ToFillerStartPipeRunOut (Original Language: LAD) + + "HMI_Variables_Status"."System_Run_Out"."ProductPipeRunOutDone" := "System_RunOut_Variables"."ProdPipe_RunOut"."Done"; + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProductPipeRunOut_Seq.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProductPipeRunOut_Seq.md new file mode 100644 index 0000000..4732fbb --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProductPipeRunOut_Seq.md @@ -0,0 +1,206 @@ +```pascal +// Block Type: FC +// Block Number: 1825 +// Original Network Languages: LAD, STL + +FUNCTION "ProductPipeRunOut_Seq" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + mProdPipeRunOutHalted : Bool; + mProdPushDone : Bool; +END_VAR + +VAR_INOUT + mStep : Int; + mTime : Int; + mTransition : Bool; +END_VAR + +VAR_TEMP + mProdTankMinLevel : Bool; + PresetTimer : Int; + __PlcmigTempFillBits_4B0 : Array[0..7] of Bool; +END_VAR + +BEGIN + + // Network 1: STEP CONTROL (Original Language: STL) + + // --- BEGIN STL Network 1 --- + + L "mStep" + JL LEND + JU ST00 + JU ST01 + JU ST02 + JU ST03 + LEND: JU FULL + FULL: L 0 + T "mStep" + JU END + + // --- END STL Network 1 --- + + // Network 2: STEP 00 (Original Language: LAD) + + IF "System_RunOut_Variables"."ProdPipe_RunOut"."Wait" AND "HMI_Digital"."LSN301L"."Filtered" AND ("System_RunOut_Variables"."RMM301_OV_ProdPipeRunOut" > 0.0) THEN + "gSP_PPN301" := TRUE; + END_IF; + + // Network 3: STEP 00 (Original Language: LAD) + + IF "System_RunOut_Variables"."ProdPipe_RunOut"."Wait" AND "gIN_SyrTank_MinLvl" AND ("System_RunOut_Variables"."RMP302_OV_ProdPipeRunOut" > 0.0) THEN + "gSP_PPP302" := TRUE; + END_IF; + + IF "System_RunOut_Variables"."ProdPipe_RunOut"."Wait" AND "gIN_SyrTank_MinLvl" AND ("System_RunOut_Variables"."RMP302_OV_ProdPipeRunOut" > 0.0) THEN + "gSP_AVP390" := TRUE; + END_IF; + + // Network 4: STEP 00 (Original Language: LAD) + + IF "System_RunOut_Variables"."ProdPipeRunOutWaterCount" AND "System_RunOut_Variables"."ProdPipeRunOutFillerBott" THEN + "gSP_RVN301" := TRUE; + END_IF; + + IF "System_RunOut_Variables"."ProdPipeRunOutWaterCount" AND "System_RunOut_Variables"."ProdPipeRunOutFillerBott" THEN + "gSP_RVP303" := TRUE; + END_IF; + + // Network 5: STEP 00 (Original Language: LAD) + + IF "System_RunOut_Variables"."ProdPipeRunOutWaterCount" AND "System_RunOut_Variables"."ProdPipeRunOutFillerBott" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" THEN + "gSP_RVN301_1" := TRUE; + END_IF; + + IF "System_RunOut_Variables"."ProdPipeRunOutWaterCount" AND "System_RunOut_Variables"."ProdPipeRunOutFillerBott" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" THEN + "gSP_PPN305" := TRUE; + END_IF; + + // Network 6: (Original Language: LAD) + + "mStep" := 1; + + IF "System_RunOut_Variables"."FillerRanOut" THEN + "mStep" := 2; + END_IF; + + // Network 7: (Original Language: LAD) + + "PresetTimer" := "System_RunOut_Variables"."Prod_Pipe_RunOut"."Time_Preset"."Step0" * 2; + + // Network 8: STEP 00 (Original Language: STL) + + // --- BEGIN STL Network 8 --- + + A_BRACK + A_BRACK + O "System_RunOut_Variables".ProdPipeRunOutWaterCount + O "System_RunOut_Variables".ProdPipeRunOutFillerBott + BRACKET + A "mProdPushDone" + O "mProdPipeRunOutHalted" + O "System_RunOut_Variables".FillerRanOut + BRACKET + = "__PlcmigTempFillBits_4B0"[0] + BLD 103 + A "AUX TRUE" + = "__PlcmigTempFillBits_4B0"[1] + BLD 103 + A "System_RunOut_Variables".ProdPipe_RunOut.Wait + = "__PlcmigTempFillBits_4B0"[2] + BLD 103 + A CLK_0.5S + = "__PlcmigTempFillBits_4B0"[3] + BLD 103 + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 8 --- + + // Network 9: STEP 01 (Original Language: LAD) + + IF "AUX FALSE" THEN + "gRinseClose_RMM301" := TRUE; + END_IF; + + IF "AUX FALSE" THEN + "gRinseClose_RMP302" := TRUE; + END_IF; + + // Network 10: STEP 01 (Original Language: STL) + + // --- BEGIN STL Network 10 --- + + A "AUX TRUE" + = "__PlcmigTempFillBits_4B0"[0] + BLD 103 + A "AUX TRUE" + = "__PlcmigTempFillBits_4B0"[1] + BLD 103 + A "System_RunOut_Variables".ProdPipe_RunOut.Wait + = "__PlcmigTempFillBits_4B0"[2] + BLD 103 + A CLK_0.5S + = "__PlcmigTempFillBits_4B0"[3] + BLD 103 + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 10 --- + + // Network 11: STEP 02 (Original Language: STL) + + // --- BEGIN STL Network 11 --- + + ST02: A_BRACK + ON "HMI_Digital".LSM302L.Filtered + O "mProdPipeRunOutHalted" + O "System_RunOut_Variables".FillerRanOut + BRACKET + = "__PlcmigTempFillBits_4B0"[0] + BLD 103 + A "AUX TRUE" + = "__PlcmigTempFillBits_4B0"[1] + BLD 103 + A "System_RunOut_Variables".ProdPipe_RunOut.Wait + = "__PlcmigTempFillBits_4B0"[2] + BLD 103 + A CLK_0.5S + = "__PlcmigTempFillBits_4B0"[3] + BLD 103 + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 11 --- + + // Network 12: (Original Language: LAD) + + IF "AUX FALSE" THEN + "System_RunOut_Variables"."ProdPipe_RunOut"."Done" := TRUE; + END_IF; + + IF "AUX FALSE" THEN + "gRinseClose_RMM301" := FALSE; + END_IF; + + IF "AUX FALSE" THEN + "gRinseClose_RMP302" := FALSE; + END_IF; + + // Network 13: (Original Language: STL) + + // --- BEGIN STL Network 13 --- + + END: NOP_0 + + // --- END STL Network 13 --- + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProductQuality.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProductQuality.md new file mode 100644 index 0000000..1292c7e --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProductQuality.md @@ -0,0 +1,55 @@ +```pascal +// Block Type: FC +// Block Number: 2008 +// Original Network Languages: LAD + +FUNCTION "ProductQuality" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + Product_Brix_High : Real; + Product_Brix_Low : Real; + Product_CO2_High : Real; + Product_CO2_Low : Real; +END_VAR + + #_2M : Bool; // Auto-generated temporary + #_8S : Bool; // Auto-generated temporary +BEGIN + + // Network 1: Messages (Original Language: LAD) + + ProductQuality_Messages(); + + // Network 2: Fault Alarm (Original Language: LAD) + + "Product_Brix_High" := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_ProdMeterHighBrix" - 0.05; + + // Network 3: Fault Alarm (Original Language: LAD) + + "Product_Brix_Low" := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_ProdMeterLowBrix" + 0.05; + + // Network 4: TmrCO2High (Original Language: LAD) + + "mTmrCO2High"(IN := "HMI_Alarms"."gH_Message" AND "Procedure_Variables"."First_Production"."Done" AND "gWorkshopTest" AND "gNoFreezeProductMeter", PT := S5T#8S); // TODO: Declarar "mTmrCO2High" : TON; + + "Product_CO2_High" := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_ProdMeterHighCO2" - 0.08; + + // Network 5: Fault Alarm (Original Language: LAD) + + "Product_CO2_Low" := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_ProdMeterLowCO2" + 0.08; + + // Network 6: WaterTempHighDlyAlm (Original Language: LAD) + // Water Temperature Too High May be the suction ammonia compresso doesn't work + // properly. + + "mTTM306_H2O_HighDlyAlm"(IN := "HMI_Alarms"."gH_Message", PT := S5T#2M); // TODO: Declarar "mTTM306_H2O_HighDlyAlm" : TON; + + // Network 7: MIX - ProductQuality (Original Language: LAD) + + "mTTM306_PRD_HighDlyAlm"(IN := "HMI_Alarms"."gH_Message", PT := S5T#2M); // TODO: Declarar "mTTM306_PRD_HighDlyAlm" : TON; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProductQuality_Messages.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProductQuality_Messages.md new file mode 100644 index 0000000..8f16781 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ProductQuality_Messages.md @@ -0,0 +1,135 @@ +```pascal +FUNCTION "ProductQuality_Messages" : Void +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : TASK2 +NAME : 'Name' +VERSION : 1.0 + VAR_TEMP + mDisableBrixHighAlarm : Bool; + mDisableLowBrixAlarm : Bool; + mDisableHighCO2Alarm : Bool; + mDisableLowCO2Alarm : Bool; + mDisableHighCondAlarm : Bool; + mDisableLowCondAlarm : Bool; + END_VAR + + +BEGIN + + + (* classic code: IF "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProdMeterHighBrix <> 0.0 THEN*) + IF "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProdMeterHighBrix <> REAL#0.0 THEN + #mDisableBrixHighAlarm := FALSE ; + ELSE + #mDisableBrixHighAlarm := TRUE ; + END_IF; + + (* classic code: IF "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProdMeterLowBrix <> 0.0 THEN*) + IF "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProdMeterLowBrix <> REAL#0.0 THEN + #mDisableLowBrixAlarm := FALSE ; + ELSE + #mDisableLowBrixAlarm := TRUE ; + END_IF; + + (* classic code: IF "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProdMeterHighCO2 <> 0.0 THEN*) + IF "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProdMeterHighCO2 <> REAL#0.0 THEN + #mDisableHighCO2Alarm := FALSE ; + ELSE + #mDisableHighCO2Alarm := TRUE ; + END_IF; + + (* classic code: IF "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProdMeterLowCO2 <> 0.0 THEN*) + IF "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProdMeterLowCO2 <> REAL#0.0 THEN + #mDisableLowCO2Alarm := FALSE ; + ELSE + #mDisableLowCO2Alarm := TRUE ; + END_IF; + + (* classic code: IF "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProdHighCond <> 0.0 AND "HMI_Blender_Parameters".Processor_Options.Blender_OPT._ProductConductimeter THEN*) + IF "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProdHighCond <> REAL#0.0 AND "HMI_Blender_Parameters".Processor_Options.Blender_OPT._ProductConductimeter THEN + #mDisableHighCondAlarm := FALSE ; + ELSE + #mDisableHighCondAlarm := TRUE ; + END_IF; + + (* classic code: IF "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProdLowCond <> 0.0 AND "HMI_Blender_Parameters".Processor_Options.Blender_OPT._ProductConductimeter THEN*) + IF "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProdLowCond <> REAL#0.0 AND "HMI_Blender_Parameters".Processor_Options.Blender_OPT._ProductConductimeter THEN + #mDisableLowCondAlarm := FALSE ; + ELSE + #mDisableLowCondAlarm := TRUE ; + END_IF; + + IF "Blender_Variables".gProductBrix > "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProdMeterHighBrix AND "gProductMeterOK" AND NOT #mDisableBrixHighAlarm AND "Procedure_Variables".First_Production.Done AND + "Blender_Variables_Pers".gSugarBeverage AND NOT "Blender_Variables_Pers".gWaterRecipe AND NOT "gBlenderRinseMode" THEN + "HMI_Alarms".gH_Message[019] := TRUE ; // High Product Brix + ELSE + "HMI_Alarms".gH_Message[019] := FALSE ; // High Product Brix + END_IF; + + IF "Blender_Variables".gProductBrix < "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProdMeterLowBrix AND "gProductMeterOK" AND NOT #mDisableLowBrixAlarm AND "Procedure_Variables".First_Production.Done AND + "Blender_Variables_Pers".gSugarBeverage AND NOT "Blender_Variables_Pers".gWaterRecipe AND NOT "gBlenderRinseMode" THEN + "HMI_Alarms".gH_Message[018] := TRUE ; // Low Product Brix + ELSE + "HMI_Alarms".gH_Message[018] := FALSE ; // Low Product Brix + END_IF; + + IF "Blender_Variables".gProductCO2 < "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProdMeterLowCO2 AND "gProductMeterOK" AND NOT #mDisableLowCO2Alarm AND "Procedure_Variables".First_Production.Done AND + ("Blender_Variables_Pers".gCarboStillProduct OR "HMI_Blender_Parameters".Processor_Options.Blender_OPT._DoubleDeair) AND NOT "gBlenderRinseMode" THEN + "HMI_Alarms".gH_Message[020] := TRUE ; // Low Product CO2 + ELSE + "HMI_Alarms".gH_Message[020] := FALSE ; // Low Product CO2 + END_IF; + + IF "Blender_Variables".gProductCO2 > "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProdMeterHighCO2 AND "gProductMeterOK" AND NOT #mDisableHighCO2Alarm AND "Procedure_Variables".First_Production.Done AND + ("Blender_Variables_Pers".gCarboStillProduct OR "HMI_Blender_Parameters".Processor_Options.Blender_OPT._DoubleDeair) AND NOT "gBlenderRinseMode" THEN + "HMI_Alarms".gH_Message[021] := TRUE ; // High Product CO2 + ELSE + "HMI_Alarms".gH_Message[021] := FALSE ; // High Product CO2 + END_IF; + + IF "HMI_Instrument".CTM304.PVFiltered < "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProdLowCond AND "Procedure_Variables".First_Production.Done AND NOT "gBlenderRinseMode" AND NOT #mDisableLowCondAlarm THEN + "HMI_Alarms".gH_Message[060] := TRUE ; // Low Product Conductivity + ELSE + "HMI_Alarms".gH_Message[060] := FALSE ; // Low Product Conductivity + END_IF; + + IF "HMI_Instrument".CTM304.PVFiltered > "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProdHighCond AND "Procedure_Variables".First_Production.Done AND NOT "gBlenderRinseMode" AND NOT #mDisableHighCondAlarm THEN + "HMI_Alarms".gH_Message[059] := TRUE ; // High Product Conductivity + ELSE + "HMI_Alarms".gH_Message[059] := FALSE ; // High Product Conductivity + END_IF; + + (* classic code: IF "HMI_PID".RVM319_PRD.Pv < 1.0 AND "HMI_PID".RVM319_PRD.ManualControl.PidEnable AND "Procedure_Variables".First_Production.Done THEN*) + IF "HMI_PID".RVM319_PRD.Pv < REAL#1.0 AND "HMI_PID".RVM319_PRD.ManualControl.PidEnable AND "Procedure_Variables".First_Production.Done THEN + "HMI_Alarms".gH_Message[051] := TRUE ; // Product near TO freezing temperature + ELSE + "HMI_Alarms".gH_Message[051] := FALSE ; + END_IF; + + (* classic code: IF "HMI_PID".RVM319_PRD.Pv > ("HMI_PID".RVM319_PRD.Sp + 4.0) AND "HMI_PID".RVM319_PRD.ManualControl.PidEnable AND "Procedure_Variables".First_Production.Done THEN*) + IF "HMI_PID".RVM319_PRD.Pv > ("HMI_PID".RVM319_PRD.Sp + REAL#4.0) AND "HMI_PID".RVM319_PRD.ManualControl.PidEnable AND "Procedure_Variables".First_Production.Done THEN + "HMI_Alarms".gH_Message[052] := TRUE ; // Product temperature too high + ELSE + "HMI_Alarms".gH_Message[052] := FALSE ; + END_IF; + + (* classic code: IF "HMI_PID".RVM319_H2O.Pv < 1.0 AND "HMI_PID".RVM319_H2O.ManualControl.PidEnable AND "Procedure_Variables".First_Production.Done THEN*) + IF "HMI_PID".RVM319_H2O.Pv < REAL#1.0 AND "HMI_PID".RVM319_H2O.ManualControl.PidEnable AND "Procedure_Variables".First_Production.Done THEN + "HMI_Alarms".gH_Message[053] := TRUE ; // Water near TO freezing temperature + ELSE + "HMI_Alarms".gH_Message[053] := FALSE ; + END_IF; + + (* classic code: IF "HMI_PID".RVM319_H2O.Pv > ("HMI_PID".RVM319_H2O.Sp + 4.0) AND "HMI_PID".RVM319_H2O.ManualControl.PidEnable AND "Procedure_Variables".First_Production.Done THEN*) + IF "HMI_PID".RVM319_H2O.Pv > ("HMI_PID".RVM319_H2O.Sp + REAL#4.0) AND "HMI_PID".RVM319_H2O.ManualControl.PidEnable AND "Procedure_Variables".First_Production.Done THEN + "HMI_Alarms".gH_Message[054] := TRUE ; // Water temperature too high + ELSE + "HMI_Alarms".gH_Message[054] := FALSE ; + END_IF; + + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Profibus_Network.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Profibus_Network.md new file mode 100644 index 0000000..e1a9124 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Profibus_Network.md @@ -0,0 +1,422 @@ +```pascal +// Block Type: FC +// Block Name (Original): Profibus Network +// Block Number: 11 +// Original Network Languages: LAD, STL + +FUNCTION "Profibus_Network" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + #_0 : Bool; // Auto-generated temporary +END_VAR + +BEGIN + + // Network 1: Global Diagnosis (cycle) (Original Language: STL) + + // --- BEGIN STL Network 1 --- + + A "M19510" + O "M19511" + O "M19512" + O "GLOBAL_DIAG_DB".BUSY + S "M19513" + AN "GLOBAL_DIAG_DB".BUSY + R "M19510" + R "M19511" + R "M19512" + + AN "GLOBAL_DIAG_DB".BUSY + R "M19513" + + A "gIN_VoltageOk" + L S5T#1S + OnDelay "T141" + + A "gIN_ResetBtn" + JC RESE + JU CONT + RESE: R "SFM Profibus" + L DINT#0 + T "GLOBAL_DIAG_DB".LIST_SLAVES_FAULT_SAVE[1] + T "GLOBAL_DIAG_DB".LIST_SLAVES_FAULT_SAVE[2] + T "GLOBAL_DIAG_DB".LIST_SLAVES_FAULT_SAVE[3] + T "GLOBAL_DIAG_DB".LIST_SLAVES_FAULT_SAVE[4] + CONT: NOP_0 + + AN "T141" + L "GLOBAL_DIAG_DB".LIST_SLAVES_NOT_PRESENT[1] + JC SLA1 + L "GLOBAL_DIAG_DB".LIST_SLAVES_NOT_PRESENT[1] + L "GLOBAL_DIAG_DB".LIST_SLAVES_ERROR[1] + OD + SLA1: L "GLOBAL_DIAG_DB".LIST_SLAVES_FAULT_SAVE[1] + OD + T "GLOBAL_DIAG_DB".LIST_SLAVES_FAULT_SAVE[1] + + L "GLOBAL_DIAG_DB".LIST_SLAVES_FAULT_SAVE[1] + L DINT#0 + NE_D + S "SFM Profibus" + + AN "T141" + L "GLOBAL_DIAG_DB".LIST_SLAVES_NOT_PRESENT[2] + JC SLA2 + L "GLOBAL_DIAG_DB".LIST_SLAVES_NOT_PRESENT[2] + L "GLOBAL_DIAG_DB".LIST_SLAVES_ERROR[2] + OD + SLA2: L "GLOBAL_DIAG_DB".LIST_SLAVES_FAULT_SAVE[2] + OD + T "GLOBAL_DIAG_DB".LIST_SLAVES_FAULT_SAVE[2] + + L "GLOBAL_DIAG_DB".LIST_SLAVES_FAULT_SAVE[2] + L DINT#0 + NE_D + S "SFM Profibus" + + AN "T141" + L "GLOBAL_DIAG_DB".LIST_SLAVES_NOT_PRESENT[3] + JC SLA3 + L "GLOBAL_DIAG_DB".LIST_SLAVES_NOT_PRESENT[3] + L "GLOBAL_DIAG_DB".LIST_SLAVES_ERROR[3] + OD + SLA3: L "GLOBAL_DIAG_DB".LIST_SLAVES_FAULT_SAVE[3] + OD + T "GLOBAL_DIAG_DB".LIST_SLAVES_FAULT_SAVE[3] + + L "GLOBAL_DIAG_DB".LIST_SLAVES_FAULT_SAVE[3] + L DINT#0 + NE_D + S "SFM Profibus" + + AN "T141" + L "GLOBAL_DIAG_DB".LIST_SLAVES_NOT_PRESENT[4] + JC SLA4 + L "GLOBAL_DIAG_DB".LIST_SLAVES_NOT_PRESENT[4] + L "GLOBAL_DIAG_DB".LIST_SLAVES_ERROR[4] + OD + SLA4: L "GLOBAL_DIAG_DB".LIST_SLAVES_FAULT_SAVE[4] + OD + T "GLOBAL_DIAG_DB".LIST_SLAVES_FAULT_SAVE[4] + + L "GLOBAL_DIAG_DB".LIST_SLAVES_FAULT_SAVE[4] + L DINT#0 + NE_D + S "SFM Profibus" + + // --- END STL Network 1 --- + + // Network 2: Slaves (Original Language: STL) + + // --- BEGIN STL Network 2 --- + + L "GLOBAL_DIAG_DB".LIST_SLAVES_FAULT_SAVE[1] + T "MD1870" + + L "GLOBAL_DIAG_DB".LIST_SLAVES_FAULT_SAVE[2] + T "MD1874" + + L "GLOBAL_DIAG_DB".LIST_SLAVES_FAULT_SAVE[3] + T "MD1878" + + L "GLOBAL_DIAG_DB".LIST_SLAVES_FAULT_SAVE[4] + T "MD1882" + + // --- END STL Network 2 --- + + // Network 3: Simulation (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" THEN + "MD1870" := DINT#0; + "MD1874" := DINT#0; + "MD1878" := DINT#0; + "MD1882" := DINT#0; + END_IF; + + // Network 4: Profibus: Node 1 Fault (Original Language: LAD) + + "HMI_Variables_Status"."Profibus"."Error"."FC3102_DP" := "M18700"; + + IF "M18700" AND "AUX FALSE" THEN + "HMI_Variables_Status"."Profibus"."State"."FC3102_DP" := 19; + END_IF; + + IF "AUX FALSE" AND NOT "M18700" THEN + "HMI_Variables_Status"."Profibus"."State"."FC3102_DP" := 0; + END_IF; + + // Network 5: Profibus: Node 3 Fault (Original Language: LAD) + + "HMI_Variables_Status"."Profibus"."Error"."ET200" := "M18702"; + + IF "AUX FALSE" AND "M18702" THEN + "HMI_Variables_Status"."Profibus"."State"."ET200" := 19; + END_IF; + + IF "AUX FALSE" AND NOT "M18702" THEN + "HMI_Variables_Status"."Profibus"."State"."ET200" := 0; + END_IF; + + // Network 6: Profibus: Node 20 Fault (Original Language: LAD) + + "HMI_Variables_Status"."Profibus"."Error"."ValvesBase_Festo" := "M18723"; + + IF "AUX FALSE" AND "M18723" THEN + "HMI_Variables_Status"."Profibus"."State"."ValvesBase_Festo" := 19; + END_IF; + + IF "AUX FALSE" AND NOT "M18723" THEN + "HMI_Variables_Status"."Profibus"."State"."ValvesBase_Festo" := 0; + END_IF; + + // Network 7: Profibus: Node 22 Fault (Original Language: LAD) + + "HMI_Variables_Status"."Profibus"."Error"."ValvesBase_Joucomatic" := "M18725"; + + IF "AUX FALSE" AND "M18725" THEN + "HMI_Variables_Status"."Profibus"."State"."ValvesBase_Joucomatic" := 19; + END_IF; + + IF "AUX FALSE" AND NOT "M18725" THEN + "HMI_Variables_Status"."Profibus"."State"."ValvesBase_Joucomatic" := 0; + END_IF; + + // Network 8: Profibus: Node 28 Fault (Original Language: LAD) + + "HMI_Variables_Status"."Profibus"."Error"."mPDSPA_Carbo" := "M18733"; + + IF "AUX FALSE" AND "M18733" THEN + "HMI_Variables_Status"."Profibus"."State"."mPDSPA_Carbo" := 19; + END_IF; + + IF "AUX FALSE" AND NOT "M18733" THEN + "HMI_Variables_Status"."Profibus"."State"."mPDSPA_Carbo" := 0; + END_IF; + + // Network 9: Profibus: Node 30 Fault (Original Language: LAD) + + "HMI_Variables_Status"."Profibus"."Error"."FTN301_Promag" := "M18735"; + + IF "AUX FALSE" AND "M18735" THEN + "HMI_Variables_Status"."Profibus"."State"."FTN301" := 19; + END_IF; + + IF "AUX FALSE" AND NOT "M18735" THEN + "HMI_Variables_Status"."Profibus"."State"."FTN301" := 0; + END_IF; + + // Network 10: Profibus: Node 31 Fault (Original Language: LAD) + + "HMI_Variables_Status"."Profibus"."Error"."FTP302" := "M18736"; + + IF "AUX FALSE" AND "M18736" THEN + "HMI_Variables_Status"."Profibus"."State"."FTP302" := 19; + END_IF; + + IF "AUX FALSE" AND NOT "M18736" THEN + "HMI_Variables_Status"."Profibus"."State"."FTP302" := 0; + END_IF; + + // Network 11: Profibus: Node 32 Fault (Original Language: LAD) + + "HMI_Variables_Status"."Profibus"."Error"."FTM303" := "M18737"; + + IF "AUX FALSE" AND "M18737" THEN + "HMI_Variables_Status"."Profibus"."State"."FTM303" := 19; + END_IF; + + IF "AUX FALSE" AND NOT "M18737" THEN + "HMI_Variables_Status"."Profibus"."State"."FTM303" := 0; + END_IF; + + // Network 12: Profibus: Node 33 Fault (Original Language: LAD) + + "HMI_Variables_Status"."Profibus"."Error"."FTM304" := "M18740"; + + "HMI_Alarms"."gH_Message" := "M18740"; + + IF "M18740" AND "AUX FALSE" THEN + "HMI_Variables_Status"."Profibus"."State"."FTM304" := 19; + END_IF; + + IF "AUX FALSE" AND NOT "M18740" THEN + "HMI_Variables_Status"."Profibus"."State"."FTM304" := 0; + END_IF; + + // Network 13: Profibus: Node 35 Fault (Original Language: LAD) + + "HMI_Variables_Status"."Profibus"."Error"."CTS301_LowCond" := "M18742"; + + IF "M18742" AND "AUX FALSE" THEN + "HMI_Variables_Status"."Profibus"."State"."CTS301_LowCond" := 19; + END_IF; + + IF "AUX FALSE" AND NOT "M18742" THEN + "HMI_Variables_Status"."Profibus"."State"."CTS301_LowCond" := 0; + END_IF; + + // Network 14: Profibus: Node 36 Fault (Original Language: LAD) + + "HMI_Variables_Status"."Profibus"."Error"."CTS302_HighCond" := "M18743"; + + IF "M18743" AND "AUX FALSE" THEN + "HMI_Variables_Status"."Profibus"."State"."CTS302_HighCond" := 19; + END_IF; + + IF "AUX FALSE" AND NOT "M18743" THEN + "HMI_Variables_Status"."Profibus"."State"."CTS302_HighCond" := 0; + END_IF; + + // Network 15: Profibus: Node 37 Fault (Original Language: LAD) + + "HMI_Variables_Status"."Profibus"."Error"."CTM304_ProdCond" := "M18744"; + + "HMI_Alarms"."gH_Message" := "M18744"; + + IF "M18744" AND "AUX FALSE" THEN + "HMI_Variables_Status"."Profibus"."State"."CTM304_ProdCond" := 19; + END_IF; + + IF "AUX FALSE" AND NOT "M18744" THEN + "HMI_Variables_Status"."Profibus"."State"."CTM304_ProdCond" := 0; + END_IF; + + // Network 16: Profibus: Node 40 Fault (Original Language: LAD) + + "HMI_Variables_Status"."Profibus"."Error"."mPDSPA_Cobrix_Prod" := "M18747"; + + IF "M18747" AND "AUX FALSE" THEN + "HMI_Variables_Status"."Profibus"."State"."mPDSPA_Cobrix_Prod" := 19; + END_IF; + + IF "AUX FALSE" AND NOT "M18747" THEN + "HMI_Variables_Status"."Profibus"."State"."mPDSPA_Cobrix_Prod" := 0; + END_IF; + + // Network 17: Profibus: Node 41 Fault (Original Language: LAD) + + "HMI_Variables_Status"."Profibus"."Error"."MaselliPA" := "M18750"; + + IF "M18750" AND "AUX FALSE" THEN + "HMI_Variables_Status"."Profibus"."State"."MaselliPA" := 19; + END_IF; + + IF "AUX FALSE" AND NOT "M18750" THEN + "HMI_Variables_Status"."Profibus"."State"."MaselliPA" := 0; + END_IF; + + // Network 18: Profibus: Node 42 Fault (Original Language: LAD) + + "HMI_Variables_Status"."Profibus"."Error"."mPDSPA_Cobrix_Syrup" := "M18751"; + + IF "M18751" AND "AUX FALSE" THEN + "HMI_Variables_Status"."Profibus"."State"."mPDSPA_Cobrix_Syrup" := 19; + END_IF; + + IF "AUX FALSE" AND NOT "M18751" THEN + "HMI_Variables_Status"."Profibus"."State"."mPDSPA_Cobrix_Syrup" := 0; + END_IF; + + // Network 19: Profibus: Node 50 Fault (Original Language: LAD) + + "HMI_Variables_Status"."Profibus"."Error"."PPN301_VFC" := "M18761"; + + IF "M18761" AND "AUX FALSE" THEN + "HMI_Variables_Status"."Profibus"."State"."PPN301_VFC" := 19; + END_IF; + + IF "AUX FALSE" AND NOT "M18761" THEN + "HMI_Variables_Status"."Profibus"."State"."PPN301_VFC" := 0; + END_IF; + + // Network 20: Profibus: Node 51 Fault (Original Language: LAD) + + "HMI_Variables_Status"."Profibus"."Error"."PPP302_VFC" := "M18762"; + + IF "M18762" AND "AUX FALSE" THEN + "HMI_Variables_Status"."Profibus"."State"."PPP302_VFC" := 19; + END_IF; + + IF "AUX FALSE" AND NOT "M18762" THEN + "HMI_Variables_Status"."Profibus"."State"."PPP302_VFC" := 0; + END_IF; + + // Network 21: Profibus: Node 52 Fault (Original Language: LAD) + + "HMI_Variables_Status"."Profibus"."Error"."PPM303_VFC" := "M18763"; + + IF "M18763" AND "AUX FALSE" THEN + "HMI_Variables_Status"."Profibus"."State"."PPM303_VFC" := 19; + END_IF; + + IF "AUX FALSE" AND NOT "M18763" THEN + "HMI_Variables_Status"."Profibus"."State"."PPM303_VFC" := 0; + END_IF; + + // Network 22: Profibus: Node 110 Fault (Original Language: LAD) + + "HMI_Variables_Status"."Profibus"."Error"."ET200M" := "M18835"; + + IF "M18835" AND "AUX FALSE" THEN + "HMI_Variables_Status"."Profibus"."State"."ET200M" := 19; + END_IF; + + IF "AUX FALSE" AND NOT "M18835" THEN + "HMI_Variables_Status"."Profibus"."State"."ET200M" := 0; + END_IF; + + // Network 23: Profibus: Node 118 Fault (Original Language: LAD) + + "HMI_Variables_Status"."Profibus"."Error"."ProdPH" := "M18845"; + + "HMI_Alarms"."gH_Message" := "M18845"; + + IF "M18845" AND "AUX FALSE" THEN + "HMI_Variables_Status"."Profibus"."State"."ProdPH" := 19; + END_IF; + + IF "AUX FALSE" AND NOT "M18845" THEN + "HMI_Variables_Status"."Profibus"."State"."ProdPH" := 0; + END_IF; + + // Network 24: Profibus: Node 120 Fault (Original Language: LAD) + + "HMI_Variables_Status"."Profibus"."Error"."FTN301_Promass" := "M18847"; + + IF "M18847" AND "AUX FALSE" THEN + "HMI_Variables_Status"."Profibus"."State"."FTN301_Promass" := 19; + END_IF; + + IF "AUX FALSE" AND NOT "M18847" THEN + "HMI_Variables_Status"."Profibus"."State"."FTN301_Promass" := 0; + END_IF; + + // Network 25: Profibus: Node 121 Fault (Original Language: LAD) + + "HMI_Variables_Status"."Profibus"."Error"."FTP302_2400S" := "M18850"; + + IF "M18850" AND "AUX FALSE" THEN + "HMI_Variables_Status"."Profibus"."State"."FTP302_2400S" := 19; + END_IF; + + IF "AUX FALSE" AND NOT "M18850" THEN + "HMI_Variables_Status"."Profibus"."State"."FTP302_2400S" := 0; + END_IF; + + // Network 26: Profibus: Node 122 Fault (Original Language: LAD) + + "HMI_Variables_Status"."Profibus"."Error"."FTM303_2400S" := "M18851"; + + IF "M18851" AND "AUX FALSE" THEN + "HMI_Variables_Status"."Profibus"."State"."FTM303_2400S" := 19; + END_IF; + + IF "AUX FALSE" AND NOT "M18851" THEN + "HMI_Variables_Status"."Profibus"."State"."FTM303_2400S" := 0; + END_IF; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Profibus_Variables.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Profibus_Variables.md new file mode 100644 index 0000000..c284154 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Profibus_Variables.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Number: 973 + +DATA_BLOCK "Profibus_Variables" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + gFTN301_Flow : Real := 0.0; + gFTN301_Flow_State : Byte; + gFTN301_Tot : Real := 2322.236; + gFTN301_Tot_State : Byte; + gFTP302_Temp : Real := 18.69626; + gFTP302_Temp_State : Byte; + gFTP302_Brix : Real := -1156.814; + gFTP302_Brix_State : Byte; + gFTP302_Flow : Real := 0.0; + gFTP302_Flow_State : Byte; + gFTP302_Density : Real := 0.001203235; + gFTP302_Density_State : Byte; + gFTP302_Tot : Real := 712.3425; + gFTP302_Tot_State : Byte; + gFTM303_Flow : Real := 0.0; + gFTM303_Flow_State : Byte; + gFTM303_Temp : Real := 19.1315; + gFTM303_Temp_State : Byte; + gFTM303_Density : Real := 0.0; + gFTM303_Density_State : Byte; + gFTM303_Tot : Real := 0.0; + gFTM303_Tot_State : Byte; + gVFM_ProductFlow : Real := 0.0; + gVFM_ProductFlow_State : Byte; + gVFM_ProductTotalizer : Real := 0.0; + gVFM_ProductTot_State : Byte; + gProdCond_Conductivity : Real := 0.0; + gProdCond_Cond_State : Byte; + gProdCond_Temperature : Real := 0.0; + gProdCond_Temp_State : Byte; + gProdPH_PHValue : Real := 0.0; + gProdPH_PHValue_State : Byte; + gProdPH_Temperature : Real := 0.0; + gProdPH_Temp_State : Byte; + gCTS301_Cond : Real := 0.0; + gCTS301_Cond_State : Byte; + gCTS301_Temp : Real := 0.0; + gCTS301_Temp_State : Byte; + gCTS302_Cond : Real := 0.0; + gCTS302_Cond_State : Byte; + gCTS302_Temp : Real := 0.0; + gCTS302_Temp_State : Byte; + gSPARE_Value0 : Real := 0.0; + gSPARE_State0 : Byte; + gSPARE_Value1 : Real := 0.0; + gSPARE_State1 : Byte; + gSPARE_Value2 : Real := 0.0; + gSPARE_State2 : Byte; + gSPARE_Value3 : Real := 0.0; + gSPARE_State3 : Byte; + gSPARE_Value4 : Real := 0.0; + gSPARE_State4 : Byte; + gSPARE_Value5 : Real := 0.0; + gSPARE_State5 : Byte; + gPPM303_VFC_ActualSped : Int := 0; + gPPM303_VFC_Running : Bool := FALSE; + gPPM303_VFC_Warning : Bool := FALSE; + gPPM303_VFC_Fault : Bool := FALSE; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Programming_error.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Programming_error.md new file mode 100644 index 0000000..06cbe05 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Programming_error.md @@ -0,0 +1,33 @@ +```pascal +// Block Type: OB +// Block Name (Original): Programming error +// Block Number: 121 +// Original Network Languages: LAD + +ORGANIZATION_BLOCK "Programming_error" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + BlockNr : UInt; + Reaction : USInt; + Fault_ID : Byte; + BlockType : USInt; + Area : USInt; + DBNr : "DB_ANY"; + Csg_OBNr : "OB_ANY"; + Csg_Prio : USInt; + Width : USInt; +END_VAR + +BEGIN + + // Network 1: (Original Language: LAD) + + // Network 1 has no logic elements. + + // No executable logic generated by script. + +END_ORGANIZATION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PumpsControl.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PumpsControl.md new file mode 100644 index 0000000..c891da3 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/PumpsControl.md @@ -0,0 +1,452 @@ +```pascal +// Block Type: FC +// Block Number: 1870 +// Original Network Languages: LAD, STL + +FUNCTION "PumpsControl" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + mWaterPumpRun : Bool; + mWaterPump2Run : Bool; + mSyrupPumpRun : Bool; + mProductPump1Run : Bool; + mProductPump2Run : Bool; + mCIP_Return_PumpRun : Bool; + P1_Water_Pump_Fault : Bool; + P5_Water_Pump_Fault : Bool; + P2_Syrup_Pump_Fault : Bool; + P3_Product_Pump_Fault : Bool; + P4_Vacuum_Pump_Fault : Bool; + P5_Rinse_Tank_Pump_Fault : Bool; + P6_Recircul_Pump_Fault : Bool; + P7_CIP_Return_Pump_Fault : Bool; + mP1_CIP_RunPump : Bool; + P7_CIP_Return_Pump : Bool; +END_VAR + + #_1s : Bool; // Auto-generated temporary + #_60S : Bool; // Auto-generated temporary +BEGIN + + // Network 1: DelayStartP1 (Original Language: LAD) + + "mP1_CIP_RunPump" := "HMI_Device"."PPM303"."Out" AND "HMI_Device"."AVM362"."Out" AND "CIP_Program_Variables"."Status"."Started" AND "gBlenderCIPMode"; + + // Network 2: PPN301 Water Pump Run (Original Language: LAD) + + // Network 2 did not produce printable SCL code. + + // Network 3: DEOX Recovery completed (Original Language: LAD) + + IF ("AUX TRUE" AND "CIP_Program_Variables"."Status"."CausticRecoveryRun" AND "HMI_Digital"."LSN302L"."Filtered" AND "HMI_Digital"."LSN301L"."Filtered") OR ("AUX TRUE" AND "CIP_Program_Variables"."Status"."CausticRecoveryRun" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" AND "HMI_Digital"."LSN301L"."Filtered") THEN + "M110.0" := TRUE; + END_IF; + + IF "AUX TRUE" AND "CIP_Program_Variables"."Status"."CausticRecoveryRun" THEN + "M110.0" := FALSE; + END_IF; + + // Network 4: Pump PPN301Ctrl (Original Language: LAD) + + // Network 4 did not produce printable SCL code. + + // Network 5: Pump PPN301Alarm (Original Language: LAD) + + "HMI_Device"."PPN301"."Alarm" := "mPPN301_Pump" OR "DI_PPN301_Ovrld"; + + // Network 6: Pump PPN301Start (Original Language: LAD) + // P1 Water Pump + + "HMI_Device"."PPN301"."Out" := ("HMI_Device"."PPN301"."Alarm" AND "HMI_Device"."PPN301"."ManOn" AND "gIN_VoltageOk") OR ("HMI_Device"."PPN301"."Alarm" AND "mWaterPumpRun" AND "HMI_Device"."PPN301"."Auto" AND "gIN_VoltageOk"); + + // Network 7: Pump PPN301VFC (Original Language: LAD) + + IF "HMI_PID"."PPN301"."Config" THEN + PPN301_VFC_Ctrl(); + END_IF; + + // Network 8: Pump PPN305 (Original Language: STL) + // PPN305 + + // --- BEGIN STL Network 8 --- + + A_BRACK + O_BRACK + A "HMI_Digital".LSN302L.Filtered + A_BRACK + O "gBlenderBlending" + O "Procedure_Variables".Blender_Rinse.Running + BRACKET + L S5T#3S_500MS + OnDelay "mDelayStartPPN305Blend" + NOP_0 + NOP_0 + NOP_0 + A "mDelayStartPPN305Blend" + BRACKET + O + A_BRACK + A "HMI_Digital".LSN302L.Filtered + A "gBlenderCIPMode" + A_BRACK + ON M110.0 + ON "CIP_Program_Variables".Status.CausticRecoveryRun + BRACKET + L S5T#10S + OnDelay "mDelayStartPPN305" + NOP_0 + NOP_0 + NOP_0 + A "mDelayStartPPN305" + BRACKET + A "gBlenderStartPumps" + O + A "HMI_Digital".LSN302L.Filtered + A "gDeairTank_Loading" + O_BRACK + A "HMI_Digital".LSN302L.Filtered + A "gP_PPN305" + L S5T#1S + OffDelay "mDelayStopPPN305" + NOP_0 + NOP_0 + NOP_0 + A "mDelayStopPPN305" + BRACKET + O_BRACK + A "HMI_Digital".LSN302L.Filtered + A "gBlenderCIPMode" + A "gIN_CIP_DrainRequest" + A "gBlenderStartPumps" + L S5T#20S + OffDelay "mDelayCIPStopP5" + NOP_0 + NOP_0 + NOP_0 + A "mDelayCIPStopP5" + BRACKET + BRACKET + A "HMI_Device".PPN305.Config + = "mWaterPump2Run" + A "mWaterPump2Run" + AN "HMI_Blender_Parameters".Processor_Options.Blender_OPT._Simulation + = "gOUT_PPN305_Run" + + // --- END STL Network 8 --- + + // Network 9: Pump PPN305 Alarm (Original Language: STL) + // PPN305 + + // --- BEGIN STL Network 9 --- + + A_BRACK + A_BRACK + A "HMI_Device".PPN305.Out + AN "DI_Water_Pump2_Contactor" + L S5T#500MS + OnDelay "mPPN305_Pump" + NOP_0 + NOP_0 + NOP_0 + A "mPPN305_Pump" + BRACKET + = "P5_Water_Pump_Fault" + A "P5_Water_Pump_Fault" + O "DI_Water_Pump2_Ovrld" + O + A "HMI_Device".PPN305.Alarm + AN "gIN_ResetBtn" + BRACKET + A "HMI_Device".PPN305.Config + AN "HMI_Blender_Parameters".Processor_Options.Blender_OPT._Simulation + = "HMI_Device".PPN305.Alarm + + // --- END STL Network 9 --- + + // Network 10: Pump PPN305 Start (Original Language: LAD) + // P5 Water Pump + + "HMI_Device"."PPN305"."Out" := ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" AND "HMI_Device"."PPN305"."ManOn") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" AND "mWaterPump2Run" AND "HMI_Device"."PPN305"."Auto") OR ("gIN_VoltageOk" AND "HMI_Device"."PPN305"."ManOn" AND "HMI_Device"."PPN305"."Alarm") OR ("gIN_VoltageOk" AND "mWaterPump2Run" AND "HMI_Device"."PPN305"."Auto" AND "HMI_Device"."PPN305"."Alarm"); + + // Network 11: Pump PPP302 (Original Language: STL) + + // --- BEGIN STL Network 11 --- + + A_BRACK + A_BRACK + A_BRACK + O "HMI_Digital".LAL_S3.Filtered + O "gIN_SyrTank_MinLvl" + BRACKET + A_BRACK + A "gBlenderProdMode" + AN "gBlenderRinseMode" + AN "Blender_Variables_Pers".gWaterRecipe + A "gBlenderStartPumps" + O "gP_PPP302" + BRACKET + O_BRACK + A_BRACK + O "HMI_Digital".LAL_S3.Filtered + O "gIN_SyrTank_MinLvl" + BRACKET + A_BRACK + O "gBlenderCIPMode" + O + A "gBlenderRinseMode" + AN "System_RunOut_Variables".FastChangeOverActivated + BRACKET + A "gBlenderStartPumps" + AN "HMI_Variables_Status".Procedures.CIP_SyrTankFloodRun + AN "gCIP_SyrTank_Flood" + = "gCIPRinseEnableRMP302" + A "gCIPRinseEnableRMP302" + L S5T#2S + OffDelay "mDelayCIPStopP2" + NOP_0 + NOP_0 + NOP_0 + A "mDelayCIPStopP2" + BRACKET + BRACKET + L S5T#600MS + OnDelay "mDelayStartPPP302" + NOP_0 + NOP_0 + NOP_0 + A "mDelayStartPPP302" + BRACKET + A "HMI_Device".PPP302.Config + = "mSyrupPumpRun" + A "mSyrupPumpRun" + AN "HMI_Blender_Parameters".Processor_Options.Blender_OPT._Simulation + = "gOUT_PPP302_Run" + + // --- END STL Network 11 --- + + // Network 12: Pump PPP302 Syrup Pump alarm (Original Language: LAD) + + // Network 12 did not produce printable SCL code. + + // Network 13: Pump PPP302 Syrup Pump alarm (Original Language: LAD) + + "HMI_Device"."PPP302"."Alarm" := ("mPPP302_Pump" AND "HMI_Device"."PPP302"."Config") OR ("DI_PPP302_Ovrld" AND "HMI_Device"."PPP302"."Config"); + + // Network 14: Pump PPP302 Start (Original Language: LAD) + // P2 Syrup Pump + + "HMI_Device"."PPP302"."Out" := ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" AND "HMI_Device"."PPP302"."ManOn") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" AND "mSyrupPumpRun" AND "HMI_Device"."PPP302"."Auto") OR ("gIN_VoltageOk" AND "HMI_Device"."PPP302"."Alarm" AND "HMI_Device"."PPP302"."ManOn") OR ("gIN_VoltageOk" AND "HMI_Device"."PPP302"."Alarm" AND "mSyrupPumpRun" AND "HMI_Device"."PPP302"."Auto"); + + // Network 15: Pump PPP302 VFC (Original Language: LAD) + + IF "HMI_PID"."PPP302"."Config" THEN + PPP302_VFC_Ctrl(); + END_IF; + + // Network 16: (Original Language: LAD) + + // Network 16 did not produce printable SCL code. + + // Network 17: Product Pump 1 PPM303 Run (Original Language: LAD) + + // Network 17 did not produce printable SCL code. + + // Network 18: Product Pump 1 PPM303 Start (Original Language: LAD) + // P3 Product Pump + + "HMI_Device"."PPM303"."Out" := ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" AND (("mProductPump1Run" AND "HMI_Device"."PPM303"."Auto") OR ("HMI_PID"."PPM303"."ManualControl"."ManOut" AND (("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "HMI_Device"."PPM303"."ManOn") OR ("HMI_Device"."PPM303"."ManOn" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InverterProdPumpPPM303"))))) OR ("gIN_VoltageOk" AND "HMI_Device"."PPM303"."Alarm" AND (("mProductPump1Run" AND "HMI_Device"."PPM303"."Auto") OR ("HMI_PID"."PPM303"."ManualControl"."ManOut" AND (("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "HMI_Device"."PPM303"."ManOn") OR ("HMI_Device"."PPM303"."ManOn" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InverterProdPumpPPM303"))))); + + // Network 19: Product Pump 1 PPM303 Ctrl (Original Language: LAD) + + // Network 19 did not produce printable SCL code. + + // Network 20: Product Pump 1 PPM303 Alarm (Original Language: LAD) + + "HMI_Device"."PPM303"."Alarm" := ("DI_PPM303_Ovrld" AND "HMI_Device"."PPM303"."Config") OR ("mPPM303_Pump" AND "HMI_Device"."PPM303"."Config"); + + // Network 21: Product Pump 1 PPM303 VFC (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" OR "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InverterProdPumpPPM303" THEN + PPM303_VFC_Ctrl(); + END_IF; + + // Network 22: Product Pump 2 PPM305 Run (Original Language: LAD) + + // Network 22 did not produce printable SCL code. + + // Network 23: Product Pump 2 PPM305 Start (Original Language: LAD) + // P3 Product Pump + + "HMI_Device"."PPM305"."Out" := ("mProductPump2Run" AND "HMI_Device"."PPM305"."Auto") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "HMI_Device"."PPM305"."ManOn" AND "HMI_PID"."PPM305"."ManualControl"."ManOut") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InverterProdPumpPPM303" AND "HMI_Device"."PPM305"."ManOn" AND "HMI_PID"."PPM305"."ManualControl"."ManOut"); + + // Network 24: Product Pump 2 PPM305 Alarm (Original Language: LAD) + + "HMI_Device"."PPM305"."Alarm" := ("DI_PPM303_Ovrld" AND "HMI_Device"."PPM305"."Config") OR ("gIN_ResetBtn" AND "HMI_Device"."PPM303"."Alarm" AND "HMI_Device"."PPM305"."Config"); + + // Network 25: Product Pump 2 PPM305 VFC (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" OR "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InverterProdPumpPPM303" THEN + PPM305_VFC_Ctrl(); + END_IF; + + // Network 26: Vacuum Pump PPN304 Run (Original Language: LAD) + + "gOUT_PPN304_Run" := ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" AND "gBlenderProdMode" AND "gP_PPN304" AND "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_Deareation_Vacum" AND "HMI_Device"."PPN304"."Config" AND "HMI_Alarms"."gH_Message") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" AND "gBlenderProdMode" AND "gStillWaterByPassEn" AND "Procedure_Variables"."TN301_StartUp"."Done" AND "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_Deareation_Vacum" AND "HMI_Device"."PPN304"."Config" AND "HMI_Alarms"."gH_Message"); + + // Network 27: Vacuum Pump PPN304 Ctrl (Original Language: LAD) + + // Network 27 did not produce printable SCL code. + + // Network 28: Vacuum Pump PPN304 Alarm (Original Language: LAD) + + "HMI_Device"."PPN304"."Alarm" := ("HMI_Device"."PPN304"."Config" AND "mPPN304_Pump") OR ("HMI_Device"."PPN304"."Config" AND "DI_PPM305_Ovrld"); + + // Network 29: Vacuum Pump PPN304 Start (Original Language: LAD) + // P4 Vacuum Pump + + "HMI_Device"."PPN304"."Out" := ("gIN_VoltageOk" AND "HMI_Device"."PPN304"."Alarm" AND "HMI_Device"."PPN304"."ManOn") OR ("gIN_VoltageOk" AND "HMI_Device"."PPN304"."Alarm" AND "gOUT_PPN304_Run" AND "HMI_Device"."PPN304"."Auto"); + + // Network 30: Recycle Pump PPM306 Run (Original Language: LAD) + + "gOUT_PPM306_Run" := ("gBlendRecircActive" AND "gBlenderProdMode" AND "gBlenderRinseMode" AND "gBlenderMinLevel" AND "HMI_Device"."PPM306"."Config") OR ("gBlenderProdMode" AND "gBlenderRinseMode" AND "gBlenderStartPumps" AND "gBlenderMinLevel" AND "HMI_Device"."PPM306"."Config"); + + // Network 31: Recycle Pump PPM306 Start (Original Language: LAD) + // P6 Recirculation Pump + + "HMI_Device"."PPM306"."Out" := ("gIN_VoltageOk" AND "HMI_Device"."PPM306"."ManOn" AND "HMI_Device"."PPM306"."Alarm") OR ("gIN_VoltageOk" AND "gOUT_PPM306_Run" AND "HMI_Device"."PPM306"."Auto" AND "HMI_Device"."PPM306"."Alarm"); + + // Network 32: Recycle Pump PPN306 Alarm (Original Language: LAD) + + "mPPM306_Pump"(IN := "HMI_Device"."PPM306"."Out" AND "DI_PPM306_Contactor", PT := S5T#1s); // TODO: Declarar "mPPM306_Pump" : TON; + + "HMI_Device"."PPM306"."Alarm" := ("mPPM306_Pump".Q AND "HMI_Device"."PPM306"."Config") OR ("gIN_ResetBtn" AND "HMI_Device"."PPM306"."Alarm") OR ("HMI_Device"."PPM306"."Config" AND "DI_PPM306_Ovrld"); + + // Network 33: CIP Pump PPM307 Run (Original Language: STL) + // CIP Pump + + // --- BEGIN STL Network 33 --- + + A_BRACK + O_BRACK + AN "HMI_Blender_Parameters".Processor_Options.Blender_OPT._BlendFillSystem + A "gProdAvailable" + A_BRACK + A "gBlenderMinLevel" + A_BRACK + A "gOUT_FillerMinimumLevel" + A "gIN_Filler1ProductReq" + O "gBlendRecircActive" + BRACKET + O + AN "gPrdTank_Empty" + A_BRACK + O "Procedure_Variables".TM301_RunOut.Latch + O "System_RunOut_Variables".ProdPipe_RunOut.Latch + BRACKET + BRACKET + L S5T#4S + OffDelay "mDelayProdStopPPM303" + NOP_0 + NOP_0 + NOP_0 + A "mDelayProdStopPPM303" + BRACKET + O + AN "HMI_Blender_Parameters".Processor_Options.Blender_OPT._BlendFillSystem + A "gBlenderMinLevel" + A_BRACK + O "Procedure_Variables".First_Production.Running + O + A "gWorkshopTest" + A "Procedure_Variables".Blender_Run.Latch + O + A "Procedure_Variables".Blender_Run.Latch + A "gEnRecircPHE" + BRACKET + O_BRACK + AN "HMI_Blender_Parameters".Processor_Options.Blender_OPT._BlendFillSystem + A "Procedure_Variables".Blender_Run.Latch + A_BRACK + O "gBlenderMinLevel" + ON "gPrdTank_Empty" + BRACKET + A_BRACK + AN "HMI_Variables_Status".Procedures.CIP_ProdTankFloodRun + AN "gIN_CIP_TankFilling" + A "gIN_FillerCIPRequest" + A "gBlenderCIPMode" + O + AN "System_RunOut_Variables".FastChangeOverActivated + A "gBlenderRinseMode" + BRACKET + L S5T#4S + OffDelay "mDelayCIPStopPPM303" + NOP_0 + NOP_0 + NOP_0 + A "mDelayCIPStopPPM303" + BRACKET + O + A "HMI_Digital".LSM302L.Filtered + A "HMI_Blender_Parameters".Processor_Options.Blender_OPT._BlendFillSystem + A_BRACK + A "gBlenderProdMode" + AN "gBlenderRinseMode" + O + A "Procedure_Variables".Blender_Run.Latch + A_BRACK + A "gBlenderCIPMode" + A "gIN_CIP_CIPRunning" + AN "HMI_Variables_Status".Procedures.CIP_ProdTankFloodRun + AN "gIN_CIP_TankFilling" + O + A "gBlenderRinseMode" + A "System_RunOut_Variables".In_Flr_WaterRinseRequest + BRACKET + A "HMI_Device".AVM362.Out + BRACKET + A "HMI_PID".PPM303.ManualControl.PidEnable + O + A "HMI_Digital".LSM302L.Filtered + A "gP_PPM303" + BRACKET + A "HMI_Device".PPM307.Config + = "mCIP_Return_PumpRun" + A "mCIP_Return_PumpRun" + AN "HMI_Blender_Parameters".Processor_Options.Blender_OPT._Simulation + = "gOUT_PPM307_Run" + + // --- END STL Network 33 --- + + // Network 34: MIX - PPM307 CIP Pump Run (Original Language: LAD) + + "gOUT_PPM307_Run" := "HMI_Device"."PPM303"."Out" AND "HMI_Device"."AVM362"."Out" AND "gBlenderCIPMode" AND "Procedure_Variables"."Blender_Run"."Latch" AND "HMI_Device"."PPM307"."Config"; + + // Network 35: CIP Pump PPM307 Out (Original Language: LAD) + // P7 CIP Return Pump + + "HMI_Device"."PPM307"."Out" := ("gIN_VoltageOk" AND "HMI_Device"."PPM307"."ManOn" AND "HMI_Device"."PPM307"."Alarm") OR ("gIN_VoltageOk" AND "gOUT_PPM307_Run" AND "HMI_Device"."PPM307"."Auto" AND "HMI_Device"."PPM307"."Alarm"); + + // Network 36: Syrup Room Water Request (Original Language: LAD) + + "HMI_Device"."SyrupRoom_WaterPump"."Out" := ("Procedure_Variables"."Syr_RunOut"."Latch" AND "gWorkshopTest" AND "gBlenderProdMode") OR ("gSyrupQcoRinse" AND "gWorkshopTest" AND "gBlenderProdMode") OR ("System_RunOut_Variables"."FastChangeOverActivated" AND "gWorkshopTest" AND "Procedure_Variables"."Blender_Run"."Latch" AND "gBlenderRinseMode"); + + // Network 37: Syrup Room Water Alarm (Original Language: LAD) + + "mSyrRoomH2OPumpFaultDly"(IN := "gWorkshopTest" AND "HMI_Device"."SyrupRoom_WaterPump"."Out" AND "DI_SyrRoom_WatPumpReady" AND "gSyrupRoomEn" AND "AUX FALSE" AND "gIN_ResetBtn" AND "gBlenderProdMode", PT := S5T#60S); // TODO: Declarar "mSyrRoomH2OPumpFaultDly" : TON; + + "HMI_Device"."SyrupRoom_WaterPump"."Alarm" := "mSyrRoomH2OPumpFaultDly".Q OR ("HMI_Device"."SyrupRoom_WaterPump"."Alarm" AND "gIN_ResetBtn"); + + // Network 38: Syrup Room Syrup Pump (Original Language: LAD) + + // Network 38 did not produce printable SCL code. + + // Network 39: (Original Language: LAD) + + // Network 39 has no logic elements. + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/QCO_Monitor.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/QCO_Monitor.md new file mode 100644 index 0000000..d2b4d16 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/QCO_Monitor.md @@ -0,0 +1,300 @@ +```pascal +// Block Type: FC +// Block Name (Original): QCO Monitor +// Block Number: 100 +// Original Network Languages: STL + +FUNCTION "QCO_Monitor" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + FAULT : Int; + DATABASE_PNTR : "Any"; +END_VAR + +BEGIN + + // Network 1: ---------- PHASE DETECTION ----------------- (Original Language: STL) + + // --- BEGIN STL Network 1 --- + + AN "System_RunOut_Variables".SystemRunOutInit + AN M100.7 + O M100.0 + JC M009 + SET + R M100.7 + LAR1 _ERR_CONST_ + L BYTE#16#10 + T LocalB[AR1,P#0.0] + L BYTE#16#02 + T LocalB[AR1,P#1.0] + L 128 + T LocalW[AR1,P#2.0] + L 100 + T LocalW[AR1,P#4.0] + L "MB101" + L P#128.0 + MUL_D + L P#DBX200.0 + ADD_D + T LocalD[AR1,P#6.0] + + CALL _Call_? + + L 0 + T DB100.DBD0.0 + + CALL _Call_? + + L DINT#2_000_000_000 + L "QCO Timing DB".ActualTimer.ChangeOverN + GE_D + JC M001 + L 0 + M001: L 1 + ADD_D + T "QCO Timing DB".ActualTimer.ChangeOverN + + L 9 + L "MB101" + GT_D + JC M002 + L -1 + M002: L 1 + ADD_I + T "MB101" + + SET + S M100.0 + R M100.6 + + M009: AN M100.0 + BEC + + // --- END STL Network 1 --- + + // Network 2: 00 - QUICK CHANGE OVER TOTAL DURATION (Original Language: STL) + + // --- BEGIN STL Network 2 --- + + A "System_RunOut_Variables".ProdPipe_RunOut.Latch + A "System_RunOut_Variables".FillerRanOut + O "System_RunOut_Variables".ProdPipe_RunOut.Done + S "QCO Timing DB".PhaseInProgress.Total + + // --- END STL Network 2 --- + + // Network 3: 05 - SYRUP RUNOUT (Original Language: STL) + + // --- BEGIN STL Network 3 --- + + A "Procedure_Variables".Syr_RunOut.Latch + = "QCO Timing DB".PhaseInProgress.SyrupRunout + + // --- END STL Network 3 --- + + // Network 4: 06 - SYRUP LINE RINSE (Original Language: STL) + + // --- BEGIN STL Network 4 --- + + L "System_Run_Out_Data".mStep + L 0 + EQ_I + A "gSyrupQcoRinse" + = "QCO Timing DB".PhaseInProgress.SyrupLineRinse + + // --- END STL Network 4 --- + + // Network 5: 07 - SYRUP TANK RINSE (Original Language: STL) + + // --- BEGIN STL Network 5 --- + + L "System_Run_Out_Data".mStep + L 1 + EQ_I + A "gSyrupQcoRinse" + = "QCO Timing DB".PhaseInProgress.SyrupTankRinse + + // --- END STL Network 5 --- + + // Network 6: 08 - SYRUP TANK PREPARATION (Original Language: STL) + + // --- BEGIN STL Network 6 --- + + A "Procedure_Variables".FTP302Line_Preparation.Latch + O "Procedure_Variables".FTP302_StartUp.Latch + = "QCO Timing DB".PhaseInProgress.SyrupTankPreparation + + // --- END STL Network 6 --- + + // Network 7: 10 - PRODUCT TANK RUNOUT (Original Language: STL) + + // --- BEGIN STL Network 7 --- + + A "Procedure_Variables".TM301_RunOut.Latch + = "QCO Timing DB".PhaseInProgress.ProdTankRunout + + // --- END STL Network 7 --- + + // Network 8: 11 - PRODUCT PIPE RUNOUT (Original Language: STL) + + // --- BEGIN STL Network 8 --- + + A "System_RunOut_Variables".ProdPipe_RunOut.Latch + = "QCO Timing DB".PhaseInProgress.ProdPipeRunout + + // --- END STL Network 8 --- + + // Network 9: 12 - PRODUCT TANK BLOW OFF (Original Language: STL) + + // --- BEGIN STL Network 9 --- + + A "System_RunOut_Variables".ProdPipe_Drain.Latch + = "QCO Timing DB".PhaseInProgress.ProdTankBlowOff + + // --- END STL Network 9 --- + + // Network 10: 14 - RINSE (Original Language: STL) + + // --- BEGIN STL Network 10 --- + + A "Procedure_Variables".Blender_Rinse.Latch + AN "Procedure_Variables".TM301_Drain.Latch + = "QCO Timing DB".PhaseInProgress.Rinse + + // --- END STL Network 10 --- + + // Network 11: 15 - PRODUCT TANK DRAIN (Original Language: STL) + + // --- BEGIN STL Network 11 --- + + A "Procedure_Variables".Blender_Rinse.Latch + A "Procedure_Variables".TM301_Drain.Latch + = "QCO Timing DB".PhaseInProgress.ProdTankDrain + + // --- END STL Network 11 --- + + // Network 12: 17 - FILLER FLUSHING (Original Language: STL) + + // --- BEGIN STL Network 12 --- + + A "Procedure_Variables".Blender_Rinse.Latch + A "Procedure_Variables".TM301_Drain.Latch + Rise M100.3 + S "QCO Timing DB".PhaseInProgress.FillerFlushing + + A "gIN_FillerEndFlushing" + R "QCO Timing DB".PhaseInProgress.FillerFlushing + + // --- END STL Network 12 --- + + // Network 13: 19 - PRODUCT TANK PRESSURIZZATION (Original Language: STL) + + // --- BEGIN STL Network 13 --- + + A "System_RunOut_Variables".System_RunOut.Done + S "QCO Timing DB".PhaseInProgress.ProdTankPressurization + + A "gEqPressOk" + O "gBlenderBlending" + A "QCO Timing DB".PhaseInProgress.ProdTankPressurization + R "QCO Timing DB".PhaseInProgress.ProdTankPressurization + S "QCO Timing DB".PhaseInProgress.ProdTankChargeUp + + // --- END STL Network 13 --- + + // Network 14: 20 - PRODUCT TANK CHARGE UP (Original Language: STL) + + // --- BEGIN STL Network 14 --- + + + A "QCO Timing DB".PhaseInProgress.ProdTankChargeUp + A "gWaitLevToHold_TankPress" + R "QCO Timing DB".PhaseInProgress.ProdTankChargeUp + S "QCO Timing DB".PhaseInProgress.WaitForFillerReady + + // --- END STL Network 14 --- + + // Network 15: 22 - WAIT FOR FILLER READY (Original Language: STL) + + // --- BEGIN STL Network 15 --- + + + A "QCO Timing DB".PhaseInProgress.WaitForFillerReady + A "gIN_Filler_AVM362_En" + R "QCO Timing DB".PhaseInProgress.WaitForFillerReady + S "QCO Timing DB".PhaseInProgress.FillerSlowCharging + + // --- END STL Network 15 --- + + // Network 16: 23 - FILLER SLOW CHARGING (Original Language: STL) + + // --- BEGIN STL Network 16 --- + + + A "QCO Timing DB".PhaseInProgress.FillerSlowCharging + A "Interlocking_Variables".MIXER_FILLER_SEND.PROD_Prod_Load_2 + R "QCO Timing DB".PhaseInProgress.FillerSlowCharging + S "QCO Timing DB".PhaseInProgress.FillerFastCharging + + // --- END STL Network 16 --- + + // Network 17: 24 - FILLER FAST CHARGING (Original Language: STL) + + // --- BEGIN STL Network 17 --- + + + A "QCO Timing DB".PhaseInProgress.FillerFastCharging + A "Procedure_Variables".BlendFill_StartUp.Done + R "QCO Timing DB".PhaseInProgress.FillerFastCharging + S "QCO Timing DB".PhaseInProgress.WaitFirstBottleOut + + // --- END STL Network 17 --- + + // Network 18: 25 - WAIT FOR FIRST BOTTLES FILLED (Original Language: STL) + + // --- BEGIN STL Network 18 --- + + + A "Interlocking_Variables".FILLER_MIXER_RECEIVE.PROD_Bott_Filling + A "Procedure_Variables".BlendFill_StartUp.Done + R "QCO Timing DB".PhaseInProgress.WaitFirstBottleOut + R M100.0 + S M100.6 + + // --- END STL Network 18 --- + + // Network 19: --------- PHASE COUNTING ---------------- (Original Language: STL) + + // --- BEGIN STL Network 19 --- + + AN CLK_1.0S + JC M999 + + LAR1 P#0.0 + LAR2 P#0.0 + JU M901 + + M900: ADDAR1 P#0.1 + ADDAR2 P#4.0 + + M901: AUF "QCO Timing DB" + AN DBX[AR1,P#0.0] + JC M902 + L DBD[AR2,P#4.0] + L 1 + ADD_D + T DBD[AR2,P#4.0] + M902: TAR1_ACCU1 + L P#3.6 + LT_D + JC M900 + M999: NOP_0 + + // --- END STL Network 19 --- + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/QCO_Phase.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/QCO_Phase.md new file mode 100644 index 0000000..9b79299 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/QCO_Phase.md @@ -0,0 +1,39 @@ +# UDT: QCO Phase + +## Members + +| Name | Datatype | Start Value | Comment | +|---|---|---|---| +| `Total` | `Bool` | `` | | +| `Spare40` | `Bool` | `` | | +| `Spare80` | `Bool` | `` | | +| `Spare120` | `Bool` | `` | | +| `Spare160` | `Bool` | `` | | +| `SyrupRunout` | `Bool` | `` | | +| `SyrupLineRinse` | `Bool` | `` | | +| `SyrupTankRinse` | `Bool` | `` | | +| `SyrupTankPreparation` | `Bool` | `` | | +| `Spare360` | `Bool` | `` | | +| `ProdTankRunout` | `Bool` | `` | | +| `ProdPipeRunout` | `Bool` | `` | | +| `ProdTankBlowOff` | `Bool` | `` | | +| `Spare520` | `Bool` | `` | | +| `Rinse` | `Bool` | `` | | +| `ProdTankDrain` | `Bool` | `` | | +| `Spare640` | `Bool` | `` | | +| `FillerFlushing` | `Bool` | `` | | +| `Spare720` | `Bool` | `` | | +| `ProdTankPressurization` | `Bool` | `` | | +| `ProdTankChargeUp` | `Bool` | `` | | +| `Spare840` | `Bool` | `` | | +| `WaitForFillerReady` | `Bool` | `` | | +| `FillerSlowCharging` | `Bool` | `` | | +| `FillerFastCharging` | `Bool` | `` | | +| `WaitFirstBottleOut` | `Bool` | `` | | +| `Spare1040` | `Bool` | `` | | +| `Spare1080` | `Bool` | `` | | +| `Spare1120` | `Bool` | `` | | +| `Spare1160` | `Bool` | `` | | +| `Spare1200` | `Bool` | `` | | +| `Reserved` | `Bool` | `` | | + diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/QCO_Spare.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/QCO_Spare.md new file mode 100644 index 0000000..8a48b94 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/QCO_Spare.md @@ -0,0 +1,8 @@ +# UDT: QCO Spare + +## Members + +| Name | Datatype | Start Value | Comment | +|---|---|---|---| +| `Spare` | `Array[0..67] of Bool` | `` | | + diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/QCO_Timer.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/QCO_Timer.md new file mode 100644 index 0000000..ce56c3f --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/QCO_Timer.md @@ -0,0 +1,39 @@ +# UDT: QCO Timer + +## Members + +| Name | Datatype | Start Value | Comment | +|---|---|---|---| +| `Total` | `DInt` | `` | | +| `Spare40` | `DInt` | `` | | +| `Spare80` | `DInt` | `` | | +| `Spare120` | `DInt` | `` | | +| `Spare160` | `DInt` | `` | | +| `SyrupRunout` | `DInt` | `` | | +| `SyrupLineRinse` | `DInt` | `` | | +| `SyrupTankRinse` | `DInt` | `` | | +| `SyrupTankPreparation` | `DInt` | `` | | +| `Spare360` | `DInt` | `` | | +| `ProdTankRunout` | `DInt` | `` | | +| `ProdPipeRunout` | `DInt` | `` | | +| `ProdTankBlowOff` | `DInt` | `` | | +| `Spare520` | `DInt` | `` | | +| `Rinse` | `DInt` | `` | | +| `ProdTankDrain` | `DInt` | `` | | +| `Spare640` | `DInt` | `` | | +| `FillerFlushing` | `DInt` | `` | | +| `Spare720` | `DInt` | `` | | +| `ProdTankPressurization` | `DInt` | `` | | +| `ProdTankChargeUp` | `DInt` | `` | | +| `Spare840` | `DInt` | `` | | +| `WaitForFillerReady` | `DInt` | `` | | +| `FillerSlowCharging` | `DInt` | `` | | +| `FillerFastCharging` | `DInt` | `` | | +| `WaitFirstBottleOut` | `DInt` | `` | | +| `Spare1040` | `DInt` | `` | | +| `Spare1080` | `DInt` | `` | | +| `Spare1120` | `DInt` | `` | | +| `Spare1160` | `DInt` | `` | | +| `Spare1200` | `DInt` | `` | | +| `ChangeOverN` | `DInt` | `` | | + diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/QCO_Timer_Array_1.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/QCO_Timer_Array_1.md new file mode 100644 index 0000000..297184a --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/QCO_Timer_Array_1.md @@ -0,0 +1,107 @@ +# UDT: QCO Timer_Array_1 + +## Members + +| Name | Datatype | Start Value | Comment | +|---|---|---|---| +| `PhaseInProgress` | `"QCO Timer"` | `` | | +|     `Total` | `DInt` | `` | | +|     `Spare40` | `DInt` | `` | | +|     `Spare80` | `DInt` | `` | | +|     `Spare120` | `DInt` | `` | | +|     `Spare160` | `DInt` | `` | | +|     `SyrupRunout` | `DInt` | `` | | +|     `SyrupLineRinse` | `DInt` | `` | | +|     `SyrupTankRinse` | `DInt` | `` | | +|     `SyrupTankPreparation` | `DInt` | `` | | +|     `Spare360` | `DInt` | `` | | +|     `ProdTankRunout` | `DInt` | `` | | +|     `ProdPipeRunout` | `DInt` | `` | | +|     `ProdTankBlowOff` | `DInt` | `` | | +|     `Spare520` | `DInt` | `` | | +|     `Rinse` | `DInt` | `` | | +|     `ProdTankDrain` | `DInt` | `` | | +|     `Spare640` | `DInt` | `` | | +|     `FillerFlushing` | `DInt` | `` | | +|     `Spare720` | `DInt` | `` | | +|     `ProdTankPressurization` | `DInt` | `` | | +|     `ProdTankChargeUp` | `DInt` | `` | | +|     `Spare840` | `DInt` | `` | | +|     `WaitForFillerReady` | `DInt` | `` | | +|     `FillerSlowCharging` | `DInt` | `` | | +|     `FillerFastCharging` | `DInt` | `` | | +|     `WaitFirstBottleOut` | `DInt` | `` | | +|     `Spare1040` | `DInt` | `` | | +|     `Spare1080` | `DInt` | `` | | +|     `Spare1120` | `DInt` | `` | | +|     `Spare1160` | `DInt` | `` | | +|     `Spare1200` | `DInt` | `` | | +|     `ChangeOverN` | `DInt` | `` | | +| `ActualTimer` | `"QCO Timer"` | `` | | +|     `Total` | `DInt` | `` | | +|     `Spare40` | `DInt` | `` | | +|     `Spare80` | `DInt` | `` | | +|     `Spare120` | `DInt` | `` | | +|     `Spare160` | `DInt` | `` | | +|     `SyrupRunout` | `DInt` | `` | | +|     `SyrupLineRinse` | `DInt` | `` | | +|     `SyrupTankRinse` | `DInt` | `` | | +|     `SyrupTankPreparation` | `DInt` | `` | | +|     `Spare360` | `DInt` | `` | | +|     `ProdTankRunout` | `DInt` | `` | | +|     `ProdPipeRunout` | `DInt` | `` | | +|     `ProdTankBlowOff` | `DInt` | `` | | +|     `Spare520` | `DInt` | `` | | +|     `Rinse` | `DInt` | `` | | +|     `ProdTankDrain` | `DInt` | `` | | +|     `Spare640` | `DInt` | `` | | +|     `FillerFlushing` | `DInt` | `` | | +|     `Spare720` | `DInt` | `` | | +|     `ProdTankPressurization` | `DInt` | `` | | +|     `ProdTankChargeUp` | `DInt` | `` | | +|     `Spare840` | `DInt` | `` | | +|     `WaitForFillerReady` | `DInt` | `` | | +|     `FillerSlowCharging` | `DInt` | `` | | +|     `FillerFastCharging` | `DInt` | `` | | +|     `WaitFirstBottleOut` | `DInt` | `` | | +|     `Spare1040` | `DInt` | `` | | +|     `Spare1080` | `DInt` | `` | | +|     `Spare1120` | `DInt` | `` | | +|     `Spare1160` | `DInt` | `` | | +|     `Spare1200` | `DInt` | `` | | +|     `ChangeOverN` | `DInt` | `` | | +| `Spare` | `Array[0..67] of Bool` | `` | | +| `QCO_Database` | `Array[0..9] of "QCO Timer"` | `` | | +|     `Total` | `DInt` | `` | | +|     `Spare40` | `DInt` | `` | | +|     `Spare80` | `DInt` | `` | | +|     `Spare120` | `DInt` | `` | | +|     `Spare160` | `DInt` | `` | | +|     `SyrupRunout` | `DInt` | `` | | +|     `SyrupLineRinse` | `DInt` | `` | | +|     `SyrupTankRinse` | `DInt` | `` | | +|     `SyrupTankPreparation` | `DInt` | `` | | +|     `Spare360` | `DInt` | `` | | +|     `ProdTankRunout` | `DInt` | `` | | +|     `ProdPipeRunout` | `DInt` | `` | | +|     `ProdTankBlowOff` | `DInt` | `` | | +|     `Spare520` | `DInt` | `` | | +|     `Rinse` | `DInt` | `` | | +|     `ProdTankDrain` | `DInt` | `` | | +|     `Spare640` | `DInt` | `` | | +|     `FillerFlushing` | `DInt` | `` | | +|     `Spare720` | `DInt` | `` | | +|     `ProdTankPressurization` | `DInt` | `` | | +|     `ProdTankChargeUp` | `DInt` | `` | | +|     `Spare840` | `DInt` | `` | | +|     `WaitForFillerReady` | `DInt` | `` | | +|     `FillerSlowCharging` | `DInt` | `` | | +|     `FillerFastCharging` | `DInt` | `` | | +|     `WaitFirstBottleOut` | `DInt` | `` | | +|     `Spare1040` | `DInt` | `` | | +|     `Spare1080` | `DInt` | `` | | +|     `Spare1120` | `DInt` | `` | | +|     `Spare1160` | `DInt` | `` | | +|     `Spare1200` | `DInt` | `` | | +|     `ChangeOverN` | `DInt` | `` | | + diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/QCO_Timing_DB.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/QCO_Timing_DB.md new file mode 100644 index 0000000..3ddf506 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/QCO_Timing_DB.md @@ -0,0 +1,123 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): QCO Timing DB +// Block Number: 100 + +DATA_BLOCK "QCO_Timing_DB" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + PhaseInProgress : STRUCT + Total : Bool := FALSE; + Spare40 : Bool := FALSE; + Spare80 : Bool := FALSE; + Spare120 : Bool := FALSE; + Spare160 : Bool := FALSE; + SyrupRunout : Bool := FALSE; + SyrupLineRinse : Bool := FALSE; + SyrupTankRinse : Bool := FALSE; + SyrupTankPreparation : Bool := FALSE; + Spare360 : Bool := FALSE; + ProdTankRunout : Bool := FALSE; + ProdPipeRunout : Bool := FALSE; + ProdTankBlowOff : Bool := FALSE; + Spare520 : Bool := FALSE; + Rinse : Bool := FALSE; + ProdTankDrain : Bool := FALSE; + Spare640 : Bool := FALSE; + FillerFlushing : Bool := FALSE; + Spare720 : Bool := FALSE; + ProdTankPressurization : Bool := FALSE; + ProdTankChargeUp : Bool := FALSE; + Spare840 : Bool := FALSE; + WaitForFillerReady : Bool := FALSE; + FillerSlowCharging : Bool := FALSE; + FillerFastCharging : Bool := FALSE; + WaitFirstBottleOut : Bool := FALSE; + Spare1040 : Bool := FALSE; + Spare1080 : Bool := FALSE; + Spare1120 : Bool := FALSE; + Spare1160 : Bool := FALSE; + Spare1200 : Bool := FALSE; + Reserved : Bool := FALSE; + END_STRUCT; + + ActualTimer : STRUCT + Total : DInt := 0; + Spare40 : DInt := 0; + Spare80 : DInt := 0; + Spare120 : DInt := 0; + Spare160 : DInt := 0; + SyrupRunout : DInt := 0; + SyrupLineRinse : DInt := 0; + SyrupTankRinse : DInt := 0; + SyrupTankPreparation : DInt := 0; + Spare360 : DInt := 0; + ProdTankRunout : DInt := 0; + ProdPipeRunout : DInt := 0; + ProdTankBlowOff : DInt := 0; + Spare520 : DInt := 0; + Rinse : DInt := 0; + ProdTankDrain : DInt := 0; + Spare640 : DInt := 0; + FillerFlushing : DInt := 0; + Spare720 : DInt := 0; + ProdTankPressurization : DInt := 0; + ProdTankChargeUp : DInt := 0; + Spare840 : DInt := 0; + WaitForFillerReady : DInt := 0; + FillerSlowCharging : DInt := 0; + FillerFastCharging : DInt := 0; + WaitFirstBottleOut : DInt := 0; + Spare1040 : DInt := 0; + Spare1080 : DInt := 0; + Spare1120 : DInt := 0; + Spare1160 : DInt := 0; + Spare1200 : DInt := 0; + ChangeOverN : DInt := 0; + END_STRUCT; + + Spare : Array[0..67] of Byte := [/* Array[0] unsupported init */, /* Array[1] unsupported init */, /* Array[2] unsupported init */, /* Array[3] unsupported init */, /* Array[4] unsupported init */, /* Array[5] unsupported init */, /* Array[6] unsupported init */, /* Array[7] unsupported init */, /* Array[8] unsupported init */, /* Array[9] unsupported init */, /* Array[10] unsupported init */, /* Array[11] unsupported init */, /* Array[12] unsupported init */, /* Array[13] unsupported init */, /* Array[14] unsupported init */, /* Array[15] unsupported init */, /* Array[16] unsupported init */, /* Array[17] unsupported init */, /* Array[18] unsupported init */, /* Array[19] unsupported init */, /* Array[20] unsupported init */, /* Array[21] unsupported init */, /* Array[22] unsupported init */, /* Array[23] unsupported init */, /* Array[24] unsupported init */, /* Array[25] unsupported init */, /* Array[26] unsupported init */, /* Array[27] unsupported init */, /* Array[28] unsupported init */, /* Array[29] unsupported init */, /* Array[30] unsupported init */, /* Array[31] unsupported init */, /* Array[32] unsupported init */, /* Array[33] unsupported init */, /* Array[34] unsupported init */, /* Array[35] unsupported init */, /* Array[36] unsupported init */, /* Array[37] unsupported init */, /* Array[38] unsupported init */, /* Array[39] unsupported init */, /* Array[40] unsupported init */, /* Array[41] unsupported init */, /* Array[42] unsupported init */, /* Array[43] unsupported init */, /* Array[44] unsupported init */, /* Array[45] unsupported init */, /* Array[46] unsupported init */, /* Array[47] unsupported init */, /* Array[48] unsupported init */, /* Array[49] unsupported init */, /* Array[50] unsupported init */, /* Array[51] unsupported init */, /* Array[52] unsupported init */, /* Array[53] unsupported init */, /* Array[54] unsupported init */, /* Array[55] unsupported init */, /* Array[56] unsupported init */, /* Array[57] unsupported init */, /* Array[58] unsupported init */, /* Array[59] unsupported init */, /* Array[60] unsupported init */, /* Array[61] unsupported init */, /* Array[62] unsupported init */, /* Array[63] unsupported init */, /* Array[64] unsupported init */, /* Array[65] unsupported init */, /* Array[66] unsupported init */, /* Array[67] unsupported init */]; + QCO_Database : STRUCT + Total : DInt; + Spare40 : DInt; + Spare80 : DInt; + Spare120 : DInt; + Spare160 : DInt; + SyrupRunout : DInt; + SyrupLineRinse : DInt; + SyrupTankRinse : DInt; + SyrupTankPreparation : DInt; + Spare360 : DInt; + ProdTankRunout : DInt; + ProdPipeRunout : DInt; + ProdTankBlowOff : DInt; + Spare520 : DInt; + Rinse : DInt; + ProdTankDrain : DInt; + Spare640 : DInt; + FillerFlushing : DInt; + Spare720 : DInt; + ProdTankPressurization : DInt; + ProdTankChargeUp : DInt; + Spare840 : DInt; + WaitForFillerReady : DInt; + FillerSlowCharging : DInt; + FillerFastCharging : DInt; + WaitFirstBottleOut : DInt; + Spare1040 : DInt; + Spare1080 : DInt; + Spare1120 : DInt; + Spare1160 : DInt; + Spare1200 : DInt; + ChangeOverN : DInt; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/RACK_FLT.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/RACK_FLT.md new file mode 100644 index 0000000..2009a1e --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/RACK_FLT.md @@ -0,0 +1,33 @@ +```pascal +// Block Type: OB +// Block Number: 86 +// Original Network Languages: LAD + +ORGANIZATION_BLOCK "RACK_FLT" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + OB86_EV_CLASS : Byte; + OB86_FLT_ID : Byte; + OB86_PRIORITY : Byte; + OB86_OB_NUMBR : Byte; + OB86_RESERVED_1 : Byte; + OB86_RESERVED_2 : Byte; + OB86_MDL_ADDR : Word; + OB86_RACKS_FLTD : Array[0..31] of Bool; + OB86_DATE_TIME : "Date_And_Time"; +END_VAR + +BEGIN + + // Network 1: Loss Of Rack Fault Memory (Original Language: LAD) + // PRIFIBUS DIAG RACK Fault Memory + + IF "M19511" THEN + "M19511" := TRUE; + END_IF; + +END_ORGANIZATION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/REPLACE_Mod.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/REPLACE_Mod.md new file mode 100644 index 0000000..660bd93 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/REPLACE_Mod.md @@ -0,0 +1,221 @@ +```pascal +// Block Type: FC +// Block Number: 32 +// Original Network Languages: STL + +FUNCTION "REPLACE_Mod" : String[254] +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + IN1 : String[254]; + IN2 : String[254]; + L : Int; + P : Int; +END_VAR + +VAR_TEMP + w_Temp : Word; + w_DBNR1 : Word; + w_DBNR2 : Word; + d_AR_IN1 : DWord; + d_AR_IN2 : DWord; + yAnzChar : Byte; + yMaxZiel : Byte; + yAnzIN1 : Byte; + yAnzIN2 : Byte; + yLoopCnt : Byte; + b_Fehl : Bool; + b_P_Null : Bool; + b_L_Null : Bool; + b_PgAnz1 : Bool; +END_VAR + +BEGIN + + // Network 1: Merker L=0 (Original Language: STL) + // Adressen Quelle/Ziel bestimmen + + // --- BEGIN STL Network 1 --- + + SET + SAVE + L _ERR_CONST_ + LAR1_ACCU1 + L NoneW[AR1,P#0.0] + T "w_DBNR1" + AUF DBB[AR?,P#0.0] + L NoneD[AR1,P#2.0] + LAR1_ACCU1 + T "d_AR_IN1" + L NoneB[AR1,P#0.0] + T "yAnzIN1" + L _ERR_CONST_ + LAR2_ACCU1 + L NoneW[AR2,P#0.0] + T "w_DBNR2" + AUF DBB[AR?,P#0.0] + L NoneD[AR2,P#2.0] + LAR2_ACCU1 + T "d_AR_IN2" + L NoneB[AR2,P#0.0] + T "yAnzIN2" + L _ERR_CONST_ + LAR2_ACCU1 + L NoneW[AR2,P#0.0] + T "w_Temp" + AUF DIB[AR?,P#0.0] + L NoneD[AR2,P#2.0] + OD DW#16#0100_0000 + LAR2_ACCU1 + L NoneB[AR2,P#0.0] + T "yMaxZiel" + + L 0 + T "yAnzChar" + CLR + = "b_L_Null" + = "b_PgAnz1" + + L "L" + GT_I + CAC + L "P" + ADD_I + O _Statusword_? + = "b_Fehl" + JC AZIL + + L "P" + L 0 + EQ_I + = "b_P_Null" + JC QUE2 + + L "L" + EQ_I + = "b_L_Null" + L "yAnzIN1" + JC LCNT + + L "P" + L "yAnzIN1" + GT_I + = "b_PgAnz1" + JC LCNT + CAC + DEC 1 + + LCNT: L "yMaxZiel" + GT_I + S "b_Fehl" + JC VGL1 + CAC + VGL1: L 0 + ADD_I + JZ QUE2 + T "yAnzChar" + + AUF DBB[AR?,P#0.0] + LOP1: T "yLoopCnt" + L NoneB[AR1,P#2.0] + T NoneB[AR2,P#2.0] + ADDAR1 P#1.0 + ADDAR2 P#1.0 + L "yLoopCnt" + LOOP LOP1 + TAR1_ACCU1 + T "d_AR_IN1" + QUE2: O "b_L_Null" + O "b_Fehl" + JC AZIL + + AUF DBB[AR?,P#0.0] + L "d_AR_IN2" + LAR1_ACCU1 + L "yMaxZiel" + L "yAnzChar" + SUB_I + L "yAnzIN2" + GE_I + JC VGL2 + S "b_Fehl" + CAC + VGL2: L 0 + ADD_I + T "w_Temp" + JZ QUE3 + L "yAnzChar" + ADD_I + T "yAnzChar" + L "w_Temp" + LOP2: T "yLoopCnt" + L NoneB[AR1,P#2.0] + T NoneB[AR2,P#2.0] + ADDAR1 P#1.0 + ADDAR2 P#1.0 + L "yLoopCnt" + LOOP LOP2 + + QUE3: A "b_PgAnz1" + JC AZIL + + L "d_AR_IN1" + L "L" + SLW 3 + ADD_D + LAR1_ACCU1 + + AUF DBB[AR?,P#0.0] + L "yAnzIN1" + A "b_P_Null" + JC PNUL + L "P" + DEC 1 + SUB_I + PNUL: L "L" + SUB_I + JMZ AZIL + T "w_Temp" + L "yMaxZiel" + L "yAnzChar" + SUB_I + L "w_Temp" + GE_I + JC VGL3 + S "b_Fehl" + CAC + VGL3: L 0 + ADD_I + T "w_Temp" + JZ AZIL + L "yAnzChar" + ADD_I + T "yAnzChar" + L "w_Temp" + LOP3: T "yLoopCnt" + L NoneB[AR1,P#2.0] + T NoneB[AR2,P#2.0] + ADDAR1 P#1.0 + ADDAR2 P#1.0 + L "yLoopCnt" + LOOP LOP3 + + AZIL: TAR2_ACCU1 + L "yAnzChar" + SLW 3 + SUB_D + LAR2_ACCU1 + L "yAnzChar" + T NoneB[AR2,P#1.0] + AN "b_Fehl" + JC ENDE + CLR + SAVE + ENDE: BE + + // --- END STL Network 1 --- + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ReadAnalogIn.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ReadAnalogIn.md new file mode 100644 index 0000000..12de661 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ReadAnalogIn.md @@ -0,0 +1,215 @@ +```pascal +// Block Type: FC +// Block Number: 1971 +// Original Network Languages: STL + +FUNCTION "ReadAnalogIn" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + PEW : Word; + MAX_Analog_Value : Int; + MIN_Analog_Value : Int; +END_VAR + +VAR_INOUT + ANALOG : STRUCT + Spare00 : Bool; + Spare01 : Bool; + Wait : Bool; + Alarm : Bool; + Mask : Bool; + _LessThanSP : Bool; + _GreaterThanSP : Bool; + Config : Bool; + Spare10 : Bool; + Spare11 : Bool; + Spare12 : Bool; + _AckAlarm : Bool; + PV : Real; + SP : Real; + Offset : Real; + Zero : Real; + Span : Real; + PVFiltered : Real; + END_STRUCT; + +END_VAR + +VAR_TEMP + Range : Real; + Scale : Real; + Scale_Range : Real; + Analog_Value_REAL : Real; + Buffer : Bool; + Max_Analog_REAL : Real; + Min_Analog_REAL : Real; + TUDT82 : STRUCT + Spare00 : Bool; + Spare01 : Bool; + Wait : Bool; + Alarm : Bool; + Mask : Bool; + _LessThanSP : Bool; + _GreaterThanSP : Bool; + Config : Bool; + Spare10 : Bool; + Spare11 : Bool; + Spare12 : Bool; + _AckAlarm : Bool; + PV : Real; + SP : Real; + Offset : Real; + Zero : Real; + Span : Real; + PVFiltered : Real; + END_STRUCT; + + End_UDT82 : Byte; + Lenght_UDT82 : Int; + CAR1 : DWord; + CAR1Int : Word; + Index : Int; + PIndex : DInt; +END_VAR + +BEGIN + + // Network 1: MIX - SAFETIES (Original Language: STL) + + // --- BEGIN STL Network 1 --- + + AN "HMI_Blender_Parameters".Processor_Options.Blender_OPT._Simulation + A "ANALOG".Config + JC M001 + L 0.0 + T "ANALOG".PV + CLR + = "ANALOG".Wait + = "ANALOG".Alarm + BEU + + // --- END STL Network 1 --- + + // Network 2: (Original Language: STL) + + // --- BEGIN STL Network 2 --- + + M001: NOP_0 + + L _ERR_CONST_ + L _ERR_CONST_ + SUB_D + SRD 3 + T "Lenght_UDT82" + + TAR1 "CAR1" + L "CAR1" + SRD 3 + T "CAR1Int" + L "CAR1Int" + L "Lenght_UDT82" + DIV_D + T "Index" + + L "Index" + ITD + L DINT#8 + MUL_D + T "PIndex" + L "PIndex" + LAR2_ACCU1 + AUF DI "ReadAnalogIn_Fault_DB" + + L "PEW" + ITD + DTR + T "Analog_Value_REAL" + L "MIN_Analog_Value" + ITD + DTR + T "Min_Analog_REAL" + L "MAX_Analog_Value" + ITD + DTR + T "Max_Analog_REAL" + + // --- END STL Network 2 --- + + // Network 3: MIX - SAFETIES (Original Language: STL) + // Check if Analog_Value is correct + + // --- BEGIN STL Network 3 --- + + A_BRACK + L "PEW" + L W#16#799e + GT_I + BRACKET + JC M010 + A_BRACK + L "PEW" + L -3456 + LT_I + BRACKET + JC M010 + L 0 + T DIB[AR2,P#44.0] + JU M012 + M010: AN "ANALOG".Mask + JC M014 + L 0 + T DIB[AR2,P#44.0] + JU M012 + + M015: L DIB[AR2,P#0.0] + L DIB[AR2,P#44.0] + LE_I + JC M014 + AN CLK_1.0S + JC M012 + ADD 1 + T DIB[AR2,P#44.0] + JU M012 + M014: SET + S "ANALOG".Alarm + + // --- END STL Network 3 --- + + // Network 4: (Original Language: STL) + + // --- BEGIN STL Network 4 --- + + M012: A "gIN_ResetBtn" + JCN M013 + L 0 + T DIB[AR2,P#44.0] + SET + R "ANALOG".Alarm + M013: L "Analog_Value_REAL" + L "Min_Analog_REAL" + SUB_R + T "Scale" + L "Max_Analog_REAL" + L "Min_Analog_REAL" + SUB_R + T "Range" + L "Scale" + L "Range" + DIV_R + T "Scale_Range" + L "ANALOG".Span + L "ANALOG".Zero + SUB_R + L "Scale_Range" + MUL_R + L "ANALOG".Zero + ADD_R + T "ANALOG".PV + + // --- END STL Network 4 --- + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ReadAnalogIn_Fault_DB.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ReadAnalogIn_Fault_DB.md new file mode 100644 index 0000000..75f676f --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ReadAnalogIn_Fault_DB.md @@ -0,0 +1,18 @@ +```pascal +// Block Type: GlobalDB +// Block Number: 871 + +DATA_BLOCK "ReadAnalogIn_Fault_DB" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + DelaySP : "Struct"; + DelayElapsed : "Struct"; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/RecipeCalculation.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/RecipeCalculation.md new file mode 100644 index 0000000..3071e6c --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/RecipeCalculation.md @@ -0,0 +1,76 @@ +```pascal +FUNCTION "RecipeCalculation" : Void +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +NAME : 'Name' +VERSION : 1.0 + VAR_TEMP + mAuxONS_Q : Bool; + mSyrPerc : Real; + END_VAR + + +BEGIN + + + "ONS_R"(Enable_ONS := "HMI_Variables_Cmd".Recipe.Page_Running, + Aux_ONS := "mRecipeCalculationONS", + ONS_R => #mAuxONS_Q ); + + //Syrup Brix + IF NOT "HMI_Variables_Cmd".Recipe.Get_current_Active_Recip AND "Blender_Variables_Pers".SyrupBrix_Aux<>"HMI_Recipe_Edit".Actual_Recipe_Parameters._SyrupBrix + AND "HMI_Variables_Cmd".Recipe.Page_Running AND NOT #mAuxONS_Q THEN + (* classic code: "HMI_Recipe_Edit".Actual_Recipe_Parameters._SyrupDensity := 100/(("HMI_Recipe_Edit".Actual_Recipe_Parameters._SyrupBrix/1.589+100)-"HMI_Recipe_Edit".Actual_Recipe_Parameters._SyrupBrix);*) + "HMI_Recipe_Edit".Actual_Recipe_Parameters._SyrupDensity := 100/(("HMI_Recipe_Edit".Actual_Recipe_Parameters._SyrupBrix/REAL#1.589+100)-"HMI_Recipe_Edit".Actual_Recipe_Parameters._SyrupBrix); + END_IF; + + IF "HMI_Variables_Cmd".Recipe.Page_Running THEN + "Blender_Variables_Pers".SyrupBrix_Aux := "HMI_Recipe_Edit".Actual_Recipe_Parameters._SyrupBrix ; + END_IF ; + + // Prod Brix Offset - Prod Brix - Ratio + IF "HMI_Recipe_Edit".Actual_Recipe_Parameters._Type = 2 THEN + IF "HMI_Recipe_Edit".Actual_Recipe_Parameters._SyrupBrix <> 0 AND "HMI_Recipe_Edit".Actual_Recipe_Parameters._SyrupFactor <> 0 THEN + #mSyrPerc := ("HMI_Recipe_Edit".Actual_Recipe_Parameters._ProductBrix+"HMI_Recipe_Edit".Actual_Recipe_Parameters._ProdBrixOffset)/ + ("HMI_Recipe_Edit".Actual_Recipe_Parameters._SyrupBrix*"HMI_Recipe_Edit".Actual_Recipe_Parameters._SyrupFactor) ; + "HMI_Recipe_Edit".Actual_Recipe_Parameters._Ratio := (1/#mSyrPerc-1)*"HMI_Recipe_Edit".Actual_Recipe_Parameters._SyrupDensity ; + END_IF; + END_IF; + IF "HMI_Recipe_Edit".Actual_Recipe_Parameters._Type = 3 THEN + "HMI_Recipe_Edit".Actual_Recipe_Parameters._ProductBrix := "HMI_Recipe_Edit".Actual_Recipe_Parameters._SyrupBrix*"HMI_Recipe_Edit".Actual_Recipe_Parameters._SyrupDensity/ + ("HMI_Recipe_Edit".Actual_Recipe_Parameters._Ratio+"HMI_Recipe_Edit".Actual_Recipe_Parameters._SyrupDensity)+"HMI_Recipe_Edit".Actual_Recipe_Parameters._ProdBrixOffset ; + END_IF; + + IF ("HMI_Recipe_Edit".Actual_Recipe_Parameters._CO2Vols * "Blender_Variables".gFirstProdExtraCO2Fact * "HMI_Recipe_Edit".Actual_Recipe_Parameters._CO2Fact) > 0 THEN + "HMI_Variables_Status".Analog_Values.EqPressure := "Blender_Variables".gCO2EqPressure (*"CO2EqPress"(i_CO2Vol := "HMI_Recipe_Edit".Actual_Recipe_Parameters._CO2Vols * "Blender_Variables".gFirstProdExtraCO2Fact + * "HMI_Recipe_Edit".Actual_Recipe_Parameters._CO2Fact , + i_Temp := "HMI_Recipe_Edit".Actual_Recipe_Parameters._SP_ProdTemp )*); + ELSE + (* classic code: "HMI_Variables_Status".Analog_Values.EqPressure := 0.0;*) + "HMI_Variables_Status".Analog_Values.EqPressure := REAL#0.0; + END_IF; + + IF "HMI_Blender_Parameters".Processor_Options.Blender_OPT._CO2_GAS2_Injection THEN + IF "HMI_Recipe_Edit".Actual_Recipe_Parameters._GAS2_Injection THEN + (* classic code: "HMI_Recipe_Edit".Actual_Recipe_Parameters._CO2Vols := 0.0 ;*) + "HMI_Recipe_Edit".Actual_Recipe_Parameters._CO2Vols := REAL#0.0 ; + (* classic code: "HMI_Recipe_Edit".Actual_Recipe_Parameters._CO2Fact := 0.0 ;*) + "HMI_Recipe_Edit".Actual_Recipe_Parameters._CO2Fact := REAL#0.0 ; + ELSE + (* classic code: "HMI_Recipe_Edit".Actual_Recipe_Parameters._Gas2Vols := 0.0 ;*) + "HMI_Recipe_Edit".Actual_Recipe_Parameters._Gas2Vols := REAL#0.0 ; + (* classic code: "HMI_Recipe_Edit".Actual_Recipe_Parameters._Gas2Fact := 0.0 ;*) + "HMI_Recipe_Edit".Actual_Recipe_Parameters._Gas2Fact := REAL#0.0 ; + END_IF; + ELSE + (* classic code: "HMI_Recipe_Edit".Actual_Recipe_Parameters._Gas2Vols := 0.0 ;*) + "HMI_Recipe_Edit".Actual_Recipe_Parameters._Gas2Vols := REAL#0.0 ; + (* classic code: "HMI_Recipe_Edit".Actual_Recipe_Parameters._Gas2Fact := 0.0 ;*) + "HMI_Recipe_Edit".Actual_Recipe_Parameters._Gas2Fact := REAL#0.0 ; + END_IF ; + + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/RecipeEditDataSave.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/RecipeEditDataSave.md new file mode 100644 index 0000000..3f4c362 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/RecipeEditDataSave.md @@ -0,0 +1,130 @@ +```pascal +// Block Type: GlobalDB +// Block Number: 400 + +DATA_BLOCK "RecipeEditDataSave" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Save_Recipe_Aux : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := TRUE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := TRUE; + _Deareation_Co2 : Bool := TRUE; + _Pasteur : Bool; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 3; + _ProdMeterRecipeNum : Int := 0; + _SyrupBrix : Real := 51.37; + _SyrupDensity : Real := 1.237; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 9.949066; + _ProductionRate : Real := 350.0; + _Ratio : Real := 5.15; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 4.15; + _CO2Fact : Real := 1.1; + _ProdTankPress : Real := 4.5; + _SP_ProdTemp : Real := 2.0; + _PrdTankMinLevel : Real := 20.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 0.6; + _FillingValveHead_SP : Real := 700.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real := 1.05; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 1; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.5; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 30.0; + _ProdPump2_Hz : Real := 30.0; + _Prod_Temp_Heating_Cooling : Int; + END_STRUCT; + + Recipe_Null_Aux : STRUCT + _Name : String[32] := ''; + _EnProdTemp : Bool := FALSE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := FALSE; + _Pasteur : Bool; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 1; + _ProdMeterRecipeNum : Int := 0; + _SyrupBrix : Real := 50.0; + _SyrupDensity : Real := 1.2558; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 10.45; + _ProductionRate : Real := 900.0; + _Ratio : Real := 20.0; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 0.0; + _CO2Fact : Real := 1.0; + _ProdTankPress : Real := 1.0; + _SP_ProdTemp : Real := 10.0; + _PrdTankMinLevel : Real := 10.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 0.0; + _FillingValveHead_SP : Real := 0.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real := 0.97; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 1.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 0; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/RecipeManagement_Data.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/RecipeManagement_Data.md new file mode 100644 index 0000000..8857a37 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/RecipeManagement_Data.md @@ -0,0 +1,56 @@ +```pascal +// Block Type: InstanceDB +// Block Number: 398 + +DATA_BLOCK "RecipeManagement_Data" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Active_Recipe_First : Bool := FALSE; + Active_Recipe_Start_FP : Bool := FALSE; + Active_Recipe_Run : Bool := FALSE; + Active_Recipe_Source_DB : Int := 418; + Read_FP : Bool := FALSE; + Read_Start : Bool := FALSE; + Read_First_FP : Bool := FALSE; + Read_First_Start : Bool := FALSE; + Read_Change : Bool := FALSE; + Work_Recipe_Save : Int := 18; + Work_Recipe_Source_DB : Int := 418; + Loop_Count : Int := 1; + Delete_FP : Bool := FALSE; + Delete_Start : Bool := FALSE; + Delete_Write : Bool := FALSE; + Copy_FP : Bool := FALSE; + Copy_Request : Bool := FALSE; + Copy_Start : Bool := FALSE; + Copy_Recipe_Source_DB : Int := 418; + Copy_Write : Bool := FALSE; + Write_FP : Bool := FALSE; + Write_Start : Bool := FALSE; + Write_REQ : Bool := FALSE; + Save_Active_Recipe : Bool := TRUE; + Recipe_Destination_DB : Int := 418; + Save_requested_FP : Bool := FALSE; + Save_requested_veri : Bool := FALSE; + Save_requested_read_FP : Bool := TRUE; + Save_requested_read_veri : Bool := FALSE; + Read_act_BUSY : Bool := FALSE; + Read_wrk_BUSY : Bool := FALSE; + Read_wrk_Running : Bool := FALSE; + Write_BUSY : Bool := FALSE; + Upload_FP : Bool := FALSE; + Upload_Start : Bool := FALSE; + Download_FP : Bool := FALSE; + Download_Start : Bool := FALSE; + Save_requested_upldPC_FP : Bool := FALSE; + Save_requested_upldPC_ve : Bool := FALSE; + mUploadPC : Bool := FALSE; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/RecipeManagement___Prod.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/RecipeManagement___Prod.md new file mode 100644 index 0000000..85861f5 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/RecipeManagement___Prod.md @@ -0,0 +1,1048 @@ +```pascal +// Block Type: FB +// Block Name (Original): RecipeManagement - Prod +// Block Number: 1798 +// Original Network Languages: STL +// Block Comment: +// Machine Main Recipe Management +// DB1001.DBB70 -> Active Recipe +// DB1008 -> Working Recipe (Edit, Copy, Erase) +// DB1009 -> Recipe Name Data Base +// DB400 -> Working Recipe (Data Save) +// DB401 -:- DB500 -> Recipe 1-:-100 data + +FUNCTION_BLOCK "RecipeManagement___Prod" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + HMI_Recipe_Main_Page : Bool; + HMI_Recipe_Page_Running : Bool; + Active_Recipe_Start : Bool; + Edit : Bool; + Write : Bool; + Read : Bool; + Delete : Bool; + Copy : Bool; + Upload : Bool; + UploadPC : Bool; + Download : Bool; + Max_Recipe_Number : Int; +END_VAR + +VAR_OUTPUT + Save_Requested : Bool; + Work_Rec_is_Active_Recip : Bool; + Copy_Rec_is_Active_Recip : Bool; + RecipeManagement_Busy : Bool; +END_VAR + +VAR_INOUT + Active_Recipe_Running : Int; + Active_Recipe_Req : Int; + Work_Recipe : Int; + Copy_to : Int; + Work_Rec_is_Active_Recip_IO : Bool; + Save_Requested_IO : Bool; + Copy_Rec_is_Active_Recip_IO : Bool; +END_VAR + +VAR_STAT + Active_Recipe_First : Bool; + Active_Recipe_Start_FP : Bool; + Active_Recipe_Run : Bool; + Active_Recipe_Source_DB : Int; + Read_FP : Bool; + Read_Start : Bool; + Read_First_FP : Bool; + Read_First_Start : Bool; + Read_Change : Bool; + Work_Recipe_Save : Int; + Work_Recipe_Source_DB : Int; + Loop_Count : Int; + Delete_FP : Bool; + Delete_Start : Bool; + Delete_Write : Bool; + Copy_FP : Bool; + Copy_Request : Bool; + Copy_Start : Bool; + Copy_Recipe_Source_DB : Int; + Copy_Write : Bool; + Write_FP : Bool; + Write_Start : Bool; + Write_REQ : Bool; + Save_Active_Recipe : Bool; + Recipe_Destination_DB : Int; + Save_requested_FP : Bool; + Save_requested_veri : Bool; + Save_requested_read_FP : Bool; + Save_requested_read_veri : Bool; + Read_act_BUSY : Bool; + Read_wrk_BUSY : Bool; + Read_wrk_Running : Bool; + Write_BUSY : Bool; + Upload_FP : Bool; + Upload_Start : Bool; + Download_FP : Bool; + Download_Start : Bool; + Save_requested_upldPC_FP : Bool; + Save_requested_upldPC_ve : Bool; + mUploadPC : Bool; +END_VAR + +VAR_TEMP + Active_Recipe_Source : Int; + Work_Recipe_Source : Int; + Recipe_Destination : Int; + Read_act_DB : "Any"; + Read_act_RET_VAL : Int; + Read_wrk_REQ : Bool; + Read_wrk_DB : "Any"; + Read_wrk_RET_VAL : Int; + Write_DB : "Any"; + Write_RET_VAL : Int; + Buffer_Pointer : DInt; + Upload_RET_VAL : Int; + Download_RET_VAL : Int; + TUDT904 : STRUCT + _Name : String[32]; + _EnProdTemp : Bool; + _EnDeaireation : Bool; + _GAS2_Injection : Bool; + _AirSteril : Bool; + _EnBlowOffProdPipeCo2Fil : Bool; + _Deareation_Vacum : Bool; + _Deareation_Co2 : Bool; + _Pasteur : Bool; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int; + _ProdMeterRecipeNum : Int; + _SyrupBrix : Real; + _SyrupDensity : Real; + _SyrupFactor : Real; + _ProductBrix : Real; + _ProductionRate : Real; + _Ratio : Real; + _ProdBrixOffset : Real; + _CO2Vols : Real; + _CO2Fact : Real; + _ProdTankPress : Real; + _SP_ProdTemp : Real; + _PrdTankMinLevel : Real; + _WaterValveSave : Real; + _SyrupValveSave : Real; + _CarboCO2ValveSave : Real; + _ProdMeterHighBrix : Real; + _ProdMeterLowBrix : Real; + _ProdMeterHighCO2 : Real; + _ProdMeterLowCO2 : Real; + _ProdMeter_ZeroCO2 : Real; + _ProdMeter_ZeroBrix : Real; + _ProdHighCond : Real; + _ProdLowCond : Real; + _BottleSize : Real; + _FillingValveHead_SP : Real; + _SyrMeter_ZeroBrix : Real; + _FirstProdExtraCO2Fact : Real; + _Gas2Vols : Real; + _Gas2Fact : Real; + _SyrupPumpFreq : Real; + _WaterPumpFreq : Real; + _CO2_Air_N2_PressSelect : Int; + _KFactRVM304BlowOff : Real; + _ProdRecircPumpFreq : Real; + _DeareationFactor : Real; + _CarboCO2Pressure : Real; + _InjCO2Press_Offset : Real; + _ProdPump1_Hz : Real; + _ProdPump2_Hz : Real; + _Prod_Temp_Heating_Cooling : Int; + END_STRUCT; + + End_UDT904 : Byte; + Lenght_UDT904 : Int; + PNullRecipe : DInt; + Name_String_App : String; +END_VAR + +BEGIN + + // Network 1: (Original Language: STL) + // Active Recipe Request Number Control + + // --- BEGIN STL Network 1 --- + + CALL "LIMIT_I" + + L _ERR_CONST_ + L _ERR_CONST_ + SUB_D + SRD 3 + T "Lenght_UDT904" + + // --- END STL Network 1 --- + + // Network 2: (Original Language: STL) + // Active Recipe Number Control + + // --- BEGIN STL Network 2 --- + + L "Active_Recipe_Running" + L 1 + LT_I + JC aact + L "Active_Recipe_Running" + L "Max_Recipe_Number" + GT_I + JC aact + JU bact + aact: S "Active_Recipe_First" + bact: CALL "LIMIT_I" + + // --- END STL Network 2 --- + + // Network 3: (Original Language: STL) + // Active Recipe Number Start + + // --- BEGIN STL Network 3 --- + + A "Active_Recipe_Start" + Rise "Active_Recipe_Start_FP" + = "Active_Recipe_Run" + + A "Active_Recipe_Run" + O "Active_Recipe_First" + O "Read_act_BUSY" + JC Rrun + JU Erun + Rrun: R "Active_Recipe_First" + L "Active_Recipe_Req" + T "Active_Recipe_Running" + ADD 400 + T "Active_Recipe_Source_DB" + + LAR1 _ERR_CONST_ + L BYTE#16#10 + T LocalB[AR1,P#0.0] + L BYTE#16#02 + T LocalB[AR1,P#1.0] + L "Lenght_UDT904" + T LocalW[AR1,P#2.0] + L "Active_Recipe_Source_DB" + T LocalW[AR1,P#4.0] + L P#DBX0.0 + T LocalD[AR1,P#6.0] + CALL _Call_? + Erun: NOP_0 + A "Read_act_BUSY" + = "RecipeManagement_Busy" + + // --- END STL Network 3 --- + + // Network 4: Recipe on Editing is the same number of Active Recipe (Original Language: STL) + // Work Recipe Number Control + + // --- BEGIN STL Network 4 --- + + CALL "LIMIT_I" + + L "Work_Recipe" + L "Active_Recipe_Running" + EQ_I + = "Work_Rec_is_Active_Recip" + = "Work_Rec_is_Active_Recip_IO" + + // --- END STL Network 4 --- + + // Network 5: (Original Language: STL) + // Work Recipe READ (Data Uploading from archive) + + // --- BEGIN STL Network 5 --- + + A "Read" + O "HMI_Recipe_Page_Running" + Rise "Read_FP" + S "Read_Start" + L "Work_Recipe_Save" + L "Work_Recipe" + NE_I + = "Read_Change" + + A "Read_Change" + O "Read_Start" + = "Read_wrk_REQ" + + A "Read_wrk_REQ" + JC Rupl + A "Read_wrk_BUSY" + O "Read_wrk_Running" + JC Cupl + JU Eupl + Rupl: NOP_0 + A "mUploadPC" + JC Eupl + L "Work_Recipe" + ADD 400 + T "Work_Recipe_Source_DB" + + Cupl: LAR1 _ERR_CONST_ + L BYTE#16#10 + T LocalB[AR1,P#0.0] + L BYTE#16#02 + T LocalB[AR1,P#1.0] + L "Lenght_UDT904" + T LocalW[AR1,P#2.0] + L "Work_Recipe_Source_DB" + T LocalW[AR1,P#4.0] + L P#DBX0.0 + T LocalD[AR1,P#6.0] + CALL _Call_? + A "Read_wrk_BUSY" + S "Read_wrk_Running" + + A "Read_wrk_Running" + AN "Read_wrk_BUSY" + JC Dupl + JU Eupl + Dupl: R "Read_Start" + R "Read_wrk_Running" + L "Work_Recipe" + T "Work_Recipe_Save" + + L "Work_Recipe_Save" + L 34 + MUL_I + SLW 3 + T "Buffer_Pointer" + LAR1_ACCU1 + + AUF "HMI_Recipe_Edit" + L DBW2.0 + AUF "HMI_Recipe_Name" + T DBW[AR1,P#2.0] + ADDAR1 P#4.0 + + AUF "HMI_Recipe_Edit" + L DBD4.0 + AUF "HMI_Recipe_Name" + T DBD[AR1,P#0.0] + ADDAR1 P#4.0 + + AUF "HMI_Recipe_Edit" + L DBD8.0 + AUF "HMI_Recipe_Name" + T DBD[AR1,P#0.0] + ADDAR1 P#4.0 + + AUF "HMI_Recipe_Edit" + L DBD12.0 + AUF "HMI_Recipe_Name" + T DBD[AR1,P#0.0] + ADDAR1 P#4.0 + + AUF "HMI_Recipe_Edit" + L DBD16.0 + AUF "HMI_Recipe_Name" + T DBD[AR1,P#0.0] + ADDAR1 P#4.0 + + AUF "HMI_Recipe_Edit" + L DBD20.0 + AUF "HMI_Recipe_Name" + T DBD[AR1,P#0.0] + ADDAR1 P#4.0 + + AUF "HMI_Recipe_Edit" + L DBD24.0 + AUF "HMI_Recipe_Name" + T DBD[AR1,P#0.0] + ADDAR1 P#4.0 + + AUF "HMI_Recipe_Edit" + L DBD28.0 + AUF "HMI_Recipe_Name" + + T DBD[AR1,P#0.0] + LAR1 P#0.0 + L "Lenght_UDT904" + L 2 + DIV_I + + Bupl: T "Loop_Count" + AUF "HMI_Recipe_Edit" + L DBD[AR1,P#0.0] + AUF "RecipeEditDataSave" + T DBD[AR1,P#0.0] + ADDAR1 P#2.0 + L "Loop_Count" + LOOP Bupl + Eupl: NOP_0 + + // --- END STL Network 5 --- + + // Network 6: (Original Language: STL) + // Work Recipe Data DELETE (Erase DB1008 Data + Write in Work_Recipe_Source) + + // --- BEGIN STL Network 6 --- + + + A "Delete" + Rise "Delete_FP" + = "Delete_Start" + + A "Delete_Start" + AN "Work_Rec_is_Active_Recip_IO" + AN "Save_Requested_IO" + AN "Write" + AN "Write_BUSY" + JC Rdel + JU Edel + Rdel: LAR1 P#0.0 + L "Lenght_UDT904" + ITD + L DINT#8 + MUL_D + T "PNullRecipe" + L "Lenght_UDT904" + L 2 + DIV_I + Bdel: T "Loop_Count" + L "Work_Recipe_Source_DB" + T "Work_Recipe_Source" + AUF "RecipeEditDataSave" + L DBW[AR?,P#0.0] + AUF "HMI_Recipe_Edit" + T DBW[AR1,P#2.0] + ADDAR1 P#2.0 + L 16 + L "PNullRecipe" + ADD_D + T "PNullRecipe" + L "Loop_Count" + LOOP Bdel + SET + S "Delete_Write" + Edel: NOP_0 + + // --- END STL Network 6 --- + + // Network 7: (Original Language: STL) + // Work Recipe Data COPY (DB1008 Data Write to different Recipe DB + // Copy_Recipe_Source_DB) + + // --- BEGIN STL Network 7 --- + + CALL "LIMIT_I" + + A "Copy" + Rise "Copy_FP" + = "Copy_Request" + + L "Copy_to" + L "Active_Recipe_Running" + EQ_I + = "Copy_Rec_is_Active_Recip" + + AN "Copy_Rec_is_Active_Recip_IO" + AN "Save_Requested_IO" + AN "Write" + AN "Write_BUSY" + A "Copy_Request" + = "Copy_Start" + + A "Copy_Start" + JC Ccop + JU Ecop + Ccop: L "Copy_to" + ADD 400 + T "Copy_Recipe_Source_DB" + S "Copy_Write" + Ecop: NOP_0 + + // --- END STL Network 7 --- + + // Network 8: (Original Language: STL) + // Work Recipe WRITE (Data Downloading to archive) + + // --- BEGIN STL Network 8 --- + + A "Write" + Rise "Write_FP" + = "Write_Start" + + A "Write_Start" + O "Delete_Write" + O "Copy_Write" + AN "Write_BUSY" + = "Write_REQ" + + A "Write_Start" + O "Delete_Write" + AN "Write_BUSY" + JC Rdow + A "Write_BUSY" + JC Cdow + A "Copy_Write" + JC CoDB + JU Edow + CoDB: R "Copy_Write" + L "Copy_Recipe_Source_DB" + T "Recipe_Destination_DB" + L "Copy_to" + JU Copy + Rdow: R "Save_Requested" + R "Save_Requested_IO" + R "Delete_Write" + R "mUploadPC" + L "Work_Recipe_Source_DB" + T "Recipe_Destination_DB" + + L "Work_Recipe_Save" + L "Active_Recipe_Running" + EQ_I + = "Save_Active_Recipe" + + LAR1 P#0.0 + L "Lenght_UDT904" + L 2 + DIV_I + Bdow: T "Loop_Count" + AUF "HMI_Recipe_Edit" + L DBD[AR1,P#0.0] + AUF "RecipeEditDataSave" + T DBD[AR1,P#0.0] + AN "Save_Active_Recipe" + JC Ndow + AUF "HMI_Blender_Parameters" + T DBD[AR1,P#70.0] + Ndow: ADDAR1 P#2.0 + L "Loop_Count" + LOOP Bdow + + L "Work_Recipe_Save" + Copy: L 34 + MUL_I + SLW 3 + T "Buffer_Pointer" + LAR1_ACCU1 + + L "Work_Recipe_Save" + L 1 + EQ_I + JCN R02 + + R01: CALL _Call_? + + R02: L "Work_Recipe" + L 2 + EQ_I + JCN R03 + + CALL _Call_? + + R03: L "Work_Recipe" + L 3 + EQ_I + JCN R04 + + CALL _Call_? + + R04: L "Work_Recipe" + L 4 + EQ_I + JCN R05 + + CALL _Call_? + + R05: L "Work_Recipe" + L 5 + + EQ_I + JCN R06 + + CALL _Call_? + + R06: L "Work_Recipe" + L 6 + EQ_I + JCN R07 + + CALL _Call_? + + R07: L "Work_Recipe" + L 7 + EQ_I + JCN R08 + + CALL _Call_? + + R08: L "Work_Recipe" + L 8 + EQ_I + JCN R09 + + CALL _Call_? + + R09: L "Work_Recipe" + L 9 + EQ_I + JCN R10 + + CALL _Call_? + + R10: L "Work_Recipe" + L 10 + EQ_I + JCN R11 + + CALL _Call_? + + R11: L "Work_Recipe" + L 11 + EQ_I + JCN R12 + + CALL _Call_? + + R12: L "Work_Recipe" + L 12 + EQ_I + JCN R13 + + CALL _Call_? + + R13: L "Work_Recipe" + L 13 + EQ_I + JCN R14 + + CALL _Call_? + + R14: L "Work_Recipe" + L 14 + EQ_I + JCN R15 + + CALL _Call_? + + R15: L "Work_Recipe" + L 15 + EQ_I + JCN R16 + + CALL _Call_? + + R16: L "Work_Recipe" + L 16 + EQ_I + JCN R17 + + CALL _Call_? + + R17: L "Work_Recipe" + L 17 + EQ_I + JCN R18 + + CALL _Call_? + + R18: L "Work_Recipe" + L 18 + EQ_I + JCN R19 + + CALL _Call_? + + R19: L "Work_Recipe" + L 19 + EQ_I + JCN R20 + + CALL _Call_? + + R20: L "Work_Recipe" + L 20 + EQ_I + JCN R21 + + CALL _Call_? + + R21: L "Work_Recipe" + L 21 + EQ_I + JCN R22 + + CALL _Call_? + + R22: L "Work_Recipe" + L 22 + EQ_I + JCN R23 + + CALL _Call_? + + R23: L "Work_Recipe" + L 23 + EQ_I + JCN R24 + + CALL _Call_? + + R24: L "Work_Recipe" + L 24 + EQ_I + JCN R25 + + CALL _Call_? + + R25: L "Work_Recipe" + L 25 + EQ_I + JCN R26 + + CALL _Call_? + + R26: L "Work_Recipe" + L 26 + EQ_I + JCN R27 + + CALL _Call_? + + R27: L "Work_Recipe" + L 27 + EQ_I + JCN R28 + + CALL _Call_? + + R28: L "Work_Recipe" + L 28 + EQ_I + JCN R29 + + CALL _Call_? + + R29: L "Work_Recipe" + L +29 + EQ_I + JCN R30 + + CALL _Call_? + + R30: L "Work_Recipe" + L 30 + EQ_I + JCN R31 + + CALL _Call_? + + R31: L "Work_Recipe" + L 31 + EQ_I + JCN R32 + + CALL _Call_? + + R32: L "Work_Recipe" + L +32 + EQ_I + JCN R33 + + CALL _Call_? + + R33: L "Work_Recipe" + L 33 + EQ_I + JCN R34 + + CALL _Call_? + + R34: L "Work_Recipe" + L 34 + EQ_I + JCN R35 + + CALL _Call_? + + R35: L "Work_Recipe" + L 35 + EQ_I + JCN R36 + + CALL _Call_? + + R36: L "Work_Recipe" + L 36 + EQ_I + JCN R37 + + CALL _Call_? + + R37: L "Work_Recipe" + L 37 + EQ_I + JCN R38 + + CALL _Call_? + + R38: L "Work_Recipe" + L 38 + EQ_I + JCN R39 + + CALL _Call_? + + R39: L "Work_Recipe" + L 39 + EQ_I + JCN R40 + + CALL _Call_? + + R40: L "Work_Recipe" + L 40 + EQ_I + JCN R41 + + CALL _Call_? + + R41: L "Work_Recipe" + L 41 + EQ_I + JCN R42 + + CALL _Call_? + + R42: L "Work_Recipe" + L 42 + EQ_I + JCN R43 + + CALL _Call_? + + R43: L "Work_Recipe" + L 43 + EQ_I + JCN R44 + + CALL _Call_? + + R44: L "Work_Recipe" + L 44 + EQ_I + JCN R45 + + CALL _Call_? + + R45: L "Work_Recipe" + L 45 + EQ_I + JCN R46 + + CALL _Call_? + + R46: L "Work_Recipe" + L 46 + EQ_I + JCN R47 + + CALL _Call_? + + R47: L "Work_Recipe" + L 47 + EQ_I + JCN R48 + + CALL _Call_? + + R48: L "Work_Recipe" + L 48 + EQ_I + JCN R49 + + CALL _Call_? + + R49: L "Work_Recipe" + L 49 + EQ_I + JCN R50 + + CALL _Call_? + + R50: L "Work_Recipe" + L 50 + EQ_I + JCN Cdow + + CALL _Call_? + + Cdow: LAR1 _ERR_CONST_ + L BYTE#16#10 + T LocalB[AR1,P#0.0] + L BYTE#16#02 + + T LocalB[AR1,P#1.0] + L "Lenght_UDT904" + T LocalW[AR1,P#2.0] + L "Recipe_Destination_DB" + + T LocalW[AR1,P#4.0] + L P#DBX0.0 + T LocalD[AR1,P#6.0] + A "Write_REQ" + S M106.0 + + CALL _Call_? + Edow: NOP_0 + + // --- END STL Network 8 --- + + // Network 9: (Original Language: STL) + // Work Recipe SAVE REQUESTED + + // --- BEGIN STL Network 9 --- + + A "HMI_Recipe_Main_Page" + Rise "Save_requested_FP" + = "Save_requested_veri" + + AN "Read_wrk_Running" + Rise "Save_requested_read_FP" + = "Save_requested_read_veri" + + A "mUploadPC" + AN "UploadPC" + Rise "Save_requested_upldPC_FP" + = "Save_requested_upldPC_ve" + + A "Save_requested_veri" + O "Save_requested_read_veri" + O "Save_requested_upldPC_ve" + JC Vsav + JU Esav + Vsav: CLR + = "Save_Requested" + = "Save_Requested_IO" + LAR1 P#0.0 + L "Lenght_UDT904" + L 2 + DIV_I + Bsav: T "Loop_Count" + AUF "RecipeEditDataSave" + L DBD[AR1,P#0.0] + AUF "HMI_Recipe_Edit" + L DBD[AR1,P#0.0] + NE_D + JC Sreq + ADDAR1 P#2.0 + L "Loop_Count" + LOOP Bsav + JU Esav + Sreq: SET + = "Save_Requested" + = "Save_Requested_IO" + Esav: NOP_0 + + // --- END STL Network 9 --- + + // Network 10: to HMI (Original Language: STL) + // Active Recipe UPLOAD (Data Uploading from PLC) + + // --- BEGIN STL Network 10 --- + + A "Upload" + Rise "Upload_FP" + S "Upload_Start" + S "HMI_Variables_Cmd".Recipe.Get_current_Active_Recip + + AN "Upload_Start" + JC skip + + CALL _Call_? + SET + R "Upload_Start" + + skip: NOP_0 + + // --- END STL Network 10 --- + + // Network 11: (Original Language: STL) + // Active Recipe DOWNLOAD (Data Downloading to PLC) + + // --- BEGIN STL Network 11 --- + + A "Download" + Rise "Download_FP" + S "Download_Start" + + AN "Download_Start" + JC end + CALL _Call_? + SET + R "Download_Start" + + end: NOP_0 + + // --- END STL Network 11 --- + + // Network 12: (Original Language: STL) + + // --- BEGIN STL Network 12 --- + + A "UploadPC" + JCN Noup + S "mUploadPC" + Noup: A "Edit" + JCN Roup + R "mUploadPC" + Roup: NOP_0 + + // --- END STL Network 12 --- + + // Network 13: Control to avoid Air Sterile and N2 double selection (Original Language: STL) + + // --- BEGIN STL Network 13 --- + + A "M19157" + JC VAI + A "HMI_Recipe_Edit".Actual_Recipe_Parameters._GAS2_Injection + S "M19156" + AN "HMI_Recipe_Edit".Actual_Recipe_Parameters._GAS2_Injection + R "M19156" + A "M19156" + JC RES1 + + VAI: A "M19156" + JC RES1 + A "HMI_Recipe_Edit".Actual_Recipe_Parameters._AirSteril + S "M19157" + AN "HMI_Recipe_Edit".Actual_Recipe_Parameters._AirSteril + R "M19157" + A "M19157" + JC RES2 + JU FINE + + RES1: R "HMI_Recipe_Edit".Actual_Recipe_Parameters._AirSteril + R "M19157" + JU FINE + RES2: R "HMI_Recipe_Edit".Actual_Recipe_Parameters._GAS2_Injection + R "M19156" + FINE: NOP_0 + + // --- END STL Network 13 --- + + // Network 14: 0 = N2 not present; 1 = N2 present (Original Language: STL) + + // --- BEGIN STL Network 14 --- + + AN "HMI_Blender_Parameters".Processor_Options.Blender_OPT._CO2_GAS2_Injection + R "HMI_Recipe_Edit".Actual_Recipe_Parameters._GAS2_Injection + + // --- END STL Network 14 --- + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe_Prod.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe_Prod.md new file mode 100644 index 0000000..913a1f5 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe_Prod.md @@ -0,0 +1,61 @@ +# UDT: Recipe_Prod + +## Members + +| Name | Datatype | Start Value | Comment | +|---|---|---|---| +| `_Name` | `String[32]` | `None` | | +| `_EnProdTemp` | `Bool` | `` | | +| `_EnDeaireation` | `Bool` | `` | | +| `_GAS2_Injection` | `Bool` | `` | | +| `_AirSteril` | `Bool` | `` | | +| `_EnBlowOffProdPipeCo2Fil` | `Bool` | `` | | +| `_Deareation_Vacum` | `Bool` | `` | | +| `_Deareation_Co2` | `Bool` | `` | | +| `_Pasteur` | `Bool` | `` | | +| `_WaterSelection` | `Byte` | `` | | +| `_FillerNextRecipeNum` | `Byte` | `` | | +| `_BottleShape` | `Byte` | `` | | +| `_Type` | `Int` | `1` | | +| `_ProdMeterRecipeNum` | `Int` | `` | | +| `_SyrupBrix` | `Real` | `50.0` | | +| `_SyrupDensity` | `Real` | `1.2558` | | +| `_SyrupFactor` | `Real` | `1.0` | | +| `_ProductBrix` | `Real` | `10.45` | | +| `_ProductionRate` | `Real` | `900.0` | | +| `_Ratio` | `Real` | `20.0` | | +| `_ProdBrixOffset` | `Real` | `` | | +| `_CO2Vols` | `Real` | `` | | +| `_CO2Fact` | `Real` | `1.0` | | +| `_ProdTankPress` | `Real` | `1.0` | | +| `_SP_ProdTemp` | `Real` | `10.0` | | +| `_PrdTankMinLevel` | `Real` | `10.0` | | +| `_WaterValveSave` | `Real` | `` | | +| `_SyrupValveSave` | `Real` | `` | | +| `_CarboCO2ValveSave` | `Real` | `` | | +| `_ProdMeterHighBrix` | `Real` | `` | | +| `_ProdMeterLowBrix` | `Real` | `` | | +| `_ProdMeterHighCO2` | `Real` | `` | | +| `_ProdMeterLowCO2` | `Real` | `` | | +| `_ProdMeter_ZeroCO2` | `Real` | `` | | +| `_ProdMeter_ZeroBrix` | `Real` | `` | | +| `_ProdHighCond` | `Real` | `` | | +| `_ProdLowCond` | `Real` | `` | | +| `_BottleSize` | `Real` | `` | | +| `_FillingValveHead_SP` | `Real` | `` | | +| `_SyrMeter_ZeroBrix` | `Real` | `` | | +| `_FirstProdExtraCO2Fact` | `Real` | `0.97` | | +| `_Gas2Vols` | `Real` | `` | | +| `_Gas2Fact` | `Real` | `1.0` | | +| `_SyrupPumpFreq` | `Real` | `` | | +| `_WaterPumpFreq` | `Real` | `` | | +| `_CO2_Air_N2_PressSelect` | `Int` | `` | | +| `_KFactRVM304BlowOff` | `Real` | `` | | +| `_ProdRecircPumpFreq` | `Real` | `` | | +| `_DeareationFactor` | `Real` | `` | | +| `_CarboCO2Pressure` | `Real` | `` | | +| `_InjCO2Press_Offset` | `Real` | `` | | +| `_ProdPump1_Hz` | `Real` | `` | | +| `_ProdPump2_Hz` | `Real` | `` | | +| `_Prod_Temp_Heating_Cooling` | `Int` | `` | | + diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__01.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__01.md new file mode 100644 index 0000000..84e5f2e --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__01.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #01 +// Block Number: 401 + +DATA_BLOCK "Recipe__01" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := TRUE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := TRUE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 2; + _ProdMeterRecipeNum : Int := 0; + _SyrupBrix : Real := 41.81; + _SyrupDensity : Real := 1.1827; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 7.67; + _ProductionRate : Real := 540.0; + _Ratio : Real := 5.419261; + _ProdBrixOffset : Real := -0.18; + _CO2Vols : Real := 4.2; + _CO2Fact : Real := 1.05; + _ProdTankPress : Real := 4.5; + _SP_ProdTemp : Real := 11.0; + _PrdTankMinLevel : Real := 25.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 2.0; + _FillingValveHead_SP : Real := 1300.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real := 1.05; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 1; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.4; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 30.0; + _ProdPump2_Hz : Real := 30.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__02.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__02.md new file mode 100644 index 0000000..ba55853 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__02.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #02 +// Block Number: 402 + +DATA_BLOCK "Recipe__02" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := TRUE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := TRUE; + _Deareation_Co2 : Bool := TRUE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 2; + _ProdMeterRecipeNum : Int := 0; + _SyrupBrix : Real := 43.18; + _SyrupDensity : Real := 1.1879; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 12.3; + _ProductionRate : Real := 400.0; + _Ratio : Real := 2.965421; + _ProdBrixOffset : Real := 0.05; + _CO2Vols : Real := 3.2; + _CO2Fact : Real := 1.29; + _ProdTankPress : Real := 2.5; + _SP_ProdTemp : Real := 5.0; + _PrdTankMinLevel : Real := 20.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 0.5; + _FillingValveHead_SP : Real := 0.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real := 1.15; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 0; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.4; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 35.0; + _ProdPump2_Hz : Real := 35.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__03.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__03.md new file mode 100644 index 0000000..41aa8d5 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__03.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #03 +// Block Number: 403 + +DATA_BLOCK "Recipe__03" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := TRUE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := TRUE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 1; + _ProdMeterRecipeNum : Int := 0; + _SyrupBrix : Real := 55.61; + _SyrupDensity : Real := 1.0038; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 10.65; + _ProductionRate : Real := 300.0; + _Ratio : Real := 5.4; + _ProdBrixOffset : Real := -0.5; + _CO2Vols : Real := 4.3; + _CO2Fact : Real := 1.0; + _ProdTankPress : Real := 4.5; + _SP_ProdTemp : Real := 5.0; + _PrdTankMinLevel : Real := 35.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 0.25; + _FillingValveHead_SP : Real := 400.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real := 1.05; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 1; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__04.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__04.md new file mode 100644 index 0000000..64f746d --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__04.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #04 +// Block Number: 404 + +DATA_BLOCK "Recipe__04" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := TRUE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := TRUE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 2; + _ProdMeterRecipeNum : Int := 0; + _SyrupBrix : Real := 55.61; + _SyrupDensity : Real := 1.259654; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 10.65; + _ProductionRate : Real := 450.0; + _Ratio : Real := 5.641763; + _ProdBrixOffset : Real := -0.5; + _CO2Vols : Real := 4.5; + _CO2Fact : Real := 1.0; + _ProdTankPress : Real := 4.5; + _SP_ProdTemp : Real := 2.0; + _PrdTankMinLevel : Real := 20.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 0.25; + _FillingValveHead_SP : Real := 600.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real := 1.05; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 1; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__05.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__05.md new file mode 100644 index 0000000..7269b59 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__05.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #05 +// Block Number: 405 + +DATA_BLOCK "Recipe__05" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := TRUE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := TRUE; + _Deareation_Co2 : Bool := TRUE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 2; + _ProdMeterRecipeNum : Int := 0; + _SyrupBrix : Real := 16.66; + _SyrupDensity : Real := 1.0584; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 4.96; + _ProductionRate : Real := 200.0; + _Ratio : Real := 2.426372; + _ProdBrixOffset : Real := 0.1; + _CO2Vols : Real := 3.1; + _CO2Fact : Real := 0.95; + _ProdTankPress : Real := 3.6; + _SP_ProdTemp : Real := 9.0; + _PrdTankMinLevel : Real := 20.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 0.5; + _FillingValveHead_SP : Real := 0.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real := 0.97; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 0; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.4; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 35.0; + _ProdPump2_Hz : Real := 35.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__06.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__06.md new file mode 100644 index 0000000..7e6ca4f --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__06.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #06 +// Block Number: 406 + +DATA_BLOCK "Recipe__06" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := TRUE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := TRUE; + _Deareation_Co2 : Bool := TRUE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 2; + _ProdMeterRecipeNum : Int := 0; + _SyrupBrix : Real := 20.1; + _SyrupDensity : Real := 1.080503; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 3.72; + _ProductionRate : Real := 800.0; + _Ratio : Real := 4.7577; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 2.7; + _CO2Fact : Real := 0.94; + _ProdTankPress : Real := 3.5; + _SP_ProdTemp : Real := 15.0; + _PrdTankMinLevel : Real := 15.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 1.25; + _FillingValveHead_SP : Real := 0.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real := 1.05; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 0; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.5; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 30.0; + _ProdPump2_Hz : Real := 30.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__07.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__07.md new file mode 100644 index 0000000..6499302 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__07.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #07 +// Block Number: 407 + +DATA_BLOCK "Recipe__07" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := TRUE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := TRUE; + _Deareation_Co2 : Bool := TRUE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 2; + _ProdMeterRecipeNum : Int := 0; + _SyrupBrix : Real := 18.1; + _SyrupDensity : Real := 1.0675; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 4.73; + _ProductionRate : Real := 200.0; + _Ratio : Real := 2.932862; + _ProdBrixOffset : Real := 0.1; + _CO2Vols : Real := 3.2; + _CO2Fact : Real := 0.97; + _ProdTankPress : Real := 3.8; + _SP_ProdTemp : Real := 5.0; + _PrdTankMinLevel : Real := 20.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 0.5; + _FillingValveHead_SP : Real := 0.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real := 0.97; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 0; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.4; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 35.0; + _ProdPump2_Hz : Real := 35.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__08.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__08.md new file mode 100644 index 0000000..6ff9aba --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__08.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #08 +// Block Number: 408 + +DATA_BLOCK "Recipe__08" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := TRUE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := TRUE; + _Deareation_Co2 : Bool := TRUE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 2; + _ProdMeterRecipeNum : Int := 0; + _SyrupBrix : Real := 39.419; + _SyrupDensity : Real := 1.17344; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 8.22; + _ProductionRate : Real := 800.0; + _Ratio : Real := 4.45379; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 3.4; + _CO2Fact : Real := 0.95; + _ProdTankPress : Real := 3.5; + _SP_ProdTemp : Real := 13.0; + _PrdTankMinLevel : Real := 20.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 1.25; + _FillingValveHead_SP : Real := 0.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real := 1.05; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 0; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.5; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 30.0; + _ProdPump2_Hz : Real := 30.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__09.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__09.md new file mode 100644 index 0000000..5b56378 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__09.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #09 +// Block Number: 409 + +DATA_BLOCK "Recipe__09" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := TRUE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := TRUE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 3; + _ProdMeterRecipeNum : Int := 1; + _SyrupBrix : Real := 24.7; + _SyrupDensity : Real := 1.1022; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 5.213194; + _ProductionRate : Real := 300.0; + _Ratio : Real := 4.12; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 4.3; + _CO2Fact : Real := 1.05; + _ProdTankPress : Real := 4.5; + _SP_ProdTemp : Real := 5.0; + _PrdTankMinLevel : Real := 25.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 0.6; + _FillingValveHead_SP : Real := 600.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real := 1.05; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 1; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__10.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__10.md new file mode 100644 index 0000000..1d91d85 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__10.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #10 +// Block Number: 410 + +DATA_BLOCK "Recipe__10" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := TRUE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := TRUE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 3; + _ProdMeterRecipeNum : Int := 1; + _SyrupBrix : Real := 25.3; + _SyrupDensity : Real := 1.1049; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 5.370703; + _ProductionRate : Real := 350.0; + _Ratio : Real := 4.1; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 3.0; + _CO2Fact : Real := 1.05; + _ProdTankPress : Real := 4.5; + _SP_ProdTemp : Real := 10.0; + _PrdTankMinLevel : Real; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 0.6; + _FillingValveHead_SP : Real := 600.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real := 1.05; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 1; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__11.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__11.md new file mode 100644 index 0000000..e7c5254 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__11.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #11 +// Block Number: 411 + +DATA_BLOCK "Recipe__11" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := TRUE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := TRUE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 2; + _ProdMeterRecipeNum : Int := 0; + _SyrupBrix : Real := 55.7; + _SyrupDensity : Real := 1.2615; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 10.65; + _ProductionRate : Real := 350.0; + _Ratio : Real := 5.354842; + _ProdBrixOffset : Real := -0.03; + _CO2Vols : Real := 4.3; + _CO2Fact : Real := 1.05; + _ProdTankPress : Real := 5.0; + _SP_ProdTemp : Real := 5.0; + _PrdTankMinLevel : Real := 20.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 0.35; + _FillingValveHead_SP : Real := 600.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real := 1.05; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 1; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__12.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__12.md new file mode 100644 index 0000000..918ca96 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__12.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #12 +// Block Number: 412 + +DATA_BLOCK "Recipe__12" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := TRUE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := TRUE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 3; + _ProdMeterRecipeNum : Int := 1; + _SyrupBrix : Real := 35.02; + _SyrupDensity : Real := 1.1513; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 7.262897; + _ProductionRate : Real := 350.0; + _Ratio : Real := 4.4; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 3.15; + _CO2Fact : Real := 1.05; + _ProdTankPress : Real := 4.5; + _SP_ProdTemp : Real := 2.0; + _PrdTankMinLevel : Real; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 0.25; + _FillingValveHead_SP : Real := 220.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real := 1.05; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 1; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__13.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__13.md new file mode 100644 index 0000000..8165e2c --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__13.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #13 +// Block Number: 413 + +DATA_BLOCK "Recipe__13" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := TRUE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := TRUE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 3; + _ProdMeterRecipeNum : Int := 1; + _SyrupBrix : Real := 35.02; + _SyrupDensity : Real := 1.1513; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 7.198066; + _ProductionRate : Real := 300.0; + _Ratio : Real := 4.45; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 2.9; + _CO2Fact : Real := 0.9; + _ProdTankPress : Real := 4.5; + _SP_ProdTemp : Real := 10.0; + _PrdTankMinLevel : Real := 25.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 0.4; + _FillingValveHead_SP : Real := 350.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real := 1.05; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 1; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__14.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__14.md new file mode 100644 index 0000000..ae1e13a --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__14.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #14 +// Block Number: 414 + +DATA_BLOCK "Recipe__14" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := TRUE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := TRUE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 3; + _ProdMeterRecipeNum : Int := 1; + _SyrupBrix : Real := 35.02; + _SyrupDensity : Real := 1.1513; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 7.198066; + _ProductionRate : Real := 300.0; + _Ratio : Real := 4.45; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 2.9; + _CO2Fact : Real := 0.9; + _ProdTankPress : Real := 4.5; + _SP_ProdTemp : Real := 5.0; + _PrdTankMinLevel : Real := 25.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 0.6; + _FillingValveHead_SP : Real := 600.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real := 1.05; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 1; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__15.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__15.md new file mode 100644 index 0000000..de35b7b --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__15.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #15 +// Block Number: 415 + +DATA_BLOCK "Recipe__15" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := TRUE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := TRUE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 2; + _ProdMeterRecipeNum : Int := 0; + _SyrupBrix : Real := 59.69; + _SyrupDensity : Real := 1.2846; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 12.35; + _ProductionRate : Real := 320.0; + _Ratio : Real := 5.036733; + _ProdBrixOffset : Real := -0.22; + _CO2Vols : Real := 3.3; + _CO2Fact : Real := 1.0; + _ProdTankPress : Real := 5.0; + _SP_ProdTemp : Real := 8.0; + _PrdTankMinLevel : Real := 25.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 0.6; + _FillingValveHead_SP : Real := 500.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real := 1.05; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 1; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__16.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__16.md new file mode 100644 index 0000000..e49180b --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__16.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #16 +// Block Number: 416 + +DATA_BLOCK "Recipe__16" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := TRUE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := TRUE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 2; + _ProdMeterRecipeNum : Int := 0; + _SyrupBrix : Real := 59.69; + _SyrupDensity : Real := 1.2846; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 12.35; + _ProductionRate : Real := 540.0; + _Ratio : Real := 5.036733; + _ProdBrixOffset : Real := -0.22; + _CO2Vols : Real := 3.3; + _CO2Fact : Real := 1.0; + _ProdTankPress : Real := 5.0; + _SP_ProdTemp : Real := 10.0; + _PrdTankMinLevel : Real := 25.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 1.5; + _FillingValveHead_SP : Real := 800.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real := 1.05; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 1; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__17.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__17.md new file mode 100644 index 0000000..250b321 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__17.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #17 +// Block Number: 417 + +DATA_BLOCK "Recipe__17" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := FALSE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := FALSE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 3; + _ProdMeterRecipeNum : Int := 16266; + _SyrupBrix : Real := 20.07; + _SyrupDensity : Real := 1.080373; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 5.249669; + _ProductionRate : Real := 350.0; + _Ratio : Real := 3.05; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 0.0; + _CO2Fact : Real := 1.002003; + _ProdTankPress : Real := 1.5; + _SP_ProdTemp : Real := 20.0; + _PrdTankMinLevel : Real := 20.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real; + _ProdLowCond : Real := -1.595073e-23; + _BottleSize : Real := 0.6; + _FillingValveHead_SP : Real := 500.0; + _SyrMeter_ZeroBrix : Real := 0.96875; + _FirstProdExtraCO2Fact : Real := 0.0; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 3; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__18.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__18.md new file mode 100644 index 0000000..9db5e7e --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__18.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #18 +// Block Number: 418 + +DATA_BLOCK "Recipe__18" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := TRUE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := TRUE; + _Deareation_Co2 : Bool := TRUE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 3; + _ProdMeterRecipeNum : Int := 0; + _SyrupBrix : Real := 51.37; + _SyrupDensity : Real := 1.237; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 9.432194; + _ProductionRate : Real := 350.0; + _Ratio : Real := 5.5; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 4.15; + _CO2Fact : Real := 1.05; + _ProdTankPress : Real := 4.5; + _SP_ProdTemp : Real := 2.0; + _PrdTankMinLevel : Real := 20.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 0.6; + _FillingValveHead_SP : Real := 700.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real := 1.05; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 1; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.5; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 30.0; + _ProdPump2_Hz : Real := 30.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__19.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__19.md new file mode 100644 index 0000000..a2d9ed2 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__19.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #19 +// Block Number: 419 + +DATA_BLOCK "Recipe__19" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := FALSE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := FALSE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 3; + _ProdMeterRecipeNum : Int := 16266; + _SyrupBrix : Real := 20.07; + _SyrupDensity : Real := 1.080373; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 5.249668; + _ProductionRate : Real := 350.0; + _Ratio : Real := 3.05; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 0.0; + _CO2Fact : Real := 1.002003; + _ProdTankPress : Real := 1.5; + _SP_ProdTemp : Real := 20.0; + _PrdTankMinLevel : Real := 20.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real; + _ProdLowCond : Real := -1.595073e-23; + _BottleSize : Real := 0.25; + _FillingValveHead_SP : Real := 300.0; + _SyrMeter_ZeroBrix : Real := 0.96875; + _FirstProdExtraCO2Fact : Real := 0.0; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 3; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__20.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__20.md new file mode 100644 index 0000000..5aeb3d5 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__20.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #20 +// Block Number: 420 + +DATA_BLOCK "Recipe__20" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := TRUE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := TRUE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 2; + _ProdMeterRecipeNum : Int := 0; + _SyrupBrix : Real := 55.61; + _SyrupDensity : Real := 1.259654; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 10.65; + _ProductionRate : Real := 450.0; + _Ratio : Real := 5.641761; + _ProdBrixOffset : Real := -0.5; + _CO2Vols : Real := 4.5; + _CO2Fact : Real := 1.0; + _ProdTankPress : Real := 4.5; + _SP_ProdTemp : Real := 2.0; + _PrdTankMinLevel : Real := 20.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 0.25; + _FillingValveHead_SP : Real := 600.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real := 1.05; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 1; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__21.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__21.md new file mode 100644 index 0000000..e8887ba --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__21.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #21 +// Block Number: 421 + +DATA_BLOCK "Recipe__21" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := TRUE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := TRUE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 3; + _ProdMeterRecipeNum : Int := 0; + _SyrupBrix : Real := 26.16; + _SyrupDensity : Real := 1.1089; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 5.171927; + _ProductionRate : Real := 300.0; + _Ratio : Real := 4.5; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 3.55; + _CO2Fact : Real := 1.0; + _ProdTankPress : Real := 3.5; + _SP_ProdTemp : Real := 6.0; + _PrdTankMinLevel : Real := 20.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 0.25; + _FillingValveHead_SP : Real := 150.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real := 1.05; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 1; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__22.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__22.md new file mode 100644 index 0000000..a1b7197 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__22.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #22 +// Block Number: 422 + +DATA_BLOCK "Recipe__22" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := TRUE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := TRUE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 2; + _ProdMeterRecipeNum : Int := 0; + _SyrupBrix : Real := 55.61; + _SyrupDensity : Real := 1.259654; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 10.65; + _ProductionRate : Real := 450.0; + _Ratio : Real := 5.641763; + _ProdBrixOffset : Real := -0.5; + _CO2Vols : Real := 4.5; + _CO2Fact : Real := 1.0; + _ProdTankPress : Real := 4.5; + _SP_ProdTemp : Real := 2.0; + _PrdTankMinLevel : Real := 20.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 0.25; + _FillingValveHead_SP : Real := 600.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real := 1.05; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 1; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__23.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__23.md new file mode 100644 index 0000000..2b68d39 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__23.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #23 +// Block Number: 423 + +DATA_BLOCK "Recipe__23" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := TRUE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := TRUE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 3; + _ProdMeterRecipeNum : Int := 0; + _SyrupBrix : Real := 31.04; + _SyrupDensity : Real := 1.1319; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 5.321828; + _ProductionRate : Real := 300.0; + _Ratio : Real := 5.47; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 4.3; + _CO2Fact : Real := 1.0; + _ProdTankPress : Real := 5.0; + _SP_ProdTemp : Real := 10.0; + _PrdTankMinLevel : Real := 25.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 0.4; + _FillingValveHead_SP : Real := 220.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real := 1.05; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 1; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__24.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__24.md new file mode 100644 index 0000000..8986209 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__24.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #24 +// Block Number: 424 + +DATA_BLOCK "Recipe__24" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := TRUE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := TRUE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 2; + _ProdMeterRecipeNum : Int := 0; + _SyrupBrix : Real := 53.36; + _SyrupDensity : Real := 1.2482; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 11.14; + _ProductionRate : Real := 300.0; + _Ratio : Real := 4.896076; + _ProdBrixOffset : Real := -0.3; + _CO2Vols : Real := 3.7; + _CO2Fact : Real := 1.0; + _ProdTankPress : Real := 4.5; + _SP_ProdTemp : Real := 10.0; + _PrdTankMinLevel : Real := 25.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 0.6; + _FillingValveHead_SP : Real := 720.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real := 1.05; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 1; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__25.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__25.md new file mode 100644 index 0000000..1d4f6cd --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__25.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #25 +// Block Number: 425 + +DATA_BLOCK "Recipe__25" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := TRUE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := TRUE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 3; + _ProdMeterRecipeNum : Int := 0; + _SyrupBrix : Real := 26.16; + _SyrupDensity : Real := 1.1089; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 5.363165; + _ProductionRate : Real := 300.0; + _Ratio : Real := 4.3; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 3.4; + _CO2Fact : Real := 1.0; + _ProdTankPress : Real := 4.5; + _SP_ProdTemp : Real := 5.0; + _PrdTankMinLevel : Real := 25.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 0.6; + _FillingValveHead_SP : Real := 500.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real := 1.05; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 1; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__26.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__26.md new file mode 100644 index 0000000..3e325ca --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__26.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #26 +// Block Number: 426 + +DATA_BLOCK "Recipe__26" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := TRUE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := TRUE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 2; + _ProdMeterRecipeNum : Int := 0; + _SyrupBrix : Real := 55.67; + _SyrupDensity : Real := 1.2557; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 10.53; + _ProductionRate : Real := 750.0; + _Ratio : Real := 5.478868; + _ProdBrixOffset : Real := -0.15; + _CO2Vols : Real := 4.25; + _CO2Fact : Real := 1.0; + _ProdTankPress : Real := 4.5; + _SP_ProdTemp : Real := 12.0; + _PrdTankMinLevel : Real := 10.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 1.75; + _FillingValveHead_SP : Real := 0.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real := 1.1; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 0; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.4; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__27.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__27.md new file mode 100644 index 0000000..cc23252 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__27.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #27 +// Block Number: 427 + +DATA_BLOCK "Recipe__27" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := TRUE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := TRUE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 1; + _ProdMeterRecipeNum : Int := 0; + _SyrupBrix : Real := 42.45; + _SyrupDensity : Real := 1.0037; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 7.67; + _ProductionRate : Real := 520.0; + _Ratio : Real := 5.49; + _ProdBrixOffset : Real := -0.1; + _CO2Vols : Real := 4.3; + _CO2Fact : Real := 1.1; + _ProdTankPress : Real := 4.5; + _SP_ProdTemp : Real := 10.0; + _PrdTankMinLevel : Real := 25.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 1.5; + _FillingValveHead_SP : Real := 1400.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real := 1.05; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 1; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.4; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 30.0; + _ProdPump2_Hz : Real := 30.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__28.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__28.md new file mode 100644 index 0000000..c987e82 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__28.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #28 +// Block Number: 428 + +DATA_BLOCK "Recipe__28" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := TRUE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := TRUE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 3; + _ProdMeterRecipeNum : Int := 0; + _SyrupBrix : Real := 31.01; + _SyrupDensity : Real := 1.1317; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 5.291858; + _ProductionRate : Real := 300.0; + _Ratio : Real := 5.5; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 4.25; + _CO2Fact : Real := 1.0; + _ProdTankPress : Real := 4.5; + _SP_ProdTemp : Real := 10.0; + _PrdTankMinLevel : Real := 25.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 0.6; + _FillingValveHead_SP : Real := 500.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real := 1.05; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 1; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__29.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__29.md new file mode 100644 index 0000000..b1391c3 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__29.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #29 +// Block Number: 429 + +DATA_BLOCK "Recipe__29" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := TRUE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := TRUE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 3; + _ProdMeterRecipeNum : Int := 0; + _SyrupBrix : Real := 31.01; + _SyrupDensity : Real := 1.1317; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 5.291858; + _ProductionRate : Real := 300.0; + _Ratio : Real := 5.5; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 4.25; + _CO2Fact : Real := 1.0; + _ProdTankPress : Real := 4.5; + _SP_ProdTemp : Real := 5.0; + _PrdTankMinLevel : Real := 20.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 0.25; + _FillingValveHead_SP : Real := 200.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real := 1.05; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 1; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__30.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__30.md new file mode 100644 index 0000000..97534c2 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__30.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #30 +// Block Number: 430 + +DATA_BLOCK "Recipe__30" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := TRUE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := TRUE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 2; + _ProdMeterRecipeNum : Int := 0; + _SyrupBrix : Real := 55.61; + _SyrupDensity : Real := 1.259654; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 10.65; + _ProductionRate : Real := 450.0; + _Ratio : Real := 5.641761; + _ProdBrixOffset : Real := -0.5; + _CO2Vols : Real := 4.5; + _CO2Fact : Real := 1.0; + _ProdTankPress : Real := 4.5; + _SP_ProdTemp : Real := 2.0; + _PrdTankMinLevel : Real := 20.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 0.25; + _FillingValveHead_SP : Real := 600.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real := 1.05; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 1; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__31.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__31.md new file mode 100644 index 0000000..9a3ab12 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__31.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #31 +// Block Number: 431 + +DATA_BLOCK "Recipe__31" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := TRUE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := TRUE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 1; + _ProdMeterRecipeNum : Int := 16266; + _SyrupBrix : Real := 20.07; + _SyrupDensity : Real := 1.001; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 5.249668; + _ProductionRate : Real := 340.0; + _Ratio : Real := 5.52; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 4.3; + _CO2Fact : Real := 1.05; + _ProdTankPress : Real := 4.5; + _SP_ProdTemp : Real := 6.0; + _PrdTankMinLevel : Real := 25.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real; + _ProdLowCond : Real := -1.595073e-23; + _BottleSize : Real := 0.6; + _FillingValveHead_SP : Real := 600.0; + _SyrMeter_ZeroBrix : Real := 0.96875; + _FirstProdExtraCO2Fact : Real := 1.05; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 1; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__32.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__32.md new file mode 100644 index 0000000..74738f2 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__32.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #32 +// Block Number: 432 + +DATA_BLOCK "Recipe__32" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := FALSE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := FALSE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 3; + _ProdMeterRecipeNum : Int := 16266; + _SyrupBrix : Real := 20.07; + _SyrupDensity : Real := 1.080373; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 5.249668; + _ProductionRate : Real := 350.0; + _Ratio : Real := 3.05; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 0.0; + _CO2Fact : Real := 1.002003; + _ProdTankPress : Real := 1.5; + _SP_ProdTemp : Real := 20.0; + _PrdTankMinLevel : Real := 20.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real; + _ProdLowCond : Real := -1.595073e-23; + _BottleSize : Real := 0.6; + _FillingValveHead_SP : Real := 500.0; + _SyrMeter_ZeroBrix : Real := 0.96875; + _FirstProdExtraCO2Fact : Real := 0.0; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 3; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__33.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__33.md new file mode 100644 index 0000000..186c9d8 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__33.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #33 +// Block Number: 433 + +DATA_BLOCK "Recipe__33" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := TRUE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := TRUE; + _Deareation_Co2 : Bool := TRUE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 3; + _ProdMeterRecipeNum : Int := 0; + _SyrupBrix : Real := 27.09; + _SyrupDensity : Real := 1.1132; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 5.391652; + _ProductionRate : Real := 400.0; + _Ratio : Real := 4.48; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 3.4; + _CO2Fact : Real := 1.05; + _ProdTankPress : Real := 4.5; + _SP_ProdTemp : Real := 10.0; + _PrdTankMinLevel : Real := 25.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 0.6; + _FillingValveHead_SP : Real := 700.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real := 1.05; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 1; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.5; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 30.0; + _ProdPump2_Hz : Real := 30.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__34.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__34.md new file mode 100644 index 0000000..f5d302d --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__34.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #34 +// Block Number: 434 + +DATA_BLOCK "Recipe__34" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := TRUE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := TRUE; + _Deareation_Co2 : Bool := TRUE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 3; + _ProdMeterRecipeNum : Int := 0; + _SyrupBrix : Real := 25.82; + _SyrupDensity : Real := 1.1073; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 5.287387; + _ProductionRate : Real := 350.0; + _Ratio : Real := 4.3; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 2.9; + _CO2Fact : Real := 1.05; + _ProdTankPress : Real := 4.5; + _SP_ProdTemp : Real := 5.0; + _PrdTankMinLevel : Real := 20.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 0.6; + _FillingValveHead_SP : Real := 700.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real := 1.05; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 1; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.5; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 30.0; + _ProdPump2_Hz : Real := 30.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__35.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__35.md new file mode 100644 index 0000000..74adf62 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__35.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #35 +// Block Number: 435 + +DATA_BLOCK "Recipe__35" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := FALSE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := FALSE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 3; + _ProdMeterRecipeNum : Int := 16266; + _SyrupBrix : Real := 20.07; + _SyrupDensity : Real := 1.080373; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 5.249668; + _ProductionRate : Real := 350.0; + _Ratio : Real := 3.05; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 0.0; + _CO2Fact : Real := 1.002003; + _ProdTankPress : Real := 1.5; + _SP_ProdTemp : Real := 20.0; + _PrdTankMinLevel : Real := 20.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real; + _ProdLowCond : Real := -1.595073e-23; + _BottleSize : Real := 0.6; + _FillingValveHead_SP : Real := 500.0; + _SyrMeter_ZeroBrix : Real := 0.96875; + _FirstProdExtraCO2Fact : Real := 0.0; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 3; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__36.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__36.md new file mode 100644 index 0000000..ded5313 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__36.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #36 +// Block Number: 436 + +DATA_BLOCK "Recipe__36" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := FALSE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := FALSE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 3; + _ProdMeterRecipeNum : Int := 16266; + _SyrupBrix : Real := 20.07; + _SyrupDensity : Real := 1.080373; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 5.249668; + _ProductionRate : Real := 350.0; + _Ratio : Real := 3.05; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 0.0; + _CO2Fact : Real := 1.002003; + _ProdTankPress : Real := 1.5; + _SP_ProdTemp : Real := 20.0; + _PrdTankMinLevel : Real := 20.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real; + _ProdLowCond : Real := -1.595073e-23; + _BottleSize : Real := 0.6; + _FillingValveHead_SP : Real := 500.0; + _SyrMeter_ZeroBrix : Real := 0.96875; + _FirstProdExtraCO2Fact : Real := 0.0; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 3; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__37.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__37.md new file mode 100644 index 0000000..1959056 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__37.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #37 +// Block Number: 437 + +DATA_BLOCK "Recipe__37" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := FALSE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := FALSE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 3; + _ProdMeterRecipeNum : Int := 16266; + _SyrupBrix : Real := 20.07; + _SyrupDensity : Real := 1.080373; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 5.249668; + _ProductionRate : Real := 350.0; + _Ratio : Real := 3.05; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 0.0; + _CO2Fact : Real := 1.002003; + _ProdTankPress : Real := 1.5; + _SP_ProdTemp : Real := 20.0; + _PrdTankMinLevel : Real := 20.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real; + _ProdLowCond : Real := -1.595073e-23; + _BottleSize : Real := 0.6; + _FillingValveHead_SP : Real := 500.0; + _SyrMeter_ZeroBrix : Real := 0.96875; + _FirstProdExtraCO2Fact : Real := 0.0; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 3; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__38.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__38.md new file mode 100644 index 0000000..af83c94 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__38.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #38 +// Block Number: 438 + +DATA_BLOCK "Recipe__38" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := TRUE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := TRUE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 2; + _ProdMeterRecipeNum : Int := 0; + _SyrupBrix : Real := 55.61; + _SyrupDensity : Real := 1.259654; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 10.65; + _ProductionRate : Real := 450.0; + _Ratio : Real := 5.641761; + _ProdBrixOffset : Real := -0.5; + _CO2Vols : Real := 4.5; + _CO2Fact : Real := 1.0; + _ProdTankPress : Real := 4.5; + _SP_ProdTemp : Real := 2.0; + _PrdTankMinLevel : Real := 20.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 0.25; + _FillingValveHead_SP : Real := 600.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real := 1.05; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 1; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__39.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__39.md new file mode 100644 index 0000000..9ccbc22 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__39.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #39 +// Block Number: 439 + +DATA_BLOCK "Recipe__39" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := FALSE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := FALSE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 3; + _ProdMeterRecipeNum : Int := 16266; + _SyrupBrix : Real := 20.07; + _SyrupDensity : Real := 1.080373; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 5.249668; + _ProductionRate : Real := 350.0; + _Ratio : Real := 3.05; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 0.0; + _CO2Fact : Real := 1.002003; + _ProdTankPress : Real := 1.5; + _SP_ProdTemp : Real := 20.0; + _PrdTankMinLevel : Real := 20.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real; + _ProdLowCond : Real := -1.595073e-23; + _BottleSize : Real := 0.6; + _FillingValveHead_SP : Real := 500.0; + _SyrMeter_ZeroBrix : Real := 0.96875; + _FirstProdExtraCO2Fact : Real := 0.0; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 3; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__40.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__40.md new file mode 100644 index 0000000..b0ffe0e --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__40.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #40 +// Block Number: 440 + +DATA_BLOCK "Recipe__40" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := TRUE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := TRUE; + _Deareation_Co2 : Bool := TRUE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 3; + _ProdMeterRecipeNum : Int := 0; + _SyrupBrix : Real := 27.09; + _SyrupDensity : Real := 1.1132; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 5.391652; + _ProductionRate : Real := 400.0; + _Ratio : Real := 4.48; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 3.4; + _CO2Fact : Real := 1.05; + _ProdTankPress : Real := 4.5; + _SP_ProdTemp : Real := 10.0; + _PrdTankMinLevel : Real := 25.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 0.6; + _FillingValveHead_SP : Real := 700.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real := 1.05; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 1; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.5; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 30.0; + _ProdPump2_Hz : Real := 30.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__41.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__41.md new file mode 100644 index 0000000..9e1ebf3 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__41.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #41 +// Block Number: 441 + +DATA_BLOCK "Recipe__41" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := FALSE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := FALSE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 3; + _ProdMeterRecipeNum : Int := 16266; + _SyrupBrix : Real := 20.07; + _SyrupDensity : Real := 1.080373; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 5.249668; + _ProductionRate : Real := 350.0; + _Ratio : Real := 3.05; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 0.0; + _CO2Fact : Real := 1.002003; + _ProdTankPress : Real := 1.5; + _SP_ProdTemp : Real := 20.0; + _PrdTankMinLevel : Real := 20.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real; + _ProdLowCond : Real := -1.595073e-23; + _BottleSize : Real := 0.6; + _FillingValveHead_SP : Real := 500.0; + _SyrMeter_ZeroBrix : Real := 0.96875; + _FirstProdExtraCO2Fact : Real := 0.0; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 3; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__42.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__42.md new file mode 100644 index 0000000..363e93c --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__42.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #42 +// Block Number: 442 + +DATA_BLOCK "Recipe__42" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := FALSE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := FALSE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 3; + _ProdMeterRecipeNum : Int := 16266; + _SyrupBrix : Real := 20.07; + _SyrupDensity : Real := 1.080373; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 5.249668; + _ProductionRate : Real := 350.0; + _Ratio : Real := 3.05; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 0.0; + _CO2Fact : Real := 1.002003; + _ProdTankPress : Real := 1.5; + _SP_ProdTemp : Real := 20.0; + _PrdTankMinLevel : Real := 20.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real; + _ProdLowCond : Real := -1.595073e-23; + _BottleSize : Real := 0.6; + _FillingValveHead_SP : Real := 500.0; + _SyrMeter_ZeroBrix : Real := 0.96875; + _FirstProdExtraCO2Fact : Real := 0.0; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 3; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__43.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__43.md new file mode 100644 index 0000000..f883b2a --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__43.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #43 +// Block Number: 443 + +DATA_BLOCK "Recipe__43" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := FALSE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := FALSE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 3; + _ProdMeterRecipeNum : Int := 16266; + _SyrupBrix : Real := 20.07; + _SyrupDensity : Real := 1.080373; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 5.249668; + _ProductionRate : Real := 350.0; + _Ratio : Real := 3.05; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 0.0; + _CO2Fact : Real := 1.002003; + _ProdTankPress : Real := 1.5; + _SP_ProdTemp : Real := 20.0; + _PrdTankMinLevel : Real := 20.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real; + _ProdLowCond : Real := -1.595073e-23; + _BottleSize : Real := 0.6; + _FillingValveHead_SP : Real := 500.0; + _SyrMeter_ZeroBrix : Real := 0.96875; + _FirstProdExtraCO2Fact : Real := 0.0; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 3; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__44.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__44.md new file mode 100644 index 0000000..8d4cadc --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__44.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #44 +// Block Number: 444 + +DATA_BLOCK "Recipe__44" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := FALSE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := FALSE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 3; + _ProdMeterRecipeNum : Int := 16266; + _SyrupBrix : Real := 20.07; + _SyrupDensity : Real := 1.080373; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 5.249669; + _ProductionRate : Real := 350.0; + _Ratio : Real := 3.05; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 0.0; + _CO2Fact : Real := 1.002003; + _ProdTankPress : Real := 1.5; + _SP_ProdTemp : Real := 20.0; + _PrdTankMinLevel : Real := 20.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real; + _ProdLowCond : Real := -1.595073e-23; + _BottleSize : Real := 0.6; + _FillingValveHead_SP : Real := 500.0; + _SyrMeter_ZeroBrix : Real := 0.96875; + _FirstProdExtraCO2Fact : Real := 0.0; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 3; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__45.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__45.md new file mode 100644 index 0000000..53cd186 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__45.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #45 +// Block Number: 445 + +DATA_BLOCK "Recipe__45" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := FALSE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := FALSE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 3; + _ProdMeterRecipeNum : Int := 16266; + _SyrupBrix : Real := 20.07; + _SyrupDensity : Real := 1.080373; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 5.249668; + _ProductionRate : Real := 350.0; + _Ratio : Real := 3.05; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 0.0; + _CO2Fact : Real := 1.002003; + _ProdTankPress : Real := 1.5; + _SP_ProdTemp : Real := 20.0; + _PrdTankMinLevel : Real := 20.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real; + _ProdLowCond : Real := -1.595073e-23; + _BottleSize : Real := 0.6; + _FillingValveHead_SP : Real := 500.0; + _SyrMeter_ZeroBrix : Real := 0.96875; + _FirstProdExtraCO2Fact : Real := 0.0; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 3; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__46.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__46.md new file mode 100644 index 0000000..624627b --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__46.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #46 +// Block Number: 446 + +DATA_BLOCK "Recipe__46" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := FALSE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := FALSE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 3; + _ProdMeterRecipeNum : Int := 16266; + _SyrupBrix : Real := 20.07; + _SyrupDensity : Real := 1.080373; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 5.249668; + _ProductionRate : Real := 350.0; + _Ratio : Real := 3.05; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 0.0; + _CO2Fact : Real := 1.002003; + _ProdTankPress : Real := 1.5; + _SP_ProdTemp : Real := 20.0; + _PrdTankMinLevel : Real := 20.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real; + _ProdLowCond : Real := -1.595073e-23; + _BottleSize : Real := 0.6; + _FillingValveHead_SP : Real := 500.0; + _SyrMeter_ZeroBrix : Real := 0.96875; + _FirstProdExtraCO2Fact : Real := 0.0; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 3; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__47.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__47.md new file mode 100644 index 0000000..ccf1a87 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__47.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #47 +// Block Number: 447 + +DATA_BLOCK "Recipe__47" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := TRUE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := TRUE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 2; + _ProdMeterRecipeNum : Int := 0; + _SyrupBrix : Real := 55.61; + _SyrupDensity : Real := 1.259654; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 10.65; + _ProductionRate : Real := 450.0; + _Ratio : Real := 5.641763; + _ProdBrixOffset : Real := -0.5; + _CO2Vols : Real := 4.5; + _CO2Fact : Real := 1.0; + _ProdTankPress : Real := 4.5; + _SP_ProdTemp : Real := 2.0; + _PrdTankMinLevel : Real := 20.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 0.25; + _FillingValveHead_SP : Real := 600.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real := 1.05; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 1; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__48.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__48.md new file mode 100644 index 0000000..da74d57 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__48.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #48 +// Block Number: 448 + +DATA_BLOCK "Recipe__48" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := FALSE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := FALSE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 3; + _ProdMeterRecipeNum : Int := 16266; + _SyrupBrix : Real := 20.07; + _SyrupDensity : Real := 1.080373; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 5.249668; + _ProductionRate : Real := 350.0; + _Ratio : Real := 3.05; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 0.0; + _CO2Fact : Real := 1.002003; + _ProdTankPress : Real := 1.5; + _SP_ProdTemp : Real := 20.0; + _PrdTankMinLevel : Real := 20.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real; + _ProdLowCond : Real := -1.595073e-23; + _BottleSize : Real := 0.6; + _FillingValveHead_SP : Real := 500.0; + _SyrMeter_ZeroBrix : Real := 0.96875; + _FirstProdExtraCO2Fact : Real := 0.0; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 3; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__49.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__49.md new file mode 100644 index 0000000..35c302c --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__49.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #49 +// Block Number: 449 + +DATA_BLOCK "Recipe__49" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := FALSE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := FALSE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 3; + _ProdMeterRecipeNum : Int := 16266; + _SyrupBrix : Real := 20.07; + _SyrupDensity : Real := 1.080373; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 5.249668; + _ProductionRate : Real := 350.0; + _Ratio : Real := 3.05; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 0.0; + _CO2Fact : Real := 1.002003; + _ProdTankPress : Real := 1.5; + _SP_ProdTemp : Real := 20.0; + _PrdTankMinLevel : Real := 20.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real; + _ProdLowCond : Real := -1.595073e-23; + _BottleSize : Real := 0.6; + _FillingValveHead_SP : Real := 500.0; + _SyrMeter_ZeroBrix : Real := 0.96875; + _FirstProdExtraCO2Fact : Real := 0.0; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 3; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__50.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__50.md new file mode 100644 index 0000000..6d9f4f9 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Recipe__50.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: GlobalDB +// Block Name (Original): Recipe #50 +// Block Number: 450 + +DATA_BLOCK "Recipe__50" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Actual_Recipe_Parameters : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := FALSE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := FALSE; + _Pasteur : Bool := FALSE; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 3; + _ProdMeterRecipeNum : Int := 16266; + _SyrupBrix : Real := 8.0; + _SyrupDensity : Real := 1.03056; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 2.020429; + _ProductionRate : Real := 350.0; + _Ratio : Real := 3.05; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 0.0; + _CO2Fact : Real := 1.002003; + _ProdTankPress : Real := 1.5; + _SP_ProdTemp : Real := 20.0; + _PrdTankMinLevel : Real := 20.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real; + _ProdLowCond : Real := -1.595073e-23; + _BottleSize : Real := 0.6; + _FillingValveHead_SP : Real := 500.0; + _SyrMeter_ZeroBrix : Real := 0.96875; + _FirstProdExtraCO2Fact : Real := 0.0; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 0.0; + _SyrupPumpFreq : Real; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 3; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int := 0; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ReportCIPSimpleData.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ReportCIPSimpleData.md new file mode 100644 index 0000000..fd2928d --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ReportCIPSimpleData.md @@ -0,0 +1,16 @@ +# UDT: ReportCIPSimpleData + +## Members + +| Name | Datatype | Start Value | Comment | +|---|---|---|---| +| `TotalTime` | `DInt` | `` | | +| `CleaningTime` | `Array[0..2] of DInt` | `` | | +| `WaitingTime` | `DInt` | `` | | +| `Spare20` | `DInt` | `` | | +| `TemperatureAV` | `Int` | `` | | +| `TemperatureSP` | `Int` | `` | | +| `ConducibilityAV` | `Int` | `` | | +| `ConducibilitySP` | `Int` | `` | | +| `Spare40` | `DInt` | `` | | + diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SEL_I.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SEL_I.md new file mode 100644 index 0000000..11c1a9e --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SEL_I.md @@ -0,0 +1,34 @@ +```pascal +// Block Type: FC +// Block Number: 1847 +// Original Network Languages: LAD + +FUNCTION "SEL_I" : Int +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + G : Bool; + IN0 : Int; + IN1 : Int; +END_VAR + +BEGIN + + // Network 1: (Original Language: LAD) + + IF NOT "G" THEN + "SEL_I" := "IN0"; + END_IF; + + IF "G" THEN + "SEL_I" := "IN1"; + END_IF; + + // Network 2: (Original Language: LAD) + + // Network 2 did not produce printable SCL code. + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SEL_R.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SEL_R.md new file mode 100644 index 0000000..ec96fc2 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SEL_R.md @@ -0,0 +1,34 @@ +```pascal +// Block Type: FC +// Block Number: 1846 +// Original Network Languages: LAD + +FUNCTION "SEL_R" : Real +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + G : Bool; + IN0 : Real; + IN1 : Real; +END_VAR + +BEGIN + + // Network 1: (Original Language: LAD) + + IF NOT "G" THEN + "SEL_R" := "IN0"; + END_IF; + + IF "G" THEN + "SEL_R" := "IN1"; + END_IF; + + // Network 2: (Original Language: LAD) + + // Network 2 did not produce printable SCL code. + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SLIM_Block.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SLIM_Block.md new file mode 100644 index 0000000..7e2083d --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SLIM_Block.md @@ -0,0 +1,20 @@ +```pascal +// Block Type: FC +// Block Number: 2027 +// Original Network Languages: LAD + +FUNCTION "SLIM_Block" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +BEGIN + + // Network 1: (Original Language: LAD) + + // Network 1 has no logic elements. + + // No executable logic generated by script. + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SLIM_Variables.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SLIM_Variables.md new file mode 100644 index 0000000..6fd9f6c --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SLIM_Variables.md @@ -0,0 +1,59 @@ +```pascal +// Block Type: GlobalDB +// Block Number: 968 + +DATA_BLOCK "SLIM_Variables" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + ResetCounter : Bool := FALSE; + ResetHour : Bool := FALSE; + DisableOperatingBtn : Bool := FALSE; + DisableBatchBtn : Bool := FALSE; + DisableAlarmRoutine : Bool := FALSE; + Operating : Bool := FALSE; + Batch : Bool := FALSE; + Starvation : Bool := FALSE; + BuildUp : Bool := FALSE; + Operator : Bool := FALSE; + Supplies : Bool := FALSE; + External : Bool := FALSE; + Fault : Bool := FALSE; + Starvation2 : Bool := FALSE; + BuildUp2 : Bool := FALSE; + Production : Bool := FALSE; + Latch_Starvation : Bool := FALSE; + Latch_BuildUp : Bool := FALSE; + Latch_Operator : Bool := FALSE; + Latch_Supplies : Bool := FALSE; + Latch_External : Bool := FALSE; + Latch_Fault : Bool := FALSE; + Latch_Starvation2 : Bool := FALSE; + Latch_BuildUp2 : Bool := FALSE; + Latch_Production : Bool := FALSE; + Bit_0_Operating : Bool := FALSE; + Bit_1_Operating : Bool := FALSE; + Bit_0_Batch : Bool := FALSE; + Bit_1_Batch : Bool := FALSE; + BlenderStateValue : Int := 0; + ActualRecipeName : String[30] := ''; + OperatorAlarms : Array[0..63] of Bool := [FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE]; + FaultAlarms : Array[0..191] of Bool := [FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE]; + SuppliesAlarms : Array[0..63] of Bool := [FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE]; + ExternalAlarms : Array[0..63] of Bool := [FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE]; + Messages : Array[0..63] of Bool := [FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE]; + Latch_OperatorAlarms : Array[0..63] of Bool := [FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE]; + Latch_FaultAlarms : Array[0..191] of Bool := [FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE]; + Latch_SuppliesAlarms : Array[0..63] of Bool := [FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE]; + Latch_ExternalAlarms : Array[0..63] of Bool := [FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE]; + Latch_Messages : Array[0..63] of Bool := [FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE]; + AnalogValues : Array[0..31] of DWord := [/* Array[0] unsupported init */, /* Array[1] unsupported init */, /* Array[2] unsupported init */, /* Array[3] unsupported init */, /* Array[4] unsupported init */, /* Array[5] unsupported init */, /* Array[6] unsupported init */, /* Array[7] unsupported init */, /* Array[8] unsupported init */, /* Array[9] unsupported init */, /* Array[10] unsupported init */, /* Array[11] unsupported init */, /* Array[12] unsupported init */, /* Array[13] unsupported init */, /* Array[14] unsupported init */, /* Array[15] unsupported init */, /* Array[16] unsupported init */, /* Array[17] unsupported init */, /* Array[18] unsupported init */, /* Array[19] unsupported init */, /* Array[20] unsupported init */, /* Array[21] unsupported init */, /* Array[22] unsupported init */, /* Array[23] unsupported init */, /* Array[24] unsupported init */, /* Array[25] unsupported init */, /* Array[26] unsupported init */, /* Array[27] unsupported init */, /* Array[28] unsupported init */, /* Array[29] unsupported init */, /* Array[30] unsupported init */, /* Array[31] unsupported init */]; + Totalizers : Array[0..31] of DWord := [/* Array[0] unsupported init */, /* Array[1] unsupported init */, /* Array[2] unsupported init */, /* Array[3] unsupported init */, /* Array[4] unsupported init */, /* Array[5] unsupported init */, /* Array[6] unsupported init */, /* Array[7] unsupported init */, /* Array[8] unsupported init */, /* Array[9] unsupported init */, /* Array[10] unsupported init */, /* Array[11] unsupported init */, /* Array[12] unsupported init */, /* Array[13] unsupported init */, /* Array[14] unsupported init */, /* Array[15] unsupported init */, /* Array[16] unsupported init */, /* Array[17] unsupported init */, /* Array[18] unsupported init */, /* Array[19] unsupported init */, /* Array[20] unsupported init */, /* Array[21] unsupported init */, /* Array[22] unsupported init */, /* Array[23] unsupported init */, /* Array[24] unsupported init */, /* Array[25] unsupported init */, /* Array[26] unsupported init */, /* Array[27] unsupported init */, /* Array[28] unsupported init */, /* Array[29] unsupported init */, /* Array[30] unsupported init */, /* Array[31] unsupported init */]; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Safeties.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Safeties.md new file mode 100644 index 0000000..1f60385 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Safeties.md @@ -0,0 +1,775 @@ +```pascal +// Block Type: FC +// Block Number: 2022 +// Original Network Languages: LAD + +FUNCTION "Safeties" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + Alarm_Fault_1 : DWord; + Alarm_Fault_2 : DWord; + Alarm_Supplies : DWord; + Alarm_External : DWord; + Alarm_Operator : DWord; + Buffer : Bool; +END_VAR + + #_7S : Bool; // Auto-generated temporary +BEGIN + + // Network 1: Always OFF (Original Language: LAD) + + "mAlarmHornReset" := "gIN_ResetHorn" OR ("gBlenderAlarm" AND "mAlarmHornReset"); + + // Network 2: MIX - SAFETIES (Original Language: LAD) + + // Network 2 did not produce printable SCL code. + + // Network 3: MIX - (Original Language: LAD) + + "mWarningHornReset" := "gIN_ResetHorn" OR ("gBlenderAlarm" AND "mWarningHornReset"); + + // Network 4: MIX - SAFETIES (Original Language: LAD) + + // Network 4 did not produce printable SCL code. + + // Network 5: MIX - SAFETIES (Original Language: LAD) + + IF "AUX TRUE" THEN + "gBlenderAlarm" := FALSE; + END_IF; + + // Network 6: MIX - SAFETIES (Original Language: LAD) + + "gHighPriorityAlarm" := "gIN_VoltageOk" OR "gNotARecipe_Fault"; + + // Network 7: MIX - SAFETIES (Original Language: LAD) + + "gLowPriorityAlarm" := ("HMI_Alarms"."Fault"."Alarm020" AND "gQTM301_TooHigh") OR ("HMI_Alarms"."Fault"."Alarm021" AND "gQTM301_TooLow"); + + // Network 8: MIX - SAFETIES (Original Language: LAD) + + IF "HMI_Instrument"."LTM302"."Alarm" OR "HMI_Instrument"."LTP303"."Alarm" THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 9: Auxiliary Not Engaged (Original Language: LAD) + + "HMI_Alarms"."Fault"."Alarm001" := "gIN_VoltageOk" OR ("HMI_Alarms"."Fault"."Alarm001" AND "gIN_ResetBtn"); + + IF "gIN_VoltageOk" OR ("HMI_Alarms"."Fault"."Alarm001" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 10: Not a Recipe: invalid Recipe Type Selection (Original Language: LAD) + + "HMI_Alarms"."Fault"."Alarm002" := "gNotARecipe_Fault" OR ("HMI_Alarms"."Fault"."Alarm002" AND "gIN_ResetBtn"); + + IF "gNotARecipe_Fault" OR ("HMI_Alarms"."Fault"."Alarm002" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 11: Filler Communication Fault (Original Language: LAD) + + "HMI_Alarms"."Fault"."Alarm004" := "Flr_ComunicationFault" OR ("HMI_Alarms"."Fault"."Alarm004" AND "gIN_ResetBtn"); + + IF "Flr_ComunicationFault" OR ("HMI_Alarms"."Fault"."Alarm004" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 12: CIP Communication Fault (Original Language: LAD) + + "HMI_Alarms"."Fault"."Alarm006" := "M19101" OR ("HMI_Alarms"."Fault"."Alarm006" AND "gIN_ResetBtn"); + + IF "M19101" OR ("HMI_Alarms"."Fault"."Alarm006" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 13: Differential Pressure Transducer Fault (Original Language: LAD) + + "HMI_Alarms"."Fault"."Alarm007" := "gDiffSensor_Analog_Fault" OR ("HMI_Alarms"."Fault"."Alarm007" AND "gIN_ResetBtn"); + + IF "gDiffSensor_Analog_Fault" OR ("HMI_Alarms"."Fault"."Alarm007" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 14: Syrup Tank High Level Fault (Original Language: LAD) + + "HMI_Alarms"."Fault"."Alarm008" := "gSyrTank_HighLvl_Fault" OR ("HMI_Alarms"."Fault"."Alarm008" AND "gIN_ResetBtn"); + + IF "gSyrTank_HighLvl_Fault" OR ("HMI_Alarms"."Fault"."Alarm008" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 15: WARNING - Profibus Syrup Analizer Node Fault (Original Language: LAD) + + "HMI_Alarms"."Fault"."Alarm009" := ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SyrBrixMeter" AND "HMI_Variables_Status"."Profibus"."Error"."mPDSPA_Cobrix_Syrup") OR ("HMI_Alarms"."Fault"."Alarm009" AND "gIN_ResetBtn"); + + IF ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SyrBrixMeter" AND "HMI_Variables_Status"."Profibus"."Error"."mPDSPA_Cobrix_Syrup") OR ("HMI_Alarms"."Fault"."Alarm009" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 16: CRITICAL - Profibus Valves Base Node Fault (Original Language: LAD) + // Profibus Slave Valve Base 12 Fault + + "HMI_Alarms"."Fault"."Alarm010" := "HMI_Variables_Status"."Profibus"."Error"."ValvesBase_Festo" OR "HMI_Variables_Status"."Profibus"."Error"."ValvesBase_Joucomatic"; + + IF "HMI_Variables_Status"."Profibus"."Error"."ValvesBase_Festo" OR "HMI_Variables_Status"."Profibus"."Error"."ValvesBase_Joucomatic" THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 17: WARNING - Deaireator tank high level Fault (Original Language: LAD) + + "HMI_Alarms"."Fault"."Alarm011" := "gDeairTank_HighLvl_Fault" OR ("HMI_Alarms"."Fault"."Alarm011" AND "gIN_ResetBtn"); + + IF "gDeairTank_HighLvl_Fault" OR ("HMI_Alarms"."Fault"."Alarm011" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 18: WARNING - Profibus Low Conductimeter Node Fault (Original Language: LAD) + // Profibus Slave Low Conductimeter Node 15 Fault + + "HMI_Alarms"."Fault"."Alarm012" := "HMI_Variables_Status"."Profibus"."Error"."CTS301_LowCond" OR ("HMI_Alarms"."Fault"."Alarm012" AND "gIN_ResetBtn"); + + IF "HMI_Variables_Status"."Profibus"."Error"."CTS301_LowCond" OR ("HMI_Alarms"."Fault"."Alarm012" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 19: WARNING - Profibus High Conductimeter Node Fault (Original Language: LAD) + // Profibus Slave Low Conductimeter Node 16 Fault + + "HMI_Alarms"."Fault"."Alarm013" := "HMI_Variables_Status"."Profibus"."Error"."CTS302_HighCond" OR ("HMI_Alarms"."Fault"."Alarm013" AND "gIN_ResetBtn"); + + IF "HMI_Variables_Status"."Profibus"."Error"."CTS302_HighCond" OR ("HMI_Alarms"."Fault"."Alarm013" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 20: CRITICAL - High Temperature Electrical Cabinet (Original Language: LAD) + + "HMI_Alarms"."Fault"."Alarm016" := "gElCabTooHigh" OR ("HMI_Alarms"."Fault"."Alarm016" AND "gIN_ResetBtn"); + + IF "gElCabTooHigh" OR ("HMI_Alarms"."Fault"."Alarm016" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 21: Product Brix Too High (Original Language: LAD) + // Product Brix Too High + + // PBox SymPy processed, logic in consumer + "M19027" := "gQTM301_TooHigh"; // P_TRIG("gQTM301_TooHigh") - Mem: "M19027" + + "HMI_Alarms"."Fault"."Alarm020" := ("gIN_ResetBtn" AND "HMI_Alarms"."Fault"."Alarm020") OR ("gQTM301_TooHigh" AND NOT "M19027"); + + IF ("gIN_ResetBtn" AND "HMI_Alarms"."Fault"."Alarm020") OR ("gQTM301_TooHigh" AND NOT "M19027") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 22: Product Brix Too Low (Original Language: LAD) + // Product Brix Too Low + + // PBox SymPy processed, logic in consumer + "M19030" := "gQTM301_TooLow"; // P_TRIG("gQTM301_TooLow") - Mem: "M19030" + + "HMI_Alarms"."Fault"."Alarm021" := ("gIN_ResetBtn" AND "HMI_Alarms"."Fault"."Alarm021") OR ("gQTM301_TooLow" AND NOT "M19030"); + + IF ("gIN_ResetBtn" AND "HMI_Alarms"."Fault"."Alarm021") OR ("gQTM301_TooLow" AND NOT "M19030") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 23: Product CO2 Too High (Original Language: LAD) + // Product CO2 Too High + + // PBox SymPy processed, logic in consumer + "M19031" := "gQTM302_TooHigh"; // P_TRIG("gQTM302_TooHigh") - Mem: "M19031" + + "HMI_Alarms"."Fault"."Alarm022" := ("gIN_ResetBtn" AND "HMI_Alarms"."Fault"."Alarm022") OR ("gQTM302_TooHigh" AND NOT "M19031"); + + IF ("gIN_ResetBtn" AND "HMI_Alarms"."Fault"."Alarm022") OR ("gQTM302_TooHigh" AND NOT "M19031") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 24: Product CO2 Too Low (Original Language: LAD) + // Product CO2 Too Low + + // PBox SymPy processed, logic in consumer + "M19032" := "gQTM302_TooLow"; // P_TRIG("gQTM302_TooLow") - Mem: "M19032" + + "HMI_Alarms"."Fault"."Alarm023" := ("gIN_ResetBtn" AND "HMI_Alarms"."Fault"."Alarm023") OR ("gQTM302_TooLow" AND NOT "M19032"); + + IF ("gIN_ResetBtn" AND "HMI_Alarms"."Fault"."Alarm023") OR ("gQTM302_TooLow" AND NOT "M19032") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 25: CRITICAL - PPN301 VFC Fault (Original Language: LAD) + + "HMI_Alarms"."Fault"."Alarm024" := ("gIN_PPN301_FCReady" AND "HMI_PID"."PPN301"."Config") OR ("HMI_Alarms"."Fault"."Alarm024" AND "gIN_ResetBtn" AND "HMI_PID"."PPN301"."Config"); + + IF ("gIN_PPN301_FCReady" AND "HMI_PID"."PPN301"."Config") OR ("HMI_Alarms"."Fault"."Alarm024" AND "gIN_ResetBtn" AND "HMI_PID"."PPN301"."Config") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 26: CRITICAL - PPM303 VFC Fault (Original Language: LAD) + + "HMI_Alarms"."Fault"."Alarm025" := ("gIN_PPM303_FCReady" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem") OR ("gIN_PPM303_FCReady" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InverterProdPumpPPM303") OR ("HMI_Alarms"."Fault"."Alarm025" AND "gIN_ResetBtn" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem") OR ("HMI_Alarms"."Fault"."Alarm025" AND "gIN_ResetBtn" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InverterProdPumpPPM303"); + + IF ("gIN_PPM303_FCReady" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem") OR ("gIN_PPM303_FCReady" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InverterProdPumpPPM303") OR ("HMI_Alarms"."Fault"."Alarm025" AND "gIN_ResetBtn" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem") OR ("HMI_Alarms"."Fault"."Alarm025" AND "gIN_ResetBtn" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InverterProdPumpPPM303") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 27: CRITICAL - PPP302 VFC Fault (Original Language: LAD) + + "HMI_Alarms"."Fault"."Alarm026" := ("gIN_PPP302_FCReady" AND "HMI_PID"."PPP302"."Config") OR ("HMI_Alarms"."Fault"."Alarm026" AND "gIN_ResetBtn" AND "HMI_PID"."PPP302"."Config"); + + IF ("gIN_PPP302_FCReady" AND "HMI_PID"."PPP302"."Config") OR ("HMI_Alarms"."Fault"."Alarm026" AND "gIN_ResetBtn" AND "HMI_PID"."PPP302"."Config") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 28: mPDS1000 Error Fault (Original Language: LAD) + // m_PDS1000_Error_Fault + + "Dly_Maselli_Fault"(IN := "gBlenderProdMode" AND "gBlenderRinseMode" AND "Procedure_Variables"."TM301_Drain"."Latch" AND "DI_Product_Analyzer_Prod_NO_OK" AND "Procedure_Variables"."TM301_RunOut"."Done" AND "AnalyzerDelay", PT := S5T#7S); // TODO: Declarar "Dly_Maselli_Fault" : TON; + + "HMI_Alarms"."Fault"."Alarm027" := ("DI_Flr1_PROD_Request" AND "Dly_Maselli_Fault".Q AND "AUX FALSE") OR ("DI_Flr2_PROD_Request" AND "Dly_Maselli_Fault".Q AND "AUX FALSE"); + + IF ("DI_Flr1_PROD_Request" AND "Dly_Maselli_Fault".Q AND "AUX FALSE") OR ("DI_Flr2_PROD_Request" AND "Dly_Maselli_Fault".Q AND "AUX FALSE") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 29: Analizer Dealy (Original Language: LAD) + + // Network 29 did not produce printable SCL code. + + // Network 30: Densimeter Tubes Not Oscillating (Original Language: LAD) + // Tube Not Oscillating in Densimeter + + "HMI_Alarms"."Fault"."Alarm028" := "gmPDS1000_NoOscillation" OR ("HMI_Alarms"."Fault"."Alarm028" AND "gIN_ResetBtn"); + + IF "gmPDS1000_NoOscillation" OR ("HMI_Alarms"."Fault"."Alarm028" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 31: CRITICAL - Profibus Water Pump VFC Node Fault (Original Language: LAD) + + "HMI_Alarms"."Fault"."Alarm029" := "HMI_Variables_Status"."Profibus"."Error"."PPN301_VFC" OR ("HMI_Alarms"."Fault"."Alarm029" AND "gIN_ResetBtn"); + + IF "HMI_Variables_Status"."Profibus"."Error"."PPN301_VFC" OR ("HMI_Alarms"."Fault"."Alarm029" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 32: CRITICAL - Profibus Syrup Pump VFC Node Fault (Original Language: LAD) + + "HMI_Alarms"."Fault"."Alarm030" := "HMI_Variables_Status"."Profibus"."Error"."PPP302_VFC" OR ("HMI_Alarms"."Fault"."Alarm030" AND "gIN_ResetBtn"); + + IF "HMI_Variables_Status"."Profibus"."Error"."PPP302_VFC" OR ("HMI_Alarms"."Fault"."Alarm030" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 33: Fault UPS Supply (Original Language: LAD) + + "HMI_Alarms"."Fault"."Alarm037" := "DI_UPSsupply" OR ("HMI_Alarms"."Fault"."Alarm037" AND "gIN_ResetBtn"); + + // Network 34: WARNING - Baialage Flow Error (Original Language: LAD) + // Product Tank Pressure Fault + + "HMI_Alarms"."Fault"."Alarm040" := "gBalaiage_Fault" OR ("HMI_Alarms"."Fault"."Alarm040" AND "gIN_ResetBtn"); + + IF "gBalaiage_Fault" OR ("HMI_Alarms"."Fault"."Alarm040" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 35: Product Tank Pressure Fault - Fault Alarm - (Original Language: LAD) + // Product Tank Pressure Fault + + "HMI_Alarms"."Fault"."Alarm041" := "gPrdTank_Press_Fault" OR ("HMI_Alarms"."Fault"."Alarm041" AND "gIN_ResetBtn"); + + IF "gPrdTank_Press_Fault" OR ("HMI_Alarms"."Fault"."Alarm041" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 36: Blend Error Fault: High Syrup - Fault Alarm - (Original Language: LAD) + // Blend Error High Syrup Fault + + "HMI_Alarms"."Fault"."Alarm042" := "gBlendErrorHighSyr_Fault" OR ("HMI_Alarms"."Fault"."Alarm042" AND "gIN_ResetBtn"); + + IF "gBlendErrorHighSyr_Fault" OR ("HMI_Alarms"."Fault"."Alarm042" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 37: Blend Error Fault: Low Syrup - Fault Alarm - (Original Language: LAD) + // Blend Error Low Syrup Fault + + "HMI_Alarms"."Fault"."Alarm043" := "gBlendErrorLowSyr_Fault" OR ("HMI_Alarms"."Fault"."Alarm043" AND "gIN_ResetBtn"); + + IF "gBlendErrorLowSyr_Fault" OR ("HMI_Alarms"."Fault"."Alarm043" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 38: CarboCO2 Error Fault: Low CO2 - Fault Alarm - (Original Language: LAD) + // Carbo CO2 Error High CO2 Fault + + "HMI_Alarms"."Fault"."Alarm044" := "gCarboCO2Err_L_CO2_Fault" OR ("HMI_Alarms"."Fault"."Alarm044" AND "gIN_ResetBtn"); + + IF "gCarboCO2Err_L_CO2_Fault" OR ("HMI_Alarms"."Fault"."Alarm044" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 39: CarboCO2 Error Fault: High CO2 - Fault Alarm - (Original Language: LAD) + // Carbo CO2 Error Low CO2 Fault + + "HMI_Alarms"."Fault"."Alarm045" := ("gCarboCO2Err_H_CO2_Fault" AND "AUX FALSE") OR ("HMI_Alarms"."Fault"."Alarm045" AND "gIN_ResetBtn"); + + IF ("gCarboCO2Err_H_CO2_Fault" AND "AUX FALSE") OR ("HMI_Alarms"."Fault"."Alarm045" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 40: Vacuum TimeOut - Fault Alarm - (Original Language: LAD) + // Vacuum TimeOut Fault + + "HMI_Alarms"."Fault"."Alarm046" := "gVacuumTimeOut_Fault" OR ("HMI_Alarms"."Fault"."Alarm046" AND "gIN_ResetBtn"); + + IF "gVacuumTimeOut_Fault" OR ("HMI_Alarms"."Fault"."Alarm046" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 41: CIP No Recirculation Flow - Fault Alarm - (Original Language: LAD) + + "HMI_Alarms"."Fault"."Alarm048" := "gCIPRecirFlowMiss_Fault" OR ("HMI_Alarms"."Fault"."Alarm048" AND "gIN_ResetBtn"); + + IF "gCIPRecirFlowMiss_Fault" OR ("HMI_Alarms"."Fault"."Alarm048" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 42: Profibus Master Node 1 Crash (Original Language: LAD) + // Profibus Master FC3102 Node 1 Fault + + "HMI_Alarms"."Fault"."Alarm050" := "HMI_Variables_Status"."Profibus"."Error"."FC3102_DP" OR ("HMI_Alarms"."Fault"."Alarm050" AND "gIN_ResetBtn"); + + IF "HMI_Variables_Status"."Profibus"."Error"."FC3102_DP" OR ("HMI_Alarms"."Fault"."Alarm050" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 43: Profibus ET200 Node 10 Fault (Original Language: LAD) + // Profibus Slave ET200 Node 10 Fault + + "HMI_Alarms"."Fault"."Alarm051" := "HMI_Variables_Status"."Profibus"."Error"."ET200" OR ("HMI_Alarms"."Fault"."Alarm051" AND "gIN_ResetBtn"); + + IF "HMI_Variables_Status"."Profibus"."Error"."ET200" OR ("HMI_Alarms"."Fault"."Alarm051" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 44: CRITICAL - Profibus Water MFM (Original Language: LAD) + + "HMI_Alarms"."Fault"."Alarm052" := ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_WaterPromass" AND "HMI_Variables_Status"."Profibus"."Error"."FTN301_Promag") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_WaterPromass" AND "HMI_Variables_Status"."Profibus"."Error"."FTN301_Promass"); + + IF ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_WaterPromass" AND "HMI_Variables_Status"."Profibus"."Error"."FTN301_Promag") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_WaterPromass" AND "HMI_Variables_Status"."Profibus"."Error"."FTN301_Promass") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 45: CRITICAL - Profibus Syrup MFM (Original Language: LAD) + + "HMI_Alarms"."Fault"."Alarm053" := ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FlowMeterType" AND "HMI_Variables_Status"."Profibus"."Error"."FTP302") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FlowMeterType" AND "HMI_Variables_Status"."Profibus"."Error"."FTP302_2400S"); + + IF ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FlowMeterType" AND "HMI_Variables_Status"."Profibus"."Error"."FTP302") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FlowMeterType" AND "HMI_Variables_Status"."Profibus"."Error"."FTP302_2400S") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 46: CRITICAL - Profibus CO2 MFM (Original Language: LAD) + + "HMI_Alarms"."Fault"."Alarm054" := ("HMI_Alarms"."Fault"."Alarm054" AND "gIN_ResetBtn") OR ("Blender_Variables_Pers"."gCarboStillProduct" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FlowMeterType" AND "HMI_Variables_Status"."Profibus"."Error"."FTM303") OR ("Blender_Variables_Pers"."gCarboStillProduct" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FlowMeterType" AND "HMI_Variables_Status"."Profibus"."Error"."FTM303_2400S"); + + IF ("HMI_Alarms"."Fault"."Alarm054" AND "gIN_ResetBtn") OR ("Blender_Variables_Pers"."gCarboStillProduct" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FlowMeterType" AND "HMI_Variables_Status"."Profibus"."Error"."FTM303") OR ("Blender_Variables_Pers"."gCarboStillProduct" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FlowMeterType" AND "HMI_Variables_Status"."Profibus"."Error"."FTM303_2400S") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 47: Profibus Product Pump VFC Node Fault (Original Language: LAD) + // Profibus Slave Product pump Frequency Converter Node 4 Fault + + "HMI_Alarms"."Fault"."Alarm055" := "HMI_Variables_Status"."Profibus"."Error"."PPM303_VFC" OR ("HMI_Alarms"."Fault"."Alarm055" AND "gIN_ResetBtn"); + + IF "HMI_Variables_Status"."Profibus"."Error"."PPM303_VFC" OR ("HMI_Alarms"."Fault"."Alarm055" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 48: WARNING - Profibus mPDS PA (Original Language: LAD) + + "HMI_Alarms"."Fault"."Alarm056" := ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_PAmPDSType" AND "HMI_Variables_Status"."Profibus"."Error"."mPDSPA_Cobrix_Prod" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_MeterType", 5)) OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_PAmPDSType" AND "HMI_Variables_Status"."Profibus"."Error"."mPDSPA_Carbo" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_MeterType", 5)); + + IF ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_PAmPDSType" AND "HMI_Variables_Status"."Profibus"."Error"."mPDSPA_Cobrix_Prod" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_MeterType", 5)) OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_PAmPDSType" AND "HMI_Variables_Status"."Profibus"."Error"."mPDSPA_Carbo" AND Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_MeterType", 5)) THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 49: INFORMATION - UPS Battery not ready - NON FERMA LA MACHINA (Original Language: LAD) + + "HMI_Alarms"."Fault"."Alarm057" := ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_UPS_Siemens" AND "DI_UPSBatteryReady") OR ("HMI_Alarms"."Fault"."Alarm057" AND "gIN_ResetBtn"); + + // Network 50: INFORMATION - UPS Alarm - NON FERMA LA MACHINA (Original Language: LAD) + + "HMI_Alarms"."Fault"."Alarm057" := ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_UPS_Siemens" AND "DI_UPSAlarm") OR ("HMI_Alarms"."Fault"."Alarm057" AND "gIN_ResetBtn"); + + // Network 51: INFORMATION - UPS Alarm - NON FERMA LA MACHINA (Original Language: LAD) + + "HMI_Alarms"."Fault"."Alarm057" := ("DI_UPSsupply" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_UPS_Siemens") OR ("HMI_Alarms"."Fault"."Alarm057" AND "gIN_ResetBtn"); + + // Network 52: Product Analizer Error Fault (Original Language: LAD) + + "HMI_Alarms"."Fault"."Alarm058" := "gmPDS_PA_Error_Fault" OR "gPAMaselli_Error_Fault"; + + IF "gmPDS_PA_Error_Fault" OR "gPAMaselli_Error_Fault" THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 53: WARNING - Product Analizer mPDS2000 Error Fault (Original Language: LAD) + + "HMI_Alarms"."Fault"."Alarm059" := "gmPDS2000_Error_Fault" OR ("HMI_Alarms"."Fault"."Alarm059" AND "gIN_ResetBtn"); + + IF "gmPDS2000_Error_Fault" OR ("HMI_Alarms"."Fault"."Alarm059" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 54: Low Infeed Air Pressure Fault - Supplies Alarm - (Original Language: LAD) + // Inlet Air Low Pressure Fault + + "HMI_Alarms"."Supplies"."Alarm060" := "HMI_Digital"."_PAL_S11"."Filtered" OR ("HMI_Alarms"."Supplies"."Alarm060" AND "gIN_ResetBtn"); + + IF "HMI_Digital"."_PAL_S11"."Filtered" OR ("HMI_Alarms"."Supplies"."Alarm060" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 55: Low Infeed CO2 Pressure Fault - Supplies Alarm - (Original Language: LAD) + // Inlet CO2 Low Pressure Fault + + "HMI_Alarms"."Supplies"."Alarm061" := "gCO2LowPress_Fault" OR "mGasInjectionPressNotOK"; + + IF "gCO2LowPress_Fault" OR "mGasInjectionPressNotOK" THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 56: Deaireator Water Low Level - Supplies Alarm - (Original Language: LAD) + // Deaireator Water Minimum Level + + "HMI_Alarms"."Supplies"."Alarm062" := "gDeairTank_LowLvl_Fault" OR ("HMI_Alarms"."Supplies"."Alarm062" AND "gIN_ResetBtn"); + + IF "gDeairTank_LowLvl_Fault" OR ("HMI_Alarms"."Supplies"."Alarm062" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 57: Syrup Tank Low Level - Supplies Alarm - (Original Language: LAD) + // Syrup Tank Minimum Level + + "HMI_Alarms"."Supplies"."Alarm063" := "gSyrTank_LowLvl_Fault" OR ("HMI_Alarms"."Supplies"."Alarm063" AND "gIN_ResetBtn"); + + IF "gSyrTank_LowLvl_Fault" OR ("HMI_Alarms"."Supplies"."Alarm063" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 58: Syrup Brix Out Of Standard - Supplies Alarm - (Original Language: LAD) + // Syrup Brix Out Of Spec Alarm + + "HMI_Alarms"."Supplies"."Alarm065" := "gSyrBrixOutSpec_Fault" OR ("HMI_Alarms"."Supplies"."Alarm065" AND "gIN_ResetBtn"); + + IF "gSyrBrixOutSpec_Fault" OR ("HMI_Alarms"."Supplies"."Alarm065" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 59: Chiller Ammonia Pressure Too Low - Supplies Alarm - (Original Language: LAD) + + "HMI_Alarms"."Supplies"."Alarm066" := "gIN_AmmoniaLowPressure" OR ("HMI_Alarms"."Supplies"."Alarm066" AND "gIN_ResetBtn"); + + IF "gIN_AmmoniaLowPressure" OR ("HMI_Alarms"."Supplies"."Alarm066" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 60: Water Temperature Too High (Original Language: LAD) + + // PBox SymPy processed, logic in consumer + "M19033" := "gTTM306_H2O_TempTooHigh"; // P_TRIG("gTTM306_H2O_TempTooHigh") - Mem: "M19033" + + "HMI_Alarms"."Supplies"."Alarm067" := ("gIN_ResetBtn" AND "HMI_Alarms"."Supplies"."Alarm067") OR ("gTTM306_H2O_TempTooHigh" AND NOT "M19033"); + + IF ("gIN_ResetBtn" AND "HMI_Alarms"."Supplies"."Alarm067") OR ("gTTM306_H2O_TempTooHigh" AND NOT "M19033") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 61: Product Temperature Too High (Original Language: LAD) + + // PBox SymPy processed, logic in consumer + "M19034" := "AUX FALSE" AND "gTTM306_PRD_TempTooHigh"; // P_TRIG("AUX FALSE" AND "gTTM306_PRD_TempTooHigh") - Mem: "M19034" + + "HMI_Alarms"."Supplies"."Alarm068" := ("gIN_ResetBtn" AND "HMI_Alarms"."Supplies"."Alarm068") OR ("AUX FALSE" AND "gTTM306_PRD_TempTooHigh" AND NOT "M19034"); + + IF ("gIN_ResetBtn" AND "HMI_Alarms"."Supplies"."Alarm068") OR ("AUX FALSE" AND "gTTM306_PRD_TempTooHigh" AND NOT "M19034") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 62: Syrup Density Out Of Standard - Supplies Alarm - (Original Language: LAD) + + "HMI_Alarms"."Supplies"."Alarm070" := "gSyrupDensOutSpec_Fault" OR ("HMI_Alarms"."Supplies"."Alarm070" AND "gIN_ResetBtn"); + + IF "gSyrupDensOutSpec_Fault" OR ("HMI_Alarms"."Supplies"."Alarm070" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 63: Ammonia compressors not running - Supplies Alarm - (Original Language: LAD) + + "HMI_Alarms"."Supplies"."Alarm072" := "gAmmoniaCompressor_Fault" OR ("HMI_Alarms"."Supplies"."Alarm072" AND "gIN_ResetBtn"); + + IF "gAmmoniaCompressor_Fault" OR ("HMI_Alarms"."Supplies"."Alarm072" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 64: CRITICAL - Minimum level vacuum pump (Original Language: LAD) + + "HMI_Alarms"."Supplies"."Alarm073" := "gIN_MinPPN304" OR ("HMI_Alarms"."Supplies"."Alarm073" AND "gIN_ResetBtn"); + + IF "gIN_MinPPN304" OR ("HMI_Alarms"."Supplies"."Alarm073" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 65: CRITICAL - Maximum level vacuum pump (Original Language: LAD) + + "HMI_Alarms"."Supplies"."Alarm074" := "gIN_MaxPPN304" OR ("HMI_Alarms"."Supplies"."Alarm074" AND "gIN_ResetBtn"); + + IF "gIN_MaxPPN304" OR ("HMI_Alarms"."Supplies"."Alarm074" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 66: UV Lamp High Temperature - Supplies Alarm - (Original Language: LAD) + + "HMI_Alarms"."Supplies"."Alarm075" := "gUVLampHighTemperature" OR ("HMI_Alarms"."Supplies"."Alarm075" AND "gIN_ResetBtn"); + + IF "gUVLampHighTemperature" OR ("HMI_Alarms"."Supplies"."Alarm075" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 67: UV Lamp Fault - Supplies Alarm - (Original Language: LAD) + + "HMI_Alarms"."Supplies"."Alarm076" := "Blender_Variables"."gInUVLampAlarm" OR ("HMI_Alarms"."Supplies"."Alarm076" AND "gIN_ResetBtn"); + + IF "Blender_Variables"."gInUVLampAlarm" OR ("HMI_Alarms"."Supplies"."Alarm076" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 68: CRITICAL - PCM306 High Pressure (Original Language: LAD) + + "HMI_Alarms"."Supplies"."Alarm078" := "gPCM306HighPress" OR ("HMI_Alarms"."Supplies"."Alarm078" AND "gIN_ResetBtn"); + + IF "gPCM306HighPress" OR ("HMI_Alarms"."Supplies"."Alarm078" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 69: CIP Fault (Original Language: LAD) + + "HMI_Alarms"."External"."Alarm090" := ("HMI_Alarms"."External"."Alarm090" AND "gIN_ResetBtn") OR ("gBlenderCIPMode" AND "Procedure_Variables"."Blender_Run"."Running" AND "gIN_CIP_Fault"); + + IF ("HMI_Alarms"."External"."Alarm090" AND "gIN_ResetBtn") OR ("gBlenderCIPMode" AND "Procedure_Variables"."Blender_Run"."Running" AND "gIN_CIP_Fault") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 70: To HMI (Original Language: LAD) + + IF "gIN_ResetBtn" AND "HMI_Device"."PPP302"."Alarm" THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 71: Water Manual Valve Open (Original Language: LAD) + + "HMI_Alarms"."Operator"."Alarm120" := "gHVM302_Open" OR ("HMI_Alarms"."Operator"."Alarm120" AND "gIN_ResetBtn"); + + IF "gHVM302_Open" OR ("HMI_Alarms"."Operator"."Alarm120" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 72: Syrup Line Manual Drain Valve Open (Original Language: LAD) + + "HMI_Alarms"."Operator"."Alarm121" := "gHVP301_Open" OR ("HMI_Alarms"."Operator"."Alarm121" AND "gIN_ResetBtn"); + + IF "gHVP301_Open" OR ("HMI_Alarms"."Operator"."Alarm121" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 73: Syrup Line Not Selected (Original Language: LAD) + + "HMI_Alarms"."Operator"."Alarm122" := "gSyrupLineNotSelected" OR ("HMI_Alarms"."Operator"."Alarm122" AND "gIN_ResetBtn"); + + IF "gSyrupLineNotSelected" OR ("HMI_Alarms"."Operator"."Alarm122" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 74: Manifold not ready for Prod (Original Language: LAD) + + "HMI_Alarms"."Operator"."Alarm130" := "gIN_ManifoldNotReadyProd" OR ("HMI_Alarms"."Operator"."Alarm130" AND "gIN_ResetBtn"); + + IF "gIN_ManifoldNotReadyProd" OR ("HMI_Alarms"."Operator"."Alarm130" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 75: Manifold not ready for CIP (Original Language: LAD) + + "HMI_Alarms"."Operator"."Alarm131" := "gIN_ManifoldNotReadyCIP" OR ("HMI_Alarms"."Operator"."Alarm131" AND "gIN_ResetBtn"); + + IF "gIN_ManifoldNotReadyCIP" OR ("HMI_Alarms"."Operator"."Alarm131" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 76: Water FlowMeter General Fault - Fault Alarm - (Original Language: LAD) + // Water Flowmeter Fault + + "HMI_Instrument"."FTN301"."Alarm" := "gFTN301_Fault" OR ("HMI_Instrument"."FTN301"."Alarm" AND "gIN_ResetBtn"); + + IF "gFTN301_Fault" OR ("HMI_Instrument"."FTN301"."Alarm" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 77: Syrup FlowMeter General Fault - Fault Alarm - (Original Language: LAD) + // Syrup Flowmeter Fault + + "HMI_Instrument"."FTP302"."Alarm" := "gFTP302_Fault" OR ("HMI_Instrument"."FTP302"."Alarm" AND "gIN_ResetBtn"); + + IF "gFTP302_Fault" OR ("HMI_Instrument"."FTP302"."Alarm" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 78: Carbo CO2 FlowMeter Fault - Fault Alarm - (Original Language: LAD) + // Carbo CO2 Flowmeter Fault + + "HMI_Instrument"."FTM303"."Alarm" := ("gFTM303_Fault" AND "AUX FALSE") OR ("HMI_Instrument"."FTM303"."Alarm" AND "gIN_ResetBtn"); + + IF ("gFTM303_Fault" AND "AUX FALSE") OR ("HMI_Instrument"."FTM303"."Alarm" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 79: CRITICAL - Water Control Valve Position Fault (Original Language: LAD) + + "HMI_PID"."RMM301"."Alarm" := "gRMM301_Pos_Fault" OR ("HMI_PID"."RMM301"."Alarm" AND "gIN_ResetBtn"); + + IF "gRMM301_Pos_Fault" OR ("HMI_PID"."RMM301"."Alarm" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 80: CRITICAL - Syrup Control Valve Position Fault (Original Language: LAD) + + "HMI_PID"."RMP302"."Alarm" := "gRMP302_Pos_Fault" OR ("HMI_PID"."RMP302"."Alarm" AND "gIN_ResetBtn"); + + IF "gRMP302_Pos_Fault" OR ("HMI_PID"."RMP302"."Alarm" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 81: CRITICAL - C02 Injection Control Valve Position Fault (Original Language: LAD) + + "HMI_PID"."RMM303"."Alarm" := "gRMM303_Pos_Fault" OR ("HMI_PID"."RMM303"."Alarm" AND "gIN_ResetBtn"); + + IF "gRMM303_Pos_Fault" OR ("HMI_PID"."RMM303"."Alarm" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 82: CRITICAL - GAS2 Injection Control Valve Position Fault (Original Language: LAD) + + "HMI_PID"."RMM304"."Alarm" := "gRMM304_Pos_Fault" OR ("HMI_PID"."RMM304"."Alarm" AND "gIN_ResetBtn"); + + IF "gRMM304_Pos_Fault" OR ("HMI_PID"."RMM304"."Alarm" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 83: WARNING - Product tank pressure fault (Original Language: LAD) + + "HMI_PID"."RVM301"."Alarm" := "gRVM301_Fault" OR ("HMI_PID"."RVM301"."Alarm" AND "gIN_ResetBtn"); + + IF "gRVM301_Fault" OR ("HMI_PID"."RVM301"."Alarm" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 84: WARNING - Deaireation valve fault (Original Language: LAD) + + "HMI_PID"."RVN304"."Alarm" := "gRVN304Fault" OR ("HMI_PID"."RVN304"."Alarm" AND "gIN_ResetBtn"); + + IF "gRVN304Fault" OR ("HMI_PID"."RVN304"."Alarm" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 85: WARNING - Deaireation valve fault (Original Language: LAD) + + "HMI_Device"."AVM346"."Alarm" := "gAVM346Fault" OR ("HMI_Device"."AVM346"."Alarm" AND "gIN_ResetBtn"); + + IF "gAVM346Fault" OR ("HMI_Device"."AVM346"."Alarm" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 86: WARNING - Deaireation valve fault (Original Language: LAD) + + "HMI_Device"."AVM362"."Alarm" := "gAVM362Fault" OR ("HMI_Device"."AVM362"."Alarm" AND "gIN_ResetBtn"); + + IF "gAVM362Fault" OR ("HMI_Device"."AVM362"."Alarm" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 87: WARNING - Deaireation valve fault (Original Language: LAD) + + "HMI_Device"."AVM327"."Alarm" := "gAVM327Fault" OR ("HMI_Device"."AVM327"."Alarm" AND "gIN_ResetBtn"); + + IF "gAVM327Fault" OR ("HMI_Device"."AVM327"."Alarm" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 88: WARNING - Deaireation valve fault (Original Language: LAD) + + "HMI_Device"."AVM328"."Alarm" := "gAVM328Fault" OR ("HMI_Device"."AVM328"."Alarm" AND "gIN_ResetBtn"); + + IF "gAVM328Fault" OR ("HMI_Device"."AVM328"."Alarm" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 89: To HMI (Original Language: LAD) + + IF "gIN_ResetBtn" AND "HMI_Device"."PPN301"."Alarm" THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 90: To HMI (Original Language: LAD) + + IF "gIN_ResetBtn" AND "HMI_Device"."PPN305"."Alarm" THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 91: To HMI (Original Language: LAD) + + IF "gIN_ResetBtn" AND "HMI_Device"."PPM306"."Alarm" THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 92: To HMI (Original Language: LAD) + + IF "gIN_ResetBtn" AND "HMI_Device"."PPM303"."Alarm" THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 93: To HMI (Original Language: LAD) + + IF "gIN_ResetBtn" AND "HMI_Device"."PPN304"."Alarm" THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 94: To HMI (Original Language: LAD) + + IF "HMI_Device"."SyrupRoom_SyrupPump"."Alarm" AND "gIN_ResetBtn" THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 95: To HMI (Original Language: LAD) + + IF "HMI_Device"."SyrupRoom_WaterPump"."Alarm" AND "gIN_ResetBtn" THEN + "gBlenderAlarm" := TRUE; + END_IF; + + // Network 96: WARNING - CIP Fault (Original Language: LAD) + + "HMI_Alarms"."Operator"."Alarm136" := "PPN301_SoftStart_Averia" OR ("HMI_Alarms"."Operator"."Alarm136" AND "gIN_ResetBtn"); + + IF "PPN301_SoftStart_Averia" OR ("HMI_Alarms"."Operator"."Alarm136" AND "gIN_ResetBtn") THEN + "gBlenderAlarm" := TRUE; + END_IF; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SelCheckBrixSource.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SelCheckBrixSource.md new file mode 100644 index 0000000..f20e219 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SelCheckBrixSource.md @@ -0,0 +1,157 @@ +```pascal +// Block Type: FC +// Block Number: 2010 +// Original Network Languages: LAD + +FUNCTION "SelCheckBrixSource" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + m_mPDS1000Selector : Bool; + mBrix_mPDS1000Selector : Bool; + mDens_mPDS1000Selector : Bool; + mSyrBrixOutSpec : Bool; + SyrFactor : Real; + SyrMFMFactor : Real; + gMeterSyr : Real; + gMFMSyr : Real; + Brix : Real; + SyrBrix : Real; + SyrBrix_SUB : Real; + SyrBrix_ABS : Real; + Water_Density : Real; + Water_Density_ADD : Real; + mDummy : Bool; +END_VAR + + #_4S : Bool; // Auto-generated temporary +BEGIN + + // Network 1: HMI Blender Parameters (Original Language: LAD) + + "m_mPDS1000Selector" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SyrBrixMeter" AND "HMI_Variables_Status"."Meters"."QTM3012_SYR_Fault" AND "Procedure_Variables"."Syr_RunOut"."Latch" AND "Procedure_Variables"."First_Production"."Latch"; + + // Network 2: Meter Syrup Temperature (Original Language: LAD) + + SEL_R(G := "m_mPDS1000Selector", IN0 := "Profibus_Variables"."gFTP302_Temp", IN1 := "mPDS_SYR_PA_Data"."Input_From_mPDS1000"."SyrTemp"); + + // Network 3: Meter Syrup Brix (Original Language: LAD) + + SEL_R(G := "m_mPDS1000Selector", IN0 := "Profibus_Variables"."gFTP302_Brix", IN1 := "mPDS_SYR_PA_Data"."Input_From_mPDS1000"."SyrBrix"); + + // Network 4: Meter Syrup Brix (Original Language: LAD) + + LIMIT_R(IN := "Blender_Variables"."gMeterSyrBrix", MN := 5.0, MX := 100.0); + + // Network 5: Meter Syrup Brix (Original Language: LAD) + + SEL_R(G := "gWorkshopTest", IN0 := "Blender_Variables"."gMeterSyrBrix", IN1 := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_SyrupBrix"); + + // Network 6: Meter Syrup Density (Original Language: LAD) + + SEL_R(G := "m_mPDS1000Selector", IN0 := "Profibus_Variables"."gFTP302_Density", IN1 := "mPDS_SYR_PA_Data"."Input_From_mPDS1000"."SyrDens"); + + // Network 7: Meter Syrup Density (Original Language: LAD) + + SEL_R(G := "gWorkshopTest" AND "gWorkshop_Syrup_Test", IN0 := "Blender_Variables"."gMeterSyrDens", IN1 := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_SyrupDensity"); + + // Network 8: Meter Syrup Density (Original Language: LAD) + + LIMIT_R(IN := "Blender_Variables"."gMeterSyrDens", MN := 0.8, MX := 1.9); + + // Network 9: Syrup Brix Ok (Original Language: LAD) + + "gPV_SyrBrixOk" := "Blender_Variables"."gMeterSyrBrix" > 5.0; + + // Network 10: Syrup Density value not zero (Original Language: LAD) + + WaterDensity(i_Temperature := "HMI_Instrument"."FTP302_Temperature"."PVFiltered"); + + "Water_Density_ADD" := "Water_Density" + "Blender_Constants"."gGoodSyrupDensOffset"; + + "gPV_SyrDensOk" := ("gWorkshopTest" AND "gWorkshop_Syrup_Test") OR ("Blender_Variables"."gMeterSyrDens" > "Water_Density_ADD"); + + // Network 11: SelCheckBrixSource (Original Language: LAD) + + "mSyrDensDelayAlrm"(IN := "Blender_Variables_Pers"."gSugarBeverage" AND "gPV_SyrDensOk" AND "Procedure_Variables"."Syr_RunOut"."Done" AND "Procedure_Variables"."FTP302Line_Preparation"."Done", PT := S5T#4S); // TODO: Declarar "mSyrDensDelayAlrm" : TON; + + "gSyrupDensOutSpec_Fault" := "mSyrDensDelayAlrm".Q; + + // Network 12: Syrup Factor (Original Language: LAD) + + IF Eq("HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_SyrupFactor", 0.0) THEN + "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_SyrupFactor" := 1.0; + END_IF; + + // Network 13: Brix (Original Language: LAD) + + IF NOT "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SyrBrixMeter" OR (NOT "Procedure_Variables"."SyrAuto_Corr"."Latch" AND NOT "Procedure_Variables"."Syr_RunOut"."Latch") THEN + "SyrFactor" := "Blender_Variables"."gProdRunSyrFact" * "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_SyrupFactor"; + END_IF; + + IF NOT "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SyrBrixMeter" OR (NOT "Procedure_Variables"."SyrAuto_Corr"."Latch" AND NOT "Procedure_Variables"."Syr_RunOut"."Latch") THEN + "gMeterSyr" := "SyrFactor" * "Blender_Variables"."gMeterSyrBrix"; + END_IF; + + IF NOT "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SyrBrixMeter" OR (NOT "Procedure_Variables"."SyrAuto_Corr"."Latch" AND NOT "Procedure_Variables"."Syr_RunOut"."Latch") THEN + "Brix" := "gMeterSyr"; + END_IF; + + IF ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SyrBrixMeter" AND "Procedure_Variables"."SyrAuto_Corr"."Latch") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SyrBrixMeter" AND "Procedure_Variables"."Syr_RunOut"."Latch") THEN + "SyrMFMFactor" := "Blender_Variables"."gProdRunSyrMFMFact" * "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_SyrupFactor"; + END_IF; + + IF ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SyrBrixMeter" AND "Procedure_Variables"."SyrAuto_Corr"."Latch") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SyrBrixMeter" AND "Procedure_Variables"."Syr_RunOut"."Latch") THEN + "gMFMSyr" := "SyrMFMFactor" * "Profibus_Variables"."gFTP302_Brix"; + END_IF; + + IF ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SyrBrixMeter" AND "Procedure_Variables"."SyrAuto_Corr"."Latch") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SyrBrixMeter" AND "Procedure_Variables"."Syr_RunOut"."Latch") THEN + "Brix" := "gMFMSyr"; + END_IF; + + IF "Procedure_Variables"."SyrAuto_Corr"."Latch" AND "gPV_SyrBrixOk" THEN + "Blender_Variables"."gActualSyrupBrix" := "Brix"; + END_IF; + + IF NOT "Procedure_Variables"."SyrAuto_Corr"."Latch" OR NOT "gPV_SyrBrixOk" THEN + "Blender_Variables"."gActualSyrupBrix" := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_SyrupBrix"; + END_IF; + + "mDummy" := TRUE; + + // Network 14: Actual Brix (Original Language: LAD) + + LIMIT_R(IN := "Blender_Variables"."gActualSyrupBrix", MN := 5.0, MX := 100.0); + + // Network 15: Latch (Original Language: LAD) + + "mDummy" := ("Procedure_Variables"."SyrAuto_Corr"."Latch" AND "gPV_SyrDensOk") OR ("Procedure_Variables"."First_Production"."Latch" AND "gPV_SyrDensOk"); + + // Network 16: Actual Density (Original Language: LAD) + + SEL_R(G := "mDummy", IN0 := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_SyrupDensity", IN1 := "Blender_Variables"."gMeterSyrDens"); + + // Network 17: Brix Out Spec (Original Language: LAD) + + IF "gBlenderStableFlow" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" AND "Procedure_Variables"."SyrAuto_Corr"."Running" AND "Blender_Variables_Pers"."gSugarBeverage" THEN + "SyrBrix" := "Blender_Variables"."gMeterSyrBrix" * "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_SyrupFactor"; + END_IF; + + IF "gBlenderStableFlow" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" AND "Procedure_Variables"."SyrAuto_Corr"."Running" AND "Blender_Variables_Pers"."gSugarBeverage" THEN + "SyrBrix_SUB" := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_SyrupBrix" - "SyrBrix"; + END_IF; + + // Network 18: Brix Out Spec Alarm (Original Language: LAD) + + "mSyrBxDelayAlrm"(IN := "mSyrBrixOutSpec" AND "Procedure_Variables"."First_Production"."Done", PT := S5T#4S); // TODO: Declarar "mSyrBxDelayAlrm" : TON; + + "gSyrBrixOutSpec_Fault" := "mSyrBxDelayAlrm".Q; + + // Network 19: Slope (Original Language: LAD) + + "Sel_Check_Brix_Data"(i_Cycle := "Time_250ms", i_Enable := "AUX TRUE", i_Num := 8, i_Value := "Profibus_Variables"."gFTP302_Brix"); + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Sel_Check_Brix_Data.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Sel_Check_Brix_Data.md new file mode 100644 index 0000000..b9049fd --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Sel_Check_Brix_Data.md @@ -0,0 +1,22 @@ +```pascal +// Block Type: InstanceDB +// Block Number: 931 + +DATA_BLOCK "Sel_Check_Brix_Data" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + mSumX2 : Real := 8.75; + mX2Sum : Real := 0.0; + mSumX : Real := 7.0; + mSumY : Real := -8097.672; + mSumXY : Real := -8097.665; + mPtr : Int := 7; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Signal Gen.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Signal Gen.md new file mode 100644 index 0000000..686db80 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Signal Gen.md @@ -0,0 +1,37 @@ +```pascal +FUNCTION_BLOCK "Signal Gen" +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : TASK0 +NAME : 'Name' +VERSION : 1.0 + VAR + mRampOut : Real; + mRamp : "SlewLimit"; + END_VAR + + +BEGIN + + + (* classic code: #mRamp(i_InValue := 0.4 * "Blender_Variables".gBlenderNomSpeed * BOOL_TO_INT ("gClock_120s"), + i_SlewMax:=(0.4 * "Blender_Variables".gBlenderNomSpeed / 10), + i_Cycle := "Time_50ms", + out := #mRampOut) ;*) + #mRamp(i_InValue := REAL#0.4 * "Blender_Variables".gBlenderNomSpeed * BOOL_TO_INT ("gClock_120s"), + i_SlewMax:=(REAL#0.4 * "Blender_Variables".gBlenderNomSpeed / 10), + i_Cycle := "Time_50ms", + out := #mRampOut) ; + + IF "Procedure_Variables".First_Production.Done AND NOT "gBlenderAlarm" AND "gIN_Filler1ProductReq" THEN + (* classic code: "Blender_Variables".gFillerProductFlow := "Blender_Variables".gBlenderNomSpeed * 0.55 + #mRampOut ;*) + "Blender_Variables".gFillerProductFlow := "Blender_Variables".gBlenderNomSpeed * REAL#0.55 + #mRampOut ; + ELSE + "Blender_Variables".gFillerProductFlow := 0 ; + END_IF ; + + +END_FUNCTION_BLOCK + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Signal_Gen_Data.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Signal_Gen_Data.md new file mode 100644 index 0000000..b10a648 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Signal_Gen_Data.md @@ -0,0 +1,18 @@ +```pascal +// Block Type: InstanceDB +// Block Number: 943 + +DATA_BLOCK "Signal_Gen_Data" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + mRampOut : Real := 0.0; + mRamp : "SlewLimit"; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SlewLimit.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SlewLimit.md new file mode 100644 index 0000000..4fb3819 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SlewLimit.md @@ -0,0 +1,46 @@ +```pascal +FUNCTION_BLOCK "SlewLimit" +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : 'Function' +NAME : 'Name' +VERSION : 1.0 + VAR_INPUT + i_InValue : Real; // REAL Input Value TO Smooth + i_SlewMax : Real; // Maximum Slew Rate Accepted + i_Cycle : Real; // Cycle TIME + END_VAR + + VAR_IN_OUT + out : Real; + END_VAR + + VAR + mStep : Real; + END_VAR + + +BEGIN + + + #mStep := #i_SlewMax * #i_Cycle ; + + IF #i_InValue >= #out THEN + IF (#i_InValue - #out) > #mStep THEN + #out := #out + #mStep ; + ELSE + #out := #i_InValue ; + END_IF; + ELSE + IF (#out - #i_InValue) > #mStep THEN + #out := #out - #mStep ; + ELSE + #out := #i_InValue ; + END_IF; + END_IF; + + +END_FUNCTION_BLOCK + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SpeedAdjust.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SpeedAdjust.md new file mode 100644 index 0000000..254078a --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SpeedAdjust.md @@ -0,0 +1,47 @@ +```pascal +FUNCTION "SpeedAdjust" : Real +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : 'Function' +NAME : 'Name' +VERSION : 1.0 + VAR_INPUT + i_PrdTnkLvl : Real; + i_TrgTnkLvl : Real; + i_IstLvl : Real; + i_SpeedPerc : Real; + END_VAR + + VAR_TEMP + m_SpeedPerc : Real; + a : Real; // Angolar Coefficient + b : Real; // Constant + mCalc : Real; + END_VAR + + +BEGIN + + + // The following function calculates the percentage speed correction to get Product Tank target Level + // the equation used is: y = a * PrdTankLvl + b ; that is a = - SpeedPerc / IstLvl; and b = 1 - TrgTnkLvl * a + // the function yelds 1.0 at 50% of level; (1 - SpeedPerc) at 80% level; the maximum is (1 + SpeedPerc) + + + #m_SpeedPerc := #i_SpeedPerc / 100 ; + + IF #i_IstLvl > 0 THEN + #a := -#m_SpeedPerc / #i_IstLvl ; + #b := 1 - (#a * #i_TrgTnkLvl) ; + #mCalc := #a * #i_PrdTnkLvl + #b ; + #SpeedAdjust := LIMIT(MN:=1 - #m_SpeedPerc,IN:= #mCalc ,MX:= 1 + #m_SpeedPerc) ; + ELSE + (* classic code: #SpeedAdjust := 0.0 ;*) + #SpeedAdjust := REAL#0.0 ; + END_IF; + + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Statistical_Analisys.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Statistical_Analisys.md new file mode 100644 index 0000000..fe2d9e2 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Statistical_Analisys.md @@ -0,0 +1,134 @@ +```pascal +FUNCTION_BLOCK "Statistical_Analisys" +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : 'Function' +NAME : 'Name' +VERSION : 1.0 + VAR_INPUT + i_Value : Real; + i_Cols : Int; + i_Rows : Int; + END_VAR + + VAR_OUTPUT + MeanValue : Real; + Variance : Real; + Std_Deviation : Real; + END_VAR + + VAR + mData : Array[1..4, 1..40] of Real; + mMeanValue : Array[1..40] of Real; + mVariance : Array[1..40] of Real; + mDimArray : Int := 40; + mDataX : Int := 1; + mDataY : Int := 1; + mCycle : Int; + i : Int; + mTemp : Real; + mTemp1 : Real; + mTemp2 : Real; + mCalcMean : Bool; + mHold : Bool; + mHold3 : Bool; + mHold7 : Bool; + END_VAR + + +BEGIN + + + IF #i_Cols>#mDimArray THEN + #i_Cols := #mDimArray ; + END_IF; + + IF #i_Rows > 4 THEN + #i_Rows := 4 ; + ELSIF #i_Rows <1 THEN + #i_Rows := 1 ; + END_IF; + + IF #mDataX <= #i_Rows AND #mDataY <= #i_Cols THEN + #mData[#mDataX, #mDataY] := #i_Value ; + #mDataX := #mDataX + 1 ; + END_IF; + + IF #mDataX > #i_Rows THEN + #mDataX := 1 ; + #mHold := TRUE ; + #mCalcMean := TRUE ; + END_IF; + + IF #mDataY > #i_Cols THEN + #mDataY := 1 ; + #mHold := TRUE ; + END_IF; + + IF #mCalcMean THEN + #mCalcMean := FALSE ; + #mMeanValue[#mDataY] := 0 ; + + FOR #i:=1 TO #i_Rows DO + #mMeanValue[#mDataY] := #mMeanValue[#mDataY] + #mData[#i, #mDataY] ; + END_FOR; + + #mMeanValue[#mDataY] := #mMeanValue[#mDataY] / #i_Rows ; + #MeanValue := 0 ; + + FOR #i:=1 TO #i_Cols DO + #MeanValue := #MeanValue + #mMeanValue[#i] ; + END_FOR; + + #MeanValue := #MeanValue / #i_Cols ; + #mVariance[#mDataY] := 0 ; + + FOR #i:=1 TO #i_Rows DO + #mTemp := #mData[#i, #mDataY] - #MeanValue ; + #mTemp1 :=(#mTemp * #mTemp) ; + #mVariance[#mDataY] := #mVariance[#mDataY] + (#mTemp * #mTemp) ; + END_FOR; + + #mVariance[#mDataY] := #mVariance[#mDataY] / #i_Rows ; + #Variance := 0 ; + + FOR #i:=1 TO #i_Cols DO + #Variance := #Variance + #mVariance[#i] ; + END_FOR; + + #Variance := #Variance / #i_Cols ; + + IF #Variance > 0 THEN + #Std_Deviation := SQRT(#Variance) ; + END_IF; + + #mDataY := #mDataY + 1 ; + + END_IF; + + IF #mHold THEN + #mCycle := #mCycle + 1 ; + ELSE + #mCycle := 0 ; + END_IF; + + IF #mHold AND NOT #mHold3 AND #mCycle >= 2 THEN + #mHold3 := TRUE ; + #mHold := FALSE ; + END_IF; + + IF #mHold AND #mHold3 AND #mCycle >= 6 THEN + #mHold7 := TRUE ; + #mHold := FALSE ; + END_IF; + + IF #mHold3 AND #mHold7 THEN + #mHold3 := FALSE ; + #mHold7 := FALSE ; + END_IF; + + +END_FUNCTION_BLOCK + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SubCarb.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SubCarb.md new file mode 100644 index 0000000..31d0ee2 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SubCarb.md @@ -0,0 +1,178 @@ +```pascal +// Block Type: FB +// Block Number: 1000 +// Original Network Languages: LAD + +FUNCTION_BLOCK "SubCarb" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + NUM : Int; + ALARM : Bool; + CIP : Bool; + ActualValue : Real; + OpenLimit1 : Real; + CloseLimit1 : Real; + DelayOpen1 : Time; + DelayClose1 : Time; + OpenLimit2 : Real; + CloseLimit2 : Real; + DelayOpen2 : Time; + DelayClose2 : Time; + OpenLimit3 : Real; + CloseLimit3 : Real; + DelayOpen3 : Time; + DelayClose3 : Time; + OpenLimit4 : Real; + CloseLimit4 : Real; + DelayOpen4 : Time; + DelayClose4 : Time; +END_VAR + +VAR_OUTPUT + OUT1 : Bool; + OUT2 : Bool; + OUT3 : Bool; + OUT4 : Bool; +END_VAR + +VAR_INOUT + SCRS1 : Bool; + SCRS2 : Bool; + SCRS3 : Bool; + SCRS4 : Bool; +END_VAR + +VAR_STAT + TDelayOpen1 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + TDelayClose1 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + TDelayOpen2 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + TDelayClose2 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + TDelayOpen3 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + TDelayClose3 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + TDelayOpen4 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + TDelayClose4 : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + +END_VAR + +VAR_TEMP + #TON_INSTANCE_25 : Bool; // Auto-generated temporary +END_VAR + +BEGIN + + // Network 1: (Original Language: LAD) + + #TON_INSTANCE_25(IN := "ActualValue" >= "OpenLimit1", PT := "DelayOpen1"); // TODO: Declarar #TON_INSTANCE_25 : TON; + + // Network 2: (Original Language: LAD) + + #TON_INSTANCE_25(IN := "ActualValue" <= "CloseLimit1", PT := "DelayClose1"); // TODO: Declarar #TON_INSTANCE_25 : TON; + + // Network 3: (Original Language: LAD) + + // Network 3 did not produce printable SCL code. + + // Network 4: (Original Language: LAD) + + "OUT1" := "CIP" OR "SCRS1"; + + // Network 5: (Original Language: LAD) + + #TON_INSTANCE_25(IN := "ActualValue" >= "OpenLimit2", PT := "DelayOpen2"); // TODO: Declarar #TON_INSTANCE_25 : TON; + + // Network 6: (Original Language: LAD) + + #TON_INSTANCE_25(IN := "ActualValue" <= "CloseLimit2", PT := "DelayClose2"); // TODO: Declarar #TON_INSTANCE_25 : TON; + + // Network 7: (Original Language: LAD) + + // Network 7 did not produce printable SCL code. + + // Network 8: (Original Language: LAD) + + "OUT2" := "CIP" OR "SCRS2"; + + // Network 9: (Original Language: LAD) + + #TON_INSTANCE_25(IN := "ActualValue" >= "OpenLimit3", PT := "DelayOpen3"); // TODO: Declarar #TON_INSTANCE_25 : TON; + + // Network 10: (Original Language: LAD) + + #TON_INSTANCE_25(IN := "ActualValue" <= "CloseLimit3", PT := "DelayClose3"); // TODO: Declarar #TON_INSTANCE_25 : TON; + + // Network 11: (Original Language: LAD) + + // Network 11 did not produce printable SCL code. + + // Network 12: (Original Language: LAD) + + "OUT3" := "SCRS3" OR "CIP"; + + // Network 13: (Original Language: LAD) + + #TON_INSTANCE_25(IN := "ActualValue" >= "OpenLimit4", PT := "DelayOpen4"); // TODO: Declarar #TON_INSTANCE_25 : TON; + + // Network 14: (Original Language: LAD) + + #TON_INSTANCE_25(IN := "ActualValue" <= "CloseLimit4", PT := "DelayClose4"); // TODO: Declarar #TON_INSTANCE_25 : TON; + + // Network 15: (Original Language: LAD) + + // Network 15 did not produce printable SCL code. + + // Network 16: (Original Language: LAD) + + "OUT4" := "SCRS4" OR "CIP"; + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SubCarb_DB.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SubCarb_DB.md new file mode 100644 index 0000000..2d9db88 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SubCarb_DB.md @@ -0,0 +1,72 @@ +```pascal +// Block Type: InstanceDB +// Block Number: 2000 + +DATA_BLOCK "SubCarb_DB" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + TDelayOpen1 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := TRUE; + Q : Bool; + END_STRUCT; + + TDelayClose1 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + TDelayOpen2 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := TRUE; + Q : Bool; + END_STRUCT; + + TDelayClose2 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + TDelayOpen3 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + TDelayClose3 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := TRUE; + Q : Bool; + END_STRUCT; + + TDelayOpen4 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := FALSE; + Q : Bool; + END_STRUCT; + + TDelayClose4 : STRUCT + PT : Time := T#0MS; + ET : Time; + IN : Bool := TRUE; + Q : Bool; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SyrBrix_Autocorrection.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SyrBrix_Autocorrection.md new file mode 100644 index 0000000..33e33cf --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SyrBrix_Autocorrection.md @@ -0,0 +1,215 @@ +```pascal +// Block Type: FB +// Block Name (Original): SyrBrix Autocorrection +// Block Number: 1809 +// Original Network Languages: LAD +// Block Comment: +// Syrup Autocorrection means that the measured syrup brix AND syrup density from +// meter, are used instead +// OF the one from the recipe, TO calculate the volumetric ratio. +// Activated only IF the beverage is sugar based. + +FUNCTION_BLOCK "SyrBrix_Autocorrection" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + i_Value : Real; + i_Num : Int; + i_Enable : Bool; +END_VAR + +VAR_OUTPUT + FilterOut : Real; +END_VAR + +VAR_STAT + mProdSyrFact : Real; + mSyrMFMFact : Real; + mAuxONS : Bool; + mAuxONS1 : Bool; + mAuxONS2 : Bool; + mSyrBrix_AutoCorrReqTPON : Bool; + Syrup_Fact_Fltd : "LowPassFilter"; + SyrupMFM_Fact_Fltd : "LowPassFilter"; + mSyrBrix_AutoCorrReqTP : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + +END_VAR + +VAR_TEMP + Latch_ONS : Bool; + sec2_ONS : Bool; + mProdSyrFactAcq : Bool; + mZeroTest : Bool; + mZeroTest1 : Bool; + SyrBrix : Real; +END_VAR + +BEGIN + + // Network 1: Qualifier (Original Language: LAD) + + "Procedure_Variables"."SyrAuto_Corr"."Qualifier" := "gBlenderProdMode" AND "Blender_Variables_Pers"."gSugarBeverage" AND "Procedure_Variables"."First_Production"."Done" AND "Blender_Variables_Pers"."gWaterRecipe" AND "gBlenderRinseMode" AND "gBlenderSuppliesOk"; + + // Network 2: Request (Original Language: LAD) + + // PBox SymPy processed, logic in consumer + "SyrAutoCorrReq" := "Procedure_Variables"."Syr_RunOut"."Latch" AND "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_SyrAutoReq"; // P_TRIG("Procedure_Variables"."Syr_RunOut"."Latch" AND "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_SyrAutoReq") - Mem: "SyrAutoCorrReq" + + "Procedure_Variables"."SyrAuto_Corr"."Request" := ("Procedure_Variables"."Syr_RunOut"."Latch" AND "mSyrBrix_AutoCorrReqTPON") OR ("Procedure_Variables"."Syr_RunOut"."Latch" AND "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_SyrAutoReq" AND NOT "SyrAutoCorrReq"); + + // Network 3: On (Original Language: LAD) + + // Network 3 did not produce printable SCL code. + + // Network 4: Reset (Original Language: LAD) + + "Procedure_Variables"."SyrAuto_Corr"."Reset" := "Procedure_Variables"."SyrAuto_Corr"."Qualifier"; + + // Network 5: Wait (Original Language: LAD) + + "Procedure_Variables"."SyrAuto_Corr"."Wait" := ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SyrBrixMeter" AND "mPDS_SYR_PA_Data"."Input_From_mPDS"."gPAmPDS_CommErr") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SyrBrixMeter" AND "gFTP302_Fault"); + + // Network 6: Latch (Original Language: LAD) + + "Procedure_Variables"."SyrAuto_Corr"."Latch" := ("Procedure_Variables"."SyrAuto_Corr"."Request" AND "FirstScan" AND "Procedure_Variables"."SyrAuto_Corr"."Done" AND "Procedure_Variables"."SyrAuto_Corr"."Reset" AND "Procedure_Variables"."Syr_RunOut"."Done") OR ("Procedure_Variables"."SyrAuto_Corr"."Latch" AND "FirstScan" AND "Procedure_Variables"."SyrAuto_Corr"."Done" AND "Procedure_Variables"."SyrAuto_Corr"."Reset" AND "Procedure_Variables"."Syr_RunOut"."Done"); + + // Network 7: Running (Original Language: LAD) + + // Edge Logic handled by Coil 28 + "SyrAutoCorrLatch" := "Procedure_Variables"."SyrAuto_Corr"."Latch"; // P_TRIG("Procedure_Variables"."SyrAuto_Corr"."Latch") - Mem: "SyrAutoCorrLatch" + + "Latch_ONS" := "Procedure_Variables"."SyrAuto_Corr"."Latch" AND NOT "SyrAutoCorrLatch"; + "SyrAutoCorrLatch" := "Procedure_Variables"."SyrAuto_Corr"."Latch"; // P_TRIG("Procedure_Variables"."SyrAuto_Corr"."Latch") - Mem: "SyrAutoCorrLatch" + + "Procedure_Variables"."SyrAuto_Corr"."Running" := "Procedure_Variables"."SyrAuto_Corr"."Latch" AND "Procedure_Variables"."SyrAuto_Corr"."Wait"; + + // Network 8: Syrup Correction Perc (Original Language: LAD) + + SyrBrix_SyrupCorrPerc(); + + // Network 9: MIX - Blender Variables - Persistent (Original Language: LAD) + + // Edge Logic handled by Coil 26 + "SyrAutoCorrBlink2Sec" := "FirstScan"; // P_TRIG("FirstScan") - Mem: "SyrAutoCorrBlink2Sec" + + "sec2_ONS" := "FirstScan" AND NOT "SyrAutoCorrBlink2Sec"; + "SyrAutoCorrBlink2Sec" := "FirstScan"; // P_TRIG("FirstScan") - Mem: "SyrAutoCorrBlink2Sec" + + // Network 10: Syrup Factor Ack (Original Language: LAD) + + "mProdSyrFactAcq" := "gBlenderEnToRamp" AND "gPV_SyrBrixOk" AND "sec2_ONS" AND "Procedure_Variables"."First_Production"."Done" AND "Procedure_Variables"."SyrAuto_Corr"."Qualifier"; + + // Network 11: mZeroTest (Original Language: LAD) + + "mZeroTest" := Eq("mProdSyrFact", 0.0) OR Eq("Blender_Variables"."gProdRunSyrFact", 0.0); + + // Network 12: mZeroTest1 (Original Language: LAD) + + "mZeroTest1" := Eq("mSyrMFMFact", 0.0) OR Eq("Blender_Variables"."gProdRunSyrMFMFact", 0.0); + + // Network 13: Syrup Factor during Production (Original Language: LAD) + // This segment calculates the Syrup Factor during the production, so when the + // Surup Run Out starts OR the Autocorrection is activated, the actual syrup brix + // doesn't change, the actual ratio doesn't change too + + SEL_R(G := Eq("Blender_Variables"."gMeterSyrBrix", 0.0), IN0 := "Blender_Variables"."gMeterSyrBrix", IN1 := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_SyrupBrix"); + + "SyrBrix" := "SyrBrix" * "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_SyrupFactor"; + + "SyrBrix" := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_SyrupBrix" / "SyrBrix"; + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SyrBrixMeter" AND "mZeroTest" AND "mProdSyrFactAcq" THEN + SEL_R(G := "Procedure_Variables"."SyrAuto_Corr"."Latch" OR "Procedure_Variables"."Syr_RunOut"."Latch", IN0 := "SyrBrix", IN1 := "mProdSyrFact"); + END_IF; + + // Network 14: Syrup Factor during Production (Original Language: LAD) + // This segment calculates the Syrup Factor during production, so when the Syrup + // Run Out starts OR the Autocorrection is activated, the actual syrup brix + // doesn't change, the actual ratio doesn't change too + + SEL_R(G := Eq("Profibus_Variables"."gFTP302_Brix", 0.0), IN0 := "Profibus_Variables"."gFTP302_Brix", IN1 := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_SyrupBrix"); + + "SyrBrix" := "SyrBrix" * "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_SyrupFactor"; + + "SyrBrix" := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_SyrupBrix" / "SyrBrix"; + + IF "mProdSyrFactAcq" AND "mZeroTest1" THEN + SEL_R(G := "Procedure_Variables"."SyrAuto_Corr"."Latch" OR "Procedure_Variables"."Syr_RunOut"."Latch", IN0 := "SyrBrix", IN1 := "mSyrMFMFact"); + END_IF; + + // Network 15: Syrup Factor (Original Language: LAD) + + IF "mZeroTest" OR "Procedure_Variables"."First_Production"."Latch" THEN + "mProdSyrFact" := 1.0; + "Blender_Variables"."gProdRunSyrFact" := 1.0; + END_IF; + + // Network 16: Syrup Factor (Original Language: LAD) + + IF "mZeroTest1" OR "Procedure_Variables"."First_Production"."Latch" THEN + "mSyrMFMFact" := 1.0; + "Blender_Variables"."gProdRunSyrMFMFact" := 1.0; + END_IF; + + // Network 17: Factor Filter (Original Language: LAD) + + IF "Procedure_Variables"."SyrAuto_Corr"."Latch" AND "mProdSyrFactAcq" THEN + "Syrup_Fact_Fltd"(i_Enable := "AUX TRUE", i_Num := 12, i_Value := "mProdSyrFact"); + END_IF; + + // Network 18: Factor Filter (Original Language: LAD) + + IF "Procedure_Variables"."SyrAuto_Corr"."Latch" AND "mProdSyrFactAcq" THEN + "SyrupMFM_Fact_Fltd"(i_Enable := "AUX TRUE", i_Num := 12, i_Value := "mSyrMFMFact"); + END_IF; + + // Network 19: Syrup Factor (Original Language: LAD) + + IF "Procedure_Variables"."SyrAuto_Corr"."Request" AND "AUX FALSE" THEN + "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_SyrupFactor" := "Blender_Variables"."gProdRunSyrFact" * "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_SyrupFactor"; + END_IF; + + "HMI_Variables_Cmd"."Recipe_Updates"."SyrFactUpdate" := "Procedure_Variables"."SyrAuto_Corr"."Request" AND "AUX FALSE"; + + // Network 20: Maximum Syrup Brix Autocorr Acheaved - minimum ratio - (Original Language: LAD) + + "gMinRatio" := "HMI_PID"."RMP302"."Out" > 95.0; + + // Network 21: Maximum Syrup Brix Autocorr Acheaved maximum autocorr per (Original Language: LAD) + + "gMaxSyrAutoCorrDone" := "HMI_Variables_Status"."Analog_Values"."SyrupBrixCorrection" > 52.0; + + "HMI_Alarms"."gH_Status" := "HMI_Variables_Status"."Analog_Values"."SyrupBrixCorrection" > 52.0; + + // Network 22: Maximum Syrup Brix Autocorr Acheaved - minimum ratio - (Original Language: LAD) + + IF "Procedure_Variables"."SyrAuto_Corr"."Latch" THEN + "gMinRatio" := FALSE; + END_IF; + + IF "Procedure_Variables"."SyrAuto_Corr"."Latch" THEN + "gMaxSyrAutoCorrDone" := FALSE; + END_IF; + + // Network 23: Autocorrection Run (Original Language: LAD) + + "HMI_Variables_Status"."Procedures"."SyrBrixAutoRun" := "Procedure_Variables"."SyrAuto_Corr"."Latch"; + + // Network 24: Syrup Autocorrection Running (Original Language: LAD) + // Message Syrup Autocorrection Running TO HMI + + "HMI_Alarms"."gH_Status" := "Procedure_Variables"."SyrAuto_Corr"."Running"; + + // Network 25: Done (Original Language: LAD) + + "Procedure_Variables"."SyrAuto_Corr"."Done" := ("Procedure_Variables"."SyrAuto_Corr"."Request" AND "Latch_ONS" AND "Procedure_Variables"."Syr_RunOut"."Latch") OR ("Procedure_Variables"."SyrAuto_Corr"."Running" AND "gMinRatio" AND "Procedure_Variables"."Syr_RunOut"."Latch") OR ("Procedure_Variables"."SyrAuto_Corr"."Running" AND "gMaxSyrAutoCorrDone" AND "Procedure_Variables"."Syr_RunOut"."Latch"); + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SyrBrix_SyrupCorrPerc.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SyrBrix_SyrupCorrPerc.md new file mode 100644 index 0000000..456ccba --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SyrBrix_SyrupCorrPerc.md @@ -0,0 +1,26 @@ +```pascal +FUNCTION "SyrBrix_SyrupCorrPerc" : Void +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : TASK2 +NAME : 'Name' +VERSION : 1.0 + +BEGIN + + + IF "Procedure_Variables".SyrAuto_Corr.Latch AND "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupFactor <> 0 AND "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupBrix <> 0 THEN + (* classic code: "HMI_Variables_Status".Analog_Values.SyrupBrixCorrection := 100.0 - ("Blender_Variables".gActualSyrupBrix / ("HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupBrix * + "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupFactor) * 100.0) ;*) + "HMI_Variables_Status".Analog_Values.SyrupBrixCorrection := REAL#100.0 - ("Blender_Variables".gActualSyrupBrix / ("HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupBrix * + "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupFactor) * REAL#100.0) ; + ELSE + (* classic code: "HMI_Variables_Status".Analog_Values.SyrupBrixCorrection := 0.0 ;*) + "HMI_Variables_Status".Analog_Values.SyrupBrixCorrection := REAL#0.0 ; + END_IF; + + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SyrupDensity.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SyrupDensity.md new file mode 100644 index 0000000..173b876 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SyrupDensity.md @@ -0,0 +1,28 @@ +```pascal +FUNCTION "SyrupDensity" : Real +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : 'Function' +NAME : 'Name' +VERSION : 1.0 + VAR_INPUT + i_SyrupBrix : Real; + END_VAR + + +BEGIN + + + (* classic code: IF "Blender_Constants".gDens_Sucrose <> 0.0 AND ("Blender_Constants".gH2O_Density / "Blender_Constants".gDens_Sucrose) <> 1.0 THEN*) + IF "Blender_Constants".gDens_Sucrose <> REAL#0.0 AND ("Blender_Constants".gH2O_Density / "Blender_Constants".gDens_Sucrose) <> REAL#1.0 THEN + (* classic code: #SyrupDensity := "Blender_Constants".gH2O_Density /(1.0 + #i_SyrupBrix / 100.0 * (("Blender_Constants".gH2O_Density / "Blender_Constants".gDens_Sucrose) - 1.0)) ;*) + #SyrupDensity := "Blender_Constants".gH2O_Density /(REAL#1.0 + #i_SyrupBrix / REAL#100.0 * (("Blender_Constants".gH2O_Density / "Blender_Constants".gDens_Sucrose) - REAL#1.0)) ; + ELSE + (* classic code: #SyrupDensity := 0.0;*) + #SyrupDensity := REAL#0.0; + END_IF; + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SyrupRoomCtrl.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SyrupRoomCtrl.md new file mode 100644 index 0000000..f93e32a --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SyrupRoomCtrl.md @@ -0,0 +1,22 @@ +```pascal +// Block Type: FC +// Block Number: 2024 +// Original Network Languages: LAD + +FUNCTION "SyrupRoomCtrl" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +BEGIN + + // Network 1: Syrup Room Control Update Values (Original Language: LAD) + + SyrupRoomCtrl_UpdateVal(); + + // Network 2: Message (Original Language: LAD) + + "HMI_Alarms"."gH_Message" := "HMI_Instrument"."PTP338"."PVFiltered" <= "HMI_Blender_Parameters"."ProcessSetup"."_SyrupLinePressure"; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SyrupRoomCtrl_UpdateVal.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SyrupRoomCtrl_UpdateVal.md new file mode 100644 index 0000000..11a946c --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/SyrupRoomCtrl_UpdateVal.md @@ -0,0 +1,36 @@ +```pascal +FUNCTION "SyrupRoomCtrl_UpdateVal" : Void +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : TASK2 +NAME : 'Name' +VERSION : 1.0 + +BEGIN + + + "HMI_Blender_Parameters".ProcessSetup._SyrupRoomTank := LIMIT (MN:= 1, IN:= "HMI_Blender_Parameters".ProcessSetup._SyrupRoomTank, MX:= 20) ; + + IF NOT "HMI_Blender_Parameters".Processor_Options.Blender_OPT._FastChangeOverEnabled THEN + IF "mSaveNumTank" = 0 THEN + "mSaveNumTank" := "HMI_Blender_Parameters".ProcessSetup._SyrupRoomTank ; + END_IF; + + IF "mSaveNumTank" <> "HMI_Blender_Parameters".ProcessSetup._SyrupRoomTank THEN + "HMI_Blender_Parameters".ProcessSetup._SyrupRunOutLiters := "Blender_Variables_Pers".gSyrupRoomTankLiter["HMI_Blender_Parameters".ProcessSetup._SyrupRoomTank] ; + "mSaveNumTank" := "HMI_Blender_Parameters".ProcessSetup._SyrupRoomTank ; + END_IF; + + IF "HMI_Blender_Parameters".ProcessSetup._SyrupRunOutLiters <> "Blender_Variables_Pers".gSyrupRoomTankLiter["HMI_Blender_Parameters".ProcessSetup._SyrupRoomTank] THEN + "Blender_Variables_Pers".gSyrupRoomTankLiter["HMI_Blender_Parameters".ProcessSetup._SyrupRoomTank] := "HMI_Blender_Parameters".ProcessSetup._SyrupRunOutLiters ; + END_IF; + + ELSE + "HMI_Blender_Parameters".ProcessSetup._SyrupRoomTank := 1 ; + END_IF; + + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Syrup_Line_MFM_Prep_Seq.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Syrup_Line_MFM_Prep_Seq.md new file mode 100644 index 0000000..6e00d88 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Syrup_Line_MFM_Prep_Seq.md @@ -0,0 +1,303 @@ +```pascal +// Block Type: FC +// Block Name (Original): Syrup Line MFM Prep_Seq +// Block Number: 1810 +// Original Network Languages: LAD, STL + +FUNCTION "Syrup_Line_MFM_Prep_Seq" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + FuzzyNetOut : Bool; + WaterCountAcheaved : Bool; + SyrupLineManualDrained : Bool; + mSyrMinLevel : Bool; + mStopPumpP2 : Bool; +END_VAR + +VAR_INOUT + mStep : Int; + mTimer : Int; + mTransition : Bool; +END_VAR + +VAR_TEMP + Next : Int; + __PlcmigTempFillBits_2B0 : Array[0..7] of Bool; +END_VAR + +BEGIN + + // Network 1: STEP CONTROL (Original Language: STL) + + // --- BEGIN STL Network 1 --- + + L "mStep" + JL LEND + JU ST00 + JU ST01 + JU ST02 + JU ST03 + JU ST04 + JU ST05 + JU ST06 + LEND: JU FULL + FULL: L 0 + T "mStep" + JU END + + // --- END STL Network 1 --- + + // Network 2: STEP 00 (Original Language: STL) + + // --- BEGIN STL Network 2 --- + + ST00: NOP_0 + + // --- END STL Network 2 --- + + // Network 3: STEP 00 (Original Language: STL) + + // --- BEGIN STL Network 3 --- + + A "AUX TRUE" + = "__PlcmigTempFillBits_2B0"[0] + BLD 103 + A "AUX TRUE" + = "__PlcmigTempFillBits_2B0"[1] + BLD 103 + A "Procedure_Variables".FTP302Line_Preparation.Wait + = "__PlcmigTempFillBits_2B0"[2] + BLD 103 + A CLK_0.5S + = "__PlcmigTempFillBits_2B0"[3] + BLD 103 + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 3 --- + + // Network 4: STEP 01 (Original Language: LAD) + // Step 0: Spare + + IF "AUX FALSE" THEN + "gSP_RVP303" := TRUE; + END_IF; + + IF "AUX FALSE" THEN + "gSP_AVP324" := TRUE; + END_IF; + + // Network 5: STEP 01 (Original Language: LAD) + + "HMI_Variables_Status"."Procedures"."BlenderStateNum" := 16; + + // Network 6: STEP 01 (Original Language: STL) + + // --- BEGIN STL Network 6 --- + + A_BRACK + O "HMI_Digital".LAL_S3.Filtered + O "gIN_SyrTank_MinLvl" + BRACKET + = "__PlcmigTempFillBits_2B0"[0] + BLD 103 + A "AUX TRUE" + = "__PlcmigTempFillBits_2B0"[1] + BLD 103 + A "Procedure_Variables".FTP302Line_Preparation.Wait + = "__PlcmigTempFillBits_2B0"[2] + BLD 103 + A CLK_0.5S + = "__PlcmigTempFillBits_2B0"[3] + BLD 103 + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 6 --- + + // Network 7: STEP 02 (Original Language: LAD) + // Step 1: Wait Syrup Tank minimun Level + + IF "mSyrMinLevel" OR "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SyrupLevel" THEN + "gSP_RVP303" := TRUE; + END_IF; + + // Network 8: STEP 02 (Original Language: LAD) + + IF "mStopPumpP2" THEN + "gSP_PPP302" := TRUE; + END_IF; + + // Network 9: STEP 02 (Original Language: LAD) + + IF "AUX FALSE" THEN + "gSP_AVP324" := TRUE; + END_IF; + + // Network 10: STEP 02 (Original Language: LAD) + + "HMI_Variables_Status"."Procedures"."BlenderStateNum" := 16; + + // Network 11: STEP 02 (Original Language: STL) + + // --- BEGIN STL Network 11 --- + + AN "gFTP302_EPD" + = "__PlcmigTempFillBits_2B0"[0] + BLD 103 + A "AUX TRUE" + = "__PlcmigTempFillBits_2B0"[1] + BLD 103 + A "Procedure_Variables".FTP302Line_Preparation.Wait + = "__PlcmigTempFillBits_2B0"[2] + BLD 103 + A CLK_0.5S + = "__PlcmigTempFillBits_2B0"[3] + BLD 103 + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 11 --- + + // Network 12: STEP 03 (Original Language: LAD) + // Step 2: Wait Syrup Count + + IF "mStopPumpP2" THEN + "gSP_PPP302" := TRUE; + END_IF; + + IF "mStopPumpP2" THEN + "gSP_AVP344" := TRUE; + END_IF; + + // Network 13: STEP 03 (Original Language: LAD) + + IF "mSyrMinLevel" OR "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SyrupLevel" THEN + "gSP_RVP303" := TRUE; + END_IF; + + // Network 14: STEP 03 (Original Language: LAD) + + "HMI_Variables_Status"."Procedures"."BlenderStateNum" := 16; + + // Network 15: STEP 03 (Original Language: STL) + + // --- BEGIN STL Network 15 --- + + A_BRACK + O "WaterCountAcheaved" + O "SyrupLineManualDrained" + O "Blender_Variables_Pers".gSugarBeverage + BRACKET + = "__PlcmigTempFillBits_2B0"[0] + BLD 103 + A "AUX TRUE" + = "__PlcmigTempFillBits_2B0"[1] + BLD 103 + A "Procedure_Variables".FTP302Line_Preparation.Wait + = "__PlcmigTempFillBits_2B0"[2] + BLD 103 + A CLK_0.5S + = "__PlcmigTempFillBits_2B0"[3] + BLD 103 + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 15 --- + + // Network 16: STEP 04 (Original Language: LAD) + // Step 3: Wait Syrup Count + Syrup Density + Syrup Brix > 100 + + IF "mStopPumpP2" THEN + "gSP_AVP344" := TRUE; + END_IF; + + IF "mStopPumpP2" THEN + "gSP_PPP302" := TRUE; + END_IF; + + // Network 17: STEP 04 (Original Language: LAD) + + IF "mSyrMinLevel" OR "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SyrupLevel" THEN + "gSP_RVP303" := TRUE; + END_IF; + + // Network 18: STEP 04 (Original Language: LAD) + + "HMI_Variables_Status"."Procedures"."BlenderStateNum" := 16; + + // Network 19: STEP 04 (Original Language: STL) + + // --- BEGIN STL Network 19 --- + + AN "gFTP302_EPD" + = "__PlcmigTempFillBits_2B0"[0] + BLD 103 + A "FuzzyNetOut" + = "__PlcmigTempFillBits_2B0"[1] + BLD 103 + A "Procedure_Variables".FTP302Line_Preparation.Wait + = "__PlcmigTempFillBits_2B0"[2] + BLD 103 + A CLK_0.5S + = "__PlcmigTempFillBits_2B0"[3] + BLD 103 + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 19 --- + + // Network 20: STEP 05 (Original Language: LAD) + // Step 4: Check Syrup Density + + IF "mSyrMinLevel" OR "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SyrupLevel" THEN + "gSP_RVP303" := TRUE; + END_IF; + + // Network 21: STEP 05 (Original Language: STL) + + // --- BEGIN STL Network 21 --- + + A_BRACK + O "HMI_Digital".LAL_S3.Filtered + O "gIN_SyrTank_MinLvl" + BRACKET + = "__PlcmigTempFillBits_2B0"[0] + BLD 103 + A "AUX TRUE" + = "__PlcmigTempFillBits_2B0"[1] + BLD 103 + A "Procedure_Variables".FTP302Line_Preparation.Wait + = "__PlcmigTempFillBits_2B0"[2] + BLD 103 + A CLK_0.5S + = "__PlcmigTempFillBits_2B0"[3] + BLD 103 + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 21 --- + + // Network 22: STEP 06 (Original Language: LAD) + + "Procedure_Variables"."FTP302Line_Preparation"."Done" := Eq("mStep", 6); + + // Network 23: SEQUENCER END (Original Language: STL) + + // --- BEGIN STL Network 23 --- + + END: NOP_0 + + // --- END STL Network 23 --- + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Syrup_MFM_StartUp_Seq.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Syrup_MFM_StartUp_Seq.md new file mode 100644 index 0000000..630c740 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Syrup_MFM_StartUp_Seq.md @@ -0,0 +1,122 @@ +```pascal +// Block Type: FC +// Block Name (Original): Syrup MFM StartUp_Seq +// Block Number: 1811 +// Original Network Languages: LAD, STL + +FUNCTION "Syrup_MFM_StartUp_Seq" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INOUT + mStep : Int; + mTime : Int; + mTransition : Bool; +END_VAR + +VAR_TEMP + __PlcmigTempFillBits_0B0 : Array[0..7] of Bool; +END_VAR + +BEGIN + + // Network 1: STEP CONTROL (Original Language: STL) + + // --- BEGIN STL Network 1 --- + + L "mStep" + JL LEND + JU ST00 + JU ST01 + JU ST02 + LEND: JU FULL + FULL: L 0 + T "mStep" + JU END + + // --- END STL Network 1 --- + + // Network 2: STEP 00 (Original Language: LAD) + // Step 0: Wait Syrup Tank Minimum Level + + IF "AUX FALSE" THEN + "gSP_RVP303" := TRUE; + END_IF; + + // Network 3: STEP 00 (Original Language: STL) + + // --- BEGIN STL Network 3 --- + + A_BRACK + O "HMI_Digital".LAL_S3.Filtered + O "gIN_SyrTank_MinLvl" + BRACKET + = "__PlcmigTempFillBits_0B0"[0] + BLD 103 + A "AUX TRUE" + = "__PlcmigTempFillBits_0B0"[1] + BLD 103 + A "Procedure_Variables".FTP302_StartUp.Wait + = "__PlcmigTempFillBits_0B0"[2] + BLD 103 + A CLK_0.5S + = "__PlcmigTempFillBits_0B0"[3] + BLD 103 + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 3 --- + + // Network 4: STEP 01 (Original Language: LAD) + // Step 1: Wait Syrup Tank Minimum Level + + IF "AUX FALSE" THEN + "gSP_PPP302" := TRUE; + END_IF; + + IF "AUX FALSE" THEN + "gSP_RVP303" := TRUE; + END_IF; + + IF "AUX FALSE" THEN + "gSP_AVP324" := TRUE; + END_IF; + + // Network 5: STEP 01 (Original Language: STL) + + // --- BEGIN STL Network 5 --- + + AN "gFTP302_EPD" + = "__PlcmigTempFillBits_0B0"[0] + BLD 103 + A "AUX TRUE" + = "__PlcmigTempFillBits_0B0"[1] + BLD 103 + A "Procedure_Variables".FTP302_StartUp.Wait + = "__PlcmigTempFillBits_0B0"[2] + BLD 103 + A CLK_0.5S + = "__PlcmigTempFillBits_0B0"[3] + BLD 103 + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 5 --- + + // Network 6: STEP 02 (Original Language: LAD) + + "Procedure_Variables"."FTP302_StartUp"."Done" := "AUX FALSE"; + + // Network 7: END (Original Language: STL) + + // --- BEGIN STL Network 7 --- + + END: NOP_0 + + // --- END STL Network 7 --- + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Syrup_Rinse_QCO_Seq.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Syrup_Rinse_QCO_Seq.md new file mode 100644 index 0000000..38a1b5e --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Syrup_Rinse_QCO_Seq.md @@ -0,0 +1,163 @@ +```pascal +// Block Type: FC +// Block Name (Original): Syrup Rinse QCO_Seq +// Block Number: 1826 +// Original Network Languages: LAD, STL + +FUNCTION "Syrup_Rinse_QCO_Seq" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INOUT + mStep : Int; + mTime : Int; + mTransition : Bool; +END_VAR + +VAR_TEMP + mTP301FUDly : Bool; + mTP301FU : Bool; + __PlcmigTempFillBit_0B2 : Bool; + __PlcmigTempFillBit_0B3 : Bool; + __PlcmigTempFillBit_0B4 : Bool; + __PlcmigTempFillBit_0B5 : Bool; + __PlcmigTempFillBit_0B6 : Bool; + __PlcmigTempFillBit_0B7 : Bool; + __PlcmigTempFillBit_1B0 : Bool; + __PlcmigTempFillBit_1B1 : Bool; + __PlcmigTempFillBit_1B2 : Bool; + __PlcmigTempFillBit_1B3 : Bool; + __PlcmigTempFillBit_1B4 : Bool; + __PlcmigTempFillBit_1B5 : Bool; + __PlcmigTempFillBit_1B6 : Bool; + __PlcmigTempFillBit_1B7 : Bool; +END_VAR + + #_10S : Bool; // Auto-generated temporary +BEGIN + + // Network 1: STEP CONTROL (Original Language: STL) + + // --- BEGIN STL Network 1 --- + + L "mStep" + JL LEND + JU ST00 + JU ST01 + JU ST02 + LEND: JU FULL + FULL: L 0 + T "mStep" + JU END + + // --- END STL Network 1 --- + + // Network 2: STEP 00 (Original Language: LAD) + + IF "AUX FALSE" THEN + "gSP_RVP303" := TRUE; + END_IF; + + IF "AUX FALSE" THEN + "gSP_AVP389" := TRUE; + END_IF; + + IF "AUX FALSE" THEN + "gSP_PPP302" := TRUE; + END_IF; + + IF "AUX FALSE" THEN + "gSP_AVP363" := TRUE; + END_IF; + + // Network 3: STEP 00 (Original Language: STL) + + // --- BEGIN STL Network 3 --- + + A "HMI_Device".PPP302.Out + = "__PlcmigTempFillBit_1B0" + BLD 103 + A "AUX TRUE" + = "__PlcmigTempFillBit_1B1" + BLD 103 + A "Procedure_Variables".Syr_RunOut.Wait + = "__PlcmigTempFillBit_1B2" + BLD 103 + A CLK_0.5S + = "__PlcmigTempFillBit_1B3" + BLD 103 + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 3 --- + + // Network 4: STEP 01 (Original Language: LAD) + + IF "AUX FALSE" AND "gCIP_SyrTank_MaxLevel" THEN + "gSP_AVP361" := TRUE; + END_IF; + + IF "AUX FALSE" THEN + "gSP_AVP389" := TRUE; + END_IF; + + IF "AUX FALSE" THEN + "gSP_PPP302" := TRUE; + END_IF; + + IF "AUX FALSE" THEN + "gSP_RVP303" := TRUE; + END_IF; + + IF "AUX FALSE" THEN + "gSP_AVP363" := TRUE; + END_IF; + + // Network 5: Delay to fill up to TP301 tank (Original Language: LAD) + + "TP301FillUpDly"(IN := "HMI_Device"."PPP302"."Out", PT := S5T#10S); // TODO: Declarar "TP301FillUpDly" : TON; + + IF "HMI_Device"."PPP302"."Out" AND "TP301FillUpDly" THEN + "gSP_AVP324" := TRUE; + END_IF; + + // Network 6: (Original Language: STL) + + // --- BEGIN STL Network 6 --- + + A "HMI_Device".PPP302.Out + = "__PlcmigTempFillBit_1B0" + BLD 103 + A "HMI_Device".AVP361.Out + = "__PlcmigTempFillBit_1B1" + BLD 103 + A "Procedure_Variables".Syr_RunOut.Wait + = "__PlcmigTempFillBit_1B2" + BLD 103 + A CLK_0.5S + = "__PlcmigTempFillBit_1B3" + BLD 103 + CALL "_StepMove" + A _Statusword_? + JC END + + // --- END STL Network 6 --- + + // Network 7: STEP 02 (Original Language: LAD) + + IF "AUX FALSE" THEN + "Procedure_Variables"."Syr_RunOut"."FastChangeOverRinseDone" := TRUE; + END_IF; + + // Network 8: END (Original Language: STL) + + // --- BEGIN STL Network 8 --- + + END: NOP_0 + + // --- END STL Network 8 --- + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/System_RunOut_Variables.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/System_RunOut_Variables.md new file mode 100644 index 0000000..8d5b3e9 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/System_RunOut_Variables.md @@ -0,0 +1,155 @@ +```pascal +// Block Type: GlobalDB +// Block Number: 962 + +DATA_BLOCK "System_RunOut_Variables" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + TM301_RunOut : "Struct"; + TM301_Drain : "Struct"; + ProdPipeDrain : "Struct"; + Spar480 : "Struct"; + Spare640 : "Struct"; + Spare01 : Real := 0.0; + Spare02 : Real := 0.0; + TM301RunOutFillerBott : Bool := FALSE; + ProdPipeRunOutFillerBott : Bool := FALSE; + ProdPipeRunOutWaterCount : Bool := TRUE; + RMM301_OV_ProdPipeRunOut : Real := 30.0; + RMP302_OV_ProdPipeRunOut : Real := 40.0; + TP301Volume : Real := 0.0; + TP301BottomVol : Real := 0.0; + TP301SyrupAmount : Real := 30.0; + FillerProductAvailAmount : Real := 250.0; + ProdAvailBottle_FillerBB : Real := 4500.0; + Spare03 : Bool := FALSE; + ProdPipeRunOutProdAmount : Real := 0.0; + TM301RunOutChillerAm : Real := 100.0; + CheckNextRecipe : Bool := FALSE; + LoadNextRecipe : Bool := FALSE; + NextRecipeOk : Bool := FALSE; + SystemRunOutInit : Bool := FALSE; + ChillerPushDone : Bool := FALSE; + FillerNextRecipeNum : Byte; + ProdAvailToFillerRunOut : Real := 1000.0; + TotalProductAvailable : Real := 108.361; + TotProdAvailableBottle : Real := 180.6017; + TankProductAvailable : Real := 108.361; + PrdPipeProductAvailable : Real := 0.0; + SyrupProductAvailable : Real := 0.0; + FillerProductAvailable : Real := 0.0; + ContainerSize : Real := 0.6; + TotalEmptyContainer : Real := 2100.0; + SystemRunOutFillerNotAck : Bool := FALSE; + FillerRinseTankEmpty : Bool := FALSE; + FillerRinseTankDrain : Bool := FALSE; + FromFillerFastRinseCompl : Bool := FALSE; + InConveyerFull : Bool := FALSE; + In_Flr_WaterRinseRequest : Bool := FALSE; + In_Flr_LastContainer : Bool := FALSE; + In_Flr_FastRinseReady : Bool := FALSE; + In_Flr_FastRinseComplete : Bool := FALSE; + In_Flr_OpAVM369ProdPipeD : Bool := FALSE; + In_FillerRinseTankMaxLev : Bool := FALSE; + In_FillerRinseTankMinLe : Bool := FALSE; + OutFillerSlowSpeed : Bool := FALSE; + Out_OpAVM368InletWater : Bool := FALSE; + Out_OpAVM366FlrTankOut : Bool := FALSE; + Out_OpAVM371RinseTankSpr : Bool := FALSE; + Out_OpAVM371FillerProduc : Bool := FALSE; + Out_OpAVM372RinseTankDra : Bool := FALSE; + Out_OpAVM369ProdPipeDrai : Bool := FALSE; + Out_StartRinseTankPump : Bool := FALSE; + Out_Flr_FastRinseReq : Bool := FALSE; + Out_Flr_WaterRinseReady : Bool := FALSE; + Out_Flr_ProductCompleted : Bool := FALSE; + Out_Flr_FillerRunOutReq : Bool := FALSE; + ToFillerStartPipeRunOut : Bool := FALSE; + Spare170 : Real := 0.0; + FillerBottleCount : Real := 0.0; + CloseSyrupLineValves : Bool := TRUE; + SyrupLine1_AVP364 : Bool := FALSE; + SyrupLine2_AVP365 : Bool := FALSE; + SpareProcedure_00 : "Struct"; + SpareProcedure_01 : "Struct"; + SpareProcedure_02 : "Struct"; + SpareProcedure_03 : "Struct"; + System_RunOut : "Struct"; + ProdPipe_RunOut : "Struct"; + Spare192 : "Struct"; + Spare194 : "Struct"; + ProdPipe_Drain : "Struct"; + Spare198 : Bool := FALSE; + FastChangeOverActivated : Bool := FALSE; + FillerRanOut : Bool := FALSE; + ToFillerProdRunOut : Bool := FALSE; + ToFillerProductCompleted : Bool := FALSE; + FillerTankRinseLoaded : Bool := FALSE; + TM301_RunOut2 : "Struct"; + Prod_Pipe_RunOut : "Struct"; + gNext_Recipe : STRUCT + _Name : String[32]; + _EnProdTemp : Bool := FALSE; + _EnDeaireation : Bool := FALSE; + _GAS2_Injection : Bool := FALSE; + _AirSteril : Bool := FALSE; + _EnBlowOffProdPipeCo2Fil : Bool := FALSE; + _Deareation_Vacum : Bool := FALSE; + _Deareation_Co2 : Bool := FALSE; + _Pasteur : Bool; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int := 1; + _ProdMeterRecipeNum : Int := 0; + _SyrupBrix : Real := 50.0; + _SyrupDensity : Real := 1.2558; + _SyrupFactor : Real := 1.0; + _ProductBrix : Real := 10.45; + _ProductionRate : Real := 900.0; + _Ratio : Real := 20.0; + _ProdBrixOffset : Real := 0.0; + _CO2Vols : Real := 0.0; + _CO2Fact : Real := 1.0; + _ProdTankPress : Real := 1.0; + _SP_ProdTemp : Real := 10.0; + _PrdTankMinLevel : Real := 10.0; + _WaterValveSave : Real := 0.0; + _SyrupValveSave : Real := 0.0; + _CarboCO2ValveSave : Real := 0.0; + _ProdMeterHighBrix : Real := 0.0; + _ProdMeterLowBrix : Real := 0.0; + _ProdMeterHighCO2 : Real := 0.0; + _ProdMeterLowCO2 : Real := 0.0; + _ProdMeter_ZeroCO2 : Real := 0.0; + _ProdMeter_ZeroBrix : Real := 0.0; + _ProdHighCond : Real := 0.0; + _ProdLowCond : Real := 0.0; + _BottleSize : Real := 0.0; + _FillingValveHead_SP : Real := 0.0; + _SyrMeter_ZeroBrix : Real := 0.0; + _FirstProdExtraCO2Fact : Real := 0.97; + _Gas2Vols : Real := 0.0; + _Gas2Fact : Real := 1.0; + _SyrupPumpFreq : Real := 0.0; + _WaterPumpFreq : Real := 0.0; + _CO2_Air_N2_PressSelect : Int := 0; + _KFactRVM304BlowOff : Real := 0.0; + _ProdRecircPumpFreq : Real := 0.0; + _DeareationFactor : Real := 0.0; + _CarboCO2Pressure : Real := 0.0; + _InjCO2Press_Offset : Real := 0.0; + _ProdPump1_Hz : Real := 0.0; + _ProdPump2_Hz : Real := 0.0; + _Prod_Temp_Heating_Cooling : Int; + END_STRUCT; + +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/System_Run_Out.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/System_Run_Out.md new file mode 100644 index 0000000..f132b4e --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/System_Run_Out.md @@ -0,0 +1,417 @@ +```pascal +// Block Type: FB +// Block Number: 1820 +// Original Network Languages: LAD, STL + +FUNCTION_BLOCK "System_Run_Out" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_STAT + mStepNum : Int; + mTimeStep : Int; + mTransition : Bool; + mReqONS : Bool; + mSystemRunOut_Abort : Bool; + mSystemRunOutInitONS : Bool; + mToggleLine : Bool; + mAuxToggleLine : Bool; + mSystemRunOutAux : Bool; + mSystemRunOutAux1 : Bool; + mSystemRunOut_AbortTONON : Bool; + mSwapSyrupLine_TONON : Bool; + mNextRecipeSel : Bool; + mEmptyString : String[32]; + ProductAvailable : "ProductAvailable"; + ProductPipeDrain : "ProductPipeDrain"; + ProductPipeRunOut : "ProductPipeRunOut"; + mSystemRunOut_AbortTON : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mSwapSyrupLine_TON : STRUCT + PT : Time; + ET : Time; + IN : Bool; + Q : Bool; + END_STRUCT; + + mStep : Int; + mTime : Int; + mTransition_1 : Bool; + mNextRecipeNumber : Int; + mNextRecipeUpdate : Bool; + mNextRecipeBusy : Bool; + mNextRecipeUpdate_Aux : Bool; + mResetFP : Bool; +END_VAR + +VAR_TEMP + mRET_VAL : Int; + mBusy : Bool; + mNextRecipeDB : "Any"; + mRET_VAL_1 : Bool; + TUDT904 : STRUCT + _Name : String[32]; + _EnProdTemp : Bool; + _EnDeaireation : Bool; + _GAS2_Injection : Bool; + _AirSteril : Bool; + _EnBlowOffProdPipeCo2Fil : Bool; + _Deareation_Vacum : Bool; + _Deareation_Co2 : Bool; + _Pasteur : Bool; + _WaterSelection : Byte; + _FillerNextRecipeNum : Byte; + _BottleShape : Byte; + _Type : Int; + _ProdMeterRecipeNum : Int; + _SyrupBrix : Real; + _SyrupDensity : Real; + _SyrupFactor : Real; + _ProductBrix : Real; + _ProductionRate : Real; + _Ratio : Real; + _ProdBrixOffset : Real; + _CO2Vols : Real; + _CO2Fact : Real; + _ProdTankPress : Real; + _SP_ProdTemp : Real; + _PrdTankMinLevel : Real; + _WaterValveSave : Real; + _SyrupValveSave : Real; + _CarboCO2ValveSave : Real; + _ProdMeterHighBrix : Real; + _ProdMeterLowBrix : Real; + _ProdMeterHighCO2 : Real; + _ProdMeterLowCO2 : Real; + _ProdMeter_ZeroCO2 : Real; + _ProdMeter_ZeroBrix : Real; + _ProdHighCond : Real; + _ProdLowCond : Real; + _BottleSize : Real; + _FillingValveHead_SP : Real; + _SyrMeter_ZeroBrix : Real; + _FirstProdExtraCO2Fact : Real; + _Gas2Vols : Real; + _Gas2Fact : Real; + _SyrupPumpFreq : Real; + _WaterPumpFreq : Real; + _CO2_Air_N2_PressSelect : Int; + _KFactRVM304BlowOff : Real; + _ProdRecircPumpFreq : Real; + _DeareationFactor : Real; + _CarboCO2Pressure : Real; + _InjCO2Press_Offset : Real; + _ProdPump1_Hz : Real; + _ProdPump2_Hz : Real; + _Prod_Temp_Heating_Cooling : Int; + END_STRUCT; + + End_UDT904 : Byte; + Lenght_UDT904 : Int; +END_VAR + + #_3S : Bool; // Auto-generated temporary + #_5S : Bool; // Auto-generated temporary + #TON_INSTANCE_28 : Bool; // Auto-generated temporary + #TON_INSTANCE_34 : Bool; // Auto-generated temporary +BEGIN + + // Network 1: Qualifier (Original Language: LAD) + + "System_RunOut_Variables"."System_RunOut"."Qualifier" := ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled" AND "gBlenderSuppliesOk" AND "gBlenderProdMode" AND "System_RunOut_Variables"."NextRecipeOk") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled" AND "gBlenderSuppliesOk" AND "gBlenderProdMode" AND "HMI_Variables_Cmd"."GLOBAL_CMD"."_EnableNextRecipe"); + + // Network 2: Request (Original Language: LAD) + + // Edge Logic handled by Coil 26 + "mReqONS" := "HMI_Variables_Cmd"."System_Run_Out"."CMD"."_SystemRunOutEnable"; // P_TRIG("HMI_Variables_Cmd"."System_Run_Out"."CMD"."_SystemRunOutEnable") - Mem: "mReqONS" + + "System_RunOut_Variables"."System_RunOut"."Request" := "HMI_Variables_Cmd"."System_Run_Out"."CMD"."_SystemRunOutEnable" AND NOT "mReqONS"; + "mReqONS" := "HMI_Variables_Cmd"."System_Run_Out"."CMD"."_SystemRunOutEnable"; // P_TRIG("HMI_Variables_Cmd"."System_Run_Out"."CMD"."_SystemRunOutEnable") - Mem: "mReqONS" + + // Network 3: Enabled (Original Language: LAD) + + "HMI_Variables_Status"."System_Run_Out"."SystemRunOutEnabled" := "System_RunOut_Variables"."System_RunOut"."Qualifier" AND "gBlenderProdMode" AND "System_RunOut_Variables"."System_RunOut"."Request" AND "HMI_Variables_Status"."System_Run_Out"."SystemRunOutEnabled"; + + // Network 4: DONT CHANGE THE POSITION IN ORDER TO PERFORM AT LEAST ONE CYCLE (Original Language: LAD) + + IF "System_RunOut_Variables"."System_RunOut"."Reset" THEN + "System_RunOut_Variables"."FastChangeOverActivated" := FALSE; + END_IF; + + // Network 5: Reset (Original Language: LAD) + + "System_RunOut_Variables"."System_RunOut"."Reset" := ("System_RunOut_Variables"."System_RunOut"."Qualifier" AND "System_RunOut_Variables"."FastChangeOverActivated") OR ("System_RunOut_Variables"."System_RunOut"."Done" AND "System_RunOut_Variables"."FastChangeOverActivated"); + + // Network 6: Memories Reset (Original Language: LAD) + + IF "System_RunOut_Variables"."System_RunOut"."Reset" THEN + "mStep" := 0; + "mTime" := 0; + END_IF; + + IF "System_RunOut_Variables"."System_RunOut"."Reset" THEN + "HMI_Variables_Status"."System_Run_Out"."SystemRunOutEnabled" := FALSE; + END_IF; + + IF "System_RunOut_Variables"."System_RunOut"."Reset" THEN + "mToggleLine" := FALSE; + END_IF; + + IF "System_RunOut_Variables"."System_RunOut"."Reset" THEN + "System_RunOut_Variables"."System_RunOut"."Done" := FALSE; + END_IF; + + // PBox SymPy processed, logic in consumer + "mResetFP" := "System_RunOut_Variables"."System_RunOut"."Reset"; // P_TRIG("System_RunOut_Variables"."System_RunOut"."Reset") - Mem: "mResetFP" + + IF "System_RunOut_Variables"."System_RunOut"."Reset" AND NOT "mResetFP" THEN + "mNextRecipeNumber" := 0; + END_IF; + + IF "System_RunOut_Variables"."System_RunOut"."Reset" AND NOT "mResetFP" THEN + "HMI_Blender_Parameters"."Next_Recipe_Number" := 0; + END_IF; + + IF "System_RunOut_Variables"."System_RunOut"."Reset" THEN + "Procedure_Variables"."Syr_RunOut"."FastChangeOverRinseDone" := FALSE; + END_IF; + + IF "System_RunOut_Variables"."System_RunOut"."Reset" THEN + "System_RunOut_Variables"."LoadNextRecipe" := FALSE; + END_IF; + + IF "System_RunOut_Variables"."System_RunOut"."Reset" THEN + "System_RunOut_Variables"."NextRecipeOk" := FALSE; + END_IF; + + IF "System_RunOut_Variables"."System_RunOut"."Reset" THEN + "System_RunOut_Variables"."CheckNextRecipe" := FALSE; + END_IF; + + // Network 7: Wait (Original Language: LAD) + + "System_RunOut_Variables"."System_RunOut"."Wait" := "AUX FALSE"; + + // Network 8: Abort (Original Language: LAD) + // Pressing RESET Button AND THEN Press the Emergency Button, Cause System Run Out + // ABORT!!!!! + + #TON_INSTANCE_28(IN := "gIN_ResetBtn", PT := T#5S); // TODO: Declarar #TON_INSTANCE_28 : TON; + + "mSystemRunOut_Abort" := "gBlenderCIPMode" OR ("mSystemRunOut_AbortTONON" AND "gEmergencyPressed" AND #TON_INSTANCE_28.Q); + + // Network 9: Latch (Original Language: LAD) + // Syrup Run Out Request Activate Sytem Run Out Sequences + + "System_RunOut_Variables"."System_RunOut"."Latch" := ("System_RunOut_Variables"."System_RunOut"."Reset" AND "System_RunOut_Variables"."System_RunOut"."Done" AND "Procedure_Variables"."Syr_RunOut"."Request" AND "HMI_Variables_Status"."System_Run_Out"."SystemRunOutEnabled") OR ("System_RunOut_Variables"."System_RunOut"."Reset" AND "System_RunOut_Variables"."System_RunOut"."Done" AND "Procedure_Variables"."TM301_RunOut"."Request" AND "Blender_Variables_Pers"."gWaterRecipe" AND "HMI_Variables_Status"."System_Run_Out"."SystemRunOutEnabled"); + + // Network 10: Activated (Original Language: LAD) + + "HMI_Alarms"."gH_Status" := "System_RunOut_Variables"."System_RunOut"."Latch"; + + IF "System_RunOut_Variables"."System_RunOut"."Latch" THEN + "System_RunOut_Variables"."FastChangeOverActivated" := TRUE; + END_IF; + + // Network 11: Run Out Init (Original Language: LAD) + + // Edge Logic handled by Coil 26 + "mSystemRunOutInitONS" := "System_RunOut_Variables"."FastChangeOverActivated"; // P_TRIG("System_RunOut_Variables"."FastChangeOverActivated") - Mem: "mSystemRunOutInitONS" + + "System_RunOut_Variables"."SystemRunOutInit" := "System_RunOut_Variables"."FastChangeOverActivated" AND NOT "mSystemRunOutInitONS"; + "mSystemRunOutInitONS" := "System_RunOut_Variables"."FastChangeOverActivated"; // P_TRIG("System_RunOut_Variables"."FastChangeOverActivated") - Mem: "mSystemRunOutInitONS" + + // Network 12: Running (Original Language: LAD) + + "System_RunOut_Variables"."System_RunOut"."Running" := "System_RunOut_Variables"."System_RunOut"."Latch" AND "System_RunOut_Variables"."System_RunOut"."Wait"; + + // Network 13: Close Syrup Valves (Original Language: LAD) + + IF "System_RunOut_Variables"."System_RunOut"."Request" OR ("gBlenderRinseMode" AND "System_RunOut_Variables"."FastChangeOverActivated") THEN + "System_RunOut_Variables"."CloseSyrupLineValves" := TRUE; + END_IF; + + // Network 14: Close Syrup Valves (Original Language: LAD) + + IF "Procedure_Variables"."FTP302Line_Preparation"."Request" OR "Procedure_Variables"."FTP302_StartUp"."Request" THEN + "System_RunOut_Variables"."CloseSyrupLineValves" := FALSE; + END_IF; + + // Network 15: System Run Out Variables (Original Language: LAD) + + "mAuxToggleLine" := ("HMI_Variables_Cmd"."GLOBAL_CMD"."_SyrLine1Slctd" AND "HMI_Variables_Cmd"."GLOBAL_CMD"."_SyrLine2Slctd" AND "mToggleLine") OR ("Procedure_Variables"."FTP302Line_Preparation"."Request" AND "HMI_Variables_Cmd"."GLOBAL_CMD"."_SwapSyrupLine" AND "mToggleLine" AND "System_RunOut_Variables"."FastChangeOverActivated"); + + // Network 16: System Run Out Variables (Original Language: LAD) + + IF "HMI_Variables_Cmd"."GLOBAL_CMD"."_SyrLine1Slctd" AND "mToggleLine" AND "mAuxToggleLine" THEN + "HMI_Variables_Cmd"."GLOBAL_CMD"."_SyrLine1Slctd" := FALSE; + END_IF; + + IF "HMI_Variables_Cmd"."GLOBAL_CMD"."_SyrLine1Slctd" AND "mToggleLine" AND "mAuxToggleLine" THEN + "HMI_Variables_Cmd"."GLOBAL_CMD"."_SyrLine2Slctd" := TRUE; + END_IF; + + IF "HMI_Variables_Cmd"."GLOBAL_CMD"."_SyrLine1Slctd" AND "mToggleLine" AND "mAuxToggleLine" THEN + "mToggleLine" := TRUE; + END_IF; + + // Network 17: System Run Out Variables (Original Language: LAD) + + IF "HMI_Variables_Cmd"."GLOBAL_CMD"."_SyrLine1Slctd" AND "mToggleLine" AND "mAuxToggleLine" THEN + "HMI_Variables_Cmd"."GLOBAL_CMD"."_SyrLine1Slctd" := TRUE; + END_IF; + + IF "HMI_Variables_Cmd"."GLOBAL_CMD"."_SyrLine1Slctd" AND "mToggleLine" AND "mAuxToggleLine" THEN + "HMI_Variables_Cmd"."GLOBAL_CMD"."_SyrLine2Slctd" := FALSE; + END_IF; + + IF "HMI_Variables_Cmd"."GLOBAL_CMD"."_SyrLine1Slctd" AND "mToggleLine" AND "mAuxToggleLine" THEN + "mToggleLine" := TRUE; + END_IF; + + // Network 18: Valve Line (Original Language: LAD) + + "System_RunOut_Variables"."SyrupLine1_AVP364" := "HMI_Variables_Cmd"."GLOBAL_CMD"."_SyrLine1Slctd" AND "System_RunOut_Variables"."SyrupLine2_AVP365" AND "System_RunOut_Variables"."CloseSyrupLineValves" AND "gIN_SyrRoomOk"; + + // Network 19: Valve Line (Original Language: LAD) + + "System_RunOut_Variables"."SyrupLine2_AVP365" := "HMI_Variables_Cmd"."GLOBAL_CMD"."_SyrLine2Slctd" AND "System_RunOut_Variables"."CloseSyrupLineValves" AND "gIN_SyrRoomOk" AND "System_RunOut_Variables"."SyrupLine1_AVP364"; + + // Network 20: System Run Not Selected (Original Language: LAD) + + #TON_INSTANCE_34(IN := "AUX FALSE" AND "Blender_Variables_Pers"."gWaterRecipe" AND "System_RunOut_Variables"."SyrupLine2_AVP365" AND "System_RunOut_Variables"."SyrupLine1_AVP364", PT := T#3S); // TODO: Declarar #TON_INSTANCE_34 : TON; + + "gSyrupLineNotSelected" := "gBlenderCIPMode" AND "System_RunOut_Variables"."CloseSyrupLineValves" AND "gWorkshopTest" AND #TON_INSTANCE_34.Q; + + // Network 21: Product Available (Original Language: LAD) + + "ProductAvailable"(); + + // Network 22: Product Pipe Drain (Original Language: LAD) + + "ProductPipeDrain"(); + + // Network 23: Product Pipe Run Out (Original Language: LAD) + + "ProductPipeRunOut"(); + + // Network 24: Rinse Step Sequence (Original Language: LAD) + + "gSyrupQcoRinse" := ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled" AND "gSyrupQcoRinse" AND "Procedure_Variables"."Syr_RunOut"."Done" AND "Procedure_Variables"."Syr_RunOut"."FastChangeOverRinseDone") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled" AND "Blender_Variables_Pers"."gWaterRecipe" AND "Procedure_Variables"."Syr_RunOut"."Done" AND "Procedure_Variables"."Syr_RunOut"."FastChangeOverRinseDone" AND "System_RunOut_Variables"."FastChangeOverActivated"); + + // Network 25: IF CHANGE FROM WATER RECIPE TO SYRUP RECIPE FORCE RINSE COMPLETE (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled" AND "Blender_Variables_Pers"."gWaterRecipe" AND "gSyrupQcoRinse" AND "System_RunOut_Variables"."NextRecipeOk" AND "Procedure_Variables"."Syr_RunOut"."FastChangeOverRinseDone" AND "System_RunOut_Variables"."FastChangeOverActivated" THEN + "Procedure_Variables"."Syr_RunOut"."FastChangeOverRinseDone" := TRUE; + END_IF; + + // Network 26: CHANGE OVER COMPLETED (Original Language: LAD) + + "System_RunOut_Variables"."System_RunOut"."Done" := ("Blender_Variables_Pers"."gWaterRecipe" AND "System_RunOut_Variables"."System_RunOut"."Latch" AND "Procedure_Variables"."Blender_Rinse"."Done" AND "System_RunOut_Variables"."NextRecipeOk" AND "Procedure_Variables"."TM301_RunOut"."Done" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Done") OR ("Blender_Variables_Pers"."gWaterRecipe" AND "System_RunOut_Variables"."System_RunOut"."Latch" AND "Procedure_Variables"."Blender_Rinse"."Done" AND "Procedure_Variables"."TM301_RunOut"."Done" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Done" AND "HMI_Variables_Cmd"."GLOBAL_CMD"."_EnableNextRecipe") OR ("System_RunOut_Variables"."System_RunOut"."Latch" AND "Procedure_Variables"."Blender_Rinse"."Done" AND "System_RunOut_Variables"."NextRecipeOk" AND "Procedure_Variables"."Syr_RunOut"."FastChangeOverRinseDone" AND "Procedure_Variables"."TM301_RunOut"."Done" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Done") OR ("System_RunOut_Variables"."System_RunOut"."Latch" AND "Procedure_Variables"."Blender_Rinse"."Done" AND "Procedure_Variables"."Syr_RunOut"."FastChangeOverRinseDone" AND "Procedure_Variables"."TM301_RunOut"."Done" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Done" AND "HMI_Variables_Cmd"."GLOBAL_CMD"."_EnableNextRecipe"); + + // Network 27: LOAD NEXT RECIPE (Original Language: LAD) + + IF "System_RunOut_Variables"."NextRecipeOk" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Done" AND "System_RunOut_Variables"."LoadNextRecipe" AND "HMI_Variables_Cmd"."GLOBAL_CMD"."_EnableNextRecipe" AND "System_RunOut_Variables"."FastChangeOverActivated" THEN + "System_RunOut_Variables"."CheckNextRecipe" := TRUE; + END_IF; + + IF "System_RunOut_Variables"."NextRecipeOk" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Done" AND "System_RunOut_Variables"."LoadNextRecipe" AND "HMI_Variables_Cmd"."GLOBAL_CMD"."_EnableNextRecipe" AND "System_RunOut_Variables"."FastChangeOverActivated" THEN + "System_RunOut_Variables"."LoadNextRecipe" := FALSE; + END_IF; + + IF "System_RunOut_Variables"."NextRecipeOk" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Done" AND "System_RunOut_Variables"."LoadNextRecipe" AND "HMI_Variables_Cmd"."GLOBAL_CMD"."_EnableNextRecipe" AND "System_RunOut_Variables"."FastChangeOverActivated" THEN + "System_RunOut_Variables"."NextRecipeOk" := FALSE; + END_IF; + + // Network 28: NEXT RECIPE MANAGEMENT (Original Language: STL) + + // --- BEGIN STL Network 28 --- + + A "HMI_Variables_Cmd".GLOBAL_CMD._EnableNextRecipe + JC M201 + L 0 + T "HMI_Blender_Parameters".Next_Recipe_Number + T "mNextRecipeNumber" + SET + R "mNextRecipeSel" + R "System_RunOut_Variables".CheckNextRecipe + R "System_RunOut_Variables".LoadNextRecipe + R "System_RunOut_Variables".NextRecipeOk + JU M299 + + M201: L "HMI_Blender_Parameters".Next_Recipe_Number + L 0 + LE_I + R "mNextRecipeSel" + JCN M202 + + L 0 + T "System_RunOut_Variables".gNext_Recipe._BottleShape + + CALL _Call_? + CALL _Call_? + JU M299 + + M202: CALL "LIMIT_I" + + L "mNextRecipeNumber" + L "HMI_Blender_Parameters".Next_Recipe_Number + NE_I + = "mNextRecipeUpdate" + A "mNextRecipeUpdate" + O "mNextRecipeBusy" + O "System_RunOut_Variables".CheckNextRecipe + JCN M299 + T "mNextRecipeNumber" + + L _ERR_CONST_ + L _ERR_CONST_ + SUB_D + SRD 3 + T "Lenght_UDT904" + + LAR1 _ERR_CONST_ + L BYTE#16#10 + T LocalB[AR1,P#0.0] + L BYTE#16#02 + T LocalB[AR1,P#1.0] + L "Lenght_UDT904" + T LocalW[AR1,P#2.0] + L "mNextRecipeNumber" + L 400 + ADD_I + T LocalW[AR1,P#4.0] + L P#DBX0.0 + T LocalD[AR1,P#6.0] + + CALL _Call_? + + A "mNextRecipeBusy" + JC M299 + + CALL _Call_? + + CALL _Call_? + + L "System_RunOut_Variables".gNext_Recipe._Type + L 0 + GT_I + A "mRET_VAL_1" + = "mNextRecipeSel" + + A "System_RunOut_Variables".CheckNextRecipe + R "System_RunOut_Variables".CheckNextRecipe + S "System_RunOut_Variables".LoadNextRecipe + + M299: NOP_0 + + // --- END STL Network 28 --- + +END_FUNCTION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/System_Run_Out_Data.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/System_Run_Out_Data.md new file mode 100644 index 0000000..6eded17 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/System_Run_Out_Data.md @@ -0,0 +1,55 @@ +```pascal +// Block Type: InstanceDB +// Block Number: 920 + +DATA_BLOCK "System_Run_Out_Data" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + mStepNum : Int := 0; + mTimeStep : Int := 0; + mTransition : Bool := FALSE; + mReqONS : Bool := FALSE; + mSystemRunOut_Abort : Bool := TRUE; + mSystemRunOutInitONS : Bool := FALSE; + mToggleLine : Bool := FALSE; + mAuxToggleLine : Bool := FALSE; + mSystemRunOutAux : Bool := FALSE; + mSystemRunOutAux1 : Bool := FALSE; + mSystemRunOut_AbortTONON : Bool := FALSE; + mSwapSyrupLine_TONON : Bool := FALSE; + mNextRecipeSel : Bool := FALSE; + mEmptyString : String[32] := ''; + ProductAvailable : "ProductAvailable"; + ProductPipeDrain : "ProductPipeDrain"; + ProductPipeRunOut : "ProductPipeRunOut"; + mSystemRunOut_AbortTON : STRUCT + PT : Time; + ET : Time := T#0MS; + IN : Bool := FALSE; + Q : Bool := FALSE; + END_STRUCT; + + mSwapSyrupLine_TON : STRUCT + PT : Time := T#0MS; + ET : Time := T#0MS; + IN : Bool := FALSE; + Q : Bool := FALSE; + END_STRUCT; + + mStep : Int := 0; + mTime : Int := 0; + mTransition_1 : Bool := FALSE; + mNextRecipeNumber : Int := 0; + mNextRecipeUpdate : Bool := FALSE; + mNextRecipeBusy : Bool := FALSE; + mNextRecipeUpdate_Aux : Bool := FALSE; + mResetFP : Bool := TRUE; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/TADDR_PAR.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/TADDR_PAR.md new file mode 100644 index 0000000..731e78d --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/TADDR_PAR.md @@ -0,0 +1,10 @@ +# UDT: TADDR_PAR + +## Members + +| Name | Datatype | Start Value | Comment | +|---|---|---|---| +| `rem_ip_addr` | `Array[1..4] of Byte` | `` | | +| `rem_port_nr` | `Array[1..2] of Byte` | `` | | +| `reserved` | `Array[1..2] of Byte` | `` | | + diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/TCON_PAR.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/TCON_PAR.md new file mode 100644 index 0000000..493d36e --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/TCON_PAR.md @@ -0,0 +1,34 @@ +# UDT: TCON_PAR + +## Members + +| Name | Datatype | Start Value | Comment | +|---|---|---|---| +| `block_length` | `Word` | `None` | | +| `id` | `Word` | `None` | | +| `connection_type` | `Byte` | `None` | | +| `active_est` | `Bool` | `` | | +| `local_device_id` | `Byte` | `None` | | +| `local_tsap_id_len` | `Byte` | `None` | | +| `rem_subnet_id_len` | `Byte` | `` | | +| `rem_staddr_len` | `Byte` | `` | | +| `rem_tsap_id_len` | `Byte` | `` | | +| `next_staddr_len` | `Byte` | `` | | +| `local_tsap_id` | `Array[1..16] of Byte` | `` | | +|   *(Initial Values)* | | | | +|   `[1]` | | `None` | | +|   `[2]` | | `None` | | +| `rem_subnet_id` | `Array[1..6] of Byte` | `` | | +|   *(Initial Values)* | | | | +|   `[1]` | | `None` | | +| `rem_staddr` | `Array[1..6] of Byte` | `` | | +|   *(Initial Values)* | | | | +|   `[1]` | | `None` | | +| `rem_tsap_id` | `Array[1..16] of Byte` | `` | | +|   *(Initial Values)* | | | | +|   `[1]` | | `None` | | +| `next_staddr` | `Array[1..6] of Byte` | `` | | +|   *(Initial Values)* | | | | +|   `[1]` | | `None` | | +| `spare` | `Word` | `` | | + diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/TCON_PAR_LF.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/TCON_PAR_LF.md new file mode 100644 index 0000000..1b5f97a --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/TCON_PAR_LF.md @@ -0,0 +1,25 @@ +# UDT: TCON_PAR_LF + +## Members + +| Name | Datatype | Start Value | Comment | +|---|---|---|---| +| `block_length` | `Word` | `None` | | +| `id` | `Word` | `` | | +| `connection_type` | `Byte` | `None` | | +| `active_est` | `Bool` | `` | | +| `local_device_id` | `Byte` | `None` | | +| `local_tsap_id_len` | `Byte` | `None` | | +| `rem_subnet_id_len` | `Byte` | `` | | +| `rem_staddr_len` | `Byte` | `` | | +| `rem_tsap_id_len` | `Byte` | `` | | +| `next_staddr_len` | `Byte` | `` | | +| `local_tsap_id` | `Array[1..16] of Byte` | `` | | +| `rem_subnet_id` | `Array[1..6] of Byte` | `` | | +| `rem_staddr` | `Array[1..6] of Byte` | `` | | +| `rem_tsap_id` | `Array[1..16] of Byte` | `` | | +| `next_staddr` | `Array[1..6] of Byte` | `` | | +|   *(Initial Values)* | | | | +|   `[1]` | | `None` | | +| `spare` | `Word` | `` | | + diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/T_Timer.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/T_Timer.md new file mode 100644 index 0000000..462c3fa --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/T_Timer.md @@ -0,0 +1,58 @@ +```pascal +// Block Type: FC +// Block Number: 40 +// Original Network Languages: STL + +FUNCTION "T_Timer" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + Preset : Int; + Start : Bool; + Stop : Bool; + Reset : Bool; + Base : Bool; +END_VAR + +VAR_OUTPUT + End : Bool; +END_VAR + +VAR_INOUT + Actual : Int; +END_VAR + +BEGIN + + // Network 1: (Original Language: STL) + + // --- BEGIN STL Network 1 --- + + AN "Start" + O "Reset" + JC NOTM + + L "Actual" + L "Preset" + GE_I + = "End" + AN "Base" + O "End" + O "Stop" + BEC + + L "Actual" + ADD 1 + T "Actual" + BEU + + NOTM: L 0 + T "Actual" + R "End" + + // --- END STL Network 1 --- + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Tabella_delle_variabili_1.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Tabella_delle_variabili_1.md new file mode 100644 index 0000000..03e97c6 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Tabella_delle_variabili_1.md @@ -0,0 +1,4 @@ +# Tag Table: Tabella delle variabili_1 + +No tags found in this table. + diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Tabella_delle_variabili_2.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Tabella_delle_variabili_2.md new file mode 100644 index 0000000..9e6aafd --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Tabella_delle_variabili_2.md @@ -0,0 +1,4 @@ +# Tag Table: Tabella delle variabili_2 + +No tags found in this table. + diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Tabella_delle_variabili_standard.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Tabella_delle_variabili_standard.md new file mode 100644 index 0000000..5b3bb1a --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Tabella_delle_variabili_standard.md @@ -0,0 +1,4 @@ +# Tag Table: Tabella delle variabili standard + +No tags found in this table. + diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/TankLevel.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/TankLevel.md new file mode 100644 index 0000000..7917eb0 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/TankLevel.md @@ -0,0 +1,292 @@ +```pascal +// Block Type: FC +// Block Number: 2011 +// Original Network Languages: LAD, STL + +FUNCTION "TankLevel" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + Blending : Bool; + Lvl_1 : Real; + CIP_TankLvl : Real; + Min_Lvl : Real; + Wait_Lvl : Real; + Min_SP_Lvl : Real; + Target_Lvl : Real; + mSyrTankFlooded : Bool; + mSyrTankLowLvl_Fault : Bool; + mDeairTankFlooded : Bool; + mSyrTankEmpty : Bool; +END_VAR + + #_1m : Bool; // Auto-generated temporary + #_2S : Bool; // Auto-generated temporary + #_3S : Bool; // Auto-generated temporary + #_4S : Bool; // Auto-generated temporary +BEGIN + + // Network 1: DeairTankLoadDelay (Original Language: LAD) + + "mDeairTank_LoadDelay"(IN := ("gDeairTank_LowLvl_Fault" AND "gIN_ResetBtn" AND "gP_RVN301") OR ("gDeairTank_LowLvl_Fault" AND "gIN_ResetBtn" AND "gP_RVN301_1") OR ("HMI_Alarms"."Supplies"."Alarm062" AND "gIN_ResetBtn" AND "gP_RVN301") OR ("HMI_Alarms"."Supplies"."Alarm062" AND "gIN_ResetBtn" AND "gP_RVN301_1"), PT := S5T#4S); // TODO: Declarar "mDeairTank_LoadDelay" : TP; + + "gDeairTank_Loading" := "mDeairTank_LoadDelay".Q; + + // Network 2: DeairLevFault (Original Language: STL) + + // --- BEGIN STL Network 2 --- + + O_BRACK + A_BRACK + AN "HMI_Digital".LSN301L.Filtered + A "HMI_Device".RVN301.Out + O + AN "HMI_Digital".LSN302L.Filtered + A "HMI_Device".RVN301_1.Out + A "HMI_Blender_Parameters".Processor_Options.Blender_OPT._DoubleDeair + O + A "HMI_Instrument".LTN301.Config + AN "gIN_DeairTank_MinLvl" + BRACKET + AN "Procedure_Variables".TN301_StartUp.Done + A "gBlenderProdMode" + L S5T#1M + OnDelay "mDeairTank_LevFault" + NOP_0 + NOP_0 + NOP_0 + A "mDeairTank_LevFault" + BRACKET + O_BRACK + A_BRACK + AN "HMI_Digital".LSN301L.Filtered + A "HMI_Device".RVN301.Out + O + AN "HMI_Digital".LSN302L.Filtered + A "HMI_Device".RVN301_1.Out + A "HMI_Blender_Parameters".Processor_Options.Blender_OPT._DoubleDeair + O + A "HMI_Instrument".LTN301.Config + AN "gIN_DeairTank_MinLvl" + BRACKET + A "Procedure_Variables".TN301_StartUp.Done + AN "gDeairTank_Loading" + A "gBlenderProdMode" + = "Blending" + A "Blending" + L S5T#5S + OnDelay "mDeairTank_LevFault1" + NOP_0 + NOP_0 + NOP_0 + A "mDeairTank_LevFault1" + BRACKET + O_BRACK + A "Blending" + A "gBlenderBlending" + L S5T#3S + OnDelay "mDeairTank_LevFault2" + NOP_0 + NOP_0 + NOP_0 + A "mDeairTank_LevFault2" + BRACKET + = "gDeairTank_LowLvl_Fault" + + // --- END STL Network 2 --- + + // Network 3: Deaireator Tank Minimum Level (Original Language: LAD) + + "gIN_DeairTank_MinLvl" := "HMI_Instrument"."LTN301"."PVFiltered" > 5.0; + + // Network 4: Deaireator Tank Flooded (Original Language: LAD) + + "mDeairTankFlooded" := "HMI_Instrument"."LTN301"."PVFiltered" > 95.0; + + // Network 5: TankLevel Fault (Original Language: LAD) + + "mDeairTank_LevFault3"(IN := "gBlenderProdMode" AND "gBlenderRinseMode" AND "mDeairTankFlooded", PT := S5T#2S); // TODO: Declarar "mDeairTank_LevFault3" : TON; + + // Edge Logic handled by Coil 33 + "mDeairTank_HighLvlONS" := "mDeairTank_LevFault3".Q; // P_TRIG("mDeairTank_LevFault3".Q) - Mem: "mDeairTank_HighLvlONS" + + "gDeairTank_HighLvl_Fault" := "mDeairTank_LevFault3".Q AND NOT "mDeairTank_HighLvlONS"; + "mDeairTank_HighLvlONS" := "mDeairTank_LevFault3".Q; // P_TRIG("mDeairTank_LevFault3".Q) - Mem: "mDeairTank_HighLvlONS" + + // Network 6: Maximum Tank Level during CIP / Rinse (Original Language: LAD) + + SEL_R(G := "HMI_Variables_Status"."Procedures"."CIP_DeairTankFloodRun", IN0 := "HMI_Blender_Parameters"."ProcessSetup"."_CIPTN301MaxLevel", IN1 := 100.0); + + // Network 7: Time delay to open valve in CIP/Rinse (Original Language: LAD) + + "mCIPRinseDlyOpenValve"(IN := "gBlenderStartPumps" AND "gOUT_PPN301_Run" AND ("gBlenderRinseMode" OR ("CIP_Program_Variables"."Status"."Started" AND "gBlenderCIPMode")), PT := S5T#2S); // TODO: Declarar "mCIPRinseDlyOpenValve" : TON; + + "gCIPRinseOpenValves" := "mCIPRinseDlyOpenValve".Q; + + "mCIPRinseDlyOpenRMP302"(IN := "gBlenderStartPumps" AND "gCIPRinseEnableRMP302" AND ("gBlenderRinseMode" OR ("CIP_Program_Variables"."Status"."Started" AND "gBlenderCIPMode")), PT := S5T#3S); // TODO: Declarar "mCIPRinseDlyOpenRMP302" : TON; + + "gCIPRinseOpenRMP302" := "mCIPRinseDlyOpenRMP302".Q; + + // Network 8: TankLoadDelay (Original Language: LAD) + + "mSyrTank_LoadDelay"(IN := ("gSyrTank_LowLvl_Fault" AND "gP_RVP303" AND "gIN_ResetBtn") OR ("HMI_Alarms"."Supplies"."Alarm063" AND "gP_RVP303" AND "gIN_ResetBtn"), PT := S5T#1m); // TODO: Declarar "mSyrTank_LoadDelay" : TP; + + "gSyrTank_Loading" := "mSyrTank_LoadDelay".Q; + + // Network 9: LevFault (Original Language: STL) + + // --- BEGIN STL Network 9 --- + + O_BRACK + A "gBlenderProdMode" + A_BRACK + A "HMI_Digital".LAL_S3.Config + AN "HMI_Digital".LAL_S3.Filtered + O + A "HMI_Instrument".LTP303.Config + AN "gIN_SyrTank_MinLvl" + BRACKET + A "Procedure_Variables".FTP302Line_Preparation.Done + AN "Procedure_Variables".TM301_RunOut.Latch + AN "System_RunOut_Variables".ProdPipe_RunOut.Latch + AN "Procedure_Variables".Syr_RunOut.Done + = "mSyrTankLowLvl_Fault" + A "mSyrTankLowLvl_Fault" + AN "gSyrTank_Loading" + L S5T#100MS + OnDelay "mSyrTank_LevFault" + NOP_0 + NOP_0 + NOP_0 + A "mSyrTank_LevFault" + BRACKET + O_BRACK + A "mSyrTankLowLvl_Fault" + L S5T#30S + OnDelay "mSyrTank_LevFault1" + NOP_0 + NOP_0 + NOP_0 + A "mSyrTank_LevFault1" + BRACKET + = "gSyrTank_LowLvl_Fault" + + // --- END STL Network 9 --- + + // Network 10: Syrup Tank Minimum Level (Original Language: LAD) + + "gIN_SyrTank_MinLvl" := "HMI_Instrument"."LTP303"."PVFiltered" > 10.0; + + // Network 11: Syrup Tank Flooded (Original Language: LAD) + + "mSyrTankFlooded" := "HMI_Instrument"."LTP303"."PVFiltered" > 95.0; + + // Network 12: Syrup Tank Empty (Original Language: LAD) + + "mSyrTankEmpty" := "HMI_Instrument"."LTP303"."PVFiltered" < 2.0; + + // Network 13: TankLevel Fault (Original Language: LAD) + + "mSyrTank_LevFault2"(IN := "mSyrTankFlooded" AND "gBlenderProdMode" AND "gBlenderRinseMode", PT := S5T#2S); // TODO: Declarar "mSyrTank_LevFault2" : TON; + + // Edge Logic handled by Coil 33 + "mSyrTank_HighLvlONS" := "mSyrTank_LevFault2".Q; // P_TRIG("mSyrTank_LevFault2".Q) - Mem: "mSyrTank_HighLvlONS" + + "gSyrTank_HighLvl_Fault" := "mSyrTank_LevFault2".Q AND NOT "mSyrTank_HighLvlONS"; + "mSyrTank_HighLvlONS" := "mSyrTank_LevFault2".Q; // P_TRIG("mSyrTank_LevFault2".Q) - Mem: "mSyrTank_HighLvlONS" + + // Network 14: Maximum Syrup Tank Level during CIP (Original Language: LAD) + + SEL_R(G := "HMI_Variables_Status"."Procedures"."CIP_SyrTankFloodRun", IN0 := "HMI_Blender_Parameters"."ProcessSetup"."_CIPTP301MaxLevel", IN1 := 100.0); + + // Network 15: Product Tank Maximum Level Acheaved (Original Language: LAD) + + IF "gBlenderStopLevel" THEN + "Lvl_1" := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_PrdTankMinLevel" + 10.0; + END_IF; + + // Network 16: Product Tank Maximum Level Acheaved (Original Language: LAD) + + "HMI_Variables_Status"."System"."TM301MaxLevel" := "gBlenderStopLevel" OR ("gCIPStopLevel" AND "gBlenderRinseMode") OR ("gCIPStopLevel" AND "gBlenderCIPMode"); + + // Network 17: Product Tank Pump Start Level Acheaved (Original Language: LAD) + + IF "gBlenderStartLevel" AND "gBlenderProdMode" THEN + "Lvl_1" := "Blender_Variables"."gProdTankStopLvl" - "Blender_Variables"."gProdTankStartLvl"; + END_IF; + + IF "gBlenderStartLevel" THEN + "Lvl_1" := "Blender_Variables"."gProdTankStartLvl" + 2.0; + END_IF; + + IF "gBlenderStartLevel" THEN + "Lvl_1" := "Blender_Variables"."gProdTankStopLvl" - "Lvl_1"; + END_IF; + + // Network 18: Maximum Tank Level during CIP (Original Language: LAD) + + IF "HMI_Variables_Status"."Procedures"."CIP_ProdTankFloodRun" THEN + "gCIPStopLevel" := FALSE; + END_IF; + + // Network 19: Maximum Syrup Tank Level during CIP (Original Language: LAD) + + SEL_R(G := "HMI_Variables_Status"."Procedures"."CIP_ProdTankFloodRun", IN0 := "HMI_Blender_Parameters"."ProcessSetup"."_CIPTM301MaxLevel", IN1 := 98.0); + + // Network 20: Product Tank 5% Level Acheaved (Original Language: LAD) + + IF "gBlenderMinLevel" THEN + "Min_Lvl" := "Blender_Constants"."gTM301MinLvl" - 2.0; + END_IF; + + // Network 21: - PRESSURE - (Original Language: LAD) + + IF "gWaitLevToHold_TankPress" THEN + "Wait_Lvl" := "Blender_Constants"."gTM301PressWaitLvl" - 2.0; + END_IF; + + // Network 22: Tank Pressure Hold reset (Original Language: LAD) + + IF "Procedure_Variables"."TM301_RunOut"."Latch" THEN + "gWaitLevToHold_TankPress" := FALSE; + END_IF; + + // Network 23: LEVEL - 100% Product Tank Level during CIP (Original Language: LAD) + + "gCIP_PrdTank_MaxLevel" := "AUX FALSE"; + + // Network 24: LEVEL - 100% Product Tank Level during CIP (Original Language: LAD) + // Product Tank Flood Reached + + // Network 24 did not produce printable SCL code. + + // Network 25: Product Tank Recipe Minimum Level Acheaved (Original Language: LAD) + + IF "gBlenderLevelOk" THEN + "Min_SP_Lvl" := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_PrdTankMinLevel" - 2.0; + END_IF; + + // Network 26: Product Tank Target Level Acheaved (Original Language: LAD) + + IF "gBlenderLevelTarget" THEN + "Target_Lvl" := 30.0 - 2.0; + END_IF; + + // Network 27: (Original Language: LAD) + + "BlenderLevelStopSByFiller" := "HMI_Instrument"."LTM302"."PVFiltered" > 45.0; + + // Network 28: Product Tank Empty (Original Language: LAD) + + // Network 28 did not produce printable SCL code. + + // Network 29: Product Tank Low Level (Original Language: LAD) + + "gBlenderEmpty" := ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SyrupLevel" AND "HMI_Digital"."LAL_S3"."Filtered" AND (("CIP_Program_Variables"."Status"."CausticRecoveryRun" AND "M110.0" AND NOT (("HMI_Digital"."LSM302L"."Filtered" AND "gPrdTank_Empty") OR ("HMI_Digital"."LSM302L"."Filtered" AND "CIP_Program_Variables"."Status"."CausticRecoveryRun"))) OR ("HMI_Digital"."LSN301L"."Filtered" AND (("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" AND NOT (("HMI_Digital"."LSM302L"."Filtered" AND "gPrdTank_Empty") OR ("HMI_Digital"."LSM302L"."Filtered" AND "CIP_Program_Variables"."Status"."CausticRecoveryRun"))) OR ("HMI_Digital"."LSN302L"."Filtered" AND NOT (("HMI_Digital"."LSM302L"."Filtered" AND "gPrdTank_Empty") OR ("HMI_Digital"."LSM302L"."Filtered" AND "CIP_Program_Variables"."Status"."CausticRecoveryRun"))))))) OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SyrupLevel" AND "mSyrTankEmpty" AND (("CIP_Program_Variables"."Status"."CausticRecoveryRun" AND "M110.0" AND NOT (("HMI_Digital"."LSM302L"."Filtered" AND "gPrdTank_Empty") OR ("HMI_Digital"."LSM302L"."Filtered" AND "CIP_Program_Variables"."Status"."CausticRecoveryRun"))) OR ("HMI_Digital"."LSN301L"."Filtered" AND (("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" AND NOT (("HMI_Digital"."LSM302L"."Filtered" AND "gPrdTank_Empty") OR ("HMI_Digital"."LSM302L"."Filtered" AND "CIP_Program_Variables"."Status"."CausticRecoveryRun"))) OR ("HMI_Digital"."LSN302L"."Filtered" AND NOT (("HMI_Digital"."LSM302L"."Filtered" AND "gPrdTank_Empty") OR ("HMI_Digital"."LSM302L"."Filtered" AND "CIP_Program_Variables"."Status"."CausticRecoveryRun"))))))); + + "gCIP_SystemLowLevel" := "gBlenderCIPMode" AND (("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SyrupLevel" AND "HMI_Digital"."LAL_S3"."Filtered" AND (("CIP_Program_Variables"."Status"."CausticRecoveryRun" AND "M110.0" AND NOT (("HMI_Digital"."LSM302L"."Filtered" AND "gPrdTank_Empty") OR ("HMI_Digital"."LSM302L"."Filtered" AND "CIP_Program_Variables"."Status"."CausticRecoveryRun"))) OR ("HMI_Digital"."LSN301L"."Filtered" AND (("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" AND NOT (("HMI_Digital"."LSM302L"."Filtered" AND "gPrdTank_Empty") OR ("HMI_Digital"."LSM302L"."Filtered" AND "CIP_Program_Variables"."Status"."CausticRecoveryRun"))) OR ("HMI_Digital"."LSN302L"."Filtered" AND NOT (("HMI_Digital"."LSM302L"."Filtered" AND "gPrdTank_Empty") OR ("HMI_Digital"."LSM302L"."Filtered" AND "CIP_Program_Variables"."Status"."CausticRecoveryRun"))))))) OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SyrupLevel" AND "mSyrTankEmpty" AND (("CIP_Program_Variables"."Status"."CausticRecoveryRun" AND "M110.0" AND NOT (("HMI_Digital"."LSM302L"."Filtered" AND "gPrdTank_Empty") OR ("HMI_Digital"."LSM302L"."Filtered" AND "CIP_Program_Variables"."Status"."CausticRecoveryRun"))) OR ("HMI_Digital"."LSN301L"."Filtered" AND (("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" AND NOT (("HMI_Digital"."LSM302L"."Filtered" AND "gPrdTank_Empty") OR ("HMI_Digital"."LSM302L"."Filtered" AND "CIP_Program_Variables"."Status"."CausticRecoveryRun"))) OR ("HMI_Digital"."LSN302L"."Filtered" AND NOT (("HMI_Digital"."LSM302L"."Filtered" AND "gPrdTank_Empty") OR ("HMI_Digital"."LSM302L"."Filtered" AND "CIP_Program_Variables"."Status"."CausticRecoveryRun")))))))); + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/TankLevelToHeight.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/TankLevelToHeight.md new file mode 100644 index 0000000..6353ab5 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/TankLevelToHeight.md @@ -0,0 +1,26 @@ +```pascal +FUNCTION "TankLevelToHeight" : Real +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : 'Function' +NAME : 'Name' +VERSION : 1.0 + VAR_INPUT + Level_Percentage : Real; + Level_Perc0 : Real; + Level_Height0 : Real; + Level_Perc1 : Real; + Level_Height1 : Real; + END_VAR + + +BEGIN + IF #Level_Perc1 <> 0 THEN + #TankLevelToHeight := (#Level_Percentage * (#Level_Height1 - #Level_Height0) / #Level_Perc1) + #Level_Height0 ; + END_IF; + #TankLevelToHeight := (#Level_Percentage * (#Level_Height1 - #Level_Height0) / #Level_Perc1) + #Level_Height0; + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Time_error_interrupt.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Time_error_interrupt.md new file mode 100644 index 0000000..606f51a --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Time_error_interrupt.md @@ -0,0 +1,27 @@ +```pascal +// Block Type: OB +// Block Name (Original): Time error interrupt +// Block Number: 80 +// Original Network Languages: LAD + +ORGANIZATION_BLOCK "Time_error_interrupt" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + Fault_ID : Byte; + Csg_OBnr : "OB_ANY"; + Csg_Prio : UInt; +END_VAR + +BEGIN + + // Network 1: (Original Language: LAD) + + // Network 1 has no logic elements. + + // No executable logic generated by script. + +END_ORGANIZATION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Timers_Counters.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Timers_Counters.md new file mode 100644 index 0000000..397ff45 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Timers_Counters.md @@ -0,0 +1,179 @@ +# Tag Table: Timers_Counters + +| Name | Datatype | Address | Comment | +|---|---|---|---| +| `mDelayPowerOnTmr` | `Timer` | `%T0` | MIX - BlenderCtrl__Main | +| `m_PAmPDS_SYR_RecipeTmr` | `Timer` | `%T1` | MIX - mPDS_SYR_PA_Ctrl_Write | +| `mHVM302_Dly` | `Timer` | `%T2` | MIX - | +| `mResetTotalizerTmr` | `Timer` | `%T3` | MIX - BlenderCtrl__Main | +| `mResetFTN301TotTmr` | `Timer` | `%T4` | MIX - BlenderCtrl__Main | +| `mResetFTP302TotTmr` | `Timer` | `%T5` | MIX - BlenderCtrl__Main | +| `mResetFTM303TotTmr` | `Timer` | `%T6` | MIX - BlenderCtrl__Main | +| `mResetProductTotTmr` | `Timer` | `%T7` | MIX - BlenderCtrl__Main | +| `mEnableStartTmr` | `Timer` | `%T8` | MIX - BlenderRun__Control | +| `mDelayStop` | `Timer` | `%T9` | MIX - BlenderRun__Control | +| `mBlenderStopDly` | `Timer` | `%T10` | MIX - BlenderRun__Control | +| `mDelayBlendEn` | `Timer` | `%T11` | MIX - BlenderRun__Control | +| `mWaitStableFlow` | `Timer` | `%T12` | MIX - BlenderRun__Control | +| `mEnToRamp` | `Timer` | `%T13` | MIX - BlenderRun__Control | +| `mEnCooler` | `Timer` | `%T14` | MIX - BlenderRun__Control | +| `mDlyOffRecirc` | `Timer` | `%T15` | MIX - BlenderRun__Control | +| `mEnStopFromFillerTmr` | `Timer` | `%T16` | MIX - BlenderRun__Control | +| `mAuxStopFromFillerTmr` | `Timer` | `%T17` | MIX - BlenderRun__Control | +| `mDelayToRestart` | `Timer` | `%T18` | MIX - BlenderRun__Control | +| `T019` | `Timer` | `%T19` | HMI Global DP Diagnosis Reset Delay | +| `mBaialageDelayMinflow` | `Timer` | `%T20` | MIX - Baialage | +| `mBaialage_Fault` | `Timer` | `%T21` | MIX - Baialage | +| `mOperatorStopTP` | `Timer` | `%T22` | MIX - BlenderRun_Stopping | +| `mInizializeTP` | `Timer` | `%T23` | MIX - CIP Local | +| `mNoRecircFlowDly` | `Timer` | `%T24` | MIX - CIP Local | +| `mBlendTN301DelayOff` | `Timer` | `%T26` | MIX - Pneumatic Valve Ctrl | +| `mBlendDeair2DelayOff` | `Timer` | `%T27` | MIX - Pneumatic Valve Ctrl | +| `mBlendSyrDelayOff` | `Timer` | `%T28` | MIX - Pneumatic Valve Ctrl | +| `mDelayOpenAVM317` | `Timer` | `%T29` | MIX - Pneumatic Valve Ctrl | +| `mFlipFlopTON` | `Timer` | `%T30` | MIX - Pneumatic Valve Ctrl | +| `mFlipFlopTOF` | `Timer` | `%T31` | MIX - Pneumatic Valve Ctrl | +| `mPAMaselliTmrReset` | `Timer` | `%T32` | MIX - Maselli_PA_Control | +| `mTempAcheavedDly` | `Timer` | `%T33` | MIX - CIPLocal_WaitEvent_Ctrl | +| `mCTS302AcheavedDly` | `Timer` | `%T34` | MIX - CIPLocal_WaitEvent_Ctrl | +| `mOpenAVS333_335TOF` | `Timer` | `%T35` | MIX - CIPLocal_WaitEvent_Ctrl | +| `mCTS301AcheavedDly` | `Timer` | `%T36` | MIX - CIPLocal_WaitEvent_Ctrl | +| `mFaultOpenRMM301Tmr` | `Timer` | `%T37` | MIX - ModValveFault | +| `mFaultCloseRMM301Tmr` | `Timer` | `%T38` | MIX - ModValveFault | +| `mFaultOpenRMP302Tmr` | `Timer` | `%T39` | MIX - ModValveFault | +| `mFaultCloseRMP302Tmr` | `Timer` | `%T40` | MIX - ModValveFault | +| `mFaultOpenRMM303Tmr` | `Timer` | `%T41` | MIX - ModValveFault | +| `mFaultCloseRMM303Tmr` | `Timer` | `%T42` | MIX - ModValveFault | +| `mRVM301_Fault` | `Timer` | `%T43` | MIX - ProductTank PressCtrl | +| `mCO2MainValveDelay` | `Timer` | `%T44` | MIX - ProductTank PressCtrl | +| `mEqPressOk` | `Timer` | `%T45` | MIX - ProductTank PressCtrl | +| `mDelayCIPStopP1` | `Timer` | `%T46` | MIX - PumpsControl | +| `mDelayStartPPN305Blend` | `Timer` | `%T47` | MIX - PumpsControl | +| `mDelayStartPPN305` | `Timer` | `%T48` | MIX - PumpsControl | +| `mDelayCIPStopP5` | `Timer` | `%T49` | MIX - PumpsControl | +| `mDelayStartPPP302` | `Timer` | `%T50` | MIX - PumpsControl | +| `mDelayCIPStopP2` | `Timer` | `%T51` | MIX - PumpsControl | +| `mDelayProdStopPPM303` | `Timer` | `%T52` | MIX - PumpsControl | +| `mDelayCIPStopPPM303` | `Timer` | `%T53` | MIX - PumpsControl | +| `mDelayStop_SR_P` | `Timer` | `%T54` | MIX - PumpsControl | +| `mSyrDensDelayAlrm` | `Timer` | `%T55` | MIX - SelCheckBrixSource | +| `mSyrBxDelayAlrm` | `Timer` | `%T56` | MIX - SelCheckBrixSource | +| `mDeairTank_LoadDelay` | `Timer` | `%T57` | MIX - TankLevel | +| `mDeairTank_LevFault` | `Timer` | `%T58` | MIX - TankLevel | +| `mDeairTank_LevFault1` | `Timer` | `%T59` | MIX - TankLevel | +| `mDeairTank_LevFault2` | `Timer` | `%T60` | MIX - TankLevel | +| `mSyrTank_LoadDelay` | `Timer` | `%T61` | MIX - TankLevel | +| `mSyrTank_LevFault` | `Timer` | `%T62` | MIX - TankLevel | +| `mSyrTank_LevFault1` | `Timer` | `%T63` | MIX - TankLevel | +| `mVacuumFaultTmr` | `Timer` | `%T64` | MIX - VacuumCtrl | +| `mDlyCarboStop` | `Timer` | `%T65` | MIX - Delay Carbo Stop OFF | +| `mDlyFreeze` | `Timer` | `%T66` | MIX - Delay Freeze Meter OFF | +| `mFaultOpenRMM304Tmr` | `Timer` | `%T67` | MIX - ModValveFault | +| `mFaultCloseRMM304Tmr` | `Timer` | `%T68` | MIX - ModValveFault | +| `mDelayProdStopPPM305` | `Timer` | `%T69` | MIX - PumpsControl | +| `mDelayStopPPM303` | `Timer` | `%T70` | MIX - PumpsControl | +| `mDelayStopPPM305` | `Timer` | `%T71` | | +| `mSyrRoomH2OPumpFaultDly` | `Timer` | `%T74` | MIX - Input | +| `mSyrRoomPumpFaultDly` | `Timer` | `%T75` | MIX - Input | +| `mDelayToRunPPM303VFC` | `Timer` | `%T78` | MIX - Output | +| `mFirstProdColdReqDly` | `Timer` | `%T79` | MIX - Output | +| `mTON_Reset_RecircPHE_Goo` | `Timer` | `%T80` | MIX - BlenderRun__Control | +| `mCIPRinseDlyOpenValve` | `Timer` | `%T81` | Time delay to open valve in CIP/Rinse | +| `mCIPRinseDlyOpenRMP302` | `Timer` | `%T82` | Time delay to open valve RMP302 in CIP/Rinse | +| `mTmrCO2High` | `Timer` | `%T84` | MIX - ProductQuality | +| `mTTM306_H2O_HighDlyAlm` | `Timer` | `%T85` | MIX - ProductQuality | +| `mTTM306_PRD_HighDlyAlm` | `Timer` | `%T86` | MIX - ProductQuality | +| `Tag_48` | `Timer` | `%T90` | | +| `mFinalPressOk` | `Timer` | `%T91` | MIX - ProductTank PressCtrl | +| `mDelayStartPPN301` | `Timer` | `%T92` | MIX - PumpsControl | +| `gBypassGlicoleSysDelay` | `Timer` | `%T93` | MIX - | +| `gRSTBYPSGlicoleSys` | `Timer` | `%T94` | MIX - | +| `Tag_52` | `Timer` | `%T98` | | +| `Tag_51` | `Timer` | `%T99` | | +| `TP301FillUpDly` | `Timer` | `%T100` | Delay to fill up to TP301 tank | +| `mFlipFlop_1` | `Timer` | `%T101` | MIX - Pneumatic Valve Ctrl | +| `mFlipFlop_2` | `Timer` | `%T102` | MIX - Pneumatic Valve Ctrl | +| `mDelayOpenAVM391` | `Timer` | `%T103` | MIX - Pneumatic Valve Ctrl | +| `T105` | `Timer` | `%T105` | MIX - Clock Signal | +| `mFlipFlopTON1` | `Timer` | `%T106` | MIX - ProductTankDrain | +| `mFlipFlopTOF1` | `Timer` | `%T107` | MIX - ProductTankDrain | +| `mDeairTank2_Flood` | `Timer` | `%T120` | MIX - CIP Flood | +| `T121` | `Timer` | `%T121` | AVM313 Cip Pulsing OFF | +| `T122` | `Timer` | `%T122` | AVM313 Cip Pulsing ON | +| `mTimeTN301_StartupFilter` | `Timer` | `%T123` | Deaireator StartUp | +| `mBlenderEmprtyTON` | `Timer` | `%T124` | MIX - CIP MAIN | +| `mBlenderDrainTimer` | `Timer` | `%T125` | MIX - CIP Total Drain | +| `mPrdTank_Empty` | `Timer` | `%T126` | MIX - CIP Total Drain | +| `mPrdTank_Flood` | `Timer` | `%T127` | MIX - CIP Flood | +| `mSyrTank_Flood` | `Timer` | `%T128` | MIX - CIP Flood | +| `mDeairTank_Flood` | `Timer` | `%T129` | MIX - CIP Flood | +| `mStopErrorsTimeOut` | `Timer` | `%T130` | MIX - Blender PID MAIN | +| `mCriticalBlendingTOF` | `Timer` | `%T131` | MIX - BlenderPID_PIDSPCalc | +| `mFirstProdBlendErrEnTON` | `Timer` | `%T132` | MIX - BlenderPID_BlendingFault | +| `mBlendErrorRecTmr` | `Timer` | `%T133` | MIX - BlenderPID_BlendingFault | +| `mCarboErrorRecTmr` | `Timer` | `%T134` | MIX - BlenderPID_BlendingFault | +| `mSaveRMM301_IntTON` | `Timer` | `%T135` | MIX - BlenderPIDCtrl_SaveInteg | +| `mSaveRMP302_IntTON` | `Timer` | `%T136` | MIX - BlenderPIDCtrl_SaveInteg | +| `mSaveRMM303_IntTON` | `Timer` | `%T137` | MIX - BlenderPIDCtrl_SaveInteg | +| `mSpeedConstTmr` | `Timer` | `%T138` | MIX - BlenderPIDCtrl_SaveValve | +| `mBlendStopDly` | `Timer` | `%T139` | MIX - MFMAnalogValues_Totalize | +| `mAuxTP1` | `Timer` | `%T140` | MIX - MFMAnalogValues_Totalize | +| `T141` | `Timer` | `%T141` | MIX - Profibus_DP_Diagnostic | +| `MessageScroll_Time` | `Timer` | `%T142` | MIX - MessageScroll | +| `StatusScroll_Time` | `Timer` | `%T143` | MIX - StatusScroll | +| `mSaveRVP303_IntTON` | `Timer` | `%T144` | MIX - BlenderPIDCtrl_SaveInteg | +| `mSaveRVN302_IntTON` | `Timer` | `%T145` | MIX - BlenderPIDCtrl_SaveInteg | +| `mSaveRMM304_IntTON` | `Timer` | `%T146` | MIX - BlenderPIDCtrl_SaveInteg | +| `mSyrTank_LevFault2` | `Timer` | `%T147` | MIX - TankLevel | +| `mDeairTank_LevFault3` | `Timer` | `%T148` | MIX - TankLevel | +| `mDelayCipStopPPN301` | `Timer` | `%T149` | MIX - Pumps Control | +| `mDelayStopPPN301` | `Timer` | `%T150` | MIX - PumpsControl | +| `mPPN301_Pump` | `Timer` | `%T151` | MIX - PumpsControl | +| `mDelayStopPPN305` | `Timer` | `%T152` | MIX - PumpsControl | +| `mPPN305_Pump` | `Timer` | `%T153` | MIX - PumpsControl | +| `mPPP302_Pump` | `Timer` | `%T154` | MIX - PumpsControl | +| `mPPM303_Pump` | `Timer` | `%T155` | MIX - PumpsControl | +| `mPPN304_Pump` | `Timer` | `%T156` | MIX - PumpsControl | +| `mDelayStopProdPPN301` | `Timer` | `%T157` | MIX - PumpsControl | +| `mPPM306_Pump` | `Timer` | `%T158` | MIX - PumpsControl | +| `mPAmPDSTmrReset` | `Timer` | `%T159` | MIX - mPDS_PA_Control | +| `mPAmPDSFreezeMeterTmr` | `Timer` | `%T160` | MIX - mPDS_PA_Control | +| `mPAmPDSCARBOStopMeterTmr` | `Timer` | `%T161` | MIX - mPDS_PA_Control | +| `mPAmPDSTmrComErr` | `Timer` | `%T162` | MIX - mPDS_PA_Ctrl_Read | +| `mPAmPDSTmrFault` | `Timer` | `%T163` | MIX - mPDS_PA_Ctrl_Read | +| `m_PAmPDS_RecipeTmr` | `Timer` | `%T164` | MIX - mPDS_PA_Ctrl_Write | +| `m_StopRecircPHE` | `Timer` | `%T165` | MIX - BlenderRun__Control | +| `m_StartRecircPHE` | `Timer` | `%T166` | MIX - BlenderRun__Control | +| `HMI_ShutDownDelay` | `Timer` | `%T167` | HMI Shut down delay | +| `mPAMaselli_RecipeTmr` | `Timer` | `%T170` | MIX - Maselli_PA_Ctrl_Transfer | +| `mPAMaselli_RecipeTmr1` | `Timer` | `%T171` | MIX - Maselli_PA_Ctrl_Write | +| `mPAMaselliTmrFault` | `Timer` | `%T172` | MIX - Maselli_PA_Ctrl_Read | +| `mPAMaselli_TrnsfrFault` | `Timer` | `%T173` | MIX - Maselli_PA_Ctrl_Transfer Fault | +| `mPAmPDS_SYR_TmrFault` | `Timer` | `%T174` | MIX - mPDS_SYR_PA_Ctrl_Read | +| `mPAMaselliTmrFault1` | `Timer` | `%T175` | MIX - Maselli_PA_Ctrl_Error | +| `mPAmPDS_SYR_TmrReset` | `Timer` | `%T176` | MIX - mPDS_SYR_PA_Control | +| `mPAmPDS_SYR_FreezeMeter` | `Timer` | `%T177` | MIX - mPDS_SYR_PA_Control | +| `PAmPDS_SYR_Devis_Tmr` | `Timer` | `%T178` | MIX - mPDS_SYR_PA_Ctrl_Read | +| `mBlenderDrainTimerDelay` | `Timer` | `%T182` | MIX - CIP Total Drain Delay Timer | +| `mPAMaselli_FreezeMeter` | `Timer` | `%T183` | | +| `mPulse_10Lt_Water` | `Timer` | `%T190` | mPulse_10Lt_Water | +| `mPulse_100Lt_Syrup` | `Timer` | `%T191` | mPulse_100Lt_Syrup | +| `mPulse_100Kg_CO2` | `Timer` | `%T192` | mPulse_100Kg_CO2 | +| `Dly_Maselli_Fault` | `Timer` | `%T200` | | +| `AnalyzerDelay` | `Timer` | `%T201` | | +| `T_Retrazo_Feed_OFFV362` | `Timer` | `%T202` | RetRazo Por Alarm Valvula OFF 362 | +| `Retrazo_OFF_362_Man` | `Timer` | `%T203` | Retrazo Feed OFF valvula 362 Man | +| `Tag_29` | `Timer` | `%T254` | | +| `Tag_34` | `Timer` | `%T255` | | +| `mPCM306AlarmDelay` | `Timer` | `%T305` | | +| `mPCM306_Reset` | `Timer` | `%T306` | MIX - PCM306 Fault reset | +| `PLS_DummyBottle_OK` | `Timer` | `%T307` | Pulse Dummy Bottle Inserted On Filler | +| `Delay_Maselli_Reading` | `Timer` | `%T308` | Delay Maselli for reading | +| `mWritePAmPDSCounter` | `Counter` | `%C1` | MIX - | +| `mWritePAmPDS_SYR_Counter` | `Counter` | `%C2` | MIX - | +| `RyrupPump_OffDelay` | `Timer` | `%T25` | RyrupPump_OffDelay | +| `TimerProvaPumpWater` | `Timer` | `%T108` | TimerProvaPumpWater | +| `mProductPumpStopDelay` | `Timer` | `%T104` | MIX/ Delay Stop Product Pump | +| `T168` | `Timer` | `%T168` | HMI Delay on PC Shutdown | +| `T169` | `Timer` | `%T169` | HMI Delay on PC Restart | + diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Tipo_di_dati_utente_1.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Tipo_di_dati_utente_1.md new file mode 100644 index 0000000..e9d17ac --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Tipo_di_dati_utente_1.md @@ -0,0 +1,8 @@ +# UDT: Tipo di dati utente_1 + +## Members + +| Name | Datatype | Start Value | Comment | +|---|---|---|---| +| `dummy` | `Bool` | `` | | + diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Tipo_di_dati_utente_2.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Tipo_di_dati_utente_2.md new file mode 100644 index 0000000..cde0ea5 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/Tipo_di_dati_utente_2.md @@ -0,0 +1,175 @@ +# UDT: Tipo di dati utente_2 + +## Members + +| Name | Datatype | Start Value | Comment | +|---|---|---|---| +| `PhaseInProgress` | `"QCO Phase"` | `` | | +|     `Total` | `Bool` | `` | | +|     `Spare40` | `Bool` | `` | | +|     `Spare80` | `Bool` | `` | | +|     `Spare120` | `Bool` | `` | | +|     `Spare160` | `Bool` | `` | | +|     `SyrupRunout` | `Bool` | `` | | +|     `SyrupLineRinse` | `Bool` | `` | | +|     `SyrupTankRinse` | `Bool` | `` | | +|     `SyrupTankPreparation` | `Bool` | `` | | +|     `Spare360` | `Bool` | `` | | +|     `ProdTankRunout` | `Bool` | `` | | +|     `ProdPipeRunout` | `Bool` | `` | | +|     `ProdTankBlowOff` | `Bool` | `` | | +|     `Spare520` | `Bool` | `` | | +|     `Rinse` | `Bool` | `` | | +|     `ProdTankDrain` | `Bool` | `` | | +|     `Spare640` | `Bool` | `` | | +|     `FillerFlushing` | `Bool` | `` | | +|     `Spare720` | `Bool` | `` | | +|     `ProdTankPressurization` | `Bool` | `` | | +|     `ProdTankChargeUp` | `Bool` | `` | | +|     `Spare840` | `Bool` | `` | | +|     `WaitForFillerReady` | `Bool` | `` | | +|     `FillerSlowCharging` | `Bool` | `` | | +|     `FillerFastCharging` | `Bool` | `` | | +|     `WaitFirstBottleOut` | `Bool` | `` | | +|     `Spare1040` | `Bool` | `` | | +|     `Spare1080` | `Bool` | `` | | +|     `Spare1120` | `Bool` | `` | | +|     `Spare1160` | `Bool` | `` | | +|     `Spare1200` | `Bool` | `` | | +|     `Reserved` | `Bool` | `` | | +| `ActualTimer` | `"QCO Timer"` | `` | | +|     `Total` | `DInt` | `` | | +|     `Spare40` | `DInt` | `` | | +|     `Spare80` | `DInt` | `` | | +|     `Spare120` | `DInt` | `` | | +|     `Spare160` | `DInt` | `` | | +|     `SyrupRunout` | `DInt` | `` | | +|     `SyrupLineRinse` | `DInt` | `` | | +|     `SyrupTankRinse` | `DInt` | `` | | +|     `SyrupTankPreparation` | `DInt` | `` | | +|     `Spare360` | `DInt` | `` | | +|     `ProdTankRunout` | `DInt` | `` | | +|     `ProdPipeRunout` | `DInt` | `` | | +|     `ProdTankBlowOff` | `DInt` | `` | | +|     `Spare520` | `DInt` | `` | | +|     `Rinse` | `DInt` | `` | | +|     `ProdTankDrain` | `DInt` | `` | | +|     `Spare640` | `DInt` | `` | | +|     `FillerFlushing` | `DInt` | `` | | +|     `Spare720` | `DInt` | `` | | +|     `ProdTankPressurization` | `DInt` | `` | | +|     `ProdTankChargeUp` | `DInt` | `` | | +|     `Spare840` | `DInt` | `` | | +|     `WaitForFillerReady` | `DInt` | `` | | +|     `FillerSlowCharging` | `DInt` | `` | | +|     `FillerFastCharging` | `DInt` | `` | | +|     `WaitFirstBottleOut` | `DInt` | `` | | +|     `Spare1040` | `DInt` | `` | | +|     `Spare1080` | `DInt` | `` | | +|     `Spare1120` | `DInt` | `` | | +|     `Spare1160` | `DInt` | `` | | +|     `Spare1200` | `DInt` | `` | | +|     `ChangeOverN` | `DInt` | `` | | +| `Spare` | `Array[0..67] of Byte` | `` | | +| `QCO_Database` | `Array[0..9] of "QCO Timer_Array_1"` | `` | | +|     `PhaseInProgress` | `"QCO Timer"` | `` | | +|         `Total` | `DInt` | `` | | +|         `Spare40` | `DInt` | `` | | +|         `Spare80` | `DInt` | `` | | +|         `Spare120` | `DInt` | `` | | +|         `Spare160` | `DInt` | `` | | +|         `SyrupRunout` | `DInt` | `` | | +|         `SyrupLineRinse` | `DInt` | `` | | +|         `SyrupTankRinse` | `DInt` | `` | | +|         `SyrupTankPreparation` | `DInt` | `` | | +|         `Spare360` | `DInt` | `` | | +|         `ProdTankRunout` | `DInt` | `` | | +|         `ProdPipeRunout` | `DInt` | `` | | +|         `ProdTankBlowOff` | `DInt` | `` | | +|         `Spare520` | `DInt` | `` | | +|         `Rinse` | `DInt` | `` | | +|         `ProdTankDrain` | `DInt` | `` | | +|         `Spare640` | `DInt` | `` | | +|         `FillerFlushing` | `DInt` | `` | | +|         `Spare720` | `DInt` | `` | | +|         `ProdTankPressurization` | `DInt` | `` | | +|         `ProdTankChargeUp` | `DInt` | `` | | +|         `Spare840` | `DInt` | `` | | +|         `WaitForFillerReady` | `DInt` | `` | | +|         `FillerSlowCharging` | `DInt` | `` | | +|         `FillerFastCharging` | `DInt` | `` | | +|         `WaitFirstBottleOut` | `DInt` | `` | | +|         `Spare1040` | `DInt` | `` | | +|         `Spare1080` | `DInt` | `` | | +|         `Spare1120` | `DInt` | `` | | +|         `Spare1160` | `DInt` | `` | | +|         `Spare1200` | `DInt` | `` | | +|         `ChangeOverN` | `DInt` | `` | | +|     `ActualTimer` | `"QCO Timer"` | `` | | +|         `Total` | `DInt` | `` | | +|         `Spare40` | `DInt` | `` | | +|         `Spare80` | `DInt` | `` | | +|         `Spare120` | `DInt` | `` | | +|         `Spare160` | `DInt` | `` | | +|         `SyrupRunout` | `DInt` | `` | | +|         `SyrupLineRinse` | `DInt` | `` | | +|         `SyrupTankRinse` | `DInt` | `` | | +|         `SyrupTankPreparation` | `DInt` | `` | | +|         `Spare360` | `DInt` | `` | | +|         `ProdTankRunout` | `DInt` | `` | | +|         `ProdPipeRunout` | `DInt` | `` | | +|         `ProdTankBlowOff` | `DInt` | `` | | +|         `Spare520` | `DInt` | `` | | +|         `Rinse` | `DInt` | `` | | +|         `ProdTankDrain` | `DInt` | `` | | +|         `Spare640` | `DInt` | `` | | +|         `FillerFlushing` | `DInt` | `` | | +|         `Spare720` | `DInt` | `` | | +|         `ProdTankPressurization` | `DInt` | `` | | +|         `ProdTankChargeUp` | `DInt` | `` | | +|         `Spare840` | `DInt` | `` | | +|         `WaitForFillerReady` | `DInt` | `` | | +|         `FillerSlowCharging` | `DInt` | `` | | +|         `FillerFastCharging` | `DInt` | `` | | +|         `WaitFirstBottleOut` | `DInt` | `` | | +|         `Spare1040` | `DInt` | `` | | +|         `Spare1080` | `DInt` | `` | | +|         `Spare1120` | `DInt` | `` | | +|         `Spare1160` | `DInt` | `` | | +|         `Spare1200` | `DInt` | `` | | +|         `ChangeOverN` | `DInt` | `` | | +|     `Spare` | `Array[0..67] of Bool` | `` | | +|     `QCO_Database` | `Array[0..9] of "QCO Timer"` | `` | | +|         `Total` | `DInt` | `` | | +|         `Spare40` | `DInt` | `` | | +|         `Spare80` | `DInt` | `` | | +|         `Spare120` | `DInt` | `` | | +|         `Spare160` | `DInt` | `` | | +|         `SyrupRunout` | `DInt` | `` | | +|         `SyrupLineRinse` | `DInt` | `` | | +|         `SyrupTankRinse` | `DInt` | `` | | +|         `SyrupTankPreparation` | `DInt` | `` | | +|         `Spare360` | `DInt` | `` | | +|         `ProdTankRunout` | `DInt` | `` | | +|         `ProdPipeRunout` | `DInt` | `` | | +|         `ProdTankBlowOff` | `DInt` | `` | | +|         `Spare520` | `DInt` | `` | | +|         `Rinse` | `DInt` | `` | | +|         `ProdTankDrain` | `DInt` | `` | | +|         `Spare640` | `DInt` | `` | | +|         `FillerFlushing` | `DInt` | `` | | +|         `Spare720` | `DInt` | `` | | +|         `ProdTankPressurization` | `DInt` | `` | | +|         `ProdTankChargeUp` | `DInt` | `` | | +|         `Spare840` | `DInt` | `` | | +|         `WaitForFillerReady` | `DInt` | `` | | +|         `FillerSlowCharging` | `DInt` | `` | | +|         `FillerFastCharging` | `DInt` | `` | | +|         `WaitFirstBottleOut` | `DInt` | `` | | +|         `Spare1040` | `DInt` | `` | | +|         `Spare1080` | `DInt` | `` | | +|         `Spare1120` | `DInt` | `` | | +|         `Spare1160` | `DInt` | `` | | +|         `Spare1200` | `DInt` | `` | | +|         `ChangeOverN` | `DInt` | `` | | + diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/VacuumCtrl.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/VacuumCtrl.md new file mode 100644 index 0000000..7fd5e59 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/VacuumCtrl.md @@ -0,0 +1,50 @@ +```pascal +// Block Type: FC +// Block Number: 2023 +// Original Network Languages: LAD + +FUNCTION "VacuumCtrl" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + Vacuum : Real; + TimeOut : S5Time; +END_VAR + + #_3M : Bool; // Auto-generated temporary + #_5M : Bool; // Auto-generated temporary +BEGIN + + // Network 1: PRESSURE - Deaireator vacuum pressure acheaved (Original Language: LAD) + + "Vacuum" := "Blender_Constants"."gTN301VacuumPress" + "Blender_Constants"."gTN301VacuumIst"; + + // Network 2: Vacuum Acheaved - still product signal from vacuum probe (Original Language: LAD) + + "gPTN313_Acheaved" := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_Deareation_Vacum"; + + // Network 3: Waiting Vacuum (Original Language: LAD) + // Message TO HMI: Waiting Vacuum If Needed. + + "HMI_Alarms"."gH_Status" := ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_ByPassDeair" AND "gPTN313_Acheaved" AND "Procedure_Variables"."TN301_StartUp"."Latch") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_ByPassDeair" AND "gPTN313_Acheaved" AND "Procedure_Variables"."TN301_StartUp"."Done") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" AND "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_EnDeaireation" AND "gPTN313_Acheaved" AND "Procedure_Variables"."TN301_StartUp"."Latch") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" AND "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_EnDeaireation" AND "gPTN313_Acheaved" AND "Procedure_Variables"."TN301_StartUp"."Done") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_ByPassDeair" AND "gPTN313_Acheaved" AND "Procedure_Variables"."TN301_StartUp"."Latch" AND "Blender_Variables_Pers"."gCarboStillRecipe") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_ByPassDeair" AND "gPTN313_Acheaved" AND "Procedure_Variables"."TN301_StartUp"."Done" AND "Blender_Variables_Pers"."gCarboStillRecipe") OR ("HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_EnDeaireation" AND "gPTN313_Acheaved" AND "Procedure_Variables"."TN301_StartUp"."Latch" AND "Blender_Variables_Pers"."gCarboStillRecipe") OR ("HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_EnDeaireation" AND "gPTN313_Acheaved" AND "Procedure_Variables"."TN301_StartUp"."Done" AND "Blender_Variables_Pers"."gCarboStillRecipe"); + + // Network 4: Timeout Septoint (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" THEN + "TimeOut" := S5T#5M; + END_IF; + + IF NOT "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" THEN + "TimeOut" := S5T#3M; + END_IF; + + // Network 5: VacuumFault (Original Language: LAD) + + "mVacuumFaultTmr"(IN := "HMI_Device"."PPN304"."Out", PT := "TimeOut"); // TODO: Declarar "mVacuumFaultTmr" : TON; + + "gVacuumTimeOut_Fault" := ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_DoubleDeair" AND "mVacuumFaultTmr".Q AND "gPTN313_Acheaved") OR ("mVacuumFaultTmr".Q AND "gPTN313_Acheaved" AND "Blender_Variables_Pers"."gCarboStillRecipe"); + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ValveFlow.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ValveFlow.md new file mode 100644 index 0000000..2e416cf --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/ValveFlow.md @@ -0,0 +1,28 @@ +```pascal +FUNCTION "ValveFlow" : Real +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : 'Function' +NAME : 'Name' +VERSION : 1.0 + VAR_INPUT + i_DeltaP : Real; + i_ValveOp : Real; + i_KFF : Real; + i_Dens : Real; + END_VAR + + +BEGIN + IF #i_KFF <> 0 AND #i_DeltaP >= 0 AND #i_Dens <> 0 THEN + #ValveFlow := #i_ValveOp * SQRT(#i_DeltaP / #i_Dens) / #i_KFF ; + ELSE + (* classic code: #ValveFlow := 0.0;*) + #ValveFlow := REAL#0.0; + END_IF; + + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/WaterDensity.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/WaterDensity.md new file mode 100644 index 0000000..0ade918 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/WaterDensity.md @@ -0,0 +1,22 @@ +```pascal +FUNCTION "WaterDensity" : Real +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : 'Function' +NAME : 'Name' +VERSION : 1.0 + VAR_INPUT + i_Temperature : Real; + END_VAR + + +BEGIN + + + (* classic code: #WaterDensity := 0.99985 + 0.000061577 * #i_Temperature - 0.0000081546 * #i_Temperature * #i_Temperature + 0.000000047799 * #i_Temperature * #i_Temperature * #i_Temperature ;*) + #WaterDensity := REAL#0.99985 + REAL#0.000061577 * #i_Temperature - REAL#0.0000081546 * #i_Temperature * #i_Temperature + REAL#0.000000047799 * #i_Temperature * #i_Temperature * #i_Temperature ; + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/WritePeripheral.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/WritePeripheral.md new file mode 100644 index 0000000..e4ce357 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/WritePeripheral.md @@ -0,0 +1,82 @@ +```pascal +// Block Type: FC +// Block Number: 1970 +// Original Network Languages: LAD, STL + +FUNCTION "WritePeripheral" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + Analog_Value : Real; + MAX_Analog_Value : Real; + MIN_Analog_Value : Real; + MAX_Out : Int; + MIN_Out : Int; +END_VAR + +VAR_OUTPUT + PAW : Word; +END_VAR + +VAR_TEMP + Range : Real; + Scale : Real; + Scale_Range : Real; + Analog_Value_Used : Real; + Buffer : Bool; +END_VAR + +BEGIN + + // Network 1: (Original Language: LAD) + // Check if Analog_Value is correct + + "Analog_Value_Used" := "Analog_Value"; + + IF "Analog_Value" > "MAX_Analog_Value" THEN + "Analog_Value_Used" := "MAX_Analog_Value"; + END_IF; + + IF "Analog_Value" < "MIN_Analog_Value" THEN + "Analog_Value_Used" := "MIN_Analog_Value"; + END_IF; + + "Buffer" := TRUE; + + // Network 2: (Original Language: STL) + + // --- BEGIN STL Network 2 --- + + L "Analog_Value_Used" + L "MIN_Analog_Value" + SUB_R + T "Scale" + + L "MAX_Analog_Value" + L "MIN_Analog_Value" + SUB_R + T "Range" + + L "Scale" + L "Range" + DIV_R + T "Scale_Range" + + L "MAX_Out" + L "MIN_Out" + SUB_I + ITD + DTR + L "Scale_Range" + MUL_R + RND + L "MIN_Out" + ADD_I + T "PAW" + + // --- END STL Network 2 --- + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/_CYCL_EXC.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/_CYCL_EXC.md new file mode 100644 index 0000000..49a0d8f --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/_CYCL_EXC.md @@ -0,0 +1,89 @@ +```pascal +// Block Type: OB +// Block Number: 1 +// Original Network Languages: LAD + +ORGANIZATION_BLOCK "_CYCL_EXC" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + OB1_EV_CLASS : Byte; + OB1_SCAN_1 : Byte; + OB1_PRIORITY : Byte; + OB1_OB_NUMBR : Byte; + OB1_RESERVED_1 : Byte; + OB1_RESERVED_2 : Byte; + OB1_PREV_CYCLE : Int; + OB1_MIN_CYCLE : Int; + OB1_MAX_CYCLE : Int; + OB1_DATE_TIME : "Date_And_Time"; + Aux_Word : Real; + Aux_Word_2 : Real; + t : Int; +END_VAR + +BEGIN + + // Network 1: Always OFF (Original Language: LAD) + // AUXILIARY MEMORY - FALSE Memory + + IF "AUX FALSE" THEN + "AUX FALSE" := FALSE; + END_IF; + + // Network 2: Always ON (Original Language: LAD) + // AUXILIARY MEMORY - TRUE Memory + + IF "AUX TRUE" THEN + "AUX TRUE" := TRUE; + END_IF; + + // Network 3: Blender CTRL (Original Language: LAD) + + BlenderCtrl__Main(); + + // Network 4: Scroll Message for screen (Original Language: LAD) + + MessageScroll(Code := "HMI_Alarms"."gH_Message_code", Data_B := "HMI_Alarms", First := 20, Last := 30, Time_Vis := "MessageScroll_Time"); + + // Network 5: Scroll Machine Status for screen (Original Language: LAD) + + MessageScroll(Code := "HMI_Alarms"."gH_Status_code", Data_B := "HMI_Alarms", First := 34, Last := 43, Time_Vis := "StatusScroll_Time"); + + // Network 6: ITC Main Routine (Original Language: LAD) + + ITC_MainRoutine(); + + // Network 7: CO2 Counters (Original Language: LAD) + + "Co2_Counters_DB"(); + + // Network 8: ProdBrix Recovery (Original Language: LAD) + + "ProdBrixRecovery_DB"(); + + // Network 9: Hmi Key (Original Language: LAD) + + IF "Disable_Bit" THEN + "Key Read & Write Data"(); + END_IF; + + // Network 10: (Original Language: LAD) + // W.O. 08/07/2022 Modifica per ridurre la velocità di produzione legata al rapporto di proporzione + + IF "AUX TRUE" THEN + "Blender_Constants"."gBlenderNominalSpeedAdj" := 1.05; + END_IF; + + // Network 11: (Original Language: LAD) + + GNS_PLCdia_MainRoutine(); + + // Network 12: (Original Language: LAD) + + // Network 12 has no logic elements. + +END_ORGANIZATION_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/_StepMove.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/_StepMove.md new file mode 100644 index 0000000..3f0e44b --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/_StepMove.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: FC +// Block Number: 1851 +// Original Network Languages: LAD + +FUNCTION "_StepMove" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + Next_Step : Int; + Preset_Timer : Int; + Condition_1_OK : Bool; + Condition_2_OK : Bool; + Wait : Bool; + TimeClockBase : Bool; + Reset : Bool; +END_VAR + +VAR_INOUT + Step_Number : Int; + Actual_Time : Int; + Step_Transition : Bool; +END_VAR + +VAR_TEMP + Delay_Request : Bool; + Local_Time : Int; + Condition_Ok : Bool; + End_Timer : Bool; + DecSec_ONS : Bool; + Reset_Act_Delay : Bool; + End_Temp : Bool; +END_VAR + +BEGIN + + // Network 1: SET TIMER (Original Language: LAD) + + "Delay_Request" := Ne("Preset_Timer", 0); + + // Network 2: (Original Language: LAD) + + SEL_I(G := "Delay_Request", IN0 := 1, IN1 := "Preset_Timer"); + + // Network 3: (Original Language: LAD) + + "Condition_Ok" := "Condition_1_OK" AND "Condition_2_OK"; + + // Network 4: (Original Language: LAD) + + SEL_I(G := "Step_Transition", IN0 := "Step_Number", IN1 := "Next_Step"); + + // Network 5: SET TIMER (Original Language: LAD) + + T_Timer(Actual := "Actual_Time", Base := "TimeClockBase", Preset := "Local_Time", Reset := "Reset", Start := "Step_Transition" AND "Condition_Ok", Stop := "Wait"); + + // Network 6: (Original Language: LAD) + + IF "Step_Transition" THEN + "Condition_Ok" := FALSE; + END_IF; + + IF "Step_Transition" THEN + "Step_Transition" := FALSE; + END_IF; + + // Network 7: (Original Language: LAD) + + "Step_Transition" := "Condition_Ok" AND "End_Timer"; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/_StepMove_Test.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/_StepMove_Test.md new file mode 100644 index 0000000..abdc89c --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/_StepMove_Test.md @@ -0,0 +1,74 @@ +```pascal +// Block Type: FC +// Block Number: 1852 +// Original Network Languages: LAD + +FUNCTION "_StepMove_Test" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_INPUT + Next_Step : Int; + Preset_Timer : Int; + Condition_1_OK : Bool; + Condition_2_OK : Bool; + Wait : Bool; + TimeClockBase : Bool; + Reset : Bool; +END_VAR + +VAR_INOUT + Step_Number : Int; + Actual_Time : Int; + Step_Transition : Bool; +END_VAR + +VAR_TEMP + Delay_Request : Bool; + Local_Time : Int; + Condition_Ok : Bool; + End_Timer : Bool; + DecSec_ONS : Bool; + Reset_Act_Delay : Bool; + End_Temp : Bool; +END_VAR + +BEGIN + + // Network 1: SET TIMER (Original Language: LAD) + + "Delay_Request" := Ne("Preset_Timer", 0); + + // Network 2: (Original Language: LAD) + + SEL_I(G := "Delay_Request", IN0 := 1, IN1 := "Preset_Timer"); + + // Network 3: (Original Language: LAD) + + "Condition_Ok" := "Condition_1_OK" AND "Condition_2_OK"; + + // Network 4: (Original Language: LAD) + + SEL_I(G := "Step_Transition", IN0 := "Step_Number", IN1 := "Next_Step"); + + // Network 5: SET TIMER (Original Language: LAD) + + T_Timer(Actual := "Actual_Time", Base := "TimeClockBase", Preset := "Local_Time", Reset := FALSE, Start := "Step_Transition" AND "Condition_Ok", Stop := "Wait"); + + // Network 6: (Original Language: LAD) + + IF "Step_Transition" THEN + "Condition_Ok" := FALSE; + END_IF; + + IF "Step_Transition" THEN + "Step_Transition" := FALSE; + END_IF; + + // Network 7: (Original Language: LAD) + + "Step_Transition" := "Condition_Ok" AND "End_Timer"; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPDS_PA_Control.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPDS_PA_Control.md new file mode 100644 index 0000000..725199a --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPDS_PA_Control.md @@ -0,0 +1,112 @@ +```pascal +// Block Type: FC +// Block Number: 1880 +// Original Network Languages: LAD + +FUNCTION "mPDS_PA_Control" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + mPAReset : Bool; + mPASel : Bool; + mRetAux : Int; + mWordAux : Word; +END_VAR + + #_0000 : Bool; // Auto-generated temporary + #_16 : Bool; // Auto-generated temporary +BEGIN + + // Network 1: Temporary placeholder variable (Original Language: LAD) + + "mPDS_PA_Data"."Input_From_mPDS"."gPAmPDS_Enabled" := Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_MeterType", 5); + + "mPASel" := Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_MeterType", 5); + + // Network 2: Output (Original Language: LAD) + + IF "mPASel" THEN + "mWordAux" := W OR D#16#0000; + END_IF; + + // Network 3: No Freeze Product Meter (Original Language: LAD) + + // Network 3 did not produce printable SCL code. + + // Network 4: Freeze To PDS (Original Language: LAD) + + "P_PDS_Freeze_To_PDS" := "gNoFreezeProductMeter"; + + // Network 5: Stop (Original Language: LAD) + + // Network 5 did not produce printable SCL code. + + // Network 6: Stop To PDS (Original Language: LAD) + + "P_PDS_Stop_to_PDS" := "gCARBOStopProductMeter"; + + // Network 7: Start (Original Language: LAD) + + IF "HMI_Digital"."LSM302L"."Filtered" AND (("gCARBOStopProductMeter" AND "CIP_Program_Variables"."Status"."BlenderDrainRunning" AND "Procedure_Variables"."Blender_Run"."Latch" AND "gBlenderCIPMode") OR ("gBlenderMinLevel" AND (("gCARBOStopProductMeter" AND "gBlenderProdMode" AND "Procedure_Variables"."First_Production"."Done" AND "gBlenderRinseMode") OR ("gCARBOStopProductMeter" AND "gBlenderProdMode" AND "Procedure_Variables"."First_Production"."Latch" AND "Procedure_Variables"."First_Production"."Done" AND "gBlenderRinseMode")))) THEN + "gCARBOStopProductMeter" := FALSE; + END_IF; + + // Network 8: Run (Original Language: LAD) + + IF ("gNoFreezeProductMeter" AND "mPASel" AND "HMI_Variables_Status"."Meters"."QTM3012_PRD_Fault" AND "mPDS_PA_Data"."Input_From_mPDS"."gPAmPDS_CommActive") OR ("gNoFreezeProductMeter" AND "mPASel" AND "HMI_Variables_Status"."Meters"."QTM3012_PRD_Fault" AND "mPDS_PA_Data"."Input_From_mPDS"."gPAmPDS_ReceiveOnly") THEN + "HMI_Variables_Status"."Meters"."QTM3012_PRD_Run" := TRUE; + END_IF; + + // Network 9: ProductMeterOK (Original Language: LAD) + + "gProductMeterOK" := ("mPASel" AND "mPDS_PA_Data"."Input_From_mPDS"."gPAmPDS_CommActive" AND "mPDS_PA_Data"."Input_From_mPDS"."gPAmPDS_Error") OR ("mPASel" AND "mPDS_PA_Data"."Input_From_mPDS"."gPAmPDS_ReceiveOnly" AND "mPDS_PA_Data"."Input_From_mPDS"."gPAmPDS_Error"); + + // Network 10: Receive Only (Original Language: LAD) + + "mPDS_PA_Data"."Input_From_mPDS"."gPAmPDS_ReceiveOnly" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_MeterReceiveOnly" OR "mPDS_PA_Data"."Input_From_mPDS"."gPAmPDS_ProfibusStatus"."_DavisON"; + + // Network 11: Freeze Meter Enable (Original Language: LAD) + + "mPDS_PA_OutDigitByteDI1E" := "AUX TRUE"; + + // Network 12: Delay Freeze Meter (Original Language: LAD) + + // Network 12 did not produce printable SCL code. + + // Network 13: CARBO Stop Enable (Original Language: LAD) + + "mPDS_PA_OutDigitByteDI2E" := "AUX TRUE"; + + // Network 14: Delay Carbo Stop (Original Language: LAD) + + // Network 14 did not produce printable SCL code. + + // Network 15: Recipe Nr "mPDS_PA_Data".Output_To_mPDS.gPAmPDSNumRecipe (Original Language: LAD) + + "mPDS_PA_Data"."Output_To_mPDS"."OUT_Block01" := "mPDS_PA_Data"."Output_To_mPDS"."gPAmPDSNumRecipe"; + + // Network 16: Transfer (Original Language: LAD) + + "mPDS_PA_Data"."Output_To_mPDS"."OUT_Block01" := "mPDS_PA_OutDigitByte"; + + // Network 17: Reset (Original Language: LAD) + + // Network 17 did not produce printable SCL code. + + // Network 18: Ctrl Transfer (Original Language: LAD) + + IF "mPAReset" THEN + mPDS_PA_Ctrl_Transfer(); + END_IF; + + // Network 19: Read / Write (Original Language: LAD) + + IF "mPASel" THEN + mPDS_PA_Ctrl_Read(); + mPDS_PA_Ctrl_Write(); + END_IF; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPDS_PA_Ctrl_Parameters.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPDS_PA_Ctrl_Parameters.md new file mode 100644 index 0000000..c798716 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPDS_PA_Ctrl_Parameters.md @@ -0,0 +1,59 @@ +```pascal +// Block Type: FC +// Block Number: 1883 +// Original Network Languages: LAD + +FUNCTION "mPDS_PA_Ctrl_Parameters" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + mAuxCalc : Real; + mAuxCalc1 : Real; +END_VAR + + #_17 : Bool; // Auto-generated temporary + #_21 : Bool; // Auto-generated temporary +BEGIN + + // Network 1: Brix Gain (Original Language: LAD) + + "mAuxCalc1" := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_ProductBrix" + "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_ProdMeter_ZeroBrix"; + + SEL_R(G := Ne("HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_ProductBrix", 0.0), IN0 := 1.0, IN1 := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_ProductBrix"); + + "mAuxCalc1" := "mAuxCalc1" / "mAuxCalc"; + + SEL_R(G := "Blender_Variables_Pers"."gSugarBeverage", IN0 := "mAuxCalc1", IN1 := 1.0); + + // Network 2: Parameter's Index tranferred to parameter 1 (Original Language: LAD) + + IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_PAmPDSType" THEN + "mPDS_PA_Data"."Output_To_mPDS"."OUT_Block01" := INT#17; + END_IF; + + // Network 3: Value transferred to Parameter 1 (Original Language: LAD) + + // ERROR: MOVE 25 sin destino claro. + + // Network 4: Co2 Gain (Original Language: LAD) + + SEL_R(G := Ne("HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_CO2Vols", 0.0), IN0 := 1.0, IN1 := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_CO2Vols"); + + "mAuxCalc1" := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_CO2Vols" + "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_ProdMeter_ZeroCO2"; + + "mAuxCalc1" := "mAuxCalc1" / "mAuxCalc"; + + SEL_R(G := "Blender_Variables_Pers"."gCarboStillProduct", IN0 := "mAuxCalc1", IN1 := 1.0); + + // Network 5: Parameter's Index transferred to Parameter 2 (Original Language: LAD) + + "mPDS_PA_Data"."Output_To_mPDS"."OUT_Block01" := INT#21; + + // Network 6: Value transferred to Parameter 2 (Original Language: LAD) + + // ERROR: MOVE 23 sin destino claro. + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPDS_PA_Ctrl_Read.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPDS_PA_Ctrl_Read.md new file mode 100644 index 0000000..8c98d92 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPDS_PA_Ctrl_Read.md @@ -0,0 +1,151 @@ +```pascal +// Block Type: FC +// Block Number: 1881 +// Original Network Languages: LAD, STL +// Block Comment: +// BYTES From PDS +// 28 - CO2 Carbo Package Co2 Inlet Prod +// 52-Temperature Carbo +// 92-Prod CO2 +// 104 -Prod Temperature +// 108- Prod Brix + +FUNCTION "mPDS_PA_Ctrl_Read" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + mAux : Int; + mdummy : Bool; + ErrorBit : Array[0..7] of Bool; +END_VAR + + #_25S : Bool; // Auto-generated temporary +BEGIN + + // Network 1: Communication Active (Original Language: LAD) + + // Network 1 did not produce printable SCL code. + + // Network 2: Co2 (Original Language: LAD) + + IF "E5_007161" THEN + LIMIT_R(IN := "P_PDS_CO2", MN := 0.0, MX := 150.0); + END_IF; + + // Network 3: Brix (Original Language: LAD) + + IF "P_PDS_Product_Brix" > 0.0 THEN + LIMIT_R(IN := "P_PDS_Product_Brix", MN := 0.0, MX := 8.0); + END_IF; + + IF ("P_PDS_Product_Brix" > 11.0) OR ("E5_007161" AND "P_PDS_Running") THEN + "Blender_Variables"."gProductBrix" := "P_PDS_Product_Brix"; + END_IF; + + // Network 4: Temperature (Original Language: LAD) + + IF "E5_007161" THEN + LIMIT_R(IN := "P_PDS_Temperature", MN := 0.0, MX := 150.0); + END_IF; + + // Network 5: Density (Original Language: LAD) + + IF "E5_007161" THEN + LIMIT_R(IN := "P_PDS_Density", MN := 0.0, MX := 150.0); + END_IF; + + // Network 6: Line pressure (Original Language: LAD) + + LIMIT_R(IN := "PAmPDS_Aux_Real_IN", MN := 0.0, MX := 10.0); + + // Network 7: Temperature (Original Language: LAD) + + LIMIT_R(IN := "P_PDS_Temperature", MN := 0.0, MX := 150.0); + + // Network 8: Density (Original Language: LAD) + + LIMIT_R(IN := "P_PDS_Density", MN := 0.0, MX := 5.0); + + // Network 9: Data (Original Language: STL) + + // --- BEGIN STL Network 9 --- + + AN "HMI_Blender_Parameters".Processor_Options.Blender_OPT._PAmPDSType + A_BRACK + O "mPDS_PA_Data".Input_From_mPDS.gPAmPDS_ProfibusStatus._CommError + O "M18747" + BRACKET + AN "mPDS_PA_Data".Input_From_mPDS.gPAmPDS_Error + = "ErrorBit"[0] + A "ErrorBit"[0] + JNB _01e + L "mPDS_PA_Data".mPACountError + L 1 + ADD_I + T "mPDS_PA_Data".mPACountError + _01e: NOP_0 + A "ErrorBit"[0] + JNB _01f + L 0 + T "Blender_Variables".gProductRecipeNum + _01f: NOP_0 + A "ErrorBit"[0] + JNB _020 + L 0 + T "Blender_Variables".gProductCO2 + _020: NOP_0 + A "ErrorBit"[0] + JNB _021 + L 0 + T "Blender_Variables".gProductBrix + _021: NOP_0 + A "ErrorBit"[0] + JNB _022 + L 0 + T "Blender_Variables".gProductDens + _022: NOP_0 + A "ErrorBit"[0] + JNB _023 + L 0 + T "Blender_Variables".gProductTemp + _023: NOP_0 + A "ErrorBit"[0] + JNB _024 + L 0 + T "Blender_Variables".gProductLinePress + _024: NOP_0 + + // --- END STL Network 9 --- + + // Network 10: Count Error (Original Language: LAD) + + IF "gBlenderCIPMode" OR ("mPDS_PA_Data"."Input_From_mPDS"."gPAmPDS_ProfibusStatus"."_CommError" AND "M18747") THEN + "mPDS_PA_Data"."mPACountError" := 0; + END_IF; + + // Network 11: Error (Original Language: LAD) + + "mPDS_PA_Data"."Input_From_mPDS"."gPAmPDS_Error" := "mPDS_PA_Data"."mPACountError" > 6; + + // Network 12: Fault (Original Language: LAD) + + "mPAmPDSTmrComErr"(IN := "gProdMeterTransferRecipe", PT := S5T#25S); // TODO: Declarar "mPAmPDSTmrComErr" : TON; + + "gmPDS_PA_Error_Fault" := ("mPAmPDSTmrComErr".Q AND "mPDS_PA_Data"."Input_From_mPDS"."gPAmPDS_Error" AND "Procedure_Variables"."ProdBrix_Track"."Latch") OR ("mPAmPDSTmrComErr".Q AND "mPDS_PA_Data"."Input_From_mPDS"."gPAmPDS_Error" AND "Procedure_Variables"."ProdCO2_Track"."Latch"); + + // Network 13: Fault (Original Language: LAD) + + // Network 13 did not produce printable SCL code. + + // Network 14: (Original Language: LAD) + + // ERROR: MOVE 23 sin destino claro. + + // Network 15: (Original Language: LAD) + + // Network 15 has no logic elements. + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPDS_PA_Ctrl_Transfer.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPDS_PA_Ctrl_Transfer.md new file mode 100644 index 0000000..5c98a79 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPDS_PA_Ctrl_Transfer.md @@ -0,0 +1,54 @@ +```pascal +// Block Type: FC +// Block Number: 1884 +// Original Network Languages: LAD + +FUNCTION "mPDS_PA_Ctrl_Transfer" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + mPAmPDSContTr : Bool; + mPAmPDSParTr : Bool; + mPAmPDSAckTr : Bool; + mAux : Int; + count : Int; +END_VAR + + #_1 : Bool; // Auto-generated temporary +BEGIN + + // Network 1: count (Original Language: LAD) + + "count" := "mPDS_PA_Data"."mWritePAmPDS_Count"; + + // Network 2: Start (Original Language: LAD) + + "mPAmPDSParTr" := Eq("count", 1); + + // Network 3: Ack (Original Language: LAD) + + "mPAmPDSAckTr" := Eq("count", 2); + + // Network 4: Ctrl Parameters (Original Language: LAD) + + IF "mPAmPDSParTr" THEN + mPDS_PA_Ctrl_Parameters(); + END_IF; + + // Network 5: ACK_Transfer (Original Language: LAD) + // ACK_Transfer + + IF "mPAmPDSAckTr" THEN + "mPDS_PA_Data"."Output_To_mPDS"."OUT_Block01" := INT#1; + END_IF; + + // Network 6: Recipe Number Write To PDS (Original Language: LAD) + + IF "AUX TRUE" THEN + "P_PDS_Recipe_Number" := "mPDS_PA_Data"."Output_To_mPDS"."gPAmPDSNumRecipe"; + END_IF; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPDS_PA_Ctrl_Write.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPDS_PA_Ctrl_Write.md new file mode 100644 index 0000000..a87864b --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPDS_PA_Ctrl_Write.md @@ -0,0 +1,70 @@ +```pascal +FUNCTION "mPDS_PA_Ctrl_Write" : Void +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : TASK2 +NAME : 'Name' +VERSION : 1.0 + VAR_TEMP + mWritePAmPDS_PV : Word; + mWritePAmPDS_Out : Bool; + mWritePAmPDS_OutAux : Bool; + ValBinTmr164 : Word; + ValBcdTmr164 : S5Time; + mWritePAmPDS_Reset : Bool; + mWritePAmPDSCounter : Word; + END_VAR + + VAR CONSTANT + "s5time" : S5Time := S5T#2.5s; + END_VAR + + +BEGIN + + + "mPDS_PA_Data".Output_To_mPDS.gPAmPDSNumRecipe := LIMIT (MN:= 0, IN:= "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProdMeterRecipeNum , MX:= 255) ; + IF "gBlenderCIPMode" THEN + "mPDS_PA_Data".Output_To_mPDS.gPAmPDSNumRecipe := 100 ; + END_IF; + "mPDS_PA_Data".Output_To_mPDS.OUT_Block01[0] := INT_TO_BYTE ("mPDS_PA_Data".Output_To_mPDS.gPAmPDSNumRecipe) ; + + + #ValBcdTmr164 := S_PEXT (T_NO := "m_PAmPDS_RecipeTmr", + S := "gProdMeterTransferRecipe" OR "gBlenderCIPMode" OR "gProductionONS", + TV :=#s5time, + Q => "mPDS_PA_Data".Output_To_mPDS.gPAmPDSSetNewRec); + + IF "gProdMeterTransferRecipe" THEN + "gProdMeterTransferRecipe" := FALSE ; + END_IF ; + + "ONS_R"(Enable_ONS := "mPDS_PA_Data".Output_To_mPDS.gPAmPDSSetNewRec, + Aux_ONS := "mWritePAmPDS_RT", + ONS_R => #mWritePAmPDS_Reset ); + + IF ("mPDS_PA_Data".Output_To_mPDS.gPAmPDSSetNewRec AND NOT "mPDS_PA_Data".Input_From_mPDS.gPAmPDS_ReceiveOnly) THEN + #mWritePAmPDS_OutAux := TRUE ; + ELSE + #mWritePAmPDS_OutAux := FALSE ; + #mWritePAmPDS_Reset := TRUE ; + END_IF ; + + #mWritePAmPDS_PV := 3 ; + #mWritePAmPDSCounter := S_CUD ( C_NO := "mWritePAmPDSCounter" , + CU := "Clock_0.5Hz" AND NOT #mWritePAmPDS_Out AND #mWritePAmPDS_OutAux , + S := TRUE , + R := #mWritePAmPDS_Reset , + PV := #mWritePAmPDS_PV, + CV => "mPDS_PA_Data".mWritePAmPDS_Count, + Q => #mWritePAmPDS_Out ) ; + + IF NOT "mPDS_PA_Data".Input_From_mPDS.gPAmPDS_ReceiveOnly THEN + "mPDS_PA_Ctrl_Transfer"() ; + END_IF ; + + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPDS_PA_Data.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPDS_PA_Data.md new file mode 100644 index 0000000..69f5ae3 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPDS_PA_Data.md @@ -0,0 +1,20 @@ +```pascal +// Block Type: GlobalDB +// Block Number: 932 + +DATA_BLOCK "mPDS_PA_Data" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Input_From_mPDS : "Struct"; + Output_To_mPDS : "Struct"; + mPACountError : Int := 0; + mWritePAmPDS_Count : Word; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPDS_SYR_PA_Control.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPDS_SYR_PA_Control.md new file mode 100644 index 0000000..824cdcd --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPDS_SYR_PA_Control.md @@ -0,0 +1,62 @@ +```pascal +// Block Type: FC +// Block Number: 1885 +// Original Network Languages: LAD + +FUNCTION "mPDS_SYR_PA_Control" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + mPAReset : Bool; + mPASel : Bool; +END_VAR + +BEGIN + + // Network 1: Temporary placeholder variable (Original Language: LAD) + + "mPDS_SYR_PA_Data"."Input_From_mPDS"."gPAmPDS_Enabled" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SyrBrixMeter"; + + "mPASel" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SyrBrixMeter"; + + // Network 2: Reset (Original Language: LAD) + + // Network 2 did not produce printable SCL code. + + // Network 3: Transfer (Original Language: LAD) + + IF "mPAReset" THEN + mPDS_SYR_PA_Ctrl_Trans(); + END_IF; + + // Network 4: Read / Write (Original Language: LAD) + + IF "mPASel" THEN + mPDS_SYR_PA_Ctrl_Read(); + mPDS_SYR_PA_Ctrl_Write(); + END_IF; + + // Network 5: Syrup Meter (Original Language: LAD) + + // Network 5 did not produce printable SCL code. + + // Network 6: Run (Original Language: LAD) + + IF ("gFreezeSyrupMeter" AND "HMI_Variables_Status"."Meters"."QTM3012_SYR_Fault" AND "mPDS_SYR_PA_Data"."Input_From_mPDS"."gPAmPDS_CommActive" AND "mPASel") OR ("gFreezeSyrupMeter" AND "HMI_Variables_Status"."Meters"."QTM3012_SYR_Fault" AND "mPDS_SYR_PA_Data"."Input_From_mPDS"."gPAmPDS_ReceiveOnly" AND "mPASel") THEN + "HMI_Variables_Status"."Meters"."QTM3012_SYR_Run" := TRUE; + END_IF; + + // Network 7: ProductMeterOK (Original Language: LAD) + + IF ("mPDS_SYR_PA_Data"."Input_From_mPDS"."gPAmPDS_CommActive" AND "mPASel" AND "mPDS_SYR_PA_Data"."Input_From_mPDS"."gPAmPDS_Error") OR ("mPDS_SYR_PA_Data"."Input_From_mPDS"."gPAmPDS_ReceiveOnly" AND "mPASel" AND "mPDS_SYR_PA_Data"."Input_From_mPDS"."gPAmPDS_Error") THEN + "gSyrupMeterOK" := TRUE; + END_IF; + + // Network 8: Receive Only (Original Language: LAD) + + "mPDS_SYR_PA_Data"."Input_From_mPDS"."gPAmPDS_ReceiveOnly" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_MeterReceiveOnly" OR "mPDS_SYR_PA_Data"."Input_From_mPDS"."gPAmPDS_DavisON"; + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPDS_SYR_PA_Ctrl_Param.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPDS_SYR_PA_Ctrl_Param.md new file mode 100644 index 0000000..11747fc --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPDS_SYR_PA_Ctrl_Param.md @@ -0,0 +1,38 @@ +```pascal +// Block Type: FC +// Block Number: 1888 +// Original Network Languages: LAD + +FUNCTION "mPDS_SYR_PA_Ctrl_Param" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + mAuxCalc : Real; + mAuxCalc1 : Real; +END_VAR + + #_17 : Bool; // Auto-generated temporary +BEGIN + + // Network 1: Brix Gain (Original Language: LAD) + + "mAuxCalc1" := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_SyrupBrix" + "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_SyrMeter_ZeroBrix"; + + SEL_R(G := Ne("HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_SyrupBrix", 0.0), IN0 := 1.0, IN1 := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_SyrupBrix"); + + "mAuxCalc1" := "mAuxCalc1" / "mAuxCalc"; + + SEL_R(G := "Blender_Variables_Pers"."gSugarBeverage", IN0 := "mAuxCalc1", IN1 := 1.0); + + // Network 2: Parameter's Index tranferred to paramete 1 (Original Language: LAD) + + "mPDS_SYR_PA_Data"."Output_To_mPDS"."OUT_Block01" := INT#17; + + // Network 3: Value transferred to Parameter 1 (Original Language: LAD) + + // ERROR: MOVE 23 sin destino claro. + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPDS_SYR_PA_Ctrl_Read.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPDS_SYR_PA_Ctrl_Read.md new file mode 100644 index 0000000..431e3c3 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPDS_SYR_PA_Ctrl_Read.md @@ -0,0 +1,152 @@ +```pascal +// Block Type: FC +// Block Number: 1886 +// Original Network Languages: LAD, STL + +FUNCTION "mPDS_SYR_PA_Ctrl_Read" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + mAux : Int; + mPAmPDS_DevisON : Bool; + TempFillBit_2B1 : Bool; + TempFillBit_2B2 : Bool; + TempFillBit_2B3 : Bool; + TempFillBit_2B4 : Bool; + TempFillBit_2B5 : Bool; + TempFillBit_2B6 : Bool; + TempFillBit_2B7 : Bool; + TempFillBit_3B0 : Bool; + TempFillBit_3B1 : Bool; + TempFillBit_3B2 : Bool; + TempFillBit_3B3 : Bool; + TempFillBit_3B4 : Bool; + TempFillBit_3B5 : Bool; + TempFillBit_3B6 : Bool; + TempFillBit_3B7 : Bool; +END_VAR + +BEGIN + + // Network 1: In Block 01 (Original Language: LAD) + // In Block 01 + // COBRIX 2000 -> 1400 -> 578 + + // Network 1 did not produce printable SCL code. + + // Network 2: In Block 02 (Original Language: LAD) + // In Block 02 + // COBRIX 2000 -> 1430 -> 596 + + // Network 2 did not produce printable SCL code. + + // Network 3: In Block 03 (Original Language: LAD) + // In Block 03 + // COBRIX 2000 -> 1462 -> 5B6 + + // Network 3 did not produce printable SCL code. + + // Network 4: Davis ON (Original Language: LAD) + + "mPAmPDS_DevisON" := "mPDS_SYR_PA_Data"."Input_From_mPDS"."IN_Block01"; + + // Network 5: Davis ON (Original Language: LAD) + + // Network 5 did not produce printable SCL code. + + // Network 6: Communication Ok (Original Language: LAD) + + "mPDS_SYR_PA_Data"."Input_From_mPDS"."gPAmPDS_CommActive" := "mPDS_SYR_PA_Data"."Input_From_mPDS"."IN_Block01"; + + // Network 7: Brix (Original Language: LAD) + + // Network 7 did not produce printable SCL code. + + // Network 8: Temperature (Original Language: LAD) + + // Network 8 did not produce printable SCL code. + + // Network 9: Density (Original Language: LAD) + + // Network 9 did not produce printable SCL code. + + // Network 10: Drop Out (Original Language: LAD) + + "mPDS_SYR_PA_Data"."Input_From_mPDS"."gPAmPDS_TransDropOUT" := "mPDS_SYR_PA_Data"."Input_From_mPDS"."IN_Block01"; + + // Network 11: Limit (Original Language: LAD) + + "mPDS_SYR_PA_Data"."Input_From_mPDS"."gPAmPDS_AI1Low" := "mPDS_SYR_PA_Data"."Input_From_mPDS"."IN_Block01"; + + // Network 12: Limit (Original Language: LAD) + + "mPDS_SYR_PA_Data"."Input_From_mPDS"."gPAmPDS_AI2Low" := "mPDS_SYR_PA_Data"."Input_From_mPDS"."IN_Block01"; + + // Network 13: Error (Original Language: LAD) + + "mPDS_SYR_PA_Data"."Input_From_mPDS"."gPAmPDS_MemError" := "mPDS_SYR_PA_Data"."Input_From_mPDS"."IN_Block01"; + + // Network 14: Wrong Type (Original Language: LAD) + + "mPDS_SYR_PA_Data"."Input_From_mPDS"."gPAmPDS_WrongPTEType" := "mPDS_SYR_PA_Data"."Input_From_mPDS"."IN_Block01"; + + // Network 15: Comm Error (Original Language: LAD) + + "mPDS_SYR_PA_Data"."Input_From_mPDS"."gPAmPDS_CommErr" := "mPDS_SYR_PA_Data"."Input_From_mPDS"."IN_Block01" OR "M18751"; + + // Network 16: Data (Original Language: STL) + + // --- BEGIN STL Network 16 --- + + A "mPDS_SYR_PA_Data".Input_From_mPDS.gPAmPDS_CommErr + AN "mPDS_SYR_PA_Data".Input_From_mPDS.gPAmPDS_Error + = "TempFillBit_3B0" + A "TempFillBit_3B0" + JNB _004 + L "mPDS_SYR_PA_Data".mPACountError + L 1 + ADD_I + T "mPDS_SYR_PA_Data".mPACountError + _004: NOP_0 + A "TempFillBit_3B0" + JNB _005 + L 0 + T "Blender_Variables".gMeterSyrBrix + _005: NOP_0 + A "TempFillBit_3B0" + JNB _006 + L 0 + T "Blender_Variables".gMeterSyrDens + _006: NOP_0 + A "TempFillBit_3B0" + JNB _007 + L 0 + T "Blender_Variables".gMeterSyrTemp + _007: NOP_0 + + // --- END STL Network 16 --- + + // Network 17: Count Error (Original Language: LAD) + + IF "mPDS_SYR_PA_Data"."Input_From_mPDS"."gPAmPDS_CommErr" OR "gBlenderCIPMode" THEN + "mPDS_SYR_PA_Data"."mPACountError" := 0; + END_IF; + + // Network 18: Error (Original Language: LAD) + + "mPDS_SYR_PA_Data"."Input_From_mPDS"."gPAmPDS_Error" := "mPDS_SYR_PA_Data"."mPACountError" > 6; + + // Network 19: Fault (Original Language: LAD) + + IF "gBlenderRinseMode" AND "mPDS_SYR_PA_Data"."Input_From_mPDS"."gPAmPDS_Error" AND "gBlenderStableFlow" THEN + "gmPDS_SYR_PA_Error_Fault" := TRUE; + END_IF; + + // Network 20: Fault (Original Language: LAD) + + // Network 20 did not produce printable SCL code. + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPDS_SYR_PA_Ctrl_Trans.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPDS_SYR_PA_Ctrl_Trans.md new file mode 100644 index 0000000..c8aaad1 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPDS_SYR_PA_Ctrl_Trans.md @@ -0,0 +1,45 @@ +```pascal +// Block Type: FC +// Block Number: 1889 +// Original Network Languages: LAD + +FUNCTION "mPDS_SYR_PA_Ctrl_Trans" : Void +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR_TEMP + mPAmPDSContTr : Bool; + mPAmPDSParTr : Bool; + mPAmPDSAckTr : Bool; + mAux : Int; +END_VAR + + #_1 : Bool; // Auto-generated temporary +BEGIN + + // Network 1: Transfer (Original Language: LAD) + + "mPAmPDSContTr" := Eq("mPDS_SYR_PA_Data"."mPACountError", 0) OR Eq("mPDS_SYR_PA_Data"."mPACountError", 1); + + // Network 2: Ctrl Parameters (Original Language: LAD) + + IF "mPAmPDSParTr" THEN + mPDS_SYR_PA_Ctrl_Param(); + END_IF; + + // Network 3: ACK_Transfer (Original Language: LAD) + // ACK_Transfer + + IF "mPAmPDSAckTr" THEN + "mPDS_SYR_PA_Data"."Output_To_mPDS"."OUT_Block01" := INT#1; + END_IF; + + // Network 4: Out Block (Original Language: LAD) + // Out Block + // COBRIX 2000 -> 1400 -> 578 + + // Network 4 did not produce printable SCL code. + +END_FUNCTION + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPDS_SYR_PA_Ctrl_Write.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPDS_SYR_PA_Ctrl_Write.md new file mode 100644 index 0000000..e90273b --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPDS_SYR_PA_Ctrl_Write.md @@ -0,0 +1,63 @@ +```pascal +FUNCTION "mPDS_SYR_PA_Ctrl_Write" : Void +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : TASK2 +NAME : 'Name' +VERSION : 1.0 + VAR_TEMP + mWritePAmPDS_PV : Word; + mWritePAmPDS_Out : Bool; + ValBinTmr164 : Word; + ValBcdTmr164 : S5Time; + mWritePAmPDS_Reset : Bool; + mWritePAmPDSCounter : Word; + mdummy : Int; + mAux : Word; + ret : Int; + END_VAR + + VAR CONSTANT + "S5Time" : S5Time := S5T#2.5s; + END_VAR + + +BEGIN + + + #ValBcdTmr164 := S_PEXT (T_NO := "m_PAmPDS_SYR_RecipeTmr", + S := "gProdMeterTransferRecipe" OR "gBlenderCIPMode" OR "gProductionONS", + TV := #S5Time, + Q => "mPDS_SYR_PA_Data".Output_To_mPDS.gPAmPDSSetNewRec); + + "ONS_R"(Enable_ONS := "mPDS_SYR_PA_Data".Output_To_mPDS.gPAmPDSSetNewRec, + Aux_ONS := "mWritePAmPDS_SYR_RT", + ONS_R => #mWritePAmPDS_Reset ); + + IF ("mPDS_SYR_PA_Data".Output_To_mPDS.gPAmPDSSetNewRec AND NOT "mPDS_SYR_PA_Data".Input_From_mPDS.gPAmPDS_ReceiveOnly) AND NOT "mPDS_SYR_PA_Data".Input_From_mPDS.gPAmPDS_DavisON THEN + #mWritePAmPDS_PV := 3; + #mWritePAmPDSCounter := S_CUD(C_NO := "mWritePAmPDS_SYR_Counter", + CU := "Clock_0.5Hz" AND NOT #mWritePAmPDS_Out, + S := TRUE, + R := #mWritePAmPDS_Reset, + PV := #mWritePAmPDS_PV, + CV => "mPDS_SYR_PA_Data".mWritePAmPDS_Count, + Q => #mWritePAmPDS_Out); + + "mPDS_SYR_PA_Ctrl_Trans"(); + ELSE + #mWritePAmPDS_Out := FALSE; + // Clear_ParamTransfer(); + #mAux := 0; + #ret := FILL(BVAL := #mAux, + // mPDS_SYR_PA_Ctrl_Write :=#mdummy, + BLK => "mPDS_SYR_PA_Data".Output_To_mPDS.OUT_Block02); + // Clear_ParamTransfer(); + END_IF; + + + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPDS_SYR_PA_Data.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPDS_SYR_PA_Data.md new file mode 100644 index 0000000..dd34a5e --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPDS_SYR_PA_Data.md @@ -0,0 +1,23 @@ +```pascal +// Block Type: GlobalDB +// Block Number: 966 + +DATA_BLOCK "mPDS_SYR_PA_Data" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + Input_From_mPDS : "Struct"; + Output_To_mPDS : "Struct"; + mPACountError : Int := 0; + mWritePAmPDS_Count : Word; + ss : Word; + Input_From_mPDS1000 : "Struct"; + Output_To_mPDS1000 : "Struct"; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPPM303StartUpRamp.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPPM303StartUpRamp.md new file mode 100644 index 0000000..9f58501 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mPPM303StartUpRamp.md @@ -0,0 +1,17 @@ +```pascal +// Block Type: InstanceDB +// Block Number: 991 + +DATA_BLOCK "mPPM303StartUpRamp" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + +VAR + mStep : Real := 0.02870771; +END_VAR + +BEGIN + // Data Blocks have no executable code +END_DATA_BLOCK + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mmH2O_TO_Freq.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mmH2O_TO_Freq.md new file mode 100644 index 0000000..910a75b --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/source/mmH2O_TO_Freq.md @@ -0,0 +1,41 @@ +```pascal +FUNCTION "mmH2O_TO_Freq" : Real +{ S7_Optimized_Access := 'FALSE' } +AUTHOR : 'Author' +FAMILY : 'Function' +NAME : 'Name' +VERSION : 1.0 + VAR_INPUT + i_Head : Real; // Request Head in mmH2O + i_K_Pump : Real; // Freq TO Head Pump Factor + END_VAR + + VAR_TEMP + mCalc : Real; + END_VAR + + +BEGIN + + (* Calculates the pump frequency TO get an input head + + Freq = Pump Frequency [Hz] + K_mBar = Freq TO Head Pump Constant + + Head [ mBar] = Freq^2 * K_Pump *) + + // Pompa INOXPA Modello ______ Motore 4 Poli 960 RPM + + (* classic code: IF #i_K_Pump <> 0.0 THEN*) + IF #i_K_Pump <> REAL#0.0 THEN + #mCalc := SQRT ( #i_Head / #i_K_Pump ); + END_IF; + + (* classic code: #mmH2O_TO_Freq := LIMIT(MN:= 0, IN:= #mCalc, MX:= 100.0) ;*) + #mmH2O_TO_Freq := LIMIT(MN:= 0, IN:= #mCalc, MX:= REAL#100.0) ; + + +END_FUNCTION + + +``` diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/xref_calls_tree.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/xref_calls_tree.md new file mode 100644 index 0000000..48bb6ae --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/xref_calls_tree.md @@ -0,0 +1,214 @@ +# Árbol de Referencias Cruzadas de Llamadas + +(Profundidad máxima: 10) + + +## Puntos de Entrada (OBs) + + +### Iniciando desde: [`COMPLETE RESTART`](source/COMPLETE_RESTART.md) + +- [`COMPLETE RESTART`](source/COMPLETE_RESTART.md) + - [`BlenderCtrl_All Auto`](source/BlenderCtrl_All_Auto.md) + +### Iniciando desde: [`CYC_INT5`](source/CYC_INT5.md) + +- [`CYC_INT5`](source/CYC_INT5.md) + - [`BlenderPIDCtrl__Loop`](source/BlenderPIDCtrl__Loop.md) + - `BlenderPID__Main` + - [`BlenderRun_MeasFilSpeed`](source/BlenderRun_MeasFilSpeed.md) + - [`CO2Tracking`](source/CO2Tracking.md) + - `MFMAnalogValues` + - [`ProcedureBrixTracking`](source/ProcedureBrixTracking.md) + - `Signal Gen` + +### Iniciando desde: [`I/O_FLT1`](source/I_O_FLT1.md) + +- [`I/O_FLT1`](source/I_O_FLT1.md) + +### Iniciando desde: [`MOD_ERR`](source/MOD_ERR.md) + +- [`MOD_ERR`](source/MOD_ERR.md) + +### Iniciando desde: [`Programming error`](source/Programming_error.md) + +- [`Programming error`](source/Programming_error.md) + +### Iniciando desde: [`RACK_FLT`](source/RACK_FLT.md) + +- [`RACK_FLT`](source/RACK_FLT.md) + +### Iniciando desde: [`Time error interrupt`](source/Time_error_interrupt.md) + +- [`Time error interrupt`](source/Time_error_interrupt.md) + +### Iniciando desde: [`_CYCL_EXC`](source/_CYCL_EXC.md) + +- [`_CYCL_EXC`](source/_CYCL_EXC.md) + - [`BlenderCtrl__Main`](source/BlenderCtrl__Main.md) + - `BLKMOV [V1.1]` + - [`Baialage`](source/Baialage.md) + - [`BlenderCtrl_All Auto`](source/BlenderCtrl_All_Auto.md) + - [`BlenderCtrl_CIPModeInit`](source/BlenderCtrl_CIPModeInit.md) + - `BlenderPID_PIDResInteg` + - `BlenderCtrl_MFM Command` + - [`BlenderCtrl_MachineInit`](source/BlenderCtrl_MachineInit.md) + - [`BlenderCtrl_ManualActive`](source/BlenderCtrl_ManualActive.md) + - [`BlenderCtrl_ProdModeInit`](source/BlenderCtrl_ProdModeInit.md) + - `BlenderCtrl_InitErrors` + - `BlenderPID_PIDResInteg` + - [`BlenderCtrl_ResetSPWord`](source/BlenderCtrl_ResetSPWord.md) + - [`BlenderCtrl_UpdatePWord`](source/BlenderCtrl_UpdatePWord.md) + - [`BlenderRinse`](source/BlenderRinse.md) + - [`BlenderRinse_Done`](source/BlenderRinse_Done.md) + - `BlenderCtrl_InitErrors` + - `BlenderPID_PIDResInteg` + - [`BlenderRun__Control`](source/BlenderRun__Control.md) + - [`BlenderRun_ProdTime`](source/BlenderRun_ProdTime.md) + - `BlenderRun_SelectConstan` + - [`BlenderRun_Stopping`](source/BlenderRun_Stopping.md) + - [`CIPMain`](source/CIPMain.md) + - [`CIPLocal`](source/CIPLocal.md) + - `CIPLocal_ExecSimpleCIP` + - `CIPLocal_ExecStep` + - `CIPLocal_ProgStepUp` + - `LIMIT [V1.0]` + - `CIP_SimpleProgr_Init` + - [`CIPLocal_ProgInizialize`](source/CIPLocal_ProgInizialize.md) + - `CIPLocal_ProgStepDown` + - `CIPLocal_ProgStepUp` + - `LIMIT [V1.0]` + - `CIP_SimpleProgr_Init` + - `LIMIT [V1.0]` + - [`ONS_R`](source/ONS_R.md) + - [`CIPLocal_WaitEvent_Ctrl`](source/CIPLocal_WaitEvent_Ctrl.md) + - [`CIPRecipeManagement`](source/CIPRecipeManagement.md) + - [`CIPReportManager`](source/CIPReportManager.md) + - `BLKMOV [V1.1]` + - `S_COMP [V1.1]` + - [`CIPMain_Flood`](source/CIPMain_Flood.md) + - [`CIPMain_Total Drain`](source/CIPMain_Total_Drain.md) + - [`CPU_DP Global Diag`](source/CPU_DP_Global_Diag.md) + - [`CTRLCoolingSystem`](source/CTRLCoolingSystem.md) + - [`Clock Signal`](source/Clock_Signal.md) + - `TIME_TCK [V1.2]` + - [`FillerControl`](source/FillerControl.md) + - [`GetProdBrixCO2_Anal_Inpt`](source/GetProdBrixCO2_Anal_Inpt.md) + - [`ReadAnalogIn`](source/ReadAnalogIn.md) + - [`Input`](source/Input.md) + - [`Instrument_Scanner`](source/Instrument_Scanner.md) + - [`Interlocking_Panel_1`](source/Interlocking_Panel_1.md) + - `BLKMOV [V1.1]` + - [`Maselli_PA_Control`](source/Maselli_PA_Control.md) + - [`Maselli_PA_Ctrl_Read`](source/Maselli_PA_Ctrl_Read.md) + - [`Maselli_PA_Ctrl_Transfer`](source/Maselli_PA_Ctrl_Transfer.md) + - [`SEL_I`](source/SEL_I.md) + - [`Maselli_PA_Ctrl_Write`](source/Maselli_PA_Ctrl_Write.md) + - [`LIMIT_I`](source/LIMIT_I.md) + - [`SEL_I`](source/SEL_I.md) + - [`ModValveFault`](source/ModValveFault.md) + - [`Output`](source/Output.md) + - [`Pneumatic Valve Ctrl`](source/Pneumatic_Valve_Ctrl.md) + - [`Procedure`](source/Procedure.md) + - [`ProcedureFirstProduction`](source/ProcedureFirstProduction.md) + - [`Prod Tank PressCtrl`](source/Prod_Tank_PressCtrl.md) + - [`ProdReportManager`](source/ProdReportManager.md) + - [`ProductQuality`](source/ProductQuality.md) + - `ProductQuality_Messages` + - [`Profibus Network`](source/Profibus_Network.md) + - [`PumpsControl`](source/PumpsControl.md) + - `RecipeCalculation` + - [`RecipeManagement - Prod`](source/RecipeManagement___Prod.md) + - [`SLIM_Block`](source/SLIM_Block.md) + - [`Safeties`](source/Safeties.md) + - [`SelCheckBrixSource`](source/SelCheckBrixSource.md) + - [`LIMIT_R`](source/LIMIT_R.md) + - `MSE Slope` + - [`SEL_R`](source/SEL_R.md) + - `WaterDensity` + - [`SyrupRoomCtrl`](source/SyrupRoomCtrl.md) + - `SyrupRoomCtrl_UpdateVal` + - [`TankLevel`](source/TankLevel.md) + - [`VacuumCtrl`](source/VacuumCtrl.md) + - [`mPDS_PA_Control`](source/mPDS_PA_Control.md) + - [`mPDS_SYR_PA_Control`](source/mPDS_SYR_PA_Control.md) + - [`mPDS_SYR_PA_Ctrl_Read`](source/mPDS_SYR_PA_Ctrl_Read.md) + - [`mPDS_SYR_PA_Ctrl_Trans`](source/mPDS_SYR_PA_Ctrl_Trans.md) + - `mPDS_SYR_PA_Ctrl_Write` + - [`Co2_Counters`](source/Co2_Counters.md) + - [`GNS PLCdia MainRoutine`](source/GNS_PLCdia_MainRoutine.md) + - [`ITC MainRoutine`](source/ITC_MainRoutine.md) + - [`ITC Communic MainRoutine`](source/ITC_Communic_MainRoutine.md) + - [`ITC Communic CIPRoom`](source/ITC_Communic_CIPRoom.md) + - [`ISOonTCP_or_TCP_Protocol`](source/ISOonTCP_or_TCP_Protocol.md) + - [`ITC Communic Filler`](source/ITC_Communic_Filler.md) + - `GET [V1.3]` + - `GET_SFB` + - [`ISOonTCP_or_TCP_Protocol`](source/ISOonTCP_or_TCP_Protocol.md) + - `PUT [V1.3]` + - `PUT_SFB` + - [`ITC Communic ProdRoom`](source/ITC_Communic_ProdRoom.md) + - [`ISOonTCP_or_TCP_Protocol`](source/ISOonTCP_or_TCP_Protocol.md) + - [`ITC DataIn`](source/ITC_DataIn.md) + - [`ITC DataOut`](source/ITC_DataOut.md) + - [`ITC Exchange MainRoutine`](source/ITC_Exchange_MainRoutine.md) + - [`Key Read & Write`](source/Key_Read___Write.md) + - [`MessageScroll`](source/MessageScroll.md) + - [`ProcedureProdBrixRecovery`](source/ProcedureProdBrixRecovery.md) + +## Bloques (FC/FB) No Referenciados Directamente desde OBs + +- [`BlenderPIDCtrl_Monitor`](source/BlenderPIDCtrl_Monitor.md) +- [`BlenderPIDCtrl_ReadAnIn`](source/BlenderPIDCtrl_ReadAnIn.md) +- [`BlenderPIDCtrl_WriteAnOu`](source/BlenderPIDCtrl_WriteAnOu.md) +- [`Blocco_1`](source/Blocco_1.md) +- [`Block_compare`](source/Block_compare.md) +- [`Block_move`](source/Block_move.md) +- [`DELETE`](source/DELETE.md) +- [`EQ_STRNG`](source/EQ_STRNG.md) +- [`FW_DRand`](source/FW_DRand.md) +- [`GNS PLCdia Profibus`](source/GNS_PLCdia_Profibus.md) +- [`GNS PLCdia Profinet`](source/GNS_PLCdia_Profinet.md) +- [`Input_DigitalCtrl`](source/Input_DigitalCtrl.md) +- [`Input_DigitalScanner`](source/Input_DigitalScanner.md) +- [`Interlocking_Panel`](source/Interlocking_Panel.md) +- [`MFMAnalogValues_Totalize`](source/MFMAnalogValues_Totalize.md) +- [`Output_CO2InjPress`](source/Output_CO2InjPress.md) +- [`PIDControl`](source/PIDControl.md) +- [`PID_Filling_Head`](source/PID_Filling_Head.md) +- [`PID_RMM301`](source/PID_RMM301.md) +- [`PID_RMM303`](source/PID_RMM303.md) +- [`PID_RMM304`](source/PID_RMM304.md) +- [`PID_RMP302`](source/PID_RMP302.md) +- [`PID_RVM301`](source/PID_RVM301.md) +- [`PID_RVM319_PRD`](source/PID_RVM319_PRD.md) +- [`PID_RVN302`](source/PID_RVN302.md) +- [`PID_RVP303`](source/PID_RVP303.md) +- [`PID_RVS318`](source/PID_RVS318.md) +- [`PPM303_VFC_Ctrl`](source/PPM303_VFC_Ctrl.md) +- [`PPM305_VFC_Ctrl`](source/PPM305_VFC_Ctrl.md) +- [`PPM307_VFC_Ctrl`](source/PPM307_VFC_Ctrl.md) +- [`PPN301_VFC_Ctrl`](source/PPN301_VFC_Ctrl.md) +- [`PPP302_VFC_Ctrl`](source/PPP302_VFC_Ctrl.md) +- [`Pneumatic Valve Fault`](source/Pneumatic_Valve_Fault.md) +- [`ProcedureBlendFill StartUp`](source/ProcedureBlendFill_StartUp.md) +- [`ProcedureCarboWaterLine`](source/ProcedureCarboWaterLine.md) +- [`ProcedureDeaireator StartUp`](source/ProcedureDeaireator_StartUp.md) +- [`ProcedureProdTankDrain`](source/ProcedureProdTankDrain.md) +- [`ProcedureProdTankRunOut`](source/ProcedureProdTankRunOut.md) +- [`ProcedureSyrup RunOut`](source/ProcedureSyrup_RunOut.md) +- [`ProcedureSyrupLineMFMPrep`](source/ProcedureSyrupLineMFMPrep.md) +- [`ProcedureSyrupMFMStartUp`](source/ProcedureSyrupMFMStartUp.md) +- [`ProductPipeDrain`](source/ProductPipeDrain.md) +- [`ProductPipeRunOut`](source/ProductPipeRunOut.md) +- [`QCO Monitor`](source/QCO_Monitor.md) +- [`REPLACE_Mod`](source/REPLACE_Mod.md) +- [`SubCarb`](source/SubCarb.md) +- [`SyrBrix Autocorrection`](source/SyrBrix_Autocorrection.md) +- [`Syrup Rinse QCO_Seq`](source/Syrup_Rinse_QCO_Seq.md) +- [`System_Run_Out`](source/System_Run_Out.md) +- [`WritePeripheral`](source/WritePeripheral.md) +- [`mPDS_PA_Ctrl_Parameters`](source/mPDS_PA_Ctrl_Parameters.md) +- [`mPDS_PA_Ctrl_Read`](source/mPDS_PA_Ctrl_Read.md) +- [`mPDS_PA_Ctrl_Transfer`](source/mPDS_PA_Ctrl_Transfer.md) +- [`mPDS_SYR_PA_Ctrl_Param`](source/mPDS_SYR_PA_Ctrl_Param.md) diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/xref_db_usage_summary.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/xref_db_usage_summary.md new file mode 100644 index 0000000..4649612 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/xref_db_usage_summary.md @@ -0,0 +1,586 @@ +# Resumen de Uso de DB Globales por Bloque + + +## DB: `Blender_Constants` + +Utilizado por: + +- `BlenderPIDCtrl_ReadAnIn` +- `BlenderPIDCtrl_WriteAnOu` +- `BlenderRun_MeasFilSpeed` +- `BlenderRun__Control` +- `GetProdBrixCO2_Anal_Inpt` +- `Input` +- `Output` +- `PID_RVM301` +- `PID_RVS318` +- `ProcedureSyrupLineMFMPrep` +- `Prod Tank PressCtrl` +- `SelCheckBrixSource` +- `TankLevel` +- `VacuumCtrl` +- `_CYCL_EXC` + +## DB: `Blender_Variables` + +Utilizado por: + +- `Baialage` +- `BlenderPIDCtrl_Monitor` +- `BlenderRun_MeasFilSpeed` +- `BlenderRun__Control` +- `CO2Tracking` +- `Deaireator StartUp_Seq` +- `FillerControl` +- `GetProdBrixCO2_Anal_Inpt` +- `Input` +- `Maselli_PA_Ctrl_Read` +- `Output` +- `Output_CO2InjPress` +- `PID_RMM301` +- `PID_RMM303` +- `PID_RMM304` +- `PID_RMP302` +- `PID_RVM319_PRD` +- `PID_RVN302` +- `PID_RVP303` +- `Pneumatic Valve Ctrl` +- ... (y 13 más) + +## DB: `Blender_Variables_Pers` + +Utilizado por: + +- `Baialage` +- `BlenderCtrl_MachineInit` +- `BlenderCtrl__Main` +- `BlenderRinse` +- `BlenderRun_ProdTime` +- `BlenderRun_Stopping` +- `BlenderRun__Control` +- `CO2Tracking` +- `CYC_INT5` +- `Deaireator StartUp_Seq` +- `Input` +- `MFMAnalogValues_Totalize` +- `Output` +- `Output_CO2InjPress` +- `PID_Filling_Head` +- `PID_RMM301` +- `PID_RMM303` +- `PID_RMM304` +- `PID_RMP302` +- `PID_RVM319_PRD` +- ... (y 24 más) + +## DB: `CIPReportDB` + +Utilizado por: + +- `CIPLocal` +- `CIPReportManager` + +## DB: `CIP_Program_Variables` + +Utilizado por: + +- `CIPLocal` +- `CIPLocal_ProgInizialize` +- `CIPLocal_WaitEvent_Ctrl` +- `CIPMain` +- `CIPMain_Total Drain` +- `CIPReportManager` +- `FillerControl` +- `Input_DigitalCtrl` +- `Interlocking_Panel` +- `PID_RMM301` +- `PID_RVP303` +- `PID_RVS318` +- `Pneumatic Valve Ctrl` +- `Procedure` +- `PumpsControl` +- `TankLevel` +- `mPDS_PA_Control` + +## DB: `DB100` + +Utilizado por: + +- `QCO Monitor` + +## DB: `DB1001` + +Utilizado por: + +- `RecipeManagement - Prod` + +## DB: `DB1003` + +Utilizado por: + +- `CIPRecipeManagement` + +## DB: `DB900` + +Utilizado por: + +- `ITC Communic CIPRoom` + +## DB: `DB963` + +Utilizado por: + +- `CIPRecipeManagement` + +## DB: `DB972` + +Utilizado por: + +- `BlenderPIDCtrl_ReadAnIn` +- `Input` + +## DB: `Filler_Head_Variables` + +Utilizado por: + +- `Baialage` +- `BlendFill StartUp_Seq` +- `BlenderCtrl__Main` +- `BlenderRun_MeasFilSpeed` +- `Input` +- `PID_Filling_Head` + +## DB: `GLOBAL_DIAG_DB` + +Utilizado por: + +- `Profibus Network` + +## DB: `GNS PLCdia ProfibusData` + +Utilizado por: + +- `GNS PLCdia Profibus` + +## DB: `GNS PLCdia ProfinetData` + +Utilizado por: + +- `GNS PLCdia Profinet` + +## DB: `HMI CPU_DP Diag` + +Utilizado por: + +- `CPU_DP Global Diag` +- `GNS PLCdia Profibus` + +## DB: `HMI Key User` + +Utilizado por: + +- `Key Read & Write` + +## DB: `HMI_Alarms` + +Utilizado por: + +- `BlenderCtrl_ManualActive` +- `BlenderPIDCtrl_WriteAnOu` +- `BlenderRinse` +- `BlenderRun__Control` +- `CIPLocal` +- `CIPMain` +- `CO2Tracking` +- `CTRLCoolingSystem` +- `FillerControl` +- `GNS PLCdia MainRoutine` +- `Input` +- `Output` +- `PPM303_VFC_Ctrl` +- `PPM305_VFC_Ctrl` +- `PPM307_VFC_Ctrl` +- `PPN301_VFC_Ctrl` +- `PPP302_VFC_Ctrl` +- `ProcedureBlendFill StartUp` +- `ProcedureBrixTracking` +- `ProcedureCarboWaterLine` +- ... (y 19 más) + +## DB: `HMI_Blender_Parameters` + +Utilizado por: + +- `Baialage` +- `BlendFill StartUp_Seq` +- `BlenderCtrl_MachineInit` +- `BlenderCtrl__Main` +- `BlenderPIDCtrl_ReadAnIn` +- `BlenderPIDCtrl_WriteAnOu` +- `BlenderPIDCtrl__Loop` +- `BlenderPID_NextRecipe` +- `BlenderRinse` +- `BlenderRun_MeasFilSpeed` +- `BlenderRun__Control` +- `CIPLocal` +- `CIPLocal_WaitEvent_Ctrl` +- `CIPMain` +- `CIPMain_Flood` +- `CIPReportManager` +- `COMPLETE RESTART` +- `CTRLCoolingSystem` +- `CarboWaterLine_Seq` +- `Deaireator StartUp_Seq` +- ... (y 50 más) + +## DB: `HMI_Device` + +Utilizado por: + +- `BlendFill StartUp_Seq` +- `BlenderCtrl_MachineInit` +- `BlenderPIDCtrl_WriteAnOu` +- `BlenderRun_MeasFilSpeed` +- `BlenderRun__Control` +- `CIPLocal` +- `FillerControl` +- `Input` +- `Input_DigitalCtrl` +- `Interlocking_Panel` +- `Output` +- `Output_CO2InjPress` +- `PID_Filling_Head` +- `PID_RVS318` +- `PPM303_VFC_Ctrl` +- `PPM305_VFC_Ctrl` +- `PPM307_VFC_Ctrl` +- `PPN301_VFC_Ctrl` +- `PPP302_VFC_Ctrl` +- `Pneumatic Valve Ctrl` +- ... (y 10 más) + +## DB: `HMI_Digital` + +Utilizado por: + +- `BlenderCtrl_MachineInit` +- `BlenderCtrl__Main` +- `CIPLocal` +- `CIPMain_Flood` +- `Deaireator StartUp_Seq` +- `FillerControl` +- `Input` +- `Input_DigitalCtrl` +- `PID_RVS318` +- `Pneumatic Valve Ctrl` +- `Pneumatic Valve Fault` +- `ProcedureCarboWaterLine` +- `ProcedureDeaireator StartUp` +- `ProcedureSyrupLineMFMPrep` +- `ProcedureSyrupMFMStartUp` +- `Prod Tank Drain_Seq` +- `Prod Tank RunOut_Seq` +- `ProductPipeRunOut_Seq` +- `PumpsControl` +- `Safeties` +- ... (y 4 más) + +## DB: `HMI_IO_Showing` + +Utilizado por: + +- `ITC Communic ProdRoom` +- `Interlocking_Panel` +- `Interlocking_Panel_1` + +## DB: `HMI_Instrument` + +Utilizado por: + +- `Baialage` +- `BlenderCtrl_MachineInit` +- `BlenderPIDCtrl_ReadAnIn` +- `BlenderPIDCtrl_WriteAnOu` +- `BlenderRun_MeasFilSpeed` +- `CIPLocal_WaitEvent_Ctrl` +- `CIPMain_Flood` +- `CIPReportManager` +- `CO2Tracking` +- `CTRLCoolingSystem` +- `GetProdBrixCO2_Anal_Inpt` +- `Input` +- `Output` +- `Output_CO2InjPress` +- `PID_Filling_Head` +- `PID_RVM319_PRD` +- `PID_RVN302` +- `PID_RVP303` +- `ProcedureBrixTracking` +- `ProcedureProdBrixRecovery` +- ... (y 8 más) + +## DB: `HMI_Local_CIP_Variables` + +Utilizado por: + +- `CIPLocal` +- `CIPRecipeManagement` +- `CIPReportManager` + +## DB: `HMI_PID` + +Utilizado por: + +- `BlendFill StartUp_Seq` +- `BlenderCtrl_MachineInit` +- `BlenderCtrl__Main` +- `BlenderPIDCtrl_Monitor` +- `BlenderPIDCtrl_WriteAnOu` +- `BlenderPIDCtrl__Loop` +- `BlenderRun_MeasFilSpeed` +- `BlenderRun_Stopping` +- `BlenderRun__Control` +- `CIPMain` +- `FillerControl` +- `Input` +- `ModValveFault` +- `Output` +- `Output_CO2InjPress` +- `PID_Filling_Head` +- `PID_RMM301` +- `PID_RMM303` +- `PID_RMM304` +- `PID_RMP302` +- ... (y 13 más) + +## DB: `HMI_Recipe_Edit` + +Utilizado por: + +- `ProcedureFirstProduction` +- `RecipeManagement - Prod` + +## DB: `HMI_Refrige_IO_Showing` + +Utilizado por: + +- `ITC Communic ProdRoom` +- `Interlocking_Panel_1` + +## DB: `HMI_Service` + +Utilizado por: + +- `BlenderPIDCtrl_Monitor` +- `COMPLETE RESTART` +- `Input` +- `Output_CO2InjPress` +- `PID_RMM303` +- `Pneumatic Valve Ctrl` + +## DB: `HMI_Variables_Cmd` + +Utilizado por: + +- `Baialage` +- `BlenderCtrl_MachineInit` +- `BlenderCtrl__Main` +- `BlenderPID_NextRecipe` +- `BlenderRinse` +- `CIPLocal` +- `CIPMain_Flood` +- `CIPMain_Total Drain` +- `CIPReportManager` +- `CO2Tracking` +- `FillerControl` +- `Input` +- `Maselli_PA_Ctrl_Write` +- `ModValveFault` +- `Output` +- `PID_RVM319_PRD` +- `PID_RVS318` +- `ProcedureBrixTracking` +- `ProcedureDeaireator StartUp` +- `ProcedureProdBrixRecovery` +- ... (y 11 más) + +## DB: `HMI_Variables_Status` + +Utilizado por: + +- `Baialage` +- `BlenderCtrl_ProdModeInit` +- `BlenderCtrl__Main` +- `BlenderPIDCtrl_WriteAnOu` +- `BlenderRinse` +- `BlenderRun_MeasFilSpeed` +- `BlenderRun_ProdTime` +- `BlenderRun__Control` +- `CIPMain` +- `CIPMain_Flood` +- `CIPMain_Total Drain` +- `CO2Tracking` +- `CYC_INT5` +- `Input` +- `Input_DigitalCtrl` +- `Maselli_PA_Control` +- `Output` +- `PID_Filling_Head` +- `PID_RVM319_PRD` +- `PID_RVN302` +- ... (y 26 más) + +## DB: `ITC Communic MainData` + +Utilizado por: + +- `ITC Communic ProdRoom` + +## DB: `Interlocking_Variables` + +Utilizado por: + +- `BlendFill StartUp_Seq` +- `CIPMain_Flood` +- `FillerControl` +- `ITC Communic Filler` +- `Input` +- `Interlocking_Panel` +- `Interlocking_Panel_1` +- `Output` +- `Pneumatic Valve Ctrl` +- `QCO Monitor` + +## DB: `Machine_Co2_Cons` + +Utilizado por: + +- `Co2_Counters` + +## DB: `Maselli_PA_Data` + +Utilizado por: + +- `Maselli_PA_Control` +- `Maselli_PA_Ctrl_Read` +- `Maselli_PA_Ctrl_Write` + +## DB: `PID_Variables` + +Utilizado por: + +- `BlenderRun__Control` +- `PID_RMM301` +- `PID_RVM301` +- `PID_RVM319_PRD` +- `Pneumatic Valve Ctrl` + +## DB: `Procedure_Variables` + +Utilizado por: + +- `Baialage` +- `BlendFill StartUp_Seq` +- `BlenderCtrl__Main` +- `BlenderPIDCtrl_ReadAnIn` +- `BlenderRinse` +- `BlenderRun_MeasFilSpeed` +- `BlenderRun_ProdTime` +- `BlenderRun_Stopping` +- `BlenderRun__Control` +- `CIPLocal` +- `CIPMain` +- `CIPMain_Flood` +- `CO2Tracking` +- `CarboWaterLine_Seq` +- `Co2_Counters` +- `Deaireator StartUp_Seq` +- `FillerControl` +- `Input` +- `Input_DigitalCtrl` +- `MFMAnalogValues_Totalize` +- ... (y 45 más) + +## DB: `ProdReportDB` + +Utilizado por: + +- `ProdReportManager` + +## DB: `Profibus_Variables` + +Utilizado por: + +- `Deaireator StartUp_Seq` +- `MFMAnalogValues_Totalize` +- `ProcedureProdTankRunOut` +- `ProcedureSyrupLineMFMPrep` +- `ProductPipeRunOut` +- `SelCheckBrixSource` +- `SyrBrix Autocorrection` + +## DB: `QCO Timing DB` + +Utilizado por: + +- `QCO Monitor` + +## DB: `ReadAnalogIn_Fault_DB` + +Utilizado por: + +- `BlenderCtrl_MachineInit` + +## DB: `SLIM_Variables` + +Utilizado por: + +- `BlenderRun_ProdTime` +- `CYC_INT5` + +## DB: `System_RunOut_Variables` + +Utilizado por: + +- `BlendFill StartUp_Seq` +- `BlenderCtrl__Main` +- `BlenderPID_NextRecipe` +- `BlenderRinse` +- `BlenderRun__Control` +- `FillerControl` +- `Input` +- `Interlocking_Panel` +- `Output` +- `PID_Filling_Head` +- `PID_RMP302` +- `PID_RVP303` +- `Pneumatic Valve Ctrl` +- `ProcedureCarboWaterLine` +- `ProcedureFirstProduction` +- `ProcedureProdTankDrain` +- `ProcedureProdTankRunOut` +- `ProcedureSyrup RunOut` +- `ProcedureSyrupLineMFMPrep` +- `ProcedureSyrupMFMStartUp` +- ... (y 11 más) + +## DB: `mPDS_PA_Data` + +Utilizado por: + +- `mPDS_PA_Control` +- `mPDS_PA_Ctrl_Parameters` +- `mPDS_PA_Ctrl_Read` +- `mPDS_PA_Ctrl_Transfer` + +## DB: `mPDS_SYR_PA_Data` + +Utilizado por: + +- `SelCheckBrixSource` +- `SyrBrix Autocorrection` +- `mPDS_SYR_PA_Control` +- `mPDS_SYR_PA_Ctrl_Param` +- `mPDS_SYR_PA_Ctrl_Read` +- `mPDS_SYR_PA_Ctrl_Trans` + diff --git a/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/xref_plc_tags_summary.md b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/xref_plc_tags_summary.md new file mode 100644 index 0000000..720cbb8 --- /dev/null +++ b/04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Source/xref_plc_tags_summary.md @@ -0,0 +1,7425 @@ +# Resumen de Uso de PLC Tags Globales por Bloque + + +## PLC Tag: `"AI_CIP_CIP_Total_Time"` + +Utilizado por: + +- `ITC Communic ProdRoom` + +## PLC Tag: `"AI_CIP_SetPoint_Temeperature"` + +Utilizado por: + +- `ITC Communic ProdRoom` + +## PLC Tag: `"AI_SYRUP_Cip_Phase"` + +Utilizado por: + +- `ITC Communic ProdRoom` + +## PLC Tag: `"AI_SYRUP_Cip_RemaningTime"` + +Utilizado por: + +- `ITC Communic ProdRoom` + +## PLC Tag: `"AI_SYRUP_Cip_TotalTime"` + +Utilizado por: + +- `ITC Communic ProdRoom` + +## PLC Tag: `"AUX FALSE"` + +Utilizado por: + +- `Baialage` +- `BlendFill StartUp_Seq` +- `BlenderCtrl_MachineInit` +- `BlenderCtrl__Main` +- `BlenderPIDCtrl_ReadAnIn` +- `BlenderRun_MeasFilSpeed` +- `BlenderRun__Control` +- `CIP FlipFlop` +- `CO2Tracking` +- `CarboWaterLine_Seq` +- `Deaireator StartUp_Seq` +- `GNS PLCdia MainRoutine` +- `ITC Communic CIPRoom` +- `ITC Communic ProdRoom` +- `Input` +- `Input_DigitalCtrl` +- `MFMAnalogValues_Totalize` +- `Output` +- `PID_Filling_Head` +- `PID_RMM301` +- ... (y 29 más) + +## PLC Tag: `"AUX TRUE"` + +Utilizado por: + +- `BlendFill StartUp_Seq` +- `BlenderCtrl_MachineInit` +- `BlenderCtrl__Main` +- `BlenderPIDCtrl_ReadAnIn` +- `BlenderPIDCtrl__Loop` +- `BlenderRun_MeasFilSpeed` +- `CIPLocal_ProgInizialize` +- `CPU_DP Global Diag` +- `CarboWaterLine_Seq` +- `Deaireator StartUp_Seq` +- `ITC Communic ProdRoom` +- `Input` +- `Interlocking_Panel` +- `Interlocking_Panel_1` +- `Key Read & Write` +- `Output` +- `PID_Filling_Head` +- `PID_RMM301` +- `PID_RMM303` +- `PID_RMM304` +- ... (y 25 más) + +## PLC Tag: `"AnalyzerDelay"` + +Utilizado por: + +- `Safeties` + +## PLC Tag: `"BlenderLevelStopSByFiller"` + +Utilizado por: + +- `TankLevel` + +## PLC Tag: `"CIPRepComment"` + +Utilizado por: + +- `CIPReportManager` + +## PLC Tag: `"CIPRepFaultPresent"` + +Utilizado por: + +- `CIPReportManager` + +## PLC Tag: `"CIPRepStarted"` + +Utilizado por: + +- `CIPReportManager` + +## PLC Tag: `"CLK_0.05S_SUPPORT"` + +Utilizado por: + +- `Clock Signal` + +## PLC Tag: `"CLK_0.1S"` + +Utilizado por: + +- `Clock Signal` + +## PLC Tag: `"CLK_0.1S_SUPPORT"` + +Utilizado por: + +- `Clock Signal` + +## PLC Tag: `"CLK_0.25S_SUPPORT"` + +Utilizado por: + +- `Clock Signal` + +## PLC Tag: `"CLK_0.2S"` + +Utilizado por: + +- `Clock Signal` + +## PLC Tag: `"CLK_0.4S_SUPPORT"` + +Utilizado por: + +- `Clock Signal` + +## PLC Tag: `"CLK_0.5S"` + +Utilizado por: + +- `Clock Signal` + +## PLC Tag: `"CLK_0.5S_SUPPORT"` + +Utilizado por: + +- `Clock Signal` + +## PLC Tag: `"CLK_0.8S"` + +Utilizado por: + +- `Clock Signal` + +## PLC Tag: `"CLK_0.8S_SUPPORT"` + +Utilizado por: + +- `Clock Signal` + +## PLC Tag: `"CLK_1.0S"` + +Utilizado por: + +- `BlenderRun_ProdTime` +- `CIPReportManager` +- `Clock Signal` +- `Pneumatic Valve Ctrl` +- `ProdReportManager` + +## PLC Tag: `"CLK_1.0S_SUPPORT"` + +Utilizado por: + +- `Clock Signal` + +## PLC Tag: `"CLK_1.6S"` + +Utilizado por: + +- `Clock Signal` + +## PLC Tag: `"CLK_2.0S"` + +Utilizado por: + +- `Clock Signal` + +## PLC Tag: `"CO2_Counter_Tot"` + +Utilizado por: + +- `MFMAnalogValues_Totalize` + +## PLC Tag: `"Clock_0.5Hz"` + +Utilizado por: + +- `Clock Signal` + +## PLC Tag: `"Clock_0.625Hz"` + +Utilizado por: + +- `Clock Signal` + +## PLC Tag: `"Clock_1.25Hz"` + +Utilizado por: + +- `Clock Signal` + +## PLC Tag: `"Clock_10Hz"` + +Utilizado por: + +- `Clock Signal` + +## PLC Tag: `"Clock_1Hz"` + +Utilizado por: + +- `CIPLocal` +- `Clock Signal` +- `Output` + +## PLC Tag: `"Clock_2.5Hz"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"Clock_2Hz"` + +Utilizado por: + +- `Clock Signal` +- `Output` + +## PLC Tag: `"Clock_5Hz"` + +Utilizado por: + +- `Clock Signal` + +## PLC Tag: `"Co2TrackingLatch"` + +Utilizado por: + +- `CO2Tracking` + +## PLC Tag: `"Co2TrackingReq"` + +Utilizado por: + +- `CO2Tracking` + +## PLC Tag: `"ColdRinseON"` + +Utilizado por: + +- `BlenderRinse` +- `Co2_Counters` + +## PLC Tag: `"DI_AVM346_Close"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"DI_AVM346_Open"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"DI_AVM362_Close"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"DI_AVM362_Open"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"DI_Air_InletPress_OK"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"DI_AlarmReset"` + +Utilizado por: + +- `Input` +- `PPM307_VFC_Ctrl` + +## PLC Tag: `"DI_AmmoniaHighLev_Water"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"DI_Ammonia_CompressorReady"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"DI_Ammonia_High_Lev_Prod"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"DI_AuxVoltage_On"` + +Utilizado por: + +- `Input` +- `Output` + +## PLC Tag: `"DI_CIP_CIP_Enable"` + +Utilizado por: + +- `CIPMain` +- `Input` +- `Interlocking_Panel_1` + +## PLC Tag: `"DI_CIP_CIP_Rinse"` + +Utilizado por: + +- `Input` +- `Interlocking_Panel_1` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"DI_CIP_ChemicalProd"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"DI_CIP_CleaningCompleted"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"DI_CIP_CleaningFault"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"DI_CIP_Drain"` + +Utilizado por: + +- `Interlocking_Panel_1` + +## PLC Tag: `"DI_CIP_End"` + +Utilizado por: + +- `CIPMain` +- `Interlocking_Panel_1` + +## PLC Tag: `"DI_CIP_Fault"` + +Utilizado por: + +- `CIPMain` + +## PLC Tag: `"DI_CIP_FreeSodaTank"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"DI_CIP_HotWaterSending"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"DI_CIP_TankFilling"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"DI_DeairVacuumOk"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"DI_Emergency_Pilz_On"` + +Utilizado por: + +- `Input` +- `Output` + +## PLC Tag: `"DI_Emergency_Pressed"` + +Utilizado por: + +- `Input` +- `Output` + +## PLC Tag: `"DI_FSS301"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"DI_Flr1_CIP_DrainComplete"` + +Utilizado por: + +- `Input` +- `Interlocking_Panel_1` + +## PLC Tag: `"DI_Flr1_PROD_Request"` + +Utilizado por: + +- `Interlocking_Panel_1` +- `Safeties` + +## PLC Tag: `"DI_Flr1_PROD_ok"` + +Utilizado por: + +- `BlenderRun_MeasFilSpeed` +- `Interlocking_Panel_1` + +## PLC Tag: `"DI_Flr1_WaterRequest"` + +Utilizado por: + +- `Interlocking_Panel_1` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"DI_Flr2_PROD_Request"` + +Utilizado por: + +- `Input` +- `Safeties` + +## PLC Tag: `"DI_Flr_CIP_RecoverReq"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"DI_Flr_EndProdLastBottleFilled"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"DI_HVM302_Sensor"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"DI_HVP301_Sensor"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"DI_LSM302L"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"DI_LSN301L"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"DI_Log_Sidel"` + +Utilizado por: + +- `Key Read & Write` + +## PLC Tag: `"DI_MaxTempAlarm"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"DI_Min_Deair2_Level"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"DI_Min_Syrup_Level"` + +Utilizado por: + +- `Input` +- `ProcedureSyrupLineMFMPrep` + +## PLC Tag: `"DI_PB_HornReset"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"DI_PB_Machine_Start"` + +Utilizado por: + +- `BlenderRun__Control` + +## PLC Tag: `"DI_PPM303_Ovrld"` + +Utilizado por: + +- `PumpsControl` + +## PLC Tag: `"DI_PPM305_Ovrld"` + +Utilizado por: + +- `PumpsControl` + +## PLC Tag: `"DI_PPM306_Contactor"` + +Utilizado por: + +- `PumpsControl` + +## PLC Tag: `"DI_PPM306_Ovrld"` + +Utilizado por: + +- `PumpsControl` + +## PLC Tag: `"DI_PPN301_Ovrld"` + +Utilizado por: + +- `PumpsControl` + +## PLC Tag: `"DI_PPP302_Ovrld"` + +Utilizado por: + +- `PumpsControl` + +## PLC Tag: `"DI_Product_Analyzer_Prod_NO_OK"` + +Utilizado por: + +- `Safeties` + +## PLC Tag: `"DI_RMM301_Closed"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"DI_RMM303_Closed"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"DI_RMM304_Closed"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"DI_RMP302_Closed"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"DI_SYRUP_Runout"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"DI_SYR_COUNTER_LT"` + +Utilizado por: + +- `ITC Communic ProdRoom` + +## PLC Tag: `"DI_SYR_TANK_LEVEL"` + +Utilizado por: + +- `ITC Communic ProdRoom` + +## PLC Tag: `"DI_SyrRoom_Cip_Mode"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"DI_SyrRoom_Pump_Ready"` + +Utilizado por: + +- `Input` +- `Interlocking_Panel_1` + +## PLC Tag: `"DI_SyrRoom_SyrPump_Running"` + +Utilizado por: + +- `Input` +- `Interlocking_Panel_1` + +## PLC Tag: `"DI_SyrRoom_WatPumpReady"` + +Utilizado por: + +- `Interlocking_Panel_1` +- `PumpsControl` + +## PLC Tag: `"DI_UPSAlarm"` + +Utilizado por: + +- `Safeties` + +## PLC Tag: `"DI_UPSBatteryReady"` + +Utilizado por: + +- `Safeties` + +## PLC Tag: `"DI_UPSsupply"` + +Utilizado por: + +- `Input` +- `Safeties` + +## PLC Tag: `"DI_UV_Lamp_Ready"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"DI_WaterPipeCIP_Sensor"` + +Utilizado por: + +- `Interlocking_Panel` +- `Output` + +## PLC Tag: `"DI_Water_Pump2_Contactor"` + +Utilizado por: + +- `PumpsControl` + +## PLC Tag: `"DI_Water_Pump2_Ovrld"` + +Utilizado por: + +- `PumpsControl` + +## PLC Tag: `"DO_ Flr_CIPRinseSending"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVM311"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVM312_Deair_Reflux"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVM313"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVM315"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVM317"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVM321"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVM322"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVM323"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVM326"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVM327"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVM328"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVM329"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVM330"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVM339"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVM340"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVM341"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVM342"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVM345"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVM346"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVM353"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVM362"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVM363"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVM369"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVM380"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVM381"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVM382"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVM396"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVN314"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVN318"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVN325"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVN327"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVN328"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVN329"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVN347"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVN348"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVN349"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVN350"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVN373"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVN374"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVN377"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVN378"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVN390"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVP316"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVP317_1"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVP324"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVP344"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVP361"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVP363"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVP391"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVS331"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVS332"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVS333"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVS334"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVS335"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVS336"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVS337"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_AVS338"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_Aux24DC"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_Blu_Lamp"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_BoosterPump_SubCarb"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_CIP_CleaningFault"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_CIP_DrainCompleted"` + +Utilizado por: + +- `Interlocking_Panel_1` +- `Output` + +## PLC Tag: `"DO_CIP_Fault"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_CIP_HotWaterReq"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_CIP_Mode_En"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_CIP_RdyChmcl"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_CIP_RecoverCompleted"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_CIP_SendSodaReq"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_CIP_SolutionReturn"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_CIP_WaterPipe_Ready"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_CO2_Counter_Pulse"` + +Utilizado por: + +- `MFMAnalogValues_Totalize` + +## PLC Tag: `"DO_CtrlCircuitRun"` + +Utilizado por: + +- `Input` +- `Output` + +## PLC Tag: `"DO_EV03_SyrupLvlCtrl"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_EV04_SyrupFillUp"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_EV100_WaterInlet"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_EV102_Syrup And CIP Inlet"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_EV103_WaterInterception"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_EV105_WaterBypass"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_EV1_SubCarb"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_EV2_SubCarb"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_EV3_SubCarb"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_EV4_SubCarb"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_EV66_FillerRinseWater"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_EV67_SyrupLineDrain"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_EV68_FillerRinseWater"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_EV71_FiRinseSprayBall"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_EV71_FillerPrPipeDrai"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_EV72_FlrRinseTankDrai"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_FillerNextRecipe"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_Flr1_CIPMode"` + +Utilizado por: + +- `Interlocking_Panel_1` +- `Output` + +## PLC Tag: `"DO_Flr1_CIP_CleaningEnd"` + +Utilizado por: + +- `Interlocking_Panel_1` +- `Output` + +## PLC Tag: `"DO_Flr1_CIP_DrainRequest"` + +Utilizado por: + +- `Interlocking_Panel_1` +- `Output` + +## PLC Tag: `"DO_Flr1_Fault"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_Flr1_OpenBottleblock"` + +Utilizado por: + +- `Interlocking_Panel_1` +- `Output` + +## PLC Tag: `"DO_Flr1_PROD_Available"` + +Utilizado por: + +- `Interlocking_Panel_1` +- `Output` + +## PLC Tag: `"DO_Flr1_Productionmode"` + +Utilizado por: + +- `Interlocking_Panel_1` +- `Output` + +## PLC Tag: `"DO_Flr1_RinseMode"` + +Utilizado por: + +- `Interlocking_Panel_1` +- `Output` + +## PLC Tag: `"DO_Flr1_Spare0"` + +Utilizado por: + +- `Interlocking_Panel_1` + +## PLC Tag: `"DO_Flr2_Fault"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_FlrProdMode"` + +Utilizado por: + +- `Interlocking_Panel` + +## PLC Tag: `"DO_Flr_BottleStop"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_Flr_CIP_CleaningFault"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_Flr_CIP_ProdSending"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_Flr_CIP_RecoverReq"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_Flr_CIP_RinseSending"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_Flr_CIP_Running"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_Flr_CIP_TankFilling"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_Flr_FastRinseRequest"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_Flr_PROD_Run_Out"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_Flr_ProductCompleted"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_Flr_RinseMode"` + +Utilizado por: + +- `Interlocking_Panel` + +## PLC Tag: `"DO_Flr_WaterRinseReady"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_Glycol_ColdRequest"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_Glycol_LineCIP"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_Glycol_LineEnabled"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_Green_Lamp"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_HMIPowerSupply"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"DO_Horn"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_MES_CIP"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_MES_FAULT"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_MES_PRODUCTION"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_MES_Running"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_MIXER _Rinse_mode"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_PB_Green_Lamp"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_PB_HornReset"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_PCM306En"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_PPM303_Run"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_PPM306_Run"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_PPN301_Run"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_PPN304_Run"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_PPP302_Run"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_RVM301_Discharge"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_RVN302"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_RVN302_1"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_Red_Lamp"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_SyRm_ProdMode"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_SyRm_SyrupReques"` + +Utilizado por: + +- `Interlocking_Panel_1` +- `Output` + +## PLC Tag: `"DO_SyRm_WaterRequest"` + +Utilizado por: + +- `Interlocking_Panel_1` +- `Output` + +## PLC Tag: `"DO_SyrRoom_SyrupRequest"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_SyrupRoomPump_Run"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_SyrupRoomWaterReq"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_SyrupRoom_Aux1"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_SyrupRoom_Aux2"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_SyrupValve_Enable"` + +Utilizado por: + +- `BlenderPIDCtrl_WriteAnOu` + +## PLC Tag: `"DO_Syrup_Counter_Pulse"` + +Utilizado por: + +- `MFMAnalogValues_Totalize` + +## PLC Tag: `"DO_WaterBypass1"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"DO_Water_Counter_Pulse"` + +Utilizado por: + +- `MFMAnalogValues_Totalize` + +## PLC Tag: `"DO_Yellow_Lamp"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"Disable_Bit"` + +Utilizado por: + +- `BlenderCtrl_MachineInit` +- `BlenderCtrl__Main` +- `BlenderPIDCtrl_WriteAnOu` +- `CIPMain_Total Drain` +- `CarboWaterLine_Seq` +- `Output` +- `ProcedureDeaireator StartUp` +- `ProcedureProdTankDrain` +- `_CYCL_EXC` + +## PLC Tag: `"Dly_Maselli_Fault"` + +Utilizado por: + +- `Safeties` + +## PLC Tag: `"E5_007161"` + +Utilizado por: + +- `ITC Communic CIPRoom` +- `ITC Communic ProdRoom` +- `Output` +- `mPDS_PA_Ctrl_Read` + +## PLC Tag: `"FN_CIPRepEndSupport"` + +Utilizado por: + +- `CIPReportManager` + +## PLC Tag: `"FP_CIPRepStartSupport"` + +Utilizado por: + +- `CIPReportManager` + +## PLC Tag: `"FP_PRDRepEndSupport"` + +Utilizado por: + +- `ProdReportManager` + +## PLC Tag: `"FP_PRDRepStartSupport"` + +Utilizado por: + +- `ProdReportManager` + +## PLC Tag: `"FillingHeadIntegrInit"` + +Utilizado por: + +- `PID_Filling_Head` + +## PLC Tag: `"FirstProductiontReset"` + +Utilizado por: + +- `ProcedureFirstProduction` + +## PLC Tag: `"FirstScan"` + +Utilizado por: + +- `Baialage` +- `BlenderCtrl__Main` +- `BlenderRinse` +- `BlenderRun_MeasFilSpeed` +- `BlenderRun__Control` +- `CO2Tracking` +- `ITC Communic CIPRoom` +- `ITC Communic Filler` +- `ITC Communic ProdRoom` +- `ProcedureBrixTracking` +- `ProcedureCarboWaterLine` +- `ProcedureFirstProduction` +- `ProcedureProdBrixRecovery` +- `ProcedureProdTankDrain` +- `ProcedureProdTankRunOut` +- `ProcedureSyrup RunOut` +- `ProcedureSyrupLineMFMPrep` +- `ProcedureSyrupMFMStartUp` +- `Prod Tank PressCtrl` +- `ProductPipeRunOut` +- ... (y 1 más) + +## PLC Tag: `"Flip Enable"` + +Utilizado por: + +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"Flr_ComunicationFault"` + +Utilizado por: + +- `Safeties` + +## PLC Tag: `"H2O_Counter_Tot"` + +Utilizado por: + +- `MFMAnalogValues_Totalize` + +## PLC Tag: `"HMI_PID.RVM319.Error"` + +Utilizado por: + +- `BlenderRun__Control` + +## PLC Tag: `"HMI_ShutDownDelay"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"M110.0"` + +Utilizado por: + +- `PumpsControl` +- `TankLevel` + +## PLC Tag: `"M18700"` + +Utilizado por: + +- `Profibus Network` + +## PLC Tag: `"M18702"` + +Utilizado por: + +- `Profibus Network` + +## PLC Tag: `"M18723"` + +Utilizado por: + +- `Profibus Network` + +## PLC Tag: `"M18725"` + +Utilizado por: + +- `Profibus Network` + +## PLC Tag: `"M18733"` + +Utilizado por: + +- `Profibus Network` + +## PLC Tag: `"M18735"` + +Utilizado por: + +- `Profibus Network` + +## PLC Tag: `"M18736"` + +Utilizado por: + +- `Profibus Network` + +## PLC Tag: `"M18737"` + +Utilizado por: + +- `Profibus Network` + +## PLC Tag: `"M18740"` + +Utilizado por: + +- `Profibus Network` + +## PLC Tag: `"M18742"` + +Utilizado por: + +- `Profibus Network` + +## PLC Tag: `"M18743"` + +Utilizado por: + +- `Profibus Network` + +## PLC Tag: `"M18744"` + +Utilizado por: + +- `Profibus Network` + +## PLC Tag: `"M18747"` + +Utilizado por: + +- `Profibus Network` +- `mPDS_PA_Ctrl_Read` + +## PLC Tag: `"M18750"` + +Utilizado por: + +- `Profibus Network` + +## PLC Tag: `"M18751"` + +Utilizado por: + +- `Profibus Network` +- `mPDS_SYR_PA_Ctrl_Read` + +## PLC Tag: `"M18761"` + +Utilizado por: + +- `Profibus Network` + +## PLC Tag: `"M18762"` + +Utilizado por: + +- `Profibus Network` + +## PLC Tag: `"M18763"` + +Utilizado por: + +- `Profibus Network` + +## PLC Tag: `"M18833"` + +Utilizado por: + +- `Maselli_PA_Ctrl_Read` + +## PLC Tag: `"M18835"` + +Utilizado por: + +- `Profibus Network` + +## PLC Tag: `"M18845"` + +Utilizado por: + +- `Profibus Network` + +## PLC Tag: `"M18847"` + +Utilizado por: + +- `Profibus Network` + +## PLC Tag: `"M18850"` + +Utilizado por: + +- `Profibus Network` + +## PLC Tag: `"M18851"` + +Utilizado por: + +- `Profibus Network` + +## PLC Tag: `"M19000"` + +Utilizado por: + +- `BlenderCtrl__Main` + +## PLC Tag: `"M19001"` + +Utilizado por: + +- `BlenderCtrl__Main` + +## PLC Tag: `"M19002"` + +Utilizado por: + +- `BlenderCtrl__Main` + +## PLC Tag: `"M19003"` + +Utilizado por: + +- `BlenderCtrl__Main` + +## PLC Tag: `"M19007"` + +Utilizado por: + +- `BlenderRun__Control` + +## PLC Tag: `"M19010"` + +Utilizado por: + +- `BlenderRun__Control` + +## PLC Tag: `"M19011"` + +Utilizado por: + +- `BlenderCtrl__Main` + +## PLC Tag: `"M19012"` + +Utilizado por: + +- `BlenderRun_ProdTime` + +## PLC Tag: `"M19013"` + +Utilizado por: + +- `FillerControl` + +## PLC Tag: `"M19014"` + +Utilizado por: + +- `BlenderRinse` + +## PLC Tag: `"M19015"` + +Utilizado por: + +- `BlenderRinse` + +## PLC Tag: `"M19020"` + +Utilizado por: + +- `BlenderRinse` + +## PLC Tag: `"M19021"` + +Utilizado por: + +- `BlenderRinse` + +## PLC Tag: `"M19022"` + +Utilizado por: + +- `FillerControl` + +## PLC Tag: `"M19023"` + +Utilizado por: + +- `FillerControl` + +## PLC Tag: `"M19025"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"M19026"` + +Utilizado por: + +- `Prod Tank PressCtrl` + +## PLC Tag: `"M19027"` + +Utilizado por: + +- `Safeties` + +## PLC Tag: `"M19030"` + +Utilizado por: + +- `Safeties` + +## PLC Tag: `"M19031"` + +Utilizado por: + +- `Safeties` + +## PLC Tag: `"M19032"` + +Utilizado por: + +- `Safeties` + +## PLC Tag: `"M19033"` + +Utilizado por: + +- `Safeties` + +## PLC Tag: `"M19034"` + +Utilizado por: + +- `Safeties` + +## PLC Tag: `"M19061"` + +Utilizado por: + +- `CIPMain_Total Drain` + +## PLC Tag: `"M19062"` + +Utilizado por: + +- `CIPMain_Flood` + +## PLC Tag: `"M19063"` + +Utilizado por: + +- `CIPMain_Flood` + +## PLC Tag: `"M19064"` + +Utilizado por: + +- `CIPMain_Flood` + +## PLC Tag: `"M19074"` + +Utilizado por: + +- `Baialage` + +## PLC Tag: `"M19076"` + +Utilizado por: + +- `ProcedureProdTankDrain` + +## PLC Tag: `"M19077"` + +Utilizado por: + +- `BlenderRinse` + +## PLC Tag: `"M19080"` + +Utilizado por: + +- `MFMAnalogValues_Totalize` + +## PLC Tag: `"M19101"` + +Utilizado por: + +- `Safeties` + +## PLC Tag: `"M19156"` + +Utilizado por: + +- `RecipeManagement - Prod` + +## PLC Tag: `"M19157"` + +Utilizado por: + +- `RecipeManagement - Prod` + +## PLC Tag: `"M19510"` + +Utilizado por: + +- `CPU_DP Global Diag` +- `I/O_FLT1` +- `Profibus Network` + +## PLC Tag: `"M19511"` + +Utilizado por: + +- `CPU_DP Global Diag` +- `Profibus Network` +- `RACK_FLT` + +## PLC Tag: `"M19512"` + +Utilizado por: + +- `COMPLETE RESTART` +- `Profibus Network` + +## PLC Tag: `"M19513"` + +Utilizado por: + +- `Profibus Network` + +## PLC Tag: `"M19514"` + +Utilizado por: + +- `CPU_DP Global Diag` + +## PLC Tag: `"M19515"` + +Utilizado por: + +- `CPU_DP Global Diag` + +## PLC Tag: `"MB101"` + +Utilizado por: + +- `QCO Monitor` + +## PLC Tag: `"MB116"` + +Utilizado por: + +- `FillerControl` + +## PLC Tag: `"MB117"` + +Utilizado por: + +- `FillerControl` + +## PLC Tag: `"MB118"` + +Utilizado por: + +- `FillerControl` + +## PLC Tag: `"MB120"` + +Utilizado por: + +- `FillerControl` + +## PLC Tag: `"MB122"` + +Utilizado por: + +- `FillerControl` + +## PLC Tag: `"MB600"` + +Utilizado por: + +- `CIPReportManager` + +## PLC Tag: `"MB604"` + +Utilizado por: + +- `ProdReportManager` + +## PLC Tag: `"MD1870"` + +Utilizado por: + +- `Profibus Network` + +## PLC Tag: `"MD1874"` + +Utilizado por: + +- `Profibus Network` + +## PLC Tag: `"MD1878"` + +Utilizado por: + +- `Profibus Network` + +## PLC Tag: `"MD1882"` + +Utilizado por: + +- `Profibus Network` + +## PLC Tag: `"MD600"` + +Utilizado por: + +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"MW116"` + +Utilizado por: + +- `FillerControl` + +## PLC Tag: `"MW1968"` + +Utilizado por: + +- `BlenderPIDCtrl__Loop` +- `CYC_INT5` + +## PLC Tag: `"MW1996"` + +Utilizado por: + +- `ProcedureBrixTracking` + +## PLC Tag: `"MW1998"` + +Utilizado por: + +- `CO2Tracking` + +## PLC Tag: `"MaselliHold"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"MaselliSpare"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"MessageScroll_Time"` + +Utilizado por: + +- `_CYCL_EXC` + +## PLC Tag: `"PAmPDS_Aux_Real_IN"` + +Utilizado por: + +- `mPDS_PA_Ctrl_Read` + +## PLC Tag: `"PBusF"` + +Utilizado por: + +- `GNS PLCdia MainRoutine` +- `GNS PLCdia Profibus` + +## PLC Tag: `"PNetF"` + +Utilizado por: + +- `GNS PLCdia MainRoutine` +- `GNS PLCdia Profinet` + +## PLC Tag: `"PPM303_B00_RefValue_LSB"` + +Utilizado por: + +- `PPM303_VFC_Ctrl` + +## PLC Tag: `"PPM303_B01_DriveReady"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"PPM303_B02_Brake"` + +Utilizado por: + +- `PPM303_VFC_Ctrl` + +## PLC Tag: `"PPM303_B03_Coast"` + +Utilizado por: + +- `PPM303_VFC_Ctrl` + +## PLC Tag: `"PPM303_B03_Trip"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"PPM303_B04_QuickStop"` + +Utilizado por: + +- `PPM303_VFC_Ctrl` + +## PLC Tag: `"PPM303_B05_HoldOutputFrq"` + +Utilizado por: + +- `PPM303_VFC_Ctrl` + +## PLC Tag: `"PPM303_B06_RampStop"` + +Utilizado por: + +- `PPM303_VFC_Ctrl` + +## PLC Tag: `"PPM303_B07_Reset"` + +Utilizado por: + +- `PPM303_VFC_Ctrl` + +## PLC Tag: `"PPM303_B09_RampSelection"` + +Utilizado por: + +- `PPM303_VFC_Ctrl` + +## PLC Tag: `"PPM303_B10_DataValid"` + +Utilizado por: + +- `PPM303_VFC_Ctrl` + +## PLC Tag: `"PPM303_FC_Control_Word"` + +Utilizado por: + +- `PPM303_VFC_Ctrl` + +## PLC Tag: `"PPM303_FC_Status_Word"` + +Utilizado por: + +- `PPM303_VFC_Ctrl` + +## PLC Tag: `"PPM305_B00_RefValue_LSB"` + +Utilizado por: + +- `PPM305_VFC_Ctrl` + +## PLC Tag: `"PPM305_B02_Brake"` + +Utilizado por: + +- `PPM305_VFC_Ctrl` + +## PLC Tag: `"PPM305_B03_Coast"` + +Utilizado por: + +- `PPM305_VFC_Ctrl` + +## PLC Tag: `"PPM305_B04_QuickStop"` + +Utilizado por: + +- `PPM305_VFC_Ctrl` + +## PLC Tag: `"PPM305_B05_HoldOutputFrq"` + +Utilizado por: + +- `PPM305_VFC_Ctrl` + +## PLC Tag: `"PPM305_B06_RampStop"` + +Utilizado por: + +- `PPM305_VFC_Ctrl` + +## PLC Tag: `"PPM305_B07_Reset"` + +Utilizado por: + +- `PPM305_VFC_Ctrl` + +## PLC Tag: `"PPM305_B09_RampSelection"` + +Utilizado por: + +- `PPM305_VFC_Ctrl` + +## PLC Tag: `"PPM305_B10_DataValid"` + +Utilizado por: + +- `PPM305_VFC_Ctrl` + +## PLC Tag: `"PPM305_FC_Control_Word"` + +Utilizado por: + +- `PPM305_VFC_Ctrl` + +## PLC Tag: `"PPM305_FC_Status_Word"` + +Utilizado por: + +- `PPM305_VFC_Ctrl` + +## PLC Tag: `"PPM307_B00_RefValue_LSB"` + +Utilizado por: + +- `PPM307_VFC_Ctrl` + +## PLC Tag: `"PPM307_B02_Brake"` + +Utilizado por: + +- `PPM307_VFC_Ctrl` + +## PLC Tag: `"PPM307_B03_Coast"` + +Utilizado por: + +- `PPM307_VFC_Ctrl` + +## PLC Tag: `"PPM307_B04_QuickStop"` + +Utilizado por: + +- `PPM307_VFC_Ctrl` + +## PLC Tag: `"PPM307_B05_HoldOutputFrq"` + +Utilizado por: + +- `PPM307_VFC_Ctrl` + +## PLC Tag: `"PPM307_B06_RampStop"` + +Utilizado por: + +- `PPM307_VFC_Ctrl` + +## PLC Tag: `"PPM307_B07_Reset"` + +Utilizado por: + +- `PPM307_VFC_Ctrl` + +## PLC Tag: `"PPM307_B09_RampSelection"` + +Utilizado por: + +- `PPM307_VFC_Ctrl` + +## PLC Tag: `"PPM307_B10_DataValid"` + +Utilizado por: + +- `PPM307_VFC_Ctrl` + +## PLC Tag: `"PPM307_FC_Control_Word"` + +Utilizado por: + +- `PPM307_VFC_Ctrl` + +## PLC Tag: `"PPM307_FC_Status_Word"` + +Utilizado por: + +- `PPM307_VFC_Ctrl` + +## PLC Tag: `"PPN301_B00_RefValue_LSB"` + +Utilizado por: + +- `PPN301_VFC_Ctrl` + +## PLC Tag: `"PPN301_B01_DriveReady"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"PPN301_B02_Brake"` + +Utilizado por: + +- `PPN301_VFC_Ctrl` + +## PLC Tag: `"PPN301_B03_Coast"` + +Utilizado por: + +- `PPN301_VFC_Ctrl` + +## PLC Tag: `"PPN301_B03_Trip"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"PPN301_B04_QuickStop"` + +Utilizado por: + +- `PPN301_VFC_Ctrl` + +## PLC Tag: `"PPN301_B05_HoldOutputFrq"` + +Utilizado por: + +- `PPN301_VFC_Ctrl` + +## PLC Tag: `"PPN301_B06_RampStop"` + +Utilizado por: + +- `PPN301_VFC_Ctrl` + +## PLC Tag: `"PPN301_B07_Reset"` + +Utilizado por: + +- `PPN301_VFC_Ctrl` + +## PLC Tag: `"PPN301_B09_RampSelection"` + +Utilizado por: + +- `PPN301_VFC_Ctrl` + +## PLC Tag: `"PPN301_B10_DataValid"` + +Utilizado por: + +- `PPN301_VFC_Ctrl` + +## PLC Tag: `"PPN301_FC_Control_Word"` + +Utilizado por: + +- `PPN301_VFC_Ctrl` + +## PLC Tag: `"PPN301_FC_Status_Word"` + +Utilizado por: + +- `PPN301_VFC_Ctrl` + +## PLC Tag: `"PPN301_SoftStart_Averia"` + +Utilizado por: + +- `Safeties` + +## PLC Tag: `"PPP302_B00_RefValue_LSB"` + +Utilizado por: + +- `PPP302_VFC_Ctrl` + +## PLC Tag: `"PPP302_B01_DriveReady"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"PPP302_B02_Brake"` + +Utilizado por: + +- `PPP302_VFC_Ctrl` + +## PLC Tag: `"PPP302_B03_Coast"` + +Utilizado por: + +- `PPP302_VFC_Ctrl` + +## PLC Tag: `"PPP302_B03_Trip"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"PPP302_B04_QuickStop"` + +Utilizado por: + +- `PPP302_VFC_Ctrl` + +## PLC Tag: `"PPP302_B05_HoldOutputFrq"` + +Utilizado por: + +- `PPP302_VFC_Ctrl` + +## PLC Tag: `"PPP302_B06_RampStop"` + +Utilizado por: + +- `PPP302_VFC_Ctrl` + +## PLC Tag: `"PPP302_B07_Reset"` + +Utilizado por: + +- `PPP302_VFC_Ctrl` + +## PLC Tag: `"PPP302_B09_RampSelection"` + +Utilizado por: + +- `PPP302_VFC_Ctrl` + +## PLC Tag: `"PPP302_B10_DataValid"` + +Utilizado por: + +- `PPP302_VFC_Ctrl` + +## PLC Tag: `"PPP302_FC_Control_Word"` + +Utilizado por: + +- `PPP302_VFC_Ctrl` + +## PLC Tag: `"PPP302_FC_Status_Word"` + +Utilizado por: + +- `PPP302_VFC_Ctrl` + +## PLC Tag: `"PRDRepComment"` + +Utilizado por: + +- `ProdReportManager` + +## PLC Tag: `"PRDRepExtFaultPresent"` + +Utilizado por: + +- `ProdReportManager` + +## PLC Tag: `"PRDRepExtFaultPresentAux"` + +Utilizado por: + +- `ProdReportManager` + +## PLC Tag: `"PRDRepFaultPresent"` + +Utilizado por: + +- `ProdReportManager` + +## PLC Tag: `"PRDRepFaultPresentAux"` + +Utilizado por: + +- `ProdReportManager` + +## PLC Tag: `"PRDRepStarted"` + +Utilizado por: + +- `ProdReportManager` + +## PLC Tag: `"P_AI_CIPHeaterTemperature"` + +Utilizado por: + +- `BlenderPIDCtrl_ReadAnIn` + +## PLC Tag: `"P_AI_CIPReturnTemperature"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"P_AI_CTM304"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"P_AI_CTS301"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"P_AI_CTS302"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"P_AI_FTM305"` + +Utilizado por: + +- `BlenderPIDCtrl_ReadAnIn` + +## PLC Tag: `"P_AI_FillerLevel"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"P_AI_LTM302"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"P_AI_LTP303"` + +Utilizado por: + +- `BlenderPIDCtrl_ReadAnIn` + +## PLC Tag: `"P_AI_PCM306"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"P_AI_PTF203"` + +Utilizado por: + +- `BlenderPIDCtrl_ReadAnIn` + +## PLC Tag: `"P_AI_PTM304"` + +Utilizado por: + +- `BlenderPIDCtrl_ReadAnIn` + +## PLC Tag: `"P_AI_PTM308"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"P_AI_PTN313"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"P_AI_PTP338"` + +Utilizado por: + +- `BlenderPIDCtrl_ReadAnIn` + +## PLC Tag: `"P_AI_ProductCO2"` + +Utilizado por: + +- `GetProdBrixCO2_Anal_Inpt` + +## PLC Tag: `"P_AI_ProductO2"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"P_AI_RVM301"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"P_AI_RVN304"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"P_AI_RVN305"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"P_AI_TTM306"` + +Utilizado por: + +- `BlenderPIDCtrl_ReadAnIn` + +## PLC Tag: `"P_AI_TTN321"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"P_AO_RVP303"` + +Utilizado por: + +- `BlenderPIDCtrl_WriteAnOu` + +## PLC Tag: `"P_PDS_CO2"` + +Utilizado por: + +- `mPDS_PA_Ctrl_Read` + +## PLC Tag: `"P_PDS_Density"` + +Utilizado por: + +- `mPDS_PA_Ctrl_Read` + +## PLC Tag: `"P_PDS_Freeze_To_PDS"` + +Utilizado por: + +- `mPDS_PA_Control` + +## PLC Tag: `"P_PDS_Product_Brix"` + +Utilizado por: + +- `mPDS_PA_Ctrl_Read` + +## PLC Tag: `"P_PDS_Recipe_Number"` + +Utilizado por: + +- `mPDS_PA_Ctrl_Transfer` + +## PLC Tag: `"P_PDS_Running"` + +Utilizado por: + +- `mPDS_PA_Ctrl_Read` + +## PLC Tag: `"P_PDS_Stop_to_PDS"` + +Utilizado por: + +- `mPDS_PA_Control` + +## PLC Tag: `"P_PDS_Temperature"` + +Utilizado por: + +- `mPDS_PA_Ctrl_Read` + +## PLC Tag: `"P_gMaselli_ProductBrix"` + +Utilizado por: + +- `Maselli_PA_Ctrl_Read` + +## PLC Tag: `"P_gMaselli_ProductCO2"` + +Utilizado por: + +- `Maselli_PA_Ctrl_Read` + +## PLC Tag: `"P_gMaselli_ProductNumber"` + +Utilizado por: + +- `Maselli_PA_Ctrl_Read` +- `Maselli_PA_Ctrl_Transfer` +- `Maselli_PA_Ctrl_Write` + +## PLC Tag: `"P_gMaselli_ProductTemp"` + +Utilizado por: + +- `Maselli_PA_Ctrl_Read` + +## PLC Tag: `"P_gMaselli_RecipeSetNum"` + +Utilizado por: + +- `Maselli_PA_Ctrl_Transfer` +- `Maselli_PA_Ctrl_Write` + +## PLC Tag: `"P_gMaselli_RecipeSetNumStr"` + +Utilizado por: + +- `Maselli_PA_Ctrl_Transfer` +- `Maselli_PA_Ctrl_Write` + +## PLC Tag: `"P_gPPM303_VFC_ControlWord"` + +Utilizado por: + +- `PPM303_VFC_Ctrl` + +## PLC Tag: `"P_gPPM303_VFC_StatusWord"` + +Utilizado por: + +- `PPM303_VFC_Ctrl` + +## PLC Tag: `"P_gPPM305_VFC_ControlWord"` + +Utilizado por: + +- `PPM305_VFC_Ctrl` + +## PLC Tag: `"P_gPPM305_VFC_StatusWord"` + +Utilizado por: + +- `PPM305_VFC_Ctrl` + +## PLC Tag: `"P_gPPM307_VFC_ControlWord"` + +Utilizado por: + +- `PPM307_VFC_Ctrl` + +## PLC Tag: `"P_gPPM307_VFC_StatusWord"` + +Utilizado por: + +- `PPM307_VFC_Ctrl` + +## PLC Tag: `"P_gPPN301_VFC_ControlWord"` + +Utilizado por: + +- `PPN301_VFC_Ctrl` + +## PLC Tag: `"P_gPPN301_VFC_StatusWord"` + +Utilizado por: + +- `PPN301_VFC_Ctrl` + +## PLC Tag: `"P_gPPP302_VFC_ControlWord"` + +Utilizado por: + +- `PPP302_VFC_Ctrl` + +## PLC Tag: `"P_gPPP302_VFC_StatusWord"` + +Utilizado por: + +- `PPP302_VFC_Ctrl` + +## PLC Tag: `"Press_Request"` + +Utilizado por: + +- `Prod Tank PressCtrl` + +## PLC Tag: `"ProdBrixRecoveryReq"` + +Utilizado por: + +- `ProcedureProdBrixRecovery` + +## PLC Tag: `"ProdPipeDrainReset"` + +Utilizado por: + +- `ProductPipeDrain` + +## PLC Tag: `"ProdPipeRunOutReset"` + +Utilizado por: + +- `ProductPipeRunOut` + +## PLC Tag: `"ProdTankDrainReset"` + +Utilizado por: + +- `ProcedureProdTankDrain` + +## PLC Tag: `"ProdTankRunOutReq"` + +Utilizado por: + +- `ProcedureProdTankRunOut` + +## PLC Tag: `"ProdTankRunOutReq_ONS"` + +Utilizado por: + +- `ProcedureProdTankRunOut` + +## PLC Tag: `"ProdTankRunOutReset"` + +Utilizado por: + +- `ProcedureProdTankRunOut` + +## PLC Tag: `"SFM Profibus"` + +Utilizado por: + +- `GNS PLCdia MainRoutine` +- `Profibus Network` + +## PLC Tag: `"StatusScroll_Time"` + +Utilizado por: + +- `_CYCL_EXC` + +## PLC Tag: `"SyrAutoCorrBlink2Sec"` + +Utilizado por: + +- `SyrBrix Autocorrection` + +## PLC Tag: `"SyrAutoCorrLatch"` + +Utilizado por: + +- `SyrBrix Autocorrection` + +## PLC Tag: `"SyrAutoCorrReq"` + +Utilizado por: + +- `SyrBrix Autocorrection` + +## PLC Tag: `"Syr_Counter_Tot"` + +Utilizado por: + +- `MFMAnalogValues_Totalize` + +## PLC Tag: `"SyrupRunOutReset"` + +Utilizado por: + +- `ProcedureSyrup RunOut` + +## PLC Tag: `"T019"` + +Utilizado por: + +- `CPU_DP Global Diag` + +## PLC Tag: `"T105"` + +Utilizado por: + +- `Clock Signal` + +## PLC Tag: `"T121"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"T122"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"T141"` + +Utilizado por: + +- `Profibus Network` + +## PLC Tag: `"T169"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"TP301FillUpDly"` + +Utilizado por: + +- `Syrup Rinse QCO_Seq` + +## PLC Tag: `"Tag_11"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"Tag_24"` + +Utilizado por: + +- `Co2_Counters` + +## PLC Tag: `"Tag_51"` + +Utilizado por: + +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"Time_250ms"` + +Utilizado por: + +- `CYC_INT5` +- `SelCheckBrixSource` + +## PLC Tag: `"Time_300ms"` + +Utilizado por: + +- `BlenderRun_MeasFilSpeed` +- `CYC_INT5` + +## PLC Tag: `"Time_50ms"` + +Utilizado por: + +- `BlendFill StartUp_Seq` +- `CYC_INT5` + +## PLC Tag: `"WarmRinseON"` + +Utilizado por: + +- `BlenderRinse` + +## PLC Tag: `"gAVM327Fault"` + +Utilizado por: + +- `Safeties` + +## PLC Tag: `"gAVM328Fault"` + +Utilizado por: + +- `Safeties` + +## PLC Tag: `"gAVM346Fault"` + +Utilizado por: + +- `Input` +- `Safeties` + +## PLC Tag: `"gAVM362Fault"` + +Utilizado por: + +- `Input` +- `Safeties` + +## PLC Tag: `"gAlarmHorn"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"gAmmoniaCompressor_Fault"` + +Utilizado por: + +- `Input` +- `Safeties` + +## PLC Tag: `"gBalaiageTankFlowOK"` + +Utilizado por: + +- `Baialage` + +## PLC Tag: `"gBalaiage_Fault"` + +Utilizado por: + +- `Baialage` +- `Safeties` + +## PLC Tag: `"gBalaiage_MaxFlow"` + +Utilizado por: + +- `Baialage` + +## PLC Tag: `"gBlendErrorHighSyr_Fault"` + +Utilizado por: + +- `Safeties` + +## PLC Tag: `"gBlendErrorLowSyr_Fault"` + +Utilizado por: + +- `Safeties` + +## PLC Tag: `"gBlendFiStillWaterByPass"` + +Utilizado por: + +- `BlendFill StartUp_Seq` +- `BlenderCtrl__Main` +- `PID_RMM301` + +## PLC Tag: `"gBlendRecircActive"` + +Utilizado por: + +- `Pneumatic Valve Ctrl` +- `PumpsControl` + +## PLC Tag: `"gBlendResetTotalizer"` + +Utilizado por: + +- `BlenderCtrl__Main` +- `MFMAnalogValues_Totalize` + +## PLC Tag: `"gBlenderAlarm"` + +Utilizado por: + +- `BlenderRun_Stopping` +- `CIPLocal` +- `CIPReportManager` +- `Output` +- `Pneumatic Valve Fault` +- `ProdReportManager` +- `Safeties` + +## PLC Tag: `"gBlenderBlending"` + +Utilizado por: + +- `BlenderRinse` +- `BlenderRun_MeasFilSpeed` +- `BlenderRun_ProdTime` +- `BlenderRun__Control` +- `Input` +- `MFMAnalogValues_Totalize` +- `Output` +- `PID_RMM301` +- `PID_RMM303` +- `PID_RMM304` +- `PID_RMP302` +- `ProcedureFirstProduction` +- `ProcedureSyrup RunOut` +- `Prod Tank PressCtrl` +- `ProdReportManager` +- `PumpsControl` +- `QCO Monitor` +- `TankLevel` + +## PLC Tag: `"gBlenderCIPMode"` + +Utilizado por: + +- `Baialage` +- `BlenderCtrl__Main` +- `BlenderPIDCtrl_WriteAnOu` +- `BlenderRinse` +- `BlenderRun_ProdTime` +- `BlenderRun__Control` +- `CIPLocal` +- `CIPMain` +- `CIPMain_Flood` +- `CIPMain_Total Drain` +- `CIPReportManager` +- `CYC_INT5` +- `Co2_Counters` +- `FillerControl` +- `Input` +- `Interlocking_Panel` +- `Maselli_PA_Ctrl_Read` +- `Maselli_PA_Ctrl_Write` +- `ModValveFault` +- `Output` +- ... (y 32 más) + +## PLC Tag: `"gBlenderEmpty"` + +Utilizado por: + +- `CIPMain` +- `CIPMain_Total Drain` +- `Output` +- `TankLevel` + +## PLC Tag: `"gBlenderEnToRamp"` + +Utilizado por: + +- `BlenderRun__Control` +- `PID_RVM319_PRD` +- `SyrBrix Autocorrection` + +## PLC Tag: `"gBlenderFlowFltEn"` + +Utilizado por: + +- `BlenderRun__Control` + +## PLC Tag: `"gBlenderLevelOk"` + +Utilizado por: + +- `FillerControl` +- `Output` +- `TankLevel` + +## PLC Tag: `"gBlenderLevelTarget"` + +Utilizado por: + +- `BlendFill StartUp_Seq` +- `ProcedureFirstProduction` +- `TankLevel` + +## PLC Tag: `"gBlenderMinLevel"` + +Utilizado por: + +- `FillerControl` +- `PumpsControl` +- `TankLevel` +- `mPDS_PA_Control` + +## PLC Tag: `"gBlenderProdMode"` + +Utilizado por: + +- `Baialage` +- `BlenderCtrl__Main` +- `BlenderPIDCtrl_WriteAnOu` +- `BlenderRun__Control` +- `CIPLocal` +- `CO2Tracking` +- `FillerControl` +- `Input` +- `Output` +- `PID_RVM319_PRD` +- `PID_RVN302` +- `PID_RVP303` +- `Pneumatic Valve Ctrl` +- `ProcedureBlendFill StartUp` +- `ProcedureBrixTracking` +- `ProcedureCarboWaterLine` +- `ProcedureDeaireator StartUp` +- `ProcedureFirstProduction` +- `ProcedureProdBrixRecovery` +- `ProcedureProdTankDrain` +- ... (y 15 más) + +## PLC Tag: `"gBlenderRinseMode"` + +Utilizado por: + +- `Baialage` +- `BlenderPIDCtrl_WriteAnOu` +- `BlenderRinse` +- `BlenderRun_ProdTime` +- `BlenderRun__Control` +- `CIPLocal` +- `CO2Tracking` +- `CYC_INT5` +- `Deaireator StartUp_Seq` +- `FillerControl` +- `Input` +- `ModValveFault` +- `Output` +- `PID_Filling_Head` +- `PID_RVN302` +- `PID_RVP303` +- `PPM303_VFC_Ctrl` +- `PPM305_VFC_Ctrl` +- `PPM307_VFC_Ctrl` +- `PPN301_VFC_Ctrl` +- ... (y 19 más) + +## PLC Tag: `"gBlenderStableFlow"` + +Utilizado por: + +- `BlenderRun_MeasFilSpeed` +- `BlenderRun__Control` +- `PID_RMM301` +- `PID_RMM303` +- `PID_RMM304` +- `PID_RMP302` +- `ProdReportManager` +- `SelCheckBrixSource` +- `mPDS_SYR_PA_Ctrl_Read` + +## PLC Tag: `"gBlenderStartLevel"` + +Utilizado por: + +- `TankLevel` + +## PLC Tag: `"gBlenderStartPumps"` + +Utilizado por: + +- `BlenderRun__Control` +- `Output` +- `Pneumatic Valve Ctrl` +- `PumpsControl` +- `TankLevel` + +## PLC Tag: `"gBlenderStartPumpsONS"` + +Utilizado por: + +- `BlenderRun__Control` + +## PLC Tag: `"gBlenderStopLevel"` + +Utilizado por: + +- `BlendFill StartUp_Seq` +- `ProcedureFirstProduction` +- `Prod Tank PressCtrl` +- `ProductPipeRunOut` +- `TankLevel` + +## PLC Tag: `"gBlenderStopping"` + +Utilizado por: + +- `BlenderRun_Stopping` +- `BlenderRun__Control` + +## PLC Tag: `"gBlenderSuppliesOk"` + +Utilizado por: + +- `BlenderCtrl__Main` +- `BlenderRinse` +- `BlenderRun_Stopping` +- `CIPLocal` +- `ProcedureBlendFill StartUp` +- `ProcedureCarboWaterLine` +- `ProcedureDeaireator StartUp` +- `ProcedureFirstProduction` +- `ProcedureProdTankDrain` +- `ProcedureProdTankRunOut` +- `ProcedureSyrup RunOut` +- `ProcedureSyrupLineMFMPrep` +- `ProcedureSyrupMFMStartUp` +- `ProductPipeDrain` +- `ProductPipeRunOut` +- `SyrBrix Autocorrection` +- `System_Run_Out` + +## PLC Tag: `"gBlenderTankPress_Ok"` + +Utilizado por: + +- `BlendFill StartUp_Seq` + +## PLC Tag: `"gBypassGlicoleSysDelay"` + +Utilizado por: + +- `CTRLCoolingSystem` + +## PLC Tag: `"gCARBOStopProductMeter"` + +Utilizado por: + +- `mPDS_PA_Control` + +## PLC Tag: `"gCIPONS"` + +Utilizado por: + +- `BlenderCtrl__Main` +- `BlenderRun__Control` + +## PLC Tag: `"gCIPRecirFlowMiss_Fault"` + +Utilizado por: + +- `CIPLocal` +- `Safeties` + +## PLC Tag: `"gCIPRinseEnableRMP302"` + +Utilizado por: + +- `PumpsControl` +- `TankLevel` + +## PLC Tag: `"gCIPRinseOpenRMP302"` + +Utilizado por: + +- `TankLevel` + +## PLC Tag: `"gCIPRinseOpenValves"` + +Utilizado por: + +- `PID_RMM301` +- `PID_RVP303` +- `Pneumatic Valve Ctrl` +- `TankLevel` + +## PLC Tag: `"gCIPStopLevel"` + +Utilizado por: + +- `TankLevel` + +## PLC Tag: `"gCIP_BlenderDrainDone"` + +Utilizado por: + +- `CIPMain` +- `CIPMain_Total Drain` +- `Interlocking_Panel` +- `Output` + +## PLC Tag: `"gCIP_DeairTank_Flood"` + +Utilizado por: + +- `CIPLocal_WaitEvent_Ctrl` +- `CIPMain_Flood` +- `Input_DigitalCtrl` + +## PLC Tag: `"gCIP_DeairTank_MaxLevel"` + +Utilizado por: + +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gCIP_FlipFlopDone"` + +Utilizado por: + +- `CIP FlipFlop` +- `Procedure` + +## PLC Tag: `"gCIP_FlipFlopReset"` + +Utilizado por: + +- `Procedure` + +## PLC Tag: `"gCIP_FlipFlopWait"` + +Utilizado por: + +- `Procedure` + +## PLC Tag: `"gCIP_FlipflopRunning"` + +Utilizado por: + +- `Procedure` + +## PLC Tag: `"gCIP_PrdTank_Flood"` + +Utilizado por: + +- `CIPMain_Flood` + +## PLC Tag: `"gCIP_PrdTank_MaxLevel"` + +Utilizado por: + +- `CIPLocal_WaitEvent_Ctrl` +- `CIPMain_Flood` +- `TankLevel` + +## PLC Tag: `"gCIP_PrdTank_PressLow"` + +Utilizado por: + +- `CIPMain` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gCIP_RecipePhaseLoadReq"` + +Utilizado por: + +- `CIPLocal_ProgInizialize` + +## PLC Tag: `"gCIP_SyrTank_Flood"` + +Utilizado por: + +- `CIPLocal_WaitEvent_Ctrl` +- `CIPMain_Flood` +- `PumpsControl` + +## PLC Tag: `"gCIP_SyrTank_MaxLevel"` + +Utilizado por: + +- `PID_RVP303` +- `Pneumatic Valve Ctrl` +- `Syrup Rinse QCO_Seq` + +## PLC Tag: `"gCIP_SystemLowLevel"` + +Utilizado por: + +- `CIPLocal_WaitEvent_Ctrl` +- `TankLevel` + +## PLC Tag: `"gCO2LowPress_Fault"` + +Utilizado por: + +- `Input` +- `ProcedureCarboWaterLine` +- `ProcedureDeaireator StartUp` +- `Prod Tank PressCtrl` +- `Safeties` + +## PLC Tag: `"gCO2PressNotOk"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"gCarboCO2Err_H_CO2_Fault"` + +Utilizado por: + +- `Safeties` + +## PLC Tag: `"gCarboCO2Err_L_CO2_Fault"` + +Utilizado por: + +- `Safeties` + +## PLC Tag: `"gClock_120s"` + +Utilizado por: + +- `Clock Signal` + +## PLC Tag: `"gClock_20s"` + +Utilizado por: + +- `Clock Signal` +- `Prod Tank Drain_Seq` + +## PLC Tag: `"gClock_40s"` + +Utilizado por: + +- `Clock Signal` + +## PLC Tag: `"gClock_60s"` + +Utilizado por: + +- `Clock Signal` + +## PLC Tag: `"gCloseMainCO2Valve"` + +Utilizado por: + +- `Pneumatic Valve Ctrl` +- `Prod Tank PressCtrl` + +## PLC Tag: `"gColingSysBypassResetFP"` + +Utilizado por: + +- `CTRLCoolingSystem` + +## PLC Tag: `"gColingSystemBypassReset"` + +Utilizado por: + +- `CTRLCoolingSystem` + +## PLC Tag: `"gCoolingSysBypassAct"` + +Utilizado por: + +- `CTRLCoolingSystem` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gCoolingSystemBypass"` + +Utilizado por: + +- `CTRLCoolingSystem` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gCoolingSystemBypassFP"` + +Utilizado por: + +- `CTRLCoolingSystem` + +## PLC Tag: `"gCoolingTempMaxLowAlrm"` + +Utilizado por: + +- `CTRLCoolingSystem` + +## PLC Tag: `"gDeairTank_HighLvl_Fault"` + +Utilizado por: + +- `Safeties` +- `TankLevel` + +## PLC Tag: `"gDeairTank_Loading"` + +Utilizado por: + +- `PID_RVN302` +- `PumpsControl` +- `TankLevel` + +## PLC Tag: `"gDeairTank_LowLvl_Fault"` + +Utilizado por: + +- `Safeties` +- `TankLevel` + +## PLC Tag: `"gDeairTank_VacuumOk"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"gDeviceFault"` + +Utilizado por: + +- `Pneumatic Valve Fault` +- `ProdReportManager` + +## PLC Tag: `"gDiffSensor_Analog_Fault"` + +Utilizado por: + +- `BlenderPIDCtrl_ReadAnIn` +- `PID_Filling_Head` +- `Safeties` + +## PLC Tag: `"gDrainPressNotOK"` + +Utilizado por: + +- `ProcedureProdTankDrain` +- `Prod Tank PressCtrl` + +## PLC Tag: `"gElCabTooHigh"` + +Utilizado por: + +- `Input` +- `Safeties` + +## PLC Tag: `"gEmergencyPressed"` + +Utilizado por: + +- `Baialage` +- `BlenderCtrl__Main` +- `ProcedureCarboWaterLine` +- `System_Run_Out` + +## PLC Tag: `"gEnRampDownToStop"` + +Utilizado por: + +- `BlenderRun_MeasFilSpeed` +- `BlenderRun_Stopping` + +## PLC Tag: `"gEnRecircPHE"` + +Utilizado por: + +- `BlenderRun__Control` +- `PID_RVM319_PRD` +- `Pneumatic Valve Ctrl` +- `PumpsControl` + +## PLC Tag: `"gEqPressOk"` + +Utilizado por: + +- `BlendFill StartUp_Seq` +- `BlenderRun__Control` +- `Prod Tank PressCtrl` +- `QCO Monitor` + +## PLC Tag: `"gEqPressSelected"` + +Utilizado por: + +- `BlendFill StartUp_Seq` +- `BlenderRun__Control` +- `Pneumatic Valve Ctrl` +- `Prod Tank PressCtrl` + +## PLC Tag: `"gFTM303_Fault"` + +Utilizado por: + +- `Safeties` + +## PLC Tag: `"gFTM303_ResetTot"` + +Utilizado por: + +- `BlenderCtrl__Main` + +## PLC Tag: `"gFTN301_Fault"` + +Utilizado por: + +- `Safeties` + +## PLC Tag: `"gFTN301_ResetTot"` + +Utilizado por: + +- `BlenderCtrl__Main` + +## PLC Tag: `"gFTN301_SpeedToStop"` + +Utilizado por: + +- `BlenderRun_Stopping` + +## PLC Tag: `"gFTP302_EPD"` + +Utilizado por: + +- `Syrup Line MFM Prep_Seq` +- `Syrup MFM StartUp_Seq` + +## PLC Tag: `"gFTP302_Fault"` + +Utilizado por: + +- `Safeties` +- `SyrBrix Autocorrection` + +## PLC Tag: `"gFTP302_ResetTot"` + +Utilizado por: + +- `BlenderCtrl__Main` + +## PLC Tag: `"gFiilerStopBlender"` + +Utilizado por: + +- `FillerControl` + +## PLC Tag: `"gFinalPressureOk"` + +Utilizado por: + +- `Deaireator StartUp_Seq` +- `Pneumatic Valve Ctrl` +- `Prod Tank PressCtrl` + +## PLC Tag: `"gFirstProdPressHold"` + +Utilizado por: + +- `Prod Tank PressCtrl` + +## PLC Tag: `"gFirstProdStop"` + +Utilizado por: + +- `FillerControl` + +## PLC Tag: `"gFlowToFiller"` + +Utilizado por: + +- `BlenderRun_MeasFilSpeed` + +## PLC Tag: `"gFreezeSyrupMeter"` + +Utilizado por: + +- `mPDS_SYR_PA_Control` + +## PLC Tag: `"gGencoldChillerEn"` + +Utilizado por: + +- `BlenderCtrl_MachineInit` +- `Input` +- `PID_RVM319_PRD` + +## PLC Tag: `"gHVM302_Open"` + +Utilizado por: + +- `BlenderCtrl__Main` +- `Safeties` + +## PLC Tag: `"gHVP301_Open"` + +Utilizado por: + +- `BlenderCtrl__Main` +- `Safeties` + +## PLC Tag: `"gHighPriorityAlarm"` + +Utilizado por: + +- `BlenderRun__Control` +- `Output` +- `Safeties` + +## PLC Tag: `"gIN_AmmoniaHighLevel"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"gIN_AmmoniaLowPressure"` + +Utilizado por: + +- `Safeties` + +## PLC Tag: `"gIN_CIP_CIPCompleted"` + +Utilizado por: + +- `CIPMain` +- `CIPMain_Total Drain` +- `FillerControl` +- `Input` +- `Interlocking_Panel` + +## PLC Tag: `"gIN_CIP_CIPMode"` + +Utilizado por: + +- `FillerControl` +- `Input` +- `Interlocking_Panel` +- `Output` + +## PLC Tag: `"gIN_CIP_CIPProdSending"` + +Utilizado por: + +- `Input` +- `Output` +- `Procedure` + +## PLC Tag: `"gIN_CIP_CIPRunning"` + +Utilizado por: + +- `BlenderCtrl__Main` +- `FillerControl` +- `Input` +- `Interlocking_Panel` +- `PumpsControl` + +## PLC Tag: `"gIN_CIP_CausticSanRun"` + +Utilizado por: + +- `Interlocking_Panel` + +## PLC Tag: `"gIN_CIP_ChangeSanitize"` + +Utilizado por: + +- `FillerControl` +- `Input` +- `Interlocking_Panel` + +## PLC Tag: `"gIN_CIP_ChemicalProd"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"gIN_CIP_DrainRequest"` + +Utilizado por: + +- `CIPMain` +- `CIPMain_Total Drain` +- `FillerControl` +- `Input` +- `Interlocking_Panel` +- `Output` +- `Pneumatic Valve Ctrl` +- `PumpsControl` + +## PLC Tag: `"gIN_CIP_Fault"` + +Utilizado por: + +- `Input` +- `Output` +- `Safeties` + +## PLC Tag: `"gIN_CIP_FreeSodaTank"` + +Utilizado por: + +- `CIPLocal_WaitEvent_Ctrl` +- `Input` + +## PLC Tag: `"gIN_CIP_HotWaterSending"` + +Utilizado por: + +- `CIPLocal_WaitEvent_Ctrl` +- `Input` + +## PLC Tag: `"gIN_CIP_RinseMode"` + +Utilizado por: + +- `Interlocking_Panel` + +## PLC Tag: `"gIN_CIP_TankFilling"` + +Utilizado por: + +- `CIPMain_Flood` +- `Input` +- `Interlocking_Panel` +- `Output` +- `PumpsControl` + +## PLC Tag: `"gIN_DeairTank_MinLvl"` + +Utilizado por: + +- `TankLevel` + +## PLC Tag: `"gIN_DeairTank_Vacuum_Ok"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"gIN_Filler1ProductReq"` + +Utilizado por: + +- `BlenderPIDCtrl_WriteAnOu` +- `Input` +- `Interlocking_Panel` +- `Pneumatic Valve Ctrl` +- `PumpsControl` + +## PLC Tag: `"gIN_Filler2CIPRequest"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"gIN_Filler2ProductReq"` + +Utilizado por: + +- `BlenderPIDCtrl_WriteAnOu` +- `Input` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gIN_FillerBottleFilling"` + +Utilizado por: + +- `Input` +- `PID_Filling_Head` + +## PLC Tag: `"gIN_FillerCIPChangeReady"` + +Utilizado por: + +- `CIPLocal_WaitEvent_Ctrl` +- `CIPMain` +- `Input` +- `Interlocking_Panel` +- `Output` + +## PLC Tag: `"gIN_FillerCIPCycleEnded"` + +Utilizado por: + +- `CIPLocal_WaitEvent_Ctrl` +- `Input` +- `Interlocking_Panel` +- `Output` + +## PLC Tag: `"gIN_FillerCIPDrainCompl"` + +Utilizado por: + +- `CIPLocal_WaitEvent_Ctrl` +- `Input` +- `Interlocking_Panel` +- `Output` + +## PLC Tag: `"gIN_FillerCIPDrainSelect"` + +Utilizado por: + +- `Input` +- `Interlocking_Panel` +- `ProcedureBlendFill StartUp` + +## PLC Tag: `"gIN_FillerCIPOpen_AVM313"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"gIN_FillerCIPRequest"` + +Utilizado por: + +- `CIPLocal` +- `CIPLocal_WaitEvent_Ctrl` +- `CIPMain` +- `Input` +- `Interlocking_Panel` +- `Pneumatic Valve Ctrl` +- `Procedure` +- `PumpsControl` + +## PLC Tag: `"gIN_FillerEndFlushing"` + +Utilizado por: + +- `BlendFill StartUp_Seq` +- `Input` +- `QCO Monitor` + +## PLC Tag: `"gIN_FillerEndTankFilling"` + +Utilizado por: + +- `BlendFill StartUp_Seq` +- `Input` +- `ProcedureBlendFill StartUp` + +## PLC Tag: `"gIN_FillerProdReady"` + +Utilizado por: + +- `Input` +- `Interlocking_Panel` +- `ProcedureBlendFill StartUp` + +## PLC Tag: `"gIN_Filler_AVM346_En"` + +Utilizado por: + +- `BlendFill StartUp_Seq` +- `Input` +- `PID_Filling_Head` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gIN_Filler_AVM362_En"` + +Utilizado por: + +- `BlendFill StartUp_Seq` +- `Input` +- `PID_Filling_Head` +- `ProcedureBlendFill StartUp` +- `QCO Monitor` + +## PLC Tag: `"gIN_Filler_AVM363_En"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"gIN_HVM302_Aux"` + +Utilizado por: + +- `BlenderCtrl__Main` +- `Input` + +## PLC Tag: `"gIN_HVP301_Aux"` + +Utilizado por: + +- `BlenderCtrl__Main` +- `Input` +- `ProcedureSyrupLineMFMPrep` + +## PLC Tag: `"gIN_LinePressCO2Ok"` + +Utilizado por: + +- `BlendFill StartUp_Seq` +- `BlenderCtrl__Main` +- `Input` +- `ProcedureProdTankRunOut` +- `Prod Tank PressCtrl` + +## PLC Tag: `"gIN_ManifoldNotReadyCIP"` + +Utilizado por: + +- `Input` +- `Safeties` + +## PLC Tag: `"gIN_ManifoldNotReadyProd"` + +Utilizado por: + +- `Input` +- `Safeties` + +## PLC Tag: `"gIN_MaxPPN304"` + +Utilizado por: + +- `Safeties` + +## PLC Tag: `"gIN_MinPPN304"` + +Utilizado por: + +- `Safeties` + +## PLC Tag: `"gIN_PPM303_FCReady"` + +Utilizado por: + +- `Input` +- `ProcedureBlendFill StartUp` +- `Safeties` + +## PLC Tag: `"gIN_PPN301_FCReady"` + +Utilizado por: + +- `Input` +- `Safeties` + +## PLC Tag: `"gIN_PPP302_FCReady"` + +Utilizado por: + +- `Input` +- `Safeties` + +## PLC Tag: `"gIN_RMM301_Closed"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"gIN_RMM303_Closed"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"gIN_RMM304_Closed"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"gIN_RMP302_Closed"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"gIN_ResetBtn"` + +Utilizado por: + +- `BlenderPIDCtrl_ReadAnIn` +- `GNS PLCdia Profibus` +- `GNS PLCdia Profinet` +- `Input` +- `Output` +- `PPM303_VFC_Ctrl` +- `PPM305_VFC_Ctrl` +- `PPM307_VFC_Ctrl` +- `PPN301_VFC_Ctrl` +- `PPP302_VFC_Ctrl` +- `Pneumatic Valve Fault` +- `Profibus Network` +- `PumpsControl` +- `ReadAnalogIn` +- `Safeties` +- `System_Run_Out` +- `TankLevel` + +## PLC Tag: `"gIN_ResetHorn"` + +Utilizado por: + +- `Input` +- `Safeties` + +## PLC Tag: `"gIN_StartBtn"` + +Utilizado por: + +- `BlenderRun__Control` +- `CIPLocal` +- `Input` + +## PLC Tag: `"gIN_StopBtn"` + +Utilizado por: + +- `BlenderRun_Stopping` +- `CIPLocal` +- `Input` + +## PLC Tag: `"gIN_SyrRoomOk"` + +Utilizado por: + +- `Input` +- `Interlocking_Panel` +- `PID_RVP303` +- `System_Run_Out` + +## PLC Tag: `"gIN_SyrTank_MinLvl"` + +Utilizado por: + +- `ProcedureSyrupLineMFMPrep` +- `Prod Tank RunOut_Seq` +- `ProductPipeRunOut_Seq` +- `PumpsControl` +- `Syrup Line MFM Prep_Seq` +- `Syrup MFM StartUp_Seq` +- `TankLevel` + +## PLC Tag: `"gIN_VoltageOk"` + +Utilizado por: + +- `Baialage` +- `BlenderCtrl__Main` +- `FillerControl` +- `Input` +- `Instrument_Scanner` +- `Output` +- `Pneumatic Valve Ctrl` +- `Prod Tank PressCtrl` +- `Profibus Network` +- `PumpsControl` +- `Safeties` + +## PLC Tag: `"gInstrumentFault"` + +Utilizado por: + +- `Instrument_Scanner` +- `ProdReportManager` + +## PLC Tag: `"gLowPriorityAlarm"` + +Utilizado por: + +- `Safeties` + +## PLC Tag: `"gMaxSyrAutoCorrDone"` + +Utilizado por: + +- `SyrBrix Autocorrection` + +## PLC Tag: `"gMinRatio"` + +Utilizado por: + +- `SyrBrix Autocorrection` + +## PLC Tag: `"gNoFreezeProductMeter"` + +Utilizado por: + +- `BlenderCtrl__Main` +- `CO2Tracking` +- `Maselli_PA_Control` +- `Output` +- `ProcedureBrixTracking` +- `ProductQuality` +- `mPDS_PA_Control` + +## PLC Tag: `"gNotARecipe_Fault"` + +Utilizado por: + +- `Safeties` + +## PLC Tag: `"gOUT_CIPChangeReady"` + +Utilizado por: + +- `CIPMain` +- `Interlocking_Panel` + +## PLC Tag: `"gOUT_CIPHotWaterRequest"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"gOUT_CIPSendSodaRequest"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"gOUT_FillerCIPCaSanitRun"` + +Utilizado por: + +- `Interlocking_Panel` + +## PLC Tag: `"gOUT_FillerCIPChangeSani"` + +Utilizado por: + +- `FillerControl` +- `Interlocking_Panel` + +## PLC Tag: `"gOUT_FillerCIPCompleted"` + +Utilizado por: + +- `CIPMain` +- `FillerControl` +- `Interlocking_Panel` +- `Output` +- `Procedure` + +## PLC Tag: `"gOUT_FillerCIPDrainReq"` + +Utilizado por: + +- `FillerControl` +- `Interlocking_Panel` +- `Output` + +## PLC Tag: `"gOUT_FillerCIPMode"` + +Utilizado por: + +- `FillerControl` +- `Interlocking_Panel` + +## PLC Tag: `"gOUT_FillerCIPRunning"` + +Utilizado por: + +- `FillerControl` +- `Interlocking_Panel` +- `Output` + +## PLC Tag: `"gOUT_FillerMinimumLevel"` + +Utilizado por: + +- `FillerControl` +- `Interlocking_Panel` +- `Output` +- `Pneumatic Valve Ctrl` +- `PumpsControl` + +## PLC Tag: `"gOUT_FillerProductAvail"` + +Utilizado por: + +- `FillerControl` +- `Interlocking_Panel` +- `Output` +- `ProcedureBlendFill StartUp` + +## PLC Tag: `"gOUT_FillerProduction"` + +Utilizado por: + +- `FillerControl` +- `Interlocking_Panel` +- `Output` + +## PLC Tag: `"gOUT_FillerRinseMode"` + +Utilizado por: + +- `FillerControl` +- `Interlocking_Panel` +- `Output` + +## PLC Tag: `"gOUT_PPM306_Run"` + +Utilizado por: + +- `PumpsControl` + +## PLC Tag: `"gOUT_PPM307_Run"` + +Utilizado por: + +- `PumpsControl` + +## PLC Tag: `"gOUT_PPN301_Run"` + +Utilizado por: + +- `CIPMain_Total Drain` +- `Pneumatic Valve Ctrl` +- `TankLevel` + +## PLC Tag: `"gOUT_PPN304_Run"` + +Utilizado por: + +- `PumpsControl` + +## PLC Tag: `"gOUT_PPN305_Run"` + +Utilizado por: + +- `CIPMain_Total Drain` +- `PumpsControl` + +## PLC Tag: `"gOUT_PPP302_Run"` + +Utilizado por: + +- `PumpsControl` + +## PLC Tag: `"gOUT_UVLamp_ONOFF"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"gPAMaselli_Error_Fault"` + +Utilizado por: + +- `Maselli_PA_Ctrl_Read` +- `Safeties` + +## PLC Tag: `"gPCM306HighPress"` + +Utilizado por: + +- `Output_CO2InjPress` +- `Safeties` + +## PLC Tag: `"gPTM304_HighLimit"` + +Utilizado por: + +- `Prod Tank PressCtrl` + +## PLC Tag: `"gPTM304_OkToRun"` + +Utilizado por: + +- `BlenderRun__Control` +- `Deaireator StartUp_Seq` +- `ProcedureProdTankRunOut` +- `Prod Tank PressCtrl` + +## PLC Tag: `"gPTN313_Acheaved"` + +Utilizado por: + +- `Deaireator StartUp_Seq` +- `VacuumCtrl` + +## PLC Tag: `"gPV_SyrBrixOk"` + +Utilizado por: + +- `SelCheckBrixSource` +- `SyrBrix Autocorrection` + +## PLC Tag: `"gPV_SyrDensOk"` + +Utilizado por: + +- `ProcedureFirstProduction` +- `ProcedureSyrup RunOut` +- `ProcedureSyrupLineMFMPrep` +- `SelCheckBrixSource` + +## PLC Tag: `"gP_AVM311"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_AVM312"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVM313"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_AVM315"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVM317"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVM317_1"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_AVM321"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVM322"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVM323"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVM326"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVM327"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVM328"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVM329"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVM330"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVM339"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVM340"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVM341"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_AVM342"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_AVM345"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVM346"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_AVM353"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVM362"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_AVM363"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_AVM366"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVM367"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVM368"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVM369"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVM371"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_AVM372"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVM380"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_AVM381"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_AVM385"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVM386"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVM388"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVM389"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVM391"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVM396"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_AVM397"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_AVN314"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVN318"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVN325"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_AVN327"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVN328"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVN329"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVN339"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_AVN340"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_AVN348"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_AVN349"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_AVN373"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVN374"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVN377"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVN378"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVP316"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVP316_1"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_AVP324"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_AVP344"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVP361"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVP363"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_AVP364"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_AVP365"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_AVP389"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVP390"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_AVS331"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVS332"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVS333"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVS334"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVS335"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVS336"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVS337"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_AVS338"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_BldTankPress_En"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_CIPChangeSanitize"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `FillerControl` + +## PLC Tag: `"gP_CIPDrainRequest"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_CIPHotPhase"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_CIPRunning"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `FillerControl` + +## PLC Tag: `"gP_CIP_CO2_Inj"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_CIP_Temp_En"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `PID_RVS318` + +## PLC Tag: `"gP_CarboPipe_En"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `PID_RMM303` + +## PLC Tag: `"gP_EV04"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_EV52"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_EV53"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_EV54"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_EV56"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_EV57"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_EV58"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_EV75"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_EV76"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_EV77"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_EV78"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_EV79"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_EV83"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_FillerProdLoad"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `ProcedureBlendFill StartUp` + +## PLC Tag: `"gP_FillerProdSend"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_LimitCO2PressValve"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `PID_RVM301` + +## PLC Tag: `"gP_PID_Head_Enable"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `PID_Filling_Head` + +## PLC Tag: `"gP_PID_Head_Manual"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_PPM303"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `PumpsControl` + +## PLC Tag: `"gP_PPN301"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_PPN304"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `PumpsControl` + +## PLC Tag: `"gP_PPN305"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `PumpsControl` + +## PLC Tag: `"gP_PPP302"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `PumpsControl` + +## PLC Tag: `"gP_RVN301"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `TankLevel` + +## PLC Tag: `"gP_RVN301_1"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `TankLevel` + +## PLC Tag: `"gP_RVN302"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"gP_RVN302_1"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gP_RVP303"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` +- `TankLevel` + +## PLC Tag: `"gP_SyrRoomPump"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gPrdTank_Empty"` + +Utilizado por: + +- `BlendFill StartUp_Seq` +- `FillerControl` +- `Pneumatic Valve Ctrl` +- `PumpsControl` +- `TankLevel` + +## PLC Tag: `"gPrdTank_Press_Fault"` + +Utilizado por: + +- `FillerControl` +- `Prod Tank PressCtrl` +- `Safeties` + +## PLC Tag: `"gProdAvailable"` + +Utilizado por: + +- `FillerControl` +- `Pneumatic Valve Ctrl` +- `PumpsControl` + +## PLC Tag: `"gProdDoubleChillerEn"` + +Utilizado por: + +- `BlenderCtrl_MachineInit` +- `PID_RVM319_PRD` + +## PLC Tag: `"gProdMeterTransferRecipe"` + +Utilizado por: + +- `Maselli_PA_Ctrl_Read` +- `Maselli_PA_Ctrl_Write` +- `mPDS_PA_Ctrl_Read` + +## PLC Tag: `"gProductChillerEn"` + +Utilizado por: + +- `BlenderCtrl_MachineInit` +- `BlenderRun__Control` +- `Input` +- `Output` +- `PID_RVM319_PRD` +- `ProcedureProdTankRunOut` + +## PLC Tag: `"gProductMFMResetTot"` + +Utilizado por: + +- `BlenderCtrl__Main` + +## PLC Tag: `"gProductMeterOK"` + +Utilizado por: + +- `CO2Tracking` +- `GetProdBrixCO2_Anal_Inpt` +- `Maselli_PA_Control` +- `ProcedureBrixTracking` +- `ProcedureProdBrixRecovery` +- `mPDS_PA_Control` + +## PLC Tag: `"gProductionONS"` + +Utilizado por: + +- `BlenderCtrl__Main` +- `BlenderRun__Control` + +## PLC Tag: `"gQTM301_TooHigh"` + +Utilizado por: + +- `Safeties` + +## PLC Tag: `"gQTM301_TooLow"` + +Utilizado por: + +- `Safeties` + +## PLC Tag: `"gQTM302_TooHigh"` + +Utilizado por: + +- `Safeties` + +## PLC Tag: `"gQTM302_TooLow"` + +Utilizado por: + +- `Safeties` + +## PLC Tag: `"gRMM301_Pos_Fault"` + +Utilizado por: + +- `ModValveFault` +- `Safeties` + +## PLC Tag: `"gRMM303_Pos_Fault"` + +Utilizado por: + +- `ModValveFault` +- `Safeties` + +## PLC Tag: `"gRMM304_Pos_Fault"` + +Utilizado por: + +- `ModValveFault` +- `Safeties` + +## PLC Tag: `"gRMP302_Pos_Fault"` + +Utilizado por: + +- `ModValveFault` +- `Safeties` + +## PLC Tag: `"gRSTBYPSGlicoleSys"` + +Utilizado por: + +- `CTRLCoolingSystem` + +## PLC Tag: `"gRVM301_Fault"` + +Utilizado por: + +- `Input` +- `Safeties` + +## PLC Tag: `"gRVN304Fault"` + +Utilizado por: + +- `Input` +- `Safeties` + +## PLC Tag: `"gRVN305Fault"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"gRinseClose_RMM301"` + +Utilizado por: + +- `PID_RMM301` +- `ProcedureProdTankRunOut` +- `Prod Tank RunOut_Seq` +- `ProductPipeRunOut` +- `ProductPipeRunOut_Seq` + +## PLC Tag: `"gRinseClose_RMP302"` + +Utilizado por: + +- `PID_RMP302` +- `ProcedureProdTankRunOut` +- `Prod Tank RunOut_Seq` +- `ProductPipeRunOut` +- `ProductPipeRunOut_Seq` + +## PLC Tag: `"gRinseDrainRunning"` + +Utilizado por: + +- `BlenderRinse` +- `PID_RVM301` +- `Pneumatic Valve Ctrl` +- `Prod Tank PressCtrl` + +## PLC Tag: `"gRinseONS"` + +Utilizado por: + +- `BlenderCtrl__Main` + +## PLC Tag: `"gSP_AVM311"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVM312"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `Deaireator StartUp_Seq` + +## PLC Tag: `"gSP_AVM313"` + +Utilizado por: + +- `BlendFill StartUp_Seq` +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVM315"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `CIP FlipFlop` +- `CIPMain_Total Drain` +- `Deaireator StartUp_Seq` +- `Prod Tank Drain_Seq` +- `ProductPipeDrain_Seq` + +## PLC Tag: `"gSP_AVM317"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `CIPMain_Flood` +- `CIPMain_Total Drain` + +## PLC Tag: `"gSP_AVM317_1"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVM321"` + +Utilizado por: + +- `Baialage` +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVM322"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `CIP FlipFlop` +- `CIPMain_Total Drain` +- `CarboWaterLine_Seq` +- `Deaireator StartUp_Seq` + +## PLC Tag: `"gSP_AVM323"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `CIP FlipFlop` +- `CIPMain_Total Drain` + +## PLC Tag: `"gSP_AVM326"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `CarboWaterLine_Seq` + +## PLC Tag: `"gSP_AVM327"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVM328"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVM329"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVM330"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `CIPMain_Total Drain` + +## PLC Tag: `"gSP_AVM339"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVM340"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVM341"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVM342"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVM345"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `CIPMain_Total Drain` +- `Prod Tank Drain_Seq` + +## PLC Tag: `"gSP_AVM346"` + +Utilizado por: + +- `BlendFill StartUp_Seq` +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVM353"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `CIP FlipFlop` +- `CIPMain_Total Drain` +- `Prod Tank Drain_Seq` +- `ProductPipeDrain_Seq` + +## PLC Tag: `"gSP_AVM362"` + +Utilizado por: + +- `BlendFill StartUp_Seq` +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `CIPMain_Total Drain` +- `Deaireator StartUp_Seq` + +## PLC Tag: `"gSP_AVM363"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVM366"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVM367"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVM368"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVM369"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `CIP FlipFlop` +- `CIPMain_Total Drain` +- `Deaireator StartUp_Seq` +- `Prod Tank Drain_Seq` +- `ProductPipeDrain_Seq` + +## PLC Tag: `"gSP_AVM371"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVM372"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `CIPMain_Total Drain` + +## PLC Tag: `"gSP_AVM380"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVM381"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVM385"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `CIPMain_Total Drain` + +## PLC Tag: `"gSP_AVM386"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `CIPMain_Total Drain` + +## PLC Tag: `"gSP_AVM388"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `CIPMain_Total Drain` + +## PLC Tag: `"gSP_AVM389"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `CIPMain_Flood` +- `CIPMain_Total Drain` + +## PLC Tag: `"gSP_AVM391"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVM396"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVM397"` + +Utilizado por: + +- `Baialage` +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVN314"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `CIP FlipFlop` +- `CIPMain_Total Drain` +- `Deaireator StartUp_Seq` + +## PLC Tag: `"gSP_AVN318"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVN325"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVN327"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `CIPMain_Total Drain` + +## PLC Tag: `"gSP_AVN328"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `CarboWaterLine_Seq` +- `Deaireator StartUp_Seq` + +## PLC Tag: `"gSP_AVN329"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVN339"` + +Utilizado por: + +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVN340"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVN348"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVN349"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVN373"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVN374"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVN377"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVN378"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVP316"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `CIP FlipFlop` +- `CIPMain_Total Drain` +- `Prod Tank Drain_Seq` + +## PLC Tag: `"gSP_AVP316_1"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `Prod Tank Drain_Seq` + +## PLC Tag: `"gSP_AVP324"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `CIPMain_Total Drain` +- `Syrup Line MFM Prep_Seq` +- `Syrup MFM StartUp_Seq` +- `Syrup Rinse QCO_Seq` + +## PLC Tag: `"gSP_AVP344"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `CIP FlipFlop` +- `CIPMain_Total Drain` +- `Syrup Line MFM Prep_Seq` + +## PLC Tag: `"gSP_AVP361"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `CIPMain_Flood` +- `CIPMain_Total Drain` +- `Syrup Rinse QCO_Seq` + +## PLC Tag: `"gSP_AVP363"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `Syrup Rinse QCO_Seq` + +## PLC Tag: `"gSP_AVP364"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVP365"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVP389"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `CIPMain_Total Drain` +- `Syrup Rinse QCO_Seq` + +## PLC Tag: `"gSP_AVP390"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `CIPMain_Total Drain` +- `Prod Tank RunOut_Seq` +- `ProductPipeRunOut_Seq` + +## PLC Tag: `"gSP_AVS331"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVS332"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVS333"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVS334"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVS335"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVS336"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVS337"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_AVS338"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_BldTankPress_En"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_CIPChangeSanitize"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_CIPDrainRequest"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_CIPHotPhase"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_CIPRunning"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_CIP_CO2_Inj"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_CIP_Temp_En"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_CarboPipe_En"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `CarboWaterLine_Seq` + +## PLC Tag: `"gSP_EV04"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `CIPMain_Flood` + +## PLC Tag: `"gSP_EV52"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_EV53"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_EV54"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_EV56"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_EV57"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_EV58"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_EV75"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_EV76"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_EV77"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_EV78"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_EV79"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_EV83"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `Deaireator StartUp_Seq` + +## PLC Tag: `"gSP_FillerProdLoad"` + +Utilizado por: + +- `BlendFill StartUp_Seq` +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_FillerProdSend"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_LimitCO2PressValve"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `Deaireator StartUp_Seq` + +## PLC Tag: `"gSP_PID_Head_Enable"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_PID_Head_Manual"` + +Utilizado por: + +- `BlendFill StartUp_Seq` +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_PPM303"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gSP_PPN301"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `CIPMain_Flood` +- `CarboWaterLine_Seq` +- `Deaireator StartUp_Seq` +- `Prod Tank RunOut_Seq` +- `ProductPipeRunOut_Seq` + +## PLC Tag: `"gSP_PPN304"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `ProcedureDeaireator StartUp` + +## PLC Tag: `"gSP_PPN305"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `CIPMain_Flood` +- `CarboWaterLine_Seq` +- `Deaireator StartUp_Seq` +- `Prod Tank RunOut_Seq` +- `ProductPipeRunOut_Seq` + +## PLC Tag: `"gSP_PPP302"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `Prod Tank RunOut_Seq` +- `ProductPipeRunOut_Seq` +- `Syrup Line MFM Prep_Seq` +- `Syrup MFM StartUp_Seq` +- `Syrup Rinse QCO_Seq` + +## PLC Tag: `"gSP_RVN301"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `CIPMain_Flood` +- `CarboWaterLine_Seq` +- `Deaireator StartUp_Seq` +- `Prod Tank RunOut_Seq` +- `ProductPipeRunOut_Seq` + +## PLC Tag: `"gSP_RVN301_1"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `CIPMain_Flood` +- `CarboWaterLine_Seq` +- `Deaireator StartUp_Seq` +- `Prod Tank RunOut_Seq` +- `ProductPipeRunOut_Seq` + +## PLC Tag: `"gSP_RVN302"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `CIPMain_Flood` + +## PLC Tag: `"gSP_RVN302_1"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `CIPMain_Flood` + +## PLC Tag: `"gSP_RVP303"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` +- `Prod Tank RunOut_Seq` +- `ProductPipeRunOut_Seq` +- `Syrup Line MFM Prep_Seq` +- `Syrup MFM StartUp_Seq` +- `Syrup Rinse QCO_Seq` + +## PLC Tag: `"gSP_SyrRoomPump"` + +Utilizado por: + +- `BlenderCtrl_ResetSPWord` +- `BlenderCtrl_UpdatePWord` + +## PLC Tag: `"gStillWaterByPassEn"` + +Utilizado por: + +- `BlenderCtrl__Main` +- `Deaireator StartUp_Seq` +- `Output` +- `ProcedureDeaireator StartUp` +- `PumpsControl` + +## PLC Tag: `"gStopBlendCarboError"` + +Utilizado por: + +- `BlenderRun__Control` +- `PID_RMM301` + +## PLC Tag: `"gSyrBrixOutSpec_Fault"` + +Utilizado por: + +- `Safeties` +- `SelCheckBrixSource` + +## PLC Tag: `"gSyrTank_HighLvl_Fault"` + +Utilizado por: + +- `Safeties` +- `TankLevel` + +## PLC Tag: `"gSyrTank_Loading"` + +Utilizado por: + +- `PID_RVP303` +- `TankLevel` + +## PLC Tag: `"gSyrTank_LowLvl_Fault"` + +Utilizado por: + +- `Safeties` +- `TankLevel` + +## PLC Tag: `"gSyrupDensOutSpec_Fault"` + +Utilizado por: + +- `Safeties` +- `SelCheckBrixSource` + +## PLC Tag: `"gSyrupLineNotSelected"` + +Utilizado por: + +- `Safeties` +- `System_Run_Out` + +## PLC Tag: `"gSyrupMeterOK"` + +Utilizado por: + +- `mPDS_SYR_PA_Control` + +## PLC Tag: `"gSyrupQcoRinse"` + +Utilizado por: + +- `PID_RMP302` +- `Pneumatic Valve Ctrl` +- `PumpsControl` +- `QCO Monitor` +- `System_Run_Out` + +## PLC Tag: `"gSyrupRoomEn"` + +Utilizado por: + +- `BlenderCtrl_MachineInit` +- `BlenderCtrl__Main` +- `CIPMain_Flood` +- `ProcedureFirstProduction` +- `PumpsControl` + +## PLC Tag: `"gSystem_Time"` + +Utilizado por: + +- `FW_DRand` + +## PLC Tag: `"gTTM306_H2O_TempTooHigh"` + +Utilizado por: + +- `Safeties` + +## PLC Tag: `"gTTM306_PRD_TempTooHigh"` + +Utilizado por: + +- `Safeties` + +## PLC Tag: `"gTrackFillerSpeed"` + +Utilizado por: + +- `BlenderRun_MeasFilSpeed` + +## PLC Tag: `"gUVLampHighTemperature"` + +Utilizado por: + +- `Input` +- `Safeties` + +## PLC Tag: `"gVacuumTimeOut_Fault"` + +Utilizado por: + +- `Safeties` +- `VacuumCtrl` + +## PLC Tag: `"gWaitLevToHold_TankPress"` + +Utilizado por: + +- `BlendFill StartUp_Seq` +- `Prod Tank PressCtrl` +- `QCO Monitor` +- `TankLevel` + +## PLC Tag: `"gWarningHorn"` + +Utilizado por: + +- `Output` + +## PLC Tag: `"gWaterChillerEn"` + +Utilizado por: + +- `BlenderCtrl_MachineInit` +- `Input` + +## PLC Tag: `"gWorkshopTest"` + +Utilizado por: + +- `BlendFill StartUp_Seq` +- `BlenderCtrl__Main` +- `BlenderPIDCtrl_ReadAnIn` +- `BlenderRun_MeasFilSpeed` +- `FillerControl` +- `Input` +- `ModValveFault` +- `Output` +- `Output_CO2InjPress` +- `PID_RMM301` +- `PID_RMM303` +- `PID_RMM304` +- `Pneumatic Valve Ctrl` +- `ProcedureCarboWaterLine` +- `ProcedureDeaireator StartUp` +- `Prod Tank PressCtrl` +- `ProductQuality` +- `PumpsControl` +- `SelCheckBrixSource` +- `System_Run_Out` + +## PLC Tag: `"gWorkshop_CIP_Signals"` + +Utilizado por: + +- `BlenderCtrl__Main` +- `Input` + +## PLC Tag: `"gWorkshop_Co2_Presence"` + +Utilizado por: + +- `BlenderCtrl__Main` +- `Input` +- `Output` + +## PLC Tag: `"gWorkshop_Filler_Signals_SIM"` + +Utilizado por: + +- `Input` + +## PLC Tag: `"gWorkshop_Syrup_Test"` + +Utilizado por: + +- `Input` +- `SelCheckBrixSource` + +## PLC Tag: `"gmPDS1000_NoOscillation"` + +Utilizado por: + +- `Safeties` + +## PLC Tag: `"gmPDS2000_Error_Fault"` + +Utilizado por: + +- `BlenderCtrl__Main` +- `Safeties` + +## PLC Tag: `"gmPDS_PA_Error_Fault"` + +Utilizado por: + +- `Safeties` +- `mPDS_PA_Ctrl_Read` + +## PLC Tag: `"gmPDS_SYR_PA_Error_Fault"` + +Utilizado por: + +- `mPDS_SYR_PA_Ctrl_Read` + +## PLC Tag: `"mAlarmHornReset"` + +Utilizado por: + +- `Safeties` + +## PLC Tag: `"mAuxTP1"` + +Utilizado por: + +- `MFMAnalogValues_Totalize` + +## PLC Tag: `"mAux_FP_M700_1"` + +Utilizado por: + +- `BlenderCtrl__Main` + +## PLC Tag: `"mAuxiliaryOn"` + +Utilizado por: + +- `Input` +- `Output` + +## PLC Tag: `"mBaialageReqONS"` + +Utilizado por: + +- `Baialage` + +## PLC Tag: `"mBaialage_Fault"` + +Utilizado por: + +- `Baialage` + +## PLC Tag: `"mBaialage_Request"` + +Utilizado por: + +- `Baialage` + +## PLC Tag: `"mBalaiageDoneONS"` + +Utilizado por: + +- `Baialage` + +## PLC Tag: `"mBlenderDrainTimer"` + +Utilizado por: + +- `CIPMain_Total Drain` + +## PLC Tag: `"mBlenderDrainTimerDelay"` + +Utilizado por: + +- `CIPMain_Total Drain` + +## PLC Tag: `"mBlenderEmprtyTON"` + +Utilizado por: + +- `CIPMain` + +## PLC Tag: `"mCIPRinseDlyOpenRMP302"` + +Utilizado por: + +- `TankLevel` + +## PLC Tag: `"mCIPRinseDlyOpenValve"` + +Utilizado por: + +- `TankLevel` + +## PLC Tag: `"mCIP_CompletedONS"` + +Utilizado por: + +- `CIPMain` + +## PLC Tag: `"mCO2MainValveDelay"` + +Utilizado por: + +- `Prod Tank PressCtrl` + +## PLC Tag: `"mCTS301AcheavedDly"` + +Utilizado por: + +- `CIPLocal_WaitEvent_Ctrl` + +## PLC Tag: `"mCTS302AcheavedDly"` + +Utilizado por: + +- `CIPLocal_WaitEvent_Ctrl` + +## PLC Tag: `"mDeairTank2_Flood"` + +Utilizado por: + +- `CIPMain_Flood` + +## PLC Tag: `"mDeairTank_Flood"` + +Utilizado por: + +- `CIPMain_Flood` + +## PLC Tag: `"mDeairTank_HighLvlONS"` + +Utilizado por: + +- `TankLevel` + +## PLC Tag: `"mDeairTank_LevFault"` + +Utilizado por: + +- `TankLevel` + +## PLC Tag: `"mDeairTank_LevFault1"` + +Utilizado por: + +- `TankLevel` + +## PLC Tag: `"mDeairTank_LevFault2"` + +Utilizado por: + +- `TankLevel` + +## PLC Tag: `"mDeairTank_LevFault3"` + +Utilizado por: + +- `TankLevel` + +## PLC Tag: `"mDeairTank_LoadDelay"` + +Utilizado por: + +- `TankLevel` + +## PLC Tag: `"mDelayBlendEn"` + +Utilizado por: + +- `BlenderRun__Control` + +## PLC Tag: `"mDelayCIPStopP2"` + +Utilizado por: + +- `PumpsControl` + +## PLC Tag: `"mDelayCIPStopP5"` + +Utilizado por: + +- `PumpsControl` + +## PLC Tag: `"mDelayCIPStopPPM303"` + +Utilizado por: + +- `PumpsControl` + +## PLC Tag: `"mDelayOpenAVM317"` + +Utilizado por: + +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"mDelayOpenAVM391"` + +Utilizado por: + +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"mDelayPowerOnTmr"` + +Utilizado por: + +- `BlenderCtrl__Main` + +## PLC Tag: `"mDelayProdStopPPM303"` + +Utilizado por: + +- `PumpsControl` + +## PLC Tag: `"mDelayStartPPN305"` + +Utilizado por: + +- `PumpsControl` + +## PLC Tag: `"mDelayStartPPN305Blend"` + +Utilizado por: + +- `PumpsControl` + +## PLC Tag: `"mDelayStartPPP302"` + +Utilizado por: + +- `PumpsControl` + +## PLC Tag: `"mDelayStopPPN305"` + +Utilizado por: + +- `PumpsControl` + +## PLC Tag: `"mEnCooler"` + +Utilizado por: + +- `BlenderRun__Control` + +## PLC Tag: `"mEnStopFromFillerTmr"` + +Utilizado por: + +- `BlenderRun__Control` + +## PLC Tag: `"mEnToRamp"` + +Utilizado por: + +- `BlenderRun__Control` + +## PLC Tag: `"mEnableStartTmr"` + +Utilizado por: + +- `BlenderCtrl_MachineInit` +- `BlenderRun__Control` + +## PLC Tag: `"mEqPressOk"` + +Utilizado por: + +- `Prod Tank PressCtrl` + +## PLC Tag: `"mFP_Recip_Main_Page"` + +Utilizado por: + +- `BlenderCtrl__Main` + +## PLC Tag: `"mFaultCloseRMM301Tmr"` + +Utilizado por: + +- `ModValveFault` + +## PLC Tag: `"mFaultCloseRMM303Tmr"` + +Utilizado por: + +- `ModValveFault` + +## PLC Tag: `"mFaultCloseRMM304Tmr"` + +Utilizado por: + +- `ModValveFault` + +## PLC Tag: `"mFaultCloseRMP302Tmr"` + +Utilizado por: + +- `ModValveFault` + +## PLC Tag: `"mFaultOpenRMM301Tmr"` + +Utilizado por: + +- `ModValveFault` + +## PLC Tag: `"mFaultOpenRMM303Tmr"` + +Utilizado por: + +- `ModValveFault` + +## PLC Tag: `"mFaultOpenRMM304Tmr"` + +Utilizado por: + +- `ModValveFault` + +## PLC Tag: `"mFaultOpenRMP302Tmr"` + +Utilizado por: + +- `ModValveFault` + +## PLC Tag: `"mFillerFirstLoadTimeOut"` + +Utilizado por: + +- `BlendFill StartUp_Seq` +- `ProcedureBlendFill StartUp` + +## PLC Tag: `"mFillerProdLoadedInit"` + +Utilizado por: + +- `BlendFill StartUp_Seq` +- `ProcedureBlendFill StartUp` + +## PLC Tag: `"mFinalPressOk"` + +Utilizado por: + +- `Prod Tank PressCtrl` + +## PLC Tag: `"mFlipFlopTON1"` + +Utilizado por: + +- `Prod Tank Drain_Seq` + +## PLC Tag: `"mGasInjectionPressNotOK"` + +Utilizado por: + +- `Safeties` + +## PLC Tag: `"mHVM302_Dly"` + +Utilizado por: + +- `BlenderCtrl__Main` + +## PLC Tag: `"mNoRecircFlowDly"` + +Utilizado por: + +- `CIPLocal` + +## PLC Tag: `"mONS"` + +Utilizado por: + +- `CIPLocal` + +## PLC Tag: `"mONS2"` + +Utilizado por: + +- `CIPLocal` + +## PLC Tag: `"mOpenAVS333_335TOF"` + +Utilizado por: + +- `CIPLocal_WaitEvent_Ctrl` + +## PLC Tag: `"mPAMaselliTmrFault"` + +Utilizado por: + +- `Maselli_PA_Ctrl_Read` + +## PLC Tag: `"mPAMaselli_RecipeFTRIG"` + +Utilizado por: + +- `Maselli_PA_Ctrl_Write` + +## PLC Tag: `"mPAMaselli_RecipeRTRIG"` + +Utilizado por: + +- `Maselli_PA_Ctrl_Write` + +## PLC Tag: `"mPAMaselli_RecipeTmr1"` + +Utilizado por: + +- `Maselli_PA_Ctrl_Write` + +## PLC Tag: `"mPAMaselli_TrnsfrFault"` + +Utilizado por: + +- `Maselli_PA_Ctrl_Write` + +## PLC Tag: `"mPAmPDSTmrComErr"` + +Utilizado por: + +- `mPDS_PA_Ctrl_Read` + +## PLC Tag: `"mPCM306_Reset"` + +Utilizado por: + +- `Output` +- `Output_CO2InjPress` + +## PLC Tag: `"mPDS_PA_OutDigitByte"` + +Utilizado por: + +- `mPDS_PA_Control` + +## PLC Tag: `"mPDS_PA_OutDigitByteDI1E"` + +Utilizado por: + +- `mPDS_PA_Control` + +## PLC Tag: `"mPDS_PA_OutDigitByteDI2E"` + +Utilizado por: + +- `mPDS_PA_Control` + +## PLC Tag: `"mPID_RMM301_Int"` + +Utilizado por: + +- `PID_RMM301` + +## PLC Tag: `"mPID_RMM303_Int"` + +Utilizado por: + +- `PID_RMM303` + +## PLC Tag: `"mPID_RMM304_Int"` + +Utilizado por: + +- `PID_RMM304` + +## PLC Tag: `"mPID_RMP302_Int"` + +Utilizado por: + +- `PID_RMP302` + +## PLC Tag: `"mPID_RVN302_Int"` + +Utilizado por: + +- `PID_RVN302` + +## PLC Tag: `"mPPM303RampSlewMax"` + +Utilizado por: + +- `BlendFill StartUp_Seq` + +## PLC Tag: `"mPPM303_Pump"` + +Utilizado por: + +- `PumpsControl` + +## PLC Tag: `"mPPM306_Pump"` + +Utilizado por: + +- `PumpsControl` + +## PLC Tag: `"mPPN301_Pump"` + +Utilizado por: + +- `PumpsControl` + +## PLC Tag: `"mPPN304_Pump"` + +Utilizado por: + +- `PumpsControl` + +## PLC Tag: `"mPPN305_Pump"` + +Utilizado por: + +- `PumpsControl` + +## PLC Tag: `"mPPP302_Pump"` + +Utilizado por: + +- `PumpsControl` + +## PLC Tag: `"mPrdTank_Flood"` + +Utilizado por: + +- `CIPMain_Flood` + +## PLC Tag: `"mProdTankPressCO2_N2"` + +Utilizado por: + +- `BlenderCtrl_MachineInit` + +## PLC Tag: `"mProdTankPressCO2_StAir"` + +Utilizado por: + +- `BlenderCtrl_MachineInit` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"mProdTankPressOnlyCO2"` + +Utilizado por: + +- `BlenderCtrl_MachineInit` +- `Pneumatic Valve Ctrl` + +## PLC Tag: `"mPulse_100Kg_CO2"` + +Utilizado por: + +- `MFMAnalogValues_Totalize` + +## PLC Tag: `"mPulse_100Lt_Syrup"` + +Utilizado por: + +- `MFMAnalogValues_Totalize` + +## PLC Tag: `"mPulse_10Lt_Water"` + +Utilizado por: + +- `MFMAnalogValues_Totalize` + +## PLC Tag: `"mRVM301_Fault"` + +Utilizado por: + +- `Prod Tank PressCtrl` + +## PLC Tag: `"mRequestTP"` + +Utilizado por: + +- `CIPLocal` + +## PLC Tag: `"mResetFTM303TotTmr"` + +Utilizado por: + +- `BlenderCtrl__Main` + +## PLC Tag: `"mResetFTN301TotTmr"` + +Utilizado por: + +- `BlenderCtrl__Main` + +## PLC Tag: `"mResetFTP302TotTmr"` + +Utilizado por: + +- `BlenderCtrl__Main` + +## PLC Tag: `"mResetProductTotTmr"` + +Utilizado por: + +- `BlenderCtrl__Main` + +## PLC Tag: `"mResetTotalizerTmr"` + +Utilizado por: + +- `BlenderCtrl__Main` + +## PLC Tag: `"mSyrBxDelayAlrm"` + +Utilizado por: + +- `SelCheckBrixSource` + +## PLC Tag: `"mSyrDensDelayAlrm"` + +Utilizado por: + +- `SelCheckBrixSource` + +## PLC Tag: `"mSyrRoomH2OPumpFaultDly"` + +Utilizado por: + +- `PumpsControl` + +## PLC Tag: `"mSyrTank_Flood"` + +Utilizado por: + +- `CIPMain_Flood` + +## PLC Tag: `"mSyrTank_HighLvlONS"` + +Utilizado por: + +- `TankLevel` + +## PLC Tag: `"mSyrTank_LevFault"` + +Utilizado por: + +- `TankLevel` + +## PLC Tag: `"mSyrTank_LevFault1"` + +Utilizado por: + +- `TankLevel` + +## PLC Tag: `"mSyrTank_LevFault2"` + +Utilizado por: + +- `TankLevel` + +## PLC Tag: `"mSyrTank_LoadDelay"` + +Utilizado por: + +- `TankLevel` + +## PLC Tag: `"mTON_Reset_RecircPHE_Goo"` + +Utilizado por: + +- `BlenderRun__Control` + +## PLC Tag: `"mTTM306_H2O_HighDlyAlm"` + +Utilizado por: + +- `ProductQuality` + +## PLC Tag: `"mTTM306_PRD_HighDlyAlm"` + +Utilizado por: + +- `ProductQuality` + +## PLC Tag: `"mTempAcheavedDly"` + +Utilizado por: + +- `CIPLocal_WaitEvent_Ctrl` + +## PLC Tag: `"mTimeTN301_StartupFilter"` + +Utilizado por: + +- `Deaireator StartUp_Seq` + +## PLC Tag: `"mTmrCO2High"` + +Utilizado por: + +- `ProductQuality` + +## PLC Tag: `"mVacuumFaultTmr"` + +Utilizado por: + +- `VacuumCtrl` + +## PLC Tag: `"mWaitStableFlow"` + +Utilizado por: + +- `BlenderRun__Control` + +## PLC Tag: `"mWarningHornReset"` + +Utilizado por: + +- `Safeties` + +## PLC Tag: `"m_StartRecircPHE"` + +Utilizado por: + +- `BlenderRun__Control` + +## PLC Tag: `"m_StopRecircPHE"` + +Utilizado por: + +- `BlenderRun__Control` + +## PLC Tag: `CLK_0.1S` + +Utilizado por: + +- `Clock Signal` +- `Input_DigitalScanner` + +## PLC Tag: `CLK_0.2S` + +Utilizado por: + +- `Clock Signal` + +## PLC Tag: `CLK_0.5S` + +Utilizado por: + +- `BlendFill StartUp_Seq` +- `CarboWaterLine_Seq` +- `Clock Signal` +- `Deaireator StartUp_Seq` +- `Prod Tank Drain_Seq` +- `Prod Tank RunOut_Seq` +- `ProductPipeDrain_Seq` +- `ProductPipeRunOut_Seq` +- `Syrup Line MFM Prep_Seq` +- `Syrup MFM StartUp_Seq` +- `Syrup Rinse QCO_Seq` + +## PLC Tag: `CLK_0.8S` + +Utilizado por: + +- `Clock Signal` + +## PLC Tag: `CLK_1.0S` + +Utilizado por: + +- `CIPReportManager` +- `Clock Signal` +- `Pneumatic Valve Fault` +- `ProdReportManager` +- `QCO Monitor` +- `ReadAnalogIn` + +## PLC Tag: `CLK_2.0S` + +Utilizado por: + +- `Clock Signal` + +## PLC Tag: `DO_Red_Lamp` + +Utilizado por: + +- `Output` + +## PLC Tag: `M100.0` + +Utilizado por: + +- `QCO Monitor` + +## PLC Tag: `M100.3` + +Utilizado por: + +- `QCO Monitor` + +## PLC Tag: `M100.6` + +Utilizado por: + +- `QCO Monitor` + +## PLC Tag: `M100.7` + +Utilizado por: + +- `QCO Monitor` + +## PLC Tag: `M106.0` + +Utilizado por: + +- `RecipeManagement - Prod` + +## PLC Tag: `M110.0` + +Utilizado por: + +- `PumpsControl` + +## PLC Tag: `gBlenderFlowFltEn` + +Utilizado por: + +- `BlenderRun__Control` + +## PLC Tag: `mFillerProdLoadedInit` + +Utilizado por: + +- `BlendFill StartUp_Seq` +- `ProcedureBlendFill StartUp` + +## PLC Tag: `mPPM303RampEndFreq` + +Utilizado por: + +- `BlendFill StartUp_Seq` + +## PLC Tag: `mPPM303RampSlewMax` + +Utilizado por: + +- `BlendFill StartUp_Seq` + diff --git a/04-SIDEL/07 - E5.007600 - SAE469/E5.007600 - SAE469 - FDM.md b/04-SIDEL/07 - E5.007600 - SAE469/E5.007600 - SAE469 - FDM.md index 7792b81..07a2b93 100644 --- a/04-SIDEL/07 - E5.007600 - SAE469/E5.007600 - SAE469 - FDM.md +++ b/04-SIDEL/07 - E5.007600 - SAE469/E5.007600 - SAE469 - FDM.md @@ -18,4 +18,6 @@ New Promass: from 0027 | | | 1055 | | 6 | | -![[Pasted image 20250428173456.png]] \ No newline at end of file +![[Pasted image 20250428173456.png]] + +802U0 Promass 300 - Node 31 diff --git a/04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/ADAM -.md b/04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/ADAM -.md new file mode 100644 index 0000000..106f488 --- /dev/null +++ b/04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/ADAM -.md @@ -0,0 +1,20 @@ +* Firmware minimo 4.15 + + +Tutte due 0-20 + +UR62 +19200 + + +UR29 +115000 + + +![[04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/adjuntos/Screenshot 2025-05-06 111701.jpg]] + +![[04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/adjuntos/Screenshot 2025-05-06 114159.jpg]] + +![[04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/adjuntos/Screenshot 2025-05-06 113243.jpg]] + +![[04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/adjuntos/Screenshot 2025-05-06 111755.jpg]] \ No newline at end of file diff --git a/04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Emails/Diet As Regular - Emails.md b/04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Emails/Diet As Regular - Emails.md new file mode 100644 index 0000000..99e0b45 --- /dev/null +++ b/04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Emails/Diet As Regular - Emails.md @@ -0,0 +1,3564 @@ + +*** +## Project Overview + +These emails document communications between Maselli Misure S.p.A. and Sidel regarding measurement equipment for a project at San Giorgio in Bosco (referred to as "Diet As Regular"). The discussions focus on testing and configuring refractometers, ADAM modules, and conductivity equipment. + +## Key Equipment + +- **UR62 refractometer** with ADAM RS485/4-20mA converter +- **UR29 refractometer** with ADAM RS485/4-20mA converter +- **Conductivity meter** for water measurement + +## Testing Arrangements + +- Tests scheduled for May 6, 2025, at Maselli facilities +- Testing may extend to a second day if needed +- Equipment to be available for testing rather than shipped to Sidel + +## Sidel Responsibilities for Testing + +- PC with HMI machine interface +- PLC machine +- 24Vdc power supply +- USB-RS485 converter (Moxa) for ADAM programming + +## Maselli Responsibilities for Testing + +- Instruments purchased for the project +- Cables and required accessories + +## Technical Discussions + +- Significant focus on signal latency concerns +- UR24 device in Tolosa reportedly provides measurements at 2-second intervals +- Initial requirement of 300ms response time appears difficult to achieve +- Tests show MP06 connected to two sensors cannot meet 300ms requirement even with increased serial speed (115200 baud vs. current 19200) +- Discussions about using direct ADAM modules versus routing through MP06 +- Configuration options being considered: + 1. ADAM modules directly to PLC (preferred for minimizing latency) + 2. ADAM outputs to MP06, then to PLC via both Profibus and 4-20mA + +## Delivery Schedule + +- UR62, UR29 with ADAM module expected by April 28 +- Conductivity kit expected by May 6 +- Technical documentation for the equipment being shared + +## Documentation and Firmware Information + +- ADAM configuration procedure and URXX protocol format documentation +- Module firmware with updates mentioned in "procedura v3" +- Utility software "MAU_V_2_9_6.msi" provided for configuration +- ADAM-4000 Series User Manual (Ed.9) +- References to "Maselli_protocol_with_Adam.pdf" and "Maselli_protocol_with_Adam_2.pdf" +- Firmware updates for ADAM modules included as part of the planned testing + +## Future Development and Speed Improvements + +- Discussions about developing a faster communication bus for future applications +- Current limitation: MP06 connected to two sensors cannot meet 300ms requirement even at increased serial speed (115200 baud vs. standard 19200) +- Problem identified as intrinsic to the master-slave protocol between MP06 and sensors +- Historical context: Previous discussions with Paolo (retired software developer) indicated that the "poor speed" of UR24 would be resolved with new generation of instruments equipped with new microcontrollers +- Impact analysis: For large machines (60,000 l/h), a 300ms latency equates to 5 liters of product flow at nominal speed +- Current UR24 device in Tolosa reportedly provides measurements at 2-second intervals, causing significant uncertainty in syrup measurements for large machines +- Matteo indicated new development was in progress but not yet ready (responded "Soon, soon" when asked for documentation on the new faster bus) + + +| Tamaño máquina | 6 | 9 | 10 | +| ---------------------------------------------- | ----- | ----- | ----- | +| Flujo nominal (l/h) | 27000 | 54000 | 60000 | +| Flujo mínimo (l/h) | 13500 | 27000 | 30000 | +| Equivalente 300ms a velocidad nominal (litros) | 2,25 | 4,5 | 5 | +| Equivalente 300ms a velocidad mínima (litros) | 1,125 | 2,25 | 2,5 | + +# Índice de Mensajes + +- 06-05-2025 - Guerra, Riccardo - [[Diet As Regular - Emails#I: SIDEL (01011476) R: Nuova configurazione e banAndrea Maselli co di test latenza, offerta RDO250201 per UR29 con modulo Adam e conducibilità|I-SIDEL-01011476-R-Nuova-configurazione-e-banAndrea-Maselli-andreamasellimasellicomco-di-test-latenza-offerta-RDO250201-per-UR29-con-modulo-Adam-e-conducibilità]] +- 06-05-2025 - Matteo Quarantelli - [[Diet As Regular - Emails#{EXT} utility|EXT-utility]] +- 06-05-2025 - Matteo Quarantelli - [[Diet As Regular - Emails#{EXT} I: foto procedure adam sidel|EXT-I-foto-procedure-adam-sidel]] +- 06-05-2025 - Matteo Quarantelli - [[Diet As Regular - Emails#{EXT} R: SIDEL (01011476) R: Nuova configurazione e banco di test latenza, offerta RDO250201 per UR29 con modulo Adam e conducibilità|EXT-R-SIDEL-01011476-R-Nuova-configurazione-e-banco-di-test-latenza-offerta-RDO250201-per-UR29-con-modulo-Adam-e-conducibilità]] +- 06-05-2025 - Matteo Quarantelli - [[Diet As Regular - Emails#{EXT} R: SIDEL (01011476) R: Nuova configurazione e banco di test latenza, offerta RDO250201 per UR29 con modulo Adam e conducibilità|EXT-R-SIDEL-01011476-R-Nuova-configurazione-e-banco-di-test-latenza-offerta-RDO250201-per-UR29-con-modulo-Adam-e-conducibilità]] +- 15-04-2025 - Matteo Quarantelli - [[Diet As Regular - Emails#{EXT} R: SIDEL (01011476) R: Nuova configurazione e banco di test latenza, offerta RDO250201 per UR29 con modulo Adam e conducibilità|EXT-R-SIDEL-01011476-R-Nuova-configurazione-e-banco-di-test-latenza-offerta-RDO250201-per-UR29-con-modulo-Adam-e-conducibilità]] + +--- + ++ 33828f4d4ea4fe2b9c52f4ecfe240929 + +### I: SIDEL (01011476) R: Nuova configurazione e banAndrea Maselli co di test latenza, offerta RDO250201 per UR29 con modulo Adam e conducibilità + +- 06-05-2025 + +Inoltro documento aggiornato (V2) +Matteo + +Ing. Matteo Quarantelli +Technical manager + +Maselli Misure S.p.A. +P: + + 39 0521 257450 +E: +Parma, Italy +www.maselli.com + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + +General + + Quarantelli + + 'Orsi, Walter [EXTERNAL]' ; 'walter.orsi' + +Ciao Riccardo, +allegati i documenti promessi. + +Procedura configurazione ADAMFormato protocollo URXX (UR62 e UR29) in configurazione ADAM. + +Matteo + +Ing. Matteo Quarantelli +Technical manager + +Maselli Misure S.p.A. +P: + + 39 0521 257450 +E: +Parma, Italy +www.maselli.com + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + + Quarantelli + + Santini, Paolo ; Federico Chiesa ; Orsi, Walter [EXTERNAL] ; + walter.orsi + +Ciao Riccardo, ok per il 6. +Ci aggiorniamo prima nel caso ci siano variazioni sul tema. +Matteo + +Ing. Matteo Quarantelli +Technical manager + +Maselli Misure S.p.A. +P: + + 39 0521 257450 +E: +Parma, Italy +www.maselli.com + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + + Riccardo + + Matteo Quarantelli + + Alessandra Bolzoni ; + Passera, Alessandro ; + Santini, Paolo ; + Federico Chiesa ; + Orsi, Walter [EXTERNAL] ; + walter.orsi + +Grazie Pietro +Confermo quello che ci siamo detti e tu hai scritto +Matteo fammi sapere se la sett 19, martedì 06-05, possiamo trovarci in Maselli per il test, il tempo necessario, se fosse necessario tornare anche il giorno dopo + non credo sia un problema +Il test prevede: + +A carico Sidel + +Pc con interfaccia HMI della macchina +PLC macchina +Alimentatore 24Vdc +Convertitore USB-R485 (Moxa) [per programmazione ADAM] + +Da parte Maselli: + +Strumenti acquistati con il progetto +Cavi +…. + +Test: + +Collegamento strumenti e verifica funzionale con il PLC +Programmazione/settaggio strumenti, manuale +Aggiornamento firmware Adam, manuale + +Ciao +Riccardo + +General + + Bracchi + + Federico Chiesa + + Alessandra Bolzoni ; + Passera, Alessandro ; + Santini, Paolo ; + Matteo Quarantelli + +Ciao Riccardo, +come appena discusso al telefono, procediamo quindi per la messa a disposizione di tutto il materiale per il 6/05. +@Federico: appena rientra, Alessandra modificherà le date in CDO per allinearle + tutte al 6/05. Il materiale non andrà spedito, ma reso disponibile per il test che verrà effettuato presso di noi (finito il test, la Sidel poi lo ritirerà) +@Riccardo: per la visita da noi per testare insieme il sistema, puoi coordinarti + direttamente con Matteo, sulla base di questa data. +Grazie a tutti, +Pietro + +Pietro Bracchi +Regional Sales Manager + +Maselli Misure S.p.A. +M: ++ 39 338 5037946 +P: + + 39 0521 257410 +E: +Parma, Italy +www.maselli.com + + + + message with any third party, without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future. + + +General + + Bracchi + + Alessandra Bolzoni ; + Passera, Alessandro ; + Santini, Paolo ; + Matteo Quarantelli ; + Federico Chiesa + +Ciao Riccardo, +scusa per il ritardo nella mia risposta, ma stavamo aspettando anche delle informazioni da un fornitore. +Ti confermo che: + +La consegna del materiale sotto-riportato è prevista per il +28/04 +UR62 A0840184-CA13AA14ADF6N A0840192-BC11BA11UR29 A0840268-AA14LD21D con modulo ADAM A0117271Nota: dal momento che il deflettore DF15 A0840316-ABD1AA91B è già stato acquistato dal cliente finale, non credo abbiate intenzione di prenderlo, ma per favore confermami + +La consegna del materiale sotto-riportato è prevista per il +06/05 +Kit Conducibilità A0559015Nota: la settimana prossima potremmo avere un eventuale aggiornamento su un possibile anticipo. + +Se per te va bene, ci possiamo sentire alla fine della settimana prossima, per capire quale potrebbe essere lo schedule reale per l’attività di prova congiunta presso la nostra sede che hai ipotizzato con Matteo. +Fammi sapere. +Grazie in anticipo. +Approfitto di questa mail per chiederti un aggiornamento sul vostro ordine: sai quando dovrebbe arrivare? +Ancora grazie, +Pietro + +Pietro Bracchi +Regional Sales Manager + +Maselli Misure S.p.A. +M: ++ 39 338 5037946 +P: + + 39 0521 257410 +E: +Parma, Italy +www.maselli.com + + + + message with any third party, without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future. + + + Riccardo + + Alessandra Bolzoni ; + Passera, Alessandro ; + Santini, Paolo + +Ciao Pietro +Mi sai dire, in base ai vostri piani di produzione, quando riuscite ad avere i componenti per poterli provare insieme a voi. +Grazie +Ciao +Riccardo + +General + + Riccardo + + Alessandra Bolzoni ; + Passera, Alessandro ; + Santini, Paolo + +Ok grazie +Mi torna adesso anche con la richiesta di Ugo Bini +Ciao +Riccardo + + Bracchi + + Alessandra Bolzoni ; + Passera, Alessandro ; + Santini, Paolo + +Ciao Riccardo, +anche per l’UR62 viene fornito il modulo ADAM; non appare in offerta come riga separata perché l’informazione è intrinseca nel modello dell’UR62 stesso. +Pietro + +Pietro Bracchi +Regional Sales Manager + +Maselli Misure S.p.A. +M: ++ 39 338 5037946 +P: + + 39 0521 257410 +E: +Parma, Italy +www.maselli.com + + + + message with any third party, without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future. + + +General + + Riccardo + + Alessandra Bolzoni ; + Passera, Alessandro ; + Santini, Paolo + +Grazie Pietro +Ho un dubbio soltanto per l’UR62 +Questo strumento esce direttamente in 4-20mA, giusto? +Non ha bisogno del convertitore ADAM come l’UR29, lo chiedo perché nello schema condiviso da Matteo ha messo 2 ADAM uno ciascun refrattometro. + +Magari mi sono perso qualcosa +Grazie +Ciao +Riccardo + + +General + + Bracchi + + Alessandra Bolzoni ; + Passera, Alessandro ; + Santini, Paolo + +Ciao Riccardo, +ti confermo che abbiamo preso in carico la tua richiesta di mettere in produzione, prima dell’arrivo del vostro ordine ufficiale, il materiale come da offerte che ri-allego, +Appena arriverà il vostro ordine, aggiorneremo la nostra conferma d’ordine (che per ora non vi condividiamo) con il numero d’ordine stesso e ve la faremo avere. +Nei prossimi giorni ti confermeremo la consegna tentativa, in base alle informazioni che ci verranno dalla Produzione. +Allego poi la documentazione disponibile per quanto riguarda il Kit Conducibilità. +Grazie, +Pietro + +Pietro Bracchi +Regional Sales Manager + +Maselli Misure S.p.A. +M: ++ 39 338 5037946 +P: + + 39 0521 257410 +E: +Parma, Italy +www.maselli.com + + + + message with any third party, without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future. + + +General + + Riccardo + + Alessandra Bolzoni ; + Passera, Alessandro ; + Santini, Paolo + +Ciao Pietro +A seguito della telefonata ti scrivo per chiederti se potete mettere in produzione gli strumenti previsti in questo progetto, Diet As Regular - San Giorgio in Bosco + -. + +Refrattometro UR62 con convertitore ADAM 4-20mA +Refrattometro UR29 con convertitore ADAM 4-20mA +Conduttivimetro per misura su acqua +Ti chiedo anche un manuale del conduttivimetro per poterlo codificare correttamente ed avere un’idea della configurazione che poi quando verremo a testare lo spulceremo + bene. +Metto in copia anche Paolo per la codifica del convertitore ADAM + +Attendo tua conferma il manualetto e il tempo di consegna degli strumenti così pianifichiamo nel dettaglio +Grazie +Ciao +Riccardo +General +General + + Bracchi + +Buongiorno Paolo, +in allegato la documentazione richiesta relativa alle due offerte nuovamente allegate, per quanto riguarda l’UR62 e l’UR29 +Essendo materiale d’acquisto, non abbiamo invece i disegni relativi al conduttivimetro. +Resto a disposizione per ulteriori chiarimenti. +Grazie, +Pietro + +Pietro Bracchi +Regional Sales Manager + +Maselli Misure S.p.A. +M: ++ 39 338 5037946 +P: + + 39 0521 257410 +E: +Parma, Italy +www.maselli.com + + + + message with any third party, without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future. + + +General + + Bracchi + + Cantarelli, Paolo + +Buongiorno Paolo, +ho chiesto all’ufficio Tecnico di verificare quali disegni abbiamo disponibili. +Appena mi confermano, la informo. +Grazie, +Pietro + +Pietro Bracchi +Regional Sales Manager + +Maselli Misure S.p.A. +M: ++ 39 338 5037946 +P: + + 39 0521 257410 +E: +Parma, Italy +www.maselli.com + + + + message with any third party, without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future. + + + Bolzoni + +Buongiorno Paolo, +Le risponderà il collega Pietro Bracchi che sta seguendo il progetto e che ci sta leggendo in copia. + +Grazie +Cordiali saluti +Alessandra + + Paolo + +Buongiorno Alessandra +Nel ringraziarla per l’offerta inviata, le chiedo cortesemente se potrebbe inviarmi anche la documentazione tecnica ed i disegni / modelli 3D dei componenti sottoelencati + affinché possa procedere con la codifica + +UR62 e relativi attacchi +UR29 e relativi attacchi +conduttivimetro e relativi attacchi +Grazie +Cordiali saluti +Paolo Cantarelli +Mechanical Engineer - +Service Engineering + +Sidel +s.p.a. +Via la Spezia 241/A +43126 Parma, ITALY +Tel: +39 0521 999566 +www.sidel.com +P +Please consider the environment before printing this e-mail + + + +General + + Bolzoni + + Cantarelli, Paolo ; + walter.orsi ; + Pietro Bracchi ; + Matteo Quarantelli + + di test latenza, offerta RDO250201 per UR29 con modulo Adam e conducibilità + +Buongiorno, +Come da accordi intercorsi, invio la nostra offerta RDO250201 per: + +UR29 solo modulo ADAM (e attacco DN40 a saldare)Kit conducibilità composto da sonda e ricevitore (e nocciolo per installazione). +Tempo di consegna: 6 settimane dall’ordine con possibilità di anticipo in caso di esigenze particolari. + +Cordiali saluti + +Alessandra Bolzoni + +Sales coordinator + +Maselli Misure S.p.A. +P: + + 39 0521 257400 +E: +Parma, Italy + +www.maselli.com + + + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + + + +General + + Bracchi + + Matteo Quarantelli + + Andrea Devitis ; + Pierpaolo Fallini ; + 'walter.orsi' ; + 'Passera, Alessandro' ; + 'Cantarelli, Paolo' ; + Alessandra Bolzoni + +Questa volta con l’allegato. +Grazie, +Pietro + +Pietro Bracchi +Regional Sales Manager + +Maselli Misure S.p.A. +M: ++ 39 338 5037946 +P: + + 39 0521 257410 +E: +Parma, Italy +www.maselli.com + + + + message with any third party, without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future. + + + Bracchi + + Matteo Quarantelli + + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro ; + Cantarelli, Paolo ; + Alessandra Bolzoni + +Ciao Riccardo, +per quanto riguarda la prima riga (UR62, vedi parte evidenziata in giallo sotto), puoi fare riferimento all’offerta allegata. +Come a tua telefonata con Matteo, a breve ti faremo poi avere l’offerta per: + +UR29 solo modulo ADAM (e attacco DN40 a saldare)Kit conducibilità composto da sonda e ricevitore (e nocciolo per installazione). +Grazie, +Pietro + +Pietro Bracchi +Regional Sales Manager + +Maselli Misure S.p.A. +M: ++ 39 338 5037946 +P: + + 39 0521 257410 +E: +Parma, Italy +www.maselli.com + + + + message with any third party, without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future. + + + Riccardo + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro ; + Cantarelli, Paolo + +Grazie Matteo +Ho provato a chiamarti +Intendevo dire di tenere i due Adam sui refrattometri, la loro uscita 4-20mA, andrebbe all’MP06, l’MP06 sarebbe collegato in Profibus ed anche in 4-20mA, verso + il PLC, questo per garantire la velocità di trasmissione dai refrattometri, se l’MP06 non inserisce latenza nel loop 4-20mA, ed il collegamento Profibus, con l’opportuno telegramma vi consentirebbe di ricevere i dati richiesti, ed avremmo un test anche della + latenza Profibus su questa macchina. +Pietro quando puoi inviarci l’offerta aggiornata? +Inse4risco nel loop anche Paolo Cantarelli che si occuperà della parte meccanica del progetto, inclusa la codifica dei componenti +Grazie +Ciao +Riccardo + +General + + Quarantelli + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro + +Ciao Riccardo, vedi sotto le risposte. +A presto +Matteo + +Ing. Matteo Quarantelli +Technical manager + +Maselli Misure S.p.A. +P: + + 39 0521 257450 +E: +Parma, Italy +www.maselli.com + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + +General + + Riccardo + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro + +Grazie Matteo +Bene, l’attuatore di che tipo è? Nei 900ms ce anche il suo ritardo di attuazione, anche il tempo di ciclo del PLC ma con una 1200 immagino sia del ms. la sola latenza + del loop dell’UR potrebbe essere confrontabile con i 300ms attesi. +Questo poi lo verifichiamo in campo. +OK +Direi che sulla prima applicazione verificheremo le prestazioni in campo, ma non mi aspetto problemi anche perché la taglia della macchina non è grande e quindi + i flussi sono relativamente bassi. +Matteo mi puoi aggiornare lo schema completo? +Vedi allegato SLIDE 2 +Ha senso inserire comunque l’MP06 nel loop di corrente tra i sensori ed il PLC, ingresso 4-20 ed uscita 4-20, si avrebbe un incremento di latenza, non credo sia + eccessivo, ma avremmo il vantaggio di poter inviare i dati che avevamo condiviso inizialmente: +Intendi al posto dell’ADAM ? direi di no altrimenti introdurremmo un riardo di alcuni secondi. +Se vuoi possiamo predisporre anche l’MP06 (SLIDE 1) per una seconda tornata di test. Il test della vita deve essere fatto con gli ADAM (SLIDE 2) ed il log dovrebbe farlo il plc. + +centralina MP06 Maselli per gestione Maselli da remoto, alla quale vanno passati alcuni dati: +da Sidel a Maselli +Alcuni di questi non sono al momento trasferibili da PLC a MP06 (manca telegramma e implementazione sw) + +lettura brix UR62 in ingresso linea sciroppo [°Brix] +lettura brix UR29 da stream sciroppo [°Brix] +temperatura sciroppo [°C] +flusso sciroppo [kg/min] +flusso acqua [l/min] +densità sciroppo [kg/dm3] +livello tank sciroppo [%] +volume attivo tank sciroppo [L] +lettura brix prodotto [°Brix] +temperatura prodotto [°C] +CO2 prodotto +lettura conducibilità dell’acqua in ingresso macchina (?) +temperatura acqua in ingresso macchina (?) +Pressione ingresso linea sciroppo +Pressione stream sciroppo + +segnali da Maselli a Sidel (Profibus): + +Brix sciroppo ingresso linea sciroppo UR62Brix sciroppo stream sciroppo UR29Conducibilità acqua ingressoBrix acqua + +Per il resto ti risponde Pietro +Chiedo a Pietro se mi può preparare l’offerta completa: + +UR62 con convertitore RS485/(4-20mA) + attacchi +UR29 con convertitore RS485/(4-20mA) + attacchi +conduttivimetro con centralina + attacchi +vi chiedo inoltre anche i manuali dei sensori, i disegni con le dimensioni, e possibilmente i 3D, tutto questo come sapete per codificare i componenti. +Teneteci aggiornati sugli sviluppi del nuovo bus, più veloce, per la comunicazione con gli strumenti. +Matteo hai della documentazione oppure è ancora presto? +Presto, presto +Grazie +Ciao +Riccardo + + +General + + Quarantelli + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro + +Ciao Riccardo, +siamo finalmente riusciti a terminare i test con UR29 +Di seguito i risultati. +Matteo + + +Ing. Matteo Quarantelli +Technical manager + +Maselli Misure S.p.A. +P: + + 39 0521 257450 +E: +Parma, Italy +www.maselli.com + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + +General + + Quarantelli + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro + +Stiamo completando i test .. purtroppo, è stato necessario più tempo del previsto. +Spero di avere news domani. +Ti tengo aggiornato +Matteo + +Ing. Matteo Quarantelli +Technical manager + +Maselli Misure S.p.A. +P: + + 39 0521 257450 +E: +Parma, Italy +www.maselli.com + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + + Riccardo + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro + +Ciao Matteo +Dammi buone notizie… +Grazie +Ciao +Riccardo + +General + + Quarantelli + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro + +Ok, grazie. +Entro domani dovremmo avere il feedback sui test . Ti faccio sapere +Matteo + +Ing. Matteo Quarantelli +Technical manager + +Maselli Misure S.p.A. +P: + + 39 0521 257450 +E: +Parma, Italy +www.maselli.com + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + +General + + Riccardo + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro + +Ciao Matteo +Ripeto quello che ho detto andava evidenziato nel momento in cui è emersa la questione, l’anno scorso, quando è stato deciso di inserire l’opzione profibus ed uscite + 4-20mA con la MP06. +Certo che non voglio fare verifiche di timing nel progetto di San Giorgio. +Ho riassunto uno specchietto per definire il perimetro di cosa stiamo parlando. + +| Machine size | 6 | 9 | 10 | +|------------------------|-------|-------|-------| +| Prod flow Nom [l/h] | 27000 | 54000 | 60000 | +| Prod flow Min [l/h] | 13500 | 27000 | 30000 | +| Prod flow Nom [l/s] | 7,50 | 15,00 | 16,67 | +| Prod flow min [l/s] | 3,75 | 7,50 | 8,33 | +| | | | | +| 300ms Lt eq @Nom speed | 2,25 | 4,5 | 5 | +| 300ms Lt eq @Min speed | 1,125 | 2,25 | 2,5 | + +Appena ci vediamo ne parliamo meglio. +Dai dati che ho lo strumento in Tolosa UR24, fornisce la stessa misura/valore per almeno 2 secondi, come vedi su macchine molto grandi l’indeterminazione sui litri + di sciroppo diventano troppi. +Fammi sapere per i test +Ciao +Riccardo + +General + + Quarantelli + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro + +Ciao Riccardo, +purtroppo, con MP06 connesso a 2 sensori è praticamente impossibile soddisfare il requisito di 300 ms nemmeno aumentando la velocità della seriale a 115200 (adesso andiamo a 19200) +E’ un problema intrinseco del protocollo master-slave tra mp06 e sensori. +Resta in realtà da verificare se questo requisito, all’interno dell’intera catena di pilotaggio sia davvero necessario. +Noi potremmo, come anticipato, predisporre anche l’MP06 per i test comparativi. +Cercheremo di fare i test mercoledì o giovedì +Ti faccio sapere +Grazie +Matteo + +Ing. Matteo Quarantelli +Technical manager + +Maselli Misure S.p.A. +P: + + 39 0521 257450 +E: +Parma, Italy +www.maselli.com + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + +General + + Riccardo + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro + +Grazie Matteo +Fammi sapere quando riuscite ad effettuare il test “latenza sensore con convertitore RS485 / 4..20 mA”. +Sono sicuro che la tempistica dei 300ms, è emersa sin dai primi incontri in Maselli, è per questa ragione che era stato deciso di fornire l’MP06 con le uscite in + corrente e Profibus, per poi verificare in cantiere se il Profibus fosse sufficiente pensando alle future applicazioni. +Una domanda che mi viene spontanea è possibile aumentare il più possibile il baudrate della seriale? Dato che è una 485 differenziale e la lunghezza del cavo è + minima. +Gradirei partecipare al test, se possibile. +In quell’occasione potremmo vedere nel dettaglio i dati raccolti nel mixer di Tolosa, il primo mixer della nuova generazione sidel, fornito di un UR24 con convertitore + Profibus +Installato nel seguente modo: + +Ricordo, inoltre per la cronaca, che al mio rientro da Tolosa diciamo nel 2012, sono passato in Maselli e parlando di questo argomento con Paolo (il softwarista + in “pensione”) mi diceva che questa “scarsa” velocità dell’UR24 sarebbe stata risolta, oppure gestibile con la nuova generazione di strumenti equipaggiati con un nuovo microcontrollore. +Fatemi sapere, +Andrea M. fammi sapere per l’altro tema a riguardo degli strumenti da inserire al “volo” per avere dati sui trend del brix, prima del progetto. +Ciao +Riccardo + + +General + + Quarantelli + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini + + +Ciao riccardo ecco le 2 slides. +Matteo + + + + + +Ing. Matteo Quarantelli +Technical manager + +Maselli Misure S.p.A. +P: + + 39 0521 257450 +E: +Parma, Italy +www.maselli.com + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + + +This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error), please notify the sender + immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. + +This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error), please notify the sender + immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. + +This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error), please notify the sender + immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. + +This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error), please notify the sender + immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. + +This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error), please notify the sender + immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. + +This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error), please notify the sender + immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. + +This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error), please notify the sender + immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. + +This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error), please notify the sender + immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. + +This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error), please notify the sender + immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. + +This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error), please notify the sender + immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. + +### Adjuntos +- [[ADAM-4000_Series_User_manual_Ed.9_FINAL.pdf]] +- [[04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/adjuntos/Screenshot 2025-05-06 111701.jpg]] +- [[04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/adjuntos/Screenshot 2025-05-06 111755.jpg]] +- [[04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/adjuntos/Screenshot 2025-05-06 113243.jpg]] +- [[04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/adjuntos/Screenshot 2025-05-06 114159.jpg]] +- [[Maselli_protocol_with_Adam.pdf]] +- [[01621L0011.zip]] +- [[Maselli_protocol_with_Adam_2.pdf]] +--- + ++ a1b9e7335b6848cfee9d638cd2e5229d + +### {EXT} utility + +- 06-05-2025 + +MAU_V_2_9_6.msi + +Ing. Matteo Quarantelli +Technical manager + +Maselli Misure S.p.A. +P: + + 39 0521 257450 +E: +Parma, Italy +www.maselli.com + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + +--- + ++ 464fdf3553e3cc9fdf3681f912bcf1e2 + +### {EXT} I: foto procedure adam sidel + +- 06-05-2025 + +foto procedure modulo adam +Matteo + +Ing. Matteo Quarantelli +Technical manager + +Maselli Misure S.p.A. +P: + + 39 0521 257450 +E: +Parma, Italy +www.maselli.com + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + +### Adjuntos +- [[04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/adjuntos/Screenshot 2025-05-06 111701.jpg]] +- [[04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/adjuntos/Screenshot 2025-05-06 111755.jpg]] +- [[04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/adjuntos/Screenshot 2025-05-06 113243.jpg]] +- [[04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/adjuntos/Screenshot 2025-05-06 114159.jpg]] +--- + ++ 4fce380d128f4277f302ff9ea1b8946b + +### {EXT} R: SIDEL (01011476) R: Nuova configurazione e banco di test latenza, offerta RDO250201 per UR29 con modulo Adam e conducibilità + +- 06-05-2025 + +Invio versione fw ADAM con nota nella procedura v3 +Matteo + +Ing. Matteo Quarantelli +Technical manager + +Maselli Misure S.p.A. +P: + + 39 0521 257450 +E: +Parma, Italy +www.maselli.com + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + +General + + Quarantelli + + 'Orsi, Walter [EXTERNAL]' ; 'walter.orsi' + +Inoltro documento aggiornato (V2) +Matteo + +Ing. Matteo Quarantelli +Technical manager + +Maselli Misure S.p.A. +P: + + 39 0521 257450 +E: +Parma, Italy +www.maselli.com + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + + Quarantelli + + 'Santini, Paolo' ; Federico Chiesa ; 'Orsi, Walter [EXTERNAL]' ; + 'walter.orsi' + +Ciao Riccardo, +allegati i documenti promessi. + +Procedura configurazione ADAMFormato protocollo URXX (UR62 e UR29) in configurazione ADAM. + +Matteo + +Ing. Matteo Quarantelli +Technical manager + +Maselli Misure S.p.A. +P: + + 39 0521 257450 +E: +Parma, Italy +www.maselli.com + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + + Quarantelli + + Santini, Paolo ; Federico Chiesa ; Orsi, Walter [EXTERNAL] ; + walter.orsi + +Ciao Riccardo, ok per il 6. +Ci aggiorniamo prima nel caso ci siano variazioni sul tema. +Matteo + +Ing. Matteo Quarantelli +Technical manager + +Maselli Misure S.p.A. +P: + + 39 0521 257450 +E: +Parma, Italy +www.maselli.com + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + + Riccardo + + Matteo Quarantelli + + Alessandra Bolzoni ; + Passera, Alessandro ; + Santini, Paolo ; + Federico Chiesa ; + Orsi, Walter [EXTERNAL] ; + walter.orsi + +Grazie Pietro +Confermo quello che ci siamo detti e tu hai scritto +Matteo fammi sapere se la sett 19, martedì 06-05, possiamo trovarci in Maselli per il test, il tempo necessario, se fosse necessario tornare anche il giorno dopo + non credo sia un problema +Il test prevede: + +A carico Sidel + +Pc con interfaccia HMI della macchina +PLC macchina +Alimentatore 24Vdc +Convertitore USB-R485 (Moxa) [per programmazione ADAM] + +Da parte Maselli: + +Strumenti acquistati con il progetto +Cavi +…. + +Test: + +Collegamento strumenti e verifica funzionale con il PLC +Programmazione/settaggio strumenti, manuale +Aggiornamento firmware Adam, manuale + +Ciao +Riccardo + +General + + Bracchi + + Federico Chiesa + + Alessandra Bolzoni ; + Passera, Alessandro ; + Santini, Paolo ; + Matteo Quarantelli + +Ciao Riccardo, +come appena discusso al telefono, procediamo quindi per la messa a disposizione di tutto il materiale per il 6/05. +@Federico: appena rientra, Alessandra modificherà le date in CDO per allinearle + tutte al 6/05. Il materiale non andrà spedito, ma reso disponibile per il test che verrà effettuato presso di noi (finito il test, la Sidel poi lo ritirerà) +@Riccardo: per la visita da noi per testare insieme il sistema, puoi coordinarti + direttamente con Matteo, sulla base di questa data. +Grazie a tutti, +Pietro + +Pietro Bracchi +Regional Sales Manager + +Maselli Misure S.p.A. +M: ++ 39 338 5037946 +P: + + 39 0521 257410 +E: +Parma, Italy +www.maselli.com + + + + message with any third party, without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future. + + +General + + Bracchi + + Alessandra Bolzoni ; + Passera, Alessandro ; + Santini, Paolo ; + Matteo Quarantelli ; + Federico Chiesa + +Ciao Riccardo, +scusa per il ritardo nella mia risposta, ma stavamo aspettando anche delle informazioni da un fornitore. +Ti confermo che: + +La consegna del materiale sotto-riportato è prevista per il +28/04 +UR62 A0840184-CA13AA14ADF6N A0840192-BC11BA11UR29 A0840268-AA14LD21D con modulo ADAM A0117271Nota: dal momento che il deflettore DF15 A0840316-ABD1AA91B è già stato acquistato dal cliente finale, non credo abbiate intenzione di prenderlo, ma per favore confermami + +La consegna del materiale sotto-riportato è prevista per il +06/05 +Kit Conducibilità A0559015Nota: la settimana prossima potremmo avere un eventuale aggiornamento su un possibile anticipo. + +Se per te va bene, ci possiamo sentire alla fine della settimana prossima, per capire quale potrebbe essere lo schedule reale per l’attività di prova congiunta presso la nostra sede che hai ipotizzato con Matteo. +Fammi sapere. +Grazie in anticipo. +Approfitto di questa mail per chiederti un aggiornamento sul vostro ordine: sai quando dovrebbe arrivare? +Ancora grazie, +Pietro + +Pietro Bracchi +Regional Sales Manager + +Maselli Misure S.p.A. +M: ++ 39 338 5037946 +P: + + 39 0521 257410 +E: +Parma, Italy +www.maselli.com + + + + message with any third party, without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future. + + + Riccardo + + Alessandra Bolzoni ; + Passera, Alessandro ; + Santini, Paolo + +Ciao Pietro +Mi sai dire, in base ai vostri piani di produzione, quando riuscite ad avere i componenti per poterli provare insieme a voi. +Grazie +Ciao +Riccardo + +General + + Riccardo + + Alessandra Bolzoni ; + Passera, Alessandro ; + Santini, Paolo + +Ok grazie +Mi torna adesso anche con la richiesta di Ugo Bini +Ciao +Riccardo + + Bracchi + + Alessandra Bolzoni ; + Passera, Alessandro ; + Santini, Paolo + +Ciao Riccardo, +anche per l’UR62 viene fornito il modulo ADAM; non appare in offerta come riga separata perché l’informazione è intrinseca nel modello dell’UR62 stesso. +Pietro + +Pietro Bracchi +Regional Sales Manager + +Maselli Misure S.p.A. +M: ++ 39 338 5037946 +P: + + 39 0521 257410 +E: +Parma, Italy +www.maselli.com + + + + message with any third party, without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future. + + +General + + Riccardo + + Alessandra Bolzoni ; + Passera, Alessandro ; + Santini, Paolo + +Grazie Pietro +Ho un dubbio soltanto per l’UR62 +Questo strumento esce direttamente in 4-20mA, giusto? +Non ha bisogno del convertitore ADAM come l’UR29, lo chiedo perché nello schema condiviso da Matteo ha messo 2 ADAM uno ciascun refrattometro. + +Magari mi sono perso qualcosa +Grazie +Ciao +Riccardo + + +General + + Bracchi + + Alessandra Bolzoni ; + Passera, Alessandro ; + Santini, Paolo + +Ciao Riccardo, +ti confermo che abbiamo preso in carico la tua richiesta di mettere in produzione, prima dell’arrivo del vostro ordine ufficiale, il materiale come da offerte che ri-allego, +Appena arriverà il vostro ordine, aggiorneremo la nostra conferma d’ordine (che per ora non vi condividiamo) con il numero d’ordine stesso e ve la faremo avere. +Nei prossimi giorni ti confermeremo la consegna tentativa, in base alle informazioni che ci verranno dalla Produzione. +Allego poi la documentazione disponibile per quanto riguarda il Kit Conducibilità. +Grazie, +Pietro + +Pietro Bracchi +Regional Sales Manager + +Maselli Misure S.p.A. +M: ++ 39 338 5037946 +P: + + 39 0521 257410 +E: +Parma, Italy +www.maselli.com + + + + message with any third party, without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future. + + +General + + Riccardo + + Alessandra Bolzoni ; + Passera, Alessandro ; + Santini, Paolo + +Ciao Pietro +A seguito della telefonata ti scrivo per chiederti se potete mettere in produzione gli strumenti previsti in questo progetto, Diet As Regular - San Giorgio in Bosco + -. + +Refrattometro UR62 con convertitore ADAM 4-20mA +Refrattometro UR29 con convertitore ADAM 4-20mA +Conduttivimetro per misura su acqua +Ti chiedo anche un manuale del conduttivimetro per poterlo codificare correttamente ed avere un’idea della configurazione che poi quando verremo a testare lo spulceremo + bene. +Metto in copia anche Paolo per la codifica del convertitore ADAM + +Attendo tua conferma il manualetto e il tempo di consegna degli strumenti così pianifichiamo nel dettaglio +Grazie +Ciao +Riccardo +General +General + + Bracchi + +Buongiorno Paolo, +in allegato la documentazione richiesta relativa alle due offerte nuovamente allegate, per quanto riguarda l’UR62 e l’UR29 +Essendo materiale d’acquisto, non abbiamo invece i disegni relativi al conduttivimetro. +Resto a disposizione per ulteriori chiarimenti. +Grazie, +Pietro + +Pietro Bracchi +Regional Sales Manager + +Maselli Misure S.p.A. +M: ++ 39 338 5037946 +P: + + 39 0521 257410 +E: +Parma, Italy +www.maselli.com + + + + message with any third party, without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future. + + +General + + Bracchi + + Cantarelli, Paolo + +Buongiorno Paolo, +ho chiesto all’ufficio Tecnico di verificare quali disegni abbiamo disponibili. +Appena mi confermano, la informo. +Grazie, +Pietro + +Pietro Bracchi +Regional Sales Manager + +Maselli Misure S.p.A. +M: ++ 39 338 5037946 +P: + + 39 0521 257410 +E: +Parma, Italy +www.maselli.com + + + + message with any third party, without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future. + + + Bolzoni + +Buongiorno Paolo, +Le risponderà il collega Pietro Bracchi che sta seguendo il progetto e che ci sta leggendo in copia. + +Grazie +Cordiali saluti +Alessandra + + Paolo + +Buongiorno Alessandra +Nel ringraziarla per l’offerta inviata, le chiedo cortesemente se potrebbe inviarmi anche la documentazione tecnica ed i disegni / modelli 3D dei componenti sottoelencati + affinché possa procedere con la codifica + +UR62 e relativi attacchi +UR29 e relativi attacchi +conduttivimetro e relativi attacchi +Grazie +Cordiali saluti +Paolo Cantarelli +Mechanical Engineer - +Service Engineering + +Sidel +s.p.a. +Via la Spezia 241/A +43126 Parma, ITALY +Tel: +39 0521 999566 +www.sidel.com +P +Please consider the environment before printing this e-mail + + + +General + + Bolzoni + + Cantarelli, Paolo ; + walter.orsi ; + Pietro Bracchi ; + Matteo Quarantelli + + di test latenza, offerta RDO250201 per UR29 con modulo Adam e conducibilità + +Buongiorno, +Come da accordi intercorsi, invio la nostra offerta RDO250201 per: + +UR29 solo modulo ADAM (e attacco DN40 a saldare)Kit conducibilità composto da sonda e ricevitore (e nocciolo per installazione). +Tempo di consegna: 6 settimane dall’ordine con possibilità di anticipo in caso di esigenze particolari. + +Cordiali saluti + +Alessandra Bolzoni + +Sales coordinator + +Maselli Misure S.p.A. +P: + + 39 0521 257400 +E: +Parma, Italy + +www.maselli.com + + + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + + + +General + + Bracchi + + Matteo Quarantelli + + Andrea Devitis ; + Pierpaolo Fallini ; + 'walter.orsi' ; + 'Passera, Alessandro' ; + 'Cantarelli, Paolo' ; + Alessandra Bolzoni + +Questa volta con l’allegato. +Grazie, +Pietro + +Pietro Bracchi +Regional Sales Manager + +Maselli Misure S.p.A. +M: ++ 39 338 5037946 +P: + + 39 0521 257410 +E: +Parma, Italy +www.maselli.com + + + + message with any third party, without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future. + + + Bracchi + + Matteo Quarantelli + + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro ; + Cantarelli, Paolo ; + Alessandra Bolzoni + +Ciao Riccardo, +per quanto riguarda la prima riga (UR62, vedi parte evidenziata in giallo sotto), puoi fare riferimento all’offerta allegata. +Come a tua telefonata con Matteo, a breve ti faremo poi avere l’offerta per: + +UR29 solo modulo ADAM (e attacco DN40 a saldare)Kit conducibilità composto da sonda e ricevitore (e nocciolo per installazione). +Grazie, +Pietro + +Pietro Bracchi +Regional Sales Manager + +Maselli Misure S.p.A. +M: ++ 39 338 5037946 +P: + + 39 0521 257410 +E: +Parma, Italy +www.maselli.com + + + + message with any third party, without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future. + + + Riccardo + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro ; + Cantarelli, Paolo + +Grazie Matteo +Ho provato a chiamarti +Intendevo dire di tenere i due Adam sui refrattometri, la loro uscita 4-20mA, andrebbe all’MP06, l’MP06 sarebbe collegato in Profibus ed anche in 4-20mA, verso + il PLC, questo per garantire la velocità di trasmissione dai refrattometri, se l’MP06 non inserisce latenza nel loop 4-20mA, ed il collegamento Profibus, con l’opportuno telegramma vi consentirebbe di ricevere i dati richiesti, ed avremmo un test anche della + latenza Profibus su questa macchina. +Pietro quando puoi inviarci l’offerta aggiornata? +Inse4risco nel loop anche Paolo Cantarelli che si occuperà della parte meccanica del progetto, inclusa la codifica dei componenti +Grazie +Ciao +Riccardo + +General + + Quarantelli + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro + +Ciao Riccardo, vedi sotto le risposte. +A presto +Matteo + +Ing. Matteo Quarantelli +Technical manager + +Maselli Misure S.p.A. +P: + + 39 0521 257450 +E: +Parma, Italy +www.maselli.com + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + +General + + Riccardo + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro + +Grazie Matteo +Bene, l’attuatore di che tipo è? Nei 900ms ce anche il suo ritardo di attuazione, anche il tempo di ciclo del PLC ma con una 1200 immagino sia del ms. la sola latenza + del loop dell’UR potrebbe essere confrontabile con i 300ms attesi. +Questo poi lo verifichiamo in campo. +OK +Direi che sulla prima applicazione verificheremo le prestazioni in campo, ma non mi aspetto problemi anche perché la taglia della macchina non è grande e quindi + i flussi sono relativamente bassi. +Matteo mi puoi aggiornare lo schema completo? +Vedi allegato SLIDE 2 +Ha senso inserire comunque l’MP06 nel loop di corrente tra i sensori ed il PLC, ingresso 4-20 ed uscita 4-20, si avrebbe un incremento di latenza, non credo sia + eccessivo, ma avremmo il vantaggio di poter inviare i dati che avevamo condiviso inizialmente: +Intendi al posto dell’ADAM ? direi di no altrimenti introdurremmo un riardo di alcuni secondi. +Se vuoi possiamo predisporre anche l’MP06 (SLIDE 1) per una seconda tornata di test. Il test della vita deve essere fatto con gli ADAM (SLIDE 2) ed il log dovrebbe farlo il plc. + +centralina MP06 Maselli per gestione Maselli da remoto, alla quale vanno passati alcuni dati: +da Sidel a Maselli +Alcuni di questi non sono al momento trasferibili da PLC a MP06 (manca telegramma e implementazione sw) + +lettura brix UR62 in ingresso linea sciroppo [°Brix] +lettura brix UR29 da stream sciroppo [°Brix] +temperatura sciroppo [°C] +flusso sciroppo [kg/min] +flusso acqua [l/min] +densità sciroppo [kg/dm3] +livello tank sciroppo [%] +volume attivo tank sciroppo [L] +lettura brix prodotto [°Brix] +temperatura prodotto [°C] +CO2 prodotto +lettura conducibilità dell’acqua in ingresso macchina (?) +temperatura acqua in ingresso macchina (?) +Pressione ingresso linea sciroppo +Pressione stream sciroppo + +segnali da Maselli a Sidel (Profibus): + +Brix sciroppo ingresso linea sciroppo UR62Brix sciroppo stream sciroppo UR29Conducibilità acqua ingressoBrix acqua + +Per il resto ti risponde Pietro +Chiedo a Pietro se mi può preparare l’offerta completa: + +UR62 con convertitore RS485/(4-20mA) + attacchi +UR29 con convertitore RS485/(4-20mA) + attacchi +conduttivimetro con centralina + attacchi +vi chiedo inoltre anche i manuali dei sensori, i disegni con le dimensioni, e possibilmente i 3D, tutto questo come sapete per codificare i componenti. +Teneteci aggiornati sugli sviluppi del nuovo bus, più veloce, per la comunicazione con gli strumenti. +Matteo hai della documentazione oppure è ancora presto? +Presto, presto +Grazie +Ciao +Riccardo + + +General + + Quarantelli + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro + +Ciao Riccardo, +siamo finalmente riusciti a terminare i test con UR29 +Di seguito i risultati. +Matteo + + +Ing. Matteo Quarantelli +Technical manager + +Maselli Misure S.p.A. +P: + + 39 0521 257450 +E: +Parma, Italy +www.maselli.com + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + +General + + Quarantelli + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro + +Stiamo completando i test .. purtroppo, è stato necessario più tempo del previsto. +Spero di avere news domani. +Ti tengo aggiornato +Matteo + +Ing. Matteo Quarantelli +Technical manager + +Maselli Misure S.p.A. +P: + + 39 0521 257450 +E: +Parma, Italy +www.maselli.com + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + + Riccardo + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro + +Ciao Matteo +Dammi buone notizie… +Grazie +Ciao +Riccardo + +General + + Quarantelli + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro + +Ok, grazie. +Entro domani dovremmo avere il feedback sui test . Ti faccio sapere +Matteo + +Ing. Matteo Quarantelli +Technical manager + +Maselli Misure S.p.A. +P: + + 39 0521 257450 +E: +Parma, Italy +www.maselli.com + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + +General + + Riccardo + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro + +Ciao Matteo +Ripeto quello che ho detto andava evidenziato nel momento in cui è emersa la questione, l’anno scorso, quando è stato deciso di inserire l’opzione profibus ed uscite + 4-20mA con la MP06. +Certo che non voglio fare verifiche di timing nel progetto di San Giorgio. +Ho riassunto uno specchietto per definire il perimetro di cosa stiamo parlando. + +| Machine size | 6 | 9 | 10 | +|------------------------|-------|-------|-------| +| Prod flow Nom [l/h] | 27000 | 54000 | 60000 | +| Prod flow Min [l/h] | 13500 | 27000 | 30000 | +| Prod flow Nom [l/s] | 7,50 | 15,00 | 16,67 | +| Prod flow min [l/s] | 3,75 | 7,50 | 8,33 | +| | | | | +| 300ms Lt eq @Nom speed | 2,25 | 4,5 | 5 | +| 300ms Lt eq @Min speed | 1,125 | 2,25 | 2,5 | + +Appena ci vediamo ne parliamo meglio. +Dai dati che ho lo strumento in Tolosa UR24, fornisce la stessa misura/valore per almeno 2 secondi, come vedi su macchine molto grandi l’indeterminazione sui litri + di sciroppo diventano troppi. +Fammi sapere per i test +Ciao +Riccardo + +General + + Quarantelli + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro + +Ciao Riccardo, +purtroppo, con MP06 connesso a 2 sensori è praticamente impossibile soddisfare il requisito di 300 ms nemmeno aumentando la velocità della seriale a 115200 (adesso andiamo a 19200) +E’ un problema intrinseco del protocollo master-slave tra mp06 e sensori. +Resta in realtà da verificare se questo requisito, all’interno dell’intera catena di pilotaggio sia davvero necessario. +Noi potremmo, come anticipato, predisporre anche l’MP06 per i test comparativi. +Cercheremo di fare i test mercoledì o giovedì +Ti faccio sapere +Grazie +Matteo + +Ing. Matteo Quarantelli +Technical manager + +Maselli Misure S.p.A. +P: + + 39 0521 257450 +E: +Parma, Italy +www.maselli.com + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + +General + + Riccardo + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro + +Grazie Matteo +Fammi sapere quando riuscite ad effettuare il test “latenza sensore con convertitore RS485 / 4..20 mA”. +Sono sicuro che la tempistica dei 300ms, è emersa sin dai primi incontri in Maselli, è per questa ragione che era stato deciso di fornire l’MP06 con le uscite in + corrente e Profibus, per poi verificare in cantiere se il Profibus fosse sufficiente pensando alle future applicazioni. +Una domanda che mi viene spontanea è possibile aumentare il più possibile il baudrate della seriale? Dato che è una 485 differenziale e la lunghezza del cavo è + minima. +Gradirei partecipare al test, se possibile. +In quell’occasione potremmo vedere nel dettaglio i dati raccolti nel mixer di Tolosa, il primo mixer della nuova generazione sidel, fornito di un UR24 con convertitore + Profibus +Installato nel seguente modo: + +Ricordo, inoltre per la cronaca, che al mio rientro da Tolosa diciamo nel 2012, sono passato in Maselli e parlando di questo argomento con Paolo (il softwarista + in “pensione”) mi diceva che questa “scarsa” velocità dell’UR24 sarebbe stata risolta, oppure gestibile con la nuova generazione di strumenti equipaggiati con un nuovo microcontrollore. +Fatemi sapere, +Andrea M. fammi sapere per l’altro tema a riguardo degli strumenti da inserire al “volo” per avere dati sui trend del brix, prima del progetto. +Ciao +Riccardo + + +General + + Quarantelli + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini + + +Ciao riccardo ecco le 2 slides. +Matteo + + + + + +Ing. Matteo Quarantelli +Technical manager + +Maselli Misure S.p.A. +P: + + 39 0521 257450 +E: +Parma, Italy +www.maselli.com + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + + +This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error), please notify the sender + immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. + +This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error), please notify the sender + immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. + +This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error), please notify the sender + immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. + +This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error), please notify the sender + immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. + +This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error), please notify the sender + immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. + +This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error), please notify the sender + immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. + +This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error), please notify the sender + immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. + +This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error), please notify the sender + immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. + +This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error), please notify the sender + immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. + +This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error), please notify the sender + immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. + +### Adjuntos +- [[Maselli_protocol_with_Adam.pdf]] +- [[01621L0011.zip]] +--- + ++ 34a87ed5874707d5bb51a2785d6dfbd6 + +### {EXT} R: SIDEL (01011476) R: Nuova configurazione e banco di test latenza, offerta RDO250201 per UR29 con modulo Adam e conducibilità + +- 06-05-2025 + +Inoltro documento aggiornato (V2) +Matteo + +Ing. Matteo Quarantelli +Technical manager + +Maselli Misure S.p.A. +P: + + 39 0521 257450 +E: +Parma, Italy +www.maselli.com + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + +General + + Quarantelli + + 'Orsi, Walter [EXTERNAL]' ; 'walter.orsi' + +Ciao Riccardo, +allegati i documenti promessi. + +Procedura configurazione ADAMFormato protocollo URXX (UR62 e UR29) in configurazione ADAM. + +Matteo + +Ing. Matteo Quarantelli +Technical manager + +Maselli Misure S.p.A. +P: + + 39 0521 257450 +E: +Parma, Italy +www.maselli.com + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + + Quarantelli + + Santini, Paolo ; Federico Chiesa ; Orsi, Walter [EXTERNAL] ; + walter.orsi + +Ciao Riccardo, ok per il 6. +Ci aggiorniamo prima nel caso ci siano variazioni sul tema. +Matteo + +Ing. Matteo Quarantelli +Technical manager + +Maselli Misure S.p.A. +P: + + 39 0521 257450 +E: +Parma, Italy +www.maselli.com + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + + Riccardo + + Matteo Quarantelli + + Alessandra Bolzoni ; + Passera, Alessandro ; + Santini, Paolo ; + Federico Chiesa ; + Orsi, Walter [EXTERNAL] ; + walter.orsi + +Grazie Pietro +Confermo quello che ci siamo detti e tu hai scritto +Matteo fammi sapere se la sett 19, martedì 06-05, possiamo trovarci in Maselli per il test, il tempo necessario, se fosse necessario tornare anche il giorno dopo + non credo sia un problema +Il test prevede: + +A carico Sidel + +Pc con interfaccia HMI della macchina +PLC macchina +Alimentatore 24Vdc +Convertitore USB-R485 (Moxa) [per programmazione ADAM] + +Da parte Maselli: + +Strumenti acquistati con il progetto +Cavi +…. + +Test: + +Collegamento strumenti e verifica funzionale con il PLC +Programmazione/settaggio strumenti, manuale +Aggiornamento firmware Adam, manuale + +Ciao +Riccardo + +General + + Bracchi + + Federico Chiesa + + Alessandra Bolzoni ; + Passera, Alessandro ; + Santini, Paolo ; + Matteo Quarantelli + +Ciao Riccardo, +come appena discusso al telefono, procediamo quindi per la messa a disposizione di tutto il materiale per il 6/05. +@Federico: appena rientra, Alessandra modificherà le date in CDO per allinearle + tutte al 6/05. Il materiale non andrà spedito, ma reso disponibile per il test che verrà effettuato presso di noi (finito il test, la Sidel poi lo ritirerà) +@Riccardo: per la visita da noi per testare insieme il sistema, puoi coordinarti + direttamente con Matteo, sulla base di questa data. +Grazie a tutti, +Pietro + +Pietro Bracchi +Regional Sales Manager + +Maselli Misure S.p.A. +M: ++ 39 338 5037946 +P: + + 39 0521 257410 +E: +Parma, Italy +www.maselli.com + + + + message with any third party, without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future. + + +General + + Bracchi + + Alessandra Bolzoni ; + Passera, Alessandro ; + Santini, Paolo ; + Matteo Quarantelli ; + Federico Chiesa + +Ciao Riccardo, +scusa per il ritardo nella mia risposta, ma stavamo aspettando anche delle informazioni da un fornitore. +Ti confermo che: + +La consegna del materiale sotto-riportato è prevista per il +28/04 +UR62 A0840184-CA13AA14ADF6N A0840192-BC11BA11UR29 A0840268-AA14LD21D con modulo ADAM A0117271Nota: dal momento che il deflettore DF15 A0840316-ABD1AA91B è già stato acquistato dal cliente finale, non credo abbiate intenzione di prenderlo, ma per favore confermami + +La consegna del materiale sotto-riportato è prevista per il +06/05 +Kit Conducibilità A0559015Nota: la settimana prossima potremmo avere un eventuale aggiornamento su un possibile anticipo. + +Se per te va bene, ci possiamo sentire alla fine della settimana prossima, per capire quale potrebbe essere lo schedule reale per l’attività di prova congiunta presso la nostra sede che hai ipotizzato con Matteo. +Fammi sapere. +Grazie in anticipo. +Approfitto di questa mail per chiederti un aggiornamento sul vostro ordine: sai quando dovrebbe arrivare? +Ancora grazie, +Pietro + +Pietro Bracchi +Regional Sales Manager + +Maselli Misure S.p.A. +M: ++ 39 338 5037946 +P: + + 39 0521 257410 +E: +Parma, Italy +www.maselli.com + + + + message with any third party, without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future. + + + Riccardo + + Alessandra Bolzoni ; + Passera, Alessandro ; + Santini, Paolo + +Ciao Pietro +Mi sai dire, in base ai vostri piani di produzione, quando riuscite ad avere i componenti per poterli provare insieme a voi. +Grazie +Ciao +Riccardo + +General + + Riccardo + + Alessandra Bolzoni ; + Passera, Alessandro ; + Santini, Paolo + +Ok grazie +Mi torna adesso anche con la richiesta di Ugo Bini +Ciao +Riccardo + + Bracchi + + Alessandra Bolzoni ; + Passera, Alessandro ; + Santini, Paolo + +Ciao Riccardo, +anche per l’UR62 viene fornito il modulo ADAM; non appare in offerta come riga separata perché l’informazione è intrinseca nel modello dell’UR62 stesso. +Pietro + +Pietro Bracchi +Regional Sales Manager + +Maselli Misure S.p.A. +M: ++ 39 338 5037946 +P: + + 39 0521 257410 +E: +Parma, Italy +www.maselli.com + + + + message with any third party, without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future. + + +General + + Riccardo + + Alessandra Bolzoni ; + Passera, Alessandro ; + Santini, Paolo + +Grazie Pietro +Ho un dubbio soltanto per l’UR62 +Questo strumento esce direttamente in 4-20mA, giusto? +Non ha bisogno del convertitore ADAM come l’UR29, lo chiedo perché nello schema condiviso da Matteo ha messo 2 ADAM uno ciascun refrattometro. + +Magari mi sono perso qualcosa +Grazie +Ciao +Riccardo + + +General + + Bracchi + + Alessandra Bolzoni ; + Passera, Alessandro ; + Santini, Paolo + +Ciao Riccardo, +ti confermo che abbiamo preso in carico la tua richiesta di mettere in produzione, prima dell’arrivo del vostro ordine ufficiale, il materiale come da offerte che ri-allego, +Appena arriverà il vostro ordine, aggiorneremo la nostra conferma d’ordine (che per ora non vi condividiamo) con il numero d’ordine stesso e ve la faremo avere. +Nei prossimi giorni ti confermeremo la consegna tentativa, in base alle informazioni che ci verranno dalla Produzione. +Allego poi la documentazione disponibile per quanto riguarda il Kit Conducibilità. +Grazie, +Pietro + +Pietro Bracchi +Regional Sales Manager + +Maselli Misure S.p.A. +M: ++ 39 338 5037946 +P: + + 39 0521 257410 +E: +Parma, Italy +www.maselli.com + + + + message with any third party, without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future. + + +General + + Riccardo + + Alessandra Bolzoni ; + Passera, Alessandro ; + Santini, Paolo + +Ciao Pietro +A seguito della telefonata ti scrivo per chiederti se potete mettere in produzione gli strumenti previsti in questo progetto, Diet As Regular - San Giorgio in Bosco + -. + +Refrattometro UR62 con convertitore ADAM 4-20mA +Refrattometro UR29 con convertitore ADAM 4-20mA +Conduttivimetro per misura su acqua +Ti chiedo anche un manuale del conduttivimetro per poterlo codificare correttamente ed avere un’idea della configurazione che poi quando verremo a testare lo spulceremo + bene. +Metto in copia anche Paolo per la codifica del convertitore ADAM + +Attendo tua conferma il manualetto e il tempo di consegna degli strumenti così pianifichiamo nel dettaglio +Grazie +Ciao +Riccardo +General +General + + Bracchi + +Buongiorno Paolo, +in allegato la documentazione richiesta relativa alle due offerte nuovamente allegate, per quanto riguarda l’UR62 e l’UR29 +Essendo materiale d’acquisto, non abbiamo invece i disegni relativi al conduttivimetro. +Resto a disposizione per ulteriori chiarimenti. +Grazie, +Pietro + +Pietro Bracchi +Regional Sales Manager + +Maselli Misure S.p.A. +M: ++ 39 338 5037946 +P: + + 39 0521 257410 +E: +Parma, Italy +www.maselli.com + + + + message with any third party, without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future. + + +General + + Bracchi + + Cantarelli, Paolo + +Buongiorno Paolo, +ho chiesto all’ufficio Tecnico di verificare quali disegni abbiamo disponibili. +Appena mi confermano, la informo. +Grazie, +Pietro + +Pietro Bracchi +Regional Sales Manager + +Maselli Misure S.p.A. +M: ++ 39 338 5037946 +P: + + 39 0521 257410 +E: +Parma, Italy +www.maselli.com + + + + message with any third party, without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future. + + + Bolzoni + +Buongiorno Paolo, +Le risponderà il collega Pietro Bracchi che sta seguendo il progetto e che ci sta leggendo in copia. + +Grazie +Cordiali saluti +Alessandra + + Paolo + +Buongiorno Alessandra +Nel ringraziarla per l’offerta inviata, le chiedo cortesemente se potrebbe inviarmi anche la documentazione tecnica ed i disegni / modelli 3D dei componenti sottoelencati + affinché possa procedere con la codifica + +UR62 e relativi attacchi +UR29 e relativi attacchi +conduttivimetro e relativi attacchi +Grazie +Cordiali saluti +Paolo Cantarelli +Mechanical Engineer - +Service Engineering + +Sidel +s.p.a. +Via la Spezia 241/A +43126 Parma, ITALY +Tel: +39 0521 999566 +www.sidel.com +P +Please consider the environment before printing this e-mail + + + +General + + Bolzoni + + Cantarelli, Paolo ; + walter.orsi ; + Pietro Bracchi ; + Matteo Quarantelli + + di test latenza, offerta RDO250201 per UR29 con modulo Adam e conducibilità + +Buongiorno, +Come da accordi intercorsi, invio la nostra offerta RDO250201 per: + +UR29 solo modulo ADAM (e attacco DN40 a saldare)Kit conducibilità composto da sonda e ricevitore (e nocciolo per installazione). +Tempo di consegna: 6 settimane dall’ordine con possibilità di anticipo in caso di esigenze particolari. + +Cordiali saluti + +Alessandra Bolzoni + +Sales coordinator + +Maselli Misure S.p.A. +P: + + 39 0521 257400 +E: +Parma, Italy + +www.maselli.com + + + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + + + +General + + Bracchi + + Matteo Quarantelli + + Andrea Devitis ; + Pierpaolo Fallini ; + 'walter.orsi' ; + 'Passera, Alessandro' ; + 'Cantarelli, Paolo' ; + Alessandra Bolzoni + +Questa volta con l’allegato. +Grazie, +Pietro + +Pietro Bracchi +Regional Sales Manager + +Maselli Misure S.p.A. +M: ++ 39 338 5037946 +P: + + 39 0521 257410 +E: +Parma, Italy +www.maselli.com + + + + message with any third party, without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future. + + + Bracchi + + Matteo Quarantelli + + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro ; + Cantarelli, Paolo ; + Alessandra Bolzoni + +Ciao Riccardo, +per quanto riguarda la prima riga (UR62, vedi parte evidenziata in giallo sotto), puoi fare riferimento all’offerta allegata. +Come a tua telefonata con Matteo, a breve ti faremo poi avere l’offerta per: + +UR29 solo modulo ADAM (e attacco DN40 a saldare)Kit conducibilità composto da sonda e ricevitore (e nocciolo per installazione). +Grazie, +Pietro + +Pietro Bracchi +Regional Sales Manager + +Maselli Misure S.p.A. +M: ++ 39 338 5037946 +P: + + 39 0521 257410 +E: +Parma, Italy +www.maselli.com + + + + message with any third party, without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future. + + + Riccardo + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro ; + Cantarelli, Paolo + +Grazie Matteo +Ho provato a chiamarti +Intendevo dire di tenere i due Adam sui refrattometri, la loro uscita 4-20mA, andrebbe all’MP06, l’MP06 sarebbe collegato in Profibus ed anche in 4-20mA, verso + il PLC, questo per garantire la velocità di trasmissione dai refrattometri, se l’MP06 non inserisce latenza nel loop 4-20mA, ed il collegamento Profibus, con l’opportuno telegramma vi consentirebbe di ricevere i dati richiesti, ed avremmo un test anche della + latenza Profibus su questa macchina. +Pietro quando puoi inviarci l’offerta aggiornata? +Inse4risco nel loop anche Paolo Cantarelli che si occuperà della parte meccanica del progetto, inclusa la codifica dei componenti +Grazie +Ciao +Riccardo + +General + + Quarantelli + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro + +Ciao Riccardo, vedi sotto le risposte. +A presto +Matteo + +Ing. Matteo Quarantelli +Technical manager + +Maselli Misure S.p.A. +P: + + 39 0521 257450 +E: +Parma, Italy +www.maselli.com + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + +General + + Riccardo + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro + +Grazie Matteo +Bene, l’attuatore di che tipo è? Nei 900ms ce anche il suo ritardo di attuazione, anche il tempo di ciclo del PLC ma con una 1200 immagino sia del ms. la sola latenza + del loop dell’UR potrebbe essere confrontabile con i 300ms attesi. +Questo poi lo verifichiamo in campo. +OK +Direi che sulla prima applicazione verificheremo le prestazioni in campo, ma non mi aspetto problemi anche perché la taglia della macchina non è grande e quindi + i flussi sono relativamente bassi. +Matteo mi puoi aggiornare lo schema completo? +Vedi allegato SLIDE 2 +Ha senso inserire comunque l’MP06 nel loop di corrente tra i sensori ed il PLC, ingresso 4-20 ed uscita 4-20, si avrebbe un incremento di latenza, non credo sia + eccessivo, ma avremmo il vantaggio di poter inviare i dati che avevamo condiviso inizialmente: +Intendi al posto dell’ADAM ? direi di no altrimenti introdurremmo un riardo di alcuni secondi. +Se vuoi possiamo predisporre anche l’MP06 (SLIDE 1) per una seconda tornata di test. Il test della vita deve essere fatto con gli ADAM (SLIDE 2) ed il log dovrebbe farlo il plc. + +centralina MP06 Maselli per gestione Maselli da remoto, alla quale vanno passati alcuni dati: +da Sidel a Maselli +Alcuni di questi non sono al momento trasferibili da PLC a MP06 (manca telegramma e implementazione sw) + +lettura brix UR62 in ingresso linea sciroppo [°Brix] +lettura brix UR29 da stream sciroppo [°Brix] +temperatura sciroppo [°C] +flusso sciroppo [kg/min] +flusso acqua [l/min] +densità sciroppo [kg/dm3] +livello tank sciroppo [%] +volume attivo tank sciroppo [L] +lettura brix prodotto [°Brix] +temperatura prodotto [°C] +CO2 prodotto +lettura conducibilità dell’acqua in ingresso macchina (?) +temperatura acqua in ingresso macchina (?) +Pressione ingresso linea sciroppo +Pressione stream sciroppo + +segnali da Maselli a Sidel (Profibus): + +Brix sciroppo ingresso linea sciroppo UR62Brix sciroppo stream sciroppo UR29Conducibilità acqua ingressoBrix acqua + +Per il resto ti risponde Pietro +Chiedo a Pietro se mi può preparare l’offerta completa: + +UR62 con convertitore RS485/(4-20mA) + attacchi +UR29 con convertitore RS485/(4-20mA) + attacchi +conduttivimetro con centralina + attacchi +vi chiedo inoltre anche i manuali dei sensori, i disegni con le dimensioni, e possibilmente i 3D, tutto questo come sapete per codificare i componenti. +Teneteci aggiornati sugli sviluppi del nuovo bus, più veloce, per la comunicazione con gli strumenti. +Matteo hai della documentazione oppure è ancora presto? +Presto, presto +Grazie +Ciao +Riccardo + + +General + + Quarantelli + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro + +Ciao Riccardo, +siamo finalmente riusciti a terminare i test con UR29 +Di seguito i risultati. +Matteo + + +Ing. Matteo Quarantelli +Technical manager + +Maselli Misure S.p.A. +P: + + 39 0521 257450 +E: +Parma, Italy +www.maselli.com + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + +General + + Quarantelli + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro + +Stiamo completando i test .. purtroppo, è stato necessario più tempo del previsto. +Spero di avere news domani. +Ti tengo aggiornato +Matteo + +Ing. Matteo Quarantelli +Technical manager + +Maselli Misure S.p.A. +P: + + 39 0521 257450 +E: +Parma, Italy +www.maselli.com + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + + Riccardo + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro + +Ciao Matteo +Dammi buone notizie… +Grazie +Ciao +Riccardo + +General + + Quarantelli + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro + +Ok, grazie. +Entro domani dovremmo avere il feedback sui test . Ti faccio sapere +Matteo + +Ing. Matteo Quarantelli +Technical manager + +Maselli Misure S.p.A. +P: + + 39 0521 257450 +E: +Parma, Italy +www.maselli.com + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + +General + + Riccardo + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro + +Ciao Matteo +Ripeto quello che ho detto andava evidenziato nel momento in cui è emersa la questione, l’anno scorso, quando è stato deciso di inserire l’opzione profibus ed uscite + 4-20mA con la MP06. +Certo che non voglio fare verifiche di timing nel progetto di San Giorgio. +Ho riassunto uno specchietto per definire il perimetro di cosa stiamo parlando. + +| Machine size | 6 | 9 | 10 | +|------------------------|-------|-------|-------| +| Prod flow Nom [l/h] | 27000 | 54000 | 60000 | +| Prod flow Min [l/h] | 13500 | 27000 | 30000 | +| Prod flow Nom [l/s] | 7,50 | 15,00 | 16,67 | +| Prod flow min [l/s] | 3,75 | 7,50 | 8,33 | +| | | | | +| 300ms Lt eq @Nom speed | 2,25 | 4,5 | 5 | +| 300ms Lt eq @Min speed | 1,125 | 2,25 | 2,5 | + +Appena ci vediamo ne parliamo meglio. +Dai dati che ho lo strumento in Tolosa UR24, fornisce la stessa misura/valore per almeno 2 secondi, come vedi su macchine molto grandi l’indeterminazione sui litri + di sciroppo diventano troppi. +Fammi sapere per i test +Ciao +Riccardo + +General + + Quarantelli + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro + +Ciao Riccardo, +purtroppo, con MP06 connesso a 2 sensori è praticamente impossibile soddisfare il requisito di 300 ms nemmeno aumentando la velocità della seriale a 115200 (adesso andiamo a 19200) +E’ un problema intrinseco del protocollo master-slave tra mp06 e sensori. +Resta in realtà da verificare se questo requisito, all’interno dell’intera catena di pilotaggio sia davvero necessario. +Noi potremmo, come anticipato, predisporre anche l’MP06 per i test comparativi. +Cercheremo di fare i test mercoledì o giovedì +Ti faccio sapere +Grazie +Matteo + +Ing. Matteo Quarantelli +Technical manager + +Maselli Misure S.p.A. +P: + + 39 0521 257450 +E: +Parma, Italy +www.maselli.com + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + +General + + Riccardo + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro + +Grazie Matteo +Fammi sapere quando riuscite ad effettuare il test “latenza sensore con convertitore RS485 / 4..20 mA”. +Sono sicuro che la tempistica dei 300ms, è emersa sin dai primi incontri in Maselli, è per questa ragione che era stato deciso di fornire l’MP06 con le uscite in + corrente e Profibus, per poi verificare in cantiere se il Profibus fosse sufficiente pensando alle future applicazioni. +Una domanda che mi viene spontanea è possibile aumentare il più possibile il baudrate della seriale? Dato che è una 485 differenziale e la lunghezza del cavo è + minima. +Gradirei partecipare al test, se possibile. +In quell’occasione potremmo vedere nel dettaglio i dati raccolti nel mixer di Tolosa, il primo mixer della nuova generazione sidel, fornito di un UR24 con convertitore + Profibus +Installato nel seguente modo: + +Ricordo, inoltre per la cronaca, che al mio rientro da Tolosa diciamo nel 2012, sono passato in Maselli e parlando di questo argomento con Paolo (il softwarista + in “pensione”) mi diceva che questa “scarsa” velocità dell’UR24 sarebbe stata risolta, oppure gestibile con la nuova generazione di strumenti equipaggiati con un nuovo microcontrollore. +Fatemi sapere, +Andrea M. fammi sapere per l’altro tema a riguardo degli strumenti da inserire al “volo” per avere dati sui trend del brix, prima del progetto. +Ciao +Riccardo + + +General + + Quarantelli + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini + + +Ciao riccardo ecco le 2 slides. +Matteo + + + + + +Ing. Matteo Quarantelli +Technical manager + +Maselli Misure S.p.A. +P: + + 39 0521 257450 +E: +Parma, Italy +www.maselli.com + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + + +This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error), please notify the sender + immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. + +This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error), please notify the sender + immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. + +This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error), please notify the sender + immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. + +This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error), please notify the sender + immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. + +This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error), please notify the sender + immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. + +This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error), please notify the sender + immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. + +This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error), please notify the sender + immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. + +This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error), please notify the sender + immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. + +This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error), please notify the sender + immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. + +This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error), please notify the sender + immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. + +### Adjuntos +- [[Maselli_protocol_with_Adam_1.pdf]] +--- + ++ 8c802a79438e84d56eddc01e9f1be210 + +### {EXT} R: SIDEL (01011476) R: Nuova configurazione e banco di test latenza, offerta RDO250201 per UR29 con modulo Adam e conducibilità + +- 15-04-2025 + +Ciao Riccardo, ok per il 6. +Ci aggiorniamo prima nel caso ci siano variazioni sul tema. +Matteo + +Ing. Matteo Quarantelli +Technical manager + +Maselli Misure S.p.A. +P: + + 39 0521 257450 +E: +Parma, Italy +www.maselli.com + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + +General + + Riccardo + + Walter [EXTERNAL] ; walter.orsi + +Grazie Pietro +Confermo quello che ci siamo detti e tu hai scritto +Matteo fammi sapere se la sett 19, martedì 06-05, possiamo trovarci in Maselli per il test, il tempo necessario, se fosse necessario tornare anche il giorno dopo + non credo sia un problema +Il test prevede: + +A carico Sidel + +Pc con interfaccia HMI della macchina +PLC macchina +Alimentatore 24Vdc +Convertitore USB-R485 (Moxa) [per programmazione ADAM] + +Da parte Maselli: + +Strumenti acquistati con il progetto +Cavi +…. + +Test: + +Collegamento strumenti e verifica funzionale con il PLC +Programmazione/settaggio strumenti, manuale +Aggiornamento firmware Adam, manuale + +Ciao +Riccardo + +General + + Bracchi + + Santini, Paolo ; Matteo Quarantelli + +Ciao Riccardo, +come appena discusso al telefono, procediamo quindi per la messa a disposizione di tutto il materiale per il 6/05. +@Federico: appena rientra, Alessandra modificherà le date in CDO per allinearle + tutte al 6/05. Il materiale non andrà spedito, ma reso disponibile per il test che verrà effettuato presso di noi (finito il test, la Sidel poi lo ritirerà) +@Riccardo: per la visita da noi per testare insieme il sistema, puoi coordinarti + direttamente con Matteo, sulla base di questa data. +Grazie a tutti, +Pietro + +Pietro Bracchi +Regional Sales Manager + +Maselli Misure S.p.A. +M: ++ 39 338 5037946 +P: + + 39 0521 257410 +E: +Parma, Italy +www.maselli.com + + + + message with any third party, without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future. + + +General + + Bracchi + + Santini, Paolo ; Matteo Quarantelli ; Federico Chiesa + +Ciao Riccardo, +scusa per il ritardo nella mia risposta, ma stavamo aspettando anche delle informazioni da un fornitore. +Ti confermo che: + +La consegna del materiale sotto-riportato è prevista per il +28/04 +UR62 A0840184-CA13AA14ADF6N A0840192-BC11BA11UR29 A0840268-AA14LD21D con modulo ADAM A0117271Nota: dal momento che il deflettore DF15 A0840316-ABD1AA91B è già stato acquistato dal cliente finale, non credo abbiate intenzione di prenderlo, ma per favore confermami + +La consegna del materiale sotto-riportato è prevista per il +06/05 +Kit Conducibilità A0559015Nota: la settimana prossima potremmo avere un eventuale aggiornamento su un possibile anticipo. + +Se per te va bene, ci possiamo sentire alla fine della settimana prossima, per capire quale potrebbe essere lo schedule reale per l’attività di prova congiunta presso la nostra sede che hai ipotizzato con Matteo. +Fammi sapere. +Grazie in anticipo. +Approfitto di questa mail per chiederti un aggiornamento sul vostro ordine: sai quando dovrebbe arrivare? +Ancora grazie, +Pietro + +Pietro Bracchi +Regional Sales Manager + +Maselli Misure S.p.A. +M: ++ 39 338 5037946 +P: + + 39 0521 257410 +E: +Parma, Italy +www.maselli.com + + + + message with any third party, without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future. + + + Riccardo + + Santini, Paolo + +Ciao Pietro +Mi sai dire, in base ai vostri piani di produzione, quando riuscite ad avere i componenti per poterli provare insieme a voi. +Grazie +Ciao +Riccardo + +General + + Riccardo + + Santini, Paolo + +Ok grazie +Mi torna adesso anche con la richiesta di Ugo Bini +Ciao +Riccardo + + Bracchi + + Santini, Paolo + +Ciao Riccardo, +anche per l’UR62 viene fornito il modulo ADAM; non appare in offerta come riga separata perché l’informazione è intrinseca nel modello dell’UR62 stesso. +Pietro + +Pietro Bracchi +Regional Sales Manager + +Maselli Misure S.p.A. +M: ++ 39 338 5037946 +P: + + 39 0521 257410 +E: +Parma, Italy +www.maselli.com + + + + message with any third party, without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future. + + +General + + Riccardo + + Santini, Paolo + +Grazie Pietro +Ho un dubbio soltanto per l’UR62 +Questo strumento esce direttamente in 4-20mA, giusto? +Non ha bisogno del convertitore ADAM come l’UR29, lo chiedo perché nello schema condiviso da Matteo ha messo 2 ADAM uno ciascun refrattometro. + +Magari mi sono perso qualcosa +Grazie +Ciao +Riccardo + + +General + + Bracchi + + Santini, Paolo + +Ciao Riccardo, +ti confermo che abbiamo preso in carico la tua richiesta di mettere in produzione, prima dell’arrivo del vostro ordine ufficiale, il materiale come da offerte che ri-allego, +Appena arriverà il vostro ordine, aggiorneremo la nostra conferma d’ordine (che per ora non vi condividiamo) con il numero d’ordine stesso e ve la faremo avere. +Nei prossimi giorni ti confermeremo la consegna tentativa, in base alle informazioni che ci verranno dalla Produzione. +Allego poi la documentazione disponibile per quanto riguarda il Kit Conducibilità. +Grazie, +Pietro + +Pietro Bracchi +Regional Sales Manager + +Maselli Misure S.p.A. +M: ++ 39 338 5037946 +P: + + 39 0521 257410 +E: +Parma, Italy +www.maselli.com + + + + message with any third party, without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future. + + +General + + Riccardo + + Alessandra Bolzoni ; + Passera, Alessandro ; + Santini, Paolo + +Ciao Pietro +A seguito della telefonata ti scrivo per chiederti se potete mettere in produzione gli strumenti previsti in questo progetto, Diet As Regular - San Giorgio in Bosco + -. + +Refrattometro UR62 con convertitore ADAM 4-20mA +Refrattometro UR29 con convertitore ADAM 4-20mA +Conduttivimetro per misura su acqua +Ti chiedo anche un manuale del conduttivimetro per poterlo codificare correttamente ed avere un’idea della configurazione che poi quando verremo a testare lo spulceremo + bene. +Metto in copia anche Paolo per la codifica del convertitore ADAM + +Attendo tua conferma il manualetto e il tempo di consegna degli strumenti così pianifichiamo nel dettaglio +Grazie +Ciao +Riccardo +General +General + + Bracchi + +Buongiorno Paolo, +in allegato la documentazione richiesta relativa alle due offerte nuovamente allegate, per quanto riguarda l’UR62 e l’UR29 +Essendo materiale d’acquisto, non abbiamo invece i disegni relativi al conduttivimetro. +Resto a disposizione per ulteriori chiarimenti. +Grazie, +Pietro + +Pietro Bracchi +Regional Sales Manager + +Maselli Misure S.p.A. +M: ++ 39 338 5037946 +P: + + 39 0521 257410 +E: +Parma, Italy +www.maselli.com + + + + message with any third party, without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future. + + +General + + Bracchi + + Cantarelli, Paolo + +Buongiorno Paolo, +ho chiesto all’ufficio Tecnico di verificare quali disegni abbiamo disponibili. +Appena mi confermano, la informo. +Grazie, +Pietro + +Pietro Bracchi +Regional Sales Manager + +Maselli Misure S.p.A. +M: ++ 39 338 5037946 +P: + + 39 0521 257410 +E: +Parma, Italy +www.maselli.com + + + + message with any third party, without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future. + + + Bolzoni + +Buongiorno Paolo, +Le risponderà il collega Pietro Bracchi che sta seguendo il progetto e che ci sta leggendo in copia. + +Grazie +Cordiali saluti +Alessandra + + Paolo + +Buongiorno Alessandra +Nel ringraziarla per l’offerta inviata, le chiedo cortesemente se potrebbe inviarmi anche la documentazione tecnica ed i disegni / modelli 3D dei componenti sottoelencati + affinché possa procedere con la codifica + +UR62 e relativi attacchi +UR29 e relativi attacchi +conduttivimetro e relativi attacchi +Grazie +Cordiali saluti +Paolo Cantarelli +Mechanical Engineer - +Service Engineering + +Sidel +s.p.a. +Via la Spezia 241/A +43126 Parma, ITALY +Tel: +39 0521 999566 +www.sidel.com +P +Please consider the environment before printing this e-mail + + + +General + + Bolzoni + + Cantarelli, Paolo ; + walter.orsi ; + Pietro Bracchi ; + Matteo Quarantelli + + di test latenza, offerta RDO250201 per UR29 con modulo Adam e conducibilità + +Buongiorno, +Come da accordi intercorsi, invio la nostra offerta RDO250201 per: + +UR29 solo modulo ADAM (e attacco DN40 a saldare)Kit conducibilità composto da sonda e ricevitore (e nocciolo per installazione). +Tempo di consegna: 6 settimane dall’ordine con possibilità di anticipo in caso di esigenze particolari. + +Cordiali saluti + +Alessandra Bolzoni + +Sales coordinator + +Maselli Misure S.p.A. +P: + + 39 0521 257400 +E: +Parma, Italy + +www.maselli.com + + + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + + + +General + + Bracchi + + Matteo Quarantelli + + Andrea Devitis ; + Pierpaolo Fallini ; + 'walter.orsi' ; + 'Passera, Alessandro' ; + 'Cantarelli, Paolo' ; + Alessandra Bolzoni + +Questa volta con l’allegato. +Grazie, +Pietro + +Pietro Bracchi +Regional Sales Manager + +Maselli Misure S.p.A. +M: ++ 39 338 5037946 +P: + + 39 0521 257410 +E: +Parma, Italy +www.maselli.com + + + + message with any third party, without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future. + + + Bracchi + + Matteo Quarantelli + + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro ; + Cantarelli, Paolo ; + Alessandra Bolzoni + +Ciao Riccardo, +per quanto riguarda la prima riga (UR62, vedi parte evidenziata in giallo sotto), puoi fare riferimento all’offerta allegata. +Come a tua telefonata con Matteo, a breve ti faremo poi avere l’offerta per: + +UR29 solo modulo ADAM (e attacco DN40 a saldare)Kit conducibilità composto da sonda e ricevitore (e nocciolo per installazione). +Grazie, +Pietro + +Pietro Bracchi +Regional Sales Manager + +Maselli Misure S.p.A. +M: ++ 39 338 5037946 +P: + + 39 0521 257410 +E: +Parma, Italy +www.maselli.com + + + + message with any third party, without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future. + + + Riccardo + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro ; + Cantarelli, Paolo + +Grazie Matteo +Ho provato a chiamarti +Intendevo dire di tenere i due Adam sui refrattometri, la loro uscita 4-20mA, andrebbe all’MP06, l’MP06 sarebbe collegato in Profibus ed anche in 4-20mA, verso + il PLC, questo per garantire la velocità di trasmissione dai refrattometri, se l’MP06 non inserisce latenza nel loop 4-20mA, ed il collegamento Profibus, con l’opportuno telegramma vi consentirebbe di ricevere i dati richiesti, ed avremmo un test anche della + latenza Profibus su questa macchina. +Pietro quando puoi inviarci l’offerta aggiornata? +Inse4risco nel loop anche Paolo Cantarelli che si occuperà della parte meccanica del progetto, inclusa la codifica dei componenti +Grazie +Ciao +Riccardo + +General + + Quarantelli + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro + +Ciao Riccardo, vedi sotto le risposte. +A presto +Matteo + +Ing. Matteo Quarantelli +Technical manager + +Maselli Misure S.p.A. +P: + + 39 0521 257450 +E: +Parma, Italy +www.maselli.com + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + +General + + Riccardo + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro + +Grazie Matteo +Bene, l’attuatore di che tipo è? Nei 900ms ce anche il suo ritardo di attuazione, anche il tempo di ciclo del PLC ma con una 1200 immagino sia del ms. la sola latenza + del loop dell’UR potrebbe essere confrontabile con i 300ms attesi. +Questo poi lo verifichiamo in campo. +OK +Direi che sulla prima applicazione verificheremo le prestazioni in campo, ma non mi aspetto problemi anche perché la taglia della macchina non è grande e quindi + i flussi sono relativamente bassi. +Matteo mi puoi aggiornare lo schema completo? +Vedi allegato SLIDE 2 +Ha senso inserire comunque l’MP06 nel loop di corrente tra i sensori ed il PLC, ingresso 4-20 ed uscita 4-20, si avrebbe un incremento di latenza, non credo sia + eccessivo, ma avremmo il vantaggio di poter inviare i dati che avevamo condiviso inizialmente: +Intendi al posto dell’ADAM ? direi di no altrimenti introdurremmo un riardo di alcuni secondi. +Se vuoi possiamo predisporre anche l’MP06 (SLIDE 1) per una seconda tornata di test. Il test della vita deve essere fatto con gli ADAM (SLIDE 2) ed il log dovrebbe farlo il plc. + +centralina MP06 Maselli per gestione Maselli da remoto, alla quale vanno passati alcuni dati: +da Sidel a Maselli +Alcuni di questi non sono al momento trasferibili da PLC a MP06 (manca telegramma e implementazione sw) + +lettura brix UR62 in ingresso linea sciroppo [°Brix] +lettura brix UR29 da stream sciroppo [°Brix] +temperatura sciroppo [°C] +flusso sciroppo [kg/min] +flusso acqua [l/min] +densità sciroppo [kg/dm3] +livello tank sciroppo [%] +volume attivo tank sciroppo [L] +lettura brix prodotto [°Brix] +temperatura prodotto [°C] +CO2 prodotto +lettura conducibilità dell’acqua in ingresso macchina (?) +temperatura acqua in ingresso macchina (?) +Pressione ingresso linea sciroppo +Pressione stream sciroppo + +segnali da Maselli a Sidel (Profibus): + +Brix sciroppo ingresso linea sciroppo UR62Brix sciroppo stream sciroppo UR29Conducibilità acqua ingressoBrix acqua + +Per il resto ti risponde Pietro +Chiedo a Pietro se mi può preparare l’offerta completa: + +UR62 con convertitore RS485/(4-20mA) + attacchi +UR29 con convertitore RS485/(4-20mA) + attacchi +conduttivimetro con centralina + attacchi +vi chiedo inoltre anche i manuali dei sensori, i disegni con le dimensioni, e possibilmente i 3D, tutto questo come sapete per codificare i componenti. +Teneteci aggiornati sugli sviluppi del nuovo bus, più veloce, per la comunicazione con gli strumenti. +Matteo hai della documentazione oppure è ancora presto? +Presto, presto +Grazie +Ciao +Riccardo + + +General + + Quarantelli + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro + +Ciao Riccardo, +siamo finalmente riusciti a terminare i test con UR29 +Di seguito i risultati. +Matteo + + +Ing. Matteo Quarantelli +Technical manager + +Maselli Misure S.p.A. +P: + + 39 0521 257450 +E: +Parma, Italy +www.maselli.com + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + +General + + Quarantelli + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro + +Stiamo completando i test .. purtroppo, è stato necessario più tempo del previsto. +Spero di avere news domani. +Ti tengo aggiornato +Matteo + +Ing. Matteo Quarantelli +Technical manager + +Maselli Misure S.p.A. +P: + + 39 0521 257450 +E: +Parma, Italy +www.maselli.com + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + + Riccardo + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro + +Ciao Matteo +Dammi buone notizie… +Grazie +Ciao +Riccardo + +General + + Quarantelli + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro + +Ok, grazie. +Entro domani dovremmo avere il feedback sui test . Ti faccio sapere +Matteo + +Ing. Matteo Quarantelli +Technical manager + +Maselli Misure S.p.A. +P: + + 39 0521 257450 +E: +Parma, Italy +www.maselli.com + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + +General + + Riccardo + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro + +Ciao Matteo +Ripeto quello che ho detto andava evidenziato nel momento in cui è emersa la questione, l’anno scorso, quando è stato deciso di inserire l’opzione profibus ed uscite + 4-20mA con la MP06. +Certo che non voglio fare verifiche di timing nel progetto di San Giorgio. +Ho riassunto uno specchietto per definire il perimetro di cosa stiamo parlando. + +| Machine size | 6 | 9 | 10 | +|------------------------|-------|-------|-------| +| Prod flow Nom [l/h] | 27000 | 54000 | 60000 | +| Prod flow Min [l/h] | 13500 | 27000 | 30000 | +| Prod flow Nom [l/s] | 7,50 | 15,00 | 16,67 | +| Prod flow min [l/s] | 3,75 | 7,50 | 8,33 | +| | | | | +| 300ms Lt eq @Nom speed | 2,25 | 4,5 | 5 | +| 300ms Lt eq @Min speed | 1,125 | 2,25 | 2,5 | + +Appena ci vediamo ne parliamo meglio. +Dai dati che ho lo strumento in Tolosa UR24, fornisce la stessa misura/valore per almeno 2 secondi, come vedi su macchine molto grandi l’indeterminazione sui litri + di sciroppo diventano troppi. +Fammi sapere per i test +Ciao +Riccardo + +General + + Quarantelli + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro + +Ciao Riccardo, +purtroppo, con MP06 connesso a 2 sensori è praticamente impossibile soddisfare il requisito di 300 ms nemmeno aumentando la velocità della seriale a 115200 (adesso andiamo a 19200) +E’ un problema intrinseco del protocollo master-slave tra mp06 e sensori. +Resta in realtà da verificare se questo requisito, all’interno dell’intera catena di pilotaggio sia davvero necessario. +Noi potremmo, come anticipato, predisporre anche l’MP06 per i test comparativi. +Cercheremo di fare i test mercoledì o giovedì +Ti faccio sapere +Grazie +Matteo + +Ing. Matteo Quarantelli +Technical manager + +Maselli Misure S.p.A. +P: + + 39 0521 257450 +E: +Parma, Italy +www.maselli.com + +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| + +General + + Riccardo + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini ; + walter.orsi ; + Passera, Alessandro + +Grazie Matteo +Fammi sapere quando riuscite ad effettuare il test “latenza sensore con convertitore RS485 / 4..20 mA”. +Sono sicuro che la tempistica dei 300ms, è emersa sin dai primi incontri in Maselli, è per questa ragione che era stato deciso di fornire l’MP06 con le uscite in + corrente e Profibus, per poi verificare in cantiere se il Profibus fosse sufficiente pensando alle future applicazioni. +Una domanda che mi viene spontanea è possibile aumentare il più possibile il baudrate della seriale? Dato che è una 485 differenziale e la lunghezza del cavo è + minima. +Gradirei partecipare al test, se possibile. +In quell’occasione potremmo vedere nel dettaglio i dati raccolti nel mixer di Tolosa, il primo mixer della nuova generazione sidel, fornito di un UR24 con convertitore + Profibus +Installato nel seguente modo: + +Ricordo, inoltre per la cronaca, che al mio rientro da Tolosa diciamo nel 2012, sono passato in Maselli e parlando di questo argomento con Paolo (il softwarista + in “pensione”) mi diceva che questa “scarsa” velocità dell’UR24 sarebbe stata risolta, oppure gestibile con la nuova generazione di strumenti equipaggiati con un nuovo microcontrollore. +Fatemi sapere, +Andrea M. fammi sapere per l’altro tema a riguardo degli strumenti da inserire al “volo” per avere dati sui trend del brix, prima del progetto. +Ciao +Riccardo + + +General + + Quarantelli + + Andrea Maselli ; + Andrea Devitis ; + Pierpaolo Fallini + + +Ciao riccardo ecco le 2 slides. +Matteo + + + + + +Ing. Matteo Quarantelli +Technical manager + +Maselli Misure S.p.A. +P: + + 39 0521 257450 +E: +Parma, Italy +www.maselli.com diff --git a/04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Maselli Sensor to Siemens PLC Communication Implementation.md b/04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Maselli Sensor to Siemens PLC Communication Implementation.md new file mode 100644 index 0000000..a9ed2be --- /dev/null +++ b/04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Maselli Sensor to Siemens PLC Communication Implementation.md @@ -0,0 +1,320 @@ + +## Introduction + +This document provides an implementation guide for establishing communication between a Maselli sensor (which uses the ADAM protocol over RS485) and a Siemens S7-315 DP/PN PLC using a Waveshare RS232/485 TO WIFI ETH (B) gateway. This implementation handles the unidirectional communication where data flows from the sensor to the PLC. + +## Maselli Protocol with ADAM Overview + +As per the provided documentation, the Maselli sensor communicates with the following characteristics: + +- **Maselli UR29**: RS485 with 115200 baud, 8N1 settings + +- **Maselli UR62**: RS485 with 19200 baud, 8N1 settings + +- **Communication Type**: Unidirectional (sensor sends data to PLC) + +- **Data Format**: String with specific format: + + ``` + # XX XX.YYY CkCk Cr + ``` + + Where: + + - `#` is the start character + - `XX` is the ADAM address (2 chars) + - `XX.YYY` is the Brix or Temperature value in mA (6 chars) + - `CkCk` is the checksum (2 chars) + - `Cr` is the carriage return +- **Value Range Example**: + + - 4 mA corresponds to Low Brix value (e.g., 0 Brix) + - 20 mA corresponds to High Brix value (e.g., 80 Brix) + +## SCL Implementation + +The following SCL code provides a complete implementation for handling this communication. The implementation consists of multiple parts: + +1. A function block for managing TCP/IP communication with the gateway +2. Functions for parsing the Maselli protocol string +3. Functions for scaling the mA value to the appropriate Brix value +4. Configuration functions for the TCP connection + +### Main Function Block + +```scl +FUNCTION_BLOCK "FB_Maselli_Communications" +VAR_INPUT + xExecute : BOOL; // Trigger to initiate connection + tConnectionID : TCON_IP_v4; // TCP connection parameters +END_VAR + +VAR_OUTPUT + xConnected : BOOL; // Connection status + xError : BOOL; // Communication error + wErrorID : WORD; // Error code + rBrixValue : REAL; // Calculated Brix value + rTempValue : REAL; // Calculated Temperature value (if applicable) + rCurrentmA : REAL; // Received mA value +END_VAR + +VAR + // TCP communication variables + fbTCON : TCON; // FB for TCP connection + fbTRCV : TRCV; // FB for TCP reception + xTCONExecute : BOOL; + xTRCVExecute : BOOL; + wTCONID : WORD := 1; // Connection ID + + // Buffer and processing variables + aRxBuffer : ARRAY[0..255] OF BYTE; // Reception buffer + iRxLength : INT; // Received length + sRxString : STRING[255]; // Reception string + sParsedValue : STRING[6]; // Extracted value as string (XX.YYY) + + // Parsing variables + iState : INT := 0; // Parsing state + xNewDataReceived : BOOL := FALSE; // New data flag + + // Scaling variables + rLowBrix : REAL := 0.0; // Low Brix value (4mA) + rHighBrix : REAL := 80.0; // High Brix value (20mA) +END_VAR + +VAR CONSTANT + START_CHAR : BYTE := 16#23; // '#' in ASCII +END_VAR + +BEGIN + // ---- TCP Connection Management ---- + IF xExecute AND NOT xConnected THEN + xTCONExecute := TRUE; + END_IF; + + // Establish connection + fbTCON( + EN := TRUE, + ENO => , + REQ := xTCONExecute, + ID := wTCONID, + CONNECT := tConnectionID, + DONE => xConnected, + BUSY => , + ERROR => xError, + STATUS => wErrorID + ); + + // Reset connection trigger + IF xConnected OR xError THEN + xTCONExecute := FALSE; + END_IF; + + // ---- Data Reception ---- + IF xConnected THEN + xTRCVExecute := TRUE; + + // Receive data + fbTRCV( + EN := TRUE, + ENO => , + REQ := xTRCVExecute, + ID := wTCONID, + LEN := 0, // Adhoc mode (receives whatever is available) + DATA := aRxBuffer, + RCVD_LEN => iRxLength, + DONE => xNewDataReceived, + BUSY => , + ERROR => xError, + STATUS => wErrorID + ); + + // Process received data + IF xNewDataReceived AND iRxLength > 0 THEN + // Convert data to string for processing + sRxString := ''; + FOR i := 0 TO iRxLength-1 DO + sRxString := CONCAT(IN1 := sRxString, + IN2 := CHR(IN := aRxBuffer[i])); + END_FOR; + + // Process Maselli/ADAM protocol + ParseMaselliString(sRxString); + + // Calculate Brix value based on mA value (linear scale) + rBrixValue := LinearScale(rCurrentmA, 4.0, 20.0, rLowBrix, rHighBrix); + + // Reset flag + xNewDataReceived := FALSE; + END_IF; + END_IF; +END_FUNCTION_BLOCK +``` + +### Parsing Function + +```scl +// Function to process the received Maselli/ADAM string +FUNCTION "ParseMaselliString" : VOID +VAR_INPUT + sInputString : STRING; +END_VAR +VAR_TEMP + sCurrentChar : STRING(1); + iPos : INT := 0; + iParseState : INT := 0; // 0:Waiting for #, 1:Reading addr, 2:Reading value, 3:Reading checksum + sAddrStr : STRING(2); + sValueStr : STRING(6); + sChecksumStr : STRING(2); +END_VAR +BEGIN + // Reset variables + sAddrStr := ''; + sValueStr := ''; + sChecksumStr := ''; + + // Parse the string character by character + FOR iPos := 0 TO LEN(sInputString) - 1 DO + sCurrentChar := MID(IN := sInputString, L := 1, P := iPos + 1); + + CASE iParseState OF + 0: // Waiting for start character '#' + IF sCurrentChar = '#' THEN + iParseState := 1; + END_IF; + + 1: // Reading ADAM address (2 characters) + sAddrStr := CONCAT(IN1 := sAddrStr, IN2 := sCurrentChar); + IF LEN(sAddrStr) = 2 THEN + iParseState := 2; + END_IF; + + 2: // Reading mA value (6 characters, format XX.YYY) + sValueStr := CONCAT(IN1 := sValueStr, IN2 := sCurrentChar); + IF LEN(sValueStr) = 6 THEN + iParseState := 3; + // Convert string to real value + #rCurrentmA := STRING_TO_REAL(sValueStr); + END_IF; + + 3: // Reading checksum (2 characters) + sChecksumStr := CONCAT(IN1 := sChecksumStr, IN2 := sCurrentChar); + // Checksum validation not implemented in this simplified example + END_CASE; + END_FOR; +END_FUNCTION +``` + +### Scaling Function + +```scl +// Function to linearly scale the mA value to Brix +FUNCTION "LinearScale" : REAL +VAR_INPUT + rInput : REAL; // Value to scale (mA) + rInMin : REAL; // Input minimum (4mA) + rInMax : REAL; // Input maximum (20mA) + rOutMin : REAL; // Output minimum (0 Brix) + rOutMax : REAL; // Output maximum (80 Brix) +END_VAR +BEGIN + // Linear scaling formula + #LinearScale := (rInput - rInMin) * (rOutMax - rOutMin) / (rInMax - rInMin) + rOutMin; + + // Ensure result is within limits + IF #LinearScale < rOutMin THEN + #LinearScale := rOutMin; + ELSIF #LinearScale > rOutMax THEN + #LinearScale := rOutMax; + END_IF; +END_FUNCTION +``` + +### Main Application Block + +```scl +// Main application block +ORGANIZATION_BLOCK "OB1" +VAR_TEMP + // Temporary variables +END_VAR +BEGIN + // Configure TCP connection + "ConfigureTCPConnection"(); + + // Process Maselli data + "FB_Maselli_Communications"( + xExecute := TRUE, + tConnectionID := "g_tConnection" + ); + + // Additional code to use Brix values can be added here +END_ORGANIZATION_BLOCK +``` + +### Connection Configuration Function + +```scl +// Function to configure TCP connection parameters +FUNCTION "ConfigureTCPConnection" : VOID +VAR_GLOBAL + g_tConnection : TCON_IP_v4; // Global variable for connection parameters +END_VAR +BEGIN + // Configure TCP connection parameters + g_tConnection.InterfaceId := 64; // Ethernet interface ID (verify in hardware) + g_tConnection.ID := 1; // Connection ID + g_tConnection.ConnectionType := 11; // Connection type: TCP + g_tConnection.ActiveEstablished := TRUE; // PLC initiates connection + + // IP and port of Waveshare gateway + g_tConnection.RemoteAddress.ADDR[1] := 192; // IP Address: 192.168.x.x + g_tConnection.RemoteAddress.ADDR[2] := 168; // Adjust according to gateway IP + g_tConnection.RemoteAddress.ADDR[3] := 1; // Adjust according to gateway IP + g_tConnection.RemoteAddress.ADDR[4] := 10; // Adjust according to gateway IP + g_tConnection.RemotePort := 8899; // Default gateway port + + // Local port for TCP connection + g_tConnection.LocalPort := 2000; // Arbitrary local port +END_FUNCTION +``` + +## Configuration Guide + +To implement this solution, follow these steps: + +### 1. Configure the Waveshare Gateway + +Configure the Waveshare RS232/485 TO WIFI ETH (B) gateway in transparent transmission mode with these parameters: + +- **For UR29 sensor**: + + - RS485: 115200 baud, 8N1 + - TCP Server mode (recommended) + - Fixed IP address on your network +- **For UR62 sensor**: + + - RS485: 19200 baud, 8N1 + - TCP Server mode (recommended) + - Fixed IP address on your network + +### 2. PLC Configuration + +- Import the SCL code into your TIA Portal project +- Adjust the IP address settings in the `ConfigureTCPConnection` function to match your gateway's IP +- Modify the `rLowBrix` and `rHighBrix` values according to your specific application requirements +- Configure the Ethernet port of the S7-315 PLC to be on the same subnet as the gateway + +### 3. Verification + +After implementing the code: + +- Monitor the `xConnected` output to verify the connection status +- Check the `rBrixValue` output to see the converted Brix values +- Use the `xError` and `wErrorID` outputs for troubleshooting if connection issues occur + +## Additional Notes + +- This implementation focuses on handling the reception of data in the specified Maselli/ADAM format +- The checksum validation is not implemented in this example but could be added for improved reliability +- For optimal performance, ensure the network connection between the PLC and the gateway is stable +- Consider adding watchdog functionality to detect communication failures \ No newline at end of file diff --git a/04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Masselli (UR62 & UR29).md b/04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Masselli (UR62 & UR29).md new file mode 100644 index 0000000..1349139 --- /dev/null +++ b/04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Masselli (UR62 & UR29).md @@ -0,0 +1,254 @@ + + +### Utility da Maselli +*** + +[MAU_V_2_9_6.msi](file:///D:%5CInstalad%5CMaselli%20-%20Utility%5CMAU_V_2_9_6.msi) + + + + + + + + + + + + + + +# Evaluación Técnica de Refractómetros en Línea para Medición de Brix en Jarabe Diet con Integración PLC Siemens (<300ms) + +## 1. Resumen Ejecutivo + +Este informe evalúa la idoneidad de los refractómetros en línea Masselli UR62 y UR29 para la medición de grados Brix (°Bx) en jarabe Diet, con un enfoque específico en la alta precisión y una velocidad de adquisición de datos inferior a 300 milisegundos (ms) para la integración con un PLC Siemens. Adicionalmente, se analizan alternativas de mercado que cumplen o superan estos requisitos. + +El análisis concluye que el modelo Masselli UR62, debido a su precisión "básica" (±0.1 a ±0.2 °Bx), es probablemente inadecuado para el control preciso requerido en jarabes Diet de bajo contenido de Brix.1 El modelo Masselli UR29 ofrece una precisión significativamente mayor (±0.02 °Bx), adecuada para la aplicación.3 Sin embargo, lograr la tasa de actualización requerida de <300 ms hacia un PLC Siemens presenta desafíos con la arquitectura Masselli. Las vías de comunicación estándar (analógica, RS485) son insuficientes. La integración a través de los paneles de control MP02 o el más reciente MP06, que ofrecen opciones de Profibus DP, Profinet y Ethernet/IP 4, es teóricamente posible, pero la latencia acumulada a través de la cadena de comunicación (sensor -> panel -> PLC) requiere una verificación específica por parte del fabricante para confirmar el cumplimiento del objetivo de <300 ms. + +Varias alternativas de mercado fueron evaluadas. Los refractómetros Anton Paar L-Rix 5100 y L-Rix 5200 destacan por ofrecer alta precisión (±0.1 °Bx y ±0.05 °Bx respectivamente) y, crucialmente, soporte nativo para Profinet IO y Ethernet/IP.6 Esta capacidad de comunicación directa proporciona la ruta más prometedora y de menor latencia para cumplir con el requisito de velocidad de <300 ms con PLCs Siemens. Otros competidores como Vaisala (PR53AC) y Schmidt + Haensch (serie iPR) ofrecen modelos de alta precisión (especialmente S+H iPR HR2 con ±0.02 °Bx 8), pero carecen de soporte nativo para Profinet/Ethernet/IP en sus configuraciones estándar, dependiendo de Modbus TCP/RTU o gateways externos, lo que introduce complejidad y posibles cuellos de botella de latencia.8 Mettler Toledo, aunque fuerte en instrumentación de laboratorio y pesaje con conectividad Profinet/EIP 10, no presenta evidencia clara en la investigación de un refractómetro _en línea_ adecuado para esta aplicación específica. + +Se recomienda prioritariamente investigar los modelos **Anton Paar L-Rix 5200** (por su mayor precisión) y **L-Rix 5100**, dada su combinación de precisión adecuada y soporte nativo para protocolos de alta velocidad compatibles con Siemens. Como segunda opción, se debe verificar explícitamente con Masselli la velocidad de actualización alcanzable (<300 ms) para la configuración **UR29 -> MP02 -> Profinet/Ethernet/IP**, aprovechando la excelente precisión del UR29. La opción del UR29 a través del MP06 requiere una validación aún más cuidadosa debido a las preocupaciones sobre la latencia del sistema. + +## 2. Introducción + +### 2.1. Contexto + +La medición precisa y en tiempo real de los grados Brix es un parámetro crítico en la producción de bebidas, asegurando la consistencia del producto, el cumplimiento de las especificaciones y la optimización del uso de ingredientes. Esta necesidad se acentúa en la producción de bebidas "Diet" o bajas en calorías, donde las concentraciones de edulcorantes son significativamente menores. Un control riguroso sobre bajos niveles de Brix es esencial para mantener el perfil de sabor deseado y la calidad del producto final. + +### 2.2. Desafío + +La aplicación específica descrita presenta un desafío técnico doble: requiere no solo una alta precisión en la medición de Brix (adecuada para niveles bajos encontrados en jarabes Diet) sino también una velocidad de adquisición de datos excepcionalmente rápida. La exigencia de un tiempo de ciclo de actualización inferior a 300 ms hacia un sistema de control basado en PLC Siemens impone restricciones significativas en la arquitectura de comunicación del sistema de medición. La integración fluida y de alta velocidad con la plataforma Siemens es, por lo tanto, un criterio fundamental. + +### 2.3. Objetivo + +El objetivo de este informe es realizar una evaluación técnica exhaustiva de los refractómetros en línea Masselli UR62 y UR29 frente a los criterios de alta precisión y velocidad de actualización <300 ms para la integración con PLC Siemens. Adicionalmente, se identificarán y compararán alternativas viables disponibles en el mercado que puedan satisfacer o superar estos exigentes requisitos, proporcionando una base sólida para la selección del equipo más adecuado para la monitorización de Brix en jarabe Diet. + +### 2.4. Metodología + +El análisis se basa en la revisión de hojas de datos técnicos de los fabricantes, especificaciones de productos, manuales de usuario y conocimiento general de la industria sobre instrumentación de procesos, automatización y protocolos de comunicación industrial. Se presta especial atención a los parámetros de precisión, rango de medición, tiempos de respuesta del sensor, interfaces de comunicación disponibles y arquitecturas de sistema que influyen en la latencia total de la adquisición de datos hacia el PLC. + +## 3. Análisis de Refractómetros en Línea Masselli (UR62 & UR29) + +### 3.1. Descripción General de Masselli UR62 + +El Masselli UR62 es un refractómetro digital en línea tipo sonda, diseñado para una instalación sencilla directamente en la línea de proceso o en tanques.1 Su función principal es la medición continua de la concentración de líquidos, expresada en Brix, índice de refracción (nD) o porcentaje de concentración, ofreciendo lo que el fabricante denomina "precisión básica".1 Este modelo está orientado a aplicaciones que requieren una salida analógica estándar (4-20 mA) para la monitorización o alarmas básicas de proceso cuando la concentración se desvía de los límites especificados.1 + +- **Rango de Medición:** El UR62 opera típicamente en un rango de 0 a 80 °Bx, correspondiente a un índice de refracción de 1.3170 a 1.4907 nD.1 Este rango es adecuado para muchas aplicaciones en la industria de bebidas, aunque la precisión en la parte baja del rango es crucial para jarabes Diet. +- **Precisión/Exactitud:** Calificada como "básica" por el fabricante.1 Los valores específicos encontrados varían ligeramente entre las fuentes documentales: + - ±0.20 °Bx (equivalente a ±0.0004 nD) cuando se utiliza de forma autónoma.1 + - La precisión puede mejorar a ±0.10 °Bx (equivalente a ±0.0002 nD) si se combina con el receptor/pantalla opcional RC24.2 +- **Resolución:** La resolución de la medición es de 0.2 °Bx en la configuración autónoma, mejorando a 0.1 °Bx cuando se utiliza junto con el sistema IR02 (que incluye el RC24).2 +- **Tiempo de Respuesta del Sensor:** Se especifica un tiempo de respuesta de 2 segundos.13 Es importante notar que este valor se refiere al tiempo que tarda el sensor en reflejar un cambio en el proceso medido, y no representa la tasa de actualización de datos hacia un sistema de control externo. +- **Interfaces de Comunicación:** + - **Estándar:** Salida analógica 4-20 mA.1 + - **Digital:** Interfaz RS485 incorporada, utilizada principalmente para la configuración a través de un PC o para la conexión con la unidad de visualización opcional RC24.1 Algunas fuentes mencionan la disponibilidad opcional de Profibus DP o Ethernet/IP 12, pero esto probablemente requeriría el uso de convertidores externos o unidades de control como el RC24 o el MP06, ya que no son interfaces nativas del sensor UR62. + +### 3.2. Descripción General de Masselli UR29 + +El Masselli UR29 se presenta como un componente dentro de sistemas modulares más complejos, como el Analizador de Bebidas IB07.3 Típicamente, opera en conjunto con un Receptor Multiparamétrico MP01 o MP02, que gestiona la comunicación y el procesamiento de datos del sensor.3 Este modelo está diseñado para aplicaciones que requieren una mayor precisión en la medición. + +- **Rango de Medición:** Una hoja de datos específica para el sistema IB07 menciona explícitamente un rango de medición de 0-20 °Bx para el UR29 en esa configuración.3 Este rango es particularmente relevante para la aplicación de jarabe Diet. Aunque es probable que el sensor sea capaz de rangos más amplios (modelos relacionados como UR24 y UR32 alcanzan hasta 95 °Bx 15), la mención del rango 0-20 °Bx subraya su potencial adecuación para bajas concentraciones. +- **Precisión/Exactitud:** La precisión declarada para el UR29 en el contexto del IB07 es del 0.1% del rango, con una exactitud máxima de ±0.02 °Bx (considerando una variación de temperatura de ±10 °C).3 Esta precisión es notablemente superior a la del UR62 y se alinea mejor con los requisitos de control estricto para jarabes Diet. +- **Tiempo de Respuesta del Sensor:** Se indica un tiempo de respuesta de 1.0 segundo.3 Al igual que con el UR62, este es el tiempo de respuesta intrínseco del sensor a cambios en el proceso, no la tasa de actualización de datos al PLC. +- **Interfaces de Comunicación:** El UR29 está diseñado para conectarse digitalmente (probablemente mediante RS422/485, como se indica para el UR32 15) al receptor MP01/02.3 Es el receptor MP01/02 el que proporciona las interfaces de salida al sistema de control superior.3 + +### 3.3. Paneles de Control/Interfaces Masselli (RC24, MP01/02, MP06) + +La integración de los refractómetros Masselli con sistemas de control como un PLC Siemens depende de las interfaces y paneles de control utilizados: + +- **RC24:** Es un receptor/controlador básico opcional diseñado principalmente para el UR62.1 Permite la visualización remota de datos y mejora ligeramente la precisión y resolución reportada del UR62.2 Funciona como una pantalla y posiblemente como un repetidor de la señal (probablemente retransmitiendo vía analógica o manteniendo la comunicación RS485), pero es improbable que soporte directamente protocolos de alta velocidad como Profinet o Ethernet/IP. +- **MP01/02:** Son receptores multiparamétricos utilizados con sensores de mayor precisión como el UR29, a menudo como parte de sistemas de análisis de bebidas (IB07).3 Estos módulos gestionan la comunicación con el sensor (vía digital, probablemente RS485/422) y proporcionan las salidas al sistema de control. El MP02, en particular, ofrece salidas analógicas (0/4-20mA), RS485 y, de forma opcional, **Profibus DP o Ethernet/IP**.4 La disponibilidad de Ethernet/IP en el MP02 representa una vía potencial para la integración con Siemens. +- **MP06:** Es el panel de control "inteligente" más reciente de Masselli, diseñado como interfaz para los analizadores de bebidas en línea de la compañía (como IB07/IB08, que utilizan el UR29).5 Este panel puede gestionar múltiples instrumentos (hasta 8) 5 y cuenta con pantalla táctil, servidor web integrado y capacidades de registro de datos.5 De manera crucial para esta aplicación, el MP06 lista explícitamente entre sus interfaces de comunicación: Wifi, Ethernet (para red local/web), USB, RS485 y, fundamentalmente, **Interfaces Fieldbus: Profibus, Profinet, Ethernet/IP, ModbusTCP**.5 Esto aborda directamente la necesidad de protocolos compatibles con Siemens. + +### 3.4. Evaluación de la Precisión para Jarabe Diet + +La selección de un refractómetro adecuado para jarabe Diet depende críticamente de su precisión, especialmente en el extremo inferior de la escala Brix. + +- La precisión especificada para el UR62 (±0.1 a ±0.2 °Bx 2) presenta un desafío significativo para el control de jarabes Diet de bajo contenido en Brix. En un jarabe con, por ejemplo, 2 °Bx, una incertidumbre de ±0.2 °Bx representa un error relativo del ±10%. Este nivel de incertidumbre es frecuentemente inaceptable para mantener la consistencia del sabor y la calidad en bebidas Diet, donde pequeñas variaciones absolutas pueden ser percibidas por el consumidor. +- En contraste, la precisión del UR29, especificada en ±0.02 °Bx 3, es mucho más adecuada. Para el mismo jarabe de 2 °Bx, esto representa un error relativo de solo ±1%. Este nivel de precisión permite un control mucho más estricto del proceso, lo cual es fundamental para productos de baja concentración. +- Además de la exactitud, la resolución (la mínima diferencia detectable) es importante para una regulación estable. El UR29, presumiblemente emparejado con el MP01/02, ofrecería una resolución superior (implícito por su mayor precisión general) en comparación con el UR62 autónomo (0.2 Brix 2). El UR62 con RC24 mejora a 0.1 Brix 2, pero sigue siendo inferior en precisión general al UR29. + +Por lo tanto, para la aplicación específica de jarabe Diet, el **Masselli UR29 es el candidato preferible** desde el punto de vista de la precisión. + +### 3.5. Velocidad de Adquisición de Datos (<300ms) e Integración con PLC Siemens + +El requisito principal del usuario es lograr una tasa de actualización de datos en el PLC Siemens inferior a 300 ms. Este es un requisito exigente para sistemas de medición de procesos. + +- **Latencia del Sistema:** Es crucial entender que el tiempo total desde que el sensor realiza una medición hasta que el dato está disponible y utilizable en el PLC Siemens no depende únicamente del tiempo de respuesta intrínseco del sensor (1-2 segundos para UR29/UR62 3). Este tiempo total es la suma de las latencias introducidas en cada paso de la cadena de comunicación: + + 1. Procesamiento interno del sensor. + 2. Comunicación del sensor al receptor/panel (ej. UR29 a MP02/MP06 vía RS485/422). + 3. Procesamiento en el receptor/panel (ej. MP02 o MP06). + 4. Comunicación desde el receptor/panel al PLC (ej. vía Profinet/Ethernet/IP). + 5. Procesamiento del ciclo del PLC. + + Para un control de proceso rápido, el PLC necesita recibir datos actualizados frecuentemente (ciclo <300ms). Los enlaces serie (como RS485 entre sensor y panel) son inherentemente más lentos y tienen mayor sobrecarga de protocolo que los buses de campo integrados como Profinet IO. Además, la capacidad de procesamiento del panel intermedio (MP02 o MP06) influirá en cuán rápido puede consultar al sensor y actualizar los datos hacia el PLC. La simple presencia de una interfaz Profinet/EIP en el MP06 5 o MP02 4 no garantiza automáticamente que _todo el sistema_ pueda mantener un ciclo de actualización inferior a 300 ms. + +- **Evaluación de las Vías de Comunicación Masselli vs. Requisito de Velocidad:** + + - **UR62 -> Analógico (4-20mA) -> PLC:** Inadecuado para <300ms. Las señales analógicas requieren conversión A/D en el PLC y sus tasas de actualización son típicamente mucho más lentas (del orden de segundos o cientos de milisegundos en el mejor de los casos, dependiendo del módulo de E/S del PLC). + - **UR62 -> RS485 -> MP06 -> Profinet/EIP -> PLC:** Técnicamente posible dado que MP06 soporta Profinet/EIP.5 Sin embargo, la latencia introducida por el enlace serie RS485 y el procesamiento del MP06 hacen que alcanzar <300ms sea cuestionable y deba ser confirmado por Masselli. La preocupación expresada por el usuario sobre la lentitud del MP06 parece justificada en este contexto de alta velocidad requerida. + - **UR29 -> MP01/02 -> MP06 -> Profinet/EIP -> PLC:** Similar al caso anterior, pero partiendo de un sensor más preciso. La latencia acumulada a través de múltiples dispositivos y enlaces (UR29->MP02, MP02->MP06, MP06->PLC) sigue siendo una preocupación para el objetivo de <300ms.3 + - **UR29 -> MP01/02 -> Profinet/EIP (Directo desde MP02) -> PLC:** Esta parece ser la arquitectura Masselli más prometedora para la velocidad. Si el módulo MP02 puede gestionar la comunicación con el UR29 y actualizar los datos a través de su interfaz opcional Ethernet/IP o Profibus DP 4 con un tiempo de ciclo suficientemente rápido, podría cumplir el requisito de <300ms. Sin embargo, **la velocidad de ciclo real del MP02 en esta configuración necesita confirmación explícita del fabricante.** +- **Conclusión sobre Velocidad Masselli:** Basándose en los tiempos de respuesta documentados de los sensores y la arquitectura de sistema típica que involucra paneles intermedios y, a menudo, enlaces serie antes de alcanzar una interfaz de bus de campo de alta velocidad, lograr un ciclo de actualización consistente inferior a 300 ms hacia un PLC Siemens con los sistemas Masselli **presenta un desafío significativo**. La viabilidad depende críticamente del rendimiento específico de la ruta de comunicación elegida (especialmente UR29 -> MP02 -> Profinet/EIP) y debe ser validada directamente con Masselli. + + +## 4. Evaluación de Refractómetros en Línea Alternativos + +Dadas las posibles limitaciones de los modelos Masselli en cuanto a la combinación de alta precisión (en el caso del UR62) y la velocidad de adquisición de datos confirmada (<300ms) a través de protocolos preferidos por Siemens (Profinet/Ethernet/IP), es necesario evaluar alternativas de mercado. Fabricantes líderes en refractometría de procesos incluyen Vaisala (anteriormente K-Patents), Anton Paar, Schmidt + Haensch y Mettler Toledo, entre otros.6 + +### 4.1. Tabla Comparativa de Especificaciones Técnicas + +La siguiente tabla resume las especificaciones clave del modelo Masselli más relevante (UR29) y las principales alternativas, enfocándose en los criterios definidos por el usuario (precisión, velocidad/protocolos) para facilitar una comparación directa. Esta tabla permite una evaluación rápida de los candidatos más fuertes frente a los requisitos específicos del proyecto. + +| | | | | | | | +|---|---|---|---|---|---|---| +|**Característica**|**Masselli UR29 (con MP02/MP06)**|**Vaisala Polaris PR53AC (con Indigo520)**|**Anton Paar L-Rix 5100**|**Anton Paar L-Rix 5200**|**Schmidt + Haensch iPR HR2**|**Schmidt + Haensch iPR FR2**| +|**Fabricante**|Masselli|Vaisala|Anton Paar|Anton Paar|Schmidt + Haensch|Schmidt + Haensch| +|**Modelo**|UR29|PR53AC|L-Rix 5100|L-Rix 5200|iPR HR2|iPR FR2| +|**Precisión (°Bx)**|±0.02 3|±0.1 9|±0.1 6|±0.05 6|±0.02 8|±0.05 34| +|**Rango Medición (°Bx)**|0-20 (específico IB07) 3, probablemente más amplio|0-100 9|0-100 6|0-65 6|0-25 8|0-100 34| +|**T. Respuesta Sensor (s)**|1.0 3|10 (T63) 9|No especificado|No especificado|No especificado|No especificado| +|**Tasa Actualización/Ciclo**|Requiere verificación (<300ms)|1 Hz (sensor) 9, Modbus TCP requiere verificación (<300ms)|"Tiempo real", requiere verificación (<300ms)|"Tiempo real", requiere verificación (<300ms)|"Tiempo real", requiere verificación (<300ms)|"Tiempo real", requiere verificación (<300ms)| +|**Protocolos Comunicación (Alta Velocidad)**|Profibus DP, Ethernet/IP, Profinet (vía MP02/MP06) 4|Modbus TCP (vía Indigo520).37 _No Profinet/EIP nativo_|**Profinet IO, Ethernet/IP, Modbus TCP** 6|**Profinet IO, Ethernet/IP, Modbus TCP** 6|_No Profinet/EIP nativo_. RS232/485/USB, Analógico 8|_No Profinet/EIP nativo_. RS232/485/USB, Analógico 35| +|**Certificaciones Sanitarias**|No especificado (UR29), IB07 puede tener|**3-A, EHEDG** 9|**EHEDG** 39|**EHEDG** 39|No especificado (iPR HR2)|IP69K 34, iPR FS tiene EHEDG 41| +|**Notas Clave**|Sistema modular, precisión alta|Requiere Indigo520 para Modbus TCP|Soporte nativo Profinet/EIP|Alta precisión, soporte nativo Profinet/EIP|Precisión muy alta (lab)|Precisión alta, rango completo| + +### 4.2. Evaluación Detallada de las Principales Alternativas + +#### 4.2.1. Vaisala (Polaris PR53AC) + +Vaisala, tras adquirir K-Patents, es un actor reconocido en refractometría de procesos.22 El modelo Polaris PR53AC está específicamente diseñado para aplicaciones sanitarias en la industria alimentaria y de bebidas, contando con certificaciones 3-A y EHEDG.9 + +- **Precisión:** Ofrece una precisión de ±0.1 °Bx sobre un rango completo de 0-100 °Bx.9 Esta precisión es superior a la del Masselli UR62 pero inferior a la del UR29, Anton Paar L-Rix 5200 o S+H iPR HR2. Su idoneidad para jarabe Diet dependerá de las tolerancias exactas del proceso. +- **Velocidad e Integración PLC:** + - El sensor tiene una tasa de actualización interna de 1 Hz (1 segundo) y un tiempo de respuesta T63 de 10 segundos con el filtrado estándar.9 + - Las interfaces de comunicación directas del sensor son 4-20mA y Modbus RTU sobre RS-485.9 Modbus RTU, siendo un protocolo maestro-esclavo sobre un enlace serie, difícilmente alcanzará de manera fiable y consistente la tasa de actualización de <300ms requerida por el PLC. + - Para funcionalidades avanzadas y protocolos más rápidos, se requiere el transmisor Indigo520.36 El Indigo520 ofrece conectividad **Modbus TCP**.37 Aunque Modbus TCP sobre Ethernet es más rápido que Modbus RTU, lograr un ciclo <300ms aún requiere verificación, ya que depende de la implementación, la carga de la red y la capacidad del PLC para actuar como cliente Modbus TCP de forma eficiente. + - Una carencia notable en la documentación actual del PR53AC y del Indigo520 es la mención explícita de soporte nativo para **Profinet o Ethernet/IP**.9 Si bien sistemas K-Patents anteriores podían usar Fieldbus Junction Boxes para estos protocolos 44, la solución actual parece centrarse en Modbus TCP. La integración óptima y de más baja latencia con PLCs Siemens se logra típicamente con Profinet IO RT. La ausencia de esta opción nativa representa una desventaja para cumplir el requisito de velocidad <300ms de la manera más eficiente. +- **Idoneidad:** El PR53AC es un instrumento fiable con diseño sanitario. Su precisión es moderada. La velocidad a través de los protocolos estándar del sensor es insuficiente. La velocidad vía Modbus TCP con el Indigo520 necesita ser verificada contra el objetivo de <300ms. La falta de soporte nativo Profinet/EIP es un inconveniente para una integración óptima con Siemens. + +#### 4.2.2. Anton Paar (L-Rix 5100 / 5200) + +Anton Paar ofrece refractómetros en línea robustos y precisos.6 Los modelos L-Rix 5100 y 5200 cuentan con certificación EHEDG, haciéndolos aptos para aplicaciones sanitarias.7 + +- **Precisión:** + - L-Rix 5100: ±0.1 % masa (equivalente a ±0.1 °Bx), rango 0-100%.6 + - L-Rix 5200: ±0.05 % masa (equivalente a ±0.05 °Bx), rango 0-65%.6 La alta precisión del L-Rix 5200 es muy adecuada para el control de jarabes Diet de bajo Brix. +- **Velocidad e Integración PLC:** + - Aunque el tiempo de ciclo exacto en ms no se especifica, se describen como de "tiempo real".6 La rápida reactivación tras ciclos CIP/SIP (en minutos) 6 sugiere un diseño orientado a minimizar tiempos muertos, aunque no define directamente la tasa de actualización de medida. + - Un punto crucial es que tanto el L-Rix 5100 como el L-Rix 5200 listan explícitamente **Profinet IO** y **Ethernet/IP** como opciones de comunicación disponibles, además de Modbus TCP, Modbus RTU y salidas analógicas.6 + - La disponibilidad nativa de Profinet IO y Ethernet/IP directamente en la unidad sensora/transmisora es una ventaja significativa para la integración con PLCs Siemens. Elimina la necesidad de gateways intermedios o convertidores de protocolo, reduciendo puntos potenciales de fallo, complejidad de configuración y, fundamentalmente, latencia en la comunicación. Esta arquitectura hace que alcanzar el ciclo de actualización de <300ms sea mucho más factible y directo en comparación con sistemas que dependen de enlaces serie o controladores intermedios antes de la conexión al bus de campo. +- **Idoneidad:** El L-Rix 5200 ofrece una precisión excelente para jarabe Diet. Ambos modelos proporcionan los protocolos de comunicación de alta velocidad requeridos (Profinet/Ethernet/IP) para una integración directa y rápida con PLCs Siemens. Esto los convierte en contendientes muy fuertes que abordan directamente ambos requisitos clave del usuario: precisión y velocidad de integración. + +#### 4.2.3. Schmidt + Haensch (Serie iPR) + +Schmidt + Haensch tiene una larga trayectoria en refractometría y ofrece la serie iPR de instrumentos en línea.31 + +- **Precisión:** La serie iPR ofrece varios niveles de precisión: + - iPR HR2: Precisión extremadamente alta de ±0.02 °Bx (±0.00004 RI), con un rango optimizado para bajas concentraciones (0-25 °Bx).8 Ideal para jarabe Diet. + - iPR FR2: Alta precisión de ±0.05 °Bx (±0.00007 RI) sobre un rango completo de 0-100 °Bx.34 + - iPR FS: Certificado EHEDG, con precisión de ±0.1 °Bx (±0.00014 RI) y rango 0-85 °Bx.41 +- **Velocidad e Integración PLC:** + - Se describen como de medición en "tiempo real" 8, pero no se encuentra una especificación concreta de tasa de actualización en ms. + - Las interfaces de comunicación estándar son salidas analógicas 4-20mA y comunicaciones serie (RS232/RS485/USB).8 + - Similar a Vaisala, no se menciona soporte integrado para **Profinet o Ethernet/IP** en las hojas de datos revisadas.8 La integración con un PLC Siemens para lograr actualizaciones <300ms requeriría probablemente un gateway de terceros de alto rendimiento (Serie/Analógico a Profinet/EIP) o el uso de Modbus RTU sobre RS485, si el PLC puede manejarlo con la velocidad suficiente, lo cual es menos ideal y potencialmente más lento que Profinet/EIP nativo. + - La dependencia de protocolos estándar más lentos o la necesidad de añadir un gateway externo introduce complejidad, coste adicional y otro punto potencial de latencia. Esto disminuye el atractivo de la serie iPR para esta aplicación específica comparado con soluciones que ofrecen Profinet/EIP nativo. +- **Idoneidad:** El iPR HR2 ofrece la mejor precisión de su clase para jarabe Diet, y el iPR FR2 es una opción sólida de alta precisión para rango completo. El iPR FS añade la certificación higiénica. Sin embargo, la falta de protocolos nativos de alta velocidad (Profinet/EIP) es una desventaja importante para cumplir el requisito específico de velocidad de <300ms de esta aplicación. + +#### 4.2.4. Mettler Toledo + +Mettler Toledo es un proveedor principal de instrumentación de laboratorio y pesaje industrial, con presencia en análisis de procesos (pH, O2 disuelto, turbidez).26 + +- **Precisión:** Sus modelos de laboratorio y sobremesa ofrecen precisiones muy altas (ej. Excellence R5 ±0.00002 nD 54). Los modelos portátiles suelen tener una precisión de ±0.2% Brix.29 +- **Velocidad e Integración PLC:** + - Los sistemas de pesaje industrial de Mettler Toledo soportan explícitamente **Profinet, Ethernet/IP y Modbus TCP**.10 + - El transmisor multiparamétrico M800 (usado para pH, O2, turbidez, etc.) también soporta Profinet y Ethernet/IP.11 + - Sin embargo, la documentación revisada se centra fuertemente en los refractómetros de laboratorio/portátiles de Mettler Toledo 29 o en la conectividad de sus sistemas de pesaje y otros sensores de proceso.10 **Falta evidencia específica en los documentos proporcionados sobre un refractómetro _en línea_ diseñado para aplicaciones sanitarias de alimentos/bebidas que ofrezca alta precisión y soporte nativo para Profinet o Ethernet/IP.** + - Aunque Mettler Toledo claramente posee la capacidad técnica para implementar Profinet/EIP en instrumentos de proceso, la ausencia de información fácilmente disponible sobre un modelo de refractómetro en línea adecuado sugiere que podría no ser una oferta principal en comparación con competidores como Anton Paar, o al menos no está bien documentado en las fuentes encontradas. Sería necesaria una verificación directa con Mettler Toledo. +- **Idoneidad:** Se necesita confirmación sobre la existencia de un modelo de refractómetro en línea adecuado que cumpla con los requisitos de precisión, diseño sanitario y comunicación Profinet/Ethernet/IP. Basándose en la información actual, parece menos probable que sea una solución directa en comparación con Anton Paar. + +#### 4.2.5. Otras Alternativas Potenciales + +Otros fabricantes mencionados en la investigación presentan limitaciones para esta aplicación específica: + +- **Pyxis Lab (RT-100/RT-200):** Precisión de ±0.2% Brix y comunicación Modbus RTU/4-20mA.60 La precisión es probablemente insuficiente y los protocolos son demasiado lentos para el objetivo de <300ms. +- **KXS (DCM-20):** Menciona salida Ethernet 62, pero la precisión y el tiempo de respuesta no están claros.62 Requiere más datos. +- **MISCO:** Ofrece varios sensores en línea.63 Se necesitaría una investigación detallada de modelos específicos. +- **Electron Machine (MPR E-Scan):** Se mencionan refractómetros en línea 27, pero se necesitan datos específicos del modelo para comparación. + +## 5. Análisis Comparativo y Recomendaciones + +### 5.1. Comparación de Precisión + +La precisión es fundamental para el control de jarabes Diet. Los instrumentos evaluados se pueden clasificar: + +- **Nivel 1 (Precisión más alta, ≤ ±0.05 °Bx):** Masselli UR29 (±0.02), Anton Paar L-Rix 5200 (±0.05), Schmidt + Haensch iPR HR2 (±0.02). Estos modelos son los más adecuados para el control estricto de jarabes Diet de bajo Brix. +- **Nivel 2 (Alta Precisión, > ±0.05 a ±0.1 °Bx):** Anton Paar L-Rix 5100 (±0.1), Schmidt + Haensch iPR FR2 (±0.05), Vaisala PR53AC (±0.1). Podrían ser aceptables dependiendo de la tolerancia del proceso específico. +- **Nivel 3 (Precisión Estándar/Básica, > ±0.1 °Bx):** Masselli UR62 (±0.1-0.2), Pyxis RT-100/200 (±0.2), Mettler Toledo portátiles (±0.2). Probablemente inadecuados para el control de calidad de jarabes Diet. + +### 5.2. Comparación de Velocidad (<300ms) e Integración Siemens + +La capacidad de integrarse rápidamente con un PLC Siemens a través de Profinet o Ethernet/IP es el segundo pilar crítico: + +- **Mejor Ajuste (Profinet/Ethernet/IP Nativo):** **Anton Paar L-Rix 5100/5200**.6 Ofrecen la ruta de integración más directa, de menor latencia y más robusta para cumplir el requisito de <300ms con PLCs Siemens. +- **Ajuste Potencial (Requiere Verificación):** + - **Masselli UR29:** Vía MP02 si su salida EIP/Profibus es suficientemente rápida (<300ms), o vía MP06 si la latencia total del sistema es aceptable (<300ms). + - **Vaisala PR53AC:** Vía Indigo520 usando Modbus TCP, si la velocidad resultante es <300ms. + - **Mettler Toledo:** Si existe un modelo de refractómetro en línea adecuado con Profinet/EIP nativo. +- **Menos Adecuados (Requieren Gateway / Protocolos Lentos):** + - **Schmidt + Haensch Serie iPR:** Las salidas estándar (Analógica/Serie) requieren un gateway de alto rendimiento. + - **Masselli UR62:** Salidas estándar inadecuadas para la velocidad requerida. + - **Vaisala PR53AC (vía Modbus RTU/Analógico):** Demasiado lento. + - **Pyxis:** Protocolos lentos. El uso de gateways o protocolos más lentos como Modbus (incluso TCP) aumenta la complejidad, el coste potencial y el riesgo de no cumplir el objetivo de velocidad de <300ms de forma consistente. + +### 5.3. Evaluación de Idoneidad para la Aplicación de Jarabe Diet + +Combinando los requisitos de precisión y velocidad: + +- **Anton Paar L-Rix 5200** emerge como un candidato principal, ofreciendo alta precisión (±0.05 °Bx) y soporte nativo para Profinet/EIP. El L-Rix 5100 es una alternativa si ±0.1 °Bx es aceptable. +- **Masselli UR29** tiene una precisión excelente (±0.02 °Bx), pero su velocidad de integración (<300ms) necesita ser confirmada específicamente para la ruta de comunicación elegida (preferiblemente vía MP02 con EIP/Profibus). +- **Schmidt + Haensch iPR HR2** ofrece la máxima precisión (±0.02 °Bx) pero carece de protocolos rápidos nativos, requiriendo una solución de integración más compleja (gateway). + +### 5.4. Recomendaciones + +Basándose en el análisis técnico comparativo de precisión y velocidad de integración con PLC Siemens: + +1. **Recomendación Primaria:** Investigar a fondo los refractómetros **Anton Paar L-Rix 5200** (por su mayor precisión en el rango bajo) y **L-Rix 5100**. Estos modelos presentan la combinación más sólida de alta precisión y soporte nativo para Profinet IO y Ethernet/IP, abordando directamente ambos requisitos clave del usuario y ofreciendo la ruta de integración más sencilla y de menor latencia para cumplir el objetivo de <300 ms. +2. **Recomendación Secundaria:** Verificar explícitamente con Masselli la **velocidad de actualización alcanzable (<300 ms)** para el **Masselli UR29** cuando se integra a través de la salida **Ethernet/IP o Profibus DP del receptor MP02** directamente al PLC Siemens. Si esta vía cumple el requisito de velocidad, la excelente precisión del UR29 (±0.02 °Bx) lo convierte en una opción viable. La ruta a través del **MP06** (UR29 -> MP01/02 -> MP06 -> Profinet/EIP) también debe verificarse, pero con mayor cautela debido a las posibles latencias acumuladas. +3. **Consideración Alternativa (con Advertencias):** Si la máxima precisión es el factor absolutamente prioritario y se acepta una integración ligeramente más compleja, considerar el **Schmidt + Haensch iPR HR2** (±0.02 °Bx). Sin embargo, esto requeriría el uso de un **gateway Serie/Analógico a Profinet/EIP de alto rendimiento**. Serían necesarias pruebas exhaustivas para garantizar que se cumple el objetivo de <300 ms con esta configuración. +4. **Prioridad Inferior:** + - **Vaisala PR53AC:** Precisión moderada y dependencia de Modbus TCP (vía Indigo520) para la velocidad, cuya suficiencia (<300ms) necesita verificación. La falta de Profinet/EIP nativo es una desventaja. + - **Mettler Toledo:** Requiere confirmación de la existencia de un modelo de refractómetro en línea adecuado con las características requeridas (sanitario, alta precisión, Profinet/EIP). + - **Masselli UR62:** Inadecuado por precisión insuficiente y desafíos de velocidad. + +## 6. Conclusión + +La monitorización precisa y rápida del contenido de Brix en jarabes Diet es esencial para garantizar la calidad y consistencia del producto final. La aplicación específica analizada impone requisitos estrictos tanto de alta precisión (debido a las bajas concentraciones) como de velocidad de actualización de datos (<300 ms) para la integración con un sistema de control PLC Siemens. + +El análisis de los refractómetros Masselli indica que el modelo UR29 posee la precisión necesaria (±0.02 °Bx) para esta aplicación, superando claramente al UR62. Sin embargo, la arquitectura de comunicación de Masselli, que típicamente involucra paneles intermedios (MP02 o MP06) para proporcionar interfaces de bus de campo como Profinet o Ethernet/IP, plantea dudas sobre la capacidad de cumplir consistentemente el requisito de actualización de <300 ms. La viabilidad de esta opción depende de la confirmación del rendimiento específico de la configuración elegida por parte del fabricante, preferiblemente utilizando la salida de bus de campo directa del MP02. + +La evaluación de alternativas de mercado revela que los refractómetros **Anton Paar L-Rix 5100 y L-Rix 5200** se posicionan como las soluciones más prometedoras. Ofrecen una combinación atractiva de alta precisión (especialmente el L-Rix 5200 con ±0.05 °Bx) y, de manera crucial, **soporte nativo para Profinet IO y Ethernet/IP**. Esta característica simplifica significativamente la integración con PLCs Siemens y proporciona la ruta más directa y con menor latencia para alcanzar la velocidad de actualización requerida de <300 ms. Otros competidores como Vaisala y Schmidt + Haensch, aunque ofrecen modelos de alta precisión (notablemente el S+H iPR HR2), carecen de este soporte nativo en sus configuraciones estándar, lo que complica la integración de alta velocidad. + +En consecuencia, se recomienda priorizar la evaluación de los modelos Anton Paar L-Rix 5200/5100. Como alternativa principal, se debe obtener una confirmación explícita del rendimiento (<300 ms) de la configuración Masselli UR29 conectada vía MP02 (Ethernet/IP o Profibus DP) al PLC Siemens. \ No newline at end of file diff --git a/04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Test - Fatto su Maselli - 06-05-2025.md b/04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Test - Fatto su Maselli - 06-05-2025.md new file mode 100644 index 0000000..3a521ae --- /dev/null +++ b/04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Test - Fatto su Maselli - 06-05-2025.md @@ -0,0 +1,15 @@ + + +#### Notes: +* Firmware minimun asked by Maselli is 4.15. [01621L0011.zip](file:///D:%5CInstalad%5CADAM%5CFirmware%20per%20Maselli%5C01621L0011.zip) +* This firmware can be changed using the ADAM Utility - AdamApax .NET Utility + + +Tutte due 0-20 + +UR62 +19200 + + +UR29 +115000 \ No newline at end of file diff --git a/04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/adjuntos/Screenshot 2025-05-06 111701.jpg b/04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/adjuntos/Screenshot 2025-05-06 111701.jpg new file mode 100644 index 0000000..617da64 Binary files /dev/null and b/04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/adjuntos/Screenshot 2025-05-06 111701.jpg differ diff --git a/04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/adjuntos/Screenshot 2025-05-06 111755.jpg b/04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/adjuntos/Screenshot 2025-05-06 111755.jpg new file mode 100644 index 0000000..c917dba Binary files /dev/null and b/04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/adjuntos/Screenshot 2025-05-06 111755.jpg differ diff --git a/04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/adjuntos/Screenshot 2025-05-06 113243.jpg b/04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/adjuntos/Screenshot 2025-05-06 113243.jpg new file mode 100644 index 0000000..3f71b22 Binary files /dev/null and b/04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/adjuntos/Screenshot 2025-05-06 113243.jpg differ diff --git a/04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/adjuntos/Screenshot 2025-05-06 114159.jpg b/04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/adjuntos/Screenshot 2025-05-06 114159.jpg new file mode 100644 index 0000000..1a15925 Binary files /dev/null and b/04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/adjuntos/Screenshot 2025-05-06 114159.jpg differ diff --git a/04-SIDEL/10 - E5.007095 - Modifica O&U - SAE463/Differences.md b/04-SIDEL/10 - E5.007095 - Modifica O&U - SAE463/Differences.md new file mode 100644 index 0000000..bb93407 --- /dev/null +++ b/04-SIDEL/10 - E5.007095 - Modifica O&U - SAE463/Differences.md @@ -0,0 +1,7 @@ +*** + +![[Pasted image 20250509125000.png|800]] +Original Promass 63 DP + +![[Pasted image 20250509125112.png|800]] +New Promass 300DP \ No newline at end of file diff --git a/04-SIDEL/10 - E5.007095 - Modifica O&U - SAE463/Emails.md b/04-SIDEL/10 - E5.007095 - Modifica O&U - SAE463/Emails.md new file mode 100644 index 0000000..1139877 --- /dev/null +++ b/04-SIDEL/10 - E5.007095 - Modifica O&U - SAE463/Emails.md @@ -0,0 +1,93 @@ +*** +# Índice de Mensajes + +- 09-05-2025 - walter.orsi@teknors.com - [[04-SIDEL/10 - E5.007095 - Modifica O&U - SAE463/Emails#R: {EXT} E5.006894 - Modifica O&U - SAE463 New Analyzer|R-EXT-E5006894---Modifica-OU---SAE463-New-Analyzer]] + +--- + ++ 7144cd900cc214b3e10c9d3ea3bc3500 + +### R: {EXT} E5.006894 - Modifica O&U - SAE463 New Analyzer + +- 09-05-2025 + +Hola a Todos, +I attach the sw and FDM version with the modification Flow Meter and Anton Paar gearbox. + +This version includes the two changes + +https://u.pcloud.link/publink/show?code=kZFVUb5Zu0qlrxw833hjbkmmSutuCYopN7hy + + + +Best Regards +Walter Orsi +___________________________________________________________ + + ; Chavez, Natalia + +Thanks A lot for your support and fast answer +FYI hoping do not create confusion because customer asked it, at the same time we are doing on the same machine the upgrade to new flowmeter in charge + of my coworker Natalia Chavez. +When we finish the intervention we will send you the back up of both projects +Regards +Alejandro + +General + +Enviado el: jueves, 8 de mayo de 2025 07:42 a. m. + +CC: Sacchi, Stefania[External] ; Melioli, Daniele ; perales, juan ; + Bellido, Martin ; Dumoulin, Olivier ; ZZ-MX-MXC-PS-GUADALAJARA + +Asunto: R: {EXT} E5.006894 - Modifica O&U - SAE463 New Analyzer + +Thanks a lot Walter!! +Alejandro keep us update about the FSE and in case need remote connections we need to know some days before in order to arrange it. +Best regards + +Alessandro PASSERA +Tel: +39 0521 999 319 +Mob: +39 3459439668 +Fax : +39 0521 999511 +www.sidel.com + +General + +Da: +walter.orsi@teknors.com + + Passera, Alessandro ; + Polisini, Debora + + Melioli, Daniele ; + perales, juan ; + Bellido, Martin ; + Dumoulin, Olivier ; + ZZ-MX-MXC-PS-GUADALAJARA + +E5.006894 - Modifica O&U - SAE463 New Analyzer +Hi, +Attached the documentation for the Anton Paar replacement intervention + +https://u.pcloud.link/publink/show?code=kZgvlb5Zrd2LoRmGc47s9RJ4MymoA4j1pk9k + + +Best Regards +Walter Orsi +___________________________________________________________ + + +This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received + this e-mail in error), please notify the sender immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. + +Sidel de México, S.A. de C.V. con domicilio en Av. Inglaterra #4920 Guadalajara Technology Park, Km.13 Carretera Guadalajara-Nogales, Zapopan, Jalisco México, C.P. 45010 es la responsable de tratar (obtener, usar, transferir) sus datos personales. Sus datos + personales son almacenados para la realización de actividades concernientes a la relación contractual que sostenemos con usted. En caso que requiera mayor información envíe un correo a: +proteccion.datospersonales@sidel.com. Usted puede consultar el aviso de privacidad directamente en la página + +http://www.sidel.es/media/7956/aviso_pagina_web_sidel_de_mexico070714.pdf + +### Adjuntos +- [[FDM_E5.007095 - Modifica O&U_new_Flow Meter.pdf]] +--- + diff --git a/04-SIDEL/10 - E5.007095 - Modifica O&U - SAE463/adjuntos/Pasted image 20250509125000.png b/04-SIDEL/10 - E5.007095 - Modifica O&U - SAE463/adjuntos/Pasted image 20250509125000.png new file mode 100644 index 0000000..c749d5b Binary files /dev/null and b/04-SIDEL/10 - E5.007095 - Modifica O&U - SAE463/adjuntos/Pasted image 20250509125000.png differ diff --git a/04-SIDEL/10 - E5.007095 - Modifica O&U - SAE463/adjuntos/Pasted image 20250509125112.png b/04-SIDEL/10 - E5.007095 - Modifica O&U - SAE463/adjuntos/Pasted image 20250509125112.png new file mode 100644 index 0000000..7c573e6 Binary files /dev/null and b/04-SIDEL/10 - E5.007095 - Modifica O&U - SAE463/adjuntos/Pasted image 20250509125112.png differ diff --git a/04-SIDEL/CheckList/Misuratori Endress&Hauser.md b/04-SIDEL/CheckList/Misuratori Endress&Hauser.md new file mode 100644 index 0000000..b814d12 --- /dev/null +++ b/04-SIDEL/CheckList/Misuratori Endress&Hauser.md @@ -0,0 +1,15 @@ +*** + +- [ ] Header text. + - [ ] Main menu->Setup->Advanced setup->Display->Header text: mettere il nome dal misurattori sul P&ID +- [ ] Main menu->Setup Advanced setup->Configuration backup + - [ ] Make backup + + +### Profibus: +*** +- [ ] Nodo profibus. + - [ ] Main menu->Setup->Communication : Device address +- [ ] Controllare se e il ultimo nodo della rete profibus per setare il Bus terminating switch + ![[Pasted image 20250508101103.png|328]]![[Pasted image 20250508101219.png|229]] + diff --git a/04-SIDEL/CheckList/PC HMI Zenon.md b/04-SIDEL/CheckList/PC HMI Zenon.md new file mode 100644 index 0000000..f16a49b --- /dev/null +++ b/04-SIDEL/CheckList/PC HMI Zenon.md @@ -0,0 +1,8 @@ +*** + +- [ ] Check the name of the Project +- [ ] Check if the runtime shutdowns correctly after losing UPS signals +- [ ] Clear all recipes to avoid problems on the startup +- [ ] Check PLC communication + + diff --git a/04-SIDEL/CheckList/adjuntos/Pasted image 20250508101040.png b/04-SIDEL/CheckList/adjuntos/Pasted image 20250508101040.png new file mode 100644 index 0000000..3c8bab6 Binary files /dev/null and b/04-SIDEL/CheckList/adjuntos/Pasted image 20250508101040.png differ diff --git a/04-SIDEL/CheckList/adjuntos/Pasted image 20250508101103.png b/04-SIDEL/CheckList/adjuntos/Pasted image 20250508101103.png new file mode 100644 index 0000000..db29c96 Binary files /dev/null and b/04-SIDEL/CheckList/adjuntos/Pasted image 20250508101103.png differ diff --git a/04-SIDEL/CheckList/adjuntos/Pasted image 20250508101219.png b/04-SIDEL/CheckList/adjuntos/Pasted image 20250508101219.png new file mode 100644 index 0000000..1a35b67 Binary files /dev/null and b/04-SIDEL/CheckList/adjuntos/Pasted image 20250508101219.png differ diff --git a/04-SIDEL/SIDEL - Upgrades - Promemoria.md b/04-SIDEL/SIDEL - Upgrades - Promemoria.md new file mode 100644 index 0000000..5ca190d --- /dev/null +++ b/04-SIDEL/SIDEL - Upgrades - Promemoria.md @@ -0,0 +1,7 @@ +*** + +- [ ] Maquine Virtuale +- [ ] Discorso da Checklist +- [ ] IPs per i misuratori + - [ ] 📅 2025-05-08 : Abbiamo discusso con Ale riguardo alla necessità di assegnare IP diversi ai misuratori poiché dispongono di un webserver. +- [ ] \ No newline at end of file diff --git a/DB/Passwords/HMI passwords.md b/DB/Passwords/HMI passwords.md index 73825ac..e56439f 100644 --- a/DB/Passwords/HMI passwords.md +++ b/DB/Passwords/HMI passwords.md @@ -167,3 +167,4 @@ | | | | | | | | | | | | +| | | | diff --git a/adjuntos/Promag300_500DP_verificationreport_2025-04-14_1243.pdf b/adjuntos/Promag300_500DP_verificationreport_2025-04-14_1243.pdf deleted file mode 100644 index a4b95d7..0000000 Binary files a/adjuntos/Promag300_500DP_verificationreport_2025-04-14_1243.pdf and /dev/null differ diff --git a/adjuntos/presente_indicativo_completo.pdf b/adjuntos/presente_indicativo_completo.pdf deleted file mode 100644 index 79ce078..0000000 Binary files a/adjuntos/presente_indicativo_completo.pdf and /dev/null differ