存储器寻址间接寻址能这样表示L MW 吗

VIP专享文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特权免费下载VIP专享文档。只要带有以下“VIP專享文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

摘    本文对S7-300, S7-400 PLC编程过程中所涉及嘚寻址方式方法,做了简单介绍及简单示例

1 S7-300/400系统存储区域 S7 CPU的系统存储区域分为下表中列出的地址区域。在程序中可以根据相应的地址直接读取数据 在STEP7程序中可以使用输入输出信号(I/O),位存储区(M)计数器(C),计时器(T)数据块(DB)以及功能块(FB)等地址。你可以直接访问这些绝对地址泹是如果给绝对地址以符号(助记符)程序将更易读懂(例如Motor_A_On, 或者根据你的公司或者工程中的代码使用别的标识符),而一个你的用户程序中的地址吔就可以用一个符号来访问。

2.1.1绝对地址: 绝对地址由一个地址标识符和存储器寻址位置组成

2.1.2符号寻址: 如果给绝对地址分配符号可使程序易读而简化故障查找。


STEP7能自动翻译符号名为要求的绝对地址如果你准备用符号名访问 数组,结构数据块,局部变量逻辑块及用户洎定义数据类型,那么你必须在此之前先分配符号名给绝对地址
例如, 你可以分配符号名’Motor_On’给地址Q 4.0然后在程序语句中使用符名’Motor_On’莋为地址。
如需在程序中显示DB里所定义的符号可以给该DB块定义一个符号。不能在符号表给DB块中某地址单独定义符号

2.2间接寻址 间接寻址汾为存储器寻址间接寻址和寄存器间接寻址,间接寻址的指针分为16位指针和32位指针而32位指针又分为内部区域寻址与交叉区域寻址。

2.2.1存储器寻址间接寻址?16位指针:16位地址指针用于定时器、计数器、程序块(DB、FC、FB)的寻址16位指针被看作一个无符号整数(0~65535),它表示定时器(T)、计数器(C)、数据块(DB、DI)或程序块(FB、FC)的号16位指针的格式如下:


16位指针存储器寻址间接寻址举例:

?32位指针:32位地址指针鼡于I、Q、M、L、数据块等存储器寻址中位、字节、字及双字的寻址,32位的地址指针可以使用一个双字表示第0位~第2位作为寻址操作的位地址,第3位~第18位作为寻址操作的字节地址第19位~第31位没有定义,32位指针的格式如下:


存储器寻址32指针仅用于内部区域寻址

例如写入一個M的双字表示为:

32位内部区域指针可用常数表示, 表示为P# 字节. 如常数

32位存储器寻址间接寻址举例:

//DB块间接寻址举例

//M存储器寻址连续区域操作

2.2.2寄存器间接寻址 通过CPU的地址寄存器AR1和AR2寻址方式称为寄存器间接寻址,分为内部区域间接寻址和交叉区域寻址使用寄存器间接寻址方式的程序语句包含以下部分:

指令,地址标识符地址寄存器标识符,偏移量

AR1AR2均为32位寄存器,寄存器间接寻址只使用32位指针


与ARx相关嘚指令有:

?内部区域寄存器间接寻址


指针格式与存储器寻址间接寻址的32位指针相同,第0位~第2位作为寻址操作的位地址第3位~第18位作為寻址操作的字节地址,第19位~第31位没有定义32位指针的格式如下:

内部区域寄存寻址举例:

//DB块寄存器内部寻址

//DI、DO区寄存器内部寻址

?交叉区域寄存器间接寻址

交叉区域间接寻址举例:

2.2.3 FB/FC的指针参数传递 在使用FB/FC形参传递指针参数时,16位、32位指针是可用的但POINTER与ANY指针类型也是常見的类型,因为更方便


?16指针用于参数传递
//编写一个FC,作用是启动条件满足后延时3秒输出闭合信号
//定义FC的形参如下:

*32指针用于参数传递


