Beckhoff ADS
通过 ADS/AMS 连接倍福 TwinCAT PLC:AMS 路由、运行时端口、符号路径和读取长度。
Beckhoff ADS 驱动通过 ADS 和倍福 TwinCAT PLC 对话,也就是承载在 AMS 路由上的那个 TwinCAT 自动化协议。你按 PLC 程序里的符号路径来寻址数值,所以你打进去的就是 TwinCAT 项目声明的那个。在 Connector 里的 Beckhoff ADS 驱动下面添加一台设备;面板只显示这个协议用得到的那些字段。
连接
| 字段 | 含义 | 默认值 |
|---|---|---|
| 主机 | PLC 的 IP 地址。它的 AMS Net Id 由这个地址推成 {ip}.1.1。 |
空 |
| 端口 | 目标运行时的 AMS 端口。填 0 就用 851,也就是 TwinCAT 3 的第 1 个 PLC 运行时;再往后的 TwinCAT 3 运行时从那里往上数(852、853、……)。 | 0 |
| 本机 IP(AMS) | 本工作站自己的 IP 地址,它的 AMS Net Id 由此推成 {ip}.1.1。它必须和 PLC 上配置的 AMS 路由对上。留空时会拿“主机”的值来用,那只有在两端共用同一个地址时才行得通,所以实际部署里请把它填上。 |
空 |
| 轮询间隔(毫秒) | 整台设备的读取周期,供没有自己另作规定的点位使用。 | 1000 |
设备标题栏显示拼好的端点,例如 ads://192.168.0.1:192.168.0.50:851(本机 IP、PLC IP、AMS 端口)。每个点位都可以设自己的轮询间隔(毫秒);点位填 0 就退回设备的间隔。
ADS 只应答 PLC 认识的那些站:请在 PLC 上加一条静态 AMS 路由(TwinCAT Engineering 里的 SYSTEM → Routes,或者 TwinCAT 的系统托盘图标),它的地址是本工作站的 IP,它的 AMS Net Id 是那个 IP 后面跟 .1.1,和驱动从本机 IP(AMS)推出来的那个一致。没有这条路由,即使网络通路完全正常,连接也会失败。
寻址
Beckhoff 的点位靠点位“来源”卡片里的两个字段寻址:
| 字段 | 含义 | 接受的取值 | 默认值 |
|---|---|---|---|
| 符号 | 这个变量在 PLC 程序里的符号路径。必填。 | 自由文本,例如 MAIN.fValue |
空 |
| 读取长度(字节,留空 = 自动) | 每次读取传输多少字节。留空就按数据类型定读取的大小。 | 1 及以上,或留空 | 留空 |
符号路径就是 TwinCAT 显示的那个:程序变量写作 MAIN.fValue,全局变量列表写作 GVL.MachineSpeed 或 GVL_Settings.rSetpoint。驱动在 PLC 上按名字解析这个符号,并读它的原始字节。自动的读取长度是:
| 数据类型 | 自动读取长度 |
|---|---|
| Boolean | 1 字节 |
| Int32 | 4 字节 |
| Float | 4 字节 |
| String | 16 字节 |
文本长于 16 个字符时,请把读取长度设到能覆盖声明的大小(一个 TwinCAT 的 STRING(80) 需要 80 字节的文本)。“来源”卡片里那行只读的来源地址(总线)会随着你编辑显示拼好的地址。
数据类型
数据类型选择器提供驱动能编排的那四种类型:
| 数据类型 | PLC 里的对应物 | 说明 |
|---|---|---|
| Boolean | BOOL | 1 字节,非零为真 |
| Int32 | DINT | 小端序,和 PLC 一致 |
| Float | REAL | 小端序,和 PLC 一致 |
| String | STRING | 读缓冲区里直到第一个 NUL 为止的文本 |
字节序就是 PLC 自己的小端序,由驱动自动处理;没有字节序选项。文本读取会把返回的缓冲区解码到第一个 NUL 结束符为止,所以一段短文本后面的填充绝不会漏进这个值里。别的 TwinCAT 位宽(INT、LREAL、WORD、……)不提供:请在 PLC 程序里把这样的变量以上面那四种类型之一暴露出来,再在这里读。
写入
访问方式为读写或只写的点位可以被写。一次写入会解析同一个符号,并写下这个值的字节:布尔 1 字节,Int32 和 Float 各 4 字节。文本写入会铺满这个点位整个读取长度:前面是文本的 UTF-8 字节,后面是零,所以用一段短文本盖住一段长文本时,整个值都被替换掉,旧的一点儿都不剩。装不进声明长度的文本会被拒绝,长度写进诊断日志,绝不会被截短了塞进去。新点位一开始是只读。
设备发现
这个驱动里的 ADS 没有广播式的设备发现,所以 Connector 不显示“发现设备”按钮。设备和它的符号请手工添加。
需要知道的事
- 第一次连接失败,通常的原因就是 AMS 路由:PLC 上那条路由的 AMS Net Id 必须恰好是工作站 IP 加上
.1.1。 - 符号是每次读取都按名字解析的,所以一次给符号改名或删掉符号的 PLC 下载,会让它的点位变成质量不可用,直到名字重新对上为止。
- 一台够不着的 PLC 在启动时不花什么代价:设备在后台一直重试,在连接接上之前它的点位读作质量不可用。