当前位置: 主页 > PLC控制

求解S7-300STL程序

LDW#16#84000000
T#afPointerBuffer
L#nSTepNo
L1
-I
L2
*I
L#nStartAddress
+I
L8
*I
ITD
L#afPointerBuffer
OD
T#lPointer

OPN"RecipeParametersDB"
L#RPPointer
LAR1
LDBW[AR1,P#0.0]
T#nReturnValue

问题补充:
请高人帮忙翻译一下,最好每条都加上备注。特别是乘以8的作用是什么。

最佳答案

1、首先要理解指针寻址的格式:
、当是对DB区域寻址时指针为:AR=840xxxxx。
、32位指针为:其0-2bit,指定bit位,3-18bit指定byte字节。其第31bit固定为0。  
  AR:  0000000000000BBBBBBBBBBBBBBBBXXX  
、例如: 当作为双字指针时,就应该按照3-18bit指定byte,0-2bit指定bit来确定最终指令要操作的地址,例如: 
  00000000000000000000000000001010=1.2 
2、程序
LDW#16#84000000
T#afPointerBuffer//缓存区指针设置为对DB区域寻址。
L#nStepNo
L1
-I
L2
*I
L#nStartAddress//#nStepNo减1,再乘以2,再与#nStartAddress相加
+I
L8
*I
ITD//上述之和乘以8.,形成32位指针格式(见上述)。
L#afPointerBuffer
OD
T#lPointer//形成32位指针与缓存区指针与形成lPointer
OPN"RecipeParametersDB"//打开数据块
L#RPPointer
LAR1//j将#RPPointer装入AR指针
LDBW[AR1,P#0.0]
T#nReturnValue //取AR指针指示的地址中的数据存入#nReturnValue中。
程序中的减1,再乘以2,再与#nStartAddress相加,这需要你自己根据你的数据格式来理解了,从程序中是看不出来。
3、单从上述程序不可能全面了解指针寻址,建议先看看,看就明白了,以后就不求人了:
见《关于S7-300S7-400指针寻址的说明与例程(更新版)》下载
htTP://www.ad.siemens.com.cn/download/SearchResult.ASpx?searchText=F0215
《S7-300/400PLCANY指针使用详解》连接:
http://blog.sina.com.cn/s/blog_669692a601019hvt.html
4、特别是乘以8的作用是什么?
乘以8就是要形成指针格式,见上述。

提问者对于答案的评价:
感谢阿鸣老师共享的STL相关资料,通过它大体搞懂了指针的用法。在此还是要感激艾星落尘的详细解答。

  • 关注微信

猜你喜欢

微信公众号