diff --git a/doc/updated_mubea/export_FB_Main.scl b/doc/updated_mubea/export_FB_Main.scl new file mode 100644 index 0000000..f68056d --- /dev/null +++ b/doc/updated_mubea/export_FB_Main.scl @@ -0,0 +1,620 @@ +// ============================================================ +// FB_Main - GERUEST, erzeugt von lib/scl_skeleton.py +// Quelle : export_tro.json +// Erzeugt: 2026-08-17 09:12 +// +// Das ist KEIN lauffaehiges Programm, sondern ein Geruest zum +// Ausfuellen. Struktur, Reihenfolge und Bauteilzahl stammen aus dem +// Anlagenlayout und der vor Ort aufgenommenen Topologie. +// +// Jede Stelle, die aus der E-Planung kommen muss, ist mit +// 'TODO(E-Planung)' markiert - danach suchen, dann ist nichts vergessen. +// Offen sind durchgaengig: Sensor-/Aktoradressen (cInBG/MB/MA), +// Separator- und Weichennummern, MainTro-Nummern, die Staubereiche +// (DB_JamArea...) und die Zeiten, soweit als 'pruefen' vermerkt. +// +// Reihenfolge der REGIONs = Materialfluss. +// Anfang bei TRO07: per --start gesetzt. +// ============================================================ + +FUNCTION_BLOCK "FB_Main" +{ S7_Optimized_Access := 'TRUE' } +VERSION : 0.1 + VAR + TRO07 : "FB_ILS_MTRO_1Sep"; // 1Sep, Sep 0065 + TRO06 : "FB_ILS_MTRO_1Sep_SSCC"; // 1Sep_SSCC, Sep 0064 + TRO08 : "FB_ILS_MTRO_1Sep"; // 1Sep, Sep 0066 + TRO12 : "FB_ILS_MTRO_PinStore_Auto"; // PinStore_Auto, Sep 0037, 0038, 0039, 0040, 0041, 0042, 0043, 0044, 0045, 0046, 0047, 0048, 0049, 0050, 0051, 0052, 0053, 0054, 0055, 0056, 0068 + TRO05 : "FB_ILS_MTRO_2Sep2Swi"; // 2Sep2Swi, Sep 0005, 0057 + TRO01 : "FB_ILS_MTRO_1Sep"; // 1Sep, Sep 0061 + TRO04 : "FB_ILS_MTRO_1Sep_SSCC"; // 1Sep_SSCC, Sep 0012 + TRO10 : "FB_ILS_MTRO_Vario"; // Vario, Sep 0067 + TRO03 : "FB_ILS_MTRO_1Sep1Swi"; // 1Sep1Swi, Sep 0011 + TRO02 : "FB_ILS_MTRO_1Sep_SSCC"; // 1Sep_SSCC, Sep 0003 + TRO11 : "FB_ILS_MTRO_Vario"; // Vario, Sep 0058, 0059 + TRO09 : "FB_ILS_MTRO_Vario"; // Vario, Sep 0015, 0063 + END_VAR + +BEGIN + +REGION TRO07 (1Sep) Sep 0065 + // Anlagenkoordinate x/y: 10310 / 160 mm + // Vorgaenger: TRO09 + // Nachfolger: TRO06 + // Einstufung: mittel + + // Separator 1 = Bauteil 0065 aus dem Layout + #TRO07.stInSeparator1.Settings.nSeparatorNo := "cSep_____"; // TODO(E-Planung) + #TRO07.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO07.stInSeparator1.Settings.tTrailingTime := t#600ms; // TODO(E-Planung): pruefen + #TRO07.stInSeparator1.Settings.tHandlingTime := t#200ms; // TODO(E-Planung): pruefen + #TRO07.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO07.stInSeparator1.Settings.xPluggedJam := TRUE; + #TRO07.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO07.stInSeparator1.Settings.xPluggedScanner := FALSE; + #TRO07.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung) + #TRO07.stInSeparator1.Settings.tSenFree := T#1500ms; // TODO(E-Planung): pruefen + #TRO07.stInSeparator1.Settings.tSenWait := T#4000ms; // TODO(E-Planung): pruefen + + #TRO07.stInPriorityManager.xReleaseOk := TRUE; + + #TRO07(nInMainTroNo := "cMainTro____", // TODO(E-Planung) + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung) + xInAllRdyToStart := TRUE, + xInRelease := "DB_TRO_TEST".TRO07, + stInOutMachineState := #stInOutControlUnitCabinet, + stInOutCognexInterface := #stCognexInterfaceDummy, + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO09 + stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO06 + stInOutJamExit2 := "DB_JamArea____".stJam____.stData, + xOutStopper1 => "MB____", // TODO(E-Planung) + stInOutHMI := "DB_Interface_HMI".stTRO.TRO07, + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung) +END_REGION + +REGION TRO06 (1Sep_SSCC) Sep 0064 + // Anlagenkoordinate x/y: 10490 / -525 mm + // Vorgaenger: TRO07 + // Nachfolger: TRO08 + // Einstufung: bestaetigt + + // Separator 1 = Bauteil 0064 aus dem Layout + #TRO06.stInSeparator1.Settings.nSeparatorNo := "cSep_____"; // TODO(E-Planung) + #TRO06.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO06.stInSeparator1.Settings.tTrailingTime := t#600ms; // TODO(E-Planung): pruefen + #TRO06.stInSeparator1.Settings.tHandlingTime := t#200ms; // TODO(E-Planung): pruefen + #TRO06.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO06.stInSeparator1.Settings.xPluggedJam := TRUE; + #TRO06.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO06.stInSeparator1.Settings.xPluggedScanner := TRUE; + #TRO06.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung) + #TRO06.stInSeparator1.Settings.tSenFree := T#1500ms; // TODO(E-Planung): pruefen + #TRO06.stInSeparator1.Settings.tSenWait := T#4000ms; // TODO(E-Planung): pruefen + + #TRO06.stInBarcodeReader.Settings.xActivateCheckASCI := TRUE; + #TRO06.stInBarcodeReader.Settings.tTimeout := T#3000ms; + // TODO(E-Planung): Cognex-Interface verdrahten (#arCognexInterface["cScanner____"]) + + #TRO06.stInPriorityManager.xReleaseOk := TRUE; + + #TRO06(nInMainTroNo := "cMainTro____", // TODO(E-Planung) + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung) + xInAllRdyToStart := TRUE, + xInRelease := "DB_TRO_TEST".TRO06, + stInOutMachineState := #stInOutControlUnitCabinet, + stInOutCognexInterface := #stCognexInterfaceDummy, + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO07 + stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO08 + stInOutJamExit2 := "DB_JamArea____".stJam____.stData, + xOutStopper1 => "MB____", // TODO(E-Planung) + stInOutHMI := "DB_Interface_HMI".stTRO.TRO06, + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung) +END_REGION + +REGION TRO08 (1Sep) Sep 0066 + // Anlagenkoordinate x/y: 10310 / -5013 mm + // Vorgaenger: TRO06 + // Nachfolger: TRO12 + // Einstufung: mittel + + // Separator 1 = Bauteil 0066 aus dem Layout + #TRO08.stInSeparator1.Settings.nSeparatorNo := "cSep_____"; // TODO(E-Planung) + #TRO08.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO08.stInSeparator1.Settings.tTrailingTime := t#600ms; // TODO(E-Planung): pruefen + #TRO08.stInSeparator1.Settings.tHandlingTime := t#200ms; // TODO(E-Planung): pruefen + #TRO08.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO08.stInSeparator1.Settings.xPluggedJam := TRUE; + #TRO08.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO08.stInSeparator1.Settings.xPluggedScanner := FALSE; + #TRO08.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung) + #TRO08.stInSeparator1.Settings.tSenFree := T#1500ms; // TODO(E-Planung): pruefen + #TRO08.stInSeparator1.Settings.tSenWait := T#4000ms; // TODO(E-Planung): pruefen + + #TRO08.stInPriorityManager.xReleaseOk := TRUE; + + #TRO08(nInMainTroNo := "cMainTro____", // TODO(E-Planung) + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung) + xInAllRdyToStart := TRUE, + xInRelease := "DB_TRO_TEST".TRO08, + stInOutMachineState := #stInOutControlUnitCabinet, + stInOutCognexInterface := #stCognexInterfaceDummy, + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO06 + stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO12 + stInOutJamExit2 := "DB_JamArea____".stJam____.stData, + xOutStopper1 => "MB____", // TODO(E-Planung) + stInOutHMI := "DB_Interface_HMI".stTRO.TRO08, + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung) +END_REGION + +REGION TRO12 (PinStore_Auto) Sep 0037, 0038, 0039, 0040, 0041, 0042, 0043, 0044, 0045, 0046, 0047, 0048, 0049, 0050, 0051, 0052, 0053, 0054, 0055, 0056, 0068 + // Anlagenkoordinate x/y: 1817 / 3943 mm + // Vorgaenger: TRO08, TRO10 + // Nachfolger: TRO05 + // Einstufung: hoch + + // Separator 1 = Bauteil 0037 aus dem Layout + #TRO12.stInSeparator1.Settings.nSeparatorNo := "cSep_____"; // TODO(E-Planung) + #TRO12.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO12.stInSeparator1.Settings.tTrailingTime := t#600ms; // TODO(E-Planung): pruefen + #TRO12.stInSeparator1.Settings.tHandlingTime := t#200ms; // TODO(E-Planung): pruefen + #TRO12.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO12.stInSeparator1.Settings.xPluggedJam := TRUE; + #TRO12.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO12.stInSeparator1.Settings.xPluggedScanner := TRUE; + #TRO12.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung) + #TRO12.stInSeparator1.Settings.tSenFree := T#1500ms; // TODO(E-Planung): pruefen + #TRO12.stInSeparator1.Settings.tSenWait := T#4000ms; // TODO(E-Planung): pruefen + + #TRO12.stInBarcodeReader.Settings.xActivateCheckASCI := TRUE; + #TRO12.stInBarcodeReader.Settings.tTimeout := T#3000ms; + // TODO(E-Planung): Cognex-Interface verdrahten (#arCognexInterface["cScanner____"]) + + // TODO(E-Planung): Linienspeicher mit 19 Linien - Parametrierung je Linie + + #TRO12.stInPriorityManager.xReleaseOk := TRUE; + + #TRO12(nInMainTroNo := "cMainTro____", // TODO(E-Planung) + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung) + xInAllRdyToStart := TRUE, + xInRelease := "DB_TRO_TEST".TRO12, + stInOutMachineState := #stInOutControlUnitCabinet, + stInOutCognexInterface := #stCognexInterfaceDummy, + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO08 + stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, + arInOutJamEntr2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO10 + stInOutJamEntr2 := "DB_JamArea____".stJam____.stData, + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO05 + stInOutJamExit2 := "DB_JamArea____".stJam____.stData, + xOutStopper1 => "MB____", // TODO(E-Planung) + stInOutHMI := "DB_Interface_HMI".stTRO.TRO12, + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung) +END_REGION + +REGION TRO05 (2Sep2Swi) Sep 0005, 0057 + // Anlagenkoordinate x/y: 1012 / -4650 mm + // Vorgaenger: TRO01, TRO12 + // Nachfolger: TRO01, TRO04, TRO10 + // Einstufung: bestaetigt + + // Separator 1 = Bauteil 0005 aus dem Layout + #TRO05.stInSeparator1.Settings.nSeparatorNo := "cSep_____"; // TODO(E-Planung) + #TRO05.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO05.stInSeparator1.Settings.tTrailingTime := t#600ms; // TODO(E-Planung): pruefen + #TRO05.stInSeparator1.Settings.tHandlingTime := t#200ms; // TODO(E-Planung): pruefen + #TRO05.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO05.stInSeparator1.Settings.xPluggedJam := TRUE; + #TRO05.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO05.stInSeparator1.Settings.xPluggedScanner := TRUE; + #TRO05.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung) + #TRO05.stInSeparator1.Settings.tSenFree := T#1500ms; // TODO(E-Planung): pruefen + #TRO05.stInSeparator1.Settings.tSenWait := T#4000ms; // TODO(E-Planung): pruefen + + // Separator 2 = Bauteil 0057 aus dem Layout + #TRO05.stInSeparator2.Settings.nSeparatorNo := "cSep_____"; // TODO(E-Planung) + #TRO05.stInSeparator2.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO05.stInSeparator2.Settings.tTrailingTime := t#600ms; // TODO(E-Planung): pruefen + #TRO05.stInSeparator2.Settings.tHandlingTime := t#200ms; // TODO(E-Planung): pruefen + #TRO05.stInSeparator2.Settings.tJam := "TimeForSepJam"; + #TRO05.stInSeparator2.Settings.xPluggedJam := TRUE; + #TRO05.stInSeparator2.Settings.xPluggedPart := FALSE; + #TRO05.stInSeparator2.Settings.xPluggedScanner := TRUE; + #TRO05.stInSeparator2.stSenInSep := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung) + #TRO05.stInSeparator2.Settings.tSenFree := T#1500ms; // TODO(E-Planung): pruefen + #TRO05.stInSeparator2.Settings.tSenWait := T#4000ms; // TODO(E-Planung): pruefen + + #TRO05.stInSwitch1.Settings.nSwitchNo := "cSwi_____"; // TODO(E-Planung) + #TRO05.stInSwitch1.Settings.xPluggedExSen3 := FALSE; + #TRO05.stInSwitch1.Settings.xPluggedExSen4 := FALSE; + #TRO05.stInSwitch1.Settings.nTo1Destinations := _; // TODO(E-Planung): dieser TRO hat 3 Abgaenge auf 2 Weichen - Aufteilung festlegen + + #TRO05.stInSwitch2.Settings.nSwitchNo := "cSwi_____"; // TODO(E-Planung) + #TRO05.stInSwitch2.Settings.xPluggedExSen3 := FALSE; + #TRO05.stInSwitch2.Settings.xPluggedExSen4 := FALSE; + #TRO05.stInSwitch2.Settings.nTo1Destinations := _; // TODO(E-Planung): dieser TRO hat 3 Abgaenge auf 2 Weichen - Aufteilung festlegen + + // Zielliste je Abgang (aus dem TRO-Graphen berechnet) - + // Grundlage fuer die Zuordnung Ziel -> Richtung in FC_Direction: + // ueber TRO01: TRO01 + // ueber TRO04: TRO02, TRO03, TRO04, TRO06, TRO07, TRO08, TRO09, TRO11, TRO12 + // ueber TRO10: TRO10, TRO12 + + #TRO05.stInBarcodeReader1.Settings.xActivateCheckASCI := TRUE; + #TRO05.stInBarcodeReader1.Settings.tTimeout := T#3000ms; + // TODO(E-Planung): Cognex-Interface verdrahten (#arCognexInterface["cScanner____"]) + + #TRO05.stInBarcodeReader2.Settings.xActivateCheckASCI := TRUE; + #TRO05.stInBarcodeReader2.Settings.tTimeout := T#3000ms; + // TODO(E-Planung): Cognex-Interface verdrahten (#arCognexInterface["cScanner____"]) + + #TRO05.stInPriorityManager.xReleaseOk := TRUE; + + #TRO05(nInMainTroNo := "cMainTro____", // TODO(E-Planung) + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung) + xInAllRdyToStart := TRUE, + xInRelease := "DB_TRO_TEST".TRO05, + stInOutMachineState := #stInOutControlUnitCabinet, + stInOutCognexInterface := #stCognexInterfaceDummy, + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO01 + stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, + arInOutJamEntr2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO12 + stInOutJamEntr2 := "DB_JamArea____".stJam____.stData, + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO01 + stInOutJamExit2 := "DB_JamArea____".stJam____.stData, + arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO04 + stInOutJamExit3 := "DB_JamArea____".stJam____.stData, + arInOutJamExit4 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO10 + stInOutJamExit4 := "DB_JamArea____".stJam____.stData, + xOutStopper1 => "MB____", // TODO(E-Planung) + xOutStopper2 => "MB____", // TODO(E-Planung) + xOutSw1ExTo3 => "MB____", // TODO(E-Planung) + xOutSw2ExTo3 => "MB____", // TODO(E-Planung) + stInOutHMI := "DB_Interface_HMI".stTRO.TRO05, + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung) + + REGION Direction + "FC_Direction"(nInSwitchNo := "cSwi_____", // TODO(E-Planung) + nOutDirection => #TRO05.nInDirection1, + InOutCarrier := "DB_JamArea____".stJam____.arCarrier[1]); + + "FC_Direction"(nInSwitchNo := "cSwi_____", // TODO(E-Planung) + nOutDirection => #TRO05.nInDirection2, + InOutCarrier := "DB_JamArea____".stJam____.arCarrier[1]); + END_REGION +END_REGION + +REGION TRO01 (1Sep) Sep 0061 + // Anlagenkoordinate x/y: 5355 / -5878 mm + // Vorgaenger: TRO05 + // Nachfolger: TRO05 + // Einstufung: mittel + + // Separator 1 = Bauteil 0061 aus dem Layout + #TRO01.stInSeparator1.Settings.nSeparatorNo := "cSep_____"; // TODO(E-Planung) + #TRO01.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO01.stInSeparator1.Settings.tTrailingTime := t#600ms; // TODO(E-Planung): pruefen + #TRO01.stInSeparator1.Settings.tHandlingTime := t#200ms; // TODO(E-Planung): pruefen + #TRO01.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO01.stInSeparator1.Settings.xPluggedJam := TRUE; + #TRO01.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO01.stInSeparator1.Settings.xPluggedScanner := FALSE; + #TRO01.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung) + #TRO01.stInSeparator1.Settings.tSenFree := T#1500ms; // TODO(E-Planung): pruefen + #TRO01.stInSeparator1.Settings.tSenWait := T#4000ms; // TODO(E-Planung): pruefen + + #TRO01.stInPriorityManager.xReleaseOk := TRUE; + + #TRO01(nInMainTroNo := "cMainTro____", // TODO(E-Planung) + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung) + xInAllRdyToStart := TRUE, + xInRelease := "DB_TRO_TEST".TRO01, + stInOutMachineState := #stInOutControlUnitCabinet, + stInOutCognexInterface := #stCognexInterfaceDummy, + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO05 + stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO05 + stInOutJamExit2 := "DB_JamArea____".stJam____.stData, + xOutStopper1 => "MB____", // TODO(E-Planung) + stInOutHMI := "DB_Interface_HMI".stTRO.TRO01, + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung) +END_REGION + +REGION TRO04 (1Sep_SSCC) Sep 0012 + // Anlagenkoordinate x/y: -220 / -3472 mm + // Vorgaenger: TRO05 + // Nachfolger: TRO03 + // Einstufung: bestaetigt + + // Separator 1 = Bauteil 0012 aus dem Layout + #TRO04.stInSeparator1.Settings.nSeparatorNo := "cSep_____"; // TODO(E-Planung) + #TRO04.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO04.stInSeparator1.Settings.tTrailingTime := t#600ms; // TODO(E-Planung): pruefen + #TRO04.stInSeparator1.Settings.tHandlingTime := t#200ms; // TODO(E-Planung): pruefen + #TRO04.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO04.stInSeparator1.Settings.xPluggedJam := TRUE; + #TRO04.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO04.stInSeparator1.Settings.xPluggedScanner := TRUE; + #TRO04.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung) + #TRO04.stInSeparator1.Settings.tSenFree := T#1500ms; // TODO(E-Planung): pruefen + #TRO04.stInSeparator1.Settings.tSenWait := T#4000ms; // TODO(E-Planung): pruefen + + #TRO04.stInBarcodeReader.Settings.xActivateCheckASCI := TRUE; + #TRO04.stInBarcodeReader.Settings.tTimeout := T#3000ms; + // TODO(E-Planung): Cognex-Interface verdrahten (#arCognexInterface["cScanner____"]) + + #TRO04.stInPriorityManager.xReleaseOk := TRUE; + + #TRO04(nInMainTroNo := "cMainTro____", // TODO(E-Planung) + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung) + xInAllRdyToStart := TRUE, + xInRelease := "DB_TRO_TEST".TRO04, + stInOutMachineState := #stInOutControlUnitCabinet, + stInOutCognexInterface := #stCognexInterfaceDummy, + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO05 + stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO03 + stInOutJamExit2 := "DB_JamArea____".stJam____.stData, + xOutStopper1 => "MB____", // TODO(E-Planung) + stInOutHMI := "DB_Interface_HMI".stTRO.TRO04, + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung) +END_REGION + +REGION TRO10 (Vario) Sep 0067 + // Anlagenkoordinate x/y: 8665 / -4743 mm + // Vorgaenger: TRO05 + // Nachfolger: TRO12 + // Einstufung: hoch + + // Separator 1 = Bauteil 0067 aus dem Layout + #TRO10.stInSeparator1.Settings.nSeparatorNo := "cSep_____"; // TODO(E-Planung) + #TRO10.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO10.stInSeparator1.Settings.tTrailingTime := t#600ms; // TODO(E-Planung): pruefen + #TRO10.stInSeparator1.Settings.tHandlingTime := t#200ms; // TODO(E-Planung): pruefen + #TRO10.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO10.stInSeparator1.Settings.xPluggedJam := TRUE; + #TRO10.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO10.stInSeparator1.Settings.xPluggedScanner := FALSE; + #TRO10.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung) + #TRO10.stInSeparator1.Settings.tSenFree := T#1500ms; // TODO(E-Planung): pruefen + #TRO10.stInSeparator1.Settings.tSenWait := T#4000ms; // TODO(E-Planung): pruefen + + #TRO10.stInVario.Settings.xContinousEmptying := FALSE; + #TRO10.stInVario.Settings.tWaitForJog := T#300ms; // TODO(E-Planung): pruefen + #TRO10.stInVario.Settings.tConvEmpty := T#45000ms; // TODO(E-Planung): pruefen + #TRO10.stInVario.Settings.nCountCarrier := 1; // TODO(E-Planung): pruefen + #TRO10.stInVario.Settings.tWaitForStop := t#3s; + #TRO10.stInVario.Settings.tCarrierInPosDelay := t#1200ms; + #TRO10.stInVario.Settings.tCarrierInPosEdgeDelay := t#100ms; + #TRO10.stInVario.Settings.xJamSenDelayActive := TRUE; + #TRO10.stInVario.Settings.tJamSenDelay := T#2s; + #TRO10.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung) + #TRO10.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung) + #TRO10.stInVario.stSenLastPos := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung) + #TRO10.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung) + + #TRO10.stInPriorityManager.xReleaseOk := TRUE; + + #TRO10(nInMainTroNo := "cMainTro____", // TODO(E-Planung) + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung) + xInAllRdyToStart := TRUE, + xInRelease := "DB_TRO_TEST".TRO10, + xInMotorProtection := "FC____", // TODO(E-Planung) + xInAutomatic := #t_automatik, + stInOutMachineState := #stInOutControlUnitCabinet, + stInOutCognexInterface := #stCognexInterfaceDummy, + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO05 + stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO12 + stInOutJamExit2 := "DB_JamArea____".stJam____.stData, + xOutStopper1 => "MB____", // TODO(E-Planung) + xOutVarioMotor => "MA____", // TODO(E-Planung) + stInOutHMI := "DB_Interface_HMI".stTRO.TRO10, + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung) +END_REGION + +REGION TRO03 (1Sep1Swi) Sep 0011 + // Anlagenkoordinate x/y: -220 / -481 mm + // Vorgaenger: TRO04 + // Nachfolger: TRO02, TRO11 + // Einstufung: bestaetigt + + // Separator 1 = Bauteil 0011 aus dem Layout + #TRO03.stInSeparator1.Settings.nSeparatorNo := "cSep_____"; // TODO(E-Planung) + #TRO03.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO03.stInSeparator1.Settings.tTrailingTime := t#600ms; // TODO(E-Planung): pruefen + #TRO03.stInSeparator1.Settings.tHandlingTime := t#200ms; // TODO(E-Planung): pruefen + #TRO03.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO03.stInSeparator1.Settings.xPluggedJam := TRUE; + #TRO03.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO03.stInSeparator1.Settings.xPluggedScanner := FALSE; + #TRO03.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung) + #TRO03.stInSeparator1.Settings.tSenFree := T#1500ms; // TODO(E-Planung): pruefen + #TRO03.stInSeparator1.Settings.tSenWait := T#4000ms; // TODO(E-Planung): pruefen + + #TRO03.stInSwitch1.Settings.nSwitchNo := "cSwi_____"; // TODO(E-Planung) + #TRO03.stInSwitch1.Settings.xPluggedExSen3 := FALSE; + #TRO03.stInSwitch1.Settings.xPluggedExSen4 := FALSE; + #TRO03.stInSwitch1.Settings.nTo1Destinations := 2; // Abgaenge laut Topologie + + // Zielliste je Abgang (aus dem TRO-Graphen berechnet) - + // Grundlage fuer die Zuordnung Ziel -> Richtung in FC_Direction: + // ueber TRO02: TRO01, TRO02, TRO04, TRO05, TRO06, TRO07, TRO08, TRO09, TRO10, TRO12 + // ueber TRO11: TRO01, TRO02, TRO04, TRO05, TRO06, TRO07, TRO08, TRO09, TRO10, TRO11, TRO12 + + #TRO03.stInPriorityManager.xReleaseOk := TRUE; + + #TRO03(nInMainTroNo := "cMainTro____", // TODO(E-Planung) + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung) + xInAllRdyToStart := TRUE, + xInRelease := "DB_TRO_TEST".TRO03, + stInOutMachineState := #stInOutControlUnitCabinet, + stInOutCognexInterface := #stCognexInterfaceDummy, + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO04 + stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO02 + stInOutJamExit2 := "DB_JamArea____".stJam____.stData, + arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO11 + stInOutJamExit3 := "DB_JamArea____".stJam____.stData, + xOutStopper1 => "MB____", // TODO(E-Planung) + xOutSw1ExTo3 => "MB____", // TODO(E-Planung) + stInOutHMI := "DB_Interface_HMI".stTRO.TRO03, + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung) + + REGION Direction + "FC_Direction"(nInSwitchNo := "cSwi_____", // TODO(E-Planung) + nOutDirection => #TRO03.nInDirection, + InOutCarrier := "DB_JamArea____".stJam____.arCarrier[1]); + END_REGION +END_REGION + +REGION TRO02 (1Sep_SSCC) Sep 0003 + // Anlagenkoordinate x/y: -220 / 13960 mm + // Vorgaenger: TRO03, TRO11 + // Nachfolger: TRO09 + // Einstufung: bestaetigt + + // Separator 1 = Bauteil 0003 aus dem Layout + #TRO02.stInSeparator1.Settings.nSeparatorNo := "cSep_____"; // TODO(E-Planung) + #TRO02.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO02.stInSeparator1.Settings.tTrailingTime := t#600ms; // TODO(E-Planung): pruefen + #TRO02.stInSeparator1.Settings.tHandlingTime := t#200ms; // TODO(E-Planung): pruefen + #TRO02.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO02.stInSeparator1.Settings.xPluggedJam := TRUE; + #TRO02.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO02.stInSeparator1.Settings.xPluggedScanner := TRUE; + #TRO02.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung) + #TRO02.stInSeparator1.Settings.tSenFree := T#1500ms; // TODO(E-Planung): pruefen + #TRO02.stInSeparator1.Settings.tSenWait := T#4000ms; // TODO(E-Planung): pruefen + + #TRO02.stInBarcodeReader.Settings.xActivateCheckASCI := TRUE; + #TRO02.stInBarcodeReader.Settings.tTimeout := T#3000ms; + // TODO(E-Planung): Cognex-Interface verdrahten (#arCognexInterface["cScanner____"]) + + #TRO02.stInPriorityManager.xReleaseOk := TRUE; + + #TRO02(nInMainTroNo := "cMainTro____", // TODO(E-Planung) + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung) + xInAllRdyToStart := TRUE, + xInRelease := "DB_TRO_TEST".TRO02, + stInOutMachineState := #stInOutControlUnitCabinet, + stInOutCognexInterface := #stCognexInterfaceDummy, + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO03 + stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, + arInOutJamEntr2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO11 + stInOutJamEntr2 := "DB_JamArea____".stJam____.stData, + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO09 + stInOutJamExit2 := "DB_JamArea____".stJam____.stData, + xOutStopper1 => "MB____", // TODO(E-Planung) + stInOutHMI := "DB_Interface_HMI".stTRO.TRO02, + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung) +END_REGION + +REGION TRO11 (Vario) Sep 0058, 0059 + // Anlagenkoordinate x/y: -1146 / 7128 mm + // Vorgaenger: TRO03 + // Nachfolger: TRO02 + // Einstufung: hoch + + // Separator 1 = Bauteil 0058 aus dem Layout + #TRO11.stInSeparator1.Settings.nSeparatorNo := "cSep_____"; // TODO(E-Planung) + #TRO11.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO11.stInSeparator1.Settings.tTrailingTime := t#600ms; // TODO(E-Planung): pruefen + #TRO11.stInSeparator1.Settings.tHandlingTime := t#200ms; // TODO(E-Planung): pruefen + #TRO11.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO11.stInSeparator1.Settings.xPluggedJam := TRUE; + #TRO11.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO11.stInSeparator1.Settings.xPluggedScanner := FALSE; + #TRO11.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung) + #TRO11.stInSeparator1.Settings.tSenFree := T#1500ms; // TODO(E-Planung): pruefen + #TRO11.stInSeparator1.Settings.tSenWait := T#4000ms; // TODO(E-Planung): pruefen + + #TRO11.stInVario.Settings.xContinousEmptying := FALSE; + #TRO11.stInVario.Settings.tWaitForJog := T#300ms; // TODO(E-Planung): pruefen + #TRO11.stInVario.Settings.tConvEmpty := T#45000ms; // TODO(E-Planung): pruefen + #TRO11.stInVario.Settings.nCountCarrier := 1; // TODO(E-Planung): pruefen + #TRO11.stInVario.Settings.tWaitForStop := t#3s; + #TRO11.stInVario.Settings.tCarrierInPosDelay := t#1200ms; + #TRO11.stInVario.Settings.tCarrierInPosEdgeDelay := t#100ms; + #TRO11.stInVario.Settings.xJamSenDelayActive := TRUE; + #TRO11.stInVario.Settings.tJamSenDelay := T#2s; + #TRO11.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung) + #TRO11.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung) + #TRO11.stInVario.stSenLastPos := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung) + #TRO11.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung) + + #TRO11.stInPriorityManager.xReleaseOk := TRUE; + + #TRO11(nInMainTroNo := "cMainTro____", // TODO(E-Planung) + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung) + xInAllRdyToStart := TRUE, + xInRelease := "DB_TRO_TEST".TRO11, + xInMotorProtection := "FC____", // TODO(E-Planung) + xInAutomatic := #t_automatik, + stInOutMachineState := #stInOutControlUnitCabinet, + stInOutCognexInterface := #stCognexInterfaceDummy, + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO03 + stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO02 + stInOutJamExit2 := "DB_JamArea____".stJam____.stData, + xOutStopper1 => "MB____", // TODO(E-Planung) + xOutVarioMotor => "MA____", // TODO(E-Planung) + stInOutHMI := "DB_Interface_HMI".stTRO.TRO11, + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung) +END_REGION + +REGION TRO09 (Vario) Sep 0015, 0063 + // Anlagenkoordinate x/y: 9186 / 13892 mm + // Vorgaenger: TRO02 + // Nachfolger: TRO07 + // Einstufung: hoch + + // Separator 1 = Bauteil 0015 aus dem Layout + #TRO09.stInSeparator1.Settings.nSeparatorNo := "cSep_____"; // TODO(E-Planung) + #TRO09.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short"; + #TRO09.stInSeparator1.Settings.tTrailingTime := t#600ms; // TODO(E-Planung): pruefen + #TRO09.stInSeparator1.Settings.tHandlingTime := t#200ms; // TODO(E-Planung): pruefen + #TRO09.stInSeparator1.Settings.tJam := "TimeForSepJam"; + #TRO09.stInSeparator1.Settings.xPluggedJam := TRUE; + #TRO09.stInSeparator1.Settings.xPluggedPart := FALSE; + #TRO09.stInSeparator1.Settings.xPluggedScanner := FALSE; + #TRO09.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung) + #TRO09.stInSeparator1.Settings.tSenFree := T#1500ms; // TODO(E-Planung): pruefen + #TRO09.stInSeparator1.Settings.tSenWait := T#4000ms; // TODO(E-Planung): pruefen + + #TRO09.stInVario.Settings.xContinousEmptying := FALSE; + #TRO09.stInVario.Settings.tWaitForJog := T#300ms; // TODO(E-Planung): pruefen + #TRO09.stInVario.Settings.tConvEmpty := T#45000ms; // TODO(E-Planung): pruefen + #TRO09.stInVario.Settings.nCountCarrier := 1; // TODO(E-Planung): pruefen + #TRO09.stInVario.Settings.tWaitForStop := t#3s; + #TRO09.stInVario.Settings.tCarrierInPosDelay := t#1200ms; + #TRO09.stInVario.Settings.tCarrierInPosEdgeDelay := t#100ms; + #TRO09.stInVario.Settings.xJamSenDelayActive := TRUE; + #TRO09.stInVario.Settings.tJamSenDelay := T#2s; + #TRO09.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung) + #TRO09.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung) + #TRO09.stInVario.stSenLastPos := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung) + #TRO09.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung) + + #TRO09.stInPriorityManager.xReleaseOk := TRUE; + + #TRO09(nInMainTroNo := "cMainTro____", // TODO(E-Planung) + xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung) + xInAllRdyToStart := TRUE, + xInRelease := "DB_TRO_TEST".TRO09, + xInMotorProtection := "FC____", // TODO(E-Planung) + xInAutomatic := #t_automatik, + stInOutMachineState := #stInOutControlUnitCabinet, + stInOutCognexInterface := #stCognexInterfaceDummy, + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO02 + stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO07 + stInOutJamExit2 := "DB_JamArea____".stJam____.stData, + xOutStopper1 => "MB____", // TODO(E-Planung) + xOutVarioMotor => "MA____", // TODO(E-Planung) + stInOutHMI := "DB_Interface_HMI".stTRO.TRO09, + nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung) +END_REGION + +END_FUNCTION_BLOCK diff --git a/doc/updated_mubea/export_connect.ini b/doc/updated_mubea/export_connect.ini new file mode 100644 index 0000000..73ccbb4 --- /dev/null +++ b/doc/updated_mubea/export_connect.ini @@ -0,0 +1,115 @@ +; ============================================================ +; connect.ini - Materialfluss-Topologie (Item-/Flussebene) +; Automatisch erzeugt von lib/material_flow.py aus 'export.csv'. +; Zwischenstand fuer die TRO-Ableitung; von Hand editierbar. +; +; [.nodes] = | +; [.connections] cNNN = -> | | +; kind: normal | umlauf | weiche | einschleusung | ausschleusung | unbestimmt +; [.externals] eNNN = EXTERN -> | (Zulauf/Beladung) +; eNNN = -> EXTERN | (Ablauf/Entladung) +; [.manual] vor Ort bestaetigte Angaben aus cfg/tro_overrides.ini +; ============================================================ + +[export.nodes] +0001-L = Kreisel | Kreisel1 (Bahn L) +0001-R = Kreisel | Kreisel1 (Bahn R) +0002-L = Kreisel | Kreisel2 (Bahn L) +0002-R = Kreisel | Kreisel2 (Bahn R) +0010-L = Kreisel | Kreisel3 (Bahn L) +0010-R = Kreisel | Kreisel3 (Bahn R) +0013 = Strecke | VarioFoerderer :3 +0014 = Strecke | VarioFoerderer :2 +0016 = Strecke | VarioFoerderer :1 +0017 = Gefaellestrecke | Gefaellestrecke :20 +0018 = Gefaellestrecke | Gefaellestrecke :19 +0019 = Gefaellestrecke | Gefaellestrecke :18 +0020 = Gefaellestrecke | Gefaellestrecke :17 +0021 = Gefaellestrecke | Gefaellestrecke :16 +0022 = Gefaellestrecke | Gefaellestrecke :15 +0023 = Gefaellestrecke | Gefaellestrecke :14 +0024 = Gefaellestrecke | Gefaellestrecke :13 +0025 = Gefaellestrecke | Gefaellestrecke :12 +0026 = Gefaellestrecke | Gefaellestrecke :11 +0027 = Gefaellestrecke | Gefaellestrecke :10 +0028 = Gefaellestrecke | Gefaellestrecke :9 +0029 = Gefaellestrecke | Gefaellestrecke :8 +0030 = Gefaellestrecke | Gefaellestrecke :7 +0031 = Gefaellestrecke | Gefaellestrecke :6 +0032 = Gefaellestrecke | Gefaellestrecke :5 +0033 = Gefaellestrecke | Gefaellestrecke :4 +0034 = Gefaellestrecke | Gefaellestrecke :3 +0035 = Gefaellestrecke | Gefaellestrecke :2 +0036 = Gefaellestrecke | Gefaellestrecke :1 + +[export.connections] +c001 = 0001-L -> 0002-R | | weiche +c002 = 0001-R -> 0001-L | | umlauf +c003 = 0001-R -> 0002-R | | weiche +c004 = 0002-L -> 0016 | | ausschleusung +c005 = 0002-R -> 0002-L | | umlauf +c006 = 0002-R -> 0013 | | ausschleusung +c007 = 0002-R -> 0014 | | ausschleusung +c008 = 0010-L -> 0017 | | ausschleusung +c009 = 0010-L -> 0018 | | ausschleusung +c010 = 0010-L -> 0019 | | ausschleusung +c011 = 0010-L -> 0020 | | ausschleusung +c012 = 0010-L -> 0021 | | ausschleusung +c013 = 0010-L -> 0022 | | ausschleusung +c014 = 0010-L -> 0023 | | ausschleusung +c015 = 0010-L -> 0024 | | ausschleusung +c016 = 0010-L -> 0025 | | ausschleusung +c017 = 0010-L -> 0026 | | ausschleusung +c018 = 0010-L -> 0027 | | ausschleusung +c019 = 0010-L -> 0028 | | ausschleusung +c020 = 0010-L -> 0029 | | ausschleusung +c021 = 0010-L -> 0030 | | ausschleusung +c022 = 0010-L -> 0031 | | ausschleusung +c023 = 0010-L -> 0032 | | ausschleusung +c024 = 0010-L -> 0033 | | ausschleusung +c025 = 0010-L -> 0034 | | ausschleusung +c026 = 0010-L -> 0035 | | ausschleusung +c027 = 0010-L -> 0036 | | ausschleusung +c028 = 0010-R -> 0010-L | | umlauf +c029 = 0013 -> 0010-L | | einschleusung +c030 = 0014 -> 0010-L | | einschleusung +c031 = 0016 -> 0002-R | | einschleusung +c032 = 0017 -> 0002-R | | einschleusung +c033 = 0018 -> 0002-R | | einschleusung +c034 = 0019 -> 0002-R | | einschleusung +c035 = 0020 -> 0002-R | | einschleusung +c036 = 0021 -> 0002-R | | einschleusung +c037 = 0022 -> 0002-R | | einschleusung +c038 = 0023 -> 0002-R | | einschleusung +c039 = 0024 -> 0002-R | | einschleusung +c040 = 0025 -> 0002-R | | einschleusung +c041 = 0026 -> 0002-R | | einschleusung +c042 = 0027 -> 0002-R | | einschleusung +c043 = 0028 -> 0002-R | | einschleusung +c044 = 0029 -> 0002-R | | einschleusung +c045 = 0030 -> 0002-R | | einschleusung +c046 = 0031 -> 0002-R | | einschleusung +c047 = 0032 -> 0002-R | | einschleusung +c048 = 0033 -> 0002-R | | einschleusung +c049 = 0034 -> 0002-R | | einschleusung +c050 = 0035 -> 0002-R | | einschleusung +c051 = 0036 -> 0002-R | | einschleusung + +[export.externals] +; Noch keine BTMT Be-/Entladestation im Layout - Ein-/Ausgang offen. +; Kandidaten (offene Enden aus dem Materialfluss): +; Beladung? EXTERN -> 0001-R (Kreisel, keine Zufuhr) +; Beladung? EXTERN -> 0010-R (Kreisel, keine Zufuhr) + +[export.manual] +; Vor Ort bestaetigt, im CSV-Export nicht enthalten. +; Quelle: cfg\tro_overrides.ini +; Diese Zeilen werden aus der Override-Datei erzeugt - nicht hier +; editieren, sonst sind sie beim naechsten Lauf wieder weg. +SEP0003 = 1Sep_SSCC | Separator 0003 | Review 2026-08-12: Scanner-Stelle bestaetigt (Separator 0003 mit Scanner 0004) +SEP0011 = 1Sep1Swi | Separator 0011 | Weiche am Separator 0011 vor Ort bestaetigt (Review 2026-08-10) - hier wird die Fahrtrichtung umgestellt; im CSV-Export fehlt das Weichenelement +SEP0012 = 1Sep_SSCC | Separator 0012 | Separator 0012 mit Scanner 0007 - im Review als Scanner-Stelle bestaetigt (Review 2026-08-10) +SEP0064 = 1Sep_SSCC | Separator 0064 | Review 2026-08-12: Scanner-Stelle, keine Weiche - Einstufung gegenueber dem ersten Review (1Sep1Swi) korrigiert. Separator mit Scanner 0008. +Kreisel2_R_vor_Foerderer = NEU 1Sep1Swi | Separator 0005 + Scanner 0006 | Bahn 0002-R | Review 2026-08-10: liegt auf Kreisel2 Bahn R zwischen Linienspeicher und Foerderer. Vor Ort 1 Separator + 1 Scanner, keine mechanische Weiche - wird auf Wunsch als Schaltstelle (1Sep1Swi) gefuehrt, weil hier die Wegeentscheidung faellt. Export vom 2026-08-12: Position 400/-3978 (223 mm verschoben), Zuordnung jetzt Strecke 0014 statt Gefaellestrecke 0036 - der Separator wuerde also dem Vario-TRO zugeschlagen statt dem Linienspeicher. +Beruehrpunkt_K2_K1 = NEU 1Sep1Swi | Separator 0057 + Scanner 0062 | Bahn 0001-L | Review 2026-08-10: Uebergabestelle am Beruehrpunkt der beiden Kreisel (ILS Weiche 0067 bei 400/-5478, Kreisel A 0002 / Kreisel B 0001). Hier faellt die Entscheidung Kreisel1 weiter oder auf den unteren Foerderer. Zuordnung im Export zeigt auf Strecke 0014, daher bisher Teil des Vario-TRO. + diff --git a/doc/updated_mubea/export_material_flow.dot b/doc/updated_mubea/export_material_flow.dot new file mode 100644 index 0000000..9379aa3 --- /dev/null +++ b/doc/updated_mubea/export_material_flow.dot @@ -0,0 +1,120 @@ +// Automatisch erzeugt von lib/material_flow.py - nicht manuell aendern. +// Quelle: export.csv +// Lagerichtig: Knoten auf Anlagenkoordinate, 0.25 pt/mm. +// Rendern mit: neato -n -Tsvg .dot -o .svg +digraph Materialfluss { + graph [rankdir=LR, splines=spline, nodesep=0.25, ranksep=1.6, + fontname="Segoe UI", fontsize=11, labelloc="t", + label="Materialfluss - export.csv"]; + node [shape=box, style="rounded,filled", fontname="Segoe UI", fontsize=9]; + edge [fontname="Segoe UI", fontsize=8, color="#2f5597", penwidth=1.2, arrowsize=0.8]; + + subgraph cluster_kreisel_0 { + label="Kreisel Kreisel1 [0001] UZS (rechts nach links)"; + style="rounded,filled"; fillcolor="#eef2fa"; color="#2f5597"; + fontname="Segoe UI"; fontsize=10; fontcolor="#1f3864"; margin=12; + "0001-L" [label="Kreisel1 [0001-L]\nBahn L (links)\nh = 1.470 m\nScanner (1): 0062", fillcolor="#2f5597", fontcolor="#ffffff", color="#1f3864", pos="825.00,-1282.00"]; + "0001-R" [label="Kreisel1 [0001-R]\nBahn R (rechts)\nh = 1.470 m\nSeparator (1): 0061", fillcolor="#2f5597", fontcolor="#ffffff", color="#1f3864", pos="825.00,-1457.00"]; + { rank=same; "0001-L"; "0001-R"; } + } + + subgraph cluster_kreisel_1 { + label="Kreisel Kreisel2 [0002] UZS (rechts nach links)"; + style="rounded,filled"; fillcolor="#eef2fa"; color="#2f5597"; + fontname="Segoe UI"; fontsize=10; fontcolor="#1f3864"; margin=12; + "0002-L" [label="Kreisel2 [0002-L]\nBahn L (links)\nh = 1.470 m\nSeparator (3): 0003, 0011, 0012\nScanner (3): 0004, 0007, 0009", fillcolor="#2f5597", fontcolor="#ffffff", color="#1f3864", pos="0.00,1219.88"]; + "0002-R" [label="Kreisel2 [0002-R]\nBahn R (rechts)\nh = 1.470 m", fillcolor="#2f5597", fontcolor="#ffffff", color="#1f3864", pos="0.00,1044.88"]; + { rank=same; "0002-L"; "0002-R"; } + } + + subgraph cluster_kreisel_2 { + label="Kreisel Kreisel3 [0010] UZS (rechts nach links)"; + style="rounded,filled"; fillcolor="#eef2fa"; color="#2f5597"; + fontname="Segoe UI"; fontsize=10; fontcolor="#1f3864"; margin=12; + "0010-L" [label="Kreisel3 [0010-L]\nBahn L (links)\nh = 1.940 m", fillcolor="#2f5597", fontcolor="#ffffff", color="#1f3864", pos="2477.50,1219.88"]; + "0010-R" [label="Kreisel3 [0010-R]\nBahn R (rechts)\nh = 1.940 m\nSeparator (3): 0064, 0065, 0066", fillcolor="#2f5597", fontcolor="#ffffff", color="#1f3864", pos="2477.50,1044.88"]; + { rank=same; "0010-L"; "0010-R"; } + } + + "0013" [label="VarioFoerderer :3 [0013]\nStrecke\nh = 0.237 m\n0 -> 474 mm (+474) = aufwaerts\nSeparator (2): 0015, 0063", fillcolor="#e2f0d9", fontcolor="#375623", color="#548235", pos="1235.62,3427.07"]; + "0014" [label="VarioFoerderer :2 [0014]\nStrecke\nh = 0.237 m\n0 -> 474 mm (+474) = aufwaerts\nSeparator (3): 0005, 0057, 0067\nScanner (1): 0006", fillcolor="#e2f0d9", fontcolor="#375623", color="#548235", pos="1235.62,-1136.18"]; + "0016" [label="VarioFoerderer :1 [0016]\nStrecke\nh = 0.000 m\n0 -> 0 mm (+0) = aufwaerts\nSeparator (2): 0058, 0059\nScanner (1): 0060", fillcolor="#e2f0d9", fontcolor="#375623", color="#548235", pos="-157.82,1534.12"]; + "0017" [label="Gefaellestrecke :20 [0017]\nGefaellestrecke\nh = 1.941 m\n1941 -> 1466 mm (-475) = abwaerts\nSeparator (1): 0037", fillcolor="#fbe5d6", fontcolor="#833c00", color="#c55a11", pos="1241.66,3051.64"]; + "0018" [label="Gefaellestrecke :19 [0018]\nGefaellestrecke\nh = 1.941 m\n1941 -> 1466 mm (-475) = abwaerts\nSeparator (1): 0038", fillcolor="#fbe5d6", fontcolor="#833c00", color="#c55a11", pos="1241.66,2851.64"]; + "0019" [label="Gefaellestrecke :18 [0019]\nGefaellestrecke\nh = 1.941 m\n1941 -> 1466 mm (-475) = abwaerts\nSeparator (1): 0039", fillcolor="#fbe5d6", fontcolor="#833c00", color="#c55a11", pos="1241.66,2651.64"]; + "0020" [label="Gefaellestrecke :17 [0020]\nGefaellestrecke\nh = 1.941 m\n1941 -> 1466 mm (-475) = abwaerts\nSeparator (1): 0040", fillcolor="#fbe5d6", fontcolor="#833c00", color="#c55a11", pos="1241.66,2451.64"]; + "0021" [label="Gefaellestrecke :16 [0021]\nGefaellestrecke\nh = 1.941 m\n1941 -> 1466 mm (-475) = abwaerts\nSeparator (1): 0041", fillcolor="#fbe5d6", fontcolor="#833c00", color="#c55a11", pos="1241.66,2251.64"]; + "0022" [label="Gefaellestrecke :15 [0022]\nGefaellestrecke\nh = 1.941 m\n1941 -> 1466 mm (-475) = abwaerts\nSeparator (1): 0042", fillcolor="#fbe5d6", fontcolor="#833c00", color="#c55a11", pos="1241.66,2051.64"]; + "0023" [label="Gefaellestrecke :14 [0023]\nGefaellestrecke\nh = 1.941 m\n1941 -> 1466 mm (-475) = abwaerts\nSeparator (1): 0043", fillcolor="#fbe5d6", fontcolor="#833c00", color="#c55a11", pos="1241.66,1851.64"]; + "0024" [label="Gefaellestrecke :13 [0024]\nGefaellestrecke\nh = 1.941 m\n1941 -> 1466 mm (-475) = abwaerts\nSeparator (1): 0044", fillcolor="#fbe5d6", fontcolor="#833c00", color="#c55a11", pos="1241.66,1651.64"]; + "0025" [label="Gefaellestrecke :12 [0025]\nGefaellestrecke\nh = 1.941 m\n1941 -> 1466 mm (-475) = abwaerts\nSeparator (1): 0045", fillcolor="#fbe5d6", fontcolor="#833c00", color="#c55a11", pos="1241.66,1451.64"]; + "0026" [label="Gefaellestrecke :11 [0026]\nGefaellestrecke\nh = 1.941 m\n1941 -> 1466 mm (-475) = abwaerts\nSeparator (1): 0046", fillcolor="#fbe5d6", fontcolor="#833c00", color="#c55a11", pos="1241.66,1251.64"]; + "0027" [label="Gefaellestrecke :10 [0027]\nGefaellestrecke\nh = 1.941 m\n1941 -> 1466 mm (-475) = abwaerts\nSeparator (1): 0047", fillcolor="#fbe5d6", fontcolor="#833c00", color="#c55a11", pos="1241.66,1051.64"]; + "0028" [label="Gefaellestrecke :9 [0028]\nGefaellestrecke\nh = 1.941 m\n1941 -> 1466 mm (-475) = abwaerts\nSeparator (1): 0048", fillcolor="#fbe5d6", fontcolor="#833c00", color="#c55a11", pos="1241.66,851.64"]; + "0029" [label="Gefaellestrecke :8 [0029]\nGefaellestrecke\nh = 1.941 m\n1941 -> 1466 mm (-475) = abwaerts\nSeparator (1): 0049", fillcolor="#fbe5d6", fontcolor="#833c00", color="#c55a11", pos="1241.66,651.64"]; + "0030" [label="Gefaellestrecke :7 [0030]\nGefaellestrecke\nh = 1.941 m\n1941 -> 1466 mm (-475) = abwaerts\nSeparator (1): 0050", fillcolor="#fbe5d6", fontcolor="#833c00", color="#c55a11", pos="1241.66,451.64"]; + "0031" [label="Gefaellestrecke :6 [0031]\nGefaellestrecke\nh = 1.941 m\n1941 -> 1466 mm (-475) = abwaerts\nSeparator (1): 0051", fillcolor="#fbe5d6", fontcolor="#833c00", color="#c55a11", pos="1241.66,251.64"]; + "0032" [label="Gefaellestrecke :5 [0032]\nGefaellestrecke\nh = 1.941 m\n1941 -> 1466 mm (-475) = abwaerts\nSeparator (1): 0052", fillcolor="#fbe5d6", fontcolor="#833c00", color="#c55a11", pos="1241.66,51.64"]; + "0033" [label="Gefaellestrecke :4 [0033]\nGefaellestrecke\nh = 1.941 m\n1941 -> 1466 mm (-475) = abwaerts\nSeparator (1): 0053", fillcolor="#fbe5d6", fontcolor="#833c00", color="#c55a11", pos="1241.66,-148.36"]; + "0034" [label="Gefaellestrecke :3 [0034]\nGefaellestrecke\nh = 1.941 m\n1941 -> 1466 mm (-475) = abwaerts\nSeparator (1): 0054", fillcolor="#fbe5d6", fontcolor="#833c00", color="#c55a11", pos="1241.66,-348.36"]; + "0035" [label="Gefaellestrecke :2 [0035]\nGefaellestrecke\nh = 1.941 m\n1941 -> 1466 mm (-475) = abwaerts\nSeparator (1): 0055", fillcolor="#fbe5d6", fontcolor="#833c00", color="#c55a11", pos="1241.66,-548.36"]; + "0036" [label="Gefaellestrecke :1 [0036]\nGefaellestrecke\nh = 1.941 m\n1941 -> 1466 mm (-475) = abwaerts\nSeparator (2): 0056, 0068\nScanner (1): 0069", fillcolor="#fbe5d6", fontcolor="#833c00", color="#c55a11", pos="1241.66,-748.36"]; + + "0001-L" -> "0002-R" [color="#bf8f00", style=dashed, dir=both, tooltip="Richtung Weiche", xlabel="Weiche", fontcolor="#cc8800"]; + "0001-R" -> "0002-R" [color="#bf8f00", style=dashed, dir=both, tooltip="Richtung Weiche", xlabel="Weiche", fontcolor="#cc8800"]; + "0010-R" -> "0010-L" [color="#8ea9db", style=dashed, penwidth=1.2, constraint=false, arrowsize=0.9, fontcolor="#5b7fc7", tooltip="Kreisel-Umlauf UZS", xlabel="UZS"]; + "0002-R" -> "0002-L" [color="#8ea9db", style=dashed, penwidth=1.2, constraint=false, arrowsize=0.9, fontcolor="#5b7fc7", tooltip="Kreisel-Umlauf UZS", xlabel="UZS"]; + "0001-R" -> "0001-L" [color="#8ea9db", style=dashed, penwidth=1.2, constraint=false, arrowsize=0.9, fontcolor="#5b7fc7", tooltip="Kreisel-Umlauf UZS", xlabel="UZS"]; + "0010-L" -> "0036" []; + "0036" -> "0002-R" []; + "0010-L" -> "0035" []; + "0035" -> "0002-R" []; + "0010-L" -> "0034" []; + "0034" -> "0002-R" []; + "0010-L" -> "0033" []; + "0033" -> "0002-R" []; + "0010-L" -> "0032" []; + "0032" -> "0002-R" []; + "0010-L" -> "0031" []; + "0031" -> "0002-R" []; + "0010-L" -> "0030" []; + "0030" -> "0002-R" []; + "0010-L" -> "0029" []; + "0029" -> "0002-R" []; + "0010-L" -> "0028" []; + "0028" -> "0002-R" []; + "0010-L" -> "0027" []; + "0027" -> "0002-R" []; + "0010-L" -> "0026" []; + "0026" -> "0002-R" []; + "0010-L" -> "0025" []; + "0025" -> "0002-R" []; + "0010-L" -> "0024" []; + "0024" -> "0002-R" []; + "0010-L" -> "0023" []; + "0023" -> "0002-R" []; + "0010-L" -> "0022" []; + "0022" -> "0002-R" []; + "0010-L" -> "0021" []; + "0021" -> "0002-R" []; + "0010-L" -> "0020" []; + "0020" -> "0002-R" []; + "0010-L" -> "0019" []; + "0019" -> "0002-R" []; + "0010-L" -> "0018" []; + "0018" -> "0002-R" []; + "0010-L" -> "0017" []; + "0017" -> "0002-R" []; + "0002-L" -> "0016" []; + "0016" -> "0002-R" []; + "0002-R" -> "0014" []; + "0014" -> "0010-L" []; + "0002-R" -> "0013" []; + "0013" -> "0010-L" []; + + subgraph cluster_legende { + label="Legende"; style="rounded"; color="#a6a6a6"; + fontname="Segoe UI"; fontsize=10; fontcolor="#404040"; + legende [shape=plaintext, style="", fillcolor="none", pos="-157.82,-2207.00", label=<
durchgezogenMaterialfluss
gestrichelt blauKreisel-Umlauf, Richtung aus Drehrichtung (UZS = rechts nach links, GUZ = links nach rechts)
gestrichelt gelbRichtung nicht bestimmbar
>]; + } +} diff --git a/doc/updated_mubea/export_material_flow.md b/doc/updated_mubea/export_material_flow.md new file mode 100644 index 0000000..08b238a --- /dev/null +++ b/doc/updated_mubea/export_material_flow.md @@ -0,0 +1,148 @@ + +# Materialfluss - export.csv + +**Erzeugt:** 2026-08-14 12:54 von `lib/material_flow.py` +**Quelle:** `data\export.csv` + +> Materialfluss der mechanischen Objekte. Die daraus abgeleiteten Steuerungsobjekte (TROs) dokumentiert `lib/tro_flow.py --doc`. + +## 1. Kurzfassung + +| | | +|---|---| +| Flussknoten | 29 (Gefaellestrecke: 20, Kreisel: 6, Strecke: 3) | +| Flusskanten | 46 gerichtet, 3 Kreisel-Umlauf, 2 Richtung unbestimmt | +| Anbauteile | Scanner: 7, Separator: 35 | +| Plausibilitaetshinweise | 10 | + +Graph: [`export_material_flow.dot`](export_material_flow.dot) - [`export_material_flow.svg`](export_material_flow.svg) + +Ein **Kreisel** ist ein Umlauf und wird als zwei Knoten modelliert - eine Bahn je Fahrtrichtung (`-L` links, `-R` rechts), die zu einem Kreis verbunden sind. + +## 2. Anlagenobjekte + +| Knoten | Art | Bezeichnung | Planquadrat | Hoehe [m] | Separatoren | Scanner | +|---|---|---|---|---|---|---| +| `0001-L` | Kreisel | Kreisel :3 / Kreisel1 (Bahn L) | A/1 | 1.470 | - | 0062 | +| `0001-R` | Kreisel | Kreisel :3 / Kreisel1 (Bahn R) | A/1 | 1.470 | 0061 | - | +| `0002-L` | Kreisel | Kreisel :2 / Kreisel2 (Bahn L) | A/1 | 1.470 | 0003, 0011, 0012 | 0004, 0007, 0009 | +| `0002-R` | Kreisel | Kreisel :2 / Kreisel2 (Bahn R) | A/1 | 1.470 | - | - | +| `0010-L` | Kreisel | Kreisel :1 / Kreisel3 (Bahn L) | F/1 | 1.940 | - | - | +| `0010-R` | Kreisel | Kreisel :1 / Kreisel3 (Bahn R) | F/1 | 1.940 | 0064, 0065, 0066 | - | +| `0013` | Strecke | VarioFoerderer :3 | A/10 | 0.237 | 0015, 0063 | - | +| `0014` | Strecke | VarioFoerderer :2 | A/1 | 0.237 | 0005, 0057, 0067 | 0006 | +| `0016` | Strecke | VarioFoerderer :1 | A/4 | 0.000 | 0058, 0059 | 0060 | +| `0017` | Gefaellestrecke | Gefaellestrecke :20 | F/10 | 1.941 | 0037 | - | +| `0018` | Gefaellestrecke | Gefaellestrecke :19 | F/9 | 1.941 | 0038 | - | +| `0019` | Gefaellestrecke | Gefaellestrecke :18 | F/9 | 1.941 | 0039 | - | +| `0020` | Gefaellestrecke | Gefaellestrecke :17 | F/8 | 1.941 | 0040 | - | +| `0021` | Gefaellestrecke | Gefaellestrecke :16 | F/8 | 1.941 | 0041 | - | +| `0022` | Gefaellestrecke | Gefaellestrecke :15 | F/8 | 1.941 | 0042 | - | +| `0023` | Gefaellestrecke | Gefaellestrecke :14 | F/7 | 1.941 | 0043 | - | +| `0024` | Gefaellestrecke | Gefaellestrecke :13 | F/7 | 1.941 | 0044 | - | +| `0025` | Gefaellestrecke | Gefaellestrecke :12 | F/6 | 1.941 | 0045 | - | +| `0026` | Gefaellestrecke | Gefaellestrecke :11 | F/6 | 1.941 | 0046 | - | +| `0027` | Gefaellestrecke | Gefaellestrecke :10 | F/6 | 1.941 | 0047 | - | +| `0028` | Gefaellestrecke | Gefaellestrecke :9 | F/5 | 1.941 | 0048 | - | +| `0029` | Gefaellestrecke | Gefaellestrecke :8 | F/5 | 1.941 | 0049 | - | +| `0030` | Gefaellestrecke | Gefaellestrecke :7 | F/4 | 1.941 | 0050 | - | +| `0031` | Gefaellestrecke | Gefaellestrecke :6 | F/4 | 1.941 | 0051 | - | +| `0032` | Gefaellestrecke | Gefaellestrecke :5 | F/4 | 1.941 | 0052 | - | +| `0033` | Gefaellestrecke | Gefaellestrecke :4 | F/3 | 1.941 | 0053 | - | +| `0034` | Gefaellestrecke | Gefaellestrecke :3 | F/3 | 1.941 | 0054 | - | +| `0035` | Gefaellestrecke | Gefaellestrecke :2 | F/2 | 1.941 | 0055 | - | +| `0036` | Gefaellestrecke | Gefaellestrecke :1 | F/2 | 1.941 | 0056, 0068 | 0069 | + +Bezeichnung: `Bezeichnung` aus dem CSV; wo das Merkmal `Name` abweicht, steht es dahinter (die beiden Nummerierungen laufen nicht zwangslaeufig gleich). + +Hoehe: bei Kreiseln aus dem Merkmal `Höhe in m`, bei Gefaellestrecke und Strecke aus `Montagehoehe_m` - unveraendert aus dem CSV uebernommen. Fuer die Richtungsableitung werden nur die Hoehen der **Nachbarn** verglichen, nie die des Transportobjekts selbst. + +**Anbauteile ohne Zuordnung** + +- Scanner 0008 'Scanner :5' (Zuordnung: `nicht zugeordnet`) + +## 3. Verbindungen + +| von | nach | Art | +|---|---|---| +| `0001-L` | `0002-R` | Richtung unbestimmt (Weiche) | +| `0001-R` | `0002-R` | Richtung unbestimmt (Weiche) | +| `0010-R` | `0010-L` | Kreisel-Umlauf (UZS) | +| `0002-R` | `0002-L` | Kreisel-Umlauf (UZS) | +| `0001-R` | `0001-L` | Kreisel-Umlauf (UZS) | +| `0010-L` | `0036` | Materialfluss (Ausschleusung) | +| `0036` | `0002-R` | Materialfluss (Einschleusung) | +| `0010-L` | `0035` | Materialfluss (Ausschleusung) | +| `0035` | `0002-R` | Materialfluss (Einschleusung) | +| `0010-L` | `0034` | Materialfluss (Ausschleusung) | +| `0034` | `0002-R` | Materialfluss (Einschleusung) | +| `0010-L` | `0033` | Materialfluss (Ausschleusung) | +| `0033` | `0002-R` | Materialfluss (Einschleusung) | +| `0010-L` | `0032` | Materialfluss (Ausschleusung) | +| `0032` | `0002-R` | Materialfluss (Einschleusung) | +| `0010-L` | `0031` | Materialfluss (Ausschleusung) | +| `0031` | `0002-R` | Materialfluss (Einschleusung) | +| `0010-L` | `0030` | Materialfluss (Ausschleusung) | +| `0030` | `0002-R` | Materialfluss (Einschleusung) | +| `0010-L` | `0029` | Materialfluss (Ausschleusung) | +| `0029` | `0002-R` | Materialfluss (Einschleusung) | +| `0010-L` | `0028` | Materialfluss (Ausschleusung) | +| `0028` | `0002-R` | Materialfluss (Einschleusung) | +| `0010-L` | `0027` | Materialfluss (Ausschleusung) | +| `0027` | `0002-R` | Materialfluss (Einschleusung) | +| `0010-L` | `0026` | Materialfluss (Ausschleusung) | +| `0026` | `0002-R` | Materialfluss (Einschleusung) | +| `0010-L` | `0025` | Materialfluss (Ausschleusung) | +| `0025` | `0002-R` | Materialfluss (Einschleusung) | +| `0010-L` | `0024` | Materialfluss (Ausschleusung) | +| `0024` | `0002-R` | Materialfluss (Einschleusung) | +| `0010-L` | `0023` | Materialfluss (Ausschleusung) | +| `0023` | `0002-R` | Materialfluss (Einschleusung) | +| `0010-L` | `0022` | Materialfluss (Ausschleusung) | +| `0022` | `0002-R` | Materialfluss (Einschleusung) | +| `0010-L` | `0021` | Materialfluss (Ausschleusung) | +| `0021` | `0002-R` | Materialfluss (Einschleusung) | +| `0010-L` | `0020` | Materialfluss (Ausschleusung) | +| `0020` | `0002-R` | Materialfluss (Einschleusung) | +| `0010-L` | `0019` | Materialfluss (Ausschleusung) | +| `0019` | `0002-R` | Materialfluss (Einschleusung) | +| `0010-L` | `0018` | Materialfluss (Ausschleusung) | +| `0018` | `0002-R` | Materialfluss (Einschleusung) | +| `0010-L` | `0017` | Materialfluss (Ausschleusung) | +| `0017` | `0002-R` | Materialfluss (Einschleusung) | +| `0002-L` | `0016` | Materialfluss (Ausschleusung) | +| `0016` | `0002-R` | Materialfluss (Einschleusung) | +| `0002-R` | `0014` | Materialfluss (Ausschleusung) | +| `0014` | `0010-L` | Materialfluss (Einschleusung) | +| `0002-R` | `0013` | Materialfluss (Ausschleusung) | +| `0013` | `0010-L` | Materialfluss (Einschleusung) | + +Die Richtung innerhalb eines Kreisels kommt aus dem Merkmal `Drehrichtung`: **UZS** (im Uhrzeigersinn) laesst das Material rechts nach links laufen, **GUZ** (gegen den Uhrzeigersinn) links nach rechts. + +## 4. Plausibilitaetshinweise + +Abweichungen zwischen den Merkmalen des CSV-Exports und den tatsaechlich vorhandenen Objekten. + +- Gefaellestrecke 0036 'Gefaellestrecke :1': Merkmal 'Anzahl_Scanner' = 0, tatsaechlich 1 Scanner +- Gefaellestrecke 0036 'Gefaellestrecke :1': Merkmal 'Anzahl_Separator' = 1, tatsaechlich 2 Separator +- Kreisel 0001 'Kreisel :3': Merkmal 'Anzahl der Scanner' = 0, tatsaechlich 1 Scanner +- Kreisel 0001 'Kreisel :3': Merkmal 'Anzahl der Separatoren' = 2, tatsaechlich 1 Separator +- Kreisel 0002 'Kreisel :2': Merkmal 'Anzahl der Scanner' = 0, tatsaechlich 3 Scanner +- Kreisel 0002 'Kreisel :2': Merkmal 'Anzahl der Separatoren' = 2, tatsaechlich 3 Separator +- Kreisel 0010 'Kreisel :1': Merkmal 'Anzahl der Separatoren' = 2, tatsaechlich 3 Separator +- Strecke 0014 'VarioFoerderer :2': Merkmal 'Anzahl_Scanner' = 0, tatsaechlich 1 Scanner +- Strecke 0014 'VarioFoerderer :2': Merkmal 'Anzahl_Separator' = 2, tatsaechlich 3 Separator +- Strecke 0016 'VarioFoerderer :1': Merkmal 'Anzahl_Scanner' = 0, tatsaechlich 1 Scanner + +## 5. Warnungen des Laufs + +- Zeile 55 (Strecke 0016 'VarioFoerderer :1'): alle Nachbarn auf gleicher Hoehe (1.470 m) - Richtung nicht bestimmbar +- Verbindung 0001-L <-> 0002-R: Richtung nicht bestimmbar (kein Transportobjekt beteiligt) - beidseitig gezeichnet +- Verbindung 0001-R <-> 0002-R: Richtung nicht bestimmbar (kein Transportobjekt beteiligt) - beidseitig gezeichnet +- Verbindung 0002-L <-> 0016: Richtung nicht bestimmbar (kein Transportobjekt beteiligt) - beidseitig gezeichnet +- Verbindung 0002-R <-> 0016: Richtung nicht bestimmbar (kein Transportobjekt beteiligt) - beidseitig gezeichnet +- Strecke 0016: Ein- und Ausschleusung am selben Kreisel 0002 (Ruecklauf) - Bahnen 0002-L/0002-R angenommen +- Kante 0001-L <-> 0014: Kreisel<->Strecke ohne Transferelement - als Bounding-Box-Falschtreffer verworfen +- Bahn 0001-R (Separatoren 0061): keine ankommende Verbindung - fuer das Material nicht erreichbar +- Bahn 0010-R (Separatoren 0064, 0065, 0066): keine ankommende Verbindung - fuer das Material nicht erreichbar + diff --git a/doc/updated_mubea/export_material_flow.svg b/doc/updated_mubea/export_material_flow.svg new file mode 100644 index 0000000..61706e9 --- /dev/null +++ b/doc/updated_mubea/export_material_flow.svg @@ -0,0 +1,638 @@ + + + + + + +Materialfluss + +Materialfluss - export.csv + + +0001-L + +Kreisel1  [0001-L] +Bahn L (links) +h = 1.470 m +Scanner (1): 0062 + + + +0002-R + +Kreisel2  [0002-R] +Bahn R (rechts) +h = 1.470 m + + + +0001-L->0002-R + + + + + + +Weiche + + + +0001-R + +Kreisel1  [0001-R] +Bahn R (rechts) +h = 1.470 m +Separator (1): 0061 + + + +0001-R->0001-L + + + + + +UZS + + + +0001-R->0002-R + + + + + + +Weiche + + + +0002-L + +Kreisel2  [0002-L] +Bahn L (links) +h = 1.470 m +Separator (3): 0003, 0011, 0012 +Scanner (3): 0004, 0007, 0009 + + + +0016 + +VarioFoerderer :1  [0016] +Strecke +h = 0.000 m +0 -> 0 mm (+0) = aufwaerts +Separator (2): 0058, 0059 +Scanner (1): 0060 + + + +0002-L->0016 + + + + + +0002-R->0002-L + + + + + +UZS + + + +0013 + +VarioFoerderer :3  [0013] +Strecke +h = 0.237 m +0 -> 474 mm (+474) = aufwaerts +Separator (2): 0015, 0063 + + + +0002-R->0013 + + + + + +0014 + +VarioFoerderer :2  [0014] +Strecke +h = 0.237 m +0 -> 474 mm (+474) = aufwaerts +Separator (3): 0005, 0057, 0067 +Scanner (1): 0006 + + + +0002-R->0014 + + + + + +0010-L + +Kreisel3  [0010-L] +Bahn L (links) +h = 1.940 m + + + +0017 + +Gefaellestrecke :20  [0017] +Gefaellestrecke +h = 1.941 m +1941 -> 1466 mm (-475) = abwaerts +Separator (1): 0037 + + + +0010-L->0017 + + + + + +0018 + +Gefaellestrecke :19  [0018] +Gefaellestrecke +h = 1.941 m +1941 -> 1466 mm (-475) = abwaerts +Separator (1): 0038 + + + +0010-L->0018 + + + + + +0019 + +Gefaellestrecke :18  [0019] +Gefaellestrecke +h = 1.941 m +1941 -> 1466 mm (-475) = abwaerts +Separator (1): 0039 + + + +0010-L->0019 + + + + + +0020 + +Gefaellestrecke :17  [0020] +Gefaellestrecke +h = 1.941 m +1941 -> 1466 mm (-475) = abwaerts +Separator (1): 0040 + + + +0010-L->0020 + + + + + +0021 + +Gefaellestrecke :16  [0021] +Gefaellestrecke +h = 1.941 m +1941 -> 1466 mm (-475) = abwaerts +Separator (1): 0041 + + + +0010-L->0021 + + + + + +0022 + +Gefaellestrecke :15  [0022] +Gefaellestrecke +h = 1.941 m +1941 -> 1466 mm (-475) = abwaerts +Separator (1): 0042 + + + +0010-L->0022 + + + + + +0023 + +Gefaellestrecke :14  [0023] +Gefaellestrecke +h = 1.941 m +1941 -> 1466 mm (-475) = abwaerts +Separator (1): 0043 + + + +0010-L->0023 + + + + + +0024 + +Gefaellestrecke :13  [0024] +Gefaellestrecke +h = 1.941 m +1941 -> 1466 mm (-475) = abwaerts +Separator (1): 0044 + + + +0010-L->0024 + + + + + +0025 + +Gefaellestrecke :12  [0025] +Gefaellestrecke +h = 1.941 m +1941 -> 1466 mm (-475) = abwaerts +Separator (1): 0045 + + + +0010-L->0025 + + + + + +0026 + +Gefaellestrecke :11  [0026] +Gefaellestrecke +h = 1.941 m +1941 -> 1466 mm (-475) = abwaerts +Separator (1): 0046 + + + +0010-L->0026 + + + + + +0027 + +Gefaellestrecke :10  [0027] +Gefaellestrecke +h = 1.941 m +1941 -> 1466 mm (-475) = abwaerts +Separator (1): 0047 + + + +0010-L->0027 + + + + + +0028 + +Gefaellestrecke :9  [0028] +Gefaellestrecke +h = 1.941 m +1941 -> 1466 mm (-475) = abwaerts +Separator (1): 0048 + + + +0010-L->0028 + + + + + +0029 + +Gefaellestrecke :8  [0029] +Gefaellestrecke +h = 1.941 m +1941 -> 1466 mm (-475) = abwaerts +Separator (1): 0049 + + + +0010-L->0029 + + + + + +0030 + +Gefaellestrecke :7  [0030] +Gefaellestrecke +h = 1.941 m +1941 -> 1466 mm (-475) = abwaerts +Separator (1): 0050 + + + +0010-L->0030 + + + + + +0031 + +Gefaellestrecke :6  [0031] +Gefaellestrecke +h = 1.941 m +1941 -> 1466 mm (-475) = abwaerts +Separator (1): 0051 + + + +0010-L->0031 + + + + + +0032 + +Gefaellestrecke :5  [0032] +Gefaellestrecke +h = 1.941 m +1941 -> 1466 mm (-475) = abwaerts +Separator (1): 0052 + + + +0010-L->0032 + + + + + +0033 + +Gefaellestrecke :4  [0033] +Gefaellestrecke +h = 1.941 m +1941 -> 1466 mm (-475) = abwaerts +Separator (1): 0053 + + + +0010-L->0033 + + + + + +0034 + +Gefaellestrecke :3  [0034] +Gefaellestrecke +h = 1.941 m +1941 -> 1466 mm (-475) = abwaerts +Separator (1): 0054 + + + +0010-L->0034 + + + + + +0035 + +Gefaellestrecke :2  [0035] +Gefaellestrecke +h = 1.941 m +1941 -> 1466 mm (-475) = abwaerts +Separator (1): 0055 + + + +0010-L->0035 + + + + + +0036 + +Gefaellestrecke :1  [0036] +Gefaellestrecke +h = 1.941 m +1941 -> 1466 mm (-475) = abwaerts +Separator (2): 0056, 0068 +Scanner (1): 0069 + + + +0010-L->0036 + + + + + +0010-R + +Kreisel3  [0010-R] +Bahn R (rechts) +h = 1.940 m +Separator (3): 0064, 0065, 0066 + + + +0010-R->0010-L + + + + + +UZS + + + +0013->0010-L + + + + + +0014->0010-L + + + + + +0016->0002-R + + + + + +0017->0002-R + + + + + +0018->0002-R + + + + + +0019->0002-R + + + + + +0020->0002-R + + + + + +0021->0002-R + + + + + +0022->0002-R + + + + + +0023->0002-R + + + + + +0024->0002-R + + + + + +0025->0002-R + + + + + +0026->0002-R + + + + + +0027->0002-R + + + + + +0028->0002-R + + + + + +0029->0002-R + + + + + +0030->0002-R + + + + + +0031->0002-R + + + + + +0032->0002-R + + + + + +0033->0002-R + + + + + +0034->0002-R + + + + + +0035->0002-R + + + + + +0036->0002-R + + + + + +legende +durchgezogen +Materialfluss +gestrichelt blau +Kreisel-Umlauf, Richtung aus Drehrichtung (UZS = rechts nach links, GUZ = links nach rechts) +gestrichelt gelb +Richtung nicht bestimmbar + + + diff --git a/doc/updated_mubea/export_registration.json b/doc/updated_mubea/export_registration.json new file mode 100644 index 0000000..0c5e30c --- /dev/null +++ b/doc/updated_mubea/export_registration.json @@ -0,0 +1,14 @@ +{ + "dx": 59.950000000000045, + "dy": 0.0, + "rotation": 0.0, + "source": "cfg", + "anchor": "21 exakte Treffer (<= 50 mm) ueber die Rollen Scanner:8, Separator:35; 21 Stimmen im 100-mm-Raster, 6 Kandidaten geprueft", + "matched": 43, + "candidates": 43, + "residual_max": 419.95000000000005, + "residual_mean": 90.1746667187897, + "csv_file": "export.csv", + "dxf_file": "Mubea.dxf", + "created": "2026-08-12 10:09" +} diff --git a/doc/updated_mubea/export_tro.json b/doc/updated_mubea/export_tro.json new file mode 100644 index 0000000..b0fabc1 --- /dev/null +++ b/doc/updated_mubea/export_tro.json @@ -0,0 +1,481 @@ +{ + "schema": "sps_skel-tro-extract-v1", + "source": "export_annotated.dxf", + "extracted": "2026-08-14 13:16", + "note": "Aus der Zeichnung gelesen, nicht aus dem CSV-Export - Aenderungen aus BricsCAD sind enthalten.", + "transform": { + "dx": 59.95, + "dy": 0.0, + "rotation": 0.0, + "note": "Anlagenkoordinate = Zeichnung + (dx, dy)" + }, + "tros": [ + { + "id": "TRO01", + "type": "1Sep", + "items": { + "Separator": 1 + }, + "confidence": "mittel", + "separators": [ + "0061" + ], + "positionDxf": { + "x": 5295.1, + "y": -5878.0, + "z": 0.0 + }, + "layer": "TRO_MARKER_sep", + "block": "TRO_SYM_1Sep", + "fbType": "FB_ILS_MTRO_1Sep", + "fbTypeFrom": "tro_catalog", + "position": { + "x": 5355.05, + "y": -5878.0 + }, + "predecessors": [ + "TRO05" + ], + "successors": [ + "TRO05" + ] + }, + { + "id": "TRO02", + "type": "1Sep_SSCC", + "items": { + "SSCC": 1, + "Scanner": 1, + "Separator": 1 + }, + "confidence": "bestaetigt", + "separators": [ + "0003" + ], + "positionDxf": { + "x": -279.95, + "y": 13960.02, + "z": 0.0 + }, + "layer": "TRO_MARKER_sscc", + "block": "TRO_SYM_1Sep_SSCC", + "fbType": "FB_ILS_MTRO_1Sep_SSCC", + "fbTypeFrom": "tro_catalog", + "position": { + "x": -220.0, + "y": 13960.02 + }, + "predecessors": [ + "TRO03", + "TRO11" + ], + "successors": [ + "TRO09" + ] + }, + { + "id": "TRO03", + "type": "1Sep1Swi", + "items": { + "Separator": 1, + "Switch": 1 + }, + "confidence": "bestaetigt", + "separators": [ + "0011" + ], + "positionDxf": { + "x": -279.95, + "y": -480.98, + "z": 0.0 + }, + "layer": "TRO_MARKER_swi", + "block": "TRO_SYM_1Sep1Swi", + "fbType": "FB_ILS_MTRO_1Sep1Swi", + "fbTypeFrom": "tro_catalog", + "position": { + "x": -220.0, + "y": -480.98 + }, + "predecessors": [ + "TRO04" + ], + "successors": [ + "TRO02", + "TRO11" + ] + }, + { + "id": "TRO04", + "type": "1Sep_SSCC", + "items": { + "SSCC": 1, + "Scanner": 1, + "Separator": 1 + }, + "confidence": "bestaetigt", + "separators": [ + "0012" + ], + "positionDxf": { + "x": -279.95, + "y": -3472.47, + "z": 0.0 + }, + "layer": "TRO_MARKER_sscc", + "block": "TRO_SYM_1Sep_SSCC", + "fbType": "FB_ILS_MTRO_1Sep_SSCC", + "fbTypeFrom": "tro_catalog", + "position": { + "x": -220.0, + "y": -3472.47 + }, + "predecessors": [ + "TRO05" + ], + "successors": [ + "TRO03" + ] + }, + { + "id": "TRO05", + "type": "2Sep2Swi", + "items": { + "Scanner": 2, + "Separator": 2, + "Switch": 2 + }, + "confidence": "bestaetigt", + "separators": [ + "0005", + "0057" + ], + "positionDxf": { + "x": 952.54, + "y": -4649.76, + "z": 0.0 + }, + "layer": "TRO_MARKER_swi", + "block": "TRO_SYM_2Sep2Swi", + "fbType": "FB_ILS_MTRO_2Sep2Swi", + "fbTypeFrom": "tro_catalog", + "position": { + "x": 1012.49, + "y": -4649.76 + }, + "predecessors": [ + "TRO01", + "TRO12" + ], + "successors": [ + "TRO01", + "TRO04", + "TRO10" + ] + }, + { + "id": "TRO06", + "type": "1Sep_SSCC", + "items": { + "SSCC": 1, + "Scanner": 1, + "Separator": 1 + }, + "confidence": "bestaetigt", + "separators": [ + "0064" + ], + "positionDxf": { + "x": 10430.05, + "y": -525.02, + "z": 0.0 + }, + "layer": "TRO_MARKER_sscc", + "block": "TRO_SYM_1Sep_SSCC", + "fbType": "FB_ILS_MTRO_1Sep_SSCC", + "fbTypeFrom": "tro_catalog", + "position": { + "x": 10490.0, + "y": -525.02 + }, + "predecessors": [ + "TRO07" + ], + "successors": [ + "TRO08" + ] + }, + { + "id": "TRO07", + "type": "1Sep", + "items": { + "Separator": 1 + }, + "confidence": "mittel", + "separators": [ + "0065" + ], + "positionDxf": { + "x": 10250.05, + "y": 159.95, + "z": 0.0 + }, + "layer": "TRO_MARKER_sep", + "block": "TRO_SYM_1Sep", + "fbType": "FB_ILS_MTRO_1Sep", + "fbTypeFrom": "tro_catalog", + "position": { + "x": 10310.0, + "y": 159.95 + }, + "predecessors": [ + "TRO09" + ], + "successors": [ + "TRO06" + ] + }, + { + "id": "TRO08", + "type": "1Sep", + "items": { + "Separator": 1 + }, + "confidence": "mittel", + "separators": [ + "0066" + ], + "positionDxf": { + "x": 10250.05, + "y": -5013.05, + "z": 0.0 + }, + "layer": "TRO_MARKER_sep", + "block": "TRO_SYM_1Sep", + "fbType": "FB_ILS_MTRO_1Sep", + "fbTypeFrom": "tro_catalog", + "position": { + "x": 10310.0, + "y": -5013.05 + }, + "predecessors": [ + "TRO06" + ], + "successors": [ + "TRO12" + ] + }, + { + "id": "TRO09", + "type": "Vario", + "items": { + "Separator": 1, + "VarioDrive": 1 + }, + "confidence": "hoch", + "separators": [ + "0015", + "0063" + ], + "positionDxf": { + "x": 9126.07, + "y": 13891.52, + "z": 0.0 + }, + "layer": "TRO_MARKER_vario", + "block": "TRO_SYM_Vario", + "fbType": "FB_ILS_MTRO_Vario", + "fbTypeFrom": "tro_catalog", + "position": { + "x": 9186.02, + "y": 13891.52 + }, + "predecessors": [ + "TRO02" + ], + "successors": [ + "TRO07" + ] + }, + { + "id": "TRO10", + "type": "Vario", + "items": { + "Separator": 1, + "VarioDrive": 1 + }, + "confidence": "hoch", + "separators": [ + "0067" + ], + "positionDxf": { + "x": 8605.1, + "y": -4743.0, + "z": 0.0 + }, + "layer": "TRO_MARKER_vario", + "block": "TRO_SYM_Vario", + "fbType": "FB_ILS_MTRO_Vario", + "fbTypeFrom": "tro_catalog", + "position": { + "x": 8665.05, + "y": -4743.0 + }, + "predecessors": [ + "TRO05" + ], + "successors": [ + "TRO12" + ] + }, + { + "id": "TRO11", + "type": "Vario", + "items": { + "Separator": 1, + "VarioDrive": 1 + }, + "confidence": "hoch", + "separators": [ + "0058", + "0059" + ], + "positionDxf": { + "x": -1205.95, + "y": 7127.7, + "z": 0.0 + }, + "layer": "TRO_MARKER_vario", + "block": "TRO_SYM_Vario", + "fbType": "FB_ILS_MTRO_Vario", + "fbTypeFrom": "tro_catalog", + "position": { + "x": -1146.0, + "y": 7127.7 + }, + "predecessors": [ + "TRO03" + ], + "successors": [ + "TRO02" + ] + }, + { + "id": "TRO12", + "type": "PinStore_Auto", + "items": { + "Encoder": 1, + "Scanner": 1, + "Separator": 1, + "StorageLine": 19 + }, + "confidence": "hoch", + "separators": [ + "0037", + "0038", + "0039", + "0040", + "0041", + "0042", + "0043", + "0044", + "0045", + "0046", + "0047", + "0048", + "0049", + "0050", + "0051", + "0052", + "0053", + "0054", + "0055", + "0056", + "0068" + ], + "positionDxf": { + "x": 1757.28, + "y": 3943.05, + "z": 0.0 + }, + "layer": "TRO_MARKER_store", + "block": "TRO_SYM_PinStore_Auto", + "fbType": "FB_ILS_MTRO_PinStore_Auto", + "fbTypeFrom": "tro_catalog", + "position": { + "x": 1817.23, + "y": 3943.05 + }, + "predecessors": [ + "TRO08", + "TRO10" + ], + "successors": [ + "TRO05" + ] + } + ], + "connections": [ + { + "from": "TRO01", + "to": "TRO05" + }, + { + "from": "TRO02", + "to": "TRO09" + }, + { + "from": "TRO03", + "to": "TRO02" + }, + { + "from": "TRO03", + "to": "TRO11" + }, + { + "from": "TRO04", + "to": "TRO03" + }, + { + "from": "TRO05", + "to": "TRO01" + }, + { + "from": "TRO05", + "to": "TRO04" + }, + { + "from": "TRO05", + "to": "TRO10" + }, + { + "from": "TRO06", + "to": "TRO08" + }, + { + "from": "TRO07", + "to": "TRO06" + }, + { + "from": "TRO08", + "to": "TRO12" + }, + { + "from": "TRO09", + "to": "TRO07" + }, + { + "from": "TRO10", + "to": "TRO12" + }, + { + "from": "TRO11", + "to": "TRO02" + }, + { + "from": "TRO12", + "to": "TRO05" + } + ], + "openPoints": [] +} diff --git a/doc/updated_mubea/export_tro_doc.md b/doc/updated_mubea/export_tro_doc.md new file mode 100644 index 0000000..9152c80 --- /dev/null +++ b/doc/updated_mubea/export_tro_doc.md @@ -0,0 +1,216 @@ + +# TRO-Liste und TRO-Fluss - export.csv + +**Erzeugt:** 2026-08-14 12:52 von `lib/tro_flow.py` +**Quelle:** `data\export.csv` +**Typdefinition:** `lib/tro_catalog.py` (Stand 2026-07-20) + +> Automatisch aus dem CSV-Export erzeugt. Die TRO-Typen sind aus dem mechanischen Layout **abgeleitet** - ohne E-Planung (I/O-Liste) und ohne `FB_Main`-Aufrufstellen gibt es noch keine verbindliche TRO-Nummerierung. Die IDs unten sind laufende Nummern dieses Laufs. + +## 1. Kurzfassung + +| | | +|---|---| +| Ermittelte TROs | 12 | +| TRO-Verbindungen | 15 | +| Nicht verbundene TROs | 0 | +| Hinweise | 13 | +| Manuelle Typkorrekturen | 8 | + +| Typ | FB-Baustein | Anzahl hier | Bauteile je TRO | Farbgruppe | +|---|---|---:|---|---| +| `1Sep` | `FB_ILS_MTRO_1Sep` | 3 | 1x Separator | sep | +| `1Sep1Swi` | `FB_ILS_MTRO_1Sep1Swi` | 1 | 1x Separator, 1x Switch | swi | +| `1Sep_SSCC` | `FB_ILS_MTRO_1Sep_SSCC` | 3 | 1x SSCC, 1x Scanner, 1x Separator | sscc | +| `2Sep2Swi` | `FB_ILS_MTRO_2Sep2Swi` | 1 | 2x Scanner, 2x Separator, 2x Switch | swi | +| `PinStore_Auto` | `FB_ILS_MTRO_PinStore_Auto` | 1 | 1x Encoder, 1x Scanner, 1x Separator, 19x StorageLine | store | +| `Vario` | `FB_ILS_MTRO_Vario` | 3 | 1x Separator, 1x VarioDrive | vario | + +## 2. TRO-Flussdiagramm + +```mermaid +flowchart LR + classDef sep fill:#d4e8ff,stroke:#3388cc,color:#111111 + classDef swi fill:#ffe4a0,stroke:#cc8800,color:#111111 + classDef sscc fill:#ffd4d4,stroke:#cc3333,color:#111111 + classDef vario fill:#e8d4f0,stroke:#883388,color:#111111 + classDef store fill:#d4f0d4,stroke:#338833,color:#111111 + classDef ext fill:#f0f0f0,stroke:#888888,color:#404040 + TRO01["TRO01
1Sep
Separator 0061 auf Kreisel1 Bahn R"]:::sep + TRO02["TRO02
1Sep_SSCC
Separator 0003 auf Kreisel2 Bahn L"]:::sscc + TRO03["TRO03
1Sep1Swi
Separator 0011 auf Kreisel2 Bahn L"]:::swi + TRO04["TRO04
1Sep_SSCC
Separator 0012 auf Kreisel2 Bahn L"]:::sscc + TRO05["TRO05
2Sep2Swi
Uebergabestelle Kreisel2/Kreisel1 (beide Sperren)"]:::swi + TRO06["TRO06
1Sep_SSCC
Separator 0064 auf Kreisel3 Bahn R"]:::sscc + TRO07["TRO07
1Sep
Separator 0065 auf Kreisel3 Bahn R"]:::sep + TRO08["TRO08
1Sep
Separator 0066 auf Kreisel3 Bahn R"]:::sep + TRO09["TRO09
Vario
VarioFoerderer :3"]:::vario + TRO10["TRO10
Vario
VarioFoerderer :2"]:::vario + TRO11["TRO11
Vario
VarioFoerderer :1"]:::vario + TRO12["TRO12
PinStore_Auto
Speicher (20 Schwerkraftlinien)"]:::store + TRO01 --> TRO05 + TRO02 --> TRO09 + TRO03 --> TRO02 + TRO03 --> TRO11 + TRO04 --> TRO03 + TRO05 --> TRO01 + TRO05 --> TRO04 + TRO05 --> TRO10 + TRO06 --> TRO08 + TRO07 --> TRO06 + TRO08 --> TRO12 + TRO09 --> TRO07 + TRO10 --> TRO12 + TRO11 --> TRO02 + TRO12 --> TRO05 +``` + +Gerendert: [`export_tro_flow.dot`](export_tro_flow.dot) - [`export_tro_flow.svg`](export_tro_flow.svg) + +## 3. TRO-Liste + +| TRO | Typ | FB-Baustein | Bauteile laut Typ | X [mm] | Y [mm] | Z [mm] | Host-Knoten | Separatoren | Scanner | Begruendung | Vertrauen | +|---|---|---|---|---:|---:|---:|---|---|---|---|---| +| `TRO01` | `1Sep` | `FB_ILS_MTRO_1Sep` | 1x Separator | 5355 | -5878 | 1468 | `0001-R` | 0061 | - | einzelner Separator auf angetriebener Kreisel-Bahn | mittel | +| `TRO02` | `1Sep_SSCC` | `FB_ILS_MTRO_1Sep_SSCC` | 1x SSCC, 1x Scanner, 1x Separator | -220 | 13960 | 1468 | `0002-L` | 0003 | 0004 | Separator mit Scanner auf angetriebener Kreisel-Bahn; manuell auf 1Sep_SSCC gesetzt (Review 2026-08-12: Scanner-Stelle bestaetigt (Separator 0003 mit Scanner 0004)) | bestaetigt | +| `TRO03` | `1Sep1Swi` | `FB_ILS_MTRO_1Sep1Swi` | 1x Separator, 1x Switch | -220 | -481 | 1468 | `0002-L` | 0011 | 0009 | Separator mit Scanner auf angetriebener Kreisel-Bahn; manuell auf 1Sep1Swi gesetzt (Weiche am Separator 0011 vor Ort bestaetigt (Review 2026-08-10) - hier wird die Fahrtrichtung umgestellt; im CSV-Export fehlt das Weichenelement) | bestaetigt | +| `TRO04` | `1Sep_SSCC` | `FB_ILS_MTRO_1Sep_SSCC` | 1x SSCC, 1x Scanner, 1x Separator | -220 | -3472 | 1468 | `0002-L` | 0012 | 0007 | Separator mit Scanner auf angetriebener Kreisel-Bahn; manuell auf 1Sep_SSCC gesetzt (Separator 0012 mit Scanner 0007 - im Review als Scanner-Stelle bestaetigt (Review 2026-08-10)) | bestaetigt | +| `TRO05` | `2Sep2Swi` | `FB_ILS_MTRO_2Sep2Swi` | 2x Scanner, 2x Separator, 2x Switch | 1012 | -4650 | 1468 | `0002-R`, `0001-L` | 0005, 0057 | 0006, 0062 | Review 2026-08-10: liegt auf Kreisel2 Bahn R zwischen Linienspeicher und Foerderer. Vor Ort 1 Separator + 1 Scanner, keine mechanische Weiche - wird auf Wunsch als Schaltstelle (1Sep1Swi) gefuehrt, weil hier die Wegeentscheidung faellt. Export vom 2026-08-12: Position 400/-3978 (223 mm verschoben), Zuordnung jetzt Strecke 0014 statt Gefaellestrecke 0036 - der Separator wuerde also dem Vario-TRO zugeschlagen statt dem Linienspeicher.; manuell zusammengefasst (Review 2026-08-12: die Sperre auf Kreisel2 Bahn R und die am Beruehrpunkt bilden zusammen eine Uebergabestelle - als ein Steuerobjekt mit 2 Separatoren, 2 Scannern und 2 Weichen gefuehrt) | bestaetigt | +| `TRO06` | `1Sep_SSCC` | `FB_ILS_MTRO_1Sep_SSCC` | 1x SSCC, 1x Scanner, 1x Separator | 10490 | -525 | 1942 | `0010-R` | 0064 | 0008 | Separator mit Scanner auf angetriebener Kreisel-Bahn; manuell auf 1Sep_SSCC gesetzt (Review 2026-08-12: Scanner-Stelle, keine Weiche - Einstufung gegenueber dem ersten Review (1Sep1Swi) korrigiert. Separator mit Scanner 0008.) | bestaetigt | +| `TRO07` | `1Sep` | `FB_ILS_MTRO_1Sep` | 1x Separator | 10310 | 160 | 1942 | `0010-R` | 0065 | - | einzelner Separator auf angetriebener Kreisel-Bahn | mittel | +| `TRO08` | `1Sep` | `FB_ILS_MTRO_1Sep` | 1x Separator | 10310 | -5013 | 1942 | `0010-R` | 0066 | - | einzelner Separator auf angetriebener Kreisel-Bahn | mittel | +| `TRO09` | `Vario` | `FB_ILS_MTRO_Vario` | 1x Separator, 1x VarioDrive | 9186 | 13892 | 1942 | `0013` | 0015, 0063 | - | angetriebenes Streckensegment (Antriebfahrtrichtung: Auf) | hoch | +| `TRO10` | `Vario` | `FB_ILS_MTRO_Vario` | 1x Separator, 1x VarioDrive | 8665 | -4743 | 1942 | `0014` | 0067 | - | angetriebenes Streckensegment (Antriebfahrtrichtung: Auf) | hoch | +| `TRO11` | `Vario` | `FB_ILS_MTRO_Vario` | 1x Separator, 1x VarioDrive | -1146 | 7128 | 1530 | `0016` | 0058, 0059 | 0060 | angetriebenes Streckensegment (Antriebfahrtrichtung: Auf) | hoch | +| `TRO12` | `PinStore_Auto` | `FB_ILS_MTRO_PinStore_Auto` | 1x Encoder, 1x Scanner, 1x Separator, 19x StorageLine | 1817 | 3943 | 1596 | `0017` … `0036` (20 Knoten) | 0037 … 0068 (21) | 0069 | 20 Gefaellestrecken mit je eigenem Separator, gemeinsamer Zu-/Ablauf - Muster eines Linienspeichers | hoch | + +**X/Y/Z** ist der Mittelpunkt der Bauteile, aus denen der TRO gebildet wurde (Separatoren und Scanner) - beim Linienspeicher also der Mittelwert aller Linien-Separatoren. Koordinaten in mm im Anlagen-Koordinatensystem des CSV-Exports. + +| TRO | Koordinate aus | Anzahl Punkte | +|---|---|---:| +| `TRO01` | Bauteile | 1 | +| `TRO02` | Bauteile | 2 | +| `TRO03` | Bauteile | 2 | +| `TRO04` | Bauteile | 2 | +| `TRO05` | Bauteile | 4 | +| `TRO06` | Bauteile | 2 | +| `TRO07` | Bauteile | 1 | +| `TRO08` | Bauteile | 1 | +| `TRO09` | Bauteile | 2 | +| `TRO10` | Bauteile | 1 | +| `TRO11` | Bauteile | 3 | +| `TRO12` | Bauteile | 22 | + +## 4. TRO-Verbindungen + +Richtung des Materialflusses zwischen den Uebergabestellen. Passive Zwischenknoten ohne eigenen TRO sind zusammengefasst. + +| von | nach | Typ von -> Typ nach | +|---|---|---| +| `TRO01` | `TRO05` | `1Sep` -> `2Sep2Swi` | +| `TRO02` | `TRO09` | `1Sep_SSCC` -> `Vario` | +| `TRO03` | `TRO02` | `1Sep1Swi` -> `1Sep_SSCC` | +| `TRO03` | `TRO11` | `1Sep1Swi` -> `Vario` | +| `TRO04` | `TRO03` | `1Sep_SSCC` -> `1Sep1Swi` | +| `TRO05` | `TRO01` | `2Sep2Swi` -> `1Sep` | +| `TRO05` | `TRO04` | `2Sep2Swi` -> `1Sep_SSCC` | +| `TRO05` | `TRO10` | `2Sep2Swi` -> `Vario` | +| `TRO06` | `TRO08` | `1Sep_SSCC` -> `1Sep` | +| `TRO07` | `TRO06` | `1Sep` -> `1Sep_SSCC` | +| `TRO08` | `TRO12` | `1Sep` -> `PinStore_Auto` | +| `TRO09` | `TRO07` | `Vario` -> `1Sep` | +| `TRO10` | `TRO12` | `Vario` -> `PinStore_Auto` | +| `TRO11` | `TRO02` | `Vario` -> `1Sep_SSCC` | +| `TRO12` | `TRO05` | `PinStore_Auto` -> `2Sep2Swi` | + +## 5. Hinweise + +- Scanner 0062 'Scanner :2': montiert an 0001-L, liest aber an Separator 0057 auf 0014 +- Verbindung TRO02 -> TRO09 nur gesetzt, aus dem Layout nicht ableitbar +- Verbindung TRO09 -> TRO07 nur gesetzt, aus dem Layout nicht ableitbar +- Verbindung TRO11 -> TRO02 nur gesetzt, aus dem Layout nicht ableitbar +- abgeleitete Verbindung TRO02 -> TRO11 entfaellt - steht nicht in der gesetzten Topologie +- abgeleitete Verbindung TRO04 -> TRO11 entfaellt - steht nicht in der gesetzten Topologie +- abgeleitete Verbindung TRO05 -> TRO02 entfaellt - steht nicht in der gesetzten Topologie +- abgeleitete Verbindung TRO05 -> TRO03 entfaellt - steht nicht in der gesetzten Topologie +- abgeleitete Verbindung TRO05 -> TRO09 entfaellt - steht nicht in der gesetzten Topologie +- abgeleitete Verbindung TRO06 -> TRO12 entfaellt - steht nicht in der gesetzten Topologie +- abgeleitete Verbindung TRO07 -> TRO12 entfaellt - steht nicht in der gesetzten Topologie +- abgeleitete Verbindung TRO09 -> TRO12 entfaellt - steht nicht in der gesetzten Topologie +- abgeleitete Verbindung TRO11 -> TRO05 entfaellt - steht nicht in der gesetzten Topologie + +## 6. Manuelle Korrekturen und offene Punkte + +Quelle: `cfg\tro_overrides.ini` + +### 6.1 Angewandte Typkorrekturen + +Diese Typen stammen **nicht** aus dem Layout, sondern aus der Begehung bzw. dem Review - im Layout sind sie nicht erkennbar. + +| Korrektur | Begruendung | +|---|---| +| `neu Kreisel2_R_vor_Foerderer: 1Sep1Swi auf 0002-R mit Separator 0005, herausgeloest aus VarioFoerderer :2` | Review 2026-08-10: liegt auf Kreisel2 Bahn R zwischen Linienspeicher und Foerderer. Vor Ort 1 Separator + 1 Scanner, keine mechanische Weiche - wird auf Wunsch als Schaltstelle (1Sep1Swi) gefuehrt, weil hier die Wegeentscheidung faellt. Export vom 2026-08-12: Position 400/-3978 (223 mm verschoben), Zuordnung jetzt Strecke 0014 statt Gefaellestrecke 0036 - der Separator wuerde also dem Vario-TRO zugeschlagen statt dem Linienspeicher. | +| `neu Beruehrpunkt_K2_K1: 1Sep1Swi auf 0001-L mit Separator 0057, herausgeloest aus VarioFoerderer :2` | Review 2026-08-10: Uebergabestelle am Beruehrpunkt der beiden Kreisel (ILS Weiche 0067 bei 400/-5478, Kreisel A 0002 / Kreisel B 0001). Hier faellt die Entscheidung Kreisel1 weiter oder auf den unteren Foerderer. Zuordnung im Export zeigt auf Strecke 0014, daher bisher Teil des Vario-TRO. | +| `merge Beruehrpunkt_K2_K1_gesamt: 2 TROs -> ein 2Sep2Swi mit Separatoren 0005, 0057` | Review 2026-08-12: die Sperre auf Kreisel2 Bahn R und die am Beruehrpunkt bilden zusammen eine Uebergabestelle - als ein Steuerobjekt mit 2 Separatoren, 2 Scannern und 2 Weichen gefuehrt | +| `TRO02: 1Sep -> 1Sep_SSCC` | Review 2026-08-12: Scanner-Stelle bestaetigt (Separator 0003 mit Scanner 0004) | +| `TRO03: 1Sep -> 1Sep1Swi` | Weiche am Separator 0011 vor Ort bestaetigt (Review 2026-08-10) - hier wird die Fahrtrichtung umgestellt; im CSV-Export fehlt das Weichenelement | +| `TRO04: 1Sep -> 1Sep_SSCC` | Separator 0012 mit Scanner 0007 - im Review als Scanner-Stelle bestaetigt (Review 2026-08-10) | +| `TRO06: 1Sep -> 1Sep_SSCC` | Review 2026-08-12: Scanner-Stelle, keine Weiche - Einstufung gegenueber dem ersten Review (1Sep1Swi) korrigiert. Separator mit Scanner 0008. | +| `Topologie gesetzt: 15 Verbindungen aus der Override-Datei ersetzen die abgeleiteten` | | + +## 7. Ableitungsregeln und Typdefinition + +Ein TRO ist die Steuerungslogik **einer Uebergabestelle**. Ausgangspunkt ist der Separator und das, was an ihm haengt (Host-Objekt, Scanner). + +| Host des Separators | TRO-Typ | +|---|---| +| Gefaellestrecke, >= 2 Linien mit gemeinsamem Zu-/Ablauf | `PinStore_Auto` (ein Block je Liniengruppe) | +| Gefaellestrecke, einzelne Linie | `1Sep` | +| Strecke (angetrieben) | `Vario` (je Streckensegment) | +| Kreisel-Bahn | `1Sep` | +| zusaetzlich: 2 bzw. 3 abgehende Wege | Aufwertung zu `1Sep1Swi` / `1Sep2Swi` | + +Ein **Scanner** am Separator aendert den Typ nicht. In der Referenzanlage sind Separatoren mit Scanner ueberwiegend `1Sep`. `1Sep_SSCC` ist dem Sonderfall mit SSCC-Scanner, Endmessung und WCS-Telegramm vorbehalten und aus einem mechanischen Layout nicht erkennbar - betroffene Stellen stehen als Hinweis in Abschnitt 5. + +Was aus dem CSV **nicht** ableitbar ist: TRO-Nummerierung, Sensor- und Aktor-Tags, JamAreas, Zielsteuerung und Timing. Das kommt aus der E-Planung (I/O-Liste) bzw. aus `FB_Main`. + +Typen, FB-Bausteine, Bauteile und Farben stammen vollstaendig aus `TRO_CATALOG` in `lib/tro_catalog.py` (Stand 2026-07-20): + +| # | Typ | FB-Baustein | Bauteile je TRO | Farbgruppe | +|---:|---|---|---|---| +| 1 | `1Sep` | `FB_ILS_MTRO_1Sep` | 1x Separator | sep | +| 2 | `1Sep1Swi` | `FB_ILS_MTRO_1Sep1Swi` | 1x Separator, 1x Switch | swi | +| 3 | `1Sep2Swi` | `FB_ILS_MTRO_1Sep2Swi` | 1x Scanner, 1x Separator, 2x Switch | swi | +| 4 | `1Sep_SSCC` | `FB_ILS_MTRO_1Sep_SSCC` | 1x SSCC, 1x Scanner, 1x Separator | sscc | +| 5 | `Vario` | `FB_ILS_MTRO_Vario` | 1x Separator, 1x VarioDrive | vario | +| 6 | `PinStore_Auto` | `FB_ILS_MTRO_PinStore_Auto` | 1x Encoder, 1x Scanner, 1x Separator, 19x StorageLine | store | +| 7 | `Vario_workStation` | `FB_ILS_MTRO_Vario_workStation` | 1x Accumulate, 1x Scanner, 1x Separator, 1x VarioDrive, 1x WorkStation | vario | +| 8 | `EmptyCarrBuffer` | `FB_EmptyCarrBuffer` | 5x Accumulate, 5x StorageLine | store | +| 9 | `LoadingBoom` | `FB_LoadingBoom_INBOUND` | 1x Boom, 1x Foot, 1x TiltSensor | ext | +| 10 | `2Sep1Swi` | `FB_ILS_MTRO_2Sep1Swi` | 2x Scanner, 2x Separator, 1x Switch | swi | +| 11 | `2Sep2Swi` | `FB_ILS_MTRO_2Sep2Swi` | 2x Scanner, 2x Separator, 2x Switch | swi | + +| Bauteil | Sub-FB | +|---|---| +| Accumulate | `FB_CarrAccumulate1Sep` | +| Boom | `FB_BoomWorkStation` | +| Encoder | _kein eigener FB_ | +| Foot | `FB_DistanceFoot` | +| SSCC | _kein eigener FB_ | +| Scanner | `FB_BarcodeReaderCognex` | +| Separator | `FB_ILS_STRO_Sep` | +| StorageLine | `FB_ILS_STRO_Sep` | +| Switch | `FB_ILS_STRO_Switch` | +| TiltSensor | `FB_Tilt_TEST` | +| VarioDrive | `FB_ILS_STRO_Vario` | +| WorkStation | `FB_ILS_STRO_Vario_WorkStation` | + +| Farbgruppe | Bedeutung | Fuellfarbe | +|---|---|---| +| sep | Separator | `#d4e8ff` | +| swi | Weiche | `#ffe4a0` | +| sscc | Scanner (SSCC) | `#ffd4d4` | +| vario | Kettenfoerderer | `#e8d4f0` | +| store | Speicher / Puffer | `#d4f0d4` | +| ext | Systemgrenze / extern | `#f0f0f0` | + diff --git a/doc/updated_mubea/export_tro_flow.dot b/doc/updated_mubea/export_tro_flow.dot new file mode 100644 index 0000000..10b3077 --- /dev/null +++ b/doc/updated_mubea/export_tro_flow.dot @@ -0,0 +1,44 @@ +// Automatisch erzeugt von lib/tro_flow.py - nicht manuell aendern. +// Quelle: export.csv +digraph TROFluss { + graph [rankdir=LR, splines=spline, nodesep=0.35, ranksep=1.3, + fontname="Segoe UI", fontsize=11, labelloc="t", + label="TRO-Fluss - export.csv"]; + node [shape=box, style="rounded,filled", fontname="Segoe UI", fontsize=9]; + edge [fontname="Segoe UI", fontsize=8, color="#2f5597", penwidth=1.2, arrowsize=0.8]; + + "TRO01" [label="TRO01 (1Sep)\nSeparator 0061 auf Kreisel1 Bahn R\nFB_ILS_MTRO_1Sep\n1x Separator\nSep: 0061\nx/y: 5355, -5878", fillcolor="#d4e8ff", color="#3388cc", fontcolor="#111111", pos="53.55,-58.78"]; + "TRO02" [label="TRO02 (1Sep_SSCC)\nSeparator 0003 auf Kreisel2 Bahn L\nFB_ILS_MTRO_1Sep_SSCC\n1x SSCC, 1x Scanner, 1x Separator\nSep: 0003\nScan: 0004\nx/y: -220, 13960", fillcolor="#ffd4d4", color="#cc3333", fontcolor="#111111", pos="-2.20,139.60"]; + "TRO03" [label="TRO03 (1Sep1Swi)\nSeparator 0011 auf Kreisel2 Bahn L\nFB_ILS_MTRO_1Sep1Swi\n1x Separator, 1x Switch\nSep: 0011\nScan: 0009\nx/y: -220, -481", fillcolor="#ffe4a0", color="#cc8800", fontcolor="#111111", pos="-2.20,-4.81"]; + "TRO04" [label="TRO04 (1Sep_SSCC)\nSeparator 0012 auf Kreisel2 Bahn L\nFB_ILS_MTRO_1Sep_SSCC\n1x SSCC, 1x Scanner, 1x Separator\nSep: 0012\nScan: 0007\nx/y: -220, -3472", fillcolor="#ffd4d4", color="#cc3333", fontcolor="#111111", pos="-2.20,-34.72"]; + "TRO05" [label="TRO05 (2Sep2Swi)\nUebergabestelle Kreisel2/Kreisel1 (beide Sperren)\nFB_ILS_MTRO_2Sep2Swi\n2x Scanner, 2x Separator, 2x Switch\nSep: 0005, 0057\nScan: 0006, 0062\nx/y: 1012, -4650", fillcolor="#ffe4a0", color="#cc8800", fontcolor="#111111", pos="10.12,-46.50"]; + "TRO06" [label="TRO06 (1Sep_SSCC)\nSeparator 0064 auf Kreisel3 Bahn R\nFB_ILS_MTRO_1Sep_SSCC\n1x SSCC, 1x Scanner, 1x Separator\nSep: 0064\nScan: 0008\nx/y: 10490, -525", fillcolor="#ffd4d4", color="#cc3333", fontcolor="#111111", pos="104.90,-5.25"]; + "TRO07" [label="TRO07 (1Sep)\nSeparator 0065 auf Kreisel3 Bahn R\nFB_ILS_MTRO_1Sep\n1x Separator\nSep: 0065\nx/y: 10310, 160", fillcolor="#d4e8ff", color="#3388cc", fontcolor="#111111", pos="103.10,1.60"]; + "TRO08" [label="TRO08 (1Sep)\nSeparator 0066 auf Kreisel3 Bahn R\nFB_ILS_MTRO_1Sep\n1x Separator\nSep: 0066\nx/y: 10310, -5013", fillcolor="#d4e8ff", color="#3388cc", fontcolor="#111111", pos="103.10,-50.13"]; + "TRO09" [label="TRO09 (Vario)\nVarioFoerderer :3\nFB_ILS_MTRO_Vario\n1x Separator, 1x VarioDrive\nSep: 0015, 0063\nx/y: 9186, 13892", fillcolor="#e8d4f0", color="#883388", fontcolor="#111111", pos="91.86,138.92"]; + "TRO10" [label="TRO10 (Vario)\nVarioFoerderer :2\nFB_ILS_MTRO_Vario\n1x Separator, 1x VarioDrive\nSep: 0067\nx/y: 8665, -4743", fillcolor="#e8d4f0", color="#883388", fontcolor="#111111", pos="86.65,-47.43"]; + "TRO11" [label="TRO11 (Vario)\nVarioFoerderer :1\nFB_ILS_MTRO_Vario\n1x Separator, 1x VarioDrive\nSep: 0058, 0059\nScan: 0060\nx/y: -1146, 7128", fillcolor="#e8d4f0", color="#883388", fontcolor="#111111", pos="-11.46,71.28"]; + "TRO12" [label="TRO12 (PinStore_Auto)\nSpeicher (20 Schwerkraftlinien)\nFB_ILS_MTRO_PinStore_Auto\n1x Encoder, 1x Scanner, 1x Separator, 19x StorageLine\nSep: 0037 … 0068 (21)\nScan: 0069\nx/y: 1817, 3943", fillcolor="#d4f0d4", color="#338833", fontcolor="#111111", pos="18.17,39.43"]; + + "TRO01" -> "TRO05" [color="#cc8800", penwidth=1.8, xlabel="Weiche", fontcolor="#cc8800", tooltip="Weiche (Kreisel-Uebergang)"]; + "TRO02" -> "TRO09" [tooltip="Uebergabe (Ein-/Ausschleusung)"]; + "TRO03" -> "TRO02" []; + "TRO03" -> "TRO11" [tooltip="Uebergabe (Ein-/Ausschleusung)"]; + "TRO04" -> "TRO03" []; + "TRO05" -> "TRO01" [color="#cc8800", penwidth=1.8, xlabel="Weiche", fontcolor="#cc8800", tooltip="Weiche (Kreisel-Uebergang)"]; + "TRO05" -> "TRO04" [color="#8ea9db", style=dashed, tooltip="Kreisel-Umlauf"]; + "TRO05" -> "TRO10" [tooltip="Uebergabe (Ein-/Ausschleusung)"]; + "TRO06" -> "TRO08" []; + "TRO07" -> "TRO06" []; + "TRO08" -> "TRO12" [tooltip="Uebergabe (Ein-/Ausschleusung)"]; + "TRO09" -> "TRO07" [tooltip="Uebergabe (Ein-/Ausschleusung)"]; + "TRO10" -> "TRO12" [tooltip="Uebergabe (Ein-/Ausschleusung)"]; + "TRO11" -> "TRO02" [tooltip="Uebergabe (Ein-/Ausschleusung)"]; + "TRO12" -> "TRO05" [tooltip="Uebergabe (Ein-/Ausschleusung)"]; + + subgraph cluster_legende { + label="Legende"; style="rounded"; color="#a6a6a6"; + fontname="Segoe UI"; fontsize=10; fontcolor="#404040"; + legende [shape=plaintext, style="", fillcolor="none", label=<
sep Separator
swi Weiche
sscc Scanner (SSCC)
vario Kettenfoerderer
store Speicher / Puffer
ext Systemgrenze / extern
durchgezogenUebergabe / Ein-Ausschleusung
blau gestricheltKreisel-Umlauf
orangeWeiche (Kreisel-Uebergang)
grau gepunktetgleiche Bahn / Strecke
>]; + } +} diff --git a/doc/updated_mubea/export_tro_flow.svg b/doc/updated_mubea/export_tro_flow.svg new file mode 100644 index 0000000..b95029d --- /dev/null +++ b/doc/updated_mubea/export_tro_flow.svg @@ -0,0 +1,333 @@ + + + + + + +TROFluss + +TRO-Fluss - export.csv + +cluster_legende + +Legende + + + +TRO01 + +TRO01  (1Sep) +Separator 0061 auf Kreisel1 Bahn R +FB_ILS_MTRO_1Sep +1x Separator +Sep: 0061 +x/y: 5355, -5878 + + + +TRO05 + +TRO05  (2Sep2Swi) +Uebergabestelle Kreisel2/Kreisel1 (beide Sperren) +FB_ILS_MTRO_2Sep2Swi +2x Scanner, 2x Separator, 2x Switch +Sep: 0005, 0057 +Scan: 0006, 0062 +x/y: 1012, -4650 + + + +TRO01->TRO05 + + + + + +Weiche + + + +TRO02 + +TRO02  (1Sep_SSCC) +Separator 0003 auf Kreisel2 Bahn L +FB_ILS_MTRO_1Sep_SSCC +1x SSCC, 1x Scanner, 1x Separator +Sep: 0003 +Scan: 0004 +x/y: -220, 13960 + + + +TRO09 + +TRO09  (Vario) +VarioFoerderer :3 +FB_ILS_MTRO_Vario +1x Separator, 1x VarioDrive +Sep: 0015, 0063 +x/y: 9186, 13892 + + + +TRO02->TRO09 + + + + + + + + +TRO03 + +TRO03  (1Sep1Swi) +Separator 0011 auf Kreisel2 Bahn L +FB_ILS_MTRO_1Sep1Swi +1x Separator, 1x Switch +Sep: 0011 +Scan: 0009 +x/y: -220, -481 + + + +TRO03->TRO02 + + + + + +TRO11 + +TRO11  (Vario) +VarioFoerderer :1 +FB_ILS_MTRO_Vario +1x Separator, 1x VarioDrive +Sep: 0058, 0059 +Scan: 0060 +x/y: -1146, 7128 + + + +TRO03->TRO11 + + + + + + + + +TRO04 + +TRO04  (1Sep_SSCC) +Separator 0012 auf Kreisel2 Bahn L +FB_ILS_MTRO_1Sep_SSCC +1x SSCC, 1x Scanner, 1x Separator +Sep: 0012 +Scan: 0007 +x/y: -220, -3472 + + + +TRO04->TRO03 + + + + + +TRO05->TRO01 + + + + + +Weiche + + + +TRO05->TRO04 + + + + + + + + +TRO10 + +TRO10  (Vario) +VarioFoerderer :2 +FB_ILS_MTRO_Vario +1x Separator, 1x VarioDrive +Sep: 0067 +x/y: 8665, -4743 + + + +TRO05->TRO10 + + + + + + + + +TRO06 + +TRO06  (1Sep_SSCC) +Separator 0064 auf Kreisel3 Bahn R +FB_ILS_MTRO_1Sep_SSCC +1x SSCC, 1x Scanner, 1x Separator +Sep: 0064 +Scan: 0008 +x/y: 10490, -525 + + + +TRO08 + +TRO08  (1Sep) +Separator 0066 auf Kreisel3 Bahn R +FB_ILS_MTRO_1Sep +1x Separator +Sep: 0066 +x/y: 10310, -5013 + + + +TRO06->TRO08 + + + + + +TRO07 + +TRO07  (1Sep) +Separator 0065 auf Kreisel3 Bahn R +FB_ILS_MTRO_1Sep +1x Separator +Sep: 0065 +x/y: 10310, 160 + + + +TRO07->TRO06 + + + + + +TRO12 + +TRO12  (PinStore_Auto) +Speicher (20 Schwerkraftlinien) +FB_ILS_MTRO_PinStore_Auto +1x Encoder, 1x Scanner, 1x Separator, 19x StorageLine +Sep: 0037 … 0068 (21) +Scan: 0069 +x/y: 1817, 3943 + + + +TRO08->TRO12 + + + + + + + + +TRO09->TRO07 + + + + + + + + +TRO10->TRO12 + + + + + + + + +TRO11->TRO02 + + + + + + + + +TRO12->TRO05 + + + + + + + + +legende + + +  sep   + +Separator + + +  swi   + +Weiche + + +  sscc   + +Scanner (SSCC) + + +  vario   + +Kettenfoerderer + + +  store   + +Speicher / Puffer + + +  ext   + +Systemgrenze / extern + +durchgezogen + +Uebergabe / Ein-Ausschleusung + +blau gestrichelt + +Kreisel-Umlauf + +orange + +Weiche (Kreisel-Uebergang) + +grau gepunktet + +gleiche Bahn / Strecke + + +