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>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
c4122b4497
commit
df24cf5adb
@@ -68,5 +68,20 @@
|
||||
"csv_file": "dematic.csv",
|
||||
"dxf_file": "dematic_TST.dxf",
|
||||
"created": "2026-10-06 14:19"
|
||||
},
|
||||
"mubea.csv|Mubea_positionsconv.json": {
|
||||
"dx": -151.4000000000001,
|
||||
"dy": -696.5699999999997,
|
||||
"rotation": 0.0,
|
||||
"source": "auto",
|
||||
"anchor": "20 exakte Treffer (<= 50 mm) ueber die Rollen Separator:38; 20 Stimmen im 100-mm-Raster, 6 Kandidaten geprueft",
|
||||
"matched": 23,
|
||||
"candidates": 38,
|
||||
"residual_max": 541.020430390572,
|
||||
"residual_mean": 52.985147546665765,
|
||||
"csv_file": "mubea.csv",
|
||||
"dxf_file": "Mubea_positionsconv.json",
|
||||
"created": "2026-10-15 13:15",
|
||||
"fingerprint": "085df1af63e4b71d8a51301ea0c6e7812d415b5efd0c6b409c58cf2cb77ba4e2"
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -22,7 +22,7 @@
|
||||
; neben dem Bauteil; gewertet wird die Abweichung vom Soll
|
||||
; (nicht der kleinste Abstand), zulaessig bis toleranz_mm
|
||||
; toleranz_mm zulaessige Abweichung vom Sollabstand (Standard: cfg/parameter.ini
|
||||
; [e_planning] toleranz_mm)
|
||||
; [merge_hw_layout] toleranz_mm)
|
||||
; nummer_von Nummernregel: BMK-Nummer = Nummer der genannten Rolle
|
||||
; nummer_versatz ... plus dieser Versatz (Mubea: Ventil = Sensor + 1)
|
||||
; Mit nummer_von wird zuerst die Nummer versucht, danach (wenn max_mm oder
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
; ================================================================
|
||||
; hw_overrides.ini - Handkorrekturen fuer lib/merge_hw_layout.py
|
||||
; ================================================================
|
||||
; Was die Regeln (cfg/e_planning.ini) nicht oder falsch zuordnen, wird hier
|
||||
; von Hand gesetzt. Angewendet nach der automatischen Zuordnung; im Bericht
|
||||
; <csv>_anlage.md mit Regel "hand".
|
||||
;
|
||||
; Je Anlage (Name der CSV, aus der die TRO-JSON stammt) zwei Abschnitte:
|
||||
;
|
||||
; [<csv>.bindings]
|
||||
; <TRO-ID>.<Slot>.<Rolle> = <BMK> BMK setzen (muss im TIA-Import stehen)
|
||||
; <TRO-ID>.<Slot>.<Rolle> = - Zuordnung loeschen, Rolle bleibt offen
|
||||
; TRO-IDs aus cfg/<csv>_tro_ids.ini (stabil), Slots/Rollen aus der
|
||||
; TRO-JSON (separator1.sensor, separator1.stopper, line3.sensor,
|
||||
; drive.motor ...).
|
||||
;
|
||||
; [<csv>.conveyors]
|
||||
; <Foerderer E-Planung> = <Layout-ID> z. B. K0102 = 0010
|
||||
; <Foerderer E-Planung> = - Zuordnung loeschen
|
||||
; Achtung: die Layout-ID (TeileId) aendert sich mit jedem CSV-Export.
|
||||
;
|
||||
; Beispiel (auskommentiert):
|
||||
;
|
||||
; [mubea.csv.bindings]
|
||||
; TRO03.separator1.sensor = BG0532
|
||||
; TRO03.separator1.stopper = MB0533
|
||||
;
|
||||
; [mubea.csv.conveyors]
|
||||
; K0105 = 0001
|
||||
; ================================================================
|
||||
+16
-2
@@ -172,7 +172,21 @@ default_text = 220.0
|
||||
default_max_residual = 600.0
|
||||
|
||||
|
||||
[e_planning]
|
||||
[merge_hw_layout]
|
||||
; Zulaessige Abweichung vom Sollabstand (soll_mm), wenn eine Regel in
|
||||
; e_planning.ini kein toleranz_mm angibt.
|
||||
; 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
|
||||
|
||||
Reference in New Issue
Block a user