<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于A(yíng)T89C55單片機的PLC研究

基于A(yíng)T89C55單片機的PLC研究

作者: 時(shí)間:2012-01-19 來(lái)源:網(wǎng)絡(luò ) 收藏

隨著(zhù)高職教育的迅速發(fā)展,將PLC技術(shù)引進(jìn)高職教學(xué)并作為一門(mén)較為重要的課程,在高職教育中已達成共識,是課程建設現代化的重要措施。本文在研究 AT89C55后,以該為核心設計了一個(gè)綜合PLC系統,集成了多路I/O及輸入,并可以通過(guò)RS232/RS485與上位機進(jìn)行通訊,已經(jīng)作為若干高校的實(shí)驗設備使用,并且,在要求較高的工程項目中也得到了具體的應用。

1 PLC的硬件功能設計

該PLC的設計思想基于三菱PLC的操作語(yǔ)言,仿照三菱編程器的操作,利用AT89C55作為主控芯片,輔以其它芯片完成相關(guān)功能,其邏輯圖見(jiàn)圖1所示。為了達到教學(xué)目的,在設計思路上和常規的PLC有幾個(gè)不同點(diǎn):一是為了使學(xué)生更多地接觸不同的輸出方式并進(jìn)行相關(guān)的實(shí)驗,設計了兩種輸出形式,即8路繼電器輸出和4路晶體管輸出,而且,繼電器輸出的端子中有四路沒(méi)有公共端子,三個(gè)端子完全引出,由學(xué)生自由組合,可擴大控制范圍;二是在輸入上,除了16路輸入外,還設計了2路輸入和高速計數器輸入;三是源代碼開(kāi)放,工科院校自控和計算機專(zhuān)業(yè)都開(kāi)設單片機課程,由于條件所限,學(xué)生將實(shí)踐和學(xué)習相結合的機會(huì )并不多,鑒于這種情況,將源代碼開(kāi)放,學(xué)生可以學(xué)習、補充、修改程序,既完善了PLC程序,又鍛煉了教師和學(xué)生。

在大部分PLC中,例如,三菱[1]、歐姆龍和西門(mén)子等,上述功能一般由獨立的模塊來(lái)實(shí)現。這里將各種功能集成到一個(gè)PLC 模塊中,可以降低實(shí)驗設備的成本。在圖1中,為增加學(xué)生對輸出模塊的認識,可控硅模塊可以和繼電器模塊互換,結構只是一個(gè)可控硅光耦(例如 MOC3023)驅動(dòng)一個(gè)雙向可控硅(例如BTA10-600)。

IC卡的目的是當學(xué)生使用編程器編程時(shí),用來(lái)記錄學(xué)生的程序,有利于程序的修改和調試以及教師評分,用于實(shí)際工程項目中的PLC省略此功能。串行通信接口支持RS232和RS485兩種標準,撥碼開(kāi)關(guān)給出本機地址,使用RS485接口組成監控網(wǎng)絡(luò )時(shí)使用。


2 單片機語(yǔ)言的選擇及系統軟件設計

一般說(shuō)來(lái),現在通用的單片機編程語(yǔ)言有匯編語(yǔ)言和C語(yǔ)言,C語(yǔ)言編程方便、易讀,但需要占用較多的內存,從而導致執行速度變慢。PLC是以循環(huán)掃描程序行的方式來(lái)工作的,對實(shí)時(shí)性要求較高,一個(gè)掃描周期一般不大于20ms,這樣,當程序較長(cháng)時(shí),速度就顯得尤為重要了。因此,選擇匯編語(yǔ)言作為PLC的系統設計語(yǔ)言。

由于PLC語(yǔ)言是面向用戶(hù)的,可以支持的語(yǔ)言并不是單片機可識別的,而且要求可以由用戶(hù)修改并下載到單片機的程序存儲器中,因此需要一個(gè)譯碼模塊,在執行中把每一行用戶(hù)程序翻譯成機器可識別的子程序或過(guò)程。具體實(shí)現的方法為:

用戶(hù)程序4個(gè)字節為一幀:“XX XX XX XX”,其中第一字節為命令,例如,OR、 MOV、OUT等;第二字節為執行元件,例如,繼電器、輸入等;第三、四字節為相關(guān)數據,這與不同的命令內容相關(guān),例如,“01 10 00 03”定義為“LD Y 03”,“00 XX XX XX”定義為“NOP”等。但是,數據區不足以表達數據,可以有后續數據,也是4字節為一幀,以FE為第一字節,例如,“FE XX XX XX”,這樣,就將命令幀和數據幀區分了。用戶(hù)程序下載到 EEROM(FM25640),由主程序依序讀出,再交譯碼模塊翻譯后執行。

程序中較難實(shí)現的是繼電器的上升沿或下降沿檢測。在PLC語(yǔ)言中許多情況是要檢測上升沿或下降沿的,有近千個(gè)繼電器,在每個(gè)循環(huán)中對所有的繼電器都進(jìn)行檢測記錄,無(wú)論時(shí)間或記錄位置(寄存器)都是難以實(shí)現的,故開(kāi)辟了一個(gè)存儲區,專(zhuān)門(mén)記錄激活了(即使用中)的繼電器狀態(tài),在程序運行前,先對繼電器掃描,把激活的繼電器依序登錄,當程序運行到該繼電器時(shí)就對該繼電器進(jìn)行當前狀態(tài)同前一周期狀態(tài)比較登記,當前一次狀態(tài)與當前狀態(tài)相反時(shí)便認為是上升沿(或下降沿)到達。

