張帆,高紅亮,尹歡歡
(湖北師范學院, 湖北黃石 435002)
嵌入式PLC高速脈沖輸出的研究與實現
張帆,高紅亮,尹歡歡
(湖北師范學院, 湖北黃石 435002)
本文介紹了基于C8051F020單片機的嵌入式PLC的高速脈沖輸出功能的開發。靈活運用C8051F020內部提供的可編程計數器陣列(PCA)模塊實現了PLC高速脈沖輸出功能。
嵌入式PLC C8051F020 高速脈沖輸出
在自動化技術迅速發展的今天,自動化設備在工業生產中得到普及。工業生產中的許多自動化設備都要求精確控制,可靠定位。自動化生產線上的點位控制系統、運動控制系統,以及步進電機、伺服電機的控制都需具要有高速脈沖輸出功能的設備來驅動,實現精確控制。專用的高速脈沖輸出設備價格昂貴,且功能沒有針對性。采用單片機控制,不僅要開發軟件系統,還要設計硬件電路,而且還要考慮在工業現場中抗干擾問題。可編程序控制器(PLC)具有抗干擾能力強、可靠性高、體積小等優點,是專為工業環境而設計的電子系統[1]。因此,本文采用具有嵌入式操作系統的PLC來開發高速脈沖輸出功能。
嵌入式PLC是用單片機來控制,用梯形圖來編程的芯片組。本文所設計的嵌入式PLC是建立在EASYCORE操作系統平臺之上的。該系統內核可實現實時任務調度,梯形圖語言的解釋和執行,以及通信等功能,并且留出了可二次開發驅動程序的接口[2]。
嵌入式芯片組的PLC兼容三菱FX2N梯形圖指令和編程軟件。通過梯形圖、指令表可以實現數據運算、邏輯順序控制、特殊控制等功能,可以滿足數字量控制、模擬量控制,以及CANBUS、RS485等網絡通信的需要。此外,嵌入式PLC芯片組使用的MCU為C8051F020單片機,C8051F020內部豐富的資源如PCA、SPI、I2C等功能都可以通過編寫二次開發程序加載到實時操作系統中。
2.1 高速脈沖輸出功能簡介
脈沖控制要用到脈沖信號,一般小型PLC都具有高速脈沖輸出功能,如西門子的S7-200、三菱FX2N等都可以提供多個高速脈沖輸出端口[3]。通過梯形圖中脈沖參數的設置,結合具體的
2.2 硬件設計
高速輸出頻率較高,因此需要選用晶體管輸出型。晶體管型輸出電路如圖(1)所示,輸出的高速脈沖信號由內部電路發出,經光電耦合器送給輸出晶體管,晶體管的飽和和截止狀態相當于觸點的接通和斷開。穩壓二極管是作用是防止過電壓和浪涌電壓,保護晶體管。

2.3 軟件設計
2.3.1 C8051F020高速輸出簡介
C8051F020單片機內部有一個可編程計數器/定時器陣列(PCA)。PCA包括一個專用的16位計數器/定時器和5個16位捕捉/比較模塊。每個捕捉/比較模塊都有自己的I/O線(CEXn), 可以通過數字交叉開關配置到相應的單片機引腳。計數器/定時器由一個可編程的時基信號驅動,時基信號有6個時鐘源:系統時鐘/12、系統時鐘/4、定時器0溢出、外部時鐘輸入(ECI)、系統時鐘和外部振蕩源頻率/8。每個捕捉/比較模塊可以獨立地工作在一下6種工作方式之一:邊沿觸發捕捉、軟件定時器、高速輸出、頻率輸出、8位PWM和16位PWM[4]。C8051F020提供的增強定時器功能與標準8051的定時器/計數器相比,它所需的CPU干預更少。
下面就本文用到的高速輸出方式的基本原理做簡要介紹。
在高速輸出方式下,通過改變相應模塊的16位捕捉/比較寄存器(PCA0CPHn和PCA0CPLn)內的值可以使輸出脈沖的寬度或頻率發生變化。每當PCA的16位計數器與模塊的16位捕捉/比較寄存器值相等時,CEXn引腳就會發生電平轉換。與此同時,如果捕捉/比較模塊控制寄存器PCA0CPMn中的CCFn位被置“1”,則可以進入PCA的中斷程序,在中斷程序中更新PCA0CPHn和PCA0CPLn的值來設置下一次匹配時刻。這樣,通過計算設置PCA0CPHn和PCA0CPLn內的數值就可以控制輸出脈沖的頻率和脈沖寬度。所產生脈沖的頻率由公式(1)給出。

