OMRON 常用指令 - 图文

更新时间:2023-11-05 06:54:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第3章 常用指令与编程

现代PLC都具有丰富的指令系统,利用这些指令编程,能够容易地实现各种复杂的控制操作。对于PLC系统,指令是最基础的编程语言,掌握常用指令的功能及其应用方法,这对用好PLC及其系统设计极其重要。本章主要介绍CS1的各类指令,但由于该机型的指令数量较多,限于篇幅等因素,本书只对常用的指令进行介绍。按功能可将这些指令分为基本指令、数据操作指令、常用控制指令和高级指令等。其他指令,可参考OMRON公司提供的编程手册和操作手册等资料。

3.1 基本指令

可编程序控制器的基本指令主要包括顺序输入指令、顺序输出指令、顺序控制指令、定时器和计数器指令等。这些指令用来执行以位(bit)为单位的逻辑操作,它们是用PLC替代继电器控制的基础。

梯形图中每个条件是否为ON或OFF,取决于分配给它的操作数位的状态。一般来说,当该操作数位为1时,对应的继电器线圈通电、常开条件变为ON和常闭条件变为OFF;反之,该操作数位为0,则对应的继电器线圈断电、常开条件为OFF和常闭条件为ON。在梯形图中,一条指令前面的常开、常闭等条件的逻辑组合产生了执行条件,执行条件是否具备,决定于指令的状态。对于继电器线圈类指令,当执行条件ON(具备)时,则对应的继电器线圈得电;当执行条件为OFF(不具备)时,对应的继电器线圈断电。对于功能类指令,当执行条件为ON时,该功能指令执行;当执行条件为OFF时,则该功能指令不执行。指令行上的逻辑组合可以分成几个部分,每一部分均为一个逻辑块。利用逻辑块能够更有效地编程。

3.1.1顺序输入指令

常用顺序输入指令包括加载、基本逻辑运算、逻辑块,主要用于对继电器进行最基本的输入操作,如表3-1所示。

表3-1 顺序输入指令表 指令名称 加载 助记符 操作数 LD 继电器号 典型梯形图 A 一般功能 将常开触点(A)接到母线上,在每个行或块的起点处使用,常用于创建一个ON/OFF执行条件。 加载非 与 LDNOT 继电器号 AND 继电器号 与非 ANDNOT 继电器号 或 OR 继电器号 A2 A1 将常开触点(A1)和常开触点(A2)并联。 A1 A2 将(常开或常闭)触点(A1)与常闭触点(A2)串联。 A 将常闭触点(A)接到母线上,其他同上。 A1 A2 将常开触点(A1)与常开触点(A2)串联。 操作数范围 备注 CIO区、W区、 H区、A区、 T区、C区、任务标志区、条件标志、时钟脉冲、使用变址寄存器间接寻址。 特 定 功 能 99

指令名称 或非 助记符 ORNOT 继电器号 典型梯形图 A1 一般功能 将(常开或常闭)触点(A1)和 常闭触点(A2)并联。 操作数范围 同上。 备注 同上。 A2 将触点组(块)A和触点组(块) 无 无 逻辑块与 ANDLD A B B串联。 将触点组(A块)和触点组(B A 块)并联。 逻辑块或 ORLD B 非 NOT UP UP(521) NOT(520)每个循环将执行条件取反,在非指令的右侧需接指令(执行条件)。 当输入条件从OFF →ON时,UP(521)把执行条件在一个周期内变ON。 条件通 条件断 DOWN DOWN(522) 当输入条件从ON →OFF时,DOWN(522)把执行条件在一个周期内变ON 。 100

指令名称 位测试 助记符 操作数 LDTST S N 典型梯形图 一般功能 操作数范围 CIO区、W区、H区、A区、T区、C区、DM区、无区号EM区、有进制间接DM/EM地址、BCD间接DM/EM地址、数据寄存器、使用变址寄存器间接寻址。操作数N还可以是常数#0000~#000F,即&0~&15。 备注 无 LD TST(350),AND LDTST(350) S N TST(350)和OR TST(350)指令在程序中的用途类似于LD、AND 和OR 指令,当指执行条件变为ON , 反之执行条件变为OFF 。 定字S中的指定位N为ON 时,区号EM区、二位测试 AND TST OR TST 同上。 AND TST(350) S N OR TST(350) S N 位测试 LD TSTN AND TSTN OR TSTN TSTN(351) OR S AND TSTN(351) S S LD TSTN(351), AND LD TSTN(351) TSTN(351)和OR TSTN(351)指令在程序中的用途类似于LD NOT、ANT NOT 和OR NOT 指令,当指定字S中的指定位N为ON 时,执行条件为OFF ,反之执行条件为ON 。 无 N N N 2. 几点说明

上表中指令除了列出的一般功能外,有些指令还加注前缀符号,下面分别加以说明。

(1)操作数位

上表中顺序输入指令的操作数,以位为单位进行操作,且不影响标志位。

101

(2)指令的特定功能

表中的特定功能是指这些指令具有微分和刷新功能等,其中上升沿微分的前缀标志为“@”,下降沿微分的前缀标志为“%”,刷新的前缀标志为“!”,它们还可以组合成前缀标志为 “!@”和“!%”。如加载LD指令,有@LD,%LD,!LD,!@LD,!%LD。因此,上表中的特定功能指这些指令具有@,%,!,!@,!%所规定的功能,在后面章节里,有一些只标明了其中一种,说明它只具有其中的某一种特定功能。

在指令符号前没有加前缀 “@”和“%”及其组合标志的指令,称为微分型指令。当执行条件为ON时,指令在每个循环周期都将执行。而对于微分型指令,当执行条件为OFF→ON(上升沿)或ON→OFF(下降沿)变化时,该指令只执行一次。在梯形图中,上升沿和下降沿微分指令中,通常采

A 用↑和↓符号表示,例如@LD A的梯形图可用 表示。

(3)输入指令中的UP和DOWN指令与上述上升沿微分或下降沿微分的输入指令有相似功能。 当UP(521)所接收的执行条件从OFF变为ON时,使下一个指令的执行条件变ON一个循环。当 DOWN(522)说接收的执行条件ON变为OFF时,使下一个指令的执行条件变ON一个循环。

(4)在下面的顺序输出指令中的DIFU和DIFD指令也有微分功能,且可以和刷新指令相结合。 (5)下降沿微分(%)仅LD、AND、OR和REST指令有效。为建立其他指令的下降沿微分变化,可用DIRU(014)或DOWN(522)控制工作位来控制指令的执行。

(6)对于操作数中的可用数据区CIO、W、H、A、T、C等,如果没有特别说明,均指这些区中所有的位。而任务标志区为TK0000~TK0031;时钟脉冲有0.02s、0.1s、0.2s、1s、1min时钟脉冲。DM区为D00000~D32767,无区号EM区为E00000~E32767;有区号EM区为En_00000~En_32767(n=0~C)。二进制间接DM/EM地址为D00000~D32767、E00000~E32767、En_00000~En_32767(n=0~C)。数据寄存器为DR0~DR15。BCD间接DM/EM地址为* D00000~*D32767、*E00000~*E32767、*En_00000~*En_32767(n=0~C)。

