摘 要:本設計介紹了一種基于MCS-51單片機的簡易PLC,系統總體分為三部分:(1)硬件設計部分(2)上位機PLC開發環境設計與實現部分(3)PLC運行系統的設計及實現部分。作者主要負責實現第三部分:PLC運行系統的設計與實現。作者論述了簡易PLC的編譯原理與單片機實現方法,闡述了PLC源程序和目標文件之間的關系和編譯方法,該方法是將PLC所寫的語句表程序編譯成MCS-51的可執行文件,然后燒錄至單片機,使其實現簡單的控制功能,本設計是對PLC原理研究進行的有益嘗試。
關鍵詞:單片機;可編程控制器;編譯原理
中圖分類號:TP368.12 文獻標識碼:A 文章編號:1674-7712 (2014) 18-0000-01
一、簡易可編程控制器的設計思想及工作原理
(一)簡易可編程控制器系統的設計思想
整個基于MCS-51可編程控制器系統主要組成分為三大部分,硬件設計部分、上位機開發環境部分、PLC運行系統的設計與實現部分,作者主要負責PLC運行系統的設計與實現部分。
在PLC運行系統的設計與實現部分中,負責硬件系統的初始化、PLC指令到單片機語言的翻譯等等。作者在研究學習了PLC工作原理的基礎上,從而設計出此PLC運行系統,用單片機匯編語言實現了PLC的常用邏輯指令,包括觸電指令、輸出指令、定時器指令、計數器指令等。
(二)簡易可編程控制器基本指令的編譯
簡易可編程邏輯控制器源程序的編譯,都采用了直接翻譯的方法,即每條PLC指令翻譯成一組MCS-51單片機的機器碼指令。
(1)LD和LD-NOT指令的編譯
LD指令的編譯分兩種情況:一種情況是引用軟、硬繼電器的常開觸點,觸電編號XX為十進制數取值范圍為0~119,編譯生成4行匯編語言,其中YY是XX化為十六進制數的結果,它也是RAM中的位地址;另一種情況是引用定時器或計數器的輸出常開觸電,觸電編號為CNTXX或TIMXX,其中XX為十進制數,取值范圍為0~31。其中YY為十六進制RAM地址,對應于XX所指的定時器/計數器在內存中的高字節地址。
第一組指令有4行,前3行的作用是把進位標志C存入地址1FH的bit0,第4行指令的運行結果是把位地址YYH的數據傳送到進位標志C。
第二組指令共有5行。前3行指令實際上與LD指令的第一種情況相同,把C中的數據保存在1FH的bit0。后兩條指令的目的是將地址YYH中的數據的次高位寫入進位標志C。前面已經規定了定時器/計數器數據的次高位表示了定時器/計數器的輸出狀態(1表示常開觸點閉合,0表示常開觸點斷開)。
第三四組指令與LD指令正好相反。因為LD-NOT指令所代表的是常閉觸點,與常開觸點執行結果應該是相反的,所以只需要在LD指令的基礎上加一條取反指令“CPL C”即可。
(2)OUT和END指令的編譯
OUT和END指令的編譯結果:
OUT XX:MOV YYH,C
END:LJMP 0400H
OUT指令是PLC語言的輸出指令。END指令是PLC源程序的結束指令。這兩條指令是每個PLC源程序不可缺少的部分。源程序若遇到OUT指令,會在將生成的目標程序中寫入一條輸出指令。若遇到END指令,則會寫入一條跳轉指令。
OUT指令中的XX是輸出線圈編號,為十進制數,取值范圍是0~103。YY是XX化為十六進制數的結果,也是RAM中的位地址。這句指令的作用是將進位標志位C的數據存放在YY所指的位地址中。如果XX取值是96~103,那么相應的YY取值為60H~67H,這時這個數據還將被送到8255的PC口輸出。END指令在PLC源程序中除了作為程序結束標志外沒有任何意義。但是在編譯程序中確實至關重要的,因為主程序是周而復始的循環執行的,只有不斷地循環,單片機才能通過8255芯片PA口和PB口,得到最新的輸入數據,并且在數據處理后將最新的輸出數據送到8255的PC口。為了使主程序能夠正確的循環運行,在主程序的最后必須有一條跳轉指令使程序轉到主循環程序開頭處運行。在簡易PLC中,主循環程序是從ROM的0400H地址開始的,所以END指令編譯的結果是使程序由0400H地址開始執行。由此可看出,在編寫簡易PLC程序時,END指令并不是多余的。
二、簡易可編程控制器單片機實現的功能測試
測試結果:按下104號按鍵則96,98,100,102號繼電器吸合,相對應的燈亮,其余97,99,101,103號繼電器釋放,相對應的燈滅。此時能夠實現自鎖功能,即無論104按下與否輸出狀態都不會發生變化。只有按下105號按鍵(停止鍵),97,99,101,103號機電氣吸合,相對應的燈亮,而其余96,98,100,102號繼電器釋放,相對應的燈滅。
三、結束語
本課題的主要任務是簡易可編程控制器運行系統的單片機實現,經過三個月的努力,作者主要完成了以下工作:
實現了PLC基本指令的匯編翻譯,包括:LD、AND、OR、LD-NOT、等。
參考文獻:
[1]王占江.可編程控制器與計算機串口通訊的設計與實現[J].計算機光盤軟件與應用,2012(24):180+196.
[2]盛莉.簡易可編程邏輯控制器的單片機實現[J].電腦與電信,2008(04).