haipingyuer
级别: 论坛先锋
精华主题: 0
发帖数量: 126 个
工控威望: 1756 点
下载积分: 715 分
在线时间: 81(小时)
注册时间: 2012-09-06
最后登录: 2016-04-26
查看haipingyuer的 主题 / 回贴
楼主  发表于: 2013-11-16 16:09
本人最近开始做西门子300的项目了,大家谁有300的间接寻址的例子啊   看手册看得有点迷糊了   望大家指点         本人做过200的间接寻址和for循环
男儿当自强
深水涧蓝
级别: 探索解密
精华主题: 0
发帖数量: 8 个
工控威望: 125 点
下载积分: 578 分
在线时间: 2(小时)
注册时间: 2013-11-12
最后登录: 2018-05-11
查看深水涧蓝的 主题 / 回贴
1楼  发表于: 2013-11-16 23:25
OPN   DB     1
      L     DBB [MD 0]
      T     MB     4
      A     I      0.0   //字节指针
      FP    M     10.0
      JNB   a001
      L     MD     0
      L     P#1.0
      +D    
      T     MD     0
a001: NOP   0
===================================================

    OPN   DB     1
      L     DBW [MD 0]
      T     MW     4
      A     I      0.0  //字寻址指针
      FP    M     10.0
      JNB   a001
      L     MD     0

      +     16
      T     MD     0
a001: NOP   0
=======================================
OPN   DB     1
      L     DBB [MD 0]
      T     MB     4
      A     I      0.0                  //字节指针
      FP    M     10.0
      JNB   a001
      L     MD     0
      L     P#1.0
      +D    
      T     MD     0
a001: NOP   0
      L     MD     6                    //字节编号
      SLD   3
      T     MD     0
=====================================================================
     OPN   DB     1
      AN    I      0.0
      FP    M     10.0
      JNB   A001
      L     100
NEXT: T     MB    20                    //循环开始
      L     DBB    0
      +     1
      T     DBB    0
      T     DBB [MD 0]
      L     MD     0
      +     8
      T     MD     0
      L     MB    20                    // 循环结束
      LOOP  NEXT
A001: NOP   0

