Doku und erster Vorschlag aus dem Fortna Extrakt dazu
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
# BricsCAD-Symboldefinition — TRO-Block
|
||||
|
||||
## Zweck
|
||||
|
||||
Dieses Dokument beschreibt ein BricsCAD-Blocksymbol ("TRO-Symbol"), das im Layoutplan der Förderanlage platziert wird und dessen Attribute per DXF/Skript-Export in ein TRO-Objekt der [JSON-Layout-Konfiguration](Json_Layout-Konzept.md) überführt werden können (Abschnitt "4. TROs").
|
||||
|
||||
Das Symbol bildet **nur die Daten ab, die sich pro physischer Instanz unterscheiden und nicht aus Nachbarschaft/Zeichnung oder aus dem Typ ableitbar sind**. Timing-Werte (`trailingTime`, `handlingTime`, `senFree`, `senWait`, `jamTime`, ...) werden bewusst **nicht** am Symbol gepflegt, sondern beim JSON-Export aus einer Default-Tabelle pro `TRO_TYPE` gezogen (siehe [Kapitel "Defaults je Typ"](#defaults-je-typ-timing)). Für Sonderfälle steht ein optionales Override-Attribut zur Verfügung.
|
||||
|
||||
Ebenfalls nicht am Symbol gepflegt: **Position/Rotation** (kommt aus der Blockeinfügung) und **Connections/JamAreas** (`entry`/`exit`, kommen aus der grafischen Topologie — welche Verbindungslinie an welchem Anschlusspunkt des Symbols endet).
|
||||
|
||||
---
|
||||
|
||||
## Attributliste (ATTDEF)
|
||||
|
||||
### Gruppe 1 — Kern / Identifikation (Pflicht, bei jedem Typ)
|
||||
|
||||
| Tag | Prompt (DE) | Beispielwert | Default | Typ | Bemerkung |
|
||||
|---|---|---|---|---|---|
|
||||
| `TRO_ID` | TRO-ID | `TRO107` | — | Text | Eindeutig; Basis für `mainTroNo` (`cMainTro107`), `separator.no` (`cSep107.1`), `hmi`-Pfad |
|
||||
| `TRO_TYPE` | TRO-Typ | `1Sep1Swi` | — | Liste (Enum) | Steuert `fbType` + Timing-Defaults; siehe [TRO-Typen-Tabelle](TRO_Typen.md) |
|
||||
| `CONTROL_UNIT` | Steuerkreis | `OF1` | `OF1` | Liste (Enum) | Sicherheitszone/Schaltschrank |
|
||||
| `COMMENT` | Bezeichnung | `Weiche Boom 1` | — | Text | Klartext für Doku, HMI, SCL-Kommentar |
|
||||
|
||||
### Gruppe 2 — Hardware-IO (Pflicht, nicht ableitbar)
|
||||
|
||||
| Tag | Prompt (DE) | Beispielwert | Default | Typ | Bemerkung |
|
||||
|---|---|---|---|---|---|
|
||||
| `SENSOR_IN_SEP` | Sensor Separator | `BG3306` | — | Text | Hauptsensor, ergibt `sensorInSep` + `cIn`-Konstante |
|
||||
| `SENSOR_JAM2` | Sensor Jam 2 | `BG3305` | *(leer)* | Text, optional | zweiter Stau-/Kontrollsensor |
|
||||
| `SENSOR_JAM3` | Sensor Jam 3 | `BG3330` | *(leer)* | Text, optional | nur bei Switch-Typen mit 3. Sensor |
|
||||
| `STOPPER_OUTPUT` | Ausgang Stopper | `MB3306` | — | Text | Stopper-/Vereinzelungs-Ausgang |
|
||||
| `SWITCH_OUTPUT` | Ausgang Weiche | `MB3304` | *(leer)* | Text | nur bei `1Sep1Swi` / `1Sep2Swi` sichtbar/Pflicht |
|
||||
|
||||
### Gruppe 3 — Scanner (optional, blendet sich nur bei Bedarf ein)
|
||||
|
||||
| Tag | Prompt (DE) | Beispielwert | Default | Typ | Bemerkung |
|
||||
|---|---|---|---|---|---|
|
||||
| `SCANNER_ID` | Scanner-ID | `BX1104` | *(leer)* | Text, optional | Cognex-Barcodeleser-Kennung |
|
||||
| `HAS_SSCC_SCANNER` | SSCC-Scanner? | `false` | `false` | Bool (Liste `true`/`false`) | schaltet `ssccScanner`- und `wcsTelegram`-Block im Export frei |
|
||||
|
||||
### Gruppe 4 — Priorität / Verhalten
|
||||
|
||||
| Tag | Prompt (DE) | Beispielwert | Default | Typ | Bemerkung |
|
||||
|---|---|---|---|---|---|
|
||||
| `PRIORITY_TYPE` | Prioritätsart | `releaseOk` | `releaseOk` | Liste (Enum: `releaseOk`, `Manager`, `Dir2Manager`) | steuert `priority`-Block im JSON |
|
||||
| `IS_BORNER` | Einschleusepunkt? | `false` | `false` | Bool | markiert Borner-TROs (Direction-Zuweisung an dieser Stelle) |
|
||||
| `N_TO_1_DESTINATIONS` | Anzahl Weichenziele | `3` | *(leer)* | Ganzzahl, optional | nur bei Switch-Typen |
|
||||
|
||||
### Gruppe 5 — Override (Ausnahmefälle, i. d. R. leer)
|
||||
|
||||
| Tag | Prompt (DE) | Beispielwert | Default | Typ | Bemerkung |
|
||||
|---|---|---|---|---|---|
|
||||
| `OVERRIDE_TIMING_JSON` | Timing-Override (JSON) | *(leer)* | *(leer)* | Text, optional | Freitext-JSON-Fragment, überschreibt einzelne Default-Timings dieser Instanz (z. B. `{"trailingTime":"T#100ms"}`) |
|
||||
| `CUSTOM_CODE_REF` | Sonderlogik-Referenz | *(leer)* | *(leer)* | Text, optional | Verweis auf ein `customCode`-Snippet, das der Export separat einbindet (siehe Json-Konzept Abschnitt 10) |
|
||||
|
||||
---
|
||||
|
||||
## Sichtbarkeits-/Pflichtregeln beim Attribut-Dialog
|
||||
|
||||
| Regel | Bedingung |
|
||||
|---|---|
|
||||
| `SWITCH_OUTPUT`, `N_TO_1_DESTINATIONS` nur sichtbar/Pflicht | `TRO_TYPE` ∈ {`1Sep1Swi`, `1Sep2Swi`} |
|
||||
| `SENSOR_JAM3` nur sichtbar | `TRO_TYPE` ∈ {`1Sep1Swi`, `1Sep2Swi`} |
|
||||
| `SCANNER_ID` Pflicht | `TRO_TYPE` = `1Sep_SSCC` oder Scanner-Kommentar in `COMMENT` |
|
||||
| `HAS_SSCC_SCANNER` nur `true` möglich | `TRO_TYPE` = `1Sep_SSCC` |
|
||||
| `PRIORITY_TYPE` = `Dir2Manager` nur zulässig | `TRO_TYPE` = `1Sep1Swi` |
|
||||
|
||||
Diese Regeln werden nicht durch BricsCAD selbst erzwungen (ATTDEF kennt keine bedingte Sichtbarkeit), sondern im Export-Skript (Validierung) und optional per Dynamic-Block-Sichtbarkeitszuständen je `TRO_TYPE`-Variante.
|
||||
|
||||
---
|
||||
|
||||
## Empfohlener Blockaufbau
|
||||
|
||||
- **1 Basis-Blockdefinition** `SYM_TRO` mit allen Attributen aus Gruppe 1–5 (leere Defaults für optionale Gruppen).
|
||||
- **Anschlusspunkte** als benannte Punkte/Layer im Block (`PT_ENTRY`, `PT_EXIT`, `PT_EXIT2`, `PT_EXIT3`) — dienen dem Export-Skript zur automatischen Ableitung der `connections[]`-Einträge aus angeschlossenen Linien, ersetzen die früher diskutierten Attribute für `entry`/`exit`.
|
||||
- **Grafik** je `TRO_TYPE` unterschiedlich einfärben/formen (z. B. über Dynamic-Block-Sichtbarkeitszustand), damit der Plan auf einen Blick den Typ zeigt — analog zu den `classDef`-Farben im Mermaid-Diagramm in Json_Layout-Konzept.md (`sep`, `swi`, `buf`, `vario`, `sscc`).
|
||||
|
||||
---
|
||||
|
||||
## Defaults je Typ (Timing)
|
||||
|
||||
Die Timing-Defaults werden **nicht** am Symbol gepflegt, sondern zentral im Export-Skript als Lookup-Tabelle `TRO_TYPE → Timing-Defaults` hinterlegt (z. B. aus den in Json_Layout-Konzept.md Abschnitt 4 beobachteten Werten: `1Sep` → `trailingTime=T#600ms, handlingTime=T#200ms`, `1Sep1Swi` → `trailingTime=T#100ms, handlingTime=T#50ms`, `Vario` → `trailingTime=T#800ms, handlingTime=T#300ms`, usw.). Die vollständige, typspezifische Default-Tabelle inkl. aller in dieser Anlage tatsächlich vorkommenden Typen steht in [TRO_Typen.md](TRO_Typen.md).
|
||||
|
||||
## Beispiel: Attributsatz für TRO107 (Switch Boom 1)
|
||||
|
||||
```
|
||||
TRO_ID = TRO107
|
||||
TRO_TYPE = 1Sep1Swi
|
||||
CONTROL_UNIT = OF1
|
||||
COMMENT = Weiche Boom 1 (LS / Clearing)
|
||||
SENSOR_IN_SEP = BG3306
|
||||
SENSOR_JAM2 = BG3305
|
||||
SENSOR_JAM3 = BG3330
|
||||
STOPPER_OUTPUT = MB3306
|
||||
SWITCH_OUTPUT = MB3304
|
||||
SCANNER_ID = (leer)
|
||||
HAS_SSCC_SCANNER = false
|
||||
PRIORITY_TYPE = Dir2Manager
|
||||
IS_BORNER = false
|
||||
N_TO_1_DESTINATIONS = 3
|
||||
OVERRIDE_TIMING_JSON = (leer)
|
||||
CUSTOM_CODE_REF = (leer)
|
||||
```
|
||||
|
||||
Der Export-Generator ergänzt daraus automatisch `mainTroNo=cMainTro107`, `separator.no=cSep107.1`, `hmi=DB_Interface_HMI.stTRO.TRO107`, die Timing-Werte aus der Default-Tabelle für `1Sep1Swi`, sowie `jamAreas.entry/exit2/exit3` aus den an `PT_ENTRY`/`PT_EXIT2`/`PT_EXIT3` angeschlossenen Verbindungslinien.
|
||||
Reference in New Issue
Block a user