当前位置: 主页 > PLC控制

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

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

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

图片说明:

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

最佳答案

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

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


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

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

专家置评

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

  • 关注微信

猜你喜欢

微信公众号