首页 理论教育 深入了解DM区及访问方式

深入了解DM区及访问方式

时间:2023-06-23 理论教育 版权反馈
【摘要】:DM,数据存储区的简称,是PLC基本的存储介质。也有的称为D区。有了DM区或其它存储器件,程序如要直接访问它,指明地址就可以了。早期OMRON公司PLCDM区不大,用BCD码指针足以访问整个DM区。用指针访问DM区时,常要修改指针,并要对指针值进行控制,以免指针超出范围,这些将在本章以下各节还要作进一步讨论。其功能与上述指针类似,而且,还不仅可处理DM区,还可处理其它数据区。

深入了解DM区及访问方式

DM,数据存储区的简称,是PLC基本的存储介质。它容量大,又为掉电保持的,故可用以大量而长久的保留所存储的数据。

OMRONDM区按字使用,以字编址。在CJ1型PLC之前,不能对字中的位进行处理。有的PLC,如西门子S7-200型PLC,数据存储区不称DM,而称V区,以字节编址(VB)、使用,但也可按字(VW)、按双字(VD)使用(仍按字节编址)。也有的称为D区。

除了DM、V,PLC的其它内部器件也可用以存储数据。有的也可或也是掉电保持的。只是这些器件的容量要小些。

有了DM区或其它存储器件,程序如要直接访问它,指明地址就可以了。只是直接访问不够灵活,效率也不高。要能灵活地访问,不用很多指令就能频繁地访问,就得用间接访问。间接访问有4个方法:

1.使用指针访问

OMRONDM区可用指针实现这个间接寻址。指针是C语言常用的编程技法,正确使用指针可提高的程序效率。但使用前一定要控制好指针。失控的指针,也就是间接地址不存在的或不希望出现的指针称野指针。使用这样的指针是危险的。

图6-7所示为使用指针传送数据的程序。

从图知,使用指针访问,先总是指针赋值,再才是数据赋值。数据赋值时,把指定的数据传送给指针指向(指针的值)的地址。

早期OMRON公司PLCDM区不大,用BCD码指针(4位最大为9999)足以访问整个DM区。而今,有的PLCDM区可大到32K,只得用二进制码指针。16位二进制码指针最大可为66735,足以访问所有的地址了。

图6-7所示的程序,在两种指针的赋值与使用上是有区别的。用BCD码指针的那两条指令,是把即时数88赋给DM90。用二进制码指针的那两条指令,是把即时数88赋给DM91(16进制码5B,即91)。

西门子PLC,如S7-200型,也有间接寻址功能。不同是它的指针可指向任何内部器件,而且是所指向器件在PLC内存中的实际(绝对)地址。所以,它的指针是双字长的,而且,它的指针以字节为单位,而不像OMRON那样以字为单位计算。

978-7-111-26319-7-Chapter06-7.jpg

图6-7 用指针传送数据

以下几个语句表语言表达的程序,就是使用有关指针的例子。

978-7-111-26319-7-Chapter06-8.jpg

提示:西门子PLC程序,如要控制指针,则多是另用一计数器实现。

用指针访问DM区时,常要修改指针,并要对指针值进行控制,以免指针超出范围,这些将在本章以下各节还要作进一步讨论。

2.使用指令作偏移传送

OMRON有两个指令:DIST(080)及COLL(081)。也可作与使用指针类似地访问DM,甚至访问其它内存区。可用它作偏移传送。其功能与上述指针类似,而且,还不仅可处理DM区,还可处理其它数据区。DIST(080)指令的梯形图格式为

978-7-111-26319-7-Chapter06-9.jpg

这里 S———原数据字。

Bs———目标字基址;

Of———目标字偏址。

COLL(081)指令的梯形图格式为:

978-7-111-26319-7-Chapter06-10.jpg

这里 Bs———原数据字基址;

Of———原数据字偏址;

D———目标字地址。

