《电气控制基础与可编程控制器应用教程》课件第六章_第1页
《电气控制基础与可编程控制器应用教程》课件第六章_第2页
《电气控制基础与可编程控制器应用教程》课件第六章_第3页
《电气控制基础与可编程控制器应用教程》课件第六章_第4页
《电气控制基础与可编程控制器应用教程》课件第六章_第5页
已阅读5页,还剩569页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

6.1可编程控制器的指令结构和指令系统6.2位逻辑指令6.3定时器和计数器指令6.4数据处理功能指令6.5数据运算指令6.6控制指令思考题与习题第6章西门子S7-300系列PLC基本指令

主要内容:

(1)掌握可编程控制器的编程语言。

(2)熟练掌握利用梯形图、指令表进行电气控制设计的方法。

PLC是由取代继电器接触器控制系统开始产生和发展的。随着计算机技术的发展,PLC具有计算机控制系统的功能,例如算术运算、数据处理指令、中断等极为强大的功能。这些功能通常是通过各种功能指令的形式来实现的。实际上,现在的PLC就是一个计算机控制系统。为了满足工业控制的需要,PLC生产厂家为PLC增添了过程控制、数据处理和特殊功能的指令,这些指令称为功能指令(FunctionInstruction)。功能指令的出现,极大地拓宽了PLC的应用范围,增强了PLC编程的灵活性。功能指令的丰富程度及使用的方便程度是衡量PLC性能的一个重要指标。可编程控制器是由硬件部分和软件部分组成的。其硬件原理已经在4.5节中详细讲述过,软件可分为操作系统和用户程序两部分。操作系统是由PLC的生产厂家提供的,它用于支持和管理用户程序,所以用户只要会熟练应用即可。用户程序是用户为了完成特定的任务而编写的应用程序,所以先要知道在什么编程软件下进行自己的程序设计。对于西门子公司的SIMATICS7系列PLC,常用的编程软件是STEP7,STEP7中有丰富的S7系列PLC的编程语言,通常我们使用的是梯形图(LAD)、语句表(STL)和顺控指令(GRAPH)等,另外,还有功能块图(FDB)、标准控制语言(SCL)、状态图(HiGraph)、连续功能图(CFC)和STEP7的C语言等。在编程的过程中,用户可以选择上面所示的某一种语言进行编程,也可以利用多种语言的优点来进行混合编程,使用户的程序开发、输入和调试等工作变得极为方便。对于初学者,我们建议先从梯形图(LAD)开始学习。梯形图具有直观、简单等优点,并且在STEP7中,梯形图可以转换成为语句表(STL)和功能块图(FDB)。

在学习本章的过程中,用户可以参照第9章的内容进行实际操作或者实验,同时结合第2章~第4章进行对比学习,这样对学习该章有很大的促进作用。

可编程控制器的生产厂家很多,其型号众多,不同的可编程控制器的指令都有区别,但是其指令的内容基本是相同的。用户程序是由若干条顺序排列的指令组成的,指令是程序的最小独立单位。对于不同的编程语言,如语句表和梯形图,其指令也有所不同,分别称为语句指令和梯形图逻辑指令。尽管不同的语言的表达形式不同,但是它们表达的内容都是相同的。下面介绍S7的编程语言,即语句指令(STL)、梯形图(LAD)和功能块图(FDB)。6.1可编程控制器的指令结构和指令系统6.1.1指令简介

1.语句指令

语句指令类似于计算机中的助记符语言,是PLC的最基础的编程语言。指令表编程是用一系列指令来表达程序的控制要求。指令的格式为:

操作码[操作数]

其中,方括号表示可选用。

指令表和梯形图具有一定的对应关系。如下为一语句指令:

AI0.0//把输入继电器I0.0和其他元件串联,即“与”其中:A(是And的缩写)代表“与”,I0.0代表输入继电器0.0(I代表输入,是单词In的缩写;0.0代表继电器的序号);“//”代表注释,和C语言中的“/*”作用是相同的。我们把A称为操作码,I0.0称为操作数。每一条语句指令是由一个操作码和一个操作数(地址)组成的。操作码是必不可少的,表示了该做什么事情;操作数为具体的操作对象,可以是一符号名或绝对标志,包括常数,可编程控制器状态字中的位、符号名、数据块和数据块区域中的单元、功能FC、功能块FB、集成的系统功能SFC、集成的系统功能块SFB及其编号,地址标识符和通过地址标识符指出的存储区单元。有些指令没有操作数,如以下语句指令:

NOT//对操作结果取反,即“非”

2.梯形图逻辑指令

PLC梯形图是在继电器接触器控制电路中的继电器接触器基础上演变而来的,用图形符号进行编程,其中很多图形符号和继电器接触器电路中的元件具有对应关系。其编程思想也和继电器接触器控制电路的梯形图基本一致,所以学习起来相对要方便一些。

梯形图的内容在4.2.2节中已做过介绍,这里不再赘述。

3.功能块图

功能块图(FBD)是一种与逻辑控制电路图结构相类似的图形编程语言。它类似于“与”、“或”、“非”的逻辑电路结构的编程方式。如用“&”来表示“与”逻辑操作等。FBD使用不同功能的“盒”,其中“盒”中的符号表示各种功能,就像逻辑方块图一样,根据不同的方块逻辑来表达控制任务。这种编程方式对计算机编程不熟悉的工程师来说是相当容易的。

图6-1为逻辑功能块图。当输入“Key_1”和“Key_2”均为“1”时,输出“Green_Light”为“1”。

图6-1逻辑功能块图6.1.2数据类型

数据是程序处理和控制的对象,在程序中对所有的数据都要指定其数据结构,数据结构是数据的组织形式。数据是通过变量来传递和存储的。一个变量需要两个要素,即变量的名称和变量的数据类型。数据类型决定了数据的属性,包括其长度、取值范围等。STEP7中的数据类型有基本数据类型、复杂数据类型和参数数据类型三大类。

1.基本数据类型

STEP7中的基本数据类型有12种,现分别介绍如下:

(1)位(Bit)。位数据的数据类型为BOOL(布尔)型,如I0.0,Q0.1,M0.0,V0.1等。该类型数据长度为1位,取值只有True(或1)和False(或0),标识符为X。它常用于开关量的表示,如各种触点等,触点闭合为“1”,断开为“0”。

(2)字节(Byte)。一个字节(Byte)等于8位(Bit),其中0位为最低位,7位为最高位。如IB0(包括I0.0~I0.7位),QB0(包括Q0.0~Q0.7位),MB0(包括MB0.0~MB0.7位),VB0(包括VB0.0~VB0.7位)等。其范围为00~FF(即十进制的0~255),助记符为B。它在STEP7中的格式为B#16#0~B#16#FF。

