6.7 KiB
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 ü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"). 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 |
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_TROmit 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 derconnections[]-Einträge aus angeschlossenen Linien, ersetzen die früher diskutierten Attribute fürentry/exit. - Grafik je
TRO_TYPEunterschiedlich einfärben/formen (z. B. über Dynamic-Block-Sichtbarkeitszustand), damit der Plan auf einen Blick den Typ zeigt — analog zu denclassDef-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.
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.