LAR1这条指令我看了帮助文件,是将ACCU1内容装载到地址寄存器AR1中,我的疑问在于LAR1后面不跟任何东西,但在标题中的语句中LAR1后面却跟了 P##Source(其中#Source为ANY类型),这条语句到底是什么意思呢?
最佳答案
可能你看到的语句表程序是从SCL转换过来的,在STL的编程里都是这么写的:
L P##Source
LAR1
程序的意思是将Source里指针数据传递给地址寄存器里里,如果是ANY指针的话,包括了数据的类型,数据的长度,DB块号和指针地址的信息;一般还要进行以下的应用:
L W[AR1,P#2.0]
T LW0 //数据长度
L W[AR1,P#4.0]
T LW2 //DB块号
L D[AR1,P#6.0]
T LD4 //地址指针
https://support.industry.siemens.com/cs/document/79632832/s7-300和s7-400寻址?dti=0&lc=zh-CN
提问者对于答案的评价:
对于 LAR1 P##Source这条语句,#Source是局部临时变量,而P#后面不是应该是比如P#26.2或者P#M26.2这种格式的吗?那就是说#Source代表的是26.2或者M26.2,而#Source是ANY类型的,那是不是就可以认为ANY格式可以“变成”指针格式?但在ANY帮助文件里ANY格式没有“变成”指针格式的啊。。?
最佳答案作者回复:
链接里的资料有说明,可以看下。我的理解是P#就是取指针地址的,ANY指针包含的信息还是比较多的,一个比较经典的使用就是利用ANY指针实现两个DB块数据的数据的拷贝;比如,写一个FC块,IN数据里定义两个ANY指针,在调用这个FC块的时候,赋值给IN定义的两个ANY指针。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc167714.html