《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 嵌入式Linux平臺下電力載波路由器的軟件設(shè)計
嵌入式Linux平臺下電力載波路由器的軟件設(shè)計
來源:電子技術(shù)應(yīng)用2010年第11期
田 霆, 郭前崗, 周西峰
南京郵電大學(xué) 自動化學(xué)院, 江蘇 南京 210003
摘要: 針對載波電表集抄系統(tǒng)中,電力載波通信距離有限、抄收率低等問題,提出了一種應(yīng)用于載波電表集抄系統(tǒng)的中繼轉(zhuǎn)發(fā)技術(shù),并設(shè)計出應(yīng)用此技術(shù)的電力載波通信路由器。采用多叉樹遍歷尋優(yōu)算法實現(xiàn)了用戶節(jié)點路徑的自動尋優(yōu)及自動更新,并在此基礎(chǔ)上提供了網(wǎng)絡(luò)和串口兩種通信方式,以方便采集站對用戶節(jié)點進行快速、準確、無誤的數(shù)據(jù)抄收。
中圖分類號: TN925
文獻標識碼: A
文章編號: 0258-7998(2010)10-0135-03
The software design of powerline communication route based on embedded Linux platform
TIAN Ting, GUO Qian Gang, ZHOU Xi Feng
Automation College, Nanjing University of Posts and Telecommunications, Nanjing 210003, China
Abstract: In the carrier meter reading system, the electric power carrier communication distance is Limited, and meter reading has low rates. This paper proposes a set of copy used in carrier-meter relay system technology and designs power line carrier communication routers to apply this technology. The user node, the path to achieve automatic optimization, each node of the routing path of automatic updates, and providing Ethernet and serial port pairs of nodes in the data fast, accurate and correct meter reading function.
Key words : relaying technology; DLT/645 protocol; embedded Linux; multi-branch tree traversal algorithm for optimizing; multi-threaded

    電力載波(PLC)是電力系統(tǒng)通信的一種基本方式,廣泛應(yīng)用于電力行業(yè)的自動化抄表系統(tǒng)中。由于電力載波是利用電力線來作為傳輸媒介,因此,電力線路的距離長短和用戶的用電負荷都會對電力載波通信效果造成影響,而通過載波模塊實現(xiàn)對一臺區(qū)下所有電表的直抄是不可能的。目前常用的解決方法是為每塊電表安裝帶中繼轉(zhuǎn)發(fā)功能的載波模塊,不能直抄的表可以通過距離遠近或信號質(zhì)量較佳的表對其進行中繼轉(zhuǎn)發(fā)抄收。電力載波通信信道,其載波通信信號衰減大、干擾嚴重、不穩(wěn)定,如何根據(jù)線路狀態(tài)以及通信距離的遠近自動分配各電表的中繼節(jié)點并動態(tài)維護這些節(jié)點是進行中繼轉(zhuǎn)發(fā)抄收時應(yīng)解決的問題。因此有必要設(shè)計一種電力載波通信路由器以實現(xiàn)對一臺區(qū)下各節(jié)點中繼路徑的智能制定及其維護,以方便其上級采集器對所有節(jié)點的抄收。
1 系統(tǒng)拓撲結(jié)構(gòu)
    載波集抄系統(tǒng)拓撲圖如圖1所示。


