S7-300中怎样访问DB块中的一维数组元素?

我的程序中定义了一个DB4,里面定义了INT类型的一维数组,请问怎样在程序中访问数组某个元素呢?比如我要将数组的第一个数据存入MW500,该怎样编程呢?

问题补充:
谢谢各位的回答,我是用梯形图编写的传送程序,可是只要有这句传送语句,下载到PLC时编译就通不过,难到不能用梯形图编写访问数组元素的程序吗?

图片说明:

S7-300中怎样访问DB块中的一维数组元素?    S7-300中怎样访问DB块中的一维数组元素?   

最佳答案

1:访问数组某个元素?不就是数组名称+索引吗,拿你的例子,就是DB4.RECEIVE[0],它是第一个元素.
2:把第一个数组元素值放入 MW500,就是
L  DB4.RECEIVE[0]
T MW500
另外 素组索引可以从1开始。
你的问题就这么简单吗?

如果,根据索引号,把数组里 某个元素值送到MW500里去,那还有的一说,需要指针。
比如把数组中RECEIVE[MW0]个元素值放到MW500中。不好意思西门子只有SCL语言可以这样RECEIVE[MW0]  表示数组元素,同时只有STL语言支持指针,所以只能给STL代码了,
OPN DB4  //打开数据块
L MW0 //MW0范围从0到1000
 L 2//int型占2个字节
*I
L MW100 //可选,你的数组在数据块中的偏    //移地址,在你的例子中MW100是0.
+I
ITD
SLD 3 //化为指针地址
T MD4
L DBW[MD4]
T MW500


补充:LAD 里也可以,但是你的问题根本就和 数组无关,出题出在M区,每个CPU 的M区大小都是不一样的,估计你的CPU 的M 区 估计只有256 ,也就是你的MW500 超过了你的CPU 的M区限制了,把MW 500 改为MW256 以内的看看吧!

提问者对于答案的评价:
感谢你的解答,最后我找到自己的问题了出在哪里了,原来我使用的CPU313C最大的M地址是255,MW500超过了最大地址范围!

专家置评

提问者的问题不明确,但回答还是正确的。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc228483.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月1日 上午3:15
下一篇 2018年12月1日 上午3:15

相关推荐