西门子plc寻址
西门子S7-200 300系详细介绍

西门子S7-200 300系详细介绍之西门子S7-200/300 PLC寻址方式寻址方式是指令中用于说明操作数所在地址的方法。
正确地获得指令所需的操作数是寻址要求完成的工作,操作数是指令的操作或运算对象,操作数可以直接给出或间接给出。
可用作STEP7指令操作对象的操作数有常数、S7状态字中的状态位、S7的各种寄存器、数据块(DB)、功能块(FB和FC)、系统功能块(SFB和SFC)和S7各存储区中的单元。
S7的寻址方式可分为立即寻址、直接寻址、存储器间接寻址和寄存器间接寻址。
S7-200PLC的寻址方式有立即寻址、直接寻址、间接寻址。
1、立即寻址。
指令直接给出操作数,操作数紧跟着操作码,在取出指令的同时也就取出了操作数,这种方式称为立即寻址。
立即寻址的操作数是常数或常量,并且操作数直接在指令中。
2、直接寻址。
在直接寻址的指令中,直接给出操作数的存储单元地址,包括寄存器或存储器的区域、长度和位置。
例如,MB200表示以字节方式存取,MW200表示存取由MB200、MB201组成的字。
由于直接在指令中使用寄存器或寄存器的元件名称和地址编号,根据这个地址就可以立即找到该数据,必须注意的是操作数的地址应按规定的格式表示。
指令中,数据类型应与指令标识符相匹配。
3、间接寻址。
间接寻址方式是数据存放在存储器或寄存器中,在指令中只出现所需数据所在单元的内存地址的地址。
存储单元地址的地址又称为地址指针,这种间接寻址方式与计算机的间接寻址方式相同。
间接寻址在处理内存连续地址中的数据时非常方便,而且可以缩短程序所生成的代码的长度。
S7-200 CPU以变量存储器、局部存储器或累加器的内容值为地址进行间接寻址。
可间接寻址的存储器区域有I、Q、V、M、S、T (仅当前值)、C (仅当前值)。
不可以对独立的位(bit)值或模拟量进行间接寻址。
西门子S7-200/300 PLC系统配置的基本原则PLC系统配置具有不同的方案,系统设计也比较灵活,但总体上具有一定的参考原则…下面分别介绍PLC系统配置及系统设计的基本原则,系统配置基本原则PLC系统配置应遵循以下几个力面的原则1.完整性原则PLC系统配置应考虑以下几个方面:(1)CPU模块的配置CPU模块的配置是否合乎要求是PLC系统性能的关键,特别是CPU模块的工作速度及控制规模要合乎要求。
西门子PLC符号

SITRAIN Training for
Automation and Drives
(最多 24 个字符)
SIMATIC® S7
Siemens AG 2003. All rights reserved.
Date: File:
20.12.2010 Symbols.3
符号寻址 - 概述
在 LAD/STL/FBD 编辑器中符号选择
SIMATIC® S7
Siemens AG 2003. All rights reserved.
Date: File:
20.12.2010 Symbols.11
SITRAIN Training for
Automation and Drives
练习: 练习:为Conveyor Model建立符号表 建立符号表
块的声明表
程序编辑器
块的代码区 符号表
程序编辑器 符号编辑器
DB的声明表
程序编辑器
SIMATIC® S7
Siemens AG 2003. All rights reserved.
Date: File:
20.12.2010 Symbols.4
SITRAIN Training for
Automation and Drives
Siemens AG 2003. All rights reserved.
Date: File:
20.12.2010 Symbols.6
SITRAIN Training for
Automation and Drives
查看: 查看:过滤器
SIMATIC® S7
Siemens AG 2003. All rights reserved.
西门子S7-200PLC指令系统手册

