武漢海王機(jī)電工程技術(shù)公司 胡 瀅
重慶前衛(wèi)科技集團(tuán)有限公司 歐江波
武漢海王機(jī)電工程技術(shù)公司 程 波
基于電力線載波的雙網(wǎng)口調(diào)制解調(diào)器設(shè)計(jì)
武漢海王機(jī)電工程技術(shù)公司 胡 瀅
重慶前衛(wèi)科技集團(tuán)有限公司 歐江波
武漢海王機(jī)電工程技術(shù)公司 程 波
設(shè)計(jì)了一種用于電力線載波通訊的,具備雙網(wǎng)口和路由功能的調(diào)制解調(diào)器。調(diào)制解調(diào)器可工作在直流電壓最大1200V的供電電纜上,實(shí)現(xiàn)多種調(diào)制方式的載波通訊。本調(diào)制解調(diào)器具備雙網(wǎng)口,可同時(shí)接入到雙線路中,并具備路由選擇功能,可根據(jù)IP地址選擇相應(yīng)的線路,通過(guò)實(shí)現(xiàn)冗余來(lái)提高整個(gè)系統(tǒng)的可靠性。該調(diào)制解調(diào)器已成功用于水下采油樹(shù)控制系統(tǒng)中,滿足系統(tǒng)提出的高可靠性和冗余備份要求。
調(diào)制解調(diào)器;路由;冗余設(shè)計(jì)
雙網(wǎng)口為調(diào)制解調(diào)器系統(tǒng)提供冗余備份,適用于可靠性要求較高的應(yīng)用。本文介紹了一種雙網(wǎng)口電力載波調(diào)制解調(diào)器實(shí)現(xiàn),配合適當(dāng)?shù)娜哂嗖呗裕筛鶕?jù)通訊負(fù)載和設(shè)備故障情況再通信線路間進(jìn)行智能切換。
圖1 雙網(wǎng)口冗余線路系統(tǒng)圖
如圖1雙網(wǎng)口冗余線路系統(tǒng)圖所示,用戶和調(diào)制解調(diào)器間有兩條備份通信線路,具備調(diào)制解調(diào)和路由功能,將電力線上的載波信號(hào)解調(diào)和把需要發(fā)送的信號(hào)進(jìn)行調(diào)制發(fā)送至電力線外,分析目標(biāo)網(wǎng)絡(luò)地址,選擇可行的通信線路。
如圖2所示,該調(diào)制解調(diào)器的硬件由五個(gè)模塊組成:主控單片機(jī)、調(diào)制解調(diào)模塊、網(wǎng)絡(luò)模塊、接收發(fā)送濾波器模塊和耦合去耦模塊。STM32單片機(jī)作為控制中心,實(shí)現(xiàn)網(wǎng)口模塊和調(diào)制解調(diào)模塊的底層驅(qū)動(dòng),控制以太網(wǎng)口的收發(fā),調(diào)制解調(diào)模塊的配置、發(fā)送和接收,實(shí)現(xiàn)路由選擇,在不同的網(wǎng)段間轉(zhuǎn)發(fā)包;調(diào)制解調(diào)模塊ST7580片上集成了高性能的PHY處理器和協(xié)議控制器、模擬前端和線路驅(qū)動(dòng)器, ST7580通過(guò)RS232接口和主控制器通信;DM9051網(wǎng)口模塊實(shí)現(xiàn)和其它設(shè)備通訊的以太網(wǎng)接口;接收濾波器將去耦后信號(hào)調(diào)理為解調(diào)模塊頻率和幅度范圍內(nèi)信號(hào);發(fā)送濾波器將調(diào)制信號(hào)頻率調(diào)理到符合電纜特性的傳輸頻帶內(nèi);耦合和去耦電路實(shí)現(xiàn)調(diào)制信號(hào)和直流高壓的耦合和去耦。
圖2 模塊連接圖
從網(wǎng)絡(luò)OSI分層結(jié)構(gòu)來(lái)看,該調(diào)制解調(diào)器在在鏈路層、網(wǎng)絡(luò)層、傳輸層實(shí)現(xiàn)以下功能:在鏈路層,實(shí)現(xiàn)了調(diào)制解調(diào)器模塊和網(wǎng)絡(luò)模塊的驅(qū)動(dòng)、地址解析協(xié)議(ARP);在網(wǎng)絡(luò)層,實(shí)現(xiàn)了路由選擇、因特網(wǎng)控制報(bào)文協(xié)議(ICMP)、因特網(wǎng)互聯(lián)協(xié)議(IP);在傳輸層,實(shí)現(xiàn)了傳輸控制協(xié)議(TCP)和用戶數(shù)據(jù)報(bào)協(xié)議(UDP)。在傳輸層上的應(yīng)用層,用戶可通過(guò)冗余通信應(yīng)用程序?qū)崿F(xiàn)雙網(wǎng)口冗余通信的智能切換。
在圖1的連接方式下,用戶A和B之間通過(guò)電纜進(jìn)行通信,用戶A 網(wǎng)口ETH1的IP地址IP1和Modem A的網(wǎng)口ETH1的IP地址IPa處于同一網(wǎng)段,用戶A網(wǎng)口ETH1網(wǎng)關(guān)設(shè)置為IPa。用戶A網(wǎng)口ETH2、用戶B的網(wǎng)口ETH1和網(wǎng)口ETH2的設(shè)置也類(lèi)似設(shè)置。
當(dāng)用戶A和用戶B之間通訊選定某條通信線路,如A1-A-C-B-B1線路時(shí),用戶A從ETH1口發(fā)送信息,目標(biāo)IP為用戶B的ETH1口,由于IP1和IP3處于不同的網(wǎng)段,發(fā)送的信息將從網(wǎng)關(guān)設(shè)定的地址轉(zhuǎn)包,即發(fā)送至Modem A的ETH1口轉(zhuǎn)包。Modem A收到后,判別原目的地址為IP3,依次確定下一跳為Modem B的ETH1口,通過(guò)調(diào)制解調(diào)后,到達(dá)Modem B的ETH1口,該口IP地址IPc和目的地址IP3處于同一網(wǎng)段,從該口發(fā)出后,最終到達(dá)Modem B的ETH1口,完成從用戶A到用戶B經(jīng)由A1-A-C-B-B1的一次通訊。
本調(diào)制解調(diào)器路由實(shí)現(xiàn)中涉及TCP/IP協(xié)議棧部分移植于uIP。uIP是專為8位和16位單片機(jī)開(kāi)發(fā)的TCP/IP網(wǎng)絡(luò)協(xié)議棧的一種開(kāi)源實(shí)現(xiàn)。uIP因易于移植,代碼量和占用資源少,在嵌入式系統(tǒng)中得到廣泛應(yīng)用。出于節(jié)約資源的考慮,uIP實(shí)現(xiàn)中僅用一個(gè)IP包緩沖區(qū)全局變量,半雙工工作,用于接收和發(fā)送。本調(diào)制解調(diào)器具備雙網(wǎng)口,將IP包緩沖區(qū)封裝為結(jié)構(gòu)體,如下代碼所示:
typedef struct{
u16_t uip_len; //緩沖區(qū)長(zhǎng)度
uip_ipaddr_t uip_hostaddr; //本地IP地址
uip_ipaddr_t uip_draddr; //默認(rèn)路由地址
uip_ipaddr_t uip_netmask; //掩碼地址
struct uip_eth_addr uip_ethaddr; //mac地址
u8_t uip_buf[UIP_BUFSIZE+2]; //接收發(fā)送緩沖區(qū)
};
程序主函數(shù)在網(wǎng)口輪詢函數(shù)和解調(diào)緩沖區(qū)函數(shù)間循環(huán)。網(wǎng)口數(shù)據(jù)輪詢子函數(shù)實(shí)現(xiàn)網(wǎng)口數(shù)據(jù)接收和發(fā)送任務(wù)處理,流程圖如圖3所示:當(dāng)網(wǎng)口收到數(shù)據(jù),判斷接收包類(lèi)型。若為ARP包類(lèi)型,當(dāng)為有效的ARP請(qǐng)求時(shí),重新填充ARP幀,作為ARP回應(yīng)從網(wǎng)口發(fā)送。當(dāng)為ARP回應(yīng)則更新對(duì)應(yīng)ARP表;若為IP包類(lèi)型,判斷目標(biāo)IP所處網(wǎng)段,若為遠(yuǎn)程網(wǎng)段,將IP包中的相應(yīng)字段放入調(diào)制緩沖區(qū)內(nèi)待調(diào)制模塊調(diào)制到供電電纜上,若為本地網(wǎng)段,經(jīng)IP包處理函數(shù),當(dāng)為有效IP包時(shí)應(yīng)答,應(yīng)答幀所需的以太地址通過(guò)查找ARP表得到(沒(méi)有找到則需發(fā)送ARP請(qǐng)求),最終通過(guò)網(wǎng)口物理層發(fā)送。
圖3 網(wǎng)口數(shù)據(jù)輪詢流程圖
解調(diào)緩沖區(qū)查詢子程序?qū)崿F(xiàn)解調(diào)緩沖區(qū)內(nèi)數(shù)據(jù)處理任務(wù),如圖4所示:當(dāng)解調(diào)緩沖區(qū)內(nèi)有新數(shù)據(jù)時(shí),將緩沖區(qū)內(nèi)數(shù)據(jù)拷貝至IP包相應(yīng)字段,判斷該數(shù)據(jù)的目標(biāo)IP地址是該端口還是和該端口同一網(wǎng)段的其它主機(jī),若為本端口,通過(guò)IP包處理函數(shù),判別為有效的IP包時(shí)回應(yīng),由于該回應(yīng)的目標(biāo)為遠(yuǎn)程主機(jī),因此需將此回應(yīng)的IP包相應(yīng)字段放入調(diào)制緩沖區(qū)內(nèi)。若為和該端口處于同一網(wǎng)段的其它主機(jī),則通過(guò)網(wǎng)口進(jìn)行轉(zhuǎn)發(fā),轉(zhuǎn)發(fā)所需目標(biāo)以太地址通過(guò)查找ARP表得到(沒(méi)有找到需發(fā)送ARP請(qǐng)求),最終通過(guò)網(wǎng)口物理層發(fā)送。
圖4 解調(diào)緩沖區(qū)查詢流程圖
本文涉及的雙網(wǎng)口調(diào)制解調(diào)器可靠性高,已經(jīng)成功用于采油樹(shù)水下采油樹(shù)控制系統(tǒng)電氣分系統(tǒng)地面調(diào)制解調(diào)器和水下電子模塊中,實(shí)現(xiàn)了五千米雙網(wǎng)口雙線路的電纜單芯通訊。
[1]AN4018 Data link communication protocol for the ST7580 power line networking SoC.Vincenzo Mormina.
[2]The uIP Embedded TCP/IP Stack The uIP 1.0 Reference Manual.Adam Dunkels.
[3]零死角玩轉(zhuǎn)STM32.野火.