SCL aus parametrisierten Templates: Golden-Files, Render-Kontext, Pilot 1Sep1Swi
Schritte 1-3 aus doc/SCL_Templates.md (neu: Konzept, Wertklassen je Zeile, Namensregeln, Tests, Migrationsplan, Vertrag fuer den CSV->SCL-Workflow). - Golden-Files (tests/test_scl_skeleton_golden.py, tests/fixtures/scl/): komplette FB_Main-Ausgabe von mubea und HundM05 byte-genau festgeschrieben, Zeitstempel maskiert; gewollte Aenderung per SKEL_UPDATE_GOLDEN=1 - lib/scl_context.py (neu): alles, was scl_skeleton aus der TRO-JSON ableitet (Reihenfolge, Separator-/Weichen-/Scanner-Bloecke, Staubereiche, Ziellisten, Namen) als pydantic-Kontext SclFile/SclTro; Namen als SclName (Wert + todo-Merker) als Andockstelle fuer die Namensregeln (Schritt 4). scl_skeleton schreibt nur noch Text; Ausgabe byte-identisch (Golden-Files, zusaetzlich dematic/showroom mit und ohne --start alt/neu verglichen) - lib/scl_templates/ (neu, Jinja2): _macros.scl.j2 + Pilot FB_ILS_MTRO_1Sep1Swi.scl.j2 nach der realen Aufrufstelle TRO107 (PriorityManagerDir2, stInSenJam<n>, xInCarouselRun1, xInRelease TRUE, Separatorzeiten 100/50 ms). Ortsgebundene Zeilen als Vorschlag umgesetzt, jede offene Stelle mit TODO(E-Planung) - Bestaetigung durch SPS steht aus - scl_skeleton: --templates [DIR] (opt-in, ohne Schalter Ausgabe unveraendert), --strict (Exit 1 ohne SCL, wenn ein FB-Typ kein Template hat); Kopf und Zusammenfassung nennen Template-/generische Typen; Templatefehler (StrictUndefined) -> Exit 1 ohne SCL - tests/test_scl_templates.py: Rundlauf Template mit Referenzwerten == Referenz-REGION (normalisiert); jede Platzhalterzeile traegt den TODO-Marker - requirements.txt: jinja2 >= 3.1 (bestehende .venv: pip install -r requirements.txt) - Doku: SCL_Templates.md, Python_Scripts.md §5b, Commandlines.md §2.5, CLAUDE.md Befunde: xInCarouselRun1 laesst sich nicht aus der TRO-JSON ableiten (Kanten- art "umlauf" kommt praktisch nicht vor) -> immer als TODO; nTo1Destinations ist in der Referenz 3 bei 2 Abgaengen (zaehlt evtl. Ziele) -> "pruefen". Mit --templates nur die 1Sep1Swi-REGIONs (+ Kopf) anders als generisch; 32 Tests gruen. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
97a0db6707
commit
4895ebf5ed
+981
@@ -0,0 +1,981 @@
|
||||
// ============================================================
|
||||
// FB_Main - GERUEST, erzeugt von lib/scl_skeleton.py
|
||||
// Quelle : HundM05_tro.json
|
||||
// Erzeugt: <maskiert>
|
||||
//
|
||||
// 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 TRO20: Materialeingang ueber SYS1, SYS2.
|
||||
// ============================================================
|
||||
|
||||
FUNCTION_BLOCK "FB_Main"
|
||||
{ S7_Optimized_Access := 'TRUE' }
|
||||
VERSION : 0.1
|
||||
VAR
|
||||
TRO20 : "FB_ILS_MTRO_1Sep"; // 1Sep, Sep 0007
|
||||
TRO01 : "FB_ILS_MTRO_1Sep1Swi"; // 1Sep1Swi, Sep 0008
|
||||
TRO02 : "FB_ILS_MTRO_Vario"; // Vario, Sep 0025
|
||||
TRO06 : "FB_ILS_MTRO_1Sep1Swi"; // 1Sep1Swi, Sep 0010
|
||||
TRO03 : "FB_ILS_MTRO_1Sep"; // 1Sep, Sep 0026
|
||||
TRO07 : "FB_ILS_MTRO_Vario"; // Vario, Sep 0031
|
||||
TRO09 : "FB_ILS_MTRO_1Sep1Swi"; // 1Sep1Swi, Sep 0012
|
||||
TRO04 : "FB_ILS_MTRO_Vario"; // Vario, Sep 0027
|
||||
TRO08 : "FB_ILS_MTRO_1Sep"; // 1Sep, Sep 0032
|
||||
TRO10 : "FB_ILS_MTRO_Vario"; // Vario, Sep 0035
|
||||
TRO12 : "FB_ILS_MTRO_1Sep1Swi"; // 1Sep1Swi, Sep 0014
|
||||
TRO05 : "FB_ILS_MTRO_1Sep"; // 1Sep, Sep 0028
|
||||
TRO11 : "FB_ILS_MTRO_1Sep"; // 1Sep, Sep 0036
|
||||
TRO13 : "FB_ILS_MTRO_Vario"; // Vario, Sep 0039
|
||||
TRO15 : "FB_ILS_MTRO_1Sep1Swi"; // 1Sep1Swi, Sep 0016
|
||||
TRO14 : "FB_ILS_MTRO_1Sep"; // 1Sep, Sep 0040
|
||||
TRO16 : "FB_ILS_MTRO_1Sep"; // 1Sep, Sep 0018
|
||||
TRO17 : "FB_ILS_MTRO_Vario"; // Vario, Sep 0043
|
||||
TRO19 : "FB_ILS_MTRO_1Sep"; // 1Sep, Sep 0020
|
||||
TRO18 : "FB_ILS_MTRO_1Sep"; // 1Sep, Sep 0044
|
||||
END_VAR
|
||||
|
||||
BEGIN
|
||||
|
||||
REGION TRO20 (1Sep) Sep 0007
|
||||
// Anlagenkoordinate x/y: 2415 / 365 mm
|
||||
// Vorgaenger: SYS1, SYS2, TRO19
|
||||
// Nachfolger: TRO01
|
||||
// Einstufung: mittel
|
||||
|
||||
// Separator 1 = Bauteil 0007 aus dem Layout
|
||||
#TRO20.stInSeparator1.Settings.nSeparatorNo := "cSep_____"; // TODO(E-Planung)
|
||||
#TRO20.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||
#TRO20.stInSeparator1.Settings.tTrailingTime := t#600ms; // TODO(E-Planung): pruefen
|
||||
#TRO20.stInSeparator1.Settings.tHandlingTime := t#200ms; // TODO(E-Planung): pruefen
|
||||
#TRO20.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||
#TRO20.stInSeparator1.Settings.xPluggedJam := TRUE;
|
||||
#TRO20.stInSeparator1.Settings.xPluggedPart := FALSE;
|
||||
#TRO20.stInSeparator1.Settings.xPluggedScanner := FALSE;
|
||||
#TRO20.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO20.stInSeparator1.Settings.tSenFree := T#1500ms; // TODO(E-Planung): pruefen
|
||||
#TRO20.stInSeparator1.Settings.tSenWait := T#4000ms; // TODO(E-Planung): pruefen
|
||||
|
||||
#TRO20.stInPriorityManager.xReleaseOk := TRUE;
|
||||
|
||||
#TRO20(nInMainTroNo := "cMainTro____", // TODO(E-Planung)
|
||||
xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung)
|
||||
xInAllRdyToStart := TRUE,
|
||||
xInRelease := "DB_TRO_TEST".TRO20,
|
||||
stInOutMachineState := #stInOutControlUnitCabinet,
|
||||
stInOutCognexInterface := #stCognexInterfaceDummy,
|
||||
arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von SYS1 (Station, kein TRO)
|
||||
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamEntr2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von SYS2 (Station, kein TRO)
|
||||
stInOutJamEntr2 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamEntr3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO19
|
||||
stInOutJamEntr3 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO01
|
||||
stInOutJamExit2 := "DB_JamArea____".stJam____.stData,
|
||||
xOutStopper1 => "MB____", // TODO(E-Planung)
|
||||
stInOutHMI := "DB_Interface_HMI".stTRO.TRO20,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
END_REGION
|
||||
|
||||
REGION TRO01 (1Sep1Swi) Sep 0008
|
||||
// Anlagenkoordinate x/y: 4076 / 985 mm
|
||||
// Vorgaenger: TRO20
|
||||
// Nachfolger: TRO02, TRO06
|
||||
// Einstufung: mittel
|
||||
|
||||
// Separator 1 = Bauteil 0008 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.stInSwitch1.Settings.nSwitchNo := "cSwi_____"; // TODO(E-Planung)
|
||||
#TRO01.stInSwitch1.Settings.xPluggedExSen3 := FALSE;
|
||||
#TRO01.stInSwitch1.Settings.xPluggedExSen4 := FALSE;
|
||||
#TRO01.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: SYS3, TRO02, TRO03, TRO04, TRO05, TRO06, TRO07, TRO08, TRO09, TRO10, TRO11, TRO12, TRO13, TRO14, TRO15, TRO16, TRO17, TRO18, TRO19, TRO20
|
||||
// ueber TRO06: SYS3, TRO06, TRO07, TRO08, TRO09, TRO10, TRO11, TRO12, TRO13, TRO14, TRO15, TRO16, TRO17, TRO18, TRO19, TRO20
|
||||
|
||||
#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 TRO20
|
||||
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 TRO06
|
||||
stInOutJamExit3 := "DB_JamArea____".stJam____.stData,
|
||||
xOutStopper1 => "MB____", // TODO(E-Planung)
|
||||
xOutSw1ExTo3 => "MB____", // TODO(E-Planung)
|
||||
stInOutHMI := "DB_Interface_HMI".stTRO.TRO01,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
|
||||
REGION Direction
|
||||
"FC_Direction"(nInSwitchNo := "cSwi_____", // TODO(E-Planung)
|
||||
nOutDirection => #TRO01.nInDirection,
|
||||
InOutCarrier := "DB_JamArea____".stJam____.arCarrier[1]);
|
||||
END_REGION
|
||||
END_REGION
|
||||
|
||||
REGION TRO02 (Vario) Sep 0025
|
||||
// Anlagenkoordinate x/y: 5070 / 2530 mm
|
||||
// Vorgaenger: TRO01
|
||||
// Nachfolger: TRO03
|
||||
// Einstufung: hoch
|
||||
|
||||
// Separator 1 = Bauteil 0025 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 := FALSE;
|
||||
#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.stInVario.Settings.xContinousEmptying := FALSE;
|
||||
#TRO02.stInVario.Settings.tWaitForJog := T#300ms; // TODO(E-Planung): pruefen
|
||||
#TRO02.stInVario.Settings.tConvEmpty := T#45000ms; // TODO(E-Planung): pruefen
|
||||
#TRO02.stInVario.Settings.nCountCarrier := 1; // TODO(E-Planung): pruefen
|
||||
#TRO02.stInVario.Settings.tWaitForStop := t#3s;
|
||||
#TRO02.stInVario.Settings.tCarrierInPosDelay := t#1200ms;
|
||||
#TRO02.stInVario.Settings.tCarrierInPosEdgeDelay := t#100ms;
|
||||
#TRO02.stInVario.Settings.xJamSenDelayActive := TRUE;
|
||||
#TRO02.stInVario.Settings.tJamSenDelay := T#2s;
|
||||
#TRO02.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO02.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO02.stInVario.stSenLastPos := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO02.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
|
||||
#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,
|
||||
xInMotorProtection := "FC____", // TODO(E-Planung)
|
||||
xInAutomatic := #t_automatik,
|
||||
stInOutMachineState := #stInOutControlUnitCabinet,
|
||||
stInOutCognexInterface := #stCognexInterfaceDummy,
|
||||
arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO01
|
||||
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)
|
||||
xOutVarioMotor => "MA____", // TODO(E-Planung)
|
||||
stInOutHMI := "DB_Interface_HMI".stTRO.TRO02,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
END_REGION
|
||||
|
||||
REGION TRO06 (1Sep1Swi) Sep 0010
|
||||
// Anlagenkoordinate x/y: 8577 / 989 mm
|
||||
// Vorgaenger: TRO01, TRO05
|
||||
// Nachfolger: TRO07, TRO09
|
||||
// Einstufung: mittel
|
||||
|
||||
// Separator 1 = Bauteil 0010 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 := FALSE;
|
||||
#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.stInSwitch1.Settings.nSwitchNo := "cSwi_____"; // TODO(E-Planung)
|
||||
#TRO06.stInSwitch1.Settings.xPluggedExSen3 := FALSE;
|
||||
#TRO06.stInSwitch1.Settings.xPluggedExSen4 := FALSE;
|
||||
#TRO06.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 TRO07: SYS3, TRO01, TRO02, TRO03, TRO04, TRO05, TRO07, TRO08, TRO09, TRO10, TRO11, TRO12, TRO13, TRO14, TRO15, TRO16, TRO17, TRO18, TRO19, TRO20
|
||||
// ueber TRO09: SYS3, TRO01, TRO02, TRO03, TRO04, TRO05, TRO09, TRO10, TRO11, TRO12, TRO13, TRO14, TRO15, TRO16, TRO17, TRO18, TRO19, TRO20
|
||||
|
||||
#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 TRO01
|
||||
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamEntr2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO05
|
||||
stInOutJamEntr2 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO07
|
||||
stInOutJamExit2 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO09
|
||||
stInOutJamExit3 := "DB_JamArea____".stJam____.stData,
|
||||
xOutStopper1 => "MB____", // TODO(E-Planung)
|
||||
xOutSw1ExTo3 => "MB____", // TODO(E-Planung)
|
||||
stInOutHMI := "DB_Interface_HMI".stTRO.TRO06,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
|
||||
REGION Direction
|
||||
"FC_Direction"(nInSwitchNo := "cSwi_____", // TODO(E-Planung)
|
||||
nOutDirection => #TRO06.nInDirection,
|
||||
InOutCarrier := "DB_JamArea____".stJam____.arCarrier[1]);
|
||||
END_REGION
|
||||
END_REGION
|
||||
|
||||
REGION TRO03 (1Sep) Sep 0026
|
||||
// Anlagenkoordinate x/y: 7223 / 6180 mm
|
||||
// Vorgaenger: TRO02
|
||||
// Nachfolger: TRO04
|
||||
// Einstufung: mittel
|
||||
|
||||
// Separator 1 = Bauteil 0026 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.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 TRO02
|
||||
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO04
|
||||
stInOutJamExit2 := "DB_JamArea____".stJam____.stData,
|
||||
xOutStopper1 => "MB____", // TODO(E-Planung)
|
||||
stInOutHMI := "DB_Interface_HMI".stTRO.TRO03,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
END_REGION
|
||||
|
||||
REGION TRO07 (Vario) Sep 0031
|
||||
// Anlagenkoordinate x/y: 9571 / 5933 mm
|
||||
// Vorgaenger: TRO06
|
||||
// Nachfolger: TRO08
|
||||
// Einstufung: hoch
|
||||
|
||||
// Separator 1 = Bauteil 0031 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.stInVario.Settings.xContinousEmptying := FALSE;
|
||||
#TRO07.stInVario.Settings.tWaitForJog := T#300ms; // TODO(E-Planung): pruefen
|
||||
#TRO07.stInVario.Settings.tConvEmpty := T#45000ms; // TODO(E-Planung): pruefen
|
||||
#TRO07.stInVario.Settings.nCountCarrier := 1; // TODO(E-Planung): pruefen
|
||||
#TRO07.stInVario.Settings.tWaitForStop := t#3s;
|
||||
#TRO07.stInVario.Settings.tCarrierInPosDelay := t#1200ms;
|
||||
#TRO07.stInVario.Settings.tCarrierInPosEdgeDelay := t#100ms;
|
||||
#TRO07.stInVario.Settings.xJamSenDelayActive := TRUE;
|
||||
#TRO07.stInVario.Settings.tJamSenDelay := T#2s;
|
||||
#TRO07.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO07.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO07.stInVario.stSenLastPos := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO07.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
|
||||
#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,
|
||||
xInMotorProtection := "FC____", // TODO(E-Planung)
|
||||
xInAutomatic := #t_automatik,
|
||||
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 TRO08
|
||||
stInOutJamExit2 := "DB_JamArea____".stJam____.stData,
|
||||
xOutStopper1 => "MB____", // TODO(E-Planung)
|
||||
xOutVarioMotor => "MA____", // TODO(E-Planung)
|
||||
stInOutHMI := "DB_Interface_HMI".stTRO.TRO07,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
END_REGION
|
||||
|
||||
REGION TRO09 (1Sep1Swi) Sep 0012
|
||||
// Anlagenkoordinate x/y: 12650 / 987 mm
|
||||
// Vorgaenger: TRO06, TRO08
|
||||
// Nachfolger: TRO10, TRO12
|
||||
// Einstufung: mittel
|
||||
|
||||
// Separator 1 = Bauteil 0012 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.stInSwitch1.Settings.nSwitchNo := "cSwi_____"; // TODO(E-Planung)
|
||||
#TRO09.stInSwitch1.Settings.xPluggedExSen3 := FALSE;
|
||||
#TRO09.stInSwitch1.Settings.xPluggedExSen4 := FALSE;
|
||||
#TRO09.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 TRO10: SYS3, TRO01, TRO02, TRO03, TRO04, TRO05, TRO06, TRO07, TRO08, TRO10, TRO11, TRO12, TRO13, TRO14, TRO15, TRO16, TRO17, TRO18, TRO19, TRO20
|
||||
// ueber TRO12: SYS3, TRO01, TRO02, TRO03, TRO04, TRO05, TRO06, TRO07, TRO08, TRO12, TRO13, TRO14, TRO15, TRO16, TRO17, TRO18, TRO19, TRO20
|
||||
|
||||
#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,
|
||||
stInOutMachineState := #stInOutControlUnitCabinet,
|
||||
stInOutCognexInterface := #stCognexInterfaceDummy,
|
||||
arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO06
|
||||
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamEntr2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO08
|
||||
stInOutJamEntr2 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO10
|
||||
stInOutJamExit2 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO12
|
||||
stInOutJamExit3 := "DB_JamArea____".stJam____.stData,
|
||||
xOutStopper1 => "MB____", // TODO(E-Planung)
|
||||
xOutSw1ExTo3 => "MB____", // TODO(E-Planung)
|
||||
stInOutHMI := "DB_Interface_HMI".stTRO.TRO09,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
|
||||
REGION Direction
|
||||
"FC_Direction"(nInSwitchNo := "cSwi_____", // TODO(E-Planung)
|
||||
nOutDirection => #TRO09.nInDirection,
|
||||
InOutCarrier := "DB_JamArea____".stJam____.arCarrier[1]);
|
||||
END_REGION
|
||||
END_REGION
|
||||
|
||||
REGION TRO04 (Vario) Sep 0027
|
||||
// Anlagenkoordinate x/y: 7223 / 5680 mm
|
||||
// Vorgaenger: TRO03
|
||||
// Nachfolger: TRO05
|
||||
// Einstufung: hoch
|
||||
|
||||
// Separator 1 = Bauteil 0027 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 := FALSE;
|
||||
#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.stInVario.Settings.xContinousEmptying := FALSE;
|
||||
#TRO04.stInVario.Settings.tWaitForJog := T#300ms; // TODO(E-Planung): pruefen
|
||||
#TRO04.stInVario.Settings.tConvEmpty := T#45000ms; // TODO(E-Planung): pruefen
|
||||
#TRO04.stInVario.Settings.nCountCarrier := 1; // TODO(E-Planung): pruefen
|
||||
#TRO04.stInVario.Settings.tWaitForStop := t#3s;
|
||||
#TRO04.stInVario.Settings.tCarrierInPosDelay := t#1200ms;
|
||||
#TRO04.stInVario.Settings.tCarrierInPosEdgeDelay := t#100ms;
|
||||
#TRO04.stInVario.Settings.xJamSenDelayActive := TRUE;
|
||||
#TRO04.stInVario.Settings.tJamSenDelay := T#2s;
|
||||
#TRO04.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO04.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO04.stInVario.stSenLastPos := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO04.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
|
||||
#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,
|
||||
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 TRO05
|
||||
stInOutJamExit2 := "DB_JamArea____".stJam____.stData,
|
||||
xOutStopper1 => "MB____", // TODO(E-Planung)
|
||||
xOutVarioMotor => "MA____", // TODO(E-Planung)
|
||||
stInOutHMI := "DB_Interface_HMI".stTRO.TRO04,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
END_REGION
|
||||
|
||||
REGION TRO08 (1Sep) Sep 0032
|
||||
// Anlagenkoordinate x/y: 10841 / 1724 mm
|
||||
// Vorgaenger: TRO07
|
||||
// Nachfolger: TRO09
|
||||
// Einstufung: mittel
|
||||
|
||||
// Separator 1 = Bauteil 0032 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 TRO07
|
||||
stInOutJamEntr1 := "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.TRO08,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
END_REGION
|
||||
|
||||
REGION TRO10 (Vario) Sep 0035
|
||||
// Anlagenkoordinate x/y: 13648 / 5933 mm
|
||||
// Vorgaenger: TRO09
|
||||
// Nachfolger: TRO11
|
||||
// Einstufung: hoch
|
||||
|
||||
// Separator 1 = Bauteil 0035 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 TRO09
|
||||
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO11
|
||||
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 TRO12 (1Sep1Swi) Sep 0014
|
||||
// Anlagenkoordinate x/y: 16820 / 991 mm
|
||||
// Vorgaenger: TRO09, TRO11
|
||||
// Nachfolger: TRO13, TRO15
|
||||
// Einstufung: mittel
|
||||
|
||||
// Separator 1 = Bauteil 0014 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 := FALSE;
|
||||
#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.stInSwitch1.Settings.nSwitchNo := "cSwi_____"; // TODO(E-Planung)
|
||||
#TRO12.stInSwitch1.Settings.xPluggedExSen3 := FALSE;
|
||||
#TRO12.stInSwitch1.Settings.xPluggedExSen4 := FALSE;
|
||||
#TRO12.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 TRO13: SYS3, TRO01, TRO02, TRO03, TRO04, TRO05, TRO06, TRO07, TRO08, TRO09, TRO10, TRO11, TRO13, TRO14, TRO15, TRO16, TRO17, TRO18, TRO19, TRO20
|
||||
// ueber TRO15: SYS3, TRO01, TRO02, TRO03, TRO04, TRO05, TRO06, TRO07, TRO08, TRO09, TRO10, TRO11, TRO15, TRO16, TRO17, TRO18, TRO19, TRO20
|
||||
|
||||
#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 TRO09
|
||||
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 TRO13
|
||||
stInOutJamExit2 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO15
|
||||
stInOutJamExit3 := "DB_JamArea____".stJam____.stData,
|
||||
xOutStopper1 => "MB____", // TODO(E-Planung)
|
||||
xOutSw1ExTo3 => "MB____", // TODO(E-Planung)
|
||||
stInOutHMI := "DB_Interface_HMI".stTRO.TRO12,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
|
||||
REGION Direction
|
||||
"FC_Direction"(nInSwitchNo := "cSwi_____", // TODO(E-Planung)
|
||||
nOutDirection => #TRO12.nInDirection,
|
||||
InOutCarrier := "DB_JamArea____".stJam____.arCarrier[1]);
|
||||
END_REGION
|
||||
END_REGION
|
||||
|
||||
REGION TRO05 (1Sep) Sep 0028
|
||||
// Anlagenkoordinate x/y: 6274 / 1756 mm
|
||||
// Vorgaenger: TRO04
|
||||
// Nachfolger: TRO06
|
||||
// Einstufung: mittel
|
||||
|
||||
// Separator 1 = Bauteil 0028 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 := FALSE;
|
||||
#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
|
||||
|
||||
#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 TRO04
|
||||
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.TRO05,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
END_REGION
|
||||
|
||||
REGION TRO11 (1Sep) Sep 0036
|
||||
// Anlagenkoordinate x/y: 14918 / 1725 mm
|
||||
// Vorgaenger: TRO10
|
||||
// Nachfolger: TRO12
|
||||
// Einstufung: mittel
|
||||
|
||||
// Separator 1 = Bauteil 0036 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.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,
|
||||
stInOutMachineState := #stInOutControlUnitCabinet,
|
||||
stInOutCognexInterface := #stCognexInterfaceDummy,
|
||||
arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO10
|
||||
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.TRO11,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
END_REGION
|
||||
|
||||
REGION TRO13 (Vario) Sep 0039
|
||||
// Anlagenkoordinate x/y: 17816 / 5934 mm
|
||||
// Vorgaenger: TRO12
|
||||
// Nachfolger: TRO14
|
||||
// Einstufung: hoch
|
||||
|
||||
// Separator 1 = Bauteil 0039 aus dem Layout
|
||||
#TRO13.stInSeparator1.Settings.nSeparatorNo := "cSep_____"; // TODO(E-Planung)
|
||||
#TRO13.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||
#TRO13.stInSeparator1.Settings.tTrailingTime := t#600ms; // TODO(E-Planung): pruefen
|
||||
#TRO13.stInSeparator1.Settings.tHandlingTime := t#200ms; // TODO(E-Planung): pruefen
|
||||
#TRO13.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||
#TRO13.stInSeparator1.Settings.xPluggedJam := TRUE;
|
||||
#TRO13.stInSeparator1.Settings.xPluggedPart := FALSE;
|
||||
#TRO13.stInSeparator1.Settings.xPluggedScanner := FALSE;
|
||||
#TRO13.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO13.stInSeparator1.Settings.tSenFree := T#1500ms; // TODO(E-Planung): pruefen
|
||||
#TRO13.stInSeparator1.Settings.tSenWait := T#4000ms; // TODO(E-Planung): pruefen
|
||||
|
||||
#TRO13.stInVario.Settings.xContinousEmptying := FALSE;
|
||||
#TRO13.stInVario.Settings.tWaitForJog := T#300ms; // TODO(E-Planung): pruefen
|
||||
#TRO13.stInVario.Settings.tConvEmpty := T#45000ms; // TODO(E-Planung): pruefen
|
||||
#TRO13.stInVario.Settings.nCountCarrier := 1; // TODO(E-Planung): pruefen
|
||||
#TRO13.stInVario.Settings.tWaitForStop := t#3s;
|
||||
#TRO13.stInVario.Settings.tCarrierInPosDelay := t#1200ms;
|
||||
#TRO13.stInVario.Settings.tCarrierInPosEdgeDelay := t#100ms;
|
||||
#TRO13.stInVario.Settings.xJamSenDelayActive := TRUE;
|
||||
#TRO13.stInVario.Settings.tJamSenDelay := T#2s;
|
||||
#TRO13.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO13.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO13.stInVario.stSenLastPos := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO13.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
|
||||
#TRO13.stInPriorityManager.xReleaseOk := TRUE;
|
||||
|
||||
#TRO13(nInMainTroNo := "cMainTro____", // TODO(E-Planung)
|
||||
xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung)
|
||||
xInAllRdyToStart := TRUE,
|
||||
xInRelease := "DB_TRO_TEST".TRO13,
|
||||
xInMotorProtection := "FC____", // TODO(E-Planung)
|
||||
xInAutomatic := #t_automatik,
|
||||
stInOutMachineState := #stInOutControlUnitCabinet,
|
||||
stInOutCognexInterface := #stCognexInterfaceDummy,
|
||||
arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO12
|
||||
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO14
|
||||
stInOutJamExit2 := "DB_JamArea____".stJam____.stData,
|
||||
xOutStopper1 => "MB____", // TODO(E-Planung)
|
||||
xOutVarioMotor => "MA____", // TODO(E-Planung)
|
||||
stInOutHMI := "DB_Interface_HMI".stTRO.TRO13,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
END_REGION
|
||||
|
||||
REGION TRO15 (1Sep1Swi) Sep 0016
|
||||
// Anlagenkoordinate x/y: 20692 / 985 mm
|
||||
// Vorgaenger: TRO12, TRO14
|
||||
// Nachfolger: TRO16, TRO17
|
||||
// Einstufung: mittel
|
||||
|
||||
// Separator 1 = Bauteil 0016 aus dem Layout
|
||||
#TRO15.stInSeparator1.Settings.nSeparatorNo := "cSep_____"; // TODO(E-Planung)
|
||||
#TRO15.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||
#TRO15.stInSeparator1.Settings.tTrailingTime := t#600ms; // TODO(E-Planung): pruefen
|
||||
#TRO15.stInSeparator1.Settings.tHandlingTime := t#200ms; // TODO(E-Planung): pruefen
|
||||
#TRO15.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||
#TRO15.stInSeparator1.Settings.xPluggedJam := TRUE;
|
||||
#TRO15.stInSeparator1.Settings.xPluggedPart := FALSE;
|
||||
#TRO15.stInSeparator1.Settings.xPluggedScanner := FALSE;
|
||||
#TRO15.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO15.stInSeparator1.Settings.tSenFree := T#1500ms; // TODO(E-Planung): pruefen
|
||||
#TRO15.stInSeparator1.Settings.tSenWait := T#4000ms; // TODO(E-Planung): pruefen
|
||||
|
||||
#TRO15.stInSwitch1.Settings.nSwitchNo := "cSwi_____"; // TODO(E-Planung)
|
||||
#TRO15.stInSwitch1.Settings.xPluggedExSen3 := FALSE;
|
||||
#TRO15.stInSwitch1.Settings.xPluggedExSen4 := FALSE;
|
||||
#TRO15.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 TRO16: SYS3, TRO01, TRO02, TRO03, TRO04, TRO05, TRO06, TRO07, TRO08, TRO09, TRO10, TRO11, TRO12, TRO13, TRO14, TRO16, TRO19, TRO20
|
||||
// ueber TRO17: SYS3, TRO01, TRO02, TRO03, TRO04, TRO05, TRO06, TRO07, TRO08, TRO09, TRO10, TRO11, TRO12, TRO13, TRO14, TRO16, TRO17, TRO18, TRO19, TRO20
|
||||
|
||||
#TRO15.stInPriorityManager.xReleaseOk := TRUE;
|
||||
|
||||
#TRO15(nInMainTroNo := "cMainTro____", // TODO(E-Planung)
|
||||
xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung)
|
||||
xInAllRdyToStart := TRUE,
|
||||
xInRelease := "DB_TRO_TEST".TRO15,
|
||||
stInOutMachineState := #stInOutControlUnitCabinet,
|
||||
stInOutCognexInterface := #stCognexInterfaceDummy,
|
||||
arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO12
|
||||
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamEntr2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO14
|
||||
stInOutJamEntr2 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO16
|
||||
stInOutJamExit2 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO17
|
||||
stInOutJamExit3 := "DB_JamArea____".stJam____.stData,
|
||||
xOutStopper1 => "MB____", // TODO(E-Planung)
|
||||
xOutSw1ExTo3 => "MB____", // TODO(E-Planung)
|
||||
stInOutHMI := "DB_Interface_HMI".stTRO.TRO15,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
|
||||
REGION Direction
|
||||
"FC_Direction"(nInSwitchNo := "cSwi_____", // TODO(E-Planung)
|
||||
nOutDirection => #TRO15.nInDirection,
|
||||
InOutCarrier := "DB_JamArea____".stJam____.arCarrier[1]);
|
||||
END_REGION
|
||||
END_REGION
|
||||
|
||||
REGION TRO14 (1Sep) Sep 0040
|
||||
// Anlagenkoordinate x/y: 19086 / 1725 mm
|
||||
// Vorgaenger: TRO13
|
||||
// Nachfolger: TRO15
|
||||
// Einstufung: mittel
|
||||
|
||||
// Separator 1 = Bauteil 0040 aus dem Layout
|
||||
#TRO14.stInSeparator1.Settings.nSeparatorNo := "cSep_____"; // TODO(E-Planung)
|
||||
#TRO14.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||
#TRO14.stInSeparator1.Settings.tTrailingTime := t#600ms; // TODO(E-Planung): pruefen
|
||||
#TRO14.stInSeparator1.Settings.tHandlingTime := t#200ms; // TODO(E-Planung): pruefen
|
||||
#TRO14.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||
#TRO14.stInSeparator1.Settings.xPluggedJam := TRUE;
|
||||
#TRO14.stInSeparator1.Settings.xPluggedPart := FALSE;
|
||||
#TRO14.stInSeparator1.Settings.xPluggedScanner := FALSE;
|
||||
#TRO14.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO14.stInSeparator1.Settings.tSenFree := T#1500ms; // TODO(E-Planung): pruefen
|
||||
#TRO14.stInSeparator1.Settings.tSenWait := T#4000ms; // TODO(E-Planung): pruefen
|
||||
|
||||
#TRO14.stInPriorityManager.xReleaseOk := TRUE;
|
||||
|
||||
#TRO14(nInMainTroNo := "cMainTro____", // TODO(E-Planung)
|
||||
xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung)
|
||||
xInAllRdyToStart := TRUE,
|
||||
xInRelease := "DB_TRO_TEST".TRO14,
|
||||
stInOutMachineState := #stInOutControlUnitCabinet,
|
||||
stInOutCognexInterface := #stCognexInterfaceDummy,
|
||||
arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO13
|
||||
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO15
|
||||
stInOutJamExit2 := "DB_JamArea____".stJam____.stData,
|
||||
xOutStopper1 => "MB____", // TODO(E-Planung)
|
||||
stInOutHMI := "DB_Interface_HMI".stTRO.TRO14,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
END_REGION
|
||||
|
||||
REGION TRO16 (1Sep) Sep 0018
|
||||
// Anlagenkoordinate x/y: 23729 / 990 mm
|
||||
// Vorgaenger: TRO15, TRO18
|
||||
// Nachfolger: TRO19
|
||||
// Einstufung: mittel
|
||||
|
||||
// Separator 1 = Bauteil 0018 aus dem Layout
|
||||
#TRO16.stInSeparator1.Settings.nSeparatorNo := "cSep_____"; // TODO(E-Planung)
|
||||
#TRO16.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||
#TRO16.stInSeparator1.Settings.tTrailingTime := t#600ms; // TODO(E-Planung): pruefen
|
||||
#TRO16.stInSeparator1.Settings.tHandlingTime := t#200ms; // TODO(E-Planung): pruefen
|
||||
#TRO16.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||
#TRO16.stInSeparator1.Settings.xPluggedJam := TRUE;
|
||||
#TRO16.stInSeparator1.Settings.xPluggedPart := FALSE;
|
||||
#TRO16.stInSeparator1.Settings.xPluggedScanner := FALSE;
|
||||
#TRO16.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO16.stInSeparator1.Settings.tSenFree := T#1500ms; // TODO(E-Planung): pruefen
|
||||
#TRO16.stInSeparator1.Settings.tSenWait := T#4000ms; // TODO(E-Planung): pruefen
|
||||
|
||||
#TRO16.stInPriorityManager.xReleaseOk := TRUE;
|
||||
|
||||
#TRO16(nInMainTroNo := "cMainTro____", // TODO(E-Planung)
|
||||
xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung)
|
||||
xInAllRdyToStart := TRUE,
|
||||
xInRelease := "DB_TRO_TEST".TRO16,
|
||||
stInOutMachineState := #stInOutControlUnitCabinet,
|
||||
stInOutCognexInterface := #stCognexInterfaceDummy,
|
||||
arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO15
|
||||
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamEntr2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO18
|
||||
stInOutJamEntr2 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO19
|
||||
stInOutJamExit2 := "DB_JamArea____".stJam____.stData,
|
||||
xOutStopper1 => "MB____", // TODO(E-Planung)
|
||||
stInOutHMI := "DB_Interface_HMI".stTRO.TRO16,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
END_REGION
|
||||
|
||||
REGION TRO17 (Vario) Sep 0043
|
||||
// Anlagenkoordinate x/y: 21590 / 5933 mm
|
||||
// Vorgaenger: TRO15
|
||||
// Nachfolger: TRO18
|
||||
// Einstufung: hoch
|
||||
|
||||
// Separator 1 = Bauteil 0043 aus dem Layout
|
||||
#TRO17.stInSeparator1.Settings.nSeparatorNo := "cSep_____"; // TODO(E-Planung)
|
||||
#TRO17.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||
#TRO17.stInSeparator1.Settings.tTrailingTime := t#600ms; // TODO(E-Planung): pruefen
|
||||
#TRO17.stInSeparator1.Settings.tHandlingTime := t#200ms; // TODO(E-Planung): pruefen
|
||||
#TRO17.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||
#TRO17.stInSeparator1.Settings.xPluggedJam := TRUE;
|
||||
#TRO17.stInSeparator1.Settings.xPluggedPart := FALSE;
|
||||
#TRO17.stInSeparator1.Settings.xPluggedScanner := FALSE;
|
||||
#TRO17.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO17.stInSeparator1.Settings.tSenFree := T#1500ms; // TODO(E-Planung): pruefen
|
||||
#TRO17.stInSeparator1.Settings.tSenWait := T#4000ms; // TODO(E-Planung): pruefen
|
||||
|
||||
#TRO17.stInVario.Settings.xContinousEmptying := FALSE;
|
||||
#TRO17.stInVario.Settings.tWaitForJog := T#300ms; // TODO(E-Planung): pruefen
|
||||
#TRO17.stInVario.Settings.tConvEmpty := T#45000ms; // TODO(E-Planung): pruefen
|
||||
#TRO17.stInVario.Settings.nCountCarrier := 1; // TODO(E-Planung): pruefen
|
||||
#TRO17.stInVario.Settings.tWaitForStop := t#3s;
|
||||
#TRO17.stInVario.Settings.tCarrierInPosDelay := t#1200ms;
|
||||
#TRO17.stInVario.Settings.tCarrierInPosEdgeDelay := t#100ms;
|
||||
#TRO17.stInVario.Settings.xJamSenDelayActive := TRUE;
|
||||
#TRO17.stInVario.Settings.tJamSenDelay := T#2s;
|
||||
#TRO17.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO17.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO17.stInVario.stSenLastPos := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO17.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
|
||||
#TRO17.stInPriorityManager.xReleaseOk := TRUE;
|
||||
|
||||
#TRO17(nInMainTroNo := "cMainTro____", // TODO(E-Planung)
|
||||
xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung)
|
||||
xInAllRdyToStart := TRUE,
|
||||
xInRelease := "DB_TRO_TEST".TRO17,
|
||||
xInMotorProtection := "FC____", // TODO(E-Planung)
|
||||
xInAutomatic := #t_automatik,
|
||||
stInOutMachineState := #stInOutControlUnitCabinet,
|
||||
stInOutCognexInterface := #stCognexInterfaceDummy,
|
||||
arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO15
|
||||
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO18
|
||||
stInOutJamExit2 := "DB_JamArea____".stJam____.stData,
|
||||
xOutStopper1 => "MB____", // TODO(E-Planung)
|
||||
xOutVarioMotor => "MA____", // TODO(E-Planung)
|
||||
stInOutHMI := "DB_Interface_HMI".stTRO.TRO17,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
END_REGION
|
||||
|
||||
REGION TRO19 (1Sep) Sep 0020
|
||||
// Anlagenkoordinate x/y: 24570 / 1167 mm
|
||||
// Vorgaenger: TRO16
|
||||
// Nachfolger: SYS3, TRO20
|
||||
// Einstufung: mittel
|
||||
|
||||
// Separator 1 = Bauteil 0020 aus dem Layout
|
||||
#TRO19.stInSeparator1.Settings.nSeparatorNo := "cSep_____"; // TODO(E-Planung)
|
||||
#TRO19.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||
#TRO19.stInSeparator1.Settings.tTrailingTime := t#600ms; // TODO(E-Planung): pruefen
|
||||
#TRO19.stInSeparator1.Settings.tHandlingTime := t#200ms; // TODO(E-Planung): pruefen
|
||||
#TRO19.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||
#TRO19.stInSeparator1.Settings.xPluggedJam := TRUE;
|
||||
#TRO19.stInSeparator1.Settings.xPluggedPart := FALSE;
|
||||
#TRO19.stInSeparator1.Settings.xPluggedScanner := FALSE;
|
||||
#TRO19.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO19.stInSeparator1.Settings.tSenFree := T#1500ms; // TODO(E-Planung): pruefen
|
||||
#TRO19.stInSeparator1.Settings.tSenWait := T#4000ms; // TODO(E-Planung): pruefen
|
||||
|
||||
#TRO19.stInPriorityManager.xReleaseOk := TRUE;
|
||||
|
||||
#TRO19(nInMainTroNo := "cMainTro____", // TODO(E-Planung)
|
||||
xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung)
|
||||
xInAllRdyToStart := TRUE,
|
||||
xInRelease := "DB_TRO_TEST".TRO19,
|
||||
stInOutMachineState := #stInOutControlUnitCabinet,
|
||||
stInOutCognexInterface := #stCognexInterfaceDummy,
|
||||
arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO16
|
||||
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach SYS3 (Station, kein TRO)
|
||||
stInOutJamExit2 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO20
|
||||
stInOutJamExit3 := "DB_JamArea____".stJam____.stData,
|
||||
xOutStopper1 => "MB____", // TODO(E-Planung)
|
||||
stInOutHMI := "DB_Interface_HMI".stTRO.TRO19,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
END_REGION
|
||||
|
||||
REGION TRO18 (1Sep) Sep 0044
|
||||
// Anlagenkoordinate x/y: 22860 / 1724 mm
|
||||
// Vorgaenger: TRO17
|
||||
// Nachfolger: TRO16
|
||||
// Einstufung: mittel
|
||||
|
||||
// Separator 1 = Bauteil 0044 aus dem Layout
|
||||
#TRO18.stInSeparator1.Settings.nSeparatorNo := "cSep_____"; // TODO(E-Planung)
|
||||
#TRO18.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||
#TRO18.stInSeparator1.Settings.tTrailingTime := t#600ms; // TODO(E-Planung): pruefen
|
||||
#TRO18.stInSeparator1.Settings.tHandlingTime := t#200ms; // TODO(E-Planung): pruefen
|
||||
#TRO18.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||
#TRO18.stInSeparator1.Settings.xPluggedJam := TRUE;
|
||||
#TRO18.stInSeparator1.Settings.xPluggedPart := FALSE;
|
||||
#TRO18.stInSeparator1.Settings.xPluggedScanner := FALSE;
|
||||
#TRO18.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO18.stInSeparator1.Settings.tSenFree := T#1500ms; // TODO(E-Planung): pruefen
|
||||
#TRO18.stInSeparator1.Settings.tSenWait := T#4000ms; // TODO(E-Planung): pruefen
|
||||
|
||||
#TRO18.stInPriorityManager.xReleaseOk := TRUE;
|
||||
|
||||
#TRO18(nInMainTroNo := "cMainTro____", // TODO(E-Planung)
|
||||
xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung)
|
||||
xInAllRdyToStart := TRUE,
|
||||
xInRelease := "DB_TRO_TEST".TRO18,
|
||||
stInOutMachineState := #stInOutControlUnitCabinet,
|
||||
stInOutCognexInterface := #stCognexInterfaceDummy,
|
||||
arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO17
|
||||
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO16
|
||||
stInOutJamExit2 := "DB_JamArea____".stJam____.stData,
|
||||
xOutStopper1 => "MB____", // TODO(E-Planung)
|
||||
stInOutHMI := "DB_Interface_HMI".stTRO.TRO18,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
END_REGION
|
||||
|
||||
END_FUNCTION_BLOCK
|
||||
+1004
File diff suppressed because it is too large
Load Diff
Vendored
+932
@@ -0,0 +1,932 @@
|
||||
{
|
||||
"schema": "sps_skel-tro-v2",
|
||||
"source": "HundM05.csv",
|
||||
"created": "2026-10-09 11:30",
|
||||
"note": "Aus dem CSV-Export abgeleitet (lib/tro_flow.py) - die Zeichnung ist nur Ansicht, keine Datenquelle.",
|
||||
"tros": [
|
||||
{
|
||||
"id": "TRO01",
|
||||
"type": "1Sep1Swi",
|
||||
"confidence": "mittel",
|
||||
"separators": [
|
||||
"0008"
|
||||
],
|
||||
"predecessors": [
|
||||
"TRO20"
|
||||
],
|
||||
"successors": [
|
||||
"TRO02",
|
||||
"TRO06"
|
||||
],
|
||||
"position": {
|
||||
"x": 4075.94,
|
||||
"y": 985.0,
|
||||
"z": 2154.75
|
||||
},
|
||||
"label": "Separator 0008 an Ausschleuselement 0024 (Strecke 0001, Anfang)",
|
||||
"hosts": [
|
||||
"0001"
|
||||
],
|
||||
"scanners": [
|
||||
"0009"
|
||||
],
|
||||
"reason": "1014mm von Ausschleuselement 0024 entfernt - kein eigenes Weichen-Bauteil im Layout, das Ausschleuselement uebernimmt diese Rolle",
|
||||
"colocated": [],
|
||||
"positionFrom": "Bauteile",
|
||||
"positionPoints": 2,
|
||||
"fbType": "FB_ILS_MTRO_1Sep1Swi",
|
||||
"items": {
|
||||
"Separator": 1,
|
||||
"Switch": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TRO02",
|
||||
"type": "Vario",
|
||||
"confidence": "hoch",
|
||||
"separators": [
|
||||
"0025"
|
||||
],
|
||||
"predecessors": [
|
||||
"TRO01"
|
||||
],
|
||||
"successors": [
|
||||
"TRO03"
|
||||
],
|
||||
"position": {
|
||||
"x": 5070.1,
|
||||
"y": 2530.06,
|
||||
"z": 2098.34
|
||||
},
|
||||
"label": "VF_1",
|
||||
"hosts": [
|
||||
"0001"
|
||||
],
|
||||
"scanners": [],
|
||||
"reason": "angetriebenes Streckensegment (Antriebfahrtrichtung: horizontal,horizontal,horizontal,Auf,horizontal)",
|
||||
"colocated": [
|
||||
"TRO04",
|
||||
"TRO05"
|
||||
],
|
||||
"positionFrom": "Bauteile",
|
||||
"positionPoints": 1,
|
||||
"fbType": "FB_ILS_MTRO_Vario",
|
||||
"items": {
|
||||
"Separator": 1,
|
||||
"VarioDrive": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TRO03",
|
||||
"type": "1Sep",
|
||||
"confidence": "mittel",
|
||||
"separators": [
|
||||
"0026"
|
||||
],
|
||||
"predecessors": [
|
||||
"TRO02"
|
||||
],
|
||||
"successors": [
|
||||
"TRO04"
|
||||
],
|
||||
"position": {
|
||||
"x": 7222.54,
|
||||
"y": 6180.03,
|
||||
"z": 2019.94
|
||||
},
|
||||
"label": "VF_1",
|
||||
"hosts": [
|
||||
"0001"
|
||||
],
|
||||
"scanners": [],
|
||||
"reason": "alternierendes VF/GF-Muster vom Wiedereinschleusen von VF_1 rueckwaerts (3. Separator von hinten) - unbetriebener Abschnitt ohne eigenes VarioDrive (Review 2026-09-23/25)",
|
||||
"colocated": [
|
||||
"TRO05"
|
||||
],
|
||||
"positionFrom": "Bauteile",
|
||||
"positionPoints": 1,
|
||||
"fbType": "FB_ILS_MTRO_1Sep",
|
||||
"items": {
|
||||
"Separator": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TRO04",
|
||||
"type": "Vario",
|
||||
"confidence": "hoch",
|
||||
"separators": [
|
||||
"0027"
|
||||
],
|
||||
"predecessors": [
|
||||
"TRO03"
|
||||
],
|
||||
"successors": [
|
||||
"TRO05"
|
||||
],
|
||||
"position": {
|
||||
"x": 7222.54,
|
||||
"y": 5679.62,
|
||||
"z": 1993.71
|
||||
},
|
||||
"label": "VF_1",
|
||||
"hosts": [
|
||||
"0001"
|
||||
],
|
||||
"scanners": [],
|
||||
"reason": "angetriebenes Streckensegment (Antriebfahrtrichtung: horizontal,horizontal,horizontal,Auf,horizontal)",
|
||||
"colocated": [
|
||||
"TRO02"
|
||||
],
|
||||
"positionFrom": "Bauteile",
|
||||
"positionPoints": 1,
|
||||
"fbType": "FB_ILS_MTRO_Vario",
|
||||
"items": {
|
||||
"Separator": 1,
|
||||
"VarioDrive": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TRO05",
|
||||
"type": "1Sep",
|
||||
"confidence": "mittel",
|
||||
"separators": [
|
||||
"0028"
|
||||
],
|
||||
"predecessors": [
|
||||
"TRO04"
|
||||
],
|
||||
"successors": [
|
||||
"TRO06"
|
||||
],
|
||||
"position": {
|
||||
"x": 6273.83,
|
||||
"y": 1756.17,
|
||||
"z": 2305.73
|
||||
},
|
||||
"label": "VF_1",
|
||||
"hosts": [
|
||||
"0001"
|
||||
],
|
||||
"scanners": [],
|
||||
"reason": "alternierendes VF/GF-Muster vom Wiedereinschleusen von VF_1 rueckwaerts (1. Separator von hinten) - unbetriebener Abschnitt ohne eigenes VarioDrive (Review 2026-09-23/25)",
|
||||
"colocated": [
|
||||
"TRO02",
|
||||
"TRO03"
|
||||
],
|
||||
"positionFrom": "Bauteile",
|
||||
"positionPoints": 1,
|
||||
"fbType": "FB_ILS_MTRO_1Sep",
|
||||
"items": {
|
||||
"Separator": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TRO06",
|
||||
"type": "1Sep1Swi",
|
||||
"confidence": "mittel",
|
||||
"separators": [
|
||||
"0010"
|
||||
],
|
||||
"predecessors": [
|
||||
"TRO01",
|
||||
"TRO05"
|
||||
],
|
||||
"successors": [
|
||||
"TRO07",
|
||||
"TRO09"
|
||||
],
|
||||
"position": {
|
||||
"x": 8577.09,
|
||||
"y": 988.6,
|
||||
"z": 2154.75
|
||||
},
|
||||
"label": "Separator 0010 an Ausschleuselement 0030 (Strecke 0002, Anfang)",
|
||||
"hosts": [
|
||||
"0002"
|
||||
],
|
||||
"scanners": [
|
||||
"0011"
|
||||
],
|
||||
"reason": "1015mm von Ausschleuselement 0030 entfernt - kein eigenes Weichen-Bauteil im Layout, das Ausschleuselement uebernimmt diese Rolle",
|
||||
"colocated": [],
|
||||
"positionFrom": "Bauteile",
|
||||
"positionPoints": 2,
|
||||
"fbType": "FB_ILS_MTRO_1Sep1Swi",
|
||||
"items": {
|
||||
"Separator": 1,
|
||||
"Switch": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TRO07",
|
||||
"type": "Vario",
|
||||
"confidence": "hoch",
|
||||
"separators": [
|
||||
"0031"
|
||||
],
|
||||
"predecessors": [
|
||||
"TRO06"
|
||||
],
|
||||
"successors": [
|
||||
"TRO08"
|
||||
],
|
||||
"position": {
|
||||
"x": 9570.9,
|
||||
"y": 5932.96,
|
||||
"z": 1918.34
|
||||
},
|
||||
"label": "VF_2",
|
||||
"hosts": [
|
||||
"0002"
|
||||
],
|
||||
"scanners": [],
|
||||
"reason": "angetriebenes Streckensegment (Antriebfahrtrichtung: horizontal,horizontal,Auf)",
|
||||
"colocated": [],
|
||||
"positionFrom": "Bauteile",
|
||||
"positionPoints": 1,
|
||||
"fbType": "FB_ILS_MTRO_Vario",
|
||||
"items": {
|
||||
"Separator": 1,
|
||||
"VarioDrive": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TRO08",
|
||||
"type": "1Sep",
|
||||
"confidence": "mittel",
|
||||
"separators": [
|
||||
"0032"
|
||||
],
|
||||
"predecessors": [
|
||||
"TRO07"
|
||||
],
|
||||
"successors": [
|
||||
"TRO09"
|
||||
],
|
||||
"position": {
|
||||
"x": 10840.84,
|
||||
"y": 1724.4,
|
||||
"z": 2305.73
|
||||
},
|
||||
"label": "VF_2",
|
||||
"hosts": [
|
||||
"0002"
|
||||
],
|
||||
"scanners": [],
|
||||
"reason": "alternierendes VF/GF-Muster vom Wiedereinschleusen von VF_2 rueckwaerts (1. Separator von hinten) - unbetriebener Abschnitt ohne eigenes VarioDrive (Review 2026-09-23/25)",
|
||||
"colocated": [],
|
||||
"positionFrom": "Bauteile",
|
||||
"positionPoints": 1,
|
||||
"fbType": "FB_ILS_MTRO_1Sep",
|
||||
"items": {
|
||||
"Separator": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TRO09",
|
||||
"type": "1Sep1Swi",
|
||||
"confidence": "mittel",
|
||||
"separators": [
|
||||
"0012"
|
||||
],
|
||||
"predecessors": [
|
||||
"TRO06",
|
||||
"TRO08"
|
||||
],
|
||||
"successors": [
|
||||
"TRO10",
|
||||
"TRO12"
|
||||
],
|
||||
"position": {
|
||||
"x": 12650.4,
|
||||
"y": 987.3,
|
||||
"z": 2154.75
|
||||
},
|
||||
"label": "Separator 0012 an Ausschleuselement 0034 (Strecke 0003, Anfang)",
|
||||
"hosts": [
|
||||
"0003"
|
||||
],
|
||||
"scanners": [
|
||||
"0013"
|
||||
],
|
||||
"reason": "1016mm von Ausschleuselement 0034 entfernt - kein eigenes Weichen-Bauteil im Layout, das Ausschleuselement uebernimmt diese Rolle",
|
||||
"colocated": [],
|
||||
"positionFrom": "Bauteile",
|
||||
"positionPoints": 2,
|
||||
"fbType": "FB_ILS_MTRO_1Sep1Swi",
|
||||
"items": {
|
||||
"Separator": 1,
|
||||
"Switch": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TRO10",
|
||||
"type": "Vario",
|
||||
"confidence": "hoch",
|
||||
"separators": [
|
||||
"0035"
|
||||
],
|
||||
"predecessors": [
|
||||
"TRO09"
|
||||
],
|
||||
"successors": [
|
||||
"TRO11"
|
||||
],
|
||||
"position": {
|
||||
"x": 13648.0,
|
||||
"y": 5933.46,
|
||||
"z": 1918.34
|
||||
},
|
||||
"label": "VF_3",
|
||||
"hosts": [
|
||||
"0003"
|
||||
],
|
||||
"scanners": [],
|
||||
"reason": "angetriebenes Streckensegment (Antriebfahrtrichtung: horizontal,horizontal,Auf)",
|
||||
"colocated": [],
|
||||
"positionFrom": "Bauteile",
|
||||
"positionPoints": 1,
|
||||
"fbType": "FB_ILS_MTRO_Vario",
|
||||
"items": {
|
||||
"Separator": 1,
|
||||
"VarioDrive": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TRO11",
|
||||
"type": "1Sep",
|
||||
"confidence": "mittel",
|
||||
"separators": [
|
||||
"0036"
|
||||
],
|
||||
"predecessors": [
|
||||
"TRO10"
|
||||
],
|
||||
"successors": [
|
||||
"TRO12"
|
||||
],
|
||||
"position": {
|
||||
"x": 14917.94,
|
||||
"y": 1724.9,
|
||||
"z": 2305.73
|
||||
},
|
||||
"label": "VF_3",
|
||||
"hosts": [
|
||||
"0003"
|
||||
],
|
||||
"scanners": [],
|
||||
"reason": "alternierendes VF/GF-Muster vom Wiedereinschleusen von VF_3 rueckwaerts (1. Separator von hinten) - unbetriebener Abschnitt ohne eigenes VarioDrive (Review 2026-09-23/25)",
|
||||
"colocated": [],
|
||||
"positionFrom": "Bauteile",
|
||||
"positionPoints": 1,
|
||||
"fbType": "FB_ILS_MTRO_1Sep",
|
||||
"items": {
|
||||
"Separator": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TRO12",
|
||||
"type": "1Sep1Swi",
|
||||
"confidence": "mittel",
|
||||
"separators": [
|
||||
"0014"
|
||||
],
|
||||
"predecessors": [
|
||||
"TRO09",
|
||||
"TRO11"
|
||||
],
|
||||
"successors": [
|
||||
"TRO13",
|
||||
"TRO15"
|
||||
],
|
||||
"position": {
|
||||
"x": 16819.62,
|
||||
"y": 990.75,
|
||||
"z": 2154.75
|
||||
},
|
||||
"label": "Separator 0014 an Ausschleuselement 0038 (Strecke 0004, Anfang)",
|
||||
"hosts": [
|
||||
"0004"
|
||||
],
|
||||
"scanners": [
|
||||
"0015"
|
||||
],
|
||||
"reason": "1016mm von Ausschleuselement 0038 entfernt - kein eigenes Weichen-Bauteil im Layout, das Ausschleuselement uebernimmt diese Rolle",
|
||||
"colocated": [],
|
||||
"positionFrom": "Bauteile",
|
||||
"positionPoints": 2,
|
||||
"fbType": "FB_ILS_MTRO_1Sep1Swi",
|
||||
"items": {
|
||||
"Separator": 1,
|
||||
"Switch": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TRO13",
|
||||
"type": "Vario",
|
||||
"confidence": "hoch",
|
||||
"separators": [
|
||||
"0039"
|
||||
],
|
||||
"predecessors": [
|
||||
"TRO12"
|
||||
],
|
||||
"successors": [
|
||||
"TRO14"
|
||||
],
|
||||
"position": {
|
||||
"x": 17816.0,
|
||||
"y": 5933.96,
|
||||
"z": 1918.34
|
||||
},
|
||||
"label": "VF_4",
|
||||
"hosts": [
|
||||
"0004"
|
||||
],
|
||||
"scanners": [],
|
||||
"reason": "angetriebenes Streckensegment (Antriebfahrtrichtung: horizontal,horizontal,Auf)",
|
||||
"colocated": [],
|
||||
"positionFrom": "Bauteile",
|
||||
"positionPoints": 1,
|
||||
"fbType": "FB_ILS_MTRO_Vario",
|
||||
"items": {
|
||||
"Separator": 1,
|
||||
"VarioDrive": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TRO14",
|
||||
"type": "1Sep",
|
||||
"confidence": "mittel",
|
||||
"separators": [
|
||||
"0040"
|
||||
],
|
||||
"predecessors": [
|
||||
"TRO13"
|
||||
],
|
||||
"successors": [
|
||||
"TRO15"
|
||||
],
|
||||
"position": {
|
||||
"x": 19085.94,
|
||||
"y": 1725.4,
|
||||
"z": 2305.73
|
||||
},
|
||||
"label": "VF_4",
|
||||
"hosts": [
|
||||
"0004"
|
||||
],
|
||||
"scanners": [],
|
||||
"reason": "alternierendes VF/GF-Muster vom Wiedereinschleusen von VF_4 rueckwaerts (1. Separator von hinten) - unbetriebener Abschnitt ohne eigenes VarioDrive (Review 2026-09-23/25)",
|
||||
"colocated": [],
|
||||
"positionFrom": "Bauteile",
|
||||
"positionPoints": 1,
|
||||
"fbType": "FB_ILS_MTRO_1Sep",
|
||||
"items": {
|
||||
"Separator": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TRO15",
|
||||
"type": "1Sep1Swi",
|
||||
"confidence": "mittel",
|
||||
"separators": [
|
||||
"0016"
|
||||
],
|
||||
"predecessors": [
|
||||
"TRO12",
|
||||
"TRO14"
|
||||
],
|
||||
"successors": [
|
||||
"TRO16",
|
||||
"TRO17"
|
||||
],
|
||||
"position": {
|
||||
"x": 20692.43,
|
||||
"y": 985.25,
|
||||
"z": 2154.75
|
||||
},
|
||||
"label": "Separator 0016 an Ausschleuselement 0042 (Strecke 0005, Anfang)",
|
||||
"hosts": [
|
||||
"0005"
|
||||
],
|
||||
"scanners": [
|
||||
"0017"
|
||||
],
|
||||
"reason": "1013mm von Ausschleuselement 0042 entfernt - kein eigenes Weichen-Bauteil im Layout, das Ausschleuselement uebernimmt diese Rolle",
|
||||
"colocated": [],
|
||||
"positionFrom": "Bauteile",
|
||||
"positionPoints": 2,
|
||||
"fbType": "FB_ILS_MTRO_1Sep1Swi",
|
||||
"items": {
|
||||
"Separator": 1,
|
||||
"Switch": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TRO16",
|
||||
"type": "1Sep",
|
||||
"confidence": "mittel",
|
||||
"separators": [
|
||||
"0018"
|
||||
],
|
||||
"predecessors": [
|
||||
"TRO15",
|
||||
"TRO18"
|
||||
],
|
||||
"successors": [
|
||||
"TRO19"
|
||||
],
|
||||
"position": {
|
||||
"x": 23729.42,
|
||||
"y": 989.7,
|
||||
"z": 2154.75
|
||||
},
|
||||
"label": "VF_5",
|
||||
"hosts": [
|
||||
"0005"
|
||||
],
|
||||
"scanners": [
|
||||
"0019"
|
||||
],
|
||||
"reason": "Separator 0018: Zuordnung zeigt auf VF_5, ist aber nicht Teil von dessen TrackIds-Kette - kein eigenes VF treibt ihn an",
|
||||
"colocated": [
|
||||
"TRO17"
|
||||
],
|
||||
"positionFrom": "Bauteile",
|
||||
"positionPoints": 2,
|
||||
"fbType": "FB_ILS_MTRO_1Sep",
|
||||
"items": {
|
||||
"Separator": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TRO17",
|
||||
"type": "Vario",
|
||||
"confidence": "hoch",
|
||||
"separators": [
|
||||
"0043"
|
||||
],
|
||||
"predecessors": [
|
||||
"TRO15"
|
||||
],
|
||||
"successors": [
|
||||
"TRO18"
|
||||
],
|
||||
"position": {
|
||||
"x": 21590.2,
|
||||
"y": 5932.86,
|
||||
"z": 1918.34
|
||||
},
|
||||
"label": "VF_5",
|
||||
"hosts": [
|
||||
"0005"
|
||||
],
|
||||
"scanners": [],
|
||||
"reason": "angetriebenes Streckensegment (Antriebfahrtrichtung: horizontal,horizontal,Auf)",
|
||||
"colocated": [
|
||||
"TRO16"
|
||||
],
|
||||
"positionFrom": "Bauteile",
|
||||
"positionPoints": 1,
|
||||
"fbType": "FB_ILS_MTRO_Vario",
|
||||
"items": {
|
||||
"Separator": 1,
|
||||
"VarioDrive": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TRO18",
|
||||
"type": "1Sep",
|
||||
"confidence": "mittel",
|
||||
"separators": [
|
||||
"0044"
|
||||
],
|
||||
"predecessors": [
|
||||
"TRO17"
|
||||
],
|
||||
"successors": [
|
||||
"TRO16"
|
||||
],
|
||||
"position": {
|
||||
"x": 22860.14,
|
||||
"y": 1724.3,
|
||||
"z": 2305.73
|
||||
},
|
||||
"label": "VF_5",
|
||||
"hosts": [
|
||||
"0005"
|
||||
],
|
||||
"scanners": [],
|
||||
"reason": "alternierendes VF/GF-Muster vom Wiedereinschleusen von VF_5 rueckwaerts (1. Separator von hinten) - unbetriebener Abschnitt ohne eigenes VarioDrive (Review 2026-09-23/25)",
|
||||
"colocated": [],
|
||||
"positionFrom": "Bauteile",
|
||||
"positionPoints": 1,
|
||||
"fbType": "FB_ILS_MTRO_1Sep",
|
||||
"items": {
|
||||
"Separator": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TRO19",
|
||||
"type": "1Sep",
|
||||
"confidence": "mittel",
|
||||
"separators": [
|
||||
"0020"
|
||||
],
|
||||
"predecessors": [
|
||||
"TRO16"
|
||||
],
|
||||
"successors": [
|
||||
"SYS3",
|
||||
"TRO20"
|
||||
],
|
||||
"position": {
|
||||
"x": 24570.15,
|
||||
"y": 1167.2,
|
||||
"z": 2155.5
|
||||
},
|
||||
"label": "Separator 0020 auf Kreisel1 Bahn L",
|
||||
"hosts": [
|
||||
"0006-L"
|
||||
],
|
||||
"scanners": [],
|
||||
"reason": "einzelner Separator auf angetriebener Kreisel-Bahn",
|
||||
"colocated": [],
|
||||
"positionFrom": "Bauteile",
|
||||
"positionPoints": 1,
|
||||
"fbType": "FB_ILS_MTRO_1Sep",
|
||||
"items": {
|
||||
"Separator": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TRO20",
|
||||
"type": "1Sep",
|
||||
"confidence": "mittel",
|
||||
"separators": [
|
||||
"0007"
|
||||
],
|
||||
"predecessors": [
|
||||
"SYS1",
|
||||
"SYS2",
|
||||
"TRO19"
|
||||
],
|
||||
"successors": [
|
||||
"TRO01"
|
||||
],
|
||||
"position": {
|
||||
"x": 2414.95,
|
||||
"y": 365.0,
|
||||
"z": 2155.5
|
||||
},
|
||||
"label": "Separator 0007 auf Kreisel1 Bahn R",
|
||||
"hosts": [
|
||||
"0006-R"
|
||||
],
|
||||
"scanners": [],
|
||||
"reason": "einzelner Separator auf angetriebener Kreisel-Bahn",
|
||||
"colocated": [],
|
||||
"positionFrom": "Bauteile",
|
||||
"positionPoints": 1,
|
||||
"fbType": "FB_ILS_MTRO_1Sep",
|
||||
"items": {
|
||||
"Separator": 1
|
||||
}
|
||||
}
|
||||
],
|
||||
"boundaries": [
|
||||
{
|
||||
"id": "SYS1",
|
||||
"type": "Materialeingang",
|
||||
"confidence": "hoch",
|
||||
"separators": [],
|
||||
"predecessors": [],
|
||||
"successors": [
|
||||
"TRO20"
|
||||
],
|
||||
"position": {
|
||||
"x": 5532.67,
|
||||
"y": 265.14,
|
||||
"z": 2109.31
|
||||
},
|
||||
"label": "BTMT Beladung :2",
|
||||
"hosts": [
|
||||
"0021"
|
||||
],
|
||||
"scanners": [],
|
||||
"reason": "Systemgrenze (Be-/Entladestation) - kein TRO, nur Materialein-/ausgang",
|
||||
"colocated": [],
|
||||
"positionFrom": "Host-Objekte",
|
||||
"positionPoints": 1,
|
||||
"fbType": "",
|
||||
"items": {}
|
||||
},
|
||||
{
|
||||
"id": "SYS2",
|
||||
"type": "Materialeingang",
|
||||
"confidence": "hoch",
|
||||
"separators": [],
|
||||
"predecessors": [],
|
||||
"successors": [
|
||||
"TRO20"
|
||||
],
|
||||
"position": {
|
||||
"x": 4503.25,
|
||||
"y": 269.77,
|
||||
"z": 2109.31
|
||||
},
|
||||
"label": "BTMT Beladung :1",
|
||||
"hosts": [
|
||||
"0022"
|
||||
],
|
||||
"scanners": [],
|
||||
"reason": "Systemgrenze (Be-/Entladestation) - kein TRO, nur Materialein-/ausgang",
|
||||
"colocated": [],
|
||||
"positionFrom": "Host-Objekte",
|
||||
"positionPoints": 1,
|
||||
"fbType": "",
|
||||
"items": {}
|
||||
},
|
||||
{
|
||||
"id": "SYS3",
|
||||
"type": "Materialausgang",
|
||||
"confidence": "hoch",
|
||||
"separators": [],
|
||||
"predecessors": [
|
||||
"TRO19"
|
||||
],
|
||||
"successors": [],
|
||||
"position": {
|
||||
"x": 25014.37,
|
||||
"y": 1545.51,
|
||||
"z": 2001.09
|
||||
},
|
||||
"label": "BTMT Entladung :1",
|
||||
"hosts": [
|
||||
"0023"
|
||||
],
|
||||
"scanners": [],
|
||||
"reason": "Systemgrenze (Be-/Entladestation) - kein TRO, nur Materialein-/ausgang",
|
||||
"colocated": [],
|
||||
"positionFrom": "Host-Objekte",
|
||||
"positionPoints": 1,
|
||||
"fbType": "",
|
||||
"items": {}
|
||||
}
|
||||
],
|
||||
"connections": [
|
||||
{
|
||||
"from": "SYS1",
|
||||
"to": "TRO20",
|
||||
"kind": "normal"
|
||||
},
|
||||
{
|
||||
"from": "SYS2",
|
||||
"to": "TRO20",
|
||||
"kind": "normal"
|
||||
},
|
||||
{
|
||||
"from": "TRO01",
|
||||
"to": "TRO02",
|
||||
"kind": "weiche"
|
||||
},
|
||||
{
|
||||
"from": "TRO01",
|
||||
"to": "TRO06",
|
||||
"kind": "bahn"
|
||||
},
|
||||
{
|
||||
"from": "TRO02",
|
||||
"to": "TRO03",
|
||||
"kind": "bahn"
|
||||
},
|
||||
{
|
||||
"from": "TRO03",
|
||||
"to": "TRO04",
|
||||
"kind": "bahn"
|
||||
},
|
||||
{
|
||||
"from": "TRO04",
|
||||
"to": "TRO05",
|
||||
"kind": "bahn"
|
||||
},
|
||||
{
|
||||
"from": "TRO05",
|
||||
"to": "TRO06",
|
||||
"kind": "bahn"
|
||||
},
|
||||
{
|
||||
"from": "TRO06",
|
||||
"to": "TRO07",
|
||||
"kind": "weiche"
|
||||
},
|
||||
{
|
||||
"from": "TRO06",
|
||||
"to": "TRO09",
|
||||
"kind": "bahn"
|
||||
},
|
||||
{
|
||||
"from": "TRO07",
|
||||
"to": "TRO08",
|
||||
"kind": "bahn"
|
||||
},
|
||||
{
|
||||
"from": "TRO08",
|
||||
"to": "TRO09",
|
||||
"kind": "bahn"
|
||||
},
|
||||
{
|
||||
"from": "TRO09",
|
||||
"to": "TRO10",
|
||||
"kind": "weiche"
|
||||
},
|
||||
{
|
||||
"from": "TRO09",
|
||||
"to": "TRO12",
|
||||
"kind": "bahn"
|
||||
},
|
||||
{
|
||||
"from": "TRO10",
|
||||
"to": "TRO11",
|
||||
"kind": "bahn"
|
||||
},
|
||||
{
|
||||
"from": "TRO11",
|
||||
"to": "TRO12",
|
||||
"kind": "bahn"
|
||||
},
|
||||
{
|
||||
"from": "TRO12",
|
||||
"to": "TRO13",
|
||||
"kind": "weiche"
|
||||
},
|
||||
{
|
||||
"from": "TRO12",
|
||||
"to": "TRO15",
|
||||
"kind": "bahn"
|
||||
},
|
||||
{
|
||||
"from": "TRO13",
|
||||
"to": "TRO14",
|
||||
"kind": "bahn"
|
||||
},
|
||||
{
|
||||
"from": "TRO14",
|
||||
"to": "TRO15",
|
||||
"kind": "bahn"
|
||||
},
|
||||
{
|
||||
"from": "TRO15",
|
||||
"to": "TRO16",
|
||||
"kind": "bahn"
|
||||
},
|
||||
{
|
||||
"from": "TRO15",
|
||||
"to": "TRO17",
|
||||
"kind": "weiche"
|
||||
},
|
||||
{
|
||||
"from": "TRO16",
|
||||
"to": "TRO19",
|
||||
"kind": "bahn"
|
||||
},
|
||||
{
|
||||
"from": "TRO17",
|
||||
"to": "TRO18",
|
||||
"kind": "bahn"
|
||||
},
|
||||
{
|
||||
"from": "TRO18",
|
||||
"to": "TRO16",
|
||||
"kind": "bahn"
|
||||
},
|
||||
{
|
||||
"from": "TRO19",
|
||||
"to": "SYS3",
|
||||
"kind": "normal"
|
||||
},
|
||||
{
|
||||
"from": "TRO19",
|
||||
"to": "TRO20",
|
||||
"kind": "bahn"
|
||||
},
|
||||
{
|
||||
"from": "TRO20",
|
||||
"to": "TRO01",
|
||||
"kind": "bahn"
|
||||
}
|
||||
],
|
||||
"openPoints": [],
|
||||
"findings": [
|
||||
"Scanner 0019 'Scanner :1': montiert an 0006-L, liest aber an Separator 0018 auf 0005",
|
||||
"TRO16 (VF_5): Scanner 0019 am Separator - als 1Sep eingestuft. Pruefen, ob 1Sep_SSCC (SSCC-Scanner, Endmessung, WCS-Telegramm) erforderlich ist; das ist aus dem mechanischen Layout nicht erkennbar.",
|
||||
"VF_1 Separator 0026: alternierendes Muster (3. von hinten) - als 1Sep statt Vario eingestuft",
|
||||
"VF_1 Separator 0028: alternierendes Muster (1. von hinten) - als 1Sep statt Vario eingestuft",
|
||||
"VF_2 Separator 0032: alternierendes Muster (1. von hinten) - als 1Sep statt Vario eingestuft",
|
||||
"VF_3 Separator 0036: alternierendes Muster (1. von hinten) - als 1Sep statt Vario eingestuft",
|
||||
"VF_4 Separator 0040: alternierendes Muster (1. von hinten) - als 1Sep statt Vario eingestuft",
|
||||
"VF_5 Separator 0018: Zuordnung ohne TrackIds-Mitgliedschaft - als 1Sep statt Vario eingestuft",
|
||||
"VF_5 Separator 0044: alternierendes Muster (1. von hinten) - als 1Sep statt Vario eingestuft"
|
||||
]
|
||||
}
|
||||
Vendored
+861
@@ -0,0 +1,861 @@
|
||||
// ============================================================
|
||||
// FB_Main - GERUEST, erzeugt von lib/scl_skeleton.py
|
||||
// Quelle : mubea_tro.json
|
||||
// Erzeugt: <maskiert>
|
||||
//
|
||||
// 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 TRO03: Materialeingang ueber SYS1.
|
||||
// ============================================================
|
||||
|
||||
FUNCTION_BLOCK "FB_Main"
|
||||
{ S7_Optimized_Access := 'TRUE' }
|
||||
VERSION : 0.1
|
||||
VAR
|
||||
TRO03 : "FB_ILS_MTRO_1Sep"; // 1Sep, Sep 0042
|
||||
TRO05 : "FB_ILS_MTRO_1Sep"; // 1Sep, Sep 0044
|
||||
TRO18 : "FB_ILS_MTRO_PinStore_Auto"; // PinStore_Auto, Sep 0066, 0069, 0072, 0075, 0078, 0081, 0084, 0087, 0090, 0093, 0096, 0099, 0102, 0105, 0108, 0111, 0114, 0117, 0120, 0123
|
||||
TRO07 : "FB_ILS_MTRO_1Sep"; // 1Sep, Sep 0045
|
||||
TRO10 : "FB_ILS_MTRO_2Sep2Swi"; // 2Sep2Swi, Sep 0005, 0036
|
||||
TRO04 : "FB_ILS_MTRO_1Sep"; // 1Sep, Sep 0043
|
||||
TRO01 : "FB_ILS_MTRO_1Sep"; // 1Sep, Sep 0040
|
||||
TRO02 : "FB_ILS_MTRO_1Sep"; // 1Sep, Sep 0012
|
||||
TRO11 : "FB_ILS_MTRO_Vario"; // Vario, Sep 0058
|
||||
TRO13 : "FB_ILS_MTRO_1Sep1Swi"; // 1Sep1Swi, Sep 0011
|
||||
TRO12 : "FB_ILS_MTRO_1Sep"; // 1Sep, Sep 0059
|
||||
TRO16 : "FB_ILS_MTRO_Vario"; // Vario, Sep 0062
|
||||
TRO17 : "FB_ILS_MTRO_1Sep"; // 1Sep, Sep 0063
|
||||
TRO15 : "FB_ILS_MTRO_1Sep"; // 1Sep, Sep 0038
|
||||
TRO06 : "FB_ILS_MTRO_1Sep1Swi"; // 1Sep1Swi, Sep 0003
|
||||
TRO14 : "FB_ILS_MTRO_1Sep"; // 1Sep, Sep 0037
|
||||
TRO08 : "FB_ILS_MTRO_Vario"; // Vario, Sep 0054
|
||||
TRO09 : "FB_ILS_MTRO_1Sep"; // 1Sep, Sep 0055
|
||||
END_VAR
|
||||
|
||||
BEGIN
|
||||
|
||||
REGION TRO03 (1Sep) Sep 0042
|
||||
// Anlagenkoordinate x/y: 10490 / -525 mm
|
||||
// Vorgaenger: SYS1, TRO04
|
||||
// Nachfolger: TRO05
|
||||
// Einstufung: mittel
|
||||
|
||||
// Separator 1 = Bauteil 0042 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.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 SYS1 (Station, kein TRO)
|
||||
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamEntr2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO04
|
||||
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.TRO03,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
END_REGION
|
||||
|
||||
REGION TRO05 (1Sep) Sep 0044
|
||||
// Anlagenkoordinate x/y: 10310 / -5013 mm
|
||||
// Vorgaenger: TRO03
|
||||
// Nachfolger: TRO18
|
||||
// Einstufung: mittel
|
||||
|
||||
// Separator 1 = Bauteil 0044 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 := FALSE;
|
||||
#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
|
||||
|
||||
#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 TRO03
|
||||
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO18
|
||||
stInOutJamExit2 := "DB_JamArea____".stJam____.stData,
|
||||
xOutStopper1 => "MB____", // TODO(E-Planung)
|
||||
stInOutHMI := "DB_Interface_HMI".stTRO.TRO05,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
END_REGION
|
||||
|
||||
REGION TRO18 (PinStore_Auto) Sep 0066, 0069, 0072, 0075, 0078, 0081, 0084, 0087, 0090, 0093, 0096, 0099, 0102, 0105, 0108, 0111, 0114, 0117, 0120, 0123
|
||||
// Anlagenkoordinate x/y: 958 / 4700 mm
|
||||
// Vorgaenger: TRO05, TRO12
|
||||
// Nachfolger: TRO07, TRO10
|
||||
// Einstufung: hoch
|
||||
|
||||
// Separator 1 = Bauteil 0066 aus dem Layout
|
||||
#TRO18.stInSeparator1.Settings.nSeparatorNo := "cSep_____"; // TODO(E-Planung)
|
||||
#TRO18.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||
#TRO18.stInSeparator1.Settings.tTrailingTime := t#600ms; // TODO(E-Planung): pruefen
|
||||
#TRO18.stInSeparator1.Settings.tHandlingTime := t#200ms; // TODO(E-Planung): pruefen
|
||||
#TRO18.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||
#TRO18.stInSeparator1.Settings.xPluggedJam := TRUE;
|
||||
#TRO18.stInSeparator1.Settings.xPluggedPart := FALSE;
|
||||
#TRO18.stInSeparator1.Settings.xPluggedScanner := TRUE;
|
||||
#TRO18.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO18.stInSeparator1.Settings.tSenFree := T#1500ms; // TODO(E-Planung): pruefen
|
||||
#TRO18.stInSeparator1.Settings.tSenWait := T#4000ms; // TODO(E-Planung): pruefen
|
||||
|
||||
#TRO18.stInBarcodeReader.Settings.xActivateCheckASCI := TRUE;
|
||||
#TRO18.stInBarcodeReader.Settings.tTimeout := T#3000ms;
|
||||
// TODO(E-Planung): Cognex-Interface verdrahten (#arCognexInterface["cScanner____"])
|
||||
|
||||
// TODO(E-Planung): Linienspeicher mit 19 Linien - Parametrierung je Linie
|
||||
|
||||
#TRO18.stInPriorityManager.xReleaseOk := TRUE;
|
||||
|
||||
#TRO18(nInMainTroNo := "cMainTro____", // TODO(E-Planung)
|
||||
xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung)
|
||||
xInAllRdyToStart := TRUE,
|
||||
xInRelease := "DB_TRO_TEST".TRO18,
|
||||
stInOutMachineState := #stInOutControlUnitCabinet,
|
||||
stInOutCognexInterface := #stCognexInterfaceDummy,
|
||||
arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO05
|
||||
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 TRO07
|
||||
stInOutJamExit2 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO10
|
||||
stInOutJamExit3 := "DB_JamArea____".stJam____.stData,
|
||||
xOutStopper1 => "MB____", // TODO(E-Planung)
|
||||
stInOutHMI := "DB_Interface_HMI".stTRO.TRO18,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
END_REGION
|
||||
|
||||
REGION TRO07 (1Sep) Sep 0045
|
||||
// Anlagenkoordinate x/y: 9510 / 14217 mm
|
||||
// Vorgaenger: TRO09, TRO18
|
||||
// Nachfolger: TRO04
|
||||
// Einstufung: mittel
|
||||
|
||||
// Separator 1 = Bauteil 0045 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,
|
||||
arInOutJamEntr2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO18
|
||||
stInOutJamEntr2 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO04
|
||||
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 TRO10 (2Sep2Swi) Sep 0005, 0036
|
||||
// Anlagenkoordinate x/y: 1012 / -4650 mm
|
||||
// Vorgaenger: TRO01, TRO06, TRO18
|
||||
// Nachfolger: TRO01, TRO02, TRO11
|
||||
// Einstufung: hoch
|
||||
|
||||
// Separator 1 = Bauteil 0005 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 := TRUE;
|
||||
#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
|
||||
|
||||
// Separator 2 = Bauteil 0036 aus dem Layout
|
||||
#TRO10.stInSeparator2.Settings.nSeparatorNo := "cSep_____"; // TODO(E-Planung)
|
||||
#TRO10.stInSeparator2.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||
#TRO10.stInSeparator2.Settings.tTrailingTime := t#600ms; // TODO(E-Planung): pruefen
|
||||
#TRO10.stInSeparator2.Settings.tHandlingTime := t#200ms; // TODO(E-Planung): pruefen
|
||||
#TRO10.stInSeparator2.Settings.tJam := "TimeForSepJam";
|
||||
#TRO10.stInSeparator2.Settings.xPluggedJam := TRUE;
|
||||
#TRO10.stInSeparator2.Settings.xPluggedPart := FALSE;
|
||||
#TRO10.stInSeparator2.Settings.xPluggedScanner := TRUE;
|
||||
#TRO10.stInSeparator2.stSenInSep := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO10.stInSeparator2.Settings.tSenFree := T#1500ms; // TODO(E-Planung): pruefen
|
||||
#TRO10.stInSeparator2.Settings.tSenWait := T#4000ms; // TODO(E-Planung): pruefen
|
||||
|
||||
#TRO10.stInSwitch1.Settings.nSwitchNo := "cSwi_____"; // TODO(E-Planung)
|
||||
#TRO10.stInSwitch1.Settings.xPluggedExSen3 := FALSE;
|
||||
#TRO10.stInSwitch1.Settings.xPluggedExSen4 := FALSE;
|
||||
#TRO10.stInSwitch1.Settings.nTo1Destinations := _; // TODO(E-Planung): dieser TRO hat 3 Abgaenge auf 2 Weichen - Aufteilung festlegen
|
||||
|
||||
#TRO10.stInSwitch2.Settings.nSwitchNo := "cSwi_____"; // TODO(E-Planung)
|
||||
#TRO10.stInSwitch2.Settings.xPluggedExSen3 := FALSE;
|
||||
#TRO10.stInSwitch2.Settings.xPluggedExSen4 := FALSE;
|
||||
#TRO10.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 TRO02: SYS2, SYS3, TRO02, TRO03, TRO04, TRO05, TRO06, TRO07, TRO08, TRO09, TRO13, TRO14, TRO15, TRO16, TRO17, TRO18
|
||||
// ueber TRO11: TRO03, TRO04, TRO05, TRO07, TRO11, TRO12, TRO18
|
||||
|
||||
#TRO10.stInBarcodeReader1.Settings.xActivateCheckASCI := TRUE;
|
||||
#TRO10.stInBarcodeReader1.Settings.tTimeout := T#3000ms;
|
||||
// TODO(E-Planung): Cognex-Interface verdrahten (#arCognexInterface["cScanner____"])
|
||||
|
||||
#TRO10.stInBarcodeReader2.Settings.xActivateCheckASCI := TRUE;
|
||||
#TRO10.stInBarcodeReader2.Settings.tTimeout := T#3000ms;
|
||||
// TODO(E-Planung): Cognex-Interface verdrahten (#arCognexInterface["cScanner____"])
|
||||
|
||||
#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,
|
||||
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 TRO06
|
||||
stInOutJamEntr2 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamEntr3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO18
|
||||
stInOutJamEntr3 := "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 TRO02
|
||||
stInOutJamExit3 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit4 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO11
|
||||
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.TRO10,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
|
||||
REGION Direction
|
||||
"FC_Direction"(nInSwitchNo := "cSwi_____", // TODO(E-Planung)
|
||||
nOutDirection => #TRO10.nInDirection1,
|
||||
InOutCarrier := "DB_JamArea____".stJam____.arCarrier[1]);
|
||||
|
||||
"FC_Direction"(nInSwitchNo := "cSwi_____", // TODO(E-Planung)
|
||||
nOutDirection => #TRO10.nInDirection2,
|
||||
InOutCarrier := "DB_JamArea____".stJam____.arCarrier[1]);
|
||||
END_REGION
|
||||
END_REGION
|
||||
|
||||
REGION TRO04 (1Sep) Sep 0043
|
||||
// Anlagenkoordinate x/y: 10310 / 160 mm
|
||||
// Vorgaenger: TRO07
|
||||
// Nachfolger: TRO03
|
||||
// Einstufung: mittel
|
||||
|
||||
// Separator 1 = Bauteil 0043 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 := FALSE;
|
||||
#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.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 TRO07
|
||||
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 TRO01 (1Sep) Sep 0040
|
||||
// Anlagenkoordinate x/y: 5355 / -5878 mm
|
||||
// Vorgaenger: TRO10
|
||||
// Nachfolger: TRO10
|
||||
// Einstufung: mittel
|
||||
|
||||
// Separator 1 = Bauteil 0040 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 TRO10
|
||||
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO10
|
||||
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 TRO02 (1Sep) Sep 0012
|
||||
// Anlagenkoordinate x/y: -220 / -3472 mm
|
||||
// Vorgaenger: TRO10
|
||||
// Nachfolger: SYS2, SYS3, TRO13
|
||||
// Einstufung: mittel
|
||||
|
||||
// Separator 1 = Bauteil 0012 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 := FALSE;
|
||||
#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.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 TRO10
|
||||
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach SYS2 (Station, kein TRO)
|
||||
stInOutJamExit2 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach SYS3 (Station, kein TRO)
|
||||
stInOutJamExit3 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit4 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO13
|
||||
stInOutJamExit4 := "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
|
||||
// Anlagenkoordinate x/y: 3300 / -4743 mm
|
||||
// Vorgaenger: TRO10
|
||||
// Nachfolger: TRO12
|
||||
// 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 TRO10
|
||||
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.TRO11,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
END_REGION
|
||||
|
||||
REGION TRO13 (1Sep1Swi) Sep 0011
|
||||
// Anlagenkoordinate x/y: -220 / -481 mm
|
||||
// Vorgaenger: TRO02
|
||||
// Nachfolger: TRO16, TRO17
|
||||
// Einstufung: mittel
|
||||
|
||||
// Separator 1 = Bauteil 0011 aus dem Layout
|
||||
#TRO13.stInSeparator1.Settings.nSeparatorNo := "cSep_____"; // TODO(E-Planung)
|
||||
#TRO13.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||
#TRO13.stInSeparator1.Settings.tTrailingTime := t#600ms; // TODO(E-Planung): pruefen
|
||||
#TRO13.stInSeparator1.Settings.tHandlingTime := t#200ms; // TODO(E-Planung): pruefen
|
||||
#TRO13.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||
#TRO13.stInSeparator1.Settings.xPluggedJam := TRUE;
|
||||
#TRO13.stInSeparator1.Settings.xPluggedPart := FALSE;
|
||||
#TRO13.stInSeparator1.Settings.xPluggedScanner := FALSE;
|
||||
#TRO13.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO13.stInSeparator1.Settings.tSenFree := T#1500ms; // TODO(E-Planung): pruefen
|
||||
#TRO13.stInSeparator1.Settings.tSenWait := T#4000ms; // TODO(E-Planung): pruefen
|
||||
|
||||
#TRO13.stInSwitch1.Settings.nSwitchNo := "cSwi_____"; // TODO(E-Planung)
|
||||
#TRO13.stInSwitch1.Settings.xPluggedExSen3 := FALSE;
|
||||
#TRO13.stInSwitch1.Settings.xPluggedExSen4 := FALSE;
|
||||
#TRO13.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 TRO16: SYS2, SYS3, TRO01, TRO02, TRO03, TRO04, TRO05, TRO06, TRO07, TRO08, TRO09, TRO10, TRO11, TRO12, TRO14, TRO15, TRO16, TRO17, TRO18
|
||||
// ueber TRO17: SYS2, SYS3, TRO01, TRO02, TRO03, TRO04, TRO05, TRO06, TRO07, TRO08, TRO09, TRO10, TRO11, TRO12, TRO17, TRO18
|
||||
|
||||
#TRO13.stInPriorityManager.xReleaseOk := TRUE;
|
||||
|
||||
#TRO13(nInMainTroNo := "cMainTro____", // TODO(E-Planung)
|
||||
xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung)
|
||||
xInAllRdyToStart := TRUE,
|
||||
xInRelease := "DB_TRO_TEST".TRO13,
|
||||
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 TRO16
|
||||
stInOutJamExit2 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO17
|
||||
stInOutJamExit3 := "DB_JamArea____".stJam____.stData,
|
||||
xOutStopper1 => "MB____", // TODO(E-Planung)
|
||||
xOutSw1ExTo3 => "MB____", // TODO(E-Planung)
|
||||
stInOutHMI := "DB_Interface_HMI".stTRO.TRO13,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
|
||||
REGION Direction
|
||||
"FC_Direction"(nInSwitchNo := "cSwi_____", // TODO(E-Planung)
|
||||
nOutDirection => #TRO13.nInDirection,
|
||||
InOutCarrier := "DB_JamArea____".stJam____.arCarrier[1]);
|
||||
END_REGION
|
||||
END_REGION
|
||||
|
||||
REGION TRO12 (1Sep) Sep 0059
|
||||
// Anlagenkoordinate x/y: 9412 / -4150 mm
|
||||
// Vorgaenger: TRO11
|
||||
// Nachfolger: TRO18
|
||||
// Einstufung: mittel
|
||||
|
||||
// Separator 1 = Bauteil 0059 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 := FALSE;
|
||||
#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.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 TRO11
|
||||
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO18
|
||||
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 TRO16 (Vario) Sep 0062
|
||||
// Anlagenkoordinate x/y: -899 / 1135 mm
|
||||
// Vorgaenger: TRO13
|
||||
// Nachfolger: TRO15
|
||||
// Einstufung: hoch
|
||||
|
||||
// Separator 1 = Bauteil 0062 aus dem Layout
|
||||
#TRO16.stInSeparator1.Settings.nSeparatorNo := "cSep_____"; // TODO(E-Planung)
|
||||
#TRO16.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||
#TRO16.stInSeparator1.Settings.tTrailingTime := t#600ms; // TODO(E-Planung): pruefen
|
||||
#TRO16.stInSeparator1.Settings.tHandlingTime := t#200ms; // TODO(E-Planung): pruefen
|
||||
#TRO16.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||
#TRO16.stInSeparator1.Settings.xPluggedJam := TRUE;
|
||||
#TRO16.stInSeparator1.Settings.xPluggedPart := FALSE;
|
||||
#TRO16.stInSeparator1.Settings.xPluggedScanner := FALSE;
|
||||
#TRO16.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO16.stInSeparator1.Settings.tSenFree := T#1500ms; // TODO(E-Planung): pruefen
|
||||
#TRO16.stInSeparator1.Settings.tSenWait := T#4000ms; // TODO(E-Planung): pruefen
|
||||
|
||||
#TRO16.stInVario.Settings.xContinousEmptying := FALSE;
|
||||
#TRO16.stInVario.Settings.tWaitForJog := T#300ms; // TODO(E-Planung): pruefen
|
||||
#TRO16.stInVario.Settings.tConvEmpty := T#45000ms; // TODO(E-Planung): pruefen
|
||||
#TRO16.stInVario.Settings.nCountCarrier := 1; // TODO(E-Planung): pruefen
|
||||
#TRO16.stInVario.Settings.tWaitForStop := t#3s;
|
||||
#TRO16.stInVario.Settings.tCarrierInPosDelay := t#1200ms;
|
||||
#TRO16.stInVario.Settings.tCarrierInPosEdgeDelay := t#100ms;
|
||||
#TRO16.stInVario.Settings.xJamSenDelayActive := TRUE;
|
||||
#TRO16.stInVario.Settings.tJamSenDelay := T#2s;
|
||||
#TRO16.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO16.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO16.stInVario.stSenLastPos := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO16.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
|
||||
#TRO16.stInPriorityManager.xReleaseOk := TRUE;
|
||||
|
||||
#TRO16(nInMainTroNo := "cMainTro____", // TODO(E-Planung)
|
||||
xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung)
|
||||
xInAllRdyToStart := TRUE,
|
||||
xInRelease := "DB_TRO_TEST".TRO16,
|
||||
xInMotorProtection := "FC____", // TODO(E-Planung)
|
||||
xInAutomatic := #t_automatik,
|
||||
stInOutMachineState := #stInOutControlUnitCabinet,
|
||||
stInOutCognexInterface := #stCognexInterfaceDummy,
|
||||
arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO13
|
||||
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO15
|
||||
stInOutJamExit2 := "DB_JamArea____".stJam____.stData,
|
||||
xOutStopper1 => "MB____", // TODO(E-Planung)
|
||||
xOutVarioMotor => "MA____", // TODO(E-Planung)
|
||||
stInOutHMI := "DB_Interface_HMI".stTRO.TRO16,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
END_REGION
|
||||
|
||||
REGION TRO17 (1Sep) Sep 0063
|
||||
// Anlagenkoordinate x/y: -703 / 12296 mm
|
||||
// Vorgaenger: TRO13, TRO14
|
||||
// Nachfolger: TRO06
|
||||
// Einstufung: mittel
|
||||
|
||||
// Separator 1 = Bauteil 0063 aus dem Layout
|
||||
#TRO17.stInSeparator1.Settings.nSeparatorNo := "cSep_____"; // TODO(E-Planung)
|
||||
#TRO17.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||
#TRO17.stInSeparator1.Settings.tTrailingTime := t#600ms; // TODO(E-Planung): pruefen
|
||||
#TRO17.stInSeparator1.Settings.tHandlingTime := t#200ms; // TODO(E-Planung): pruefen
|
||||
#TRO17.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||
#TRO17.stInSeparator1.Settings.xPluggedJam := TRUE;
|
||||
#TRO17.stInSeparator1.Settings.xPluggedPart := FALSE;
|
||||
#TRO17.stInSeparator1.Settings.xPluggedScanner := FALSE;
|
||||
#TRO17.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO17.stInSeparator1.Settings.tSenFree := T#1500ms; // TODO(E-Planung): pruefen
|
||||
#TRO17.stInSeparator1.Settings.tSenWait := T#4000ms; // TODO(E-Planung): pruefen
|
||||
|
||||
#TRO17.stInPriorityManager.xReleaseOk := TRUE;
|
||||
|
||||
#TRO17(nInMainTroNo := "cMainTro____", // TODO(E-Planung)
|
||||
xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung)
|
||||
xInAllRdyToStart := TRUE,
|
||||
xInRelease := "DB_TRO_TEST".TRO17,
|
||||
stInOutMachineState := #stInOutControlUnitCabinet,
|
||||
stInOutCognexInterface := #stCognexInterfaceDummy,
|
||||
arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO13
|
||||
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamEntr2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO14
|
||||
stInOutJamEntr2 := "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.TRO17,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
END_REGION
|
||||
|
||||
REGION TRO15 (1Sep) Sep 0038
|
||||
// Anlagenkoordinate x/y: -1206 / 5330 mm
|
||||
// Vorgaenger: TRO16
|
||||
// Nachfolger: TRO14
|
||||
// Einstufung: mittel
|
||||
|
||||
// Separator 1 = Bauteil 0038 aus dem Layout
|
||||
#TRO15.stInSeparator1.Settings.nSeparatorNo := "cSep_____"; // TODO(E-Planung)
|
||||
#TRO15.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||
#TRO15.stInSeparator1.Settings.tTrailingTime := t#600ms; // TODO(E-Planung): pruefen
|
||||
#TRO15.stInSeparator1.Settings.tHandlingTime := t#200ms; // TODO(E-Planung): pruefen
|
||||
#TRO15.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||
#TRO15.stInSeparator1.Settings.xPluggedJam := TRUE;
|
||||
#TRO15.stInSeparator1.Settings.xPluggedPart := FALSE;
|
||||
#TRO15.stInSeparator1.Settings.xPluggedScanner := FALSE;
|
||||
#TRO15.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO15.stInSeparator1.Settings.tSenFree := T#1500ms; // TODO(E-Planung): pruefen
|
||||
#TRO15.stInSeparator1.Settings.tSenWait := T#4000ms; // TODO(E-Planung): pruefen
|
||||
|
||||
#TRO15.stInPriorityManager.xReleaseOk := TRUE;
|
||||
|
||||
#TRO15(nInMainTroNo := "cMainTro____", // TODO(E-Planung)
|
||||
xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung)
|
||||
xInAllRdyToStart := TRUE,
|
||||
xInRelease := "DB_TRO_TEST".TRO15,
|
||||
stInOutMachineState := #stInOutControlUnitCabinet,
|
||||
stInOutCognexInterface := #stCognexInterfaceDummy,
|
||||
arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO16
|
||||
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO14
|
||||
stInOutJamExit2 := "DB_JamArea____".stJam____.stData,
|
||||
xOutStopper1 => "MB____", // TODO(E-Planung)
|
||||
stInOutHMI := "DB_Interface_HMI".stTRO.TRO15,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
END_REGION
|
||||
|
||||
REGION TRO06 (1Sep1Swi) Sep 0003
|
||||
// Anlagenkoordinate x/y: -220 / 13960 mm
|
||||
// Vorgaenger: TRO17
|
||||
// Nachfolger: TRO08, TRO10
|
||||
// Einstufung: mittel
|
||||
|
||||
// Separator 1 = Bauteil 0003 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 := FALSE;
|
||||
#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.stInSwitch1.Settings.nSwitchNo := "cSwi_____"; // TODO(E-Planung)
|
||||
#TRO06.stInSwitch1.Settings.xPluggedExSen3 := FALSE;
|
||||
#TRO06.stInSwitch1.Settings.xPluggedExSen4 := FALSE;
|
||||
#TRO06.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 TRO08: SYS2, SYS3, TRO01, TRO02, TRO03, TRO04, TRO05, TRO07, TRO08, TRO09, TRO10, TRO11, TRO12, TRO13, TRO14, TRO15, TRO16, TRO17, TRO18
|
||||
// ueber TRO10: SYS2, SYS3, TRO01, TRO02, TRO03, TRO04, TRO05, TRO07, TRO10, TRO11, TRO12, TRO13, TRO14, TRO15, TRO16, TRO17, TRO18
|
||||
|
||||
#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 TRO17
|
||||
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO08
|
||||
stInOutJamExit2 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO10
|
||||
stInOutJamExit3 := "DB_JamArea____".stJam____.stData,
|
||||
xOutStopper1 => "MB____", // TODO(E-Planung)
|
||||
xOutSw1ExTo3 => "MB____", // TODO(E-Planung)
|
||||
stInOutHMI := "DB_Interface_HMI".stTRO.TRO06,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
|
||||
REGION Direction
|
||||
"FC_Direction"(nInSwitchNo := "cSwi_____", // TODO(E-Planung)
|
||||
nOutDirection => #TRO06.nInDirection,
|
||||
InOutCarrier := "DB_JamArea____".stJam____.arCarrier[1]);
|
||||
END_REGION
|
||||
END_REGION
|
||||
|
||||
REGION TRO14 (1Sep) Sep 0037
|
||||
// Anlagenkoordinate x/y: -1026 / 10723 mm
|
||||
// Vorgaenger: TRO15
|
||||
// Nachfolger: TRO17
|
||||
// Einstufung: mittel
|
||||
|
||||
// Separator 1 = Bauteil 0037 aus dem Layout
|
||||
#TRO14.stInSeparator1.Settings.nSeparatorNo := "cSep_____"; // TODO(E-Planung)
|
||||
#TRO14.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||
#TRO14.stInSeparator1.Settings.tTrailingTime := t#600ms; // TODO(E-Planung): pruefen
|
||||
#TRO14.stInSeparator1.Settings.tHandlingTime := t#200ms; // TODO(E-Planung): pruefen
|
||||
#TRO14.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||
#TRO14.stInSeparator1.Settings.xPluggedJam := TRUE;
|
||||
#TRO14.stInSeparator1.Settings.xPluggedPart := FALSE;
|
||||
#TRO14.stInSeparator1.Settings.xPluggedScanner := FALSE;
|
||||
#TRO14.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO14.stInSeparator1.Settings.tSenFree := T#1500ms; // TODO(E-Planung): pruefen
|
||||
#TRO14.stInSeparator1.Settings.tSenWait := T#4000ms; // TODO(E-Planung): pruefen
|
||||
|
||||
#TRO14.stInPriorityManager.xReleaseOk := TRUE;
|
||||
|
||||
#TRO14(nInMainTroNo := "cMainTro____", // TODO(E-Planung)
|
||||
xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung)
|
||||
xInAllRdyToStart := TRUE,
|
||||
xInRelease := "DB_TRO_TEST".TRO14,
|
||||
stInOutMachineState := #stInOutControlUnitCabinet,
|
||||
stInOutCognexInterface := #stCognexInterfaceDummy,
|
||||
arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO15
|
||||
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO17
|
||||
stInOutJamExit2 := "DB_JamArea____".stJam____.stData,
|
||||
xOutStopper1 => "MB____", // TODO(E-Planung)
|
||||
stInOutHMI := "DB_Interface_HMI".stTRO.TRO14,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
END_REGION
|
||||
|
||||
REGION TRO08 (Vario) Sep 0054
|
||||
// Anlagenkoordinate x/y: 3300 / 13510 mm
|
||||
// Vorgaenger: TRO06
|
||||
// Nachfolger: TRO09
|
||||
// Einstufung: hoch
|
||||
|
||||
// Separator 1 = Bauteil 0054 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.stInVario.Settings.xContinousEmptying := FALSE;
|
||||
#TRO08.stInVario.Settings.tWaitForJog := T#300ms; // TODO(E-Planung): pruefen
|
||||
#TRO08.stInVario.Settings.tConvEmpty := T#45000ms; // TODO(E-Planung): pruefen
|
||||
#TRO08.stInVario.Settings.nCountCarrier := 1; // TODO(E-Planung): pruefen
|
||||
#TRO08.stInVario.Settings.tWaitForStop := t#3s;
|
||||
#TRO08.stInVario.Settings.tCarrierInPosDelay := t#1200ms;
|
||||
#TRO08.stInVario.Settings.tCarrierInPosEdgeDelay := t#100ms;
|
||||
#TRO08.stInVario.Settings.xJamSenDelayActive := TRUE;
|
||||
#TRO08.stInVario.Settings.tJamSenDelay := T#2s;
|
||||
#TRO08.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO08.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO08.stInVario.stSenLastPos := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO08.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
|
||||
#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,
|
||||
xInMotorProtection := "FC____", // TODO(E-Planung)
|
||||
xInAutomatic := #t_automatik,
|
||||
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 TRO09
|
||||
stInOutJamExit2 := "DB_JamArea____".stJam____.stData,
|
||||
xOutStopper1 => "MB____", // TODO(E-Planung)
|
||||
xOutVarioMotor => "MA____", // TODO(E-Planung)
|
||||
stInOutHMI := "DB_Interface_HMI".stTRO.TRO08,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
END_REGION
|
||||
|
||||
REGION TRO09 (1Sep) Sep 0055
|
||||
// Anlagenkoordinate x/y: 8953 / 13510 mm
|
||||
// Vorgaenger: TRO08
|
||||
// Nachfolger: TRO07
|
||||
// Einstufung: mittel
|
||||
|
||||
// Separator 1 = Bauteil 0055 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.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,
|
||||
stInOutMachineState := #stInOutControlUnitCabinet,
|
||||
stInOutCognexInterface := #stCognexInterfaceDummy,
|
||||
arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO08
|
||||
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)
|
||||
stInOutHMI := "DB_Interface_HMI".stTRO.TRO09,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
END_REGION
|
||||
|
||||
END_FUNCTION_BLOCK
|
||||
+872
@@ -0,0 +1,872 @@
|
||||
// ============================================================
|
||||
// FB_Main - GERUEST, erzeugt von lib/scl_skeleton.py
|
||||
// Quelle : mubea_tro.json
|
||||
// Erzeugt: <maskiert>
|
||||
//
|
||||
// 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 TRO03: Materialeingang ueber SYS1.
|
||||
//
|
||||
// Aus Template : FB_ILS_MTRO_1Sep1Swi
|
||||
// Generisch : FB_ILS_MTRO_1Sep, FB_ILS_MTRO_2Sep2Swi, FB_ILS_MTRO_PinStore_Auto, FB_ILS_MTRO_Vario (kein Template - von Hand pruefen)
|
||||
// ============================================================
|
||||
|
||||
FUNCTION_BLOCK "FB_Main"
|
||||
{ S7_Optimized_Access := 'TRUE' }
|
||||
VERSION : 0.1
|
||||
VAR
|
||||
TRO03 : "FB_ILS_MTRO_1Sep"; // 1Sep, Sep 0042
|
||||
TRO05 : "FB_ILS_MTRO_1Sep"; // 1Sep, Sep 0044
|
||||
TRO18 : "FB_ILS_MTRO_PinStore_Auto"; // PinStore_Auto, Sep 0066, 0069, 0072, 0075, 0078, 0081, 0084, 0087, 0090, 0093, 0096, 0099, 0102, 0105, 0108, 0111, 0114, 0117, 0120, 0123
|
||||
TRO07 : "FB_ILS_MTRO_1Sep"; // 1Sep, Sep 0045
|
||||
TRO10 : "FB_ILS_MTRO_2Sep2Swi"; // 2Sep2Swi, Sep 0005, 0036
|
||||
TRO04 : "FB_ILS_MTRO_1Sep"; // 1Sep, Sep 0043
|
||||
TRO01 : "FB_ILS_MTRO_1Sep"; // 1Sep, Sep 0040
|
||||
TRO02 : "FB_ILS_MTRO_1Sep"; // 1Sep, Sep 0012
|
||||
TRO11 : "FB_ILS_MTRO_Vario"; // Vario, Sep 0058
|
||||
TRO13 : "FB_ILS_MTRO_1Sep1Swi"; // 1Sep1Swi, Sep 0011
|
||||
TRO12 : "FB_ILS_MTRO_1Sep"; // 1Sep, Sep 0059
|
||||
TRO16 : "FB_ILS_MTRO_Vario"; // Vario, Sep 0062
|
||||
TRO17 : "FB_ILS_MTRO_1Sep"; // 1Sep, Sep 0063
|
||||
TRO15 : "FB_ILS_MTRO_1Sep"; // 1Sep, Sep 0038
|
||||
TRO06 : "FB_ILS_MTRO_1Sep1Swi"; // 1Sep1Swi, Sep 0003
|
||||
TRO14 : "FB_ILS_MTRO_1Sep"; // 1Sep, Sep 0037
|
||||
TRO08 : "FB_ILS_MTRO_Vario"; // Vario, Sep 0054
|
||||
TRO09 : "FB_ILS_MTRO_1Sep"; // 1Sep, Sep 0055
|
||||
END_VAR
|
||||
|
||||
BEGIN
|
||||
|
||||
REGION TRO03 (1Sep) Sep 0042
|
||||
// Anlagenkoordinate x/y: 10490 / -525 mm
|
||||
// Vorgaenger: SYS1, TRO04
|
||||
// Nachfolger: TRO05
|
||||
// Einstufung: mittel
|
||||
|
||||
// Separator 1 = Bauteil 0042 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.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 SYS1 (Station, kein TRO)
|
||||
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamEntr2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO04
|
||||
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.TRO03,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
END_REGION
|
||||
|
||||
REGION TRO05 (1Sep) Sep 0044
|
||||
// Anlagenkoordinate x/y: 10310 / -5013 mm
|
||||
// Vorgaenger: TRO03
|
||||
// Nachfolger: TRO18
|
||||
// Einstufung: mittel
|
||||
|
||||
// Separator 1 = Bauteil 0044 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 := FALSE;
|
||||
#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
|
||||
|
||||
#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 TRO03
|
||||
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO18
|
||||
stInOutJamExit2 := "DB_JamArea____".stJam____.stData,
|
||||
xOutStopper1 => "MB____", // TODO(E-Planung)
|
||||
stInOutHMI := "DB_Interface_HMI".stTRO.TRO05,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
END_REGION
|
||||
|
||||
REGION TRO18 (PinStore_Auto) Sep 0066, 0069, 0072, 0075, 0078, 0081, 0084, 0087, 0090, 0093, 0096, 0099, 0102, 0105, 0108, 0111, 0114, 0117, 0120, 0123
|
||||
// Anlagenkoordinate x/y: 958 / 4700 mm
|
||||
// Vorgaenger: TRO05, TRO12
|
||||
// Nachfolger: TRO07, TRO10
|
||||
// Einstufung: hoch
|
||||
|
||||
// Separator 1 = Bauteil 0066 aus dem Layout
|
||||
#TRO18.stInSeparator1.Settings.nSeparatorNo := "cSep_____"; // TODO(E-Planung)
|
||||
#TRO18.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||
#TRO18.stInSeparator1.Settings.tTrailingTime := t#600ms; // TODO(E-Planung): pruefen
|
||||
#TRO18.stInSeparator1.Settings.tHandlingTime := t#200ms; // TODO(E-Planung): pruefen
|
||||
#TRO18.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||
#TRO18.stInSeparator1.Settings.xPluggedJam := TRUE;
|
||||
#TRO18.stInSeparator1.Settings.xPluggedPart := FALSE;
|
||||
#TRO18.stInSeparator1.Settings.xPluggedScanner := TRUE;
|
||||
#TRO18.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO18.stInSeparator1.Settings.tSenFree := T#1500ms; // TODO(E-Planung): pruefen
|
||||
#TRO18.stInSeparator1.Settings.tSenWait := T#4000ms; // TODO(E-Planung): pruefen
|
||||
|
||||
#TRO18.stInBarcodeReader.Settings.xActivateCheckASCI := TRUE;
|
||||
#TRO18.stInBarcodeReader.Settings.tTimeout := T#3000ms;
|
||||
// TODO(E-Planung): Cognex-Interface verdrahten (#arCognexInterface["cScanner____"])
|
||||
|
||||
// TODO(E-Planung): Linienspeicher mit 19 Linien - Parametrierung je Linie
|
||||
|
||||
#TRO18.stInPriorityManager.xReleaseOk := TRUE;
|
||||
|
||||
#TRO18(nInMainTroNo := "cMainTro____", // TODO(E-Planung)
|
||||
xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung)
|
||||
xInAllRdyToStart := TRUE,
|
||||
xInRelease := "DB_TRO_TEST".TRO18,
|
||||
stInOutMachineState := #stInOutControlUnitCabinet,
|
||||
stInOutCognexInterface := #stCognexInterfaceDummy,
|
||||
arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO05
|
||||
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 TRO07
|
||||
stInOutJamExit2 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO10
|
||||
stInOutJamExit3 := "DB_JamArea____".stJam____.stData,
|
||||
xOutStopper1 => "MB____", // TODO(E-Planung)
|
||||
stInOutHMI := "DB_Interface_HMI".stTRO.TRO18,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
END_REGION
|
||||
|
||||
REGION TRO07 (1Sep) Sep 0045
|
||||
// Anlagenkoordinate x/y: 9510 / 14217 mm
|
||||
// Vorgaenger: TRO09, TRO18
|
||||
// Nachfolger: TRO04
|
||||
// Einstufung: mittel
|
||||
|
||||
// Separator 1 = Bauteil 0045 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,
|
||||
arInOutJamEntr2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO18
|
||||
stInOutJamEntr2 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO04
|
||||
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 TRO10 (2Sep2Swi) Sep 0005, 0036
|
||||
// Anlagenkoordinate x/y: 1012 / -4650 mm
|
||||
// Vorgaenger: TRO01, TRO06, TRO18
|
||||
// Nachfolger: TRO01, TRO02, TRO11
|
||||
// Einstufung: hoch
|
||||
|
||||
// Separator 1 = Bauteil 0005 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 := TRUE;
|
||||
#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
|
||||
|
||||
// Separator 2 = Bauteil 0036 aus dem Layout
|
||||
#TRO10.stInSeparator2.Settings.nSeparatorNo := "cSep_____"; // TODO(E-Planung)
|
||||
#TRO10.stInSeparator2.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||
#TRO10.stInSeparator2.Settings.tTrailingTime := t#600ms; // TODO(E-Planung): pruefen
|
||||
#TRO10.stInSeparator2.Settings.tHandlingTime := t#200ms; // TODO(E-Planung): pruefen
|
||||
#TRO10.stInSeparator2.Settings.tJam := "TimeForSepJam";
|
||||
#TRO10.stInSeparator2.Settings.xPluggedJam := TRUE;
|
||||
#TRO10.stInSeparator2.Settings.xPluggedPart := FALSE;
|
||||
#TRO10.stInSeparator2.Settings.xPluggedScanner := TRUE;
|
||||
#TRO10.stInSeparator2.stSenInSep := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO10.stInSeparator2.Settings.tSenFree := T#1500ms; // TODO(E-Planung): pruefen
|
||||
#TRO10.stInSeparator2.Settings.tSenWait := T#4000ms; // TODO(E-Planung): pruefen
|
||||
|
||||
#TRO10.stInSwitch1.Settings.nSwitchNo := "cSwi_____"; // TODO(E-Planung)
|
||||
#TRO10.stInSwitch1.Settings.xPluggedExSen3 := FALSE;
|
||||
#TRO10.stInSwitch1.Settings.xPluggedExSen4 := FALSE;
|
||||
#TRO10.stInSwitch1.Settings.nTo1Destinations := _; // TODO(E-Planung): dieser TRO hat 3 Abgaenge auf 2 Weichen - Aufteilung festlegen
|
||||
|
||||
#TRO10.stInSwitch2.Settings.nSwitchNo := "cSwi_____"; // TODO(E-Planung)
|
||||
#TRO10.stInSwitch2.Settings.xPluggedExSen3 := FALSE;
|
||||
#TRO10.stInSwitch2.Settings.xPluggedExSen4 := FALSE;
|
||||
#TRO10.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 TRO02: SYS2, SYS3, TRO02, TRO03, TRO04, TRO05, TRO06, TRO07, TRO08, TRO09, TRO13, TRO14, TRO15, TRO16, TRO17, TRO18
|
||||
// ueber TRO11: TRO03, TRO04, TRO05, TRO07, TRO11, TRO12, TRO18
|
||||
|
||||
#TRO10.stInBarcodeReader1.Settings.xActivateCheckASCI := TRUE;
|
||||
#TRO10.stInBarcodeReader1.Settings.tTimeout := T#3000ms;
|
||||
// TODO(E-Planung): Cognex-Interface verdrahten (#arCognexInterface["cScanner____"])
|
||||
|
||||
#TRO10.stInBarcodeReader2.Settings.xActivateCheckASCI := TRUE;
|
||||
#TRO10.stInBarcodeReader2.Settings.tTimeout := T#3000ms;
|
||||
// TODO(E-Planung): Cognex-Interface verdrahten (#arCognexInterface["cScanner____"])
|
||||
|
||||
#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,
|
||||
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 TRO06
|
||||
stInOutJamEntr2 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamEntr3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO18
|
||||
stInOutJamEntr3 := "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 TRO02
|
||||
stInOutJamExit3 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit4 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO11
|
||||
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.TRO10,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
|
||||
REGION Direction
|
||||
"FC_Direction"(nInSwitchNo := "cSwi_____", // TODO(E-Planung)
|
||||
nOutDirection => #TRO10.nInDirection1,
|
||||
InOutCarrier := "DB_JamArea____".stJam____.arCarrier[1]);
|
||||
|
||||
"FC_Direction"(nInSwitchNo := "cSwi_____", // TODO(E-Planung)
|
||||
nOutDirection => #TRO10.nInDirection2,
|
||||
InOutCarrier := "DB_JamArea____".stJam____.arCarrier[1]);
|
||||
END_REGION
|
||||
END_REGION
|
||||
|
||||
REGION TRO04 (1Sep) Sep 0043
|
||||
// Anlagenkoordinate x/y: 10310 / 160 mm
|
||||
// Vorgaenger: TRO07
|
||||
// Nachfolger: TRO03
|
||||
// Einstufung: mittel
|
||||
|
||||
// Separator 1 = Bauteil 0043 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 := FALSE;
|
||||
#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.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 TRO07
|
||||
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 TRO01 (1Sep) Sep 0040
|
||||
// Anlagenkoordinate x/y: 5355 / -5878 mm
|
||||
// Vorgaenger: TRO10
|
||||
// Nachfolger: TRO10
|
||||
// Einstufung: mittel
|
||||
|
||||
// Separator 1 = Bauteil 0040 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 TRO10
|
||||
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO10
|
||||
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 TRO02 (1Sep) Sep 0012
|
||||
// Anlagenkoordinate x/y: -220 / -3472 mm
|
||||
// Vorgaenger: TRO10
|
||||
// Nachfolger: SYS2, SYS3, TRO13
|
||||
// Einstufung: mittel
|
||||
|
||||
// Separator 1 = Bauteil 0012 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 := FALSE;
|
||||
#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.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 TRO10
|
||||
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach SYS2 (Station, kein TRO)
|
||||
stInOutJamExit2 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach SYS3 (Station, kein TRO)
|
||||
stInOutJamExit3 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit4 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO13
|
||||
stInOutJamExit4 := "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
|
||||
// Anlagenkoordinate x/y: 3300 / -4743 mm
|
||||
// Vorgaenger: TRO10
|
||||
// Nachfolger: TRO12
|
||||
// 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 TRO10
|
||||
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.TRO11,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
END_REGION
|
||||
|
||||
REGION TRO13 (1Sep1Swi) Sep 0011
|
||||
// Anlagenkoordinate x/y: -220 / -481 mm
|
||||
// Vorgaenger: TRO02
|
||||
// Nachfolger: TRO16, TRO17
|
||||
// Einstufung: mittel
|
||||
// Aufbau nach Template FB_ILS_MTRO_1Sep1Swi.scl.j2 (Referenz: doc/TRO_Katalog/scl_templates)
|
||||
|
||||
// Separator 1 = Bauteil 0011 aus dem Layout
|
||||
#TRO13.stInSeparator1.Settings.nSeparatorNo := "cSep_____"; // TODO(E-Planung)
|
||||
#TRO13.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||
#TRO13.stInSeparator1.Settings.tTrailingTime := t#100ms; // TODO(E-Planung): pruefen
|
||||
#TRO13.stInSeparator1.Settings.tHandlingTime := t#50ms; // TODO(E-Planung): pruefen
|
||||
#TRO13.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||
#TRO13.stInSeparator1.Settings.xPluggedJam := TRUE;
|
||||
#TRO13.stInSeparator1.Settings.xPluggedPart := FALSE;
|
||||
#TRO13.stInSeparator1.Settings.xPluggedScanner := FALSE;
|
||||
#TRO13.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO13.stInSenJam2 := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO13.stInSenJam3 := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
|
||||
#TRO13.stInSwitch1.Settings.nSwitchNo := "cSwi_____"; // TODO(E-Planung)
|
||||
#TRO13.stInSwitch1.Settings.xPluggedExSen3 := FALSE;
|
||||
#TRO13.stInSwitch1.Settings.xPluggedExSen4 := FALSE;
|
||||
#TRO13.stInSwitch1.Settings.nTo1Destinations := 2; // Abgaenge laut Topologie - TODO(E-Planung): pruefen (Info fuer HMI; Referenz TRO107 hat 3 bei 2 Abgaengen)
|
||||
|
||||
// Zielliste je Abgang (aus dem TRO-Graphen berechnet) -
|
||||
// Grundlage fuer die Zuordnung Ziel -> Richtung in FC_Direction:
|
||||
// ueber TRO16: SYS2, SYS3, TRO01, TRO02, TRO03, TRO04, TRO05, TRO06, TRO07, TRO08, TRO09, TRO10, TRO11, TRO12, TRO14, TRO15, TRO16, TRO17, TRO18
|
||||
// ueber TRO17: SYS2, SYS3, TRO01, TRO02, TRO03, TRO04, TRO05, TRO06, TRO07, TRO08, TRO09, TRO10, TRO11, TRO12, TRO17, TRO18
|
||||
|
||||
#TRO13.stInSettings.xPrioDir2 := TRUE; // TODO(E-Planung)
|
||||
#TRO13(stInPriorityManagerDir2 := "DB_Prozessdaten".stPriorityManager.udt_____.TroIn, // TODO(E-Planung)
|
||||
stOutPriorityManagerDir2 => "DB_Prozessdaten".stPriorityManager.udt_____.TroOut, // TODO(E-Planung)
|
||||
nInMainTroNo := "cMainTro____", // TODO(E-Planung)
|
||||
xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung)
|
||||
xInAllRdyToStart := TRUE,
|
||||
xInCarouselRun1 := #fbCarousel____.xOutConveyorFullSpeed, // TODO(E-Planung) - nur am Kreisel, sonst Zeile loeschen
|
||||
xInRelease := TRUE,
|
||||
stInOutMachineState := #stInOutControlUnitCabinet, // TODO(E-Planung) - Schaltschrank
|
||||
stInOutCognexInterface := #stCognexInterfaceDummy,
|
||||
arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO02
|
||||
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
|
||||
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO16
|
||||
stInOutJamExit2 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
|
||||
arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO17
|
||||
stInOutJamExit3 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
|
||||
stInOutHMI := "DB_Interface_HMI".stTRO.TRO13,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"], // TODO(E-Planung)
|
||||
xOutStopper1 => "MB____", // TODO(E-Planung)
|
||||
xOutSw1ExTo3 => "MB____"); // TODO(E-Planung)
|
||||
|
||||
REGION Direction
|
||||
"FC_Direction"(nInSwitchNo := "cSwi_____", // TODO(E-Planung)
|
||||
nOutDirection => #TRO13.nInDirection,
|
||||
InOutCarrier := "DB_JamArea____".stJam____.arCarrier[1]); // TODO(E-Planung)
|
||||
|
||||
END_REGION
|
||||
END_REGION
|
||||
|
||||
REGION TRO12 (1Sep) Sep 0059
|
||||
// Anlagenkoordinate x/y: 9412 / -4150 mm
|
||||
// Vorgaenger: TRO11
|
||||
// Nachfolger: TRO18
|
||||
// Einstufung: mittel
|
||||
|
||||
// Separator 1 = Bauteil 0059 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 := FALSE;
|
||||
#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.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 TRO11
|
||||
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO18
|
||||
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 TRO16 (Vario) Sep 0062
|
||||
// Anlagenkoordinate x/y: -899 / 1135 mm
|
||||
// Vorgaenger: TRO13
|
||||
// Nachfolger: TRO15
|
||||
// Einstufung: hoch
|
||||
|
||||
// Separator 1 = Bauteil 0062 aus dem Layout
|
||||
#TRO16.stInSeparator1.Settings.nSeparatorNo := "cSep_____"; // TODO(E-Planung)
|
||||
#TRO16.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||
#TRO16.stInSeparator1.Settings.tTrailingTime := t#600ms; // TODO(E-Planung): pruefen
|
||||
#TRO16.stInSeparator1.Settings.tHandlingTime := t#200ms; // TODO(E-Planung): pruefen
|
||||
#TRO16.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||
#TRO16.stInSeparator1.Settings.xPluggedJam := TRUE;
|
||||
#TRO16.stInSeparator1.Settings.xPluggedPart := FALSE;
|
||||
#TRO16.stInSeparator1.Settings.xPluggedScanner := FALSE;
|
||||
#TRO16.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO16.stInSeparator1.Settings.tSenFree := T#1500ms; // TODO(E-Planung): pruefen
|
||||
#TRO16.stInSeparator1.Settings.tSenWait := T#4000ms; // TODO(E-Planung): pruefen
|
||||
|
||||
#TRO16.stInVario.Settings.xContinousEmptying := FALSE;
|
||||
#TRO16.stInVario.Settings.tWaitForJog := T#300ms; // TODO(E-Planung): pruefen
|
||||
#TRO16.stInVario.Settings.tConvEmpty := T#45000ms; // TODO(E-Planung): pruefen
|
||||
#TRO16.stInVario.Settings.nCountCarrier := 1; // TODO(E-Planung): pruefen
|
||||
#TRO16.stInVario.Settings.tWaitForStop := t#3s;
|
||||
#TRO16.stInVario.Settings.tCarrierInPosDelay := t#1200ms;
|
||||
#TRO16.stInVario.Settings.tCarrierInPosEdgeDelay := t#100ms;
|
||||
#TRO16.stInVario.Settings.xJamSenDelayActive := TRUE;
|
||||
#TRO16.stInVario.Settings.tJamSenDelay := T#2s;
|
||||
#TRO16.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO16.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO16.stInVario.stSenLastPos := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO16.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
|
||||
#TRO16.stInPriorityManager.xReleaseOk := TRUE;
|
||||
|
||||
#TRO16(nInMainTroNo := "cMainTro____", // TODO(E-Planung)
|
||||
xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung)
|
||||
xInAllRdyToStart := TRUE,
|
||||
xInRelease := "DB_TRO_TEST".TRO16,
|
||||
xInMotorProtection := "FC____", // TODO(E-Planung)
|
||||
xInAutomatic := #t_automatik,
|
||||
stInOutMachineState := #stInOutControlUnitCabinet,
|
||||
stInOutCognexInterface := #stCognexInterfaceDummy,
|
||||
arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO13
|
||||
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO15
|
||||
stInOutJamExit2 := "DB_JamArea____".stJam____.stData,
|
||||
xOutStopper1 => "MB____", // TODO(E-Planung)
|
||||
xOutVarioMotor => "MA____", // TODO(E-Planung)
|
||||
stInOutHMI := "DB_Interface_HMI".stTRO.TRO16,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
END_REGION
|
||||
|
||||
REGION TRO17 (1Sep) Sep 0063
|
||||
// Anlagenkoordinate x/y: -703 / 12296 mm
|
||||
// Vorgaenger: TRO13, TRO14
|
||||
// Nachfolger: TRO06
|
||||
// Einstufung: mittel
|
||||
|
||||
// Separator 1 = Bauteil 0063 aus dem Layout
|
||||
#TRO17.stInSeparator1.Settings.nSeparatorNo := "cSep_____"; // TODO(E-Planung)
|
||||
#TRO17.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||
#TRO17.stInSeparator1.Settings.tTrailingTime := t#600ms; // TODO(E-Planung): pruefen
|
||||
#TRO17.stInSeparator1.Settings.tHandlingTime := t#200ms; // TODO(E-Planung): pruefen
|
||||
#TRO17.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||
#TRO17.stInSeparator1.Settings.xPluggedJam := TRUE;
|
||||
#TRO17.stInSeparator1.Settings.xPluggedPart := FALSE;
|
||||
#TRO17.stInSeparator1.Settings.xPluggedScanner := FALSE;
|
||||
#TRO17.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO17.stInSeparator1.Settings.tSenFree := T#1500ms; // TODO(E-Planung): pruefen
|
||||
#TRO17.stInSeparator1.Settings.tSenWait := T#4000ms; // TODO(E-Planung): pruefen
|
||||
|
||||
#TRO17.stInPriorityManager.xReleaseOk := TRUE;
|
||||
|
||||
#TRO17(nInMainTroNo := "cMainTro____", // TODO(E-Planung)
|
||||
xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung)
|
||||
xInAllRdyToStart := TRUE,
|
||||
xInRelease := "DB_TRO_TEST".TRO17,
|
||||
stInOutMachineState := #stInOutControlUnitCabinet,
|
||||
stInOutCognexInterface := #stCognexInterfaceDummy,
|
||||
arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO13
|
||||
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamEntr2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO14
|
||||
stInOutJamEntr2 := "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.TRO17,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
END_REGION
|
||||
|
||||
REGION TRO15 (1Sep) Sep 0038
|
||||
// Anlagenkoordinate x/y: -1206 / 5330 mm
|
||||
// Vorgaenger: TRO16
|
||||
// Nachfolger: TRO14
|
||||
// Einstufung: mittel
|
||||
|
||||
// Separator 1 = Bauteil 0038 aus dem Layout
|
||||
#TRO15.stInSeparator1.Settings.nSeparatorNo := "cSep_____"; // TODO(E-Planung)
|
||||
#TRO15.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||
#TRO15.stInSeparator1.Settings.tTrailingTime := t#600ms; // TODO(E-Planung): pruefen
|
||||
#TRO15.stInSeparator1.Settings.tHandlingTime := t#200ms; // TODO(E-Planung): pruefen
|
||||
#TRO15.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||
#TRO15.stInSeparator1.Settings.xPluggedJam := TRUE;
|
||||
#TRO15.stInSeparator1.Settings.xPluggedPart := FALSE;
|
||||
#TRO15.stInSeparator1.Settings.xPluggedScanner := FALSE;
|
||||
#TRO15.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO15.stInSeparator1.Settings.tSenFree := T#1500ms; // TODO(E-Planung): pruefen
|
||||
#TRO15.stInSeparator1.Settings.tSenWait := T#4000ms; // TODO(E-Planung): pruefen
|
||||
|
||||
#TRO15.stInPriorityManager.xReleaseOk := TRUE;
|
||||
|
||||
#TRO15(nInMainTroNo := "cMainTro____", // TODO(E-Planung)
|
||||
xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung)
|
||||
xInAllRdyToStart := TRUE,
|
||||
xInRelease := "DB_TRO_TEST".TRO15,
|
||||
stInOutMachineState := #stInOutControlUnitCabinet,
|
||||
stInOutCognexInterface := #stCognexInterfaceDummy,
|
||||
arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO16
|
||||
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO14
|
||||
stInOutJamExit2 := "DB_JamArea____".stJam____.stData,
|
||||
xOutStopper1 => "MB____", // TODO(E-Planung)
|
||||
stInOutHMI := "DB_Interface_HMI".stTRO.TRO15,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
END_REGION
|
||||
|
||||
REGION TRO06 (1Sep1Swi) Sep 0003
|
||||
// Anlagenkoordinate x/y: -220 / 13960 mm
|
||||
// Vorgaenger: TRO17
|
||||
// Nachfolger: TRO08, TRO10
|
||||
// Einstufung: mittel
|
||||
// Aufbau nach Template FB_ILS_MTRO_1Sep1Swi.scl.j2 (Referenz: doc/TRO_Katalog/scl_templates)
|
||||
|
||||
// Separator 1 = Bauteil 0003 aus dem Layout
|
||||
#TRO06.stInSeparator1.Settings.nSeparatorNo := "cSep_____"; // TODO(E-Planung)
|
||||
#TRO06.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||
#TRO06.stInSeparator1.Settings.tTrailingTime := t#100ms; // TODO(E-Planung): pruefen
|
||||
#TRO06.stInSeparator1.Settings.tHandlingTime := t#50ms; // TODO(E-Planung): pruefen
|
||||
#TRO06.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||
#TRO06.stInSeparator1.Settings.xPluggedJam := TRUE;
|
||||
#TRO06.stInSeparator1.Settings.xPluggedPart := FALSE;
|
||||
#TRO06.stInSeparator1.Settings.xPluggedScanner := FALSE;
|
||||
#TRO06.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO06.stInSenJam2 := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO06.stInSenJam3 := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
|
||||
#TRO06.stInSwitch1.Settings.nSwitchNo := "cSwi_____"; // TODO(E-Planung)
|
||||
#TRO06.stInSwitch1.Settings.xPluggedExSen3 := FALSE;
|
||||
#TRO06.stInSwitch1.Settings.xPluggedExSen4 := FALSE;
|
||||
#TRO06.stInSwitch1.Settings.nTo1Destinations := 2; // Abgaenge laut Topologie - TODO(E-Planung): pruefen (Info fuer HMI; Referenz TRO107 hat 3 bei 2 Abgaengen)
|
||||
|
||||
// Zielliste je Abgang (aus dem TRO-Graphen berechnet) -
|
||||
// Grundlage fuer die Zuordnung Ziel -> Richtung in FC_Direction:
|
||||
// ueber TRO08: SYS2, SYS3, TRO01, TRO02, TRO03, TRO04, TRO05, TRO07, TRO08, TRO09, TRO10, TRO11, TRO12, TRO13, TRO14, TRO15, TRO16, TRO17, TRO18
|
||||
// ueber TRO10: SYS2, SYS3, TRO01, TRO02, TRO03, TRO04, TRO05, TRO07, TRO10, TRO11, TRO12, TRO13, TRO14, TRO15, TRO16, TRO17, TRO18
|
||||
|
||||
#TRO06.stInSettings.xPrioDir2 := TRUE; // TODO(E-Planung)
|
||||
#TRO06(stInPriorityManagerDir2 := "DB_Prozessdaten".stPriorityManager.udt_____.TroIn, // TODO(E-Planung)
|
||||
stOutPriorityManagerDir2 => "DB_Prozessdaten".stPriorityManager.udt_____.TroOut, // TODO(E-Planung)
|
||||
nInMainTroNo := "cMainTro____", // TODO(E-Planung)
|
||||
xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung)
|
||||
xInAllRdyToStart := TRUE,
|
||||
xInCarouselRun1 := #fbCarousel____.xOutConveyorFullSpeed, // TODO(E-Planung) - nur am Kreisel, sonst Zeile loeschen
|
||||
xInRelease := TRUE,
|
||||
stInOutMachineState := #stInOutControlUnitCabinet, // TODO(E-Planung) - Schaltschrank
|
||||
stInOutCognexInterface := #stCognexInterfaceDummy,
|
||||
arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO17
|
||||
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
|
||||
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO08
|
||||
stInOutJamExit2 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
|
||||
arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO10
|
||||
stInOutJamExit3 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
|
||||
stInOutHMI := "DB_Interface_HMI".stTRO.TRO06,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"], // TODO(E-Planung)
|
||||
xOutStopper1 => "MB____", // TODO(E-Planung)
|
||||
xOutSw1ExTo3 => "MB____"); // TODO(E-Planung)
|
||||
|
||||
REGION Direction
|
||||
"FC_Direction"(nInSwitchNo := "cSwi_____", // TODO(E-Planung)
|
||||
nOutDirection => #TRO06.nInDirection,
|
||||
InOutCarrier := "DB_JamArea____".stJam____.arCarrier[1]); // TODO(E-Planung)
|
||||
|
||||
END_REGION
|
||||
END_REGION
|
||||
|
||||
REGION TRO14 (1Sep) Sep 0037
|
||||
// Anlagenkoordinate x/y: -1026 / 10723 mm
|
||||
// Vorgaenger: TRO15
|
||||
// Nachfolger: TRO17
|
||||
// Einstufung: mittel
|
||||
|
||||
// Separator 1 = Bauteil 0037 aus dem Layout
|
||||
#TRO14.stInSeparator1.Settings.nSeparatorNo := "cSep_____"; // TODO(E-Planung)
|
||||
#TRO14.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||
#TRO14.stInSeparator1.Settings.tTrailingTime := t#600ms; // TODO(E-Planung): pruefen
|
||||
#TRO14.stInSeparator1.Settings.tHandlingTime := t#200ms; // TODO(E-Planung): pruefen
|
||||
#TRO14.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||
#TRO14.stInSeparator1.Settings.xPluggedJam := TRUE;
|
||||
#TRO14.stInSeparator1.Settings.xPluggedPart := FALSE;
|
||||
#TRO14.stInSeparator1.Settings.xPluggedScanner := FALSE;
|
||||
#TRO14.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO14.stInSeparator1.Settings.tSenFree := T#1500ms; // TODO(E-Planung): pruefen
|
||||
#TRO14.stInSeparator1.Settings.tSenWait := T#4000ms; // TODO(E-Planung): pruefen
|
||||
|
||||
#TRO14.stInPriorityManager.xReleaseOk := TRUE;
|
||||
|
||||
#TRO14(nInMainTroNo := "cMainTro____", // TODO(E-Planung)
|
||||
xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung)
|
||||
xInAllRdyToStart := TRUE,
|
||||
xInRelease := "DB_TRO_TEST".TRO14,
|
||||
stInOutMachineState := #stInOutControlUnitCabinet,
|
||||
stInOutCognexInterface := #stCognexInterfaceDummy,
|
||||
arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO15
|
||||
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData,
|
||||
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO17
|
||||
stInOutJamExit2 := "DB_JamArea____".stJam____.stData,
|
||||
xOutStopper1 => "MB____", // TODO(E-Planung)
|
||||
stInOutHMI := "DB_Interface_HMI".stTRO.TRO14,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
END_REGION
|
||||
|
||||
REGION TRO08 (Vario) Sep 0054
|
||||
// Anlagenkoordinate x/y: 3300 / 13510 mm
|
||||
// Vorgaenger: TRO06
|
||||
// Nachfolger: TRO09
|
||||
// Einstufung: hoch
|
||||
|
||||
// Separator 1 = Bauteil 0054 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.stInVario.Settings.xContinousEmptying := FALSE;
|
||||
#TRO08.stInVario.Settings.tWaitForJog := T#300ms; // TODO(E-Planung): pruefen
|
||||
#TRO08.stInVario.Settings.tConvEmpty := T#45000ms; // TODO(E-Planung): pruefen
|
||||
#TRO08.stInVario.Settings.nCountCarrier := 1; // TODO(E-Planung): pruefen
|
||||
#TRO08.stInVario.Settings.tWaitForStop := t#3s;
|
||||
#TRO08.stInVario.Settings.tCarrierInPosDelay := t#1200ms;
|
||||
#TRO08.stInVario.Settings.tCarrierInPosEdgeDelay := t#100ms;
|
||||
#TRO08.stInVario.Settings.xJamSenDelayActive := TRUE;
|
||||
#TRO08.stInVario.Settings.tJamSenDelay := T#2s;
|
||||
#TRO08.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO08.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO08.stInVario.stSenLastPos := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
#TRO08.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
|
||||
|
||||
#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,
|
||||
xInMotorProtection := "FC____", // TODO(E-Planung)
|
||||
xInAutomatic := #t_automatik,
|
||||
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 TRO09
|
||||
stInOutJamExit2 := "DB_JamArea____".stJam____.stData,
|
||||
xOutStopper1 => "MB____", // TODO(E-Planung)
|
||||
xOutVarioMotor => "MA____", // TODO(E-Planung)
|
||||
stInOutHMI := "DB_Interface_HMI".stTRO.TRO08,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
END_REGION
|
||||
|
||||
REGION TRO09 (1Sep) Sep 0055
|
||||
// Anlagenkoordinate x/y: 8953 / 13510 mm
|
||||
// Vorgaenger: TRO08
|
||||
// Nachfolger: TRO07
|
||||
// Einstufung: mittel
|
||||
|
||||
// Separator 1 = Bauteil 0055 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.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,
|
||||
stInOutMachineState := #stInOutControlUnitCabinet,
|
||||
stInOutCognexInterface := #stCognexInterfaceDummy,
|
||||
arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO08
|
||||
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)
|
||||
stInOutHMI := "DB_Interface_HMI".stTRO.TRO09,
|
||||
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"]); // TODO(E-Planung)
|
||||
END_REGION
|
||||
|
||||
END_FUNCTION_BLOCK
|
||||
Vendored
+907
@@ -0,0 +1,907 @@
|
||||
{
|
||||
"schema": "sps_skel-tro-v2",
|
||||
"source": "mubea.csv",
|
||||
"created": "2026-10-09 11:38",
|
||||
"note": "Aus dem CSV-Export abgeleitet (lib/tro_flow.py) - die Zeichnung ist nur Ansicht, keine Datenquelle.",
|
||||
"tros": [
|
||||
{
|
||||
"id": "TRO01",
|
||||
"type": "1Sep",
|
||||
"confidence": "mittel",
|
||||
"separators": [
|
||||
"0040"
|
||||
],
|
||||
"predecessors": [
|
||||
"TRO10"
|
||||
],
|
||||
"successors": [
|
||||
"TRO10"
|
||||
],
|
||||
"position": {
|
||||
"x": 5355.05,
|
||||
"y": -5878.0,
|
||||
"z": 1555.5
|
||||
},
|
||||
"label": "Separator 0040 auf Kreisel1 Bahn R",
|
||||
"hosts": [
|
||||
"0001-R"
|
||||
],
|
||||
"scanners": [],
|
||||
"reason": "einzelner Separator auf angetriebener Kreisel-Bahn",
|
||||
"colocated": [],
|
||||
"positionFrom": "Bauteile",
|
||||
"positionPoints": 1,
|
||||
"fbType": "FB_ILS_MTRO_1Sep",
|
||||
"items": {
|
||||
"Separator": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TRO02",
|
||||
"type": "1Sep",
|
||||
"confidence": "mittel",
|
||||
"separators": [
|
||||
"0012"
|
||||
],
|
||||
"predecessors": [
|
||||
"TRO10"
|
||||
],
|
||||
"successors": [
|
||||
"SYS2",
|
||||
"SYS3",
|
||||
"TRO13"
|
||||
],
|
||||
"position": {
|
||||
"x": -220.0,
|
||||
"y": -3472.47,
|
||||
"z": 1554.75
|
||||
},
|
||||
"label": "Separator 0012 auf Kreisel2 Bahn L",
|
||||
"hosts": [
|
||||
"0002-L"
|
||||
],
|
||||
"scanners": [
|
||||
"0007"
|
||||
],
|
||||
"reason": "Separator mit Scanner auf angetriebener Kreisel-Bahn",
|
||||
"colocated": [],
|
||||
"positionFrom": "Bauteile",
|
||||
"positionPoints": 2,
|
||||
"fbType": "FB_ILS_MTRO_1Sep",
|
||||
"items": {
|
||||
"Separator": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TRO03",
|
||||
"type": "1Sep",
|
||||
"confidence": "mittel",
|
||||
"separators": [
|
||||
"0042"
|
||||
],
|
||||
"predecessors": [
|
||||
"SYS1",
|
||||
"TRO04"
|
||||
],
|
||||
"successors": [
|
||||
"TRO05"
|
||||
],
|
||||
"position": {
|
||||
"x": 10490.0,
|
||||
"y": -525.02,
|
||||
"z": 2028.75
|
||||
},
|
||||
"label": "Separator 0042 auf Kreisel3 Bahn R",
|
||||
"hosts": [
|
||||
"0010-R"
|
||||
],
|
||||
"scanners": [
|
||||
"0008"
|
||||
],
|
||||
"reason": "Separator mit Scanner auf angetriebener Kreisel-Bahn",
|
||||
"colocated": [],
|
||||
"positionFrom": "Bauteile",
|
||||
"positionPoints": 2,
|
||||
"fbType": "FB_ILS_MTRO_1Sep",
|
||||
"items": {
|
||||
"Separator": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TRO04",
|
||||
"type": "1Sep",
|
||||
"confidence": "mittel",
|
||||
"separators": [
|
||||
"0043"
|
||||
],
|
||||
"predecessors": [
|
||||
"TRO07"
|
||||
],
|
||||
"successors": [
|
||||
"TRO03"
|
||||
],
|
||||
"position": {
|
||||
"x": 10310.0,
|
||||
"y": 159.95,
|
||||
"z": 2029.5
|
||||
},
|
||||
"label": "Separator 0043 auf Kreisel3 Bahn R",
|
||||
"hosts": [
|
||||
"0010-R"
|
||||
],
|
||||
"scanners": [],
|
||||
"reason": "einzelner Separator auf angetriebener Kreisel-Bahn",
|
||||
"colocated": [
|
||||
"TRO05"
|
||||
],
|
||||
"positionFrom": "Bauteile",
|
||||
"positionPoints": 1,
|
||||
"fbType": "FB_ILS_MTRO_1Sep",
|
||||
"items": {
|
||||
"Separator": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TRO05",
|
||||
"type": "1Sep",
|
||||
"confidence": "mittel",
|
||||
"separators": [
|
||||
"0044"
|
||||
],
|
||||
"predecessors": [
|
||||
"TRO03"
|
||||
],
|
||||
"successors": [
|
||||
"TRO18"
|
||||
],
|
||||
"position": {
|
||||
"x": 10310.0,
|
||||
"y": -5013.05,
|
||||
"z": 2029.5
|
||||
},
|
||||
"label": "Separator 0044 auf Kreisel3 Bahn R",
|
||||
"hosts": [
|
||||
"0010-R"
|
||||
],
|
||||
"scanners": [],
|
||||
"reason": "einzelner Separator auf angetriebener Kreisel-Bahn",
|
||||
"colocated": [
|
||||
"TRO04"
|
||||
],
|
||||
"positionFrom": "Bauteile",
|
||||
"positionPoints": 1,
|
||||
"fbType": "FB_ILS_MTRO_1Sep",
|
||||
"items": {
|
||||
"Separator": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TRO06",
|
||||
"type": "1Sep1Swi",
|
||||
"confidence": "mittel",
|
||||
"separators": [
|
||||
"0003"
|
||||
],
|
||||
"predecessors": [
|
||||
"TRO17"
|
||||
],
|
||||
"successors": [
|
||||
"TRO08",
|
||||
"TRO10"
|
||||
],
|
||||
"position": {
|
||||
"x": -220.0,
|
||||
"y": 13960.02,
|
||||
"z": 1554.75
|
||||
},
|
||||
"label": "Separator 0003 an Ausschleuselement 0053 (Strecke 0013, Anfang)",
|
||||
"hosts": [
|
||||
"0013"
|
||||
],
|
||||
"scanners": [
|
||||
"0004"
|
||||
],
|
||||
"reason": "899mm von Ausschleuselement 0053 entfernt - kein eigenes Weichen-Bauteil im Layout, das Ausschleuselement uebernimmt diese Rolle",
|
||||
"colocated": [],
|
||||
"positionFrom": "Bauteile",
|
||||
"positionPoints": 2,
|
||||
"fbType": "FB_ILS_MTRO_1Sep1Swi",
|
||||
"items": {
|
||||
"Separator": 1,
|
||||
"Switch": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TRO07",
|
||||
"type": "1Sep",
|
||||
"confidence": "mittel",
|
||||
"separators": [
|
||||
"0045"
|
||||
],
|
||||
"predecessors": [
|
||||
"TRO09",
|
||||
"TRO18"
|
||||
],
|
||||
"successors": [
|
||||
"TRO04"
|
||||
],
|
||||
"position": {
|
||||
"x": 9510.0,
|
||||
"y": 14217.05,
|
||||
"z": 2029.5
|
||||
},
|
||||
"label": "VF_1",
|
||||
"hosts": [
|
||||
"0013"
|
||||
],
|
||||
"scanners": [],
|
||||
"reason": "Separator 0045: Zuordnung zeigt auf VF_1, ist aber nicht Teil von dessen TrackIds-Kette - kein eigenes VF treibt ihn an",
|
||||
"colocated": [
|
||||
"TRO08"
|
||||
],
|
||||
"positionFrom": "Bauteile",
|
||||
"positionPoints": 1,
|
||||
"fbType": "FB_ILS_MTRO_1Sep",
|
||||
"items": {
|
||||
"Separator": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TRO08",
|
||||
"type": "Vario",
|
||||
"confidence": "hoch",
|
||||
"separators": [
|
||||
"0054"
|
||||
],
|
||||
"predecessors": [
|
||||
"TRO06"
|
||||
],
|
||||
"successors": [
|
||||
"TRO09"
|
||||
],
|
||||
"position": {
|
||||
"x": 3299.55,
|
||||
"y": 13509.62,
|
||||
"z": 1416.12
|
||||
},
|
||||
"label": "VF_1",
|
||||
"hosts": [
|
||||
"0013"
|
||||
],
|
||||
"scanners": [],
|
||||
"reason": "angetriebenes Streckensegment (Antriebfahrtrichtung: Auf)",
|
||||
"colocated": [
|
||||
"TRO07"
|
||||
],
|
||||
"positionFrom": "Bauteile",
|
||||
"positionPoints": 1,
|
||||
"fbType": "FB_ILS_MTRO_Vario",
|
||||
"items": {
|
||||
"Separator": 1,
|
||||
"VarioDrive": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TRO09",
|
||||
"type": "1Sep",
|
||||
"confidence": "mittel",
|
||||
"separators": [
|
||||
"0055"
|
||||
],
|
||||
"predecessors": [
|
||||
"TRO08"
|
||||
],
|
||||
"successors": [
|
||||
"TRO07"
|
||||
],
|
||||
"position": {
|
||||
"x": 8953.1,
|
||||
"y": 13509.62,
|
||||
"z": 2179.73
|
||||
},
|
||||
"label": "VF_1",
|
||||
"hosts": [
|
||||
"0013"
|
||||
],
|
||||
"scanners": [],
|
||||
"reason": "alternierendes VF/GF-Muster vom Wiedereinschleusen von VF_1 rueckwaerts (1. Separator von hinten) - unbetriebener Abschnitt ohne eigenes VarioDrive (Review 2026-09-23/25)",
|
||||
"colocated": [],
|
||||
"positionFrom": "Bauteile",
|
||||
"positionPoints": 1,
|
||||
"fbType": "FB_ILS_MTRO_1Sep",
|
||||
"items": {
|
||||
"Separator": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TRO10",
|
||||
"type": "2Sep2Swi",
|
||||
"confidence": "hoch",
|
||||
"separators": [
|
||||
"0005",
|
||||
"0036"
|
||||
],
|
||||
"predecessors": [
|
||||
"TRO01",
|
||||
"TRO06",
|
||||
"TRO18"
|
||||
],
|
||||
"successors": [
|
||||
"TRO01",
|
||||
"TRO02",
|
||||
"TRO11"
|
||||
],
|
||||
"position": {
|
||||
"x": 1012.49,
|
||||
"y": -4649.76,
|
||||
"z": 1554.75
|
||||
},
|
||||
"label": "Uebergabestelle Kreisel2: Ausschleuselement 0057 + ILS Weiche 0125",
|
||||
"hosts": [
|
||||
"0014"
|
||||
],
|
||||
"scanners": [
|
||||
"0006",
|
||||
"0041"
|
||||
],
|
||||
"reason": "Ausschleuselement 0057 (Separator 0005) und ILS Weiche 0125 (Separator 0036) liegen in der TrackIds-Kette von Kreisel2 direkt hintereinander - eine Uebergabestelle",
|
||||
"colocated": [],
|
||||
"positionFrom": "Bauteile",
|
||||
"positionPoints": 4,
|
||||
"fbType": "FB_ILS_MTRO_2Sep2Swi",
|
||||
"items": {
|
||||
"Separator": 2,
|
||||
"Switch": 2,
|
||||
"Scanner": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TRO11",
|
||||
"type": "Vario",
|
||||
"confidence": "hoch",
|
||||
"separators": [
|
||||
"0058"
|
||||
],
|
||||
"predecessors": [
|
||||
"TRO10"
|
||||
],
|
||||
"successors": [
|
||||
"TRO12"
|
||||
],
|
||||
"position": {
|
||||
"x": 3299.55,
|
||||
"y": -4743.38,
|
||||
"z": 1416.12
|
||||
},
|
||||
"label": "VF_2",
|
||||
"hosts": [
|
||||
"0014"
|
||||
],
|
||||
"scanners": [],
|
||||
"reason": "angetriebenes Streckensegment (Antriebfahrtrichtung: Auf)",
|
||||
"colocated": [],
|
||||
"positionFrom": "Bauteile",
|
||||
"positionPoints": 1,
|
||||
"fbType": "FB_ILS_MTRO_Vario",
|
||||
"items": {
|
||||
"Separator": 1,
|
||||
"VarioDrive": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TRO12",
|
||||
"type": "1Sep",
|
||||
"confidence": "mittel",
|
||||
"separators": [
|
||||
"0059"
|
||||
],
|
||||
"predecessors": [
|
||||
"TRO11"
|
||||
],
|
||||
"successors": [
|
||||
"TRO18"
|
||||
],
|
||||
"position": {
|
||||
"x": 9411.55,
|
||||
"y": -4150.19,
|
||||
"z": 2103.86
|
||||
},
|
||||
"label": "VF_2",
|
||||
"hosts": [
|
||||
"0014"
|
||||
],
|
||||
"scanners": [
|
||||
"0046"
|
||||
],
|
||||
"reason": "alternierendes VF/GF-Muster vom Wiedereinschleusen von VF_2 rueckwaerts (1. Separator von hinten) - unbetriebener Abschnitt ohne eigenes VarioDrive (Review 2026-09-23/25)",
|
||||
"colocated": [],
|
||||
"positionFrom": "Bauteile",
|
||||
"positionPoints": 2,
|
||||
"fbType": "FB_ILS_MTRO_1Sep",
|
||||
"items": {
|
||||
"Separator": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TRO13",
|
||||
"type": "1Sep1Swi",
|
||||
"confidence": "mittel",
|
||||
"separators": [
|
||||
"0011"
|
||||
],
|
||||
"predecessors": [
|
||||
"TRO02"
|
||||
],
|
||||
"successors": [
|
||||
"TRO16",
|
||||
"TRO17"
|
||||
],
|
||||
"position": {
|
||||
"x": -220.0,
|
||||
"y": -480.98,
|
||||
"z": 1554.75
|
||||
},
|
||||
"label": "Separator 0011 an Ausschleuselement 0061 (Strecke 0015, Anfang)",
|
||||
"hosts": [
|
||||
"0015"
|
||||
],
|
||||
"scanners": [
|
||||
"0009"
|
||||
],
|
||||
"reason": "832mm von Ausschleuselement 0061 entfernt - kein eigenes Weichen-Bauteil im Layout, das Ausschleuselement uebernimmt diese Rolle",
|
||||
"colocated": [],
|
||||
"positionFrom": "Bauteile",
|
||||
"positionPoints": 2,
|
||||
"fbType": "FB_ILS_MTRO_1Sep1Swi",
|
||||
"items": {
|
||||
"Separator": 1,
|
||||
"Switch": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TRO14",
|
||||
"type": "1Sep",
|
||||
"confidence": "mittel",
|
||||
"separators": [
|
||||
"0037"
|
||||
],
|
||||
"predecessors": [
|
||||
"TRO15"
|
||||
],
|
||||
"successors": [
|
||||
"TRO17"
|
||||
],
|
||||
"position": {
|
||||
"x": -1026.0,
|
||||
"y": 10723.05,
|
||||
"z": 1634.5
|
||||
},
|
||||
"label": "VF_3",
|
||||
"hosts": [
|
||||
"0015"
|
||||
],
|
||||
"scanners": [],
|
||||
"reason": "Separator 0037: Zuordnung zeigt auf VF_3, ist aber nicht Teil von dessen TrackIds-Kette - kein eigenes VF treibt ihn an",
|
||||
"colocated": [
|
||||
"TRO16"
|
||||
],
|
||||
"positionFrom": "Bauteile",
|
||||
"positionPoints": 1,
|
||||
"fbType": "FB_ILS_MTRO_1Sep",
|
||||
"items": {
|
||||
"Separator": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TRO15",
|
||||
"type": "1Sep",
|
||||
"confidence": "mittel",
|
||||
"separators": [
|
||||
"0038"
|
||||
],
|
||||
"predecessors": [
|
||||
"TRO16"
|
||||
],
|
||||
"successors": [
|
||||
"TRO14"
|
||||
],
|
||||
"position": {
|
||||
"x": -1206.0,
|
||||
"y": 5330.02,
|
||||
"z": 1477.75
|
||||
},
|
||||
"label": "VF_3",
|
||||
"hosts": [
|
||||
"0015"
|
||||
],
|
||||
"scanners": [
|
||||
"0039"
|
||||
],
|
||||
"reason": "Separator 0038: Zuordnung zeigt auf VF_3, ist aber nicht Teil von dessen TrackIds-Kette - kein eigenes VF treibt ihn an",
|
||||
"colocated": [
|
||||
"TRO17"
|
||||
],
|
||||
"positionFrom": "Bauteile",
|
||||
"positionPoints": 2,
|
||||
"fbType": "FB_ILS_MTRO_1Sep",
|
||||
"items": {
|
||||
"Separator": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TRO16",
|
||||
"type": "Vario",
|
||||
"confidence": "hoch",
|
||||
"separators": [
|
||||
"0062"
|
||||
],
|
||||
"predecessors": [
|
||||
"TRO13"
|
||||
],
|
||||
"successors": [
|
||||
"TRO15"
|
||||
],
|
||||
"position": {
|
||||
"x": -898.87,
|
||||
"y": 1134.6,
|
||||
"z": 1534.33
|
||||
},
|
||||
"label": "VF_3",
|
||||
"hosts": [
|
||||
"0015"
|
||||
],
|
||||
"scanners": [],
|
||||
"reason": "angetriebenes Streckensegment (Antriebfahrtrichtung: Auf)",
|
||||
"colocated": [
|
||||
"TRO14",
|
||||
"TRO17"
|
||||
],
|
||||
"positionFrom": "Bauteile",
|
||||
"positionPoints": 1,
|
||||
"fbType": "FB_ILS_MTRO_Vario",
|
||||
"items": {
|
||||
"Separator": 1,
|
||||
"VarioDrive": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TRO17",
|
||||
"type": "1Sep",
|
||||
"confidence": "mittel",
|
||||
"separators": [
|
||||
"0063"
|
||||
],
|
||||
"predecessors": [
|
||||
"TRO13",
|
||||
"TRO14"
|
||||
],
|
||||
"successors": [
|
||||
"TRO06"
|
||||
],
|
||||
"position": {
|
||||
"x": -702.98,
|
||||
"y": 12296.45,
|
||||
"z": 1751.35
|
||||
},
|
||||
"label": "VF_3",
|
||||
"hosts": [
|
||||
"0015"
|
||||
],
|
||||
"scanners": [],
|
||||
"reason": "alternierendes VF/GF-Muster vom Wiedereinschleusen von VF_3 rueckwaerts (1. Separator von hinten) - unbetriebener Abschnitt ohne eigenes VarioDrive (Review 2026-09-23/25)",
|
||||
"colocated": [
|
||||
"TRO15",
|
||||
"TRO16"
|
||||
],
|
||||
"positionFrom": "Bauteile",
|
||||
"positionPoints": 1,
|
||||
"fbType": "FB_ILS_MTRO_1Sep",
|
||||
"items": {
|
||||
"Separator": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "TRO18",
|
||||
"type": "PinStore_Auto",
|
||||
"confidence": "hoch",
|
||||
"separators": [
|
||||
"0066",
|
||||
"0069",
|
||||
"0072",
|
||||
"0075",
|
||||
"0078",
|
||||
"0081",
|
||||
"0084",
|
||||
"0087",
|
||||
"0090",
|
||||
"0093",
|
||||
"0096",
|
||||
"0099",
|
||||
"0102",
|
||||
"0105",
|
||||
"0108",
|
||||
"0111",
|
||||
"0114",
|
||||
"0117",
|
||||
"0120",
|
||||
"0123"
|
||||
],
|
||||
"predecessors": [
|
||||
"TRO05",
|
||||
"TRO12"
|
||||
],
|
||||
"successors": [
|
||||
"TRO07",
|
||||
"TRO10"
|
||||
],
|
||||
"position": {
|
||||
"x": 958.0,
|
||||
"y": 4700.0,
|
||||
"z": 1697.6
|
||||
},
|
||||
"label": "Speicher (20 Schwerkraftlinien)",
|
||||
"hosts": [
|
||||
"0016",
|
||||
"0017",
|
||||
"0018",
|
||||
"0019",
|
||||
"0020",
|
||||
"0021",
|
||||
"0022",
|
||||
"0023",
|
||||
"0024",
|
||||
"0025",
|
||||
"0026",
|
||||
"0027",
|
||||
"0028",
|
||||
"0029",
|
||||
"0030",
|
||||
"0031",
|
||||
"0032",
|
||||
"0033",
|
||||
"0034",
|
||||
"0035"
|
||||
],
|
||||
"scanners": [],
|
||||
"reason": "20 Gefaellestrecken mit je eigenem Separator, gemeinsamer Zu-/Ablauf - Muster eines Linienspeichers",
|
||||
"colocated": [],
|
||||
"positionFrom": "Bauteile",
|
||||
"positionPoints": 20,
|
||||
"fbType": "FB_ILS_MTRO_PinStore_Auto",
|
||||
"items": {
|
||||
"Separator": 1,
|
||||
"StorageLine": 19,
|
||||
"Scanner": 1,
|
||||
"Encoder": 1
|
||||
}
|
||||
}
|
||||
],
|
||||
"boundaries": [
|
||||
{
|
||||
"id": "SYS1",
|
||||
"type": "Materialeingang",
|
||||
"confidence": "hoch",
|
||||
"separators": [],
|
||||
"predecessors": [],
|
||||
"successors": [
|
||||
"TRO03"
|
||||
],
|
||||
"position": {
|
||||
"x": 10410.95,
|
||||
"y": 3.52,
|
||||
"z": 1983.31
|
||||
},
|
||||
"label": "BTMT Beladung :1",
|
||||
"hosts": [
|
||||
"0047"
|
||||
],
|
||||
"scanners": [],
|
||||
"reason": "Systemgrenze (Be-/Entladestation) - kein TRO, nur Materialein-/ausgang",
|
||||
"colocated": [],
|
||||
"positionFrom": "Host-Objekte",
|
||||
"positionPoints": 1,
|
||||
"fbType": "",
|
||||
"items": {}
|
||||
},
|
||||
{
|
||||
"id": "SYS2",
|
||||
"type": "Materialausgang",
|
||||
"confidence": "hoch",
|
||||
"separators": [],
|
||||
"predecessors": [
|
||||
"TRO02"
|
||||
],
|
||||
"successors": [],
|
||||
"position": {
|
||||
"x": -778.79,
|
||||
"y": -1226.1,
|
||||
"z": 1401.09
|
||||
},
|
||||
"label": "BTMT Entladung :2",
|
||||
"hosts": [
|
||||
"0048"
|
||||
],
|
||||
"scanners": [],
|
||||
"reason": "Systemgrenze (Be-/Entladestation) - kein TRO, nur Materialein-/ausgang",
|
||||
"colocated": [],
|
||||
"positionFrom": "Host-Objekte",
|
||||
"positionPoints": 1,
|
||||
"fbType": "",
|
||||
"items": {}
|
||||
},
|
||||
{
|
||||
"id": "SYS3",
|
||||
"type": "Materialausgang",
|
||||
"confidence": "hoch",
|
||||
"separators": [],
|
||||
"predecessors": [
|
||||
"TRO02"
|
||||
],
|
||||
"successors": [],
|
||||
"position": {
|
||||
"x": -775.22,
|
||||
"y": -2466.46,
|
||||
"z": 1401.09
|
||||
},
|
||||
"label": "BTMT Entladung :1",
|
||||
"hosts": [
|
||||
"0049"
|
||||
],
|
||||
"scanners": [],
|
||||
"reason": "Systemgrenze (Be-/Entladestation) - kein TRO, nur Materialein-/ausgang",
|
||||
"colocated": [],
|
||||
"positionFrom": "Host-Objekte",
|
||||
"positionPoints": 1,
|
||||
"fbType": "",
|
||||
"items": {}
|
||||
}
|
||||
],
|
||||
"connections": [
|
||||
{
|
||||
"from": "SYS1",
|
||||
"to": "TRO03",
|
||||
"kind": "normal"
|
||||
},
|
||||
{
|
||||
"from": "TRO01",
|
||||
"to": "TRO10",
|
||||
"kind": "normal"
|
||||
},
|
||||
{
|
||||
"from": "TRO02",
|
||||
"to": "SYS2",
|
||||
"kind": "normal"
|
||||
},
|
||||
{
|
||||
"from": "TRO02",
|
||||
"to": "SYS3",
|
||||
"kind": "normal"
|
||||
},
|
||||
{
|
||||
"from": "TRO02",
|
||||
"to": "TRO13",
|
||||
"kind": "transfer"
|
||||
},
|
||||
{
|
||||
"from": "TRO03",
|
||||
"to": "TRO05",
|
||||
"kind": "bahn"
|
||||
},
|
||||
{
|
||||
"from": "TRO04",
|
||||
"to": "TRO03",
|
||||
"kind": "bahn"
|
||||
},
|
||||
{
|
||||
"from": "TRO05",
|
||||
"to": "TRO18",
|
||||
"kind": "normal"
|
||||
},
|
||||
{
|
||||
"from": "TRO06",
|
||||
"to": "TRO08",
|
||||
"kind": "weiche"
|
||||
},
|
||||
{
|
||||
"from": "TRO06",
|
||||
"to": "TRO10",
|
||||
"kind": "bahn"
|
||||
},
|
||||
{
|
||||
"from": "TRO07",
|
||||
"to": "TRO04",
|
||||
"kind": "bahn"
|
||||
},
|
||||
{
|
||||
"from": "TRO08",
|
||||
"to": "TRO09",
|
||||
"kind": "bahn"
|
||||
},
|
||||
{
|
||||
"from": "TRO09",
|
||||
"to": "TRO07",
|
||||
"kind": "bahn"
|
||||
},
|
||||
{
|
||||
"from": "TRO10",
|
||||
"to": "TRO01",
|
||||
"kind": "bahn"
|
||||
},
|
||||
{
|
||||
"from": "TRO10",
|
||||
"to": "TRO02",
|
||||
"kind": "bahn"
|
||||
},
|
||||
{
|
||||
"from": "TRO10",
|
||||
"to": "TRO11",
|
||||
"kind": "weiche"
|
||||
},
|
||||
{
|
||||
"from": "TRO11",
|
||||
"to": "TRO12",
|
||||
"kind": "bahn"
|
||||
},
|
||||
{
|
||||
"from": "TRO12",
|
||||
"to": "TRO18",
|
||||
"kind": "normal"
|
||||
},
|
||||
{
|
||||
"from": "TRO13",
|
||||
"to": "TRO16",
|
||||
"kind": "weiche"
|
||||
},
|
||||
{
|
||||
"from": "TRO13",
|
||||
"to": "TRO17",
|
||||
"kind": "bahn"
|
||||
},
|
||||
{
|
||||
"from": "TRO14",
|
||||
"to": "TRO17",
|
||||
"kind": "bahn"
|
||||
},
|
||||
{
|
||||
"from": "TRO15",
|
||||
"to": "TRO14",
|
||||
"kind": "bahn"
|
||||
},
|
||||
{
|
||||
"from": "TRO16",
|
||||
"to": "TRO15",
|
||||
"kind": "bahn"
|
||||
},
|
||||
{
|
||||
"from": "TRO17",
|
||||
"to": "TRO06",
|
||||
"kind": "normal"
|
||||
},
|
||||
{
|
||||
"from": "TRO18",
|
||||
"to": "TRO07",
|
||||
"kind": "normal"
|
||||
},
|
||||
{
|
||||
"from": "TRO18",
|
||||
"to": "TRO10",
|
||||
"kind": "normal"
|
||||
}
|
||||
],
|
||||
"openPoints": [],
|
||||
"findings": [
|
||||
"Kreisel2: Ausschleuselement 0057 und ILS Weiche 0125 benachbart - als 2Sep2Swi zusammengefasst (FB_ILS_MTRO_2Sep2Swi fehlt noch in der ILSLib)",
|
||||
"Scanner 0008 'Scanner :5': montiert an 0010, liest aber an Separator 0042 auf 0010-R",
|
||||
"Scanner 0046 'Scanner :1': montiert an 0035, liest aber an Separator 0059 auf 0014",
|
||||
"TRO02 (Separator 0012 auf Kreisel2 Bahn L): Scanner 0007 am Separator - als 1Sep eingestuft. Pruefen, ob 1Sep_SSCC (SSCC-Scanner, Endmessung, WCS-Telegramm) erforderlich ist; das ist aus dem mechanischen Layout nicht erkennbar.",
|
||||
"TRO03 (Separator 0042 auf Kreisel3 Bahn R): Scanner 0008 am Separator - als 1Sep eingestuft. Pruefen, ob 1Sep_SSCC (SSCC-Scanner, Endmessung, WCS-Telegramm) erforderlich ist; das ist aus dem mechanischen Layout nicht erkennbar.",
|
||||
"TRO12 (VF_2): Scanner 0046 am Separator - als 1Sep eingestuft. Pruefen, ob 1Sep_SSCC (SSCC-Scanner, Endmessung, WCS-Telegramm) erforderlich ist; das ist aus dem mechanischen Layout nicht erkennbar.",
|
||||
"TRO15 (VF_3): Scanner 0039 am Separator - als 1Sep eingestuft. Pruefen, ob 1Sep_SSCC (SSCC-Scanner, Endmessung, WCS-Telegramm) erforderlich ist; das ist aus dem mechanischen Layout nicht erkennbar.",
|
||||
"VF_1 Separator 0045: Zuordnung ohne TrackIds-Mitgliedschaft - als 1Sep statt Vario eingestuft",
|
||||
"VF_1 Separator 0055: alternierendes Muster (1. von hinten) - als 1Sep statt Vario eingestuft",
|
||||
"VF_2 Separator 0059: alternierendes Muster (1. von hinten) - als 1Sep statt Vario eingestuft",
|
||||
"VF_3 Separator 0037: Zuordnung ohne TrackIds-Mitgliedschaft - als 1Sep statt Vario eingestuft",
|
||||
"VF_3 Separator 0038: Zuordnung ohne TrackIds-Mitgliedschaft - als 1Sep statt Vario eingestuft",
|
||||
"VF_3 Separator 0063: alternierendes Muster (1. von hinten) - als 1Sep statt Vario eingestuft"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,128 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""Tests fuer lib/scl_context.py - TroDocument -> Render-Kontext.
|
||||
|
||||
Die komplette Ausgabe sichern die Golden-Files (test_scl_skeleton_golden.py);
|
||||
hier stehen die Ableitungen einzeln, auf die sich Templates (Schritt 3) und
|
||||
Namensregeln (Schritt 4) aus doc/SCL_Templates.md verlassen.
|
||||
"""
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
from model import Analysis, DerivedTro, TroDocument
|
||||
from scl_context import SclName, build_context, flow_order
|
||||
from scl_skeleton import load_document
|
||||
|
||||
FIXTURES = Path(__file__).resolve().parent / "fixtures" / "scl"
|
||||
|
||||
|
||||
def _tro(tro_id: str, type_name: str, **extra) -> DerivedTro:
|
||||
data = dict(
|
||||
tro_id=tro_id,
|
||||
type_name=type_name,
|
||||
label=f"Label {tro_id}",
|
||||
hosts=["0001"],
|
||||
separators=["0040"],
|
||||
scanners=[],
|
||||
reason="Test",
|
||||
)
|
||||
data.update(extra)
|
||||
return DerivedTro(**data)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def kontext():
|
||||
"""SYS1 -> TRO01 (1 Weiche) -> TRO02 -> SYS2 und TRO01 -> TRO03 (Vario)."""
|
||||
analysis = Analysis(tros=[
|
||||
_tro("TRO01", "1Sep1Swi", predecessors=["SYS1"], successors=["TRO02", "TRO03"]),
|
||||
_tro("TRO02", "1Sep", separators=["0041"], predecessors=["TRO01"],
|
||||
successors=["SYS2"]),
|
||||
_tro("TRO03", "Vario", separators=[], predecessors=["TRO01"]),
|
||||
])
|
||||
document = TroDocument.from_analysis(analysis, source="test.csv")
|
||||
return build_context(document, "test_tro.json", created="2026-01-01 00:00")
|
||||
|
||||
|
||||
def _by_id(context, tro_id):
|
||||
return next(t for t in context.tros if t.id == tro_id)
|
||||
|
||||
|
||||
def test_reihenfolge_und_startgrund(kontext):
|
||||
assert [t.id for t in kontext.tros] == ["TRO01", "TRO02", "TRO03"]
|
||||
assert kontext.start_reason == "Materialeingang ueber SYS1"
|
||||
assert kontext.created == "2026-01-01 00:00"
|
||||
|
||||
|
||||
def test_nummernteil_wie_geschrieben():
|
||||
"""{nr} fuer die Namensregeln: fuehrende Nullen bleiben stehen."""
|
||||
analysis = Analysis(tros=[_tro("TRO07", "1Sep"), _tro("TRO107", "1Sep"),
|
||||
_tro("XY", "1Sep")])
|
||||
ctx = build_context(TroDocument.from_analysis(analysis, source="t"), "t")
|
||||
assert {t.id: t.nr for t in ctx.tros} == {"TRO07": "07", "TRO107": "107", "XY": ""}
|
||||
|
||||
|
||||
def test_staubereiche_nummerierung(kontext):
|
||||
"""Eingaenge ab 1, Ausgaenge ab 2 - wie in den Referenz-Aufrufstellen."""
|
||||
tro = _by_id(kontext, "TRO01")
|
||||
assert [(j.n, j.neighbour) for j in tro.jam_entries] == [
|
||||
(1, "SYS1 (Station, kein TRO)")]
|
||||
assert [(j.n, j.neighbour) for j in tro.jam_exits] == [(2, "TRO02"), (3, "TRO03")]
|
||||
|
||||
|
||||
def test_eine_weiche_bedient_alle_abgaenge(kontext):
|
||||
tro = _by_id(kontext, "TRO01")
|
||||
assert len(tro.switches) == 1
|
||||
weiche = tro.switches[0]
|
||||
assert weiche.to1_destinations == 2
|
||||
assert weiche.direction_target == "#TRO01.nInDirection"
|
||||
assert [(e.via, e.targets) for e in tro.switch_exits] == [
|
||||
("TRO02", ["SYS2", "TRO02"]), ("TRO03", ["TRO03"])]
|
||||
|
||||
|
||||
def test_mehrere_weichen_keine_geratene_aufteilung():
|
||||
"""2Sep2Swi (mubea): nTo1Destinations bleibt offen, Richtung je Weiche."""
|
||||
ctx = build_context(load_document(FIXTURES / "mubea_tro.json"), "mubea_tro.json")
|
||||
tro = next(t for t in ctx.tros if t.type == "2Sep2Swi")
|
||||
assert [w.to1_destinations for w in tro.switches] == [None, None]
|
||||
assert [w.direction_target for w in tro.switches] == [
|
||||
f"#{tro.id}.nInDirection1", f"#{tro.id}.nInDirection2"]
|
||||
|
||||
|
||||
def test_separatoren_aus_dem_layout(kontext):
|
||||
"""Mehr Separatoren laut Typ als im Layout -> '?' statt Fehler."""
|
||||
assert [s.layout for s in _by_id(kontext, "TRO01").separators] == ["0040"]
|
||||
assert [s.layout for s in _by_id(kontext, "TRO03").separators] == ["?"]
|
||||
|
||||
|
||||
def test_vario_nur_beim_vario_typ(kontext):
|
||||
vario = _by_id(kontext, "TRO03")
|
||||
assert vario.has_vario
|
||||
assert list(vario.vario_sensors) == [
|
||||
"stSenCarrInPos", "stSenFinger", "stSenLastPos", "stSenJam"]
|
||||
assert _by_id(kontext, "TRO02").vario_sensors == {}
|
||||
|
||||
|
||||
def test_heute_sind_alle_namen_offen(kontext):
|
||||
"""Bis zu den Namensregeln (Schritt 4) ist jeder Name ein TODO-Platzhalter."""
|
||||
namen: list[SclName] = []
|
||||
for tro in kontext.tros:
|
||||
namen += [tro.main_tro, tro.safety, tro.motor_protection, tro.vario_motor,
|
||||
tro.machine_state, tro.priority_udt, tro.prio_dir2, tro.carousel_run]
|
||||
namen += [j.sensor for j in tro.jam_exits]
|
||||
assert all(j.sensor is None for j in tro.jam_entries)
|
||||
namen += [n for s in tro.separators for n in (s.no, s.sensor, s.stopper)]
|
||||
namen += [n for w in tro.switches for n in (w.no, w.valve, w.jam_db)]
|
||||
namen += [j.db for j in tro.jam_entries + tro.jam_exits]
|
||||
namen += list(tro.vario_sensors.values())
|
||||
assert namen and all(n.todo for n in namen)
|
||||
|
||||
|
||||
def test_flow_order_kreislauf_ohne_eingang():
|
||||
analysis = Analysis(tros=[
|
||||
_tro("TRO02", "1Sep", predecessors=["TRO01"], successors=["TRO01"]),
|
||||
_tro("TRO01", "1Sep", predecessors=["TRO02"], successors=["TRO02"]),
|
||||
])
|
||||
geordnet, grund = flow_order(analysis.tros)
|
||||
assert [t.tro_id for t in geordnet] == ["TRO01", "TRO02"]
|
||||
assert grund.startswith("Kreislauf ohne Eingang")
|
||||
@@ -0,0 +1,130 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""Golden-File-Tests fuer scl_skeleton.py - die komplette FB_Main-Ausgabe.
|
||||
|
||||
Schritt 1 aus doc/SCL_Templates.md (§8.3, §11): die heutige Ausgabe wird
|
||||
festgeschrieben, bevor der Generator auf Templates umgebaut wird. Solange kein
|
||||
Template eingeschaltet ist, muss jede SCL byte-gleich zur Referenz bleiben.
|
||||
|
||||
Eingaben: tests/fixtures/scl/<name>_tro.json - feste Kopien der TRO-JSON aus
|
||||
tro_flow --json, damit nur scl_skeleton geprueft wird und nicht tro_flow.
|
||||
Erwartung: tests/fixtures/scl/<name>_FB_Main.scl, Zeitstempel maskiert.
|
||||
|
||||
Eine gewollte Aenderung der Ausgabe (z. B. ein Template wird eingeschaltet):
|
||||
Diff pruefen, dann die Referenzen neu schreiben mit
|
||||
|
||||
set SKEL_UPDATE_GOLDEN=1 & python -m pytest tests/test_scl_skeleton_golden.py
|
||||
"""
|
||||
|
||||
import os
|
||||
import re
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
import scl_skeleton
|
||||
from scl_skeleton import TEMPLATE_DIR, SclTemplates, load_document, render
|
||||
|
||||
FIXTURES = Path(__file__).resolve().parent / "fixtures" / "scl"
|
||||
|
||||
# mubea: alle fuenf dort vorkommenden Typen, auch 2Sep2Swi (ohne Template);
|
||||
# HundM05: die Referenzanlage der TRO-Templates.
|
||||
PROJEKTE = ["mubea", "HundM05"]
|
||||
|
||||
# Die einzige Zeile, die sich von Lauf zu Lauf aendert.
|
||||
_ZEITSTEMPEL = re.compile(r"^// Erzeugt: .*$", re.MULTILINE)
|
||||
_MASKE = "// Erzeugt: <maskiert>"
|
||||
|
||||
|
||||
def _maskiert(text: str) -> str:
|
||||
return _ZEITSTEMPEL.sub(_MASKE, text)
|
||||
|
||||
|
||||
def _aktualisieren() -> bool:
|
||||
return os.environ.get("SKEL_UPDATE_GOLDEN") == "1"
|
||||
|
||||
|
||||
def _vergleichen(ist: str, referenz: Path) -> None:
|
||||
if _aktualisieren():
|
||||
referenz.write_text(ist, encoding="utf-8", newline="\n")
|
||||
pytest.skip(f"Referenz neu geschrieben: {referenz.name}")
|
||||
assert referenz.is_file(), (
|
||||
f"{referenz.name} fehlt - mit SKEL_UPDATE_GOLDEN=1 erzeugen")
|
||||
soll = referenz.read_text(encoding="utf-8")
|
||||
if ist != soll:
|
||||
# Erste abweichende Zeile nennen; der volle Diff ist bei ~900 Zeilen
|
||||
# in der pytest-Ausgabe nicht lesbar.
|
||||
ist_z, soll_z = ist.splitlines(), soll.splitlines()
|
||||
for nr, (a, b) in enumerate(zip(ist_z, soll_z), start=1):
|
||||
if a != b:
|
||||
pytest.fail(f"{referenz.name} Zeile {nr}:\n soll: {b}\n ist : {a}")
|
||||
pytest.fail(f"{referenz.name}: {len(ist_z)} statt {len(soll_z)} Zeilen")
|
||||
|
||||
|
||||
@pytest.mark.parametrize("name", PROJEKTE)
|
||||
def test_render_wie_referenz(name: str) -> None:
|
||||
"""render() liefert byte-gleich die festgeschriebene SCL."""
|
||||
quelle = f"{name}_tro.json"
|
||||
document = load_document(FIXTURES / quelle)
|
||||
_vergleichen(_maskiert(render(document, quelle)), FIXTURES / f"{name}_FB_Main.scl")
|
||||
|
||||
|
||||
@pytest.mark.parametrize("name", PROJEKTE)
|
||||
def test_render_mit_templates_wie_referenz(name: str) -> None:
|
||||
"""--templates: TROs mit Template aus dem Template, der Rest generisch.
|
||||
|
||||
Eigene Referenz <name>_FB_Main_templates.scl. Eine Aenderung an einem
|
||||
Template zeigt sich hier als Diff - pruefen, dann neu schreiben.
|
||||
"""
|
||||
quelle = f"{name}_tro.json"
|
||||
document = load_document(FIXTURES / quelle)
|
||||
text = render(document, quelle, templates=SclTemplates(TEMPLATE_DIR))
|
||||
_vergleichen(_maskiert(text), FIXTURES / f"{name}_FB_Main_templates.scl")
|
||||
|
||||
|
||||
@pytest.mark.parametrize("name", PROJEKTE)
|
||||
def test_cli_schreibt_referenz(name: str, tmp_path: Path, monkeypatch) -> None:
|
||||
"""Der CLI-Weg: Exit 0, Dateiname <name>_FB_Main.scl, Inhalt wie render().
|
||||
|
||||
Das ist der Vertrag, auf den sich ein Workflow verlaesst (doc/SCL_Templates.md §12).
|
||||
"""
|
||||
if _aktualisieren():
|
||||
pytest.skip("Referenzen werden nur ueber test_render_wie_referenz geschrieben")
|
||||
monkeypatch.setenv("SKEL_RESULTS", str(tmp_path))
|
||||
exit_code = scl_skeleton.main(["--json", str(FIXTURES / f"{name}_tro.json")])
|
||||
assert exit_code == 0
|
||||
|
||||
ausgabe = tmp_path / f"{name}_FB_Main.scl"
|
||||
assert ausgabe.is_file()
|
||||
soll = (FIXTURES / f"{name}_FB_Main.scl").read_text(encoding="utf-8")
|
||||
assert _maskiert(ausgabe.read_text(encoding="utf-8")) == soll
|
||||
|
||||
|
||||
def test_cli_templates_und_strict(tmp_path: Path, monkeypatch) -> None:
|
||||
"""--templates schreibt die Template-Referenz; --strict bricht ab, solange
|
||||
ein FB-Typ der Anlage (mubea: u. a. 2Sep2Swi) kein Template hat."""
|
||||
if _aktualisieren():
|
||||
pytest.skip("Referenzen werden nur ueber die render-Tests geschrieben")
|
||||
monkeypatch.setenv("SKEL_RESULTS", str(tmp_path))
|
||||
json_file = str(FIXTURES / "mubea_tro.json")
|
||||
|
||||
assert scl_skeleton.main(["--json", json_file, "--templates"]) == 0
|
||||
soll = (FIXTURES / "mubea_FB_Main_templates.scl").read_text(encoding="utf-8")
|
||||
ist = (tmp_path / "mubea_FB_Main.scl").read_text(encoding="utf-8")
|
||||
assert _maskiert(ist) == soll
|
||||
|
||||
(tmp_path / "mubea_FB_Main.scl").unlink()
|
||||
assert scl_skeleton.main(["--json", json_file, "--templates", "--strict"]) == 1
|
||||
assert not (tmp_path / "mubea_FB_Main.scl").exists()
|
||||
|
||||
assert scl_skeleton.main(["--json", json_file, "--templates",
|
||||
str(tmp_path / "gibt_es_nicht")]) == 1
|
||||
|
||||
|
||||
def test_todo_marker_bleiben_zaehlbar() -> None:
|
||||
"""Die Zahl der offenen Stellen ist eine Qualitaetsgroesse im Workflow.
|
||||
|
||||
Sie darf sich nur mit Absicht aendern (dann Referenz neu schreiben).
|
||||
"""
|
||||
for name in PROJEKTE:
|
||||
text = (FIXTURES / f"{name}_FB_Main.scl").read_text(encoding="utf-8")
|
||||
assert text.count(scl_skeleton.TODO) > 0, name
|
||||
@@ -0,0 +1,133 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""Rundlauf der FB-Templates gegen die realen Aufrufstellen (doc/SCL_Templates.md §8.1).
|
||||
|
||||
Je Template: Kontext mit den ECHTEN Werten der Referenz-Aufrufstelle bauen
|
||||
(TRO-Nummer, Sensoren, Ventile, Staubereiche ...), Template rendern und mit dem
|
||||
REGION-Block der Referenz in doc/TRO_Katalog/scl_templates/ vergleichen.
|
||||
Verglichen wird normalisiert: Kommentare und Leerzeilen weg, Leerraum
|
||||
zusammengefasst. Stimmt das, hat die Parametrisierung nichts verloren -
|
||||
gleiche Zeilen, gleiche Reihenfolge, gleiche Werte.
|
||||
|
||||
Wird eine Referenzdatei durch eine neuere Aufrufstelle ersetzt, zeigt dieser
|
||||
Test genau die Zeilen, denen das Template folgen muss.
|
||||
"""
|
||||
|
||||
import re
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
from model import Analysis, DerivedTro, TroDocument
|
||||
from scl_context import SclName, SclTro, build_context
|
||||
from scl_skeleton import TEMPLATE_DIR, SclTemplates, load_document, render
|
||||
|
||||
ROOT = Path(__file__).resolve().parent.parent
|
||||
REFERENZ = ROOT / "doc" / "TRO_Katalog" / "scl_templates"
|
||||
FIXTURES = Path(__file__).resolve().parent / "fixtures" / "scl"
|
||||
|
||||
|
||||
def _name(wert: str) -> SclName:
|
||||
"""Ein bekannter Name aus der Referenz - also nicht mehr offen."""
|
||||
return SclName(value=wert, todo=False)
|
||||
|
||||
|
||||
def _normalisiert(text: str) -> list[str]:
|
||||
zeilen = []
|
||||
for zeile in text.splitlines():
|
||||
zeile = re.sub(r"//.*$", "", zeile) # Kommentar
|
||||
zeile = re.sub(r"\s+", " ", zeile).strip() # Leerraum
|
||||
if zeile:
|
||||
zeilen.append(zeile)
|
||||
return zeilen
|
||||
|
||||
|
||||
def _referenz_region(datei: str) -> list[str]:
|
||||
"""Vom ersten 'REGION' bis zum letzten 'END_REGION' der Referenzdatei."""
|
||||
zeilen = (REFERENZ / datei).read_text(encoding="utf-8-sig").splitlines()
|
||||
anfang = next(i for i, z in enumerate(zeilen) if z.startswith("REGION "))
|
||||
ende = max(i for i, z in enumerate(zeilen) if z.strip() == "END_REGION")
|
||||
return _normalisiert("\n".join(zeilen[anfang:ende + 1]))
|
||||
|
||||
|
||||
def _kontext(tro_id: str, type_name: str, vorgaenger: list[str],
|
||||
nachfolger: list[str]) -> SclTro:
|
||||
"""Kontext eines TRO mit der Topologie der Referenzstelle."""
|
||||
tro = DerivedTro(tro_id=tro_id, type_name=type_name, label=tro_id, hosts=[],
|
||||
separators=["0001"], scanners=[], reason="Referenz",
|
||||
predecessors=vorgaenger, successors=nachfolger)
|
||||
document = TroDocument.from_analysis(Analysis(tros=[tro]), source="referenz")
|
||||
return build_context(document, "referenz").tros[0]
|
||||
|
||||
|
||||
def _vergleich(ist: list[str], soll: list[str]) -> None:
|
||||
for nr, (a, b) in enumerate(zip(ist, soll), start=1):
|
||||
assert a == b, f"Zeile {nr}:\n Referenz: {b}\n Template: {a}"
|
||||
assert len(ist) == len(soll), (
|
||||
f"{len(ist)} statt {len(soll)} Zeilen; zuviel/fehlend: "
|
||||
f"{ist[len(soll):] or soll[len(ist):]}")
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
def templates() -> SclTemplates:
|
||||
return SclTemplates(TEMPLATE_DIR)
|
||||
|
||||
|
||||
def test_1sep1swi_wie_tro107(templates):
|
||||
"""FB_ILS_MTRO_1Sep1Swi gegen TRO 107 (=A01+UH01-KF00 FB_Main)."""
|
||||
t = _kontext("TRO107", "1Sep1Swi", ["TRO106"], ["TRO108", "TRO110"])
|
||||
t.region_title = "TRO 107(1Sep1Swi)"
|
||||
|
||||
sep = t.separators[0]
|
||||
sep.no = _name("cSep107.1")
|
||||
sep.sensor = _name("cInBG3306")
|
||||
sep.stopper = _name("MB3306")
|
||||
|
||||
t.jam_exits[0].sensor = _name("cInBG3305")
|
||||
t.jam_exits[1].sensor = _name("cInBG3330")
|
||||
|
||||
weiche = t.switches[0]
|
||||
weiche.no = _name("cSwi107.1")
|
||||
weiche.valve = _name("MB3304")
|
||||
weiche.to1_destinations = 3 # Referenz: 3 Ziele bei 2 Abgaengen (§13)
|
||||
weiche.jam_db = _name('"DB_JamArea0102".stJam0102_1')
|
||||
|
||||
t.prio_dir2 = _name("TRUE")
|
||||
t.priority_udt = _name("udt_TRO107")
|
||||
t.main_tro = _name("cMainTro107")
|
||||
t.safety = _name('"DB_InterfaceSafety".stFromSafety.EStopMainOF1.Q')
|
||||
t.carousel_run = _name("#fbCarousel0102.xOutConveyorFullSpeed")
|
||||
t.machine_state = _name("#stInOutControlUnitCabinetOF1")
|
||||
t.jam_entries[0].db = _name('"DB_JamArea0102".stJam0102_1')
|
||||
t.jam_exits[0].db = _name('"DB_JamArea0103".stJam0103_1')
|
||||
t.jam_exits[1].db = _name('"DB_JamArea0102".stJam0102_2')
|
||||
|
||||
ist = _normalisiert(templates.render(t))
|
||||
_vergleich(ist, _referenz_region("FB_ILS_MTRO_1Sep1Swi.scl"))
|
||||
|
||||
|
||||
def test_template_ohne_bekannte_namen_hat_nur_markierte_luecken(templates):
|
||||
"""Mit den heutigen Platzhaltern: jede offene Stelle traegt den TODO-Marker."""
|
||||
t = _kontext("TRO07", "1Sep1Swi", ["SYS1"], ["TRO08", "TRO09"])
|
||||
text = templates.render(t)
|
||||
for zeile in text.splitlines():
|
||||
if "____" in zeile.split("//")[0]:
|
||||
assert "TODO(E-Planung)" in zeile, zeile
|
||||
|
||||
|
||||
@pytest.mark.parametrize("name", ["mubea", "HundM05"])
|
||||
def test_jedes_template_rendert_fuer_echte_anlagen(name, templates):
|
||||
"""StrictUndefined: ein Tippfehler im Template faellt hier auf, nicht erst beim Kunden."""
|
||||
document = load_document(FIXTURES / f"{name}_tro.json")
|
||||
text = render(document, f"{name}_tro.json", templates=templates)
|
||||
regionen = [z for z in text.splitlines() if z.startswith("REGION ")]
|
||||
assert len(regionen) == len(document.tros)
|
||||
assert "// Aus Template : FB_ILS_MTRO_1Sep1Swi" in text
|
||||
|
||||
|
||||
def test_strikter_undefined_bricht_ab(tmp_path):
|
||||
"""Unbekannte Variable im Template -> Fehler statt leerer SCL-Stelle."""
|
||||
(tmp_path / "FB_X.scl.j2").write_text("REGION {{ t.gibt_es_nicht }}\n", encoding="utf-8")
|
||||
t = _kontext("TRO01", "1Sep", [], [])
|
||||
t.fb = "FB_X"
|
||||
with pytest.raises(Exception):
|
||||
SclTemplates(tmp_path).render(t)
|
||||
Reference in New Issue
Block a user