(7)常见的条件标志,如表3-2所示。

表3-2 常见的条件标志

条件标志 错误标志 访问错误标志 进位标志 大于标志 等于标志 小于标志 负标志 上溢出标志 下溢出标志 编程器标志 CX-P标志 ER AER CY > = < N OF UF P-ER P-AER P-CY P-GT P-EQ P-LT P-N P-OF P-UF P-GE P-NE 大于或等于标志 >= 不等于标志 <>

本书后面出现的特定功能以上述为参考,不再累述。

3.1.2顺序输出指令

102

1.顺序输出指令表

常用顺序输出指令,包括输出和输出非、各种置位和复位以及保持指令等,如表3-3所示。

表3-3 常用的顺序输出指令表 指令名称 输出 助记符 OUT 输出非 OUT NOT 保持 KEEP S(置位) KEEP(011) A 输出非指令,将把执行运算的结果(执行条件)取反后,再输出到指定的继电器(位),也是继电器线圈的驱动指令。 用于将输出继电器置为ON并保持。当置位端S为 ON时,KEEP(011)使B为ON,直到复位端R为 ON。当S和R同时为ON时,R端输入优先。 !KEEP !OUT NOT 典型梯形图 A 一般功能 输出指令,将把执行运算的结果(执行条件)输出到指定的继电器(位),是继电器线圈的驱动指令。 特定功能 !OUT B R(复位) 上升沿微分 DIFU 下降沿微分 DIFD 置位 SET 复位 RSET RSET B SET B DIFD(014) B DIFU(013) 当检测到执行条件从OFF→ON(上升沿)变化瞬间,!DIFU 继电器触点B(位)仅接通一个扫描周期。 当检测到执行条件从ON→OFF(下降沿)变化瞬间,!DIFD 继电器触点B(位)仅接通一个扫描周期。 注:DIFU和DIFD指令对使用次数不加限制。 当执行条件为ON时,把操作位B变为ON,并且当执行条件为OFF时,不影响操作数的状态。简单讲就是将输出继电器置为ON状态,简称置位。 当执行条件为ON时,把操作位B置为OFF,并且当执行条件为OFF时,不再影响操作数的状态。简单讲是将输出继电器置为OFF状态,简称复位。 是 是 B 多位置位 SETA SETA(530) D N1 N2 将指定连续位的数都置为ON。其中D为起始字, N1为起始位, N2为位数。即 SETA(530)将从D的N1位开始连续到N2位的数都变为ON,其他位保持不变。 @SETA 103

指令名称 多位复位 助记符 RSTA 典型梯形图 一般功能 RSTA(531)各个表示和SETA(530)一致,只是特定功能 @RSTA RSTA(531) D N1 N2 结果相反,使从D的N1位开始连续到 N2位的数都变为OFF,其他位保持不变。 当执行条件为ON时,SETB(532)将指定字中的某@SETB !SETB 单位置位 SETB SETB(532) D N 位N置为ON。当执行条件为OFF时,该位状态保持不变。它与SET指令不同,SETB(532)可用在一个DM或EM字中将某一位置为ON。其中,D为字地址,N为位(0~15)号。 这条指令用法和SETB大致相同,不同的是当执行条件为ON时,SETB(532)将指定字中的某位N置为OFF。 单位复位 RSTB RSTB(533) D N @RSTB 单位输出 OUTB N OUTB(534) D OUTB(354)将指令执行条件的状态输出给指定位。@OUTB 与OUT不同的是OUTB(534)能控制DM区或EM区。当执行条件为ON时,OUTB(534)使字D的第N位变为ON;当执行条件为OFF时,OUTB(534)使字D第N位变为OFF。 !OUTB 2. 可用数据区的说明

(1)OUT、OUT NOT指令可用的数据区有CIO区、W区、H区、A区、TR区以及可使用变址寄存器间接寻址。

(2)KEEP、DIFU、DIFD、SET和RESET指令可用的数据区有CIO区、W区、H区、A区、使用变址寄存器间接寻址,没有TR区。

(3)SETA/RSTA、SETB/RSTB、OUTB指令可用的数据区有CIO区、W区、H区、T区、C区、DM区、无区号EM区、有区号EM区、二进制间接DM/EM地址、BCD间接DM/EM地址、数据寄存器、使用变址寄存器间接寻址。特别是SETA/RSTA、SETB/RSTB、OUTB指令的操作数D在A区

104

为A448~A959,N或N1、N2在A区为A000~A959。SETB/RSTB、OUTB指令N的操作数也可以是常数,其值为0~15。SETA/RSTA的操作数N1的范围为0~15,操作数N2的范围为0~65535。

顺序输入和顺序输出指令是最基本的指令,也是最常用的指令,这些指令在所有程序中几乎都会用到。除此之外,还有顺序控制、定时器和计数器指令,它们也是PLC程序中常用的指令,下面分别加以介绍。

3.1.3 顺序控制指令

1. 顺序控制指令表

顺序控制指令包括联锁与解锁、跳转、循环以及结束指令等,如表3-4所示。 表3-4 顺序控制指令表 指 令 空操作 助记符 NOP(000) 结束 END(001) 联锁与 联锁解除 IL(002) ILC(003) 跳转与 跳转结束 JMP(004) JME(005) JMP(004) N JME(005) N 条件跳转 CJP(510) CJP(510) 典型梯形图 一般功能 此指令不执行任何操作,简称空操作。在编程时插入该指令便于程序的检查和修改。 END(001) IL(002) ILC(003) 表示主程序结束。程序最后结束时若无此指令,执行时将视为错误。 联锁IL(002) 和联锁解除ILC(003) 指令用于互锁IL(002)和ILC(003)之间的所有输出,它们总是一起使用,用于成组控制IL(002) 和ILC(003)之间的指令, 可解决分支点执行条件的存储问题。 JMP(004)是根据一个指定条件,可跳过程序中的某一个程序段。当执行条件为ON时,则程序和没有跳转指令一样运行;当条件为OFF时,则程序立即跳转到跳转结束指令之后的程序继续执行,JMP(004)与 JME(005)之间维持上一扫描周期的执行结果。 CJP(510)的用法和JMP(004)相反。当CJP(510)的执行条件为ON时,程序直接跳转至CJP(510)指令相同编号N的第一个JME(005)去执行。CJP(510)与JME(005)总是成对使用。 N 条件跳转 CJPN(511) CJPN(511) N CJPN(511)用法几乎等同于JMP(004)。当CJPN(511)的执行条件为OFF时,程序直接跳转至与CJPN(511)指令相同编号N的第一个JME(005)。CJPN(511)和JME(005)总是成对使用。 多路跳转与跳转结束 JMP0(515) JME0(516) (515)JMP0 当JMP0(515)的执行条件为OFF时,从JMP0(515)至下一个JME0(516)的所有指令都被当作是空操作NOP(000)。JMP0(515)和JME0(516)也是成对使用。在程序中使用的对数无任何限制。 JME0(516) FOR(512) N

NEXT(513) 105

