如何理解STEP7的复杂数据类型:ANY
在之前的PLC基础篇中我们曾介绍过STEP7的数组、字符串、指针(POINTER)等数据类型,最近有小伙伴询问关于STEP7的“ANY”数据类型的理解及使用。考虑到疑问的普遍性,于是我想写篇文章介绍下STEP7的ANY数据类型。

ANY数据类型是STEP7的一种复杂数据类型。所谓“复杂”,就是说它是由一些简单数据类型(比如:字节,字等)按照某种定义组成的。由于ANY数据类型中包含了很多信息(比如:访问数据的地址、访问数据的长度、访问数据的基本数据类型等),很多系统功能块都使用ANY数据类型作为参数。
比如,系统功能块SFC20 "BLKMOV",它来实现从一个地址(源地址)到另一个地址(目标地址)拷贝一定长度的数据的功能。其源地址和目标地址的参数都是使用ANY数据类型。
S7-300/400,S7-1500系列PLC都支持ANY数据类型。ANY数据类型包含10个字节,各字节的定义如下图:

我们来解释下各字节的含义:
字节0(Byte0):为常数10H(十六进制数10),表示STEP7;
字节1(Byte1):ANY数据中的基本数据类型;
字节2~字节3(Byte2~Byte3):ANY数据的重复因子(Repetition factor),表示传送的数据的长度或者数组、字符串的长度;
字节4~字节5(Byte4~Byte5):数据块的编号(DB number);当访问区域为非DB区时,将该值设置为0;
字节6(Byte6):访问存储区的代码;
字节7的0~2位、字节8及字节9的3~7位:表示访问数据的字节地址(byte address);
字节9的0~2位:表示访问数据的位地址(bit address);
ANY数据的基本数据类型代码(Byte1)见下面的表格:

注:当数据类型为BLOCK_FB,BLOCK_FC,BLOCK_DB,BLOCK_SDB,COUNTER或TIMER时,重复因子(repetition factor)必须为1,数据块编号(DB number,byte4~byte5)必须为0,字节7(byte7)必须为0。字节8~字节9(byte8~byte9)表示数据块FB/FC、计数器或定时器的编号;
ANY数据类型的访问存储区代码(Byte6)见下面的表格:

其实,ANY数据类型的Byte4~Byte9就是POINTER数据类型。ANY是在POINTER的基础上增加了访问长度(重复因子)及访问数据的基本数据类型(Byte1),因此可表达更多的信息。
可以去看看文章详解STEP7的指针数据类型(POINTER)增加对ANY数据类型的理解。
另外提醒下:S7-1200不支持ANY数据类型。
相关参考文章:
PLC基础篇之数据类型(Data type)
PLC基础篇之复杂数据类型:数组与字符串
好了,关于STEP7的ANY数据类型就介绍到这里。
-
Origin(Pro):学习版的窗口限制【数据绘图】 2020-08-07
-
如何卸载Aspen Plus并再重新安装,这篇文章告诉你! 2020-05-29
-
AutoCAD 保存时出现错误:“此图形中的一个或多个对象无法保存为指定格式”怎么办? 2020-08-03
-
OriginPro:学习版申请及过期激活方法【数据绘图】 2020-08-06
-
CAD视口的边框线看不到也选不中是怎么回事,怎么解决? 2020-06-04
-
教程 | Origin从DSC计算焓和比热容 2020-08-31
-
如何评价拟合效果-Origin(Pro)数据拟合系列教程【数据绘图】 2020-08-06
-
Aspen Plus安装过程中RMS License证书安装失败的解决方法,亲测有效! 2021-10-15
-
CAD外部参照无法绑定怎么办? 2020-06-03
-
CAD中如何将布局连带视口中的内容复制到另一张图中? 2020-07-03
