MCR指令直接的意思是主控复位指令(Master Control Reset),但实际的意义是区域控制复位指令,这里所指的区域是例程中的某段梯级逻辑,早期控制器的程序结构没有现在的控制器产品这样灵活多变,不得不通过MCR指令对一段梯级逻辑来进行特殊处理。MCR指令成对使用来创建一个区域,有条件进入,无条件结束,它的作用有点像括号,用起始MCR指令和结束MCR指令界定了一段梯级逻辑。
当MCR区域梯级条件成立,MCR区域控制启动,对本区域的梯级逻辑扫描,执行里面相关的逻辑动作。区域里所有的梯级扫描与正常梯级扫描无异。
当MCR区域梯级条件不成立时,在MCR区域梯级扫描解除,离开本区域控制时,会实行后扫描,这个后扫描所做的事情就是令所有的梯级条件不成立,这将使得非保持型指令复位,这就是区域控制复位指令的复位含义,如果这段梯级逻辑中有OTE和TON等指令,一定要分析它们的状态及受到的相关影响。
图11-12 MCR控制区域激活时的正常运行状态
我们用一个实例的执行来了解MCR指令的作用。假定有一个这样的需求,一个外部的输出点,当条件成立时,打开5s,关闭3s,交替执行;当条件不成立时,输出处于关闭状态,编写满足需求的梯级逻辑。
运行测试,当Start_MCR置位,MCR梯级条件成立,MCR控制区域启动,区域的梯级逻辑开始执行,计时器Timer1和Timer2开始计时。Timer1数据标签的完成位DN置1的时间可维持5s,即Timer2的计时时间,此时输出Flash_Out被接通,直到Timer2计时结束,其完成位的常开输入指令将Timer1复位并重新开始计时,复位后的Timer1的DN位复位,输出Flash_Out被关断,维持3s,直到Timer1完成位置位。输出点Flash_Out将接通5s,关闭3s,交替重复运行,运行状态如图11-12所示。(www.xing528.com)
当Start_MCR复位,MCR梯级条件不成立,MCR控制区域关闭,后扫描令MCR区域内的所有梯级条件不成立,两个计时器均复位,输出指令OTE复位,输出处于关闭状态,这正是我们所需求的,关闭状态如图11-13所示。
图11-13 MCR控制区域关闭时的复位状态
对比常规的子例程的调用,我们发现MCR对离开控制后所作的处理是不一样的,子例程不会做任何处理,例程被调用执行逻辑修改数据,例程不调用数据就保持原状,MCR指令的区域控制在离开时通过后扫描对所有的非保持型指令复位,这是独立于用户控制逻辑的系统介入的动作,正是这个系统介入的动作,完成了梯级逻辑扫描结束后想做的善后工作。所以,当例程调用的残余数据状态不会影响结果时,可以采用调用子例程的办法;当执行逻辑结果的残余数据状态需要复位时,不妨选择执行MCR指令来实现区域控制。
顺便提及,可以多对MCR指令同时使用,可以嵌套,不可交叉,无条件结束的MCR指令是无法识别交叉关系的,当嵌套使用时,这种情形有点像大括号、中括号和小括号的关系。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。