一種用Atmel89c2051仿真PLC控制的方法
1 引言
用Atmel89c2051來仿真PLC的控制,能集單片機(jī)控制和PLC控制的優(yōu)點(diǎn)。單片機(jī)控制作為嵌入式系統(tǒng)的核心技術(shù),具有高可靠性和高性價(jià)比,而且小巧靈瓏、成本低廉;PLC控制中的梯形圖編程與繼電接觸控制電原理圖相似,簡(jiǎn)單易學(xué),深受電氣技術(shù)人員的歡迎。筆者設(shè)計(jì)了以89C2051單片機(jī)為主控芯片的硬件線路,以此仿真板為硬件平臺(tái),允許用戶先按梯形圖對(duì)控制對(duì)象編程,這對(duì)繼電接觸控制技術(shù)較為熟悉的電氣技術(shù)人員來說提供了方便。由于仿真板本身是一個(gè)不帶編譯程序的仿真PLC的單片機(jī)應(yīng)用系統(tǒng),所以,先要將梯形圖轉(zhuǎn)化為MCS51匯編指令程序。然后,用51系列仿真器,對(duì)轉(zhuǎn)化后的匯編源程序進(jìn)行編輯、編譯,直至輸出Intel HEX文件,并將此十六進(jìn)制文件的內(nèi)容寫入到89C2051芯片中。最后,將固化好的89C2051芯片插入其仿真板座子上,就能成功地進(jìn)行預(yù)定的PLC的仿真控制了。
該仿真電路板價(jià)格低廉,使得使用者無需購買上千元的PLC,就能進(jìn)行仿真PLC的控制。因此,它又十分適合做成專用的功能電路模塊而開發(fā)成產(chǎn)品,還特別適合于教師在講述PLC控制時(shí)的演示實(shí)驗(yàn)。同時(shí),只要修改89C2051芯片中的程序,就能改變仿真板的控制功能,所以仿真板又是“柔性”的。
2 ATMEL89C2051單片機(jī)仿真PLC電路原理
2.1 仿真電路板的電路原理分析
ATMEL89C2051是20引腳的與8051兼容的8位高性能單片機(jī)。它內(nèi)部含有2K字節(jié)閃速存儲(chǔ)器,正是閃存的特點(diǎn),使得ATMEL89系列單片機(jī)具有讀寫容易、價(jià)格低、功耗低和掉電信息不丟等優(yōu)點(diǎn)。這也就是筆者在硬件結(jié)構(gòu)上首先想到了用ATMEL89C2051作為PLC仿真控制電路的主控芯片。圖1給出了用89C2051單片機(jī)仿真PLC簡(jiǎn)化后的電路原理。圖1左下部分是仿真電路板的輸入電路,由SB1~SB5、R3~R7和作為輸入口的P3組成,5個(gè)開關(guān)的狀態(tài)分別輸入到P3口的P3.2~P3.5和P3.7。例如SB1和R3相連端是與引腳P3.2相連的,SB1未按下時(shí),由于下拉電阻R3接地,輸入到P3.2的是低電平;當(dāng)SB1按下時(shí),5V電壓就通過開關(guān)SB1加到了P3.2,輸入到P3.2的是高電平。這里只用了P3口的5條口線,留下的P3.0和P3.1還可以接2個(gè)開關(guān),可以參照?qǐng)D1進(jìn)行擴(kuò)充。
圖1中C2、C3和CR1晶體振蕩器與單片機(jī)內(nèi)部振蕩器組成的振蕩電路構(gòu)成了時(shí)鐘電路。C1、R2構(gòu)成了上電復(fù)位電路。SB6按鍵按下后,將引起按鍵復(fù)位。
下面來分析圖1右邊部分電路,右邊部分是仿真電路板的輸出電路,P1口是作為輸出口來使用的。P1.0的輸出電路由R8、R9、R13、發(fā)光二極管D1、三極管T1和微型繼電器KM1組成。R8是 P1.0的拉升電阻,又同R9一起給三極管T1提供偏置電流。P1.0輸出信號(hào)經(jīng)過三極管T1反相放大,去驅(qū)動(dòng)繼電器,再由繼電器去驅(qū)動(dòng)執(zhí)行機(jī)構(gòu)。當(dāng)P1.0輸出低電平時(shí),三極管T1截止,T1的集電極為高電平,發(fā)光二極管不亮,繼電器KM1也不得電。反之,當(dāng)P1.0輸出高電平時(shí),三極管T1飽和導(dǎo)通,T1的集電極為低電平,發(fā)光二極管點(diǎn)亮,繼電器KM1也得電。可見發(fā)光二極管的狀態(tài)與繼電器的通斷狀態(tài)是一致的,所以可以將發(fā)光二極管作為反映輸出機(jī)構(gòu)狀態(tài)的指示。P1.1的輸出電路由R10~R12、發(fā)光二極管D2、三極管T2和微型繼電器KM2組成,其工作原理的分析也是一樣的。不過圖1中只用了P1.0和P1.1兩個(gè)口線,留下的P1.2~P1.7還可以接6個(gè)輸出驅(qū)動(dòng)電路,如果需要的話,可以參照?qǐng)D1進(jìn)行擴(kuò)充。
2.2 仿真電路板與被仿真PLC的輸入/輸出端口之間的對(duì)應(yīng)關(guān)系
首先要明確圖1仿真電路與被仿真PLC的輸入/輸出端口之間的對(duì)應(yīng)關(guān)系。從圖1可以看出,89C2051的P3口對(duì)應(yīng)為PLC的輸入口, P1口對(duì)應(yīng)為PLC的輸出口。表1中按端口順序給出了一種對(duì)應(yīng)關(guān)系,P3.0~P3.5依次對(duì)應(yīng)的是X000~X005,P3.7對(duì)應(yīng)的是X007;P1.0~P1.7依次對(duì)應(yīng)的是Y000~Y007。必須指出表1給出的僅僅是一種對(duì)應(yīng)關(guān)系,完全可以按照實(shí)際的輸入/輸出情況進(jìn)行對(duì)應(yīng),如也可以將P3.7對(duì)應(yīng)為X000,等等。
3 仿真板的編程思路
3. 1 梯形圖與MCS51匯編指令間的一一對(duì)應(yīng)關(guān)系
能否把FX2系列PLC的梯形圖轉(zhuǎn)化為51匯編指令程序呢?筆者想到了89C2051具有布爾代數(shù)指令,特別是其中的位操作的邏輯指令,可以用這些位操作邏輯指令來替換FX2系列PLC的梯形圖中的對(duì)應(yīng)的基本邏輯指令。例如,可以用MCS-51的位與指令來替換PLC的接點(diǎn)串聯(lián)指令,可以用MCS-51的位或指令來替換PLC的接點(diǎn)并聯(lián)指令。下面將在仿真PLC控制中經(jīng)常用到的可以替換的指令用表2列出。
從表2知道,MCS51匯編指令與PLC的助記符指令間的確存在著對(duì)應(yīng)關(guān)系的,可以用51單片機(jī)的ANL C,BIT指令來代替PLC的AND指令,用ORL C,BIT指令來代替OR指令,用MOV指令來代替LD、OUT指令,用51單片機(jī)的跳轉(zhuǎn)指令LJMP/AJMP來模擬PLC循環(huán)掃描描,等等。由于PLC的梯形圖與其助詞符指令之間也是一一對(duì)應(yīng)的,如常開接點(diǎn)的串聯(lián)對(duì)應(yīng)AND指令,常開接點(diǎn)的并聯(lián)對(duì)應(yīng)OR指令,這樣,就可以用等效替換的方法將梯形圖轉(zhuǎn)化為51匯編指令程序了。替換中最常用的方法是:接點(diǎn)串聯(lián)使用與指令,接點(diǎn)并聯(lián)使用或指令,具體如何轉(zhuǎn)換將在下面的編程實(shí)例中詳細(xì)說明。3. 2 編程實(shí)例
圖2為兩臺(tái)電機(jī)順序控制的PLC控制梯形圖??刂乒δ苋缦?,當(dāng)按下X002按鈕后,使Y000得電而驅(qū)動(dòng)泵電機(jī)動(dòng)作,同時(shí)使下一梯級(jí)中的常開Y000閉合,從而使得再按X004,Y001才會(huì)得電而驅(qū)動(dòng)主電機(jī)動(dòng)作;否則,未按X002按鈕,而先按X004按鈕時(shí),主電機(jī)將不會(huì)動(dòng)作。按X003按鈕后,只有主電機(jī)停止,而按X001按鈕后,兩電機(jī)才會(huì)同時(shí)停止?,F(xiàn)在要求改用仿真板來實(shí)現(xiàn)兩臺(tái)電機(jī)順序控制。
改用仿真板的編程思路是,首先要確定仿真板與被仿真PLC的輸入/輸出端口之間的對(duì)應(yīng)關(guān)系,可按照實(shí)際的輸入/輸出情況進(jìn)行對(duì)應(yīng),其中輸出端口之間的對(duì)應(yīng)關(guān)系如表1所示,而輸入端口之間的對(duì)應(yīng)關(guān)系如表3所示。對(duì)圖2中的梯形圖按照上述確定的輸入/輸出對(duì)應(yīng)關(guān)系進(jìn)行替換,就可以得到用仿真板的兩臺(tái)電機(jī)順序控制的梯形圖如圖3所示。
接著,可以用等效替換的方法將梯形圖轉(zhuǎn)換為51匯編指令程序了。例如對(duì)于圖3梯形圖中的第一個(gè)梯級(jí)就可以按表2 MCS-51位操作指令與FX2系列PLC的基本指令對(duì)應(yīng)關(guān)系進(jìn)行轉(zhuǎn)換,接點(diǎn)串聯(lián)使用與指令,接點(diǎn)并聯(lián)使用或指令。
按此方法對(duì)圖3的梯形圖進(jìn)行轉(zhuǎn)換,得到仿真板兩臺(tái)電機(jī)順序控制的MCS51匯編指令程序如下:
接著,就可以用51系列仿真器(如萬利MedWin),對(duì)轉(zhuǎn)化后的匯編源程序進(jìn)行編輯、編譯,直至最后輸出Intel HEX文件。將此十六進(jìn)制文件的內(nèi)容用編程器(如煒煌的WH-200B)寫入到89C2051芯片中。最后,將固化好的89C2051芯片插入其仿真板座子上,就能成功地進(jìn)行預(yù)定的兩臺(tái)電機(jī)順序控制了。
4 總結(jié)
用本文所述的用AtmelAT89C2051仿真PLC控制方法,已經(jīng)成功做成專用的功能電路模塊,如控制電機(jī)運(yùn)行的星形-三角形減壓起動(dòng)電路模塊,電機(jī)順序起動(dòng)運(yùn)行電路模塊,廣告燈控制電路模塊等等。由于該仿真電路板小巧靈瓏、價(jià)格低廉,也十分適合教師在講述PLC應(yīng)用時(shí),無需購買上千元的PLC,就能在多媒體教室演示仿真PLC的控制實(shí)驗(yàn),較為生動(dòng)地講授學(xué)習(xí)梯形圖編程。此外,仿真電路板整合了MCS-51單片機(jī)控制和PLC控制兩門技術(shù),還被成功用于本市首期維修電工高級(jí)技師培訓(xùn)的單片機(jī)和PLC應(yīng)會(huì)項(xiàng)目和考核項(xiàng)目。