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