可编程序控制器应用第三章.ppt_第1页
可编程序控制器应用第三章.ppt_第2页
可编程序控制器应用第三章.ppt_第3页
可编程序控制器应用第三章.ppt_第4页
可编程序控制器应用第三章.ppt_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

后一页,返回,安徽理工大学电信学院,可编程控制器原理与应用,后一页,返回,安徽理工大学电信学院,第3章西门子小型可编程控制器S7-200,返回,后一页,前一页,3.2.4程序控制指令1结束及暂停指令,有条件结束(END)指令根据前一个逻辑条件终止主程序。注释:您可以在主程序中使用有条件结束指令,但不能在子程序或中断例行程序中使用。Micro/WIN自动在主程序中增加无条件结束。,返回,后一页,前一页,停止指令STOP使可编程序控制器从运行模式进入停止模式,立即终止程序的执行。如果在中断程序中执行停止指令,中断程序立即终止,并忽略全部等待执行的中断,继续执行主程序的剩余部分,并在主程序的结束处,完成从运行方式至停止方式的转换。,停止指令,返回,后一页,前一页,2.看门狗指令(WDR),监控定时器(Watchdog)又称看门狗,它的定时时间为300ms,每次扫描它都被自动复位一次,正常工作时如果扫描周期小于300ms,监控定时器不起作用。如果强烈的外部干扰使可编程序控制器偏离正常的程序执行路线,监控定时器不再被周期性地复位,定时时间到时,可编程序控制器将停止运行。,返回,后一页,前一页,在以下情况下扫描周期可能大于300ms,监控定时器会停止执行用户程序:(1)用户程序很长。(2)出现中断事件时,执行中断程序的时间较长。(3)循环指令使扫描时间延长。为了防止在正常情况下监控定时器动作,可将监控定时器复位(WDR)指令插人到程序中适当的地方,使监控定时器复位。如果FORNEXT循环程序的执行时间可能超过监控定时器的定时时间,可将WDR指令插入到循环程序中。条件跳转指令JMP若在它对应的标号之后(即程序往回跳),可能因连续反复跳步使它们之间的程序被反复执行,总的执行时间超过监控定时器的定时时间。为了避免出现这样的情况,可在JMP指令和对应的标号之间插入WDR指令。,返回,后一页,前一页,使用WDR指令后,在终止本次扫描之前,下列操作将被禁止:(1)通信(自由口模式除外)。(2)I/O更新(立即I/O除外)。(3)强制更新。(4)SM位更新(不能更新SM0)(5)运行时间诊断。(6)在中断程序中的STOP指令(7)如果扫描时间超过25s,10ms定时器和l00ms定时器不能正确累计时间。如果将CPU的方式开关切换到STOP位置,1.4s内CPU转到停止模式。,返回,后一页,前一页,程序示例如下:NETWORK1/检测到I/O错误时,强制转换至STOP(停止)模式LDSM5.0STOPNETWORK2/M5.6打开时,重新触发CPU监视器复原/允许扩展扫描LDM5.6WDR/重新触发CPU监视器复原NETWORK3/I0.0打开时,中止当前扫描LDI0.0END,返回,后一页,前一页,3.跳转及标号指令(例),跳转至标签(JMP)指令对程序中的指定标签(n)执行分支操作。跳转接受时,堆栈顶值始终为逻辑1。标签(LBL)指令标记跳转目的地(n)的位置。您可以在主程序、子程序或中断例行程序中使用跳转指令。跳转及其对应的标签指令必须始终位于相同的代码段中(主程序、子程序或中断例行程序)。您不能从主程序跳转至子程序或中断例行程序中的标签,与此相似,您也不能从子程序或中断例行程序跳转至该子程序或中断例行程序之外的标签。您可以在SCR段中使用跳转指令,但对应的标签指令必须位于相同的SCR段内。,返回,后一页,前一页,4循环指令,在控制系统中经常遇到需要重复执行若干次同样的任务的情况,这时可以使用循环指令。FOR指令表示循环的开始,NEXT指令表示循环的结束,并将堆栈的栈顶值设为1。驱动FOR指令的逻辑条件满足时,反复执行FOR与NEXT之间的指令。在FOR指令中,需要设置当前循环次数计数器(INDX)、起始值(INIT)和结束值(FINAL)。假设INIT等于1,FINAL等于10,每次执行FOR与NEXT之间的指令后,INDX的值加1,并将结果与结束值比较。如果INDX大于结束值,则循环终止,FOR与NEXT之间的指令将被执行10次。如果起始值大于结束值,则不执行循环。,返回,后一页,前一页,图中的I2.0接通时,执行100次标有1的外层循环,I2.0和I2.1同时接通时,每次外循环都执行2次标有2的内层循环。,返回,后一页,前一页,下面是使用FOR/NEXT循环的注意事项:(1)如果启动了FOR/NEXT循环,除非在循环内部修改了结束值,否则循环就一直进行,直到循环结束。在循环的执行过程中,可以改变循环的参数(2)再次启动循环时,它将初始值INIT传送到指针INDX中。FOR指令必须与NEXT指令配套使用。允许循环嵌套,即FORNEXT循环在另一个FORNEXT循环之中,最多可嵌套8层。,返回,后一页,前一页,5.子程序(例),调用子程序(CALL)指令将控制转换给子程序(SBR_n)。在子程序完成执行后。控制返回至“调用子程序”之后的指令。子程序嵌套最多八层。可以使用带参数或不带参数的“调用子程序”指令,每个子程序调用的输入输出参数最大限制为16。将参数值指定给子程序中的局部内存时应遵守下列规则。参数值指定给局部内存的顺序由CALL指定,参数从L.0开始。一至八位连续位参数值被指定给从Lx.0开始持续至Lx.7的单字节。字节、字和双字数值被指定给局部内存,位于字节边界(LBx、LWx或LDx)位置。,返回,后一页,前一页,在带参数的调用子程序指令中,参数必须与子程序局部变量表中定义的变量完全匹配。参数顺序必须以输入参数开始,其次是输入输出参数,然后是输出参数。,返回,后一页,前一页,3.2.5运算类指令1比较指令,返回,后一页,前一页,比较指令用来比较两个数IN1与IN2的大小。在梯形图中,满足比较关系式给出的条件时,触点接通。在语句表中,满足条件时,将堆栈顶置1。字节比较指令用来比较两个无符号数字节IN1与IN2的大小;整数比较指令用来比较两个字IN1与IN2的大小,最高位为符号位,例如16#7FFF16#8000(后者为负数);双字整数比较指令用来比较两个双字INl1与IN2的大小,双字整数比较是有符号的,16#7FFFFFFF16#80000000(后者为负数);实数比较指令用来比较两个实数IN1与IN2的大小,实数比较是有符号的。,返回,后一页,前一页,例如一自动仓库存放某种货物,最多6000箱,需对所存的货物进出计数。货物多于1000箱,灯L1亮;货物多于5000箱,灯L2亮。其中,L1和L2分别受Q0.0和Q0.1控制,数值1000和5000分别存储在VW20和VW30字存储单元中。本控制系统的程序如图3.32所示。,返回,后一页,前一页,图3.32自动仓库的控制程序,返回,后一页,前一页,2加法和减法指令(1)+I,整数加法指令。使能输入有效时,将两个单字长(16位)的符号整数IN1和IN2相加,产生一个16位整数结果OUT。(2)+D,双整数加法指令。使能输入有效时,将两个双字长(32位)的符号双整数IN1和IN2相加,产生一个32位双整数结果OUT。(3)+R,实数加法指令。使能输入有效时,将两个双字长(32位)的实数IN1和IN2相加,产生一个32位实数结果OUT。,返回,后一页,前一页,返回,后一页,前一页,减法指令是对有符号数进行相减操作。包括:整数减法、双整数减法和实数减法。这三种减法指令与所对应的加法指令除运算法则不同之外,其他方面基本相同。,返回,后一页,前一页,3.乘法和除法指令(1)*I,整数乘法指令。使能输入有效时,将两个单字长(16位)的符号整数IN1和IN2相乘,产生一个16位整数结果OUT。(2)MUL,完全整数乘法指令。使能输入有效时,将两个单字长(16位)的符号整数IN1和IN2相乘,产生一个32位双整数结果OUT。(3)*D,双整数乘法指令。使能输入有效时,将两个双字长(32位)的符号整数IN1和IN2相乘,产生一个32位双整数结果OUT。(4)*R,实数乘法指令。使能输入有效时,将两个双字长(32位)的实数IN1和IN2相乘,产生一个32位实数结果OUT。,返回,后一页,前一页,返回,后一页,前一页,3.2.6数学函数指令1.平方根,SQRT,平方根指令。把一个双字长(32位)的实数IN开平方,得到32位的实数结果。在LAD和FBD中,以指令盒形式编程,执行结果:SQRT(IN)=OUT。在STL中,执行结果:SQRT(IN)=OUT。指令格式:SQRTIN,OUT例:SQRTVD0,AC0,返回,后一页,前一页,2.自然对数,LN,自然对数指令。将一个双字长(32位)的实数IN取自然对数,得到32位的实数结果。,返回,后一页,前一页,应用实例:求以10为底的50(存于VD0)的常用对数,结果放到AC0。本运算程序如图3.33所示。,返回,后一页,前一页,3.指数,EXP,指数指令。将一个双字长(32位)的实数IN取以e为底的指数,得到32位的实数结果OUT。在LAD和FBD中,以指令盒形式编程,执行结果:EXP(IN)=OUT。在STL中,执行结果:EXP(IN)=OUT。指令格式:EXPIN,OUT例:EXPVD0,AC0,返回,后一页,前一页,4.正弦、余弦、正切,SIN、COS、TAN,即正弦、余弦、正切指令。将一个双字长(32位)的实数弧度值IN分别取正弦、余弦、正切,各得到32位的实数结果。如果已知输入值为角度,要先将角度值转化为弧度值,方法:使用(*R)MUL_R指令用角度值乘以/180即可。,返回,后一页,前一页,应用实例:求COS160的值(见图3-34)。,图3.34求COS160的值的程序,返回,后一页,前一页,3.2.7增减指令1.字节增和字节减,INCB,字节增指令。使能输入有效时,把一字节长的无符号输入数(IN)加1,得到一字节的无符号输出结果OUT。DECB,字节减指令。使能输入有效时,把一字节长的无符号输入数(IN)减1,得到一字节的无符号输出结果OUT。,返回,后一页,前一页,2.字增和字减,INCW,字增指令。使能输入有效时,把一字长(16位)的有符号输入数(IN)加1,得到一字长的有符号输出结果OUT。DECW,字减指令。使能输入有效时,把一字长的有符号输入数(IN)减1,得到一字长的有符号输出结果OUT,返回,后一页,前一页,3.双字增和双字减,INCD,双字增指令。使能输入有效时,把双字长(32位)的有符号输入数(IN)加1,得到双字长的有符号输出结果OUT。DECD,双字减指令。使能输入有效时,把双字长的有符号输入数(IN)减1,得到双字长的有符号输出结果OUT。,返回,后一页,前一页,4.应用实例:食品加工厂对饮料生产线上的盒装饮料进行计数,每24盒为一箱,要求能记录生产的箱数。,图3.35盒装饮料计数程序,返回,后一页,前一页,3.2.8逻辑运算1.字节逻辑运算,字节逻辑运算包括字节与、字节或、字节异或、字节取反。AND(与运算)字节(ANDB)指令对两个输入数值(IN1和IN2)的对应位执行AND(与运算)操作,并在内存位置(OUT)中载入结果。OR(或运算)字节(ORB)指令对两个输入数值(IN1和IN2)的对应位执行OR(或运算)操作,并在内存位址(OUT)中载入结果。ExclusiveOR(异-或运算)字节(XORB)指令对两个输入数值(IN1和IN2)的对应位执行XOR(异-或运算)操作,并在内存位置(OUT)中载入结果。,返回,后一页,前一页,2.字逻辑运算,字逻辑运算包括字与、字或、字异或、字取反(INV)。AND(与运算)字(ANDW)指令对两个输入数值(IN1和IN2)的对应位执行AND(与运算)操作,并在内存位置(OUT)载入结果。OR(或运算)字(ORW)指令对两个输入数值的对应位执行OR(或运算)操作,并在内存位置(OUT)载入结果。ExclusiveOR(异-或运算)字(XORW)指令对两个输入数值(IN1和IN2)的对应位执行XOR(异-或运算)操作,并在内存位置(OUT)载入结果。,返回,后一页,前一页,图3.36字逻辑运算实例,返回,后一页,前一页,3.双字逻辑运算,双字逻辑运算包括双字与、双字或、双字异或、双字取反。AND(与运算)双字(ANDD)指令对两个双字输入值的对应位执行AND(与运算)操作,并在双字中载入结果(OUT)。OR(或运算)双字(ORD)指令对两个双字输入值的对应位执行OR(或运算)操作,并在双字中载入结果(OUT)。ExclusiveOR(异-或运算)双字(XORD)指令对两个双字输入值的对应位执行XOR操作,并在双字中载入结果(OUT)。,返回,后一页,前一页,3.2.9传送类指令,1.单一传送(1)MOVB,字节传送指令移动字节(MOVE)指令将输入字节(IN)移至输出字节(OUT),不改变原来的数值。(2)MOVW,字传送指令移动字(MOVW)指令将输入字(IN)移至输出字(OUT),不改变原来的数值。(3)MOVD,双字传送指令移动双字(MOVD)指令将输入双字(IN)移至输出双字(OUT),不改变原来的数值。,返回,后一页,前一页,移动字节立即读取指令读取实际输入IN(作为字节),并将结果写入OUT,但进程映像寄存器未更新。,(5)BIR,传送字节立即读指令,(4)MOVR,实数传送指令移动实数(MOVR)指令将32位、实数输入双字(IN)移至输出双字(OUT),不改变原来的数值。,返回,后一页,前一页,移动字节立即写入(BIW)指令从位置IN读取数值并写入(以字节为单位)实际输出OUT,以及对应的进程图像位置。,(6)BIW,传送字节立即写指令,返回,后一页,前一页,2.块传送,(1)BMB,字节块传送指令成块移动字节(BMB)指令将字节数目(N)从输入地址(IN)移至输出地址(OUT)。N的范围为1至255。(2)BMW,字块传送指令成块移动字(BMW)指令将字数目(N)从输入地址(IN)移至输出地址(OUT)。(3)BMD,双字块传送指令成块移动双字(BMD)指令将双字数目(N)从输入地址(IN)移至输出地址(OUT)。N的范围是1至255。,返回,后一页,前一页,3.2.10移位指令1.左移和右移(1)字节左移和字节右移,SLB和SRB,字节左移和字节右移。使能输入有效时,把字节型输入数据IN左移或右移N位后,再将结果输出到OUT所指的字节存储单元。最大实际可移位次数为8。,返回,后一页,前一页,移位指令对每个移出位补0。如果移位数目(N)大于或等于8,则数值最多被移位8次。如果移位数目大于0,溢出内存位(SM1.1)采用最后一次移出位的数值。如果移位操作结果为0,设置0内存位(SM1.0)。右移和向左移字节操作不带符号。,返回,后一页,前一页,(2)字左移和字右移,SLW和SRW,字左移和字右移。指令盒与字节移位比较,只有名称变为SHR_W和SHR_W。使能输入有效时,把字型输入数据IN左移或右移N位后,再将结果输出到OUT所指的字存储单元。最大实际可移位次数为16。指令格式:SLWOUT,N(字左移)SRWOUT,N(字右移)例:SLWMW0,2SRWLW0,3,返回,后一页,前一页,(3)双字左移和双字右移,SLD和SRD,双字左移和双字右移。指令盒与字节移位比较,只有名称变为SHL_DW和SHR_DW,其他部分完全相同。使能输入有效时,把双字型输入数据IN左移或右移N位后,再将结果输出到OUT所指的双字存储单元。最大实际可移位次数为32。指令格式:SLDOUT,N(双字左移)SRDOUT,N(双字右移)例:SLDMD0,2SRDLD0,3,返回,后一页,前一页,2.循环左移、循环右移循环左移和循环右移根据所循环移位的数的长度分别又可分为字节型、字型、双字型。循环移位特点:移位数据存储单元

温馨提示

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

评论

0/150

提交评论