摘 要: 根據(jù)交流采樣的原理,,設(shè)計(jì)出基于FPGA開(kāi)方算法,解決了實(shí)時(shí)計(jì)算電壓有效值和頻率的問(wèn)題,。充分發(fā)揮FPGA硬件并行計(jì)算的特性,,實(shí)現(xiàn)高速運(yùn)算和可靠性的結(jié)合, 能夠較好地解決精度與速度的問(wèn)題。為穩(wěn)定控制裝置快速判斷元件故障提供了充足時(shí)間,,滿(mǎn)足電力系統(tǒng)實(shí)時(shí)性,、可靠性的要求。
關(guān)鍵詞: 交流采樣,;FPGA,;ADS7804,;逐次比較開(kāi)方算法
在電力調(diào)度自動(dòng)化系統(tǒng)中,測(cè)量電壓和頻率是最重要的功能,。如何快速,、準(zhǔn)確地采集顯得尤為重要。目前根據(jù)采集信號(hào)的不同,,可分直流采樣和交流采樣兩種方式,,直流采樣雖然設(shè)計(jì)簡(jiǎn)單,但無(wú)法實(shí)現(xiàn)實(shí)時(shí)信號(hào)的采集,;變送器的精度和穩(wěn)定性對(duì)測(cè)量精度有很大影響,,無(wú)法滿(mǎn)足電力系統(tǒng)實(shí)時(shí)性、可靠性的要求 ,。交流采樣法按照一定規(guī)律對(duì)被測(cè)信號(hào)的瞬時(shí)值進(jìn)行實(shí)時(shí)采樣, 再按設(shè)計(jì)的算法進(jìn)行數(shù)值處理, 從而獲得測(cè)量值,。與直流采樣法相比更易獲得高精度、高穩(wěn)定性的測(cè)量結(jié)果,。由于FPGA運(yùn)行速度快,、內(nèi)部程序并行運(yùn)行,具有處理更復(fù)雜功能的能力,,因此FPGA[1-3]和交流采樣相結(jié)合,,可以滿(mǎn)足電力系統(tǒng)實(shí)時(shí)性、可靠性的要求,。
1 系統(tǒng)硬件電路組成
以日常照明所用的交流電(電壓為220 V,,頻率為50 Hz)為測(cè)量對(duì)象,測(cè)量系統(tǒng)的組成電路主要包含供電,、互感變壓器(TV),、A/D轉(zhuǎn)換電路以及FPGA、顯示電路和報(bào)警電路,。測(cè)量系統(tǒng)框圖如圖1所示,。
220 V交流電壓經(jīng)過(guò)互感變壓器(TV)后的輸出電壓為-10 V~+10 V,滿(mǎn)足電壓芯片ADS7804輸入端的要求,,通過(guò)ADS7804將輸入的模擬量轉(zhuǎn)換成數(shù)字量送到FPGA,,得到量化電壓值。一方面在一個(gè)周期(0.02 s)內(nèi)對(duì)電壓的采樣值采用計(jì)算均方根的方法計(jì)算出交流的有效值即電壓的大??;另一方面對(duì)量化的電壓值進(jìn)行分析,計(jì)算出2個(gè)正弦波的時(shí)間,,并算出頻率,。通過(guò)顯示電路分別顯示電壓值和頻率值。如果電壓低于正常電壓的80%或達(dá)到正常電壓的120%,或者頻率低于49.00 Hz或高于51.00 Hz時(shí),,啟動(dòng)報(bào)警電路,。
1.2 ADS7804芯片
ADS7804芯片是12位A/D轉(zhuǎn)換器,以其較高的性能價(jià)格比在儀器儀表中得到廣泛的應(yīng)用,。ADS7804芯片內(nèi)部含有采樣保持,、電壓基準(zhǔn)和時(shí)鐘等電路,可極大簡(jiǎn)化用戶(hù)的電路設(shè)計(jì),,減少硬件開(kāi)銷(xiāo),,并可提高系統(tǒng)的穩(wěn)定性。該A/D轉(zhuǎn)換器采用逐次逼近式工作原理,,單通道輸入,,模擬輸入電壓的范圍為±10 V,采樣速率為100 kHz,,可以完全滿(mǎn)足電力系統(tǒng)中50 Hz交流電的采樣需要,。
ADS7804芯片的VIN(1腳)為輸入的模擬信號(hào),輸入模擬量大小為-10 V~+10 V,,6~18腳為輸入模擬信號(hào)轉(zhuǎn)換的數(shù)字量并行輸出口,,用于將轉(zhuǎn)換的數(shù)字量輸出,CS(25腳)為片選信, R/C(24腳)為讀取結(jié)果/模數(shù)轉(zhuǎn)換控制信號(hào),,BUSY(26腳)用于指示轉(zhuǎn)換是否完成,。讀取時(shí)首先將R/C腳電平變低;然后在CS腳輸人一個(gè)脈沖并在其下降沿啟動(dòng)A/D轉(zhuǎn)換,,此脈沖的寬度要求在40 ns之內(nèi),;這時(shí)BUSY腳電平拉低表示正在進(jìn)行轉(zhuǎn)換,;在經(jīng)過(guò)大約40 ns~6 μs以后,,轉(zhuǎn)換完成,BUSY腳電平相應(yīng)變高,;再把R/C腳電平拉高,,這樣,CS腳脈沖的下降沿即把轉(zhuǎn)換結(jié)果輸出到數(shù)據(jù)總線(xiàn),。
ADS7804芯片將模擬電壓轉(zhuǎn)換為數(shù)字量,,以二進(jìn)制的補(bǔ)碼輸出。該芯片電壓分辨率高達(dá)4.88 mV,。
1.3 FPGA芯片
現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)作為專(zhuān)用集成電路(ASIC) 領(lǐng)域中的一種半定制電路而出現(xiàn),,是當(dāng)今數(shù)字系統(tǒng)設(shè)計(jì)的主要硬件平臺(tái),其主要特點(diǎn)就是完全由用戶(hù)通過(guò)軟件進(jìn)行配置和編程,,從而完成某種特定的功能,。在修改和升級(jí)時(shí),不需額外地改變PCB 電路板,只是在計(jì)算機(jī)上修改和更新程序,,使硬件設(shè)計(jì)工作轉(zhuǎn)變?yōu)檐浖_(kāi)發(fā)工作,,縮短了系統(tǒng)設(shè)計(jì)的周期,提高了實(shí)現(xiàn)的靈活性并降低了成本,,因此得到廣泛的應(yīng)用,。
本設(shè)計(jì)中FPGA主要負(fù)責(zé)控制A/D采樣芯片ADS7804,并讀取轉(zhuǎn)換后的數(shù)字碼,,然后按交流采樣原理進(jìn)行實(shí)時(shí)計(jì)算,,分別算出交流電壓的有效值、交流電壓的頻率,,驅(qū)動(dòng)顯示電路將電壓和頻率顯示出來(lái),,當(dāng)出現(xiàn)電壓偏離正常值20%,或者頻率低于49 Hz或高于51 Hz時(shí)進(jìn)行報(bào)警,,供主處理器進(jìn)行故障判斷,。
本設(shè)計(jì)采用FPGA做處理器有以下優(yōu)點(diǎn):
(1)由于FPGA并行處理的特點(diǎn),可同時(shí)運(yùn)算多路模擬量,,即多路交流量對(duì)應(yīng)的各個(gè)模塊可以同時(shí)采樣計(jì)算,,所以計(jì)算速度上有了質(zhì)的飛躍;
(2)在FPGA 設(shè)計(jì)中,,F(xiàn)PGA可以并行地處理采樣,、計(jì)算、顯示,、報(bào)警等模塊,,大大提高了運(yùn)行速度,并滿(mǎn)足電力系統(tǒng)實(shí)時(shí)性,、可靠性的需要,。
1.4 LED顯示
LED數(shù)碼顯示管有共陰極和共陽(yáng)極兩種接線(xiàn)方法,本設(shè)計(jì)采用共陽(yáng)極,,低電平有效,,其中abcdefg組成數(shù)碼管顯示,dp為小數(shù)點(diǎn)顯示,。s1,、s2、s3,、s4,、s5、s6,、s7,、s8分別為選擇端,當(dāng)其為高電平時(shí)選擇相應(yīng)的數(shù)碼管。本設(shè)計(jì)主要采用兩組顯示,,其中s1,、s2、s3,、s4為第一組顯示,,用于顯示電壓;s5,、s6,、s7、s8為第二組顯示,,用于顯示頻率,。例如要讓第一組第一個(gè)碼管顯示0時(shí),其他數(shù)碼管燈滅,,則abcdefg=0000001,,dp為小數(shù)點(diǎn)位置0,s1=1,,s2=0,,s3=0,s4=0,。
2 系統(tǒng)軟件設(shè)計(jì)
2.1 軟件設(shè)計(jì)流程
由離散化公式可知,, 根據(jù)一個(gè)周期內(nèi)不同時(shí)刻的電壓采樣值及采樣點(diǎn)數(shù)可計(jì)算出電壓的有效值[5]。為了提高計(jì)算精度,,本設(shè)計(jì)在一個(gè)周期內(nèi)采樣128個(gè)點(diǎn)用于計(jì)算有效值,。同時(shí)通過(guò)對(duì)128個(gè)采樣點(diǎn)進(jìn)行分析計(jì)算出頻率。
在實(shí)際設(shè)計(jì)時(shí),,F(xiàn)PGA晶振為40 MHz,,用于準(zhǔn)確定時(shí),以確定每個(gè)采樣的間隔時(shí)間,,從而準(zhǔn)確地啟動(dòng)A/D轉(zhuǎn)換,,同時(shí)ADS7804芯片的轉(zhuǎn)換時(shí)間為10 μs左右,本采樣周期為156.25 μs,,本設(shè)計(jì)完全滿(mǎn)足FPGA及時(shí)精確的采樣要求。
本軟件設(shè)計(jì)主要包括一個(gè)定時(shí)器t1,、兩個(gè)計(jì)數(shù)器c1和c2,,定時(shí)器t1用于確定采樣時(shí)間,控制采樣,;計(jì)數(shù)器c1用于確定一個(gè)交流電周期共采樣128次,,利用交流電采樣原理公式計(jì)算交流電一個(gè)周期內(nèi)電壓的有效值;計(jì)數(shù)器c2用于計(jì)算頻率。通過(guò)正弦的規(guī)律,,計(jì)算出3次從正值到負(fù)值或者3次從負(fù)值到正值這段時(shí)間(即2個(gè)周期內(nèi))采樣點(diǎn)的個(gè)數(shù),,通過(guò)采樣點(diǎn)的間隔時(shí)間,得出2個(gè)周期的時(shí)間,,從而計(jì)算出頻率的大小,。總體軟件設(shè)計(jì)流程圖如圖2所示,。
2.2 計(jì)算有效值的軟件設(shè)計(jì)
根據(jù)本文介紹的交流電采樣原理[6-7]和有效值的計(jì)算方法,,要計(jì)算交流電必須進(jìn)行平方和開(kāi)方的運(yùn)算,由于FPGA沒(méi)有現(xiàn)成的開(kāi)方運(yùn)算方法,,設(shè)計(jì)FPGA開(kāi)方運(yùn)算方法成為本設(shè)計(jì)的關(guān)鍵,。
常用的開(kāi)方算法有牛頓—萊福森算法、逐次比較算法等,。牛頓—萊福森算法比較復(fù)雜, 占用資源比較多, 且迭代次數(shù)不確定, 不太適合FPGA運(yùn)算,。本設(shè)計(jì)采用逐次比較算法,充分發(fā)揮FPGA執(zhí)行速度快的優(yōu)點(diǎn)。逐次比較算法先將實(shí)驗(yàn)值進(jìn)行平方運(yùn)算, 然后與輸入值相比較, 通過(guò)比較結(jié)果,,修正實(shí)驗(yàn)值, 從而得到輸出值,。
本設(shè)計(jì)開(kāi)方算法流程如圖3所示。采用12位設(shè)計(jì),,由于正負(fù)的關(guān)系,,計(jì)算時(shí)將負(fù)數(shù)求補(bǔ)轉(zhuǎn)換成正數(shù),所以實(shí)際只有11位,,需進(jìn)行11次運(yùn)算比較,。
首先,令n=1,,A=S=10000000000也即將11位的最高位置1,,其他位置0,然后將它賦給A,、S,,然后對(duì)A求平方后,把A賦給B,。B和一個(gè)周期內(nèi)128個(gè)采樣值的平方和的平均數(shù)C(平方和右移7位即可)比較大小,。當(dāng)C大于B時(shí)A=A+(S>>n),同時(shí)調(diào)整n的值,,令n=n+1,;若當(dāng)C等于B時(shí),則A即為所求的開(kāi)方值,,當(dāng)C小于B時(shí),,A=[A-(S>>n-1)+(S>>n)],,同時(shí)調(diào)整n的值,令n=n+1,,開(kāi)始下一次循環(huán)比較,。直到最后一位比較完后,強(qiáng)行結(jié)束,。例如:設(shè)C為49(二進(jìn)制為110001),,首先,將n=1,,A=S=10000000000,,對(duì)A平方并賦給B,C<B,,則執(zhí)行A=(A-(S>>n-1)+(S>>n)),。此時(shí)A=01000000000,循環(huán)執(zhí)行平方,、比較后A=00100000000,,繼續(xù)循環(huán)A=00100000000,直到第9次循環(huán),,平方,、比較后,當(dāng)C大于B時(shí),,A=A+(S>>n),,A=00000000110,繼續(xù)循環(huán),;平方,、比較后A=00000000111,繼續(xù)循環(huán),;平方,、比較后A=00000000111。即得出平方根為00000000111,。經(jīng)過(guò)11次比較得出正確的結(jié)果,。
2.3 計(jì)算頻率的軟件設(shè)計(jì)
頻率參數(shù)的實(shí)時(shí)測(cè)量一直是電力系統(tǒng)參數(shù)測(cè)量中的重點(diǎn)和難點(diǎn)。由于電力系統(tǒng)的頻率時(shí)刻都有微小的變化, 精確的測(cè)頻手段成為實(shí)時(shí)控制的重要組成部分,。在實(shí)際應(yīng)用中通常包括硬件測(cè)頻法和軟件測(cè)頻法兩種,。本文軟件測(cè)頻主要采用基于電網(wǎng)電壓交流采樣技術(shù), 通過(guò)相應(yīng)的數(shù)值算法,經(jīng)過(guò)計(jì)算機(jī)處理計(jì)算獲得頻率量的大小, 其算法相當(dāng)豐富而且還在不斷發(fā)展。本設(shè)計(jì)中的控制器采用過(guò)零法進(jìn)行軟件測(cè)頻,。
如圖4所示,,當(dāng)采樣值出現(xiàn)有負(fù)值到正值的變化,表示正弦值過(guò)了0點(diǎn),,為了排除干擾和誤判,,且隨后需出現(xiàn)3個(gè)正值則代表正弦值確實(shí)過(guò)了零點(diǎn),進(jìn)入正值區(qū)間,,此時(shí)計(jì)數(shù)器開(kāi)始對(duì)采樣個(gè)數(shù)數(shù)進(jìn)行計(jì)數(shù),,經(jīng)過(guò)一定的采樣值后,當(dāng)采樣值第3次出現(xiàn)由負(fù)值到正值的變化,,表示正弦值過(guò)了0點(diǎn),,且隨后需出現(xiàn)3個(gè)正值則代表正弦值確實(shí)過(guò)了0點(diǎn),進(jìn)入正值區(qū)間,,此時(shí)停止計(jì)數(shù)器對(duì)采樣個(gè)數(shù)進(jìn)行計(jì)數(shù),;或者當(dāng)采樣值出現(xiàn)由正值到負(fù)值的變化,表示正弦值過(guò)了0點(diǎn),,為了排除干擾和誤判,,且隨后需出現(xiàn)3個(gè)負(fù)值則代表正弦值確實(shí)過(guò)了0點(diǎn),進(jìn)入負(fù)值區(qū)間,,此時(shí)計(jì)數(shù)器開(kāi)始對(duì)采樣個(gè)數(shù)進(jìn)行計(jì)數(shù),,經(jīng)過(guò)一定的采樣值后,當(dāng)采樣值第3次出現(xiàn)正值到負(fù)值的變化,,表示正弦值過(guò)了0點(diǎn),,且隨后需出現(xiàn)3個(gè)負(fù)值則代表正弦值確實(shí)過(guò)了0點(diǎn),進(jìn)入負(fù)值區(qū)間,,此時(shí)停止計(jì)數(shù)器對(duì)采樣個(gè)數(shù)的計(jì)數(shù),。判斷出此時(shí)計(jì)數(shù)器的個(gè)數(shù)即為采樣個(gè)數(shù),通過(guò)采樣的間隔時(shí)間t1,,乘以計(jì)數(shù)器的個(gè)數(shù)c2,,即1個(gè)周期的時(shí)間為t3=t1×c2。則頻率為f=1/(0.5×t3),。此設(shè)計(jì)2個(gè)周期采樣約256個(gè)點(diǎn),,頻率精度相當(dāng)?shù)母撸梢詽M(mǎn)足電力系統(tǒng)的需要,。
該系統(tǒng)是基于交流采樣設(shè)計(jì)的電力參數(shù)監(jiān)測(cè)儀器,,設(shè)計(jì)出基于FPGA的開(kāi)方程序,通過(guò)對(duì)交流采樣值進(jìn)行處理和計(jì)算,,結(jié)合FPGA的高速運(yùn)算,、并行處理的能力,實(shí)現(xiàn)交流電壓有效值和頻率的實(shí)時(shí)計(jì)算,。具有精度高,、速度快、實(shí)時(shí)性好的特點(diǎn),,在電力系統(tǒng)中有極高的實(shí)用價(jià)值,。
參考文獻(xiàn)
[1] 劉福奇.FPGA嵌入式項(xiàng)目開(kāi)發(fā)實(shí)戰(zhàn)[M].北京:電子工業(yè)出版社,,2009.
[2] 胡廣書(shū).數(shù)字信號(hào)處理[M].北京:清華大學(xué)出版社,2003.
[3] 王傳新.FPGA設(shè)計(jì)基礎(chǔ)[M].北京:高等教育出版社,,2007.
[4] BURR BROWN.ADS78O4 DATA BO0K,,1999.
[5] 邁耶-貝斯.數(shù)字信號(hào)處理的FPGA實(shí)現(xiàn)[M].劉凌,譯. 北京:清華大學(xué)出版社,,2006.
[6] 史鍵芳,,宋正湘,張國(guó)鋼.智能儀器設(shè)計(jì)基礎(chǔ)[M].北京:電子工業(yè)出版社,,2007.
[7] 王汝文.電器智能化原理及應(yīng)用[M].北京:電子工業(yè)出版社,,2007.