[三菱] 如何理解STEP7的复杂数据类型:ANY

[复制链接]
查看137 | 回复0 | 2024-8-10 21:08:13 | 显示全部楼层 |阅读模式
>摘要
最近有小伙伴询问关于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),因此可表达更多的信息。







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则