Files
sps_skel/tests/fixtures/scl/mubea_FB_Main_templates.scl
T
Samer AyadiandClaude Opus 5.5 0c69faf3db Merge e-planung-bruecke: stabile TRO-IDs, TRO-JSON v4, E-Planung-Bruecke
Uebernimmt Michael Stangls Zweig (tro_ids, Slots/jamAreas v4, e_planning
--eplan, Konzept- und Datenquellen-Doku) in master, auf dem seitdem die
SCL-Templates fuer alle 7 Typen mit Referenz-Aufrufstelle liegen.

Konfliktloesung:
- lib/scl_context.py: beide Seiten zusammengefuehrt - Michaels _separator
  (E-Planung-Namen) und Staubereiche (_entries/_exit_area, ein JamEntr je
  eigenem Staubereich) plus die Template-Felder (_scanner, _store,
  carriers/data, part_sensor). _jam() fuehrt jetzt auch jam_id. Die beim
  automatischen Zusammenfuehren verlorene Property SclJam.title
  wiederhergestellt.
- Templates 1Sep, 1Sep2Swi, 1Sep_SSCC, Vario, Vario_workStation, PinStore_Auto
  auf v4 nachgezogen: Kommentar "Staubereich J.... von/vor ..." wie im
  Pilot; PinStore-TODO zaehlt Staubereiche statt Nachbarn (mubea: 2 Zulaeufe
  laufen in einen Eingang).
- Golden-Files *_templates neu erzeugt; geaendert sind ausschliesslich
  Staubereichs-Zeilen (Kennung im Kommentar, ein Eingang statt einem je
  Vorgaenger). Generische Golden-Files = Michaels Stand.
- Neuer Test: E-Planung-Namen kommen auch in der Template-Ausgabe an.
- Doku: README Schema v4, SCL_Templates.md Staubereiche und TODO-Zahlen.

Geprueft: 71 Tests gruen; tro_flow --json + scl_skeleton --templates auf
allen 8 CSVs ohne Fehler.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 09:24:20 +02:00

