理论教育 深入了解PLC指令系统及功能块的重要性

深入了解PLC指令系统及功能块的重要性

时间:2023-07-01 理论教育 版权反馈
【摘要】:一个PLC所拥有指令的全体称为该PLC的指令系统。PLC的指令系统是在对其编程之前必须弄清楚的。所以,现在再说PLC指令系统,不只是PLC指令的全体,而还要有系统提供的功能及功能块。即使是同一厂商,型号不同的PLC,其指令系统也不完全相同。而全面、系统地弄清所使用的PLC的指令系统,对正确使用该PLC,编写好高质量的PLC程序,是至关重要的。

深入了解PLC指令系统及功能块的重要性

关键词:指令系统操作数、即时数、直接地址,间接地址、绝对地址、符号地址、输入类指令、输出类指令、中间指令、基本逻辑指令、应用指令、堆栈、结果寄存器。

一个PLC所拥有指令的全体称为该PLC的指令系统。指令系统代表着PLC的性能或功能。一般讲,功能强、性能好的PLC,其指令系统必然丰富,不仅指令类型多,而且功能强,所能干的事也就多。

早期可编程序控制器指令较少,如欧姆龙公司的C20机,才27条指令。而且指令的功能也不强。后续的产品,如CPM1A机,尽管为小型机,就有41种,148条。大型机更多,如CV1000,多达300多条。近期的产品,如CJ1/CJ1H机,尽管为小型机,其指令将近千条。而且还有功能很强的指令,如文字、文件处理指令。

PLC的指令系统是在对其编程之前必须弄清楚的。不熟悉指令系统,等于不懂语法用不好语言一样,PLC的程序是设计不好的。

从广义上讲,厂商提供的系统功能与功能块,也应算为指令系统的一个部分。如西门子S7-300/400 PLC的功能块FB41、42、43用于实现PID算法,实质上它就是别的PLC的PID指令。当今各家高性能的PLC多都有此类功能或功能块。这样功能或功能块的功能当然比一般指令要更强些。所以,现在再说PLC指令系统,不只是PLC指令的全体,而还要有系统提供的功能及功能块。有的厂商把后者的集合也称库。

值得注意的是,各厂商、各型别PLC的指令系统都是基于微处理器技术,总是直接、间接地来自微处理器。所以有关指令的类别、实现功能以及发展水平,大体上多是相同的。也因此本书才有可能将对其分类,把各厂商PLC一些最常用的指令集合一起进行说明。然而PLC指令系统又是基于PLC具体硬件的,加上所用的编程语言又没有统一的强制标准,所以,各厂商PLC的具体指令的差别还是不小的。即使是同一厂商,型号不同的PLC,其指令系统也不完全相同。所以,在注意对它们共同点的同时,也要看到对它们的区别点。这样,才能全面、准确地理解和具体使用好相关的PLC的指令。

提示:由于篇幅限制,以下只是简要地介绍本书涉及的PLC的一些典型指令。而全面、系统地弄清所使用的PLC的指令系统,对正确使用该PLC,编写好高质量的PLC程序,是至关重要的。因此,在PLC实际编程过程中,建议要多查阅有关PLC的编程手册,切实把有关指令弄懂、弄清。

为了加深对PLC指令的了解,以下先对PLC指令作分类分析,然后再对一些较常用的指令作简单介绍。一些要用到的特殊指令,将在以后的章节中继续介绍。

1.按指令的操作数,即程序数据的数量划分

(1)无操作数指令,如END(程序结束)指令、NOP(空指令,不做任何操作),仅操作码,无操作数。这类指令不多。

(2)单操作数指令,如LD(装载)指令,除了操作码(LD),还要有操作数(位地址)。

(3)多操作数指令,如MOV(传送)指令,除了操作码(MOV),还要有被传送字源地址及目标地址。执行它后,则把字源地址的内容,传送到目标地址中去。

多操作数,有的操作数可多达三个。如ADD(加)指令,在操作码ADD之后有三个地址。第一操作数为被加数;第二操作数为加数;第三个操作数为和。

指令在内存中占用的字节、字与指令长度有关。单字及双字长的占一个字。多字的占用不只一个字。有的PLC指令在内存中占用的地址以“步”(STEP)计。三菱PLC一个步占用4个字节。欧姆龙CJ1机的“步”与以前的字基本上相同,欧姆龙提供有方法可供换算。

要指出的是,这里的操作数多少,与在指令执行中,参与操作的实际数的数量,并不是一回事。操作数可能只有两个,但实际参与操作的数可能是几十、几百,以至于千。真正参与操作的数到底多少,是由指令的功能及特点决定的。

2.按指令的作用分

(1)输入类指令,用以处理输入信号及反馈信号,以建立相应的逻辑条件。它使用的数据与梯形图语言的常开触点、常闭触点、正转换感应触点及负转换感应触点等对应。执行这类指令不产生输出,但它为输出类及处理类指令工作提供条件。可知,一个有效程序,不可能仅使用这类指令。

输入类指令有两种执行方式:

正常执行,每一扫描周期,都依它的操作数正常I/O刷新后得到的值,进行逻辑处理。

立即输入刷新执行,每次执行它前,先进行输入刷新,然后再依刷新后操作数取得的新值,进行逻辑处理。要这样使用指令,则要在它的代码之前加感叹号“!”。在梯形图上的符号为978-7-111-39745-8-Chapter02-56.jpg

还可对输入指令做微分处理。有上沿微分与下沿微分。

上沿微分,使用的是正转换感应触点,当它的操作数从OFF到ON的那个周期,此操作数按ON处理,其他的均为OFF。要这样使用指令时,要在它的代码之前加向上的箭头符号。在梯形图上的符号为978-7-111-39745-8-Chapter02-57.jpg

