您现在所在的是:

PLC论坛

回帖:0个,阅读:882 [上一页] [1] [下一页]
6047
liaosun
文章数:1398
年度积分:50
历史总积分:6047
注册时间:2003/5/4
发站内信
2015论坛贡献奖
2014论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011博客贡献奖
2010博客杰出贡献奖
发表于:2011/3/7 8:41:12
#0楼

   网上有人给出了一条S7-300“看不懂”的指令“L     P#P  515.0”。
   这条指令与区域之间的寄存器间接寻址有关。S7-300/400有两个地址寄存器AR1和AR2,操作数的地址等于地址寄存器中的地址值加上地址偏移量。下面是寄存器间接寻址的32位指针格式:
                                     x000 0rrr 0000 0bbb bbbb bbbb bbbb bxxx
   其中第0~2位(xxx,最低位为第0位)为被寻址地址中位的编号(0~7),第3~18位(16个b)为被寻址地址的字节的编号。第24~26位(rrr)为被寻址地址的区域标识号。
   指针的最高位x 为0时,为区域内的间接寻址,最高位x 为1时,为区域间(交叉区域)间接寻址。
   将下面的程序下载到仿真PLC,运行时监控累加器1(STANDARD)的值(见下图)。
     L     P#P  1.0                  //16#8000 0008送累加器1
     LAR1                            //累加器1的内容送AR1
     L     MW [AR1,P#2.0]            //MW3的值送累加器1
   MW [AR1, P#2.0]的地址为AR1中的P#1.0加偏移量P#2.0,MW [AR1, P#2.0]即MW3。
   由第1条指令的执行结果16#8000 0008可知(见下图),P#P1.0的最高位为1,表示这是区域间(交叉区域)间接寻址。第24~26位(rrr)为2#000,由西门子的资料《S7-300和S7-400寻址》可知,区域标识号2#000表示地址指针不包含地址区。仿真时用PLCSIM设置MW3的值为16#1234,第3条指令的监控结果验证了上述分析的正确性。
图
   将上述程序的第1条指令改为“L   P#1.0”,程序运行结果相同。指针值P#1.0的最高位为0。
此帖来自中华工控网工控博客
原文件地址:http://blog.gkong.com/more.asp?id=133986&Name=liaochangchu
我是廖常初,是一个高校的老师,曾在企业从事机械、电气技术工作,长期从事工业控制和PLC应用的教学、科研和工程应用工作。博客中的日志除注明外均为原创。愿意在此与大家探讨工控的问题!
廖常初工控博客地址:http://blog.gkong.com/blog.asp?name=liaochangchu
我曾写过几本小书: 《PLC编程及应用》第3版(S7-200)、《S7-300/400 PLC应用技术》第3版、《FX系列PLC编程及应用》第2版、《S7-200 PLC编程及应用》、《PLC基础及应用》第2版(FX系列大专教材)、《西门子人机界面(触摸屏)组态与应用技术》、《西门子工业通信网络组态编程与故障诊断》、《S7-1200 PLC编程及应用》第2版、《跟我动手学S7-300/400 PLC》、《跟我动手学FX系列PLC》
机械工业出版社廖常初图书专题:http://www.gkong.com/zt/liaochangchu/

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2025 Gkong.com, All Rights Reserved

31.2002