8)程序控制指令
程序控制指令包含循环指令、跳转指令、顺序控制指令及看门狗复位指令和停止指令
循环指令(FOR....NEXT)
是对程序执行期间的循环操作,通常来说,程序的扫描是整个程序从头至尾的过程,而为了解决重复执行相同功能的程序段,尤其需要大量的相同功能的计算或逻辑运算时,这时我们可以使用循环指令
循环指令的执行次数并非无限制的,它受CPU的扫描时间影响;循环次数越多,扫描时间就会越长,而200SMART长的扫描时间是500MS,当超过这个时间后CPU则会报错,报看门狗出错并停止运行CPU;所以循环次数的扫描时间不能超过500MS
循环指令由FOR及NEXT组成,在实际应用需要配套一起使用;FOR....NEXT指令中间的程序称为循环体,CPU每次扫描到此处时会循环执行的程序。
FOR....NEXT可循环嵌套,多嵌套8层。每次重新执行该指令时,CPU会自动复位各参数,在使用过程中无需对参数进行清零的操作
INIT:循环的起始值;FINAL:需要执行循环的总次数;当INDX的值大于FINAL的值时,循环结束,循环指令不再执行,设置结束次数时不能大于起始值。INDX端只能使用16位的存储空间
跳转指令(JMP....LBL)
跳转指令的使用可提高编程的灵活性,使主机可以针对不同条件的判断执行对应的程序。比如在一段程序中,正常是从头至尾都会执行扫描,但使用跳转指令后,PLC不会对JMP...LBL之间的程序执行,当跳转指令不满足时PLC则会继续扫描该段程序
跳转指令JMP及跳转指令标签LBL指令一起组成,使用时也需要一起配套出现;在使用的过程种,跳转指令的数字需要和标签指令的数字对应一致
在执行跳转指令执行之前,JMP...LBL之间的程序如果正在运行,接着此时跳转指令满足跳过该段程序后,只是不再扫描而不是不执行,所以该程序段会保持在跳转指令执行之前的结果。
标签号可命名为常数也可以是汉字,
跳转指令在使用中有以下几点需要注意:
1、跳转指令及标签指令需要配合一起使用,且只能在同一POU内使用
2、执行跳转后,被跳转的程序段不再扫描,其对应一些元件的状态会保持在跳转前的状态
3、对于计数器而言,计数器会停止工作但当前值会保持在跳转前的计数不会被丢失
4、对于定时器而言,因不同的分辨率刷新方式也不一样,在跳转期间,1MS和10MS的定时器会继续定时;到设定值后,定时器的相关触点也会发生变化;直到32767后才会停止。在跳转期间,100MS的定时器和计数器是一样的
5、跳转指令只能在本POU中跳转,不能从主程序跳转到子程序或子程序到另一子程序中
6、跳转指令可以由下往上跳,但要注意避免出现看门狗出错
顺控指令
顺控指令在SMART PLC的梯形图程序下有三种状态:需要执行的状态步SCR;用于转移状态步的SCRT;表示对上一状态步结束的SCRE
顺控指令主要用于具有明显动作的设计(如单机设备),这种情况下使用顺控指令编程能使程序结构清晰明了;顺控指令在使用的过程需要配合状态继电器(S)使用
在使用顺控指令设计程序时,根据程序执行的动作顺序可分为单流程控制结构、选择性流程控制、并行分支流程控制结构三种
单流程结构:当顺序功能图只有一个通道时称为单流程结构,主要特点为从初始状态开始,每个状态后面只有一个转移,每个转移后面只有一个状态(如下图所示)
顺序功能流程图一般有:状态、转移条件及状态的动作三部分组成
选择性分支结构:当单流程向分支转移时,根据转转条件是否成立只能向其中一个流程进行转移,是一种多选一的过程结构。
并行性分支结构:当单流程向多个流程转移时,多个分支的转移条件均相同,只要转移条件成立,则同时激活各个分支流程
顺控指令的使用注意有几点:
1、SCR段程序段是否执行,取决于状态继电器S是否为ON
2、顺控指令只能状态继电器S有用,不能用其他内部存储器,空间大小和位存储器M一样,为32个字节大小
3、不能把同一个S状态位用于不同的POU中,比如在主程序中用了就不能在子程序中使用。
4、顺控程序中不支持多线圈输出
5、状态编号可不按顺序编排使用
6、不同的SCR段中,不得使用跳转指令,但如果在同一个SCR段中可使用跳转指令
7、状态转移后,使用过的状态继电器会自动复位
停止指令(STOP)
可以使用该指令对CPU进行停止运行的操作
STOP指令可将CPU从run模式切换到STOP模式来终止程序的执行,比如I/O出现错误时(SM5.0会为ON)可把PLC切换到STOP模式
看门狗复位指令(WDR)
看门狗复位指令的使用可使程序的扫描时间延长500MS。如循环次数的扫描时间过长导致CPU报错并停机,且会发出非致命错误扫描看门狗超时的代码(001AH) 而如果在适当位置使用看门狗指令(WDR)的话能延长扫描时间防止报错停机
每次执行 WDR 指令时,扫描看门狗超时时间都会复位为 500 毫秒。
但是,主扫描的大持续时间为 5 秒。如果当前扫描持续时间达到 5 秒,CPU 会无条件地切换为 STOP 模式。
GET_ERROR(获取非致命错误代码)
获取非致命错误代码指令将 CPU 的当前非致命错误代码存储在分配给 ECODE 的位置。而 CPU 中的非致命错误代码将在存储后清除。用于CPU报错显示的情况下可使用该指令
相关产品
免责声明
- 凡本网注明“来源:化工仪器网”的所有作品,均为浙江兴旺宝明通网络有限公司-化工仪器网合法拥有版权或有权使用的作品,未经本网授权不得转载、摘编或利用其它方式使用上述作品。已经本网授权使用作品的,应在授权范围内使用,并注明“来源:化工仪器网”。违反上述声明者,本网将追究其相关法律责任。
- 本网转载并注明自其他来源(非化工仪器网)的作品,目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品第一来源,并自负版权等法律责任。
- 如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。