循环 FOR-NEXT 退出循环 FOR(512) NEXT(513) 对FOR(512)和NEXT(513)之间的指令,重复执行指定的次数N。R然后继续执行NEXT后面的程序,可用BREAK(512)指令退出循环。FOR(512)和NEXT(513)成对使用。 BREAK(514) BREAK(514) 在FOR-NEXT(513)循环中编程,BREAK(514)指令对所给的执行条件取消循环执行。循环中余下的指令作为空操作处理。

2.可用数据区的说明

(1)END、IL/ILC、JMP0/JME0、NEXT和 BREAK指令无操作数。

(2)JMP、CJP、CJPN、FOR指令可用的数据区为CIO区、W区、H区、A区、T区、C区、DM区、有区号EM区、无区号EM区、二进制间接DM/EM地址、BCD间接DM/EM地址、常数,数据寄存器使用变址寄存器间接寻址。当这些指令的操作数为常数时,取值范围为#0000~#03FF,即&0~&1023。

(3)JME指令的操作数只能为常数,范围为#0000~#03FF,即&0~&1023。 【例3.1】 分支电路的编程方法

分支电路如图3-1(a)所示。图中A点为分支点,右侧分为三条支路,且每条支路都有触点控制,这种连接方式既不同于触点与触点的连接或逻辑块与逻辑块的连接,也不同于连续输出,因此用前面介绍的输入或逻辑等指令都不能编程,此时需要用到联锁和联锁解除指令。分析该图的功能可以看出,当000000为OFF时,000210、000211、000212都处于断电状态;当000000为ON时,000210、000211、000212的状态取决于各自支路上的控制触点。所以,将图(a)用联锁和联锁解除指令时,梯形图可修改为图(b)所示, 000000用于控制IL和ILC之间的联锁程序执行。当000000为ON时,IL(002)和ILC(003)之间的程序正常执行,相当于没有这对指令存在一样;当000000为OFF时,在IL和ILC之间的所有程序互锁,则三条支路都处于断开状态,每个线圈都处于断电状态。可见,图(a)与图(b)的功能完全一样,这种电路又称为复合输出。

0

(002) 000210 0 0

000210 0

000211 0

000211 0

000212 0 0

0 0 000212

000213 0 (003)

000213 0

(a) (b)

图3-1 IL/ILC在分支电路中的应用

几点说明:

① 不论IL前面的条件是ON或OFF,PLC都要对IL—ILC之间的联锁程序段处理,因此使

106

用该指令需要占用扫描时间;当条件000000由ON变为OFF时,IL与ILC指令之间的所有输出都被复位。

② IL和ILC指令可以成对使用,也可以用多个IL指令只配一个ILC指令,但不允许嵌套使用(如IL—IL—ILC—ILC)。在图3-2中,图(a)联锁程序实现的功能和图(b)一样,图(c)是用助记符编写的同一程序。当多个IL指令配一个ILC指令使用时,程序检查时虽然会有出错信息显示,但不影响程序的正常执行。 0 (002)

0 0 000210

000210 0 0

0

0

000210 (002)

0 000211 0 0 0 000211

0 000212 000212 0 0 000211

0

000212 (003)

图3-2 IL/ILC的应用举例

(a) (b) (c)

处理分支的梯形图还有另一种办法,即使用暂存继电器TR,暂存继电器TR共有16位,分别为TR00~TR15。TR位可用来暂时存储执行结果,如果一个TR位被设置于一个分支点处,则当前的执行结果就会被存储在指定的TR位中。例如图3-3 (a) 中梯形图存在一个分支点,用TR位来处理,其等效电路如图3-3 (b) 所示,与图 (a) 的功能完全一样,助记符见图的中间所示。一般情况下,用TR位处理,比用联锁指令处理的程序要长一些。

0 0

0

0 0 0 000210 0 000210 0 0

000210

0 000211

0 0 000211 0 0

0 000212 000211 0 0 0 000212

0

000212

(a)原电路 (b)等效电路

图3-3 用TR位处理分支的编程举例

几点说明:

① TR位只有16位,在使用次数上虽然没有限制,但在在同一程序段中,TR号不能重复使用; ② TR不是独立的编程指令,只能和LD或OUT等基本指令一起使用;

107

③ TR位不能用编程器或其他设备进行监视;

④ 直接用梯形图编程时,则不用TR,该程序能够自动执行图(a)的梯形图;如果梯形图用图(b)表示时,则会提示“会和地址混淆,TR00不允许作为符号名”。所以,图(b)是对应于图(a)的一种等效,只是为了说明问题方便。 【例3.2】 跳转指令的编程方法

如图3-4所示为 JMP(004)和JME(005)指令的应用示例

000000 LD 000000 JMP00 000001 000210 0 0 JMP00 JMP(004) 00

000001 000210 LD 000001 000211 0

OUT 000210

000002 000211 LDNOT 000002

000212 0 0 OUT 000211 000003 000212

LD 000003

000013 0 OUT 000212

JME00 JME00 JME(005) 00

(a) (b) (c)

图3-4 JMP(004)和JME(005)指令的应用示例

上例中,000000作为JMP00指令的条件,当000000为ON时,JMP和JME指令之间的程序顺序连续执行,相当于没有这对指令一样,不会发生跳转;当000000为OFF时,跳过JMP和JME指令之间的程序,即输出000210、000211和000212保持原来状态(当前值),转到JME00之外的程序去执行。在程序的梯形图中使用图(b)形式进行编程。

使用JMP和JME指令时,需注意以下几点: ① 在一个程序中可以有多组JMP和JME指令,用跳转号对其进行编号,跳转号的范围为00~1023。若跳转号不在此范围时,ER将出错(ON)。

② 跳转号00是专用跳转号。当JMP00指令的输入条件OFF时,在JMP00和JME00指令之间的程序将被扫描但是不被执行。因此,它将占用扫描时间,而其他跳转号的跳转指令在相同条件下,相应程序段不被扫描; ③ 在一个程序中,JMP00和JME00指令可以多次使用,而其他跳转号的跳转指令只能使用一次,故JMP00和JME00指令可以不成组使用,即“JMP?JMP?JME”格式。虽然这种格式在程序检查时会提示出错,但程序能够正常执行。 ④ JME(005)-JMP(004)可做循环用,在JMP(004)前用JME(005),只要JMP(004)的执行条件OFF,在JME(005)和JMP(004)间的指令会重复执行,如果执行条件不变ON或在最大循环时间内不执行结束指令END(001)会产生循环时间太长错误。

⑤ 不同的任务块之间不允许相互跳转,即JMP(004)和JME(005)必须在同一任务块中使用,否则ERR会出错(ON)。

【例3.3】 循环指令的编程方法

FOR(512)和NEXT(513)循环可以嵌套使用,且多至15级,如图3-5(a)所示为FOR(512)和NEXT(513)循环调用的举例。在这个例子中,程序段A、B和C按A→B→B→C ,A→B→B→C 和 A→B→B→C的顺序循环执行3次。

使用一个BREAK(514),则从一个FOR-NEXT循环中退出;若需要从嵌套循环中退出,则需要多

108

个BREAK(514)指令,BREAK (514)后循环中余下的指令作空操作处理。如图3-5(b)所示为BREAK(514)在多个FOR-NEXT循环指令中的运用。

图3-5(c)为循环的一个简单例子,循环程序段中将D00100的内容传给D00200中所示的地址里,然后,D00200中的内容+1。循环程序段循环了3次。

