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.无法通过片段访问对覆盖参数进行寻址。