"""_probe_scan.py — 精确定位响应帧头在 SM1 RAM 的偏移 + SM0 请求侧同步 dump。""" import struct import sys import time import ecat_server as es import pysoem r = es.api_open({"substr": "I226"}) if not r.get("ok"): sys.exit(1) m = es.g_master s = m.slaves[0] def fprd(addr, size): try: return bytes(s._fprd(addr, size, 20000)) except Exception: return None def sm_reg(addr): d = fprd(addr, 8) if d is None: return None start, length = struct.unpack("> 3 & 1})", flush=True) # 同步看 SM0 侧(请求是否被读走) st0 = sm_reg(0x0800) print(f"SM0 st=0x{st0['st']:02X}(bit3={st0['st'] >> 3 & 1})", flush=True) es.api_close({}) print("DONE", flush=True)