# SCL-Bausteinanalyse: Standardisierungspotenzial **Projekt:** HundM_Fortna **Datum:** 2026-06-23 **Analysierte Konfigurationen:** UH01, UH02, UH03, UH04, UH05 **Gesamt SCL-Dateien:** ~224 Baustein-Deklarationen gefunden --- ## Methodik - **Eingeschlossen:** Alle `.scl`-Dateien in projektspezifischen Verzeichnissen - **Ausgeschlossen (bereits bibliothekarisiert):** - `*/1_BaseSystemLib/**` (UH01, UH04, UH05) - `*/2_ILSLib/**` (UH01, UH04, UH05) - `*/BaseSystemLib/**` (UH02, UH03) - `*/ILSLib/**` (UH02, UH03) - `LGF_DTLtoString_ISO` (Siemens LGF-Standardbibliothek) - **Kriterium:** Baustein erscheint identisch (gleicher Name) in mehreren Konfigurationen → Duplikationspflege notwendig --- ## Priorität 1 — In ALLEN 5 Konfigurationen vorhanden > Diese 22 Bausteine werden in jedem SPS-Projekt kopiert und separat gepflegt. > **Empfehlung:** Sofort in eine gemeinsame Projektbibliothek auslagern. | Baustein | Typ | Kategorie | Pfad | |---|---|---|---| | `FB_CallSensors` | FB | Sensoren | `050_Sensors/` | | `FB_PreMain` | FB | Programmstruktur | `075_PreMain/` | | `FB_Main` | FB | Programmstruktur | `100_Main/` | | `FC_CARR_GLOB_CORRECTION` | FC | MFR | `200_MFR/` | | `FC_Direction` | FC | MFR | `200_MFR/` | | `FC_Int2String` | FC (→ String) | Hilfsfunktionen | `400_BasicFunctions/FC/` | | `FC_Jam` | FC | Stau | `400_BasicFunctions/FC/` ¹ | | `FC_StorageLines` | FC | Puffer | `400_BasicFunctions/FC/` ² | | `FC_Call_Jams` | FC | Stau | `700_Jams/` | | `FB_CommunicationWCSBL` | FB | Kommunikation | `900_Communications/` ³ | | `FB_FortnaTele_Placeholder` | FB | Kommunikation | `900_Communications/` ⁴ | | `FB_CommunicationLogger` | FB | Kommunikation | `900_Communications/TCP-Logger/` | | `FB_Visu` | FB | Visualisierung | `970_Visu/` | | `FB_Visu_Jam` | FB | Visualisierung | `970_Visu/` | | `FB_Visu_Jams` | FB | Visualisierung | `970_Visu/` | | `FC_CarrierManipulator` | FC | Visualisierung | `970_Visu/` | | `FC_BARCODE_SEARCH` | FC | Barcode | `Programmbausteine/` (Root) | | `FC_GET_PROFINET_DEVICE_STATES` | FC | PROFINET | `PROFINET/` | | `Programming error` | OB | Fehlerbehandlung | `Programmbausteine/` (Root) | | `FB-OPC_UA_System-Stat` | FB | SCADA | `SCADA/` | | `FB_PerfTest` | FB | Performance | `_PerformanceMeasurement_/` | | `FC_S7` | FC | IBN/Test | `_IBN/` | **Anmerkungen:** - ¹ UH03: Datei liegt in `700_Jams/FC_Jam.scl` statt `400_BasicFunctions/FC/` - ² UH03: Datei liegt in `800_Storage/FC_StorageLines.scl` statt `400_BasicFunctions/FC/` - ³ UH03/UH04/UH05: Unterordner `Fortna-WES-WCS/` - ⁴ UH04/UH05: Unterordner `Fortna-WES-WCS/Misc/` --- ## Priorität 2 — In 4 von 5 Konfigurationen vorhanden | Baustein | Typ | Vorhanden in | Fehlt in | Bemerkung | |---|---|---|---|---| | `FB_EventLog_StepChange` | FB | UH02, UH03, UH04, UH05 | UH01 | Neu, fehlt noch in UH01 | | `FB_PriorityLogic` | FB | UH01, UH03, UH04, UH05 | UH02 | UH02 hat `FB_PriorityManagement` (abweichende Logik) | | `FC_Get_LaneStatus` | FC (→ String) | UH01, UH03, UH04, UH05 | UH02 | UH02 verwendet andere Lane-Logik | --- ## Priorität 3 — In 3 Konfigurationen vorhanden | Baustein | Typ | Vorhanden in | Bemerkung | |---|---|---|---| | `FB_Visu_JamStorage` | FB | UH01, UH02, UH03 | UH04/UH05 benötigen kein Jam-Puffer-Visu? | --- ## Priorität 4 — In 2 Konfigurationen vorhanden ### 4a) AI/Storage-Gruppe (UH02 + UH03) Diese Gruppe enthält die Lagerungs- und Umstapelintelligenz. Beide Konfigurationen pflegen identische Kopien. | Baustein | Typ | |---|---| | `FB_LineEmptyAnalyze` | FB | | `FB_LineLvlAnalyze` | FB | | `FB_RearrangeSequencer` | FB | | `FB_RearrangeStartCoordination` | FB | | `FB_StockRemovalBLKModul` | FB | | `FB_StockRemovalSequencerUDT` | FB | | `FB_StorageManagement` | FB | | `FB_StorageManagementCall` | FB | | `FB_UpdateMessage` | FB | > **Hinweis:** UH02 hat zusätzliche Varianten `_New`, `_New_EY`, `Lvl1` — diese sollten konsolidiert werden (siehe Sonderanalyse unten). ### 4b) CPU-CPU-Exchange (UH02 + UH03) | Baustein | Typ | Pfad | |---|---|---| | `FB_I-Device_ReceiveCarrier` | FB | `_CPU-CPU-Exchange/` | | `FB_I-Device_SendCarrier` | FB | `_CPU-CPU-Exchange/` | ### 4c) Visu-Erweiterungen (UH02 + UH03) | Baustein | Typ | |---|---| | `FB_Visu_AuslagernAI` | FB | | `FB_Visu_AuslagernList` | FB | | `FB_Visu_ListPinband` | FB | ### 4d) Kommunikation (paarweise) | Baustein | Typ | Vorhanden in | |---|---|---| | `FB_CommunicationWES_ASRS` | FB | UH02 + UH03 | | `FC_Call_StorageLines` | FC | UH02 + UH03 | | `FB_CommunicationWES_DeviceHub` | FB | UH04 + UH05 | ### 4e) Längenmessung (UH01 + UH05) | Baustein | Typ | Pfad | |---|---|---| | `FB_Längenmessung` | FB | `Längenmessung/` | | `FB_LaengenmessungAI` | FB | `970_Visu/` | ### 4f) String-Konvertierung (UH01 + UH04) | Baustein | Typ | Rückgabetyp | |---|---|---| | `FC_usint2String` | FC | String | | `FC_Uint2TroString` | FC | String | > **Zusatzempfehlung:** Zusammen mit `FC_Int2String` (5x vorhanden) prüfen, ob alle drei durch Siemens-Standardfunktionen (`INT_TO_STRING`, `USINT_TO_STRING`) ersetzt werden können. Falls eigene Formatierung nötig: zu einer parametrierbaren FC zusammenfassen. ### 4g) AMR/F2H-Verwandtschaft (UH04 + UH05) | Baustein | Typ | Vorhanden in | |---|---|---| | `FB_ScanMonitor` | FB | UH04 + UH05 | | `FB_TROHandshakeAMR` | FB | UH04 + UH05 | ### 4h) Test-Bausteine (UH02 + UH03) | Baustein | Typ | Pfad | |---|---|---| | `FB_Test_RotierenMT` | FB | `_IBN/` | --- ## Sonderanalyse: Versionschaos — StockRemoval (UH02) In UH02 existieren 4 Varianten desselben Kernbausteins nebeneinander: | Baustein | Pfad | Status | |---|---|---| | `FB_StockRemovalBLKModul` | `200_MFR/_AutomatedIntelligence/` | Original | | `FB_StockRemovalBLKModul_New` | `200_MFR/_AutomatedIntelligence/` | Neuversion | | `FB_StockRemovalBLKModul_New_EY` | `200_MFR/_AutomatedIntelligence/Embi/` | Sonderabzweig | | `Fb_StockRemovalManagementLvl1` | `200_MFR/_AutomatedIntelligence/` | Lvl1-Erweiterung | **UH03** hat daneben noch: - `FB_StockRemovalManagementLvl2` - `FB_StockRemovalSequencer` - `FB_StorageManagement_Rework` - `FB_StorageTaskScheduler` **Empfehlung:** Auf eine versionierte Hauptvariante reduzieren. Unterschiede als konfigurierbare Parameter lösen. `old/`-Verzeichnisse aufräumen. --- ## Sonderanalyse: "old/"-Verzeichnisse (technische Schulden) Folgende Bausteine liegen in `old/`-Unterordnern und sollten entfernt werden: | Baustein | Konfiguration | Pfad | |---|---|---| | `FB_AMR_Management` | UH04 | `200_MFR/_AutomatedIntelligence/old/` | | `FB_F2H_Management` | UH05 | `200_MFR/_AutomatedIntelligence/old/` | --- ## Nicht standardisierbar (anlagenspezifisch) Diese Bausteine sind inhärent projektspezifisch und sollten **nicht** zusammengelegt werden: | Baustein | Konfiguration | Begründung | |---|---|---| | `FB_PriorityManagement` | UH02 | Abweichende Priorisierungslogik vs. `FB_PriorityLogic` | | `FB_OffsetCorrection` | UH02 | Anlagenspezifische Korrektur | | `FC_ClearJam`, `FC_PutToHj` | UH01 | Spezifische MFR-Logik UH01 | | `FB_EmptyCarrBuffer`, `FB_Pin_EmptyBuffer` | UH01 | Pin-Puffer spezifisch UH01 | | `FB_SSCCAI` | UH01 | SSCC-Scan spezifisch | | `ReadServerDiagnostics` | UH01 | OPC-UA Diagnose | | `ReadSessionDiagnostics` | UH01 | OPC-UA Diagnose | | `CheckForTimeOut` | UH01 | OPC-UA Session-Timeout | | `LCom_Example` (OB) | UH01 | Beispiel/IBN | | `TestBaustein`, `FB_TestMain` | UH01 | IBN/Test | | `FB_BoomWorkStation` | UH01 | Ladeschleife spezifisch | | `FB_ButtonAck` | UH01 | Ladeschleife spezifisch | | `FB_DistanceFoot` | UH01 | Ladeschleife spezifisch | | `FB_LoadingBoom_INBOUND` | UH01 | Ladeschleife spezifisch | | `FB_MotorSimple_INBOUND` | UH01 | Ladeschleife spezifisch | | `FB_StopperSimple` / `FB_StopperSpecial` | UH01 | Ladeschleife — könnten aber zusammengefasst werden | | `FB_Tilt_TEST` | UH01 | Test | | `FB_LV1BlockStorageManagement` | UH02 | Spezifisch UH02 | | `FB_Lvl1AdditionalRouting` | UH02 | Spezifisch UH02 | | `Fb_StockRemovalManagementLvl1` | UH02 | Spezifisch UH02 | | `FB_StockRemovalManagementLvl2` | UH03 | Spezifisch UH03 | | `FB_StockRemovalSequencer` | UH03 | Spezifisch UH03 | | `FB_StorageManagement_Rework` | UH03 | Rework-Branch | | `FB_StorageTaskScheduler` | UH03 | Spezifisch UH03 | | `FB_AMR_Management_V2` | UH04 | AMR-Verwaltung UH04 | | `FB_CallAMRManagement` | UH04 | AMR-Aufruflogik UH04 | | `FB_F2H_Management_Rework` | UH05 | F2H Rework-Branch | | `FB_CallF2HManagement` | UH05 | F2H-Aufruflogik UH05 | | `FC_GetStationIndex` | UH05 | Stationsindex UH05 | | `FB_PhasenTest` | UH02 | Phasenüberwachungs-Test | | `FB_Test_RotierenMT` | UH02, UH03 | IBN-Test | --- ## Zusammenfassung: Standardisierungspotenzial | Priorität | Anzahl Bausteine | Konfigurationsbreite | Aufwand | |---|---|---|---| | **P1** — Alle 5 UH | 22 | 5x | Hoch, aber höchster Nutzen | | **P2** — 4 von 5 UH | 3 | 4x | Mittel | | **P3** — 3 von 5 UH | 1 | 3x | Niedrig | | **P4** — 2 von 5 UH | 23 | 2x | Nach Gruppen priorisieren | | **Gesamt** | **49** | — | — | ### Top-5 Quick Wins 1. **`FC_GET_PROFINET_DEVICE_STATES`** — Reine Diagnose-FC, kein anlagenspezifischer Inhalt. Sofort in BaseSystemLib. 2. **`FB-OPC_UA_System-Stat`** — OPC-UA-Standard-Handling, identisch in allen 5 UH. Sofort in BaseSystemLib. 3. **`Programming error` (OB)** — Standard-Fehlerbehandlungs-OB, keine Anlagenlogik. 4. **`FC_Int2String` / `FC_usint2String` / `FC_Uint2TroString`** — String-Konvertierungen; prüfen ob `INT_TO_STRING` (STEP 7) ausreicht, sonst eine gemeinsame FC. 5. **`FB_CommunicationLogger`** — TCP-Logger-Logik ohne anlagenspezifische Abhängigkeiten, in allen 5 UH identisch.