Files
DCU_ECAT_Master/README.md
T
cbb d594b8fd94 init: DCU LAN9252 EtherCAT 主站工具集
现有工具纳入版本管理:
- ecat_tool.py: 一体化命令行主站(status/flash/eeprom/sdo/send)
- ecat_server.py + ecat.html/css: 网页/桌面控制台(端口 8090)
- ecat_scan.py / ecat_esc_regs.py / ecat_sniff.py: bring-up 扫描、
  网络侧 ESC 寄存器诊断、裸帧抓包对照
- ecat_flash_eeprom.py: 经网线烧写 SII 镜像 + 逐字校验
- *.bat / *.vbs 启动入口

新增 .gitignore(排除 venv/ 与 __pycache__)、.gitattributes(不改写换行符)、
requirements.txt(锁定 pysoem 1.1.13 等依赖)、README.md。
2026-09-03 01:56:29 +08:00

2.2 KiB
Raw Blame History

ecat — DCU LAN9252 EtherCAT 主站工具集

在 Windows 上用 Python + pysoem(SOEM)直接从网卡驱动 DCU 的 LAN9252 EtherCAT 从站: 扫描总线、读写 SII EEPROM、CoE SDO 读写、PDO 循环收发,以及一个本地网页/桌面控制台。

环境准备

  • Python 3.12(venv 不入库)
  • Npcap:pysoem 收发裸 EtherCAT 帧的前提
  • 一块直连从站的物理网卡(示例中为 Intel I226)
py -3.12 -m venv venv
venv\Scripts\python.exe -m pip install -r requirements.txt

目录内容

文件 说明
ecat_tool.py 一体化命令行主站:adapters / status / flash / eeprom / sdo / send 等子命令
ecat_server.py 网页控制台后端(REST API + 静态文件),默认端口 8090(8080 已被 ESP32 tools 占用)
ecat.html / ecat.css 网页控制台前端
ecat_scan.py 最小化 bring-up 扫描:从站身份 + SII dump,--op 追加 PDO 测试
ecat_esc_regs.py 从网络侧直读 LAN9252 ESC 寄存器,绕开 GD32/PDI,用于判断 EEPROM 加载是否真的失败;支持 --reload
ecat_flash_eeprom.py 通过网线烧写 gen_eeprom.py 生成的 SII 镜像,逐字回读校验(烧完需断电重启让 ESC 重新加载)
ecat_sniff.py 旁路抓包,hexdump SOEM 自己发出的帧,用于对照裸帧格式
_repro_hang.py 复现 op/start 卡住→闪退的最小脚本,带 faulthandler 看门狗

启动方式

入口 效果
ecat_app.vbs pywebview 桌面窗口,无控制台无浏览器标签(已针对部分 GPU 驱动白屏加 --disable-gpu-compositing)
ecat_web.vbs 后台起服务并打开浏览器标签,无控制台窗口
ecat_web.bat 控制台模式,可见日志,调试用
ecat.bat 命令行工具入口,如 ecat.bat status、ecat.bat flash
run_scan.bat 直接跑 bring-up 扫描,无参数则列出 Npcap 适配器

注意

  • 前端 CSS/JS 改动后记得 bump ?v= 缓存版本,否则浏览器会加载旧代码。
  • EEPROM 烧写后必须断电冷启动,ESC 才会重新加载配置。