(二)输出指令 梯形图(LAD)中,“()”表示线圈,“能 流”到线圈端,则线圈被激励,其Q寄存器的相 应位为1,反之为0; 语句表(STL)中,输出指令为“=”,把栈 顶值复制到操作数地址指定的存储器位(bit), 堆栈各级栈值不变。 (三)置位和复位指令-把从操作数(bit)指定 的地址开始的N个点都被置位或复位,其中N=1 -255
3. 修改指针:用自增或自减指令修改指针,则可 连续存取存储单元中的数据
五、用户程序的结构 用户程序可分为三个区:主程序、子程序和 中断程序; 主程序(OB1):是用户程序的主体,CPU 在每一个扫描周期都要执行一次主程序指令; 子程序:可选部分,只有主程序调用时才执 行; 中断程序:可选部分,只有当发生中断事件 时,才执行中断程序,可在扫描周期的任意点执 行。
(二)直接寻址-指令中直接给出操作数的地址 的寻址方式 例: 位寻址 AND Q5.5
字节寻址 ORB VB33 , LB21 字寻址 双字寻址 MOVW MOVD AC0 , AQW200 AC1 , VD200
(三)间接寻址-指令中给出了存放操作数地 址的存储单元的地址的寻址方式 1. 建立指针
S7-200 PLC 的SIMATIC指令集不支持完全 数据类型检查; 使用局部变量时,执行简单数据类型检查; 使用全局变量时,指令操作数为地址而不是 可选的数据类型时,执行无数据类型检查。 (二)数据长度和数值范围 数据长度:用字节型(B)、字型(W)、 双字型(D)分别表示8位、16位、32位数据; 不同的数据长度对应的数据范围如表5-4所示
在语句表(STL)中,没有EN允许输入端, 但允许执行指令的条件是栈顶的值必须为1。 功能框的ENO端是允许输出端,即允许功能 框的布尔量输出,用于指令的级联 ; 语句表(STL)中,用AENO(ANDENO)指 令产生允许输出。 (四)条件输入、无条件输入 条件输入:在梯形图(LAD)、功能块图 (FBD)中,与“能流”有关的功能框或线圈不直 接与左母线连接;
西门子plc指针的概念及应用资料

plc地址的概念完整的一条指令,应该包含指令符+操作数(当然不包括那些单指令,比如NOT等)。
其中的操作数是指令要执行的目标,也就是指令要进行操作的地址。
我们知道,在PLC中划有各种用途的存储区,比如物理输入输出区P、映像输入区I、映像输出区Q、位存储区M、定时器T、计数器C、数据区DB和L等,同时我们还知道,每个区域可以用位(BIT)、字节(BYTE)、字(WORD)、双字(DWORD)来衡量,或者说来指定确切的大小。
当然定时器T、计数器C不存在这种衡量体制,它们仅用位来衡量。
由此我们可以得到,要描述一个地址,至少应该包含两个要素:1、存储的区域2、这个区域中具体的位置比如:A Q2.0其中的A是指令符,Q2.0是A的操作数,也就是地址。
这个地址由两部分组成:Q:指的是映像输出区2.0:就是这个映像输出区第二个字节的第0位。
由此,我们得出,一个确切的地址组成应该是:〖存储区符〗〖存储区尺寸符〗〖尺寸数值〗.〖位数值〗,例如:DBX200.0。
DB X 200 .其中,我们又把〖存储区符〗〖存储区尺寸符〗这两个部分合称为:地址标识符。
这样,一个确切的地址组成,又可以写成:地址标识符 + 确切的数值单【间接寻址的概念】寻址,就是指定指令要进行操作的地址。
给定指令操作的地址方法,就是寻址方法。
在谈间接寻址之前,我们简单的了解一下直接寻址。
所谓直接寻址,简单的说,就是直接给出指令的确切操作数,象上面所说的,A Q2.0,就是直接寻址,对于A这个指令来说,Q2.0就是它要进行操作的地址。
这样看来,间接寻址就是间接的给出指令的确切操作数。
对,就是这个概念。
比如:A Q[MD100] ,A T[DBW100]。
程序语句中用方刮号 [ ] 标明的内容,间接的指明了指令要进行的地址,这两个语句中的MD100和DBW100称为指针Pointer,它指向它们其中包含的数值,才是指令真正要执行的地址区域的确切位置。
间接由此得名。
西门子PLC的地址的分配方式