FOR FOR FOR

重复3次 #3 #3 #3

A MOV FOR #2 D00100 FOR @D002002 #2 BREAK 0 1 退出循环2 B

++ NEXT

NEXTD00200 BREAK C 退出循环1 退出循环,执行循NEXTNEXTNEXT 环外的程序。

(a) (b)

图3-5 FOR(512)和NEXT(513)循环指令的应用示例

(c)

使用循环指令FOR-NEXT时,应注意以下问题。

① 当FOR-NEXT的嵌套循环数超过15个时,错误标志ER为ON;

② FOR-NEXT循环一定要编在同一个任务中,如果这些指令不在同一个任务中,则不执行重复; ③ JMP(004)跳转指令可以在FOR-NEXT循环中执行,但它不能跳出FOR-NEXT循环;

④ 块编程指令、多重跳转和结束指令、步定义和步开始指令不能用在FOR-NEXT循环指令中。 【例3.4】 KEEP指令的应用

利用KEEP指令可以设计报警输出,如图3-6所示,图中000000、000001和000002为异常输入信号。当控制电路发生异常情况时,继电器380000工作,使输出继电器000200得电,可接通报警信号灯进行报警,直至复位(R)输入时报警才能解除。

000000 S KEEP(011)

000001 R

380000

000002

000003

380000 000200

图3-6 应用KEEP指令的梯形图程序

109

利用SETB(532)/RSTB(533)也可以和KEEP指令一样直接对操作数的位进行置位或复位,但使用时也有不同点。KEEP指令的置位和复位输入必须与这个指令一起被编入程序,而SETB(532)/RSTB(533)完全可以独立编程,并可任意次使用。

3.1.4 定时器和计数器指令

定时器和计数器的指令主要包括普通定时器、高速定时器、1ms定时器、累积定时器、长定时器、多路输出定时器和普通计数器、可逆计数器以及复位定时器/计数器。除长定时器、多路输出定时器的指令外,其他的指令都有一个定时器/计数器(编)号N。其中,1ms定时器号为0000~0015之间,其他的定时器号为0000~4095之间。在编程时,定时器号不能重叠。计数器号为0000~4095,计数器号也不能重叠。与小型机不同,CS1系列的定时器号和计数器号是各自独立编号的。

在定时方式上,除了累积定时器和多路输出定时器是递增方式之外,其他的都为递减方式。 在刷新方法上,除了可以用BCD码之外,还可以用二进制数设置。用二进制数时,只要在BCD码指令助记符的后缀加“X”字母即可。如普通定时器TIM,输入是BCD码;而TIMX(550)输入为二进制数。输入BCD码的设定值(SV)为0~9999,而二进制数的SV为0~65535。当使用二进制数指令进行计算时,其中间结果也可以直接用于定时器/计数器的SV(值)。

1.普通定时器和高速定时器

(1) 普通定时器指令TIM/TIMX(550)

普通定时器TIM/TIMX(550)是单位为0.1s的递减计数器,其梯形图如图3-7所示。

TIM TIMX(550) N N

SV SV

图3-7 普通定时器的梯形图

N 为定时器号,TIM和TIMX(550)的定时器号都为0~4095;SV为设定值,TIM的SV为0~9999,定时精度为0.1s,则定时的时间范围为0~999.9S;TIMX(550)的SV为0~65535,定时精度是0.1s,故定时范围为0~6553.5s。

在CIO区、W区、H区、A区、定时器区、DM区、无区号EM区和有区号EM区的字可以作为SV的操作数;二进制间接DM/EM地址、BCD间接DM/EM地址、常数数据寄存器、使用变址寄存器间接寻址这些数据以及常数也可以作为SV的操作数。当SV为常数时,若输入用BCD码表示,应加前缀#符号;用二进制数表示时,其前缀符号和数的范围为&0000~&65535,而用十六进制表示为#0000~#FFFF。N操作数只能是定时器区和使用寄存器区的间接寻址数据。

关于SV和N的设置涉及到标志问题,如果N通过变址寄存器间接寻址,但变址寄存器中的地址不是定时器PV的地址;或者在BCD模式下,而SV不包含BCD数据时,则ER标志都变为ON。等于标志(=)、负标志(N)为OFF。其他情况下的ER标志为OFF。

当定时器输入为OFF时,指定的定时器N被复位,即定时器当前值(PV)恢复为SV,并且完成标志位变为OFF;当定时器输入(条件)从OFF到ON时,定时器开始从PV=SV递减,只要定时器输入保持为ON,则当前值每间隔0.1s就自动减1,且连续递减;直到PV减为0000时,定时器的完成标志才变为ON;此后,PV值和完成标志状态将保持,直到重新启动定时器,即定时器输入由OFF再变ON时,

110

PV恢复为SV,重新进入定时。定时器的时序关系如图3-8所示。

ON

定时器输入 OFF

ON

定时器当前值 OFF

ON

完成标志 OFF

图3-8 普通定时器的时序图

(2) 高速定时器指令TIMH(015)/TIMHX(551)

高速定时器TIMH(015)/TIMHX(551)的梯形图如图3-9所示。

TIMHX(015) TIMH(015) N N

SV SV

图3-9 高速定时器的梯形图

高速定时器TIMH(015)和定时器TIM的符号含义相同,N是定时器号,其范围为0~4095,SV为设定值,设定范围为0~9999。它们的主要差异是定时精度不同。高速定时器TIMH(015)/TIMHX(551)的定时精度为0.01s,所以TIMH(015)的定时范围为0~99.99s,而TIMHX(551)的定时范围为0~655.35s。

高速定时器TIMH(015)的SV 和N值的操作数、功能和注意事项与普通定时器基本一致,这里不再累述。

2.其他定时器指令

(1) 1ms定时器指令TMHH(540)

1ms定时器指令是单位为1ms的递减定时器,其梯形图如图3-10所示。

TMHH(540) TMHHX(540) N N

SV SV

图3-10 1ms定时器的梯形图

这里的N与前面的定时器号不同,只能在十进制的0000~0015之间选择。SV的设定值为0~9999,则定时时间为0~9.999s;TMHHX(552)的SV为0~65535,所以它的定时范围为0~65.535s。

1ms定时器指令的基本功能与TIM指令一致,但定时器的精度为0.001s,即1ms。

1ms定时器指令的操作数SV 与TIM指令一致;操作数N也在定时器区和可使用变址寄存器间接寻址,只是范围不一样。1ms定时器指令的注意事项也与TIM 指令一致。

(2)累积定时器指令TTIM(087)

累积定时器TTIM(087)/TTIMX(555)是单位为0.1S的递增定时器,其梯形图如图3-11所示。

111

定时器输入

复位输入

TTIM(087) N 定时器输入 TTIMX(087) N SV 复位输入

SV 图3-11 累积定时器的梯形图

N的范围为0~4095,TTIM(087)的设定值SV必须为#0000~#9999。所以,其累积时间为0~999.9s。TTIMX(555) 的设定值SV必须为&0~&65535,用十六进制表示为#0000~#FFFF,其累积时间为0~6553.5s。