1252 lines
75 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// ============================================================
// 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_1Sep, FB_ILS_MTRO_1Sep1Swi, FB_ILS_MTRO_PinStore_Auto, FB_ILS_MTRO_Vario
// Generisch : FB_ILS_MTRO_2Sep2Swi (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
// Aufbau nach Template FB_ILS_MTRO_1Sep.scl.j2 (Referenz: doc/TRO_Katalog/scl_templates)
// 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.stInSenJam2 := "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; // braucht keine Vorfahrtsregelung
#TRO03(nInMainTroNo := "cMainTro____", // TODO(E-Planung)
xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung)
xInAllRdyToStart := TRUE,
xInCarouselRun := #fbCarousel____.xOutConveyorFullSpeed, // TODO(E-Planung) - nur am Kreisel, sonst Zeile loeschen
xInRelease := "DB_TRO_TEST".TRO03,
stInOutMachineState := #stInOutControlUnitCabinet, // TODO(E-Planung) - Schaltschrank
stInOutCognexInterface := #stCognexInterfaceDummy,
arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0042 von SYS1 (Station, kein TRO), TRO04
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0044 vor TRO05
stInOutJamExit2 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
xOutStopper1 => "MB____", // TODO(E-Planung)
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"], // TODO(E-Planung)
stInOutHMI := "DB_Interface_HMI".stTRO.TRO03);
END_REGION
REGION TRO05 (1Sep) Sep 0044
// Anlagenkoordinate x/y: 10310 / -5013 mm
// Vorgaenger: TRO03
// Nachfolger: TRO18
// Einstufung: mittel
// Aufbau nach Template FB_ILS_MTRO_1Sep.scl.j2 (Referenz: doc/TRO_Katalog/scl_templates)
// 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.stInSenJam2 := "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; // braucht keine Vorfahrtsregelung
#TRO05(nInMainTroNo := "cMainTro____", // TODO(E-Planung)
xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung)
xInAllRdyToStart := TRUE,
xInCarouselRun := #fbCarousel____.xOutConveyorFullSpeed, // TODO(E-Planung) - nur am Kreisel, sonst Zeile loeschen
xInRelease := "DB_TRO_TEST".TRO05,
stInOutMachineState := #stInOutControlUnitCabinet, // TODO(E-Planung) - Schaltschrank
stInOutCognexInterface := #stCognexInterfaceDummy,
arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0044 von TRO03
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0066 vor TRO18
stInOutJamExit2 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
xOutStopper1 => "MB____", // TODO(E-Planung)
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"], // TODO(E-Planung)
stInOutHMI := "DB_Interface_HMI".stTRO.TRO05);
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
// Aufbau nach Template FB_ILS_MTRO_PinStore_Auto.scl.j2 (Referenz: doc/TRO_Katalog/scl_templates)
// TODO(E-Planung): 1 Eingangs- / 2 Ausgangs-Staubereiche im Layout -
// der FB hat je nur einen (JamEntr/JamExit, dazu JamBypass)
// Linien (Separatoren aus dem Layout): 0066, 0069, 0072, 0075, 0078, 0081, 0084, 0087, 0090, 0093, 0096, 0099, 0102, 0105, 0108, 0111, 0114, 0117, 0120, 0123
REGION Encoder Settings
#TRO18.stInEncoderParameter.nPosActDif := #fbEncoder____.nOutPosActDif; // TODO(E-Planung)
#TRO18.stInEncoderParameter.nPosPitchPart := #fbEncoder____.nOutPosPitchPart; // TODO(E-Planung)
END_REGION
REGION ConveyorStation Settings
#TRO18.stInSettings.nDestGeneral := "cDest____"; // TODO(E-Planung)
#TRO18.stInSettings.nConvStations := "cHooksSorterMaxPin____"; // TODO(E-Planung)
#TRO18.stInSettings.nStationsMax := "cStationsMax____"; // TODO(E-Planung)
#TRO18.stInSettings.nStorageThreshold := "cNoPositionsBlock____"; // TODO(E-Planung)
#TRO18.stInSettings.nNoOfLines := 20;
END_REGION
REGION Pin Query / "Zappler"
#TRO18.stInSensorReference := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
END_REGION
REGION Barcode Reader In
#TRO18.stInBarcodeReader.Settings.nStation := ____; // TODO(E-Planung)
#TRO18.stInBarcodeReader.Settings.nScannerPurpose := 0;
#TRO18.stInBarcodeReader.Settings.tTimeout := T#5s;
#TRO18.stInBarcodeReader.Settings.xActivateCheckASCI := TRUE;
#arCognexInterface["cScanner____"].xInCamTriggerReady := "bx____-TriggerReady"; // TODO(E-Planung)
#arCognexInterface["cScanner____"].xInCamTriggerAck := "bx____-TriggerAck"; // TODO(E-Planung)
#arCognexInterface["cScanner____"].xInCamResultsAvailable := "bx____-Results Available"; // TODO(E-Planung)
#arCognexInterface["cScanner____"].xInCamGeneralFault := "bx____-General Fault"; // TODO(E-Planung)
#arCognexInterface["cScanner____"].hwInCamInspectionResults := "BX____~Ergebnisse_–_64_Bytes_1"; // TODO(E-Planung)
END_REGION
REGION Separator Settings
REGION Sep Pin
// Einschleus-Separator = Bauteil ? aus dem Layout
#TRO18.stInSeparatorPin.stSenTrolley := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.stInSeparatorPin.stSettings.tHandlingTime := T#0ms; // TODO(E-Planung): pruefen
#TRO18.stInSeparatorPin.stSettings.tTrailingTime := T#50ms; // TODO(E-Planung): pruefen
#TRO18.stInSeparatorPin.stSettings.xPluggedScanner := TRUE;
END_REGION
REGION Sep Store 1
// Linie 1 = Separator 0066 aus dem Layout
#nActNo := 1;
#TRO18.arInSep[#nActNo].stSettings.nJamLength := "cStorage____ExitJam"; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSenTrolley := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSettings.tHandlingTime := "cTimeSepHandlingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.tTrailingTime := "cTimeSepTrailingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.xPluggedScanner := FALSE;
END_REGION
REGION Sep Store 2
// Linie 2 = Separator 0069 aus dem Layout
#nActNo := 2;
#TRO18.arInSep[#nActNo].stSettings.nJamLength := "cStorage____ExitJam"; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSenTrolley := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSettings.tHandlingTime := "cTimeSepHandlingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.tTrailingTime := "cTimeSepTrailingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.xPluggedScanner := FALSE;
END_REGION
REGION Sep Store 3
// Linie 3 = Separator 0072 aus dem Layout
#nActNo := 3;
#TRO18.arInSep[#nActNo].stSettings.nJamLength := "cStorage____ExitJam"; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSenTrolley := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSettings.tHandlingTime := "cTimeSepHandlingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.tTrailingTime := "cTimeSepTrailingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.xPluggedScanner := FALSE;
END_REGION
REGION Sep Store 4
// Linie 4 = Separator 0075 aus dem Layout
#nActNo := 4;
#TRO18.arInSep[#nActNo].stSettings.nJamLength := "cStorage____ExitJam"; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSenTrolley := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSettings.tHandlingTime := "cTimeSepHandlingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.tTrailingTime := "cTimeSepTrailingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.xPluggedScanner := FALSE;
END_REGION
REGION Sep Store 5
// Linie 5 = Separator 0078 aus dem Layout
#nActNo := 5;
#TRO18.arInSep[#nActNo].stSettings.nJamLength := "cStorage____ExitJam"; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSenTrolley := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSettings.tHandlingTime := "cTimeSepHandlingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.tTrailingTime := "cTimeSepTrailingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.xPluggedScanner := FALSE;
END_REGION
REGION Sep Store 6
// Linie 6 = Separator 0081 aus dem Layout
#nActNo := 6;
#TRO18.arInSep[#nActNo].stSettings.nJamLength := "cStorage____ExitJam"; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSenTrolley := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSettings.tHandlingTime := "cTimeSepHandlingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.tTrailingTime := "cTimeSepTrailingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.xPluggedScanner := FALSE;
END_REGION
REGION Sep Store 7
// Linie 7 = Separator 0084 aus dem Layout
#nActNo := 7;
#TRO18.arInSep[#nActNo].stSettings.nJamLength := "cStorage____ExitJam"; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSenTrolley := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSettings.tHandlingTime := "cTimeSepHandlingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.tTrailingTime := "cTimeSepTrailingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.xPluggedScanner := FALSE;
END_REGION
REGION Sep Store 8
// Linie 8 = Separator 0087 aus dem Layout
#nActNo := 8;
#TRO18.arInSep[#nActNo].stSettings.nJamLength := "cStorage____ExitJam"; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSenTrolley := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSettings.tHandlingTime := "cTimeSepHandlingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.tTrailingTime := "cTimeSepTrailingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.xPluggedScanner := FALSE;
END_REGION
REGION Sep Store 9
// Linie 9 = Separator 0090 aus dem Layout
#nActNo := 9;
#TRO18.arInSep[#nActNo].stSettings.nJamLength := "cStorage____ExitJam"; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSenTrolley := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSettings.tHandlingTime := "cTimeSepHandlingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.tTrailingTime := "cTimeSepTrailingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.xPluggedScanner := FALSE;
END_REGION
REGION Sep Store 10
// Linie 10 = Separator 0093 aus dem Layout
#nActNo := 10;
#TRO18.arInSep[#nActNo].stSettings.nJamLength := "cStorage____ExitJam"; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSenTrolley := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSettings.tHandlingTime := "cTimeSepHandlingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.tTrailingTime := "cTimeSepTrailingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.xPluggedScanner := FALSE;
END_REGION
REGION Sep Store 11
// Linie 11 = Separator 0096 aus dem Layout
#nActNo := 11;
#TRO18.arInSep[#nActNo].stSettings.nJamLength := "cStorage____ExitJam"; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSenTrolley := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSettings.tHandlingTime := "cTimeSepHandlingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.tTrailingTime := "cTimeSepTrailingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.xPluggedScanner := FALSE;
END_REGION
REGION Sep Store 12
// Linie 12 = Separator 0099 aus dem Layout
#nActNo := 12;
#TRO18.arInSep[#nActNo].stSettings.nJamLength := "cStorage____ExitJam"; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSenTrolley := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSettings.tHandlingTime := "cTimeSepHandlingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.tTrailingTime := "cTimeSepTrailingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.xPluggedScanner := FALSE;
END_REGION
REGION Sep Store 13
// Linie 13 = Separator 0102 aus dem Layout
#nActNo := 13;
#TRO18.arInSep[#nActNo].stSettings.nJamLength := "cStorage____ExitJam"; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSenTrolley := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSettings.tHandlingTime := "cTimeSepHandlingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.tTrailingTime := "cTimeSepTrailingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.xPluggedScanner := FALSE;
END_REGION
REGION Sep Store 14
// Linie 14 = Separator 0105 aus dem Layout
#nActNo := 14;
#TRO18.arInSep[#nActNo].stSettings.nJamLength := "cStorage____ExitJam"; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSenTrolley := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSettings.tHandlingTime := "cTimeSepHandlingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.tTrailingTime := "cTimeSepTrailingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.xPluggedScanner := FALSE;
END_REGION
REGION Sep Store 15
// Linie 15 = Separator 0108 aus dem Layout
#nActNo := 15;
#TRO18.arInSep[#nActNo].stSettings.nJamLength := "cStorage____ExitJam"; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSenTrolley := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSettings.tHandlingTime := "cTimeSepHandlingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.tTrailingTime := "cTimeSepTrailingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.xPluggedScanner := FALSE;
END_REGION
REGION Sep Store 16
// Linie 16 = Separator 0111 aus dem Layout
#nActNo := 16;
#TRO18.arInSep[#nActNo].stSettings.nJamLength := "cStorage____ExitJam"; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSenTrolley := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSettings.tHandlingTime := "cTimeSepHandlingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.tTrailingTime := "cTimeSepTrailingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.xPluggedScanner := FALSE;
END_REGION
REGION Sep Store 17
// Linie 17 = Separator 0114 aus dem Layout
#nActNo := 17;
#TRO18.arInSep[#nActNo].stSettings.nJamLength := "cStorage____ExitJam"; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSenTrolley := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSettings.tHandlingTime := "cTimeSepHandlingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.tTrailingTime := "cTimeSepTrailingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.xPluggedScanner := FALSE;
END_REGION
REGION Sep Store 18
// Linie 18 = Separator 0117 aus dem Layout
#nActNo := 18;
#TRO18.arInSep[#nActNo].stSettings.nJamLength := "cStorage____ExitJam"; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSenTrolley := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSettings.tHandlingTime := "cTimeSepHandlingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.tTrailingTime := "cTimeSepTrailingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.xPluggedScanner := FALSE;
END_REGION
REGION Sep Store 19
// Linie 19 = Separator 0120 aus dem Layout
#nActNo := 19;
#TRO18.arInSep[#nActNo].stSettings.nJamLength := "cStorage____ExitJam"; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSenTrolley := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSettings.tHandlingTime := "cTimeSepHandlingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.tTrailingTime := "cTimeSepTrailingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.xPluggedScanner := FALSE;
END_REGION
REGION Sep Store 20
// Linie 20 = Separator 0123 aus dem Layout
#nActNo := 20;
#TRO18.arInSep[#nActNo].stSettings.nJamLength := "cStorage____ExitJam"; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSenTrolley := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInSep[#nActNo].stSettings.tHandlingTime := "cTimeSepHandlingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.tTrailingTime := "cTimeSepTrailingStorageLine";
#TRO18.arInSep[#nActNo].stSettings.xPluggedScanner := FALSE;
END_REGION
END_REGION
REGION UnloadingStations Settings
#TRO18.xInQuitLocal := "SF____"; // TODO(E-Planung)
#TRO18.arInJamSensor[1] := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInJamSensor[2] := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInJamSensor[3] := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInJamSensor[4] := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInJamSensor[5] := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInJamSensor[6] := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInJamSensor[7] := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInJamSensor[8] := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInJamSensor[9] := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInJamSensor[10] := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInJamSensor[11] := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInJamSensor[12] := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInJamSensor[13] := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInJamSensor[14] := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInJamSensor[15] := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInJamSensor[16] := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInJamSensor[17] := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInJamSensor[18] := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInJamSensor[19] := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO18.arInJamSensor[20] := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
END_REGION
REGION Aufruf: TRO18
#TRO18.stInPriorityManager.xReleaseOk := TRUE;
#TRO18(xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung)
nInTestTarget := "IBN".nTestTarget____, // TODO(E-Planung)
xInAllRdyToStart := TRUE,
xInCancel := "cTodoFalse",
xInRelease := "DB_TRO_TEST".TRO18,
xInConveyorRunIn := #fbSortConv____.xOutConveyorFullSpeed, // TODO(E-Planung) - Foerderer am Zulauf
xInConveyorRunOut := #fbExitConv____.xOutConveyorFullSpeed, // TODO(E-Planung) - Foerderer am Ablauf
stInOutControlUnitCabinet := #stInOutControlUnitCabinet, // TODO(E-Planung) - Schaltschrank
arInOutStorageLines := "DB_Storage____".arLine, // TODO(E-Planung)
arInOutJamEntr := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0066 von TRO05, TRO12 (Eingang des Speichers - Kennung vorlaeufig nach erstem Linien-Separator)
stInOutJamEntr := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
arInOutJamExit := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0045 vor TRO07
stInOutJamExit := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
arInOutJamBypass := #arCarrierPlaceHolder,
stInOutJamBypass := #stJamDataPlaceHolder,
stInOutHMI := "DB_Interface_HMI".stTRO.TRO18,
stMFRStorageRemovalInterface := "DB_HandshakeStorage".Str_StorageRemoval.arrudt_StorageRemovalHandshakeTROsLvl1[____], // TODO(E-Planung)
xOutSeparatorPin => "MB____", // TODO(E-Planung)
stCognexInterfacePin := #arCognexInterface["cScanner____"], // TODO(E-Planung)
stConveyorStations := "DB_ConveyorStations".stConveyorStations____); // TODO(E-Planung)
END_REGION
REGION CARR_GLOB_CORRECTION
"FC_CARR_GLOB_CORRECTION"(xInStart := #TRO18.xOutCorrection,
nInBarcodeScan := #TRO18.nBarcodeResult,
nInStation := 0, // TODO(E-Planung)
arOutEventLogInfo => #arDummyEventCorrectionInfo,
InOutCarrierExpect := "DB_JamArea____".stJam____.arCarrier[1]); // TODO(E-Planung)
END_REGION
REGION Barcode Reader Out
"bx____-TriggerEnable" := #arCognexInterface["cScanner____"].xOutCamTriggerEnable; // TODO(E-Planung)
"bx____-Trigger" := #arCognexInterface["cScanner____"].xOutCamTrigger; // TODO(E-Planung)
"bx____-ResultsAck" := #arCognexInterface["cScanner____"].xOutCamResultsAck; // TODO(E-Planung)
END_REGION
REGION Separator Store Out
"MB____" := #TRO18.arOutSeparatorStore[1]; // TODO(E-Planung)
"MB____" := #TRO18.arOutSeparatorStore[2]; // TODO(E-Planung)
"MB____" := #TRO18.arOutSeparatorStore[3]; // TODO(E-Planung)
"MB____" := #TRO18.arOutSeparatorStore[4]; // TODO(E-Planung)
"MB____" := #TRO18.arOutSeparatorStore[5]; // TODO(E-Planung)
"MB____" := #TRO18.arOutSeparatorStore[6]; // TODO(E-Planung)
"MB____" := #TRO18.arOutSeparatorStore[7]; // TODO(E-Planung)
"MB____" := #TRO18.arOutSeparatorStore[8]; // TODO(E-Planung)
"MB____" := #TRO18.arOutSeparatorStore[9]; // TODO(E-Planung)
"MB____" := #TRO18.arOutSeparatorStore[10]; // TODO(E-Planung)
"MB____" := #TRO18.arOutSeparatorStore[11]; // TODO(E-Planung)
"MB____" := #TRO18.arOutSeparatorStore[12]; // TODO(E-Planung)
"MB____" := #TRO18.arOutSeparatorStore[13]; // TODO(E-Planung)
"MB____" := #TRO18.arOutSeparatorStore[14]; // TODO(E-Planung)
"MB____" := #TRO18.arOutSeparatorStore[15]; // TODO(E-Planung)
"MB____" := #TRO18.arOutSeparatorStore[16]; // TODO(E-Planung)
"MB____" := #TRO18.arOutSeparatorStore[17]; // TODO(E-Planung)
"MB____" := #TRO18.arOutSeparatorStore[18]; // TODO(E-Planung)
"MB____" := #TRO18.arOutSeparatorStore[19]; // TODO(E-Planung)
"MB____" := #TRO18.arOutSeparatorStore[20]; // TODO(E-Planung)
END_REGION
// stMFRStorageRemovalInterface koppelt an FB_StockRemovalBLKModul / FB_StorageManagement
END_REGION
REGION TRO07 (1Sep) Sep 0045
// Anlagenkoordinate x/y: 9510 / 14217 mm
// Vorgaenger: TRO09, TRO18
// Nachfolger: TRO04
// Einstufung: mittel
// Aufbau nach Template FB_ILS_MTRO_1Sep.scl.j2 (Referenz: doc/TRO_Katalog/scl_templates)
// 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.stInSenJam2 := "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; // braucht keine Vorfahrtsregelung
#TRO07(nInMainTroNo := "cMainTro____", // TODO(E-Planung)
xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung)
xInAllRdyToStart := TRUE,
xInCarouselRun := #fbCarousel____.xOutConveyorFullSpeed, // TODO(E-Planung) - nur am Kreisel, sonst Zeile loeschen
xInRelease := "DB_TRO_TEST".TRO07,
stInOutMachineState := #stInOutControlUnitCabinet, // TODO(E-Planung) - Schaltschrank
stInOutCognexInterface := #stCognexInterfaceDummy,
arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0045 von TRO09, TRO18
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0043 vor TRO04
stInOutJamExit2 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
xOutStopper1 => "MB____", // TODO(E-Planung)
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"], // TODO(E-Planung)
stInOutHMI := "DB_Interface_HMI".stTRO.TRO07);
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 J0005 von TRO01, TRO06, TRO18 (Aufteilung der Vorgaenger auf die Eingaenge offen)
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData,
arInOutJamEntr2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0036 von - (Aufteilung der Vorgaenger auf die Eingaenge offen)
stInOutJamEntr2 := "DB_JamArea____".stJam____.stData,
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0040 vor TRO01
stInOutJamExit2 := "DB_JamArea____".stJam____.stData,
arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0012 vor TRO02
stInOutJamExit3 := "DB_JamArea____".stJam____.stData,
arInOutJamExit4 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0058 vor 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
// Aufbau nach Template FB_ILS_MTRO_1Sep.scl.j2 (Referenz: doc/TRO_Katalog/scl_templates)
// 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.stInSenJam2 := "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; // braucht keine Vorfahrtsregelung
#TRO04(nInMainTroNo := "cMainTro____", // TODO(E-Planung)
xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung)
xInAllRdyToStart := TRUE,
xInCarouselRun := #fbCarousel____.xOutConveyorFullSpeed, // TODO(E-Planung) - nur am Kreisel, sonst Zeile loeschen
xInRelease := "DB_TRO_TEST".TRO04,
stInOutMachineState := #stInOutControlUnitCabinet, // TODO(E-Planung) - Schaltschrank
stInOutCognexInterface := #stCognexInterfaceDummy,
arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0043 von TRO07
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0042 vor TRO03
stInOutJamExit2 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
xOutStopper1 => "MB____", // TODO(E-Planung)
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"], // TODO(E-Planung)
stInOutHMI := "DB_Interface_HMI".stTRO.TRO04);
END_REGION
REGION TRO01 (1Sep) Sep 0040
// Anlagenkoordinate x/y: 5355 / -5878 mm
// Vorgaenger: TRO10
// Nachfolger: TRO10
// Einstufung: mittel
// Aufbau nach Template FB_ILS_MTRO_1Sep.scl.j2 (Referenz: doc/TRO_Katalog/scl_templates)
// 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.stInSenJam2 := "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; // braucht keine Vorfahrtsregelung
#TRO01(nInMainTroNo := "cMainTro____", // TODO(E-Planung)
xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung)
xInAllRdyToStart := TRUE,
xInCarouselRun := #fbCarousel____.xOutConveyorFullSpeed, // TODO(E-Planung) - nur am Kreisel, sonst Zeile loeschen
xInRelease := "DB_TRO_TEST".TRO01,
stInOutMachineState := #stInOutControlUnitCabinet, // TODO(E-Planung) - Schaltschrank
stInOutCognexInterface := #stCognexInterfaceDummy,
arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0040 von TRO10
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0005 vor TRO10
stInOutJamExit2 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
xOutStopper1 => "MB____", // TODO(E-Planung)
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"], // TODO(E-Planung)
stInOutHMI := "DB_Interface_HMI".stTRO.TRO01);
END_REGION
REGION TRO02 (1Sep) Sep 0012
// Anlagenkoordinate x/y: -220 / -3472 mm
// Vorgaenger: TRO10
// Nachfolger: SYS2, SYS3, TRO13
// Einstufung: mittel
// Aufbau nach Template FB_ILS_MTRO_1Sep.scl.j2 (Referenz: doc/TRO_Katalog/scl_templates)
// 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.stInSenJam2 := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO02.stInSenJam3 := "DB_Inputs".Sensors["cInBG____"]; // TODO(E-Planung)
#TRO02.stInSenJam4 := "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; // braucht keine Vorfahrtsregelung
#TRO02(nInMainTroNo := "cMainTro____", // TODO(E-Planung)
xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung)
xInAllRdyToStart := TRUE,
xInCarouselRun := #fbCarousel____.xOutConveyorFullSpeed, // TODO(E-Planung) - nur am Kreisel, sonst Zeile loeschen
xInRelease := "DB_TRO_TEST".TRO02,
stInOutMachineState := #stInOutControlUnitCabinet, // TODO(E-Planung) - Schaltschrank
stInOutCognexInterface := #stCognexInterfaceDummy,
arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0012 von TRO10
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich vor SYS2 (Station, kein TRO)
stInOutJamExit2 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich vor SYS3 (Station, kein TRO)
stInOutJamExit3 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
arInOutJamExit4 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0011 vor TRO13
stInOutJamExit4 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
xOutStopper1 => "MB____", // TODO(E-Planung)
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"], // TODO(E-Planung)
stInOutHMI := "DB_Interface_HMI".stTRO.TRO02);
END_REGION
REGION TRO11 (Vario) Sep 0058
// Anlagenkoordinate x/y: 3300 / -4743 mm
// Vorgaenger: TRO10
// Nachfolger: TRO12
// Einstufung: hoch
// Aufbau nach Template FB_ILS_MTRO_Vario.scl.j2 (Referenz: doc/TRO_Katalog/scl_templates)
// 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#800ms; // TODO(E-Planung): pruefen
#TRO11.stInSeparator1.Settings.tHandlingTime := t#300ms; // TODO(E-Planung): pruefen
#TRO11.stInSeparator1.Settings.tJam := "TimeForSepJam";
#TRO11.stInSeparator1.Settings.xPluggedJam := FALSE;
#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#2000ms; // TODO(E-Planung): pruefen
#TRO11.stInSeparator1.Settings.tSenWait := T#5000ms; // 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.tRasterHigh := t#5s; // TODO(E-Planung): pruefen
#TRO11.stInVario.Settings.tRasterLow := t#5s; // TODO(E-Planung): pruefen
#TRO11.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG____"]; // MT in Pos - TODO(E-Planung)
#TRO11.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG____"]; // Pusher Dog in Pos - TODO(E-Planung)
#TRO11.stInVario.stSenLastPos := "DB_Inputs".Sensors["cInBG____"]; // Conveyor full - TODO(E-Planung)
#TRO11.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG____"]; // Jam detector - TODO(E-Planung)
#TRO11.stInPriorityManager.xReleaseOk := TRUE; // braucht keine Vorfahrtsregelung
#TRO11.stInVario.Settings.xJamSenDelayActive := TRUE;
#TRO11.stInVario.Settings.tJamSenDelay := T#2s;
#TRO11.stInSettings.xIsBorner := TRUE; // TODO(E-Planung) - pruefen - Bedeutung mit SPS klaeren
#TRO11(nInMainTroNo := "cMainTro____", // TODO(E-Planung)
xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung)
xInMotorProtection := "FC____", // TODO(E-Planung)
xInAllRdyToStart := TRUE,
xInReset := "cTodoFalse",
xInErrorQuit := "SF____", // TODO(E-Planung) - Quittierung
xInAutomatic := #t_automatik, // TODO(E-Planung) - Automatik des Schaltschranks
xInRelease := "DB_TRO_TEST".TRO11,
arInOutJamEntr := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0058 von TRO10
stInOutJamEntr := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
arInOutJamFinger := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0059 vor TRO12
stInOutJamFinger := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
stInOutMachineState := #stInOutControlUnitCabinet, // TODO(E-Planung) - Schaltschrank
stInOutCognexInterface := #stCognexInterfaceDummy,
stInOutHMI := "DB_Interface_HMI".stTRO.TRO11,
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"], // TODO(E-Planung)
xOutStopper => "MB____", // TODO(E-Planung)
xOutVarioMotor => "MA____"); // 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 J0011 von TRO02
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0062 vor TRO16
stInOutJamExit2 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0063 vor 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
// Aufbau nach Template FB_ILS_MTRO_1Sep.scl.j2 (Referenz: doc/TRO_Katalog/scl_templates)
// 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.stInSenJam2 := "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; // braucht keine Vorfahrtsregelung
#TRO12(nInMainTroNo := "cMainTro____", // TODO(E-Planung)
xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung)
xInAllRdyToStart := TRUE,
xInCarouselRun := #fbCarousel____.xOutConveyorFullSpeed, // TODO(E-Planung) - nur am Kreisel, sonst Zeile loeschen
xInRelease := "DB_TRO_TEST".TRO12,
stInOutMachineState := #stInOutControlUnitCabinet, // TODO(E-Planung) - Schaltschrank
stInOutCognexInterface := #stCognexInterfaceDummy,
arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0059 von TRO11
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0066 vor TRO18
stInOutJamExit2 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
xOutStopper1 => "MB____", // TODO(E-Planung)
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"], // TODO(E-Planung)
stInOutHMI := "DB_Interface_HMI".stTRO.TRO12);
END_REGION
REGION TRO16 (Vario) Sep 0062
// Anlagenkoordinate x/y: -899 / 1135 mm
// Vorgaenger: TRO13
// Nachfolger: TRO15
// Einstufung: hoch
// Aufbau nach Template FB_ILS_MTRO_Vario.scl.j2 (Referenz: doc/TRO_Katalog/scl_templates)
// 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#800ms; // TODO(E-Planung): pruefen
#TRO16.stInSeparator1.Settings.tHandlingTime := t#300ms; // TODO(E-Planung): pruefen
#TRO16.stInSeparator1.Settings.tJam := "TimeForSepJam";
#TRO16.stInSeparator1.Settings.xPluggedJam := FALSE;
#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#2000ms; // TODO(E-Planung): pruefen
#TRO16.stInSeparator1.Settings.tSenWait := T#5000ms; // 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.tRasterHigh := t#5s; // TODO(E-Planung): pruefen
#TRO16.stInVario.Settings.tRasterLow := t#5s; // TODO(E-Planung): pruefen
#TRO16.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG____"]; // MT in Pos - TODO(E-Planung)
#TRO16.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG____"]; // Pusher Dog in Pos - TODO(E-Planung)
#TRO16.stInVario.stSenLastPos := "DB_Inputs".Sensors["cInBG____"]; // Conveyor full - TODO(E-Planung)
#TRO16.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG____"]; // Jam detector - TODO(E-Planung)
#TRO16.stInPriorityManager.xReleaseOk := TRUE; // braucht keine Vorfahrtsregelung
#TRO16.stInVario.Settings.xJamSenDelayActive := TRUE;
#TRO16.stInVario.Settings.tJamSenDelay := T#2s;
#TRO16.stInSettings.xIsBorner := TRUE; // TODO(E-Planung) - pruefen - Bedeutung mit SPS klaeren
#TRO16(nInMainTroNo := "cMainTro____", // TODO(E-Planung)
xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung)
xInMotorProtection := "FC____", // TODO(E-Planung)
xInAllRdyToStart := TRUE,
xInReset := "cTodoFalse",
xInErrorQuit := "SF____", // TODO(E-Planung) - Quittierung
xInAutomatic := #t_automatik, // TODO(E-Planung) - Automatik des Schaltschranks
xInRelease := "DB_TRO_TEST".TRO16,
arInOutJamEntr := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0062 von TRO13
stInOutJamEntr := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
arInOutJamFinger := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0038 vor TRO15
stInOutJamFinger := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
stInOutMachineState := #stInOutControlUnitCabinet, // TODO(E-Planung) - Schaltschrank
stInOutCognexInterface := #stCognexInterfaceDummy,
stInOutHMI := "DB_Interface_HMI".stTRO.TRO16,
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"], // TODO(E-Planung)
xOutStopper => "MB____", // TODO(E-Planung)
xOutVarioMotor => "MA____"); // TODO(E-Planung)
END_REGION
REGION TRO17 (1Sep) Sep 0063
// Anlagenkoordinate x/y: -703 / 12296 mm
// Vorgaenger: TRO13, TRO14
// Nachfolger: TRO06
// Einstufung: mittel
// Aufbau nach Template FB_ILS_MTRO_1Sep.scl.j2 (Referenz: doc/TRO_Katalog/scl_templates)
// 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.stInSenJam2 := "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; // braucht keine Vorfahrtsregelung
#TRO17(nInMainTroNo := "cMainTro____", // TODO(E-Planung)
xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung)
xInAllRdyToStart := TRUE,
xInCarouselRun := #fbCarousel____.xOutConveyorFullSpeed, // TODO(E-Planung) - nur am Kreisel, sonst Zeile loeschen
xInRelease := "DB_TRO_TEST".TRO17,
stInOutMachineState := #stInOutControlUnitCabinet, // TODO(E-Planung) - Schaltschrank
stInOutCognexInterface := #stCognexInterfaceDummy,
arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0063 von TRO13, TRO14
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0003 vor TRO06
stInOutJamExit2 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
xOutStopper1 => "MB____", // TODO(E-Planung)
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"], // TODO(E-Planung)
stInOutHMI := "DB_Interface_HMI".stTRO.TRO17);
END_REGION
REGION TRO15 (1Sep) Sep 0038
// Anlagenkoordinate x/y: -1206 / 5330 mm
// Vorgaenger: TRO16
// Nachfolger: TRO14
// Einstufung: mittel
// Aufbau nach Template FB_ILS_MTRO_1Sep.scl.j2 (Referenz: doc/TRO_Katalog/scl_templates)
// 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.stInSenJam2 := "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; // braucht keine Vorfahrtsregelung
#TRO15(nInMainTroNo := "cMainTro____", // TODO(E-Planung)
xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung)
xInAllRdyToStart := TRUE,
xInCarouselRun := #fbCarousel____.xOutConveyorFullSpeed, // TODO(E-Planung) - nur am Kreisel, sonst Zeile loeschen
xInRelease := "DB_TRO_TEST".TRO15,
stInOutMachineState := #stInOutControlUnitCabinet, // TODO(E-Planung) - Schaltschrank
stInOutCognexInterface := #stCognexInterfaceDummy,
arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0038 von TRO16
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0037 vor TRO14
stInOutJamExit2 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
xOutStopper1 => "MB____", // TODO(E-Planung)
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"], // TODO(E-Planung)
stInOutHMI := "DB_Interface_HMI".stTRO.TRO15);
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 J0003 von TRO17
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0054 vor TRO08
stInOutJamExit2 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0005 vor 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
// Aufbau nach Template FB_ILS_MTRO_1Sep.scl.j2 (Referenz: doc/TRO_Katalog/scl_templates)
// 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.stInSenJam2 := "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; // braucht keine Vorfahrtsregelung
#TRO14(nInMainTroNo := "cMainTro____", // TODO(E-Planung)
xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung)
xInAllRdyToStart := TRUE,
xInCarouselRun := #fbCarousel____.xOutConveyorFullSpeed, // TODO(E-Planung) - nur am Kreisel, sonst Zeile loeschen
xInRelease := "DB_TRO_TEST".TRO14,
stInOutMachineState := #stInOutControlUnitCabinet, // TODO(E-Planung) - Schaltschrank
stInOutCognexInterface := #stCognexInterfaceDummy,
arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0037 von TRO15
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0063 vor TRO17
stInOutJamExit2 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
xOutStopper1 => "MB____", // TODO(E-Planung)
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"], // TODO(E-Planung)
stInOutHMI := "DB_Interface_HMI".stTRO.TRO14);
END_REGION
REGION TRO08 (Vario) Sep 0054
// Anlagenkoordinate x/y: 3300 / 13510 mm
// Vorgaenger: TRO06
// Nachfolger: TRO09
// Einstufung: hoch
// Aufbau nach Template FB_ILS_MTRO_Vario.scl.j2 (Referenz: doc/TRO_Katalog/scl_templates)
// 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#800ms; // TODO(E-Planung): pruefen
#TRO08.stInSeparator1.Settings.tHandlingTime := t#300ms; // TODO(E-Planung): pruefen
#TRO08.stInSeparator1.Settings.tJam := "TimeForSepJam";
#TRO08.stInSeparator1.Settings.xPluggedJam := FALSE;
#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#2000ms; // TODO(E-Planung): pruefen
#TRO08.stInSeparator1.Settings.tSenWait := T#5000ms; // 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.tRasterHigh := t#5s; // TODO(E-Planung): pruefen
#TRO08.stInVario.Settings.tRasterLow := t#5s; // TODO(E-Planung): pruefen
#TRO08.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG____"]; // MT in Pos - TODO(E-Planung)
#TRO08.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG____"]; // Pusher Dog in Pos - TODO(E-Planung)
#TRO08.stInVario.stSenLastPos := "DB_Inputs".Sensors["cInBG____"]; // Conveyor full - TODO(E-Planung)
#TRO08.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG____"]; // Jam detector - TODO(E-Planung)
#TRO08.stInPriorityManager.xReleaseOk := TRUE; // braucht keine Vorfahrtsregelung
#TRO08.stInVario.Settings.xJamSenDelayActive := TRUE;
#TRO08.stInVario.Settings.tJamSenDelay := T#2s;
#TRO08.stInSettings.xIsBorner := TRUE; // TODO(E-Planung) - pruefen - Bedeutung mit SPS klaeren
#TRO08(nInMainTroNo := "cMainTro____", // TODO(E-Planung)
xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung)
xInMotorProtection := "FC____", // TODO(E-Planung)
xInAllRdyToStart := TRUE,
xInReset := "cTodoFalse",
xInErrorQuit := "SF____", // TODO(E-Planung) - Quittierung
xInAutomatic := #t_automatik, // TODO(E-Planung) - Automatik des Schaltschranks
xInRelease := "DB_TRO_TEST".TRO08,
arInOutJamEntr := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0054 von TRO06
stInOutJamEntr := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
arInOutJamFinger := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0055 vor TRO09
stInOutJamFinger := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
stInOutMachineState := #stInOutControlUnitCabinet, // TODO(E-Planung) - Schaltschrank
stInOutCognexInterface := #stCognexInterfaceDummy,
stInOutHMI := "DB_Interface_HMI".stTRO.TRO08,
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"], // TODO(E-Planung)
xOutStopper => "MB____", // TODO(E-Planung)
xOutVarioMotor => "MA____"); // TODO(E-Planung)
END_REGION
REGION TRO09 (1Sep) Sep 0055
// Anlagenkoordinate x/y: 8953 / 13510 mm
// Vorgaenger: TRO08
// Nachfolger: TRO07
// Einstufung: mittel
// Aufbau nach Template FB_ILS_MTRO_1Sep.scl.j2 (Referenz: doc/TRO_Katalog/scl_templates)
// 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.stInSenJam2 := "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; // braucht keine Vorfahrtsregelung
#TRO09(nInMainTroNo := "cMainTro____", // TODO(E-Planung)
xInSftyOk := "DB_InterfaceSafety".stFromSafety.EStopMain.Q, // TODO(E-Planung)
xInAllRdyToStart := TRUE,
xInCarouselRun := #fbCarousel____.xOutConveyorFullSpeed, // TODO(E-Planung) - nur am Kreisel, sonst Zeile loeschen
xInRelease := "DB_TRO_TEST".TRO09,
stInOutMachineState := #stInOutControlUnitCabinet, // TODO(E-Planung) - Schaltschrank
stInOutCognexInterface := #stCognexInterfaceDummy,
arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0055 von TRO08
stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0045 vor TRO07
stInOutJamExit2 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung)
xOutStopper1 => "MB____", // TODO(E-Planung)
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"], // TODO(E-Planung)
stInOutHMI := "DB_Interface_HMI".stTRO.TRO09);
END_REGION
END_FUNCTION_BLOCK