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