《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于ARM11的箱變監(jiān)測系統(tǒng)
基于ARM11的箱變監(jiān)測系統(tǒng)
來源:微型機(jī)與應(yīng)用2013年第24期
洪 玲,邵平凡
(武漢科技大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,,湖北 武漢430065)
摘要: 針對箱式變壓器監(jiān)控系統(tǒng)實(shí)現(xiàn)采集周圍環(huán)境溫度,、濕度,、局部放電量以及噪聲的目標(biāo),,將ARM11與溫濕度采集模塊AM2301相結(jié)合,,通過對基于ARM11嵌入式開發(fā)板驅(qū)動(dòng)程序的編寫與加載,,實(shí)現(xiàn)溫、濕度的采集,。將溫度數(shù)據(jù)作為無線測溫模塊的定標(biāo)數(shù)據(jù),,通過開發(fā)板的串口與無線測溫、局部放電和噪聲采集設(shè)備的通信來實(shí)現(xiàn)對輸配電線的溫度,、變壓器局部放電量和噪聲的實(shí)時(shí)采集,,最后通過網(wǎng)絡(luò)將實(shí)時(shí)采集的數(shù)據(jù)發(fā)送給監(jiān)控中心。
Abstract:
Key words :

摘  要: 針對箱式變壓器監(jiān)控系統(tǒng)實(shí)現(xiàn)采集周圍環(huán)境溫度,、濕度,、局部放電量以及噪聲的目標(biāo),,將ARM11與溫濕度采集模塊AM2301相結(jié)合,,通過對基于ARM11嵌入式開發(fā)板驅(qū)動(dòng)程序的編寫與加載,,實(shí)現(xiàn)溫、濕度的采集,。將溫度數(shù)據(jù)作為無線測溫模塊的定標(biāo)數(shù)據(jù),,通過開發(fā)板的串口與無線測溫、局部放電和噪聲采集設(shè)備的通信來實(shí)現(xiàn)對輸配電線的溫度,、變壓器局部放電量和噪聲的實(shí)時(shí)采集,,最后通過網(wǎng)絡(luò)將實(shí)時(shí)采集的數(shù)據(jù)發(fā)送給監(jiān)控中心。
關(guān)鍵詞: 變壓器,;AM2301,;嵌入式;環(huán)境參數(shù)監(jiān)測,;網(wǎng)絡(luò)傳輸

    城市各居民區(qū)的箱式變電站是所轄區(qū)用戶安全用電的基本設(shè)施,。隨著我國電網(wǎng)建設(shè)的發(fā)展,對供電系統(tǒng)的要求也越來越高,。對箱式變電站環(huán)境和設(shè)備的監(jiān)測,,是保障變電站設(shè)備安全可靠運(yùn)行的必要手段。傳統(tǒng)的遠(yuǎn)程監(jiān)測依靠串行總線來完成上位機(jī)與數(shù)字設(shè)備之間的通信,,由上位機(jī)直接對數(shù)字設(shè)備進(jìn)行控制,。但這已經(jīng)越來越顯示出它的局限性:成本較高、不易擴(kuò)展等,。嵌入式設(shè)備性能的提高及因特網(wǎng)的飛速發(fā)展,,為這些問題提出了新的解決方案,文中設(shè)計(jì)了以嵌入式計(jì)算機(jī),、通信設(shè)備,、測控單元和傳輸網(wǎng)絡(luò)為基本構(gòu)成的監(jiān)測系統(tǒng),為變配電系統(tǒng)建立實(shí)時(shí)數(shù)據(jù)采集和數(shù)據(jù)傳輸,,用監(jiān)測結(jié)果作為對電力系統(tǒng)進(jìn)行監(jiān)控的依據(jù),,在電力監(jiān)控系統(tǒng)中發(fā)揮了重要作用。
1 嵌入式箱變監(jiān)測系統(tǒng)方案設(shè)計(jì)
    根據(jù)箱變監(jiān)測環(huán)境指標(biāo)的要求,,該箱變監(jiān)測系統(tǒng)應(yīng)具有以下基本功能:
    (1)穩(wěn)定可靠地采集各個(gè)環(huán)境指標(biāo)數(shù)據(jù),;
    (2)對各環(huán)境指標(biāo)數(shù)據(jù)的采集相對獨(dú)立,相互之間無干擾,;
    (3)與監(jiān)控中心實(shí)現(xiàn)可靠的網(wǎng)絡(luò)數(shù)據(jù)傳輸,;
    (4)當(dāng)系統(tǒng)出現(xiàn)故障時(shí)能夠自動(dòng)重啟,確保系統(tǒng)長期可靠運(yùn)行,。
    根據(jù)箱變環(huán)境的監(jiān)測需要,,本系統(tǒng)采用體積小,、功能強(qiáng)大的嵌入式開發(fā)板作為主要的硬件環(huán)境,與溫濕度檢測模塊,、局部放電數(shù)據(jù)采集模塊和噪聲采集模塊相結(jié)合,,并通過網(wǎng)絡(luò)與監(jiān)控中心遠(yuǎn)程通信來實(shí)現(xiàn)整個(gè)系統(tǒng)的功能,硬件總體結(jié)構(gòu)如圖1所示,。

