You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用pyads的get_all_symbols()报symbol not found (1808)错误原因是什么

首先明确:报错中的1808不是你请求的符号编号,是ADS协议的标准错误码,含义为「指定符号未找到」。该报错是get_all_symbols()方法内部读取PLC符号表元数据时触发的,和你代码中没有主动请求特定符号无关。

排查步骤

  • 检查PLC符号上传权限:打开Twincat XAE中的PLC项目,进入项目属性→Build选项卡,确认已勾选Create symbol file和Download symbol file两个选项,将修改后的项目重新下载到PLC,重启PLC运行后再测试脚本。
  • 验证符号读取权限:使用Twincat官方的ADS Scope或者PLC符号浏览器工具,输入相同的AMS Net ID和端口,确认能否正常拉取当前运行PLC的全量符号列表,排除账号权限不足的问题。
  • 确认版本兼容性:pyads 3.3.8对部分较高版本的Twincat 3固件(Build版本≥4024)存在符号表读取兼容问题,旧版封装的符号表读取地址和新版PLC的实际元数据地址不匹配,就会触发该报错。

解决方法

  • 方案1:调整pyads版本,卸载当前3.3.8版本,测试安装兼容性更广的pyads 3.2.11版本,或者最新的pyads 3.4.0版本,大部分场景下更换版本即可解决该问题。
  • 方案2:如果已知需要读取的符号名列表,跳过全量符号表拉取逻辑,直接通过plc.read_by_name(符号名, 数据类型)方法读取对应值,不会触发该报错。
  • 方案3:手动调用ADS低级接口读取符号表,跳过get_all_symbols()的封装逻辑,直接读取索引组0xF002、索引偏移0x0000的符号表元数据,自行解析二进制返回结果得到所有符号信息。

内容的提问来源于stack exchange,提问作者mmachenry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 10:48:00