(3)字(Word)。两个字节(Byte)组成一个字(Word),用来表示一个无符号数,因此,字为16位。如IW0是由IB0和IB1组成的,其中I是区域标识符,W表示字,0是字的起始字节。需要注意的是,字的起始字节(如上例中的“0”)都必须是偶数。字的范围为十六进制的0000~FFFF(即十进制的0~65536),助记符为W。在编程时要注意,如果已经用了IW0,则再用IB0或IB1要特别加以小心,由于IB0和IB1的地址为IW0的低8位和高8位,可能使IW0的内容发生变化。它在STEP7中的格式有以下几种:二进制表达式:2#0~2#1111_1111_1111_1111

十六进制表达式:W#16#0000~W#16#FFFF

无符号十进制表达式:B#(0,0)~B#(255,255)

BCD表达式:C#-999~C#999或C#0~C#999

(4)双字(DoubleWord)。相邻的两个字(Word)组成一个双字,用来表示一个无符号数,因此,双字为32位。如MD100是由MW100和MW102组成的,其中M是区域标识符,D表示双字,100是双字的起始字节。需要注意的是,双字的起始字节(如上例中的“100”)和字一样,必须是偶数。双字的范围为十六进制的0000~FFFFFFFF(即十进制的0~4

294

967

295)

,助记符为DW。在编程时要注意,如果已经用了MD100,则再用MW100或MW102要特别加以小心。以上的字节、字和双字数据类型均为无符号数,即只有正数,没有负数。双字长度为4字节,其表达格式如下:

二进制表达式:

2#0~2#1111_1111_1111_1111_1111_1111_1111_1111

十六进制表达式:W#16#0000_0000~W#16#FFFF_FFFF

无符号十进制表达式:B#(0,0,0,0)~B#(255,255,255,255)

(5)字符类型(Char)。字符类型用来表示ASCII字符,其长度为1字节,8位,如“A”、“a”等。

(6)单整数(Int)。单整数的长度为双字节,取值范围为-215~215-1(即-32

768~32

767)。整数为有符号数,最高位为符号位,“1”表示负数,“0”表示正数。

(7)长整数(Dint)。32位整数和16位整数一样,为有符号数,最高位为符号位,“1”表示负数,“0”表示正数。其长度为4字节,取值范围为-231~231-1(即-2

147

483

648~

2

147

483

647)。它的表达式格式为L#-2147483648~L#2147483647。

(8)实数(Real)。实数的长度为4字节,表达式格式为±3.402823E+38~±1.175495E-38,实数为32位,可以用来表示小数。实数可以表示为1.m

×

2e,且式中指数e

=

E

+

127

(1≤e≤254),为8位整数,其存储结构如图6-2所示。

图6-2实数的存储结构

(9)定时器数(S5Time)。定时器数用来设置SIMATIC时间格式,长度为2字节,16位。其表达式格式为S5T#1H_10M_10S_20MS(定时时间为1小时10分钟10秒钟20毫秒)。S5时间常数的取值范围(用特定格式表示)为S5T#0H_0M_0S_0MS~S5T#2H_46M_30S_0MS,即0ms~2h46ms30s0ms时间增量为10ms。

(10)时间数(Time)。时间数用来设置IEC时间格式(带符号),分辨率为1ms,长度为4字节,32位。其取值范围为T#-24D_20H_31M_23S_648MS~T#24D_20H_31M_23S_647MS。

(11)日期(Date)。日期用来设置IEC日期格式,分辨率为一天,长度为4字节,32位。其取值范围为D#1990_1_1~D#2168_12_31。

(12)时间数(Time_Of_Day)。时间数用来设置24小时时间格式,分辨率为1ms,长度为4字节,32位。其表达式格式为TOD#0:0:0.0~TOD#23:59:59.999。

2.复杂数据类型

复杂数据是由一些基本数据类型组合而成的复合型数据,或者是长度超过32位的数据类型。STEP7中的复杂数据类型有以下7种。

(1)日期时间数据类型(Date_And_Time)。该数据类型用于存储年、月、日、时、分、秒、毫秒和星期的数据。它占用8个字节,使用BCD编码。星期天代码为1,星期一~星期六代码分别为2~7。其取值范围为DT#1990-1-1-0:0:0.0~DT#2089-12-31-23:59:59.999。

如:DT#2004-07-16-12:30:16.200为2004年7月16日12时30分16.2秒。

(2)字符串类型(String)。字符串是由最多254个字符组成的一维数组。其最大长度为256字节,String类型的前两个字节存储字符串长度信息,因此一个String类型的数据最多包含254个字符。其常数表示形式为有两个单引号包括的字符串,如‘Abcde-300F’等。用户在定义String类型变量的时候也可以限定它的最大长度,如String[8],表示该变量最多可以包含8个字符。

(3)数组类型(Array)。将一组同一类型的数据组合在一起组成一个单位就是数组。数组的维数最大可以到6维;数组中的元素可以是基本数据类型或者附在数据类型中的任一数据类型,但是数组类型不能嵌套。数组中的每一维的上、下标取值范围为-32768~32767,同时下标须小于上标。

数组的定义必须说明数组的维数、元素类型和每一维的上、下标范围。如A[1..3,1..5,1..4]表示3×5×4的三维数组,而A[1,2,3]表示数组中的一个元素。

(4)结构类型(Struct)。将一组不同类型的数据组合在一起组成一个单位就是结构。结构类型是由不同数据类型组成的复合型数据,用来定义某一组相关的数据。如定义电机的一组数据可以用如下方式:

Motor:STRUCT

Speed:INT

Current:REAL

END_STRUCT

(5)用户定义类型(UDT)。用户定义的数据类型(User-DefinedDataTypes,UDT)是由用户将基本数据类型和复合数据类型组合在一起形成的数据类型,用在数据块(DB)和变量声明表中定义复合数据类型。同样,该类型也是由不同的数据类型组合而成的复合数据类型,UDT是一个模块,可以用来定义其他变量。它在STEP

7中也是以模块的形式存储的,称为UDT块(UDT1~UDT65535)。使用该类型数据时,在Blocks目录下单击鼠标右键,在快捷菜单中选择InsertNewObject/DataType,就可以建立一个UDT块,以后就可以将一个变量声明成为UDT类型。

(6)

FB功能块型。该数据类型仅可以在FB的静态变量区定义,用于实现多背景数据块。

(7)

SFB顺序功能块型。该数据类型同FB功能块型。

3.参数数据类型

