摘要 本文提出了一種新的用atmel89c2051仿真plc控制的方法,允許用戶先按梯形圖對控制對象編程,這對繼電器控制較為熟悉的電氣技術人員來說提供了方便。而且,用此方法已經成功做成專用的功能電路模塊。由于該仿真電路板價格低廉并具有柔性,可以被開發成產品,也十分適合于plc控制的演示實驗。
關鍵詞 單片機;仿真;可編程邏輯控制器;梯形圖
1 引言
用atmel89c2051來仿真plc的控制,能集單片機控制和plc控制的優點。單片機控制作為嵌入式系統的核心技術,具有高可靠性和高性價比,而且小巧靈瓏、成本低廉;plc控制中的梯形圖編程與繼電接觸控制電原理圖相似,簡單易學,深受電氣技術人員的歡迎。筆者設計了以89c2051單片機為主控芯片的硬件線路,以此仿真板為硬件平臺,允許用戶先按梯形圖對控制對象編程,這對繼電接觸控制技術較為熟悉的電氣技術人員來說提供了方便。由于仿真板本身是一個不帶編譯程序的仿真plc的單片機應用系統,所以,先要將梯形圖轉化為mcs51匯編指令程序。然后,用51系列仿真器,對轉化后的匯編源程序進行編輯、編譯,直至輸出intel hex文件,并將此十六進制文件的內容寫入到89c2051芯片中。最后,將固化好的89c2051芯片插入其仿真板座子上,就能成功地進行預定的plc的仿真控制了。
該仿真電路板價格低廉,使得使用者無需購買上千元的plc,就能進行仿真plc的控制。因此,它又十分適合做成專用的功能電路模塊而開發成產品,還特別適合于教師在講述plc控制時的演示實驗。同時,只要修改89c2051芯片中的程序,就能改變仿真板的控制功能,所以仿真板又是“柔性”的。
2 atmel89c2051單片機仿真plc電路原理
2.1 仿真電路板的電路原理分析
atmel89c2051是20引腳的與8051兼容的8位高性能單片機。它內部含有2k字節閃速存儲器,正是閃存的特點,使得atmel89系列單片機具有讀寫容易、價格低、功耗低和掉電信息不丟等優點。這也就是筆者在硬件結構上首先想到了用atmel89c2051作為plc仿真控制電路的主控芯片。圖1給出了用89c2051單片機仿真plc簡化后的電路原理。圖1左下部分是仿真電路板的輸入電路,由sb1~sb5、r3~r7和作為輸入口的p3組成,5個開關的狀態分別輸入到p3口的p3.2~p3.5和p3.7。例如sb1和r3相連端是與引腳p3.2相連的,sb1未按下時,由于下拉電阻r3接地,輸入到p3.2的是低電平;當sb1按下時,5v電壓就通過開關sb1加到了p3.2,輸入到p3.2的是高電平。這里只用了p3口的5條口線,留下的p3.0和p3.1還可以接2個開關,可以參照圖1進行擴充。
圖1中c2、c3和cr1晶體振蕩器與單片機內部振蕩器組成的振蕩電路構成了時鐘電路。c1、r2構成了上電復位電路。sb6按鍵按下后,將引起按鍵復位。
圖1 atmel89c2051仿真plc電路原理
下面來分析圖1右邊部分電路,右邊部分是仿真電路板的輸出電路,p1口是作為輸出口來使用的。p1.0的輸出電路由r8、r9、r13、發光二極管d1、三極管t1和微型繼電器km1組成。r8是 p1.0的拉升電阻,又同r9一起給三極管t1提供偏置電流。p1.0輸出信號經過三極管t1反相放大,去驅動繼電器,再由繼電器去驅動執行機構。當p1.0輸出低電平時,三極管t1截止,t1的集電極為高電平,發光二極管不亮,繼電器km1也不得電。反之,當p1.0輸出高電平時,三極管t1飽和導通,t1的集電極為低電平,發光二極管點亮,繼電器km1也得電。可見發光二極管的狀態與繼電器的通斷狀態是一致的,所以可以將發光二極管作為反映輸出機構狀態的指示。p1.1的輸出電路由r10~r12、發光二極管d2、三極管t2和微型繼電器km2組成,其工作原理的分析也是一樣的。不過圖1中只用了p1.0和p1.1兩個口線,留下的p1.2~p1.7還可以接6個輸出驅動電路,如果需要的話,可以參照圖1進行擴充。
2.2 仿真電路板與被仿真plc的輸入/輸出端口之間的對應關系
首先要明確圖1仿真電路與被仿真plc的輸入/輸出端口之間的對應關系。從圖1可以看出,89c2051的p3口對應為plc的輸入口, p1口對應為plc的輸出口。表1中按端口順序給出了一種對應關系,p3.0~p3.5依次對應的是x000~x005,p3.7對應的是x007;p1.0~p1.7依次對應的是y000~y007。必須指出表1給出的僅僅是一種對應關系,完全可以按照實際的輸入/輸出情況進行對應,如也可以將p3.7對應為x000,等等。
表1 仿真板與被仿真plc的輸入/輸出端口之間的一種對應關系表
3 仿真板的編程思路
3. 1 梯形圖與mcs51匯編指令間的一一對應關系
能否把fx2系列plc的梯形圖轉化為51匯編指令程序呢?筆者想到了89c2051具有布爾代數指令,特別是其中的位操作的邏輯指令,可以用這些位操作邏輯指令來替換fx2系列plc的梯形圖中的對應的基本邏輯指令。例如,可以用mcs-51的位與指令來替換plc的接點串聯指令,可以用mcs-51的位或指令來替換plc的接點并聯指令。下面將在仿真plc控制中經常用到的可以替換的指令用表2列出。
從表2知道,mcs51匯編指令與plc的助記符指令間的確存在著對應關系的,可以用51單片機的anl c,bit指令來代替plc的and指令,用orl c,bit指令來代替or指令,用mov指令來代替ld、out指令,用51單片機的跳轉指令ljmp/ajmp來模擬plc循環掃描描,等等。由于plc的梯形圖與其助詞符指令之間也是一一對應的,如常開接點的串聯對應and指令,常開接點的并聯對應or指令,這樣,就可以用等效替換的方法將梯形圖轉化為51匯編指令程序了。替換中最常用的方法是:接點串聯使用與指令,接點并聯使用或指令,具體如何轉換將在下面的編程實例中詳細說明。
3. 2 編程實例
圖2為兩臺電機順序控制的plc控制梯形圖。控制功能如下,當按下x002按鈕后,使y000得電而驅動泵電機動作,同時使下一梯級中的常開y000閉合,從而使得再按x004,y001才會得電而驅動主電機動作;否則,未按x002按鈕,而先按x004按鈕時,主電機將不會動作。按x003按鈕后,只有主電機停止,而按x001按鈕后,兩電機才會同時停止。現在要求改用仿真板來實現兩臺電機順序控制。
圖2兩臺電機順序控制的梯形圖
圖3仿真板兩臺電機順序控制的梯形圖
改用仿真板的編程思路是,首先要確定仿真板與被仿真plc的輸入/輸出端口之間的對應關系,可按照實際的輸入/輸出情況進行對應,其中輸出端口之間的對應關系如表1所示,而輸入端口之間的對應關系如表3所示。對圖2中的梯形圖按照上述確定的輸入/輸出對應關系進行替換,就可以得到用仿真板的兩臺電機順序控制的梯形圖如圖3所示。
表3 仿真板與被仿真plc的輸入端口的實際對應表
接著,可以用等效替換的方法將梯形圖轉換為51匯編指令程序了。例如對于圖3梯形圖中的第一個梯級就可以按表2 mcs-51位操作指令與fx2系列plc的基本指令對應關系進行轉換,接點串聯使用與指令,接點并聯使用或指令。
mov c, p3.2 ;用mov替換ld
orl c, p1.0 ;接點并聯使用或
anl c, / p3.4 ;常閉接點串聯使用與非
anl c, / p3.7 ;常閉接點串聯使用與非
mov p1.0, c ;用mov替換out
按此方法對圖3的梯形圖進行轉換,得到仿真板兩臺電機順序控制的mcs51匯編指令程序如下:
org 0000h
ajmp start1
org 0100h
start1: mov sp, #60h
anl p1, #00h ; 系統初始化
start: mov c, p3.2
orl c, p1.0
anl c, /p3.4
anl c, /p3.7
mov p1.0, c ; 啟動泵電機
mov c, p3.3
orl c, p1.1
anl c, /p3.4
anl c, /p3.5
anl c, /p3.7
anl c, p1.0
mov p1.1, c ; 啟動主電機
ljmp start ; 模擬循環掃描
end
接著,就可以用51系列仿真器(如萬利medwin),對轉化后的匯編源程序進行編輯、編譯,直至最后輸出intel hex文件。將此十六進制文件的內容用編程器(如煒煌的wh-200b)寫入到89c2051芯片中。最后,將固化好的89c2051芯片插入其仿真板座子上,就能成功地進行預定的兩臺電機順序控制了。
4 總結
用本文所述的用atmelat89c2051仿真plc控制方法,已經成功做成專用的功能電路模塊,如控制電機運行的星形-三角形減壓起動電路模塊,電機順序起動運行電路模塊,廣告燈控制電路模塊等等。由于該仿真電路板小巧靈瓏、價格低廉,也十分適合教師在講述plc應用時,無需購買上千元的plc,就能在多媒體教室演示仿真plc的控制實驗,較為生動地講授學習梯形圖編程。此外,仿真電路板整合了mcs-51單片機控制和plc控制兩門技術,還被成功用于本市首期維修電工高級技師培訓的單片機和plc應會項目和考核項目。