From 345c27a090eb361b2f6b6bbd189d65ea7e5e94c0 Mon Sep 17 00:00:00 2001 From: "gigi.mamaladze" Date: Sun, 1 Mar 2026 20:41:59 +0400 Subject: [PATCH] Updated build_io_table.py --- AutoCAD/IO/IO.xlsx | Bin 23758 -> 0 bytes AutoCAD/IO/MCM_IO.xlsx | Bin 8932 -> 13100 bytes .../build_io_table.cpython-314.pyc | Bin 0 -> 18933 bytes AutoCAD/IO/build_io_table.py | 38 ++++++++++++++++-- 4 files changed, 34 insertions(+), 4 deletions(-) delete mode 100644 AutoCAD/IO/IO.xlsx create mode 100644 AutoCAD/IO/__pycache__/build_io_table.cpython-314.pyc diff --git a/AutoCAD/IO/IO.xlsx b/AutoCAD/IO/IO.xlsx deleted file mode 100644 index 6c87dd5cb641d5e970938529bfaa7301bd6a1d05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23758 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

VP@h(>6ZAoMNC+o&9nedVs3SYOe#c&LsH;5 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 Pf+Jsl@Y0!{ literal 8932 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 P1i=3%Kqe$iXGi}B10jyx diff --git a/AutoCAD/IO/__pycache__/build_io_table.cpython-314.pyc b/AutoCAD/IO/__pycache__/build_io_table.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..785df07b9ea17bfc86ecea1c4232d9e7b6df6ee8 GIT binary patch literal 18933 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 str: +def bcn_desc_s_stack(dev: str, all_devices: set) -> str | None: + """Returns IO LINK description for S-prefixed BCNs, or None if not applicable.""" + import re as _re + d = dev.upper() + m = _re.match(r"(S\d+)_BCN\d*", d) + if not m: + return None + base = m.group(1) + jr_pattern = _re.compile(rf"{_re.escape(base)}_JR\d") + has_jr = any(jr_pattern.search(dv) for dv in all_devices) + if has_jr: + return "IO LINK 3 STACK G/A/B BEACON" + return "IO LINK 2 STACK G/B BEACON" + +def fallback_desc(dev: str, all_devices: set | None = None) -> str: import re as _re d = dev.upper() if d == "SPARE": return "" if "VFD" in d and ("DISC" in d or "DSIC" in d): return "DISCONNECT AUX" if _re.search(r"_TPE\d+|^TPE\d+", d): return "TRACKING PHOTOEYE" if _re.search(r"_JPE\d+|^JPE\d+", d): return "JAM PHOTOEYE" + if _re.search(r"S\d+_PE\d*|_PE\d+|^PE\d+", d): return "CHUTE DISABLE PHOTOEYE" if _re.search(r"_EPC\d+|^EPC\d+", d): return "E-STOP PULLCORD" if "ENSH" in d: return "SHAFT ENCODER" if "ENW" in d: return "WHEEL ENCODER" @@ -78,6 +93,9 @@ def fallback_desc(dev: str) -> str: if any(x in d for x in ["_SOL","_SOV","_SV","_SOLV"]): return "SOLENOID VALVE" if _re.search(r"_FIOH\d+|^FIOH\d+", d): return "I/O LINK HUB" if "BCN" in d: + s_bcn_desc = bcn_desc_s_stack(d, all_devices or set()) + if s_bcn_desc: + return s_bcn_desc if d.endswith("_A"): return "AMBER BEACON LIGHT" if d.endswith("_R"): return "RED BEACON LIGHT" if d.endswith("_G"): return "GREEN BEACON LIGHT" @@ -97,13 +115,13 @@ def fallback_desc(dev: str) -> str: if d.startswith("PDP") and "_PWM" in d: return "PHASE MONITOR" return "DEVICE" -def desc_for(dev: str, canon: dict) -> str: +def desc_for(dev: str, canon: dict, all_devices: set | None = None) -> str: s = str(dev).strip().upper() if not s: return "" if s in canon: return canon[s] for k in family_keys(s): if k in canon: return canon[k] - return fallback_desc(s) + return fallback_desc(s, all_devices) def choose_order(controller_name: str, available_columns): s = str(controller_name).upper() @@ -145,6 +163,17 @@ def main(): canon_map = load_canon([Path(p) for p in args.canon]) + all_devices = set() + for _, r in df.iterrows(): + ctrl = str(r.get("P_TAG1", "")).strip() + if not ctrl: + continue + order = choose_order(ctrl, sig_cols_available) + for sig in order: + val = r.get(sig) + if pd.notna(val) and str(val).strip(): + all_devices.add(str(val).strip().upper()) + rows = [] for _, r in df.iterrows(): ctrl = str(r.get("P_TAG1","")).strip() @@ -157,7 +186,7 @@ def main(): if dev == "": dev = "SPARE" addr = f"{ctrl}_{sig}" - desc = "" if dev.upper()=="SPARE" else desc_for(dev, canon_map) + desc = "" if dev.upper()=="SPARE" else desc_for(dev, canon_map, all_devices) dU = dev.upper() if re.search(r'_ESTOP1$', dU): desc = "ESTOP OK" elif re.search(r'_SS\d+_SPB_LT$', dU): desc = "SS STATION START PUSHBUTTON LIGHT" @@ -169,6 +198,7 @@ def main(): elif re.search(r'_JR\d+_PB$', dU): desc = "JAM RESET PUSHBUTTON" elif re.search(r'_EN\d*_PB_LT$', dU): desc = "ENABLE PUSHBUTTON LIGHT" elif re.search(r'_EN\d*_PB$', dU): desc = "ENABLE PUSHBUTTON" + elif re.search(r'_PR\d*_PB$', dU): desc = "PACKAGE RELEASE PUSHBUTTON" rows.append({ "Controller name": ctrl, "Signal type": sig,