首页 理论教育 了解PLC指令系统的必要性

了解PLC指令系统的必要性

时间:2023-06-23 理论教育 版权反馈
【摘要】:PLC指令系统是基于硬件的,加上所用的语言又未强制标准化,所以,各厂家PLC的指令系统都不相同。即使是同一厂家,型号不同,指令系统也不完全相同。在编程之前,必须弄清楚PLC的指令系统。如西门子PLC的功能块FB41、FB42、FB43用于实现PID算法,实质上它就是别的PLC的PID指令。

了解PLC指令系统的必要性

关键词:指令系统操作数、即时数、直接地址,间接地址、绝对地址、符号地址、局部变量、全局变量、输入类指令、输出类指令、中间指令、基本逻辑指令、应用指令、结果寄存器、功能块

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

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

PLC指令系统是基于硬件的,加上所用的语言又未强制标准化,所以,各厂家PLC的指令系统都不相同。即使是同一厂家,型号不同,指令系统也不完全相同。

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

从广义上讲,厂家提供的系统函数块与功能块,也应算为指令系统的一个部分。如西门子PLC的功能块FB41、FB42、FB43用于实现PID算法,实质上它就是别的PLC的PID指令。OMRON公司的新型机也提供这样的功能块。

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

1.按指令的操作数分

(1)考虑操作数数量,有:

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

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

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

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

指令在内存中占用的字与指令长度有关。单字的占一个字。多字的不只占一个字。CJ1机指令在内存中占用的字与指令拥有的步(Step)有关。而实质上讲,CJ1机的步与字基本上相同,OMRON公司提供有换算方法。

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

(2)考虑操作数本身特点,有:

1)位(bit)操作数,它相当于输入、输出点,或内部继电器

2)数位(digit)操作数含4个位。作数位处理时,要用到它。

3)字节(Byte)操作数,含有8个位。作字节处理时,要用到它。

4)字(word)操作数,它含两个字节,16个位。多数PLC都有这种操作数,特别是使用数据运算、处理时,更是这样。

5)双字(Double word)操作数,它含两个字(通道),可表示8位BCD码,或8位十六进制数。

6)多字操作数,有多个数据参与操作。

(3)考虑操作数地址特点,有:

1)即时数,即常数。可为BCD码(数码前加“#”),也可为十六进制码(数码前加“&”)。

2)直接地址。若为常数,则指令对这个常数进行操作;若为地址,则对这个地址的内容进行操作。

3)间接地址。以这个地址的内容作为地址,再用这个地址的地址的内容进行操作。如间接地址用在DM区,则地址代号前加“∗”(以BCD数计算抵制),或“&”(以十六进制数计算地址)号。

举例:若为∗DM0000,而DM0000的内容为100(BCD数),则指令要用DM100的内容进行操作。

如&DM0000,而DM0000的内容为100(十六进制数),则指令要用DM256的内容进行操作。

对具有索引寄存器及数据寄存器的PLC,还可用索引寄存器及数据寄存器表示间接地址。

用索引寄存器间接寻址,可以是无偏移寻址。它把IR@(@为索引寄存器的不同编号)的内容作为操作数的地址。使用时,在索引寄存器前加一逗号,以表示间接寻址。并根据指令或操作数,决定所指定的是位,还是字。如LD,IR0,即为取IR0内容指出I/O内存地址上位的状态。再如MOV#0001,IR1,即为把#0001传送到IR1内容指出的地址上的字中。

用索引寄存器还可偏移寻址。偏移值可在-2048~+2047间变化。

偏移值可以是常数,如执行LD+5,IR0指令,即为把5与IR0内容相加,以此“和”指向的I/O内存作为地址,取该地址所指的位的状态。再如执行MOV#0001+31,IR1指令,则是把31与IR1内容相加,以此“和”指向的I/O内存作为地址,把#0001传送到该地址的字中。

偏移值也可以是存于DR数据寄存器中,它与IR@中的内容相加,才是实际操作数的地址。如执行LD DR0,IR0指令,即为把DR0的内容与IR0的内容相加后的内容作为指向I/O内存的地址,取该位地址的状态。再如,执行MOV#0001DR0,IR1指令,即为把DR0内容与IR1中的内容相加后的值作为I/O地址,把#0001传送到该地址的字中。

偏移值还可以是自动递增或递减的。即在IR@读I/O内存地址后或前,索引寄存器的内容增加1、2或减1、2。如递增1,其符号为“,IR@+”。如递增2,其符号为“,IR@++”。如递减1,其符号为“,-IR@”。如递减2,其符号为“,--IR@”。

如执行LD,IR0++指令,即为取IR0内容指向的I/O内存地址上位的状态,然后再使寄存器的内容增2。再如执行MOV#0001,IR1+指令,即为把#0001传送到IR1内容指向的I/O内存地址上的字中,然后再使寄存器增1。

再如执行LD,--IR0指令,即为先使IR0的内容减2,然后取IR0内容指向的I/O内存地址上位的状态。再如执行MOV#0001,-IR1指令,即为先使IR1的内容减1,然后把#0001传送到IR1内容指向的I/O内存地址的字中。

提示:索引寄存器及数据寄存器使用,逗号“,”是不可缺少的。DR字长为16位,而IR为32位。

