163 lines
8.8 KiB
Markdown
163 lines
8.8 KiB
Markdown
# Diff-Analyse P1-Bausteine — HundM_Fortna
|
||
|
||
**Stand:** 2026-06-29
|
||
**Analysiert:** 22 Bausteine die in allen 5 Konfigurationen (UH01–UH05) 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** | ❌ | ❌ | ❌ | ❌ | ❌ | 568–5826 Zeilen je UH (Faktor 10!) |
|
||
| `FC_BARCODE_SEARCH` | **D** | ❌ | ❌ | ❌ | ❌ | ❌ | UH01: 2 Lagerbereiche, UH02–UH05: 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 171–179 (Jam-Referenz auf `"DB_JamArea0102"`) sind UH01-spezifisch
|
||
- **Entscheidung:** CommonLib-Version nimmt UH01 als Basis mit explizitem Kommentar:
|
||
- `connectionID` muss beim Import in UH02–UH05 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 UH02–UH05)
|
||
- **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 193–196) 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 | 1835–9293 Zeilen |
|
||
| `FB_PreMain` | EStop-Konstanten (10–31 je UH), Monitoring-Instanzen, Befeuerungs-Konfiguration (1x/2x/4x) | 491–2373 Zeilen |
|
||
| `FB_CallSensors` | Sensor-IDs (BG0280/BG3240 etc.), Schaltschrank-State-Referenzen | 769–11649 Zeilen |
|
||
| `FB_Visu` | TRO-Ranges, Schaltschrank-IDs, EStop-Array-Größen | 70–1796 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) | 32–52 KB |
|
||
| `FC_CARR_GLOB_CORRECTION` | Jam-Bereiche, Stationsnummern | 568–5826 Zeilen |
|
||
| `FC_BARCODE_SEARCH` | Lagerbereiche: UH01=2, UH02–UH05=12 | — |
|
||
| `FC_Jam` | UH02/UH03 mit erweiterter `CarrierStatisticsStorage`-Logik | 85–203 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.
|