======================================================
xkqxwhz
级别: 探索解密
精华主题: 0
发帖数量: 11 个
工控威望: 124 点
下载积分: 562 分
在线时间: 5(小时)
注册时间: 2013-12-11
最后登录: 2021-12-15
查看xkqxwhz的 主题 / 回贴
2楼  发表于: 2013-12-12 09:58
   OPN   #iDrive_IntfcDB
      L     DBNO
      T     #tDriveIntfcDBNum
      LAR1  P##tOutputsPointer

      L     B#16#10                     // 10 hex = S7 Data Type
      T     LB [AR1,P#0.0]              // Transfer to Source pointer byte 0

      L     B#16#2                      // 2 hex = byte data type
      T     LB [AR1,P#1.0]              // Transfer to Source pointer byte 1

      L     24                          // How many bytes to move
      T     LW [AR1,P#2.0]              // Transfer to Source pointer bytes 2-3

      L     #tDriveIntfcDBNum           // Load DB Number
      T     LW [AR1,P#4.0]              // Transfer to Source pointer bytes 4-5

      L     172                         // Load start address of data
      SLD   3                           // Shift data in AR1 3 bits to the left    
      T     LD [AR1,P#6.0]              // Trasfer to Source Pointer bytes 6-9

      L     B#16#84                     // 84 hex = DB memory area
      T     LB [AR1,P#6.0]              // Transfer to Source pointer byte 6

//Copy Outputs From Drive Interface DB To Local Copy
      CALL  SFC   20
       SRCBLK :=#tOutputsPointer
       RET_VAL:=#tRetVal
       DSTBLK :=#tDriveIntfc.Output
xkqxwhz
级别: 探索解密
精华主题: 0
发帖数量: 11 个
工控威望: 124 点
下载积分: 562 分
在线时间: 5(小时)
注册时间: 2013-12-11
最后登录: 2021-12-15
查看xkqxwhz的 主题 / 回贴
3楼  发表于: 2013-12-12 09:59
    TAR2  #tTempAR2

// Create Pointer To HMI Data

      L     P##iHMIData
      AD    DW#16#FFFFFF
      LAR1  


      LAR2  P##tHMIDataPointer

      L     DIB [AR1,P#0.0]             // 10 hex = S7 Data Type
      T     LB [AR2,P#0.0]              // Transfer to Source pointer byte 0

      L     DIB [AR1,P#1.0]             // 2 hex = byte data type
      T     LB [AR2,P#1.0]              // Transfer to Source pointer byte 1

      L     DIW [AR1,P#2.0]             // How many bytes to move
      T     LW [AR2,P#2.0]              // Transfer to Source pointer bytes 2-3

      L     DIW [AR1,P#4.0]             // Load DB Number
      T     LW [AR2,P#4.0]              // Transfer to Source pointer bytes 4-5

      L     DID [AR1,P#6.0]             // Load start address of data
      T     LD [AR2,P#6.0]              // Trasfer to Source Pointer bytes 6-9


      LAR2  #tTempAR2                   // Restore AR2
xkqxwhz
级别: 探索解密
精华主题: 0
发帖数量: 11 个
工控威望: 124 点
下载积分: 562 分
在线时间: 5(小时)
注册时间: 2013-12-11
最后登录: 2021-12-15
查看xkqxwhz的 主题 / 回贴
4楼  发表于: 2013-12-12 10:01
      L     0
      T     #tPrevOpOffset

//////Get 1st Op Status Byte Number
      L     P##iFirstRFReadOpStatusByte
      AD    DW#16#FFFFFF
      LAR1  

      L     DID [AR1,P#6.0]             // Load start address of data
      AD    DW#16#FFFFFF
      SRD   3
      T     #t1stOpByteNum
      L     #sOMS_OPHeader.OPstatusAddress
      ==I  
      JCN   _200
      S     #qAllPrevOpsOkToBuild
      JU    NoCk

_200: L     #sOMS_OPHeader.OPstatusAddress
      L     #t1stOpByteNum
      -I    
PrOp: T     #tPrevOpLoop

      LAR1  P##tPrevOpStatusPointer

      L     B#16#10                     // 10 hex = S7 Data Type
      T     LB [AR1,P#0.0]              // Transfer to Source pointer byte 0

      L     B#16#2                      // 2 hex = byte data type
      T     LB [AR1,P#1.0]              // Transfer to Source pointer byte 1

      L     2                           // How many bytes to move
      T     LW [AR1,P#2.0]              // Transfer to Source pointer bytes 2-3

      L     #sRFReadDBNum
      T     LW [AR1,P#4.0]

      L     #t1stOpByteNum              // Transfer to Source pointer bytes 4-5
      L     #tPrevOpOffset              // Load start address of data
      +I    
      SLD   3
      T     LD [AR1,P#6.0]              // Shift data in AR1 3 bits to the left    

      L     B#16#84                     // Trasfer to source pointer bytes 6-9
      T     LB [AR1,P#6.0]              // 84 hex = DB memory area

      CALL  SFC   20                    // Transfer to source pointer byte 6
       SRCBLK :=#tPrevOpStatusPointer
       RET_VAL:=#tRetVal
       DSTBLK :=#tCurrPrevOp

      SET  
      O     #tCurrPrevOp.Accept
      O     #tCurrPrevOp.NoOperation
      JCN   PrRj

      L     1
      L     #tPrevOpOffset
      +I    
      T     #tPrevOpOffset

      L     #tPrevOpLoop
      LOOP  PrOp

      S     #qAllPrevOpsOkToBuild
      L     0
      T     #qPrevOperRejRFByte
      T     #sPrevOperRejRFByte


      JU    NoCk

PrRj: S     #qPreviousOperReject

      L     #t1stOpByteNum              // Transfer to Source pointer bytes 4-5
      L     #tPrevOpOffset              // Load start address of data
      +I    
      T     #qPrevOperRejRFByte
      T     #sPrevOperRejRFByte
NoCk: NOP   0
sdyplc
级别: 探索解密
精华主题: 0
发帖数量: 14 个
工控威望: 133 点
下载积分: 572 分
在线时间: 6(小时)
注册时间: 2013-10-19
最后登录: 2013-12-12
查看sdyplc的 主题 / 回贴
5楼  发表于: 2013-12-12 14:37
上述程序写成梯形图,看着不是更清楚
gcq1240
级别: 论坛先锋
精华主题: 0
发帖数量: 127 个
工控威望: 1147 点
下载积分: 20067 分
在线时间: 97(小时)
注册时间: 2010-08-30
最后登录: 2021-03-26
查看gcq1240的 主题 / 回贴
6楼  发表于: 2013-12-15 20:31
学习了 !