设为首页收藏本站积分获取及使用技巧附件上传须知[求助-西门子PLC300/400] 关于P##,这段程序怎么读

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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

总共8197条微博

动态微博

查看: 7996|回复: 2

[求助-西门子PLC300/400] 关于P##,这段程序怎么读

[复制链接]

升级  20%

该用户从未签到

发表于 2014-8-14 17:50:44 | 显示全部楼层 |阅读模式

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

×

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

已有帐号?  点击登录   或者        

支付宝扫一扫领红包
已解决问题: 关于P##,这段程序怎么读
让我们联手拒绝网络伸手党,下载积分获取办法&附件上传须知 ☆追梦点充值入口





+1
7998°C
2
  • luxiabao
  • GT雨燕8秒41
过: 他们

升级  28%

该用户从未签到

发表于 2014-8-14 19:15:32 | 显示全部楼层
1、要想读懂这段程序必须了解ANY数据类型的格式,例如,如果以字节4指定DB编号,也必须以字节6明确地指定存储器区。
先看看:
《S7-300/400PLC ANY指针使用详解》连接:
http://blog.sina.com.cn/s/blog_669692a601019hvt.html
2、程序分析:
L     P##DeviceData
      LAR1  //区设备数据地址装入地址指针AR1中。
      L     W [AR1,P#4.0]               //DBnr,字节4指定DB编号。
      T     #DB_DeviceData  // DB编号存入 #DB_DeviceData中
      L     D [AR1,P#6.0]               //Startbyte pointer,字节6、7、8、9分别指定存储器区、字节、位地址。
      L     DW#16#7FFFFF                //mask Adress
      AD    //与常数#16#7FFFFF  相与屏蔽最高位,其第31bit固定为0,形成32位指针。
      T     #StartbyteDeviceData  //存入#StartbyteDeviceData
3、32位指针格式:
其0-2bit,指定bit位,3-18bit指定byte字节。其第31bit固定为0。  
  AR:  
  0000 0000 0000 0BBB BBBB BBBB BBBB BXXX  
  这样规定,就意味着AR的取值只能是:0.0 ——65535.7  
  例如:当AR=D4(hex)=0000 0000 0000 0000 0000 0000 1101 0100(b),实际上就是等于26.4。
                                                                                                                                                                                                                                                              
                                                        

升级  46.5%

该用户从未签到

发表于 2014-8-14 19:19:24 | 显示全部楼层
L     P##DeviceData     //读取设备数据变量(any类型)
      LAR1  //装入地址寄存器  其中第一个字节是10,第二个字节是数据类型,第三和第四字节是长度
      L     W [AR1,P#4.0]               //DBnr  //第五个字节、第六个字节是数据块号
      T     #DB_DeviceData  //将取出的数据块传给一个变量
      L     D [AR1,P#6.0]               //Startbyte pointer//再去间接寻址的首地址
      L     DW#16#7FFFFF                //mask Adress  //与这个值相与,就是将最高位置0,区域内寻址
      AD   
      T     #StartbyteDeviceData  再传给一个变量
                                                                                                                                                                                                                                                                                                                                   
                                                                                                                                                                                                            这是对ANY数据类型的拆分,取出需要的部分。
参见:S7-300和S7-400寻址
http://www.ad.siemens.com.cn/download/OnlineReading.aspx?DocId=1597
学习一下文档,对你的理解会有帮助的。直接让别人讲,你还是不明白是怎么回事。看看ANY的结构。
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

关闭

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

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

GMT+8, 2025-5-9 05:06 , Processed in 0.200921 second(s), 21 queries , Gzip On, APCu On.

Powered by Dreamyiyi

© 2009-2025 工控论坛

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