W#16#1002

L  W#16#1002  //  
T LW[AR1, P#0.0]


麻烦分析一下W#16#1002  ,这个16进制表示的字
这一句有什么意义吗?有什么作用?谢谢啊

最佳答案

1:你的L W#16#1002 之前应该还有,类似下面的语句 L P##XXX。XXX应该是临时变量里面一个类型为ANY的变量。
2:你所说的语句是对ANY参数类型进行分析的语句(建议你 打开STEP7,然后选择帮助,在帮助文件 里面搜索“POINTER”,然后 找到ANY,进行查看)。
ANY类型占10字节
比如P#DB1.Dbx0.0 Byte 10
BYTE 0  对于S7PLC 固定是16进制10
BYTE 1  对应 数据类型,2代表是BYTE。
BYTE2到3 是重复系数,相当于P#DB1.DBX0.0 BYTE 10的数字10.
BYTE 4到5 是DB号,如果 为0,则是非DB区。
BYTE 6到9 是32位指针,即相当于P#DB1.DBX0.0 BYTE 10中的指针地址 DBX0.0 即DW#16#84000000

对于你的程序 完整应该如下
如果XXXANY类型的指向P#DB1.DBX0.0 BYTE 10.那么对XXX的分析过程如下
LAR1 P##XXX
L W#16#1002
T LW[AR1,P#0.0]
 L  MW100//变量或者常数10
T LW[AR1,P#2.0]

L MW102//或者采用常数10,用变量程序随时可以更改DB号到10或者11等。
T LW[AR1,P#4.0]//代表DB10

L DW#16#84000000//或者00000000或者P#DBX0.0  是32位指针
T LD[AR1,P#6.0]


以上就是 对ANY的完整分析,这样 再调调用SFC20或者SFC21等带有ANYIN,IN_OUT,OUT参数类型接口时,对里面的ANY接口赋值时你就不必以P#DB1.DBX0.0 BYTE 100的形式输入了,在对XXX ANY类型进行赋值后,直接将XXX填进接口参数就行。
希望你明白了吧,。这样做的好处是,可以对ANY类型的接口参数,根据自己的需要,随时指向别的存储区域。

提问者对于答案的评价:
谢谢,知道你们说的什么了,我还要再研究研究。

专家置评

已阅,最佳答案正确。

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月1日 上午3:42
下一篇 2018年12月1日 上午3:43

相关推荐