2 開發(fā)板硬件介紹
    本系統(tǒng)選用Friendly ARM研制的Tiny6410開發(fā)板,,其中核心板所用處理器是基于ARM11的S3C6410,板載資源有256 MB DDR RAM,,2 GB SLC Nand Flash存儲器,,底板還提供了LCD觸摸屏、USB接口,、SD卡,、3個(gè)通用異步串行口、網(wǎng)絡(luò)接口等功能支持,。
3 軟件平臺
    嵌入式操作系統(tǒng)采用功能強(qiáng)大,、多任務(wù)而且性能穩(wěn)定的Linux操作系統(tǒng),保障了良好的可裁剪和移植性,,同時(shí)也便于對新增設(shè)備驅(qū)動(dòng)程序進(jìn)行移植開發(fā),。內(nèi)核版本是Linux2.6.38,經(jīng)實(shí)際檢測,,該系統(tǒng)可在S3C6410硬件平臺上可靠運(yùn)行,。
    對硬件平臺上運(yùn)行的程序進(jìn)行編譯,需要在PC上建立交叉編譯環(huán)境,,本次設(shè)計(jì)的交叉編譯環(huán)境建立在 Linux Fedora 15 操作系統(tǒng)上,,使用arm-linux-gcc-v6作為交叉編譯器。交叉編譯產(chǎn)生的可執(zhí)行文件和驅(qū)動(dòng)程序模塊通過U盤存入嵌入式系統(tǒng)的閃存里,。先通過insmod命令加載驅(qū)動(dòng)程序模塊到操作系統(tǒng)內(nèi)核中,,再運(yùn)行數(shù)據(jù)采集應(yīng)用程序。
4 系統(tǒng)軟件設(shè)計(jì)
    本系統(tǒng)采用C語言編程,,以多線程和模塊化的設(shè)計(jì)方法,,可以使數(shù)據(jù)采集、控制輸出和系統(tǒng)通信同時(shí)進(jìn)行[1],,其主要流程如圖2所示,。其中采集輸配電線溫度、噪聲和局部放電主要通過串口與設(shè)備通信來獲得數(shù)據(jù),。讀取環(huán)境溫,、濕度則是應(yīng)用程序通過Linux文件系統(tǒng)設(shè)備節(jié)點(diǎn),驅(qū)動(dòng)AM2301讀取溫濕度測量數(shù)據(jù),,最后將采集到的數(shù)據(jù)經(jīng)過加工處理后,,通過網(wǎng)絡(luò)傳送給監(jiān)測中心,。

4.1 看門狗設(shè)計(jì)
    看門狗程序模塊直接調(diào)用內(nèi)核中已經(jīng)存在的看門狗驅(qū)動(dòng)程序,在應(yīng)用程序中通過“/dev/watchdog”文件設(shè)備節(jié)點(diǎn)來進(jìn)行訪問,。使用ioctl()來設(shè)定看門狗定時(shí)器的時(shí)間,,并及時(shí)進(jìn)行喂狗操作,。當(dāng)因采集或傳輸?shù)饶K發(fā)生故障而不能及時(shí)進(jìn)行喂狗操作時(shí),,就會在達(dá)到設(shè)定時(shí)間后自動(dòng)重啟開發(fā)板,開發(fā)板重啟后自動(dòng)運(yùn)行系統(tǒng)程序,,達(dá)到長期自動(dòng)運(yùn)行的目的,。
4.2 網(wǎng)絡(luò)傳輸設(shè)計(jì)
    網(wǎng)絡(luò)傳送數(shù)據(jù)根據(jù)實(shí)時(shí)性需要選擇了基于UDP協(xié)議的網(wǎng)絡(luò)傳輸。本系統(tǒng)采用單播——客戶機(jī)/服務(wù)器模型,。為了提高系統(tǒng)的安全性,,與監(jiān)控中心商定了加密密文格式,只有當(dāng)收到正確命令后才將采集的數(shù)據(jù)與加密內(nèi)容發(fā)送給監(jiān)控中心,,提高了安全性,。在網(wǎng)絡(luò)傳輸過程中,當(dāng)創(chuàng)建套接字并綁定端口后,,會一直處于監(jiān)聽狀態(tài),,當(dāng)接收到數(shù)據(jù)后,判斷是否為監(jiān)控端發(fā)送來的數(shù)據(jù),,若是則發(fā)送采集的數(shù)據(jù),,回到監(jiān)聽狀態(tài),等下一次命令到來,。
