设为首页收藏本站积分获取及使用技巧附件上传须知[求助-西门子PLC300/400]为什么指针寻址里老是用到移位指令呢?

追梦工控论坛|工控论坛-专业的Intouch论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

总共8197条微博

动态微博

查看: 5210|回复: 2

[求助-西门子PLC300/400]为什么指针寻址里老是用到移位指令呢?

[复制链接]

升级  38%

该用户从未签到

发表于 2013-12-22 12:13:09 | 显示全部楼层 |阅读模式

上传分享工控资料得追梦点,下载积分获取办法点击进入 ☆追梦点充值入口
发帖回帖赚金币兑换下载积分。上传附件须知点击进入

×

马上注册,结交更多工控达人,分享经验,让你轻松玩转追梦工控论坛。

已有帐号?  点击登录   或者        

支付宝扫一扫领红包
为什么指针寻址里老是用到移位指令呢?而不直接给地址呢?左移和右移分别有什么效果?谢谢了!</p>
        问题补充:
比如这个指针寻址程序:
OPN #I_DB_Signals
L #Selection
SLW 3
LAR1
L DBD [AR1,P#12.0]
T #Buffer
L P##InputSignalChanged
LAR1
L #Buffer
T LD [AR1,P#0.0]
为什么要用SLW3?很多地方都用这种移位指令,谢谢!
让我们联手拒绝网络伸手党,下载积分获取办法&附件上传须知 ☆追梦点充值入口





+1
5212°C
2
  • amy328
  • lymingo
过: 他们

升级  32.5%

该用户从未签到

发表于 2013-12-22 13:10:20 | 显示全部楼层
为什么指针寻址里老是用到移位指令呢?
原因很简单,目的是为了形成地址寄存器(32位)地址。
1、首先需要熟悉,寄存器地址32位指针格式为:AR: 0000 0000 0000 0BBB BBBB BBBB BBBB BXXX
其0-2bit(用X表示)指定bit位,3-18bit(用B表示)指定byte字节。其第31bit固定为0。
例如,当AR=D4(hex)=0000 0000 0000 0000 0000 0000 1101 0100(b),实际上就是等于26.4.。  
2、所以要老是用到移位指令来形成寄存器(32位)地址:
例如,累加器1中内容为26(十进制),即等于1A(十六进制)=0000 0000 0000 0000 0000 0000 0001 1010(b),左移3位后送至AR1后,AR=D0(十六进制)=0000 0000 0000 0000 0000 0000 1101 0000(b),实际上形成地址就是等于26.0。 
3、详见:
见《关于S7-300和S7-400指针寻址的说明与例程(更新版)(2008.03.04)     》下载:
http://www.ad.siemens.com.cn/download/searchResult.aspx?searchText=F0215
详见《step7编程之地址概念详解》连接:
http://ishare.iask.sina.com.cn/f/22746895.html
http://www.gongkong365.com/bbs/job.php?action=download&aid=96
                                                                                                                                                                                                                                                              
                                                        

升级  44.5%

该用户从未签到

发表于 2013-12-22 13:31:29 | 显示全部楼层
你指的是类似于下面的指令吧:
l #in1
sld 3
lar1
l dbw[ar1,p#0.0]
上面的移位其实主要就是把输入的整数信号转换为双整数指针格式(见附图,末3位表示指针地址的位数,因此需要左移3位将实际地址转移到从第4位开始的位),例如#in1输入的是100,那么转换后ar1中存储的就是100.0。
当然你直接用lar1 p#100.0也是可以的,但是对于用于功能块的输入信号来讲,使用int/dint这样的信号远比用pointer这样的数据类型方便的多。
                                                      
图片说明:1,1  

                                                                                                                                                                                                                                                                             
                                                                                                                                                                                                            简单的来说,左移指令就是将实参的整数转变为和实参数值相同的指针常数。
如L     3
   SLD 3
   T      MD0
3的表示是0000 0000 0000 0000 0000 0000 0000 0011
左移3位以后是 0000 0000 0000 0000 0000 0000 0001 1000
按照指针的存储格式则表示为P#3.0,把指针常数P#3.0存放到MD0中。
                                                      
图片说明:1,1  

                                                                                                                                                                                                                                                                             
                                                                                                                                                                                                            你需要看一下指针的格式,最后的三位表示字节中的位,你读取一个整数后(比如是1),你要访问的是字节1,而整数表示是最后一个位为1,要访问字节1,必须要把这个整数二进制表示左移3位变成1000才是你要访问的字节1.
                                                                                                                                                                                                                                                                                                                                   
                                                                                                                                                                                                            这需要你了解指针格式。
                                                                                                                                                                                                                                                                                                                                   
                                                                                                                                                                                                            看一看指针的格式就知道了:
http://www.ad.siemens.com.cn/download/SearchResult.aspx?searchText=f0215
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

请珍惜自己的ID,严禁发布垃圾水贴,诸如adsf......顶......纯表情......多次重复回帖刷积分......轻则删帖警告,重则封禁!★请分享资料、经验或者赞助论坛,贡献一份力量★

关闭

最新活动上一条 /1 下一条

小黑屋|手机版|追梦工控论坛|工控论坛-专业的Intouch论坛 ( 皖ICP备10012005号 )|网站地图

GMT+8, 2025-5-5 01:40 , Processed in 0.207400 second(s), 20 queries , Gzip On, APCu On.

Powered by Dreamyiyi

© 2009-2025 工控论坛

快速回复 返回顶部 返回列表