分享免费的编程资源和教程

网站首页 > 技术教程 正文

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

goqiw 2024-10-16 11:29:46 技术教程 29 ℃ 0 评论

在之前的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),因此可表达更多的信息。

结束!!!

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表