该类型是一种用于FC或FB的参数的数据类型,是为在逻辑块之间传递参数的形参(FormalParameter,形式参数)定义的数据类型。其主要包括以下几种。

(1)

Timer/Counter:定时器/计数器类型。

(2)

BLOCK_FB/BLOCK_FC/BLOCK_DB/BLOCK_SDB:块类型。

(3)

Pointer:6字节指针类型,传递DB块号和数据地址。

(4)

Any:10字节指针类型,传递DB块号、数据地址、数据数量以及数据类型。

使用以上数据类型时,可以把定时器、计数器、程序块、数据块,甚至不确定类型和长度的数据通过参数传递给FC和FB。参数类型为程序提供了很高的灵活性,可以实现更通用的控制功能。6.1.3操作数和存储区功能

1.操作数

操作数是一条指令的地址,指一个常数或指令能找到一个数值(数据对象)的位置,指令可对该数进行操作。该地址可以是一符号名或绝对标志。地址可为下面的任意一项。

(1)常数。常数即定时器或计数器的数值,或一待装入累加器1的ASCII码字符串,见表6-1。

表6-1操作数(2)可编程控制器状态字中的位。语句表指令的地址可以是PLC状态字中的一个或多个位。指令检查并影响状态字中单个位的状态,或解释状态字中两个位的组合,如表6-2所示。

表6-2可编程控制器状态字中的位(3)符号名。在STL中仅能使用已声明过的符号名,包括已输入到符号表中的共享符号名和块中的局部名,如表6-3所示。表6-3符号名(4)数据块和数据块区域中的单元、功能(FC)、功能块(FB)、集成的系统功能(SFC)、集成的系统功能块(SFB)及编号,如表6-4所示表6-4数据块(5)地址标识符和通过地址标识符表示的存储区单元。一个地址标识符可以是以下三个基本类型之一:

①指明PLC中存储区域和该区域中数据对象大小的地址标识符,见表6-5。存储区是指令能在其中寻找到一个值(数据对象)并对它进行操作的区域(如“I”指输入过程暂存区),数值(数据对象)的大小是指令对其进行操作的长度(如“B”指字节,“W”指字,“D”指双字)。

表6-5指明存储区域和数据对象大小的地址标识符②指明一个存储区域,但没有该区域中数据对象大小的地址标识符(如一个标识符表示区域,T指定时器,C指计数器,DB指数据块,并加上这些定时器、计数器、数据块的编号),见表6-6。表6-6指明存储区,但没有数据对象大小的地址标识符③指明一个数据对象的大小,但无存储区域的地址标识符,见表6-7。其实它的存储区域已经在跟随地址标识符的存储单元中编码了存储区单元,如表6-8所示。表6-7指明数据对象大小,但无存储区域的地址标识符表6-8包括地址标识符和地址单元的地址

(6)字或双字作为数据对象的应用。如果运用一条指令的地址标识符指明可编程逻辑控制器(PLC)中的存储区域,并且它的数据对象大小是一个字或双字,则必须注意这里的存储单元总是指一个字节单元,如图6-3和6-4所示。这个字节单元是字或双字最低的字节号,如图6-4中的地址指在存储区域M中四个连续的字节,它从字节10(MB10)开始到字节13(MB13)结束。

图6-3以字节单元注明存储单元的例子

图6-4数据对象的大小双字:存储区双字MD10。

字:存储区字MW10、MW12。

字节:存储区字节MB10、MB11、MB12、MB13。

当绝对地址的宽度为字或双字时,要保证没有指定任何字节,以免造成重叠。

(7)存储器单元。地址标识符的地址属于以下两种类型之一:

①在规定存储区域中的单元(如1.0在地址I1.0中指“输入模块1,输入0位”)。

