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