說(shuō)實(shí)話,好幾年沒(méi)用過(guò)PLC了;今看到一個(gè)以前的試驗(yàn)程序,看起來(lái)蠻“拗口”的,參見(jiàn)附圖1。程序原用GX Developer編制,F(xiàn)X2N;現(xiàn)移植為用臺(tái)達(dá)WPLSoft 2.12編制,ES2。
該段程序的要求是:實(shí)現(xiàn)Y1~Y5的順序移位,并可任意取消某位或某幾位;也就是,若取消Y2,則Y1接通之后,滿足條件后Y1斷開(kāi)、Y3接通,而不是Y2接通。
這可能是,當(dāng)時(shí)為編制某程序而作的準(zhǔn)備,應(yīng)當(dāng)是程序中要求有類似的功能(原程序未保留)。比如,五個(gè)加工工位,每次僅允許一個(gè)加工,若某工位未準(zhǔn)備好,則跳過(guò)該工位。
該程序的方法,似不太順暢——要實(shí)現(xiàn)該功能,還可以如何編制程序呢?
此主題相關(guān)圖片如下,點(diǎn)擊圖片看大圖:
重新閱讀該段程序后,得出其編程思路是:若取消某位,則移位到該位為1時(shí),再使之移一位。
為便于描述,用梯形圖左母線旁的步序號(hào)為“行號(hào)”(行塊號(hào))。
附,對(duì)附圖1程序的解讀:
0行:接通一次X0,T0延時(shí)1秒接通,即使X0信號(hào)抖動(dòng),也不會(huì)多次給出信號(hào);這是防外部觸點(diǎn)抖動(dòng)的另一種思路。T0接通一次,M31~M36左移一位。
8行:給出移位的初始信號(hào)M10。
10行:當(dāng)M31接通后,復(fù)位復(fù)位M10。
14行:移位指令,實(shí)現(xiàn)M31~M36的每次一位移位;此處M1無(wú)作用。
25行:下一個(gè)循環(huán)時(shí),使M31置位,即M31與M36同時(shí)接通。
27行:復(fù)位M31,此時(shí)M32已接通,仍是實(shí)現(xiàn)M31與M36同時(shí)接通。
33~53行:產(chǎn)生D10的移位信號(hào)。
58行:D10賦初值。
64行:實(shí)現(xiàn)D10的移位。
75~114行:若取消某位,則該位被移除。
比如,取消Y2(使Y1接通直接轉(zhuǎn)到Y(jié)3接通),則這時(shí)使X2接通;
設(shè)先有Y1接通(M31等接通),此時(shí)來(lái)一個(gè)移位信號(hào)后,有M32接通,執(zhí)行38行、產(chǎn)生M62信號(hào)(M62脈沖接通),于64行D10移一位;這時(shí)D10的各位為 0000 0000 0000 0100;
由于M62接通、又X2接通,故執(zhí)行到88行時(shí),D10再移一位,結(jié)果為 0000 0000 0000 1000;執(zhí)行后續(xù)程序,使M93接通,Y3接通。
127行:若為取消第5位,則將D10賦初值。
138行:當(dāng)D10移位至b6位以上接通時(shí),則D10賦初值。
148行:將D10的值,送至K2M90(M90~M105),以達(dá)控制目的。
154~166行:實(shí)現(xiàn)Y1~Y5的控制目的。
169行:程序結(jié)束。
該程序僅是給出一種思路,不是實(shí)用程序;程序移植后(并將138行與127行指令位置作了交換),也未進(jìn)行試驗(yàn)。
比如,粗看起來(lái),當(dāng)取消某位,D10進(jìn)行“額外”的移位后,則M31~M36并沒(méi)有進(jìn)行相應(yīng)的移位;可能的方法,是將D10的內(nèi)容,再返回到M31~M36。