西门子PLC的地址的分配方式根据不同的PLC配置情况确定I/O地址是PLC编程的前提与基础,程序中的地址必须与实际物理连接点一一对应,才能确保动作的正确执行。
当选择了PLC之后,首先需要确定的是系统中各I/O 点的绝对地址。
在西门子S7系列PLC中I/O绝对地址的分配方式共有固定地址型、自动分配型、用定义型3种。
实际所使用的方式决定于所采用的PLC的CPU型号、编程软件、软件版本、编程人员的选择等因素。
1.固定地址型固定地址分配方式是一种对PLC安装机架上的每一个安装位置(插槽)都规定地址的分配方式。
其特点如下:①PLC的每一个安装位置都按照该系列PLC全部模块中可能存在的最大I/O点数分配地址。
例如:S7-300系列I/O模块中最大开关量输入/输出为32点,因此,每一个安装位置都必须分配32点地址:如果实际安装的模块只有16点输入,那么剩余的I/O地址将不可以再作为物理输入点使用。
②对于输入或输出来说,I/O地址是间断的,而且,在输入与输出中不可以使用相同的二进制字节与位。
例如:S7-300系列I/O模块的第1安装位中安装了32点输入模块,地址数据中的0.0~3.7就被该模块所占用,地址固定为I0.0~13.7;即使第2安装位中安装了32点输出模块,其输出地址也只能是Q4.O~Q7.7,而不可以是QO.O~Q3.7,在实际编程时QO.O~Q3.7就变成了不存在的输出。
同样,如果在第3安装位中接着安装了16点输入模块,其地址将为I8.0~19.7,在实际编程时I4.0~17.7就变成了不存在的输入。
以上分配原则对模拟量模块同样适用。
2.自动分配型自动地址分配方式是一种通过自动检测PLC所安装的实际模块,自动、连续分配地址的分配方式。
其特点如下:①PLC的每一个安装位置的I/O点数量无规定,PLC根据模块自动分配地址。
例如:当每一个安装位置安装了32点模块后,PLC自动分配给该模块0.0~3.7的地址:如果实际安装的模块只有16点输入,那么PLC自动分配给该模块的地址就成为0.0~1.7。
西门子PLC指针编程