其中,Fout為CEXn引腳輸出的脈沖頻率。Fpca是由PCA方式寄存器PCA0MD選擇的PCA時鐘的頻率。本文程序中選用的時基信號的時鐘源為系統時鐘,即Fpca=24 MHZ。△n是連續兩次匹配16位捕捉/比較寄存器的差值。輸出頻率變化的脈沖時,△n也是變化的。
由公式(1)可以看出,△n直接決定輸出脈沖頻率的大小。如圖2,假設捕捉/比較寄存器的初值為n1,PCA計數器從0開始計數,當計數到n1時發生匹配,電平翻轉,進入中斷程序。在中斷程序中我們需要將捕捉/比較寄存器的值設置為n2。其中n2=n1+△n,n3=n2+△n……以此類推,每一次進中斷都要對捕捉/比較寄存器重新賦值,這樣才能保證輸出準確的脈沖頻率。

2.3.2 高速脈沖輸出所占用的PLC資源
多段脈沖輸出時需要設定每段脈沖的起始頻率f(占用2個字節)、頻率改變量△f(有符號數,為負表示頻率依次減小,占用2個字節)、以及脈沖數(占用四字節),脈沖數的范圍為0~232-1。段的起始地址存放在數據寄存器D5860中,起始地址存放脈沖段數,然后按照段的順序依次將各段脈沖參數存入起始地址之后的連續D寄存器區。M1006為高速脈沖啟動輔助繼電器[5]。
2.3.3 嵌入式PLC高速脈沖輸出設計原理
芯片組為用戶二次開發設計了七個用戶程序嵌入接口,本文程序設計用到其中的2個接口:USER_CONFIG、USER_SCAN。USER_CONFIG為用戶I/O配置程序入口,此段程序會在內核重新上電后調用一次。高速脈沖輸出端口在這里通過數字交叉開關配置到單片機相應引腳。USER_SCAN為用戶演算周期掃描程序,所有梯形圖執行完后,即調用該程序,PCA模塊的初始化和△n值的更新放在此段程序中。嵌入式PLC輸出高速脈沖流程圖如圖3所示。

PLC上電運行后,如果梯形圖中相應的高速脈沖輸出標志位被置位,即M1006=1,則在執行用戶演算周期程序時會初始化PCA模塊輸出高速脈沖,如果M1006被復位,則立即停止脈沖輸出,PCA高速輸出方式被禁止。
在PCA中斷程序中,需要對匹配值更新,同時對脈沖進行計數。當脈沖數達到設定值后繼續輸出下一段脈沖串或結束脈沖輸出任務。PCA中斷服務流程如圖4所示。


3.1 輸出頻率測試
為驗證高速方式輸出脈沖頻率的準確性,比較示波器觀測值與理論計算值,得出結果如表1所示。

通過表1數據比較可以看出,實際輸出頻率與理論值相差很小,符合設計要求。
當設定的輸出脈沖頻率為整數時,實際輸出頻率與理論值基本一致。經過試驗,當設定輸出脈沖頻率非整數時,實際輸出頻率的準確性會降低。
3.2 梯形圖功能測試
其他各段脈沖參數須依次裝入相應的寄存器中。通過示波器觀察,可明顯看出脈沖寬度的變化過程。經測試,各段脈沖滿足要求。
本文基于嵌入式PLC,研究具有高速輸出功能的PLC。通過對C8051F020單片機PCA模塊的運用,實現了嵌入式PLC的高速脈沖輸出功能。結合計算與實驗觀察,驗證了功能的可行性。應用嵌入式PLC開發設計高速輸出功能降低了開發難度和成本,是一種經濟、有效的方法。
[1] 王永華.現代電氣控制及PLC應用技術[M].北京:北京航天航空大學出版社,2008.
[2] 向前進,周純杰,龔云生.嵌入式PLC的高速脈沖計數開發[J].計算技術與自動化,2006,25(4):47-50.
[3] 宋伯生. PLC編程實用指南[M].北京:機械工業出版社, 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
湖北師范學院2012年國家級大學生創新創業訓練計劃項目(項目編號:201210513027)。
張帆(1990-),男,工學學士,研究方向:電氣工程及其自動化。控制要求,可以輸出一段或多段脈沖信號。本文設計的PLC高速脈沖可以實現多段脈沖輸出。