指令MC(Master Control)和MCR(Master Control Reset)在PLC(可編程邏輯控制器)編程中非常常見,它們用于創(chuàng)建和控制主控電路
MC指令(主控指令):
功能:MC指令用于標(biāo)記主控電路塊的開始。當(dāng)MC指令的觸點(diǎn)接通時(shí),該MC與對應(yīng)的MCR之間的所有指令開始執(zhí)行。
應(yīng)用:在編程中,經(jīng)常遇到多個(gè)線圈同時(shí)受一個(gè)或一組觸點(diǎn)控制的情況。使用MC指令可以避免在每個(gè)線圈的控制電路中都串入同樣的觸點(diǎn),從而節(jié)省存儲單元。
特點(diǎn):MC指令只能用于輸出繼電器Y和輔助繼電器M(不包括特殊輔助繼電器)。MC指令后,母線(LD、LDI點(diǎn))移至MC觸點(diǎn)之后,返回原來母線的指令是MCR。
MCR指令(主控復(fù)位指令):
功能:MCR指令用于標(biāo)記主控電路塊的結(jié)束。當(dāng)MCR指令執(zhí)行時(shí),會結(jié)束當(dāng)前MC指令所標(biāo)記的主控電路塊。
應(yīng)用:與MC指令配合使用,用于控制主控電路塊的執(zhí)行和結(jié)束。
特點(diǎn):MCR指令后,母線返回原來位置。在嵌套結(jié)構(gòu)中,MCR指令會同時(shí)復(fù)位所有比其編號小的嵌套層。
假設(shè)我們有一個(gè)簡單的PLC程序,當(dāng)輸入X000接通時(shí),我們希望根據(jù)輸入X001和X002的狀態(tài)來控制輸出Y000和Y001的接通與斷開。
以下是使用MC和MCR指令的編程示例:
LD X000 // 如果X000接通,則執(zhí)行以下指令
MC N0 // 開始一個(gè)編號為N0的主控電路塊
LD X001 // 如果X001接通,則執(zhí)行以下指令
OUT Y000 // 輸出Y000接通
LD X002 // 如果X002接通,則執(zhí)行以下指令
OUT Y001 // 輸出Y001接通
MCR N0 // 結(jié)束編號為N0的主控電路塊
在這個(gè)示例中,當(dāng)輸入X000接通時(shí),會執(zhí)行從MC N0到MCR N0之間的所有指令。如果X001接通,則輸出Y000接通;如果X002接通,則輸出Y001接通。當(dāng)X000斷開時(shí),由于MC和MCR指令的存在,Y000和Y001都會斷開。
MC和MCR指令搭配使用好處:
結(jié)束主控電路塊:
當(dāng)你使用MC指令開始一個(gè)主控電路塊后,你需要在適當(dāng)?shù)奈恢檬褂肕CR指令來結(jié)束這個(gè)電路塊。這是為了確保邏輯的正確性和完整性。
避免邏輯混亂:
如果沒有正確地使用MCR指令來結(jié)束主控電路塊,可能會導(dǎo)致邏輯混亂,因?yàn)镻LC可能會繼續(xù)執(zhí)行MC指令之后的指令,即使這些指令本應(yīng)在MC指令的控制范圍之外。
節(jié)省存儲空間:
在編程時(shí),我們經(jīng)常會遇到多個(gè)線圈同時(shí)受一個(gè)或一組觸點(diǎn)控制的情況。如果在每個(gè)線圈的控制電路中都串入同樣的觸點(diǎn),將會占用很多存儲單元。通過使用MC和MCR指令,我們可以避免這種重復(fù),從而節(jié)省存儲空間。
嵌套結(jié)構(gòu):
在復(fù)雜的PLC程序中,可能會使用到嵌套的主控電路塊。在這種情況下,每個(gè)嵌套的MC指令都需要一個(gè)對應(yīng)的MCR指令來結(jié)束。而且,MCR指令會同時(shí)復(fù)位所有比其編號小的嵌套層。
以下情況謹(jǐn)慎使用:
無主控電路塊:
如果PLC程序中沒有使用MC指令來開始一個(gè)主控電路塊,那么使用MCR指令將沒有實(shí)際意義。MCR指令必須和MC指令配對使用,用于結(jié)束MC指令所開始的主控電路塊。
嵌套結(jié)構(gòu)中的錯(cuò)誤使用:
在嵌套的主控電路塊中,MCR指令會同時(shí)復(fù)位所有比其編號小的嵌套層。如果錯(cuò)誤地使用了MCR指令,可能會導(dǎo)致不應(yīng)該被復(fù)位的嵌套層被復(fù)位,從而影響程序的邏輯和功能。
特殊輔助繼電器:
MC和MCR指令的目標(biāo)元件通常為Y(輸出繼電器)和M(輔助繼電器),但特殊輔助繼電器(如計(jì)時(shí)器、計(jì)數(shù)器等)不能用作MC或MCR指令的目標(biāo)元件。因此,在涉及特殊輔助繼電器的程序中,MCR指令可能不適用。
其他控制邏輯:
在某些情況下,可能需要使用其他控制邏輯來實(shí)現(xiàn)特定的功能,而不是使用MC和MCR指令。例如,可以使用順序控制指令(如STL/RET)來實(shí)現(xiàn)順序控制邏輯,或者使用跳轉(zhuǎn)指令(如JMP/JME)來實(shí)現(xiàn)程序的跳轉(zhuǎn)和分支。在這些情況下,MCR指令可能不適用。