当定时器输入(条件)为ON,TTIM(087)开始从当前值递增。当定时器输入为OFF,定时器当前值会停止递增,但维持原值。当定时器输入又为ON,定时器在原值的基础上继续递增计时。当前值PV到达设定值SV时,则定时器完成标志变为ON。其时序关系如图3-12所示。

定时器输入

SV 定时器PV值

计时 继续

PV 保持 完成标志位

复位输入

图3-12 累积定时器的时序图

累积定时器与其他定时器的最大区别在于其输入为OFF时,PV值会维持原值,在输入再次为ON时,PV值会继续递增。这种功能可应用于许多间断定时的控制程序,可防止意外如断电时能够记忆前段的计时时间。例如在传送带操作过程中意外断电,当继续上电后,在累积定时器的控制下,传送物品可以准时传送。

(3)长定时器TIML(542)/ TIMLX(534)

长定时器TIML(542)是单位为0.1S的递减定时器,其梯形图如图3-13所示。 。 TIML(542) TIMLX(542 D1 D1

D2 D2

SV SV

图3-13 长定时器的梯形图

D1为完成标志,其中0位作为TIML(542)的完成标志,其他位不用;D2为PV字,由D2和

D2+1两个字的BCD码组成,D2和D2+1必须在同一数据区; SV字由S和S+1两个字的BCD码组成,SV和SV+1必须在同一数据区,TIML(542)的SV范围为0~99999999,而TIML(542)的SV范围

112

为#0~#99999999。因此,TIML(542)最长的定时时间可达到115天,而TIMLX(534)最长的定时时间可达49710天。

上述三者操作数可用的数据区为CIO区、W区、H区、A区、DM区、无区号EM区、有区号EM区。在这些区里,D1操作数为这些区里所有的单元,而D2和SV这些区的最高单元不可用,如D1的操作是在CIO区为0000~6143,而D2和SV则为0000~6142。另外采用二进制间接(寻址)DM/EM区、BCD间接DM/EM区和使用变址寄存器间接寻址时,都可作为这三者的操作数。对于SV,定时器区、计数器区的单元和常数也可以用作操作数。

注意:D2和D2+1中包含的PV值或SV和SV+1中包含的SV值,如果它们不是BCD码,则长定时器的错误标志(ER)为ON,其他情况都为OFF。

(4)多路输出定时指令MTIM(543)/ MTIMX(544)

多路输出定时器指令MTIM(543)/ MTIMX(544)是一个具有8个独立的SV和完成标志,单位为0.1s的递增定时器,梯形图如图3-14所示。

MTIMX(544) MTIM(543)

D1 D1

D2 D2

S S

图3-14 多路输出定时器的梯形图

D1为完成标志字,包括了8位完成标志、暂停和复位(位),其中前8位即第0位到第7位为完成标志位,第8、9位为复位和暂停位。D2为PV字,其数值范围为#0000~#9999。S为具有8个独立的SV字,其中S0~S+7的每个S字分别对应一个完成标志位,即S0对应D1中的第0位完成标志位,S+1对应D1中的第1位完成标志位,依此类推,S+7对应D1字中的第7位完成标志位。每个SV的BCD码范围为#0000~#9999。MTIMX(544)指令仅与MTIM(543)的SV范围不同而已,为&0~&65535,用十六进制表示为#0~#FFFF。

D1、D2和S的操作数可用的数据区为CIO区、W区、H区、A区、DM区、无区号EM区、有区号EM区、定时器区、计数器区。D1和D2为上述区中所有的字,而S为这些区除后面7个字的所有字。如在CIO区,D1和D2为0000~6143,而S 为0000~6136。另外二进制间接DM/EM地址,BCD间接DM/EM地址、使用变址寄存器间接寻址也可作为这三者的操作数。特别提醒的是数据寄存器DR0~DR15可作为D2的操作数,而常数不能作为这三者的操作数。

当执行条件为ON,而复位和暂停位为OFF时,MTIM(543)在D2中PV值递增(加);如果复位为OFF和暂停位为ON时,定时器则暂时停止递加PV值,并保持原值;当暂停位再次变为OFF时,MTIM(543)恢复定时,即在原来定时器定时的(保持值)基础上继续递加PV值。每次MTIM(543)执行后,PV(D2中的内容)会与S0~S+7中的8个SV相比较。如果其中一些小于或等于PV值,相应完成标志(D1位00~07)会变为ON。当PV递增到达最大值9999时,则PV自动复位到0000,并且所有的完成标志位都变为OFF。

当复位为ON时,不管暂停位如何,PV都复位到0000,所有的标志位都变为OFF,并且PV不会被更新。如果D1指定为CIO区域中的字,则可用SET和RSST指令来控制暂停和复位(位状态)。

当使用少于8个SV时,则对应最后一个被用的SV后面的字应设置为0000,MTIM(543)会忽略为SV值为0000及余下的所有SV。

多路输出定时器的PV值及完成标志都在MTIM(543)执行时刷新。多路输出定时器用在IL(002)和ILC(003)、JMP(004)和JME(005)程序时,其PV值都会被保持。用MTIM(543)时要确定完成标志和PV(D1和D2)所指定的字没有被其他指令所用,否则,定时器可能导致定时不准确。

113

3.普通计数器和可逆计数器指令

(1)普通计数器CNT/ CNTX(546)

普通计数器CNT是递减计数器,其梯形图如图3-15所示。

计数输入CP

CNT N 计数输入CP CNTX(546) N SV 复位输入R

复位输入R

SV

图3-15 普通计数器的梯形图

图中,N为计数器号,十进制数范围为0~4095,一般不能重叠,如果有两个计数器使用相同的计数器号,但并不同时使用,在程序检查时会产生一条重复错误,但不影响计数器的正常操作;SV为设置值,CNT的SV范围为0001~9999,而CNTX的SV范围为&0~&65535。

SV操作数可用的数据区规定为CIO区、W区、H区、A区、T区、DM区、EM区的所有字,都可以作为SV的操作数;另外,二进制间接DM/EM地址、BCD间接DM/EM地址、常数数据寄存器、使用变址寄存器间接寻址这些数据也可以作为SV的操作数。

计数器为递减计数。当复位端R为OFF,在CP端执行条件从OFF变ON(相当于上升沿)时,计数器从PV=SV值开始依次减计数;当计数器的当前值PV计到零时,计数器的完成标志变为ON,并一直保持ON,直到复位为止。

计数器具有断电保持功能,当电源断电时,计数器的当前值保持不变。

当SV不是BCD数或间接寻址的DM通道不存在时,ER标志位置为ON(出错)。 (2)可逆计数器指令CNTR(012)/ CNTRX(012)

可逆计数器指令的梯形图,如图3-16所示,N和SV的操作数规定与CNT指令一致。

增量输入 CNTR(012)

图3-16 可逆计数器指令的梯形图

减量输入 复位输入

N SV 增量输入 减量输入 复位输入

CNTRX(012) N SV 可逆计数器CNTR(012)有加计数端、减计数端和复位端。当加计数端有上升沿脉冲输入时,计

数器当前值加1;当到达预置值时,计数器完成标志变为ON,此时若再输入一个脉冲,则计数器复位到0000,同时标志位为OFF。当减计数端有上升沿脉冲输入时,计数器和普通计数器CNT一样,作递减计数。

若加计数端和减计数端同时加上升沿脉冲时,则计数值不变。 该计数器指令的功能表如表3-5所示。

114

表3-5 可逆计数器的功能表 增量输入 减量输入 复位输入 上升沿 OFF 上升沿 任意 OFF 上升沿 上升沿 任意 OFF OFF 0FF ON 计数器功能 加计数 减计数 不计数 预置数 完成标志位 加到预置数,置ON再加1,置OFF,计数器复位到0000。 减到0000时,置ON再减1,置OFF,计数器置设定值。 不变。 OFF。

4.复位定时器/计数器CNR(545)/ CNRX(547)

复位定时器/计数器CNR(545)的功能主要用于对指定的定时器或计数器进行复位,其梯形图如

图3-17所示。 CNRX(547) CNR(545)

N1 N1

N2 N2

图3-17 复位定时器/计数器的梯形图

图中,N1和N2都是定时器或计数器范围内的编号,N1为指定的定时器或计数器中的第一个号,N2为最后一个号。除此之外,使用变址寄存器间接寻址也可以做N1和N2的操作数。如果N1和N2通过变址寄存器间接寻址,但是变址寄存器的地址不是计数器的PV的地址是,错误标志ER为ON。

CNR(545)的功能比较简单,即复位从N1~N2所指定的所有定时器或计数器全部复位,同时所有PV值都被设置为最大值(对BCD码是9999),只在下一次定时器或计数器的指令执行时再设置为SV值。

除了长定时器TIML(550)、多路输出定时器MTIM(543)和CNR(545)本身,不能被CNR(545)指令复位之外,其他定时器和所有计数器都可以用上述指令来复位。如果N1和N2被指定为N1>N2,仅定时器/计数器的完成标志被复位。

CNR(545)指令与直接复位指令效果不一样。如TIM指令,如果被直接复位时,它们的PV值被设置为SV值;而定时器用CNR(545)复位时,PV被设置为最大值9999。

【例3.5】 延时通断控制

利用定时器指令,可实现延时接通和延时断开的控制,如图3-18所示。

当000000为ON,TIM 0001开始计时,延时5s后,000200为ON。当000000为OFF时,此时,000200保持为ON,TIMH 0002开始计时,3s后,TIMH0002为ON,即延时3s断开,从而实现延时接通或延时断开电路的控制。

115

000000 TIM

LD 000000 TIM0001

#0050 LD 000200 ANDNOT 000000 TIMH 0002 #0300 LD T0001 LD T0002 KEEP 000200

5s 3s 000000 000200 0001 #0050 000200 000000 TIMH(015) 0002 #0300 T0001 KEEP(011) T0002 000200 (a)梯形图

(b)助记符

(c)时序图

图3-18 例3.5 延时通断控制

【例3.6】 确定输出脉冲宽度

利用定时器,可以确定输出脉冲宽度,如图3-19所示。

000000 T0001 010000 LD 000000 OR 010000 ANDNOT T0001 OUT 010000

000000 000200 1.5s 1.5s 010000 010000 LD 010000 TIM TIM 0001 0001 #0015

#0015 LD 010000

010000 T0001 000200 ANDNOT T0001

OUT 00200

( a )梯形图 (b)助记符

图3-19 确定输出脉冲宽度的控制

(c)时序图

该程序中不论CIO000000为ON的时间长短,CIO000200变为ON的时间都是1.5s。如果定时时间足够短,则该电路类似微分电路。

116

【3.7】 二级计数器的举例

二级计数器的运用程序举例,如图3-20所示。 在计数器的SV高于9999时,可以用下面的例子用两个计数器组合来达到组成一个SV为20000的BCD码的计数器的目的。

000000

P_0_02s

CNT

1 2

LD 000000 AND P_0_02s

000002

00001 #0100

3 LD 000002 4 OR C0001 5 OR C0002 6 CNT 0001 #0100 7 LD C00001 8 LD 000002 9 CNT 0002 #0200 10 LD C0002 11 OUT 000202

C0001

C0002 C0001 CNT

000002

0002 #0200

C0002

000202

图3-20 二级计数器的运用程序

【例 3.8】 灯闪烁控制

应用定时器指令,可实现灯闪烁控制,其程序如图3-21所示。

图3-21 灯闪烁控制程序

000000 T0002 TIM 0001 #0010 000205 TIM 0002 #0015 T0001

000205

1 2 3 4 5

LD 000000 ANDNOT T0002 TIM 0001 LD 000205 TIM 0002

#0015

#0015 6 LD T0001 7 OUT 000205

上述例子结合两个TIM定时器指令可在执行条件为ON时,以规则的间隔使一位为ON 和OFF。只要CIO000000为ON,CIO000205会OFF为1.0s,然后再ON为1.5s。如果采用循环控制,则灯会不断闪烁发亮。

117

3.2 数据操作指令

前面介绍的指令都属于基本指令,用这些指令一般就能够组成一个简单的控制系统。但是遇到有模拟量单元或是需要进行算术运算时,就会涉及到数据操作方面的指令,下面介绍这些指令。

3.2.1数据传送指令

数据传送指令,如表3-6所示。

表3-6 数据传送指令表 指令名称 位传送 助记符 MOVB(082) @MOVB(082) MOVB(082) S C D 典型梯形图 一般功能 控制字C中最右边的两个数字指定S中的哪一位是源位,C中最左边的两个数字指定D中的哪一位是目标位。然后把S中指定位的内容拷贝给D字中指定的位,D的其余位不变。当C最左或最右边的两个数字不在00~15内时,ER标志为ON;其他情况下,ER为OFF。 字传送 单 MOV(021) 字 @MOV(021) !MOV(021) !@MOV(021) MOV(021) S D 把源地址S中的数据传送(拷贝)到目标正在传送的数据为0000时,等于标志为ON;正在传送的数据最左边为1时,负数标志为ON。其他情况的上述标志都为OFF。 双 MOVL(498) 字 @MOVL(498) MOVL(498) S D MVN(022) S D 把两个字S和S+1的数据传送到D和D+1中。指令执行后,D+1和D的内容为0000时,等于标志为ON;而当D+1最左位为1时,负数标志为ON。其他情况的上述标志都为OFF。 字取反传送 单MVN(022) 对S中的位进行取反,并把结果传送到D中。S中的内容保持不变。指令执行后, D的内容为0000时,等于标志为ON;而当D最左位为1时,负数标志为ON。其他情况的上述标志都为OFF。 双 MVNL(499) 字 @MVNL(499) MVNL(499) S D 对S和S+1中的位进行取反,并把结果传送到D+1和D中,即补码传送。S+1和S中的内容保持不变。指令执行后, D+1和D的内容为0000时,等于标志为ON;而当D+1最左位为1时,负数标志为ON。其他情况的上述标志都为OFF。 同上。 同上。 同上。 同上。 可用数据区 CIO、W、H、A、T、C、D、E区以及#、DR区和变址寄存器等。 字D中。如果S是常数,可作为数据设定。 字 @MVN(022)

118

周期后才能执行。因此,WAIT(805)称为一次循环并等待指令,可用于在块程序中逐步执行各步程序。

6. 定时器等待/高速定时器等待指令TIMW(813)/TMHW(815)

定时器等待指令TIMW(813)和高速定时器等待指令TMHW(815)的助记符,如图3-66所示。图中,当前值(PV)刷新模式为BCD码,操作数N为定时器号,范围为0000~4095的十进制数,SV为设定值,是用来设定定时时间的,设定区域为CIO区、工作区、保持位区、辅助位区、定时器区、计数器区、DM区、EM区里的值。这两条指令用于延迟执行块程序的剩余部分,直到指定的时间过去为止。当定时器时间到,将继续执行TIMW(813)/TMHW(815)指令之后的程序。

图3-66 定时器等待/高速定时器等待指令的助记符

TIMW(813)/TMHW(815)指令可在在它们之前和之后的块程序指令之间创建一个通电延时的倒计时定时器。TIMW(813)的SV设置为100ms,可在0~999.99S之间定时;TMHW(815)的SV设置为10ms,可在0~99.99S定时。这两条指令唯一区别是定时的时间范围不同。

图3-67是TIMW(813)指令在块程序暂停/重启动指令中的应用。当CIO000000为ON,块程序根据CIO000001的状态,来确定暂停对应的块程序。当CIO000001为OFF时,暂停块程序1,CIO000001为ON时,暂停块程序2。10s之后重新启动暂停的块程序。

几点说明:

(1)如果TIMW(813)/TMHW(815)不在块程序中、N 以BCD使用间接IR指定而地址不是定时器的当前值、SV不是BCD码时,这些情况都会使ER标志变为ON,其他情况下ER为OFF。

(2)如果定时器的完成标志强制置位,将执行TIMW(813) /TMHW(815)之后的剩余块程序;如果强制复位定时器完成标志,只执行块程序中的TIMW(813)/TMHW(815),直到清除强制复位状态为止。 (3)定时器处于待机状态时,0000~2047号定时器的当前值也仍然刷新。2048~4095号定时器则保持不变。 000000 BPRG(069)

00

图3-67 定时器等待指令TIMW(813)的应用

7. 计数器等待指令CNTW(814)

计数器等待指令CNTW(814)的助记符,如图3-68所示。图中,当前值(PV)刷新模式为BCD码;操作数N为计数器号,范围为0000~4095的十进制数;SV为设定值,是用来设定计数值,可在CIO区、工作区、保持位区、辅助位区、定时器区、计数器区、DM区和EM区中设定;I为计数输入端,可以是CIO区、工作区、保持位区、辅助位区、定时器区和计数器区,也可以是任务标志、条件标志和时钟脉冲。该指令用于延迟执行块程序的剩余部分,直到到达指定的计数值为止。当计数器值计满时,程序将从将CNTW(814)指令的下一条指令继续执行。

144

图3-68 计数器等待指令的助记符

CNTW(814)是一个递减计数器,用来延迟执行该指令之后的块程序指令,直到计数值计满为止。CNTW(814)设定值指定为0000~9999之间的BCD数。当执行到CNTW(814)时,完成标志复位为0,计数器预置为SV,块程序的剩余部分将等计数器计数到设定值后再执行。同时,完成标志变为ON,执行剩下的块程序。当整个块程序执行后,过程将重复。计数器往下计数时,只能通过执行CNTW(814))来刷新计数器。