3 開(kāi)關(guān)量I/O的軟硬件設計

開(kāi)關(guān)量I/O是PLC的重要內容,一般來(lái)說(shuō),為了提高抗干擾能力,輸入與MCU之間是通過(guò)光耦隔離的,考慮到成本和盡量減少接口的占用,采用16選1模擬開(kāi)關(guān)CD4067(U8),4條地址線(xiàn)用4個(gè)光耦521-1(U10-13)隔離。

由于受光耦響應速度和掃描周期的限制,不允許使用每個(gè)周期依序查詢(xún)的辦法,故在程序中設計了一毫秒定時(shí)(2)中斷,每毫秒查詢(xún)一個(gè)接口,同時(shí)將接口狀態(tài)映射到BIT 30H-3FH,因此,只需要對BIT30H-3FH查詢(xún),便可知道接口狀態(tài)。中斷程序如下:

ORG 2BH

LJMPINPUT ;每毫秒中斷一次

INPUT:PUSH PSW

PUSH ACC

PUSH DPL

PUSH DPH

MOV C, P1.4

MOV A, 25H

MOV DPTR, #INPUT1

RL A

RL A

JMP @A+DPTR

INPUT1: MOV 30H, C

SJMP INPUT2

MOV 31H, C

SJMP INPUT2

MOV 32H, C

SJMP INPUT2

MOV 33H, C

SJMP INPUT2

MOV 34H, C

SJMP INPUT2

MOV 35H, C

SJMP INPUT2

MOV 36H, C

SJMP INPUT2

MOV 37H, C

SJMP INPUT2

MOV 38H, C

SJMP INPUT2

MOV 39H, C

SJMP INPUT2

MOV 3AH, C

SJMP INPUT2

MOV 3BH, C

SJMP INPUT2

MOV 3CH, C

SJMP INPUT2

MOV 3DH, C

SJMP INPUT2

MOV 3EH, C

SJMP INPUT2

MOV 3FH, C

INPUT2: INC 25H

ANL 25H, #0FH

ANL P1, #0F0H

MOV A, 25H

ORL P1, A

POP DPH

POP DPL

POP ACC

POP PSW

RETI

首先保護PSW、ACC和DPTR,讀入當前輸入P1.4至C寄存器。25H是CD4067的地址映像,指向當前輸入地址,將當前地址乘以4(跳轉地址占4個(gè)字節),跳轉到相應位置得到輸入映像,指向下一個(gè)輸入地址,然后,恢復被保護的寄存器,返回。程序代碼長(cháng)度為103個(gè)字節,執行所占用的時(shí)間為 0.018毫秒,完全滿(mǎn)足PLC的實(shí)時(shí)性要求。

輸出分為兩部分,8個(gè)繼電器輸出和4個(gè)晶體管輸出,由于單片機上電時(shí)端口被置位,為了防止出現上電時(shí)誤導通,故而選用PNP管8550作為繼電器的驅動(dòng)管,使得上電時(shí)晶體管處于截止狀態(tài)。在軟件上只要對相應端口復位,繼電器動(dòng)作。

4 PLC的測試與應用

利用文獻[2]中的通用多功能計算機監控系統測試軟件,在攝氏40℃以上的環(huán)境中對PLC進(jìn)行測試,采用CRC校驗,每4秒發(fā)送一個(gè)數據包,連續測試48小時(shí),PLC都能夠成功識別數據包,并返回正確的結果,完全能夠滿(mǎn)足實(shí)際的工程要求。

內蒙第一機械制造集團公司是國有特大型企業(yè),生產(chǎn)軍用裝備。該公司的液壓件打壓試驗臺,就是采用該PLC進(jìn)行監控的。全部試驗過(guò)程通過(guò)PLC、數據采集卡、工控機等進(jìn)行控制。試驗過(guò)程及結果通過(guò)計算機顯示屏隨時(shí)監控,并通過(guò)打印機打印輸出試驗數據。

在北方奔馳重型車(chē)輛制造有限公司的發(fā)動(dòng)機轉速測量中,也使用了該PLC。這兩個(gè)監控系統目前運行可靠。該PLC還批量投入實(shí)驗室使用,在高級技工考試中也得到了成功的應用。

本文作者創(chuàng )新點(diǎn)

本文利用AT89C55單片機實(shí)現了工業(yè)和教學(xué)使用的PLC系統,系統穩定可靠,并用于實(shí)際的工業(yè)控制系統和教學(xué)設備中,對于替代昂貴的進(jìn)口PLC和節省教育經(jīng)費具有重要意義。

作者簡(jiǎn)介:王建明(1957-),男(漢族),內蒙古包頭人,包頭職業(yè)技術(shù)學(xué)院副院長(cháng),副教授,主要從事計算機監控技術(shù)的開(kāi)發(fā)研究。E-mail: wjm7591@yahoo.com.cn

Biography: Wang Jianming, male, the Han nationality, born in 1957, deputy headmaster and associate professor of Baotou Vocational Technical College. His main research field is the development of computer monitor system. E-mail: wjm7591@yahoo.com.cn

參考文獻

[1] 沈世斌. 三菱PLC 與PC 機間的通訊應用[J], 微計算機信息, 2006,22(4-1):81-83.

[2] 王建明. 智能設備的通用測試.工業(yè)控制計算機, 2002, 15(12):10-12.



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>