在工业自动化控制领域,数据的比对操作是不可或缺的一环,PLC系统也不例外。本次内容将聚焦于三菱FX系列PLC中广泛应用的2N比较指令集。让我们直奔主题,深入探讨这些指令的具体应用。
在众多比较指令中,CMP指令因其高频使用性,成为功能指令库中的核心成员之一。其详细说明可参考编程手册中的相关章节。
CMP指令的核心功能在于对两个数值进行对比,即源地址S1与S2之间的数据较量。依据我们熟悉的数学原理,比较结果通常呈现为三种状态:S1大于S2,S1等于S2,或S1小于S2。尽管存在三种可能的结果,但任一时刻仅有一种状态成立。由于PLC无法直接输出文字结果,它采用三个连续的位元件来标识不同的比较结果,这些位元件的首地址标记为D·。因此,从D·开始的三个连续位元件被占用,共占用了三个点位资源,且这些终址D适用于位元件(如Y、M、S等)。
值得注意的是,源址S1和S2均为字元件类型,这是因为需要存储和处理数据。同时,源址S1、S2以及终址D均支持变址寻址功能。从提供的梯形图示例中可以看出,当触发条件X0被激活时,指令将对S1和S2中的数据进行比较。若S1的值大于S2,则D位元件将置位;若S1等于S2,则D+1位元件被激活;若S1小于S2,则D+2位元件接通。
以一个具体指令执行为例:假设我们要比较数据寄存器D0中的数值与常数K10,根据比较结果控制不同的继电器。如果D0的值大于K10,继电器M0将闭合;如果D0的值等于K10,继电器M1将闭合;如果D0的值小于K10,继电器M2将闭合。
需要特别指出的是,尽管CMP指令仅指定了终址D的首地址,但实际上D+1和D+2这两个地址也被指令占用,因此不能再用于其他指令或数据存储。
一旦CMP指令执行完毕,即使触发条件X0被断开,D、D+1、D+2三个位元件的状态也将保持不变,不会自动复位。若需复位这些位元件,可以通过应用复位指令RST或批量复位指令ZRST来实现。
除了CMP指令,ZCP指令也是一种比较指令,但它的功能是区间比较,相较于CMP指令更为复杂。
通过对比ZCP指令与CMP指令的梯形图,我们可以发现ZCP指令相较于CMP指令多了一个源址S·。这个S·是ZCP指令的关键元素,它具体代表什么含义呢?让我们继续分析。
ZCP指令执行的是区间比较操作,它将数据划分成三个不同的区间。以考试成绩为例,我们可以将成绩分为三个等级:0-59分为不及格,60-80分为良好,81-100分为优秀。ZCP指令同样将数据划分为三个区间,其中S1和S2作为区间的分界点,而S则是被比较的对象,比如每个人的考试成绩。终址D的作用与CMP指令中的D类似,用于指示比较结果,同样占用了三个连续的位元件:D、D+1、D+2。
与CMP指令类似,当ZCP指令的触发条件满足时,它会将S中的数据与S1和S2进行比较。如果比较结果显示S小于S1,则D位元件被激活;如果S1小于或等于S且S小于或等于S2,则D+1位元件被激活;如果S大于S2,则D+2位元件被激活。
以一个具体指令执行为例:如果数据寄存器D0中的数值小于K60,则继电器M0将被激活;如果K60小于或等于D0的数值且D0的数值小于或等于K100,则继电器M1将被激活;如果D0的数值大于K100,则继电器M2将被激活。
S1和S2的值除了可以是常数外,还可以是各种字元件。但需要注意的一点是,在ZCP指令正常执行的情况下,S1的值应小于S2的值。如果S1的值大于S2,PLC将自动将S2视为S1进行处理。例如,如果D10中存储的数值为K10,而D11中存储的数值为K8,此时如果D12中存储的数值为K8或K9,D12对应的继电器M0将被激活。
与CMP指令相同,执行ZCP指令后,即使触发条件断开,D、D+1、D+2三个位元件的状态依然保持不变,可以通过复位指令RST或批量复位指令ZRST来复位。
无论是CMP指令还是ZCP指令,它们都是针对字元件数据的比较操作,并且通过终址相对应的三个位元件的状态变化来表示比较结果。除此之外,三菱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”同样不会显示,且串联触点比较指令可以用起始触点比较指令替代使用,只是在编写时需要多输入两步竖线。
至此,本次的学习分享内容我认为是迄今为止最简单的一次,简单易懂,且用法大同小异。因此,在此我也不再赘述,希望这次分享能对大家有所帮助!
选自《三菱FX系列PLC功能指令详解》第三章第17~20课时
↓免费学习资料