下沿微分,使用的是负转换感应触点,当它的操作数从ON到OFF的那个周期,此操作数按ON处理,其他的均为OFF。要这样使用指令时,要在它的代码之前加向下的箭头符号。在梯形图上的符号为978-7-111-39745-8-Chapter02-58.jpg

输入指令的执行方式与PLC的生产公司及PLC的型号有关,不是所有PLC都有这么多的执行方式。

(2)输出类指令,用以产生输出。一般讲,在执行它之前总是要先执行输入类指令。其产生什么输出,则由其所使用的数据及之前的逻辑条件决定。它使用的数据与梯形图语言的正常线圈、反向线圈、设置(锁存)线圈、复位(取消锁存)线圈、正转换感应线圈、负转换感应线圈及暂停线圈等对应。

输出类指令也有多种执行方式:

正常执行,每一扫描周期均依执行它时的逻辑条件情况,处理该指令;到了输出刷新时,才把这个输出传送给输出锁存器。

立即刷新执行(Immediate Refresh,IR),处理该指令后立即进行输出刷新,把输出的结果送给相应的输出锁存器。要这样使用指令,则要在它的代码之前加感叹号“!”。

(3)处理指令。用于做数据或有关处理工作。其执行与否取决于执行前的逻辑条件。随着PLC功能的增强,此类指令越来越多。(www.daowen.com)

此类指令还可运用EN\ENO机制,既按在本指令之前建立的逻辑条件,执行本指令;又依本指令的执行情况,再建立相应的逻辑条件,为后续指令的执行提供前提。以至于输入,此类指令还可多次相间,最后才为输出指令。只是老式的PLC多没此机制。

图1-22所示的西门子PLC的几条梯形图指令。这里的加(ADD-I)与乘(MUL-I)指令都运用的EN/ENO附加变量。如图,要使Q0.0 ON,其条件是I0.0 ON以及这里的加(ADD-I)与乘(MUL-I)指令成功执行。可知,这样的梯形图的表达是很简练的,效率是很高的。只是,这样的梯形图就不大像电气原理图,与创立梯形图的初衷略有违背。

978-7-111-39745-8-Chapter02-59.jpg

图1-22 多个比较指令使用

3.按指令的执行情况分

PLC的输入指令,在每扫描周期中,总是执行的。多数输出指令,在执行(即与其有关的输入)条件具备时,也总是执行的。

但有的指令就不完全是这样的。如PID指令,尽管执行条件具备,设定又无不当之处,但它的执行周期不是取决于扫描周期,而主要取决于对PID工作周期的设定。

再如求平均数、求总数,这样表处理或文字处理指令,要在一个扫描周期内实现它的功能,所用的处理时间很长。新机型允许其分开在若干扫描周期内完成。这样,可避免出现,执行这类指令时扫描周期过长,不执行时又较短,而I/O响应时间一致性。

最后,如通信指令,它的接收、发送数据也不是执行一次就可完成。

4.按指令的使用分

这里的使用是指使用频率及表达它的方法。按这个使用分有:

(1)基本逻辑(有的称顺序)指令用得最多,简易编程器上多有其对应的专用键。主要用于逻辑操作。

(2)应用指令,其实也就是上述处理指令,有的称为功能指令,可实现比逻辑操作更为复杂的功能。在简易编程器上,一般无与其对应的专用键。用简易编程器,输入这种指令有两种办法,一是用先输入功能键(FUN),后输入功能号。欧姆龙及三菱有的PLC就是用这种方法。另一为在编程器上显示指令菜单,在菜单中选择所要输入的指令,西门子、松下的PLC就是用这种办法。

随着功能指令增多。仍用两位数的功能码不够了。所以,功能指令分为两种:一为有固定的功能码,如01,固定代表END指令;另一为无固定功能码,如PULS(脉冲)指令,就没有固定的功能码,使用前现做指定。没有固定的功能码的指令,欧姆龙称之为扩展指令。其功能码要在使用前分配。当然,有的PLC把功能码提升为3位数,就不存在此问题了。

提示:下载扩展指令设定前,应使PLC处于编程模式,有的PLC,如CPM2A,其DM6602(系统设定字之一)的高字节还要设为1(也要使PLC处编程模式才能写这个字)。改后,还要使PLC断电,再上电。否则这个设定的下载是不可能的。

提示:目前手持编程器已几乎不用,这样划分,也许已过时。但是,功能码还存在就是了。

此外,还可按功能,即按指令能干什么事分类,把类似的归在一起,PLC指令的类型还是很多的。以CJ1机为例,欧姆龙把它分有32种之多。再进一步归纳还有:

(1)基本逻辑类指令,用于逻辑关系处理,是最常用、最基本的指令。

(2)定时、计数类指令,用于定时或计数,也是经常要用到的指令。

(3)数据处理类指令,用于数据运算、传送、比较、译码、编码、移位及其他有关指令。

(4)流程控制类指令,用于控制程序执行的流程。可使PLC执行指令能按所控制的顺序进行,而不一定非要从零地址开始到最高地址,依此执行。

(5)监控类指令,用于处理PLC或被控制对象的故障检测,有助于提高PLC及其控制系统工作的可靠性

(6)处理I/O类指令,用于处理PLC应急I/O刷新或数据(信息)的入或出。

(7)通信类指令,用于处理PLC与PLC,或PLC与计算机,或PLC与智能设备间的通信。

(8)内存管理指令,用以管理PLC的各个存储区、存储卡。

(9)其他管理或处理指令,用于PLC的其他管理与处理。

以下将对其中若干类指令进行介绍,其他的将在介绍有关的内容时,再作说明。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