②在局部存储区域、数据区或地址寄存器中的单元(如[AR1,P#4.3]指在地址寄存器1中的数值,加上4个字节,3个位)。前面介绍了操作码和操作数,操作数是由标识符和参数组成的,如I0.0,I0.1,I0.2和Q0.0等。从控制线路来说,操作数代表了某一个或者某一组元件,和低压电器元件类似,区别是一个是软元件,一个是硬件的元件。从PLC角度来说,操作数代表了I/O口的某一个地址或者内部的某一个软元件(如中间继电器等)。从PLC内部来说,操作数表示了其在内存中的具体地址,其中标识符表示内存的某一区域,参数表示该区域中的具体位置。梯形图和语句指令中均有操作数。对于梯形图,操作数在梯形图指令符号的上方;对于语句指令,操作数在操作码的后面。在学习过程中,可以认为操作数是某一个元件。标识符由主标识符和辅助标识符构成。其中:主标识符表示元件的类型,也表示操作数在内存中的区域,如表6-9所示;辅助标识符代表操作数的位数,如一个字节或者两个字节等,对于单字节长度的标识符是没有辅助标识符的,如表6-10所示。

表6-9主标识符表6-10辅助输入标识符上面所讲到的操作数使用的是绝对地址,也就是PLC的存储区域的物理地址,该地址的参数范围可在STEP7硬件组态中直接查阅。图6-5所示为硬件地址的查阅,其中开关量输入为I124.0~I126.7,输出为Q124.0~Q125.7(注意:每一个地址代表0~7八位)。而模拟量的输入为PIW752~PIW761,计数器为C768~C783等。

图6-5STEP7硬件组态图编程人员希望使用一些有意义的符号来表示元件,如“启动按钮”和“停止按钮”等符号,这是符号地址的表示方法,该方法可以增强程序的可读性和方便的修改能力,特别是对比较大的程序更有意义。所以在编程过程中希望能够使用符号地址,符号地址必须先定义,也就是和绝对地址相对应,然后才能使用。对于不同的元件不能使用相同的符号地址,当然,作为符号地址,一方面要表示元件的具体意义,同时也要将操作数的其他信息表达清楚,方便以后更改和编程。

2.存储区

S7系列PLC的存储区分为系统存储区、装载存储区和工作存储器三个基本存储区。CPU可以通过输入/输出的映像存储区来访问对应的I/O口,所以操作数实际是I/O口的映像存储区的实际物理地址。通过对映像存储区的访问就可以访问相应的I/O口。S7系列PLC的存储区域及其功能见表6-11。

表6-11存储区域及其功能续表续表在SIMATICS7系列可编程控制器中,梯形图(LAD)可以和语句指令(STL)直接转换。另外,电气控制电路向梯形图转换是很方便的,所以本章主要讲述梯形图逻辑指令。6.1.4寻址方式

在STEP7中,操作数可以是常数、S7状态字的状态位、各种寄存器、数据块(DB)、功能块(FB和FC)、系统功能块(SFB和SFC)以及S7中的各存储区中的单元。

寻址方式是指指令如何得到操作数的各种方式,对于操作数,在指令中可以直接给出,也可以间接给出。S7有四种寻址方式,即立即寻址、直接寻址、存储器间接寻址和寄存器间接寻址。

1.立即寻址

立即寻址的指令直接跟着它要操作的数值,或者操作数本身也可直接包含在指令中。立即寻址用于对常数或者常量的寻址。如:

SET //将RLO置“1”,RLO是Resultof LogicOperation的缩写

OW W#16#A320 //将字常量W#16#A320与累加器 1“或”运算

L 30 //把整数30装入累加器1中,L是 Load的缩写

L ‘ABC’ //把ASCII码字符ABC装入累加器1中

L B#(100,12) //将字100和12装入累加器1中

L C#0100 //把BCD码常数0100装入累加器1中

2.直接寻址

直接寻址是对寄存器和存储器的直接寻址,直接寻址中直接给出操作数的存储单元地址。用于直接寻址的指令具有以下两部分的地址,它们指明指令将要处理的数值单元:地址标识符(如“IB”指输入字节)和地址标识符指明的在存储区域中确切的单元地址直接指向数值的单元。如:

A I0.0 //对输入位I0.0进行“与”逻辑操作

S L20.0 //把本地数据位L20.0置“1”,L为Local的 缩写,意为本地数据

= M0.0 //把RLO结果存于M0.0中

L IB10 //把输入字节IB10的内容装入累加器1

T DBD12 //把累加器1中的内容传送给数据双字 DBD12中

3.存储器间接寻址

存储器间接寻址指令中的存储器中的内容为操作数所在存储单元的地址,该地址也称为地址指针。用于存储器间接寻址的指令具有以下两部分的地址,它们指明指令将要处理的数值单元:地址标识符(如“IB”指输入字节)和以下指针之一:

字:包含了定时器(T)、计数器(C)、数据块(B)、功能(FC)、功能块(FB)的编号。

双字:包含了地址标识符指明的在存储区域中确切的数值单元地址,通过指针指明数值或编号的单元。字或双字应在位存储区(M)、背景数据块(DIB)、数据块(DB)和局部数据(L)的区域之中。

存储器间接寻址的好处是当程序执行时能动态地修改语句的地址。

当用一个存放在数据块中的存储器间接寻址时,必须首先用打开数据块指令(OPEN)打开数据块,这样就可以用字或双字作为一个间接地址,如:

OPENDB10

LIB[DBDZO]

又如:

AI[MD2] //对由MD2指出的输入位进行“与” 逻辑操作

=DIX[DBD2] //把RLO结果赋值给数据位,具体 数据由数据双字DBD2

//指出

LIB[DID4] //把由数据双字DID4指出的输入 字节装入累加器1中

OQ[LD3] //把本地数据双字指出的输出位进 行“或”逻辑操作

4.寄存器间接寻址

在用STL编程时,有些间接寻址类型需要使用CPU中的某些寄存器。S7中有两个地址寄存器AR1和AR2。地址寄存器的内容加上偏移量形成地址指针,该指针可以指向数据所在的存储单元。寄存器间接寻址分为区域内寄存器间接寻址和区域间寄存器间接寻址两种。如:

AI[AR1,P#4.3] //对输入位进行“与”操作, 存储单元为AR1的内容加4

//字节3位计算

TLD[AR2,P#56.0] //将累加器1的内容传送给数据双 字LD,存储单元为AR2

//内容加56字节加0位

LP#8.7 //装载指向位地址单元8.7的双字 指针至累加器16.1.5CPU的寄存器

1.累加器

S7-300系列PLC有两个32位累加器,如图6-6所示,它们是通用寄存器,用来处理位、字节、字和双字。累加器可以装载常数或装载作为地址的存储区的数据并对它们做逻辑运算,也可把累加器1中的操作结果传送到存储区单元。操作指令对其影响如下:

(1)装载指令总是影响累加器1,且把旧的内容存入累加器2。

(2)传送指令不改变累加器中的内容(除TAR1和TAR2指令之外)。

(3)

TAK指令对换累加器1和累加器2中的内容。

图6-6累加器

2.状态字

状态字表示了CPU在执行指令时的状态,有些指令的执行会影响到状态字中的某些位,同样指令的执行也会受到状态字的影响。状态字可以在位逻辑指令和字逻辑指令中访问并检测。状态字的结构如图6-7所示。

图6-7状态字的结构

1)

/FC(首次检测位)

CPU对逻辑串第一条指令的检测产生的结果存于RLO中,该结果称为首次检测结果。若该位为“0”,表示一个梯形图逻辑网络的开始或者语句指令的第一条指令。也就是说,/FC在逻辑串的开始时为“0”,在逻辑串的执行过程中为“1”,当一个逻辑串结束时(如输出或者跳转等),/FC被清0。

2)

RLO(逻辑操作结果)

该位用来存储逻辑指令或者算术比较指令的逻辑结果。RLO的状态可以表示有关信号流的信息。当RLO为“1”时,表示有信号流(接通);当RLO为“0”时,表示无信号流(断开)。RLO结果可以在定时器、计数器等上作为触发信号。

3)

STA(状态位)

该位不能用指令来检测,仅在程序测试中被CPU解释并使用。若一条指令是对存储区操作的位逻辑指令,则无论是对该位进行读或写操作,STA总是与该位的值取得一致;对不访问存储区的位逻辑指令来说,STA没有意义,此时,它总被置位为“1”。

4)

OR(或位)

在先逻辑“与”后逻辑“或”的逻辑串操作中,OR位暂存逻辑“与”的操作结果,以便进行后面的逻辑“或”运算。其他指令将OR位清0。

5)

OV(溢出位)

当一个算术运算或实数比较指令执行时出现溢出、非法操作和不规范格式时,该位被置1。若后面的算术运算或实数比较指令执行结果正常,则OV位就被清0。

6)

OS(溢出状态保持位)

当OV位被置为“1”时,OS位也被置为“1”;当OV位被清0时,OS位保持为“1”。该位用来表明先前一些指令执行中是否产生过错误。只有JOS(OS为“1”时跳转)、块调用指令和块结束指令才能使该位复位。

7)

CC1和CC0(条件码1和条件码0)

这两位结合起来表示累加器1中产生的算术运算或逻辑运算结果与0的大小关系。表6-12所示为算术运算后的结果与0比较的结果。比较指令、移位指令的状态如表6-13所示。

表6-12CC1和CC0(条件码1和条件码0)表6-13比较指令、移位指令的状态8)

