今天跟大家聊聊SCL指令中的数组指令ARRAY[*]
在博途S7-1200 SCL指令中的数组指令主要包含两个指令:LOWER_BOUND(读取下限)和UPPER_BOUND(读取上限)两个指令,
![8a00c78a16603e4b59d00da2fea74e76.png](https://img-blog.csdnimg.cn/img_convert/8a00c78a16603e4b59d00da2fea74e76.png)
当然了在进行数组寻址时不是只用这两个指令,而是在函数块或函数的块接口中,可声明 ARRAY[*] 数据类型的变量。这些局部变量可读取 ARRAY 限值。
1、指令的参数
![c3d3b4db0ae05e02ff1aed9507e1b9db.png](https://img-blog.csdnimg.cn/img_convert/c3d3b4db0ae05e02ff1aed9507e1b9db.png)
以下示例说明了该指令的工作原理:
SCL
"Result" := LOWER_BOUND(ARR := #ARRAY_A,
DIM := 2);
该指令将从第二维度读取 ARRAY #ARRAY_A 的可变下限值。如果成功执行该指令,则结果将写入操作数“Result”中。
SCL
"Result" := UPPER_BOUND(ARR := #ARRAY_A,
DIM := 2);
该指令将从第二维度读取 ARRAY #ARRAY_A 的可变上限值。如果成功执行该指令,则结果将写入操作数“Result”中。
2、具体举例说明
功能要求:
把数据块src.src2数组里的数据循环传送到数据块dest.dest2。
A、首先建立一个PLC数据类型test,如下图所示
![6bad74d6e2fa39e16256985b31cbae17.png](https://img-blog.csdnimg.cn/img_convert/6bad74d6e2fa39e16256985b31cbae17.png)
B、在建立的数据块中增加如下数组和变量
在数据块src中增加数组src2:
![eb0a0cd90b3a6ec3a7a81d98b43eff17.png](https://img-blog.csdnimg.cn/img_convert/eb0a0cd90b3a6ec3a7a81d98b43eff17.png)
在数据块dest中增加dest2:
![c7007f5ea261340f3f7183c975b963df.png](https://img-blog.csdnimg.cn/img_convert/c7007f5ea261340f3f7183c975b963df.png)
C、建立一个FB,并在输入输出接口区设置如下:
![3b951bc4c8519983939bb9458614c635.png](https://img-blog.csdnimg.cn/img_convert/3b951bc4c8519983939bb9458614c635.png)
C、使用SCL编程如下
![00d40a0fca816c167b58fae76ec20318.png](https://img-blog.csdnimg.cn/img_convert/00d40a0fca816c167b58fae76ec20318.png)