zoukankan      html  css  js  c++  java
  • PLC STL any数据类型

    1.any数据类型共10个字节,数据格式如下

    2.Byte 0: 固定10h 表示S7

       Byte 1:表示数据类型

     

    Coding of the Data Types

     

    Hexadecimal Code

    Data Type

    Description

    b#16#00

    NIL

    Null pointer

    b#16#01

    BOOL

    Bits

    b#16#02

    BYTE

    Bytes (8 bits)

    b#16#03

    CHAR

    Characters (8 bits)

    b#16#04

    WORD

    Words (16 bits)

    b#16#05

    INT

    Integers (16 bits)

    B#16#06

    DWORD

    Words (32 bits)

    b#16#07

    DINT

    Double integers (32 bits)

    b#16#08

    REAL

    Floating-point numbers (32 bits)

    b#16#09

    DATE

    Date

    b#16#0A

    TIME_OF_DAY (TOD)

    Time of day

    b#16#0B

    TIME

    Time

    b#16#0C

    S5TIME

    Data type S5TIME

    b#16#0E

    DATE_AND_TIME (DT)

    Date and time (64 bits)

    b#16#13

    STRING

    String

    Byte 2,3  /Word2:表示传送的数据长度,重复因子

    Byte 4,5/Word3:表示DB块号或者为0

    Byte 6:表示存储区域

    Hexadecimal Code

    Area

    Description

    b#16#80

    P

    I/O area

    b#16#81

    I

    Input area

    b#16#82

    Q

    Output area

    b#16#83

    M

    Bit memory area

    b#16#84

    DB

    Data block

    b#16#85

    DI

    Instance data block

    b#16#86

    L

    Local data (L stack)

    b#16#87

    V

    Previous local data

    DW6:存放偏移的起始地址

    3.举例,从DB2002 拷贝 50字节长度的数据,共20组,到DB2003 对应的结构中

          A     M   2001.0
          JCN   nop
          L     P#DBX 0.0                             //传送起始地址
          AD    DW#16#FFFFFF                
          T     #TEMPDW                             //这一步转成32位地址格式?
          L     0
          T     MW  2002
          L     20                          //循环复制的次数
          L     -1
          +I    
    lop:  T     #loopcnt
          LAR1  P##SRC
          L     W#16#1002               //16#10 代表S7   16#02表示数据类型是 byte
          T     LW [AR1,P#0.0]        //将W#16#1002传给 any 的第一个字
          L     50                             //每次拷贝的  数据长度
          T     LW [AR1,P#2.0]       //传给 any 的第二个字
          L     2002                        //  DB 块号,传给 any 的第三个字
          T     LW [AR1,P#4.0]
          L     #loopcnt
    //  L     -1
    // +I    
          L     50
          *I    
          SLD   3
          L     #TEMPDW
          +D    
          T     LD [AR1,P#6.0]    //带拷贝的数据存储的起始地址

          L     B#16#84
          T     LB [AR1,P#6.0]  //存储区是DB 块

          LAR1  P##DEST
          L     W#16#1002
          T     LW [AR1,P#0.0]  // any 第一个字
          L     50                        //any 接收的数据长度
          T     LW [AR1,P#2.0]
          L     2003                  // any 接收的 DB块
          T     LW [AR1,P#4.0]
          L     #loopcnt                  

          L     50
          *I    
          SLD   3                         //偏移量
          L     #TEMPDW
          +D    
          T     LD [AR1,P#6.0]   //any 接收的数据存储起始地址
          L     B#16#84
          T     LB [AR1,P#6.0]   //存储区域是DB块

          CALL  "BLKMOV"
           SRCBLK :=#SRC
           RET_VAL:=#RetVal
           DSTBLK :=#DEST
          L     #RetVal


          L     1
          L     MW  2002
          +I    
          T     MW  2002
          L     #loopcnt                            //开始下一次循环
          LOOP  lop
    nop:  NOP   0



  • 相关阅读:

    创建分区表
    提示 适配器错误
    新手-ios
    web中绝对路径换虚拟路径
    UpdatePanel1里面使用FileUpload控件
    批量将一个表数据导入到另外一个表里面(不同服务器也可以)
    oracle 定时 job
    修改oracle字符集
    Oracle定时备份数据库
  • 原文地址:https://www.cnblogs.com/albertfg/p/7504099.html
Copyright © 2011-2022 走看看