图3-69是CNTW(814)的简单应用。当CIO000000为ON时,执行A块程序,等到CIO000100计数到7000时执行剩余部分的B块程序。

000000

BPRG(069) 0 A CNTW 0005

#7000 000100

B

BEND

C

图3-69 计数器等待指令的应用

几点说明: (1)如果CNTW(814)不在块程序中、N 以BCD使用间接IR指定而地址不是计数器当前值、SV不是BCD时,这些情况都会使ER标志变为ON,其他情况下ER为OFF。

(2)如果计数器的完成标志被强制置位,将执行CNTW(814)之后的块程序的剩余部分;如果计数器的完成标志强制复位,将只执行块程序中的CNTW(814)直到清除强制复位状态为止。

8. 循环控制指令 LOOP(809)/LEND(810)/LEND(810)NOT

循环控制指令的助记符如图3-70所示,图中B是位操作数,可以在CIO区、工作区、保持位区、辅助位区、定时器区和计数器区取值,也可以是任务标志、条件标志和时钟脉冲。这些指令用于创建一个循环,在位操作数变为ON(对于LEND NOT应变为OFF)时或执行条件变ON之前,重复执行该循环。

图3-70 循环控制指令的助记符

LOOP(809)指定循环程序的开始,不需要执行条件。若LEND(810)不带操作数,必须在LEND(810)之前以LD开始指定一个执行条件。不论LEND(810)是否带操作数,只要执行条件为OFF(LEND(810)NOT为ON)时,将重复循环执行LOOP(809)之后的指令;当执行条件为ON时,循环结束,并继续执行LEND(810)或LEND(810)NOT之后的指令。

