張帆,高紅亮,尹歡歡
(湖北師范學(xué)院, 湖北黃石 435002)
嵌入式PLC高速脈沖輸出的研究與實(shí)現(xiàn)
張帆,高紅亮,尹歡歡
(湖北師范學(xué)院, 湖北黃石 435002)
本文介紹了基于C8051F020單片機(jī)的嵌入式PLC的高速脈沖輸出功能的開發(fā)。靈活運(yùn)用C8051F020內(nèi)部提供的可編程計(jì)數(shù)器陣列(PCA)模塊實(shí)現(xiàn)了PLC高速脈沖輸出功能。
嵌入式PLC C8051F020 高速脈沖輸出
在自動(dòng)化技術(shù)迅速發(fā)展的今天,自動(dòng)化設(shè)備在工業(yè)生產(chǎn)中得到普及。工業(yè)生產(chǎn)中的許多自動(dòng)化設(shè)備都要求精確控制,可靠定位。自動(dòng)化生產(chǎn)線上的點(diǎn)位控制系統(tǒng)、運(yùn)動(dòng)控制系統(tǒng),以及步進(jìn)電機(jī)、伺服電機(jī)的控制都需具要有高速脈沖輸出功能的設(shè)備來(lái)驅(qū)動(dòng),實(shí)現(xiàn)精確控制。專用的高速脈沖輸出設(shè)備價(jià)格昂貴,且功能沒有針對(duì)性。采用單片機(jī)控制,不僅要開發(fā)軟件系統(tǒng),還要設(shè)計(jì)硬件電路,而且還要考慮在工業(yè)現(xiàn)場(chǎng)中抗干擾問題。可編程序控制器(PLC)具有抗干擾能力強(qiáng)、可靠性高、體積小等優(yōu)點(diǎn),是專為工業(yè)環(huán)境而設(shè)計(jì)的電子系統(tǒng)[1]。因此,本文采用具有嵌入式操作系統(tǒng)的PLC來(lái)開發(fā)高速脈沖輸出功能。
嵌入式PLC是用單片機(jī)來(lái)控制,用梯形圖來(lái)編程的芯片組。本文所設(shè)計(jì)的嵌入式PLC是建立在EASYCORE操作系統(tǒng)平臺(tái)之上的。該系統(tǒng)內(nèi)核可實(shí)現(xiàn)實(shí)時(shí)任務(wù)調(diào)度,梯形圖語(yǔ)言的解釋和執(zhí)行,以及通信等功能,并且留出了可二次開發(fā)驅(qū)動(dòng)程序的接口[2]。
嵌入式芯片組的PLC兼容三菱FX2N梯形圖指令和編程軟件。通過梯形圖、指令表可以實(shí)現(xiàn)數(shù)據(jù)運(yùn)算、邏輯順序控制、特殊控制等功能,可以滿足數(shù)字量控制、模擬量控制,以及CANBUS、RS485等網(wǎng)絡(luò)通信的需要。此外,嵌入式PLC芯片組使用的MCU為C8051F020單片機(jī),C8051F020內(nèi)部豐富的資源如PCA、SPI、I2C等功能都可以通過編寫二次開發(fā)程序加載到實(shí)時(shí)操作系統(tǒng)中。
2.1 高速脈沖輸出功能簡(jiǎn)介
脈沖控制要用到脈沖信號(hào),一般小型PLC都具有高速脈沖輸出功能,如西門子的S7-200、三菱FX2N等都可以提供多個(gè)高速脈沖輸出端口[3]。通過梯形圖中脈沖參數(shù)的設(shè)置,結(jié)合具體的
2.2 硬件設(shè)計(jì)
高速輸出頻率較高,因此需要選用晶體管輸出型。晶體管型輸出電路如圖(1)所示,輸出的高速脈沖信號(hào)由內(nèi)部電路發(fā)出,經(jīng)光電耦合器送給輸出晶體管,晶體管的飽和和截止?fàn)顟B(tài)相當(dāng)于觸點(diǎn)的接通和斷開。穩(wěn)壓二極管是作用是防止過電壓和浪涌電壓,保護(hù)晶體管。
2.3 軟件設(shè)計(jì)
2.3.1 C8051F020高速輸出簡(jiǎn)介
C8051F020單片機(jī)內(nèi)部有一個(gè)可編程計(jì)數(shù)器/定時(shí)器陣列(PCA)。PCA包括一個(gè)專用的16位計(jì)數(shù)器/定時(shí)器和5個(gè)16位捕捉/比較模塊。每個(gè)捕捉/比較模塊都有自己的I/O線(CEXn), 可以通過數(shù)字交叉開關(guān)配置到相應(yīng)的單片機(jī)引腳。計(jì)數(shù)器/定時(shí)器由一個(gè)可編程的時(shí)基信號(hào)驅(qū)動(dòng),時(shí)基信號(hào)有6個(gè)時(shí)鐘源:系統(tǒng)時(shí)鐘/12、系統(tǒng)時(shí)鐘/4、定時(shí)器0溢出、外部時(shí)鐘輸入(ECI)、系統(tǒng)時(shí)鐘和外部振蕩源頻率/8。每個(gè)捕捉/比較模塊可以獨(dú)立地工作在一下6種工作方式之一:邊沿觸發(fā)捕捉、軟件定時(shí)器、高速輸出、頻率輸出、8位PWM和16位PWM[4]。C8051F020提供的增強(qiáng)定時(shí)器功能與標(biāo)準(zhǔn)8051的定時(shí)器/計(jì)數(shù)器相比,它所需的CPU干預(yù)更少。
下面就本文用到的高速輸出方式的基本原理做簡(jiǎn)要介紹。
在高速輸出方式下,通過改變相應(yīng)模塊的16位捕捉/比較寄存器(PCA0CPHn和PCA0CPLn)內(nèi)的值可以使輸出脈沖的寬度或頻率發(fā)生變化。每當(dāng)PCA的16位計(jì)數(shù)器與模塊的16位捕捉/比較寄存器值相等時(shí),CEXn引腳就會(huì)發(fā)生電平轉(zhuǎn)換。與此同時(shí),如果捕捉/比較模塊控制寄存器PCA0CPMn中的CCFn位被置“1”,則可以進(jìn)入PCA的中斷程序,在中斷程序中更新PCA0CPHn和PCA0CPLn的值來(lái)設(shè)置下一次匹配時(shí)刻。這樣,通過計(jì)算設(shè)置PCA0CPHn和PCA0CPLn內(nèi)的數(shù)值就可以控制輸出脈沖的頻率和脈沖寬度。所產(chǎn)生脈沖的頻率由公式(1)給出。
其中,F(xiàn)out為CEXn引腳輸出的脈沖頻率。Fpca是由PCA方式寄存器PCA0MD選擇的PCA時(shí)鐘的頻率。本文程序中選用的時(shí)基信號(hào)的時(shí)鐘源為系統(tǒng)時(shí)鐘,即Fpca=24 MHZ。△n是連續(xù)兩次匹配16位捕捉/比較寄存器的差值。輸出頻率變化的脈沖時(shí),△n也是變化的。
由公式(1)可以看出,△n直接決定輸出脈沖頻率的大小。如圖2,假設(shè)捕捉/比較寄存器的初值為n1,PCA計(jì)數(shù)器從0開始計(jì)數(shù),當(dāng)計(jì)數(shù)到n1時(shí)發(fā)生匹配,電平翻轉(zhuǎn),進(jìn)入中斷程序。在中斷程序中我們需要將捕捉/比較寄存器的值設(shè)置為n2。其中n2=n1+△n,n3=n2+△n……以此類推,每一次進(jìn)中斷都要對(duì)捕捉/比較寄存器重新賦值,這樣才能保證輸出準(zhǔn)確的脈沖頻率。
2.3.2 高速脈沖輸出所占用的PLC資源
多段脈沖輸出時(shí)需要設(shè)定每段脈沖的起始頻率f(占用2個(gè)字節(jié))、頻率改變量△f(有符號(hào)數(shù),為負(fù)表示頻率依次減小,占用2個(gè)字節(jié))、以及脈沖數(shù)(占用四字節(jié)),脈沖數(shù)的范圍為0~232-1。段的起始地址存放在數(shù)據(jù)寄存器D5860中,起始地址存放脈沖段數(shù),然后按照段的順序依次將各段脈沖參數(shù)存入起始地址之后的連續(xù)D寄存器區(qū)。M1006為高速脈沖啟動(dòng)輔助繼電器[5]。
2.3.3 嵌入式PLC高速脈沖輸出設(shè)計(jì)原理
芯片組為用戶二次開發(fā)設(shè)計(jì)了七個(gè)用戶程序嵌入接口,本文程序設(shè)計(jì)用到其中的2個(gè)接口:USER_CONFIG、USER_SCAN。USER_CONFIG為用戶I/O配置程序入口,此段程序會(huì)在內(nèi)核重新上電后調(diào)用一次。高速脈沖輸出端口在這里通過數(shù)字交叉開關(guān)配置到單片機(jī)相應(yīng)引腳。USER_SCAN為用戶演算周期掃描程序,所有梯形圖執(zhí)行完后,即調(diào)用該程序,PCA模塊的初始化和△n值的更新放在此段程序中。嵌入式PLC輸出高速脈沖流程圖如圖3所示。
PLC上電運(yùn)行后,如果梯形圖中相應(yīng)的高速脈沖輸出標(biāo)志位被置位,即M1006=1,則在執(zhí)行用戶演算周期程序時(shí)會(huì)初始化PCA模塊輸出高速脈沖,如果M1006被復(fù)位,則立即停止脈沖輸出,PCA高速輸出方式被禁止。
在PCA中斷程序中,需要對(duì)匹配值更新,同時(shí)對(duì)脈沖進(jìn)行計(jì)數(shù)。當(dāng)脈沖數(shù)達(dá)到設(shè)定值后繼續(xù)輸出下一段脈沖串或結(jié)束脈沖輸出任務(wù)。PCA中斷服務(wù)流程如圖4所示。
3.1 輸出頻率測(cè)試
為驗(yàn)證高速方式輸出脈沖頻率的準(zhǔn)確性,比較示波器觀測(cè)值與理論計(jì)算值,得出結(jié)果如表1所示。
通過表1數(shù)據(jù)比較可以看出,實(shí)際輸出頻率與理論值相差很小,符合設(shè)計(jì)要求。
當(dāng)設(shè)定的輸出脈沖頻率為整數(shù)時(shí),實(shí)際輸出頻率與理論值基本一致。經(jīng)過試驗(yàn),當(dāng)設(shè)定輸出脈沖頻率非整數(shù)時(shí),實(shí)際輸出頻率的準(zhǔn)確性會(huì)降低。
3.2 梯形圖功能測(cè)試
其他各段脈沖參數(shù)須依次裝入相應(yīng)的寄存器中。通過示波器觀察,可明顯看出脈沖寬度的變化過程。經(jīng)測(cè)試,各段脈沖滿足要求。
本文基于嵌入式PLC,研究具有高速輸出功能的PLC。通過對(duì)C8051F020單片機(jī)PCA模塊的運(yùn)用,實(shí)現(xiàn)了嵌入式PLC的高速脈沖輸出功能。結(jié)合計(jì)算與實(shí)驗(yàn)觀察,驗(yàn)證了功能的可行性。應(yīng)用嵌入式PLC開發(fā)設(shè)計(jì)高速輸出功能降低了開發(fā)難度和成本,是一種經(jīng)濟(jì)、有效的方法。
[1] 王永華.現(xiàn)代電氣控制及PLC應(yīng)用技術(shù)[M].北京:北京航天航空大學(xué)出版社,2008.
[2] 向前進(jìn),周純杰,龔云生.嵌入式PLC的高速脈沖計(jì)數(shù)開發(fā)[J].計(jì)算技術(shù)與自動(dòng)化,2006,25(4):47-50.
[3] 宋伯生. PLC編程實(shí)用指南[M].北京:機(jī)械工業(yè)出版社, 2006.
Implementation of High-Speed Pulse Output of Embedded PLC
Zhang Fan,Gao Hongliang,Yin Huanhuan
(Hubei Normal University, Huangshi 435002, Hubei, China)
This article describes the development of high-speed pulse output function of embedded PLC based on C8051F020. The high-speed pulse output function of PLC is implemented by using the internal programmable counter array (PCA) module provided by C8051F020 flexibly.
embedded PLC; C8051F020; high-speed pulse output
TP23
A
1003-4862(2014)03-0062-03
2013-09-15
湖北師范學(xué)院2012年國(guó)家級(jí)大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計(jì)劃項(xiàng)目(項(xiàng)目編號(hào):201210513027)。
張帆(1990-),男,工學(xué)學(xué)士,研究方向:電氣工程及其自動(dòng)化??刂埔?,可以輸出一段或多段脈沖信號(hào)。本文設(shè)計(jì)的PLC高速脈沖可以實(shí)現(xiàn)多段脈沖輸出。