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

时间: 2024-11-07 11:41:18

PLC STL any数据类型的相关文章

【OI】C++STL 不定长数组 vector

Vector 本来是向量的意思,只不过在用法上类似于一个不限长度的数组. 定义语法:vector<数据类型> 名称; 一.头文件:<vector> (bits/stdc++请忽略) 二.常用方法: a.size(); //读取大小 a.resize(): //改变大小 a.push_back(); //向尾部添加元素 a.pop_back(); //删除最后一个元素 a.clear(); //清空 a.empty(): //返回是否为空 三.遍历 STL的数据类型几乎(也许是全部)

西门子PLC学习笔记五-(编程语言、数据类型)

1.编程语言 PLC的编程语言有STL(语句表).LAD(梯形图).FBD(功能块图).GRAPH(顺序功能图).SCL(结构化控制语言).HiGraph(图形编程语言).CFC(连续功能图)等.Step7中STL.LAD.FBD是基本的编程语言,并且在step7软件中可以进行自动转换. 2.数据类型 1)基本数据类型 2)复杂数据类型 复杂数据类型需要预先定义,其变量只能在全局数据块中声明,可以作为参数或逻辑块的局部变量. Step7中支持的类型有:数组.结构.字符串.日期.时间.用户自定义类

PLC状态机编程-如何在STL中使用状态机

搞PLC编程多年,一直不知道状态机,学习matlab后,发现状态机编程异常方便,过去很多编程时的疑惑豁然开朗起来.今天跟大家分享一下如何在STL中使用状态机. 下面是用状态机描述的控制任务. 这个状态机较简单,那如何在STL中把它描述出来呢? 这里我们选择用JL指令...我就直接上代码了,一看便知.但JL程序只能用来表示单步状态,遇到并行状态就处理不了了..下次我们用ST语言来描述更复杂的状态机.. L     #state     //  把#state的值载入累加器       JL   

C++学习笔记(六):复杂数据类型(string、容器和STL)

STL 即Standard Template Library(标准模板库),由于C++自带的数据类型过于简单,并不能满足我们的使用需要,而STL作为C++标准的内置库为我们编写好了多种高效的数据结构和算法,引入这些库后直 接使用即可. 容器简介:标准STL序列容器:vector.string.deque和list.标准STL关联容器:set.multiset.map和multimap.非标准序列容器slist和rope.slist是一个单向链表,rope本质上是一“重型”string.非标准的关

STL容器set()---&gt;自定义数据类型

set容器中不能插入重复的元素,需要其插入的元素有比较大小(<).相等(==) 的逻辑判断,这是因为set中的元素是有序排列, 默认从小到大排列 std::set<type,std::less<type>> mySet ; 等同于 std::set<type> mySet; 所以需要元素的数据类型 具有 大小.相等判断的函数. 对于编译器标准定义数据类型(如 int,float,double等),系统已经定义大小判断:但对于自定义数据就要注意自己动手添加这些函数.

用类模板实现容器存储自定义数据类型(类似于STL里面的vector)

上一节里面已经提到了,用类模板存储自定义的数据类型,如Teacher类型时,需要重载Teacher类的拷贝构造函数,"="操作符,"<<"操作符,特别要注意深拷贝和浅拷贝的问题. 例如: 1 //1.myvector.h文件 2 #ifndef MYVECTOR_H 3 #define MYVECTOR_H 4 5 #include <iostream> 6 using namespace std; 7 8 template<typen

PLC:学习笔记(西门子)4

功能指令及应用(s7-200)·传送类指令·运算指令·子程序·时钟指令·中断·PID指令·通信指令 一.传送.移位.填充指令1.传送类1-1:单一传送(Move):指令格式(MOV* IN,OUT  //*:B.W.DW(LAD中)D(STL中).R)      功能描述:使能端输入有效时,把数据从IN传到OUT所指的存储单元  数据类型:输入/输出均为一致1-2:块传送(Block Move):指令格式(BM*    IN,OUT,N   //*:B.W.DW(LAD中)D(STL中).R;

西门子PLC学习笔记十五-(数据块及数据访问方式)

一.数据块 数据块是在S7 CPU的存储器中定义的,用户可以定义多了数据块,但是CPU对数据块数量及数据总量是有限制的. 数据块与临时数据不同,当逻辑块执行结束或数据块关闭,数据块中的数据是会保留住的. 数据块分共享数据块.背景数据块.用户自定义数据块,下面分别介绍. 1.共享数据块(全局数据块) 其用于存储全局数据,所有逻辑块(OB.FC.FB)都可以访问共享数据块中的数据. 2.背景数据块(私有存储区) 其用做功能块(FB)的"存储器".FB的参数和静态变量安排在它的背景数据块中.

STL学习思想

1.模版:一定要注意参数和返回值的模版 2.STL一系列的API:一定要注意返回值 3.容器中的都是值拷贝,而不是引用,在执行插入时,内部实行拷贝动作,所以STL中插入类时,一般都必须:无参构造函数,拷贝构造函数,重载=运算符,必须的自己重写,达到深拷贝!!! 4.一元谓词:函数只有一个参数,谓词:代表函数的返回值必须为bool类型;   二元谓词:函数只有二个参数,谓词:代表函数的返回值必须为bool类型; 5.算法和具体的数据类型相分离:通过函数对象(仿函数)来实现,本质:函数指针!!! 6