《任务四功能指令的应用4学习目标ppt课件.ppt》由会员分享,可在线阅读,更多相关《任务四功能指令的应用4学习目标ppt课件.ppt(58页珍藏版)》请在三一办公上搜索。
1、任务四 功能指令的应用,4.1 学习目标,4.2 知识准备,4.3 项目概述,4.4 任务描述,4.5 总结分析,4.6 训练任务,4.1 学习目标,通过本项目的学习与训练,使学生学会以下知识:S7-200 PLC各种功能指令的类型、格式、字符含义和符号。S7-200 PLC各种功能指令功能描述、使能信号、标志位、数据类型、使用方法和编程规则。应用功能指令进行梯形图的编制。简单程序设计方法,输入和输出地址的分配,程序的调试与模拟运行。,4.2.1 使能输入与使能输出 4.2.2 数据传送指令 4.2.3 比较指令指令4.2.4 移位与循环移位指令 4.2.5 转换指令 4.2.6 数学运算指令
2、 4.2.7 程序控制指令 4.2.8 子程序的编写与调用 4.2.9 查表指令,4.2 知识准备,4.2.1 使能输入与使能输出,在梯形图中,PLC用一个方框表示一条功能指令,这些方框称为“指令盒”,在IEC61131-3指令系统中称为“功能块”。每个功能块都有一个使能输入端EN和一个使能输出端ENO。功能块的输入端在左侧,输出端在右侧。当EN端有效时,即EN端有能流,该指令才能被执行;当EN端有效且该指令执行无误时,ENO为1,说明ENO能把这种能流传递过去。如果指令执行有误时,ENO为0,能流不能传递过去。注意指令只有在EN端有效时才被执行。,当I2.4=ON时,有能量流过,4.2.2
3、数据传送指令,指令格式:MOVIN,OUT,其中表示B、W、D、R。功能描述:EN端有效时,把一个数据从IN传送到OUT指定的存储单元。,1.字节、字、双字和实数的传送 Move,2.字节、字、双字的块传送指令,指令格式:BMIN,OUT,N,其中表示B、W、D、R。功能描述:把从IN开始的N个字节、字、双字型数据传送到从OUT开始的N个字节、字、双字存储单元,N为字节变量,N=1255。例如“BMB VB20,VB100,4”指令是将VB20VB23中的数据被传送到VB100VB103。,3.字节立即读写指令,字节立即读指令MOV_BIR读取输入IN指定的一个字节的物理输入,并将结果写入OU
4、T,但是并不刷新输入映像寄存器。字节立即写指令MOV_BIW将输入IN指定的一个字节的数据写入物理输出OUT,同时刷新输入映像寄存器。,4.字节交换指令,指令格式:SWAP IN。功能描述:把输入字IN的高字节和低字节进行交换。,4.2.3 比较指令,字节比较指令用来比较两个无符号数字节IN1和IN2的大小。,1.字节比较指令,整数比较指令用来比较两个字IN1和IN2的大小,最高位为符号位,如16#7FFF16#8000(后者为负数)。,2.字节比较指令,实数比较指令用来比较两个实数IN1和IN2的大小,实数比较是有符号的。,3.字节比较指令,双字整数比较指令用来比较两个双字IN1和IN2的大
5、小,双字整数比较是有符号的,如16#7FFFFFFF16#80000000(后者为负数)。,4.实数比较指令,比较指令用于两个相同数据类型的有符号数或无符号的比较判断操作。图中“”表示大于等于,“”表示小于等于,“”表示等于,“”表示不等于,触点中间的B、I、D、R分别表示字节、字、双字、实数。有几种常见指令:,4.2.4 移位与循环移位指令,移位指令将输入IN中的数的各位向左或向右移动N(N为字节变量)位后,送给输出OUT,同时移出位自动补0。字节移位操作是无符号的,对有符号的字和双字移位时,符号位也被移位。如果移位次数大于1,“溢出”位SM1.1保存最后一次被移出的位的值。如果移位结果为0
6、,零标志位SM1.0被置1。,1.右移位SHR和左移位SHL指令,移位指令将输入IN中的数的各位向左或向右循环移动N位后,送给输出OUT。循环移位是环行的,即被移出来的位将返回到另一端空出来的位置。如果移动的位数N大于允许值(字节为8,字为16,双字为32),移位之前要先对N进行取模操作,如字移位,将N除以16后取余数,得到有效的移位次数。取模操作的结果对于字节操作是07,对于字操作是015,对于双字操作是031。取模操作的结果如果为0,不进行循环移位操作。,2.循环右移位ROR和循环左移位ROL指令,移位与循环移位指令,移位寄存器指令SHRB将DATA端输入的数据移入移位寄存器中。S_BIT
7、指定移位寄存器最低位的地址,字节变量N指定移位寄存器的长度和移位方向,正向移位时N位正,反向移位时N为负。“溢出”位标志为SM1.1。N为正时,在使能输入的上升沿,寄存器中的各位由低位向高位移一位,DATA输入的二进制数从最低位移入,最高位被移到溢出位。N为负时,从最高位移入,最低位移出。DATA和S_BIT为BOOL变量。,3.移位寄存器指令SHRB,移位寄存器指令,4.2.5 转换指令,数字转换指令有字节(B)与整数(I)之间转换的BTI和ITB指令,数据范围为0255;整数与双整数(DI)之间转换的DTI和IDT指令,BCD码与整数之间转换的BCDI和IBCD指令,允许范围为09999。
8、如果转换后的数据超出超出范围则产生溢出,溢出标志为SM1.1将被置1。,1.数字转换指令,编码指令ENCO将输入字IN的最低有效4位(值为1的位)的位数写入输出字节OUT的最低4位,也就是说用半个字节对一个16位字的“1”位有效位进行编码。例如程序“ENCO VB0,VB10”,若VB0中的内容为0010101000110000,最低为1的位是第4位,则执行编码指令后,VB10的内容为00000100(即04)。,2.编码指令,译码指令DECO根据输入字节IN的低4位所表示的位号,将输出字OUT相对应的位置1,其它位置0。也就是说对半个字节的编码进行译码,以选择一个16位字中的“1”位。例如程
9、序“DECO VB0,VB10”,若VB0中的内容为00100110(即06),则执行编码指令后,VB10的内容为:0000000001000000,即第6位为1,其余位为0。,3.译码指令,段译码指令SEG是根据输入字节IN的低4位确定的十六进制数产生点亮7段显示器各段的代码,并分别送到输出字节OUT。例如程序“SEG VB0,QB0”,若VB0=04,则执行段译码指令后,在Q0.0Q0.7上可以输出01100110。,4.段译码指令,4.2.6 数学运算指令,加法指令ADD、减法指令SUB、乘法指令MUL和除法指令DIV是对有符号数进行操作,使用时注意存储单元的分配。用LAD编程时,IN1
10、、IN2和OUT可以使用不一样的存储单元,编写出的程序比较清晰。而用STL编程时,OUT要和其中的一个IN操作数使用同一个的存储单元,使得编写程序和使用计算结果时都很不方便,并且程序的LAD格式转换为STL格式与STL格式转换为LAD格式会有不同的转换结果。,1.加减乘除指令,梯形图运算时:IN1IN2=OUT,IN1IN2=OUT,IN1IN2=OUT,IN1IN2=OUT,1.加减乘除指令,语句表运算时:IN1OUT=OUT,OUTIN2=OUT,IN1OUT=OUT,OUTIN2=OUT,1.加减乘除指令,整数乘、除法的操作数为两个16位整数,乘积或商均为16位,不保留余数。双整数乘、除
11、法的操作数和运算结果均为32位。MUL:整数乘法产生双整数指令。DIV:整数除法产生双整数指令。两个16位整数相除,结果的高16位为余数,低16位为商。加减乘除运算的标志位有:零标志SM1.0,溢出标志SM1.1,负数标志SM1.2,除数为0标志SM1.3。,LD I0.0MOVW VW0,VW6DIV VW2,VD4,梯形图中除法指令有两个输入量和一个输出量,操作为IN1IN2=OUT。语句表中除法指令的输出量OUT同时又是被除数,操作为OUTIN2=OUT,将梯形图转换为语句表后会自动增加一条数据传送指令MOV。,注意,图中VD4的低位字为VW6,2.加1减1指令,加1(INC)或减1(D
12、EC)指令是对整数进行自动加1或减1的操作,指令中表示B、W、D(或DW)。字节加1或减1指令操作是无符号的,其余的指令操作为有符号的。梯形图运算时:IN1=OUT,IN1=OUT语句表运算时:OUT1=OUT,OUT1=OUT指令的标志位有:零标志SM1.0,溢出标志SM1.1,负数标志SM1.2。,3.逻辑运算指令,逻辑运算指令对逻辑数进行逻辑与、逻辑或、逻辑异或和逻辑非等操作。参与运算的操作数可以是字节、字或双字。逻辑与AND:把两个输入逻辑数按位相与后输出到OUT。逻辑或OR:把两个输入逻辑数按位相或后输出到OUT。逻辑异或XOR:把两个输入逻辑数按位相异或后输出到OUT。逻辑非INV
13、:对字节、字或双字的逻辑进行取反。,3.逻辑运算指令,【例4-1】逻辑运算指令举例。LD I0.0EU/I0.0上升沿时执行下面操作ANDB VB0,AC1/字节逻辑与ORB VB0,AC0/字节逻辑或XORB VB0,AC2/字节逻辑异或INVB VB10/字节逻辑取反,4.2.7 程序控制指令,条件结束指令END:根据前面的逻辑关系结束当前的扫描周期,返回到主程序的起点,只能在主程序中使用。无条件结束指令MEND:无条件的结束当前的扫描周期,返回到主程序的起点。在程序的适当位置插入无条件结束指令可以实现程序的分段调试。结束指令无操作数,在梯形图中以线圈的形式编程。,1.结束与停止指令,结束
14、指令,停止指令STOP可以使PLC从RUN切换到STOP工作模式,立即终止程序的执行。可以用在主程序、子程序和中断程序中。如果用在中断程序中执行停止指令,中断程序立即停止,并忽略全部等待执行的中断,继续执行主程序的剩余部分,在主程序的结束处,完成从RUN到STOP方式的切换。停止指令无操作数,在梯形图中以线圈的形式编程。,停止指令,2.监控定时器复位指令,监控定时器复位指令WDR又称为看门狗复位(Watchdog Reset)指令,它可以把监控定时器刷新,延长扫描周期,有效地避免监控定时器超时错误。监控定时器的定时时间为500ms,每次扫描都被操作系统自动复位一次,正常扫描周期小于监控定时器的
15、定时时间,它不会动作。当扫描周期大于监控定时器的定时时间,监控定时器会停止执行用户程序。为了防止正常工作情况下监控定时器动作,可以将监控定时器复位指令WDR插入到程序中适当位置,使监控定时器复位。,3.循环指令,循环开始指令FOR:表示循环开始,后面需要设置指针INDX、起始值INIT、结束值FINAL。循环结束指令NEXT:表示循环结束,无操作数。当循环开始指令FOR的逻辑条件满足时,反复执行FOR和NEXT之间的程序,从INIT的值开始,每执行一次,当前指针INDX的值加1,并将结果与FINAL的值相比,如果INDX的值大于FINAL,循环终止。,4.2.8 子程序调用指令,子程序将程序分
16、成容易管理的小块,只需要写一次子程序,可以反复调用,使程序结构简单清晰,易于查错和维护。子程序调用是有条件的,满足调用条件时,每个周期都执行一次子程序。未调用时不执行子程序,所以使用子程序可以减少扫描时间。,1.子程序的作用,创建子程序的方法是:在“编辑”菜单中执行命令“插入”“子程序”;或在程序编辑器视窗中点击鼠标右键,从弹出的菜单中执行命令“插入”“子程序”,会生成新的子程序。建立新的子程序后,可以看到子程序的图标,默认名称为SBR_N,编号N从0开始按顺序递增。用鼠标右键点击指令树中的子程序或中断程序的图标,在弹出的菜单中选择“重新命名”,可以修改相关的名称。,2.子程序的创建,3.子程
17、序的调用,子程序可以在主程序、中断程序或其他子程序中调用。一般CPU可以创建64个子程序,也可以嵌套调用,最大嵌套深度为8。,LD I0.4CALL 模拟量计算,AIW2,VW20,+2356,VD40,4.子程序的返回,子程序返回指令CRET用于结束子程序的执行,返回调用它的主程序的下一条指令处。调整调用子程序时,线圈在子程序内的位元件的状态保持不变;而正在定时的100ms定时器将停止定时,当前值保持不变,重新调用时继续定时;而10ms定时器和10ms定时器将继续定时。,4.2.9 查表指令,填表指令ATT将输入的一个字数据增加到指定的表格内。在梯形图中有两个输入端,DATA为数据输入端,指
18、明被填入的 数据;TBL为表格的首地址,指明被访问的表格。表内的第一个数是表的最大长度TL,第二个数是实际填表数EC。每向表内填入一个新的数据,实际填表数EC自动加1。除了TL和EC外,表内最多可以填入100个数据。,1.填表指令,1.填表指令,查表指令TF从指针INDX所指的地址开始查表格TBL,搜索与数据PTN的关系满足CMD定义的条件的数据。命令参数CMD=14,分别代表“=”、“”(不等于)、“”。如果发现了一个符合条件的数据,则INDX立即指向该数据。如果没有找到,INDX的值等于EC。指令格式为:FND=TBL,PTN,INDX(查找条件:=PTN)FND TBL,PTN,INDX
19、(查找条件:PTN)FND TBL,PTN,INDX(查找条件:PTN)FND TBL,PTN,INDX(查找条件:PTN),2.查表指令,2.查表指令,先入先出指令FIFO从表TBL中移走最先放进去的第一个数据,并将它送入DATA指定的地址。表中剩下的各项依次向上移动一个位置,每执行一次该指令,实际填表数EC会自动减1。其中输入端TBL为字,是表格的首地址,指明访问的表格;输出端DATA为INT,指明数据取出后要存放的目标单元。,3.先入先出指令,3.先入先出指令,先入后出指令LIFO从表TBL中移走最后放进去的数据,并将它送入DATA指定的地址。每执行一次该指令,表的项数EC减1。其中输入
20、端TBL为INT,是表格的首地址,指明访问的表格;输出端DATA为字,指明数据取出后要存放的目标单元。,4.先入后出指令,4.先入后出指令,存储器填充指令FILL用输入值IN填充从输出OUT指定的地址开始的N个字,N=1255.,5.存储器填充指令,读实时时钟指令TODR从实时钟读取当前时间和日期,并把它们装入以T为起始地址的8字节缓冲区,依次存放年、月、日、时、分、秒、0和星期。写实时时钟指令TODW将起始地址为T的 8字节缓冲区中的时间和日期写入实时钟。,6.读写实时钟指令,对于年而言,只用最低的两位有效数字,例如16#06表示(20)06年。编程时所有日期和时间数值均要用BCD码表示,而
21、BCD码从本质上说是十六进制,所以对于小时而言,16#23表示晚上11点;对于月而言,16#10表示10月;对于星期而言,1表示星期日,以此类推,7表示星期六,0表示禁用星期。,6.读写实时钟指令,6.读写实时钟指令,【例4-3】出现事故时,I0.0的上升沿产生中断,使输出Q1.0立即置位,同时将事故发生的日期和时间保存在VB10VB17中。/主程序 OB1LD SM0.1/第一次扫描时ATCH 0,0/指定在I0.0的上升沿执行0号中断程序ENI/允许全局中断/中断程序0(INT_0)LD SM0.0/该位总是为ONSIQ1.0,1/使Q1.0立即置位TODRVB10/读实时时钟,4.4.1
22、 使能输入与使能输出 4.4.2 数据传送指令 4.4.3 比较指令指令,4.4 任务概述,4.4.1 脉冲发生器,要求:用接通延时定时器和比较指令组成一个占空比可调的脉冲发生器。M1.0和10ms定时器T33组成一个占空比可调的脉冲发生器,使T33的当前值按图4.14所示的波形变化。比较指令用来产生脉冲宽度可调的方波,Q0.0为0的时间取决于比较指令“LDW=天33,40”中的 第二个操作数的值。将程序下载到PLC,运行该程序,监视T33当前值的变化情况,观察Q0.0是否输出方波。修改T33的设定值和比较指令中的常数后下载和运行该程序,观察是否能按要求输出波形的周期和占空比。,4.4.1 脉
23、冲发生器,4.4.2 逻辑运算指令的应用,要求:在I0.0的上升沿执行程序,各存储器单元初值为:VB0=11010101,VB1=11100101,VB2=11110000,VB3=11000000,VB4=00001011,VB5=11100101,VB6=11001011程序为:LD I0.0 EU I0.0上升沿时执行下面操作 INVB VB0 字节逻辑取反 ANDB VB1,VB2 字节逻辑与 ORB VB3,VB4 字节逻辑或 XORB VB5,VB6 字节逻辑异或将程序下载到PLC,并运行该程序。在状态表中写入二进制格式的VB0VB6的初值,用I0.0启动逻辑运算,观察运算结果。,
24、4.4.2 逻辑运算指令的应用,4.4.3 读写实时钟指令应用,用实时时钟指令控制路灯的定时接通和断开,20:00开灯;06:00关灯,其语句表程序为:LD SM0.0TODW VB0/读实时时钟,小时在VB3LDB=VB3,16#20/20点0点(日期、时间值 用BCD码表示)OB VB3,16#06/或0点6点=Q0.0/点亮路灯,4.5 总结分析,功能指令包含传送、移位、算术运算、逻辑运算、数据转换、高速处理、循环、子程序调用、通信和PID指令等,可以完成一般梯形图所不能解决的问题,具有过程控制、数据处理和一些特殊功能。功能指令拓宽了PLC的应用范围,增加了 PLC的灵活性。但是功能指令
25、涉及到的知识比较多,有指令格式、功能、字符含义、数据类型、使能控制、标志位等,使用时应该首先搞清楚以上概念,才能正确、很好地编写出功能指令的程序。,4.6 技能训练,用移位指令设计霓虹灯控制的程序,要求16个霓虹灯间隔1s轮流点亮,然后全亮,依次循环。用一个开关控制移动的方向,实现左右循环。将程序下载到PLC,并运行该程序。修改间隔时间,再运行。,试设计程序,当VB0=00000011,00000101,00001000时,执行SEG指令后,QB0的输出,并在数码管上显示输出值。将程序下载到PLC,并运行该程序。修改间VB0的数据,再运行。,试设计程序,用实时时钟指令控制路灯的定时接通和断开,可以校准PLC的时钟。5月1日至10月30日,每天20:00开灯;06:00关灯;11月1日至4月30日,每天18:00开灯;07:00关灯,,4.6 技能训练,感谢您的参与 谢谢!,