Merge pull request 'Updated build_io_table.py' (#5) from gigi into main
Reviewed-on: #5
This commit is contained in:
commit
73b501abdc
Binary file not shown.
Binary file not shown.
BIN
AutoCAD/IO/__pycache__/build_io_table.cpython-314.pyc
Normal file
BIN
AutoCAD/IO/__pycache__/build_io_table.cpython-314.pyc
Normal file
Binary file not shown.
@ -61,13 +61,28 @@ def family_keys(dev: str):
|
|||||||
seen.add(k); out.append(k)
|
seen.add(k); out.append(k)
|
||||||
return out
|
return out
|
||||||
|
|
||||||
def fallback_desc(dev: str) -> 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
|
import re as _re
|
||||||
d = dev.upper()
|
d = dev.upper()
|
||||||
if d == "SPARE": return ""
|
if d == "SPARE": return ""
|
||||||
if "VFD" in d and ("DISC" in d or "DSIC" in d): return "DISCONNECT AUX"
|
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"_TPE\d+|^TPE\d+", d): return "TRACKING PHOTOEYE"
|
||||||
if _re.search(r"_JPE\d+|^JPE\d+", d): return "JAM 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 _re.search(r"_EPC\d+|^EPC\d+", d): return "E-STOP PULLCORD"
|
||||||
if "ENSH" in d: return "SHAFT ENCODER"
|
if "ENSH" in d: return "SHAFT ENCODER"
|
||||||
if "ENW" in d: return "WHEEL 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 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 _re.search(r"_FIOH\d+|^FIOH\d+", d): return "I/O LINK HUB"
|
||||||
if "BCN" in d:
|
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("_A"): return "AMBER BEACON LIGHT"
|
||||||
if d.endswith("_R"): return "RED BEACON LIGHT"
|
if d.endswith("_R"): return "RED BEACON LIGHT"
|
||||||
if d.endswith("_G"): return "GREEN 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"
|
if d.startswith("PDP") and "_PWM" in d: return "PHASE MONITOR"
|
||||||
return "DEVICE"
|
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()
|
s = str(dev).strip().upper()
|
||||||
if not s: return ""
|
if not s: return ""
|
||||||
if s in canon: return canon[s]
|
if s in canon: return canon[s]
|
||||||
for k in family_keys(s):
|
for k in family_keys(s):
|
||||||
if k in canon: return canon[k]
|
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):
|
def choose_order(controller_name: str, available_columns):
|
||||||
s = str(controller_name).upper()
|
s = str(controller_name).upper()
|
||||||
@ -145,6 +163,17 @@ def main():
|
|||||||
|
|
||||||
canon_map = load_canon([Path(p) for p in args.canon])
|
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 = []
|
rows = []
|
||||||
for _, r in df.iterrows():
|
for _, r in df.iterrows():
|
||||||
ctrl = str(r.get("P_TAG1","")).strip()
|
ctrl = str(r.get("P_TAG1","")).strip()
|
||||||
@ -157,7 +186,7 @@ def main():
|
|||||||
if dev == "":
|
if dev == "":
|
||||||
dev = "SPARE"
|
dev = "SPARE"
|
||||||
addr = f"{ctrl}_{sig}"
|
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()
|
dU = dev.upper()
|
||||||
if re.search(r'_ESTOP1$', dU): desc = "ESTOP OK"
|
if re.search(r'_ESTOP1$', dU): desc = "ESTOP OK"
|
||||||
elif re.search(r'_SS\d+_SPB_LT$', dU): desc = "SS STATION START PUSHBUTTON LIGHT"
|
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'_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_LT$', dU): desc = "ENABLE PUSHBUTTON LIGHT"
|
||||||
elif re.search(r'_EN\d*_PB$', dU): desc = "ENABLE PUSHBUTTON"
|
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({
|
rows.append({
|
||||||
"Controller name": ctrl,
|
"Controller name": ctrl,
|
||||||
"Signal type": sig,
|
"Signal type": sig,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user