BR(二进制结果位)

该位用在一段既有位操作又有字操作的程序中,以表示字操作结果是否正常。把BR位加入程序中,无论字操作结果如何,均不会使二进制逻辑链中断。在LAD的方块指令中,BR位与ENO有对应关系,用于表明方块指令是否被正确执行。当出现错误时,BR和ENO为“0”;当无错误时,BR和ENO均为“1”。

在用户编写的FB和FC中,须对BR位进行管理。当功能块正确运行时,BR位为“1”,否则为“0”。在STL和LAD的SAVE指令中,将RLO结果存入BR位中。

位逻辑指令处理两个数字,即“1”和“0”。这两个数字是构成二进制数字系统的基础,称为二进制数字或二进制位。位逻辑指令主要对BOOL类型(即“0”和“1”)的操作数进行操作,这一点和继电器接触器控制系统中的触点或者线圈等相似。在接点与线圈领域,“1”表示动作或通电,“0”表示未动作或未通电。如常闭触点在未动作前为“1”,在动作后为“0”;常开触点在得电之前为“0”,在得电以后为“1”。6.2位 逻 辑 指 令位逻辑指令扫描信号状态“1”和“0”,并根据布尔逻辑对“0”和“1”进行布尔运算等操作,经过操作后的结果也是逻辑值“0”或者“1”。结果将会置于位RLO中。逻辑运算有或、与、非及其组合。下面我们对位逻辑指令进行逐一讲解。由位逻辑指令触发的逻辑操作可执行各种类型的功能,如用位逻辑来触发定时器、计数器等。

可执行下列功能的位逻辑指令如下:

——||—— 常开触点(地址)

——|/|—— 常闭触点(地址)

——(SAVE) 将RLO存入BR存储器

XOR 位异或

——() 输出线圈