145

图3-71为循环控制指令的应用示例。当CIO000000为ON时,块程序将被执行。A块程序被执行后,B块和IORF(184)之间的程序循环执行,直到CIO000001变ON为止, C块程序才被执行,最后块程序结束。

000000

BPRG(069) 0 A LOOP B IORF 0000

0000

LEND 000001

C

BEND

图3-71 循环控制指令的应用 几点说明:

(1)执行循环内的指令时不刷新I/O数据。如果必须在循环中刷新I/O数据,可使用IORF(184)来刷新。

(2)如果循环控制指令不在块程序中时,ER标志变为ON,其他情况下ER都为OFF。 (3)如果LOOP(809)不被执行,将执行NOP(空操作)过程。

(4)在设计程序时,要注意循环重复时间不得超出最大扫描时间;循环内部可使用有条件的块分支,但整个分支操作都必须在循环内;循环内不能嵌套;不能颠倒LOOP和LEND的次序。

3.4 高级指令及其他指令

CS1或CJ1的PLC指令非常丰富,除了上述的基本指令、数据操作指令和常用控制指令之外,还有高级指令和其他的控制指令。将基本指令、数据操作指令、常用控制指令结合高级指令以及其他指令一起编程,将使PLC的控制变得更加灵活、方便,控制功能更加强大。

由于CS1和CJ1的PLC各自都有近千条指令,除了上述介绍的指令之外,还有上百条的指令不能一一介绍。下面主要介绍数据控制指令、数据范围控制指令、通信网络指令、调试与错误诊断指令等几种类型。

3.4.1数据控制指令

1. PID指令/PID自动整定控制指令PID(190)/PIDA(191)

PID是由比例运算 (P)、积分运算(I)和微分运算(D)共同组合作用的简称。其中,比例作用是建立在设定值(SV)上的比例带操作,在此带内控制变量(MV)与偏差成正比,提供一个无振荡的平滑控制过程;积分作用是指对阶跃偏差的自动校正过程;比例作用和积分作用都通过控制结果进行校正,因此不可避免会产生响应滞后。微分作用弥补了这一缺陷,通过操作变量与偏差形成的斜坡(微分系数)成比例来进行控制,可加速对干扰的响应。 (1)PID控制指令PID(190)

