数据传送指令BLKMOV_D是否可以传送指针地址

例如,我想把vd0~vd4共两个双字传送到vd100以及vd104,是否可以使用“&vb0”通过“BLKMOV_D”传送给“vd100”?
是传送地址,不是传送数据

问题补充:
谢谢大宝森工程师回答,想再问问,因为我是用来读取多个从站的modbus数据时,想作为中转地址而简化程序。
例如我想把从站1的“vd0~vd14”的地址传送到“vd2000~vd2014”。从站2的“vd20~vd34”传送到“vd2000~vd2014”。从站3…………如此类推(通过轮询)。
是不是将起始地址“&vb0传送到vd0”,将结束结束地址“&vb14传送到vd14”,再通过“BLKMOV_D”就可以传送vd0~vd14之间所有的地址?

最佳答案

直接用 “&vb0”通过“BLKMOV_D” 不行;
BLKMOV_D  双字块传送指令将已分配数据值块从源存储单元(起始地址 IN 开始的连续地址双字数据)传送到新存储单元(起始地址 OUT 开始的连续存储单元)。参数 N 分配要传送的双字数。存储在源单元的数据值块不变。它本身是传送连续存储区数据的,传送不了地址。
要想传送地址,可以按下列方法进行操作
可以先将存储单元  VB0 的地址传送进 VD0,VB4 的地址传送进 VD4,然后用 
 BLKMOV_D 指传送。 如图
补充:
第一:你确认一下vd 2000~vd2014 对不对,我计算了一下,这是18个字节,字节数不是 4 的整数倍。
第二:想法是对的,如果不能保证块传送都是同类型的,可以用 BLKMOV_B 指令,用字节块传送的方式,这时管脚 N 就是要传送的字节数。

图片说明:

数据传送指令BLKMOV_D是否可以传送指针地址  

提问者对于答案的评价:
感谢提供了一个思路,谢谢!

最佳答案作者回复:
好,互相的帮助学习

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

(1)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日
下一篇 2021年7月5日

相关推荐

发表回复

登录后才能评论