版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章S7-300系列PLC编程语言与基本指令系统3.1编程语言3.2指令及其结构3.3位逻辑指令3.4定时器与计数器指令3.5数据处理功能指令3.6数据运算指令3.7控制指令思考与练习题3.1s7-300/400编程语言3.1.1PLC编程语言的国际标准IEC(国际电工委员会)是为电子技术制定全球标准的世界性组织,IEC61131是PLC的国际标准。它由5部分组成:通用信息、设备要求和测试、编程语言、用户指南、通信服务规范。其中IEC61131-3是PLC的编程语言标准。STEP7是s7-300/400系列PLC编程软件,软件包中配备了三种基本编程语言1.梯形图(LAD)2.语句表(STL)3.功能块图(FBD)除此之外,选件包里提供了一些更高级的编程语言4.顺序功能图(SFC):对应于西门子的s7Graph,用来编制顺序控制程序。5.结构文本(ST):是一种专用的高级语言,类似于PASCAL和C,适合于复杂计算任务和最优化算法。6.S7HiGraph编程语言使用状态图来描述异步、非顺序过程的编程语言。系统被分为几个功能单元,每个单元呈现不同状态,各功能单元的同步信息可以在图形之间交换,需要为不同之间的切换定义转换条件,用类似于语句表的语言描述指定状态的动作和状态之间的转换条件。7.S7CFC(ContinuousFuntionChart)编程语言以图形方式连接程序库中以块的形式提供的各种功能,包括从简单的逻辑操作到复杂的闭环和开环控制等领域。编程时将这些块拷贝到图中并用线连接起来。编程语言用户类应用语句表(STL)愿意用类似于机器码语言编程的用户程序在运行时间和存贮空间要求上最优梯形图(LAD)习惯电路图的用户编写逻辑控制程序功能图(FBD)熟悉布尔代数逻辑图的用户编写逻辑控制程序SCL(结构控制语言)可选软件包用高级语言。如PASCAL或C语言编程的用户数据处理任务程序S7Graph(顺序控制)可选软件包有技术背景,没有PLC编程经验的用户以顺序过程的描述很方便S7HiGraph(状态图形)可选软件包有技术背景,没有PLC编程经验的用户以异步非顺序过程的描述很方便CFC(连续功能图)可选软件包有技术背景,没有PLC编程经验的用户适用于连续过程的描述3.1.2STEP7编程语言的程序结构为了容易阅读和理解,程序常常被分成若干部分。我们称之为块。程序包括用户块和系统块。3-1块的调用关系如下:系统启动过程中,CPU动态工作过程上电初始化程序OB100刷新过程映像输入表主程序OB1刷新过程映像输出表注:对于数字量模块不一定要进行硬件组态,而对于模拟量模块一定要进行硬件组态。数据类型决定了你以什么方式或格式理解或访问存储区中的数据。 基本数据类型:定义不超过32位的数据
复式数据类型:定义超过32位或由其它数据类型组成的数据数据类型
参数类型:定义传给FB块和FC块的参数3.1.3数据类型1.基本数据类型基本数据类型见表常数的表示可以是字节、字、或双字,也可以是十进制、十六进制ASCII或浮点数形式表示。如B#16#FF,W#16#FFFF,DW#16#FFFF_FFFF,2#1101_1010,L#+5(32位双整数)P#为地址指针常数,如P#M2.0是M2.0的地址S5T#aD_bH_cM_dS_eMS,a,b,c,d,e分别是日、小时、分、秒、毫秒的数值,时间增量是10MS。C#为计数器的常数(BCD码),如C#250B(b1,b2)、B(b1,b2,b3,b4)分别用来表示2B、4B常数。数据类型描述常用符号举例表基本数据类型BOOL位TRUE,FALSEBYTE字节B#16#FFCHAR字符‘A’WORD字W#16#FFFF,2#1111_1111_1111_1111,C#999,B(255,255)DWORD双字DW#16#FFFF_FFFFF,B(255,255,255,255)INTDINT16位定点数32位定点数REALS5TIME浮点数S5格式时间值TIMEDATEIEC格式时间值日期TIME_OF_DAY时间日期1位8位8位16位32位16位32位32位16位32位16位32位-32768~+32767-2147483648~+21474836471.234E+02S5T#0ms,S5TIME#2h46m30s(最大值)T#-24d20h31m23s6ms,TIME#24d20h31m23s6msD#1990_01_01,Date#2089_12_31TOD#00:00:00:000,TIME_OF_DAY#23:59:59.9992.复合数据类型(1)数组(ARRAY)将同一类型的数据合成一组,形成一个单元。(2)结构(STRUCT)将不同类型的数据合成一组,形成一个单元。(3)字符串(STRING)将多个字符(CHAR)组成一维数组,形成字符串。(4)其它日期和时间类型、用户定义的数据类型UDT。其中UDT类型在FB块中也常常使用。3.参数类型参数类型为逻辑块之间传递形参而设定的。(1)TIMER和COUNT,如T3,C21(2)BLOCK,如FB,FC,DB(3)POINTER(指针)指针指向一个变量的地址,即用地址作实参,如p#m50.0是指向M50.0双字地址指针。(4)ANY用于实参的数据类型未知或实参可以使用任意数据类型的情况。占用10B,如p#DB1.DBX0.0BYTE30,表示DB1中以0地址为起始地址的30个字节。4.1.3CPU的存储区装载存储器工作存储器RAM系统存储器RAM动态装载存储器RAM可保持的装载存储器FEPROM用户程序,如逻辑块,数据块位存储器,定时器,计数器局部数据堆栈,块堆栈中断堆栈,中断缓冲区过程映像I/O表装载存储器是RAM和FEPROM,用于保存不包含地址和注释的用户程序和系统数据(组态、连接和模块参数等)。有的CPU有集成装载存储器,有的可以用微存储卡(MMC)来扩展。断电时数据保存在MMC存储器中,因此数据块的内容基本上被永久保存。下载程序时,用户程序(逻辑块和数据块)被下载到CPU的装载存储器中,CPU把可执行的部分复制到工作存储器,符号表和注释保存在编程设备中。工作存储器是集成的高速存取的RAM存储器,用于存储CPU运行时的用户程序和数据,如组织块、功能块、功能、数据块。复位CPU的存储器时,RAM中的程序被清除,FEPROM中的程序不会被清除。系统存储器为用户提供的存储器组件,被划分为若干个地址区域,如过程映像输入I、过程映像输出Q、位存储器M、定时器T、计数器C、块堆栈(B堆栈)、中断堆栈(I中断)和诊断缓冲区等。S7-300PLC存储区图S7-300存储区示意图表程序可访问的存储区及功能3.2指令及其结构3.2.1指令的组成1.语句指令语句指令用助记符表示PLC要完成的操作。指令:操作码+操作数操作码用来指定要执行的功能,告诉CPU该进行什么操作;操作数内包含为执行该操作所必需的信息,告诉CPU用什么地方的数据来执行此操作。例如: AI1.0该指令是一条位逻辑操作指令,其中:“A”是操作码,它表示执行“与”操作;“I1.0”是操作数,它指出这是对输入继电器I1.0进行的操作。有些语句指令不带操作数。它们操作的对象是惟一的,故为简便起见,不再特别说明。例如: NOT//是对逻辑操作结果(RLO)取反 SET//把RLO置1。
2.梯形逻辑指令
梯形逻辑指令用图形元素表示PLC要完成操作。在梯形逻辑指令中,其操作码是用图素表示的,该图素形象表明CPU做什么,其操作数的表示方法与语句指令相同。如:例如:
该梯形图中:——()可认为是操作码,表示一个二进制赋值操作。Q0.0是操作数,表示赋值的对象。梯形逻辑指令也可不带操作数。
——|NOT|——是对逻辑操作结果取反的操作。
4.2.2操作数1.标识符及标识参数主标识符(操作数存放的存储器的区域):I、Q、PI、PQ、M、T、C、L、DB辅助标识符
(操作数的位数长度):X、B、W、D标识符
标识参数
(操作数在该存储区域内的具体位置)
操作数
注释: I:输入过程映像存储区 Q:输出过程映像存储区 PI:外部输入 PQ:外部输出 M:位存储区 T:定时器 C:计数器 L:本地数 DB:数据 X:位 B:字 W: D:双字注意:①PLC物理存储器是以字节为单位的。②当操作数长度是字或双字时,标识符后给出的标识参数是字或双字内的最低字节单元号。③当使用宽度是字或双字的地址时,应保证没有生成任何重叠的字节分配,以免造成数据读写错误。一般情况下,指令的操作数在PLC的存储器中,此时操作数由操作数标识符和参数组成。操作数标识符告诉处理器操作数放在存储器的哪个区域及操作数位数;标识参数则进一步说明操作数在该存储区域内的具体位置。操作数标识符由主标识符和辅助标识符组成。主标识符表示操作数所在的存储区,辅助标识符进一步说明操作数的位数长度。若没有辅助标识符指操作数的位数是一位。主标识符有:I(输入过程映像存储区),Q(输出过程映象存储区),M(位存储区),PI(外部输入),PQ(外部输入),T(定时器),C(计数器),DB(数据块),L(本地数据);辅助标识符有:X(位),B(字节),W(字——2字节),D(双字——4字节)。PLC物理存储器是以字节为单位的,所以存储单元规定为字节单元。位地址参数用一个点与字节地址分开。如: M10.1当操作数长度是字或双字时,标识符后给出的标识参数是字或双字内的最低字节单元号。图3.1给出了字节、字、双字的相互关系及表示方法。当使用宽度为字或双字的地址时,应保证没有生成任何重叠的字节分配,以免造成数据读写错误。图3.1以字节单元为基准标记存储器存储单元位存储区M表3.2存储区及其功能
表3.2存储区及其功能
2.操作数的表示法
操作数的表示法物理地址(绝对地址)符号地址(必须先定义后使用,而且符号名必须是唯一的)关于定义符号地址的几点说明:当你在表中输入符号地址时,应注意以下几点:
列注意符号在整个符号表中名字必须唯一。当你确认该区域的输入或退出该区域时,不唯一的符号则被标定出来。符号名最长可达24个字符。引号(“”)不允许使用。地址当你确认该区域的输入或退出该区域时,程序会自动检查该地址输入是否是允许的。数据类型当你确认或退出地址时,该区域被自动地赋予一个缺省数据类型。如果你修改这个缺省类型,程序会检查你的数据类型是否与地址相匹配。注释你可以输入注释简单地解释该符号的功能(最多80个字符)。在STEP7中,操作数有两种表示方法:一是物理地址(绝对地址)表示法;二是符号地址表示法。为一个物理地址定义有意义的符号名,可使程序的可读性增强,降低编程时由于笔误而造成的程序错误。用物理地址表示操作数时,要明确指出操作数的所在存储区,该操作数的位数具体位置。例如:Q4.0是用物理地址表示的操作数,其中Q表示这是一个在输出过程映像区中的输出位,具体位置是第四个字节的第0位。STEP7允许用符号地址表示操作数,如Q4.0可用符号名MOTOR_ON替代表示,符号名必须先定义后使用,而且符号名必须是惟一的,不能重名。定义符号时,需要指明操作数所在的存储区,操作数的位数、具体位置及数据类型。3.局域(块定义)符号和共享符号共享符号局域符号有效性•在整个用户程序中有效•可以被所有的块使用•在所有的块中含义是一样的•在整个用户程序中是唯一的•只在定义的块有效•相同的符号可在不同的块中用于不同的目的允许使用的字符•字母、数字及特殊字符。•除0X00,0XFF及引号以外的强调号•如使用特殊字符,则符号须写出在引号内。•字母•数字•下划线(_)(注意:不允许使用两个连续的下划线)使用你可以为以下各项定义共享符号:•I/O信号(I,IB,IW,ID,Q,QB,QW,QD)•I/O输入与输出(PI,PQ)•存储位(M,MB,MW,MD)•定时器(T)/计数器(C)•逻辑块(FB,FC,SFB,SFC)•数据块(DB)•用户定义数据类型(UDT)•变量表(VAT)你可以为以下各项定义局域符号:•块参数(输入,输出和输入输出参数)•块的静态数据•块的临时数据在哪里定义符号表块的变量声明表•符号表中定义的符号(共享)显示在引号内。•块变量声明表中的符号(局域)显示时前面加上“#”。提示:使用菜单命令View>Display>SymbolicRepresentation,你可以在所有声明的符号地址和绝对地址之间进行切换。3.2.3寻址方式操作数是指令的操作或运算对象。所谓寻址方式是指令得到操作数的方式,可以直接给出或间接给出。可用作STEP7指令操作对象的有:常数;S7状态字中的状态位;S7的各种寄存器、数据块;功能块FB,FC和系统功能块SFB,SFC;S7的各存储区中的单元。S7有四种寻址方式,它们分别是:立即寻址、存储器直接寻址、存储器间接寻址和寄存器间接寻址。立即寻址:操作数本身直角接包含在指令中直接寻址:指令中直接给出操作数的存储单元地址
存储器间接寻址寄存器间接寻址
S7寻址方式
1.立即寻址这是对常数或常量的寻址方式。操作数本身直接包含在指令中。有些指令中的操作数是惟一的,为方便起见不再在指令中特别写出。下面是立即寻址的例子:SET //把RLO置1OWW#16#A320//将常量W#16#A320与累加器1“或”运算L27//把整数27装入累加器1L'ABCD'//把ASCII码字符ABCD装入累加器1LC#0100//把BCD码常数0100装入累加器1
2.直接寻址包括对寄存器和存储器的直接寻址。在直接寻址的指令中,直接给出操作数的存储单元地址。例如:AI0.0//对输入位I0.0进行“与”逻辑操作SL20.0//把本地数据位L20.0置1=M115.4//使存储区位M115.4的内容等于RLO的内容LIB10//把输入字节IB10的内容装入累加器1TDBD12//把累加器1中的内容传送给数据双字DBD12中
3.存储器间接寻址在存储器间接寻址的指令中,给出一个存储器(必须是表3.1中的存储器),该存储器的内容是操作数所在存储单元的地址,该地址又被称为地址指针。存储器间接寻址方式的优点是,当程序执行时,能改变操作数的存储器地址,这对程序中的循环尤为重要。以下是使用存储器双字指针间接寻址的例子:AI[MD2]//对由MD2指出的输入位进行“与”逻辑操作。如:MD2的值为//2#00000000000000000000000001010110,则是对I10.6进行“与”操作。=DIX[DBD2]//将RLO赋值给数据位,具体数据由数据双字DBD2指出。LIB[DID4]//将由数据双字DID4指出的输入字节装入累加器1。如:DID4的值为2#000000000000000000000000//01010000,则是对IB10进行装入操作。OQ[LD3]//对由本地数据双字指出的输出位进行“或”逻辑操作。依据要描述的地址复杂程度,地址指针可以是字或双字的,存储指针的存储器大小也应是字的或双字的,由于定时器(T)、计数器(C)、数据块(DB)、功能块(FB或FC)的编号范围在0到65535之内,所以用字指针就足够了,相应的也只需字存储器存储指针。其它的地址,如:输入位、输出位,则要用到双字指针,并用双字存储器存储指针。指针的两种格式如图3.2所示。如果要用双字格式的指针访问一个字、字节或双字存储器,必须保证指针中的位编号为0。图3.2存储器间接寻址的指针格式位3至18(范围0至65535):被寻址字节的字节编号 位0至2(范围0至7):被寻址位的位编号下面的例子显示如何产生字或双字指针并用其寻址:L+5//将整数+5装入累加器1TMW2//将累加器1的内容传送给存储字MW2,此时MW2的内容为5OPNDB[MW2]//打开由MW2指出的数据块,即,打开数据块5LP#8.7//将2#00000000000000000000000001000111(二进制数)装入累加器1TMD2//将累加器1的内容传送给存储字MD2,此时MD2的内容为//2#00000000000000000000000001000111LP#4.0//将2#00000000000000000000000000100000装入累加器1,累//加器1原内容被装入累加器2+I//将累加器1和累加器2内容相加,在累加器1中得到的“和”为 //2#00000000000000000000000001100111TMD4//将累加器1的当前内容传送给存储字MD4AI[MD2]//对输入位I8.7进行“与”逻辑操作=Q[MD4]//将RLO赋值给输出位Q12.7
4.寄存器间接寻址在S7中有两个地址寄存器,它们是AR1和AR2。通过地址寄存器,可以对各存储区的存储器内容实现寄存器间接寻址。地址寄存器的内容加上偏移量形成地址指针,该指针指向数值所在的存储单元。地址寄存器存储的地址指针有两种格式,其长度均为双字。图3.3给出了这两种格式的细节及其差别。其中,第一种地址指针格式包括被寻址数值所在存储单元地址的字节编号和位编号,至于对哪个存储区寻址,则必须在指令中明确直接给出。这种指针格式适用于在确定的存储区内寻址,即区内寄存器间接寻址。而第二种地址指针格式中还包含了数值所在存储区的说明位(存储区域标志位),这样,就可通过改变这些位,实现跨区寻址,这种指针格式用于区域间寄存器间接寻址。区域标识位的组合状态见表3.2。图3.3寄存器间接寻址的指针格式3124231615870位31=0表明是区域内寄存器间接寻址;=1表明是区域间寄存器间接寻址。位24、25和26(rrr):区域标识(见表3.2)位3至18(bbbbbbbbbbbbbbbb):被寻址位的字节编号(范围0至65535)位0至2(×××):被寻址的位编号(范围0至7)表3.3地址指针区域标识位含义如果要用到寄存器指针格式访问一个字节、字或双字,则必须保证指针中位地址编号为0。下面的例子分别说明如何使用这两种指针格式实现间接寻址:LP#8.6//将2#00000000000000000000000001000110装入累加器1LAR1//将累加器1的内容传送至地址寄存器1AI[AR1,P#0.0]//地址寄存器1加偏移量结果为2#0000000000000000//////0000000001000110,指明是对输入位I8.6进行“与”操作=Q[AR1,P#4.1]//地址寄存器1加偏移量结果为2#0000000000000000//////0000000001100111,指明对输出位Q12.7进行赋值操作LP#8.0//将2#00000000000000000000000001000000装入累加器1LAR2//将累加器1的内容传送至地址寄存器2LIB[AR2,P#2.0]//将输入字节IB10的内容装入累加器1TMW[AR2,P#200.0]//将累加器1的内容传送至存储字MW208LP#I8.7//将2#10000001000000000000000001000111装入累加器1LAR1//将累加器1的内容传送至地址寄存器1LP#Q8.7//将2#10000010000000000000000001000111装入累加器1LAR2//将累加器1的内容传送至地址寄存器2A[AR1,P#0.0]//对输入位I8.7进行“与”逻辑操作=[AR2,P#1.1]//赋值给输出位Q10.0LP#I8.0//将输入位I8.0的双字指针装入累加器1LAR2//将累加器1的内容传送至地址寄存器2LP#M8.0//将存储位M8.0的双字指针装入累加器1LAR1//将累加器1的内容传送至地址寄存器1LB[AR2,P#2.0]//把输入字节IB10装入累加器1,输入字节10为8(AR2)加2(偏移量)TD[AR1,P#56.0]//把存储双字MD64装入累加器1,存储双字64为8(AR1)//加56(偏移量)3.2.4状态字状态字用于表示CPU执行指令时所具有的状态。一些指令是否执行或以何方式执行可能取决于状态字中的某些位;执行指令时也可能改变状态字中的某些位;你也能在位逻辑指令或字逻辑指令中访问并检测它们。图3.4显示了状态字的结构。图3.4状态字的结构159876543210(1)首次检测位(FC)状态字的位0称为首次检测位。若FC位的状态为0,则表明一个梯形逻辑网络的开始,或指令为逻辑串第一条指令。CPU对逻辑串第一条指令的检测(称为首次检测)产生的结果直接保存在状态字的RLO位中,经过首次检测存放在RLO中的0或1被称为首次检测结果。FC位在逻辑串的开始时总是0,在逻辑串指令执行过程中FC位为1,输出指令或与逻辑运算有关的转移指令(表示一个逻辑串结束的指令)将FC清0。(2)逻辑操作结果(RLO)状态字的位1称为逻辑操作结果RLO(ResultofLogicOperation)。该位存储位逻辑指令或算术比较指令的结果。在逻辑串中,RLO位的状态能够表示有关信号流的信息。RLO的状态为1,表示有信号流(通);为0,表示无信号流(断)。可用RLO触发跳转指令。(3)状态位(STA)状态字的位2称为状态位。状态位不能用指令检测,它只是在程序测试中被CPU解释并使用。如果一条指令是对存储区操作的位逻辑指令,则无论是对该位的读与写操作,STA总是与该位的值取得一致;对不访问存储区的位逻辑指令来说,STA没有意义,此时它总被置为1。(4)或位(OR)状态字的位3称为或位(OR)。在先逻辑“与”后逻辑“或”的逻辑串中,OR位暂存逻辑“与”的操作结果,以便进行后面的逻辑“或”运算。其它指令将OR位清0。(5)溢出位(OV)状态字的位4称为溢出位,溢出位被置1,表明一个算术运算或浮点数比较指令执行时出现错误(错误:溢出、非法操作、不规范格式)。后面的算术运算或浮点数比较指令执行结果正常的话OV位就被清0。(6)溢出状态保持位(OS)状态字的位5称为溢出状态保持位(或称为存储溢出位)。OV被置1时OS也被置1;OV被清0时OS仍保持。所以它保存了OV位,可用于指明在先前的一些指令执行中是否产生过错误。只有下面的指令才能复位OS位:JOS(OS=1时跳转);块调用指令和块结束指令。(7)条件码1(CC1)和条件码0(CC0)状态字的位7和位6称为条件码1和条件码0。这两位结合起来用于表示在累加器1中产生的算术运算或逻辑运算结果与0的大小关系;比较指令的执行结果或移位指令的移出位状态。详见表3.4和表3.5。表3.4算术运算后的CC1和CC0表3.5比较、移位和循环移位、字逻辑指令后的CC1和CC0(8)二进制结果位(BR)状态字的位8称为二进制结果位。它将字处理程序与位处理联系起来,在一段既有位操作又有字操作的程序中,用于表示字操作结果是否正确(异常)。将BR位加入程序后,无论字操作结果如何,都不会造成二进制逻辑链中断。在LAD的方块指令中,BR位与ENO有对应关系,用于表明方块指令是否被正确执行:如果执行出现了错误,BR位为0,ENO也为0;如果功能被正确执行,BR位为1,ENO也为1。在用户编写的FB和FC程序中,必须对BR位进行管理,当功能块正确运行后使BR位为1,否则使其为0。使用STL指令SAVE或LAD指令——(SAVE),可将RLO存入BR中,从而达到管理BR位的目的。当FB或FC执行无错误时,使RLO为1并存入BR,否则,在BR中存入0。3.3位逻辑指令位逻辑指令主要包括位逻辑运算指令、位操作指令和位测试指令,它们可以对布尔操作数(BOOL)的信号映态扫描并完成逻辑操作。逻辑操作结果(RLO)用以赋值、置位、复位布尔操作数,也控制定时器和计数器的运行。3.3.1位逻辑运算指令位逻辑运算指令是“与”(AND)、“或”(OR)、“异或”(XOR)指令及其组合。它对“0”或“1”这些布尔操作数扫描,经逻辑运算后将逻辑操作结果送入状态字的RLO位。语句指令助记符指令指令前RLO地址状态RLO结果A与001101010001AN与非001101010010O或001101010111布尔逻辑串内的真值表(根据下列表可以确定第二条布尔位操作后的RLO)ON或非001101011011X异或001101010110XN异或非001101011001助记符指令地址状态RLO结果A与0101AN与非0110O或0101ON或非0110X异或0101XN异或非0110布尔逻辑串开始的真值表梯形图逻辑指令常开接点(动合触点)元素和参数常闭接点(动断触点)元素和参数
1.“与”和“与非”(A,AN)指令
逻辑“与”在梯形图里是用串联的触点回路表示的,被扫描的操作数则表示为触点符号,操作数标在触点上方。如果触点是常开触点(动合触点),则对“1”扫描相应操作数。在PLC中规定:若操作数是“1”,则常开触点“动作”,即认为是“闭合”的;若操作数是“0”,则常开触点“不动作”,即触点仍然打开。如果触点是常闭触点(动断触点),则对“0”扫描相应操作数。在PLC中规定:若操作数是“1”,则常闭触点“动作”,即触点“断开”;若操作数是“0”,则常闭触点“不动作”,即触点仍保持闭合。如果串联回路里的所有触点皆闭合,该回路就通“电”了。在图3.5的回路中,如果所有触点闭合,即当输入I0.0和输出Q4.1的信号状态都是“1”(触点闭合)、且位存储器M10.1为“0”(该触点仍保持原闭合位置)时,输出Q4.0才为“1”;如果有一个或多个触点是打开的,则输出Q4.0的信号状态就为“0”(继电器触点打开)。上述梯形逻辑图,可用语句表指令完全表示。对应的语句表为:AI0.0AQ4.1ANM10.1=Q4.0图3.5“与”逻辑梯形图()I0.0Q4.1M10.1Q4.0在上面的语句表中,操作数是被依次扫描的,其扫描的结果再逻辑“与”。对信号状态进行“1”扫描,并做逻辑”与”运算,则用助记符“A”来标识,相关的操作数指定了要扫描对象。当操作数的信号状态是“1”时,其扫描结果也是“1”。如果操作数的信号状态是“0”,则扫描结果也是“0”。对信号状态进行“0”扫描,并做逻辑“与”运算,则用助记符“AN”来标识取反的“与”逻辑操作.当操作数的信号状态是“0”时,其扫描结果就是“1”。如果操作数的信号状态是“1”,则扫描结果就是“0”。在第一条语句里,CPU扫描的是输入I0.0本次扫描也被称为首次扫描。首次扫描的结果被直接保存在RLO(逻辑操作结果)中,在下一条语句中,扫描操作数输出Q4.1;这次扫描的结果和RLO中保存的上一次结果相“与”,产生的新结果再存入RLO。如此逐一进行,在逻辑序列结束处的RLO可用作进一步处理。例如,用来激励一个输出信号。在上面的语句表中,把RLO的值赋给输出Q4.0(=Q4.0)。
2.“或”和“或非”(O,ON)指令逻辑“或”在梯形图里是用并联的触点回路表示的,被扫描的操作数标在触点上方。在触点并联的情况下,若有一个或一个以上的触点闭合,则该回路就“通电”。在图3.6中,驱动信号通过并联触点回路加到输出Q4.1。只要有一个触点闭合,输出4.1的信号状态就为“l”。如果所有的触点都是打开的,则输出Q4.1就为“0”。在图3.6中,仅当输入I1.1和输出Q4.0两者都为“0”,且M2.0为“1”时,输出Q4.1才为“0”。图3.6“或”逻辑梯形图I1.1M2.0Q4.0()Q4.1上述梯形逻辑图,也可用语句表指令表示。对应的语句表为:OI1.1ONM2.0OQ4.0=Q4.1在上面的语句表中,操作数是依次被扫描的,其扫描的结果再逻辑“或”。对信号状态进行“1扫描,并做逻辑“或”运算,用助记符“O”来标识。当操作数的信号状态是“1”时,其扫描结果也是“1”。对信号状态进行“0”扫描,并做逻辑“或”运算,则用助记符“ON”来标识取反的“或”逻辑操作.当操作数的信号状态是“0”时,其扫描结果就是“1”。如果操作数的信号状态是“1”,则扫描结果就是“0”。在第一条语句里,处理器扫描的是输入I1.1.首次扫描的结果被直接保存在RLO中,并和下一条语句的扫描结果相“或”,产生的新结果再存入RLO。如此逐一进行,在逻辑序列结束处的RLO可用作进一步处理。例如,用来激励一个输出信号。在上面的语句表中,把RLO的值赋给输出Q4.1。
3.“异或”和“异或非”(X,XN)指令图3.7是“异或”逻辑梯形图,下面是与梯形图对应的语句表。在的语句表中,使用了“异或”和“异或非”指令,分别用助记符“X”和“XN”来标识。它类似“或”和“或非”指令,用于扫描并联回路能否“通电”。XI1.0XNI1.1=Q4.0当执行语句表中的第一条指令时,首次扫描的结果被直接保存在RLO中,然后RLO中的值和第二条指令的扫描结果进行“异或”操作,得到的新结果再存入RLO。如此扫描、“异或”并刷新RLO,直到赋值指令将RLO的值赋给输出Q4.0。图中,仅当两个触点(输入I1.0和输入I1.1)的扫描结果不同,即只有一个为“1”时,RLO才为“1”,并赋值给输出使Q4.0为“1”。若两个信号的扫描结果相同(均为“1”或“0”),则Q4.0为“0”。与O和ON比较,X和XN排除了两个信号扫描结果为“1”时,使输出为“1”的可能。图3.7“异或”逻辑梯形图3.3.2位操作指令1.输出指令逻辑串输出指令又称为赋值操作指令,该操作把状态字中RLO的值赋给指定的操作数(位地址)。若RLO为“1”,则操作数被置位,否则操作数被复位。表3.5列出了操作数的数据类型和所在的存储区。逻辑串输出指令通过把首次检测位(FC位)置0,来结束一个逻辑串。当FC位为0时,表明程序中的下一条指令是一个新逻辑串的第一条指令,CPU对其进行首次扫描操作。这一点在梯形图中显示得很清楚。表3.6输出指令LAD输出指令像继电器逻辑图中的线圈一样工作。如果电流能够流经电路到达线圈(即RLO为1)的话,则继电器线圈通电,其常开触点闭合,否则线圈不通电,常开触点断开。在LAD中,只能将输出指令放在逻辑符号串的最右端,但其前面必须有链路,不能将输出指令单独放在一个空网络中。一个RLO可被用来驱动几个输出元件。在LAD中,输出线圈是上下依次排列的。在STL中,与输出信号有关的指令被一个接一个地连续编程,这些输出具有相同的优先级。图3.8是多重输出梯形图,与之对应的语句表如下:AI0.0AI0.1ONI0.2=Q4.0AI0.3=Q4.1图3.8是多重输出梯形图中间输出指令在存储逻辑中,用于存储RLO的中间值,该值是中间输出指令前的位前的逻辑操作结果。在与其它触点串联的情况下,中间输出与一般触点的功能一样。中间输出指令不能用于结束一个逻辑串,因此,中间输出指令不能放在逻辑串的结尾或分支的结尾处,图3.9是中间输出梯形图。从图3.9中可以看出,中间输出指令能够在位操作逻辑串中驱动等效继电器,并影响继电器的触点状态。这使得梯形图可以多级输出,从而提高了编程效率。图3.9中间输出
2.置位/复位指令置位/复位指令根据RLO的值,来决定被寻址位的信号状态是否需要改变。若RLO的值为1,被寻址位的信号状态被置1或清0;若RLO是0,则被寻址位的信号保持原状态不变。置位/复位指令有关内容见表3.6。对于置位操作,一旦RLO为1,则被寻址信号(输出信号)状态置1,即使RLO又变为0,输出仍保持为1;对于复位操作,一旦RLO为1,则被寻址信号(输出信号)状态置0,即使RLO又变为0,输出仍保持为0;这一特性又被称为静态的置位/复位,相应地,赋值输出被称为动态赋值输出。置位/复位指令也用于结束一个逻辑串,因此,在LAD中置位/复位指令要放在逻辑串的最右端,而不能放在逻辑串中间。复位指令还可用于复位定时器和计数器。表3.7置位/复位指令(S)图3.10置位/复位指令(a)复位指令操作
3.RS触发器RS触发器梯形图方块指令表示见表3.8。方块中标有一个置位输入(S)端,一个复位输入(R)端,输出端标为Q。触发器可以用在逻辑串最右端,结束一个逻辑串,也可用在逻辑串中,影响右边的逻辑操作结果。表3.8RS触发器如果置位输入为1,即有电加到S端,则触发器置位。此时,即使置位输入为0,触发器也保持置位不变。如果复位输入为1,即有电加到R端,则触发器复位。此时,即使复位输入为0,触发器也保持复位不变。RS触发器分为置位优先和复位优先型两种。置位优先型RS触发器的R端在S端之上,当两个输入端都为1时,下面的置位输入最终有效。既置位输入优先,触发器或被复位或保持复位不变。复位优先型RS触发器的S端在R端之上,当两个输入端都为1时,下面的复位输入最终有效.既复位输入优先,触发器或被置位或保持置位不变。图3.11给出了使用置位优先型RS触发器的梯形图例子,图中也给出了与梯形图对应的语句表程序。AI0.0RM0.0AI0.1SM0.0AM0.0=Q4.0图3.11置位优先型RS触发器
4.对RLO的直接操作指令这一类指令直接对逻辑操作结果RLO进行操作,改变状态字中RLO位的状态。有关内容见表3.8。表3.8对RLO的直接操作指令3.3.3位测试指令当信号状态变化时就产生跳变沿。当从0变到1时,产生一个上升沿(或正跳沿);若从1变到0,则产生一个下降沿(或负跳沿)。跳变沿检测的原理是:在每个扫描周期中把信号状态和它在前一个扫描周期的状态进行比较,若不同则表明有一个跳变沿。因此,前一个周期里的信号状态必须被存储,以便能和新的信号状态相比较。S7中有两类跳变沿检测指令,一种是对RLO的跳变沿检测的指令,另一种是对触点跳变沿直接检测的梯形图方块指令。具体内容见表3.9。表3.9跳变沿检测指令图3.12是使用RLO正跳沿检测指令的例子。这个例子中,若CPU检测到输入I1.0有一个正跳沿,将使得输出Q4.0的线圈在一个扫描周期内通电。对输入I1.0常开触点扫描的RLO值(在本例中,此RLO正好与输入I1.0的信号状态相同)存放在存储位M1.0中。图3.12RLO正跳沿检测在扫描周期中,CPU对I1.0信号状态扫描并形成RLO值,若该RLO值是1而存放在M1.0中的上次RLO值是0,这说明FP指令检测到一个RLO的正跳沿,那么FP指令把RLO位置1。如果RLO在相邻的两个扫描周期中相同(全为1或0),那么FP语句把RLO位清0。同样,如果FN指令检测到一个RLO的负跳沿,那么FN指令把RLO位置1。如果RLO在相邻的两个扫描周期中相同(全为1或0),那么FN语句把RLO位清0。需要注意的是,在编程时必须考虑到,FP和FN检测到的是在RLO中表现出的变化,而不是触点的状态变化(前面的图中是特例)。因为,一般情况下,RLO可能由一个逻辑串形成,并不单独与某触点的状态直接相关。若需要在逻辑串中单独检测某触点的跳变沿,可使用对触点跳变沿直接检测的梯形图方块指令。图3.13是使用触点负跳沿检测指令的例子。图中,由<位地址1>给出需要检测的触点编号(I0.3),<地址2>(M0.0)用于存放该触点在前一个扫描周期的状态。图3.13触点负跳沿检测执行触点正跳沿检测指令时,CPU将<位地址1>的当前触点状态与存在<地址2>中的上次触点状态相比较,若当前为1上次为0,表明有正跳沿产生,则输出Q置1;其它情况下,输出Q被清0。对于触点负跳沿指令,若当前为0上次为1,则输出Q置1,其余情况Q被清0。由于不可能在相邻的两个扫描周期中连续检测到正跳沿(或负跳沿),因此,输出Q只可能在一个扫描周期中保持为1(单稳输出)。在梯形图中,触点跳变沿检测方块和RS触发器方块可被看做一个特殊常开触点。该常开触点的特性是:若方块的Q为1,则触点闭合;若Q为0,则触点断开。3.3.4位逻辑指令编程举例例1.传送带控制图3.14表示一个能够电气启动的传送带。在传送带的起点有两个按钮开关:用于START的S1和用于STOP的S2。在传送带的尾部也有两个按钮开关:S3用于START,S4用于STOP。可以从任一端启动或停止传送带。另外,当传送带上的物件到达末端时,传感器S5使传送带停机。图3.14传送带示意图表3.10用于传送带系统符号编程的元素图3.15控制传送带的梯形图与相应的语句表图3.16串并联组合逻辑梯形图(a)先并后串逻辑梯形图;(b)先串后并逻辑梯形图例2.串并联组合表示法
当逻辑串是复杂组合时,CPU的扫描顺序是先“与”后“或”。图3.16(a)给出的梯形逻辑是触点先并后串的例子,与其对应的语句表为:A(OI0.0OI0.2)A(OM10.0OM0.3)AM10.1=Q4.0图3.16(b)是先串后并的例子,与其对应的语句表如下:A(AI0.0AM10.0OAI0.2AM0.3)AM10.1=Q4.0例3.风机监控程序某设备有三台风机,当设备处于运行状态时,如果风机至少有两台以上转动,则指示灯常亮;如果仅有一台风机转动,则指示灯以0.5Hz的频率闪烁;如果没有任何风机转动,则指示灯以2Hz的频率闪烁。当设备不运行时,指示灯不亮。实现上述功能的梯形图程序见图3.17。图3.17风机监控程序下面给出实现风机状态检测的语句表程序,从中可看出中间输出指令的用法:输入位I0.0,I0.1,I0.2分别表示风机1,2,3。存储位M100.3为2Hz的频率信号,M100.7为0.5Hz的信号。风机转动状态指示灯由Q4.0控制。存储位M10.0为1时用于表示至少有两台风机转动,M10.1为1时表示没有风机转动。例4.二分频器二分频器是一种具有一个输入端和一个输出端的功能单元,输出频率为输入频率的一半。如下,输入为I0.0,输出为Q4.0。梯形图程序:语句表程序:方法2例5灯泡控制程序一盏灯泡由一个按钮来控制,已知第一次按下按钮,灯泡亮,第二次按下按钮,灯光灭。PLC接线图定义符号地址符号地址绝对地址类据类型说明S0I0.0BOOL按钮L0Q0.0BOOL灯泡M0M0.0BOOL标标位梯形图程序3.4定时器与计数器指令3.4.1定时器指令定时器可以提供等待时间或监控时间,定时器还可产生一定宽度的脉冲,亦可测量时间。定时器是一种由位和字组成的复合单元,定时器的触点由位表示,其定时时间值存储在字存储器中。脉冲定时器(SP)扩展脉冲定时器(SE)接通延时定时器(SD)保持型接通延时定时器(SS)关断延时定时器(SF)定时器的种类1.定时器的组成在CPU的存储器中留出了定时器区域,该区域用于存储定时器的定时时间值。每个定时器为2B,称为定时字。在S7-300中,定时器区为512B,因此最多允许使用256个定时器。因为定时器区域的编址(以T打头后跟定时器号,只能按字访问)以及存储格式的特殊性,所以只有通过使用有关的定时器指令才能对该区域进行访问。S7中定时时间由时基和定时值两部分组成,定时时间等于时基与定时值的乘积。当定时器运行时,定时值不断减1,直至减到0,减到0表示定时时间到。定时时间到后会引起定时器触点的动作。定时器的第0位到第11位存放二进制格式的定时值,第12、13位存放二进制格式的时基(如图3.18所示)。这12位二进制代码表示的数值范围是0~4096,实际使用范围是0~999。时基和时间值可以任意组合,以得到不同的定时分辨率和定时时间。表3.11中给出了可能的组合情况。从表3.11中可以看出,时基小,则定时分辨率高,但定时时间范围窄;时基大,则定时分辨率低,但定时时间范围宽。图3.18累加器1低字的内容(定时值127,时基ls)表3.11时基与定时范围当定时器启动时,累加器1低字的内容被当作定时时间装入定时字中。这一过程是由操作系统控制自动完成的,用户只需给累加器1装入不同的数值,即可设置需要的定时时间。为累加器1装入定时时间值的表示方法:为累加器1装入数值的指令很多,但在累加器1低字中的数据应符合图3.18所示的格式。为避免格式错误,推荐采用下述直观的句法:方法1:
LW#16#wxyz其中,w,x,y,z均为十进制数。w为时基,取值为0,1,2或3,分别表示时基为10ms,l00ms,1s或10s;xyz为定时值,取值范围为1~999。方法2:也可直接使用S5中的时间表示法装入定时数值,例如: LS5T#aH_bbM_ccS_dddMS其中,a:小时,bb:分钟,cc:秒,ddd:毫秒,范围:1MS到2H_46M_30S;此时,时基是自动选择的,原则是根据定时时间选择能满足定时范围要求的最小时基。
2.定时器的启动与运行PLC中的定时器相当于时间继电器。在使用时间继电器时,要为其设置定时时间,当时间继电器的线圈通电后,时间继电器被启动。若定时时间到,继电器的触点动作。当时间继电器的线圈断电时,也将引起其触点的动作。该触点可以在控制线路中控制其它继电器。S7中的定时器与时间继电器的工作特点相似,对定时器同样要设置定时时间,也要启动定时器(使定时器线圈通电)。除此之外,定时器还增加了一些功能,如随时复位定时器、随时重置定时时间(定时器再启动)、查看当前剩余定时时间等。S7中的定时器不仅功能强,而且类型多。图3.19给出了为定时作业如何正确选择定时器的示意图。以下将以LAD方块图为主详细介绍定时器的运行原理及使用方法。图3.19五种类型定时器总览3.定时器梯形图方块指令1)脉冲定时器(见表3.13)表3.13脉冲定时器如果RLO有正跳沿,则脉冲定时器启动指令,以给出的时间值启动指定的定时器。只要RLO为1,定时器就保持运行。在定时器运行时,其常开触点闭合,即对该定时器按1扫描的结果为1。当定时时间到,常开触点断开,对1信号的扫描结果为0。若在给定的时间(即定时时间)过去之前RLO由1变为0,则定时器被复位至启动前的状态,在这种情况下定时器的常开触点断开。图3.20脉冲定时器指令图3.20是使用脉冲定时器的梯形图编程例子,图3.21是脉冲定时器的时序。以下是与梯形图对应的语句表: A I0.0 L S5T#2SSP T5 //以脉冲定时器方式启动T5A I0.1R T5 //复位定时器T5A T5= Q4.0 //使用定时器T5的触点图3.21脉冲定时器时序2)扩展脉冲定时器(见表3.14)表3.14扩展脉冲定时器如果RLO有正跳沿,则扩展(输入)脉冲定时器启动指令,以给出的时间值启动指定的定时器。即使RLO变为0,定时器仍保持运行,直到定时时间到后才停止(定时器被复位)。在定时器运行时,其常开触点闭合,即对该定时器按1扫描的结果为1。当定时时间到后,则常开触点断开,对1信号的扫描结果为0。图3.22扩展脉冲定时器指令图3.22是使用扩展脉冲定时器的梯形图编程例子,图3.23是扩展脉冲定时器的时序。以下是与梯形图对应的语句表:A I0.0L S5T#2SSE T5 //以扩展脉冲定时器方式启动T5A I0.1R T5 //复位定时器T5A T5= Q4.0 //使用定时器T5的触点图3.23扩展脉冲定时器时序3)接通延时定时器(见表3.14)表3.14接通延时定时器如果RLO有正跳沿,则接通延时定时器启动指令,以给出的时间值启动指定的定时器。当定时时间到后,则常开触点闭合并保持(对1信号的扫描结果为1)。直到RLO变为0,定时器才被复位至启动前的状态,此时定时器的常开触点断开。若在给定的时间(即定时时间)过去之前RLO由1变为0,则定时器也被复位。图3.24接通延时定时器指令图3.24是使用接通延时定时器的梯形图编程例子,图3.25是接通延时定时器的时序。以下是与梯形图对应的语句表:A I0.0L S5T#2SSD T5 //以接通延时定时器方式启动T5A I0.1R T5 //复位定时器T5A T5= Q4.0 //使用定时器T5的触点图3.25接通延时定时器时序4)保持型接通延时定时器(见表3.16)表3.16保持型接通延时定时器如果RLO有正跳沿,则保持型接通延时定时器启动指令,以给出的时间值启动指定的定时器,即使RLO变为0,定时器仍保持运行。此时,定时器常开触点断开(即对该定时器按1扫描的结果为0),当定时时间到后,常开触点闭合并保持。若RLO再有一个正跳沿,定时器重新启动,只有用复位指令才能复位该定时器。图3.26是使用保持型接通延时定时器的梯形图编程例子,图3.27是保持型接通延时定时器的时序。图3.26保持型接通延时定时器指令图3.27保持型接通延时定时器时序以下是与梯形图对应的语句表:A I0.0L S5T#2SSS T5 //以保持型接通延时定时器方式启动T5A I0.1R T5 //复位定时器T5A T5= Q4.0 //使用定时器T5的触点5)关断延时定时器(见表3.17)表3.17关断延时定时器如果RLO有负跳沿,则关断延时定时器启动指令,以给出的时间值启动指定的定时器。当RLO为1或在定时器运行时,其常开触点闭合,即对该定时器按1扫描的结果为1。当定时时间到后,则常开触点断开。若在给定的时间(即定时时间)过去之前RLO由0变为1,则定时器被复位至启动前的状态。一直到RLO从1变为0之前,定时器不再启动(使用FR指令除外)。图3.28关断延时定时器指令图3.28是使用关断延时定时器的梯形图编程例子,图3.29是关断延时定时器的时序。以下是与梯形图对应的语句表:A I0.0L S5T#2SSF T5 //以关断延时定时器方式启动T5A I0.1R T5 //复位定时器T5A T5= Q4.0 //使用定时器T5的触点图3.29关断延时定时器时序4.定时器线圈指令表3.18定时器线圈指令图3.30扩展脉冲定时器线圈指令图3.30以扩展脉冲定时器为例说明定时器线圈指令的用法。与梯形图功能对应的语句表程序如下:A I0.0L S5T#2SSE T5 //以扩展脉冲定时器方式启动T5A I0.1R T5 //复位定时器T5A T5= Q4.0 //使用定时器T5的触点定时器应用举例例1脉冲发生器
用定时器可构成脉冲发生器,这里用了两个定时器产生频率占空比均可设置的脉冲信号。如下图的脉冲发生器的时序图,当输入I0.0为1时,输出Q0.0为1或0交替进行,脉冲信号的周期为3s,脉冲宽度为1s。
梯形图程序:网络1A I0.0AN T1L S5T#2SSD T2网络2A T2L SST#1SSD T1A T2= Q0.0
例2.频率监测器频率监测器用于监测脉冲信号的频率,若其低于下限,则指示灯亮,“确认”按键能使指示灯复位。为此,使用了一个扩展脉冲定时器,即每当频率信号有一个上升沿就启动一次定时器。如果超过了定时时间没有启动定时器,则表明两个脉冲之间的时间间隔太长,即频率太低了。图3.36为频率监测器时序。图3.36频率监测器时序图3.37频率监测梯形图程序在频率监测程序中,输入I0.0用于关闭监测器,I0.1用于确认频率低;输出Q4.0用以控制指示灯。定时器T1的定时时间为2s,即设置脉冲信号M10.0的频率监测下限为0.5Hz。梯形图程序见图3.37,以下是频率监测语句表程序:A M10.0AN I0.0L S5T#2SSE T1AN T1S Q4.0O I0.1O I0.0R Q4.0例3:顺序循环执行程序当X0接通,灯Y0亮;经5s后,灯Y0灭,灯Y1亮;经5s后,灯Y1灭,灯Y2亮,再过5s后,灯Y2灭,灯Y0亮,如此顺序循环,其时序图如下。例4.电动机顺序启动控制程序
有三台电动机M1、M2、M3,按下启动按钮后M1启动,延时5s后M2启动,再延时16s后M3启动。
PLC接线定义符号地址梯形图程序例5.十字路口的交通指挥信号灯布置如下图:
一、控制要求(1)信号灯系统由一个启动开关控制,当启动开关接通时,该信号灯系统开始工作,当启动开关关断时,所有信号灯都熄灭。(2)南北绿灯和东西绿灯不能同时亮。如果同时亮应关闭信号灯系统,并立刻报警。(3)南北红灯亮维持25s。在南北红灯亮的同时东西绿灯也亮,并维持20s。到20s时,东西绿灯闪亮,闪亮3s后熄灭,此时,东西黄灯亮,并维持2s。到2s时,东西黄灯熄灭,东西红灯亮。同时,南北红灯熄灭,南北绿灯亮。(4)东西红灯亮维持30s。南北绿灯亮维持25s,然后闪亮3s后熄灭。同时南北黄灯亮,维持2s后熄灭,这时南北红灯亮,东西绿灯亮。(5)以上南北、东西信号灯周而复始地交替工作状态,指挥着十字路口的交通,其时序如下所示。二、PLC接线三、定义符号地址四、梯形图程序3.4.2计数器指令S7中的计数器用于对RLO正跳沿计数。计数器是一种复合单元,它由表示当前计数值的字和表示其状态的位组成。S7中有三种计数器,它们分别是加计数器、减计数器和可逆计数器。
1.计数器组成在CPU中保留一块存储区作为计数器计数值存储区,每个计数器占用两个字节,称为计数器字。计数器字中的第0~11位表示计数值(二进制格式),计数范围是0~999。当计数值达到上限999时,累加停止。计数值到达下限0时,将不再减小。对计数器进行置数(设置初始值)操作时,累加器1低字中的内容被装入计数器字。计数器的计数值,将以此为初值增加或减小。可以用多种方式为累加器1置数,但要确保累加器1低字符合图3.31规定的格式。图3.31累加器1低字的内容计数值1272.计数器梯形图方块指令表3.19计数器梯形图方块指令使用复位指令R可复位计数器。计数器被复位后,其计数值被清0,计数器输出状态也为0(常开触点断开)。计数器的各项操作应按下列顺序(编程顺序)进行:加计数、减计数、计数器置数、计数器复位、使用计数器输出状态信号和读取当前计数值。在图3.32中使用了梯形图可逆计数器方块指令,输入I0.0的正跳沿使计数器C10的计数值增加,输入I0.1使计数值减小。计数器C10的状态用于控制输出Q4.0。给C10预置的初始值放在MW10中,当I0.2有正跳沿时,该值被置入计数器C10。以下是与梯形图对应的语句表程序:图3.32可逆计数器梯形图方块应用A I0.0CU C10//若I0.0有正跳沿,则计数器C10的计数值加1A I0.1CD C10 //若I0.1有正跳沿,则计数器C10的计数值减1A I0.2L MW10S C10 //若I0.2有正跳沿,则C1置数A I0.3R C10 //若I0.3有正跳沿,则C10复位A C10= Q4.0 //若C10数值不为0,则Q4.0为13.计数器线圈指令表3.20计数器线圈指令图3.33以加计数器为例说明计数器线圈指令的用法。与梯形图功能对应的语句表程序如下:A I0.0L C#100S C10A I0.1CU C10A I0.2R C10A C10= Q4.0这个例子用于对输入I0.1的正跳沿计数。每一个正跳沿使计数器C10的计数值加1。输入I0.0的信号状态从0变为1,则计数器C10被置初始值100,C#表示以BCD码格式输入一个数值。若没有正跳沿,计数器C10的计数值保持不变。输入I0.2若为1,计数器被复位。计数器C10的计数值若不等于0,则C10输出状态为1,Q4.0也为1。3.4.3应用举例例1.计数器扩展为定时器当定时器不够用时,可以用计数器扩展为定时器.程序中使用了CPU的时钟存储器,设置MB100为时钟存储器,则M100.0的变化周期为0.1s。在程序中,如果I0.1的正跳沿为减计数器C0置数.若I0.0为1,则C0每0.1s减1。当C0减到0后,输出Q0.0为1.I0.1的又一个正跳沿使C0置数并使输出为0.这样,在I0.0为1后2s(20*0.1s=2s),Q0.0为1,I0.1的正跳沿使Q0.0复位.例2.长时间延时程序采用定时器和计数器可以组成长时间延时程序,如下:当输入I0.0接通时,定时器T0经过10s时间延时后,其动合触点T0闭合,计数器C0开始递减运算,与此同时T0的动断触点是断开的,造成T0线圈断电,使T0的动合触点断开,C0仅计数一次,而后T0线圈又接通,如此循环.当C0经过10s*10=100s时间后,计数器C0输出为0,输出Q0.0接通,具有长时间延时的功能.例3.当X0接通,灯Y0亮;经5s后,灯Y0灭,灯Y1亮;经5s后,灯Y1灭,灯Y2亮,再过5s后,灯Y2灭,灯Y0亮,如此顺序循环10次后自动停止。3.5数据处理功能指令3.5.1装入和传送指令装入(L)和传送(T)指令可以在存储区之间或存储区与过程输入、输出之间交换数据。CPU执行这些指令不受逻辑操作结果RLO的影响。L指令将源操作数装入累加器1中,而累加器原有的数据移入累加器2中,累加器2中原有的内容被覆盖。T指令将累加器1中的内容写入目的存储区中,累加器的内容保持不变。L和T指令可对字节(8位)、字(16位)、双字(32位)数据进行操作,当数据长度小于32位时,数据在累加器右对齐(低位对齐),其余各位填0。装入和传送操作有三种寻址方式,即立即寻址、直接寻址和间接寻址。1.对累加器1的装入和传送指令L+5 //将立即数+5装入累加器1中LMW10 //将MW10中的值装入累加器1中LIB[DID8] //将由数据双字DID8指出的输入字节装入累加器1中TMW20 //将累加器1中的内容传送给存储字MW20TMW[AR1,P#10.0] //将累加器1中的内容传送给由地址寄存器1加偏移量确定的存储字中
2.读取或传送状态字LSTW //将状态字中0~8位装入累加器1中,累 加器9~3l位被清0TSTW //将累加器1中的内容传送到状态字中
3.装入时间值或计数值定时器字中的剩余时间值以二进制格式保存,用L指令从定时器字中读出二进制时间值装入累加器1中,称为直接装载。也可用LC指令以BCD码格式读出时间值,装入累加器1低字中,称为BCD码格式读出时间值。以BCD码格式装入时间值可以同时获得时间值和时基,时基与时间值相乘就得到定时剩余时间。同理,对当前计数值也有直接装载和以BCD码格式读出计数值之分。例如:
LT1//将定时器T1中二进制格式的时间值直接装入累加器1的低字中LCT1//将定时器T1中的时间值和时基以BCD码格式装入累加器1的低字中LC1//将计数器C1中二进制格式的计数值直接装入累加器1的低字中LCC1//将计数器Cl中的计数值以BCD码格式装入累加器1的低字中
4.地址寄存器装入和传送对于地址寄存器,可以不经过累加器l而直接将操作数装入或传送,或将两个地址寄
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 卫生院员工培训
- 一病情观察一病情观察的意义为诊断疾病和制定治疗护理方案
- 《员工培训讲义》课件
- 外科妊娠甲亢治疗方案
- 保全工相关技能培训
- 冰雪气候资源评估方法(报批稿)
- 事业部财务培训
- 培训机构动员大会
- GPT产业复盘报告
- 口腔纤维桩护理配合
- 公安笔录模板之询问嫌疑人(书面传唤治安案件)
- 小学作文假如我是(课堂PPT)
- 混凝土配合比检测报告
- 高等学校英语应用能力考试B级真题作文及参考范文
- 鄂尔多斯盆地地层划分表
- 重要医疗器械经营质量管理制度及目录、工作程序
- CT报告单模板精编版
- 全国重点文物保护单位保护项目安防消防防雷计划书
- 学校食堂家长陪餐制度
- 《梯形的面积》(课堂PPT)
- 肾内科疾病诊疗常规
评论
0/150
提交评论