《第7章功能指令》由会员分享,可在线阅读,更多相关《第7章功能指令(69页珍藏版)》请在金锄头文库上搜索。
1、第七章第七章 PLC的数据处理功能的数据处理功能2021/6/71学习目标 掌握数据传送指令的格式、功能及应用;掌握数据比较指令的格式、功能及应用;掌握数据移位指令的格式、功能及应用;掌握数据运算指令的格式、功能及应用;掌握数据转换指令的格式、功能及应用;了解表功能指令的格式和功能;掌握时钟指令的使用。2021/6/72单元一单元一 数据的传送和比较数据的传送和比较教学课题教学课题数据的传送和比较教学目标教学目标1、掌握数据的传送指令2、熟悉数据的比较指令教学重点教学重点数据的传送和比较指令的应用教学难点教学难点数据传送和比较指令格式及功能教学方法教学方法板书和多媒体结合教学手段教学手段板书和
2、多媒体结合2021/6/73任务一:数据的传送任务一:数据的传送1任务提出在程序初始化的过程中常需要将某些字节、字或双字存储器清0或设置初值,为后面的控制操作做准备。比如:若开机运行时,字变量VW0设初值1000、字节变量VB0清0等,如何操作?这一节学习的数据传送指令将实现此操作。2021/6/74数据传送指令实现将输入数据IN(常数或某存储器中的数据)传送到输出OUT(存储器)中的功能,传送的过程中不改变数据的原值。2021/6/752 说明:1)操作码中的B(字节)、W(字)、D(双字)和R(实数),代表被传送数据的类型;2)操作数的寻址范围与指令码一致,比如字节数据传送只能寻址字节型存
3、储器,OUT不能寻址常数,块传送指令IN、OUT皆不能寻址常数.3)ENO = 0的错误条件:0006(间接寻址错误),SM4.3(运行时间)。 2021/6/763任务解决方案若开机运行时,字变量VW0设初值1000、字节变量VB0清0等。分析:分析:1)当程序运行时,在第一扫描周期,字节传送指令将0传送给VB0,字传送指令将1000传送至VW0,完成程序初始化;2)在为变量赋初值时,为保证数据传送只执行一次,数据传送指令一般与SM0.1或跳变指令联合使用。2021/6/774其他数据传送类指令2021/6/78说明:说明:1)字节立即读MOV_BIR指令读取1个字节的物理输入IN,将结果写
4、入OUT,不刷新输入过程映像寄存器, IN只能是IB;字节立即写MOV_BIW指令将输入给出的1个字节的数值写入到物理输入OUT,同时刷新相应的输出过程映像寄存器,OUT只能是QB。2)SWAP指令的操作数只能是字(W)型数据存储器。2021/6/79数据传送指令编程举例2021/6/7105.应用实例例例1 用数据传送指令实用数据传送指令实现现8个彩灯同时点亮个彩灯同时点亮和熄灭和熄灭I/O分配:I0.0为起动信号,I0.1为停止信号,8个彩灯分别由0.0Q0.7驱动,对应的梯形图程序如图5-2所示。 动动手:若动动手:若8盏灯分别接盏灯分别接Q1.0Q1.7,每间隔,每间隔1个同时点亮,应
5、如何操作?个同时点亮,应如何操作?2021/6/711例例2 设液体混合控制中,设液体混合控制中,液体搅拌所需的时间液体搅拌所需的时间有两种选择,分别为有两种选择,分别为20分钟和分钟和10分钟,分钟,分别设置两个按钮选分别设置两个按钮选择所需控制时间。择所需控制时间。I/O分配:I1.0选择20分钟,I1.1选择10分钟,I0.2启动搅拌,Q0.0控制液体搅拌。梯形图程序如图5-3所示,分析下面的梯形图程序,能否实现上述控制?动脑筋:动脑筋:(1)如果将)如果将MOVW指令换做指令换做MOVB指令,是否可行,为什么?指令,是否可行,为什么?(2)网络)网络3中,分析中,分析I0.2什么情什么
6、情况下可以这样使用?况下可以这样使用?2021/6/712任务二:数据的比较任务二:数据的比较1任务提出在实际的控制过程中,可能需要对两个操作数进行比较,比较条件成立时完成某种操作,从而实现某种控制。比如:初始化程序时,在VW10中存放着数据100,模拟量输入AIW0中采集现场数据,当AIW0数值小于或等于VW10时,Q0.0输出;当AIW0大于VW10时,Q0.1输出。如何操作?2021/6/713比较指令格式及功能如下表所示。2021/6/7142.说明:说明:1)表中给出了相等比较的指令格式,数据比较运算符还有=、,字符串比较运算符还有。)字整数比较指令,梯形图是,语句表是。)数据比较I
7、N1,IN2操作数的寻址范围为:I,Q,M,SM,V,S,L,AC,VD,LD,常数。2021/6/7153任务解决方案2021/6/716比较指令编程举例2021/6/717 比较指令编程举例续2021/6/7185.应用实例:例例1 用定时器和比较指用定时器和比较指令组成占空比可调的令组成占空比可调的脉冲发生器。脉冲发生器。M0.0和100ms定时器T37组成脉冲发生器,比较指令用来产生脉冲宽度可调的方波,脉宽的调整由比较指令的第二个操作数实现,梯形图程序和脉冲波形如图5-5所示。70T37的当前值300T37的位Q0.0动动手吧:建立周期为动动手吧:建立周期为100ms,占空比为,占空比
8、为50%的脉冲电路。的脉冲电路。2021/6/719例例2 调整模拟调整电位调整模拟调整电位器器0,改变,改变SMB28字节字节数值,当数值,当SMB28数值数值小于或等于小于或等于50时,时,Q0.0输出;当输出;当SMB28数值在数值在50和和150之间时,之间时,Q0.1输出,当输出,当SMB28数值大于或等于数值大于或等于150时,时,Q0.2输出。输出。梯形图程序如图5-5所示。动动脑吧:如果动动脑吧:如果I0.0外接按钮,应如何操作?外接按钮,应如何操作?2021/6/720例例3 3台电动机分时起动控制台电动机分时起动控制控制要求:起动按钮按下后,3台电动机每隔2s分别依次起动,
9、按下停止按钮,三台电动机每隔2s同时停止。动脑筋:分析定时器在每个网络动脑筋:分析定时器在每个网络里是如何使用的?里是如何使用的? 2021/6/721任务三:数据的移位任务三:数据的移位1任务提出制作彩灯控制器。要求按下“启动”按钮,8个彩灯从左到右,以1s的速度依次点亮,保持任意时刻只有一个指示灯亮,到达最右端后,再从左到右依次点亮,如此循环。按下“停止”按钮后,彩灯循环停止。思考:思考:用前面学过的指令能不能实现上述控制目的?实现的过程有没有问题?2021/6/722移位指令格式如下表所示。2021/6/723说明:说明:1)左移位指令:使能输入有效时,将输入的无符号数字节、字或双字左移
10、N位后,移出位自动补0,将结果输出到OUT所指定的存储单元中,如果移位次数大于0,最后一次移出位保存在“溢出”存储器位SM1.1。如果移位结果为0,零标志位SM1.0置1。2)右移位指令:使能输入有效时,将输入的无符号数字节、字或双字右移N位后,移出位自动补0,将结果输出到OUT指定的存储单元中。最后一次移出位保存在SM1.1。3)循环移位指令将输入IN中的各位向右或向左循环移动N位后,送给输出OUT。循环移位是环形的,即被移出来的位将返回到另一端空出来的位置。移出的最后一位的数值放在溢出位SM1.1。4)移位寄存器指令SHRB是移位长度可调的移位指令,将从DATA端输入的二进制数值移入到移位
11、寄存器中。S_BIT为寄存器的最低位地址。字节型变量N为移位寄存器的长度(164),N为正值时表示左移位,输入数据(DATA)移入移位寄存器的最低位(S_BIT),并移出移位寄存器的最高位,移出的数据被放置在溢出内存位(SM1.1)中;N为负值表示右移位,输入数据移入移位寄存器的最高位中,并移出最低位(S_BIT),移出的数据被放置在溢出内存位(SM1.1)中。2021/6/7243任务解决方案分析分析:8个彩灯分别接Q0.0Q0.7,可以用字节的循环移位指令,进行循环移位控制。置彩灯的初始状态为QB0=1,即左边第一盏灯亮;接着灯从左到右以1s的速度依次点亮,即要求字节QB0中的“1”用循环
12、左移位指令每1s移动一位,因此须在ROL-B指令的EN端接一个1s的移位脉冲。梯形图程序如图5-6所示。2021/6/7252021/6/726 移位指令编程举例2021/6/727 移位指令编程举例思考:移位寄存器指令是如何实现移位的?2021/6/7285.应用实例:例例1 用用I0.0控制控制16个彩灯循环移位,从左到右以个彩灯循环移位,从左到右以2S的速度依次的速度依次2个为一组点亮,保持任意时刻只个为一组点亮,保持任意时刻只有有2个指示灯亮,到达最右端后,再从左到右依次个指示灯亮,到达最右端后,再从左到右依次点亮,按下点亮,按下I0.1后,彩灯循环停止。后,彩灯循环停止。分析:16个
13、彩灯分别接Q0.0Q1.7,可以用字节的循环移位指令,进行循环移位控制。置彩灯的初始状态为QB0=3,即左边第1、2盏灯亮;接着灯从左到右以2s的速度依次点亮,即要求字节QB0中的“11”用循环左移位指令每2s移动一位,因此须在ROL-B指令的EN端接一个2s的移位脉冲。梯形图程序如图5-7所示。2021/6/7292021/6/730例例2 用用PLC构成喷泉的控制。喷泉的构成喷泉的控制。喷泉的12个喷水注用个喷水注用L1L12来表示,喷水注的布局如图来表示,喷水注的布局如图5-8所示。所示。控制要求: 按下起动按钮后,L1喷0.5秒后停,接着L2喷0.5秒后停, 接着L3喷0.5秒后停,接
14、着L4喷0.5秒后停,接着L5、L9喷0.5秒后停,接着L6、L10喷0.5秒后停,接着L7、L11喷0.5秒后停,接着L8、L12喷0.5秒后停, L1喷0.5秒后停,如此循环下去,直至按下停止按钮。 2021/6/731I/O分配如表所示 输入PLC地址说 明输出PLC地址说 明I0.0起动按钮Q0.0Q0.3L1L4I0.1停止按钮Q0.4L5、L9Q0.5L6、L10Q0.6L7、L11Q0.7L8、L122021/6/732动脑筋:动脑筋:T38在此程序中的作用是什么?在此程序中的作用是什么?2021/6/733任务四:数据的运算任务四:数据的运算1任务提出在模拟量数据采集中,为了防
15、止干扰,经常通过程序进行数据滤波,其中一种方法为平均值滤波法。要求连续采集五次数作平均,并以其值作为采集数。这五个数通过五个周期进行采集。请设计该滤波程序。在这个程序中,需要用到运算指令,PLC可以为我们提供什么样的运算指令可以实现上述操作呢?2021/6/734说明:1)IN1、IN2指定加数(减数)及被加数(被减数);如果OUT与IN2为同一存储器,则在语句表指令中不需要使用数据传送指令,可减少指令条数,从而减少存储空间。2)操作数的寻址范围要与指令码一致。OUT不能寻址常数。3)该指令影响特殊内部寄存器位:SM1.0 (零);SM1.1 (溢出); M1.2(负)。4)如果OUT与IN不
16、同,将首先执行数据传送指令,将IN1传送给OUT,再执行IN2+OUT,结果送给OUT。 加/减运算指令2021/6/735 加/减指令编程举例2021/6/7361)操作数的寻址范围要与指令码中一致,OUT不能寻址常数;2)在梯形图中:IN1 * IN2 = OUT, IN1 / IN2 = OUT;在语句表中: IN1 * OUT = OUT, OUT / IN1 = OUT; 3)整数及双整数乘/除法指令,使能输入有效时,将两个16位/32位符号整数相乘/除,并产生一个32位积/商,从OUT指定的存储单元输出。除法不保留余数,如果乘法输出结果大于一个字,则溢出位SM1.1置位为1。4)该
17、指令影响下列特殊内存位:SM1.0 (零); SM1.1 (溢出); SM1.2 (负);SM1.3 (除数为0)。 乘乘/除运算指令除运算指令2021/6/737 乘/除指令编程举例2021/6/7383任务解决方案2021/6/739加1、减1指令说明:1)操作数的寻址范围要与指令码中一致,其中对字节操作时不能寻址专用的字及双字存储器,如T、C、及HC等;对字操作时不能寻址专用的双字存储器HC;OUT不能寻址常数;2)在梯形图中:IN + 1 = OUT, IN - 1 = OUT;在语句表中: OUT + 1 = OUT,OUT - 1 = OUT;如果OUT与IN为同一存储器,则在语句
18、表指令中不需要使用数据传送指令,可减少指令条数,从而减少存储空间; 2021/6/740 加1、减1指令编程举例 2021/6/741函数运算说明:1)IN和OUT按双字寻址,不能寻址专用的字及双字存储器T、C、HC等,OUT不能寻址常数;2)三角函数指令SIN、COS、TAN计算角度输入值的三角函数,输入以弧度为单位;3)自然对数指令EXP与自然指数指令配合,可以实现以任意实数为底,任意实数为指数(包括分数指数)的运算。2021/6/742函数运算指令编程举例 2021/6/743 逻辑运算指令 逻辑运算指令是对无符号数进行的逻辑处理,主要包括逻辑与、逻辑或、逻辑异或及逻辑取反等操作,可用于
19、存储器的清零、设置标志位等。2021/6/744逻辑指令编程举例2021/6/7455.应用实例例例1 在程序初始在程序初始化时,设置化时,设置AC1为为1000,当按,当按下下I0.0,AC1的的值每隔值每隔10s减减100,一直减到,一直减到0为止。为止。其梯形图程序如图5-11所示。2021/6/746例例2求角度求角度50的余弦值,并将其结果存储在的余弦值,并将其结果存储在VD18中。中。对应的梯形图程序及运行结果如图5-12所示。2021/6/747例例3 分析图分析图5-13程序的执行结果。程序的执行结果。2021/6/748例例4 如果想知道如果想知道IB0,在,在10s之后有哪
20、些位发生之后有哪些位发生了变化,怎样操作?了变化,怎样操作?程序如图5-14所示。2021/6/749任务五:数据的转换任务五:数据的转换1任务提出在实际的控制过程中,经常要对不同类型的数据进行运算,数据运算指令中要求参与运算的数值为同一类型,为了实现数据处理时的数据匹配,所以要对数据格式进行转换。若将VW10中的整数100和VD100中的实数190.5相加,如何操作?2021/6/750 (1)数据转换指令 说明:1)操作数不能寻址一些专用的字及双字存储器,如T、C、HC等。OUT不能寻址常数;2)ATH及HTA指令各操作数按字节寻址,不能对一些专用字及双字存储器如T、C、HC等寻址,LEN
21、可寻址常数。3)ATH指令中,ASC码字符串的最大长度为255个字符;HTA指令中,可转换的16进制数的最大个数也为255。合法的ASC码字符的16进制值在3039和4146之间。2021/6/751数据转换指令编程举例2021/6/752(2)段码、编码、译码指令说明:1)七段显示码的编码规则如右表所示。对于段译码指令,操作数IN、OUT均为字节型变量,寻址范围不包括专用的字及双字存储器如T、C、HC等,其中OUT不能寻址常数;2)对于译码指令,不能寻址专用的字及双字存储器T、C、HC等;OUT为字变量,不能对HC及常数寻址;3) 对于编码指令,操作数IN为字变量,OUT为字节变量,OUT不
22、能寻址常数及专用的字、双字存储器T、C、HC等。2021/6/753数据转换指令编程举例2021/6/7543任务解决方案若将VW10中的整数100和VD100中的实数190.5相加,如何操作?2021/6/7554应用实例例例1 有六路输入开关有六路输入开关K1、K2、K3、K4、K5、K6,实现优先,实现优先抢答控制。抢答控制。主持人操纵允许抢答和抢答结束按钮。用数码管显示抢中的组号。动脑筋:其它五路的抢答程动脑筋:其它五路的抢答程序自己动手编一下。序自己动手编一下。2021/6/756任务六:表功能指令的使用任务六:表功能指令的使用表操作指令用于创建数据表格以及对数据表格中数据进行操作。
23、可用于定义参数表及存储成组数据等。数据表是用来存放字型数据的表格,如下图所示。表格的第一个字地址(首地址)为表地址,首地址中的数值是表格的最大长度(TL),即最大填表数。表格的第二个字地址中的数值是表的实际长度(EC),指定表格中的实际填表数。每次向表格中增加新数据后,EC加1。从第三个字地址开始,存放数据(字)。表格最多可存放100个数据(字),不包括指定最大填表数(TL)和实际填表数(EC)的参数。2021/6/7571任务提出对某个模拟量采样10次,采样值填入表中,为后续的操作做准备,如何操作?2021/6/758 表操作指令2021/6/759说明:说明:1)TBL为表格的首地址(即最
24、大填表数对应的地址),数据类型为字型,其操作数可为:VW, IW, QW, MW, SW, SMW, LW, T, C, *VD, *LD, *AC,查表指令的TBL为实际填表数对应的地址。2)DATA为数据输入端时,数据类型为整数,其操作数可为:VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, 常量, *VD, *LD, *AC;DATA为数据输出端时,数据类型为整数,其操作数可为:VW, IW, QW, MW, SW, SMW, LW, AC, T, C, AQW, *VD, *LD, *AC。3)一个表中最多可以有100条数据,数据编号范围:099,
25、如果表出现溢出SM1.4会为1。读表的时候,如果读取空表,则SM1.5会为1。4)查表指令中的CMD为14的数值,分别代表=、。INDX为搜索指针,数据类型为字型,从INDX所指的数据编号开始查找,并将搜索到的符合条件的数据的编号放入INDX所指定的存储器。INDX操作数:VW, IW, QW, MW, SW, SMW, LW, T, C, AC, *VD, *LD, *AC。将INDX的值设为0,则从表格的顶端开始搜索 2021/6/760任务六:表功能指令的使用任务六:表功能指令的使用 表指令编程举例2021/6/761 表指令编程举例续2021/6/762表指令编程举例续2021/6/7
26、633任务解决方案对某个模拟量采样10次,采样值填入表中,为后续的操作做准备,如何操作?2021/6/764任务六:时钟指令的使用任务六:时钟指令的使用1任务提出控制路灯的定时接通和断开。控制要求:18:00时开灯,06:00时关灯。2021/6/765 时钟指令TT+1T+2T+3T+4T+5T+6T+7年0099月0112日0131小时0023分钟0059秒00590星期07*说明:1)T缓冲区的起始单元地址,数据类型为字节型,其操作数可以是IB、QB、VB、MB、SMB、SB、LB、*VD、*LD、*AC。2)两个时钟指令具有同样的格式:注:星期的取值范围为07,1=星期日,7=星期六,
27、0是将禁用星期,如表所示。3)S7-200 CPU不核实日期是否正确,可能接受无效日期,比如2月30日,所以必须确保输入的日期是正确的。4)不要同时在主程序和中断程序中使用TODR或TODW指令。5)对于没有使用过时钟指令或长时间断电或内存丢失后的PLC,在使用时钟指令前,要通过STEP-7软件“PLC”菜单对PLC时钟进行设定,然后才能开始使用时钟指令。时钟可以设定成与PC系统时间一致,也可用TODW指令自由设定。2021/6/7663任务解决方案控制路灯的定时接通和断开。控制要求:18:00时开灯,06:00时关灯。2021/6/7674应用实例例1 编写程序,要求读时钟并以BCD码显示秒钟。2021/6/768部分资料从网络收集整理而来,供大家参考,感谢您的关注!