馬洪波 周 悅
(1.沈陽建筑大學 信息與控制工程學院,遼寧 沈陽 110168;2.遼寧省送變電工程公司,遼寧 沈陽 110021)
智能化是電力系統發展方向。隨著網絡電子產品等與電力系統的緊密融合,分布式電源、儲能裝置、智能電器等快速發展,以及云計算、大數據、移動終端等現代信息技術的廣泛應用,傳統電網向智能電網的全面升級已成必然。要順應世界電網發展最新趨勢,推廣線路智能監控系統、智能調度控制系統、智能互動用電設備成為首要任務,因此需要建設貫穿各領域的高效信息傳輸的技術,進而加快電網各環節的智能升級改造,全面提高電網智能化水平。
本文基于AVR單片機的數據采集和通信系統的功能,應用兩級計算機系統完成,上位機應用普通PC計算機,下位機采用單片機控制,下位機主要完成數據的采集及數據傳輸給上位機的功能,上、下位機之間以串行數據傳輸方式進行通信。雙方共同遵守同一個通信協議。下位機接收到的上位機指令后將采集的數據處理后傳給上位機。上位機在軟件的支持下對采集的數據進行分析處理。
本系統分成三個模塊組成:模擬量采集模塊、開關量、LCD、LED本地顯示模塊,通過串行口傳輸給上位機模塊。系統結構圖如圖1所示。
圖1中的5個模擬量用遙控盒上的5個電位器來模擬輸入。經過芯片TLC2543進行模數轉換,然后輸入到ATmega64L中的PD口。經過AVR單片機處理后再經PA口輸出到液晶顯示模塊(LCM1)進行本地顯示,經PD2口和PD3口輸出到MAX232E的RXD和TXD進行RS-232的電平轉換,最后通過串行電纜送到上位機。
系統利用遙控盒上8個開關的開和關模擬數字量輸入的邏輯“1”或邏輯 “0”,經過三態雙向總線隔離/驅動芯片74HC245,輸入到ATmega64L中的PE口。AVR單片機處理之后經PA口輸出到8D鎖存器74HC573中,然后經過驅動電路控制8個LED的亮或滅。同時單片機同樣經PD2和PD3輸出到MAX232E的RXD和TXD進行RS-232的電平轉換,最后通過串行電纜送到上位機。

