恭喜,你发布的帖子
发布于 2017-03-15 15:49:50
11楼
所以回到了我最前面的问题,程序段2“变量”指向的是“字节8”,它和与之比较的“字节6”都是BYTE型的,为什么比较结果为0?
琢磨了这么久,把这个问题想明白了,我写P#DB3.DBX3.0 BYTE 1,这是一个ANY型指针,我网上看到了这么一句话:
“S7-1200中任意非优化变量写成任意ANY指针格式,指令都会将其认作数组。例如一个REAL数组,写成P#INT就会被认为为2倍元素个数的INT数组,例如一个TIME类型,写成P#DWORD,会认为是一个元素的DWORD数组。
所以程序段2的比较结果为0。”
要比较两个变量的数据类型是否相同,正确的做法是,把比较指令放在子程序里面,变量用variant型的接口来传输,这样传输过来的数据才是变量本身,而不会被认作数组。
说一段我的理解,帮我看看是否正确:
ANY是一个指针,它可以绝对寻址提取数据,并且是根据其指定的起点和长度来决定,不受被提取的数据的数据类型影响。
variant是一个接口,主要用于子程序接口传输数据,它是一个万能接口,任何数据类型都可以从中传输。
请填写推广理由:
分享
只看
楼主