西门子的AT访问详解

西门子的AT访问详解

AT访问

AT访问是访问参数内的数据区域。
可以通过附加声明来覆盖所声明的参数。这样可以选择对不同数据类型的已声明参数进行寻址。
例如,可以使用 Bool 的 Array 对 Word 数据类型参数的各个位寻址

测试

为了能看到清楚的地址,将优化DB转换成标准的DB。

在这里插入图片描述

新建一个INT变量,然后在下面选择数据类型AT。
注意如果DB块不是标准DB则不会显示AT数据类型。

在这里插入图片描述

此时自动命名了一个Input_1的变量,但是数据类型还是INT。

在这里插入图片描述

修改数据类型为BOOL的数组和BYTE字节。
注意对于 S7-1200 中的 FC 使用 AT,覆盖参数和被覆盖参数的数据长度必须相同。
一个INT里包含两个BYTE,16个BOOL。

在这里插入图片描述

写一段SCL程序段,用FOR循环传递。

在这里插入图片描述

此时调用FB块,接口赋值125。

在这里插入图片描述

验证

首先验证BOOL地址。

在这里插入图片描述

由此可以得知低8位是BOOL[8]-BOOL[15],高位为0,对应二进制就是0111-1101。
转换成十进制就是125。

在这里插入图片描述

由此可知低位是BYTE[1],高位为0,只要算低位,16#7D转换成十进制就是125。

在这里插入图片描述

具体地址参考:

在这里插入图片描述

如果设置范围超限会编译报错。

在这里插入图片描述

使用注意事项

1.在 LAD、FBD 和 SCL 中,允许参数覆盖。

2.可以在以下块中覆盖参数:

在标准访问的代码中(FB、FC)
优化 FB 中激活了 “在 IDB 中设置”的参数
S7-1200 的 OB 一定是优化块,所以 OB 不支持 AT 功能

3.覆盖参数数据宽度必须小于等于被覆盖参数的数据宽度。

4.不可以覆盖 VARIANT 数据类型的参数。

5.多重实例声明不能覆盖。

6.如果被覆盖参数的数据类型为字符串、字节数组、字符数组等,那么其长度应与偶数个字节数对应。

7.无法覆盖库中声明为接口中参数的块。

8.无法覆盖接口中声明为参数的结构化 PLC 参数。

9.无法通过片段访问对覆盖参数进行寻址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值