您现在的位置是:首页 > 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所示。

 COLL( 81)指令梯形图

    8-12    COLL( 81)指令梯形图

    C的第12~15位为07时,COLL( 81)用作数据收集。C的整个内容指定一个偏移量Of( BCD0000~ 2047)

    当执行条件为OFF时,COLL(81)不执行;当执行条件为ON时,COLL( 81)DBs+Of的内容复制到D,也就是说,Of被加到DBs来决定源字地址。

    SBsSBs+Of必须在同一数据区域。

    1R 000~ IR 019IR 000~ IR 049IR 200~ IR 255被看作不同的数据区。在整个源数据区中必须使用其中的一块或其他的数据区,如果地址中包含了以上两块IR地址的话,将会有一个错误发生。

    【例8-6  8-13显示如何使用COLL( 81),把DM 0000+Of的内容复制到LR 00200的内容是#0005,因此,当IR 00001ON时,DM 0005 (DM 0000 +5)的内容被复制到LR 00中。

数据收集指令的使用

    8-13    数据收集指令的使用

    C的第1215位等于9时,COLL( 81)可以用于一个FIFO堆栈操作。C中的其他三位数字指定堆栈(000~ 999BCD码形式)中的字数。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 0001DM 0005之间创建堆栈。DM 0000起堆栈指针的作用。

COLL(81)在DM 0001~DM 0005之间创建堆栈(1)

    8-14    COLL(81)DM 0001DM 0005之间创建堆栈(1)

    IR 00000OFF变为ON时,COLL( 81)DM 0002~DM 0005的内容往下移一地址,并将DM 0001移入IR 001。然后,堆栈指针(DM 0000)的内容减1

    C的第1215位等于8时,COLL(81)可以用于一个LIFO堆栈操作。C中的其他三位数字指定堆栈(000~ 999BCD码形式)中的字数。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 0001DM 0005之间创建堆栈。DM 0000起堆栈指针的作用。

 COLL( 81)在DM 0001~ DM 0005之间创建堆栈(2)

    8-15    COLL( 81)DM 0001~ DM 0005之间创建堆栈(2)

    IR 00000OFF变为ON时,COLL( 81)DM 0005( DM 0000 +5)的内容复制到IR 0001。于是,堆栈指针(DM 0000)的内容减1

    对标志位的影响:

    ·ER:控制字中的偏移量或堆栈长度非BCD码。

    ·间接寻址字DM不存在(字*DM中的内容非BCD码,或者DM区域已经超出了范围)。

    ·堆栈操作期间,堆栈指针的值超出了堆栈的长度。试图向堆栈的末尾之外写一个字。

    ·EQ:当S的内容为0时置ON,否则置OFF