Mitsubishi 三菱FXPLC学习之比较指令

发布时间 2023-08-04 16:27:59作者: 一杯清酒邀明月

  数据的处理,经常需要进行比较,在PLC中也是如此。而我这次所分享的,就是三菱FX PLC 2N的各种比较指令。那么,废话不多说,我们直接进入主题吧。

▎一、CMP指令

  CMP指令是所有比较指令中最为常用的指令,也是功能指令中的常用指令之一,其在编程手册中的说明如下图所示。

  CMP指令的理解也很简单,就是S1、S2两个数的相互比较,根据我们多年的数学学习经验,显然,比较结果可能有三种:S1>S2;S1=S2;S1<S2。虽然有三种结果,但它们不可能同时出现,又由于PLC不可能直接开口告诉我们结果,所以它就用了三个连续编号的位元件对三种结果加以区分,其中D·是三个连续位元件的首址。也就是说,终址D占用了3个点,且它的适用软元件为位元件(Y、M、S)。

  另外,源址S1、S2均为字元件,毕竟要存数据,且源址S1、S2与终址D都可用于变址寻址。从上图的指令梯形图可以看到,当驱动条件X0=ON时,S1、S2相互比较,若S1>S2,则D=ON;若S1=S2,则D+1=ON;若S1<S2,则D+2=ON。

  如执行指令CMP D0 K10 M0表示:将数据寄存器D0中的内容与常数K10进行比较,若D0的内容(D0)>K10,M0接通;若D0的内容(D0)=K10,M1接通,若D0的内容(D0)<K10,M2接通。

  显然,在CMP指令中,终址虽然只给出了首址D,但是D+1、D+2两个拖油瓶也被指令占用,不能再用于其他地方。

  指令被执行后,即使驱动条件断开,保存结果的D、D+1、D+2仍然保持当前状态,不会自动复位。想要它们复位,可以应用复位指令RST或批量复位指令ZRST。

▎二、ZCP指令

ZCP指令也是比较指令,但它是区间比较指令,比CMP指令略显麻烦。

  从ZCP指令和CMP指令的梯形图中,可以看到,ZCP指令比CMP指令多了一个源址S·,这个S·就是ZCP指令的主角,它到底有什么含义呢?我们接着往下看。

  ZCP指令是区间比较指令,所谓区间,就是一个数据范围。例如我们考试,将成绩划分为3个区间:0-59分为不及格,60-80分为良好,81-100分为优秀。ZCP指令也将数据划分为3个区间,分界点分别为S1、S2,而S就是被用于比较的主角,例如我们每个人所考的成绩。终址D的含义类似于CMP指令中的D,也是用于反馈比较结果,占用3点:D、D+1、D+2。

  类似于CMP指令,在ZCP指令中,当驱动条件成立时,将源址S数据分别与源址S1、S2数据进行比较,若比较结果S<S1,则D接通;若S1≤S≤S2,则D+1接通;若S>S2,则D+2接通。

  例如执行指令ZCP K60 D0 K100 M0表示:若数据寄存器D0的内容(D0)<K60,则M0接通,若K60≤(D0)≤K100,则M1接通;若(D0)>K100,则M2接通。

  源址S1与S2除了可以是常数外,还可以是各种字元件,但在这里要注意的一点是:ZCP指令在正常执行的情况下,S1<S2,也就是说,S1所存的数据应小于S2所存的数据,若S1>S2,PLC就会把S2作为S1处理。例如在ZCP D10 D11 D12 Y0中,D10内存的数据为K10,D11所存的数据为K8,此时若D12所存的数据为K8或K9,D12都是M0接通。

  和CMP指令一样,执行ZCP指令后,若驱动条件断开,终址D、D+1、D+2的状态依然保持不变,可以用复位指令RST或批量复位指令ZRST对它们复位。

  无论是CMP指令还是ZCP指令,它们都是字元件数据的比较,且比较结果用终址相对应的3个位元件接通来区分。除此之外,三菱FX PLC 2N中还有触点比较指令,什么是触点比较指令?它们与CMP指令和ZCP指令又有什么区别呢?接下来我们继续走进触点比较指令的世界。

▎三、触点比较指令

  触点只有两种状态(ON或OFF),在梯形图中,所用到的触点都是位元件的触点,如X、Y、M等,常常作为驱动条件使用。

  类似的,触点比较指令等同于一个常开触点,且这个常开触点的状态(ON或OFF)由指令的两个源址S1、S2的数据比较结果所决定。结合上文的CMP指令和ZCP指令,可以发现,触点比较指令所等同的常开触点的作用其实和CMP指令和ZCP指令的终址位元件的作用一样。

  既然触点比较指令等同于一个常开触点,那么它就可以像一般触点那样,和其他触点相串或相并,或者作为驱动条件单独使用。根据应用方式的不同,可以将触点比较指令分为起始触点比较指令、串接触点比较指令、并接触点比较指令三种。

1、起始触点比较指令

所谓“起始”,是指这指令与母线相连接,以“LD”开头,其用法类似于“LD(取)”指令。起始触点比较指令一共有6个,如下图所示。

  从上图可见,起始触点比较指令有6个是因为两个源址S1、S2的比较结果可以分为6种情况。其中S1≠S2不能直接输入“≠”符号,而是输入“<>”,同样的,大于等于符号“≥”应用“>=”符号表示,小于等于符号“≤”应用“<=”符号表示。

  在编程时直接输入对应助记符即可,例如输入“LD= D1 D2”,其梯形图如下图所示。另外,大家从下图可以发现,输入“LD= D1 D2”后回车,“LD”两个字母不会显示。

2、串接触点比较指令

  串接触点比较指令和起始触点比较指令的区别只在于,串接触点比较指令以“AND”开头,而起始触点比较指令以“LD”开头。

所谓“串接”,是指串接触点比较指令只能与其他触点串联使用,不能直接与母线相连。类似于起始触点比较指令,也有6种形式,如下图所示。

  其功能号为232~238,但没有235,这在其触点比较指令中也是类似的,从224~230,却没有227,别问我为什么,因为我也不知道~

  串接触点比较指令的编程类似于起始触点比较指令,在输入完毕后“AND”字母不会显示。那么问题来了,若是只看梯形图,我们怎么知道这是起始的还是串接的呢?

  其实,在用触点比较指令与其他触点串接时,也是可以用起始触点比较指令的,不相信的话大家可以用编程软件试试,亲测有效。但串接触点比较指令不能用作起始触点比较指令,也就是不能与母线相连。

3、并接触点比较指令

 所谓“并接”,就是并接触点比较指令在编写完毕后,直接与其他触点并接,所以该指令必须在有其他触点与之并接的情况下才能编写。

   如上图所示,若上一行对应位置没有触点,则并接触点比较指令不能正常使用。同样的,并接触点比较指令也有6个,且其功能号也不连续,简直是奇了怪。

  并接触点比较指令在编写完毕后,字母“OR”同样不显示,且串接触点比较指令可以用起始触点比较指令替代使用,只不过在编写时多两步竖线输入。

  至此,这次的学习分享内容我觉得是这么多次以来最简单的一次了,简单易懂,且用法都是大同小异。所以,在此我也不啰嗦什么,希望这次的分享能对大家有所帮助!