找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
DB1是共享数据块,DI是背景数据块。
1、ACCU1中的16#85000000是从哪里来的?
16#85000000是从你程序中的变量#My_pointer中来的,即变量#My_pointer中的内容是16#85000000。
16#85000000:AR=850xxxxx,表示是对DI区域寻址。
、看程序:
L P##My_pointer //将地址指针 P##My_pointer(16#85000000)存入ACCU1中
LAR1 //将ACCU1中内容送入地址指针AR1中。
L W [ AR1 ,P#0.0] //地址指针AR1=#85000000+偏移量0.0,取DI区域的第0个字中的内容。
T MW0 //将上述DI区域的第0个字中的内容(为1)存入 MW0中。
L W [ AR1 ,P#2.0] //地址指针AR1=#85000000+偏移量2.0,取DI区域的第2个字中的内容。
T MW2 //将上述DI区域的第2个字中的内容(为8400)存入 MW2中。
L W [ AR1 ,P#4.0] //地址指针AR1=#85000000+偏移量4.0,取DI区域的第4个字中的内容。
T MW4 //将上述DI区域的第4个字中的内容(为59)存入 MW4中。
2、为什么ACCU2变成了16#85000000?
、见程序:
L W [ AR1 ,P#0.0] //地址指针AR1=#85000000+偏移量0.0,取DI区域的第0个字中的内容装入ACCU1。此时,ACCU1原内容保存在ACCU2中,所以ACCU2变成了16#85000000。
请见L 装载指令的特性,见截图。
3、有关资料详见:
、《用于S7-300 和S7-400 的语句表(STL)编程手册》下载:
https://support.industry.siemens.com/cs/document/45523446/simatic-%E7%94%A8%E4%BA%8Es7-300-%E5%92%8Cs7-400-%E7%BC%96%E7%A8%8B%E7%9A%84-%E8%AF%AD%E5%8F%A5%E8%A1%A8-(stl)-%E5%8F%82%E8%80%83%E6%89%8B%E5%86%8C?dti=0&lc=zh-CN
、《关于S7-300和S7-400指针寻址的说明与例程(更新版)》下载:
http://www.ad.siemens.com.cn/download/searchResult.aspx?searchText=F0215
、《step7编程之地址概念详解》连接:
http://wenku.baidu.com/view/b2b4d3375a8102d276a22fd3.html
或
http://www.chinakong.com/rencai/disp.asp?id=1633&leibie=4
、《西门子STL间接寻址常问问题集》
http://www.ad.siemens.com.cn/download/docMessage.aspx?
ID=6175&loginID=&srno=&sendtime=
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
找答案微信小程序
提问
搜索
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!