4.3 AM2301驅(qū)動(dòng)設(shè)計(jì)
    AM2301數(shù)字溫濕度傳感器采用簡化的單總線通信協(xié)議,,溫度的量程范圍為:-40 ℃~+80 ℃,濕度的量程范圍為:0%~100%RH[2],。3個(gè)引腳的功能如表1所示,。本系統(tǒng)將DATA引腳接到S3C6410的GPE3,并通過5.1 kΩ上拉電阻與VDD連接后一起接到+5 V電源,,將GND引腳接地即完成線路連接,。

    本系統(tǒng)將AM2301作為一個(gè)字符設(shè)備進(jìn)行驅(qū)動(dòng)。在Linux中,,字符設(shè)備驅(qū)動(dòng)是以文件的形式進(jìn)行管理,,其驅(qū)動(dòng)需要完成打開、讀寫等類似針對文件的功能操作,,而且可以通過在/dev目錄下的文件系統(tǒng)設(shè)備節(jié)點(diǎn)進(jìn)行訪問[3],。字符設(shè)備驅(qū)動(dòng)程序主要由字符設(shè)備加載與卸載函數(shù)和字符設(shè)備驅(qū)動(dòng)file_operation結(jié)構(gòu)體中的成員函數(shù)組成并通常至少要實(shí)現(xiàn)open、write,、read和close系統(tǒng)調(diào)用[4],。
    設(shè)計(jì)移植AM2301驅(qū)動(dòng)程序時(shí),,根據(jù)其底層具體硬件特性和單總線通信協(xié)議,驅(qū)動(dòng)程序主要由函數(shù)am2301_init(設(shè)備注冊),、am2301_exit(設(shè)備注銷),、file_operation、ReadByte(讀一個(gè)字節(jié)),、am2301_read(讀取完整的溫,、濕度測量數(shù)據(jù))構(gòu)成。由于內(nèi)核空間與用戶空間的內(nèi)存是不能直接互訪的,,應(yīng)用程序可以通過fd=open()打開文件設(shè)備的方式來訪問驅(qū)動(dòng)程序,,并通過read(fd,&buffer,,size)來讀取采集到的數(shù)據(jù),。驅(qū)動(dòng)采集溫、濕度的流程圖如圖3所示,。
    讀取溫,、濕度數(shù)據(jù)采用單總線數(shù)據(jù)格式,一次傳輸數(shù)據(jù)為40 bit,。傳感器中讀出的溫,、濕度值是實(shí)際溫、濕度值的10倍,。具體格式如下:
    40 bit數(shù)據(jù)=16 bit濕度數(shù)據(jù)+16 bit溫度數(shù)據(jù)+8 bit校驗(yàn)和,,例如接收到40 bit數(shù)據(jù)為:
    0000 0010 1000 1101 0000 0001 0010 0001 1011 0001,若前4個(gè)字節(jié)的累加和與最后1個(gè)字節(jié)相等,,如:0000 0010+1000 1101+0000 0001+0010 0001=1011 0001(校驗(yàn)位),,則接收數(shù)據(jù)正確。由前32位的數(shù)據(jù)計(jì)算可得:
    濕度:0000 0010 1000 1101=653 =>65.3%RH
    溫度:0000 0001 0010 0001=289 =>28.9℃
    在驅(qū)動(dòng)程序的編寫中,,因需要直接訪問開發(fā)板引腳,,故需掌握基于S3C6410的GPIO操作。如配置GPIO方向(gpio_direction_output()),、讀取GPIO的值(gpio_get_value()),、釋放GPIO(gpio_free())等。

    通過AM2301采集環(huán)境的溫濕度,,其中溫度數(shù)據(jù)作為無線測溫設(shè)備的定標(biāo)數(shù)據(jù),,通過無線測溫模塊與ARM11的串口通信來采集輸配電線的溫度。
    將驅(qū)動(dòng)模塊和交叉編譯生成的可執(zhí)行文件放在開發(fā)板“/etc/init.d”目錄下的“rcS”腳本文件下運(yùn)行,,這樣完成了開發(fā)板啟動(dòng)后自動(dòng)運(yùn)行系統(tǒng)程序的功能,。配合看門狗技術(shù)的運(yùn)用,使系統(tǒng)在異常情況下能自動(dòng)恢復(fù),提高了系統(tǒng)的可靠性和自維護(hù)性,。
