Files
sps_skel/cfg/parameter.ini
T
Samer AyadiandClaude Opus 5.5 df24cf5adb hw_import + merge_hw_layout: Hardwareplanung einlesen und mit dem Layout zusammenfuehren
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>
2026-10-15 16:16:10 +02:00

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