找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
1、要读懂这段程序所需的知识点,是需要清楚有关指针间接寻址的方法。
2、首先要掌握指针+AR1与+AR2的数据格式:
地址寄存器是专门用于寻址的一个特殊指针区域,西门子的地址寄存器共有两个:AR1和AR2,每个32位。
、AR的数据格式1:
0000 0000 0000 0BBB BBBB BBBB BBBB BXXX
其0-2bit,指定bit位,3-18bit指定byte字节。其第31bit固定为0。这样规定,就意味着AR的取值只能是:0.0 ——65535.7
例如:当AR=D4(hex)=0000 0000 0000 0000 0000 0000 1101 0100(b),实际上就是等于26.4。
、AR的数据格式2:
AR:
1000 0YYY 0000 0BBB BBBB BBBB BBBB BXXX
比较两种格式的不同,我们发现,这里的第31bit被固定为1,同时,第24、25、26位有了可以取值的范围。聪明的你,肯定可以联想到,这是用于指定存储区域的。对,bit24-26的取值确定了要寻址的区域,它的取值是这样定义的:
区域标识符
26、25、24位
P(外部输入输出)
000
I(输入映像区)
001
.......。
在此不一一赘述,详细的定义见下述资料。
2、关于程序:
L DB10.DBW210
L 4
*I
T MD120//将 DB10.DBW210中的内容乘以4的结果送入MD120中
SLD 3//MD120中数据左移3位,其目的就是要形成上述的AR的数据格式1:
0000 0000 0000 0BBB BBBB BBBB BBBB BXXX
LAR1 //将形成的数据保存到指针AR1中。
其他指令见下述资料。
3、要想全面掌握指针寻址的知识点,建议系统看看下述资料,读后再遇到指针寻址的问题就不求人了:
、《step7编程之地址概念详解》连接:
http://wenku.baidu.com/view/b2b4d3375a8102d276a22fd3.html
或
http://www.chinakong.com/rencai/disp.asp?id=1633&leibie=4
、《关于S7-300和S7-400指针寻址的说明与例程(更新版)》下载:
http://www.ad.siemens.com.cn/download/SearchResult.aspx?searchText=F0215
、《西门子STL间接寻址常问问题集》
http://www.ad.siemens.com.cn/download/docMessage.aspx?
ID=6175&loginID=&srno=&sendtime=
AR1是间接寻址的一个变量,这里对应是DB10.DBW210*4,假如DB10.DBW210是20,DB30.DBD30是100.0,DB31.DBD30是150.0, 那么DBD[AR1,P#300.0]对应的地址是
DB40.DBD[80+300]为,DB40.DBD380,DB40.DBD380=(DB30.DBD30+DB31.DBD30)/2
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
找答案微信小程序
提问
搜索
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!