《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于AT89C51單片機(jī)的微型可編程控制器
基于AT89C51單片機(jī)的微型可編程控制器
互聯(lián)網(wǎng)
摘要: 介紹用AT89C51單片機(jī)構(gòu)成微型可編程控制器PLC的設(shè)計思路,、系統(tǒng)硬件配置和軟件設(shè)計方法,最后給出此微型可編程控制器在水塔水位控制中應(yīng)用的實例,。
關(guān)鍵詞: 51單片機(jī) AT89C51 PLC
Abstract:
Key words :

摘 要:介紹用AT89C51單片機(jī)構(gòu)成微型可編程控制器PLC的設(shè)計思路,、系統(tǒng)硬件配置和軟件設(shè)計方法,最后給出此微型可編程控制器在水塔水位控制中應(yīng)用的實例,。


可編程控制器PC(Programmable Controller),,為與個人計算機(jī)PC(Personal Computer)相區(qū)別,可簡稱為PLC,。它是按照成熟而有效的繼電控制概念和設(shè)計思想,,用先進(jìn)的單片機(jī)技術(shù)來實現(xiàn)I/O的實時檢測和控制,可靠性高,,編程簡單,、易學(xué),,因此,,得到廣泛應(yīng)用,。


將PLC技術(shù)引進(jìn)電工學(xué)、電力拖動課程,,是課程建設(shè)現(xiàn)代化的重要措施,。在教學(xué)經(jīng)費(fèi)相對緊張的情況下,我們自己動手,,以AT89C51單片機(jī)為核心,,設(shè)計并研制了LD型微型PLC,應(yīng)用于繼電控制實驗,,取得了良好的效果,。


用單片機(jī)構(gòu)成的PLC,實際上就是一個單片機(jī)測控系統(tǒng),。用這樣一個程序控制的計算機(jī)系統(tǒng)去執(zhí)行繼電控制的梯形圖程序,,由于繼電控制梯形圖中各被控電器之間是并行關(guān)系,而計算機(jī)程序控制中,,各被控電器之間在時間上是串行關(guān)系,,二者顯然不協(xié)調(diào)。若簡單地像一般單片機(jī)測控系統(tǒng)一樣,,對梯形圖各程序行依次實時采集輸入端子狀態(tài),,進(jìn)行處理后實時輸出,是達(dá)不到控制目的的,。為此,,必須采用一次性采集全部輸入端子狀態(tài),并將其存入輸入緩沖區(qū),。然后,,按梯形圖程序行的邏輯關(guān)系,從輸入緩沖區(qū)讀取相應(yīng)輸入端子狀態(tài),,處理后將待輸出的結(jié)果存入輸出緩沖區(qū),。最后,待梯形圖程序行全部執(zhí)行完畢,一次性將輸出緩沖區(qū)的值輸出到相應(yīng)的輸出端子,,從而完成一個程序執(zhí)行周期,。如此往復(fù),自動進(jìn)行下一輪的采集輸入端子狀態(tài)……,。這種工作方式即稱為掃描方式,,它將串行程序工作和電器并行工作兩種關(guān)系協(xié)調(diào)了起來。另外,,單片機(jī)執(zhí)行一條指令的時間是μs級,,執(zhí)行一個掃描周期的時間為幾ms乃至幾十ms。相對于電器的動作時間而言,,掃描周期是短暫的,,可以認(rèn)為在一個掃描周期內(nèi)輸入端子的狀態(tài)是不變的,,而對其狀態(tài)變化的采集和處理也是實時的,從而滿足了實時控制的要求,。

 


系統(tǒng)硬件配置以AT89C51(以下簡稱51)單片機(jī)為核心,,如圖1所示。該單片機(jī)有4 KB閃存,,不必擴(kuò)展程序存儲器,,其4個I/O口共32個I/O引腳,都可供用戶使用,,其中P0.7~0.0,,P2.4~2.0共13個腳經(jīng)光耦隔離后連到相應(yīng)的輸入端子X07~X00,X14~X10,??梢杂眯谐涕_關(guān)、液位開關(guān),、霍耳開關(guān)和手動按鈕等進(jìn)行輸入,。開關(guān)接通時,相應(yīng)引腳為"0",,取反后存入輸入緩沖區(qū),。


P1.7~1.0共8個引腳用于輸出控制:P1.i為"0"時,相應(yīng)的PNP管導(dǎo)通,,繼電器Ji線圈通電,,其觸點Y5i接通,可驅(qū)動220 V/3 A的負(fù)載,。