2  電力載波路由器的軟件設(shè)計
2.1 DLT/645—2007多功能電表通信規(guī)約

    本通信規(guī)約規(guī)定了多功能電表與手持單元(HHU)或其他數(shù)據(jù)終端設(shè)備之間的物理連接、通信鏈路及應(yīng)用技術(shù)規(guī)范,適用于本地系統(tǒng)中多功能電表與手持單元或其他數(shù)據(jù)終端設(shè)備進行點對點或一主多從的數(shù)據(jù)交換方式[1]。645協(xié)議規(guī)定了通信采用異步串行的通信方式,其每個字節(jié)包含有1個起始位、8個數(shù)據(jù)位、1個偶校驗位及1個停止位,缺省通信速率為2 400 b/s,傳輸時先傳低位,后傳高位。應(yīng)用規(guī)定了如圖2所示的每一幀的信息格式。

    在圖2中,68H為幀的起始符;A0~A5為通信端的物理地址,一共是6個字節(jié);L為數(shù)據(jù)域的長度;DATA為數(shù)據(jù)域;16H為幀的結(jié)束符;CS表示校驗碼,校驗碼是從第1幀起始符開始到校驗碼之前的所有各字節(jié)的模256的和,即各字節(jié)二進制算術(shù)和,不計超過256的算術(shù)值;C為控制碼,控制碼一共有8位,在保留645協(xié)議中對控制碼各位定義的基礎(chǔ)上,本設(shè)計針對中繼功能的使用重新定義了控制碼。同時為了保障載波通信的可靠性,還省去了645協(xié)議中關(guān)于后續(xù)幀的定義。控制碼的格式[2]如圖3所示。

2.2 路由算法的設(shè)計
     路由的目的是要建立一張各節(jié)點的最優(yōu)路徑表,此表記錄了臺區(qū)下每個節(jié)點的中繼級別、各級的中繼地址及目的地址。這種路由表是動態(tài)的,存放在RAM中,每隔5 min會自動更新一次。路由表的初始值各項均為0,其格式如圖4所示。

    路由表的建立是軟件中最核心的部分,本設(shè)計采用了多叉樹遍歷尋優(yōu)[3]算法,從路由器節(jié)點開始逐層搜索。其算法描述如下:
    (1)路由器先將網(wǎng)絡(luò)中的所有節(jié)點建成一個帶有頭節(jié)點的單向鏈表,然后開始向網(wǎng)絡(luò)中所有節(jié)點依次發(fā)送直抄查詢命令,并等待回應(yīng)。若能在規(guī)定時間內(nèi)(10 s)收到節(jié)點的應(yīng)答信息,則表明該節(jié)點可以進行直抄;然后將可以進行直抄的電表從鏈表中刪除,并將刪除的節(jié)點重新組成一個新的鏈表。路由表建立示意圖如圖5所示。

    單個節(jié)點的屬性如下:
    struct mac_list
    {
    U8_t mac[6];                        //節(jié)點的MAC地址
    U8_t flag;
              //flag表示路由表中已建立該MAC對應(yīng)的路由項
    int use_tim;
  //此項只在中繼轉(zhuǎn)發(fā)時有用,表示轉(zhuǎn)發(fā)過程所花費的時間
    U8_t num;                                            //節(jié)點的序號
    U8_t respond_num[10];
                            //記錄可以與自身進行通信的電表序號
    struct mac_list *next;
    };
     完成第一次遍歷直抄搜索后,建立了以Head 1為首的單向鏈表(稱為第一層)。第一層中的各節(jié)點都可以直抄,它們在路由表中只要填寫中繼級別和目的地址即可。由于是可以直抄的節(jié)點,所以中繼級別填為0;
    (2)對剩下的節(jié)點進行一級中繼遍歷搜索,依照鏈表中各節(jié)點的序列順序,依次選取第一層中單個節(jié)點作為剩下節(jié)點的一級中繼,對余下的節(jié)點進行轉(zhuǎn)發(fā)抄收測試,如圖6所示。

    在一級中繼節(jié)點確定的過程中,第一層中的每個節(jié)點都會嘗試對剩下的節(jié)點進行一級中繼轉(zhuǎn)發(fā),若剩下的節(jié)點中,存在能對中繼轉(zhuǎn)發(fā)幀作出回應(yīng)的節(jié)點,則表明該節(jié)點可以進行一級中繼抄收。通常一個節(jié)點的中繼抄收路徑存在好幾條,這時需要通過計算中繼抄收時間來選擇一條用時最短的路徑,這樣才能保證采集器抄收時用時最短。經(jīng)過對剩下節(jié)點進行一級中繼遍歷抄收搜索后,剩下的節(jié)點中可以進行一級中繼抄收的節(jié)點將會組成第二層。同樣,第二層由從Head中刪除的一級中繼抄收節(jié)點組成,并順序存儲在以Head2為頭節(jié)點的鏈表中,建立好的第二層結(jié)構(gòu)如圖7所示。

    (3)對剩下的節(jié)點進行二級中繼遍歷搜索。一般而言,二級中繼可以做到對一臺區(qū)下所有節(jié)點的覆蓋。剩下的節(jié)點要進行中繼路徑的確定,首先要確定它的父節(jié)點(二級中繼節(jié)點),父節(jié)點是從建立好的第二層來選擇的;然后確定它的一級中繼節(jié)點,而一級中繼節(jié)點是從第一層中選擇的。由圖7可知,一級中繼路由建立完成之后,第一層與第二層有著確定的連接關(guān)系,所以在節(jié)點的屬性中設(shè)置了respond_num數(shù)組來記錄可以與自身進行通信的電表序號。這樣,建立二級中繼時可通過比較從路由器發(fā)送二級中繼轉(zhuǎn)發(fā)命令到目的節(jié)點作出的響應(yīng),即這個通信過程所花費的時間來確定中繼路徑。建立二級中繼的過程示意圖如圖8所示。