——(#)—— 中间输出

——|NOT|—— 信号流反向当RLO为1时,下列指令起作用,并执行其相应的功能:

——(S) 线圈置位

——(R) 线圈复位

SR 置位复位触发器

RS 复位置位触发器

对上升沿和下降沿有反应的指令有:

——(N)—— RLO下降沿检测

——(P)—— RLO上升沿检测

NEG 地址下降沿检测

POS 地址上升沿检测

PIB/PIW 立即读操作

PQB/PQW 立即写操作6.2.1位逻辑运算和输出指令

1.常开和常闭触点指令

常开触点指令和常闭触点指令,相当于继电器接触器系统中的常开触点和常闭触点。

常开触点指令和常闭触点指令的LAD和STL形式及功能如表6-14所示。

——||——

为常开触点指令。当该指令上方的地址中的值为“1”时,表示触点闭合。当触点闭合时,电流可以流过该元件,并且逻辑运算结果(RLO)为“1”。相反,当该指令上方的地址中的值为“0”时,表示触点断开。当触点断开时,电流无法通过该元件,并且逻辑运算结果(RLO)为“0”。

表6-14常开和常闭触点指令的形式及功能——|/|——为常闭触点指令。当该指令上方的地址中的值为“0”时,表示触点闭合。当触点闭合时,电流可以流过该元件,并且逻辑运算结果(RLO)为“1”。当该指令上方的地址中的值为“1”时,表示触点断开。当触点断开时,电流无法通过该元件,并且逻辑运算结果(RLO)为“0”。在语句指令中,这两个指令在串联使用时,使用逻辑“与”指令来表示RLO,并联使用时,使用逻辑“或”指令来表示RLO。

对于常开触点,我们通常使用A或O来表示。其中:操作码A代表逻辑“与”,是And的缩写,对应于串联的常开触点;操作码O代表逻辑“或”,是Or的缩写,对应于并联的常开触点。对于常闭触点,使用操作码AN或ON来描述。其中:AN代表逻辑“与非”,是AndNot的缩写,对应于串联的常闭触点;操作码ON代表逻辑“或非”,是OrNot的缩写,对应于并联的常闭触点。

这两个指令对状态字的影响如表6-15所示。

表6-15常开和常闭触点指令对状态字的影响

【例6-1】

图6-8所示为常开触点指令的用法。

相应的语句为:

A(

O I0.0 //并联常开触点I0.0

O I0.2 //并联常开触点I0.2

) //并联块

A I0.1 //串联触点I0.1

图6-8常开触点指令应用举例该图的逻辑关系为:当输入I0.0或者I0.2为“1”,并且I0.1为“1”时,RLO(结果)为“1”;当I0.0和I0.2都为“0”,或者I0.1为“0”时,RLO为“0”。即:RLO=(I0.0+I0.2)I0.1。

【例6-2】

图6-9所示为常闭触点指令的用法。

相应的语句为:

A(

O I0.0 //并联常开触点I0.0

ON I0.0 //并联常闭触点I0.0,和上一条指 令共同代表“1”

) //并联块

A I0.1 //串联触点I0.1

逻辑关系为:RLO=(I0.0+)I0.2。

图6-9常闭触点指令应用举例2.输出线圈指令

输出线圈指令的LAD和STL形式及功能如表6-16所示。

表6-16输出线圈指令的形式及功能——()为输出线圈指令,用来表示输出,它和继电器或接触器的线圈相似。当输出结果RLO为“1”时,表示该线圈中流过电流,输出为“1”;当RLO为“0”时,表示线圈断电,输出为“0”。该元件只能放在梯形图的最右端,并且可以使用多达16个线圈作为输出。使用——|NOT|——(翻转电流)指令可以使输出翻转,即“1”变为“0”,“0”变为“1”。在语句指令中,输出指令用符号“=”来表示。

该指令在一个被激活的MCR(主控继电器)区中,当电流流过该元件时,该元件被置位,而如果MCR区关闭,则无论是否有电流流过,该指令上的地址均为“0”。

该指令对状态字的影响如表6-17所示。表6-17输出线圈指令对状态字的影响

【例6-3】

图6-10所示为输出线圈指令的用法。

语句指令如下:

A I0.0 //串联常开触点I0.0

A I0.1 //串联常开触点I0.1

ON I0.2 //并联常闭触电I0.2

= L20.0 //输出给本地数据L20.0

A L20.0 //取L20.0

BLD 102

= Q4.0 //输出给线圈Q4.0

A L20.0 //取L20.0

A I0.3 //串联I0.3

= Q4.1 //输出给线圈Q4.1

图6-10输出线圈指令应用举例当输入I0.0和I0.1的状态均为“1”或输入I0.2的状态为“0”时,则输出信号Q4.0的状态为“1”。

当输入I0.0和I0.1的状态均为“1”或输入I0.2的状态为“0”,并且输入I0.3的状态为“1”时,则输出信号Q4.1的状态为“1”。

【例6-4】

如图2-11为三相交流异步电动机的启动、停止和保护的继电器接触器控制电路。在此用梯形图来表示。

(1)将电气控制梯形图转化为PLC梯形图,并对相应的元件分配地址。在此我们给启动按钮分配地址I0.0,给停止按钮分配地址I0.1,给接触器分配地址Q0.0,暂时不考虑保护电路。转换后的梯形图如图6-11所示。

图6-11转换后的PLC梯形图

(2)按照梯形图转化为的语句指令如下:

OI0.0 //取并联常开触点I0.0

OQ0.0 //并联常开触点Q0.0

AI0.1 //串联常闭触点I0.1

=Q0.0 //将结果赋给线圈Q0.0

注意:

Q0.0就像接触器或者继电器一样,既有线圈,又有触点。

//

表示后面为注释语句。

STEP7具有梯形图和语句指令等语言的自动转换功能。

3.将RLO存入BR存储器指令

——(SAVE)(将RLO存入BR存储器指令,也称SAVE指令)可以将RLO存储到状态字的BR位。该指令首先检查位/FC是否复位,然后将BR位的状态在下一程序段的与(AND)逻辑运算中包含。

对于在LAD、FBD、STL中的SAVE指令,因为其中任何一个指令均可能改变BR位,所以尽量不要在同一个程序块或者附属的程序块中使用SAVE指令和BR位,但是可以使用BR位来测试上一个程序块中的SAVE指令。

SAVE指令对状态字的影响如表6-18所示。

表6-18SAVE指令对状态字的影响

【例6-5】

图6-12所示为SAVE指令的用法。

语句指令如下:

A I0.0 //取常开触点I0.0

A I0.1 //串联常开触点I0.1

O I0.2 //并联常开触点I0.2

SAVE //将结果保存在BR位中

该程序将RLO的状态存储于BR位中。图6-12SAVE指令应用举例

4.异或指令XOR

该指令在语句指令中使用X来描述,在梯形图中由常开触点和常闭触点指令组合而成。

图6-13异或指令应用举例【例6-6】

如图6-13所示为异或指令XOR的用法。

语句指令如下:

AN I0.0 //取常闭触点I0.0

A I0.1 //串联常开触点I0.1

O //并联块

A I0.0 //取常开触点I0.0

AN I0.1 //串联常闭触点I0.1

= Q4.0 //输出给线圈Q4.0

或者:

AN I0.0

X I0.1

= Q4.0

则有:Q4.0

= I0.0·I0.1

+

I0.0·I0.1。

【例6-7】

设计一个楼梯灯开关,要求当行人从下到上或者从上到下时,可以在楼梯开关SB1上开灯,在SB2上关灯。

该设计可以使用自锁按钮进行设计。由逻辑关系知,输出是两个输入的逻辑“异或”。

(1)楼梯灯开关功能块图如图6-14所示。

(2)语句指令如下:

AN I0.0

X I0.1

= Q4.0

(3)楼梯灯开关梯形图如图6-13所示。

图6-14楼梯灯开关功能块图

5.中间输出指令

中间输出指令用来存储RLO的中间值,该值是该指令执行前位逻辑串的操作的结果值,当它和其他触点串联时,功能和一般触点是相同的。中间输出指令不能用于结束一个逻辑串,所以,中间输出指令不能置于逻辑串的结尾或者分支的结尾处。通过使用取反指令可以使其状态翻转。

中间输出指令对状态字的影响如表6-19所示。

表6-19中间输出指令对状态字的影响

【例6-8】

图6-15所示为中间输出指令的用法。

语句指令如下:

A I1.0 //取常开触点I1.0

A I1.1 //串联常开触点I1.1

= M0.0 //输出给中间线圈M0.0

A M0.0 //取中间线圈M0.0

A I2.2 //串联常开触点I2.2

A I1.3 //串联常开触点I1.3

NOT //结果取反

= M1.1 //输出给中间线圈M1.1

A M1.1 //取中间线圈M1.1

NOT //结果取反

= M2.2 //取中间线圈M2.2

A M2.2 //取中间线圈M2.2

= Q4.0 //输出给线圈Q4.0

其中:M0.0是I1.0和I1.1串联的结果;M1.1是I1.0、I1.1、I2.2和I1.3串联运算,再经过对结果取反的结果;M2.2是M1.1取反的结果。

图6-15中间输出指令应用举例6.取反指令

取反指令将RLO逻辑结果进行取反。

取反指令对状态字的影响如表6-20所示。表6-20取反指令对状态字的影响【例6-9】

图6-16所示为取反指令的用法。

语句指令如下:

A( //串联块

OI0.0 //并联线圈I0.0

O //并联块

AI0.1 //串联常开触点I0.1

AI0.2 //串联常开触点I0.2

)

NOT //输出取反

=Q4.0 //输出给线圈Q4.0

当输入触点I0.0为1或者I0.2和I0.1均为“1”时,输出Q4.0的结果为“0”。图6-16取反指令应用举例6.2.2置位/复位指令

置位/复位指令根据RLO的值来决定被寻址位的状态是否需要改变。如果RLO的值为“1”,则可以被置位为“1”或者被复位为“0”;如果RLO的值为“0”,则被寻址位的状态保持不变。

1.置位指令和复位指令

置位/复位指令的LAD和STL形式及功能如表6-21所示。

表6-21置位/复位指令的形式及功能置位指令只有在RLO为“1”时,将对其上方的地址置“1”,即使RLO又变为“0”,输出仍然为“1”(电流流过线圈)。这种特性称为静态置位。当RLO为“0”时,置位指令没有作用。置位指令在语句指令中使用S来标识。

复位指令只有在RLO为“1”时,将对其上方的地址复位为“0”,即使RLO又变为“1”,输出仍然为“0”。当RLO为“0”时,复位指令没有作用。复位指令在语句指令中使用R来标识。该指令上方的地址也可以是定时器或者计数器,复位后均为“0”。

置位/复位指令在一个被激活的MCR(主控继电器)区中,当电流流过该元件时,该元件被置位,而如果MCR区关闭,则无论是否有电流流过,该指令上的地址均为“0”。

置位/复位指令对状态字的影响如表6-22所示。表6-22置位/复位指令对状态字的影响【例6-10】

图6-17所示为置位指令的用法。

语句指令如下:

AI0.0 //取常开触点I0.0

AI0.1 //串联常开触点I0.1

ON

I0.2 //并联常闭触点I0.2

SQ4.0 //置位线圈Q4.0

图6-17置位指令应用举例当输入I0.0和I0.1的状态都为“1”或者输入I0.2的状态为“0”时,输出Q4.0将会变为“1”。

如果RLO为“0”(逻辑串的执行结果为“0”),则输出Q4.0保持原来的状态不变。

如果该段程序在一个被激活的MCR区中,则当MCR打开时,Q4.0的状态和上述相同;当MCR关闭时,无论是否有电流流过,Q4.0的状态均不改变。

【例6-11】

图6-18所示为复位指令的用法。

语句指令如下:

Network1 //输出线圈复位

A I0.0 //取常开触点I0.0

A I0.1 //串联常开触点I0.1

ON I0.2 //并联常闭触点I0.2

R Q4.0 //复位线圈Q4.0

Network2 //定时器复位

A I0.3 //取常开触点I0.3

R T1 //复位定时器T1

Network3 //计数器复位

图6-18复位指令应用举例

A I0.4 //取常开触点I0.4

R C1 //复位计数器C1

在梯形图6-18中,如果RLO为“0”,则输出Q4.0保持原来的状态不变。如果下面任一条件成立,即

(1)输入I0.0和I0.1的状态均为“1”;

(2)输入I0.2的状态为“0”,

则输出Q4.0将会被复位为“0”。

同样,如果输入I0.3的状态为“1”,则定时器T1将会被复位。当输入I0.4的状态为“1”时,计数器C1将会被复位为“0”。

当MCR打开时,Q4.0、T1和C1的状态与上述相同。当MCR关闭时,无论是否有电流流过,Q4.0、T1和C1的状态均不改变。

2. RS和SR触发器指令

触发器有两种,即置位优先型(SR)触发器和复位优先型(RS)触发器。如表6-23所示,其中S为置位端子(Set),R为复位端子(Reset),Q为输出端子。这两种触发器均可以用在逻辑串的最右端,用来结束一个逻辑串,或者用在逻辑串中间,用来影响右边的逻辑操作结果。

表6-23RS和SR触发器指令的功能RS和SR触发器在置位输入S为“1”时,触发器置位,输出Q为“1”,此时即使置位端子S变为“0”,输出Q仍然保持为“1”不变。只有当复位端子R为“1”时,输出Q才能复位为“0”。

如果两个端子都为“1”,则对于置位优先型触发器,S端子有效,输出置位为“1”;对于复位优先型触发器,复位端子R有效,复位为“0”。

地址中的状态和输出Q的状态相同。

同样,上述两个指令在一个被激活的MCR(主控继电器)区中,RS触发器的运行和上述相同,而如果MCR区关闭,则当前的地址单元的状态将不发生任何变化。

RS和SR触发器指令对状态字的影响如表6-24所示。

表6-24RS和SR触发器指令对状态字的影响

【例6-12】

图6-19所示为RS触发器指令的用法。

语句指令如下:

AI0.0

RM0.0

AI0.1

SM0.0

AM0.0

=Q4.0图6-19RS触发器指令应用举例如果输入I0.0的信号状态为“1”,输入I0.1的信号状态为“0”,则存储位M0.0将被复位,输出Q4.0为“0”。相反,如果输入I0.0的信号状态为“0”,输入I0.1的信号状态为“1”,则存储位M0.0将被复位,输出Q4.0为“1”。如果两个信号状态均为“0”,则无变化。如果两个信号状态均为“1”,则由于顺序之故,复位指令优先,M0.0复位,Q4.0为“0”。

如果梯形图6-19在一个激活的MCR区中,则Q4.0的状态和上述相同;如果MCR关闭,则无论输入状态如何,Q4.0不作任何变化。

【例6-13】

图6-20所示为SR触发器指令的用法。

语句指令如下:

AI0.0

SM0.0

AI0.1

RM0.0

AM0.0

=Q4.0

图6-20SR触发器指令应用举例如果输入I0.0的信号状态为“1”,输入I0.1的信号状态为“0”,则存储位M0.0将被置位,输出Q4.0为“1”。相反,如果输入I0.0的信号状态为“0”,输入I0.1的信号状态为“1”,则存储位M0.0将被复位,输出Q4.0为“0”。如果两个信号状态均为“0”,则无变化。如果两个信号状态均为“1”,则由于顺序之故,置位指令优先,M0.0置位,Q4.0为“1”。

如果指令在被激活的MCR区中,则当MCR接通时,Q4.0将如上所述被置位或复位;当MCR断开时,Q4.0将保持不变,与输入状态无关。6.2.3位测试指令

1.边沿检测指令

信号状态的变化有两种:一种是从“0”跳变为“1”,即上升沿或者正跳沿;另一种是从“1”跳变为“0”,即下降沿或者负跳沿。边沿检测将前一个扫描周期的信号状态存储起来,并且和当前的信号状态扫描结果相比较,如二者不同,则表明有跳变信号。

边沿检测指令的LAD和STL形式及功能如表6-25所示。

RLO下降沿检测指令可以检测地址从“1”到“0”的信号变化,并在操作之后显示RLO为“1”。将RLO的当前信号状态与“边沿存储位”地址的信号状态进行比较。如果操作之前地址的信号状态为“1”,并且RLO为“0”,则在操作之后,RLO将为“1”(脉冲),所有其他的情况为“0”。操作之前的RLO存储在地址中。

表6-25边沿检测指令的形式及功能

RLO上升沿检测指令可以检测地址从“0”到“1”的信号变化,并在操作之后显示RLO为“1”。将RLO的当前信号状态与“边沿存储位”地址的信号状态进行比较。如果操作之前地址的信号状态为“0”,并且RLO为“1”,则在操作之后,RLO将为“1”(脉冲),所有其他的情况为“0”。操作之前的RLO存储在地址中。

边沿检测指令对状态字的影响如表6-26所示。

表6-26边沿检测指令对状态字的影响【例6-14】

图6-21所示为边沿检测指令的用法。

在梯形图6-21中,边沿存储位M0.0存储RLO的旧状态。如果RLO的信号从“1”变为“0”,则程序跳转至标号CAS1处。

语句指令如下:

A(

AI0.0

AI0.1

OI0.2

)

FPM0.0

JCCAS1

图6-21边沿检测指令应用举例2.触点跳变沿检测指令

NEG(负跳沿检测指令)可以将“<地址1>”的信号状态与存储在“<地址2>”中的先前扫描的信号状态进行比较。如果当前的RLO状态为“0”,而先前的状态为“1”(上升沿检测),则在操作之后,RLO位将为“1”。

POS(正跳沿检测指令)可以将“<地址1>”的信号状态与存储在“<地址2>”中的先前扫描的信号状态进行比较。如果当前的RLO状态为“1”,而先前的状态为“0”(上升沿检测),则在操作之后,RLO位将为“1”。

触点跳变沿检测指令的LAD和STL形式及功能如表6-27所示。

表6-27触点跳变沿检测指令的形式及功能触点跳变沿检测指令对状态字的影响如表6-28所示。

表6-28触点跳变沿检测指令对状态字的影响【例6-15】

图6-22所示为负跳沿检测指令的用法。

语句指令如下:

AI0.0

AI0.1

AI0.2

A(

AI0.3

BLD

100

FNM0.0

)

AI0.4

=Q4.0

图6-22负跳沿检测指令应用举例在梯形图6-22中,当以下所有条件均成立时,即

①输入I0.0、I0.1和I0.2均为“1”;

②输入I0.3有负跳沿出现(下降沿);

③输出I0.4的信号状态为1,

输出Q4.0将会变为“1”。

【例6-16】

图6-23所示为正跳沿检测指令的用法。

语句指令如下:

AI0.0

AI0.1

AI0.2

A(

AI0.3

BLD100

FPM0.0

)

AI0.4

=Q4.0

图6-23正跳沿检测指令应用举例在梯形图6-23中,当以下所有条件均成立时,即

①输入I0.0、I0.1和I0.2均为“1”;

②输入I0.3有正跳沿出现(上升沿);

③输出I0.4的信号状态为1,

输出Q4.0将会变为“1”。6.2.4立即读/立即写操作

1.立即读操作

立即读(ImmediateRead)功能对于有时间限制的应用,可以以比每OB1扫描循环一次的正常情况快的速度读取一个数字量输入的当前状态。立即读功能可以在扫描立即读逻辑程序级的同时,从输入模块获得一个数字量输入的状态。否则,当I存储区使用P存储状态更新时,必须等到下一OB1扫描循环结束。为了从输入模块立即读取一个输入,应使用外围输入(PI)存储区,而不使用输入(I)存储区。外围输入存储区可以作为一个字节、一个字或一个双字来读取。因此,通过一个接点(位)元素,不能读取一个单独的数字量输入。

2.立即写操作

立即写(ImmediateWrite)功能对于有时间限制的应用,可以以比每OB1扫描循环一次的正常情况快的速度,将一个数字量输出的当前状态发送到输出模块。立即写功能可以在扫描立即写逻辑程序级的同时,将一个数字量输出写入输出模块。否则,当Q存储区使用P存储状态更新时,必须等到下一OB1扫描循环结束。为了将一个输出立即写入输出模块,应使用外围输出(PQ)存储区,而不使用输出(Q)存储区。外围输出存储区可以作为一个字节、一个字或一个双字来读取。因此,通过一个线圈元素,不能更新一个单独的数字量输出。为了将一个数字量输出的状态立即写入输出模块,包含相关位的Q存储器的字节、字或双字可以有条件地复制到相应的PQ存储器中(直接输出模块地址)。注意:

(1)由于Q存储器的整个字节被写入输出模块,当进行立即输出时,该字节中的所有输出位都将被更新。

(2)如果一个输出位在不应发送到输出模块的整个程序中出现中间状态(1/0),则立即写功能会造成危险情况(输出瞬时脉冲)。

(3)作为一般设计规则,在一个程序中,外部输出模块只能认为是一个线圈。如果遵守该设计规则,则可以避免使用立即输出时的大多数潜在问题。

【例6-17】

控制传送带。图6-24所示为一个能够控制电气启停的传送带。在传送带的起点有两个按钮开关:用于启动的S1和用于停止的S2。在传送带的尾端也有两个按钮开关:用于启动的S3和用于停止的S4。可以从任一端启动或停止传送带。另外,当传送带上的物件到达末端时,传感器S5使传送带停机。图6-24控制传动带应用举例①绝对编程和符号编程。先作一个符号表,使选择的符号与绝对值相对应(参见“STEP7在线帮助”),如表6-29所示。

表6-29控制传送带系统地址分配②控制传送带的梯形逻辑程序。

程序段1:按动一个启动开关,可以接通电机,如图6-25所示。

程序段2:按动一个停止开关或打开传送带端部的常闭接点,可以切断电机,如图6-26所示。

图6-25控制传送带程序段1图6-26控制传送带程序段2

【例6-18】

设计一个检测传送带的运动方向的指示装置。图6-27所示为一个装配有两个光电传感器(PEB1和PEB2)的传送带,传感器用来检测包裹在传送带上的移动方向。每一个光电传感器都可以像常开接点一样使用。

①绝对编程和符号编程。检测传送带系统地址分配表如表6-30所示。

图6-27检测传送带应用举表6-30检测传送带系统地址分配表②检测传送带运动方向的梯形逻辑程序。

程序段1:如果在输入I0.0上出现的信号状态从“0”变为“1”(上升沿),同时输入I0.1的信号状态为“0”,则传送带上的包裹向左移动,如图6-28所示。

程序段2:如果在输入I0.1上出现的信号状态从“0”变为“1”(上升沿),同时输入I0.0的信号状态为“0”,则传送带上的包裹向右移动。如果有一个光电传感器被遮挡,则意味着在光电传感器间有一个包裹,如图6-29所示。

图6-28检测传送带程序段1图6-29检测传送带程序段2程序段3:如果没有一个光电传感器被遮挡,则在光电传感器之间没有包裹,方向指示灯熄灭,如图6-30所示。图6-30检测传送带程序段3

6.3.1定时器指令

定时器是PLC中的重要元件,用来实现或者监控时间序列。它是由位和字组成的复合单元,其中用位来表示定时器触点的闭合和断开(即输出为“0”或“1”)。定时时间为字,存储于字存储器中,像时间继电器一样,其触点为逻辑值,有延时关断型和延时接通型两种。S7-300系列有S_PULSE(脉冲定时器)、S_PEXT(扩展脉冲定时器)、S_ODT(接通延时定时器)、S_ODTS(保持型接通延时定时器)和S_OFFDT(断开延时定时器)5种定时器方块指令及对应的5种定时器线圈指令,如表6-31所示。6.3定时器和计数器指令

表6-31定

1.定时器的组成

存储器中的定时器区域用来存储定时器的定时时间值。每一个定时器占2B,称为定时字。在S7-300系列PLC中,定时区为512B,故只能使用256个定时器。定时器的访问只能使用有关的定时器指令,其编址为T加编号,如T22、T200等。

在S7系列PLC中,定时时间值的表示方法有两种。一种是用S5中的时间表示方法来装入定时时间值,方式为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论