恭喜,你发布的帖子
发布于 2020-04-01 18:43:57
1楼
看了很多大师关于参数类型Variant使用的帖子,受益良多,感谢了。
有人说Variant比ANY好用和灵活,我始终不能理解,
ANY能读取实参的首地址,数据类型和长度后,可以访问实参的所有元素,在函数(块)中做自己想要的功能,
而大神的Modbus轮询程序从本质上讲,就是在对从Variant接口复制来的Struct在处理,Variant的实际参数也是ARRAY 的 相同的Struct,然后用Move_BLk_Variant或者VariantGet和VariantOut复制实际值到函数(块)中的背景Struct,这样的方法与建个Struct的参数本质是一致的。
还有大神做了个Variant简单的程序(int,dint,real.../2的程序),无非是不在关注实参的数据类型了,而是在函数中关注。
那么这样的办法比ANY的优势在哪里呢?也许我还没有理解Variant和其相关的指令的灵活运用,希望继续探讨。@各大版主和大神……^^
https://www.ad.siemens.com.cn/service/answer/solution.aspx?Q_ID=135233&cid=1077
将MWX开始的10个Word move到MWX+100开始的10个Word,用ANY很容易实现,请问用Variant及相关指令怎么实现(不能用PEEK/POKE).
MOVE_BLK_VARIANT的scr指向数组和数组的元素,如果指向M区,同时要求
COUNT :=1
SRC_INDEX :=0
DEST_INDEX :=0才能正确执行,而且Move的是一个元素,这个比如是不是比如的有问题?
程序如下:
L P##PointerAddr
LAR1
L D [ AR1 , P#6.0 ]
T #StartAddr
L 10 //Count
_001: T #LENs
L #StartAddr
L P#100.0 //offset
+D
T #DstAddr
L MW [ #StartAddr]
T MW [ #DstAddr]
L #StartAddr
L P#2.0
+D
T #StartAddr
L #LENs
LOOP _001
请填写推广理由:
分享
只看
楼主