25

S7 CPU的系统存储区域分为下表中列出的地址区域。在程序中可以根据相应的地址直接读取数据。

地址区域

可以访问的地址单位

S7符号

(IEC)

描述

 

过程映像输入表

输入(位)

 

循环扫描周期开始时,CPU从输入模板读输入值并记录到该区域

 

输入(字节)

IB

 

输入(字)

IW

 

输入(双字

ID

 

过程映像输出表

输出(位)

Q

在循环扫描周期中,程序计算输出值并记录到该区域。循环扫描周期结束时,CPU将计算结果写入相应的输出模板

 

输出(字节)

QB

 

输出(字)

QW

 

输出(双字)

QD

 

位存储器

存储器(位)

M

该区域用于存储程序的中间计算结果

 

存储器(字节)

MB

 

存储器(字)

MW

 

存储器(双字)

MD

 

定时器

定时器 (T)

T

该区域提供定时器的存储

 

计数器

计数器 (C)

C

该区域提供计数器的存储

 

数据块

数据块,用'OPN DB'打开

DB

数据块中包含了程序的信息。可以定义为所有逻辑块共享 (shared DBs) 或指定给一个特定的 FB或 SFB 做背景数据块(instance DB)。

 

数据位

DBX

 

数据字节

DBB

 

数据字

DBW

 

数据双字

DBD

 

数据块,用'OPN DI'打开

DI

 

数据位

DIX

 

数据字节

DIB

 

数据字

DIW

 

数据双字

DID

 

局部数据

局部数据位

L

该区域包含块执行时该块的临时数据。L堆栈还提供用于传递块参数及记录梯形逻辑网络中间结果的存储器

 

局部数据字节

LB

 

局部数据字

LW

 

局部数据双字

LD

 

外设地址 (I/O)

外设输入字节

PIB

主站及分布式从站(DP)外设输入输出区域允许直接存取

 

输入

 

外设输入字

PIW

 

外设输入双字

PID

 

外设地址 (I/O)

外设输出字节

PQB

 

输出

 

外设输出字

PQW

 

外设输出双字

PQD

 

1         S7-300/400 PLC寻址方式

1.1      直接寻址

  1. 直接地址:例如I0.0,Q1.7,PIW256,PQW512,MD20,T15,C16,DB1.DBB10,L10.0等
  2. 符号寻址:例如qq,ww.aa等

1.2      间接寻址

  1. 存储器间接寻址:16位指针,例如OPN DB[MW2]32位指针,例如A I[MD0]
  1. 寄存器间接寻址:32位指针,例如A I[AR1,P#0.0],A [AR1,P#0.0]
  2. S7-300/400寻址方式图解

2         如何使用指针

指针用来指向一个地址。使用这种寻址方式的优点在于可以在程序运行过程中实现变址。

指针用于存储器间接寻址

程序中用于存储器间接寻址的语句包含一个指令、一个地址标识符、以及一个偏移量(偏移量必须在方括号内给出)。

下面给出一个双字格式的指针的例子:

L P#8.7                把指针值装载到累加器1

T I[MD2]               把指针值传送到MD2

A I[MD2]               查询I8.7的信号状态

= Q[MD2]             给输出位Q8.7赋值

存储区域内部寻址及交叉寻址

程序中采用这些寻址方式的语句包含一个指令以及下列内容:地址标识符、地址寄存器标识符、偏移量。地址寄存器(AR1、AR2)及偏移量必须写在方括号内。

存储区域内部寻址例程

指针不包含指示存储区域的信息:

L P#8.7                   把指针值装载到累加器1

LAR1                       把指针从累加器1装载到AR1

A I[AR1,P#0.0]        查询I8.7的信号状态

= Q[AR1,P#1.1]       给输出位Q10.0赋值

偏移量0.0不起作用。输出Q10.0 等于8.7 (AR1) 加偏移量1.1。结果是10.0 ,而不是9.8,参见指针格式。

存储区域交叉寻址例程

在存储区域交叉寻址中,指针中包含指示存储区域的信息(例子中为 I 和 Q)。

L P#I8.7                   把指针值及存储区域标识装载到累加器1

LAR1                       把存储区域I 和地址8.7装载到AR1

L P#Q8.7                 把指针值和地址标识符装载到累加器1

LAR2                       把存储区域Q和地址8.7装载到AR2

A [AR1,P#0.0]        查询输入位I8.7的信号状态

= [AR2,P#1.1]         给输出位Q10.0赋值

偏移量0.0不起作用。输出Q10.0 等于8.7 (AR2) 加偏移量1.1。结果是10.0 ,而不是9.8,参见指针格式。

  1. Why does the S7-400 CPU go into STOP with the error message 'Incorrect area ID'?

written by admin


Leave a Reply