《PLC编程语言学习指令大全.ppt》由会员分享,可在线阅读,更多相关《PLC编程语言学习指令大全.ppt(123页珍藏版)》请在三一办公上搜索。
1、4.4 位逻辑指令,位逻辑指令处理的对象为二进制位信号。位逻辑指令扫描信号状态“1”和“0”位,并根据布尔逻辑对它们进行组合,所产生的结果(“1”或“0”)称为逻辑运算结果,存储在状态字的“RLO”中。4.4.1 触点与线圈 4.4.2 基本逻辑指令 4.4.3 置位和复位指令 4.4.4 RS和SR触发器 4.4.5 跳变沿检测指令,4.4.1 触点与线圈,在LAD(梯形图)程序中,通常使用类似继电器控制电路中的触点符号及线圈符号来表示PLC的位元件,被扫描的操作数(用绝对地址或符号地址表示)则标注在触点符号的上方,如图所示。,1.常开触点,对于常开触点(动合触点),则对“1”扫描相应操作数
2、。在PLC中规定:若操作数是“1”则常开触点“动作”,即认为是“闭合”的;若操作数是“0”,则常开触点“复位”,即触点仍处于打开的状态。常开触点所使用的操作数是:I、Q、M、L、D、T、C。,2.常闭触点,常闭触点(动断触点)则对“0”扫描相应操作数。在PLC中规定:若操作数是“1”则常闭触点“动作”,即触点“断开”;若操作数是“0”,则常闭触点“复位”,即触点仍保持闭合。常闭触点所使用的操作数是:I、Q、M、L、D、T、C。,3.输出线圈(赋值指令),输出线圈与继电器控制电路中的线圈一样,如果有电流(信号流)流过线圈(RLO=“1”),则被驱动的操作数置“1”;如果没有电流流过线圈(RLO=
3、“0”),则被驱动的操作数复位(置“0”)。输出线圈只能出现在梯形图逻辑串的最右边。输出线圈等同于STL程序中的赋值指令(用等于号“=”表示),所使用的操作数可以是:Q、M、L、D。,4.中间输出,在梯形图设计时,如果一个逻辑串很长不便于编辑时,可以将逻辑串分成几个段,前一段的逻辑运算结果(RLO)可作为中间输出,存储在位存储器(I、Q、M、L或D)中,该存储位可以当作一个触点出现在其他逻辑串中。中间输出只能放在梯形图逻辑串的中间,而不能出现在最左端或最右端。,与下面程序等效,4.4.2 基本逻辑指令,基本逻辑指令包括:“与”指令“与非”指令“或”指令“或非”指令“异或”指令“异或非”指令逻辑
4、块的操作信号流取反指令,1.逻辑“与”指令,逻辑“与”指令使用的操作数可以是:I、Q、M、L、D、T、C。有2种指令形式(STL和FBD),用LAD也可以实现逻辑“与”运算。,2.逻辑“与非”指令,逻辑“与非”指令使用的操作数可以是:I、Q、M、L、D、T、C。有2种指令形式(STL和FBD),用LAD也可以实现逻辑“与非”运算。,3.逻辑“或”指令,逻辑“或”指令使用的操作数可以是:I、Q、M、L、D、T、C。有2种指令形式(STL和FBD),用LAD也可以实现逻辑“或”运算。,4.逻辑“或非”指令,逻辑“或非”指令使用的操作数可以是:I、Q、M、L、D、T、C。有2种指令形式(STL和FB
5、D),用LAD也可以实现逻辑“或非”运算。,5.逻辑“异或”指令,6.逻辑“异或非”指令,7.逻辑块的操作,8.信号流取反指令,信号流取反指令的作用就是对逻辑串的RLO值进行取反。指令格式及示例见表4-13。当输入位I0.0和I0.1同时动作时,Q4.0信号状态为“0”;否则,Q4.0信号状态为“1”。,4.4.3 置位和复位指令,置位(S)和复位(R)指令根据RLO的值来决定操作数的信号状态是否改变,对于置位指令,一旦RLO为“1”,则操作数的状态置“1”,即使RLO又变为“0”,输出仍保持为“1”;若RLO为“0”,则操作数的信号状态保持不变。对于复位操作,一旦RLO为“1”,则操作数的状
6、态置“0”,即使RLO又变为“0”,输出仍保持为“0”;若RLO为“0”,则操作数的信号状态保持不变。这一特性又被称为静态的置位和复位,相应地,赋值指令被称为动态赋值。,4.4.4 RS和SR触发器,RS触发器为“置位优先”型触发器(当R和S驱动信号同时为“1”时,触发器最终为置位状态);SR触发器为“复位优先”型触发器(当R和S驱动信号同时为“1”时,触发器最终为复位状态)。RS触发器和SR触发器的“位地址”、置位(S)、复(S)及输出(Q)所使用的操作数可以是:I、Q、M、L、D。,1.RS触发器,2.SR触发器,3.RS触发器和SR触发器的工作时序,示例梯形图程序,工作时序,4.4.5
7、跳变沿检测指令,STEP 7中有2类跳变沿检测指令,一种是对RLO的跳变沿检测的指令,另一种是对触点的跳变沿直接检测的梯形图方块指令。RLO上升沿检测指令 RLO下降沿检测指令触点信号上升沿检测指令 触点信号下降沿检测指令【例4-4-2】边沿检测指令的应用,1.RLO上升沿检测指令,2.RLO下降沿检测指令,3.RLO边沿检测指令的工作时序,工作时序,示例程序,4.触点信号上升沿检测指令,5.触点信号下降沿检测指令,6.触点信号边沿检测指令的工作时序,工作时序,示例程序,4.5 定时器与计数器指令,4.5.1 定时器指令 4.5.2 计数器指令 4.5.3 CPU时钟存储器,4.5.1 定时器
8、指令,S_PULSE(脉冲S5定时器)S_PEXT(扩展脉冲S5定时器)S_ODT(接通延时S5定时器)S_ODTS(保持型接通延时S5定时器)S_OFFDT(断电延时S5定时器),1.S_PULSE(脉冲S5定时器)(1/3),脉冲定时器的梯形图及功能块图指令,1.S_PULSE(脉冲S5定时器)(2/3),脉冲定时器的线圈指令,1.S_PULSE(脉冲S5定时器)(3/3),工作时序,示例程序,【例4-5-1】脉冲定时器应用:优先抢答器设计。,【例4-5-1】设计说明:参赛者要抢答主持人所提问题时,需抢先按下桌上的按钮;指示灯亮后需待主持人按下“复位”键R后才熄灯;对初中班学生照顾,只要按
9、下SB11和SB12中任一个按钮灯HL1都亮;对高三班学生限制,只有SB31和SB32都按下时灯HL3才亮;若在主持人按下“开始”按钮S后10s内有抢答按钮压下,则电磁铁YC得电,使彩球摇动,以示竞赛者得到一次幸运的机会;如果定时到仍未有抢答,则禁止继续抢答。,端子接线图,【例4-5-1】,I/O地址分配表,【例4-5-1】,控制程序:建立允许抢答和禁止抢答标志,【例4-5-1】,设置抢答定时器,【例4-5-1】,初中组抢答控制,【例4-5-1】,高一组抢答控制,高三组抢答控制,2.S_PEXT(扩展脉冲S5定时器)(1/3),扩据脉冲S5定时器LAD及FBD指令,2.S_PEXT(扩展脉冲S
10、5定时器)(2/3),扩据脉冲S5定时器线圈指令,2.S_PEXT(扩展脉冲S5定时器)(3/3),示例程序,工作波形,【例4-5-2】扩展脉冲定时器应用电动机延时自动关闭控制。控制要求:按动起动按钮S1(I0.0),电动机M(Q4.0)立即起动,延时5分钟以后自动关闭。起动后按动停止按钮S2(I0.1),电动机立即停机。,【例4-5-2】,控制程序(LAD),控制程序(STL),3.S_ODT(接通延时S5定时器)(1/3),接通延时S5定时器LAD及FBD指令,3.S_ODT(接通延时S5定时器)(2/3),接通延时S5定时器线圈指令,3.S_ODT(接通延时S5定时器)(3/3),示例程
11、序,工作波形,【例4-5-3】接通延时定时器和脉冲定时器应用用定时器构成一脉冲发生器,当满足一定条件时,能够输出一定频率和一定占空比的脉冲信号。工艺要求:当按钮S1(I0.0)按下时,输出指示灯H1(Q4.0)以灭2s,亮1s规律交替进行。,【例4-5-3】,控制程序(使用接通延时定时器),控制程序(使用脉冲定时器),4.S_ODTS(保持型接通延时S5定时器)(1/3),保持型接通延时S5定时器LAD及FBD指令,4.S_ODTS(保持型接通延时S5定时器)(2/3),保持型接通延时S5定时器线圈指令,4.S_ODTS(保持型接通延时S5定时器)(3/3),示例程序,工作波形,5.S_OFF
12、DT(断电延时S5定时器)(1/3),断电延时S5定时器LAD及FBD指令,5.S_OFFDT(断电延时S5定时器)(2/3),断电延时S5定时器线圈指令,5.S_OFFDT(断电延时S5定时器)(3/3),示例程序,工作波形,4.5.2 计数器指令,S7-300的计数器都是16位的,因此每个计数器占用该区域2个字节空间,用来存储计数值。不同的CPU模板,用于计数器的存储区域也不同,最多允许使用64512个计数器。计数器的地址编号:C0C511。S_CUD(加/减计数器)S_CU(加计数器)S_CD(减计数器)计数器线圈指令,1.S_CUD(加/减计数器)块图指令,2.S_CU(加计数器)块图
13、指令,3.S_CD(减计数器)块图指令,4.计数器的线圈指令,除了前面介绍的块图形式的计数器指令以外,S7-300系统还为用户准备了LAD环境下的线圈形式的计数器。这些指令有计数器初值预置指令SC、加计数器指令CU和减计数器指令CD。,加计数器线圈指令应用示例,初值预置SC指令若与CU指令配合可实现S_CU指令的功能。,减计数器线圈指令应用示例,SC指令若与CD指令配合可实现S_CD指令的功能。,加/减计数器线圈指令应用示例,SC指令若与CU和CD配合可实现S_CUD的功能。,4.5.3 访问CPU的时钟存储器,要使用该功能,在硬件配置时需要设置CPU的属性,其中有一个选项为Clock Mem
14、ory,选中选择框就可激活该功能。,设置CPU的时钟存储器,在Memory Byte区域输入想为该项功能设置的MB的地址,如需要使用MB10,则直接输入10。Clock Memory的功能是对所定义的MB的各个位周期性地改变其二进制的值(占空比为1:1)。Clock Memory的各位的周期及频率见表。,【例4-5-5】时钟存储器与计数器的应用。当定时器不够用时,可以将计数器扩展为定时器。图中分别给出了用减计数器扩展定时器的控制程序,程序中使用了CPU的时钟存储器,设置MB10为时钟存储器,由表4-39可知M10.0的变化周期为0.1s。,4.6 数字指令,4.6.1 装入与传送指令4.6.2
15、 转换指令4.6.3 比较指令4.6.4 算数运算指令4.6.5 字逻辑运算指令4.6.6 移位指令4.6.7 数字指令综合应用,4.6.1 装入和传送指令,装入指令(L)和传送指令(T),可以对输入或输出模块与存储区之间的信息交换进行编程。对累加器1的装入指令对累加器1的传送指令 状态字与累加器1之间的装入和传送指令 与地址寄存器有关的装入和传送指令 LC(定时器/计数器装载指令)MOVE指令,1.对累加器1的装入指令,2.对累加器1的传送指令,T指令可以将累加器1的内容复制到被寻址的操作数,所复制的字节数取决于目标地址的类型(字节、字或双字),指令格式如下:T操作数其中的操作数可以为直接I
16、/O区(存储类型为PQ)、数据存储区或过程映像输出表的相应地址(存储类型为Q)。,3.状态字与累加器1之间的装入和传送指令,L STW(将状态字装入累加器1)将状态字装入累加器1中,指令的执行与状态位无关,而且对状态字没有任何影响。指令格式如下:LSTWT STW(将累加器1的内容传送到状态字)使用T STW指令可以将累加器1的位08传送到状态字的相应位,指令的执行与状态位无关,指令格式如下:TSTW,4.与地址寄存器有关的装入和传送指令(1/4),LAR1(将操作数的内容装入地址寄存器AR1),4.与地址寄存器有关的装入和传送指令(2/4),LAR2(将操作数的内容装入地址寄存器2)使用LA
17、R2指令可以将操作数的内容(32位指针)装入地址寄存器AR2,指令格式同LAR1,其中的操作数可以是累加器1、指针型常数(P#)、存储双字(MD)、本地数据双字(LD)、数据双字(DBD)或背景数据双字(DID),但不能用AR1。,4.与地址寄存器有关的装入和传送指令(3/4),TAR1(将地址寄存器1的内容传送到操作数),4.与地址寄存器有关的装入和传送指令(4/4),TAR2(将地址寄存器2的内容传送到操作数)使用TAR2指令可以将地址寄存器AR1的内容(32位指针)传送给被寻址的操作数,指令格式同TAR1。其中的操作数可以是累加器1、存储双字(MD)、本地数据双字(LD)、数据双字(DB
18、D)、背景数据双字(DID),但不能用AR1。CAR(交换地址寄存器1和地址寄存器2的内容)使用CAR指令可以交换地址寄存器AR1和地址寄存器AR2的内容,指令不需要指定操作数。指令的执行与状态位无关,而且对状态字没有任何影响。,5.LC(定时器/计数器装载指令,使用LC指令可以在累加器1的内容保存到累加器2中之后,将指定定时器字中当前时间值和时基以BCD码(0999)格式装入到累加器1中,或将指定计数器的当前计数值以BCD码(0999)格式装入到累加器1中。指令格式如下:LC,6.MOVE指令,MOVE指令为功能框形式的传送指令,能够复制字节、字或双字数据对象。应用中IN和OUT端操作数可以
19、是常数、I、Q、M、D、L等类型,但必须在宽度上匹配。,4.6.2 转换指令,转换指令是将累加器1中的数据进行数据类型转换,转换结果仍放在累加器1中。在STEP 7中,可以实现BCD码与整数、整数与长整数、长整数与实数、整数的反码、整数的补码、实数求反等数据转换操作。BCD码和整数到其他类型转换指令 整数和实数的码型变换指令 实数取整指令 累加器1调整指令,1.BCD码和整数到其他类型转换指令(1/3),STL形式的指令(1),1.BCD码和整数到其他类型转换指令(2/3),STL形式的指令(2),1.BCD码和整数到其他类型转换指令(3/3),LAD和FBD形式的指令,2.整数和实数的码型变
20、换指令(1/2),STL形式的指令,2.整数和实数的码型变换指令(2/2),LAD和FBD形式的指令,3.实数取整指令(1/2),STL形式的指令,3.实数取整指令(2/2),LAD和FBD形式的指令,4.累加器1调整指令,4.6.3 比较指令,比较指令可完成整数、长整数或32位浮点数(实数)的相等、不等、大于、小于、大于或等于、小于或等于等比较。整数比较指令 长整数比较指令 实数比较指令,1.整数比较指令,1.整数比较指令(示例),2.长整数比较指令,2.长整数比较指令(示例),3.实数比较指令,3.实数比较指令(示例),4.6.4 算数运算指令,算术运算指令可完成整数、长整数及实数的加、减
21、、乘、除、求余、求绝对值等基本算数运算;以及32位浮点数的平方、平方根、自然对数、基于e的指数运算及三角函数等扩展算数运算。基本算术运算指令 扩展算术运算指令,1.基本算数运算指令(整数运算),1.基本算数运算指令(长整数运算),1.基本算数运算指令(实数运算),【例4-6-1】16位整数的算术运算指令应用。,【例4-6-1】16位整数的算术运算指令应用。,【例4-6-2】求输入双字ID10的内容与常数32相除的余数,结果保存到MD20中。,2.扩展算数运算指令,4.6.5 字逻辑运算指令,字逻辑运算指令可对两个16位(WORD)或32位(DWORD)的二进制数据,逐位进行逻辑与、逻辑或、逻辑
22、异或运算。对于STL形式的字逻辑运算指令,可对累加器1和累加器2中的字或双字数据进行逻辑运算,结果保存在累加器1中,若结果不为0,则对状态标志位CC1置“1”,否则对CC1置“0”。对于LAD和FBD形式的字逻辑运算指令,由参数IN1和IN2提供参与运算的两个数据,运算结果保存在由OUT指定的存储区中。,字逻辑运算指令格式,4.6.6 移位指令,移位指令有2种类型:基本移位指令可对无符号整数、有符号长整数、字或双字数据进行移位操作;循环移位指令可对双字数据进行循环移位和累加器1带CC1的循环移位操作。有符号右移指令字移位指令双字移位指令双字循环移位指令带累加器循环移位指令,1.有符号右移指令格
23、式,2.字移位指令格式,3.双字移位指令格式,4.双字循环移位指令格式,5.带累加器循环移位指令格式,4.7 控制指令,控制指令可控制程序的执行顺序,使得CPU能根据不同的情况执行不同的程序。控制指令有3类:4.7.1 逻辑控制指令4.7.2 程序控制指令4.7.3 主控继电器指令,4.7.1 逻辑控制指令,逻辑控制指令是指逻辑块内的跳转和循环指令,这些指令可以中断原有的线性程序扫描,并跳转到目标地址处重新执行线性程序扫描。目标地址由跳转指令后面的标号指定,该地址标号指出程序要跳往何处,可向前跳转,也可以向后跳转,最大跳转距离为-32768或32767字。无条件跳转指令 多分支跳转指令 条件跳
24、转指令 循环指令,1.无条件跳转指令,无条件跳转指令JU执行时,将直接中断当前的线性程序扫描,并跳转到由指令后面的标号所指定的目标地址处重新执行线性程序扫描。,【例4-7-1】无条件跳转指令的使用。当程序执行到无条件跳转指令时,将直接跳转到L1处执行。,2.多分支跳转指令,多分支跳转指令JL的指令格式如下:JL 如果累加器1低字中低字节的内容小于JL指令和由JL指令所指定的标号之间的JU指令的数量,JL指令就会跳转到其中一条JU处执行,并由JU指令进一步跳转到目标地址;如果累加器1低字中低字节的内容为0,则直接执行JL指令下面的第一条JU指令;如果累加器1低字中低字节的内容为1,则直接执行JL
25、指令下面的第二条JU指令;如果跳转的目的地的数量太大,则JL指令跳转到目的地列表中最后一个JU指令之后的第一个指令。,【例4-7-2】多分支跳转指令的使用。,3.条件跳转指令,【例4-7-3】条件跳转指令的使用。程序示例如图4-44所示。当I0.0与I0.1同时为“1”时,则跳转到L2处执行;否则,到L1处执行(顺序执行)。,4.循环指令,循环指令的格式如下:LOOP 使用循环指令(LOOP)可以多次重复执行特定的程序段,由累加器1确定重复执行的次数,即以累加器1的低字为循环计数器。LOOP指令执行时,将累加器1低字中的值减1,如果不为0,则继续循环过程,否则执行LOOP指令后面的指令。循环体
26、是指循环标号和LOOP指令间的程序段。,【例4-7-4】循环指令的使用。利用循环指令可以完成有规律的重复计算过程,下面是求阶乘“8!”的示例程序:,4.7.2 程序控制指令,程序控制指令是指功能块(FB、FC、SFB、SFC)调用指令和逻辑块(OB,FB,FC)结束指令。调用块或结束块可以是有条件的或是无条件的。基本控制指令子程序调用指令 CALL指令可以调用用户编写的功能块或操作系统提供的功能块,CALL指令的操作数是功能块类型及其编号,当调用的功能块是FB块时还要提供相应的背景数据块DB。使用CALL指令可以为被调用功能块中的形参赋以实际参数,调用时应保证实参与形参的数据类型一致。,1.基本控制指令,2.子程序调用指令,4.7.3 主控继电器指令,主控继电器(MCR)是一种继电器梯形图逻辑的主开关,用于控制电流(能流)的通断。,