找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 779|回复: 10

S7-300/400PLC ANY指针使用详解

  [复制链接]
  • 打卡等级:常驻代表
  • 打卡总天数:34
  • 打卡月天数:6
  • 打卡总奖励:9027
  • 最近打卡:2025-12-17 23:15:51

2823

主题

541

回帖

2万

积分

管理员

积分
22569
发表于 2024-11-2 16:00:51 | 显示全部楼层 |阅读模式

STEP 7以10个字节存储参数类型ANY。当构造类型为ANY的参数时,必须确保所有10个字节都被占用,因为调用块估计参数整个内容的值。例如,如果以字节4指定DB编号,也必须以字节6明确地指定存储器区。

    STEP 7管理基本和复杂数据类型的数据与参数类型的数据不同。


数据类型的ANY格式

   对于基本和复杂数据类型,STEP 7存储下列数据:

  • 数据类型
  • 重复因子
  • DB编号
  • 信息存储的存储区域
  • 数据的起始地址



    重复因子识别由参数类型ANY传送的指示数据类型的数量。这意味着可以指定数据区,也可以和参数类型ANY结合使用数组和结构。STEP 7将数组和结构识别为数据类型的编号(借助重复因数)。例如,如果要传送10个字,必须为重复因子输入数值10,并且必须为数据类型输入数值04。

    地址以格式Byte.Bit存储,此处字节寻址存储在字节7的位0 - 2,节字8的位0 - 7,节字9的位3 - 7。位地址存储在字节9的位0 - 2。

    对于类型NIL的空指针,所有来自字节1的字节设置为0。

   下表给出参数类型ANY的数据类型或存储区域的编码。

数据类型的编码

十六进制代码

数据类型

描述

b#16#00

NIL

空指针

b#16#01

BOOL

b#16#02

BYTE

字节(8位)

b#16#03

CHAR

字符(8位)

b#16#04

WORD

字(16位)

b#16#05

INT

整数(16位)

B#16#06

DWORD

字(32位)

b#16#07

DINT

双整数(32位)

b#16#08

REAL

浮点数(32位)

b#16#09

DATE

日期

b#16#0A

TIME_OF_DAY (TOD)

时间

b#16#0B

TIME

时间

b#16#0C

S5TIME

数据类型S5TIME

b#16#0E

DATE_AND_TIME (DT)

日期和时间(64位)

b#16#13

STRING

字符串


存储器区的编码

十六进制代码

区域

描述

b#16#80

P

I/O区域

b#16#81

I

输入区域

b#16#82

Q

输出区域

b#16#83

M

位存储区域

b#16#84

DB

数据块

b#16#85

DI

背景数据块

b#16#86

L

本地的数据(L堆栈)

b#16#87

V

先前的本地数据

参数类型的ANY格式

   对于参数类型,STEP 7存储数据类型和参数的地址。重复因子始终是1。字节4、5和7始终是0。字节8和9指示定时器、计数器或块的编号。


下表为参数类型显示参数类型ANY的数据类型编码。

十六进制代码

数据类型

描述

b#16#17

BLOCK_FB

FB编号

b#16#18

BLOCK_FC

FC编号

b#16#19

BLOCK_DB

DB编号

b#16#1A

BLOCK_SDB

SDB编号

b#16#1C

COUNTER

计数器编号

b#16#1D

TIMER

定时器编号

使用参数类型ANY

   可以为适合于任何数据类型的实际参数的块定义形式参数。当调用块是未知或可以改变时(和当允许任何数据类型时),已提供了实际参数的数据类型时,这尤其有用。在块的变量声明中,可以声明参数为数据类型ANY。然后可以在STEP 7中分配任何数据类型的实际参数。

       STEP 7为ANY数据类型的变量分配存储器的80个位。如果分配实际参数给此形式参数,STEP 7在80个位中编码起始地址、数据类型和实际参数的长度。调用块为ANY参数分析保存数据的80个位,并获取进一步处理所需的信息。


