CPU的内存区域详解

处理器/DSP

873人已加入

描述

CPU的内存区域是全系统声明的区域。由此,这些区域不必在逻辑块中声明。每个CPU均提供以下有各自地址范围的内存区域:

  • 在存贮映象中的输入/输出(如Q1.0)

  • 外部输入/输出(如PQ1.0)

  • 位内存(如M1.0)

  • 定时器、计数器(C1)

存取的语法(Syntax for Access)

  • 在逻辑块的代码部分,用赋值方式存取一个CPU内存区域,像简单存取,能够指定为一个绝对地址或符号或

  • 用索引方式存取。

内存

CPU内存区域的绝对存取

要通过绝对内存定位方式存取CPU的内存区域,使用将一个绝对标识符赋值给同类型的变量。

内存

绝对标识符指示CPU中的内存区域。通过指定地址标识符(此处为IB)后面跟一个地址(此处为10)来指定内存区域。

绝对标识符的语法(Syntax of the Absolute Identifier)

内存

内存前缀(Memory Prefix)

用内存前缀,指定要寻址的内存类型。

内存

依你选择的语种,德语和英语地址标识符有所不同。

大小前缀(Size Prefix)

用大小前缀,指定要从外部I/O读取的内存区域的长度。例如能够读一个籽节或一个字。如果只要指定一个位时,则使用大小前缀是可选的。

内存

地址(Address)

对于地址,首先指定绝对的字节地址,然后是用一个点分开的位地址。位地址是可选的。

内存

例子(Examples)

STATUSBYTE :=IB10;
STATUS_3   :=I1.1;
MEASVAL    :=IW20;

 

CPU内存区域的符号存取

用符号地址,代替绝对地址,能够用符号名来寻址CPU内存区域。

通过建立符号表在用户程序中将一个符号名指定给实际地址。用菜单命令选项(Options) > 符号表(Symbol Table)在S7-SCL中能够打开符号表任意次来增加符号。

对于数据类型说明,能够用使用能接受的指定数据元素大小的任何数据类型。下表说明符号表中怎么样显现的:

符号

绝对地址

数据类型

注释

Motor_contact_1

I 1.7

BOOL

Contact switch 1 for Motor A

Input1

IW 10

INT

Status word

存取(Access)

通过将一个值指定给同类型的已经声明符号的变量存取地址。

例子(Example)

MEASVAL_1     := Motor_contact_1;
Status_Motor1 := Input1 ;

CPU内存区域的索引存取

也能够用一外索引来存取CPU的内存区域。与绝对地址比较,此方式的优点是能够用变量索引动态寻址。例如,能够将FOR循环的控制变量用作地址。

执行索引存取内存区域与绝对方式的做法一样,仅提供了地址的长处。取代绝对地址,指定的索引能够是一个常量、一个变量或一个算术表达式。

对于索引存取,绝对标识符由地址标识符(内存前缀和大小前缀)和用于索引的基本表达式组成。

内存

绝对标识符的语法(Syntax of the Absolute Identifier)

内存

索引(基数表达式)必须遵循以下规则(The indexing (base expression) must adhere to the following rules)

  • 每个索引必须是一个INT类型的算术表达式。

  • 当存取BYTE、WORD或DWORD类型的数据时,只能使用一个索引。索引被看作字节地址。存取的长度由大小前缀指定。

  • 当存取BOOL类型的数据,必须使用双索引。第一个索引指定字节地址,第二个索引指定字节内的位地址。

例子(Example)

MEASVAL_1 :=IW[COUNTER];
OUTLABEL :=I[BYTENO, BITNO];

 

 

  审核编辑:汤梓红
 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分