设为首页收藏本站积分获取及使用技巧附件上传须知[求助-西门子PLC300/400]请帮我看一下这段程序究竟是什么意思

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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

总共8197条微博

动态微博

查看: 4442|回复: 2

[求助-西门子PLC300/400]请帮我看一下这段程序究竟是什么意思

[复制链接]

升级  37%

该用户从未签到

发表于 2013-12-8 14:39:25 | 显示全部楼层 |阅读模式

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

×

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

已有帐号?  点击登录   或者        

支付宝扫一扫领红包
LAR1 P##IO2
L 0
T B [AR1,P#7.0]
T B [AR1,P#6.0]
L LB 7
T B [AR1,P#5.0]
L LB 6
T B [AR1,P#4.0]
L LB 5
T B [AR1,P#3.0]
L 0
T B [AR1,P#2.0]
L 14
T #IO2
AR1是一个8个字节长度的寄存器地址。把word型的IO2装载到AR1上,然后给AR1的每一个字节赋值,是不是等同于在给IO2赋值?IO2直接取AR1最低的两个字节的值?赋值程序并没有给AR1的最低两字节赋值,而是给IO2赋了一个14,是不是说明AR1的最低俩字节应该是0000000000001110?
请问我的理解对不对?
让我们联手拒绝网络伸手党,下载积分获取办法&附件上传须知 ☆追梦点充值入口





+1
4444°C
2
  • gmRFGTgf
  • ULxbhnVd
过: 他们

升级  39.5%

该用户从未签到

发表于 2013-12-8 15:28:21 | 显示全部楼层
1、把word型的IO2装载到AR1上,然后给AR1的每一个字节赋值?IO2直接取AR1最低的两个字节的值?
LAR1  P##IO2,如果#IO2为word型的,是给AR1低字(最低的两个字节)赋值。
规范的编程#IO2应为双字型,因为AR1为32位指针。
指令LAR1 <D>:使用该指令,可以将寻址双字<D>的内容或指针常数装入地址寄存器 AR1。累加器 1 和累加器 2 保持不变。
2、是给IO2赋了一个14,是不是说明AR1的最低俩字节应该是0000000000001110?
这个理解是正确的,但是AR1为32位指针,不是word(16位)!
为双字指针时,就应该按照3-18bit指定byte,0-2bit指定bit来确定最终指令要操作的地址,因此: 0000 0000 0000 0000 0000 0000 0000 1110 = 1.6。这样形成了地址1.6。
L     14
T     #IO2
上述程序规范应为:
L     L#+14 // L#+14表示32位常数。
T     #IO2// #IO2应为双字数据。
有关数据类型见:
见《S7-300数据类型》连接:
http://blog.gkong.com/more.asp?name=zhyo720211&id=2005
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
《西门子STL间接寻址常问问题集》
http://www.ad.siemens.com.cn/download/docMessage.aspx?
ID=6175&loginID=&srno=&sendtime=
                                                                                                                                                                                                                                                              
                                                        

升级  24%

该用户从未签到

发表于 2013-12-8 15:56:06 | 显示全部楼层
这是指针寻址。AR1是32位的地址寄存器,而不是8个字节长度。你的概念现在不对呢。
假如#IO2在块的声明变量表的IN_OUT中,类型你没有给出。在程序中对它赋实参为MW20,则LAR1     //P##IO2  表示把#IO2的起始地址M20.0传给AR1
L     0
T     B [AR1,P#7.0]  //把0赋给B[M20.0,P#7.0],即0赋给MB27
T     B [AR1,P#6.0]  //0赋给MB26
L     14
T     #IO2   //将14赋给MW20,这和AR1没有关系了。
学习一下间接寻址吧。
参见:S7-300和S7-400寻址
http://www.ad.siemens.com.cn/download/OnlineReading.aspx?DocId=1597
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

关闭

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

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

GMT+8, 2025-5-4 00:04 , Processed in 0.111656 second(s), 21 queries , Gzip On, APCu On.

Powered by Dreamyiyi

© 2009-2025 工控论坛

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