<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關(guān) 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 基于單片機C8051F060的智能功率柜

          基于單片機C8051F060的智能功率柜

          ——
          作者:劉立新 李春龍 楊 梅 時間:2007-09-05 來源:國外電子元器件 收藏

            摘要:簡要介紹了智能功率柜的概念及單片機的特點,詳細論述了基于的智能功率柜的結(jié)構(gòu)、原理以及與總線通信的實現(xiàn)方法。該控制方案系統(tǒng)集成度高、硬件簡單、工作可靠,具有很好的推廣價值。

              關(guān)鍵詞:

          1 引言

            隨著發(fā)電機容量的不斷增大,對勵磁系統(tǒng)的要求越來越高。國內(nèi)目前使用的各類勵磁調(diào)節(jié)器都非常先進,但功率柜的制造水平卻不盡如人意,這勢必影響勵磁系統(tǒng)整體性能的提高進而妨礙整體發(fā)電系統(tǒng)性能的提高。

            目前,國產(chǎn)的勵磁功率柜普遍存在檢測功能不全、信息傳送技術(shù)、控制和檢測技術(shù)落后等問題。為了解決這一問題,本文給出了通過采用高集成度單片機C8051F060實現(xiàn)的智能勵磁功率柜與CAN總線的通信方法,該方案具有完備的檢測、控制和通信功能。

          2?。茫福埃担保疲埃叮皢纹瑱C的特點

            C8051FXX系列單片機是美國CYGNAL公司推出的一種與51系列單片機內(nèi)核兼容的單片機。僅就筆者對C8051F060的使用實踐介紹一下其新特點:

            (1)內(nèi)核采用流水線結(jié)構(gòu),速度可達25MIPS(25MHz晶振),比普通的51單片機快10倍;其指令與標(biāo)準(zhǔn)系列51單片機兼容,因而掌握開發(fā)過程非常容易;該芯片的JTAG調(diào)試方式支持在系統(tǒng)、全速、非插入調(diào)試和編程,且不占用片內(nèi)資源。

            (2)片上集成有64kB Flash、4352B內(nèi)部RAM(256+4kB,可外擴至64kB)、59個I/O口、 2通道16位1MSPS的可編程增益ADC、8通道10位200kSPS可編程增益ADC、2路12位DAC、3路模擬比較器、內(nèi)部電壓基準(zhǔn)以及片內(nèi)電源監(jiān)視、降壓檢測和看門狗等功能。由于C8051F060的高集成度,因而無需外擴ROM、RAM、AD、DA、watchdog、可編程I/O口和EEPROM(用片內(nèi)Flash實現(xiàn)),從而大大簡化了硬件電路,并為構(gòu)成以C8051F060為核心的單片機系統(tǒng)創(chuàng)造了條件,同時也提高了系統(tǒng)的可靠性。

           ?。ǎ常┢瑑?nèi)集成有2個UART、1個SM(兼容I2C)和1個SPI。最為便利的是,C8051F060集成了CAN總線控制器,這使得CAN總線具有開發(fā)費用低廉、抗干擾性強、可適用于工業(yè)現(xiàn)場應(yīng)用等特點,并可廣泛應(yīng)用于干擾環(huán)境非常嚴(yán)重的各種工業(yè)現(xiàn)場測控領(lǐng)域。C8051F060只需加上CAN總線收發(fā)電路就可掛接到CAN通信網(wǎng)絡(luò)上,因而大大簡化了通信系統(tǒng)的設(shè)計,減少了通信節(jié)點受干擾的概率。

           ?。ǎ矗┛删幊痰模保段挥嫈?shù)器陣列PCA有6個捕捉/比較模塊和5個通用16位計數(shù)器/定時器,這一為要求定時器/計數(shù)器具有較多的測控節(jié)點提供了方便。

           ?。ǎ担茫福埃担保疲埃叮澳軡M足絕大多數(shù)工業(yè)測控節(jié)點的要求,能夠形成以C8051F060為核心的單片機系統(tǒng),如果配以外圍測量單元,還可形成完整的測控節(jié)點。

          3 智能勵磁功率柜的系統(tǒng)結(jié)構(gòu)

            智能功率柜系統(tǒng)原理框圖如圖1所示。功率柜中最關(guān)鍵的部件是三相全控橋,控制此橋的核心參數(shù)為觸發(fā)角度,該參數(shù)可由CAN總線通過調(diào)節(jié)器送出,同時送達本地柜應(yīng)發(fā)的電流值。經(jīng)檢測得到的輸出電流與調(diào)節(jié)器的應(yīng)發(fā)給定電流進行比較并完成PI運算,即可產(chǎn)生新的微調(diào)觸發(fā)角度。該觸發(fā)角度經(jīng)PCA形成觸發(fā)脈沖繼而驅(qū)動三相全控橋,從而實現(xiàn)柜間均流。與此同時,通過信號檢測模塊還可將柜內(nèi)溫度、晶閘管通斷狀態(tài)、輸出電流值送入,以對各參數(shù)進行計算分析,并將其與設(shè)定的閾值進行比較,最后實時顯示測量結(jié)果,同時報警。

          3.1 基于PCA模塊實現(xiàn)的數(shù)字移相觸發(fā)

            三相晶閘管全控橋的工作原理及六個晶閘管的觸發(fā)脈沖相序關(guān)系如圖2所示。

            該PCA中包含6個基于同一16位計數(shù)器,并可作為時基的捕捉/比較模塊,每個模塊可構(gòu)成正沿捕捉、負沿捕捉、正負沿捕捉、軟件定時器、高速輸出、脈沖寬度調(diào)制器等6種方式。本設(shè)計中采用的是高速輸出模式,當(dāng)PCA計數(shù)器與模塊的16位捕捉/比較寄存器相匹配時,相應(yīng)模塊的CEX引腳的邏輯電平將發(fā)生變化,并引起相應(yīng)中斷。

            觸發(fā)信號從同步信號過零點開始計時,調(diào)節(jié)器則經(jīng)CAN網(wǎng)將觸發(fā)角的電角度值α、同步信號周期值TSYN和脈沖寬度W發(fā)送給各功率柜。同步信號采樣電路見圖3,當(dāng)同步信號過零產(chǎn)生中斷時,PCA計數(shù)器開始計數(shù),并根據(jù)α、W、TSYN及PCA計數(shù)頻率計算出α的對應(yīng)值Tα1~Tα6和脈沖后沿的對應(yīng)值TW1~TW6,然后將Tα1~Tα6寫入6個模塊的16位捕捉/比較寄存器中。當(dāng)捕捉寄存器的值與PCA計數(shù)器的值相符時,CEX引腳將變?yōu)楦唠娖?,以使相?yīng)模塊產(chǎn)生中斷,同時在中斷子程序中,相應(yīng)的TWN被寫入16位捕捉/比較寄存器。當(dāng)其與PCA計數(shù)器值相符時,CEX引腳變?yōu)榈碗娖剑渲幸宦酚|發(fā)單脈沖。用門電路便可將6路單脈沖合為6路雙窄脈沖。下式為Tα和TW計算方法:

           ?。驭粒危剑裕樱伲韦煢粒梗埃煟危保牑牐常叮埃裕茫蹋?/P>

           ?。裕祝危剑裕樱伲韦煢粒祝梗埃煟危保牑牐常叮埃裕茫蹋?/P>

            式中,N可取12...6, TCLK為PCA計數(shù)器的計數(shù)周期。

          3.2 通過片內(nèi)Flash在線修改參數(shù)

           ?。茫福埃担保疲埃叮爸校疲欤幔螅璧模埃兀埃埃埃啊埃兀埃埃罚频刂贩秶瓤捎糜谄瑑?nèi)64kB Flash,也可用于附加的128B的扇區(qū),這可通過設(shè)置PSCTL寄存器的SFLE位來實現(xiàn)。由于片內(nèi)Flash必須先擦除再寫入,而且應(yīng)當(dāng)以512B為一扇區(qū)進行,故附加的128B的扇區(qū)更適合用作非易失性數(shù)據(jù)的存儲。在功率柜中,通常需要在線修改的參數(shù)為PI調(diào)節(jié)器的P和I,下面以KEIL C語句為例給出在線修改參數(shù)的程序:

            WrRe Flash

           ?。酰睿螅椋纾睿澹?int xdata *pwrite

           ?。酰睿螅椋纾睿澹?int code *pread

           ?。酰睿螅椋纾睿澹?char i 

           ?。酰睿螅椋纾睿澹?char i1

            WDTCN=0xde //禁止看門狗

           ?。祝模裕茫危剑埃幔洇?/P>

           ?。疲蹋樱茫蹋剑埃埃功?//25MHz時鐘的擦寫頻率

           ?。校樱茫裕蹋剑埃兀埃拨?//允許Flash扇區(qū)擦除

            PSCTL|=0X05 //允許Flash扇區(qū)寫

            pwrite=0x0000 0x0000指向128B扇區(qū)

           ?。穑鳎颍椋簦澹剑唉?//擦除Flash

            PSCTL&=~0X02 //禁止擦除Flash

           ?。妫铮颍煟椋剑唉牐椋迹拨牐椋?//將P和I參數(shù)寫入

           ?。穑鳎颍椋簦澹剑校嗓煟椁牔?

            PSCTL&=~0x01 //禁止寫Flash

           ?。穑颍澹幔洌剑埃埃埃埃唉?//讀入當(dāng)前值

           ?。妫铮颍煟椋保剑唉牐椋保迹拨牐椋保?/P>

           ?。校嗓煟椋堡牐剑穑颍澹幔洌牓牓?

          4?。茫粒慰偩€在勵磁裝置中的應(yīng)用

           ?。茫粒慰偩€是主要的之一。由于其低廉的開發(fā)費用、良好的抗干擾能力,CAN總線在工業(yè)測控領(lǐng)域得到了廣泛應(yīng)用。關(guān)于CAN總線的基本概念和接口電路,其相關(guān)內(nèi)容較多,本文只介紹如何用C8051F060實現(xiàn)CAN總線通信的方法。

          4.1 C8051F060的CAN控制器結(jié)構(gòu)

            圖4給出了C8051F060的內(nèi)部CAN結(jié)構(gòu)圖,由于MCU不能直接訪問信息RAM,因此,必須通過IF寄存器與信息RAM交換數(shù)據(jù)。信息RAM共可存儲32幀信息。而IF寄存器則分為IF1和IF2兩組,以分別定義為接受、發(fā)送功能,IF的CommandRequest寄存器可用于定義訪問32幀信息的哪一幀,CommandMask則用于定義將一幀信息的哪一部分傳到信息RAM中。

            當(dāng)中斷寄存器IR為0x0000時,表示沒有中斷發(fā)生;當(dāng)其為0x0001~0x0020時,表示32幀信息的哪一幀引起中斷,而當(dāng)其為0x8000時,則表示狀態(tài)改變(發(fā)送完成、接收完成、錯誤狀態(tài)等)引起中斷。

          4.2 CAN通信

            通信的初始化過程與其它CAN控制器類似,圖5給出了其發(fā)送、信息RAM與IF通信和接收中斷子程序的框圖。

          4.3 CAN總線在智能功率柜中的應(yīng)用

            CAN通信系統(tǒng)由四個節(jié)點組成,其中包括一個調(diào)節(jié)器和三個功率柜。功率柜由C8051F060完成通信功能,調(diào)節(jié)器由集成了CAN協(xié)議的網(wǎng)卡HT-1302B負責(zé)通信。調(diào)節(jié)器可將單柜應(yīng)發(fā)電流值、觸發(fā)角、同步信號周期以及脈沖寬度等參數(shù)發(fā)送給各功率柜。功率柜則將各柜的輸出電流值、導(dǎo)通監(jiān)視結(jié)果、柜內(nèi)各點溫度反饋回調(diào)節(jié)器。

          5 結(jié)束語

            由于C8051F060的高集成度,因而只需少量外圍測量電路便可組成集控制與通信功能于一體的單片系統(tǒng),同時可提高系統(tǒng)的整體可靠性。另外,C8051F060內(nèi)核與普通51系列兼容,且指令簡單易學(xué),因此,可縮短系統(tǒng)開發(fā)周期。本系統(tǒng)由帶屏蔽層的雙絞線構(gòu)成通信介質(zhì),最大通信距離不超過150米,通信速率可達250kbps。實際運行證明:通信效果很好。由此可見:本控制方案集成度高、硬件簡單、工作可靠,具有很好的推廣價值。

           



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();