為了與PC機(jī)進(jìn)行通信,,系統(tǒng)擴(kuò)展了RS-232C接口電路。51單片機(jī)的RXD和TXD信號經(jīng)RS-232C電平變換后接至9芯插座,。由此可與PC機(jī)進(jìn)行串行通信,。一方面,在編程狀態(tài)時,,可接收PC機(jī)上梯形圖匯編程序編譯結(jié)果的OBJ指令代碼,,并存入程序存儲器;另一方面,,在運(yùn)行狀態(tài)時,,可將I/O口的狀態(tài)和處理結(jié)果實時地發(fā)送給上位機(jī)。

 


程序存儲器選用有SPI接口的X25045芯片,。這是帶可編程看門狗和電源監(jiān)控功能的E2PROM,,有512字節(jié),每字節(jié)可擦寫10萬次,數(shù)據(jù)可保存100年,。上電時自動提供200 ms高電平復(fù)位脈沖,;有三種可編程看門狗周期;電源欠壓,,VCC降到轉(zhuǎn)折點時,自動提供復(fù)位脈沖,。E2PROM采用三線總線的串行外設(shè)接口SPI,,既節(jié)省了I/O口線和電路板空間,又降低了系統(tǒng)成本,。因此,,該芯片是性價比極好的組合芯片。


軟件設(shè)計分為PC機(jī)梯形圖匯編程序編譯軟件和51單片機(jī)軟件兩部分,。前者用IBM-PC匯編語言編寫,,我們稱之為PLC編譯軟件。本機(jī)中我們自己設(shè)計了一套TD型PLC的梯形圖匯編語言指令系統(tǒng),,有LD/LDI,、AN/ANI、OR/ORI,、TM/TMI,、CN/CNI、MA/MAI,、OUT,、JP/JE和END等16條基本指令和X00~07、X10~14,、Y00~07,、CN0~1、TM00~07,、MA00~07,、10~17等器件。用它們來描述繼電器梯形圖,,即設(shè)計梯形圖匯編程序,。用全屏幕編輯軟件將其輸入到PC機(jī),即建立了源程序文件,。然后用PLC編譯軟件將其編譯成PLC目標(biāo)程序文件(OBJ文件),,并經(jīng)串行通信口發(fā)送到單片機(jī),由單片機(jī)將其寫入E2PROM,。


51單片機(jī)軟件由編程軟件和運(yùn)行軟件組成,。編程軟件主要有串行通信和寫E2PROM兩個模塊。此時,須將面版上的手動開關(guān)設(shè)置P2.7="0",,單片機(jī)即處于編程狀態(tài),。當(dāng)P2.7="1"時,單片機(jī)即處于運(yùn)行狀態(tài),。運(yùn)行狀態(tài)的程序主要有:


(1)輸入端子采集模塊


該模塊兩次采集P0口和P1口狀態(tài),,結(jié)果全同時為有效,即將其存入輸入緩沖區(qū),,否則重新采集,。用軟件濾波的方法,提高了抗干擾能力,。


(2)指令分析模塊


該模塊從000H地址開始,,依次讀取E2PROM中的字節(jié)內(nèi)容,先讀出操作碼,,對其分析后轉(zhuǎn)向相應(yīng)的處理程序,;接著讀操作數(shù),供處理程序操作,,從而完成一條梯形圖匯編指令的執(zhí)行,。然后再讀取下一條指令的操作碼……。遇到OUT指令時,,將待輸出的數(shù)據(jù)存入相應(yīng)的輸出緩沖區(qū),。


(3)輸出模塊


當(dāng)CPU從E2PROM中讀到END指令的二進(jìn)制代碼時,表示一次掃描周期結(jié)束,,即將輸出緩沖區(qū)的內(nèi)容一次性輸出到P1口,,從而完成輸出端子的刷新。


該P(yáng)LC的應(yīng)用可以用水塔水位控制的例子來說明,。

 


 
圖2(a)是硬件接線圖,,SB1/SB2是啟動/停止按鈕;SAC是水池液位開關(guān):水浸到時接通,,無水時斷開,;SAH、SAL分別是水塔的高低液位開關(guān),;M是水泵電機(jī),。


圖2(b)是繼電器梯形圖,圖2(c)是繼電器匯編程序,,即TD型PLC源程序,。其中y50是PLC輸出端子,我們將它的軟件觸點y50作為水位上升或下降的標(biāo)志:y50="0",,表示電機(jī)已停,,水位下降,此時SAL雖已接通,但電機(jī)不動作,;y50="1",,表示電機(jī)正在抽水,水位上升,,此時SAL接通,,電機(jī)通電,繼續(xù)抽水,,直到高水位,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。