可编程序控制器应用第三章.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转到停止模式。 返回 后一页前一页 程序示例如下: NETWORK 1 / 检测到I/O错误时,强制转换至STOP(停止)模式 LD SM5.0 STOP NETWORK 2 / M5.6打开时,重新触发CPU监视器复原 / 允许扩展扫描 LD M5.6 WDR / 重新触发CPU监视器复原 NETWORK 3 / I0.0打开时,中止当前扫描 LD I0.0 END 返回 后一页前一页 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。将参数值指 定给子程序中的局部内存时应遵守下列 规则。 1. 参数值指定给局部内存的顺序由CALL 指定,参数从L.0开始。 2. 一至八位连续位参数值被指定给从Lx.0 开始持续至Lx.7的单字节。 3. 字节、字和双字数值被指定给局部内存 ,位于字节边界(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。 指令格式:SQRT IN,OUT 例: SQRT VD0,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。 指令格式:EXP IN, OUT 例: EXP VD0, 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)中载入结果。 Exclusive OR(异-或运算)字节( XORB)指令对两个输入数值(IN1和IN2 )的对应位执行XOR(异-或运算)操作 ,并在内存位置(OUT)中载入结果。 返回 后一页前一页 2. 字逻辑运算 字逻辑运算包括字与、字或、字异或、字 取反(INV)。 AND(与运算)字(ANDW)指令对两个 输入数值(IN1和IN2)的对应位执行AND (与运算)操作,并在内存位置(OUT) 载入结果。OR(或运算)字(ORW)指 令对两个输入数值的对应位执行OR(或 运算)操作,并在内存位置(OUT)载入 结果。Exclusive OR(异-或运算)字( XORW)指令对两个输入数值(IN1和IN2 )的对应位执行XOR(异-或运算)操作 ,并在内存位置(OUT)载入结果。 返回 后一页前一页 图3.36 字逻辑运算实例 返回 后一页前一页 3. 双字逻辑运算 双字逻辑运算包括双字与、双字或、双字 异或、双字取反。 AND(与运算)双字(ANDD)指令对两 个双字输入值的对应位执行AND(与运算 )操作,并在双字中载入结果(OUT)。 OR(或运算)双字(ORD)指令对两个 双字输入值的对应位执行OR(或运算) 操作,并在双字中载入结果(OUT)。 Exclusive OR(异-或运算)双字( 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。 指令格式:SLW OUT, N(字左移 ) SRW OUT, N(字右移 ) 例:SLWMW0, 2 SRW LW0, 3 返回 后一页前一页 (3)双字左移和双字右移 SLD和SRD,双字左移和双字右移。 指令盒与字节移位比较,只有名称变 为SHL_DW和SHR_DW,其他部分 完全相同。使能输入有效时,把双字 型输入数据IN左移或右移N位后,再 将结果输出到OUT所指的双字存储单 元。最大实际可移位次数为32。 指令格式:SLD OUT, N(双字左移 ) SRDOUT, N(双字右移 ) 例: SLD MD0, 2 SRD LD0, 3 返回 后一页前一页 2. 循环左移、循环右移 循环左移和循环右移根据所循环移位的数的长度 分别又可分为字节型、字型、双字型。 循环移位特点: 移位数据存储单元的移

温馨提示

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

评论

0/150

提交评论