图6-8所示为使用这两条指令把DM0到DM99的数据倒序传送到DM100到DM199的程序。

由图6-8可知,它有两个偏移,偏移1与偏移2,且两者一个增时,另一个则减,两者的和为99。这两个偏移就相当于两个指针。偏移1用于从不同地址取数,偏移2用于向不同地址传数。每次取、传数后,也修改偏移。这样,一次次执行这程序,将实现上述目标。

此两指令,不仅可指向DM区,也可指向任何数据区。

3.寄存器访问

高档的PLC多有变址寄存器及数据寄存器。如OMRON的CS1型PLC及CJ1型PLC即有此寄存器。变址器寻址可把间接寻址扩大到其它数据区,而且,还可处理位(BIT)数据。使数据的使用可更加灵活。

图6-9所示为使用变址寄存器完成与图6-8功能完全相同程序。

978-7-111-26319-7-Chapter06-11.jpg

图6-8 用偏移指令访问

从图知,它的取数、传数,修改指针,仅用一条MOV指令。但操作数用的是变址寄存器(指针)指向的地址。IR0为取数后修改其内容,IR1为先修改内容后传输。图中用的其它指令都是为了处理指针的。有指针初始化,当开始执行本程序或传送完成时,对指针初赋值。指针控制,用一个计数器控制指针。(www.xing528.com)

4.使用堆栈访问

此外,高档的PLC在系统的其它数据区中,还可建立堆栈(先进后出存储区)或队列(先进先出的存储区)。对此也设有相应的管理指令。

(1)设堆栈指令SSET(160)。其梯形图格式为

978-7-111-26319-7-Chapter06-12.jpg

这里 TB———栈的首地址。TB及TB+1的内容为栈的最高地址,TB+2及TB+3的内容为栈的指针;

N———栈的总长度,以字为单位。

如TB为DM00000,N为常数10,执行本指令,则建立一个栈顶为DM00000,栈底为DM00009的长度为10个字的堆栈。其初始化指针指向TB+4。图6-10所示为所建堆栈示意。

978-7-111-26319-7-Chapter06-13.jpg

图6-9 寄存器访问

978-7-111-26319-7-Chapter06-14.jpg

图6-10 建堆栈

建栈之后,可接受堆栈的进栈、出栈指令操作。

(2)进栈指令PUSH(161)。其梯形图格式为

978-7-111-26319-7-Chapter06-15.jpg

这里 TB———栈的首地址;

S———源数或源数地址。

执行本指令过程是,将把源数写入堆栈指针指出的地址中,然后堆栈的指针加1。图6-11所示为进栈示意。

978-7-111-26319-7-Chapter06-16.jpg

图6-11 进栈示意

(3)出栈指令。有两个,先进后出LIFO(162)及先进先出FIFO(163)。

1)LIFO梯形图格式为

978-7-111-26319-7-Chapter06-17.jpg

这里 TB———堆栈的首地址;

D———目标数地址。

执行本指令过程是,先堆栈指针减1,然后从指针指向的地址中读出数,再写入D指出的地址中。图6-12所示为LIFO示意。

2)FIFO梯形图格式为

978-7-111-26319-7-Chapter06-18.jpg

这里 TB———堆栈的首地址;

D———目标数地址。

978-7-111-26319-7-Chapter06-19.jpg

图6-12 LIFO示意

978-7-111-26319-7-Chapter06-20.jpg

图6-13 FIFO示意

执行FIFO指令过程是,从栈顶(地址TB+4)取数,字送目标地址D,然后栈指针(TB+3和TB+2)减1。栈中余下的数据向前串一个字,TB+4中原数据被新数取代。图6-13所示为FIFO示意。

图6-14所示为以上堆栈指令应用程序。

从图知,它的作用也与图6-8的作用相似。也是把DM一个区的数据倒序传送到DM另一个区。只是它还要留4个字用作堆栈的管理使用。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