Modifiche
This commit is contained in:
parent
15f0d7c510
commit
97f4c9e975
|
|
@ -4,6 +4,7 @@ sidebar_position: 0
|
|||
title: Architettura ScadaInterface
|
||||
sidebar_label: Scada Interface
|
||||
pagination_prev: null
|
||||
hide_table_of_contents: true
|
||||
---
|
||||
|
||||
# 🛠️ Architettura ScadaInterface
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ sidebar_position: 1
|
|||
title: Sotto Struttura ScadaInterface
|
||||
sidebar_label: Scada Interface Sotto Strutture
|
||||
pagination_prev: null
|
||||
hide_table_of_contents: true
|
||||
---
|
||||
|
||||
## Sotto-Strutture di `ScadaInterface`
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ sidebar_position: 2
|
|||
title: Statistiche Allarmi
|
||||
sidebar_label: Scada Interface Allarmi Statistiche
|
||||
pagination_prev: null
|
||||
hide_table_of_contents: true
|
||||
---
|
||||
|
||||
# Strutture per le Statistiche degli Allarmi
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ sidebar_position: 3
|
|||
title: Statistiche Flowpack
|
||||
sidebar_label: Scada Interface Flowpack Statistiche
|
||||
pagination_prev: null
|
||||
hide_table_of_contents: true
|
||||
---
|
||||
|
||||
# Strutture per le Statistiche della Flowpack
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ sidebar_position: 4
|
|||
title: Statistiche Row Distribution
|
||||
sidebar_label: Scada Interface RowDistribution Statistiche
|
||||
pagination_prev: null
|
||||
hide_table_of_contents: true
|
||||
---
|
||||
|
||||
# Strutture per le Statistiche di Produzione
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ sidebar_position: 5
|
|||
title: Flusso di Scambio Dati (PLC-HMI-SCADA)
|
||||
sidebar_label: Flusso di Comunicazione
|
||||
pagination_prev: null
|
||||
hide_table_of_contents: true
|
||||
---
|
||||
|
||||
# Flusso di Scambio Dati (PLC-HMI-SCADA)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,98 @@
|
|||
|
||||
---
|
||||
id: flusso-comunicazione
|
||||
title: Flusso di Scambio Dati (PLC-HMI-SCADA)
|
||||
sidebar_label: Flusso Comunicazione
|
||||
hide_table_of_contents: true
|
||||
sidebar_position: 6
|
||||
---
|
||||
|
||||
# Flusso di Scambio Dati (PLC - HMI - SCADA)
|
||||
|
||||
Questo documento descrive il processo di scambio dati tra PLC, HMI e SCADA
|
||||
per la gestione del **cambio ricetta** e del **meccanismo di heartbeat (watchdog)**.
|
||||
|
||||
---
|
||||
|
||||
## Sequence Diagram – Cambio Ricetta e Heartbeat
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
autonumber
|
||||
participant HMI as HMI (Operatore)
|
||||
participant PLC as PLC
|
||||
participant SCADA as SCADA
|
||||
|
||||
Note over HMI: Operatore abilita controllo remoto
|
||||
HMI->>PLC: RemoteControlEn = TRUE
|
||||
|
||||
Note over SCADA: Invio nuova produzione (indice ricetta, lotto, …)
|
||||
SCADA->>PLC: ProductionChangeRequest = TRUE
|
||||
|
||||
PLC-->>SCADA: AckChangeRecipe = TRUE
|
||||
SCADA-->>PLC: ProductionChangeRequest = FALSE
|
||||
PLC-->>SCADA: AckChangeRecipe = FALSE
|
||||
|
||||
PLC-->>HMI: AckChangeRecipeToHMI = TRUE (apri pop-up)
|
||||
|
||||
alt Operatore ACCETTA
|
||||
HMI->>PLC: RecipeChangeOk = TRUE
|
||||
PLC->>PLC: Carica ricetta / aggiorna dati
|
||||
PLC-->>SCADA: RecipeChangeOK = TRUE (2s)
|
||||
else Operatore RIFIUTA (o chiude)
|
||||
HMI->>PLC: RejectRecipeChange = TRUE (o CloseMESWindow)
|
||||
PLC-->>SCADA: RecipeChangeReject = TRUE (2s)
|
||||
else Operatore POSTICIPA
|
||||
HMI->>PLC: BatchChangePopupDismiss = TRUE
|
||||
PLC->>PLC: Avvia timer 30s
|
||||
PLC-->>SCADA: RecipeChangePostpone = TRUE
|
||||
PLC-->>HMI: (allo scadere 30s) ri-apri pop-up
|
||||
end
|
||||
|
||||
par Heartbeat / Watchdog
|
||||
loop ogni 1s
|
||||
PLC-->>SCADA: PlcHeartbeat_Toggle (inverti bit)
|
||||
SCADA-->>PLC: ScadaHeartbeat_Echo = PlcHeartbeat_Toggle
|
||||
end
|
||||
PLC->>PLC: Se mismatch > 3s ⇒ MesCommunicationFault = TRUE
|
||||
end
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## State Diagram – Macchina a stati (S60_RecipeManagement)
|
||||
|
||||
```mermaid
|
||||
stateDiagram-v2
|
||||
[*] --> Idle
|
||||
|
||||
Idle --> Handshake_In: ProductionChangeRequest ↑
|
||||
Handshake_In --> Wait_Request_Low: AckChangeRecipe = TRUE
|
||||
Wait_Request_Low --> Popup_To_HMI: ProductionChangeRequest = FALSE, AckChangeRecipe = FALSE
|
||||
|
||||
Popup_To_HMI --> Wait_Operator: AckChangeRecipeToHMI = TRUE
|
||||
|
||||
state Wait_Operator {
|
||||
[*] --> AwaitChoice
|
||||
AwaitChoice --> ApplyRecipe: RecipeChangeOk = TRUE
|
||||
AwaitChoice --> RejectRecipe: RejectRecipeChange = TRUE
|
||||
AwaitChoice --> Postpone: BatchChangePopupDismiss = TRUE
|
||||
|
||||
ApplyRecipe --> ReportOK: (carica/aggiorna dati)
|
||||
ReportOK --> [*]
|
||||
|
||||
RejectRecipe --> ReportReject
|
||||
ReportReject --> [*]
|
||||
|
||||
Postpone --> Timer30s
|
||||
Timer30s --> Popup_To_HMI: allo scadere 30s (riapri pop-up)
|
||||
}
|
||||
|
||||
note right of ReportOK
|
||||
Egress.RecipeChangeOK = TRUE (2s)
|
||||
end note
|
||||
|
||||
note right of ReportReject
|
||||
Egress.RecipeChangeReject = TRUE (2s)
|
||||
end note
|
||||
```
|
||||
|
|
@ -2,82 +2,50 @@ import { themes as prismThemes } from "prism-react-renderer";
|
|||
import type { Config } from "@docusaurus/types";
|
||||
import type * as Preset from "@docusaurus/preset-classic";
|
||||
|
||||
// This runs in Node.js - Don't use client-side code here (browser APIs, JSX...)
|
||||
|
||||
const config: Config = {
|
||||
title: "TP-Docs",
|
||||
tagline: "Your Source of Truth for Engineering Docs",
|
||||
favicon: "img/favicon.png",
|
||||
|
||||
// Future flags, see https://docusaurus.io/docs/api/docusaurus-config#future
|
||||
future: {
|
||||
v4: true, // Improve compatibility with the upcoming Docusaurus v4
|
||||
},
|
||||
future: { v4: true },
|
||||
|
||||
// Set the production url of your site here
|
||||
url: 'https://docs.dffm.it',
|
||||
baseUrl: '/',
|
||||
url: "https://docs.dffm.it",
|
||||
baseUrl: "/",
|
||||
|
||||
// GitHub pages deployment config.
|
||||
// If you aren't using GitHub pages, you don't need these.
|
||||
organizationName: "marco.costalunga", // Usually your GitHub org/user name.
|
||||
projectName: "tp-docs", // Usually your repo name.
|
||||
organizationName: "marco.costalunga",
|
||||
projectName: "tp-docs",
|
||||
|
||||
onBrokenLinks: "throw",
|
||||
onBrokenMarkdownLinks: "warn",
|
||||
|
||||
// Even if you don't use internationalization, you can use this field to set
|
||||
// useful metadata like html lang. For example, if your site is Chinese, you
|
||||
// may want to replace "en" with "zh-Hans".
|
||||
i18n: {
|
||||
defaultLocale: "it",
|
||||
locales: ["it"],
|
||||
},
|
||||
i18n: { defaultLocale: "it", locales: ["it"] },
|
||||
|
||||
presets: [
|
||||
[
|
||||
"classic",
|
||||
{
|
||||
theme: {
|
||||
customCss: "./src/css/custom.css",
|
||||
},
|
||||
|
||||
theme: { customCss: "./src/css/custom.css" },
|
||||
docs: {
|
||||
sidebarPath: "./sidebars.ts",
|
||||
// Please change this to your repo.
|
||||
// Remove this to remove the "edit this page" links.
|
||||
editUrl:
|
||||
"https://gitlab.dffm.it/giuseppe/docs/-/edit/main/",
|
||||
editUrl: "https://gitlab.dffm.it/giuseppe/docs/-/edit/main/",
|
||||
},
|
||||
blog: {
|
||||
showReadingTime: true,
|
||||
feedOptions: {
|
||||
type: ['rss', 'atom'],
|
||||
xslt: true,
|
||||
},
|
||||
// Please change this to your repo.
|
||||
// Remove this to remove the "edit this page" links.
|
||||
editUrl:
|
||||
"https://gitlab.dffm.it/giuseppe/docs/-/edit/main/",
|
||||
// Useful options to enforce blogging best practices
|
||||
onInlineTags: 'warn',
|
||||
onInlineAuthors: 'warn',
|
||||
onUntruncatedBlogPosts: 'warn',
|
||||
},
|
||||
theme: {
|
||||
customCss: "./src/css/custom.css",
|
||||
feedOptions: { type: ["rss", "atom"], xslt: true },
|
||||
editUrl: "https://gitlab.dffm.it/giuseppe/docs/-/edit/main/",
|
||||
onInlineTags: "warn",
|
||||
onInlineAuthors: "warn",
|
||||
onUntruncatedBlogPosts: "warn",
|
||||
},
|
||||
} satisfies Preset.Options,
|
||||
],
|
||||
],
|
||||
|
||||
themes: [
|
||||
"@docusaurus/theme-mermaid", // ✅ aggiunta qui
|
||||
[
|
||||
require.resolve("@easyops-cn/docusaurus-search-local"),
|
||||
{
|
||||
hashed: true,
|
||||
language: ["it"],
|
||||
},
|
||||
{ hashed: true, language: ["it"] },
|
||||
],
|
||||
],
|
||||
|
||||
|
|
@ -86,105 +54,36 @@ const config: Config = {
|
|||
"@docusaurus/plugin-pwa",
|
||||
{
|
||||
debug: true,
|
||||
offlineModeActivationStrategies: [
|
||||
"appInstalled",
|
||||
"standalone",
|
||||
"queryString",
|
||||
],
|
||||
offlineModeActivationStrategies: ["appInstalled", "standalone", "queryString"],
|
||||
pwaHead: [
|
||||
{
|
||||
tagName: "link",
|
||||
rel: "icon",
|
||||
href: "/img/favicon.png",
|
||||
},
|
||||
{
|
||||
tagName: "link",
|
||||
rel: "manifest",
|
||||
href: "/manifest.json", // your PWA manifest
|
||||
},
|
||||
{
|
||||
tagName: "meta",
|
||||
name: "theme-color",
|
||||
content: "rgb(37, 194, 160)",
|
||||
},
|
||||
{ tagName: "link", rel: "icon", href: "/img/favicon.png" },
|
||||
{ tagName: "link", rel: "manifest", href: "/manifest.json" },
|
||||
{ tagName: "meta", name: "theme-color", content: "rgb(37, 194, 160)" },
|
||||
],
|
||||
},
|
||||
],
|
||||
],
|
||||
|
||||
markdown: { mermaid: true }, // ✅ abilita parsing mermaid nei .md/.mdx
|
||||
|
||||
themeConfig: {
|
||||
// Replace with your project's social card
|
||||
image: "img/docusaurus-social-card.jpg",
|
||||
navbar: {
|
||||
title: "TP-Docs",
|
||||
logo: {
|
||||
alt: "My Site Logo",
|
||||
src: "img/favicon.png",
|
||||
},
|
||||
logo: { alt: "My Site Logo", src: "img/favicon.png" },
|
||||
items: [
|
||||
{
|
||||
type: "docSidebar",
|
||||
sidebarId: "docSidebar",
|
||||
position: "left",
|
||||
label: "Documentazione",
|
||||
}, //,
|
||||
{ to: '/blog', label: 'Blog', position: 'left' },
|
||||
/*{
|
||||
href: 'https://github.com/facebook/docusaurus',
|
||||
label: 'GitHub',
|
||||
position: 'right',
|
||||
},*/
|
||||
{ type: "docSidebar", sidebarId: "docSidebar", position: "left", label: "Documentazione" },
|
||||
{ to: "/blog", label: "Blog", position: "left" },
|
||||
],
|
||||
},
|
||||
footer: {
|
||||
style: "dark",
|
||||
links: [
|
||||
/*{
|
||||
title: 'Docs',
|
||||
items: [
|
||||
{
|
||||
label: 'Tutorial',
|
||||
to: '/docs/intro',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Community',
|
||||
items: [
|
||||
{
|
||||
label: 'Stack Overflow',
|
||||
href: 'https://stackoverflow.com/questions/tagged/docusaurus',
|
||||
},
|
||||
{
|
||||
label: 'Discord',
|
||||
href: 'https://discordapp.com/invite/docusaurus',
|
||||
},
|
||||
{
|
||||
label: 'X',
|
||||
href: 'https://x.com/docusaurus',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'More',
|
||||
items: [
|
||||
{
|
||||
label: 'Blog',
|
||||
to: '/blog',
|
||||
},
|
||||
{
|
||||
label: 'GitHub',
|
||||
href: 'https://github.com/facebook/docusaurus',
|
||||
},
|
||||
],
|
||||
},*/
|
||||
],
|
||||
copyright: `Copyright © ${new Date().getFullYear()} Tecno Pack SPA. Built with Docusaurus.`,
|
||||
},
|
||||
prism: {
|
||||
theme: prismThemes.github,
|
||||
darkTheme: prismThemes.vsDark,
|
||||
additionalLanguages: ['yaml', 'csharp', 'iecst', 'bash']
|
||||
additionalLanguages: ["yaml", "csharp", "iecst", "bash"],
|
||||
},
|
||||
} satisfies Preset.ThemeConfig,
|
||||
};
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -19,6 +19,7 @@
|
|||
"@docusaurus/plugin-pwa": "^3.8.1",
|
||||
"@docusaurus/preset-classic": "^3.8.1",
|
||||
"@docusaurus/theme-classic": "^3.8.1",
|
||||
"@docusaurus/theme-mermaid": "^3.8.1",
|
||||
"@easyops-cn/docusaurus-search-local": "^0.52.1",
|
||||
"@mdx-js/react": "^3.0.0",
|
||||
"clsx": "^2.0.0",
|
||||
|
|
|
|||
Loading…
Reference in New Issue