Files
HundM_Fortna/_CommonLib/DIFF_ANALYSE.md
T

163 lines
8.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Diff-Analyse P1-Bausteine — HundM_Fortna
**Stand:** 2026-06-29
**Analysiert:** 22 Bausteine die in allen 5 Konfigurationen (UH01UH05) vorhanden sind
**Methode:** Vollständiger Inhaltsvergleich aller Versionen
---
## Ergebnis-Übersicht
| Baustein | Gruppe | UH01 | UH02 | UH03 | UH04 | UH05 | Aktion |
|---|---|:---:|:---:|:---:|:---:|:---:|---|
| `FC_GET_PROFINET_DEVICE_STATES` | **A** | ✅ | ✅ | ✅ | ✅ | ✅ | In CommonLib → Projektbibliothek |
| `FB-OPC_UA_System-Stat` | **A** | ✅ | ✅ | ✅ | ✅ | ✅ | In CommonLib → Projektbibliothek |
| `FC_S7` | **A** | ✅ | ✅ | ✅ | ✅ | ✅ | In CommonLib → Projektbibliothek |
| `FC_CarrierManipulator` | **A** | ✅ | ✅ | ✅ | ✅ | ✅ | In CommonLib → Projektbibliothek |
| `FC_Int2String` | **A** | ✅ | ✅ | ✅ | ✅ | ✅ | In CommonLib → Projektbibliothek |
| `FB_FortnaTele_Placeholder` | **A** | ✅ | ✅ | ✅ | ✅ | ✅ | In CommonLib → Projektbibliothek |
| `Programming error` (OB) | **B** | ✅ | ⚠️ | ✅ | ✅ | ✅ | UH02 bereinigen (VAR_TEMP entfernen) |
| `FB_PerfTest` | **B** | ✅ | ✅ | ⚠️ | ✅ | ✅ | UH03 Default-Wert klären/entfernen |
| `FB_CommunicationLogger` | **B** | ✅ | ⚠️ | ✅ | ✅ | ✅ | connectionID + JAM-Ref. beachten! |
| `FB_Visu_Jam` | **B** | ⚠️ | ✅ | ✅ | ✅ | ✅ | UH01 cleanup: nInJamCount entfernt, REGION vereinheitlicht |
| `FB_Visu_JamStorage` | **B** | ✅ | ✅ | ⚠️ | — | — | UH03 hat HMI-Block auskommentiert (nur UH01/02/03) |
| `FB_Main` | **D** | ❌ | ❌ | ❌ | ❌ | ❌ | Nicht standardisierbar — TRO-Nummern, Topologie |
| `FB_PreMain` | **D** | ❌ | ❌ | ❌ | ❌ | ❌ | Nicht standardisierbar — EStop, Monitoring |
| `FB_CallSensors` | **D** | ❌ | ❌ | ❌ | ❌ | ❌ | Nicht standardisierbar — Sensor-IDs, Hardware |
| `FB_Visu` | **D** | ❌ | ❌ | ❌ | ❌ | ❌ | Nicht standardisierbar — TRO-Ranges, Config |
| `FB_CommunicationWCSBL` | **D** | ❌ | ❌ | ❌ | ❌ | ❌ | ConnectionID 10/20/30/40/50, Logik je UH reduziert |
| `FC_Call_Jams` | **D** | ❌ | ❌ | ❌ | ❌ | ❌ | Jam-Bereichsnummern je UH (0100/1100/2100/4000/5000) |
| `FC_Direction` | **D** | ❌ | ❌ | ❌ | ❌ | ❌ | Weichen-Nummern je UH |
| `FB_Visu_Jams` | **D** | ❌ | ❌ | ❌ | ❌ | ❌ | Jam-Instanzen je UH |
| `FC_CARR_GLOB_CORRECTION` | **D** | ❌ | ❌ | ❌ | ❌ | ❌ | 5685826 Zeilen je UH (Faktor 10!) |
| `FC_BARCODE_SEARCH` | **D** | ❌ | ❌ | ❌ | ❌ | ❌ | UH01: 2 Lagerbereiche, UH02UH05: 12 |
| `FC_Jam` | **D** | ❌ | ❌ | ❌ | ❌ | ❌ | UH02/UH03 mit erweiterter Storage-Logik |
**Legende:** ✅ = identisch mit Referenz | ⚠️ = kleine Abweichung | ❌ = topologie-spezifisch | — = nicht vorhanden
---
## Gruppe A — 100% identisch (6 Blöcke)
### FC_GET_PROFINET_DEVICE_STATES
- **Typ:** FC, 28 Zeilen
- **Funktion:** Liest PROFINET-Gerätezustände (vorhanden/gestört) via `DeviceStates()`
- **Status:** Alle 5 Versionen byte-identisch
- **Kanonische Version:** UH01 (gleichwertig)
### FB-OPC_UA_System-Stat
- **Typ:** FB, 73 Zeilen
- **Funktion:** Übersetzt internen Anlagenstatus in OPC-UA SCADA-Statuscodes
- **Status:** Alle 5 Versionen byte-identisch
- **Kanonische Version:** UH01 (gleichwertig)
### FC_S7
- **Typ:** FC, 63 Zeilen
- **Funktion:** S7-PUT Wrapper für CPU-zu-CPU-Datenaustausch
- **Status:** Alle 5 Versionen byte-identisch
- **Kanonische Version:** UH01 (gleichwertig)
### FC_CarrierManipulator
- **Typ:** FC, 159 Zeilen
- **Funktion:** HMI-gesteuerte Carrier-Manipulation in Jam-Listen (Löschen, Verschieben, HyperJam)
- **Status:** Alle 5 Versionen byte-identisch (MD5 identisch)
- **Kanonische Version:** UH01 (gleichwertig)
### FC_Int2String
- **Typ:** FC, 25 Zeilen
- **Funktion:** Wandelt INT in String, entfernt führendes "+" (Autor: Christian Forkl, 28.07.2021)
- **Status:** Alle 5 Versionen byte-identisch
- **Kanonische Version:** UH01 (gleichwertig)
### FB_FortnaTele_Placeholder
- **Typ:** FB, 37 Zeilen (nur Variablendeklaration, kein Code)
- **Funktion:** Platzhalter-Baustein mit allen Fortna WES/WCS UDT-Instanzen zur Typ-Aktivierung
- **Status:** Alle 5 Versionen byte-identisch
- **Kanonische Version:** UH01 (gleichwertig)
---
## Gruppe B — Kleine Abweichungen (5 Blöcke)
### Programming error (OB)
- **Typ:** OB (Organization Block), 33 Zeilen
- **Funktion:** Fehlerbehandlung bei Programmierfehler, schreibt Fehlerinfo in DB_Error
- **Abweichung UH02:** Hat zusätzliche `VAR_TEMP` Sektion mit ungenutzter `Temp_1 : Bool`
- **Entscheidung:** UH01-Version ist korrekt. UH02-VAR_TEMP ist redundant und sollte entfernt werden.
- **CommonLib-Version:** UH01 (ohne VAR_TEMP)
### FB_PerfTest
- **Typ:** FB, 105 Zeilen
- **Funktion:** Leistungsmessung — zählt Trolley-Releases und protokolliert Zeitstempel
- **Abweichung UH03:** `nInGoalFlags : Int := 498;` (Default-Wert = 498 = Array-Größe 500 minus 2)
- **Abweichung UH03:** Eine fehlende Leerzeile nach `END_IF`
- **Entscheidung:** Default-Wert in UH03 war vermutlich temporär für Tests gesetzt. UH01-Version (kein Default) ist der Standard. Falls UH03 den Default bewusst nutzt, muss dieser nach TIA-Import im Instanz-DB gesetzt werden.
- **CommonLib-Version:** UH01 (kein Default-Wert für `nInGoalFlags`)
### FB_CommunicationLogger
- **Typ:** FB, 229 Zeilen
- **Funktion:** TCP-Logger Kommunikation zu Fortna WCSBL, empfängt GOHDRespM-Telegramme
- **Abweichung UH02:** `connectionID := 100` (UH01/UH03/UH04/UH05 = 99)
- **Wichtig:** `connectionID` muss je PLC eindeutig sein! Dies ist KEIN Fehler in UH02, sondern möglicherweise bewusst.
- **Weitere Abweichung:** Zeilen 171179 (Jam-Referenz auf `"DB_JamArea0102"`) sind UH01-spezifisch
- **Entscheidung:** CommonLib-Version nimmt UH01 als Basis mit explizitem Kommentar:
- `connectionID` muss beim Import in UH02UH05 angepasst werden
- Jam-Referenz `"DB_JamArea0102"` bei anderen PLCs auskommentieren oder ersetzen
- **CommonLib-Version:** UH01 mit Hinweis-Kommentaren
### FB_Visu_Jam
- **Typ:** FB, 207 Zeilen
- **Funktion:** HMI-Listenverwaltung für Jam-Carrier-Anzeige (Scroll, Carrier-Manipulation)
- **Abweichung UH01:** Hat ungenutzten `VAR_INPUT nInJamCount : UInt` — in UH02/UH03/UH04/UH05 nicht vorhanden
- **Abweichung UH01:** REGION-Name "Carrier Manipulation" — in anderen UH "FC_CAR_MOVE"
- **Bereinigungen in CommonLib-Version:**
- `VAR_INPUT` Sektion vollständig entfernt (`nInJamCount` war unbenutzt)
- REGION umbenannt zu "FC_CAR_MOVE" (einheitlich mit UH02UH05)
- **CommonLib-Version:** Bereinigt
### FB_Visu_JamStorage
- **Typ:** FB, 200 Zeilen
- **Funktion:** HMI-Listenverwaltung für Lager-Jam-Carrier-Anzeige (nur in UH01/UH02/UH03)
- **Nicht vorhanden in:** UH04, UH05
- **Abweichung UH03:** HMI-REGION (Zeilen 193196) ist auskommentiert — `nCapacitySetHMI`-Zuweisung deaktiviert
- **Entscheidung:** UH01-Version ist die vollständigste (aktive HMI-Logik). UH03 hat bewusst deaktiviert.
- **CommonLib-Version:** UH01 (aktive HMI-Logik)
---
## Gruppe D — Topologie-spezifisch (11 Blöcke)
Diese Blöcke können **nicht ohne vollständiges Redesign** standardisiert werden, da sie
hartcodierte Werte enthalten, die die physikalische Anlagentopologie abbilden.
| Baustein | Hartcodierte Topologie-Werte | Größenunterschied |
|---|---|---|
| `FB_Main` | TRO-Nummern (100er/200er/300er/400er/500er), Workstations, Carousel-IDs, UDT-Referenzen | 18359293 Zeilen |
| `FB_PreMain` | EStop-Konstanten (1031 je UH), Monitoring-Instanzen, Befeuerungs-Konfiguration (1x/2x/4x) | 4912373 Zeilen |
| `FB_CallSensors` | Sensor-IDs (BG0280/BG3240 etc.), Schaltschrank-State-Referenzen | 76911649 Zeilen |
| `FB_Visu` | TRO-Ranges, Schaltschrank-IDs, EStop-Array-Größen | 701796 Zeilen |
| `FB_CommunicationWCSBL` | ConnectionID 10/20/30/40/50 je UH, Telegramm-Logik je UH verschieden | — |
| `FC_Call_Jams` | Jam-Bereichsnummern (0100er/1100er/2100er/4000er/5000er) | — |
| `FC_Direction` | Weichen-Nummern (cSwi107/cSwi202/cSwi313/cSwi405/cSwi505) | — |
| `FB_Visu_Jams` | Jam-Instanzen (Anzahl und Art je UH) | 3252 KB |
| `FC_CARR_GLOB_CORRECTION` | Jam-Bereiche, Stationsnummern | 5685826 Zeilen |
| `FC_BARCODE_SEARCH` | Lagerbereiche: UH01=2, UH02UH05=12 | — |
| `FC_Jam` | UH02/UH03 mit erweiterter `CarrierStatisticsStorage`-Logik | 85203 Zeilen |
### Empfehlung für Gruppe-D-Blöcke
Langfristig könnten diese Blöcke durch **Code-Generierung** aus einer zentralen
Topologie-Konfigurationsdatei (z.B. UDT-Array oder JSON) erstellt werden.
Kurzfristig: Getrennte Pflege je UH bleibt notwendig.
---
## Entscheidungsstatus FC_StorageLines (Sonderfall)
`FC_StorageLines` war zunächst als P1-Kandidat eingestuft:
- **UH01, UH03, UH05:** identisch (gleiches MD5)
- **UH02, UH04:** abweichend (unterschiedliche Storage-Strukturen)
Da nicht alle 5 UH identisch sind, wurde dieser Block **nicht** in die CommonLib aufgenommen.
Möglichkeit: Separate CommonLib-Instanz nur für UH01/UH03/UH05 — bei Bedarf ergänzen.