跳到主要内容

Beckhoff TwinCAT/ADS

ADS (Automation Device Specification) 是德国 Beckhoff 的 TwinCAT 运行时所使用的通信协议。主要用于运行 TwinCAT 2 / 3 的工业计算机 (IPC) 及 EtherCAT 主站环境。

汽车生产线 / 半导体 / 风电 / 运动控制等基于 PC 的控制环境中,几乎都是 ADS。


注册表单输入项

输入栏填写内容示例
IP 地址运行 TwinCAT 的 IPC 的 IP192.168.0.80
端口ADS TCP 端口48898 (标准 / 不建议更改)
Target AMS NetId (target-netid)目标 IPC 的 AMS NetId — 留空则自动使用 IP주소.1.1192.168.0.80.1.1
Target AMS 端口 (target-port)TwinCAT 运行时端口851 (TwinCAT 3 PLC) / 801 (TwinCAT 2 PLC1)

其他选项:source-netid / source-port (网关侧的 AMS 标识符 — 默认 32905)、 connect-timeout / read-timeout (ms,默认 3000)。旧的选项键写法 (ams-net-id / ams-port / target-ams-net-id / timeout-request) 已废弃。

AmsNetId 格式

采用 a.b.c.d.1.1 形式的 6 个八位组。通常是在 IPC 的 IP 地址后加上 .1.1,但以 TwinCAT System Manager 中显示的 NetId 为准。查看位置:系统托盘的 TwinCAT 图标 → Properties → AMS NetId。

Route 注册(必需)

ADS 要求双方互相知晓对方的 NetId 才能通信。网关首次呼叫 PLC 时,PLC 侧会弹出 Add Route Dialog 或直接被拒绝。请在 TwinCAT System Manager → RoutesAdd 中添加网关的 IP / NetId,并确认 TwinCAT 许可证处于 valid 状态。

许可证过期将拒绝通信

对于 TwinCAT 3,30 天试用版到期后 ADS 响应会中断。请先在 License Manager 中检查许可证状态。


标签的 PLC 地址表示法

ADS 支持两种访问方式。

1. 内存区域直接访问 (Indexed)

表示法含义
M0:4内存区域 (M%) offset 0,4 byte
I0:2输入区域 offset 0,2 byte
Q0:2输出区域 offset 0,2 byte

格式为 <area>:<offset>:<size>。size 以 byte 为单位。

2. 符号访问 (Symbolic)

表示法含义
MAIN.fCounterMAIN 程序的 fCounter 变量
MAIN.fCounter:REAL指定数据类型 (32-bit 实数)
GVL.bRunning:BOOLGlobal Variable List 中的 bRunning

使用符号表示法时,PLC 侧必须具备 TPY (TwinCAT 2) 或已完成符号下载 (TwinCAT 3 → Build → Activate Configuration)


数据格式匹配

PLC 中的值数据格式格式辅助PLC 地址示例
BOOLBoolean(留空)GVL.bRunning:BOOL
BYTE / SINTIntegerBMAIN.bByte:BYTE
INT (16-bit)Integer(留空)MAIN.nCount:INT
DINT (32-bit)IntegerDWMAIN.nTotal:DINT
REAL (32-bit 实数)FloatREALMAIN.fTemp:REAL
LREAL (64-bit 实数)DoubleLREALMAIN.fPos:LREAL
STRING(80)StringSTR[80]MAIN.sName:STRING

常见问题与解决方法

现象 / 消息可能原因解决方法
“No route to host”未注册 Route在 TwinCAT System Manager → Routes 中添加网关
“Target port not found”AmsPort 与系列不匹配重新确认 TC2 = 801,TC3 = 851
“Symbol not found”未执行符号下载在 TwinCAT 3 中执行 Activate Configuration 后重试
所有值为 0TwinCAT 不处于 RUN,而是 STOP / CONFIG 模式在 System Manager 中切换到 RUN
许可证错误试用版到期在 License Manager 中更新许可证

常用示例

标签名称PLC 地址数据格式格式辅助
运行中标志GVL.bRunning:BOOLBoolean(留空)
计数器MAIN.nCount:DINTIntegerDW
温度MAIN.fTemp:REALFloatREAL
批次名称MAIN.sBatch:STRINGStringSTR[80]

更详细的示例 / 自动化注册

请参考高级 — REST API 中的 ADS 示例。