分配实际参数给ANY参数

    如果为参数声明数据类型ANY,可以分配任何数据类型的实际参数给形式参数。在STEP 7中,可以指定下列数据类型为实际参数:

  • 基本数据类型:指定实际参数的绝对地址或符号名称。
  • 复杂数据类型:指定复杂数据类型的数据符号名称(例如,数组和结构)
  • 定时器、计数器和块:指定编号(例如,T1C20FB6)
  • 下图说明数据如何传送到具有ANY数据类型参数的FC

    在此实例中,FC100具有三个参数(in_par1in_par2in_par3),声明为ANY数据类型。

  • FB10调用FC100时,FB10传送一个整数(静态变量speed)、一个字(MW100)和一个双字到DB10 (DB10.DBD40)
  • FB11调用FC100时,FB11传送一个实数数组(临时变量"Thermo")、一个布尔值(M 1.3)和一个定时器(T2)


为ANY参数指定数据区

   不仅可以分配各个地址(例如,MW100)给ANY参数,而且可以指定数据区。如果希望指定数据区为实际参数,使用下列常数格式指定要传送的数据总量:

       p# 区域标识符 Byte.Bit 数据类型 重复因数

   对于数据类型元素,可以为常数指定所有基本数据类型和数据类型DATE_AND_TIME的格式。如果数据类型不是BOOL,必须指定位地址0 (x.0)。下表为指定要传送的存储区域给ANY参数的格式的实例。

实际参数

描述

p# M 50.0 BYTE 10

指定字节存储区域中的10个字节:

MB50到MB59。

p# DB10.DBX5.0 S5TIME 3

指定数据类型S5TIME的数据的3个单元,它们位于DB10:

DB字节5到DB字节10。

p# Q 10.0 BOOL 4

在输出区指定4个位

Q 10.0到Q 10.3.


工控课堂 www.gkket.com

0

主题

70

回帖

95

积分

新手上路

积分
95
发表于 2025-11-13 02:09:42 | 显示全部楼层
水贴也要有仪式感,我先来打卡~
工控课堂 www.gkket.com

0

主题

104

回帖

149

积分

新手上路

积分
149
发表于 2025-11-13 02:23:51 | 显示全部楼层
笑不活了,评论区比正文还精彩!
工控课堂 www.gkket.com

0

主题

110

回帖

171

积分

新手上路

积分
171
发表于 2025-11-13 03:12:20 | 显示全部楼层
来凑个热闹,为楼主增加点人气!
工控课堂 www.gkket.com

0

主题

104

回帖

159

积分

新手上路

积分
159
发表于 2025-11-13 04:07:13 | 显示全部楼层
理性围观,感觉大家说的都有道理~
工控课堂 www.gkket.com

0

主题

71

回帖

99

积分

新手上路

积分
99
发表于 2025-11-13 08:39:45 | 显示全部楼层
不请自来,只为说一句:太精彩了!
工控课堂 www.gkket.com

0

主题

48

回帖

160

积分

新手上路

积分
160
发表于 2025-11-13 10:26:12 | 显示全部楼层
被戳中笑点 / 泪点,太真实了!
工控课堂 www.gkket.com

0

主题

91

回帖

154

积分

新手上路

积分
154
发表于 2025-11-13 10:29:52 | 显示全部楼层
这波反向操作,我属实没想到!
工控课堂 www.gkket.com

0

主题

92

回帖

139

积分

新手上路

积分
139
发表于 2025-11-16 18:54:48 | 显示全部楼层
路过混个脸熟,顺便为优质内容打 call~
工控课堂 www.gkket.com

0

主题

101

回帖

149

积分

新手上路

积分
149
发表于 2025-11-18 04:36:53 | 显示全部楼层
内容太顶了!疯狂点赞,已默默收藏~
工控课堂 www.gkket.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|手机版|免责声明|本站介绍|工控课堂 ( 沪ICP备20008691号-1 )

GMT+8, 2025-12-22 16:11 , Processed in 0.087232 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表