step编程之地址概念详解 .docx
《step编程之地址概念详解 .docx》由会员分享,可在线阅读,更多相关《step编程之地址概念详解 .docx(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品名师归纳总结完整的一条指令,应当包含指令符+操作数(当然不包括那些单指令,比如NOT 等)。其中的操作数是指令要执行的目标,也就是指令要进行操作的的址。我们知道,在 PLC 中划有各种用途的储备区,比如物理输入输出区 P、映像输入区 I、映像输出区 Q、位储备区 M、定时器 T、计数器 C、数据区 DB 和L 等,同时我们仍知道,每个区域可以用位( BIT )、字节( BYTE )、字( WORD )、双字( DWORD )来衡量,或者说来指定准确的大小。当然定时器 T、计数器 C 不存在这种衡量体制,它们仅用位来衡量。由此我们可以得到 , 要 描 述 一 个 的 址 , 至 少 应 该
2、包 含 两 个 要 素 :1、 存 储 的 区 域2、这个区域中具体的位置比如:AQ2.0其中的 A 是指令符, Q2.0 是 A 的操作数,也就是的址。这个的址由两部分组成:Q:指的是映像输出区2.0 : 就 是 这 个 映 像 输 出 区 第 二 个 字 节 的 第 0位 。由 此 , 我 们 得 出 ,一 个 确 切 的 的 址 组 成 应 该 是 :储备区符储备区尺寸符尺寸数值 .位数值,例如: DBX200.0。DBX200.0其中,我们又把储备区符储备区尺寸符这两个部分合称为:的址标 识 符 。 这 样 , 一 个 确 切 的 的 址 组 成 , 又 可 以 写 成 : 的址标识符
3、+确切的数值单元【间接寻址的概念】寻址,就是指定指令要进行操作的的址。给定指令操作的的址方法,就是寻址方法。在谈间接寻址之前,我们简洁的明白一下直接寻址。所谓直接寻址,简洁的说,就是直接给出指令的准确操作数,象上面所说的,A Q2.0,就是直接寻址 , 对 于A这 个 指 令 来 说 , Q2.0就 是 它 要 进 行 操 作 的 的 址 。可编辑资料 - - - 欢迎下载精品名师归纳总结这样看来,间接寻址就是间接的给出指令的准确操作数。对,就是这个概念。比如: A QMD100,A TDBW100 。程序语句中用方刮号 标明的内容,间接的指明白指令要进行的的址,这两个语句中的MD100 和
4、DBW100 称为指针 Pointer,它指向它们其中包含的数值,才是指令真刚要执行的的址区域的确切位置。间接由此得名。西门子的间接寻址方式计有两大类型:储备器间接寻址和寄存器间接寻址。【存储器间接寻址】储备器间接寻址的的址给定格式是:的址标识符+指针。指针所指示储备单元 中 所 包 含 的 数 值 , 就 是 的 址 的 确 切 数 值 单 元 。存 储 器 间 接 寻 址 具 有 两 个 指 针 格 式 : 单 字 和 双 字 。单字指针是一个 16bit 的结构,从 0-15bit,指示一个从 0-65535 的数值,这个 数值就 是被 寻址 的存储 区 域的编号 。双字指针是一个 32
5、bit 的结构,从 0-2bit,共三位,依据 8 进制指示被寻址的位编号,也就是 0-7。而从 3-18bit,共 16 位,指示一个从 0-65535 的数值, 这 个 数 值 就 是 被 寻 址 的 字 节 编 号 。指针可以存放在 M、DI 、DB 和 L 区域中,也就是说,可以用这些区域的内容来做 指针。单 字 指 针 和 双 字 指 针 在 使 用 上 有 很 大 区 别 。 下 面 举 例 说 明 : LDW#16#35/将32位16进 制 数35存 入ACC1 TMD2/ 这 个 值 再 存 入 MD2 , 这 是 个32位 的 位 存 储 区 域L +10 /将 16 位整数
6、 10 存入 ACC1,32 位 16 进制数 35 自动移动到 ACC2 T MW100/ 这 个 值 再 存 入 MW100 , 这 是 个 16 位 的位 储备 区 域OPN DBWMW100/ 打开 DBW10。这里的 MW100 就是个单字指针,存放指针的区域是M区,MW100 中的值 10,就是指针间接指定的的址,它是个16 位的值!可编辑资料 - - - 欢迎下载精品名师归纳总结L L#+10 /以 32 位形式,把 10 放入 ACC1 ,此时, ACC2 中的内容为: 16位整数10TMD104/ 这 个 值 再 存 入 MD104 , 这 是 个 32 位 的 位 存 储
7、区 域AIMD104/对I1.2进 行 与逻 辑 操 作 !=DIXMD2 / 赋值背景数据位 DIX6.5 !ADBMW100.DBXMD2/读 入DB10.DBX6.5数 据 位 状 态=QMD2/赋值给Q6.5ADBMW100.DBXMD2/ 读 入 DB10.DBX6.5数 据 位 状 态=QMW100/错 误 ! ! 没 有Q10这 个 元 件从上面 系 列举 例 我 们 至 少看出来 一 点 :单字指针只应用在的址标识符是非位的情形下。的确,单字指针前面描述 过,它确定的数值是 0-65535,而对于 byte.bit 这种具体位结构来说,只能用双字指针。这是它们的第一个区分,单字
8、指针的另外一个限制就是,它只能对T、C、DB、FC 和 FB 进行寻址,通俗的说,单字指针只可以用来指代这些储备区域的编号。相对于单字指针,双字指针就没有这样的限制,它不仅可以对位的址进行 寻址,仍可以对BYTE 、WORD 、DWORD 寻址,并且没有区域的限制。不过,有得必有失,在对非位的区域进行寻址时,必需确保其0-2bit 为全 0!总结一下: 单字指针的储备器间接寻址只能用在的址标识符是非位的场合。双字指针由于有位格式存在,所以对的址标识符没有限制。也正是由于双字指针是一个具有位的指针,因此,当对字节、字或者双字储备区的址进行寻址时,必需确保双字指针的内容是8或者8的倍数。与现在,我
9、们来分析一下上述例子中的逻辑A IMD104操为什么最终是对作I1.2 进行。通 过 LL#+10, 我 们 知道存 放 在MD104中 的 值 应该 是 :MD104: 00000000000000000000000000001010可编辑资料 - - - 欢迎下载精品名师归纳总结当作为双字指针时,就应当依据3-18bit 指定 byte,0-2bit 指定 bit 来确定最终指令要操作的的址,因此:00000000000000000000000000001010=1.2【 的 址 寄 存 器 间 接 寻 址 】在从前所说的储备器间接寻址中,间接指针用 M、DB 、DI 和 L 直接指定,就
10、是说,指针指向的储备区内容就是指令要执行的准确的址数值单元。但在寄存器间接寻址中,指令要执行的准确的址数值单元,并非寄存器指向的储备区内容,也就是说,寄存器本身也是间接的指向真正的的址数值单元。从寄存 器 到 得 出 真 正 的 的 址 数 值 单 元 , 西 门 子 提 供 了 两 种 途 径 :1 、区域内寄存器间接寻址2 、区域间寄存器间接寻址的 址 寄 存 器 间 接 寻 址 的 一 般 格 式 是 : 的 址标 识 符 寄 存器 ,P#byte.bit , 比 如 : DIXAR1,P#1.5或MAR1,P#0.0。寄存器 ,P#byte.bit统称为:寄存器寻址指针,而的址标识符在
11、上帖中谈过,它包含储备区符 +储备区尺寸符。但在这里,情形有所变化。比较一下刚才的例子:DIXAR1,P#1.5XAR1,P#1.5DIX 可以认为是我们通常定义的的址标识符,DI 是背景数据块储备区域,X 是这个储备区域的尺寸符,指的是背景数据块中的位。但下面一个示例中的M 了? X 只是指定了储备区域的尺寸符,那么储备区域符在哪里了?毫无疑问,在AR1中!DIX AR1,P#1.5这个例子,要寻址的的址区域事先已经确定,AR1 可以转变的只是这个区域内的准确的址数值单元,所以我们称之为:区域内寄存器间接 寻 址 方 式, 相 应 的 , 这 里 的 AR1,P#1.5 就 叫 做 区 域
12、内 寻 址 指 针 。X AR1,P#1.5 这个例子,要寻址的的址区域和准确的的址数值单元,都未事先确定,只是确定了储备大小,这就是意味着我们可以在不同的区域间的不 同的址数值单元以给定的区域大小进行寻址,所以称之为:区域间寄存器间接寻 址 方 式 , 相 应 的 , 这 里 的 AR1,P#1.5就 叫 做 区 域 间 寻 址 指 针 。可编辑资料 - - - 欢迎下载精品名师归纳总结既然有着区域内和区域间寻址之分,那么,同样的AR1 中,就存有不同的内容,它们代表着不同的含义。【AR的格式】的址寄存器是特的用于寻址的一个特别指针区域,西门子的的址寄存器共有两个:AR1和AR2,每个32位
13、。当使用在区域内寄存器间接寻址中时,我们知道这时的AR 中的内容只是指明数值单元,因此,区域内寄存器间接寻址时,寄存器中的内容等同于上帖中 提 及 的 存 储 器 间 接 寻 址 中 的 双 字 指 针 , 也 就 是 : 其 0-2bit ,指定 bit 位, 3-18bit 指定 byte 字节。其第 31bit 固定为 0。AR:0000000000000BBBBBBBBBBBBBBBBXXX这 样 规 定 , 就 意 味 着 AR的 取 值 只 能 是 : 0.0 65535.7例如 :当 AR=D4 ( hex) =0000 0000 0000 0000 0000 0000 1101
14、 0100(b),实际上就是等于26.4。而在区域间寄存器间接寻址中,由于要寻址的区域也要在AR 中指定,明显这时的 AR 中内容确定于寄存器区域内间接寻址时,对AR 内容的要求,或者说规定不同。AR:10000YYY00000BBBBBBBBBBBBBBBBXXX比较一下两种格式的不同,我们发觉,这里的第31bit 被固定为 1,同时, 第 24、25、26 位有了可以取值的范畴。聪慧的你,确定可以联想到,这是用于指定储备区域的。对,bit24-26 的取值确定了要寻址的区域,它的取值是这样定义的:区域标识符26P(、外部25输、入输24位出)000I(输入映像区)可编辑资料 - - - 欢
15、迎下载精品名师归纳总结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 开
16、头,那么就肯定是区域间寻址。假如要在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#中的#后面所跟的数值或者
17、储备单元,是P 直接给定的。这样 P#XXX 这种指针,就可以被用来在指令寻址中,作为一个“常数 ”来对待,这个 “常数 ”可以包含或不包含存储区域。例如:( L P#Q1.0 /把 Q1.0 这个指针存入hexACC1,此时)ACC1的内容=82000008=Q1.0( L P#1.0 /把 1.0 这个指针存入hexACC1 ,此时)ACC1的内容 =00000008=1.0 LP#MB100/错误 ! 必 须 按 照byte.bit结 构给 定 指 针 。 L P#M100.0=83000320/ 把(M100.0这个指针存入hexACC1 ,此时)ACC1 的内容=M100.0 L P
18、#DB100.DBX26.4 / 错误! DBX 已经供应了储备区域,不能重复指定。 L P#DBX26.4 /把 DBX26.4 这个指针存入 ACC1 ,此时 ACC1 的内容=840000D4(hex)=DBX26.4我们发觉,当对 P#只是指定数值时,累加器中的值和区域内寻址指针规定的格式相同(也和储备器间接寻址双字指针格式相同)。而当对P#指定带有储备区域时,累加器中的内容和区域间寻址指针内容完全相同。事实上,把什么样的值传给AR ,就打算了是以什么样的方式来进行寄存器间接寻址。在实际应用中,我们正是利用P#的这种特点,依据不同的需要,指定P#指针,然后,再传递给 AR,以确定最终的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- step编程之地址概念详解 step 编程 地址 概念 详解
限制150内