您现在的位置是:首页 > PLC技术 > PLC技术
CPM2A系列PLC的数据收集(COLL(81))指令
来源:艾特贸易2017-06-05
简介COLL(81) 可以根据控制字 C 的内容来进行数据收集、一个 FIFO (先进先出)堆栈操作或一个 LIFO (后进先出)堆栈操作。其梯形图如图 8-12 所示。 图 8-12 COLL( 81) 指令梯形图 C 的第 12~15 位
COLL(81)可以根据控制字C的内容来进行数据收集、一个FIFO(先进先出)堆栈操作或一个LIFO(后进先出)堆栈操作。其梯形图如图8-12所示。
图8-12 COLL( 81)指令梯形图
C的第12~15位为0~7时,COLL( 81)用作数据收集。C的整个内容指定一个偏移量Of( BCD码0000~ 2047)。
当执行条件为OFF时,COLL(81)不执行;当执行条件为ON时,COLL( 81)把DBs+Of的内容复制到D,也就是说,Of被加到DBs来决定源字地址。
①SBs和SBs+Of必须在同一数据区域。
②1R 000~ IR 019或IR 000~ IR 049与IR 200~ IR 255被看作不同的数据区。在整个源数据区中必须使用其中的一块或其他的数据区,如果地址中包含了以上两块IR地址的话,将会有一个错误发生。
【例8-6】 图8-13显示如何使用COLL( 81),把DM 0000+Of的内容复制到LR 00。200的内容是#0005,因此,当IR 00001为ON时,DM 0005 (DM 0000 +5)的内容被复制到LR 00中。
图8-13 数据收集指令的使用
C的第12~15位等于9时,COLL( 81)可以用于一个FIFO堆栈操作。C中的其他三位数字指定堆栈(000~ 999,BCD码形式)中的字数。SBs的内容是堆栈指针。
当执行条件为ON时,COLL( 81)通过一个地址对堆栈中的每一个字的内容往下移一地址,最后把数据从SBs+1(写入堆栈的第一个数值)移位到目的字(D)。于是,堆栈指针的内容(SBs)减1。
除非使用其微分指令形式(@ COLL(81))或将COLL( 81)与DIFU( 13)或DIFD( 14)结合使用,否则COLL( 81)将在每个周期中执行。
【例8-7】 图8-14显示如何使用COLL( 81)在DM 0001~DM 0005之间创建堆栈。DM 0000起堆栈指针的作用。
图8-14 COLL(81)在DM 0001~DM 0005之间创建堆栈(1)
当IR 00000从OFF变为ON时,COLL( 81)把DM 0002~DM 0005的内容往下移一地址,并将DM 0001移入IR 001。然后,堆栈指针(DM 0000)的内容减1。
C的第12~15位等于8时,COLL(81)可以用于一个LIFO堆栈操作。C中的其他三位数字指定堆栈(000~ 999,BCD码形式)中的字数。SBs的内容是堆栈指针。
当执行条件为ON时,COLL( 81)把由堆栈指针(SBs+SBs的内容)指示的数据复制到目的字(D)中。然后,堆栈指针(SBs)的内容减1。
堆栈指针是堆栈中唯一要改变的值。除非使用指令微分形式(@ COLL(81))或将011( 81)与DIFU(13)或DIFD( 14)结合使用,否则COLL( 81)将在每周期中执行。
【例8-8】 图8-15显示如何使用COLL( 81)在DM 0001~DM 0005之间创建堆栈。DM 0000起堆栈指针的作用。
图8-15 COLL( 81)在DM 0001~ DM 0005之间创建堆栈(2)
当IR 00000从OFF变为ON时,COLL( 81)把DM 0005( DM 0000 +5)的内容复制到IR 0001。于是,堆栈指针(DM 0000)的内容减1。
对标志位的影响:
·ER:控制字中的偏移量或堆栈长度非BCD码。
·间接寻址字DM不存在(字*DM中的内容非BCD码,或者DM区域已经超出了范围)。
·堆栈操作期间,堆栈指针的值超出了堆栈的长度。试图向堆栈的末尾之外写一个字。
·EQ:当S的内容为0时置ON,否则置OFF。
点击排行
