馬洪波 周 悅
(1.沈陽建筑大學(xué) 信息與控制工程學(xué)院,遼寧 沈陽 110168;2.遼寧省送變電工程公司,遼寧 沈陽 110021)
智能化是電力系統(tǒng)發(fā)展方向。隨著網(wǎng)絡(luò)電子產(chǎn)品等與電力系統(tǒng)的緊密融合,分布式電源、儲(chǔ)能裝置、智能電器等快速發(fā)展,以及云計(jì)算、大數(shù)據(jù)、移動(dòng)終端等現(xiàn)代信息技術(shù)的廣泛應(yīng)用,傳統(tǒng)電網(wǎng)向智能電網(wǎng)的全面升級已成必然。要順應(yīng)世界電網(wǎng)發(fā)展最新趨勢,推廣線路智能監(jiān)控系統(tǒng)、智能調(diào)度控制系統(tǒng)、智能互動(dòng)用電設(shè)備成為首要任務(wù),因此需要建設(shè)貫穿各領(lǐng)域的高效信息傳輸?shù)募夹g(shù),進(jìn)而加快電網(wǎng)各環(huán)節(jié)的智能升級改造,全面提高電網(wǎng)智能化水平。
本文基于AVR單片機(jī)的數(shù)據(jù)采集和通信系統(tǒng)的功能,應(yīng)用兩級計(jì)算機(jī)系統(tǒng)完成,上位機(jī)應(yīng)用普通PC計(jì)算機(jī),下位機(jī)采用單片機(jī)控制,下位機(jī)主要完成數(shù)據(jù)的采集及數(shù)據(jù)傳輸給上位機(jī)的功能,上、下位機(jī)之間以串行數(shù)據(jù)傳輸方式進(jìn)行通信。雙方共同遵守同一個(gè)通信協(xié)議。下位機(jī)接收到的上位機(jī)指令后將采集的數(shù)據(jù)處理后傳給上位機(jī)。上位機(jī)在軟件的支持下對采集的數(shù)據(jù)進(jìn)行分析處理。
本系統(tǒng)分成三個(gè)模塊組成:模擬量采集模塊、開關(guān)量、LCD、LED本地顯示模塊,通過串行口傳輸給上位機(jī)模塊。系統(tǒng)結(jié)構(gòu)圖如圖1所示。
圖1中的5個(gè)模擬量用遙控盒上的5個(gè)電位器來模擬輸入。經(jīng)過芯片TLC2543進(jìn)行模數(shù)轉(zhuǎn)換,然后輸入到ATmega64L中的PD口。經(jīng)過AVR單片機(jī)處理后再經(jīng)PA口輸出到液晶顯示模塊(LCM1)進(jìn)行本地顯示,經(jīng)PD2口和PD3口輸出到MAX232E的RXD和TXD進(jìn)行RS-232的電平轉(zhuǎn)換,最后通過串行電纜送到上位機(jī)。
系統(tǒng)利用遙控盒上8個(gè)開關(guān)的開和關(guān)模擬數(shù)字量輸入的邏輯“1”或邏輯 “0”,經(jīng)過三態(tài)雙向總線隔離/驅(qū)動(dòng)芯片74HC245,輸入到ATmega64L中的PE口。AVR單片機(jī)處理之后經(jīng)PA口輸出到8D鎖存器74HC573中,然后經(jīng)過驅(qū)動(dòng)電路控制8個(gè)LED的亮或滅。同時(shí)單片機(jī)同樣經(jīng)PD2和PD3輸出到MAX232E的RXD和TXD進(jìn)行RS-232的電平轉(zhuǎn)換,最后通過串行電纜送到上位機(jī)。
圖1 基于AVR單片機(jī)的數(shù)據(jù)采集與通信系統(tǒng)結(jié)構(gòu)圖
本設(shè)計(jì)采用ATmel公司的高性能低功耗的AVR單片機(jī)ATmega64L作為設(shè)備的核心控制器。根據(jù)圖1所設(shè)計(jì)的系統(tǒng)結(jié)構(gòu),選擇外圍電路器件分別為:鎖存器74HC573、發(fā)光二極管LED、液晶顯示器LCD芯片MAX232E、芯片74HC245、串行傳輸口RS232等,進(jìn)而達(dá)到本系統(tǒng)的設(shè)計(jì)功能。
本次設(shè)計(jì),需要用單片機(jī)執(zhí)行數(shù)據(jù)采集的任務(wù),把采集結(jié)果通過單片機(jī)傳送到上位計(jì)算機(jī)中去,最后由計(jì)算機(jī)完成數(shù)據(jù)處理過程,以及人機(jī)界面顯示。這需要在單片機(jī)和計(jì)算機(jī)之間建立通信結(jié)構(gòu)。此結(jié)構(gòu)可以在單片機(jī)和計(jì)算機(jī)之間進(jìn)行有效而正確的信息傳輸。
RS-232通信接口是美國電子工業(yè)協(xié)會(huì)(EIA)正式公布的串行通信接口標(biāo)準(zhǔn),用來實(shí)現(xiàn)計(jì)算機(jī)和計(jì)算機(jī)之間、計(jì)算機(jī)和外設(shè)之間的數(shù)據(jù)傳輸。RS-232串行接口總線適用于設(shè)備之間通信距離在15米以內(nèi)而且速度不高于20Kbps的場合中。
RS-232在電氣接口上采用負(fù)邏輯,即邏輯“1”為-5V~-15V,而邏輯:“0”則是+5V~+15V。
由于單片機(jī)采用的是 TTL電平,即邏輯“1”為+5V,邏輯“0”為0V,因此為了實(shí)現(xiàn)單片機(jī)和計(jì)算機(jī)之間的通信,必須進(jìn)行RS-232和TTL接口之間的電平轉(zhuǎn)換。
本設(shè)計(jì)中實(shí)現(xiàn)TTL電平和RS-232電平轉(zhuǎn)換的芯片是MAX232E.MAX232E由+5V電源供電,主要由一個(gè)片內(nèi)電壓泵升電路、一個(gè)雙重發(fā)送電路和一個(gè)雙重接收電路組成。電壓泵升電路由兩個(gè)電荷泵組成,用以實(shí)現(xiàn)升壓和電壓極性的轉(zhuǎn)換[4]。
本次設(shè)計(jì)所選擇的ATmega64L型號單片機(jī)是一款片內(nèi)資源豐富的單片機(jī),它除了64KBFlash程序存儲(chǔ)器和4KB片內(nèi)SRAM數(shù)據(jù)存儲(chǔ)器,53個(gè)可編程的I/O口外,還有全雙工異步串行通信接口USART,同步串行接口SPI和35個(gè)中斷源等。對片內(nèi)資源進(jìn)行充分的開發(fā)和利用是設(shè)計(jì)ATmega64L單片機(jī)應(yīng)用系統(tǒng)的關(guān)鍵。
本設(shè)計(jì)采用C語言編程,因?yàn)镃語言的可移植性最佳而成為首選。
基于AVR單片機(jī)的數(shù)據(jù)采集和通信系統(tǒng)控制軟件采用模塊化設(shè)計(jì)。從結(jié)構(gòu)上看主要包括主循環(huán)體程序、接收數(shù)據(jù)程序、發(fā)送數(shù)據(jù)程序、中斷服務(wù)程序和其它控制程序。
主程序開始時(shí)進(jìn)行定時(shí)器0,定時(shí)器1,定時(shí)器2,AD,DI,LCD,MCU等的初始化,初始化主要是設(shè)置定時(shí)器的中斷方式(如使設(shè)置定時(shí)器0溢出中斷,定時(shí)器1比較中斷,定時(shí)器2溢出中斷),外部中斷INT0,INT1中斷方式(INT0下降沿產(chǎn)生異步中斷請求,INT1上升沿產(chǎn)生異步中斷請求);AD,DI處于可以接收模擬量和開關(guān)量的狀態(tài)。然后程序進(jìn)入循環(huán)狀態(tài),首先判斷串口接收標(biāo)志是否為1,如果是1且上位機(jī)處于使能發(fā)送狀態(tài)則接收數(shù)據(jù)同時(shí)LCD顯示遙控狀態(tài),如果上述條件不符合則跳入下一個(gè)判斷即外部中斷INT0控制的AD采樣判斷,首先判斷中斷標(biāo)志是否為1,如果為1,則取樣求平均值,在LCD上顯示模擬量號(通道0,顯示第1,2路模擬量,通道1顯示第3,4路模擬量,通道2顯示第5,6路模擬量)。如果中斷標(biāo)志不為1,則跳入下一個(gè)判斷開關(guān)量DI采樣標(biāo)志是否為1,如果為1,則檢驗(yàn)DI口輸入量是否有變化,如果有變化則保存數(shù)據(jù),并置相應(yīng)的指示燈亮,如果輸入量無變化則檢驗(yàn)上次開關(guān)量是否發(fā)送完畢,如果發(fā)送完畢,則發(fā)送下一個(gè)數(shù)據(jù)包。如果未發(fā)送完畢或DI采樣標(biāo)志不為1則跳入下一次判斷即外部中斷INT1控制的按鍵中斷,如果按鍵標(biāo)志為1,則鍵值為1通道號加1,顯示下兩路模擬量,如果鍵值為2,則通道號減1,顯示前兩路模擬量;再將按鍵標(biāo)志置為0此時(shí)結(jié)束程序進(jìn)入下一次循環(huán)判斷,如果按鍵標(biāo)志為0直接結(jié)束程序進(jìn)入下一次循環(huán)判斷。
定時(shí)器0中斷服務(wù)程序
定時(shí)器0中斷主要完成模擬量的數(shù)據(jù)采集與平均值計(jì)算。具體為:定時(shí)器0中斷時(shí)間為20毫秒,用于AD采樣計(jì)時(shí);當(dāng)AD采樣次數(shù)滿15次后判斷采樣結(jié)束標(biāo)志,如果采樣結(jié)束則計(jì)算平均值然后在LCD上進(jìn)行顯示后,產(chǎn)生AD中斷,最后中斷返回。
定時(shí)器1中斷服務(wù)程序:定時(shí)器1主要完成掃描開關(guān)量輸入狀態(tài),具體為:中斷時(shí)間為250毫秒,如果有開關(guān)量輸入,則置開關(guān)量輸入標(biāo)志為1,然后中斷返回。
定時(shí)器2中斷服務(wù)程序:定時(shí)器2中斷服務(wù)程序主要完成按鍵處理,用于按鍵的去抖延時(shí)控制。串行發(fā)送中斷服務(wù)程序:串行中斷服務(wù)程序主要完成向上位機(jī)傳輸數(shù)據(jù)的功能。
串行接收中斷服務(wù)程序:串行接收中斷服務(wù)程序主要完成接收上位機(jī)發(fā)送的數(shù)據(jù)的功能。
中斷0服務(wù)程序:中斷0主要完成模擬量的采集。當(dāng)6路模擬量采集完畢后,關(guān)中斷,再將采集到的模擬量送入模擬量緩沖區(qū),然后中斷返回。
中斷1服務(wù)程序:中斷1主要完成按鍵處理,主要完成去抖延時(shí)的功能。
ATmega64L是片內(nèi)資源非常豐富的單片機(jī),對單片機(jī)片內(nèi)資源進(jìn)行充分的開發(fā)和利用。是設(shè)計(jì)ATmega64L應(yīng)用系統(tǒng)的關(guān)鍵。在基于AVR單片機(jī)的電力系統(tǒng)數(shù)據(jù)采集與通信系統(tǒng)的軟件設(shè)計(jì)方法中,采用模塊化設(shè)計(jì),以AVR單片機(jī)為控制核心,通過軟件編程來實(shí)現(xiàn)系統(tǒng)功能。運(yùn)行結(jié)果顯示,該數(shù)據(jù)采集與通信系統(tǒng)操作簡單方便、運(yùn)行正常、成本低廉,上位機(jī)與下位機(jī)通信均達(dá)到系統(tǒng)性能要求。
[1]馬建明.數(shù)據(jù)采集與處理技術(shù)[M].西安:西安交通大學(xué)出版社,2005,9.
[2]余錫存,曹國華.單片機(jī)原理及接口技術(shù)[M].西安:電子科技大學(xué)出版社,1994,6.
[3]ATmel公司.具有64KB系統(tǒng)內(nèi)可編程Flash的8位微控制器 ATmega64、ATmega64L(初稿)[S].2490G-AVR-03/04.
[4]譚浩強(qiáng).C 程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,1999,7.
[5]求是科技.單片機(jī)典型模塊設(shè)計(jì)實(shí)例導(dǎo)航[M].北京:人民郵電出版社,2005,1.
[6]李長林.AVR單片機(jī)應(yīng)用設(shè)計(jì)[M].北京:電子工業(yè)出版社,2005,5.