Stufen 2 und 3 aus doc/Konzept_Layout_Hardware_SCL.md: - lib/hw_import.py: TIA-Import (*_TIA.xlsx, ohne openpyxl gelesen) + Positionsdatei (*_positionsconv.json) -> <projekt>_hw.json: je BMK Adresse, Index-Konstante, VERW, Station, Lage, Foerderer (K0102, #106 -> K0106); Antriebe MA/FC/GF; Gegenpruefung beider Quellen. - lib/merge_hw_layout.py: <csv>_tro.json + <projekt>_hw.json -> <csv>_anlage.json (model.AnlageDocument): bindings je TRO-ID + Slot + Rolle mit Konstante und Adresse, Foerderer per Mehrheit (Mubea: K0102 = Kreisel3, K0104 = Kreisel2, K0105 = Kreisel1), Handkorrekturen cfg/hw_overrides.ini. Zuordnungslogik aus e_planning.py hierher verschoben; e_planning re-exportiert sie, Ergebnis unveraendert. - TRO-JSON traegt optional `parts` (Lage/Huellbox, tro_flow --json), PinStore bekommt Slots line<n>. - Gespeicherter Lagebezug mit SHA-256 der Positionsdatei; Unterordner in Eingabenamen relativ zu SKEL_DATA. - Doku: Python_Scripts.md 5d/5e, Konzept, E-Planung_Bruecke (Abgleich mubea_layout.dxf / CSV / E-Planung). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
193 lines
7.2 KiB
INI
193 lines
7.2 KiB
INI
; ================================================================
|
|
; parameter.ini - Zahlenwerte der Bibliotheken in lib/
|
|
; ================================================================
|
|
; Gelesen von lib/parameter.py. Ein Abschnitt je Modul, der Schluessel ist
|
|
; der Name der Konstanten im Modul in Kleinbuchstaben:
|
|
; [kreisel_junctions] contact_tolerance -> CONTACT_TOLERANCE
|
|
;
|
|
; Diese Datei ist die versionierte Grunddatei und muss vollstaendig sein -
|
|
; fehlt ein Schluessel, bricht das Programm ab (kein Ersatzwert im Code).
|
|
; Eine weitere parameter.ini in %SKEL_CFG% (falls SKEL_CFG woanders hin
|
|
; zeigt) ueberschreibt einzelne Werte fuer eine Anlage.
|
|
;
|
|
; Laengen in mm, Winkel in Grad, sofern nicht anders angegeben.
|
|
; Werte, die das Ergebnis der Ableitung aendern (Toleranzen, Schwellen),
|
|
; nur mit Begruendung und Vergleich der Ausgaben aller Anlagen aendern.
|
|
; ================================================================
|
|
|
|
|
|
[kreisel_junctions]
|
|
; Hoechster Abstand zweier Kreisel-Umlaeufe, der noch als Beruehrung gilt.
|
|
contact_tolerance = 50.0
|
|
|
|
; Hoechster Abstand eines Separators vom Umlauf, damit er auf ihm liegt.
|
|
; Auch die Grenze fuer "liegt auf Kreisel" im Mouseover von
|
|
; material_flow.py --track.
|
|
separator_tolerance = 100.0
|
|
|
|
; Hoechster Abstand einer exportierten ILS Weiche von ihrem Beruehrpunkt.
|
|
weiche_tolerance = 300.0
|
|
|
|
; Abtastschritt beim Suchen des Beruehrpunkts.
|
|
sample_step = 10.0
|
|
|
|
; Mindestanzahl Abtastpunkte je Umlauf, auch bei sehr kleinen Kreiseln.
|
|
min_samples = 8
|
|
|
|
; Bei tangentialer Beruehrung sind viele Abtastpunkte fast gleich nah: alle
|
|
; bis zu diesem Mehrabstand ueber dem naechsten gehen in den Mittelpunkt ein.
|
|
contact_tie = 1.0
|
|
|
|
; Ein Beruehrbereich, der laenger ist, liegt nicht an einem Punkt an (zwei
|
|
; parallele Bahnen nebeneinander) - Hinweis statt Weiche.
|
|
max_contact_length = 500.0
|
|
|
|
; Ein Punkt bis zu diesem Abstand vor dem Ende der Geraden zaehlt schon zur
|
|
; Umlenkung. Zwei Kreisel, deren Umlenkungen sich beruehren, tun das oft genau
|
|
; am Uebergang Gerade/Halbkreis (export.csv: Kreisel 5 an Kreisel 6 und 4).
|
|
end_tolerance = 100.0
|
|
|
|
; Radius, wenn die Boundingbox ihn nicht liefert (schraeg liegender Kreisel).
|
|
default_radius = 400.0
|
|
|
|
; Halbe Schrittweite fuer die Laufrichtung an einer Stelle des Umlaufs
|
|
; (Differenz zweier Punkte davor und dahinter).
|
|
direction_step = 1.0
|
|
|
|
; Gleichlauf am Beruehrpunkt: Mindest-Kosinus des Winkels zwischen beiden
|
|
; Laufrichtungen (0.5 = hoechstens 60 Grad). Darunter "gegenlaeufig".
|
|
gleichlauf_min_cos = 0.5
|
|
|
|
|
|
[tro_flow]
|
|
; Ab dieser Anzahl zusammenhaengender Schwerkraftlinien (Gefaellestrecke mit
|
|
; je einem Separator) wird ein Speicherblock (PinStore_Auto) angenommen.
|
|
min_store_lanes = 2
|
|
|
|
; Mindest-Hoehenverlust auf dem vorangehenden TrackIds-Segment, damit ein
|
|
; Separator auf einer "Strecke" trotzdem als 1Sep statt Vario gilt (siehe
|
|
; _incoming_drop). Muss nur "horizontal" gefuehrte, aber tatsaechlich
|
|
; Gefaelle-Segmente erwischen (HundM05 Separator 0035: -104mm auf 3,8m), nicht
|
|
; das Rauschen eines echten flachen VF-Laufs (HundM05 Separator 0036: +26mm
|
|
; auf 0,5m). 30mm liegt bewusst weit unter dem Befund und ueber dem Rauschen.
|
|
gefaelle_drop_mm = 30.0
|
|
|
|
; Zeichnungsmassstab fuer --use-cords in pt/mm: Graphviz rechnet in Punkt, die
|
|
; Anlage in Millimeter. Seit die Symbole eine feste Groesse haben, reichen
|
|
; 0.1 pt/mm: ~11 x 20 m Anlage ergeben etwa 1100 x 2000 pt. Vorher 0.25
|
|
; (riesige Zeichnung, Symbole und Schrift verschwanden; Review 2026-10-01).
|
|
coord_scale = 0.1
|
|
|
|
; Zu-/Ablaufpfeil einer Station in der lagerichtigen Zeichnung: feste Laenge
|
|
; ab dem angehaengten TRO (siehe _station_positionen).
|
|
coord_pfeil_laenge = 1300
|
|
|
|
; Groesste Luecke zwischen zwei benachbarten Knotenkoordinaten je Achse in der
|
|
; lagerichtigen Zeichnung; groessere Leerstrecken werden auf diesen Wert
|
|
; gekuerzt (Review 2026-10-01). --true-scale schaltet das ab.
|
|
coord_max_luecke = 1500
|
|
|
|
; Abstand der Legende rechts neben der Anlage.
|
|
legend_margin = 3000
|
|
|
|
; Oberkante der Legende so weit unter der Anlagenoberkante.
|
|
legend_drop = 1000
|
|
|
|
|
|
[tro_ids]
|
|
; Abstand zwischen Eintrag der ID-Datei und Separator, bis zu dem ein TRO als
|
|
; wiedergefunden gilt (Standard fuer --id-tolerance). Separatoren derselben
|
|
; Bahn liegen deutlich weiter auseinander; ein verschobenes Bauteil faellt so
|
|
; als "neu" auf.
|
|
default_tolerance = 100.0
|
|
|
|
|
|
[material_flow]
|
|
; Max. Abstand, ab dem ein generisches Eingang/Ausgang-Symbol als
|
|
; "deckungsgleich" mit einer BTMT-Station gilt und verschluckt wird. Die
|
|
; beobachteten Paare liegen bei 256-431 mm, echte getrennte Stationen >1000 mm.
|
|
station_merge_mm = 600.0
|
|
|
|
; Ab dieser Anzahl paralleler Gefaellestrecken zwischen denselben zwei
|
|
; Kreisel-Bahnen werden sie im Materialfluss-Diagramm zu einem Block
|
|
; zusammengefasst - sonst wird eine grosse Linienbank unlesbar breit.
|
|
min_gefaelle_group = 2
|
|
|
|
; Zeichnungsmassstab fuer --use-cords in pt/mm. Achtung: tro_flow nutzt seit
|
|
; Review 2026-10-01 0.1 - beide Graphen haben damit verschiedene Massstaebe.
|
|
coord_scale = 0.25
|
|
|
|
; Die beiden Bahnen (L/R) eines Kreisels teilen sich eine Position; im
|
|
; lagerichtigen Layout so weit versetzen, damit sie nicht uebereinander liegen.
|
|
lane_nudge_mm = 350.0
|
|
|
|
; Legende im lagerichtigen Layout so weit unterhalb der Anlage.
|
|
legend_offset_mm = 3000.0
|
|
|
|
; Legende (--show-bbs): Kaestchen- und Schriftgroesse.
|
|
bbs_legend_box_mm = 250.0
|
|
bbs_legend_font_mm = 180.0
|
|
|
|
; --show-bbs: Rand um die Anlage herum und minimale Schriftgroesse.
|
|
bbs_margin_mm = 500.0
|
|
bbs_min_font_mm = 40.0
|
|
|
|
; Anschlusspunkte K1-K4 (--show-kx): Groesse des Kreuzes und der Beschriftung.
|
|
kx_cross_mm = 120.0
|
|
kx_font_mm = 90.0
|
|
|
|
; --chain-graph: Hoechstgroesse der Zeichenflaeche, Rand und Titelhoehe (px).
|
|
chain_max_w = 1400.0
|
|
chain_max_h = 850.0
|
|
chain_margin = 70.0
|
|
chain_title_h = 60.0
|
|
|
|
|
|
[dxf_registration]
|
|
; Rastergroesse der Abstimmung.
|
|
vote_grid = 100.0
|
|
|
|
; So viele Kandidaten der Abstimmung werden ausgeglichen und bewertet.
|
|
vote_candidates = 6
|
|
|
|
; Nur Paare bis zu diesem Abstand gehen in den Ausgleich ein (exakte Treffer).
|
|
fit_tol = 50.0
|
|
|
|
; Punkte gelten als zugeordnet, wenn sie nach der Verschiebung so nah liegen.
|
|
default_match_tol = 600.0
|
|
|
|
; So viele exakte Treffer muessen es mindestens sein.
|
|
min_inliers = 5
|
|
|
|
; Ab dieser Drehung (Grad) wird gewarnt.
|
|
rotation_warn_deg = 0.05
|
|
|
|
|
|
[tro_annotate]
|
|
; Zeichnungsgroessen, wenn nicht per --marker-size/--text-height angegeben.
|
|
default_marker = 300.0
|
|
default_text = 220.0
|
|
|
|
; Restfehler des Lagebezugs, ab dem er abgelehnt wird.
|
|
default_max_residual = 600.0
|
|
|
|
|
|
[merge_hw_layout]
|
|
; Zulaessige Abweichung vom Sollabstand (soll_mm), wenn eine Regel in
|
|
; e_planning.ini kein toleranz_mm angibt (die Regeln liest merge_hw_layout, auch
|
|
; fuer e_planning).
|
|
toleranz_mm = 150.0
|
|
; Foerderer der E-Planung (K0102) -> Layout-Foerderer (Kreisel3) per Mehrheit:
|
|
; ein Feldgeraet, dessen Klartext den Foerderer nennt, stimmt fuer den
|
|
; Layout-Foerderer, dessen Huellbox ihm am naechsten liegt - hoechstens so
|
|
; weit entfernt (mm, nach dem Lagebezug).
|
|
conveyor_max_mm = 1500.0
|
|
; Zugeordnet wird erst ab so vielen Stimmen ...
|
|
conveyor_min_votes = 2
|
|
; ... und diesem Anteil an allen Geraeten, die den Foerderer nennen (0..1).
|
|
conveyor_min_share = 0.6
|
|
; Warnung, wenn der Lagebezug fuer weniger als diesen Anteil der
|
|
; Layout-Separatoren einen Partner findet (0..1) - Hinweis auf verschiedene
|
|
; Planungsstaende von Layout und E-Zeichnung.
|
|
registration_min_share = 0.8
|