找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
问题
取消精华
首页精华问答
取消推荐
高端用户推荐
申请置评
已申请置评
修改
修改标签
添加标签
官方认证
取消官方认证
修改标签
添加标签
转移分类
删除
{{itemCategory}}
收藏({{answerDetail.Q_FavoriteCounts}})
手机扫码追踪该问题,
觉得实用,立即去分享!
点击复制链接
专家建议
取消最佳答案
修改
见相同问题ID: 48968答案,连接:
http://www.ad.siemens.com.cn/service/answer/solution.asp?Q_id=48968&cid=1029
1首先要创建并下载数据块DB100,并且长度要满足程序要求.
2.程序有问题:
L DBW [MD 102]
T MW [MD 102]
上述指令时对非位的区域进行寻址。MD102不能为1,应必须确保其0-2bit为全0。
3. 相关资料:
存储器间接寻址的地址给定格式是:地址标识符+指针。指针所指示存储单元中所包含的数值,就是地址的确切数值单元。
存储器间接寻址具有两个指针格式:单字和双字。
单字指针是一个16bit的结构,从0-15bit,指示一个从0-65535的数值,这个数值就是被寻址的存储区域的编号。
双字指针是一个32bit的结构,从0-2bit,共三位,按照8进制指示被寻址的位编号,也就是0-7;而从3-18bit,共16位,指示一个从0-65535的数值,这个数值就是被寻址的字节编号。
单字指针和双字指针在使用上有很大区别。下面举例说明:
L DW#16#35 //将32位16进制数35存入ACC1
T MD2 //这个值再存入MD2,这是个32位的位存储区域
L +10 //将16位整数10存入ACC1,32位16进制数35自动移动到ACC2
T MW100 //这个值再存入MW100,这是个16位的位存储区域
OPN DBW[MW100] //打开DBW10。这里的[MW100]就是个单字指针,存放指针的区域是M区,
MW100中的值10,就是指针间接指定的地址,它是个16位的值!
又如:
L L#+10 //以32位形式,把10放入ACC1,此时,ACC2中的内容为:16位整数0A.
T MD104 //这个值再存入MD104,这是个32位的位存储区域,MD104的内容为0000 0000 0000 0000 0000 0000 0000 1010.位0-2位为被寻址的位数,位3-18为被寻址的字节标号。
此时。 A I[MD104] //对I1.2进行与逻辑操作!
4. 上面那个MD102=1那么DBW[MD102]指的是哪个地址,好像1对应的是0.1呀,不是说只能是0.0 1.0之类吗?
MD102=1,即0000 0000 0000 0000 0000 0000 0000 0001.位0-2位为被寻址的位数,位3-18为被寻址的字节标号。
则,被寻址的位0.1
在对非位的区域进行寻址时,必须确保其0-2bit为全0!
你的程序中:
L DBW [MD 102]
T MW [MD 102]
上述程序是将一DBW(字)送入一MW(字)中,此时,MD102不能为1。在对非位的区域进行寻址时,必须确保其0-2bit为全0!
如MD102=0000 0000 0000 0000 0000 0000 0001 0000.(十进制的16,十六进制的10)
则上述语句等效为
L DBW 2
T MW 2
如:
L Q [MD 102]
T M [MD 102]
如MD102=1,即0000 0000 0000 0000 0000 0000 0000 0001.位0-2位为被寻址的位数,位3-18为被寻址的字节标号。
则,被寻址的位0.1
上述语句等效于:
L Q0.1
T M0.1
5.相关资料:
见《关于S7-300和S7-400指针寻址的说明与例程(更新版)》下载:
http://www2.ad.siemens.com.cn/Download/Upload/AS/faq/F0215.pdf
等您来回答
换一换
{{item.CoinValue}}西币
{{item.VisitNum}}人想问
本版相关问题
换一换
专家置评
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!

西门子商城