(4)考虑操作数地址的表达方法,则有:绝对地址、符号地址。

1)绝对地址,它使用PLC厂家定义的地址。如D0600,即DM区第0600字。

2)符号地址,用编程软件符号编辑器编辑的,与PLC厂家定义的地址对应的符号(用有意义的文字符号表达)地址。

提示:使用符号地址不仅可提高PLC程序的可读性,而且,还可使程序便于修改,便于重用。是PLC编程技术重大进步。

作为符号变量操作数地址,如考虑其作用范围,则有:全局变量、局部变量

(a)全局变量,它在PLC中定义。用于PLC所有程序。

(b)局部变量,它在程序中定义。只在本程序有效。

2.按作用分(www.xing528.com)

(1)输入类指令,用以处理输入信号及反馈信号,以建立逻辑条件。执行这类指令不产生输出,但它为输出类指令工作提供条件。显然,一个有效程序,不可能仅使用这类指令。

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

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

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

3)微分执行。有上沿微分与下沿微分。

上沿微分,当它的操作数从OFF到ON的那个周期,此操作数按ON处理,其它的均认为OFF。这样使用指令,要在它的代码之前加向上箭头符号。在梯形图上的符号为978-7-111-26319-7-Chapter02-38.jpg。下沿微分,当它的操作数从ON到OFF的那个周期,此操作数按ON处理,其它的均认为OFF。这样使用指令,要在它的代码之前加向下箭头符号。在梯形图上的符号为978-7-111-26319-7-Chapter02-39.jpg

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

(2)输出类指令,用以产生输出,或执行某种处理。但是,产生什么输出,以及是否进行处理,要执行输入指令所建立的逻辑条件决定。所以,在执行这些指令之前,一般讲,总要先执行输入类指令。不然,输出怎么能去反映输入呢!

OMRON公司的输出类指令也有3种执行方式:

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

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

3)微分执行。有上沿微分与下沿微分。

上沿微分执行(Differentiated Up,DU),当它的执行条件从OFF到ON的那个周期执行,否则,即输入条件不变,或OFF或ON,都不执行。这样使用指令,要在它的代码之前加符号“@”。

下沿微分执行(Differentiated Down,DD),当它的执行条件从ON到OFF的那个周期执行,否则,即输入条件不变,或OFF或ON,都不执行。这样使用指令,要在它的代码之前加符号“%”。

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

(3)中间指令,是为了简化编程、提高程序效率而新增的指令类型,老式的PLC多没有它。这类指令承上启下,既按在本指令之前建立的逻辑条件,执行本指令;又依本指令的执行情况,再建立逻辑条件,为后续指令的执行提供前提。

中间指令之后还可继以输入指令,然后才为输出类指令。以至于输入、中间指令多次相间,最后才为输出类指令。

如图2-21所示,这里用了LD、两个比较及AND指令。这两个比较就是中间指令。这里,如果0.01ON,D100大于等于2.0,D200大于等于3.0,0.02ON,则20.01ON,同时进行D1000、D2000浮点加运算,结果存入D2006中。否则,20.01OFF,不进行浮点加运算。梯形图这样表达很简练,效率是很高的。只是,这样的梯形图就不大像电气原理图,与创立梯形图的初衷略有违背。也许这也算“与时俱进”吧。

978-7-111-26319-7-Chapter02-40.jpg

图2-21 多个比较指令使用

这种指令的处理又称“EN”、“ENO”机制。即:每个指令都有“EN”,即输入条件,输入条件成立,才执行本指令;还都有“ENO”,执行结果,指令成功执行了,或执行后取得某期望的结果,则ENO为1,否则为0。

3.按执行分

PLC的输入指令,在每扫描周期中,总是执行的。多数输出指令,在执行(即与其有关的输入)条件具备时,也总是执行的,并立即产生执行后的效果。传统PLC的输出指令也都是这样的。

但在新型的PLC中,有的指令就不完全是这样的。

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

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

4.按使用分

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

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

随着PLC技术的发展,功能指令越来越多。OMRON CV、CS1、CJ1机,其功能码已超过两位数,如END指令,过去为FUN(01),而现在为FUN(001)。

而有的中、小PLC,如C200HS、C200Hα机及CQM1机,功能指令也已是100多个,但多的不太多。OMRON公司仍用两位数的功能码。两位数要区别100多个功能指令,怎么办?办法是:把功能指令分为两种:一为有固定的功能码,如01,固定代表END指令;另一为无固定功能码,如PULS(脉冲)指令,就没有固定的功能码,使用前现指定。没有固定的功能码的指令,OMRON公司称之为扩展指令。

如CQM1机的32个扩展指令,出厂时,工厂已对其中的17个指定了功能码,不另作设定就可以用。其余的15个没有功能码,不能使用。若要使用,就得另改设定。改设定可使用简易编程器,也可使用编程软件。而且,这个设定要与用户程序一起存储,一起下载,一起使用。否则PLC无法认识这些指令,因而程序也不能正确执行。

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

5.按功能分

类型很多。以CJ1机为例,分有32类之多。对其再作些归类,还有:

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

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

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

(4)流程控制类指令,用于控制程序执行流程。

(5)监控类指令,用于处理PLC或被控制对象的故障检测。

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

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

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

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

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

我要反馈