圖1 基于AVR單片機的數據采集與通信系統結構圖
本設計采用ATmel公司的高性能低功耗的AVR單片機ATmega64L作為設備的核心控制器。根據圖1所設計的系統結構,選擇外圍電路器件分別為:鎖存器74HC573、發光二極管LED、液晶顯示器LCD芯片MAX232E、芯片74HC245、串行傳輸口RS232等,進而達到本系統的設計功能。
本次設計,需要用單片機執行數據采集的任務,把采集結果通過單片機傳送到上位計算機中去,最后由計算機完成數據處理過程,以及人機界面顯示。這需要在單片機和計算機之間建立通信結構。此結構可以在單片機和計算機之間進行有效而正確的信息傳輸。
RS-232通信接口是美國電子工業協會(EIA)正式公布的串行通信接口標準,用來實現計算機和計算機之間、計算機和外設之間的數據傳輸。RS-232串行接口總線適用于設備之間通信距離在15米以內而且速度不高于20Kbps的場合中。
RS-232在電氣接口上采用負邏輯,即邏輯“1”為-5V~-15V,而邏輯:“0”則是+5V~+15V。
由于單片機采用的是 TTL電平,即邏輯“1”為+5V,邏輯“0”為0V,因此為了實現單片機和計算機之間的通信,必須進行RS-232和TTL接口之間的電平轉換。
本設計中實現TTL電平和RS-232電平轉換的芯片是MAX232E.MAX232E由+5V電源供電,主要由一個片內電壓泵升電路、一個雙重發送電路和一個雙重接收電路組成。電壓泵升電路由兩個電荷泵組成,用以實現升壓和電壓極性的轉換[4]。
本次設計所選擇的ATmega64L型號單片機是一款片內資源豐富的單片機,它除了64KBFlash程序存儲器和4KB片內SRAM數據存儲器,53個可編程的I/O口外,還有全雙工異步串行通信接口USART,同步串行接口SPI和35個中斷源等。對片內資源進行充分的開發和利用是設計ATmega64L單片機應用系統的關鍵。
本設計采用C語言編程,因為C語言的可移植性最佳而成為首選。
基于AVR單片機的數據采集和通信系統控制軟件采用模塊化設計。從結構上看主要包括主循環體程序、接收數據程序、發送數據程序、中斷服務程序和其它控制程序。
主程序開始時進行定時器0,定時器1,定時器2,AD,DI,LCD,MCU等的初始化,初始化主要是設置定時器的中斷方式(如使設置定時器0溢出中斷,定時器1比較中斷,定時器2溢出中斷),外部中斷INT0,INT1中斷方式(INT0下降沿產生異步中斷請求,INT1上升沿產生異步中斷請求);AD,DI處于可以接收模擬量和開關量的狀態。然后程序進入循環狀態,首先判斷串口接收標志是否為1,如果是1且上位機處于使能發送狀態則接收數據同時LCD顯示遙控狀態,如果上述條件不符合則跳入下一個判斷即外部中斷INT0控制的AD采樣判斷,首先判斷中斷標志是否為1,如果為1,則取樣求平均值,在LCD上顯示模擬量號(通道0,顯示第1,2路模擬量,通道1顯示第3,4路模擬量,通道2顯示第5,6路模擬量)。如果中斷標志不為1,則跳入下一個判斷開關量DI采樣標志是否為1,如果為1,則檢驗DI口輸入量是否有變化,如果有變化則保存數據,并置相應的指示燈亮,如果輸入量無變化則檢驗上次開關量是否發送完畢,如果發送完畢,則發送下一個數據包。如果未發送完畢或DI采樣標志不為1則跳入下一次判斷即外部中斷INT1控制的按鍵中斷,如果按鍵標志為1,則鍵值為1通道號加1,顯示下兩路模擬量,如果鍵值為2,則通道號減1,顯示前兩路模擬量;再將按鍵標志置為0此時結束程序進入下一次循環判斷,如果按鍵標志為0直接結束程序進入下一次循環判斷。
定時器0中斷服務程序
定時器0中斷主要完成模擬量的數據采集與平均值計算。具體為:定時器0中斷時間為20毫秒,用于AD采樣計時;當AD采樣次數滿15次后判斷采樣結束標志,如果采樣結束則計算平均值然后在LCD上進行顯示后,產生AD中斷,最后中斷返回。
定時器1中斷服務程序:定時器1主要完成掃描開關量輸入狀態,具體為:中斷時間為250毫秒,如果有開關量輸入,則置開關量輸入標志為1,然后中斷返回。
定時器2中斷服務程序:定時器2中斷服務程序主要完成按鍵處理,用于按鍵的去抖延時控制。串行發送中斷服務程序:串行中斷服務程序主要完成向上位機傳輸數據的功能。
串行接收中斷服務程序:串行接收中斷服務程序主要完成接收上位機發送的數據的功能。
中斷0服務程序:中斷0主要完成模擬量的采集。當6路模擬量采集完畢后,關中斷,再將采集到的模擬量送入模擬量緩沖區,然后中斷返回。
中斷1服務程序:中斷1主要完成按鍵處理,主要完成去抖延時的功能。
ATmega64L是片內資源非常豐富的單片機,對單片機片內資源進行充分的開發和利用。是設計ATmega64L應用系統的關鍵。在基于AVR單片機的電力系統數據采集與通信系統的軟件設計方法中,采用模塊化設計,以AVR單片機為控制核心,通過軟件編程來實現系統功能。運行結果顯示,該數據采集與通信系統操作簡單方便、運行正常、成本低廉,上位機與下位機通信均達到系統性能要求。
[1]馬建明.數據采集與處理技術[M].西安:西安交通大學出版社,2005,9.
[2]余錫存,曹國華.單片機原理及接口技術[M].西安:電子科技大學出版社,1994,6.
[3]ATmel公司.具有64KB系統內可編程Flash的8位微控制器 ATmega64、ATmega64L(初稿)[S].2490G-AVR-03/04.
[4]譚浩強.C 程序設計[M].北京:清華大學出版社,1999,7.
[5]求是科技.單片機典型模塊設計實例導航[M].北京:人民郵電出版社,2005,1.
[6]李長林.AVR單片機應用設計[M].北京:電子工業出版社,2005,5.