可編程控制器也即PLC,,在自動化行業(yè),可編程控制器占據著重要地位,。對于可編程控制器,小編在往期文章中對它的理論知識有所介紹,。為增進大家對可編程控制器的認識,,本文將對基于AT89C51的微型可編程控制器予以講解,。如果你對可編程控制器具有興趣,,不妨繼續(xù)往下閱讀哦。
用單片機構成的PLC,,實際上就是一個單片機測控系統(tǒng),。用這樣一個程序控制的計算機系統(tǒng)去執(zhí)行繼電控制的梯形圖程序,由于繼電控制梯形圖中各被控電器之間是并行關系,,而計算機程序控制中,,各被控電器之間在時間上是串行關系,二者顯然不協(xié)調,。若簡單地像一般單片機測控系統(tǒng)一樣,,對梯形圖各程序行依次實時采集輸入端子狀態(tài),進行處理后實時輸出,,是達不到控制目的的,。為此,必須采用一次性采集全部輸入端子狀態(tài),,并將其存入輸入緩沖區(qū),。然后,按梯形圖程序行的邏輯關系,,從輸入緩沖區(qū)讀取相應輸入端子狀態(tài),,處理后將待輸出的結果存入輸出緩沖區(qū)。最后,,待梯形圖程序行全部執(zhí)行完畢,,一次性將輸出緩沖區(qū)的值輸出到相應的輸出端子,,從而完成一個程序執(zhí)行周期。如此往復,,自動進行下一輪的采集輸入端子狀態(tài)……,。這種工作方式即稱為掃描方式,它將串行程序工作和電器并行工作兩種關系協(xié)調了起來,。另外,,單片機執(zhí)行一條指令的時間是μs級,執(zhí)行一個掃描周期的時間為幾ms乃至幾十ms,。相對于電器的動作時間而言,,掃描周期是短暫的,可以認為在一個掃描周期內輸入端子的狀態(tài)是不變的,,而對其狀態(tài)變化的采集和處理也是實時的,,從而滿足了實時控制的要求。
P1.7~1.0共8個引腳用于輸出控制:P1.i為“0”時,,相應的PNP管導通,,繼電器Ji線圈通電,其觸點Y5i接通,,可驅動220V/3A的負載,。
為了與PC機進行通信,系統(tǒng)擴展了RS-232C接口電路,。51單片機的RXD和TXD信號經RS-232C電平變換后接至9芯插座,。由此可與PC機進行串行通信。一方面,,在編程狀態(tài)時,,可接收PC機上梯形圖匯編程序編譯結果的OBJ指令代碼,并存入程序存儲器;另一方面,,在運行狀態(tài)時,,可將I/O口的狀態(tài)和處理結果實時地發(fā)送給上位機。
程序存儲器選用有SPI接口的X25045芯片,。這是帶可編程看門狗和電源監(jiān)控功能的E2PROM,,有512字節(jié),每字節(jié)可擦寫10萬次,,數據可保存100年,。上電時自動提供200ms高電平復位脈沖;有三種可編程看門狗周期;電源欠壓,VCC降到轉折點時,,自動提供復位脈沖,。E2PROM采用三線總線的串行外設接口SPI,既節(jié)省了I/O口線和電路板空間,,又降低了系統(tǒng)成本,。因此,,該芯片是性價比極好的組合芯片。
軟件設計分為PC機梯形圖匯編程序編譯軟件和51單片機軟件兩部分,。前者用IBM-PC匯編語言編寫,,我們稱之為PLC編譯軟件。本機中我們自己設計了一套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等器件。用它們來描述繼電器梯形圖,,即設計梯形圖匯編程序,。用全屏幕編輯軟件將其輸入到PC機,,即建立了源程序文件,。然后用PLC編譯軟件將其編譯成PLC目標程序文件(OBJ文件),并經串行通信口發(fā)送到單片機,,由單片機將其寫入E2PROM,。
51單片機軟件由編程軟件和運行軟件組成。編程軟件主要有串行通信和寫E2PROM兩個模塊,。此時,,須將面版上的手動開關設置P2.7=“0”,單片機即處于編程狀態(tài),。當P2.7=“1”時,,單片機即處于運行狀態(tài)。運行狀態(tài)的程序主要有:
?。?)輸入端子采集模塊
該模塊兩次采集P0口和P1口狀態(tài),,結果全同時為有效,即將其存入輸入緩沖區(qū),,否則重新采集,。用軟件濾波的方法,,提高了抗干擾能力。
?。?)指令分析模塊
該模塊從000H地址開始,,依次讀取E2PROM中的字節(jié)內容,先讀出操作碼,,對其分析后轉向相應的處理程序;接著讀操作數,,供處理程序操作,從而完成一條梯形圖匯編指令的執(zhí)行,。然后再讀取下一條指令的操作碼……,。遇到OUT指令時,將待輸出的數據存入相應的輸出緩沖區(qū),。
?。?)輸出模塊
當CPU從E2PROM中讀到END指令的二進制代碼時,表示一次掃描周期結束,,即將輸出緩沖區(qū)的內容一次性輸出到P1口,,從而完成輸出端子的刷新。
該PLC的應用可以用水塔水位控制的例子來說明,。
圖2(a)是硬件接線圖,,SB1/SB2是啟動/停止按鈕;SAC是水池液位開關:水浸到時接通,無水時斷開;SAH,、SAL分別是水塔的高低液位開關;M是水泵電機,。
圖2(b)是繼電器梯形圖,圖2(c)是繼電器匯編程序,,即TD型PLC源程序,。其中y50是PLC輸出端子,我們將它的軟件觸點y50作為水位上升或下降的標志:y50=“0”,,表示電機已停,,水位下降,此時SAL雖已接通,,但電機不動作;y50=“1”,,表示電機正在抽水,水位上升,,此時SAL接通,,電機通電,繼續(xù)抽水,,直到高水位,。
系統(tǒng)完成了預期設想的功能目標。基于AT89C51的微型可編程控制器有其自己的優(yōu)勢,,廣泛用于生產生活中,。