第一章 概述
一、编程概念
1. 指令: PLC被告知要做什么,以及怎样去做的代码或符号。从本质上讲,指令只是一
些二进制代码,即机器码。它可把一些文字符号或图形符号编译成机器代码。常用的文字代码为助记符,有的PLC称之为语句表。它类似计算机的汇编语言。常用的图形符号为梯形图符号。它类似于电气原理图的符号。但是至今,绝大多数PLC用的指令代码仍多是助记符。特别是用简易编程器编程时,都只接受助记符指令。多数PLC在接受助记符指令的同时,还接受梯形图符号指令。一个PLC所具有的指令的全体称为该PLC的指令系统。它包含的指令多少,各指令都能干什么事,代表着PLC的性能或功能,PLC的指令系统是在对其编程之前必须弄清楚的。而各厂家及各类型的PLC指令系统都不一样。指令,英语称instruction,是因袭计算机的术语。
2. 程序:PLC指令的有序集合,PLC运行它,可进行相应的工作。用语句表表达的程序不
太直观,可读性较差,特别是较为复杂的程序,更难读。所以,多数程序是用梯形图表达。梯形图是通过连线把PLC指令的梯形图符号连接在一起的连通图,用以表达所使用的PLC指令及其前后顺序,它与电气原理图很相似。梯形图的连线有两种:一为母线;另一为内部横竖线。
3. 对应关系 语句表指令与梯形图符号指令有严格的对应关系。先输入,后输出;先上,
后下;先左,后右。一般不会出现二义。这样,有了梯形图 ,就可将其翻译成语句表程序 。反之,根据语句表,也可画出与其对应的梯形图。如果仅考虑逻辑控制,梯形图与电气原理图也可建立起一定的对应关系。那就是梯形图的输出(OUT)指令,对应于继电器的线圈,而输入指令(LD,AND,OR)对应于接点,互锁指令(IL,ILC)可看成总开关,等等。这样,原有的继电控制逻辑,经转换即可变成梯形图,再进一步转换,即可变成语句表程序。 二、编程内容
PLC编程内容为:
1. 工艺分析: 对PLC控制对象的工作情况及控制要求要进行分析。
2. 分配I/O : 一般讲,配置好的PLC,其输入点数与控制对象的输入信号数总是相应的,
输出点数与输出的控制回路数也是相应的。
3. 编写程序:一般总是先脱机编写,这是编程的最核心的内容。要画出梯形图或写出语句
表清单。
4. 装载与调试程序:编好的程序要装载入PLC,然后才能进行调试。
5. 存储程序:调试通过的程序,要作好存储,以免程序损坏时便于恢复。存储时还可加密,
以保护知识产权。
OMRON PLC加密的方法是:
在程序的最前端(00000地址)加入如下指令: 00000 LD AR1001 00001 FUN(49)
000 000 密码
密码为#0000~#FFFF(16进制)任一数字,用户自己确定。 三、编程方法
编程常用方法有:经验法、顺序法、时序图法、技巧法等设计法。 1. 经验法 它是应用自己的或别人的经验进行设计。
1
OMRON 编程班
2. 顺序法 它是用框图表示PLC程序的执行过程及输入条件与输出间的关系,在使用步进
指令的情况下,用它进行设计,是很方便的。
3. 时序图法 时序图法是靠画图进行PLC程序设计。时序图法很适合于时间控制电路。 它
先把对应信号的波形画出,再依时间用逻辑关系去组合,就可很容易把电路设计出来。 4. 技巧法 技巧法是经验法及顺序法的基础上,运用技巧进行编程,以提高编程的质量。
四、编程要求
编程要求涉及到对PLC程序的评价问题。到底怎么评价PLC程序呢?
1. 正确 PLC的程序一定要正确,并要经实际工作验证,证明其能够正确工作。 2. 可靠 程序不仅要正确,而且要可靠。
3. 简短 使PLC的程序尽可能简短,也是应追求的目标。
4. 省时 程序简短可以节省程序运行时间,但简短与省时并不完全是一回事。因为:运行
程序时间虽与程序所拥有指令条数有关,而且还与所使用的是什么指令有关。PLC指令不同,执行的时间也不同。
5. 可读 还要求所设计的程序可读性要好。这不仅便于程序设计者加深对程序的理解,便
于调试,而且,还便于别人读懂你的程序,便于使用者维护。必要时,也可使程序得以推广。
6. 易改 还要使程序易改,即便于修改。
第二章 可编程控制器指令系统
早期可编程控制器指令较少,如OMRON公司的C20机,才27条指令。而且指令的功能也不强。而近期的产品,如CPM1A机,尽管为微型机,就有93种,149条。中、大型机更多,如CS1,多达800多条。而且还有功能很强的指令,如PID指令,可对数据作比例、微分、积分数字处理,可用于模拟量的控制。
诸多指令,可对其进行分类分析。 若按指令的长度划分,有: (1)单字指令。 (2)双字指令。 (3)多字指令
若按操作数的特点分,有: (1)位(bit)操作数。 (2)数位(digit)操作数。 (3)字节(byte) 操作数。 (4)字(word)操作数。
(5)双字(Double word)操作数。 (6)多字操作数。
若按使用的情况分,有:
(1)基本逻辑(有的称顺序)指令。 (2)应用指令,有的称功能指令。
随着PLC技术的发展,功能指令越来越多。OMRON CS1机,其功能码已超过两位数,如END指令,过去为FUN(01),而现在为FUN(001)。
而有的中、小型PLC,如C200HS、C200Ha机及CQM1H机,功能指令也已是100多个,但多的不太多。OMRON仍用两位数的功能码。两位数要区别100多个功能指令,怎么办?办法是:把功能指令分为两种:一为有固定的功能码,如01,固定代表END指
2
OMRON 编程班
令;另一为无固定功能码,如PULS(-)指令,就没有固定的功能码,使用前需现指定。
CQM1H机约有66个无固定功能码的指令,有固定功能码的有82个。留下18个功能码分配给无固定功能码的指令使用。即在一个程序中,这种无固定功能码的指令只能使用其中的18种。好在这种指令功能均较特殊,多数情况不必同时使用,所以,用户不会有什么不便。
产品出厂时,工厂已对其中的18个指定了功能码,不另作设定就可以用。其余的48个没有码,不能使用。若要使用,就得另改作设定。设定是通过编程器送入相应命令。或通过计算机(上位编程软件,如:CX-P)。这个设定要与用户程序一起存储,一起使用。否则PLC无法认识,因而程序也不能正确执行了。
若按在梯形图中的位置,或按作用分,有: (1)右方指令。 (2)左方指令。 (3)中间指令 若按功能分,有: (1)基本逻辑指令
(2)定时、计数类指令。 (3)数据处理类指令 (4)流程控制类指令。 (5)监控类指令 (6)处理I/O类指令 (7)通讯类指令 (8)内存管理指令
本章将按其功能,对下述七类指令作介绍: 一、基本逻辑操作指令 1. LD和LD NOT指令 功能:LD指令表示常开触点与左侧母线连接;LD NOT指令表示常闭触点与左侧母线连接。LD、LD NOT指令只能以位为单位进行操作,且不影响标志位。N为操作数。
2. OUT和OUT NOT指令
功能:OUT指令输出逻辑运算结果,OUT NOT指令将逻辑运算结果取反后再输出。N为操作数。
3. AND和AND NOT指令 功能:AND指令表示常开触点与前面的触点电路相串联,或者说AND后面的位与其前面的状态进行逻辑“与”运算;AND NOT指令表示常闭触点与前面的触点电路相串联,或者说AND NOT后面的位取“反”后再与其前面的状态进行逻辑“与”运算。N为操作数。
3
OMRON 编程班
4. OR和OR NOT指令 功能:OR指令表示常开触点与前面的触点电路相并联,或者说OR后面的位与前面的状态进行逻辑“或”运算;OR NOT指令表示常闭触点与前面的触点电路相并联,或者说OR NOT后面的位取“反”后再与其前面的状态进行逻辑“或”运算。N为操作数。
说明:1.串联接点,并联接点的数目,在程序范围内可无限制的使用。 2.IR区中已用作输入通道的位不能用作为OUT、OUT NOT的输出位。 5. AND LD指令
功能:AND LD指令用于逻辑块的串联连接,即对逻辑块进行逻辑“与”的操作。如图所示:两个虚框就是逻辑块“与”。
6. OR LD指令
功能:OR LD指令用于逻辑块的并联连接,即对逻辑块进行逻辑“或”的操作。 如图所示:两个虚框就是逻辑块“或”。
7. 置位和复位指令—SET和RESET
功能:当SET指令的执行条件为ON时,使指定继电器置位为ON ,当执行条件为OFF时,SET指令不改变指定继电器的状态。当RESET指令的执行条件为ON时,使指定继电器置位为OFF,当执行条件为OFF时,RESET指令不改变指定继电器的状态。N为操作数。
4
OMRON 编程班
如下图所示:当00000从OFF变为ON时,20010被置为ON,即使00000位变为OFF,20010并保持ON。当00003从OFF变为ON时,20010被复位为OFF,即使00003位变为OFF,20010并保持OFF。
8. 保持指令—KEEP(11)
功能:根据两个执行条件,KEEP用来保持指定继电器N的ON状态或OFF状态。当置位输入端为ON时,继电器N保持为ON状态直至复位输入端为ON时使其变为OFF。复位具有高优先级,当两个输入端同时为ON时继电器N处在复位状态OFF。N为操作数。
如下图所示:当00000由OFF变为ON时,HR0000被置为ON。,即使00000为OFF,HR0000保持ON,直到00002由OFF变为ON,HR0000才被复位为OFF,即使00002变为OFF,HR0000保持OFF。
9. 上升沿微分和下降沿微分指令—DIFU(13)/DIFD(14)
功能:当执行条件由OFF变为ON时,上升沿微分DIFU使指定继电器在一个扫描周期内为ON;当执行条件由ON变为OFF时,下降沿微分DIFD使指定继电器在一个扫描周期内为ON。N为操作数。
如下图所示:输入00000的上升沿(OFF→ON)时,内部辅助继电器20000在一个扫描周期内ON,MOV(21)指令在一个扫描周期内执行。输入00000的下降沿(ON→OFF)时,内部辅助继电器20001在一个扫描周期内ON,BSET(71)指令在一个扫描周期内执行。
5
OMRON 编程班
10.脉冲指令—PULS(-)、SPED(-)
有的可编程控制器,如CQM1H机,不仅输出ON-OFF状态,还可输出脉冲量。这种情况就要用到脉冲指令。
CQM1H机的脉冲指令有两种,四条。
一种为设定输出脉冲数的PULS(-);另一设定输出脉冲的速度并产生脉冲的SPED(-)。 其在梯形图上的符号为:
这里 P---设定脉冲数的通道或字的低字地址,如设其为DM100,则DM101,DM100的内 容即为脉冲数,CQM1H机最大脉冲数为16777215。
000---无功能,但占程序内存单元,不可省略。
D---指定100通道的输出位。确定脉冲在那个输出点输出。设定的范围为000~150。这里第1位数恒0,第2、3位指定输出位。如140,输出位为10014,即100通道的14位为输出位。
M---脉冲输出模式,CQM1H有两种,一为独立模式,M设定为000,正常情况下,其输出脉冲数由P决定;另一为连续模式,M设定伪001,其输出脉冲数不受P值影响。 F---设定频率,单位为10赫兹,可能的范围为0002~0100,其相应的频率为20~1000赫兹。如果设F=0000,则停止脉冲输出。
6
OMRON 编程班
@---为微分执行。不加@为正常执行。微分执行含义是当R寄存器的内容从0变到1时,它执行一个扫描周期。由于有了它。这两种指令,就可组合成4条指令。
上面提到的CPM1A机有93种,149条指令,条比种多,就可靠@组合后增多的 这两种指令的作用是:
PLUS---设定要输出的脉冲数,它是进行脉冲输出的准备,要先运行。如果SPED指令设成连续模式,本指令可不用。
SPED---产生脉冲输出,并决定以什么速度(每秒输出多少脉冲)输出。
此外,中断指令INI(-)(见后)功能设成003时,也可用以停止脉冲输出。
还有PWM(-)指令,可使指令线圈产生指定频率91.6HZ、1.5KHZ、5.9KHZ及脉冲宽度1%~99%的占空比可调脉冲输出,可用于进行脉宽调制。OMRON公司CPM2A PLC机也有这种指令。
二、定时、计数指令 1.定时器指令—TIM
功能:定时器为通电延时,当定时器的输入为OFF时,定时器的输出为OFF。当定时器的输入为ON时,开始定时,定时时间到,定时器的输出为ON。若输入继续为ON时,则定时器的输出保持为ON。当定时器的输入为OFF时,定时器的输出随之变为OFF。
如下图所示:当00000为ON时,TIM000开始定时,定时时间为15秒(#0150×0.1S),定时到,位20000为ON。
2.高速定时器—TIMH
与普通TIM指令无重大区别,只是它的计数单位为0.01秒。有的高速计数器的单位为0.001秒,可实现毫秒级的计数。
TIMH不太常用,为功能指令。OMRON指定其功能码为15。
高速指令所用的定时器编号有限制,一般用前边的号(000~014)。这些定时器可中断工作,可保证能区分较小的定时单位。 3.累计定时器指令—TTIM
C200Ha机有此指令,用以累计计时。它是增计时,计时单位为0.1秒。输入端ON计时,
7
OMRON 编程班
OFF不计时,但不复位。再ON,再计,并累计计时,直到达到设定值,计时停止,并产生输出。计时复位靠复位位ON。 4.计数器指令—CNT
CP为计数脉冲输入端,R为复位端,SV是BCD数,取值范围为0~9999。计数器为递减计数器,计数器和定时器的编号是共用的,使用时编号不能重复。
如下图所示:当计数脉冲输入端00000输入上升沿(OFF→ON)时,计数一次,如当前值为0000时,计数器到数并输出为ON。在复位端00001输入的上升沿,当前值返回为设定值,在复位端输入为ON时,不接受计数输入。
5. 可逆计数指令—CNTR
它为功能指令,功能号为12,除了有复位端,还有两个计数端,一个为正计数,一个为减计数。其工作情况是,初始状态,当复位端ON时,现值为0,不计数。复位端OFF,允许计数。正端从OFF到ON,正计数,现值加1;负端从OFF到ON,减计数,现值减1;正计数达到设定值时,再增计一个数,则现值变为0,且产生输入。现值为0时,再减计一个数,则现值变为设定值,也产生输出。 6. 高速计数指令
主要用于小型机。因为中、大型机高速计数由高速计数模块实现,PLC的CPU不必用指令去直接处理它。CQM1H机高速计数功能有较大增强,可按两种方式(靠软件设定)计数:增量模式:只能增计数,单相输入,仅用00004—计数、00006—复位两输入端。计数频率可高达5kHz。计数范围为0~65535。增减模式:可增减计数,三相输入。三个输入端,00004-A,00005-B端,00006-Z端。A相超前90°为增计数,B相超前90°为减计数。此两状态即对应于旋转编码器的正反转。Z相用于复位。计数范围为±32767。两种模式的计数复位均可用硬件或软件实现,也可仅用软件复位。程序起停时,高速计数器自动复位。但其初值可由初始化程序通过相应指令给以预置。CQM1H的高速计数输入,比较及输出均可处理为中断方式,可用表比较或范围比较,可分成16个或8组目标值,所以,响应速度较快,用起来也方便。CQM1H高速计数时要用到的指令有比较(CTBL)、控制比较及置现值(INI)、读现值(PRV)等多条。同时要对DM6638,DM6615,DM6642作相应设定。 三、数据处理指令
随着PLC技术的发展,其数据处理指令越来越多,功能也越来越强,使当今的PLC不仅
8
OMRON 编程班
可方便地用于逻辑量的控制,而且也可方便地用于模拟量的处理与控制。
数据处理指令很多,占PLC指令集的相当大部分。大多以字、多字为单位操作。具体有:传送指令、比较指令、译码指令、数字运算指令、逻辑运算指令等等。 1.传送指令—MOV(21)/@MOV(21)
功能:当执行条件为ON时,将S中的数据传送到D通道中。定时器/计数器TC不能作为目的数据。
如下图所示:当00000为ON时,输出通道010的内容传送至HR09通道。
还有MVN(22)指令,它与MOV不同的只是传送之前,先把要传的内容取反,然后再传。高档PLC还有双字传送指令,MOVL、MVNL。
此外,还有多种传送指令。有: 多字传送指令XFER(70)。也称块传送指令,可把若干连续地址的内容分别传送给对应的连续的目标地址。只要设好要传的数据的起始地址,目标的起始地址及要传的字数就可以了。块设定指令BSET(71)指令。它可把一个字的内容设定到指定的连续存储区中,只要指出该区的起始地址及末了地址。这个指令可很方便地用于对PLC的一些存储区进行初始化。
字交换指令XCHG(73)。可进行两个地址内容的交换。高档的PLC还有双字交换指令XCHGL。
带偏移目标地址的传送指令DIST(80)。可把源地址的内容传送给某址加偏移地址后的地址。这种传送较灵活,便于存储数据,或从同一子程序中取出的数存于不同的单元中。带偏移源地址的传送指令,COLL(81)指令。可把某基址后的地址的内容传送到某个目标地址。这种传送便于取数,或同一子程序可使用不同的参数。除了字、双字、多字传送,还有BCD码的数(digit)及16进制的位(Bit)传送,等等。
这些指令给数据处理都提供了方便。 2.单字比较指令—CMP(20)
功能:当执行条件为ON,比较C1和C2的大小,将比较结果送SR区的标志位。 大于标志位25505,当C1>C2置位为ON。 等于标志位25506,当C1=C2置位为ON。 小于标志位25507,当C1 OMRON 编程班 如下图所示:输入位00000为ON时,输出通道IR010的的内容与保持继电器HR09的内容进行比较。比较后的结果由25505或25506或25507标志位输出。 3.移位寄存器指令—SFT(10) 功能:当复位端R为OFF时,在移位脉冲端SP由OFF→ON的上升沿时,St到E通道中的所有位依此移一位,E通道的最高位丢失,St通道的最低位则移进数据输入端IN的数据。当复位端R为ON时,从St到E通道中的所有位置OFF,此时移位脉冲端SP和数据输入端IN无效。开始通道St必须小于或等于结束通道E,而且St和E必须在同一区域。 这三个端(IN、SP、R)用三个LD开头的输入指令产生,在语句表上必须为: ×××× LD ×××× …… ×××× LD ×××× 10 OMRON 编程班 …… ×××× LD ×××× ×××× SFT(10) St E 凡需多个输入端的梯形图,也都是这么处理的。 如下图所示:在移位脉冲端00001上升沿(OFF→ON)时,HR1000读入数据端00000输入的内容1(ON)或0(OFF),同时,把HR1000~1014的内容分别向HR1001~HR1015,一个位一个位地移动,原HR1015的内容消失。输出位01000在HR1005为“1”时ON。 此外,还有多种多样的移位指令: 算术左移ASL(25):仅对一个字的位移位,执行一次本指令移一次位。移位时用0移入最低位(00位)。原00位的内容,移入01位……15位的内容移入进位位CY(25504)。而进位位的内容丢失。 算术右移ASR(26):它与ASL不同的只是它为右移,先把进位位的内容移入字的最高位(15),原15位的内容移入14位……原00位的内容丢失。循环左移ROL(27):它与ASL不同的只是它的CY的内容不丢失,要传给00位,以实现循环。 循环右移ROR(28);与ASR不同的是00的内容不丢失,传给进位位,以实现循环。还有可逆移位指令,由控制字控制左还是右移,并可实现多字移位。除了二进制的位(bit)移位,还有BCD码的数(digit)移位,可左移SLD(74),也可右移SRD(75)。移位的对象可以多个字。 还有字移位WSFT(16),以字为单位的移,执行一次本指令移一个字。移时0000移入起始地址(最小地址),起始地址的原内容移入相邻的较高地址,……最高地址(结束地址)的内容丢失。多次执行本指令,可对从起始到结束地址的内容清零。 还有非同步移位ASFT(17)。也是字为单位。执行时,只是对其相邻低地址的内容的字作移位(它的内容移入相邻地址,原地址置成0000,实质为两相邻字交换)。多次执行本指令,可把所有0000的内容移向高地址。 4.译码指令 用以译码,以适应显示或逻辑控制的需要。 最常用为BCD码与BIN二进制码转换用指令。BCD(24)为二进制码转换成BCD码指令。BIN(23)为BCD码转换二进制码指令,还可用BCDL及BINL进行两字转换。 此外,还有其它译码指令。如: 4转16的MLPX(76)指令:它可根据源地址16进制数位(digit)的内容(0~F)使相应通道的二进制位(bit)置成1(其它非指定位置成0)如果位内容为7,可使指定通道的07位(bit)置成1,其余的均为0。最多可用4个数位(digit)使4个通道的相应位置1。 11 OMRON 编程班 到底有多少个数位,各数位对应于哪个通道由控制字确定。 还有与MLPX(76)相反的译码指令DMPX(77)。它为16到4译码,是前者的反过程,把一到四个通道中最高位(bit)为1的位号,分别置入指定通道的某个数位(digit)。有多少通道及通道与哪个指定字位(digit)对应由控制字确定。 这两个译码指令常用数值与输出位的对应变换。 a机还对这两条功能予以增强,可通过控制字高位设成1,进行8到256或256到8的译码。256作为16个字组成的256个位(bit)。8作为1个字节称为一组,每组两位16进制数,其值变化范围为00~FF,正好对应于256位(bit)的00~255位。总之,8到256及256到8译码,本质上与4到16及16到4是相同的,只是它的通道长(位数)不是16,而是256,位(号)不是0~F,而是两位16进制数00~FF。 8到256,或256到8最多只能进行两组,不像4到16及16到4可进行4组。 7段译码指令SDEC(78):把BCD码译成7段码,用于数字显示。 ASCⅡ码转换指令ASC(86):把16进制数译成ACSⅡ码,还可加或不加奇或偶校验。 16进制码译码HEX(-):把ACSⅡ码译成16进制码。 小时到秒译码指令SEC(-):把小时数译成秒数。 秒到小时译码指令HMS(-):把秒数译成小时数。 列译成行译码LINE(-):把16个字的指定同一个位(bit)的内容,变成一个指定字的内容。 行译成列译码COLM(-):与LINE具有相反的过程。 等等。 5.数字运算指令 最常用的为一个字的BCD码+ 、—、×、\\ 指令。还有两个字(8位BCD码)+、-、×、\\。 还有16位及32位二进制的+ 、—、×、\\,a机还可带符号位的运算。 还有加1,INC(38)。减1,DEC(39)两个也是较常用的指令。 这些运算都要影响进位位也都参加运算。 为此,在运算之前要对进位位(CY)进行操作。有两个指令可做此工作。即: STC(40):置进位位,使进位置1。 CLC(41):清进位位,使进位置0。 此外,还有开方,浮点除。高档及新型的PLC还有可进行终合运算的指令。如: 在一组数中求最小值MIN(-);在一组数中求最大值MAX(-);求一组数的平均值AVG(-);求一组数的总和SUM(-)。 还有可进行三角函数运算,还可进行对数、指数运算;可进行一组数的数值插值运算。 随着PLC技术的发展,以及满足模拟量控制及通讯的需要,终合运算指令越来越多,功能也越来越强。为此,有的PLC可以进行PID运算,以适应比例、积分、微分的要求;有的可进行FCS运算,为一组ASCⅡ码进行纵向异或校验计算FCS码。 6.逻辑运算指令 基本逻辑指令进行逻辑处理,只针对一个位,而这里逻辑运算指令针对一个字,16位。16位同时进行逻辑运算。 逻辑运算指令:ANDW(34),字与;ORDW(35),字或;XORW(36),字异或;XNRW(37),字异或非等等。 四、流程控制指令 PLC指令,一般是从零地址开始执行,依次进行,直到END指令。但为了简化编程或减少扫描时间,或实现特殊控制,须改变程序的流程。为此,PLC设有改变程序流程的指令。 12 OMRON 编程班 主要的流程控制指令有: 1.跳转指令 OMRON机用JMP(04)及JME(05)指令。P型机这个指令不编号,H型机或新型的要编号。这两条配对使用。 JMP指令执行前,要建立逻辑条件。JME不要条件。只是表示跳转结束。要跳转的程序列于这两个指令之间。 当执行JMP时,若其逻辑已经为ON,则不跳转,照样执行JMP与JME间的指令,如同JMP、JME不存在一样;若为OFF,则JMP与JME间的程序不执行,但与其对应的内存状态不改变。 JMP、JME可嵌套使用,但多数是受限制的。JMP、JME编号使用时,配对的两个,编号要一致。00号可多次使用。其它号只能使用一次,而且,若逻辑条件OFF时执行它,其间的程序不予扫描,故可减少扫描时间。 有的可编程的跳转类似计算机的汇编语言,指定跳转到哪个标号的语句去执行,情况复杂一些,使用时要小心,要避免出现死循环。 2.子程序 在程序中,常有一些要重复使用的一组组指令,用以实现某些特定的功能。若把一组组指令变成子程序,则可大大简化编程。 子程序的指令有三条: SBN(92)N--子程序的入口 RET(93)---子程序结束 SBS(91) N---子程序调用 N---子程序编号,编号数与可编的子程序对应,是有所限制的。 子程序入口及结束指令无须逻辑条件,而调子程序的指令要有逻辑条件。当逻辑条件ON时,执行SBS指令,则停止SBS之后的指令执行,转而去执行从子程序入口开始的程序。直至RET指令,则又返回主程序,执行SBS之后的下一个指令。若条件为OFF,子程序不调用,如SBS指令不存在一样,程序执行SBS之后的次一个指令。 SBS指令可多次使用,亦即子程序可多次被调用。子程序被调用的次数越多,其使用的效率也越高,越说明子程序存在的必要。 子程序可以嵌套使用,即子程序还可调子程序。但其层数是受限制的,而且也不能调用自身,即不能递归。 所有的子程序都要安排在主程序的后面,在END指令之前。若有的主程序安排在子程序之后,CPU将不予执行。这点在使用时一定要注意。 3.宏 这是OMRON公司在CQM1机及其以后推出的机型中新增的流程控制的指令。实质上也是子程序。与普通子程序不同的是,这子程序的变量(指令的操作数)为形式变量。调用它时(执行宏指令时),才对其赋值。它的符号: 本指令也还可微分执行,即指令之前加@号,表示逻辑条件从OFF到ON时,执行一个 扫描周期。 13 OMRON 编程班 这里 N---将要调的、带形式参数的子程序 I1---调用子程序时与形式参数相对应的输入点实际参数 O---调用子程序时与形式参数对应的输出点实际参数 由于宏调的子程序输入与输出点的变量名可以替换,故不同名的点,也可调用。这可增加子程序的调用,提高子程序的使用效率。宏用的形式输入、输出点为指定的继电器点。其输入的通道号为SR290~SR293,输出的通道号为SR294~SR297。当然,这些如不被宏所用,也可作为中间继电器使用。 4.中断 中断也是调子程序,但它不是靠SBS指令调,而是靠中断事件调用。且调的子程序编号与所发生的事件对应。这些子程序有时还称为中断服务程序。 PLC中断事件可以来自外部,也可来自内部。 外部的有若干输入点,如CQM1H机,可指定00000~00003四个点为中断输入点;可编写四个中断服务程序与这4点从OFF到ON的事件对应。只要这四点之一从OFF转为ON(产生中断事件),则调用依次对应的服务程序。 这种外部中断,可提高PLC对输入信号的响应速度。 内部中断的事件来自PLC内部,如定时中断。C200Hа机,可通过INT(89)指令,设定时中断的周期。只要执行INT(89)一次,则PLC将定时地执行定时服务程序(子程序编号指定为99)。CQM1H可通过STIM指令设这个中断周期。其它PLC也有类似指令。 中断也可被屏蔽,或重新开通。中断被屏蔽时,中断事件即使出现,其服务程序也不予执行。 屏蔽开通有的靠指令,有的靠设定,使用时,要按说明书要求进行。 5.步进指令 工作设备工作,或一些工艺过程往往分成步进行。一个步完成了,再转入另一个步。可以有很多步。步可以按顺序工作,也可依条件产生分支,改变顺序。有的步还可平行工作…… 对应于这种逻辑最好用步进控制。PLC也为此设有步进指令。 OMRON机步进指令有两条: STEP(08) B---某步程序的入口指令,若不带标号B,表示步指令结束。 SNXT(09) B---调用标识为B的步指令。 STEP指令不要逻辑条件,它只是表明步程序入口之后,要编一些有关步的程序。步程序以SNXT(09)B结束。它要求有逻辑条件。条件为ON时执行它,即转入新的一步(由SNXT调的步),并停止当前步。如果SNXT指令所带标识没有STEP编号的步,而且其后续的STEP又无编号,则在条件ON执行它后,即返回主程序,停止步程序。 当然,第一个步程序的调用,要在主程序中,靠执行SNXT B(第一个步程序标识)实现。 由上可知,不是所有步的程序都被扫描及执行的。只是处于激活的步,或说已被调用的步CPU对它的程序才扫描、才执行。所以,未激活的步的SNXT指令,虽然,它的逻辑条件ON,也不会执行。因此,步不会被误调用的。 步程序可以顺序地被调用,直至最后一步。步调用图(a)所示的即为顺序调用的例子。 步程序也可以分支调用,依条件按不同的分支进行。步调用图(b)所示为分支调用的例子。 步程序也可以平行调用,条件具备时,可同时调两个步程序,然后再依各的情况再一步步推进,直到返回主程序。步调用图(c)所示为平行调用的例子。 14 OMRON 编程班 应指出的是,当步转换时,原有步中的IR、HR位均OFF,定时器复位到它的现值,但计数器、移位计数器、复位置位及KEEP指令操作的位,保持不变。特殊继电器25407在进入新步 时ON一个扫描周期,可用作计数器等复位。 另外,在步程序中不能使用互锁、跳转、调子程序及END指令。 6.块编程指令 OMRON公司的CS1中型机有此指令,它的功能是在梯形图程序中插进一块助记符编的程序。它的符号为: 其后继的为助记符指令。助记符指令的最后一个语句为BEND(801)。执行它后,表示插入的助记符程序结束,以后的程序又转入梯形图程序。 当然,要执行这插入的助记符指令,必须在执行BPRG(096)指令时,其逻辑条件为ON。若条件为OFF,则如同JMP--JME指令一样,CPU对其将不予理睬。 这插入的助记符指令使用时有一定的限制,请参考CS1有关手册。 五、监控指令 这类指令可用以监控PLC工作,也可用以监控PLC所控制的系统的各个重要环节的工作;也可对出现的故障予以指示(报警)与登录,以至于可使PLC停机;可保证系统安全运行,出现了故障也便于诊断。 PLC本来就非常可靠,运用好这些指令,可使系统的工作更为可靠。这类指令日见增 多,目前常见的有: 1.FAL(06)、FALS(07)指令 用以记录故障,其格式为: 这里 N---设定故障后,记入特殊继电器253通道低字节的代号 这两个指令都有逻辑条件,并也可微分执行。逻辑条件ON时执行FAL,则报警(CPU报警)信号灯闪烁,但PLC仍工作。执行FALS,CPU报警灯亮,CPU停止工作。它们的逻辑条件与要监控的信号相连系,用户可依情况确定。有时也可用特殊继电器25503,它是指令执行出错的标志,可用以监视指令是否正确执行。 这两条指令可多次使用,故可用于多种情况的监控。 15 OMRON 编程班 一旦出现报警,只有出错的逻辑条件不存在,并执行一个编号(N)为0的FAL指令,报警情况即可消失。CPU也将进入正常工作。 出错逻辑条件不存在,PLC重新起动,也可消除报警,CPU即进入正常工作。 这两条报警指令执行时,对有内置时钟的PLC,还可记录出错的时间(精确到秒)及故障号(这里的N);可累计记录10次这样的故障,存于DM的指定区中;超过10次时,最先记的数据掉失。 有了当前故障记录(存于253通道的低字节)及历史故障记录,将大大 方便了PLC及其控制系统的故障诊断。 2.WDT(94),SCAN(18) 用于控制与监控程序扫描时间。 WDT用于设定要延长扫描时间。最多可延长到640ms。一般情况下,PLC程序扫描时间超100ms即报警,130msPLC可能要被迫停止工作。但若用户程序很多,必须有长的扫描时,则可用它予以延长。 SCAN用于设定最小的扫描时间。若PLC扫描时间少于它时,将等待。若大于它,则按实际执行。最小设定时间为000.0~999.9ms,常需要考虑定时运行程序的情况。 3.终端指令 用于使简易编程器进入终端模式,实现数据终端的功能。这时,可在编程器上观察到程序运行过程中的有关信息,也可通过编程器键入要求显示的信息。当然,为此要编有相应的程序。而且,这些信息的显示,无须编程人员干预,这也是用编程器模式与终端模式的区别。 这些指令有: TERM(48)---当逻辑条件ON时执行它,使连接在PLC上的编程器进入终端模式。本指令可微分执行,只要执行一次。即进行模式转换。 进入终端模式后,在编程器上键入CHG键,可返回编程器模式。返回模式的指令没有,故只好用CHG键。通过CPU设定,也可用AR0709继电器作相操作进入终端模式后,可通过LMSG(47)指令的执行,在编程器上显示由这个指令指出的存储区中存储的信息,可显示32个字符的信息。 4.跟踪指令 跟踪分数据及步两种跟踪。用它可方便用户程序调试。这对用户程序非常庞大的大型机是很需要的 。 此指令的格式为: 此指令可使用任意次,可设在程序的任一的地方。 此指令无需逻辑条件,但在执行本指令前,要对AR1814、A1815(C200Ha机为AR2514、AR2515)作设置,否则什么也不会做。AR1815为采样数据启动位,它只能由外设置位。AR1814为跟踪开始位,当它置1时,指定的数据记录在跟踪的存储区中。AR1814可由程序或外设置位。 六、I/O管理指令 当无I/O管理刷新指令时,I/O刷新在用户程序执行后进行。但有的输入/输出,要急于作处理,执行程序前(对输入),或执行程序后必须要刷新。这时,就要用到I/O刷新指令。 CS1机在输入或输出指令中,附加感叹号“ ! ”,也是I/O刷新,只是它仅针对一 16 OMRON 编程班 个位。I/O管理的刷新可对多位、多通道作刷新。 C200Ha机I/O刷新的格式为: 这里 ST---开始通道 E---结束通道 97---为功能码号 执行本指令,可使自ST通道开始,至E通道的所有I/O予以刷新。I/O刷新可使用的通道一般是有限制的,不是所有的I/O都可以,使用时要注意。为此,C200Ha机还针对第二组I/O的刷新。其格式为: 这里 St---开始通道 E---结束通道 000---没有用,但必须要有 这类指令还可微分执行。 I/O管理,除了I/O刷新,还有利用I/O点进行键入的数据的指令。这些有: 10进制数键入指令--DSW(-),其格式为: 这里 IW---输入字 OW---输出字 R---第一结果字 本指令用于输入4位或8位(依设定)数字,存入R(若4位)或R、R+1(8位)中。当然,所使用的I/O点要作相应的接线。 16进制数键入指令---HKY(-),其格式为 17 OMRON 编程班 这里的IW、OW、D同上。只是它键入的是16进制码(0~9,A~F)。存入D或D与D+1的单元中,视所设的4位或8位数而定。 七、内存管理指令 这里讲的内存,主要指系统的数据存储区中的扩充数据存储区,即EM。高档的PLC才有这个区。而一般的PLC仅有DM区。 由于PLC的多数数据处理及逻辑指令仅适用于DM,无法对EM区作操作,故设置了EM的PLC,要增加一些能对EM区进行操作的指令,以及两个区转换的指令。 此外,高档的PLC在系统的其它数据区中,还可建立堆栈(先进后出存储区)或队列(先进先出的存储区)。对此也设有相应的管理指令。 有的PLC为防止在联网中,或外设操作中,数据丢失,或不宜被别人访问,也设有相应的管理指令。 再者,高档的PLC设有内存卡,可访问用户程序或用户数据。这些卡的管理及与UM区及DM区数据交换,也设有相应指令。 所有这些指令,在这里统统称为内存管理指令。这些有: 1.关于EM管理 EM,指扩展数据存储器,少的6k,多的可扩到24k,32k……。但由于PLC地址总线宽度的限制,对多于6k的EM,只好对其作分段管理。每段约6k。当前段可直接访问,非当前段要作些转换,有多个EM管理指令,具体的是:数据传送指令,其格式为: 这里 N---规定要传送的字(word)数 S---要传送的首地址 D---要接受传送的首地址 这里的N、S、D可以是PLC内部器件的任何通道或字,如IR、SR、DM、HR、TC、LR……同时,若为#(常数符号)时,则指的是当前段的EM区的首地址。执行这个指令,可从S指出的首址开始,把N指出的多少个字传送到D指出的首地址开始的通道或字中去。若用了#符号,即对EM的当前段进行或参与操作。本指令也可微分执行。 选择当前段,其格式为: 这里 N ---要指定的当前段号,当然,这个号应是PLC实际存在的号 执行本指令指定当前为N给出的段号。N可以存于IR,SR,AR,DM,HR,LR的内容,也可用常数指定(用符号#于数字之前)。 简接寻址EM区指令,其格式为: 18 OMRON 编程班 这里 C---控制字,必须是000,或#E000,#E0B0,#E0B1,#E0B2…… OMRON PLC原来*DM间接地址只针对DM区,执行本指令后,可改变指向EM区。具体改变情况视控制字C的内容。而控制C的内容与改变情况的关系如下: 000:*DM指向DM区 #E000:*DM指向EM区的当前段 #E0B0:*DM指向EM区的0段 #E0B1:*DM指向EM区的1段 #E0B2:*DM指向EM区的2段 …… 对C200Ha机执行本指令及前一个指令(EMBC(-))后,在DM6031中会流下相应标记: DM6031的00~07位,记入当前段的段号,08~15位记入*DM指向DM(若为00)。或指向EM(若为01)。 EM区内段间数据传送指令BXF2(-),其格式为: 这里 C---控制字首址,有两个控制字,C及C+1 S---源数据区首址 D---目标数据区首址 控制字C及C+1的含义为: C:00~07指出源段号 08~15指出目标段号 C+1:0~15指出要传送的字数,最多为整个段,即6144个字 执行本指令,可把EM区中源段从S地址开始的内容,传送指定的字给目标段D开始的地址。本指令也可微分执行。 除了扩充数据存储区,CH200Ha机还有扩展(expansion)数据存储区。它由用户程序区(UM),经设定后扩展而来。最多扩3k。可用于存储有关操作参数及数据。如设为1k,其地址为DM7000~7999,……若为3k,则DM7000~9999。 扩展DM区只能由外设写,程序只能读,也可通过外设设定,于上电时其内容传给用于存储特殊单元操作参数的DM区,或由外设操作直接进行传送。程序读可用XDMR(-)指令,可指定要读的字数、源和目标首址。 2.堆栈指令 设堆栈指令SSET(630),其格式为: 19 OMRON 编程班 这里 TB---栈的首地址。TB、TB+1的内容为栈的地址,TB+2、TB+3的内容为栈的指针,TB+4开始到栈底可存数。内部器件均可作为栈, N---栈的长度,以字为单位 如TB为DM00000,N为#0007,执行本指令,则建立一个栈顶为DM00000,栈底为DM00006的长度为7个字的堆栈。其指针指向TB+4。建栈之后,可接受堆栈的进栈、出栈指令操作。 进栈指令PUSH(632),其格式为: 这里 TB----栈的首地址 S---源数或源数地址 执行本指令,将把源数写入堆栈指针指出的地址中,然后堆栈的指针加1。出栈指令有两个,先进后出LIFO(634)及先进先出FIFO(633)。LIFO格式为: 这里 TB---堆栈的首地址 D---目标数地址 执行本指令时,先堆栈指针减1,然后从指针指向的地址中读出数,再写入D指出的地址中。 FIFO指令与LIFO相反,出堆的数是最先存的。其方法是,从栈顶(TB+4)取数,然后栈的各地址数向前串一个字,堆顶填以零。指针再减1。 当然,进行栈操作时,要先建栈,而且栈的指针应在TB+4~TB+N-1的范围之内。 3.文件管理指令 OMRON的CS1 PLC设有对存储卡进行的管理指令。具体有: 读数据文件指令FREAD(700),其格式为: 这里 C:控制字 S1:第一源字 S2:文件名 D:第一目标字 执行本指令,可从文件内存中指定的数据文件读取指定的数据或数据的数量,并存放到 20 OMRON 编程班 CPU单元中指定的数据区。本指令也可微分执行。 写数据文件指令FWRIT(701),其格式为: 这里 C:控制字 D1:第一目标字 D2:文件名 S:第一个源字 执行本指令,把 CPU单元数据区中指定的数据添加或重写入文件内存中指定的数据文件中。如果指定的文件不存在,将产生该文件名的新文件。本指令也可微分执行。 21 因篇幅问题不能全部显示,请点此查看更多更全内容