2.3 嵌入式Linux平臺下路由器的多線程程序設(shè)計
    Linux是一種完全開源的32位操作系統(tǒng),它幾乎支持所有體系架構(gòu)的處理器。由于它具有開源、可定制、安全、穩(wěn)定等特征,所以可對其進行裁剪、修改使之能夠穩(wěn)定運行在嵌入式開發(fā)平臺上。針對電力載波通信路由器的實際應(yīng)用需求,本設(shè)計移植了Linux-2.6.29.4內(nèi)核至ARM9平臺上,并配置了EXT2/VFAT/NFS文件系統(tǒng)及串口和網(wǎng)絡(luò)通信驅(qū)動。為了使路由器能夠更快速和穩(wěn)定地進行路由、路由表動態(tài)維護、抄表查詢等工作,本文提出了一種多線程的解決方案,利用Linux對多線程的支持很好地解決了各項任務(wù)的快速切換、相互通信等問題。
    Linux系統(tǒng)下的多線程遵循POSIX線程接口,稱為pthread。編寫Linux下的多線程程序,需要使用頭文件pthread.h,鏈接時需要使用庫libpthread.a[4]。在程序中,本文給路由表的建立分配了id_route線程,為串口2和網(wǎng)絡(luò)UDP通信分別分配了id_com和id_net線程。這三個線程是相互獨立的,其中串口2和網(wǎng)絡(luò)UDP線程以阻塞的方式來等待采集器發(fā)出的抄表查詢指令。線程的初始化工作均由pthread_creat函數(shù)來開啟,id_route線程開啟后,串口1開始對外發(fā)送直抄、一級中繼抄表、二級中繼抄表的數(shù)據(jù)命令幀并根據(jù)接收到的節(jié)點響應(yīng)數(shù)據(jù)幀來建立臺區(qū)下相應(yīng)節(jié)點的路由信息。id_route線程結(jié)束后會激活id_reroute線程,這個線程主要是為下次路由表更新進行定時,定時時間設(shè)為20 min,即每隔20 min,更新一次路由表。id_route線程的主要功能就是不停地查詢20 min定時有沒有到,如果定時到,則關(guān)閉20 min定時器,并開啟id_route線程。程序多線程化后,就要考慮線程間的同步問題,如線程id_route正從文本文件中讀取當(dāng)中記錄的各個節(jié)點的MAC地址、id_net線程正試圖向文本文件中添加某一節(jié)點的MAC地址。如果兩個線程不加以同步,必會導(dǎo)致節(jié)點MAC地址的混亂。本設(shè)計采用一種稱為“互斥鎖”的同步方式,它可以保證任一時刻只有一個線程能訪問它,利用這一性質(zhì)可以保護共享數(shù)據(jù)。建立路由表的線程流程圖如圖9所示。

    本文提出了一種路由路徑尋優(yōu)算法并在嵌入式Linux平臺下實現(xiàn)了這種路由算法,該算法可以保證節(jié)點搜索的不重復(fù)性、路由建立的快速性和數(shù)據(jù)抄收的正確性。利用Linux對多線程編程的支持及強大的網(wǎng)絡(luò)通信功能,實現(xiàn)了路由維護與網(wǎng)絡(luò)、串口通信的并發(fā)運行,很好地滿足了自動化抄表系統(tǒng)中對網(wǎng)絡(luò)通信和抄表實時性的要求。
