| 作者 | 主题 |
|---|---|
|
小oo鱼 侠客 经验值:705 发帖数:70 精华帖:3 |
楼主
主题:Variant使用的不解
看了很多大师关于参数类型Variant使用的帖子,受益良多,感谢了。 有人说Variant比ANY好用和灵活,我始终不能理解, ANY能读取实参的首地址,数据类型和长度后,可以访问实参的所有元素,在函数(块)中做自己想要的功能, 而大神的Modbus轮询程序从本质上讲,就是在对从Variant接口复制来的Struct在处理,Variant的实际参数也是ARRAY 的 相同的Struct,然后用Move_BLk_Variant或者VariantGet和VariantOut复制实际值到函数(块)中的背景Struct,这样的方法与建个Struct的参数本质是一致的。 还有大神做了个Variant简单的程序(int,dint,real.../2的程序),无非是不在关注实参的数据类型了,而是在函数中关注。 那么这样的办法比ANY的优势在哪里呢?也许我还没有理解Variant和其相关的指令的灵活运用,希望继续探讨。@各大版主和大神……^^ |
|
小oo鱼 侠客 经验值:705 发帖数:70 精华帖:3 |
1楼
主题:回复: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 |
|
Zane 版主 经验值:85161 发帖数:21047 精华帖:399 |
2楼
主题:回复:Variant使用的不解最大优势就是优化编程
Zane
注册自动化系统工程师
Always save before download
|
|
YiMoon 至圣 经验值:11740 发帖数:1228 精华帖:36 |
3楼
主题:回复:Variant使用的不解MOVE_BLK_VARIANT COUNT :=1 SRC_INDEX :=0 DEST_INDEX :=0 如果SRC/DEST是非数组,只能是这样设置才能正确执行程序。 楼主非要按照300/400的编程思想,来使用PORTAL,还不让用PEEK/POKE。PORTAL都去指针化,推荐符号编程了,使用POK_BLK不正好可以很方便的达到楼主的要求吗? 想更好的使用PORTAL,请楼主忘记300/400的编程方式吧。
Keep calm and carry on!!!
|
|
小oo鱼 侠客 经验值:705 发帖数:70 精华帖:3 |
5楼
主题:回复:Variant使用的不解感谢回复,我正是希望摒弃300的编程方式,才来救助是否有其他的途径来解决的。 我想能不能从这个点来挖掘Variant的用法,因为相比较ANY,我对Variant及相关指令理解不透彻。函数接口中的Variant参数只是将实参整体的引入到了函数,还没有对其分解,(除了使用序列化指令可以分解成数组),Variantget要求输入输出数据类型一致,例如如果实参是结构体,则要求函数内部有与其对应的结构体,那么,着样的操作与使用结构体作为函数的参数有何区别呢,自然就没有发挥出Variant的所谓优势。到目前为止我只觉得序列化和反序列化比较有实际用途,与AT功能差不多。 @YiMoon能继续举例说明Variant的用法吗 |
|
YiMoon 至圣 经验值:11740 发帖数:1228 精华帖:36 |
6楼
主题:回复:Variant使用的不解不要为了使用VARIANT而VARIANT,有些场合是不适合的。像这种地址的操作,本来VARIANT的设计就是用来处理符号编程方式 的。为什么PORTAL要设计PEEK/POKE指令,就是来处理地址操作的。 楼主可以看下专家的讲解:崔工说事连载 https://www.ad.siemens.com.cn/club/bbs/PostStory.aspx?a_id=1615579&b_id=84&s_id=&num=3#anch
Keep calm and carry on!!!
|
|
Letham 至圣 经验值:14191 发帖数:2021 精华帖:43 |
23楼
主题:回复:Variant使用的不解S7-1200 不支持ANY,这点是没有疑问的
人生就像一场旅行!
|