{ "_kommentar": "Regelwerk fuer die Symbolerzeugung der HW-Planung (Lisp/HwPlanung.lsp, HW_SYMBOLE): welche E-Geraete (Sensoren, Aktoren, Motoren) an welchem Anlagenbauteil sitzen und mit welchem Katalogsymbol sie gezeichnet werden. Uebernommen aus kabellaengen/cfg/io_regeln.json (dort Grundlage der Pruefung io_zuordnung_pruefen.py, abgeleitet aus Mubea, Stand 2026-10-30); hier nur noch die Teile, die zum Erzeugen noetig sind. Erkennungs-Regex, Suchradien, Nummernpaare und der Konverter-Abschnitt altZuNeu sind entfallen - die Nummern vergibt create_numbers.py entlang der Renamer-Bereiche.", "_io_vorlage": "Geraete-ID beim Erzeugen = praefix + io_vorlage (z.B. MB1@@@). Die '@' ersetzt erst die Nummerierung (HW_NUMMERIEREN, lib/create_numbers.py) entlang der Renamer-Bereiche; die Anzahl '@' muss zum NAME-Muster des Renamer-Blocks passen (z.B. BG-1@@@).", "io_vorlage": "1@@@", "_rollen": "rolle -> Geraete-Praefix und Symbol (Blockname; Aussehen, Layer und Attribute stehen in cfg/hw_symbole.json). block_nach_name: wcmatch-Muster auf den Blocknamen des Bauteils -> abweichender Katalogblock (erster Treffer gewinnt).", "rollen": [ {"rolle": "sep_ventil", "praefix": "MB", "block": "ILS_Separator-Ausgang"}, {"rolle": "sep_sensor", "praefix": "BG", "block": "ILS_720002003-Separator"}, {"rolle": "ae_ventil", "praefix": "MB", "block": "ILS_Weiche-Abzweig-Ausgang"}, {"rolle": "kreisel_motor", "praefix": "MA", "block": "ILS_Motor-400102811-Kreisel"}, {"rolle": "vario_motor", "praefix": "MA", "block": "ILS_Motor-200000020-VARIO-links", "block_nach_name": [{"muster": "*RECHTS*", "block": "ILS_Motor-200000021-VARIO-rechts"}]}, {"rolle": "motorschutz", "praefix": "FC", "block": "ILS_Motorschutz"}, {"rolle": "rad_dreht", "praefix": "BG", "block": "ILS_720002011-Rad dreht"}, {"rolle": "encoder", "praefix": "GF", "block": "ILS_829624040-Encoder-800"}, {"rolle": "finger", "praefix": "BG", "block": "ILS_200000375-Finger in Position"}, {"rolle": "pc_in_pos", "praefix": "BG", "block": "ILS_200000248-PC in Position"}, {"rolle": "scanner", "praefix": "BX", "block": "ILS_Scanner-829534306"} ], "_bauteile": "Mechanik-Bloecke (wcmatch, Gross/Klein egal; auch verschachtelt in VF_n/GF_n/KREISEL_n) und die Rollen, die an jedem davon sitzen. Jeder Eintrag in benoetigt ist eine Liste von Alternativen - erzeugt wird die ERSTE. Die Reihenfolge ist zugleich die Stapelfolge der Symbole am Bauteil (erstes oben).", "bauteile": [ {"bauteil": "separator", "bloecke": ["Separator_SP*", "Separator_LP*", "S-SP", "S-LP"], "benoetigt": [["sep_ventil"], ["sep_sensor"]]}, {"bauteil": "ausschleuser", "bloecke": ["AS_Element*", "AE-D", "AE DS"], "benoetigt": [["ae_ventil"]]}, {"bauteil": "entladung", "bloecke": ["SC_Entladung*"], "benoetigt": [["ae_ventil"]]}, {"bauteil": "kreisel_antrieb", "bloecke": ["AN8", "AN8_*"], "benoetigt": [["kreisel_motor"], ["motorschutz"]]}, {"bauteil": "kreisel_spannstation", "bloecke": ["SP8", "SP8_*"], "benoetigt": [["rad_dreht", "encoder"]]}, {"bauteil": "vario_motorstation", "bloecke": ["Vario_Motorstation*", "Motorstation*"], "benoetigt": [["vario_motor"], ["motorschutz"]]}, {"bauteil": "vario_umlenkstation", "bloecke": ["Vario_Umlenkstation*", "Umlenkstation*"], "benoetigt": [["finger"], ["pc_in_pos"]]}, {"bauteil": "scanner", "bloecke": ["Scanner*", "SCAN"], "benoetigt": [["scanner"]]} ] }