docs/site/Omron/Statistiche/0-ScadaInterfaceMasterStruc.../index.html

672 lines
24 KiB
HTML
Raw Normal View History

2025-09-26 10:41:10 +00:00
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="docmd is a Node.js command-line tool for generating beautiful, lightweight static documentation sites from Markdown files.">
<link rel="canonical" href="/Omron/Statistiche/0-ScadaInterfaceMasterStructure/">
<meta property="og:title" content="Architettura ScadaInterface | docmd">
<meta property="og:description" content="docmd is a Node.js command-line tool for generating beautiful, lightweight static documentation sites from Markdown files.">
<meta property="og:url" content="/Omron/Statistiche/0-ScadaInterfaceMasterStructure/">
<meta property="og:site_name" content="docmd">
<meta property="og:image" content="/assets/images/docmd-preview.png">
<meta property="og:type" content="website">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Architettura ScadaInterface | docmd">
<meta name="twitter:description" content="docmd is a Node.js command-line tool for generating beautiful, lightweight static documentation sites from Markdown files.">
<meta name="twitter:image" content="/assets/images/docmd-preview.png">
<title>Architettura ScadaInterface : docmd</title>
<link rel="shortcut icon" href="../../assets/favicon.ico" type="image/x-icon">
<script>// Source file from the docmd project https://github.com/mgks/docmd
/*
* Initialize the theme from localStorage
*/
(function() {
try {
const storedTheme = localStorage.getItem('docmd-theme');
if (storedTheme) {
document.documentElement.setAttribute('data-theme', storedTheme);
// Also update highlight CSS link to match the stored theme
const highlightThemeLink = document.getElementById('highlight-theme');
if (highlightThemeLink) {
const baseHref = highlightThemeLink.getAttribute('data-base-href');
if (baseHref) {
const newHref = baseHref + `docmd-highlight-${storedTheme}.css`;
highlightThemeLink.setAttribute('href', newHref);
}
}
}
} catch (e) {
console.error('Error applying theme from localStorage', e);
}
})();</script>
<link rel="stylesheet" href="../../assets/css/docmd-main.css">
<link rel="stylesheet" id="highlight-theme" href="../../assets/css/docmd-highlight-light.css" data-base-href="../../assets/css/">
<link rel="stylesheet" href="../../assets/css/docmd-theme-sky.css">
<!-- Google Analytics GA4 -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-8QVBDQ4KM1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-8QVBDQ4KM1');
</script>
</head>
<body class="sidebar-collapsible"
data-theme="light" data-default-collapsed="false"
data-copy-code-enabled="true">
<aside class="sidebar">
<div class="sidebar-header">
<a href="/" class="logo-link">
<img src="../../assets/images/docmd-logo-light.png" alt="docmd logo" class="logo-light" >
<img src="../../assets/images/docmd-logo-dark.png" alt="docmd logo" class="logo-dark" >
</a>
</div>
<nav class="sidebar-nav" aria-label="Main navigation">
<ul>
<li class="" >
<a href="../../" class="" >
<svg class="lucide-icon icon-home" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8" />
<path d="M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" />
</svg>
<span class="nav-item-title">Welcome</span>
</a>
</li>
<li class="collapsible" data-nav-id="#">
<a href="#" class="" >
<svg class="lucide-icon icon-rocket" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z" />
<path d="m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z" />
<path d="M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0" />
<path d="M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5" />
</svg>
<span class="nav-item-title">Getting Started</span>
<svg class="lucide-icon icon-chevron-right collapse-icon" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="m9 18 6-6-6-6" />
</svg>
</a>
<ul class="submenu">
<li class="" >
<a href="https://docmd.mgks.dev" class="" target="_blank" rel="noopener">
<svg class="lucide-icon icon-scroll" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M19 17V5a2 2 0 0 0-2-2H4" />
<path d="M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3" />
</svg>
<span class="nav-item-title">Documentation</span>
<svg class="lucide-icon icon-external-link nav-external-icon" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M15 3h6v6" />
<path d="M10 14 21 3" />
<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" />
</svg>
</a>
</li>
<li class="" >
<a href="https://docmd.mgks.dev/getting-started/installation" class="" target="_blank" rel="noopener">
<svg class="lucide-icon icon-download" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M12 15V3" />
<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" />
<path d="m7 10 5 5 5-5" />
</svg>
<span class="nav-item-title">Installation</span>
<svg class="lucide-icon icon-external-link nav-external-icon" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M15 3h6v6" />
<path d="M10 14 21 3" />
<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" />
</svg>
</a>
</li>
<li class="" >
<a href="https://docmd.mgks.dev/getting-started/basic-usage" class="" target="_blank" rel="noopener">
<svg class="lucide-icon icon-play" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z" />
</svg>
<span class="nav-item-title">Basic Usage</span>
<svg class="lucide-icon icon-external-link nav-external-icon" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M15 3h6v6" />
<path d="M10 14 21 3" />
<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" />
</svg>
</a>
</li>
<li class="" >
<a href="https://docmd.mgks.dev/content" class="" target="_blank" rel="noopener">
<svg class="lucide-icon icon-layout-template" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<rect width="18" height="7" x="3" y="3" rx="1" />
<rect width="9" height="7" x="3" y="14" rx="1" />
<rect width="5" height="7" x="16" y="14" rx="1" />
</svg>
<span class="nav-item-title">Content</span>
<svg class="lucide-icon icon-external-link nav-external-icon" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M15 3h6v6" />
<path d="M10 14 21 3" />
<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" />
</svg>
</a>
</li>
</ul>
</li>
<li class="" >
<a href="https://github.com/mgks/docmd" class="" target="_blank" rel="noopener">
<svg class="lucide-icon icon-github" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4" />
<path d="M9 18c-4.51 2-5-2-7-2" />
</svg>
<span class="nav-item-title">GitHub</span>
<svg class="lucide-icon icon-external-link nav-external-icon" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M15 3h6v6" />
<path d="M10 14 21 3" />
<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" />
</svg>
</a>
</li>
<li class="" >
<a href="https://github.com/sponsors/mgks" class="" target="_blank" rel="noopener">
<svg class="lucide-icon icon-heart" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5" />
</svg>
<span class="nav-item-title">Support the Project</span>
<svg class="lucide-icon icon-external-link nav-external-icon" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M15 3h6v6" />
<path d="M10 14 21 3" />
<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" />
</svg>
</a>
</li>
</ul>
</nav>
</aside>
<div class="main-content-wrapper">
<div class="page-header">
<div class="header-left">
<button id="sidebar-toggle-button" class="sidebar-toggle-button" aria-label="Toggle Sidebar">
<svg class="lucide-icon icon-panel-left-close" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<rect width="18" height="18" x="3" y="3" rx="2" />
<path d="M9 3v18" />
<path d="m16 15-3-3 3-3" />
</svg>
</button>
<h1>Architettura ScadaInterface</h1>
</div>
<div class="header-right">
<button id="theme-toggle-button" aria-label="Toggle theme" class="theme-toggle-button theme-toggle-header">
<svg class="lucide-icon icon-sun icon-sun" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<circle cx="12" cy="12" r="4" />
<path d="M12 2v2" />
<path d="M12 20v2" />
<path d="m4.93 4.93 1.41 1.41" />
<path d="m17.66 17.66 1.41 1.41" />
<path d="M2 12h2" />
<path d="M20 12h2" />
<path d="m6.34 17.66-1.41 1.41" />
<path d="m19.07 4.93-1.41 1.41" />
</svg>
<svg class="lucide-icon icon-moon icon-moon" width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401" />
</svg>
</button>
</div>
</div>
<main class="content-area">
<div class="content-layout">
<div class="main-content">
<h1 id="architettura-scadainterface">🛠️ Architettura ScadaInterface</h1>
<h2 id="scopo">⚙️ Scopo</h2>
<p>Per garantire una comunicazione robusta e manutenibile tra il PLC e il sistema SCADA, è stata creata una struttura dati dedicata e unificata.<br>
Questa struttura, unistanza di <code>ST_ScadaInterface</code>, funge da unica <em>fonte di verità</em> per tutti i dati scambiati tramite OPC UA.</p>
<p>È una struttura di tipo <strong>NJ</strong>, progettata per sfruttare la comunicazione basata su “tag”, ed è suddivisa in due parti logiche:</p>
<ul>
<li><strong>Egress</strong>: Dati che fluiscono <strong>DAL PLC ALLO SCADA</strong> (sola lettura per lo SCADA).</li>
<li><strong>Ingress</strong>: Dati e comandi che fluiscono <strong>DALLO SCADA AL PLC</strong> (scrivibili dallo SCADA).</li>
</ul>
<hr>
<h2 id="struttura-master">⚙️ Struttura Master</h2>
<p>Per prima cosa, definiamo la struttura principale che conterrà i due flussi di dati.</p>
<pre class="hljs"><code>(* Struttura master per l'interfaccia SCADA *)
TYPE ST_ScadaInterface :
STRUCT NJ
Ingress : ST_Ingress; // Dati IN ENTRATA dallo SCADA
Egress : ST_Egress; // Dati IN USCITA verso lo SCADA
END_STRUCT
END_TYPE
</code></pre>
<hr>
<h2 id="struttura-st_egress-plc-scada">⚙️ Struttura <code>ST_Egress</code> (PLC → SCADA)</h2>
<p>Questa struttura contiene tutte le informazioni di stato, le analisi di produzione e i dati macchina che il PLC rende disponibili al sistema SCADA.</p>
<h3 id="flag-di-stato-macchina">⚙️ Flag di Stato Macchina</h3>
<table>
<thead>
<tr>
<th>Nome Variabile</th>
<th>Tipo Dati</th>
<th>Descrizione</th>
</tr>
</thead>
<tbody>
<tr>
<td>IsRunning</td>
<td><code>BOOL</code></td>
<td>Flag VERO quando la macchina è in uno stato di marcia.</td>
</tr>
<tr>
<td>IsStopped</td>
<td><code>BOOL</code></td>
<td>Flag VERO quando la macchina è ferma.</td>
</tr>
<tr>
<td>IsInEmergency</td>
<td><code>BOOL</code></td>
<td>Flag VERO quando unemergenza è attiva.</td>
</tr>
<tr>
<td>IsWaitingDownstream</td>
<td><code>BOOL</code></td>
<td>Flag VERO quando in attesa di un segnale dalla macchina a valle.</td>
</tr>
<tr>
<td>IsWaitingUpstream</td>
<td><code>BOOL</code></td>
<td>Flag VERO quando in attesa di un prodotto dalla macchina a monte.</td>
</tr>
<tr>
<td>IsAlarmActive</td>
<td><code>BOOL</code></td>
<td>Flag VERO quando un qualsiasi allarme macchina è attivo.</td>
</tr>
</tbody>
</table>
<h3 id="flag-di-handshake-e-controllo">⚙️ Flag di Handshake e Controllo</h3>
<table>
<thead>
<tr>
<th>Nome Variabile</th>
<th>Tipo Dati</th>
<th>Descrizione</th>
</tr>
</thead>
<tbody>
<tr>
<td>AckChangeRecipe</td>
<td><code>BOOL</code></td>
<td>Conferma (Ack) del PLC a un comando di cambio ricetta.</td>
</tr>
<tr>
<td>RemoteControlEnable</td>
<td><code>BOOL</code></td>
<td>Flag che indica se il controllo remoto da SCADA è abilitato.</td>
</tr>
<tr>
<td>ProductionChangeOK</td>
<td><code>BOOL</code></td>
<td>Conferma del PLC che il cambio produzione è avvenuto con successo.</td>
</tr>
<tr>
<td>RecipeChangeOK</td>
<td><code>BOOL</code></td>
<td>Conferma del PLC che il cambio ricetta è avvenuto con successo.</td>
</tr>
<tr>
<td>RecipeChangeReject</td>
<td><code>BOOL</code></td>
<td>Flag che indica che il cambio ricetta è stato rifiutato dallOperatore.</td>
</tr>
<tr>
<td>RecipeChangePostpone</td>
<td><code>BOOL</code></td>
<td>Flag che indica che il cambio ricetta è stato rimandato dallOperatore.</td>
</tr>
<tr>
<td>MesCommunicationFault</td>
<td><code>BOOL</code></td>
<td>Flag VERO se cè un errore di comunicazione con il MES.</td>
</tr>
</tbody>
</table>
<h3 id="informazioni-ricetta-e-produzione">⚙️ Informazioni Ricetta e Produzione</h3>
<table>
<thead>
<tr>
<th>Nome Variabile</th>
<th>Tipo Dati</th>
<th>Descrizione</th>
</tr>
</thead>
<tbody>
<tr>
<td>ActualRecipeIndex</td>
<td><code>DINT</code></td>
<td>Indice della ricetta attualmente attiva.</td>
</tr>
<tr>
<td>ActualRecipeName</td>
<td><code>STRING[38]</code></td>
<td>Nome della ricetta attualmente attiva.</td>
</tr>
<tr>
<td>ActualProductionInfo</td>
<td><code>STRING[38]</code></td>
<td>Descrizione del lotto/ordine di produzione attuale.</td>
</tr>
<tr>
<td>ActualProductionCode</td>
<td><code>DINT</code></td>
<td>Codice del lotto/ordine di produzione attuale.</td>
</tr>
<tr>
<td>MachineStatus</td>
<td><code>DINT</code></td>
<td>Codice di stato generale della macchina (come da visualizzazione HMI).</td>
</tr>
</tbody>
</table>
<h3 id="watchdog-di-comunicazione">⚙️ Watchdog di Comunicazione</h3>
<table>
<thead>
<tr>
<th>Nome Variabile</th>
<th>Tipo Dati</th>
<th>Descrizione</th>
</tr>
</thead>
<tbody>
<tr>
<td>PlcWatchdog</td>
<td><code>DINT</code></td>
<td>Contatore di watchdog del PLC inviato allo SCADA.</td>
</tr>
</tbody>
</table>
<h3 id="strutture-dati-di-analisi">⚙️ Strutture Dati di Analisi</h3>
<table>
<thead>
<tr>
<th>Nome Variabile</th>
<th>Tipo Dati</th>
<th>Descrizione</th>
</tr>
</thead>
<tbody>
<tr>
<td>TimeAnalytics</td>
<td><code>ST_MachineTimers</code></td>
<td>Statistiche dettagliate basate sul tempo.</td>
</tr>
<tr>
<td>ProductionAnalytics</td>
<td><code>ST_ProductionAnalytics</code></td>
<td>Statistiche dettagliate basate sulla produzione.</td>
</tr>
</tbody>
</table>
<h3 id="dati-allarmi">⚙️ Dati Allarmi</h3>
<table>
<thead>
<tr>
<th>Nome Variabile</th>
<th>Tipo Dati</th>
<th>Descrizione</th>
</tr>
</thead>
<tbody>
<tr>
<td>AlarmAnalytics</td>
<td><code>ARRAY[0..1399] OF ST_AlarmAnalytics</code></td>
<td>Dati analitici per ogni singolo allarme.</td>
</tr>
<tr>
<td>TopAlarms_ByFrequency</td>
<td><code>ARRAY[0..99] OF ST_TopAlarmEntry</code></td>
<td>Classifica degli allarmi più frequenti.</td>
</tr>
<tr>
<td>TopAlarms_ByDowntime</td>
<td><code>ARRAY[0..99] OF ST_TopAlarmEntry</code></td>
<td>Classifica degli allarmi che causano più downtime.</td>
</tr>
<tr>
<td>Alarms_Packed</td>
<td><code>ARRAY[0..80] OF WORD</code></td>
<td>Array compatto per visualizzazione rapida degli allarmi.</td>
</tr>
</tbody>
</table>
<hr>
<h2 id="struttura-st_ingress-scada-plc">⚙️ Struttura <code>ST_Ingress</code> (SCADA → PLC)</h2>
<p>Questa struttura contiene tutti i comandi e i setpoint che il sistema SCADA può inviare al PLC.</p>
<h3 id="comandi-di-controllo-produzione">⚙️ Comandi di Controllo Produzione</h3>
<table>
<thead>
<tr>
<th>Nome Variabile</th>
<th>Tipo Dati</th>
<th>Descrizione</th>
</tr>
</thead>
<tbody>
<tr>
<td>ProductionChangeRequest</td>
<td><code>BOOL</code></td>
<td>Comando da SCADA per richiedere un cambio produzione/lotto.</td>
</tr>
<tr>
<td>RecipeChangeRequest</td>
<td><code>BOOL</code></td>
<td>Comando da SCADA per richiedere un cambio ricetta.</td>
</tr>
<tr>
<td>ResetCounters</td>
<td><code>BOOL</code></td>
<td>Comando da SCADA per resettare le statistiche.</td>
</tr>
<tr>
<td>RemoteStopMachine</td>
<td><code>BOOL</code></td>
<td>Comando da SCADA per arrestare la macchina da remoto.</td>
</tr>
</tbody>
</table>
<h3 id="richieste-dati-ricetta-e-produzione">⚙️ Richieste Dati Ricetta e Produzione</h3>
<table>
<thead>
<tr>
<th>Nome Variabile</th>
<th>Tipo Dati</th>
<th>Descrizione</th>
</tr>
</thead>
<tbody>
<tr>
<td>RequestRecipeIndex</td>
<td><code>DINT</code></td>
<td>Indice della ricetta richiesta.</td>
</tr>
<tr>
<td>RequestProductionQuantity</td>
<td><code>DINT</code></td>
<td>Quantità di produzione richiesta.</td>
</tr>
<tr>
<td>RequestProductionCode</td>
<td><code>DINT</code></td>
<td>Codice del lotto/ordine di produzione richiesto.</td>
</tr>
<tr>
<td>RequestProductionInfo</td>
<td><code>STRING[38]</code></td>
<td>Descrizione del lotto/ordine richiesta.</td>
</tr>
</tbody>
</table>
<h3 id="watchdog-di-comunicazione">⚙️ Watchdog di Comunicazione</h3>
<table>
<thead>
<tr>
<th>Nome Variabile</th>
<th>Tipo Dati</th>
<th>Descrizione</th>
</tr>
</thead>
<tbody>
<tr>
<td>ScadaWatchdog</td>
<td><code>DINT</code></td>
<td>Contatore di watchdog dello SCADA ricevuto dal PLC.</td>
</tr>
</tbody>
</table>
</div>
<!-- DEBUG: {"headingsLength":14} -->
<!-- TOC sidebar -->
<div class="toc-sidebar">
<div class="toc-container">
<h2 class="toc-title">On This Page</h2>
<ul class="toc-list">
<li class="toc-item toc-level-2">
<a href="#scopo" class="toc-link">⚙️ Scopo</a>
</li>
<li class="toc-item toc-level-2">
<a href="#struttura-master" class="toc-link">⚙️ Struttura Master</a>
</li>
<li class="toc-item toc-level-2">
<a href="#struttura-st_egress-plc-scada" class="toc-link">⚙️ Struttura ST_Egress (PLC → SCADA)</a>
</li>
<li class="toc-item toc-level-3">
<a href="#flag-di-stato-macchina" class="toc-link">⚙️ Flag di Stato Macchina</a>
</li>
<li class="toc-item toc-level-3">
<a href="#flag-di-handshake-e-controllo" class="toc-link">⚙️ Flag di Handshake e Controllo</a>
</li>
<li class="toc-item toc-level-3">
<a href="#informazioni-ricetta-e-produzione" class="toc-link">⚙️ Informazioni Ricetta e Produzione</a>
</li>
<li class="toc-item toc-level-3">
<a href="#watchdog-di-comunicazione" class="toc-link">⚙️ Watchdog di Comunicazione</a>
</li>
<li class="toc-item toc-level-3">
<a href="#strutture-dati-di-analisi" class="toc-link">⚙️ Strutture Dati di Analisi</a>
</li>
<li class="toc-item toc-level-3">
<a href="#dati-allarmi" class="toc-link">⚙️ Dati Allarmi</a>
</li>
<li class="toc-item toc-level-2">
<a href="#struttura-st_ingress-scada-plc" class="toc-link">⚙️ Struttura ST_Ingress (SCADA → PLC)</a>
</li>
<li class="toc-item toc-level-3">
<a href="#comandi-di-controllo-produzione" class="toc-link">⚙️ Comandi di Controllo Produzione</a>
</li>
<li class="toc-item toc-level-3">
<a href="#richieste-dati-ricetta-e-produzione" class="toc-link">⚙️ Richieste Dati Ricetta e Produzione</a>
</li>
<li class="toc-item toc-level-3">
<a href="#watchdog-di-comunicazione" class="toc-link">⚙️ Watchdog di Comunicazione</a>
</li>
</ul>
</div>
</div>
</div>
</main>
<footer class="page-footer">
<div class="footer-content">
<div class="user-footer">
© 2025 Project.
</div>
<div class="branding-footer">
Build with <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z"></path><path d="M12 5 9.04 7.96a2.17 2.17 0 0 0 0 3.08c.82.82 2.13.85 3 .07l2.07-1.9a2.82 2.82 0 0 1 3.79 0l2.96 2.66"></path><path d="m18 15-2-2"></path><path d="m15 18-2-2"></path></svg> <a href="https://docmd.mgks.dev" target="_blank" rel="noopener">docmd.</a>
</div>
</div>
</footer>
</div>
<script src="../../assets/js/docmd-main.js"></script>
<script src="../../assets/js/docmd-image-lightbox.js"></script>
</body>
</html>