趙修良 彭文斌 賀三軍 吳榮燕 劉麗艷 張嘉月
(南華大學(xué) 核科學(xué)技術(shù)學(xué)院,湖南 衡陽(yáng) 421001)
可編程邏輯控制器(PLC)用于工業(yè)控制可靠性高,抗干擾能力強(qiáng),通信能力強(qiáng),擴(kuò)展模塊豐富等特點(diǎn)。西門(mén)子S7-200 CPU224XP PLC 具有2 路200KHz 的高速計(jì)數(shù)器輸入[1]。然而,在對(duì)具有隨機(jī)性的核脈沖信號(hào)進(jìn)行計(jì)數(shù)時(shí),PLC 的計(jì)數(shù)頻率過(guò)低會(huì)產(chǎn)生大量信號(hào)堆積而不能滿足系統(tǒng)要求。目前,西門(mén)子PLC 計(jì)數(shù)頻率達(dá)到105數(shù)量級(jí)的情況下,關(guān)于針對(duì)提高其計(jì)數(shù)頻率的問(wèn)題的研究暫未展開(kāi)。
本文提出了基于8254-2、單片機(jī)與PLC 的核脈沖計(jì)數(shù)系統(tǒng),在某種程度上提高了PLC 計(jì)數(shù)頻率。
采用8254-2 計(jì)數(shù)器記錄一次儀表處理后的核脈沖,把記錄的核脈沖數(shù)送給單片機(jī)的同時(shí),單片機(jī)控制8254-2 計(jì)數(shù)器的工作方式等;單片機(jī)把記錄下的數(shù)據(jù)通過(guò)串口通信的方式發(fā)送給PLC 進(jìn)行數(shù)據(jù)處理。
8254-2 是3 通道16 位可編程減法計(jì)數(shù)器,最高計(jì)數(shù)頻率10MHz,所有引腳都和TTL 兼容,具有CS、RD 和WR 控制線,D0-D7 的雙向三態(tài)數(shù)據(jù)線、A0 和A1 地址線。其它CLK0-CLK2 為每個(gè)計(jì)數(shù)器的時(shí)鐘輸入引腳,GATE0-GATE2 為每個(gè)計(jì)數(shù)器的門(mén)控輸入引腳,OUT0-OUT2 為每個(gè)計(jì)數(shù)器的輸出引腳,當(dāng)達(dá)到設(shè)定計(jì)數(shù)值時(shí)不同工作方式會(huì)產(chǎn)生不同的輸出波形。本文采用了其工作方式2:脈沖發(fā)生器,對(duì)輸入信號(hào)作N(計(jì)數(shù)器初值)次分頻,OUT 輸出連續(xù)的、寬度為1 個(gè)輸入脈沖周期的負(fù)脈沖[2]。
8254-2 與單片機(jī)的電路連接如圖1 所示。74LS373 鎖存低8 位地址;74LS154 將高位地址譯碼產(chǎn)生片選信號(hào);單片機(jī)的ALE 引腳用來(lái)鎖存P0 口送出的低8 位地址;單片機(jī)的P1.3引腳控制GATE0 信號(hào)功能。
圖1 單片機(jī)與8254-2 計(jì)數(shù)器的連接電路
本文采用AT89C51 單片機(jī),其串行口輸出的是TTL 電平,而PLC 只帶有RS-485 接口。因此,要與PLC 進(jìn)行串口通信,必須完成TTL 到RS485 電平的轉(zhuǎn)換。本文選擇了MAX485芯片。
MAX485 接口芯片是Maxim 公司的一種RS-485 芯片。采用單一電源+5V 工作,額定電流為300μA,采用半雙工通訊方式,它完成將TTL 電平與RS-485 電平轉(zhuǎn)換的功能。RO 和DI 端分別為接收器的輸出和驅(qū)動(dòng)器的輸入端。當(dāng)為邏輯0 時(shí),器件處于接收狀態(tài);當(dāng)DE 為邏輯1 時(shí),器件處于發(fā)送狀態(tài);A 端和B 端分別為接收和發(fā)送的差分信號(hào)端,當(dāng)A 引腳的電平高于B 時(shí),代表發(fā)送的數(shù)據(jù)為1;當(dāng)A 的電平低于B 端時(shí),代表發(fā)送的數(shù)據(jù)為0[3]。
與單片機(jī)連接時(shí)只需要一個(gè)信號(hào)控制MAX485 的接收和發(fā)送即可,同時(shí)將A 和B 端之間加匹配電阻R。A 和B 的另一端分別連PLC 自由端口PORT0 的8 號(hào)和3 號(hào)端。如圖2 所示。
圖2 PLC 與單片機(jī)通信接口電路
由于系統(tǒng)中AT89C51 單片機(jī)只是發(fā)送數(shù)據(jù),PLC 單純接收數(shù)據(jù),所以采用單工串行通信。
AT89C51 是一個(gè)低功耗,高性能CMOS8 位單片機(jī),它內(nèi)含1 個(gè)全雙工的串行通信口。本系統(tǒng)單純采用了AT89C51 單片機(jī)單工串口通信,利用串口中斷來(lái)完成發(fā)送數(shù)據(jù)功能。
S7-224XP PLC 是串口通信方式最豐富的小型PLC 之一,支持多種通信協(xié)議,本系統(tǒng)采用其自由通信協(xié)議。自由通信協(xié)議又叫用戶定義協(xié)議,利用自由端口模式,可以實(shí)現(xiàn)用戶定義的通信協(xié)議,連接單片機(jī)。
在自由端口模式下,PLC 的串行通信接口由用戶來(lái)控制,通過(guò)語(yǔ)句表程序以及單片機(jī)的匯編語(yǔ)言進(jìn)行配合,來(lái)使用完成中斷、字符接收中斷、發(fā)送完成中斷等,通信協(xié)議由用戶完全控制。這時(shí)單片機(jī)處于主機(jī)狀態(tài),由單片機(jī)主動(dòng)發(fā)送信息,PLC 接到信息完成數(shù)據(jù)處理即可。
PLC 采用自由端口模式協(xié)議,協(xié)議由語(yǔ)句表編程實(shí)現(xiàn);單片機(jī)使用異步發(fā)送模式,協(xié)議用匯編語(yǔ)言編程實(shí)現(xiàn)。
由于單片機(jī)與PLC 通信要求使用相同的波特率,且傳輸?shù)臄?shù)位相同,所以在單片機(jī)串口的初始化設(shè)置中將波特率的定時(shí)器1、串口的控制和中斷控制按如下步驟進(jìn)行[4]:(1)確定定時(shí)器1 的工作方式:TMOD =20H;(2)確定定時(shí)器1 的初始值裝載:TH1 =0FDH;TL1 =0FDH;(3)啟動(dòng)定時(shí)器1:TR1 =1;(4)確定串口的控制:SCON =52H;(5)計(jì)算波特率:選擇的晶振為11.0592MHz;波特率=2SMOD/32 ×定時(shí)器1 的溢出率(式中SMOD 為PCON 寄存器的最高位),溢出率=11.0592/12,PCON=00H;得出串口波特率為9.6K。
字符信息格式為:1 位起始位,8 位數(shù)據(jù)位,無(wú)校驗(yàn)位,1 位停止位[5]。
異步通信的字符信息格式如圖3 所示。
圖3 字符信息格式
數(shù)據(jù)位的發(fā)送順序?yàn)榈臀辉谇埃呶辉诤蟆?/p>
單片機(jī)系統(tǒng)的軟件設(shè)計(jì)包括了單片機(jī)對(duì)8254-2 計(jì)數(shù)器的計(jì)數(shù)方式控制和與PLC 的異步串行通信發(fā)送程序。主程序流程圖如圖4 所示。
圖4 單片機(jī)程序流程圖
PLC 系統(tǒng)軟件的設(shè)計(jì)包括了串口通信接收程序和數(shù)據(jù)處理程序。流程圖如圖5~圖7。
由8254-2 計(jì)數(shù)器、AT89C51 單片機(jī)以及S7-224XP PLC為核心的核脈沖計(jì)數(shù)系統(tǒng),不僅體現(xiàn)了PLC 穩(wěn)定性高、抗干擾能力強(qiáng)的特點(diǎn);也發(fā)揮了單片機(jī)靈活性高的、易擴(kuò)展的特性;更是綜合了8254-2 可編程計(jì)數(shù)芯片的高頻率計(jì)數(shù)的優(yōu)勢(shì),使三者優(yōu)勢(shì)互補(bǔ)。實(shí)驗(yàn)證明,該系統(tǒng)具有靈活性高,實(shí)用性強(qiáng),開(kāi)發(fā)成本低等特點(diǎn),且在某種程度上提高了PLC 計(jì)數(shù)頻率,使PLC 得到更廣泛的應(yīng)用。
[1]西門(mén)子(中國(guó))有限公司深入淺出西門(mén)子S7-200 PLC[M].北京航空航天大學(xué)出版社,2003.
[2]鄭學(xué)堅(jiān),周斌.微型計(jì)算機(jī)原理及應(yīng)用(第三版)[M].清華大學(xué)出版社,2007.
[3]徐建軍.MCS-51 系列單片機(jī)應(yīng)用及接口技術(shù)[M].人民郵電出版社,2003.
[4]邴春秋等.基于PLC 和單片機(jī)實(shí)現(xiàn)的數(shù)據(jù)采集控制系統(tǒng)設(shè)計(jì)[J].西華大學(xué)學(xué)報(bào),2007,26(6):8-9.
[5]劉文濤.單片機(jī)語(yǔ)言C51 程序設(shè)計(jì)[M].北京:原子能出版社,2004.