-
-
hypermill9 | 当前状态:在线
总积分:7709 2024年可用积分:0
注册时间: 2007-02-07
最后登录时间: 2023-08-18
-
variant数据类型如何做指针寻址?
hypermill9 发表于 2016/6/15 12:59:18 2212 查看 6 回复 [上一主题] [下一主题]
手机阅读
想用一个MB_MASTER读2个从站,通过修改DATA_PTR管脚使2个从站的回复数据分别缓存到各自到通信缓存区。通过切换缓冲区来读写数据,其中涉及到variant数据类型如何做指针寻址?
-
-
zhanghe 发表于 2016/6/15 13:58:26
好问题。variant to dbany, 然后可以打开了。
但是我的分享贴里的例子你可以参考,换一种思路来编s7-1200,s7-1500 的间接寻址,不用指针,而是使用符号寻址。
引用 zhanghe 2016/6/15 13:58:26 发表于2楼的内容
-
-
-
zhangmengmeng | 当前状态:在线
总积分:1958 2024年可用积分:2
注册时间: 2013-12-26
最后登录时间: 2023-08-14
-
zhangmengmeng 发表于 2016/6/15 20:29:54
楼主走偏了, 你不能为了用指针而用指针。 象你这个要求根本就不需要用指针来完成啊。 比如我提供一个方法:
你有30个从站,假设站号为1~30。 那么在你的DB块里建立31个数组, 其中1~30号的数组对应1~30号的从站返回报文。 而数组0则对应的你调用MB_Master指令的DATA_PTR的实参。
然后后续程序利用 DONE标志和站号就可以将数组0分别赋值给数组1~30... ...
引用 zhangmengmeng 2016/6/15 20:29:54 发表于3楼的内容
-
-
-
bonbo 发表于 2016/6/15 21:42:47
我遇到同样的问题,用SCL也没找到更好的办法,因而我就做了一个数据整理FB,专门来把当前要发送的数据放到指针所指的位置。
做起来简单,工作量很小,效果不错
引用 bonbo 2016/6/15 21:42:47 发表于4楼的内容
-
-
luck 发表于 2016/6/15 22:18:31
哈哈,我也是这样。如果事情太多(都在催),就干脆不做了。玩。
(其实是在理清头绪,从哪里入手。)
有的事情,简单,但催的不紧;
有的事情,复杂、麻烦,但催得紧。
有的事情,效益高;
有的事情,收效低。
引用 luck 2016/6/15 22:18:31 发表于5楼的内容
-
-
martion 发表于 2016/6/16 16:19:55
其实博途里的赋值语句是功能很强的。 不光是我们常见的数据类型(位,整数,浮点数等)可以赋值, 结构变量也可以赋值,数组也可以赋值,甚至于整个数据块都可以直接赋值呢! 多用一用,你就会发现,其实完全可以脱离以前老版STEP7的指针寻址的概念了, 老版的STEP7讲究的是以绝对地址为基础,而博途则是以符号名称为基准,同时在一定的特殊场合又保留了部分的绝对地址的指令操作,所以可以说即提高了程序的安全可读性,又保留了一定的灵活性... ...
引用 martion 2016/6/16 16:19:55 发表于6楼的内容
-
-
martion 发表于 2016/6/18 11:38:07
我发现我最近是事太多了反而不想做了,天天逛论坛了,呵呵。 刚试了一下,用二维数组从程序结构上就会更简单......
同上面的贴子,假定从站号为1~30, 那么首先iSlave对应的是当前需要读取的从站号, 一维数组pData对应的是DATA_PTR, 然后二维数组aData对应每一个从站读回的数据
引用 martion 2016/6/18 11:38:07 发表于7楼的内容