From 0115ef68b77572282758c465a08128a7bbc38cf7 Mon Sep 17 00:00:00 2001 From: Michael Stangl Date: Sun, 11 Oct 2026 22:44:02 +0200 Subject: [PATCH] TRO-JSON v4: Slots je TRO und Staubereiche (jamAreas) - model: Slot (separator/switch/scanner/drive + Rollen), JamArea (J, Eingang eines TRO mit allen Vorgaengern), derive_slots, derive_jam_areas; Schema sps_skel-tro-v4, v3-Dateien werden weiter gelesen - scl_context: ein JamEntr je eigenem Staubereich statt je Vorgaenger (wie UH01-UH05), Ausgaenge nennen den Staubereich des Nachfolgers - Golden Files neu erzeugt, Tests fuer Slots/Staubereiche, Doku nachgezogen Co-Authored-By: Claude Opus 5.5 --- CLAUDE.md | 5 +- doc/Klassenhierarchie.md | 15 +- doc/Konzept_Layout_Hardware_SCL.md | 22 ++- doc/Python_Scripts.md | 19 ++- doc/SCL_Templates.md | 4 +- lib/model.py | 150 +++++++++++++++++- lib/scl_context.py | 63 ++++++-- lib/scl_skeleton.py | 4 +- lib/scl_templates/FB_ILS_MTRO_1Sep1Swi.scl.j2 | 4 +- tests/fixtures/scl/HundM05_FB_Main.scl | 106 ++++++------- .../scl/HundM05_FB_Main_templates.scl | 106 ++++++------- tests/fixtures/scl/mubea_FB_Main.scl | 98 +++++------- .../fixtures/scl/mubea_FB_Main_templates.scl | 98 +++++------- tests/test_model.py | 62 ++++++++ 14 files changed, 489 insertions(+), 267 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 8312ab0..256b77f 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -180,8 +180,9 @@ and status: `doc/SCL_Templates.md`. Golden files in `tests/fixtures/scl/` pin th byte — rewrite them (`SKEL_UPDATE_GOLDEN=1`) only for a reviewed, intended change. 1. **`lib/tro_flow.py --json`** (implemented) — writes `_tro.json` (schema - `sps_skel-tro-v3`, `model.TroDocument`): TROs, system boundaries `SYSn`, connections with - their kind, findings. TRO-IDs come from `cfg/_tro_ids.ini` (`lib/tro_ids.py`): each + `sps_skel-tro-v4`, `model.TroDocument`): TROs with their hardware `slots`, system + boundaries `SYSn`, connections with their kind, `jamAreas` (one per TRO entry, key + `J`, all predecessors that feed it), findings. TRO-IDs come from `cfg/_tro_ids.ini` (`lib/tro_ids.py`): each TRO is found again by the position of its separators, so IDs survive a new layout export (TeileIds do not); `--renumber` renumbers along the material flow, `--ids` points another export of the same plant at the same file. See `doc/Python_Scripts.md` §4. diff --git a/doc/Klassenhierarchie.md b/doc/Klassenhierarchie.md index 5049ce8..c3fae05 100644 --- a/doc/Klassenhierarchie.md +++ b/doc/Klassenhierarchie.md @@ -70,8 +70,11 @@ lib/model.py [Instanz-Ebene / TRO-JSON] ├── TroBase(BaseModel) │ └─ definition() --> TroDefinition (gelesen aus tro_catalog, nicht gespeichert) │ └── DerivedTro(TroBase) [einzige echte Vererbung im Projekt] +│ └─ slots: list[Slot] (Stellen fuer die Hardwareplanung) ├── _Positioned(BaseModel) (Mixin: position {x,y,z}, describe_position) -│ ├── TroBase, TroCandidate +│ ├── TroBase, TroCandidate, JamArea +├── Slot(BaseModel) (separator1/switch1/scanner1/drive + Rollen) +├── JamArea(_Positioned) (Staubereich J: Eingang eines TRO) ├── Connection(BaseModel) (from/to/kind zwischen zwei TRO-IDs) ├── TroCandidate(_Positioned) (gemeldete Stelle, an der ein TRO erwartet wird) ├── Analysis(BaseModel) @@ -82,7 +85,8 @@ lib/model.py [Instanz-Ebene / TRO-JSON] ├─ tros: list[DerivedTro] ├─ boundaries: list[DerivedTro] ├─ connections: list[Connection] - └─ candidates: list[TroCandidate] + ├─ candidates: list[TroCandidate] + └─ jam_areas: list[JamArea] (JSON: jamAreas) lib/material_flow.py [CSV-Rohmodell -> Graph, @dataclass] ├── Element (1 CSV-Zeile) @@ -251,13 +255,14 @@ Kantenarten) → Prüfung gegen den Katalog. ### `TroDocument` — `lib/model.py` -**Wozu:** Die TRO-JSON `_tro.json` (Schema `sps_skel-tro-v3`) — die +**Wozu:** Die TRO-JSON `_tro.json` (Schema `sps_skel-tro-v4`) — die Schnittstelle zwischen Ableitung (`tro_flow --json`) und SCL-Ausgabe (`scl_skeleton`). Weil beide Seiten dieselbe Klasse benutzen, kann das Format nicht unbemerkt auseinanderlaufen. **Was passiert darin:** `from_analysis()` macht aus einer `Analysis` ein Dokument -(Kanten + Kantenarten → `Connection`-Liste). `to_json()` schreibt mit den +(Kanten + Kantenarten → `Connection`-Liste, je TRO die `slots` aus +`derive_slots()`, die Staubereiche aus `derive_jam_areas()`). `to_json()` schreibt mit den JSON-Aliasen, `from_json()` liest und prüft. `extra="forbid"` sorgt dafür, dass ein umbenannter oder falscher Schlüssel als Fehler auffällt statt still einen Standardwert zu bekommen; `scl_skeleton.main` meldet bei falschem `schema` @@ -616,7 +621,7 @@ stehen in der TIA-Gerätekonfiguration, nicht im Tag-Import). | Daten | SCL-Stelle (Beispiel) | Quelle | Bemerkung | |---|---|---|---| -| Anzahl Ein-/Ausgänge und Zuordnung Exit-Nr ↔ Nachbar | `arInOutJamEntr1`, `arInOutJamExit2..4` | L | je Vorgänger ein Eingang, je Nachfolger/Weichenabgang ein Ausgang (`SclJam`) | +| Anzahl Ein-/Ausgänge und Zuordnung Exit-Nr ↔ Nachbar | `arInOutJamEntr1`, `arInOutJamExit2..4` | L | ein Eingang je eigenem Staubereich (`TroDocument.jamAreas`, Kennung `J`; mehrere Vorgänger fahren in denselben ein), je Nachfolger/Weichenabgang ein Ausgang (`SclJam`) | | Gleicher Staubereich auf beiden Seiten einer Kante | Exit von A = Entr von B | L | Identität aus der Topologie | | Staubereichs-DB und -Index | `"DB_JamArea0102".stJam0102_1.arCarrier` / `.stData` | K (+ E) | Nummerierung der Staubereiche ist Projektvorgabe | | Stausensor je Ausgang | `stInSenJam2 := "DB_Inputs".Sensors["cInBG3243"]` | E | | diff --git a/doc/Konzept_Layout_Hardware_SCL.md b/doc/Konzept_Layout_Hardware_SCL.md index cbcbeff..3b4e530 100644 --- a/doc/Konzept_Layout_Hardware_SCL.md +++ b/doc/Konzept_Layout_Hardware_SCL.md @@ -88,6 +88,25 @@ Weichenventile (`doc/E-Planung_Bruecke.md`, "Offen"). JSON sie trägt und nicht erst das Rendern sie kennt. - Schema `sps_skel-tro-v4`. +**Stand (2026-10-11), erster Teil umgesetzt:** + +- `model.Slot` und `DerivedTro.slots`: `separator`, `switch`, + `scanner`, `drive` mit Rollen, Anzahl aus dem Katalog (`derive_slots`). + Weichen-Slots haben noch keine `layoutId`: `tro_flow` hält das Weichen- bzw. + Ausschleuselement nicht am TRO fest. +- `model.JamArea` und `TroDocument.jamAreas`: je Separator laut Katalog ein + Eingangs-Staubereich `J` mit allen Vorgängern, dem Host und der + Lage (`derive_jam_areas`). Bei 2Sep-Typen ist die Aufteilung der Vorgänger + auf die zwei Eingänge offen (Hinweis im Feld `note`); beim PinStore heißt + der Eingang vorläufig nach dem ersten Linien-Separator. +- `scl_context` liest die Staubereiche aus der JSON: **ein** `JamEntr` je + eigenem Staubereich statt je Vorgänger (Abweichung zu UH01–UH05 behoben), + jeder Ausgang nennt im Kommentar den Staubereich des Nachfolgers. Golden + Files neu erzeugt. Eine v3-Datei ohne `jamAreas` wird weiter gelesen. +- **Noch offen aus Umbau 1:** Layout-ID der Weichen, `xIsBorner`, Vorfahrt, + Host-Rolle, Längen (`tConvEmpty`, Staulängen), ``/`` für den + SCL-Namen der Staubereiche. + ### 2. Neues Skript `hw_import.py` (Stufe 2) - Liest TIA-Import (PLC Tags + Constants), EA-Liste, WSCAD-Import und optional @@ -335,7 +354,8 @@ unverändert. `--renumber`. Darauf bauen Overrides, Staubereiche und Zuordnungen auf. **Erledigt** (2026-10-11). 2. Slots und `jamAreas` in die TRO-JSON (Umbau 1), ein Eingangs-Staubereich je - TRO — ohne Slots hat die Zuordnung kein Ziel. + TRO — ohne Slots hat die Zuordnung kein Ziel. **Erster Teil erledigt** + (2026-10-11, siehe Umbau 1 "Stand"). 3. `hw_import` mit dem TIA-Import als erster Quelle. 4. `hw_assign` mit der räumlichen Logik aus `e_planning.py`; `e_planning.py` als Übergangshülle. diff --git a/doc/Python_Scripts.md b/doc/Python_Scripts.md index cae8568..dcc3c47 100644 --- a/doc/Python_Scripts.md +++ b/doc/Python_Scripts.md @@ -308,7 +308,7 @@ colors all come from `lib/tro_catalog.py` — nothing is hard-coded here. | `--doc` | — | off | Also write a Markdown report (`_tro_doc.md`) with the TRO list, connections, findings and the full type catalog. | | `--connect` | — | off | Also write the TRO topology as `_tro_connect.ini` (nodes, connections, system boundaries, predecessors/successors per TRO). Pure output, never read back. | | `--true-scale` | — | off | Only with `--use-cords`: draw to scale. By default empty stretches longer than 1500 mm between nodes are shortened (order and neighbourhood are kept). | -| `--json` | — | off | Also write the TRO-JSON `_tro.json` (schema `sps_skel-tro-v3`, model `TroDocument` in `lib/model.py`): TROs, system boundaries (`SYSn`), connections with their kind, findings. Input for `scl_skeleton.py`. | +| `--json` | — | off | Also write the TRO-JSON `_tro.json` (schema `sps_skel-tro-v4`, model `TroDocument` in `lib/model.py`): TROs with their `slots`, system boundaries (`SYSn`), connections with their kind, `jamAreas`, findings. Input for `scl_skeleton.py`. | | `--ids` | `DATEI` | `_tro_ids.ini` | ID file of the plant (name in `%SKEL_CFG%`, or a path). Use it to run another export of the same plant against the same IDs, e.g. `--file mubea_export.csv --ids mubea_tro_ids.ini`. | | `--renumber` | — | off | Number all TROs afresh along the material flow and rewrite the `[tro]` section of the ID file (early project phase). Renamed IDs are lost; other sections of the file are kept. | | `--id-tolerance` | `MM` (float) | `100.0` | Maximum distance between an ID-file entry and a separator of a TRO for the TRO to count as found again. | @@ -489,7 +489,8 @@ is missed. |---|---| | REGION order (material flow), instance list, FB type per TRO | sensor/actuator addresses (`cInBG`, `MB`, `MA`) | | number of separator / switch / scanner parameter blocks | separator and switch numbers, `cMainTro` | -| `nTo1Destinations` when the TRO has exactly one switch | jam areas (`DB_JamArea…`) | +| `nTo1Destinations` when the TRO has exactly one switch | jam-area DB names (`DB_JamArea…`) | +| number of jam entries (one per own jam area, not per predecessor) and which jam area each exit leads to (`J` in the comment) | | | destination list per switch exit (graph reachability) | times marked "pruefen" | | cross-reference to the layout parts (separator numbers, coordinate) | | @@ -666,8 +667,8 @@ TRO in a plant, and the whole TRO-JSON, look like. It imports only the catalog. ``` tro_catalog.py type level TroDefinition (items, FB block, color, symbol) ▲ get_tro() -model.py instance level TroBase ─► DerivedTro, Connection, TroCandidate, - Analysis, TroDocument +model.py instance level TroBase ─► DerivedTro, Slot, JamArea, Connection, + TroCandidate, Analysis, TroDocument ▲ tro_flow.py (writes) · scl_skeleton.py (reads) · tro_annotate.py (draws) ``` @@ -675,11 +676,13 @@ tro_flow.py (writes) · scl_skeleton.py (reads) · tro_annotate.py (draws) | Class | What it is | |---|---| | `TroBase` | Core of every TRO: `id`, `type`, `confidence`, `separators`, `predecessors`, `successors`, `position` (`{x,y,z}` in JSON). `definition()`, `fb_block` (JSON `fbType`) and `items` are **read from the catalog** on every access, never stored — so they follow a type change and cannot go stale. | -| `DerivedTro` | `TroBase` + what `tro_flow.py` knows from the derivation: `label`, `hosts`, `scanners`, `reason`, `colocated`, `positionFrom`, `positionPoints`. Also used for the system boundaries `SYSn`. | +| `DerivedTro` | `TroBase` + what `tro_flow.py` knows from the derivation: `label`, `hosts`, `scanners`, `reason`, `colocated`, `positionFrom`, `positionPoints`, `slots`. Also used for the system boundaries `SYSn` (no slots). | +| `Slot` | A place on a TRO where hardware belongs: `slot` (`separator1`, `switch1`, `scanner1`, `drive` — the stable key together with the TRO-ID), `layoutId` (TeileId in the current export, for tracing only; empty for switches, whose element `tro_flow` does not keep yet), `roles` the hardware planning must fill (`sensor`, `stopper`, `jamSensor?` …; `?` = optional). Built by `derive_slots()` from the catalog type. | +| `JamArea` | A jam area = the queue in front of a separator, the entry of exactly one TRO: `id` (`J`, e.g. `J0042`), `tro`, `entry` (1, 2 for 2Sep types), `separator`, `host`, `predecessors` (all TROs/stations feeding it — merges have several), `note`, `position`. Built by `derive_jam_areas()`; the SCL name `"DB_JamArea".stJam_` needs the conveyor number from the hardware planning and is not stored. | | `Connection` | Directed edge `from` → `to` with its `kind` (transfer / umlauf / weiche / unbestimmt / normal / bahn). | | `TroCandidate` | A spot reported in a review where a TRO is **expected** but not derived (formerly `OpenPoint`): `name`, `type` (the expected catalog type), `position`, `belongsTo` (the TRO that holds the part today), `note`. Not a TRO — no separators, no connections, no SCL. Built by `tro_overrides.py` from `[.openpoint.]`; empty in the TRO-JSON for now. | | `Analysis` | Working result of `tro_flow.analyse_tros` (moved here from `tro_flow.py`). | -| `TroDocument` | The TRO-JSON: `schema` (`sps_skel-tro-v3`), `source`, `created`, `note`, `tros`, `boundaries`, `connections`, `candidates`, `findings`. `from_analysis()`, `to_json()`, `from_json()`. | +| `TroDocument` | The TRO-JSON: `schema` (`sps_skel-tro-v4`), `source`, `created`, `note`, `tros`, `boundaries`, `connections`, `candidates`, `jamAreas`, `findings`. `from_analysis()` (derives slots and jam areas), `to_json()`, `from_json()`, `jam_areas_or_derived()` (a v3 file without `jamAreas` still renders). | `TroBase` and `TroCandidate` share the `position` handling (JSON `{x,y,z}`, `x`/`y`/`z`, `describe_position()`) through the private mixin `_Positioned`. @@ -691,7 +694,9 @@ All models validate on creation and assignment and reject unknown keys (`extra="forbid"`). JSON keys keep the camelCase names of the TRO-JSON (`id`, `type`, `fbType`, `belongsTo` …); Python code uses the field names (`tro_id`, `type_name`, `fb_block`, `belongs_to`) — both are accepted on input. -Schema v3 differs from v2 only in `candidates` replacing `openPoints`. +Schema v3 differs from v2 only in `candidates` replacing `openPoints`; v4 adds +`slots` per TRO and `jamAreas`. A v3 file still reads (both default to empty; +`scl_skeleton` then derives the jam areas while rendering). Tests: `tests/test_model.py` (round trip, catalog-backed fields, rejection of wrong keys/items, SCL rendering from a document) — run with diff --git a/doc/SCL_Templates.md b/doc/SCL_Templates.md index 6aca04c..991d579 100644 --- a/doc/SCL_Templates.md +++ b/doc/SCL_Templates.md @@ -12,7 +12,7 @@ It is written so that it fits the existing main path unchanged: ``` export.csv ─► tro_flow --json ─► _tro.json ─► scl_skeleton ─► _FB_Main.scl (dxfmakros (derive) (TroDocument, (render) (skeleton with - EXPORTCSV) sps_skel-tro-v3) TODO(E-Planung)) + EXPORTCSV) sps_skel-tro-v4) TODO(E-Planung)) ``` Nothing upstream of `scl_skeleton` changes. The TRO-JSON stays the only input, and the @@ -451,7 +451,7 @@ bin\scl_skeleton.bat --json _tro.json [--templates [DIR]] [--strict] [--na | File | Where | Who writes it | |---|---|---| | `.csv` | `%SKEL_DATA%` | dxfmakros `EXPORTCSV` | -| `_tro.json` | `%SKEL_RESULTS%` | `tro_flow --json` (schema `sps_skel-tro-v3`) | +| `_tro.json` | `%SKEL_RESULTS%` | `tro_flow --json` (schema `sps_skel-tro-v4`) | | `scl_naming.ini`, `_scl_naming.ini` | `%SKEL_CFG%` | you, once per project (optional) | | `lib/scl_templates/*.scl.j2` | repo | maintained with the PLC engineers | diff --git a/lib/model.py b/lib/model.py index 89ff30a..94080bd 100644 --- a/lib/model.py +++ b/lib/model.py @@ -21,6 +21,11 @@ Klassen: Connection eine gerichtete Verbindung zwischen zwei TROs/Stationen TroCandidate eine im Review gemeldete Stelle, an der ein TRO erwartet wird, die aber (noch) keiner ist + Slot eine Stelle eines TRO, an die Hardware gehoert (Separator, + Weiche, Scanner, Antrieb) mit den Rollen, die die + Hardwareplanung dort fuellen muss + JamArea ein Staubereich: Eingang genau eines TRO (je Separator + laut Katalog), mit allen Vorgaengern, die dort einfahren Analysis Arbeitsergebnis von tro_flow.analyse_tros TroDocument die TRO-JSON (_tro.json): von tro_flow --json geschrieben, von scl_skeleton gelesen und geprueft @@ -47,22 +52,28 @@ from pydantic import ( model_validator, ) -from tro_catalog import TroDefinition, get_tro +from tro_catalog import TroDefinition, TroItem, get_tro __all__ = [ "SCHEMA", "TroBase", + "Slot", + "JamArea", "DerivedTro", "Connection", "TroCandidate", "Analysis", "TroDocument", + "derive_slots", + "derive_jam_areas", ] # Kennung der TRO-JSON. v1 war die Ausgabe von tro_extract (aus der Zeichnung), # v2 die von tro_flow --json (aus dem CSV, ueber dieses Modell), v3 wie v2 mit -# `candidates` statt `openPoints`. -SCHEMA = "sps_skel-tro-v3" +# `candidates` statt `openPoints`, v4 wie v3 mit `slots` je TRO und `jamAreas`. +# Eine v3-Datei liest sich weiter (die neuen Felder fehlen dann und werden beim +# Rendern abgeleitet, siehe TroDocument.jam_areas_or_derived). +SCHEMA = "sps_skel-tro-v4" # Gemeinsame Einstellungen: Pruefung bei Erzeugung und Zuweisung, unbekannte # Schluessel sind ein Fehler (ein umbenannter JSON-Schluessel faellt auf statt @@ -191,6 +202,50 @@ class TroBase(_Positioned): return data +class Slot(BaseModel): + """ + Eine Stelle eines TRO, an die Hardware gehoert (Konzept Umbau 1). + + ``slot`` ist der stabile Schluessel innerhalb des TRO (``separator1``, + ``switch1``, ``scanner1``, ``drive``); zusammen mit der TRO-ID adressiert er + die Zuordnung der Hardwareplanung. ``layout_id`` ist die TeileId des + Bauteils im aktuellen Export - nur zur Nachverfolgung, nicht stabil ("", + wenn das Bauteil im Layout nicht bekannt ist). Rollen mit ``?`` sind + optional: fehlt das Geraet, wird der zugehoerige xPlugged*-Schalter FALSE. + """ + + model_config = _CONFIG + + slot: str + layout_id: str = Field(default="", alias="layoutId") + roles: list[str] = Field(default_factory=list) + + +class JamArea(_Positioned): + """ + Ein Staubereich: die Warteschlange vor einem Separator, Eingang genau eines + TRO (``tro``, Eingang Nummer ``entry``). + + Kennung ``J`` (Mubea: Sep1024 -> J1024). Mehrere Vorgaenger + koennen in denselben Staubereich einfahren (Zusammenfuehrung); deren + Ausgang zeigt dann auf diesen Staubereich. Der SCL-Name + ``"DB_JamArea".stJam_`` (Standard UH01-UH05) braucht die + Foerderernummer aus der Hardwareplanung und steht deshalb nicht hier. + """ + + model_config = _CONFIG + + jam_id: str = Field(alias="id") + tro: str + entry: int = 1 + separator: str = "" + # tragender Foerderer (erster Host des TRO im Layout) + host: str = "" + predecessors: list[str] = Field(default_factory=list) + note: str = "" + position: tuple[float, float, float] | None = None + + class DerivedTro(TroBase): """ Ein von tro_flow aus dem CSV abgeleiteter TRO (oder eine Systemgrenze). @@ -207,6 +262,8 @@ class DerivedTro(TroBase): # Mittelpunkt der Bauteile, aus denen dieser TRO gebildet wurde position_from: str = Field(default="", alias="positionFrom") position_points: int = Field(default=0, alias="positionPoints") + # Stellen fuer die Hardwareplanung (derive_slots); leer bei Systemgrenzen + slots: list[Slot] = Field(default_factory=list) @property def connected(self) -> bool: @@ -288,16 +345,23 @@ class TroDocument(BaseModel): boundaries: list[DerivedTro] = Field(default_factory=list) connections: list[Connection] = Field(default_factory=list) candidates: list[TroCandidate] = Field(default_factory=list) + jam_areas: list[JamArea] = Field(default_factory=list, alias="jamAreas") findings: list[str] = Field(default_factory=list) @classmethod def from_analysis(cls, analysis: Analysis, source: str, note: str = "") -> TroDocument: - """Dokument aus dem Ergebnis von tro_flow.analyse_tros bilden.""" + """Dokument aus dem Ergebnis von tro_flow.analyse_tros bilden. + + Slots und Staubereiche werden hier abgeleitet, damit die JSON sie + traegt und nicht erst das Rendern sie kennt. + """ + tros = [t.model_copy(update={"slots": derive_slots(t)}) for t in analysis.tros] return cls( source=source, note=note, - tros=analysis.tros, + tros=tros, boundaries=analysis.boundaries, + jam_areas=derive_jam_areas(tros), connections=[ Connection(src=src, dst=dst, kind=analysis.edge_kinds.get((src, dst), "")) for src, dst in analysis.edges @@ -310,6 +374,10 @@ class TroDocument(BaseModel): """JSON-Text einlesen und pruefen (pydantic.ValidationError bei Fehlern).""" return cls.model_validate_json(text) + def jam_areas_or_derived(self) -> list[JamArea]: + """jamAreas aus der Datei; bei einer v3-Datei (ohne jamAreas) abgeleitet.""" + return self.jam_areas or derive_jam_areas(self.tros) + def to_json(self) -> str: """Als JSON-Text mit den Schluesseln der TRO-JSON (id, type, fbType ...).""" return self.model_dump_json(by_alias=True, indent=2) + "\n" @@ -319,3 +387,75 @@ class TroDocument(BaseModel): if tro.tro_id == tro_id: return tro return None + + +# --------------------------------------------------------------------------- +# Ableitungen aus Katalogtyp und Topologie +# --------------------------------------------------------------------------- + +# Rollen je Slot-Art (doc/Konzept_Layout_Hardware_SCL.md, Umbau 1); "?" = optional +_SEPARATOR_ROLES = ("sensor", "stopper", "jamSensor?", "partSensor?") +_SWITCH_ROLES = ("valve", "exitSensor?") +_SCANNER_ROLES = ("reader",) +_DRIVE_ROLES = ("motor", "motorProtection", "senCarrInPos", "senFinger", + "senLastPos", "senJam") + + +def _at(values: list[str], index: int) -> str: + return values[index] if index < len(values) else "" + + +def derive_slots(tro: DerivedTro) -> list[Slot]: + """Slots eines TRO: Anzahl aus dem Katalog, Layout-ID aus dem TRO. + + Weichen tragen noch keine Layout-ID - tro_flow speichert das Weichen- + bzw. Ausschleuselement heute nicht am TRO. + """ + items = tro.items + slots: list[Slot] = [] + for i in range(items.get(TroItem.SEPARATOR, 0)): + slots.append(Slot(slot=f"separator{i + 1}", layout_id=_at(tro.separators, i), + roles=list(_SEPARATOR_ROLES))) + for i in range(items.get(TroItem.SWITCH, 0)): + slots.append(Slot(slot=f"switch{i + 1}", roles=list(_SWITCH_ROLES))) + for i in range(items.get(TroItem.SCANNER, 0)): + slots.append(Slot(slot=f"scanner{i + 1}", layout_id=_at(tro.scanners, i), + roles=list(_SCANNER_ROLES))) + if items.get(TroItem.VARIO_DRIVE): + slots.append(Slot(slot="drive", layout_id=_at(tro.hosts, 0), + roles=list(_DRIVE_ROLES))) + return slots + + +def derive_jam_areas(tros: list[DerivedTro]) -> list[JamArea]: + """Staubereiche: je Separator laut Katalog ein Eingang des TRO. + + Kennung J; fehlt der Separator im Layout, J_. Alle + Vorgaenger fahren in den ersten Eingang ein - bei zwei Eingaengen + (2Sep-Typen) ist die Aufteilung aus dem Layout nicht ableitbar und als + Hinweis vermerkt. + """ + areas: list[JamArea] = [] + for tro in tros: + n_entries = max(1, tro.items.get(TroItem.SEPARATOR, 1)) + if n_entries > 1 and tro.predecessors: + note = "Aufteilung der Vorgaenger auf die Eingaenge offen" + elif tro.items.get(TroItem.STORAGE_LINE): + # Die Separatoren eines Speichers sitzen auf den Lagerlinien; der + # Eingang liegt davor und hat im Layout keinen eigenen Separator. + note = "Eingang des Speichers - Kennung vorlaeufig nach erstem Linien-Separator" + else: + note = "" + for n in range(1, n_entries + 1): + sep = _at(tro.separators, n - 1) + areas.append(JamArea( + jam_id=f"J{sep}" if sep else f"J{tro.tro_id}_{n}", + tro=tro.tro_id, + entry=n, + separator=sep, + host=_at(tro.hosts, 0), + predecessors=list(tro.predecessors) if n == 1 else [], + note=note, + position=tro.position if n == 1 else None, + )) + return areas diff --git a/lib/scl_context.py b/lib/scl_context.py index fb0be7f..79b37e6 100644 --- a/lib/scl_context.py +++ b/lib/scl_context.py @@ -32,7 +32,7 @@ from typing import TYPE_CHECKING from pydantic import BaseModel, ConfigDict, Field -from model import TroBase, TroDocument +from model import JamArea, TroBase, TroDocument from tro_catalog import TroItem if TYPE_CHECKING: @@ -132,17 +132,29 @@ class SclScanner(BaseModel): class SclJam(BaseModel): - """Ein Staubereich am Ein- oder Ausgang (JamEntr / JamExit).""" + """Ein Staubereich am Ein- oder Ausgang (JamEntr / JamExit). + + Ein Eingang ist ein Staubereich des TRO selbst (TroDocument.jamAreas), ein + Ausgang der Eingangs-Staubereich des Nachfolgers. + """ model_config = _CONFIG n: int - # Nachbar als Text fuer den Kommentar, SYSn als Station markiert + # Kennung aus der TRO-JSON (J); "" am Ausgang zu einer Station + jam_id: str = "" + # Eingang: die Vorgaenger, Ausgang: der Nachfolger - als Text fuer den + # Kommentar, SYSn als Station markiert neighbour: str db: SclName # Stausensor des Ausgangs (stInSenJam); None an Eingaengen sensor: SclName | None = None + @property + def title(self) -> str: + """Fuer den Kommentar: 'Staubereich J0003' (ohne Kennung nur 'Staubereich').""" + return f"Staubereich {self.jam_id}" if self.jam_id else "Staubereich" + class SclTro(BaseModel): """Alles, was eine REGION fuer einen TRO braucht.""" @@ -314,14 +326,38 @@ def _separator(i: int, layout: str, eplan: EplanDocument | None) -> SclSeparator ) +def _entries(tro: TroBase, eigene: list[JamArea], + alle: dict[str, TroBase], jam_db: str) -> list[SclJam]: + """Ein JamEntr je eigenem Staubereich - nicht je Vorgaenger: mehrere + Vorgaenger fahren in denselben Staubereich ein (Referenzen UH01-UH05).""" + eingaenge = [] + for area in eigene: + von = ", ".join(_nachbar(v, alle) for v in area.predecessors) or "-" + if area.note: + von = f"{von} ({area.note})" + eingaenge.append(SclJam(n=area.entry, jam_id=area.jam_id, + neighbour=von, db=_offen(jam_db))) + return eingaenge + + +def _exit_area(tro_id: str, nach: str, + bereiche: dict[str, list[JamArea]]) -> str: + """Kennung des Staubereichs, in den tro_id beim Nachfolger einfaehrt.""" + ziel = bereiche.get(nach, []) + passend = [a for a in ziel if tro_id in a.predecessors] or ziel + return passend[0].jam_id if passend else "" + + def _tro_context(tro: TroBase, alle: dict[str, TroBase], - eplan: EplanDocument | None = None) -> SclTro: + eplan: EplanDocument | None = None, + bereiche: dict[str, list[JamArea]] | None = None) -> SclTro: items = tro.items n_sep = items.get(TroItem.SEPARATOR, 1) n_swi = items.get(TroItem.SWITCH, 0) n_scan = items.get(TroItem.SCANNER, 0) tro_id = tro.tro_id jam_db = '"DB_JamArea____".stJam____' + bereiche = bereiche or {} separators = [ _separator(i, tro.separators[i - 1] if i <= len(tro.separators) else "?", eplan) @@ -371,15 +407,13 @@ def _tro_context(tro: TroBase, alle: dict[str, TroBase], for i in range(1, n_scan + 1) ], storage_lines=items.get(TroItem.STORAGE_LINE, 0), - # Staubereiche: je ankommender/abgehender Verbindung einer. Welche - # DB-Struktur dahintersteht, ist eine Planungsentscheidung - hier steht - # nur, WIE VIELE es sein muessen und zu welchem Nachbarn sie gehoeren. - jam_entries=[ - SclJam(n=n, neighbour=_nachbar(vor, alle), db=_offen(jam_db)) - for n, vor in enumerate(tro.predecessors, start=1) - ], + # Staubereiche aus der TRO-JSON (jamAreas): Eingaenge sind die eigenen, + # Ausgaenge die Eingaenge der Nachfolger. Der DB-Name braucht die + # Foerderernummer aus der Hardwareplanung und bleibt offen. + jam_entries=_entries(tro, bereiche.get(tro_id, []), alle, jam_db), jam_exits=[ - SclJam(n=n, neighbour=_nachbar(nach, alle), db=_offen(jam_db), + SclJam(n=n, jam_id=_exit_area(tro_id, nach, bereiche), + neighbour=_nachbar(nach, alle), db=_offen(jam_db), sensor=_offen("cInBG____")) for n, nach in enumerate(tro.successors, start=2) ], @@ -406,12 +440,15 @@ def build_context(document: TroDocument, source: str, start_id: str = "", alle Namen offen und die Ausgabe ist die bisherige. """ alle = {t.tro_id: t for t in document.tros} + bereiche: dict[str, list[JamArea]] = {} + for area in document.jam_areas_or_derived(): + bereiche.setdefault(area.tro, []).append(area) geordnet, startgrund = flow_order(document.tros, start_id) return SclFile( source=source, created=created or datetime.now().strftime("%Y-%m-%d %H:%M"), start_reason=startgrund, - tros=[_tro_context(t, alle, eplan) for t in geordnet], + tros=[_tro_context(t, alle, eplan, bereiche) for t in geordnet], eplan_source=(f"{eplan.eplan_file} (Zuordnung vom {eplan.created})" if eplan is not None else ""), ) diff --git a/lib/scl_skeleton.py b/lib/scl_skeleton.py index e77be31..3831335 100644 --- a/lib/scl_skeleton.py +++ b/lib/scl_skeleton.py @@ -221,11 +221,11 @@ def emit_call(add, tro: SclTro) -> None: for jam in tro.jam_entries: zeilen.append((f"arInOutJamEntr{jam.n} := {jam.db.value}.arCarrier", - offen(jam.db, f"Staubereich von {jam.neighbour}"))) + offen(jam.db, f"{jam.title} von {jam.neighbour}"))) zeilen.append((f"stInOutJamEntr{jam.n} := {jam.db.value}.stData", "")) for jam in tro.jam_exits: zeilen.append((f"arInOutJamExit{jam.n} := {jam.db.value}.arCarrier", - offen(jam.db, f"Staubereich nach {jam.neighbour}"))) + offen(jam.db, f"{jam.title} vor {jam.neighbour}"))) zeilen.append((f"stInOutJamExit{jam.n} := {jam.db.value}.stData", "")) for s in tro.separators: diff --git a/lib/scl_templates/FB_ILS_MTRO_1Sep1Swi.scl.j2 b/lib/scl_templates/FB_ILS_MTRO_1Sep1Swi.scl.j2 index 5e550ce..6f6fe93 100644 --- a/lib/scl_templates/FB_ILS_MTRO_1Sep1Swi.scl.j2 +++ b/lib/scl_templates/FB_ILS_MTRO_1Sep1Swi.scl.j2 @@ -42,11 +42,11 @@ REGION {{ t.region_title }} {% set _ = z.append(("stInOutMachineState := " ~ t.machine_state.value, m.note(t.machine_state, "Schaltschrank"))) %} {% set _ = z.append(("stInOutCognexInterface := #stCognexInterfaceDummy", "")) %} {% for j in t.jam_entries %} -{% set _ = z.append(("arInOutJamEntr" ~ j.n ~ " := " ~ j.db.value ~ ".arCarrier", m.note(j.db, "Staubereich von " ~ j.neighbour))) %} +{% set _ = z.append(("arInOutJamEntr" ~ j.n ~ " := " ~ j.db.value ~ ".arCarrier", m.note(j.db, j.title ~ " von " ~ j.neighbour))) %} {% set _ = z.append(("stInOutJamEntr" ~ j.n ~ " := " ~ j.db.value ~ ".stData", m.note(j.db))) %} {% endfor %} {% for j in t.jam_exits %} -{% set _ = z.append(("arInOutJamExit" ~ j.n ~ " := " ~ j.db.value ~ ".arCarrier", m.note(j.db, "Staubereich nach " ~ j.neighbour))) %} +{% set _ = z.append(("arInOutJamExit" ~ j.n ~ " := " ~ j.db.value ~ ".arCarrier", m.note(j.db, j.title ~ " vor " ~ j.neighbour))) %} {% set _ = z.append(("stInOutJamExit" ~ j.n ~ " := " ~ j.db.value ~ ".stData", m.note(j.db))) %} {% endfor %} {% set _ = z.append(('stInOutHMI := "DB_Interface_HMI".stTRO.' ~ t.id, "")) %} diff --git a/tests/fixtures/scl/HundM05_FB_Main.scl b/tests/fixtures/scl/HundM05_FB_Main.scl index 7921a3d..c602753 100644 --- a/tests/fixtures/scl/HundM05_FB_Main.scl +++ b/tests/fixtures/scl/HundM05_FB_Main.scl @@ -72,13 +72,9 @@ REGION TRO20 (1Sep) Sep 0007 xInRelease := "DB_TRO_TEST".TRO20, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von SYS1 (Station, kein TRO) + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0007 von SYS1 (Station, kein TRO), SYS2 (Station, kein TRO), TRO19 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 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0008 vor TRO01 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO20, @@ -122,11 +118,11 @@ REGION TRO01 (1Sep1Swi) Sep 0008 xInRelease := "DB_TRO_TEST".TRO01, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO20 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0008 von TRO20 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO02 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0025 vor TRO02 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, - arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO06 + arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0010 vor TRO06 stInOutJamExit3 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) xOutSw1ExTo3 => "MB____", // TODO(E-Planung) @@ -183,9 +179,9 @@ REGION TRO02 (Vario) Sep 0025 xInAutomatic := #t_automatik, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO01 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0025 von TRO01 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO03 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0026 vor TRO03 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) xOutVarioMotor => "MA____", // TODO(E-Planung) @@ -230,13 +226,11 @@ REGION TRO06 (1Sep1Swi) Sep 0010 xInRelease := "DB_TRO_TEST".TRO06, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO01 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0010 von TRO01, TRO05 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 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0031 vor TRO07 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, - arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO09 + arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0012 vor TRO09 stInOutJamExit3 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) xOutSw1ExTo3 => "MB____", // TODO(E-Planung) @@ -277,9 +271,9 @@ REGION TRO03 (1Sep) Sep 0026 xInRelease := "DB_TRO_TEST".TRO03, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO02 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0026 von TRO02 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO04 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0027 vor TRO04 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO03, @@ -329,9 +323,9 @@ REGION TRO07 (Vario) Sep 0031 xInAutomatic := #t_automatik, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO06 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0031 von TRO06 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO08 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0032 vor TRO08 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) xOutVarioMotor => "MA____", // TODO(E-Planung) @@ -376,13 +370,11 @@ REGION TRO09 (1Sep1Swi) Sep 0012 xInRelease := "DB_TRO_TEST".TRO09, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO06 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0012 von TRO06, TRO08 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 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0035 vor TRO10 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, - arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO12 + arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0014 vor TRO12 stInOutJamExit3 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) xOutSw1ExTo3 => "MB____", // TODO(E-Planung) @@ -439,9 +431,9 @@ REGION TRO04 (Vario) Sep 0027 xInAutomatic := #t_automatik, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO03 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0027 von TRO03 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO05 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0028 vor TRO05 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) xOutVarioMotor => "MA____", // TODO(E-Planung) @@ -476,9 +468,9 @@ REGION TRO08 (1Sep) Sep 0032 xInRelease := "DB_TRO_TEST".TRO08, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO07 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0032 von TRO07 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO09 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0012 vor TRO09 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO08, @@ -528,9 +520,9 @@ REGION TRO10 (Vario) Sep 0035 xInAutomatic := #t_automatik, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO09 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0035 von TRO09 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO11 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0036 vor TRO11 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) xOutVarioMotor => "MA____", // TODO(E-Planung) @@ -575,13 +567,11 @@ REGION TRO12 (1Sep1Swi) Sep 0014 xInRelease := "DB_TRO_TEST".TRO12, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO09 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0014 von TRO09, TRO11 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 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0039 vor TRO13 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, - arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO15 + arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0016 vor TRO15 stInOutJamExit3 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) xOutSw1ExTo3 => "MB____", // TODO(E-Planung) @@ -622,9 +612,9 @@ REGION TRO05 (1Sep) Sep 0028 xInRelease := "DB_TRO_TEST".TRO05, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO04 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0028 von TRO04 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO06 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0010 vor TRO06 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO05, @@ -658,9 +648,9 @@ REGION TRO11 (1Sep) Sep 0036 xInRelease := "DB_TRO_TEST".TRO11, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO10 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0036 von TRO10 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO12 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0014 vor TRO12 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO11, @@ -710,9 +700,9 @@ REGION TRO13 (Vario) Sep 0039 xInAutomatic := #t_automatik, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO12 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0039 von TRO12 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO14 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0040 vor TRO14 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) xOutVarioMotor => "MA____", // TODO(E-Planung) @@ -757,13 +747,11 @@ REGION TRO15 (1Sep1Swi) Sep 0016 xInRelease := "DB_TRO_TEST".TRO15, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO12 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0016 von TRO12, TRO14 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 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0018 vor TRO16 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, - arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO17 + arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0043 vor TRO17 stInOutJamExit3 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) xOutSw1ExTo3 => "MB____", // TODO(E-Planung) @@ -804,9 +792,9 @@ REGION TRO14 (1Sep) Sep 0040 xInRelease := "DB_TRO_TEST".TRO14, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO13 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0040 von TRO13 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO15 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0016 vor TRO15 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO14, @@ -840,11 +828,9 @@ REGION TRO16 (1Sep) Sep 0018 xInRelease := "DB_TRO_TEST".TRO16, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO15 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0018 von TRO15, TRO18 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 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0020 vor TRO19 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO16, @@ -894,9 +880,9 @@ REGION TRO17 (Vario) Sep 0043 xInAutomatic := #t_automatik, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO15 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0043 von TRO15 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO18 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0044 vor TRO18 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) xOutVarioMotor => "MA____", // TODO(E-Planung) @@ -931,11 +917,11 @@ REGION TRO19 (1Sep) Sep 0020 xInRelease := "DB_TRO_TEST".TRO19, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO16 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0020 von TRO16 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach SYS3 (Station, kein TRO) + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich vor SYS3 (Station, kein TRO) stInOutJamExit2 := "DB_JamArea____".stJam____.stData, - arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO20 + arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0007 vor TRO20 stInOutJamExit3 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO19, @@ -969,9 +955,9 @@ REGION TRO18 (1Sep) Sep 0044 xInRelease := "DB_TRO_TEST".TRO18, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO17 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0044 von TRO17 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO16 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0018 vor TRO16 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO18, diff --git a/tests/fixtures/scl/HundM05_FB_Main_templates.scl b/tests/fixtures/scl/HundM05_FB_Main_templates.scl index 8eaf49b..9a459bf 100644 --- a/tests/fixtures/scl/HundM05_FB_Main_templates.scl +++ b/tests/fixtures/scl/HundM05_FB_Main_templates.scl @@ -75,13 +75,9 @@ REGION TRO20 (1Sep) Sep 0007 xInRelease := "DB_TRO_TEST".TRO20, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von SYS1 (Station, kein TRO) + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0007 von SYS1 (Station, kein TRO), SYS2 (Station, kein TRO), TRO19 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 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0008 vor TRO01 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO20, @@ -128,11 +124,11 @@ REGION TRO01 (1Sep1Swi) Sep 0008 xInRelease := TRUE, stInOutMachineState := #stInOutControlUnitCabinet, // TODO(E-Planung) - Schaltschrank stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO20 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0008 von TRO20 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung) - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO02 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0025 vor TRO02 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung) - arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO06 + arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0010 vor TRO06 stInOutJamExit3 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO01, nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"], // TODO(E-Planung) @@ -190,9 +186,9 @@ REGION TRO02 (Vario) Sep 0025 xInAutomatic := #t_automatik, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO01 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0025 von TRO01 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO03 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0026 vor TRO03 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) xOutVarioMotor => "MA____", // TODO(E-Planung) @@ -240,13 +236,11 @@ REGION TRO06 (1Sep1Swi) Sep 0010 xInRelease := TRUE, stInOutMachineState := #stInOutControlUnitCabinet, // TODO(E-Planung) - Schaltschrank stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO01 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0010 von TRO01, TRO05 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung) - arInOutJamEntr2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO05 - stInOutJamEntr2 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung) - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO07 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0031 vor TRO07 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung) - arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO09 + arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0012 vor TRO09 stInOutJamExit3 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO06, nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"], // TODO(E-Planung) @@ -288,9 +282,9 @@ REGION TRO03 (1Sep) Sep 0026 xInRelease := "DB_TRO_TEST".TRO03, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO02 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0026 von TRO02 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO04 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0027 vor TRO04 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO03, @@ -340,9 +334,9 @@ REGION TRO07 (Vario) Sep 0031 xInAutomatic := #t_automatik, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO06 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0031 von TRO06 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO08 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0032 vor TRO08 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) xOutVarioMotor => "MA____", // TODO(E-Planung) @@ -390,13 +384,11 @@ REGION TRO09 (1Sep1Swi) Sep 0012 xInRelease := TRUE, stInOutMachineState := #stInOutControlUnitCabinet, // TODO(E-Planung) - Schaltschrank stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO06 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0012 von TRO06, TRO08 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung) - arInOutJamEntr2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO08 - stInOutJamEntr2 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung) - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO10 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0035 vor TRO10 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung) - arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO12 + arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0014 vor TRO12 stInOutJamExit3 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO09, nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"], // TODO(E-Planung) @@ -454,9 +446,9 @@ REGION TRO04 (Vario) Sep 0027 xInAutomatic := #t_automatik, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO03 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0027 von TRO03 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO05 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0028 vor TRO05 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) xOutVarioMotor => "MA____", // TODO(E-Planung) @@ -491,9 +483,9 @@ REGION TRO08 (1Sep) Sep 0032 xInRelease := "DB_TRO_TEST".TRO08, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO07 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0032 von TRO07 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO09 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0012 vor TRO09 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO08, @@ -543,9 +535,9 @@ REGION TRO10 (Vario) Sep 0035 xInAutomatic := #t_automatik, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO09 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0035 von TRO09 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO11 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0036 vor TRO11 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) xOutVarioMotor => "MA____", // TODO(E-Planung) @@ -593,13 +585,11 @@ REGION TRO12 (1Sep1Swi) Sep 0014 xInRelease := TRUE, stInOutMachineState := #stInOutControlUnitCabinet, // TODO(E-Planung) - Schaltschrank stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO09 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0014 von TRO09, TRO11 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung) - arInOutJamEntr2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO11 - stInOutJamEntr2 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung) - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO13 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0039 vor TRO13 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung) - arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO15 + arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0016 vor TRO15 stInOutJamExit3 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO12, nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"], // TODO(E-Planung) @@ -641,9 +631,9 @@ REGION TRO05 (1Sep) Sep 0028 xInRelease := "DB_TRO_TEST".TRO05, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO04 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0028 von TRO04 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO06 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0010 vor TRO06 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO05, @@ -677,9 +667,9 @@ REGION TRO11 (1Sep) Sep 0036 xInRelease := "DB_TRO_TEST".TRO11, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO10 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0036 von TRO10 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO12 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0014 vor TRO12 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO11, @@ -729,9 +719,9 @@ REGION TRO13 (Vario) Sep 0039 xInAutomatic := #t_automatik, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO12 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0039 von TRO12 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO14 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0040 vor TRO14 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) xOutVarioMotor => "MA____", // TODO(E-Planung) @@ -779,13 +769,11 @@ REGION TRO15 (1Sep1Swi) Sep 0016 xInRelease := TRUE, stInOutMachineState := #stInOutControlUnitCabinet, // TODO(E-Planung) - Schaltschrank stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO12 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0016 von TRO12, TRO14 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung) - arInOutJamEntr2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO14 - stInOutJamEntr2 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung) - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO16 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0018 vor TRO16 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung) - arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO17 + arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0043 vor TRO17 stInOutJamExit3 := "DB_JamArea____".stJam____.stData, // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO15, nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro____"], // TODO(E-Planung) @@ -827,9 +815,9 @@ REGION TRO14 (1Sep) Sep 0040 xInRelease := "DB_TRO_TEST".TRO14, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO13 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0040 von TRO13 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO15 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0016 vor TRO15 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO14, @@ -863,11 +851,9 @@ REGION TRO16 (1Sep) Sep 0018 xInRelease := "DB_TRO_TEST".TRO16, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO15 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0018 von TRO15, TRO18 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 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0020 vor TRO19 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO16, @@ -917,9 +903,9 @@ REGION TRO17 (Vario) Sep 0043 xInAutomatic := #t_automatik, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO15 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0043 von TRO15 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO18 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0044 vor TRO18 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) xOutVarioMotor => "MA____", // TODO(E-Planung) @@ -954,11 +940,11 @@ REGION TRO19 (1Sep) Sep 0020 xInRelease := "DB_TRO_TEST".TRO19, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO16 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0020 von TRO16 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach SYS3 (Station, kein TRO) + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich vor SYS3 (Station, kein TRO) stInOutJamExit2 := "DB_JamArea____".stJam____.stData, - arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO20 + arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0007 vor TRO20 stInOutJamExit3 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO19, @@ -992,9 +978,9 @@ REGION TRO18 (1Sep) Sep 0044 xInRelease := "DB_TRO_TEST".TRO18, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO17 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0044 von TRO17 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO16 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0018 vor TRO16 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO18, diff --git a/tests/fixtures/scl/mubea_FB_Main.scl b/tests/fixtures/scl/mubea_FB_Main.scl index efd89fd..ee646f7 100644 --- a/tests/fixtures/scl/mubea_FB_Main.scl +++ b/tests/fixtures/scl/mubea_FB_Main.scl @@ -70,11 +70,9 @@ REGION TRO03 (1Sep) Sep 0042 xInRelease := "DB_TRO_TEST".TRO03, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von SYS1 (Station, kein TRO) + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0042 von SYS1 (Station, kein TRO), TRO04 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 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0044 vor TRO05 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO03, @@ -108,9 +106,9 @@ REGION TRO05 (1Sep) Sep 0044 xInRelease := "DB_TRO_TEST".TRO05, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO03 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0044 von TRO03 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO18 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0066 vor TRO18 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO05, @@ -150,13 +148,11 @@ REGION TRO18 (PinStore_Auto) Sep 0066, 0069, 0072, 0075, 0078, 0081, 0084, 0087, xInRelease := "DB_TRO_TEST".TRO18, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO05 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0066 von TRO05, TRO12 (Eingang des Speichers - Kennung vorlaeufig nach erstem Linien-Separator) 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 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0045 vor TRO07 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, - arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO10 + arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0005 vor TRO10 stInOutJamExit3 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO18, @@ -190,11 +186,9 @@ REGION TRO07 (1Sep) Sep 0045 xInRelease := "DB_TRO_TEST".TRO07, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO09 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0045 von TRO09, TRO18 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 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0043 vor TRO04 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO07, @@ -265,17 +259,15 @@ REGION TRO10 (2Sep2Swi) Sep 0005, 0036 xInRelease := "DB_TRO_TEST".TRO10, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO01 + 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 von TRO06 + arInOutJamEntr2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0036 von - (Aufteilung der Vorgaenger auf die Eingaenge offen) 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 + 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 nach TRO02 + 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 nach TRO11 + 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) @@ -322,9 +314,9 @@ REGION TRO04 (1Sep) Sep 0043 xInRelease := "DB_TRO_TEST".TRO04, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO07 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0043 von TRO07 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO03 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0042 vor TRO03 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO04, @@ -358,9 +350,9 @@ REGION TRO01 (1Sep) Sep 0040 xInRelease := "DB_TRO_TEST".TRO01, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO10 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0040 von TRO10 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO10 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0005 vor TRO10 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO01, @@ -394,13 +386,13 @@ REGION TRO02 (1Sep) Sep 0012 xInRelease := "DB_TRO_TEST".TRO02, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO10 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0012 von TRO10 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach SYS2 (Station, kein TRO) + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich vor SYS2 (Station, kein TRO) stInOutJamExit2 := "DB_JamArea____".stJam____.stData, - arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach SYS3 (Station, kein TRO) + arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich vor SYS3 (Station, kein TRO) stInOutJamExit3 := "DB_JamArea____".stJam____.stData, - arInOutJamExit4 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO13 + arInOutJamExit4 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0011 vor TRO13 stInOutJamExit4 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO02, @@ -450,9 +442,9 @@ REGION TRO11 (Vario) Sep 0058 xInAutomatic := #t_automatik, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO10 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0058 von TRO10 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO12 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0059 vor TRO12 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) xOutVarioMotor => "MA____", // TODO(E-Planung) @@ -497,11 +489,11 @@ REGION TRO13 (1Sep1Swi) Sep 0011 xInRelease := "DB_TRO_TEST".TRO13, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO02 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0011 von TRO02 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO16 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0062 vor TRO16 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, - arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO17 + arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0063 vor TRO17 stInOutJamExit3 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) xOutSw1ExTo3 => "MB____", // TODO(E-Planung) @@ -542,9 +534,9 @@ REGION TRO12 (1Sep) Sep 0059 xInRelease := "DB_TRO_TEST".TRO12, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO11 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0059 von TRO11 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO18 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0066 vor TRO18 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO12, @@ -594,9 +586,9 @@ REGION TRO16 (Vario) Sep 0062 xInAutomatic := #t_automatik, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO13 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0062 von TRO13 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO15 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0038 vor TRO15 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) xOutVarioMotor => "MA____", // TODO(E-Planung) @@ -631,11 +623,9 @@ REGION TRO17 (1Sep) Sep 0063 xInRelease := "DB_TRO_TEST".TRO17, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO13 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0063 von TRO13, TRO14 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 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0003 vor TRO06 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO17, @@ -669,9 +659,9 @@ REGION TRO15 (1Sep) Sep 0038 xInRelease := "DB_TRO_TEST".TRO15, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO16 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0038 von TRO16 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO14 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0037 vor TRO14 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO15, @@ -715,11 +705,11 @@ REGION TRO06 (1Sep1Swi) Sep 0003 xInRelease := "DB_TRO_TEST".TRO06, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO17 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0003 von TRO17 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO08 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0054 vor TRO08 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, - arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO10 + arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0005 vor TRO10 stInOutJamExit3 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) xOutSw1ExTo3 => "MB____", // TODO(E-Planung) @@ -760,9 +750,9 @@ REGION TRO14 (1Sep) Sep 0037 xInRelease := "DB_TRO_TEST".TRO14, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO15 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0037 von TRO15 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO17 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0063 vor TRO17 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO14, @@ -812,9 +802,9 @@ REGION TRO08 (Vario) Sep 0054 xInAutomatic := #t_automatik, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO06 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0054 von TRO06 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO09 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0055 vor TRO09 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) xOutVarioMotor => "MA____", // TODO(E-Planung) @@ -849,9 +839,9 @@ REGION TRO09 (1Sep) Sep 0055 xInRelease := "DB_TRO_TEST".TRO09, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO08 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0055 von TRO08 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO07 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0045 vor TRO07 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO09, diff --git a/tests/fixtures/scl/mubea_FB_Main_templates.scl b/tests/fixtures/scl/mubea_FB_Main_templates.scl index fa112bb..26f6e4b 100644 --- a/tests/fixtures/scl/mubea_FB_Main_templates.scl +++ b/tests/fixtures/scl/mubea_FB_Main_templates.scl @@ -73,11 +73,9 @@ REGION TRO03 (1Sep) Sep 0042 xInRelease := "DB_TRO_TEST".TRO03, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von SYS1 (Station, kein TRO) + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0042 von SYS1 (Station, kein TRO), TRO04 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 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0044 vor TRO05 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO03, @@ -111,9 +109,9 @@ REGION TRO05 (1Sep) Sep 0044 xInRelease := "DB_TRO_TEST".TRO05, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO03 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0044 von TRO03 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO18 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0066 vor TRO18 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO05, @@ -153,13 +151,11 @@ REGION TRO18 (PinStore_Auto) Sep 0066, 0069, 0072, 0075, 0078, 0081, 0084, 0087, xInRelease := "DB_TRO_TEST".TRO18, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO05 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0066 von TRO05, TRO12 (Eingang des Speichers - Kennung vorlaeufig nach erstem Linien-Separator) 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 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0045 vor TRO07 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, - arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO10 + arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0005 vor TRO10 stInOutJamExit3 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO18, @@ -193,11 +189,9 @@ REGION TRO07 (1Sep) Sep 0045 xInRelease := "DB_TRO_TEST".TRO07, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO09 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0045 von TRO09, TRO18 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 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0043 vor TRO04 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO07, @@ -268,17 +262,15 @@ REGION TRO10 (2Sep2Swi) Sep 0005, 0036 xInRelease := "DB_TRO_TEST".TRO10, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO01 + 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 von TRO06 + arInOutJamEntr2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0036 von - (Aufteilung der Vorgaenger auf die Eingaenge offen) 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 + 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 nach TRO02 + 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 nach TRO11 + 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) @@ -325,9 +317,9 @@ REGION TRO04 (1Sep) Sep 0043 xInRelease := "DB_TRO_TEST".TRO04, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO07 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0043 von TRO07 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO03 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0042 vor TRO03 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO04, @@ -361,9 +353,9 @@ REGION TRO01 (1Sep) Sep 0040 xInRelease := "DB_TRO_TEST".TRO01, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO10 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0040 von TRO10 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO10 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0005 vor TRO10 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO01, @@ -397,13 +389,13 @@ REGION TRO02 (1Sep) Sep 0012 xInRelease := "DB_TRO_TEST".TRO02, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO10 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0012 von TRO10 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach SYS2 (Station, kein TRO) + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich vor SYS2 (Station, kein TRO) stInOutJamExit2 := "DB_JamArea____".stJam____.stData, - arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach SYS3 (Station, kein TRO) + arInOutJamExit3 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich vor SYS3 (Station, kein TRO) stInOutJamExit3 := "DB_JamArea____".stJam____.stData, - arInOutJamExit4 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO13 + arInOutJamExit4 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0011 vor TRO13 stInOutJamExit4 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO02, @@ -453,9 +445,9 @@ REGION TRO11 (Vario) Sep 0058 xInAutomatic := #t_automatik, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO10 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0058 von TRO10 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO12 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0059 vor TRO12 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) xOutVarioMotor => "MA____", // TODO(E-Planung) @@ -503,11 +495,11 @@ REGION TRO13 (1Sep1Swi) Sep 0011 xInRelease := TRUE, stInOutMachineState := #stInOutControlUnitCabinet, // TODO(E-Planung) - Schaltschrank stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO02 + 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 nach TRO16 + 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 nach TRO17 + 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) @@ -549,9 +541,9 @@ REGION TRO12 (1Sep) Sep 0059 xInRelease := "DB_TRO_TEST".TRO12, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO11 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0059 von TRO11 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO18 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0066 vor TRO18 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO12, @@ -601,9 +593,9 @@ REGION TRO16 (Vario) Sep 0062 xInAutomatic := #t_automatik, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO13 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0062 von TRO13 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO15 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0038 vor TRO15 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) xOutVarioMotor => "MA____", // TODO(E-Planung) @@ -638,11 +630,9 @@ REGION TRO17 (1Sep) Sep 0063 xInRelease := "DB_TRO_TEST".TRO17, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO13 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0063 von TRO13, TRO14 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 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0003 vor TRO06 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO17, @@ -676,9 +666,9 @@ REGION TRO15 (1Sep) Sep 0038 xInRelease := "DB_TRO_TEST".TRO15, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO16 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0038 von TRO16 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO14 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0037 vor TRO14 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO15, @@ -725,11 +715,11 @@ REGION TRO06 (1Sep1Swi) Sep 0003 xInRelease := TRUE, stInOutMachineState := #stInOutControlUnitCabinet, // TODO(E-Planung) - Schaltschrank stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO17 + 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 nach TRO08 + 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 nach TRO10 + 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) @@ -771,9 +761,9 @@ REGION TRO14 (1Sep) Sep 0037 xInRelease := "DB_TRO_TEST".TRO14, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO15 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0037 von TRO15 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO17 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0063 vor TRO17 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO14, @@ -823,9 +813,9 @@ REGION TRO08 (Vario) Sep 0054 xInAutomatic := #t_automatik, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO06 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0054 von TRO06 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO09 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0055 vor TRO09 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) xOutVarioMotor => "MA____", // TODO(E-Planung) @@ -860,9 +850,9 @@ REGION TRO09 (1Sep) Sep 0055 xInRelease := "DB_TRO_TEST".TRO09, stInOutMachineState := #stInOutControlUnitCabinet, stInOutCognexInterface := #stCognexInterfaceDummy, - arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich von TRO08 + arInOutJamEntr1 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0055 von TRO08 stInOutJamEntr1 := "DB_JamArea____".stJam____.stData, - arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich nach TRO07 + arInOutJamExit2 := "DB_JamArea____".stJam____.arCarrier, // TODO(E-Planung) - Staubereich J0045 vor TRO07 stInOutJamExit2 := "DB_JamArea____".stJam____.stData, xOutStopper1 => "MB____", // TODO(E-Planung) stInOutHMI := "DB_Interface_HMI".stTRO.TRO09, diff --git a/tests/test_model.py b/tests/test_model.py index 6508830..c6174c4 100644 --- a/tests/test_model.py +++ b/tests/test_model.py @@ -136,3 +136,65 @@ def test_scl_skeleton_renders_from_document(document): # Systemgrenzen sind keine Instanzen assert "SYS1 :" not in scl assert "Anfang bei TRO01" in scl + + +# --------------------------------------------------------------------------- +# Schema v4: Slots und Staubereiche +# --------------------------------------------------------------------------- + +def test_slots_aus_katalog_und_layout(document): + weiche = document.by_id("TRO01") + assert [(s.slot, s.layout_id) for s in weiche.slots] == [ + ("separator1", "0040"), ("switch1", "")] + assert weiche.slots[0].roles == ["sensor", "stopper", "jamSensor?", "partSensor?"] + vario = document.by_id("TRO03") + assert [s.slot for s in vario.slots] == ["separator1", "drive"] + assert vario.slots[1].layout_id == "0001" # Host = angetriebene Strecke + # Systemgrenzen haben keine Slots + assert document.by_id("SYS1").slots == [] + + +def test_ein_staubereich_je_tro_eingang_nach_separator(document): + areas = {a.jam_id: a for a in document.jam_areas} + assert sorted(areas) == ["J0040", "J0041", "J0042"] + assert areas["J0040"].tro == "TRO01" + assert areas["J0040"].predecessors == ["SYS1"] + assert areas["J0040"].position == (1030.0, 4700.0, 1500.0) + assert areas["J0041"].predecessors == ["TRO01"] + + +def test_zusammenfuehrung_ein_staubereich_mehrere_vorgaenger(): + analysis = Analysis(tros=[ + _tro("TRO01", "1Sep", separators=["0001"], successors=["TRO03"]), + _tro("TRO02", "1Sep", separators=["0002"], successors=["TRO03"]), + _tro("TRO03", "1Sep", separators=["0003"], predecessors=["TRO01", "TRO02"]), + ]) + doc = TroDocument.from_analysis(analysis, source="t") + eingang = [a for a in doc.jam_areas if a.tro == "TRO03"] + assert [(a.jam_id, a.predecessors) for a in eingang] == [("J0003", ["TRO01", "TRO02"])] + + +def test_zwei_separatoren_zwei_eingaenge_aufteilung_offen(): + analysis = Analysis(tros=[ + _tro("TRO01", "2Sep2Swi", separators=["0005", "0036"], predecessors=["TRO09"]), + ]) + areas = TroDocument.from_analysis(analysis, source="t").jam_areas + assert [(a.jam_id, a.entry, a.predecessors) for a in areas] == [ + ("J0005", 1, ["TRO09"]), ("J0036", 2, [])] + assert all("offen" in a.note for a in areas) + + +def test_v4_round_trip_und_v3_ohne_jam_areas(document): + data = json.loads(document.to_json()) + assert data["schema"] == "sps_skel-tro-v4" + assert data["jamAreas"][0]["id"] == "J0040" + assert data["tros"][0]["slots"][0]["layoutId"] == "0040" + assert TroDocument.from_json(document.to_json()) == document + # v3-Datei: keine jamAreas/slots -> beim Rendern abgeleitet + del data["jamAreas"] + for tro in data["tros"]: + del tro["slots"] + data["schema"] = "sps_skel-tro-v3" + alt = TroDocument.from_json(json.dumps(data)) + assert alt.jam_areas == [] + assert [a.jam_id for a in alt.jam_areas_or_derived()] == ["J0040", "J0041", "J0042"]