POINTER数据 类型指针 ANY数据类型 指针 FB块形参的 编程
2007 8月
Page 7
32位地址指针 32位地址指针
A&D AS CS2 FA Systems Support
寻址方式 直接寻址 存储区地址指针 存储区地址指针
32位地址指针 32位地址指针 32位地址指针用于I、Q、M、L、数据块等存储器中位、字节、字及 双字的寻址,32位的地址指针可以使用一个双字表示,第0位~第2 位作为寻址操作的位地址,第3位~第18位作为寻址操作的字节地址, 第19位~第31位没有定义,32位指针的格式如下:
地址寻址表示格式为:区域标识符[16位地址指针],例如打开一个 DB块表示为:
寄存器间接寻址
POINTER数据 类型指针 ANY数据类型 指针 FB块形参的 编程
A&D CS2 FA 崔坚
SIMATIC Technical Consulting
2007 8月
Page 6
16位地址指针使用示例 16位地址指针使用示例
A&D CS2 FA 崔坚 SIMATIC Technical Consulting Page 13
2007 8月
寄存器间接寻址使用的指令
A&D AS CS2 FA Systems Support
寄存器间接寻址使用CPU内部集成的两个32位寄存器AR1和AR2
寻址方式 直接寻址 存储区地址指针
寄存器间接寻址
POINTER数据 类型指针 ANY数据类型 指针 FB块形参的 编程
LAR1 LAR1 <D> : LAR1 MD20 LAR1 AR2 : LAR2 LAR2 <D> : TAR1 TAR1<D> : TAR1 AR2 : TAR2 TAR2 <D> : CAR
西门子PLC培训教程(全)
详细讲解西门子PLC支持的通信协议,如S7通信、Profinet、 Modbus等。
通信配置方法
介绍如何在西门子PLC中进行通信配置,包括硬件连接、参数设置 等。
通信故障排查与处理
提供通信故障排查的方法和处理措施。
远程监控技术实现原理及案例分析
远程监控技术概述
简要介绍远程监控技术的概念、应用和发展 趋势。
西门子PLC系列分类及特点
S7-200系列
S7-300系列
小型PLC,结构紧凑、功能强大,适用于简 单控制任务。
中型PLC,模块化设计,易于扩展和维护, 适用于中等规模的控制任务。
S7-400系列
S7-1200/1500系列
大型PLC,高性能、高可靠性,适用于复杂 的控制任务。
新一代PLC,集成了运动控制、过程控制等 功能,适用于高端控制任务。
编程环境
西门子PLC的编程环境主要有TIA Portal和STEP 7两种。TIA Portal是西门子推出的全新工程组态软件,支持多种 编程语言,具有直观易用的界面和强大的功能;STEP 7是西门子早期的PLC编程软件,现已逐渐被TIA Portal所 取代。
02
西门子PLC产品介绍
Chapter
实现方法
首先,可以使用模拟量输入模块采集温度数据,并将数据转换为PLC可以处理的数字量。 然后,使用高级指令对数据进行处理,如计算温度偏差、判断温度是否超限等。最后,根 据处理结果输出相应的控制信号,控制执行机构进行相应的操作。
注意事项
在实现复杂数据处理任务时,需要注意数据的准确性和实时性。同时,还需要考虑系统的 稳定性和可靠性,避免出现误操作或故障。
远程监控技术实现原理
西门子讲义2PLC基础
信号接口就是可编程控制器与数控系统进行信息交互的媒体。信号接口中的信号内容是由CNC系统明确定义的。接口信号分为两类:PLC输入到NCK的信号和NCK输入给PLC的信号。
1PLC→NCK表示NCK(数控核心)接收PLC发出请求的输入信号。如控制方式(DB11.DBX0.2)、X轴控制使能(DB31.DBX2.1)等信号。这些信号对PLC而是输出信号,是可读可写的。其输出线圈地址不能重复。否则该信号地址状会出现不确定(除置位/复位输出线圈的地址可以重复之外)。
FC功能块:
FCO-FC255 西门子采用FCO-FC35
用户FC36-255
FB功能块:
FB0-FB255 西门子采用FBO-FB35
用户FB36-255
DB数据块:
DB1-DB399 西门子采用DBO-DB89
用户DB90-399
Systemblock要看S7-300/400系统功能说明书
数据类型
DB 数据块
OB组织块:西门子按需要定义好的,功能固化的。
OB1:主程序循环
OB10:时间中断,特定时间中断
OB35:循环中断,以固定间隔循环运行
OB40:硬件中断,来自不同模块(I/O模块、CPU 、FM模块)中断
OB100:启动块,CPU上电或热启动(Warm Restart)执行一次,
里面有初始化,清零或加使能等内容。
双字: DWORD ,32位。 如ID0 QD0 MD10 DB10. DBD10
双字数据:间隔4个字符,不能重叠,否则数据重复,赋值错误。
S7-300的块
OBorganizationblock 组织块(主程序块)
FC Function 功能(子程序)
西门子PLC指针编程
寄存器间接寻址
POINTER数据 类型指针
ANY数据类型 指针
FB块形参的 编程
//////////////////////////////////////////////////////////////////////// ///L///1//2/////////////////////
T LW 20 UC FC [LW 20] //无条件调用FC12 L 13 T MW 20 A I 2.3 CC FB [MW 20] //如果I2.3为1,调用FB13。
TAR2 <D> : 将AR1存储的地址指针传输给指明的变量中。
CAR
: 交换AR1和AR2的内容。
A&D CS2 FA 崔坚
SIMATIC Technical Consulting 2007 8月
Page 14
A&D AS CS2 FA Systems Support
寻址方式 直接寻址
存储区地址指针
POINTER数据 类型指针
ANY数据类型 指针
FB块形参的 编程
32位地址指针
地址寻址表示格式为: 地址存储器标识符[32位地址指针],例如指针存储于LD20中, 装载M存储器一个字节表示
西门子PLC中s与set指令的区别
S是根据RLO状态来置位,SET是将 RLO 状态来置位。
1、S 置位:如果 RLO = 1,则使用置位指令(S),可以将寻址位置位为“1”
例如:
A I0.0
S Q0.0//如果I0.0为1( RLO = 1),则 Q0.0也为1;如果I0.0为0( RLO = 0),则 Q0.0也为0.。
2、SET RLO 置位:使用 RLO 置位(SET)指令,可以将 RLO 的信号状态置为“1”。
例如:
SET//将RLO 置位
=M 0.1//RLO 为1,则M 0.1也为1.
艾驰商城是国内最专业的MRO工业品网购平台,正品现货、优势价格、迅捷配送,是一站式采购的工业品商城!具有 10年工业用品电子商务领域研究,以强大的信息通道建设的优势,以及依托线下贸易交易市场在工业用品行业上游供应链的整合能力,为广大的用户提供了传感器、图尔克传感器、变频器、断路器、继电器、PLC、工控机、仪器仪表、气缸、五金工具、伺服电机、劳保用品等一系列自动化的工控产品。
如需进一步了解相关PLC产品的选型,报价,采购,参数,图片,批发等信息,请关注艾驰商城。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【地址的概念】完整的一条指令,应该包含指令符+操作数(当然不包括那些单指令,比如NOT 等)。
其中的操作数是指令要执行的目标,也就是指令要进行操作的地址。
我们知道,在PLC中划有各种用途的存储区,比如物理输入输出区P、映像输入区I、映像输出区Q、位存储区M、定时器T、计数器C、数据区DB和L等,同时我们还知道,每个区域可以用位(BIT)、字节(BYTE)、字(WORD)、双字(DWORD)来衡量,或者说来指定确切的大小。
当然定时器T、计数器C 不存在这种衡量体制,它们仅用位来衡量。
由此我们可以得到,要描述一个地址,至少应该包含两个要素:1、存储的区域2、这个区域中具体的位置比如:A Q2.0其中的A是指令符,Q2.0是A的操作数,也就是地址。
这个地址由两部分组成:Q:指的是映像输出区2.0:就是这个映像输出区第二个字节的第0位。
由此,我们得出,一个确切的地址组成应该是:〖存储区符〗〖存储区尺寸符〗〖尺寸数值〗.〖位数值〗,例如:DBX200.0。
DB X 200 . 0其中,我们又把〖存储区符〗〖存储区尺寸符〗这两个部分合称为:地址标识符。
这样,一个确切的地址组成,又可以写成:地址标识符+ 确切的数值单元【间接寻址的概念】寻址,就是指定指令要进行操作的地址。
给定指令操作的地址方法,就是寻址方法。
在谈间接寻址之前,我们简单的了解一下直接寻址。
所谓直接寻址,简单的说,就是直接给出指令的确切操作数,象上面所说的,A Q2.0,就是直接寻址,对于A这个指令来说,Q2.0就是它要进行操作的地址。
这样看来,间接寻址就是间接的给出指令的确切操作数。
对,就是这个概念。
比如:A Q[MD100] ,A T[DBW100]。
程序语句中用方刮号[ ] 标明的内容,间接的指明了指令要进行的地址,这两个语句中的MD100和DBW100称为指针Pointer,它指向它们其中包含的数值,才是指令真正要执行的地址区域的确切位置。
间接由此得名。
西门子的间接寻址方式计有两大类型:存储器间接寻址和寄存器间接寻址。
【存储器间接寻址】存储器间接寻址的地址给定格式是:地址标识符+指针。
指针所指示存储单元中所包含的数值,就是地址的确切数值单元。
存储器间接寻址具有两个指针格式:单字和双字。
单字指针是一个16bit的结构,从0-15bit,指示一个从0-65535的数值,这个数值就是被寻址的存储区域的编号。
双字指针是一个32bit的结构,从0-2bit,共三位,按照8进制指示被寻址的位编号,也就是0-7;而从3-18bit,共16位,指示一个从0-65535的数值,这个数值就是被寻址的字节编号。
指针可以存放在M、DI、DB和L区域中,也就是说,可以用这些区域的内容来做指针。
单字指针和双字指针在使用上有很大区别。
下面举例说明:L DW#16#35 //将32位16进制数35存入ACC1T MD2 //这个值再存入MD2,这是个32位的位存储区域L +10 //将16位整数10存入ACC1,32位16进制数35自动移动到ACC2T MW100 //这个值再存入MW100,这是个16位的位存储区域OPN DBW[MW100] //打开DBW10。
这里的[MW100]就是个单字指针,存放指针的区域是M区,MW100中的值10,就是指针间接指定的地址,它是个16位的值!--------L L#+10 //以32位形式,把10放入ACC1,此时,ACC2中的内容为:16位整数10T MD104 //这个值再存入MD104,这是个32位的位存储区域A I[MD104] //对I1.2进行与逻辑操作!=DIX[MD2] //赋值背景数据位DIX6.5!--------A DB[MW100].DBX[MD2] //读入DB10.DBX6.5数据位状态=Q[MD2] //赋值给Q6.5--------A DB[MW100].DBX[MD2] //读入DB10.DBX6.5数据位状态=Q[MW100] //错误!!没有Q10这个元件---------------------------------------------------------------------------------------------------从上面系列举例我们至少看出来一点:单字指针只应用在地址标识符是非位的情况下。
的确,单字指针前面描述过,它确定的数值是0-65535,而对于byte.bit这种具体位结构来说,只能用双字指针。
这是它们的第一个区别,单字指针的另外一个限制就是,它只能对T、C、DB、FC和FB进行寻址,通俗地说,单字指针只可以用来指代这些存储区域的编号。
相对于单字指针,双字指针就没有这样的限制,它不仅可以对位地址进行寻址,还可以对BYTE、WORD、DWORD寻址,并且没有区域的限制。
不过,有得必有失,在对非位的区域进行寻址时,必须确保其0-2bit为全0!总结一下:单字指针的存储器间接寻址只能用在地址标识符是非位的场合;双字指针由于有位格式存在,所以对地址标识符没有限制。
也正是由于双字指针是一个具有位的指针,因此,当对字节、字或者双字存储区地址进行寻址时,必须确保双字指针的内容是8或者8的倍数。
现在,我们来分析一下上述例子中的A I[MD104] 为什么最后是对I1.2进行与逻辑操作。
通过L L#+10 ,我们知道存放在MD104中的值应该是:MD104:0000 0000 0000 0000 0000 0000 0000 1010当作为双字指针时,就应该按照3-18bit指定byte,0-2bit指定bit来确定最终指令要操作的地址,因此:0000 0000 0000 0000 0000 0000 0000 1010 = 1.2详解西门子间接寻址<2>【地址寄存器间接寻址】在先前所说的存储器间接寻址中,间接指针用M、DB、DI和L直接指定,就是说,指针指向的存储区内容就是指令要执行的确切地址数值单元。
但在寄存器间接寻址中,指令要执行的确切地址数值单元,并非寄存器指向的存储区内容,也就是说,寄存器本身也是间接的指向真正的地址数值单元。
从寄存器到得出真正的地址数值单元,西门子提供了两种途径:1、区域内寄存器间接寻址2、区域间寄存器间接寻址地址寄存器间接寻址的一般格式是:〖地址标识符〗〖寄存器,P#byte.bit〗,比如:DIX[AR1,P#1.5] 或M[AR1,P#0.0] 。
〖寄存器,P#byte.bit〗统称为:寄存器寻址指针,而〖地址标识符〗在上帖中谈过,它包含〖存储区符〗+〖存储区尺寸符〗。
但在这里,情况有所变化。
比较一下刚才的例子:DIX [AR1,P#1.5]X [AR1,P#1.5]DIX可以认为是我们通常定义的地址标识符,DI是背景数据块存储区域,X是这个存储区域的尺寸符,指的是背景数据块中的位。
但下面一个示例中的M呢?X 只是指定了存储区域的尺寸符,那么存储区域符在哪里呢?毫无疑问,在AR1中!DIX [AR1,P#1.5] 这个例子,要寻址的地址区域事先已经确定,AR1可以改变的只是这个区域内的确切地址数值单元,所以我们称之为:区域内寄存器间接寻址方式,相应的,这里的[AR1,P#1.5] 就叫做区域内寻址指针。
X [AR1,P#1.5] 这个例子,要寻址的地址区域和确切的地址数值单元,都未事先确定,只是确定了存储大小,这就是意味着我们可以在不同的区域间的不同地址数值单元以给定的区域大小进行寻址,所以称之为:区域间寄存器间接寻址方式,相应的,这里的[AR1,P#1.5] 就叫做区域间寻址指针。
既然有着区域内和区域间寻址之分,那么,同样的AR1中,就存有不同的内容,它们代表着不同的含义。
【AR的格式】地址寄存器是专门用于寻址的一个特殊指针区域,西门子的地址寄存器共有两个:AR1和AR2,每个32位。
当使用在区域内寄存器间接寻址中时,我们知道这时的AR中的内容只是指明数值单元,因此,区域内寄存器间接寻址时,寄存器中的内容等同于上帖中提及的存储器间接寻址中的双字指针,也就是:其0-2bit,指定bit位,3-18bit指定byte字节。
其第31bit固定为0。
AR:0000 0000 0000 0BBB BBBB BBBB BBBB BXXX这样规定,就意味着AR的取值只能是:0.0 ——65535.7例如:当AR=D4(hex)=0000 0000 0000 0000 0000 0000 1101 0100(b),实际上就是等于26.4。
而在区域间寄存器间接寻址中,由于要寻址的区域也要在AR中指定,显然这时的AR中内容肯定于寄存器区域内间接寻址时,对AR内容的要求,或者说规定不同。
AR:1000 0YYY 0000 0BBB BBBB BBBB BBBB BXXX比较一下两种格式的不同,我们发现,这里的第31bit被固定为1,同时,第24、25、26位有了可以取值的范围。
聪明的你,肯定可以联想到,这是用于指定存储区域的。
对,bit24-26的取值确定了要寻址的区域,它的取值是这样定义的:区域标识符26、25、24位P(外部输入输出)000I(输入映像区)001Q(输出映像区)010M(位存储区)011DB(数据块)100DI(背景数据块)101L(暂存数据区,也叫局域数据)111如果我们把这样的AR内容,用HEX表示的话,那么就有:当是对P区域寻址时,AR=800xxxxx当是对I区域寻址时,AR=810xxxxx当是对Q区域寻址时,AR=820xxxxx当是对M区域寻址时,AR=830xxxxx当是对DB区域寻址时,AR=840xxxxx当是对DI区域寻址时,AR=850xxxxx当是对L区域寻址时,AR=870xxxxx经过列举,我们有了初步的结论:如果AR中的内容是8开头,那么就一定是区域间寻址;如果要在DB区中进行寻址,只需在8后面跟上一个40。
84000000-840FFFFF指明了要寻址的范围是:DB区的0.0——65535.7。
例如:当AR=840000D4(hex)=1000 0100 0000 0000 0000 0000 1101 0100(b),实际上就是等于DBX26.4。
我们看到,在寄存器寻址指针[AR1/2,P#byte.bit] 这种结构中,P#byte.bit又是什么呢?【P#指针】P#中的P是Pointer,是个32位的直接指针。
所谓的直接,是指P#中的#后面所跟的数值或者存储单元,是P直接给定的。
这样P#XXX这种指针,就可以被用来在指令寻址中,作为一个“常数”来对待,这个“常数”可以包含或不包含存储区域。
例如:● L P#Q1.0 //把Q1.0这个指针存入ACC1,此时ACC1的内容=82000008(hex)=Q1.0★L P#1.0 //把1.0这个指针存入ACC1,此时ACC1的内容=00000008(hex)=1.0● L P#MB100 //错误!必须按照byte.bit结构给定指针。