S7-300寄存器寻址?

对寄存器间接寻址看了好多资料都没看明白,希望能帮我用通俗的语言说说吗?现在有段程序大概意思懂,就是不明白这样做的道理和意思   
    LAR1  P##Source
      LAR2  P##Target
//? 
      L     B#16#10                     // Load the syntax ID 
      T     LB [AR1,P#0.0]
      T     LB [AR2,P#0.0]

      L     B#16#2                      // Load data type Byte 
      T     LB [AR1,P#1.0]
      T     LB [AR2,P#1.0]

      L     #ByteLen                    // Load 10 bytes 
      T     LW [AR1,P#2.0]
      T     LW [AR2,P#2.0]
//Source 
      L     #sDbNum                     // Source DbNum
      T     LW [AR1,P#4.0]
      L     P#DBX 0.0
      L     #sAddress                   // StartAddress
      SLD   3
      L     P#DBX 0.0                   // Because P#0.0 <> P#dbx0.0
      +D    
      T     LD [AR1,P#6.0]

// Target                                
      L     #dDbNum                     //  Target DbNum
      T     LW [AR2,P#4.0]

      L     #dAddress                   // TargetAddress
      SLD   3
      L     P#DBX 0.0                   // Because P#0.0 <> P#dbx0.0
      +D    
      T     LD [AR2,P#6.0]
//? 

      CALL  "BLKMOV"
       SRCBLK :=#Source
       RET_VAL:=#RetVal
       DSTBLK :=#Target
P#0.0 1.0 4.0 6.0到底代表什么东西啊,怎么理解呀?还有
 L     B#16#10                     // Load the syntax ID 
      T     LB [AR1,P#0.0]
      T     LB [AR2,P#0.0]

      L     B#16#2                      // Load data type Byte 
      T     LB [AR1,P#1.0]
      T     LB [AR2,P#1.0]
B#16#10  B#16#2什么的都不明白含义呀,能结合以上例子解释一下吗

最佳答案

先请楼主看看:
《S7-300/400PLC ANY指针使用详解》连接:
http://blog.sina.com.cn/s/blog_669692a601019hvt.html

LAR1  P##Source//将源地址存入AR1
      LAR2  P##Target//将目标地址存入AR2
      L     B#16#10         // 装入索引ID ,即一个字节的十六进制数10
      T     LB [AR1,P#0.0]//将索引ID10送人源地址+0偏移量为地址的LB中
      T     LB [AR2,P#0.0] /将索引ID10送人目标地址+0偏移量为地址的LB中
      L     B#16#2     // 装入数据类型,即一个字节的十六进制数2
      T     LB [AR1,P#1.0] // 将数据类型送人源地址+1.0偏移量为地址的LB中
      T     LB [AR2,P#1.0] // 将数据类型送人目标地址+1.0偏移量为地址的LB中
      L     #ByteLen     // 装入字节长度 
      T     LW [AR1,P#2.0] // 将字节长度送人源地址+2.0偏移量为地址的LW中
      T     LW [AR2,P#2.0] // 将字节长度送人目标地址+2.0偏移量为地址的LW中
……….。
1、 P#0.0 1.0 4.0 6.0到底代表什么东西啊,怎么理解呀?
这些都是地址的偏移量。例如:
LAR1 P#128.0          //初始读指针
LAR2 P#0.0          //初始读指针
L     PIW [AR1,P#2.0]   //128.0+2.0=130.0,即取PIW130.0。
T     DBW [AR2,P#4.0]  //0.0+4.0=4.0,即输入DBW4中。
2、楼主程序的前部分,执行后形成两个ANY的参数(见《S7-300/400PLC ANY指针使用详解》),即:
源与目标:
地址0:索引ID10;地址+1:数据类型;地址+2:字节长度。
2、 B#16#10  B#16#2什么的都不明白含义呀
这是数据类型,例如,B#16#10 表示以字节为单位(8位二进制)表示的十六进制数10.。
请楼主看看:
《S7-300/400PLC ANY指针使用详解》连接:
http://blog.sina.com.cn/s/blog_669692a601019hvt.html
3、 建议看看有关数据类型的文档:
见《S7-300的数据类型》其中,8、常数的表示方法。连接:
http://blog.gkong.com/more.asp?name=zhyo720211&id=2005
《Step 7 Elementary Data Types》:
http://www.plcdev.com/step_7_elementary_data_types
4、有关地址指针的用法,例如程序中       SLD   3指令的具体的作用。请见:
详见《step7编程之地址概念详解》连接:
http://www.plc365.com/jishu/57.html
见《关于S7-300和S7-400指针寻址的说明与例程(更新版)(2008.03.04)     》下载:
http://www.ad.siemens.com.cn/download/searchResult.aspx?searchText=F0215

提问者对于答案的评价:
谢谢

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc240951.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月1日
下一篇 2018年12月1日

相关推荐