指令MC(Master Control)和MCR(Master Control Reset)在PLC(可编程逻辑控制器)编程中非常常见,它们用于创建和控制主控电路
MC指令(主控指令):
功能:MC指令用于标记主控电路块的开始。当MC指令的触点接通时,该MC与对应的MCR之间的所有指令开始执行。
应用:在编程中,经常遇到多个线圈同时受一个或一组触点控制的情况。使用MC指令可以避免在每个线圈的控制电路中都串入同样的触点,从而节省存储单元。
特点:MC指令只能用于输出继电器Y和辅助继电器M(不包括特殊辅助继电器)。MC指令后,母线(LD、LDI点)移至MC触点之后,返回原来母线的指令是MCR。
MCR指令(主控复位指令):
功能:MCR指令用于标记主控电路块的结束。当MCR指令执行时,会结束当前MC指令所标记的主控电路块。
应用:与MC指令配合使用,用于控制主控电路块的执行和结束。
特点:MCR指令后,母线返回原来位置。在嵌套结构中,MCR指令会同时复位所有比其编号小的嵌套层。
假设我们有一个简单的PLC程序,当输入X000接通时,我们希望根据输入X001和X002的状态来控制输出Y000和Y001的接通与断开。
以下是使用MC和MCR指令的编程示例:
LD X000 // 如果X000接通,则执行以下指令
MC N0 // 开始一个编号为N0的主控电路块
LD X001 // 如果X001接通,则执行以下指令
OUT Y000 // 输出Y000接通
LD X002 // 如果X002接通,则执行以下指令
OUT Y001 // 输出Y001接通
MCR N0 // 结束编号为N0的主控电路块
在这个示例中,当输入X000接通时,会执行从MC N0到MCR N0之间的所有指令。如果X001接通,则输出Y000接通;如果X002接通,则输出Y001接通。当X000断开时,由于MC和MCR指令的存在,Y000和Y001都会断开。
MC和MCR指令搭配使用好处:
结束主控电路块:
当你使用MC指令开始一个主控电路块后,你需要在适当的位置使用MCR指令来结束这个电路块。这是为了确保逻辑的正确性和完整性。
避免逻辑混乱:
如果没有正确地使用MCR指令来结束主控电路块,可能会导致逻辑混乱,因为PLC可能会继续执行MC指令之后的指令,即使这些指令本应在MC指令的控制范围之外。
节省存储空间:
在编程时,我们经常会遇到多个线圈同时受一个或一组触点控制的情况。如果在每个线圈的控制电路中都串入同样的触点,将会占用很多存储单元。通过使用MC和MCR指令,我们可以避免这种重复,从而节省存储空间。
嵌套结构:
在复杂的PLC程序中,可能会使用到嵌套的主控电路块。在这种情况下,每个嵌套的MC指令都需要一个对应的MCR指令来结束。而且,MCR指令会同时复位所有比其编号小的嵌套层。
以下情况谨慎使用:
无主控电路块:
如果PLC程序中没有使用MC指令来开始一个主控电路块,那么使用MCR指令将没有实际意义。MCR指令必须和MC指令配对使用,用于结束MC指令所开始的主控电路块。
嵌套结构中的错误使用:
在嵌套的主控电路块中,MCR指令会同时复位所有比其编号小的嵌套层。如果错误地使用了MCR指令,可能会导致不应该被复位的嵌套层被复位,从而影响程序的逻辑和功能。
特殊辅助继电器:
MC和MCR指令的目标元件通常为Y(输出继电器)和M(辅助继电器),但特殊辅助继电器(如计时器、计数器等)不能用作MC或MCR指令的目标元件。因此,在涉及特殊辅助继电器的程序中,MCR指令可能不适用。
其他控制逻辑:
在某些情况下,可能需要使用其他控制逻辑来实现特定的功能,而不是使用MC和MCR指令。例如,可以使用顺序控制指令(如STL/RET)来实现顺序控制逻辑,或者使用跳转指令(如JMP/JME)来实现程序的跳转和分支。在这些情况下,MCR指令可能不适用。