PID(190)指令的梯形图如图3-72所示。图中,S为输入字(即输入PV值);D为输出字(即控制变量输出MV值),S和D均为16位无符号的二进制数(0~FFFFH)或十进制数(0~65535);C为参数字,具

146

有2个自由度PID控制的参数C共有39个字,其中C~C+8的9个字由用户来设置,C+9~C+38的30个字为指令工作区,用户不能占用。

该指令根据C中设定的参数实现PID控制。当执行条件为ON时,PID(190)按照C中设置的参数(设定值,PID常量等)在两个自由度上对目标值执行PID控制,从输入字S的内容中得到指定输入的数据,并根据设定参数执行PID计算,并将计算结果以操作变量的形式存入输出字D中。

PID(190)

S

C

D

图3-72 PID指令的梯形图

PID指令的应用关键是用户要设置好PID的9个控制字。其中,C字为设定值(SV)。C+1字用于设置比例带,由用户在整定时确定,取值范围为0001~270FH(或十进制数1~9999)。C+2字用于积分时间设置,由用户在整定时确定,取值范围为0001~1FFFH(或十进制数1~8189)。C+3字用于微分时间设置,由用户在整定时确定,取值范围为0000~270FH(或十进制数0~9999)。C+4字用于采用周期设置,由用户在编程时确定,取值范围为0000~270FH(或十进制数0~9999),单位为0.s。C+5字用于设置4个参数,00位用于设定比例的作用方向,为0时正向,为1时,反向;01位用于修改PID参数的设定,为0时PID参数只在执行条件的上升沿时修改,即PID在执行过程中不能修改,为1时PID参数字指令开始执行时修改;03位用于控制输出变量设定,由用户在编程时确定,为0输出0%,为1输出50%;04~15位用于滤波系数设定,由用户在整定时确定,取值只能是二进制数,范围为100~163H;2位不用。C+6字也是有4个参数设置,00~03位用于设定输出数据的位数,0是8位,1是9位,依次类推,8是16位(最多),04~07位为积分和微分单位设定,1是采样周期倍数,9是单位时间为100ms;08~11位是输入数据位数设定,0~8对应8到16位数据;12位用于对输出控制变量是否要加限位,为0无限位,为1有限位;13~15位不用。C+7用于输出变量的下限设定,当C+6的12位设定为1时该字的设定才有效,设定范围为0000~FFFFH。C+8用于输出变量的上限设定,当C+6的12位设定为1时该字的设定才有效,设定范围为0000~FFFFH。

对于缺乏实际编程经验的用户来讲,使用PID来进行参数整定很繁复。因此,若使用PIDAT自整定控制指令,将给用户的使用提供简便方法。 (2)PID自整定控制指令PIDAT(191)

PIDAT(191)指令的梯形图如图3-73所示,它与PID(190)梯形图的含义大致相同,不同的是PLC可根据需要自动计算P、I、D参数,并实现PID控制。S为输入字,D为输出字,C为参数字。参数C的设置含义从C~C+40,其中C~C+10的11个字需要用户设置,其余C+11~C+40的30个字为指令工作区,用户不可占用。

PIDAT(191) S C D

图3-73 PIDAT指令的梯形图

对于PIDAT(191)指令参数区中用户需要设置的11个字,前9个字C~C+8的设置和上述PID(190)指令的设置相同,只是PID参数(即 C+1~C+3)可以不设而由自整定功能自动设置。因此,下面简

147

要介绍C+9字~C+10字的参数设定。 C+9为自整定参数设定。其中,00~11位为自动计算增益,取值范围为001~3E8H或十进制数1~100,单位是0.01。因此,自整定增益范围为0.01~10.00,默认值为000H,对应增益为1.00。15位为自整定命令,当15位的状态由OFF变为ON(上升沿)时,开始执行自整定操作;当15位的状态由ON变为OFF(下降沿)时,则停止自整定操作。12~14位不用。C+10为限制周期迟滞。

在每一个周期自动检查C+9命令(15)位的状态。当该位为上升沿时, PIDAT(191)开始自动调整PID参数。PIDAT(191)强制使控制变量发生变化(最大值控制变量←→最小值控制变量),监视控制系统的特性。从检测特性中自动计算出PID参数,新的P、I和D参数自动存储到C+1,C+2和C+3中。此时,自动命令位变为下降沿,在C+1,C+2,C+3中,用新的参数恢复PID控制。

在PIDAT(191)执行期间,如果自动调整命令位为ON,PIDAT(191)中断用户设置常数的PID控制,完成自动调整,然后用计算好的PID常数恢复PID控制。

关于PID控制指令更详细资料及其应用示例,请见《可编程序控制器过程控制技术》有关内容。

2. 数据范围控制指令

(1)限位控制指令LMT(680)/@LMT(680)

LMT(680)指令的梯形图如图3-74(a)所示。图中,S为输入字,可用数据区有CIO、W、H、A、T、C、DM、EM、#、IR、DR以及BCD间接DM/EM地址;控制C为限位的上下限字,其中C为下限(最小输出数据)字,C+1为上限(最大输出数据)字,C和C+l必须具有相同的区域类型;D为输出字,C字和D字可用数据为CIO、W、H、A、T、C、IR、DR、DM和EM区。该指令根据输入数据是否在上、下限之间来控制输出数据。

000000

LMT(680) LMT(680)

S D00100 S C: D00200 0 0 6 4 上限100

C 0 1 2 C 下限300 D00200 C C+1: D00201 D D00300 D

(a)LMT指令的梯形图 (b) LMT指令的应用示例

图3-74 LMT指令的梯形图及其应用示例

当执行条件为ON时,LMT(680)将根据具体输入数据(有符号16 位二进制)是否在上、下限之间而控制输出数据,其操作以及对标志位的影响情况,如表3-13所示。

表3-13 LMT指令的操作以及对标志位的影响 标志名称 标志符 大于标志 等于标志 小于标志 负标志 错误标志 > = < N ER 操作情况 当S>C+1时,则C+1送到D中,且大于标志为ON;其他情况为OFF。 当D=0000H时,等于标志为ON;其他情况为OFF。 当S<C时,则C送到D中,且小于标志为ON;其他情况为OFF。 如果D最左位为1时,负标志为ON;其他情况为OFF。 如果C+1<C时,错误标志为ON;其他情况为OFF。 当C≤S≤C+1时,S送到D中;所有标志都为OFF。 图3-74(b)是限位控制指令的应用示例。图中,设控制字的下限(D00200)值为100,上限(D00201)值为300,那么在输入(D00100)为不同数据时,由表3-13可知,输出(D00300)的数据也将不同。当D00100的输入数据为0050H(80)时,由于(输入S)80<100(下限C),则将100送到D00300中,输出数据为100;当D00100的输入数据为015EH(350)时,由于350>300(上限C+1),则将300送到D00300中,输出数据为300;当D00100的输入数据为00C8H(200)时,由于(下限C)100<200(输入S)<300(上限C+1),则将200送到D00300中,输出数据为200。由此可见,输出数据限制在100~300范围之间,称为限位控制,它类似于电子线路中双向限幅器的功能。

(2)静带控制指令BAND(681)/@BAND(681)

148

本文来源:https://www.bwwdw.com/article/v3a2.html

Top