求高手帮我看段程序,要详细每段讲解,

已锁定

仪表工1

  • 帖子

    36
  • 精华

    0
  • 被关注

    3

论坛等级:游士

注册时间:2014-11-21

普通 普通 如何晋级?

求高手帮我看段程序,要详细每段讲解,

4054

12

2016-06-27 21:58:29

1段

  TAR1  #T_AR1                      // SAVE ADRESSREGISTER AR1

  TAR2  #T_AR2                      // SAVE ADRESSREGISTER AR2

2段

  L     P##OUT_ANY                  //  START ADRESS OF ANY-POINTER 

      LAR2                              // INTO AR2

      L     B#16#10                     // ENTER SYNTAX-ID 


      T     B [AR2,P#0.0]               // INTO ANY-POINTE 0 BYTES

      L     #DAT_TYP

      L     W#16#0

      <>I   

      JC    NIL

      L     B#16#0

      JU    TYPE

NIL:  L     #DAT_TYP

      L     W#16#1

      <>I   

      JC    BOOL

      L     B#16#1

      JU    TYPE

BOOL: L     #DAT_TYP

      L     W#16#2

      <>I   

      JC    BYTE

      L     B#16#2

      JU    TYPE

BYTE: L     #DAT_TYP

      L     W#16#3

      <>I   

      JC    CHAR

      L     B#16#3

      JU    TYPE

CHAR: L     #DAT_TYP

      L     W#16#4

      <>I   

      JC    WORD

      L     B#16#4

      JU    TYPE

WORD: L     #DAT_TYP

      L     W#16#5

      <>I   

      JC    INT

      L     B#16#5

      JU    TYPE

INT:  L     #DAT_TYP

      L     W#16#6

      <>I   

      JC    DWOR

      L     B#16#6

      JU    TYPE

DWOR: L     #DAT_TYP

      L     W#16#7

      <>I   

      JC    DINT

      L     B#16#7

      JU    TYPE

DINT: L     #DAT_TYP

      L     W#16#8

      <>I   

      JC    REAL

      L     B#16#8

      JU    TYPE

REAL: L     #DAT_TYP

      L     W#16#9

      <>I   

      JC    DATE

      L     B#16#9                      // ELSE LOAD AREA TYPE "DATE"

      JU    TYPE                        // USE TYPE

DATE: L     #DAT_TYP                    // LOAD TYPE OF DATA

      L     W#16#A                      // IF TYPE OF DATA 

      <>I                               // <> "TIME_OF_DAY" THEN

      JC    TOD                         // ASK FOR TOD (TIME_OF_DAY)

      L     B#16#A                      // ELSE LOAD AREA TYPE "TIME_OF_DAY"

      JU    TYPE                        // USE TYPE

TOD:  L     #DAT_TYP                    // LOAD TYPE OF DATA

      L     W#16#B                      // IF TYPE OF DATA 

      <>I                               // <> "TIME" THEN

      JC    TIME                        // ASK FOR TIME

      L     B#16#B                      // ELSE LOAD AREA TYPE "TIME"

      JU    TYPE                        // USE TYPE

TIME: L     #DAT_TYP                    // LOAD TYPE OF DATA

      L     W#16#C                      // IF TYPE OF DATA 

      <>I                               // <> "S5TIME" THEN

      JC    S5TI                        // ASK FOR S5TIME

      L     B#16#C                      // ELSE LOAD AREA TYPE "S5TIME"

      JU    TYPE                        // USE TYPE

S5TI: L     #DAT_TYP                    // LOAD TYPE OF DATA

      L     W#16#E                      // IF TYPE OF DATA 

      <>I                               // <> "DATE_AND_TIME" THEN

      JC    DT                          // ASK FOR DT (DATE_AND_TIME)

      L     B#16#E                      // ELSE LOAD AREA TYPE "DATE_AND_TIME"

      JU    TYPE                        // USE TYPE

DT:   L     #DAT_TYP                    // LOAD TYPE OF DATA

      L     W#16#13                     // IF TYPE OF DATA 

      <>I                               // <> "STRING" THEN

      JC    STRI                        // ASK FOR STRING

      L     B#16#13                     // ELSE LOAD AREA TYPE "STRING"

      JU    TYPE                        // USE TYPE

STRI: L     #DAT_TYP                    // LOAD PARAMETER TYPE OF DATA

      L     W#16#17                     // IF PARAMETER TYPE OF DATA 

      <>I                               // <> "BLOCK_FB" THEN

      JC    BLFB                        // ASK FOR BLOCK_FB

      L     B#16#17                     // ELSE LOAD PARAMETER TYPE "BLOCK_FB"

      JU    TYPE                        // USE TYPE

BLFB: L     #DAT_TYP                    // LOAD PARAMETER TYPE OF DATA

      L     W#16#18                     // IF PARAMETER TYPE OF DATA 

      <>I                               // <> "BLOCK_FC" THEN

      JC    BLFC                        // ASK FOR BLOCK_FC

      L     B#16#18                     // ELSE LOAD PARAMETER TYPE "BLOCK_FC"

      JU    TYPE                        // USE TYPE

BLFC: L     #DAT_TYP                    // LOAD PARAMETER TYPE OF DATA

      L     W#16#19                     // IF PARAMETER TYPE OF DATA 

      <>I                               // <> "BLOCK_DB" THEN

      JC    BLDB                        // ASK FOR BLOCK_DB

      L     B#16#19                     // ELSE LOAD PARAMETER TYPE "BLOCK_DB"

      JU    TYPE                        // USE TYPE

BLDB: L     #DAT_TYP                    // LOAD PARAMETER TYPE OF DATA

      L     W#16#1A                     // IF PARAMETER TYPE OF DATA 

      <>I                               // <> "BLOCK_SDB" THEN

      JC    BSDB                        // ASK FOR BLOCK_SDB

      L     B#16#1A                     // ELSE LOAD PARAMETER TYPE "BLOCK_SDB"

      JU    TYPE                        // USE TYPE

BSDB: L     #DAT_TYP                    // LOAD PARAMETER TYPE OF DATA

      L     W#16#1C                     // IF PARAMETER TYPE OF DATA 

      <>I                               // <> "COUNTER" THEN

      JC    COUN                        // ASK FOR COUNTER

      L     B#16#1C                     // ELSE LOAD PARAMETER TYPE "COUNTER"

      JU    TYPE                        // USE TYPE

COUN: L     #DAT_TYP                    // LOAD PARAMETER TYPE OF DATA

      L     W#16#1D

      <>I   

      JC    TIMR

      L     B#16#1D

      JU    TYPE

TIMR: L     B#16#2

TYPE: T     B [AR2,P#1.0]

      L     #DAT_LEN

      T     W [AR2,P#2.0]

      L     #DB_NO

      T     W [AR2,P#4.0]

      T     #BLOCK_DB_NO

      L     0

      ==I   

      JC    FLAD

      L     P#DBX 0.0

      JU    OFFD

FLAD: L     P#M 0.0

OFFD: L     #DB_BYTE

      SLD   3

      +D    

      L     #DB_BIT

      +D    

      T     D [AR2,P#6.0]

3段    OPN   DB [#BLOCK_DB_NO]

4段

  

  L     D [AR2,P#6.0]

      LAR1  

      TAR1  #ADDRESS_DESTINATION


      L     #DAT_LEN

      L     2

      -I    

      T     #DAT_LEN_SUB_2


      L     #DAT_LEN_SUB_2

      L     2

      /I    

      T     #LOOP_LIM


      T     #DAT_LEN_SUB_2

      SLD   3

      AD    DW#16#FFFFFFF

      T     #DB_BYTE_LEN


      L     #DB_BYTE_LEN

      L     #ADDRESS_DESTINATION

      +D    

      T     #ADDRESS_DESTINATION


      L     #DAT_LEN_TR

      SLD   3

      AD    DW#16#FFFFFF

      T     #DB_BYTE_LOW


      A     #EN

      JCN   END


      L     0

CYCL: T     #LOOP

      L     #LOOP

      L     #DAT_LEN_SUB_2

      >=I   

      JC    A7d0


      L     #ADDRESS_DESTINATION

      L     #DB_BYTE_LOW

      -D    

      T     #ADDRESS_SOURCE


      L     DBD [#ADDRESS_SOURCE]

      T     DBD [#ADDRESS_DESTINATION]


      L     #ADDRESS_SOURCE

      T     #ADDRESS_DESTINATION


      L     #LOOP

      L     1

      +I    

      JU    CYCL

A7d0: L     #IN_V

      T     W [AR1,P#0.0]

END:  NOP   0

5段

  LAR1  #T_AR1                      // RESTORE ADRESSREGISTER ADR1

   LAR2  #T_AR2                      // RESTORE ADRESSREGISTER ADR2



求高手帮我看段程序,要详细每段讲解, 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54618条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。