北岛夜话
原创工业智能控制领域(PLC、单片机/嵌入式、机器人、通信、机器视觉)的技术及经验分享。
文章527 浏览7986084

如何理解STEP7的复杂数据类型:ANY

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

cover.pngANY数据类型是STEP7的一种复杂数据类型。所谓“复杂”,就是说它是由一些简单数据类型(比如:字节,字等)按照某种定义组成的。由于ANY数据类型中包含了很多信息(比如:访问数据的地址、访问数据的长度、访问数据的基本数据类型等),很多系统功能块都使用ANY数据类型作为参数。

比如,系统功能块SFC20 "BLKMOV",它来实现从一个地址(源地址)到另一个地址(目标地址)拷贝一定长度的数据的功能。其源地址和目标地址的参数都是使用ANY数据类型。

S7-300/400,S7-1500系列PLC都支持ANY数据类型。ANY数据类型包含10个字节,各字节的定义如下图:

ANY_Data_Type.png

我们来解释下各字节的含义:
字节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)见下面的表格:

ANY_bascic_data_code.png

注:当数据类型为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_Access_area.png

其实,ANY数据类型的Byte4~Byte9就是POINTER数据类型。ANY是在POINTER的基础上增加了访问长度(重复因子)及访问数据的基本数据类型(Byte1),因此可表达更多的信息。

可以去看看文章详解STEP7的指针数据类型(POINTER)增加对ANY数据类型的理解。

另外提醒下:S7-1200不支持ANY数据类

相关参考文章:

PLC基础篇之数据类型(Data type)

PLC基础篇之复杂数据类型:数组与字符串

好了,关于STEP7的ANY数据类型就介绍到这里。欢迎扫描下方的二维码关注我们的微信公众号。

founderchip.png


已经过安全软件检测无毒,请您放心下载。

取消

感谢您的支持,欢迎常来看看!

扫码支持
一点动力,多少随意

打开支付宝扫一扫,即可进行扫码打赏哦

发表评论