4.4 數(shù)據(jù)通信
    網(wǎng)絡(luò)監(jiān)聽傳送數(shù)據(jù)與采集溫濕度,、局部放電、噪聲等模塊在不同線程中獨(dú)立并行運(yùn)行,。其中采集輸配電線溫度,、局部放電與噪聲通過開發(fā)板的串口通信實(shí)現(xiàn),根據(jù)采集設(shè)備的通信協(xié)議設(shè)置其串口,。在Linux中,,串口文件位于“/dev”下,直接通過open()打開串口,,設(shè)置串口可通過設(shè)置struct termios結(jié)構(gòu)體的各成員來實(shí)現(xiàn),。
    串口程序設(shè)計(jì)的基本步驟:(1)打開設(shè)備文件open(),;(2)獲取當(dāng)前設(shè)備方式tcgetattr(),;(3)設(shè)置termios成員c_
lflag、c_oflag,、c_cflag等,;(4)使用cfsetispeed和cfsetospeed通信設(shè)置波特率;(5)使用tcsetattr設(shè)置設(shè)備工作方式,。當(dāng)串口設(shè)置好后,,直接通過read()和write()即可與采集設(shè)備通信,通過發(fā)送命令獲得采集數(shù)據(jù),。
4.5 多線程控制
    為了使各模塊之間獨(dú)立運(yùn)行并提高采集的效率和監(jiān)控的實(shí)時(shí)性,,本系統(tǒng)采用多個(gè)線程并行通信的方式來實(shí)現(xiàn)控制。不同的線程間可以直接訪問其他線程的數(shù)據(jù)[6],,簡化了控制的難度,,其中采集環(huán)境溫度和濕度ThreadTH()、輸配電線溫度Threadtem(),、噪聲Threadnoise(),、局部放電threadJF()分別由4個(gè)線程進(jìn)行控制,另外再創(chuàng)建一個(gè)線程Threadcontrl()來控制采集的4個(gè)線程,。當(dāng)4個(gè)線程中任何一個(gè)采集模塊出現(xiàn)故障時(shí),,控制線程將結(jié)束該線程并重新創(chuàng)建新的線程來進(jìn)行采集。其線程控制結(jié)構(gòu)圖如圖5所示,??刂品椒椋焊鞑杉K每完成一次采集就獲得一次系統(tǒng)時(shí)間,控制模塊也實(shí)時(shí)獲得系統(tǒng)時(shí)間,,將控制模塊中獲得的時(shí)間與采集模塊中的時(shí)間間隔相比較,,超過一定設(shè)定值后,則認(rèn)為該采集模塊出現(xiàn)故障,控制線程會結(jié)束該線程,,延時(shí)片刻重新創(chuàng)建新線程進(jìn)行采集,。

 

 

    本系統(tǒng)選擇采用基于S3C6410為主處理器的開發(fā)平臺和開源的Linux作為嵌入式操作系統(tǒng),并完成交叉工具鏈的生成,、驅(qū)動(dòng)程序的加載等,。完成了AM2301驅(qū)動(dòng)程序的設(shè)計(jì)與開發(fā),將驅(qū)動(dòng)程序移植到嵌入式開發(fā)板中,,實(shí)現(xiàn)溫,、濕度數(shù)據(jù)實(shí)時(shí)采集功能。將采集溫/濕度,、局部放電與采集噪聲各模塊相結(jié)合,,完成了實(shí)時(shí)采集箱變環(huán)境參數(shù)的監(jiān)測系統(tǒng),并通過線程實(shí)時(shí)控制方法和一系列措施確保系統(tǒng)能夠長期穩(wěn)定運(yùn)行,,并具良好的擴(kuò)展性和通用性,。
參考文獻(xiàn)
[1] 王彬,程雪.一種基于ARM的溫室數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì) [J].安徽農(nóng)業(yè)科學(xué),,2011,39(12):7466-7467.
[2] 何燕陽.基于AM2301的消毒熏箱溫濕度控制系統(tǒng)設(shè)計(jì) [J].智能計(jì)算機(jī)與應(yīng)用,,2012,2(4):2095-2163.
[3] 黃馳.基于ARM11和Linux的DS18B20溫度測量系統(tǒng)設(shè) 計(jì)及實(shí)現(xiàn)[J].軟件導(dǎo)航,,2012,,11(6):1672-7800.
[4] 劉繼忠,邱于兵,,黃翔.基于ARM的遠(yuǎn)程溫濕度監(jiān)控系統(tǒng) 的設(shè)計(jì)[J].儀表技術(shù)與傳感器,,2012(8):1002-1841.
[5] 宋寶華.Linux設(shè)備開發(fā)詳解[M].北京:人民郵電出版社,2007.
[6] 吳宇佳,,浦偉,,周妍,等.Linux下多線程數(shù)據(jù)采集研究與實(shí)現(xiàn)[J].通信技術(shù),,2012(7):1009-8054.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。