DM,数据存储区的简称,是PLC基本的存储介质。它容量大,又为掉电保持的,故可用以大量,而又长久的保留所存储的数据。
欧姆龙DM区按字使用,以字编址。在CJ1机之前,不能对字中的位进行处理。
除了DM、有的品牌PLC还有扩充数据存储区(EM)。另外,其他内部器件也可用以存储数据。有的也可或也是掉电保持的。只是这些器件的容量要小些。
有了DM区或其他存储器件,程序如要直接访问它,指明地址就可以了。只是直接访问不够灵活,效率也不高。要能灵活地访问,不用很多指令就能频繁地访问,就得用间接访问。间接地址访问大体有4个方法。
1.使用指针访问
欧姆龙DM区可用指针实现这个间接寻址。指针是C语言常用的编程技法,正确使用指针可提高的程序效率。但使用前一定要控制好指针。失控的指针,也就是间接地址不存在的或不希望出现的指针称野指针。使用这样的指针是危险的。
图5-3所示为使用指针传送数据的程序。
从图5-4可知,使用指针访问,先总是指针赋值,再才是数据赋值。数据赋值时,把指定的数据传送给指针指向(指针的值)的地址。
早期欧姆龙公司PLC DM区不大,用BCD码指针(4位最大为9999)足以访问整个DM区。而今,有的PLC DM区可大到32K,只得用二进制码指针。16位二进制码指针最大可为66735,足以访问所有的地址了。
图5-4 用指针传数
图5-4所示程序,在两种指针的赋值与使用上是有区别的。用BCD码指针的那两条指令,是把即时数88赋给DM90。用二进制码指针的那两条指令,是把即时数88赋给DM91(十六进制码5B,即91)。
2.使用指令作偏移传送
欧姆龙有两个指令:DIST(080)及COLL(081)。也可作与使用指针类似地访问DM,甚或访问其他内存区。可用它作偏移传送。其功能与上述指针类似,而且不仅可处理DM区,还可处理其他数据区。
DIST(080)指令的梯形图格式如图5-5a所示,COLL(081)指令的梯形图格式如图5-5b所示。
图5-5a中,S为原数据字;Bs为目标字基址;Of为目标字偏址。(www.daowen.com)
图5-5b中,Bs为原数据字基址;Of为原数据字偏址;D为目标字地址。
图5-5 DIST及COLL指令格式
图5-6所示为使用这两条指令,把DM0~DM99的数据倒序传送到DM100~DM199的程序。
从图知,它有两个偏移,偏移1与偏移2,且两者一个增时,另一个则减,两者的和为99。这两个偏移就相当于两个指针。偏移1用于从不同地址取数,偏移2用于向不同地址传数。每次取、传数后,也修改偏移。这样,一次次执行这程序,将实现上述目标。
此两指令,不仅可指向DM区,也可指向任何数据区。
3.寄存器访问
高档的PLC多有变址寄存器及数据寄存器。如欧姆龙的CS1机及CJ1机即有此寄存器。变址器寻址可把间接寻址扩大到其他数据区,而且还可处理位数据。使数据的使用更加灵活。
图5-7所示为使用变址寄存器完成与图5-6功能完全相同的程序。
图5-6 用偏移指令传送
图5-7 用变址寄存器访问
从图5-7可知,它的取数、传数、修改指针,仅用一条MOV指令。但操作数用的是变址寄存器(指针)指向的地址。IR0为取数后修改其内容,IR1为先修改内容后传数。图中用的其他指令都是为了处理指针的。有指针初始化,当开始执行本程序或传送完成时,对指针初赋值。指针控制,用一个计数器。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。