參考文獻
[1]    DL/T 645-2007.多功能電能表通信規(guī)約[S].2008.
[2]    青島東軟電腦技術(shù)有限公司.PLCI36G-III-E電力載波芯片通信協(xié)議指南, 2010.
[3]    彭啟偉,張浩.基于多叉樹遍歷的中壓配電線載波自適應(yīng)中繼算法[M].電力系統(tǒng)通信, 2009(197):21-27.
[4]    童永清.Linux C編程實戰(zhàn)[J].北京:人民郵電出版社,2008.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲精品网址在线观看| 久久精品国产91精品亚洲| 狠狠色丁香久久婷婷综合丁香| 欧美日韩精品在线| 欧美高清一区| 欧美高清视频一区二区| 美日韩精品免费| 久久影视精品| 久久在线免费观看视频| 久久视频一区| 久久免费的精品国产v∧| 久久精品一级爱片| 久久久久久一区| 久久久久久午夜| 久久综合九色| 欧美插天视频在线播放| 欧美成人亚洲成人| 欧美精品在线观看| 欧美欧美全黄| 欧美日韩色一区| 欧美亚日韩国产aⅴ精品中极品| 欧美视频中文字幕在线| 欧美日韩在线另类| 国产精品九九久久久久久久| 欧美日韩国产限制| 欧美日韩综合| 国产精品日韩欧美一区| 国产精品天美传媒入口| 国产精品永久免费视频| 国产一区二区精品久久99| 国产主播精品| 亚洲第一福利社区| 亚洲精品久久久久久下一站 | 美女91精品| 欧美国产91| 欧美日韩综合视频| 国产精品有限公司| 国产一区二区精品丝袜| 亚洲第一天堂av| 99国产精品99久久久久久| 亚洲一品av免费观看| 欧美一激情一区二区三区| 亚洲国产精品ⅴa在线观看| 亚洲精品一区二区三区不| 亚洲无亚洲人成网站77777 | 欧美精品aa| 国产精品女主播| 黄色成人在线观看| 亚洲黄色一区| 亚洲图片欧美一区| 亚洲动漫精品| 亚洲视频 欧洲视频| 久久激情综合| 欧美黄网免费在线观看| 国产精品毛片在线| 在线精品国产欧美| 在线亚洲电影| 亚洲高清av在线| 亚洲性人人天天夜夜摸| 久久精品综合| 欧美日韩一区二区三区四区在线观看| 国产日韩欧美麻豆| 91久久国产综合久久91精品网站| 亚洲社区在线观看| 亚洲国产一区二区三区在线播| 亚洲午夜未删减在线观看| 久久天堂成人| 国产精品美女久久久久久免费| 伊人精品成人久久综合软件| 99香蕉国产精品偷在线观看| 久久av在线| 亚洲欧美国产毛片在线| 免费91麻豆精品国产自产在线观看| 欧美日韩一区二区三区| 一区二区在线视频| 亚洲午夜精品久久久久久浪潮| 亚洲国产网站| 久久久999精品| 国产精品女人网站| 亚洲美女中出| 久久精品国产v日韩v亚洲| 亚洲在线观看免费视频| 欧美二区视频| 国产一区二区三区四区在线观看| 亚洲三级色网| 91久久国产综合久久| 欧美一区二区三区免费观看视频 | 亚洲精品欧美激情| 亚洲第一精品福利| 欧美一二三视频| 欧美日韩午夜激情| 亚洲高清av在线| 久久疯狂做爰流白浆xx| 亚洲欧美另类综合偷拍| 欧美精品 国产精品| 尤物99国产成人精品视频| 亚洲欧美中文字幕| 亚洲一二三四区| 欧美精品一区在线播放| 亚洲大胆人体视频| 亚洲第一精品夜夜躁人人爽| 香蕉久久久久久久av网站| 欧美日韩一区二区视频在线观看| 亚洲第一中文字幕| 久久大逼视频| 久久久久久久性| 国产欧美一区二区精品秋霞影院| 一本一道久久综合狠狠老精东影业 | 欧美日韩国产免费| 最新热久久免费视频| 亚洲国产成人tv| 久久人人爽国产| 国内自拍亚洲| 欧美影院精品一区| 久久国产精品一区二区三区四区| 国产精品久久久久久久久久ktv| 日韩视频精品在线| 中国成人黄色视屏| 欧美日韩精品免费| 亚洲免费观看高清完整版在线观看熊 | 亚洲一区二区三区激情| 亚洲午夜激情网页| 欧美视频久久| 亚洲午夜精品久久久久久app| 亚洲欧美国产毛片在线| 国产精品美女www爽爽爽| 亚洲一区二区三区免费观看| 亚洲尤物在线| 国产精品普通话对白| 亚洲欧美精品中文字幕在线| 午夜精品在线观看| 国产精品丝袜xxxxxxx| 午夜精品久久久久久久男人的天堂| 久久www免费人成看片高清| 国产日韩一区二区三区在线| 欧美一区二区三区啪啪| 久久久一区二区三区| 亚洲丶国产丶欧美一区二区三区 | 欧美性大战久久久久久久蜜臀| 亚洲一区影院| 亚洲一区二区欧美| 国产精品久久一卡二卡| 亚洲无限乱码一二三四麻| 欧美一区二区高清| 国产一区二区三区免费观看| 久久超碰97中文字幕| 另类人畜视频在线| 亚洲激情视频网站| 亚洲性视频网站| 国产伦精品一区二区三区四区免费| 欧美一区二区三区婷婷月色| 久久国产精品色婷婷| 伊人夜夜躁av伊人久久| 日韩一级在线| 国产精品久久久久天堂| 午夜精彩视频在线观看不卡 | 亚洲精品中文字幕女同| 亚洲免费综合| 国产亚洲精品自拍| 亚洲日本欧美| 国产精品国产三级国产a| 午夜精品久久一牛影视| 免费黄网站欧美| 妖精成人www高清在线观看| 欧美在线1区| 91久久极品少妇xxxxⅹ软件| 亚洲欧美日本伦理| 一区精品在线| 亚洲午夜未删减在线观看| 国产视频精品免费播放| 亚洲精品孕妇| 国产精品一区久久久| 亚洲欧洲精品一区二区三区波多野1战4| 欧美日本韩国| 欧美一区二区三区视频免费| 欧美精品在线网站| 亚洲欧美日韩综合| 欧美激情国产日韩| 欧美亚洲一区二区在线| 欧美精品久久久久a| 欧美亚洲尤物久久| 欧美日韩一区视频| 久久精品一区二区国产| 欧美日韩亚洲综合在线| 久久国产黑丝| 国产精品vip| 亚洲日本va午夜在线影院| 国产精品亚洲精品| 一本综合精品| 狠狠色2019综合网| 亚洲欧美国产日韩天堂区| 伊甸园精品99久久久久久| 午夜精品久久久久久久99樱桃| 欧美精品久久久久久久| 久久国产精品99久久久久久老狼| 欧美日韩一区二区三区在线看| 亚洲国产高清在线| 国产免费成人在线视频| aa级大片欧美三级| 影音先锋一区|