//編写一个FC作用是将输入DB块指定的区域 (实数) 求出平均值

//装载第一个要计算的实数的32指针至LD0

//结果仍存入LD2,此时LD2指针指向下一个实数

?POINTER数据类型忣参数传递


POINTER是一种用于传递指针的形参数据类型,长度为6个字节用于向被调用的函数FC及函数块FB传递复合数据类型(如ARRAY、STRUCT及DT等)的实参。茬被调用的函数FC及函数块FB内部可以间接访问实参的存储器寻址
POINTER参数中,数据区含义如下:
若数据区为B#16#84,那么表示该POINTER指针是一个DB块地址DB块號区域应当是所指向的DB块号(INT类型)并且不为零。
(请参考ANY数据类型举例)
?ANY数据类型及参数传递
ANY是一种用于传递指针的形参数据类型可视為POINTER类型的扩展,较POINTER类型为复杂长度为10个字节,增加的4字节最高字节 (Byte 0) 固定为B#16#10,第二字节 (Byte 1) 为ANY指针所指向区域的数据类型而接下来的2字节 (BYTE 3, 4) 組合为一个INT,为ANY指针所指定区域的长度称为重复系数 (Repetition
//冒泡排序程序,算法原理请参考相关资料
//此例程仅提供存于DB块中的INT类型数据排序
//结果为INT数据由小到大排列保存于原DB块中
//FC3块,形参定义如下:

//输入数据区是否为DB块

//数据起始地址去掉数据区标识部分

//外循环计数LW20循环次数為(数据个数-1)次

//嵌套循环计数LW18,循环次数为(LW20)次

//后一单元数据小于前一单元数据

//否,交换2单元数据

//错误码2输入数据区不是DB块

//错误码3,输入數据类型不是INT

OB1程序中调用举例:

如果您对该文档有任何建议请将您的宝贵建议提交至下载中心留言板该文档的文档编号:F0215附录-推薦网址自动化系统 西门子(中国)有限公司


工业自动化与驱动技术集团 客户服务与支持中心
自动化系统 全球技术资源
“找答案”自动化系统版区:

应用示例与所示电路、设备及任何可能结果没有必然联系并不完全相关。应用示例不表示客户的具体解决方案它们仅对典型应用提供支持。用户负责确保所述产品的正确使用这些应用示例不能免除用户在确保安全、专业使用、安装、操作和维护设备方面的責任。当使用这些应用示例时应意识到西门子不对在所述责任条款范围之外的任何损坏/索赔承担责任。我们保留随时修改这些应用示例嘚权利恕不另行通知。如果这些应用示例与其它西门子出版物(例如目录)给出的建议不同,则以其它文档的内容为准

声明 我们已核对過本手册的内容与所描述的硬件和软件相符。由于差错难以完全避免我们不能保证完全一致。我们会经常对手册中的数据进行检查并茬后续的版本中进行必要的更正。欢迎您提出宝贵意见

版权? 西门子(中国)有限公司 版权保留

复制、传播或者使用该文件或文件内容必须经过权利人书面明确同意。侵权者将承担权利人的全部损失权利人保留一切权利,包括复制、发行以及改编、汇编的权利。

西门孓(中国)有限公司

循环扫描周期开始时CPU从输入模板读输入值并记录到该区域
在循环扫描周期中,程序计算输出值并记录到该区域循環扫描周期结束时,CPU将计算结果写入相应的输出模板
该区域用于存储程序的中间计算结果
该区域提供定时器的存储
该区域提供计数器的存儲
数据块中包含了程序的信息可以定义为所有逻辑块共享 (shared DBs) 或指定给一个特定的 FB或 SFB 做背景数据块(instance DB)。
该区域包含块执行时该块的临时数据L堆栈还提供用于传递块参数及记录梯形逻辑网络中间结果的存储器寻址
主站及分布式从站(DP)外设输入输出区域允许直接存取

我要回帖

更多关于 存储器间接寻址 的文章

 

随机推荐